/* W5 shared geometry. Keep each component's existing colour and artwork. */
:root{--wrap:1200px;--gutter:32px;--space-section:120px;--ui-h1:clamp(2.2rem,5vw,3.6rem);--ui-h2:clamp(1.75rem,3.4vw,2.7rem);--ui-h3:1.25rem;--ui-body:1rem;--ui-note:.875rem;--button-sm:36px;--button-md:44px;--button-lg:52px}
html,body{overflow-x:visible}
.wrap,.top .wrap{width:min(calc(100% - 2 * var(--gutter)),var(--wrap));margin-inline:auto}
.wrap .wrap{width:100%}
main h1,.hero h1,.page-hero h1,.eh-head h1{font-size:var(--ui-h1);line-height:1.28}
main h2,.eh-head h2,.vr-section-heading h2{font-size:var(--ui-h2);line-height:1.28}
main h3,.ap-class-copy h3,.ap-chain-panel h3,.eh-loop-panel h3{font-size:var(--ui-h3);line-height:1.4}
main p{font-size:var(--ui-body)}
main :is(.eh-footnote,.eh-loop-meta,.support-note,.v17-note,figcaption){font-size:var(--ui-note)}
/* All four button treatments use the same geometry; clickable cards stay cards. */
button:not(.eh-class-toggle):not(.content-card):not(.sector-cell):not(.ap-tab):not(.ap-step):not(.sector-ribbon-segment),.button,.text-button,.nav-join{--button-height:var(--button-md);display:inline-flex;align-items:center;justify-content:center;gap:8px;box-sizing:border-box;height:var(--button-height);min-height:var(--button-height);max-height:var(--button-height);padding:0 18px;border-radius:999px;font:700 1rem/1.2 var(--font-body);letter-spacing:.04em;flex-shrink:0}
.button.small,.button[data-size="small"],button[data-size="small"]{--button-height:var(--button-sm);padding-inline:14px;font-size:.875rem}
.button.large,.button[data-size="large"],button[data-size="large"]{--button-height:var(--button-lg);padding-inline:22px}
.button.text,.text-button{background:transparent}
.menu-toggle,.eh-pin,.poi-marker{width:44px;padding:0!important}
@media(min-width:651px){.menu-toggle{display:none!important}}
.announcements{max-width:var(--wrap)}
.support-faq{max-width:var(--wrap)}
button[hidden]{display:none!important}
.journal-hero{overflow:clip}
.eh-pin,.poi-marker{border-radius:50%!important}
.eh-node{width:52px;--button-height:var(--button-lg)!important;padding:0!important;aspect-ratio:auto;border-radius:50%!important;flex-direction:column;gap:0!important}
.eh-node-i{font-size:.625rem}.eh-node b{font-size:.875rem}
.eh-band{padding-inline:8px!important;font-size:.875rem!important;white-space:nowrap}
.eh-motion{font-size:.875rem!important;padding-inline:14px!important}
.poi-row{display:grid!important;grid-template-columns:30px minmax(0,1fr) auto!important;width:100%;padding-inline:6px!important;text-align:left}
.poi-row b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem}
.poi-row small{font-size:.75rem}
.map-controls button{padding-inline:10px!important;font-size:.875rem!important}
.badge,.status,.v17-status,.v15-status,.v15-badge,.feature-status,.eh-cycle li,.ap-cycle li,.eh-band-list li{display:inline-flex;align-items:center;min-height:28px;padding-block:0;border-radius:999px;line-height:1.2}
.sector-ribbon-segment{height:32px;min-height:32px;padding:0;scroll-snap-align:start}
/* Decorative layers clip at their own section, preserving page sticky navigation. */
.eh-hero{overflow:clip;isolation:isolate}
.eh-plan-map{overflow:clip}.eh-plan-art{overflow:hidden;max-width:100%}
.eh-capital-grid>*{min-width:0}.eh-capital-grid{align-items:stretch}
.eh-capital-grid>div:first-child{display:flex;flex-direction:column}
.eh-capital-grid>div:first-child>.eh-footnote{margin-top:auto;padding-top:16px}
.eh-atlas{height:100%}
@media(min-width:1024px){.eh-capital-grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}}
.eh-section,.ap-features,.faq-section{padding-block:var(--space-section);content-visibility:visible;contain-intrinsic-size:none}
.o15-gallery{content-visibility:visible;contain-intrinsic-size:none}
.v15-art-band{width:100%;margin-block:32px}
.v15-art-band.wrap{width:min(calc(100% - 2 * var(--gutter)),var(--wrap))}
.v15-loop-grid{width:min(calc(100% - 2 * var(--gutter)),var(--wrap))}
.wrap .v15-loop-grid{width:100%}
.v15-footer-skyline{width:100%}
.v15-footer-skyline.wrap{width:min(calc(100% - 2 * var(--gutter)),var(--wrap))}
.v15-art-band picture,.v15-loop-card picture,.v15-page-art picture,.v15-footer-skyline picture{display:block;min-width:0;width:100%}
.eh-class>picture,.eh-class .o15-class-figure>picture{display:contents}
.sector-ribbon{min-width:0;max-width:100%;scroll-snap-type:x proximity;scroll-padding-inline:14px;scrollbar-width:auto;scrollbar-color:var(--gold) var(--night-2)}
.sector-ribbon::after{content:'100 個規劃區域帶狀摘要 · 全部尚未開放 · 左右滑動查看';position:sticky;left:0;width:fit-content;max-width:100%;white-space:normal}
.sector-ribbon-track{height:32px}
.sector-section,.map-workspace,.map-sidebar{min-width:0}
/* Rows stretch naturally. Titles reserve the same lines; actions sit at the bottom. */
.eh-motifs,.eh-stats,.v15-loop-grid,.v17-grid,.content-grid,.progress-grid,.v15-feature-grid,.ap-chain,.ap-class-tabs,.account-forms{align-items:stretch;grid-auto-rows:1fr}
.eh-motifs>li,.v15-loop-card,.v17-card,.progress-grid>article,.v15-feature-card{display:flex;flex-direction:column;height:100%;min-width:0}
.v17-card>h2{font-size:var(--ui-h3);min-height:2.8em;margin-block:16px 8px}
.v17-card>.v17-status{align-self:flex-start}
.v17-card>a{margin-top:auto;align-self:flex-start;padding-top:16px}
.v15-loop-card>div{display:flex;flex-direction:column;flex:1}
.content-card h3{min-height:2.8em}.content-card p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.content-card .card-foot{margin-top:auto}
.ap-tab,.ap-step,.sector-cell{height:100%;min-width:0}
.ap-tab small{line-height:1.4}
.announcement-list{align-items:stretch;grid-auto-rows:1fr}.announcement-card{display:flex;flex-direction:column;height:100%}.announcement-card h2{font-size:var(--ui-h3)}.announcement-card p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.account-panel{padding-block:40px var(--space-section)}
.account-forms form{display:grid;gap:9px;padding:22px;border:1px solid var(--line-strong);border-radius:16px;background:rgba(23,19,41,.86)}
.account-forms{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.account-forms form button{align-self:end;justify-self:start}
.account-page input{width:100%;min-height:44px;padding:10px;border:1px solid var(--line-strong);border-radius:8px;background:var(--night-1)}
.account-page .status-badge{padding:18px;border-left:3px solid var(--gold);background:rgba(242,196,109,.08)}
.account-page section section{margin-block:24px}
.account-page .account-forms>section{margin:0}
.account-page .account-panel>section{margin-block:36px}
.market-page .feature-list{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}
.market-page .feature-list li{display:flex;flex-direction:column;padding:18px;border:1px solid var(--line-strong);border-radius:16px;height:100%}
.market-page .feature-status{float:none;align-self:flex-start;margin:0 0 10px}
.market-page .hero{padding-block:80px 40px}
.market-page .topbar .nav{float:none;margin-top:0}
.market-page .brand span{display:grid}
.topbar-inner{gap:20px}.nav{min-width:0}
@media(max-width:1200px){.topbar .nav{gap:8px}.topbar .nav>a{font-size:.875rem}.topbar .brand{gap:8px}}
@media(max-width:1024px){.topbar-inner{flex-wrap:wrap}.topbar .brand{flex-shrink:0}.topbar .nav{gap:8px;flex-wrap:wrap}.eh-bands{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.eh-capital-grid>div:first-child>.eh-footnote{margin-top:0}.eh-atlas{height:auto}.account-forms{grid-template-columns:1fr}}
@media(max-width:600px){:root{--gutter:18px;--space-section:72px}.eh-title{font-size:var(--ui-h1)}.eh-hero{min-height:780px;padding-bottom:120px}.eh-head{margin-bottom:28px}.eh-actions{gap:12px}.eh-motion-toggle{left:18px;bottom:24px}.eh-art-note{bottom:78px}.eh-scroll{left:50%}.eh-timeline{gap:20px}.v15-art-band{margin-block:24px}.v15-loop-grid{margin-block:24px}.market-page .feature-list{grid-template-columns:1fr}main p{font-size:1rem}.map-controls{flex-wrap:wrap}.v17-nav{gap:8px}.v17-nav a{font-size:1rem}.eh-node b{font-size:.875rem}.eh-stats>div{min-height:176px}.eh-band{white-space:normal}.eh-spec{max-width:100%}.eh-title-en{letter-spacing:.3em}.eh-hero-copy{max-width:100%}}
@media(prefers-reduced-motion:reduce){[data-reveal],.is-pending,.reveal{opacity:1!important;visibility:visible!important;transform:none!important}.eh-section,.o15-gallery{content-visibility:visible!important;contain-intrinsic-size:none!important}.eh-layer,.eh-hero-copy{transform:none!important}.eh{--sy:0;--px:0;--py:0}}
.announcement-card h2{min-height:2.8em;line-height:1.4;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.announcement-card>a:last-child{margin-top:auto;align-self:flex-start;padding-top:16px}.announcement-filters a,.announcement-pagination a{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:44px;padding:0 18px;gap:8px;border-radius:999px;font:700 1rem/1.2 var(--font-body);letter-spacing:.04em}

/* W6: reserve 300px for the fixed Turnstile widget without clipping the page. */
@media(max-width:390px){.page-apply .application-panel{min-width:0;padding-inline:8px}}
@media(max-width:338px){.page-apply .application-panel{margin-inline:calc(-1 * var(--gutter))}}
