@font-face{font-family:"Onest";src:url(/fonts/onest-latin.woff2) format("woff2");font-weight:400 700;font-display:swap;unicode-range:U+0000-00FF,U+2000-206F}
:root{
  --night:#07111c;--sky:#10253a;--valley:#17324a;--ridge:#2a4862;
  --mist:#c9dbe8;--glacier:#9fd3ff;--glacier-ink:#0a2236;--dawn:#f2a98a;--ember:#c4663f;
  --snow:#f4f8fb;--paper:#eef3f7;--sheet:#ffffff;--ink:#13263a;--ink-2:#3a4f63;--ink-3:#52697c;
  --line:#d3dee8;--line-2:#b9c9d7;--link:#245f87;--risk:#a63d2a;--risk-bg:#fbeee9;--ok:#1d6b56;
  --r-panel:24px;--r-card:12px;--r-btn:8px;--r-chip:4px;
  --shadow-paper:0 8px 28px -20px rgba(23,50,74,.2);--shadow-float:0 20px 48px -24px rgba(7,17,28,.5);
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--space-12:48px;--space-16:64px;
  --type-1:16px;--type-2:20px;--type-3:25px;--type-4:31.25px;--type-5:39.06px;--type-6:48.83px;
  --ease:cubic-bezier(.32,.72,0,1);
  --cjk:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC","Source Han Sans SC",sans-serif;
  --gut:clamp(16px,4vw,48px);
  --gut-l:max(var(--gut),env(safe-area-inset-left));
  --gut-r:max(var(--gut),env(safe-area-inset-right));
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:88px}
body{margin:0;background:var(--paper);color:var(--ink);font:400 16.5px/1.85 "Onest",var(--cjk);text-rendering:optimizeLegibility}
img{max-width:100%;height:auto}
a{color:var(--link);text-underline-offset:3px;text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:3px solid var(--link);outline-offset:4px;border-radius:4px}
.topbar :focus-visible,.dawn :focus-visible,.base :focus-visible,.rig-out :focus-visible,.dusk :focus-visible,.signup :focus-visible,.codetail :focus-visible,.bench-home :focus-visible{outline-color:var(--glacier)}
[hidden]{display:none!important}
button,input,select{touch-action:manipulation}
button:disabled{cursor:wait;opacity:.65}
::selection{background:#c7e2f7;color:var(--night)}
.text :focus-visible,.shelf :focus-visible{outline-color:var(--link)}
.wrap{width:100%;max-width:1240px;margin:0 auto;padding:0 var(--gut-r) 0 var(--gut-l)}
.jump{position:absolute;left:12px;top:-60px;z-index:20;background:var(--glacier);color:var(--glacier-ink);padding:8px 14px;border-radius:var(--r-chip)}
.jump:focus{top:12px}

/* 顶栏 */
.topbar{position:sticky;top:0;z-index:10;height:64px;display:flex;align-items:center;gap:20px;padding:0 var(--gut-r) 0 var(--gut-l);color:var(--snow);
  background:rgba(7,17,28,.86);-webkit-backdrop-filter:blur(16px) saturate(140%);backdrop-filter:blur(16px) saturate(140%);border-bottom:1px solid rgba(201,219,232,.12)}
.topbar-over{position:fixed;inset:0 0 auto 0;background:rgba(7,17,28,.9)}
.wm{display:inline-flex;align-items:center;gap:10px;color:inherit;text-decoration:none;font:600 21px/1 "Onest",sans-serif;letter-spacing:-.01em}
.wm-i{flex:none;width:104px;height:36px;overflow:visible}
.wm{min-height:44px}
.lanes{margin-left:auto}
.lanes ul{display:flex;gap:2px;list-style:none;margin:0;padding:0}
.lanes a{display:block;padding:12px;min-height:44px;border-radius:var(--r-chip);color:rgba(244,248,251,.84);text-decoration:none;font-size:15px;line-height:1.4}
.lanes a:hover{background:rgba(244,248,251,.08);color:var(--snow)}
.lanes a[aria-current]{color:var(--snow);box-shadow:inset 0 -2px 0 var(--glacier)}
.seek{width:44px;height:44px;display:grid;place-items:center;border-radius:var(--r-chip);border:1px solid rgba(201,219,232,.22);color:var(--snow)}
.seek:hover{background:rgba(244,248,251,.08)}
.drawer{display:none;position:relative}
.drawer summary{list-style:none;width:44px;height:44px;display:grid;place-content:center;gap:6px;border-radius:var(--r-btn);border:1px solid rgba(201,219,232,.22);cursor:pointer}
.drawer summary::-webkit-details-marker{display:none}
.drawer summary span{display:block;width:18px;height:2px;background:var(--snow);border-radius:2px;transition:transform .4s var(--ease)}
.drawer[open] summary span:first-child{transform:translateY(4px) rotate(45deg)}
.drawer[open] summary span:last-child{transform:translateY(-4px) rotate(-45deg)}
.drawer ul{position:absolute;right:0;top:54px;min-width:220px;margin:0;padding:8px;list-style:none;border-radius:var(--r-card);background:rgba(10,22,38,.96);border:1px solid rgba(201,219,232,.16);box-shadow:0 24px 50px -20px rgba(0,0,0,.6)}
.drawer a{display:block;padding:12px 14px;color:var(--snow);text-decoration:none;border-radius:var(--r-chip)}
.drawer a:hover{background:rgba(244,248,251,.08)}

/* 首屏 */
.dawn{position:relative;min-height:min(100svh,940px);display:flex;align-items:flex-end;overflow:hidden;color:var(--snow);background:var(--night)}
.scene{position:absolute;inset:0;width:100%;height:100%}
.dawn::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(7,17,28,.72) 0%,rgba(7,17,28,.3) 44%,rgba(7,17,28,0) 66%)}
.dawn-in{position:relative;z-index:2;width:100%;max-width:1440px;margin:0 auto;padding:120px var(--gut-r) clamp(40px,7vh,72px) var(--gut-l);display:grid;grid-template-columns:minmax(0,40rem) minmax(0,1fr);gap:32px}
.dawn h1{margin:0 0 18px;font-weight:600;font-size:clamp(2.1rem,4.4vw,4rem);line-height:1.12;letter-spacing:-.02em;text-wrap:balance}
.dawn-lede{margin:0 0 30px;max-width:34em;font-size:clamp(16px,1.25vw,18px);line-height:1.8;color:rgba(244,248,251,.82)}
.ticket{max-width:34rem;padding:22px 24px;border-radius:var(--r-panel);background:rgba(16,37,58,.64);box-shadow:inset 0 1px 0 rgba(244,248,251,.06);-webkit-backdrop-filter:blur(18px) saturate(150%);backdrop-filter:blur(18px) saturate(150%);border:1px solid rgba(201,219,232,.18)}
.ticket-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.ticket-k,.signup-k{font-size:14px;color:rgba(244,248,251,.72)}
.ticket-v{font:600 34px/1 "Onest",sans-serif;letter-spacing:.06em;font-variant-numeric:tabular-nums}
.cp{margin-left:auto;display:inline-flex;align-items:center;height:44px;padding:0 18px;border:0;border-radius:var(--r-btn);background:var(--glacier);color:var(--glacier-ink);font:600 15px/1 "Onest",var(--cjk);cursor:pointer;transition:background .18s var(--ease),transform .18s var(--ease)}
.cp:hover{background:#b9dffd}
.cp:active{transform:scale(.97)}
.cp[data-done]{background:#d6edff}
.ticket-perk{margin:16px 0 14px;font-size:16px}
.fn{color:var(--glacier);text-decoration:none;padding:0 2px}
.ticket-go{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ticket-go span{font-size:13px;color:#b8cbd9}
.out{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border-radius:var(--r-btn);border:1px solid rgba(244,248,251,.55);color:var(--snow);text-decoration:none;font-weight:600;font-size:15px;transition:background .5s var(--ease)}
.out:hover{background:rgba(244,248,251,.1)}
.ticket-fn{margin:14px 0 0;font-size:13px;line-height:1.7;color:#b8cbd9}
.ticket-fn a{color:rgba(244,248,251,.82)}
.pick{align-self:end;justify-self:end;max-width:24rem;display:block;padding:20px 22px;border-radius:var(--r-panel);background:rgba(244,248,251,.93);color:var(--ink);text-decoration:none;box-shadow:var(--shadow-float);border:1px solid rgba(244,248,251,.4);transition:background .18s var(--ease)}
.pick:hover{background:var(--sheet)}
.pick-k{display:block;font-size:13px;color:var(--ink-3);margin-bottom:6px}
.pick-t{display:block;font-weight:600;font-size:18px;line-height:1.45;margin-bottom:8px}
.pick-d{display:block;font-size:14px;line-height:1.65;color:var(--ink-2)}

/* 首页：路线 */
.course{padding-top:clamp(48px,8vw,96px);padding-bottom:24px}
.course-h,.bench-home h2,.twin h2{margin:0;font-size:clamp(24px,2.4vw,32px);line-height:1.25;letter-spacing:-.01em}
.course-d{margin:10px 0 36px;max-width:40em;color:var(--ink-2)}
.course-l{list-style:none;margin:0;padding:0 0 0 34px;position:relative;counter-reset:none}
.course-l::before{content:"";position:absolute;left:9px;top:20px;bottom:40px;width:1px;border-radius:3px;background:linear-gradient(var(--dawn),var(--mist) 30%,var(--glacier))}
.stop{position:relative;display:grid;grid-template-columns:minmax(0,19rem) minmax(0,1fr);gap:12px 40px;padding:0 0 48px}
.stop::before{content:"";position:absolute;left:-30px;top:16px;width:14px;height:14px;border-radius:50%;display:grid;place-items:center;background:var(--sheet);border:3px solid var(--glacier);font:600 13px/1 "Onest",sans-serif;color:var(--ink)}
.stop-head h3{margin:0 0 8px;font-size:25px;line-height:1.4}
.stop-head h3 a{display:inline-flex;align-items:center;min-height:44px}
.stop-head h3 a{color:var(--ink);text-decoration:none}
.stop-head h3 a:hover{color:var(--link)}
.stop-head p{margin:0;max-width:19em;color:var(--ink-2);font-size:16px;line-height:1.75}
.stop-l{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.stop-l li{border-bottom:1px solid var(--line)}
.stop-l a{display:block;padding:14px 4px;min-height:52px;color:var(--ink);text-decoration:none;line-height:1.55}
.stop-l a:hover{color:var(--link);background:color-mix(in srgb,var(--glacier) 14%,transparent)}

/* 首页：工具 */
.bench-home{margin-top:24px;padding:56px 0 64px;background:linear-gradient(180deg,var(--sky),var(--valley));color:var(--snow)}
.bench-home h2{color:var(--snow);margin-bottom:32px;max-width:13em}
.kits{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;gap:0}
.kit{position:relative;padding:24px 4px;display:grid;grid-template-columns:76px minmax(0,1fr) minmax(0,1.05fr);gap:4px 24px;border-bottom:1px solid var(--line)}
.kits-home .kit{border-color:rgba(201,219,232,.22)}
.kit a{grid-column:2;display:flex;align-items:center;min-height:44px;font-weight:600;font-size:18px;line-height:1.45;color:var(--ink);text-decoration:none}
.kit a::after{content:"";position:absolute;inset:0;border-radius:inherit}
.kits-home .kit a{color:var(--snow)}
.kit span{grid-column:2;display:block;margin:0;font-size:13px;color:var(--ink-3)}
.kits-home .kit span{color:var(--mist)}
.kit p{grid-column:3;grid-row:1 / 3;align-self:center;margin:0;font-size:16px;line-height:1.7;color:var(--ink-2)}
.kits-home .kit p{color:rgba(244,248,251,.76)}
.kit::before{content:"";grid-column:1;grid-row:1 / 3;align-self:center;display:block;height:46px;margin:0;border-radius:4px;background-repeat:no-repeat;background-size:100% 100%}
.kit-gridfee::before{background-image:linear-gradient(transparent 31%,rgba(159,211,255,.55) 31% 34%,transparent 34% 64%,rgba(159,211,255,.55) 64% 67%,transparent 67%),linear-gradient(90deg,rgba(242,169,138,.25),rgba(159,211,255,.2))}
.kit-dca::before{background:repeating-linear-gradient(90deg,rgba(159,211,255,.55) 0 8%,transparent 8% 12.5%),linear-gradient(transparent 40%,rgba(201,219,232,.2) 40%)}
.kit-rebind::before{background:radial-gradient(circle at 10% 50%,var(--glacier) 0 9px,transparent 10px),radial-gradient(circle at 50% 50%,var(--mist) 0 9px,transparent 10px),radial-gradient(circle at 90% 50%,var(--dawn) 0 9px,transparent 10px),linear-gradient(transparent 47%,rgba(201,219,232,.35) 47% 53%,transparent 53%)}
.kit:hover{background:rgba(159,211,255,.1);border-color:var(--line-2)}
.kits-home .kit:hover{background:rgba(244,248,251,.1)}

/* 首页：话题 + 最近 */
.twin{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:72px;padding-top:72px;padding-bottom:32px}
.twin h2{font-size:25px;margin-bottom:24px}
.twin h2 a{display:inline-flex;align-items:center;min-height:44px}
.twin h2 a{color:var(--ink);text-decoration:none}
.chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.chips a{display:inline-flex;align-items:center;min-height:44px;padding:8px 14px;border-radius:var(--r-btn);background:var(--sheet);border:1px solid var(--line);color:var(--ink);text-decoration:none;font-size:15px;line-height:1.5}
.chips a:hover{border-color:var(--link);color:var(--link)}
.twin-n{margin:18px 0 0;color:var(--ink-2);font-size:15px}
.fresh{list-style:none;margin:0;padding:0}
.fresh li{display:flex;gap:16px;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.fresh a{display:flex;align-items:center;min-height:44px;color:var(--ink);text-decoration:none;line-height:1.7}
.fresh a:hover{color:var(--link)}
.fresh time{flex:none;font-size:13px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.home-note{padding-top:24px;padding-bottom:72px;max-width:1240px;margin-inline:auto;border-top:1px solid var(--line)}
.home-note p{max-width:44em}
.home-note p{color:var(--ink-2);font-size:16px}

/* 暮色标题带（文章、列表、说明页） */
.dusk{position:relative;color:var(--snow);background:linear-gradient(120deg,var(--night),var(--sky) 70%,var(--valley));padding:32px 0 48px;overflow:hidden}
.dusk::after{content:"";position:absolute;inset:auto 0 0;height:1px;background:linear-gradient(90deg,var(--dawn),var(--ridge) 30%,var(--glacier));opacity:.6}
.dusk-thin{padding:24px 0 40px}
.dusk-in{position:relative;z-index:1;max-width:1240px}
.pg-art .dusk-in{max-width:1084px}
.pg-list .dusk-in{max-width:66rem}
.pg-tool .dusk-in{max-width:72rem}
.trail{margin:0 0 16px;font-size:14px;color:rgba(244,248,251,.7)}
.trail a{color:rgba(244,248,251,.86);text-decoration:none}
.trail a:hover{text-decoration:underline}
.trail span[aria-hidden]{margin:0 8px}
.dusk h1{margin:0;max-width:21em;font-weight:600;font-size:clamp(1.953rem,3.2vw,3.052rem);line-height:1.35;letter-spacing:-.015em;text-wrap:balance}
.dusk-lede{margin:16px 0 0;max-width:40em;color:rgba(244,248,251,.82);font-size:17px;line-height:1.8}
.sig{margin:18px 0 0;display:flex;flex-wrap:wrap;gap:6px 22px;font-size:13.5px;color:rgba(244,248,251,.68)}

/* 文章阅读区 */
.read{display:grid;grid-template-columns:15rem minmax(0,38em);font-size:18px;gap:64px;justify-content:center;padding-top:48px;padding-bottom:96px}
.read-short{grid-template-columns:minmax(0,38em)}
.read-main{min-width:0}
.map{position:relative}
.map-in{position:sticky;top:88px;padding:0 12px 12px 0;max-height:calc(100svh - 112px);overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--line-2) transparent}
.map-t{margin:0 0 16px;padding-bottom:12px;border-bottom:1px solid var(--line);font-size:14px;font-weight:600;color:var(--ink)}
.map ol,.map-m ol{list-style:none;margin:0;padding:0;counter-reset:m}
.map li,.map-m li{counter-increment:m}
.map a{display:grid;grid-template-columns:1.6em 1fr;min-height:44px;padding:11px 8px;font-size:14px;line-height:1.55;color:var(--ink-2);text-decoration:none;border-left:2px solid var(--line);padding-left:12px}
.map a::before{content:counter(m);font:500 13px/1.7 "Onest",sans-serif;color:var(--ink-3)}
.map a:hover,.map a[aria-current]{color:var(--link);border-left-color:var(--link);background:color-mix(in srgb,var(--glacier) 16%,transparent)}
.map a[aria-current]{font-weight:600}
.map-m{display:none;position:sticky;top:64px;z-index:4;margin:0 0 32px;padding:0 16px;border-radius:var(--r-card);background:var(--sheet);border:1px solid var(--line);box-shadow:var(--shadow-paper);max-height:calc(100svh - 80px);overflow:auto;overscroll-behavior:contain}
.map-m summary{cursor:pointer;font-weight:600;min-height:52px;display:flex;align-items:center;gap:12px;font-size:15px;list-style:none}
.map-m summary::-webkit-details-marker{display:none}
.map-m summary>span:first-child{min-width:0;max-width:54%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.map-m summary::after{content:"+";margin-left:auto;font-size:20px;font-weight:400;color:var(--link)}
.map-m[open] summary::after{content:"\2212"}
.map-position{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:50%;font-size:13px;font-weight:400;color:var(--ink-3)}
.map-m[open] nav{padding-bottom:16px}
.map-m a{display:flex;align-items:center;min-height:44px;padding:9px 4px;color:var(--ink-2);text-decoration:none;font-size:15px}
.map-m li::before{content:counter(m) ". ";color:var(--ink-3);font-size:13px}
.map-m li{display:flex;gap:8px;align-items:baseline}
.map-m a[aria-current]{color:var(--link);text-decoration:underline;text-underline-offset:4px}
.article-cover{margin:0 0 40px}
.article-cover img{display:block;width:100%;border-radius:var(--r-card)}
.article-cover figcaption{margin-top:8px;font-size:13px;color:var(--ink-3)}

.text{font-size:18px;line-height:1.95;overflow-wrap:break-word}
.text h2[id],.text h3[id]{scroll-margin-top:16px}
.text>:first-child{margin-top:0}
.text p{margin:0 0 1.25em}
.text h2{margin:64px 0 20px;padding-top:24px;border-top:1px solid var(--line);font-size:25px;line-height:1.5;letter-spacing:-.01em}
.text h3{margin:36px 0 12px;font-size:20px;line-height:1.55}
.text ul,.text ol{margin:0 0 1.2em;padding-left:1.4em}
.text li{margin:.5em 0;padding-left:.15em}
.text li::marker{color:var(--ink-3)}
.text strong{font-weight:600;color:#0c1b2b}
.text code{font-family:inherit;font-size:1em;padding:.1em .35em;border-radius:6px;background:#e1e9f0}
.text blockquote{margin:1.4em 0;padding:4px 0 4px 18px;border-left:3px solid var(--line-2);color:var(--ink-2)}
.text hr{border:0;height:1px;background:var(--line);margin:2.4em 0}
.text .hint,.text .risk,.text .calc,.text .gist{margin:28px 0;padding:20px 24px;border-radius:var(--r-card);font-size:17px;line-height:1.9}
.text .hint{background:#e3eff8;border-left:3px solid #79a8c8;border-radius:0 var(--r-card) var(--r-card) 0}
.text .risk{background:var(--risk-bg);border-left:3px solid #ac573b;border-radius:0 var(--r-card) var(--r-card) 0;color:#652c1d}
.text .calc{background:var(--sheet);border:1px solid var(--line-2);box-shadow:var(--shadow-paper);font-variant-numeric:tabular-nums}
.text .gist{background:#deebf5;border-left:4px solid var(--link);border-radius:0;padding-block:16px;font-weight:500}
.text ol.steps{list-style:none;padding:0;counter-reset:s}
.text ol.steps>li{position:relative;counter-increment:s;padding:0 0 28px 46px;margin:0}
.text ol.steps>li::before{content:counter(s);position:absolute;left:0;top:2px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--valley);color:var(--snow);font:600 14px/1 "Onest",sans-serif}
.text ol.steps>li::after{content:"";position:absolute;left:14px;top:36px;bottom:6px;width:2px;background:var(--line)}
.text ol.steps>li:last-child::after{display:none}
.sheet{margin:1.4em 0;overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-card);background:var(--sheet)}
.sheet table{width:100%;min-width:480px;border-collapse:collapse;font-size:16px;line-height:1.65;font-variant-numeric:tabular-nums}
.sheet th,.sheet td{padding:14px 16px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.sheet th{background:#dde8f1;font-weight:600;white-space:nowrap}
.sheet tr:last-child td{border-bottom:0}
.shot,.figure{margin:36px 0}
.shot img,.figure img{display:block;width:100%;border-radius:var(--r-card);border:1px solid var(--line);background:var(--sheet)}
.shot figcaption,.figure figcaption{margin-top:8px;font-size:14px;line-height:1.65;color:var(--ink-3)}
.shot-when{display:block;margin-top:4px;font-size:13px;color:var(--ink-3)}
.src{margin:32px 0;padding:16px 18px;border-left:2px solid var(--line-2);border-radius:var(--r-chip);background:#e6edf3;font-size:14.5px;line-height:1.7;color:var(--ink-2)}
.src-k{margin-right:6px}
.src-d{color:var(--ink-3)}
.qa{margin-top:2.6em;padding-top:4px}
.qa-i{padding:24px 0;border-top:1px solid var(--line)}
.qa-i h3{margin:0 0 12px;font-size:20px}
.qa-i p{margin:0;color:var(--ink-2)}

/* 注册卡 */
.signup,.codetail{margin:1.8em 0;padding:22px 24px;border-radius:var(--r-panel);color:var(--snow);background:linear-gradient(160deg,var(--valley),var(--night));box-shadow:0 30px 60px -36px rgba(7,17,28,.7)}
.signup-t,.codetail-t{margin:0 0 14px;font-weight:600;font-size:18px}
.signup-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.signup .ticket-v,.codetail .ticket-v{font-size:28px;color:var(--snow)}
.text .signup p,.text .codetail p{margin:0}
.text .signup .signup-n,.text .codetail .codetail-n{margin-top:14px}
.out-wide{width:100%;justify-content:center;border-color:rgba(159,211,255,.6)}
.signup-n,.codetail-n{margin:14px 0 0;font-size:13.5px;line-height:1.75;color:rgba(244,248,251,.72)}
.codetail{background:linear-gradient(160deg,#1f3d58,var(--valley))}

/* 文末 */
.after{margin-top:48px;padding-top:32px;border-top:1px solid var(--line-2);display:grid;gap:28px}
.topics{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;font-size:14px}
.topics-k{color:var(--ink-3)}
.topics a,.topics span:not(.topics-k){display:inline-flex;align-items:center;min-height:44px;padding:8px 12px;border-radius:var(--r-btn);border:1px solid var(--line);background:var(--sheet);color:var(--ink);text-decoration:none}
.topics a:hover{border-color:var(--link);color:var(--link)}
.byline-box{padding:4px 0 4px 20px;border-left:3px solid var(--line-2);font-size:14.5px;line-height:1.75;color:var(--ink-2)}
.byline-box p{margin:0}
.byline-n{font-weight:600;color:var(--ink);margin-bottom:4px!important}
.flip{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.flip a{display:block;padding:14px 16px;border-radius:var(--r-card);border:1px solid var(--line);color:var(--ink);text-decoration:none;line-height:1.55;font-size:15px}
.flip a span{display:block;font-size:13px;color:var(--ink-3);margin-bottom:4px}
.flip a:hover{border-color:var(--link)}
.flip-n{text-align:right;grid-column:2}
.more-t{margin:0 0 6px;font-weight:600}
.more ul{margin:0;padding-left:1.2em}
.more li{margin:0}
.more li a{display:inline-flex;align-items:center;min-height:44px}

/* 列表 */
.shelf{padding-top:40px;padding-bottom:96px;max-width:66rem}
.shelf-intro{max-width:38em;margin-bottom:40px}
.row-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.row{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 32px;padding:24px 4px;border-bottom:1px solid var(--line)}
.row-t{display:flex;align-items:center;min-height:44px;font-weight:600;font-size:20px;line-height:1.55;color:var(--ink);text-decoration:none}
.row-t::after{content:"";position:absolute;inset:0}
.row:hover .row-t{color:var(--link)}
.row-d{grid-column:1;margin:0;max-width:44em;font-size:16px;line-height:1.8;color:var(--ink-2)}
.row-lane{grid-column:2;grid-row:1;font-size:13px;color:var(--ink-3);white-space:nowrap}
.stack{margin-top:56px}
.stack h2{margin:0 0 16px;font-size:25px}
.stack h2 a{display:inline-flex;align-items:center;min-height:44px}
.stack h2 a{color:var(--ink);text-decoration:none}
.themes{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.themes a{display:flex;flex-direction:column;gap:12px;height:100%;padding:24px 16px 24px 0;border-bottom:1px solid var(--line-2);color:var(--ink);text-decoration:none}
.themes a:hover{border-color:var(--link)}
.themes b{font-size:20px}
.themes span{font-size:16px;line-height:1.65;color:var(--ink-2)}
.themes em{margin-top:auto;font-style:normal;font-size:13px;color:var(--ink-3)}
.pager{display:flex;gap:18px;align-items:center;justify-content:center;padding:28px 0 0;font-size:15px}
.seekform label{display:block;margin-bottom:8px;color:var(--ink-2)}
.seekform-row{display:flex;gap:10px}
.seekform input{flex:1;min-width:0;min-height:48px;height:48px;padding:0 16px;border-radius:var(--r-btn);border:1px solid var(--line-2);background:var(--sheet);font:inherit;font-size:16px;color:var(--ink)}
.seekform input:focus{outline:2px solid var(--link);outline-offset:1px}
.seekform button{height:48px;padding:0 22px;border:0;border-radius:var(--r-btn);background:var(--valley);color:var(--snow);font:600 15px/1 "Onest",var(--cjk);cursor:pointer}
.seek-state{margin:18px 0 8px;color:var(--ink-3);font-size:15px}

/* 工具页 */
.bench{padding-top:40px;padding-bottom:72px;max-width:72rem}
.howto{margin-top:28px;padding:18px 22px;border-radius:var(--r-card);background:var(--sheet);border:1px solid var(--line)}
.howto summary{cursor:pointer;font-weight:600;font-size:17px;min-height:44px;padding:6px 0}
.howto .text{max-width:38em}
.howto .text{margin-top:14px;font-size:16px}
.rig{display:grid;grid-template-columns:minmax(0,23rem) minmax(0,1fr);gap:32px;align-items:start}
.rig-in{padding:28px;box-shadow:var(--shadow-paper);border-radius:var(--r-panel);background:var(--sheet);border:1px solid var(--line)}
.rig-in fieldset{border:0;margin:0;padding:0;min-width:0}
.rig-in fieldset+fieldset{margin-top:20px;padding-top:24px;border-top:1px solid var(--line)}
.rig-in legend{font-size:20px;font-weight:600;margin-bottom:20px;padding:0}
.fld{display:block;min-width:0;margin:0 0 20px}
.fld>span{display:block;font-size:15px;color:var(--ink-2);margin-bottom:6px}
.fld input,.fld select{width:100%;min-width:0;height:48px;padding:0 12px;border-radius:var(--r-btn);border:1px solid var(--line-2);background:#fbfdfe;font:500 16px/1 "Onest",var(--cjk);color:var(--ink);font-variant-numeric:tabular-nums}
.fld input:focus,.fld select:focus{outline:2px solid var(--link);outline-offset:1px}
.fld small{display:block;margin-top:5px;font-size:13px;color:var(--ink-3);line-height:1.5}
.pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 12px}
.seg{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}
.seg label{position:relative}
.seg input{position:absolute;opacity:0;inset:0}
.seg span{display:inline-flex;align-items:center;min-height:44px;padding:8px 14px;border-radius:var(--r-btn);border:1px solid var(--line-2);font-size:14.5px;cursor:pointer}
.seg input:checked+span{background:var(--valley);border-color:var(--valley);color:var(--snow)}
.seg input:focus-visible+span{outline:2px solid var(--link);outline-offset:2px}
.rig-out{position:sticky;top:88px;min-width:0;padding:32px;border-radius:var(--r-panel);color:var(--snow);background:linear-gradient(165deg,var(--valley),var(--night))}
.big{margin:0;font:600 clamp(32px,3.1vw,44px)/1.2 "Onest",sans-serif;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.big-k{margin:0 0 8px;font-size:14px;color:var(--mist)}
.big-n{margin:10px 0 0;font-size:14px;color:rgba(244,248,251,.72);line-height:1.7}
.nums{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;margin:28px 0 0;padding:0;list-style:none}
.nums li{min-width:0;padding:18px 0;border-top:1px solid rgba(201,219,232,.24)}
.nums b{display:block;font:600 20px/1.5 "Onest",sans-serif;font-variant-numeric:tabular-nums}
.nums span{display:block;margin-top:4px;font-size:13px;color:rgba(244,248,251,.7)}
.plot{overflow:auto;margin-top:24px;border-radius:var(--r-card);background:rgba(7,17,28,.35);border:1px solid rgba(201,219,232,.12);padding:10px}
.plot svg{display:block;width:100%;min-width:280px;height:auto}
.plot:empty{display:none}
.plot-key{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 20px;padding:8px 4px 0;color:var(--mist);font-size:13px;line-height:1.6}
#dc .plot-key span::before{content:"";display:inline-block;width:18px;vertical-align:middle;margin-right:6px;border-top:2px solid var(--glacier)}
#dc .plot-key .plot-key-dashed::before{border-top:2px dashed var(--mist)}
.warnline{margin:16px 0 0;padding:10px 14px;border-radius:var(--r-chip);background:rgba(242,169,138,.14);color:#ffd9c4;font-size:14px;line-height:1.65}
.tbl-out{margin-top:18px;max-height:280px;overflow:auto;border-radius:var(--r-card);border:1px solid rgba(201,219,232,.14)}
.tbl-out table{width:100%;border-collapse:collapse;font-size:13.5px;font-variant-numeric:tabular-nums}
.tbl-out th,.tbl-out td{padding:12px 14px;white-space:nowrap;border-bottom:1px solid rgba(201,219,232,.1);text-align:right}
.tbl-out th{position:sticky;top:0;background:#14304a;color:var(--mist);font-weight:500}
.tbl-out td:first-child,.tbl-out th:first-child{text-align:left}
.quiz{list-style:none;margin:0;padding:0;counter-reset:q}
.quiz>li{counter-increment:q;padding:24px 0;border-bottom:1px solid var(--line)}
.quiz>li:last-child{border-bottom:0}
.quiz p{margin:0 0 10px;font-weight:600;line-height:1.6}
.quiz p::before{content:counter(q) ". ";color:var(--ink-3)}
.verdict{margin:0 0 10px;font:600 26px/1.3 "Onest",var(--cjk)}
.verdict-ok{color:#bdf0d9}
.verdict-wait{color:#f2c1a9}
.verdict-no{color:#ffc5b4}
.why{margin:20px 0 0;padding-left:1.2em;font-size:16px;line-height:1.75;color:rgba(244,248,251,.84)}
.why li{margin:.4em 0}
.rig-out a{color:var(--glacier)}
.status{font-size:13px;color:#b8cbd9;margin:10px 0 0}
.rig-in .status{color:var(--ink-3)}

/* 页脚 */
.base{background:var(--night);color:rgba(244,248,251,.78);padding:56px 0 max(28px,env(safe-area-inset-bottom));font-size:14.5px;line-height:1.85}
.base a{color:rgba(244,248,251,.9)}
.base-in{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:48px}
.wm-base{color:var(--snow);margin-bottom:14px}
.base-say p{margin:0 0 12px;max-width:40em}
.base-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.base-h{margin:0 0 8px;color:var(--snow);font-weight:600}
.base ul{list-style:none;margin:0;padding:0}
.base li{margin:4px 0}
.base li a{text-decoration:none}
.base li a:hover{text-decoration:underline}
.base-end{margin:36px auto 0;padding-top:18px;border-top:1px solid rgba(201,219,232,.12);font-size:13px;color:#acbfce}


.trail a{display:inline-flex;align-items:center;padding:6px 2px;min-width:44px;min-height:44px}
.base li a{display:inline-flex;align-items:center;padding:8px 0;min-width:44px;min-height:44px}
.base-say a,.ticket-fn a{padding:2px 0}
/* 404 */
.lost{padding-top:56px;padding-bottom:56px;min-height:58svh}
.lost-n{margin:0 0 24px;font:600 80px/1 "Onest",sans-serif;color:var(--glacier)}
.lost ul{display:flex;flex-wrap:wrap;gap:16px 32px;list-style:none;margin:32px 0 0;padding:0}
.lost a{display:inline-flex;align-items:center;min-height:48px;border-bottom:1px solid #6385a1;color:var(--glacier)}

/* 交互与辅助信息 */
.result-state{margin:0 0 20px;padding:10px 12px;border-left:2px solid var(--dawn);background:rgba(242,169,138,.1);color:#ffd9c4;font-size:14px;line-height:1.7}
.rig-out[aria-busy="true"]{box-shadow:inset 0 3px 0 var(--glacier)}
.result-jump{margin-top:12px}
.drawer a[aria-current]{background:rgba(159,211,255,.12);box-shadow:inset 3px 0 var(--glacier)}
.fld input,.fld select,.seg span,.seekform input,.result-jump{border-color:#7d93a6}
.seek,.drawer summary{border-color:#728596;border-radius:var(--r-btn)}
.drawer ul{max-height:calc(100svh - 88px);overflow:auto;overscroll-behavior:contain}
.row:focus-within,.kit:focus-within{outline:3px solid var(--link);outline-offset:4px}
.kits-home .kit:focus-within{outline-color:var(--glacier)}
.pager a{display:inline-flex;align-items:center;min-height:44px;min-width:44px}
.sheet tbody tr:nth-child(even){background:#f5f9fc}
.sheet:focus-visible,.tbl-out:focus-visible{outline-offset:4px}
.signup strong,.codetail strong{color:var(--snow)}
.rig-in .cp{margin-left:0;min-height:48px;width:100%;justify-content:center}
.status:empty{display:none}
#rb.rig{grid-template-columns:minmax(0,1.08fr) minmax(0,1fr)}
#rb .quiz>li:first-child{padding-top:0}
#rb .quiz>li:last-child{padding-bottom:0}
#rb .seg{margin-bottom:0}
.result-jump{display:none}
@media (min-width:901px){
  .bench-home>.wrap{display:grid;grid-template-columns:minmax(0,.65fr) minmax(0,1.55fr);gap:48px}
  .kits-home .kit{grid-template-columns:56px minmax(0,1fr);padding:24px 0}
  .kits-home .kit:first-child{padding-top:0}
  .kits-home .kit p{grid-column:2;grid-row:3}
  .kits-home .kit::before{grid-row:1 / 4}
}
@media (max-width:1060px){
  .lanes{display:none}
  .drawer{display:block}
  .seek{margin-left:auto}
  .read{grid-template-columns:minmax(0,38em)}
  .map{display:none}
  .map-m{display:block}
}
@media (max-width:900px){
  .dawn{align-items:stretch;background:var(--night)}
  .dawn .scene{height:62%;top:auto;bottom:0;-webkit-mask-image:linear-gradient(transparent,#000 22%);mask-image:linear-gradient(transparent,#000 22%)}
  .dawn::after{background:linear-gradient(180deg,rgba(7,17,28,.2) 0%,rgba(7,17,28,.72) 55%,rgba(7,17,28,.86) 100%)}
  .dawn-in{grid-template-columns:1fr;padding-top:96px}
  .dawn-lede{font-size:16px}
  .pick{justify-self:start;max-width:34rem}
  .cp{margin-left:0}
  .stop{grid-template-columns:1fr;gap:12px}
  .twin{grid-template-columns:1fr;gap:36px}
  .base-in{grid-template-columns:1fr}
  .rig{grid-template-columns:1fr}
  .rig-out{position:relative;top:auto}
}
@media (max-width:560px){
  body{font-size:16px}
  .text{font-size:17px}
  .text h2{margin-top:48px;font-size:25px}
  .text .hint,.text .risk,.text .calc,.text .gist{padding:18px;font-size:17px}
  .base-cols{grid-template-columns:1fr 1fr}
  .flip{grid-template-columns:1fr}
  .flip-n{grid-column:1;text-align:left}
  .row{grid-template-columns:1fr}
  .row-lane{grid-column:1;grid-row:auto}
  .ticket{padding:18px}
  .ticket-v{font-size:30px}
  .seekform-row{flex-direction:column}
  .pair{grid-template-columns:1fr}
}
@media (max-width:1060px){
  html{scroll-padding-top:132px}
  .map-position:empty{display:none}
  .pg-art .dusk-in{max-width:780px}
}
@media (max-width:900px){
  .dawn h1{max-width:17em}
  .dawn-lede{max-width:36em}
  .bench-home h2{max-width:none}
  #rb.rig{grid-template-columns:1fr}
  .result-jump{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:8px 16px;background:var(--paper);border:1px solid var(--line-2);border-radius:var(--r-btn);color:var(--link);font:500 15px/1.5 "Onest",var(--cjk);cursor:pointer}
}
@media (max-width:560px){
  .topbar{gap:12px}
  .wm-i{width:96px}
  .dawn h1{font-size:clamp(31.25px,8.6vw,39.06px);line-height:1.24}
  .dawn-in{padding-top:104px;padding-bottom:40px;gap:28px}
  .dawn-lede{margin-bottom:24px;line-height:1.9}
  .ticket-row{gap:12px}
  .ticket-v{font-size:31px}
  .ticket .cp{margin-top:4px}
  .ticket-fn{line-height:1.8}
  .pick{padding:22px;border-radius:20px}
  .course{padding-top:56px}
  .course-l{padding-left:26px}
  .course-l::before{left:6px}
  .stop::before{left:-26px;width:13px;height:13px}
  .course-d{font-size:16px;margin-bottom:32px}
  .stop{padding-bottom:36px}
  .kit{grid-template-columns:48px minmax(0,1fr);gap:6px 18px}
  .kit p{grid-column:2;grid-row:3}
  .kit::before{grid-row:1 / 4;height:40px}
  .twin{padding-top:48px;gap:40px}
  .fresh li{display:block}
  .fresh time{display:block;margin-bottom:6px}
  .dusk{padding:16px 0 32px}
  .dusk h1{font-size:31.25px;line-height:1.4;text-wrap:pretty}
  .dusk-lede{font-size:16px}
  .sig{display:grid;gap:6px;font-size:13px;line-height:1.7}
  .read{font-size:17px;padding-top:28px;padding-bottom:56px}
  .article-cover{margin-bottom:24px}
  .map-m{margin-bottom:28px}
  .map-m summary{gap:8px}
  .text ol.steps>li{padding-left:40px}
  .src{padding:14px;font-size:14px}
  .sheet::before{content:"表格可左右滑动";display:block;position:sticky;left:0;padding:8px 16px;color:var(--ink-3);background:var(--sheet);font-size:13px;line-height:1.6;border-bottom:1px solid var(--line)}
  .row{padding:20px 0;gap:8px}
  .row-t{font-size:19px}
  .row-lane{font-size:13px}
  .shelf{padding-top:28px;padding-bottom:56px}
  .shelf-intro{margin-bottom:28px}
  .bench{padding-top:24px;padding-bottom:56px}
  .rig{gap:24px}
  .rig-in,.rig-out{padding:24px 20px;border-radius:20px}
  .rig-out{scroll-margin-top:16px}
  .big{font-size:clamp(27px,7.6vw,32px);line-height:1.35;letter-spacing:-.025em}
  .nums{gap:0 16px}
  .nums b{font-size:18px}
  .nums li{padding:16px 0}
  .plot{padding:8px}
  .howto{padding:14px 18px}
  .base{padding-top:40px}
  .base-in{gap:32px}
  .base-cols{gap:24px}
  .base-cols>div:last-child{grid-column:1 / -1}
  .base-cols>div:last-child ul{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}
  .base li{margin:0}
  .lost{padding-top:32px;padding-bottom:40px}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
@media print{.topbar,.base,.map,.map-m,.after,.signup,.codetail{display:none}.dusk{color:#000;background:none}.dusk::after{display:none}}
