:root{
  --bg:#0B0C0B;
  --panel:#111312;
  --surface:#151816;
  --ivory:#F4F0E6;
  --muted:#A8A49B;
  --dim:#8F8A80;
  --volt:#18D85F;
  --volt-hover:#58EE8A;
  --volt-ink:#071108;
  --border:rgb(244 240 230 / 0.16);
  --border-soft:rgb(244 240 230 / 0.10);
  --grid:rgb(244 240 230 / 0.055);
  --volt-soft:rgb(24 216 95 / 0.14);
  --sans:"Noto Sans TC","PingFang TC",sans-serif;
  --disp:"Archivo","Noto Sans TC",sans-serif;
  --mono:"JetBrains Mono",ui-monospace,monospace;
  --header-h:92px;
  --mx:50%;
  --my:50%;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;background:var(--bg)}
body{min-width:320px;background:var(--bg);color:var(--ivory);font-family:var(--sans);font-weight:500;line-height:1.75;overflow-x:hidden}
body::before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:72px 72px}
body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle 300px at var(--mx) var(--my),var(--volt-soft),transparent 76%);opacity:.52}
body.nav-open{overflow:hidden}
a{color:inherit;text-decoration:none}
button,input{font:inherit}
button{color:inherit}
img{display:block;max-width:100%}
:focus-visible{outline:2px solid var(--volt);outline-offset:4px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;left:20px;top:12px;z-index:999;translate:0 -180%;background:var(--volt);color:var(--volt-ink);padding:10px 16px;font-weight:900}
.skip-link:focus{translate:0 0}
.wrap{width:min(1180px,calc(100% - 84px));margin-inline:auto}

/* Shared orbital header */
.site-header{position:fixed;inset:0 0 auto;z-index:100;background:rgb(11 12 11 / .86);backdrop-filter:blur(16px) saturate(120%);border-bottom:1px solid var(--border)}
.header-inner{height:var(--header-h);width:min(1500px,calc(100% - 84px));margin-inline:auto;display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:16px}
.orb-brand{display:flex;align-items:center;gap:16px;min-width:220px}
.orb-brand img{height:34px;width:auto;background:transparent}
.brand-state{display:grid;gap:2px;padding-left:14px;border-left:1px solid var(--border)}
.brand-state strong{color:var(--volt);font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.16em}
.brand-state span{color:var(--dim);font-family:var(--mono);font-size:8px;letter-spacing:.1em}
.site-nav{display:flex;justify-content:center;align-items:center;gap:2px;min-width:0}
.site-nav a{min-height:44px;display:flex;align-items:center;padding:10px;color:var(--muted);font-family:var(--mono);font-size:12px;letter-spacing:.06em;border:1px solid transparent;white-space:nowrap;transition:.2s}
.site-nav a:hover,.site-nav a[aria-current="page"]{color:var(--ivory);border-color:var(--border);background:rgb(244 240 230 / .025)}
.site-nav a[aria-current="page"]{box-shadow:inset 0 -2px 0 var(--volt)}
.nav-more{position:relative;flex:0 0 auto}
.nav-more summary{display:flex;align-items:center;min-height:44px;padding:10px 25px 10px 10px;border:1px solid transparent;color:var(--muted);font-family:var(--mono);font-size:12px;letter-spacing:.06em;list-style:none;white-space:nowrap;cursor:pointer;transition:.2s}
.nav-more summary::-webkit-details-marker{display:none}
.nav-more summary::after{content:"⌄";position:absolute;right:11px;color:var(--volt);font-size:12px;transition:transform .2s}
.nav-more[open] summary::after{transform:rotate(180deg)}
.nav-more summary:hover,.nav-more summary:focus-visible,.nav-more-active summary{border-color:var(--border);color:var(--ivory);background:rgb(244 240 230 / .025);outline:none}
.nav-more-active summary{box-shadow:inset 0 -2px 0 var(--volt)}
.nav-more-links{position:absolute;top:calc(100% + 7px);right:0;z-index:102;display:grid;min-width:158px;padding:6px;border:1px solid var(--border);background:var(--panel);box-shadow:0 18px 40px rgb(0 0 0 / .32)}
.nav-more-links a{justify-content:flex-start;padding-inline:12px}
.header-cta{min-height:44px;display:flex;align-items:center;gap:10px;padding:10px 16px;border:1px solid var(--volt);color:var(--volt);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.08em;transition:.2s}
.header-cta::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--volt);box-shadow:0 0 12px var(--volt);animation:orb-pulse 1.8s ease-in-out infinite}
.header-cta:hover{background:var(--volt);color:var(--volt-ink);box-shadow:0 0 28px rgb(24 216 95 / .2)}
.menu-toggle{display:none;min-width:44px;min-height:44px;padding:0 14px;white-space:nowrap;background:none;border:1px solid var(--border);color:var(--ivory);font-family:var(--mono);font-size:11px;letter-spacing:.08em}
@keyframes orb-pulse{50%{opacity:.35;scale:.66}}

/* Keep translated navigation readable: collapse before labels begin competing for space. */
@media(max-width:1600px){
  .header-inner{width:min(100% - 48px,1500px);grid-template-columns:1fr auto auto auto;gap:12px}
  .orb-brand{min-width:0}
  .brand-state{display:none}
  .site-nav{position:fixed;inset:var(--header-h) 0 auto;background:var(--panel);border-bottom:1px solid var(--border);display:grid;grid-template-columns:repeat(3,1fr);padding:16px 24px;translate:0 -140%;opacity:0;pointer-events:none;transition:.22s}
  body.nav-open .site-nav{translate:0 0;opacity:1;pointer-events:auto}
  .site-nav a{justify-content:center;border-color:var(--border-soft)}
  .nav-more{position:static;display:grid;grid-template-columns:1fr}
  .nav-more summary{justify-content:center;border:1px solid var(--border-soft)}
  .nav-more-links{position:static;min-width:0;padding:0;border:0;background:transparent;box-shadow:none}
  .nav-more-links a{justify-content:center;border-color:var(--border-soft)}
  .menu-toggle{display:block}
}

/* Page frame */
main{position:relative;padding-top:var(--header-h)}
.page-hero{position:relative;min-height:430px;display:grid;align-items:end;border-bottom:1px solid var(--border);overflow:hidden}
.page-hero::before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,transparent 0 49%,rgb(244 240 230 / .018) 50% 51%,transparent 52% 100%);background-size:100% 6px;opacity:.55}
.page-hero::after{content:"";position:absolute;right:7%;top:50%;width:min(34vw,420px);aspect-ratio:1;translate:0 -50%;border:1px solid rgb(24 216 95 / .17);border-radius:50%;box-shadow:inset 0 0 0 72px rgb(24 216 95 / .015),inset 0 0 0 144px rgb(24 216 95 / .012)}
.hero-inner{position:relative;z-index:2;padding-block:78px 64px}
.page-code{display:flex;align-items:center;gap:12px;color:var(--volt);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.18em;margin-bottom:22px}
.page-code::before{content:"";width:40px;height:2px;background:var(--volt);box-shadow:0 0 14px rgb(24 216 95 / .5)}
.page-hero h1{max-width:860px;font-family:var(--disp);font-size:clamp(46px,7.4vw,104px);font-weight:900;line-height:.92;letter-spacing:-.04em}
.page-hero h1 span{display:block;margin-top:16px;color:var(--muted);font-family:var(--mono);font-size:clamp(11px,1.1vw,15px);font-weight:700;letter-spacing:.18em;line-height:1.5}
.page-lead{max-width:670px;margin-top:24px;color:var(--muted);font-size:15px}
.page-index{position:absolute;z-index:1;right:5%;top:34px;color:rgb(244 240 230 / .055);font-family:var(--mono);font-size:clamp(110px,18vw,260px);font-weight:700;line-height:1;letter-spacing:-.1em;user-select:none}
.hero-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}
.content-section{position:relative;padding-block:clamp(64px,8vw,104px);border-bottom:1px solid var(--border-soft)}
.content-section.tight{padding-top:0}
.section-head{display:grid;grid-template-columns:180px 1fr;gap:42px;align-items:end;margin-bottom:38px}
.section-code{display:grid;gap:8px;color:var(--volt);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.16em}
.section-code::before{content:"";width:34px;height:2px;background:var(--volt)}
.section-head h2{font-family:var(--disp);font-size:clamp(30px,4.2vw,56px);font-weight:900;line-height:1.08;letter-spacing:-.02em}
.section-head h2 small{display:block;margin-bottom:9px;color:var(--dim);font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.2em}

/* Shared modules */
.module{position:relative;border:1px solid var(--border);background:rgb(17 19 18 / .78);box-shadow:0 30px 80px rgb(0 0 0 / .22)}
.module::before,.module::after{content:"";position:absolute;left:-1px;top:-1px;background:var(--volt);box-shadow:0 0 10px var(--volt)}
.module::before{width:26px;height:2px}.module::after{width:2px;height:26px}
.module-bar{min-height:36px;border-bottom:1px solid var(--border-soft);display:flex;align-items:center;justify-content:space-between;gap:18px;padding:8px 15px;color:var(--dim);font-family:var(--mono);font-size:8px;letter-spacing:.14em}
.module-bar strong{display:flex;align-items:center;gap:7px;color:var(--volt);font-weight:700}
.module-bar strong::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--volt);box-shadow:0 0 8px var(--volt)}
.card-grid{display:grid;grid-template-columns:repeat(3,1fr)}
.card-grid.two{grid-template-columns:repeat(2,1fr)}
.orb-card{position:relative;padding:30px;border-right:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft);overflow:hidden}
.card-grid:not(.two) .orb-card:nth-child(3n){border-right:none}
.card-grid.two .orb-card:nth-child(2n){border-right:none}
.orb-card h3{font-size:19px;font-weight:900;line-height:1.35;margin:12px 0 9px}
.orb-card p{color:var(--muted);font-size:13.5px}
.orb-card .node{color:var(--volt);font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.16em}
.orb-card::after{content:attr(data-node);position:absolute;right:16px;bottom:2px;color:rgb(244 240 230 / .035);font-family:var(--mono);font-size:54px;font-weight:700;line-height:1}
.data-list{display:grid}
.data-list>div{display:grid;grid-template-columns:150px 1fr;gap:22px;padding:14px 0;border-top:1px solid var(--border-soft)}
.data-list dt{color:var(--dim);font-family:var(--mono);font-size:10px;letter-spacing:.1em}
.data-list dd{font-size:14px;font-weight:700}
.notice{display:flex;gap:14px;margin-top:24px;padding:18px 20px;border:1px solid rgb(24 216 95 / .28);background:rgb(24 216 95 / .035);color:var(--muted);font-size:13px}
.notice strong{flex:0 0 auto;color:var(--volt);font-family:var(--mono);font-size:10px;letter-spacing:.12em}
.button{min-height:46px;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:12px 22px;background:var(--volt);color:var(--volt-ink);font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.08em;border:1px solid var(--volt);cursor:pointer;box-shadow:0 12px 38px rgb(24 216 95 / .16);transition:.2s}
.button:hover{background:var(--volt-hover);translate:0 -2px}
.button.ghost{background:transparent;color:var(--ivory);border-color:var(--border);box-shadow:none}
.button.ghost:hover{border-color:var(--volt);color:var(--volt);translate:0}
.tag{display:inline-flex;align-items:center;min-height:28px;padding:4px 9px;border:1px solid rgb(24 216 95 / .28);color:var(--volt);font-family:var(--mono);font-size:9px;font-weight:700;letter-spacing:.12em}

/* Tabs */
.tablist{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--border);border-bottom:none;background:rgb(11 12 11 / .68)}
.tablist button{min-height:62px;padding:12px 18px;background:none;border:0;border-right:1px solid var(--border);color:var(--muted);cursor:pointer;text-align:left;transition:.2s}
.tablist button:last-child{border-right:0}
.tablist button:hover{background:rgb(244 240 230 / .025);color:var(--ivory)}
.tablist button[aria-selected="true"],.tablist button[aria-pressed="true"]{color:var(--ivory);background:var(--panel);box-shadow:inset 0 -3px 0 var(--volt)}
.tablist button strong{display:block;font-family:var(--disp);font-size:22px;font-weight:900;line-height:1}
.tablist button span{display:block;margin-top:5px;color:var(--dim);font-family:var(--mono);font-size:9px;letter-spacing:.1em}
.tabpanel[hidden]{display:none}

/* Registration */
.gateway-layout{display:grid;grid-template-columns:1.15fr .85fr;gap:24px}
.gateway-copy{padding:34px}
.gateway-copy h2{font-size:25px;font-weight:900;margin-bottom:12px}
.gateway-status{padding:30px;border:1px solid var(--volt);background:rgb(24 216 95 / .025)}
.status-line{display:flex;align-items:center;gap:10px;margin-bottom:18px;color:var(--volt);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.12em}
.status-line i{width:8px;height:8px;border-radius:50%;background:var(--volt);box-shadow:0 0 12px var(--volt)}
.race-panel{padding:34px}
.race-title{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:22px}
.race-title strong{font-family:var(--disp);font-size:clamp(38px,6vw,72px);font-weight:900;line-height:.9}
.race-title span{color:var(--volt);font-weight:900}
.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--border-soft)}
.metric{padding:18px;border-right:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft)}
.metric:nth-child(3n){border-right:0}.metric:nth-last-child(-n+3){border-bottom:0}
.metric small{display:block;color:var(--dim);font-family:var(--mono);font-size:9px;letter-spacing:.1em;margin-bottom:5px}
.metric strong{font-size:14px}

/* Routes */
.route-workspace{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(260px,.8fr)}
.route-map{position:relative;min-height:500px;border-right:1px solid var(--border);background:rgb(8 9 8 / .66);overflow:hidden}
.route-map svg{width:100%;height:100%;min-height:500px}
.route-map-grid{position:absolute;inset:0;pointer-events:none;background:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:36px 36px}
.route-path{fill:none;stroke:var(--volt);stroke-width:4;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 5px rgb(24 216 95 / .62))}
.route-shadow{fill:none;stroke:rgb(244 240 230 / .1);stroke-width:12;stroke-linecap:round;stroke-linejoin:round}
.route-node{fill:var(--bg);stroke:var(--volt);stroke-width:3}
.route-map-label{position:absolute;left:18px;top:18px;z-index:2;padding:8px 10px;background:rgb(11 12 11 / .8);border:1px solid var(--border);color:var(--volt);font-family:var(--mono);font-size:9px;letter-spacing:.12em}
.route-info{padding:30px}
.route-info .distance{font-family:var(--disp);font-size:50px;font-weight:900;line-height:1}
.route-info .route-name{color:var(--volt);font-weight:900;margin:9px 0 18px}
.route-info .button{width:100%;margin-top:22px}
.cert-layout{display:grid;grid-template-columns:1.25fr .75fr}
.cert-image{display:grid;place-items:center;padding:18px;background:var(--ivory);border-right:1px solid var(--border)}
.cert-image img{max-height:620px;object-fit:contain}
.cert-info{padding:30px}
.cert-info h3{font-size:22px;line-height:1.35;margin:10px 0 20px}

/* Services */
.service-grid{display:grid;grid-template-columns:repeat(3,1fr)}
.service-node{border-right:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft)}
.service-node:nth-child(3n){border-right:0}.service-node:nth-last-child(-n+3){border-bottom:0}
.service-node summary{min-height:190px;padding:28px;cursor:pointer;list-style:none;position:relative}
.service-node summary::-webkit-details-marker{display:none}
.service-node summary::after{content:"＋";position:absolute;right:22px;top:22px;color:var(--volt);font-family:var(--mono)}
.service-node[open] summary::after{content:"−"}
.service-node h3{font-size:20px;margin:12px 0 8px}
.service-node p{color:var(--muted);font-size:13px}
.service-body{padding:0 28px 28px}

/* Race kit */
.shared-kit{display:grid;grid-template-columns:240px 1fr}
.product-surface{display:grid;place-items:center;min-height:230px;padding:18px;background:var(--ivory);overflow:hidden}
.product-surface picture{display:grid;place-items:center;width:100%;height:100%}
.product-surface img{max-height:260px;object-fit:contain}
.shared-kit-copy{display:flex;flex-direction:column;justify-content:center;padding:34px}
.shared-kit-copy h2{font-size:30px;margin:10px 0 6px}
.kit-grid{display:grid;grid-template-columns:repeat(4,1fr)}
.kit-grid.three{grid-template-columns:repeat(3,1fr)}
.kit-item{border-right:1px solid var(--border-soft)}
.kit-item .product-surface{height:min(300px,34vh);min-height:0}
.kit-item .product-surface picture{min-width:0;min-height:0}
.kit-item .product-surface img{width:100%;height:100%;min-width:0;min-height:0;max-height:100%;max-width:100%;object-fit:contain}
.kit-item:last-child{border-right:0}
.kit-copy{padding:18px 20px 24px}
.kit-copy h3{font-size:17px;margin-top:7px}
.kit-copy p{color:var(--muted);font-size:12px;margin-top:3px}
.media-open{width:100%;border:0;cursor:zoom-in}

/* News */
.filter-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}
.filter-row button{min-height:44px;padding:9px 14px;border:1px solid var(--border);background:rgb(11 12 11 / .72);color:var(--muted);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.08em;cursor:pointer}
.filter-row button[aria-pressed="true"]{border-color:var(--volt);color:var(--volt);background:rgb(24 216 95 / .035)}
.news-list{display:grid}
.news-item{display:grid;grid-template-columns:128px 1fr auto;gap:24px;align-items:center;padding:24px;border-bottom:1px solid var(--border-soft);transition:.2s}
.news-item:last-child{border-bottom:0}
.news-item:hover{background:rgb(24 216 95 / .03);padding-left:30px}
.news-item time{color:var(--dim);font-family:var(--mono);font-size:10px}
.news-item h2{font-size:18px;line-height:1.4}
.news-item p{color:var(--muted);font-size:13px;margin-top:5px}
.news-item[hidden]{display:none}

/* FAQ */
.faq-tools{display:grid;grid-template-columns:1fr auto;gap:16px;margin-bottom:24px}
.search-field{min-height:48px;width:100%;padding:12px 16px;border:1px solid var(--border);background:rgb(11 12 11 / .76);color:var(--ivory)}
.search-field::placeholder{color:var(--dim)}
.faq-list{display:grid;gap:10px}
.faq-item{border:1px solid var(--border);background:rgb(17 19 18 / .74)}
.faq-item[open]{border-color:rgb(24 216 95 / .55)}
.faq-item summary{min-height:64px;display:grid;grid-template-columns:78px 1fr auto;gap:18px;align-items:center;padding:15px 20px;cursor:pointer;list-style:none;font-weight:900}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"＋";color:var(--volt);font-family:var(--mono)}
.faq-item[open] summary::after{content:"−"}
.faq-answer{padding:0 20px 22px 116px;color:var(--muted);font-size:14px}
.faq-answer a{display:inline-block;margin-top:10px;color:var(--volt);font-weight:700}
.faq-item[hidden]{display:none}
.empty-state{display:none;padding:26px;border:1px dashed var(--border);color:var(--muted)}
.empty-state.show{display:block}

/* Partners / contact / policy */
.partner-feature{display:grid;grid-template-columns:.75fr 1.25fr}
.partner-logo{display:grid;place-items:center;min-height:320px;padding:44px;background:var(--panel)}
.partner-logo img{width:min(240px,80%)}
.partner-copy{padding:40px}
.partner-copy h2{font-family:var(--disp);font-size:56px;line-height:1;margin:18px 0}
.channel-grid{display:grid;grid-template-columns:repeat(3,1fr)}
.channel-card{padding:28px;border-right:1px solid var(--border-soft)}
.channel-card:last-child{border-right:0}
.channel-card h3{font-size:19px;margin:12px 0 8px}
.channel-card p{color:var(--muted);font-size:13px;overflow-wrap:anywhere}
.channel-card .button{width:100%;margin-top:20px}
.policy-list{counter-reset:policy;display:grid;gap:12px}
.policy-node{counter-increment:policy;padding:30px 30px 30px 92px}
.policy-node::after{content:"0" counter(policy);position:absolute;left:24px;top:26px;color:var(--volt);font-family:var(--disp);font-size:30px;font-weight:900}
.policy-node h2{font-size:21px;margin-bottom:8px}
.policy-node p{color:var(--muted);font-size:14px}

/* Overview launcher */
.launcher-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.launcher-card{min-height:220px;display:flex;flex-direction:column;justify-content:space-between;padding:26px;border:1px solid var(--border);background:rgb(17 19 18 / .72);transition:.2s}
.launcher-card:hover{border-color:rgb(24 216 95 / .5);translate:0 -3px;box-shadow:0 18px 46px rgb(0 0 0 / .22)}
.launcher-card .index{color:var(--volt);font-family:var(--mono);font-size:10px;letter-spacing:.14em}
.launcher-card h2{font-size:22px;margin-top:10px}
.launcher-card p{color:var(--muted);font-size:13px;margin-top:8px}
.launcher-card .open{color:var(--volt);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.08em}

/* Lightbox */
.lightbox{width:min(920px,calc(100% - 32px));height:min(760px,calc(100dvh - 32px));margin:auto;display:none;flex-direction:column;overflow:hidden;border:1px solid var(--border);background:var(--panel);color:var(--ivory);padding:0;box-shadow:0 30px 90px rgb(0 0 0 / .6)}
.lightbox[open]{display:flex}
.lightbox::backdrop{background:rgb(0 0 0 / .82);backdrop-filter:blur(8px)}
.lightbox-head{flex:0 0 auto;min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid var(--border)}
.lightbox-head [data-lightbox-title]{font-family:var(--display,inherit);font-size:clamp(16px,2.2vw,22px);font-weight:600;letter-spacing:.02em;color:var(--ivory);line-height:1.2;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lightbox-close{flex:0 0 auto;min-width:44px;min-height:44px;padding:0 14px;border:1px solid var(--border);background:none;color:var(--ivory);font-size:13px;cursor:pointer}
.lightbox-stage{position:relative;flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:20px 24px 112px;background:var(--ivory)}
.lightbox-stage>picture{display:grid;place-items:center;width:min(100%,460px);height:min(100%,460px);min-width:0;min-height:0;max-width:100%;max-height:100%;margin:0;overflow:hidden}
.lightbox-stage>picture>img{width:100%;height:100%;min-width:0;min-height:0;max-width:100%;max-height:100%;object-fit:contain}

/* Footer */
.site-footer{position:relative;background:rgb(11 12 11 / .86);border-top:1px solid var(--border)}
.site-footer .footer-inner{padding:20px 42px 14px}
.footer-top{display:grid;grid-template-columns:1fr 1.5fr;gap:48px;padding-bottom:20px}
.footer-brand img{height:32px;width:auto;background:transparent;margin-bottom:20px}
.footer-brand h2{font-size:26px;line-height:1.3}.footer-brand h2 span{color:var(--volt)}
.footer-brand p{color:var(--dim);font-family:var(--mono);font-size:9px;letter-spacing:.1em;margin-top:10px}
.footer-directory{display:grid;grid-template-columns:repeat(3,1fr);align-items:start;gap:26px}
.footer-directory>div{display:grid;align-content:start;gap:10px}
.footer-directory h3{color:var(--volt);font-family:var(--mono);font-size:9px;line-height:1.2;letter-spacing:.13em;margin:0}
.footer-directory nav,.footer-directory>div>div{display:grid;align-content:start;gap:5px}
.footer-directory a,.footer-directory p{color:var(--muted);font-size:12px;line-height:1.35}
.footer-directory a:hover{color:var(--ivory)}
.footer-legal{display:flex;justify-content:space-between;gap:20px;padding-top:16px;border-top:1px solid var(--border-soft);color:var(--dim);font-family:var(--mono);font-size:8px;line-height:1.35;letter-spacing:.08em}

@media(max-width:1060px){
  :root{--header-h:76px}
  .wrap{width:min(100% - 48px,1180px)}
  .header-inner{width:min(100% - 48px,1180px)}
  .header-inner{grid-template-columns:1fr auto auto}
  .page-hero{min-height:390px}
  .card-grid,.service-grid{grid-template-columns:repeat(2,1fr)}
  .card-grid:not(.two) .orb-card:nth-child(3n),.service-node:nth-child(3n){border-right:1px solid var(--border-soft)}
  .card-grid:not(.two) .orb-card:nth-child(2n),.service-node:nth-child(2n){border-right:0}
  .service-node:nth-last-child(-n+3){border-bottom:1px solid var(--border-soft)}
  .service-node:nth-last-child(-n+2){border-bottom:0}
  .route-workspace{grid-template-columns:1fr}.route-map{border-right:0;border-bottom:1px solid var(--border)}
  .kit-grid{grid-template-columns:repeat(2,1fr)}.kit-grid.three{grid-template-columns:repeat(3,1fr)}
  .launcher-grid{grid-template-columns:repeat(2,1fr)}
}

@media(max-width:760px){
  .wrap,.header-inner{width:min(100% - 36px,1180px)}
  .header-inner{grid-template-columns:1fr auto auto;gap:10px}
  .header-cta{min-width:88px;display:flex;justify-content:center;gap:7px;padding:10px 12px;background:var(--volt);color:var(--volt-ink);font-size:0;box-shadow:0 10px 28px rgb(24 216 95 / .18)}
  .header-cta::before{background:var(--volt-ink);box-shadow:none}
  .header-cta::after{content:"立即報名";font-size:10px;letter-spacing:.08em}
  .site-nav{grid-template-columns:1fr 1fr;padding-inline:18px}
  .page-hero{min-height:430px;align-items:center}
  .page-hero::after{right:-30%;width:84vw}
  .hero-inner{padding-block:70px 48px}
  .page-index{right:18px;top:26px;font-size:118px}
  .page-hero h1{font-size:clamp(44px,17vw,72px)}
  .page-lead{font-size:14px}
  .section-head{grid-template-columns:1fr;gap:16px}
  .module-bar span:last-child{display:none}
  .gateway-layout,.cert-layout,.shared-kit,.partner-feature,.footer-top{grid-template-columns:1fr}
  .cert-image,.partner-logo{border-right:0;border-bottom:1px solid var(--border)}
  .tablist{grid-template-columns:1fr}.tablist button{border-right:0;border-bottom:1px solid var(--border)}
  .tablist button:last-child{border-bottom:0}
  .metric-grid{grid-template-columns:1fr 1fr}.metric:nth-child(3n){border-right:1px solid var(--border-soft)}.metric:nth-child(2n){border-right:0}.metric:nth-last-child(-n+3){border-bottom:1px solid var(--border-soft)}.metric:nth-last-child(-n+2){border-bottom:0}
  .card-grid,.card-grid.two,.service-grid,.channel-grid,.launcher-grid{grid-template-columns:1fr}
  .orb-card,.card-grid:not(.two) .orb-card:nth-child(2n),.card-grid:not(.two) .orb-card:nth-child(3n),.card-grid.two .orb-card:nth-child(2n),.service-node,.service-node:nth-child(2n),.service-node:nth-child(3n),.channel-card{border-right:0;border-bottom:1px solid var(--border-soft)}
  .service-node:nth-last-child(-n+2){border-bottom:1px solid var(--border-soft)}.service-node:last-child,.channel-card:last-child{border-bottom:0}
  .race-title{align-items:flex-start;flex-direction:column}
  .route-map,.route-map svg{min-height:390px}
  .kit-grid,.kit-grid.three{grid-template-columns:1fr 1fr}
  .kit-item:nth-child(2n){border-right:0}.kit-item{border-bottom:1px solid var(--border-soft)}
  .news-item{grid-template-columns:1fr auto;gap:8px 14px}.news-item time{grid-column:1}.news-item>div{grid-column:1}.news-item .tag{grid-column:2;grid-row:1/3}
  .faq-tools{grid-template-columns:1fr}.faq-item summary{grid-template-columns:64px 1fr auto;gap:10px;padding-inline:14px}.faq-answer{padding-left:14px}
  .partner-copy{padding:28px}.partner-copy h2{font-size:44px}
  .policy-node{padding:78px 22px 24px}.policy-node::after{left:22px;top:20px}
  .footer-top{gap:36px}.footer-directory{grid-template-columns:1fr 1fr}.footer-legal{display:grid}
  .lightbox{width:min(920px,calc(100% - 24px));height:calc(100dvh - 24px)}
  .lightbox-stage{padding:16px 16px 100px}.lightbox-stage>picture{width:min(100%,380px);height:min(100%,380px);max-height:100%}
}

@media(max-width:460px){
  .header-inner{width:min(100% - 24px,1180px);gap:8px}
  .orb-brand img{height:30px}
  .header-cta{min-width:64px;padding-inline:8px;white-space:nowrap}
  .header-cta::after{content:"報名";font-size:10px;letter-spacing:.05em}
  .menu-toggle{min-width:56px;padding-inline:9px;font-size:0}
  .menu-toggle::after{content:"選單";font-size:10px;letter-spacing:.08em}
  body.nav-open .menu-toggle::after{content:"關閉"}
  .site-nav{grid-template-columns:1fr}
  .kit-grid,.kit-grid.three{grid-template-columns:1fr}.kit-item{border-right:0}
  .metric-grid{grid-template-columns:1fr}.metric,.metric:nth-child(2n),.metric:nth-child(3n){border-right:0;border-bottom:1px solid var(--border-soft)}.metric:last-child{border-bottom:0}
  .site-footer .footer-inner{padding:32px 24px 18px}
  .footer-top{gap:28px;padding-bottom:28px}
  .footer-brand img{height:30px;margin-bottom:14px}
  .footer-brand h2{font-size:clamp(23px,7vw,28px)}
  .footer-directory{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 16px;align-content:start}
  .footer-directory>div{min-width:0}
  .footer-directory>div:last-child{grid-column:1/-1;padding-top:20px;border-top:1px solid var(--border-soft)}
  .footer-directory h3{margin-bottom:10px}
  .footer-directory a,.footer-directory p{font-size:12px;line-height:1.55}
  .footer-legal{gap:8px;padding-top:18px}
}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}

/* ===== unified nav node numbers ===== */
.site-nav a::before{content:attr(data-node);color:var(--dim);margin-right:7px;font-size:9px}

/* ===== language switching ===== */
.language-switcher{display:inline-flex;align-items:center;position:relative;white-space:nowrap}
.language-switcher-trigger{position:relative;display:flex;align-items:center;justify-content:space-between;gap:18px;min-width:108px;height:40px;padding:0 32px 0 12px;border:1px solid var(--border);border-radius:0;background:var(--panel);color:var(--ivory);font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.05em;cursor:pointer;outline:none;transition:.2s}
.language-switcher-trigger::after{content:"⌄";pointer-events:none;position:absolute;right:11px;color:var(--volt);font-size:12px;transition:transform .18s ease}
.language-switcher-trigger:hover,.language-switcher-trigger:focus-visible,.language-switcher.is-open .language-switcher-trigger{border-color:var(--volt);box-shadow:0 0 0 2px rgb(24 216 95 / .16)}
.language-switcher.is-open .language-switcher-trigger::after{transform:rotate(180deg)}
.language-switcher-menu{position:absolute;z-index:104;top:calc(100% + 8px);right:0;display:grid;min-width:158px;padding:6px;border:1px solid var(--border);background:var(--panel);box-shadow:0 18px 44px rgb(0 0 0 / .48)}
.language-switcher-menu[hidden]{display:none}
.language-switcher-option{display:grid;grid-template-columns:10px 1fr;align-items:center;gap:9px;min-height:38px;padding:7px 10px;color:var(--muted);font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.05em;outline:none;transition:.16s}
.language-switcher-option::before{content:"";width:5px;height:5px;border:1px solid var(--dim);border-radius:50%;opacity:.46}
.language-switcher-option:hover,.language-switcher-option:focus-visible{background:rgb(244 240 230 / .055);color:var(--ivory)}
.language-switcher-option:focus-visible{box-shadow:inset 2px 0 0 var(--volt)}
.language-switcher-option[aria-current="page"]{color:var(--volt);background:rgb(24 216 95 / .045)}
.language-switcher-option[aria-current="page"]::before{border-color:var(--volt);background:var(--volt);box-shadow:0 0 8px var(--volt);opacity:1}

/* ===== unified right-side section rail ===== */
main>section{scroll-margin-top:var(--header-h)}
.dots{position:fixed;right:18px;top:50%;translate:0 -50%;z-index:90;display:flex;flex-direction:column;gap:7px;padding:10px 6px;border:1px solid var(--border-soft);background:rgb(11 12 11 / .68);backdrop-filter:blur(8px)}
.dots::before,.dots::after{content:"";width:1px;height:24px;background:linear-gradient(var(--volt),transparent);position:absolute;left:50%}
.dots::before{bottom:100%}
.dots::after{top:100%;rotate:180deg}
.dots a{width:5px;height:19px;background:var(--dim);opacity:.4;transition:.25s}
.dots a:hover,.dots a.on{height:34px;background:var(--volt);opacity:1;box-shadow:0 0 12px rgb(24 216 95 / .45)}
@media(max-width:1060px){.dots{display:none}}

@media(max-width:1060px){
  .language-switcher{display:none}
  body.nav-open .language-switcher{display:inline-flex;position:fixed;z-index:103;top:calc(var(--header-h) + 12px);left:24px;right:auto;padding:0}
  body.nav-open .site-nav{padding-top:68px}
  .language-switcher-menu{right:auto;left:0}
}
@media(max-width:760px){
  body.nav-open .language-switcher{left:18px}
}

/* ===== native document scrolling =====
   Keep the one-screen visual rhythm without turning every section into a
   competing scroll container. Wheel and trackpad input stay interruptible. */
html{scroll-snap-type:none}
main>section{min-height:calc(100dvh - var(--header-h));height:auto;overflow:visible;scroll-snap-align:none;scroll-snap-stop:normal}
main>section.content-section{display:flex;flex-direction:column;justify-content:center}
.page-hero{min-height:calc(100dvh - var(--header-h));height:auto;align-items:center;overflow:hidden}
.page-hero .hero-inner{padding-block:48px}
.site-footer{scroll-snap-align:none}
@media(max-width:680px){
  /* Mobile browsers need one native page scroller; nested full-screen sections
     can trap vertical swipes inside embedded iOS browsers. */
  html{scroll-snap-type:none;scroll-behavior:auto}
  main>section{height:auto;overflow:visible;scroll-snap-align:none;scroll-snap-stop:normal}
  main>section.content-section{justify-content:flex-start}
  main>section{padding-bottom:env(safe-area-inset-bottom)}
  /* Keep the decorative orbit inside the hero without reintroducing a nested
     mobile scroller. The section remains auto-height and the page owns scroll. */
  .page-hero{height:auto;overflow:hidden}
  .content-section{padding-block:clamp(20px,4vh,36px)}
  .page-hero .hero-inner{padding-block:32px}
  /* The mobile route map is a read-only preview so a finger drag always
     continues the page scroll instead of being captured by MapLibre. */
  .route-live-map,.route-live-map .maplibregl-canvas{pointer-events:none!important;touch-action:auto!important}
}

/* ===== compact desktop density ===== */
@media(min-width:681px){
  .content-section{padding-block:clamp(24px,4vh,48px)}
  .section-head{margin-bottom:22px}
  .section-head h2{font-size:clamp(26px,3.4vw,44px)}
  .service-node summary{min-height:0;padding:20px 22px}
  .service-node h3{font-size:18px;margin:10px 0 6px}
  .service-node p{font-size:12.5px}
  .route-workspace{height:auto;min-height:500px}
  .route-map,.route-map svg{min-height:500px;height:100%}
  .route-info{overflow:visible}
  .route-info{padding:20px 22px}
  .route-info .distance{font-size:40px}
  .route-info .route-name{margin:7px 0 12px}
  .route-info .button{margin-top:12px;min-height:42px}
  .route-info .data-list>div{padding:9px 0}
  .tablist button{min-height:52px;padding:9px 16px}
  .notice{margin-top:14px;padding:12px 16px}
  .policy-node{padding:22px 26px 22px 84px}
  .cert-image img{max-height:min(500px,50vh)}
  .launcher-card{min-height:170px;padding:20px}
  .launcher-card h2{font-size:19px}
}
@media(min-width:1061px){
  .launcher-grid{grid-template-columns:repeat(4,1fr)}
}

/* ===== lightbox multi-angle thumbs ===== */
.lightbox-thumbs{position:absolute;z-index:2;left:50%;bottom:16px;width:max-content;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;padding:8px 10px;transform:translateX(-50%);border:1px solid rgb(11 12 11 / .24);background:rgb(11 12 11 / .88);box-shadow:0 12px 26px rgb(0 0 0 / .24)}
.lightbox-thumbs button{position:relative;box-sizing:border-box;flex:0 0 72px;width:72px;height:60px;min-width:0;min-height:0;padding:4px;border:1px solid rgb(244 240 230 / .32);background:#fffdf7;box-shadow:0 3px 10px rgb(0 0 0 / .18);cursor:pointer;display:grid;place-items:center;transition:.2s}
.lightbox-thumbs picture{box-sizing:border-box;display:grid;place-items:center;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden}
.lightbox-thumbs button img{display:block;width:100%;height:100%;min-width:0;min-height:0;max-width:100%;max-height:100%;object-fit:contain;opacity:.8;transition:.2s}
.lightbox-thumbs button:hover img,.lightbox-thumbs button[aria-pressed="true"] img{opacity:1}
.lightbox-thumbs button:hover,.lightbox-thumbs button[aria-pressed="true"]{border-color:var(--volt);box-shadow:0 0 10px rgb(24 216 95 / .3)}
@media(max-width:760px){.lightbox-thumbs{bottom:12px;gap:6px;padding:6px 8px}.lightbox-thumbs button{flex-basis:60px;width:60px;height:50px}}

/* ===== race color identity (42K green / 21K sky / 5K amber) ===== */
:root{--race-42:#18D85F;--race-21:#3EC9F5;--race-5:#FFB040}
[data-race="42k"]{--race:var(--race-42)}
[data-race="21k"]{--race:var(--race-21)}
[data-race="5k"]{--race:var(--race-5)}
.tablist button[data-race][aria-selected="true"],.tablist button[data-race][aria-pressed="true"]{box-shadow:inset 0 -3px 0 var(--race)}
.tablist button[data-race][aria-selected="true"] strong,.tablist button[data-race][aria-pressed="true"] strong{color:var(--race)}
.tablist button[data-race]:hover strong{color:var(--race)}
[data-route-viewer] .route-path{stroke:var(--race,var(--volt));filter:drop-shadow(0 0 5px color-mix(in srgb,var(--race,var(--volt)) 62%,transparent))}
[data-route-viewer] .route-node{stroke:var(--race,var(--volt))}
[data-route-viewer] .route-map-label{color:var(--race,var(--volt))}
[data-route-viewer] .route-info .distance{color:var(--race,var(--ivory))}
[data-route-viewer] .route-info .tag{color:var(--race,var(--volt));border-color:color-mix(in srgb,var(--race,var(--volt)) 30%,transparent)}
.race-panel[data-race] .race-title strong{color:var(--race)}
.race[data-race]{box-shadow:inset 0 3px 0 var(--race)}
.race[data-race] .dist{color:var(--race)}
.race[data-race] .dist small{color:var(--muted)}

/* ===== live basemap (MapLibre + PMTiles, ported from production) ===== */
.route-map .route-live-map.maplibregl-map,.route-map .route-live-map{position:absolute;inset:0;width:100%;height:100%;z-index:1}
.route-live-map .maplibregl-canvas{outline:none}
.route-map .route-map-label{z-index:3}
.route-live-map .maplibregl-ctrl-group{background:rgb(11 12 11 / .85);border:1px solid var(--border);border-radius:0;box-shadow:none}
.route-live-map .maplibregl-ctrl-group button{background:none}
.route-live-map .maplibregl-ctrl-group button span{filter:invert(1)}
