:root{
  --bg:#10161b;
  --bg-2:#161e24;
  --panel:#1b242b;
  --line:#2c3a43;
  --fg:#e9e2d4;
  --fg-dim:#94a5ae;
  --rust:#c96a3a;
  --rust-dim:#8c4a27;
  --moss:#6f9456;
  --sand:#c9a44c;
  --mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
  --sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",ui-sans-serif,system-ui,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--fg);
  font-family:var(--sans);font-size:16px;line-height:1.8;overflow-x:hidden;
}
img,svg{max-width:100%;height:auto;display:block}
a{color:var(--sand)}
.wrap{width:100%;max-width:1080px;margin:0 auto;padding:0 20px}
.mono{font-family:var(--mono);letter-spacing:.06em}

/* 页眉 */
.bar{position:sticky;top:0;z-index:30;background:rgba(16,22,27,.94);border-bottom:1px solid var(--line);backdrop-filter:blur(8px)}
.bar .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;padding:13px 20px}
.brand{display:flex;align-items:baseline;gap:9px;white-space:nowrap}
.brand .zh{font-size:1.14rem;font-weight:700;letter-spacing:.14em}
.brand .en{font-family:var(--mono);font-size:.68rem;color:var(--rust);letter-spacing:.22em}
.nav{display:flex;flex-wrap:wrap;gap:6px 18px;margin-left:auto;font-size:.9rem}
.nav a{color:var(--fg-dim);text-decoration:none;padding-bottom:3px;border-bottom:1px solid transparent}
.nav a:hover,.nav a:focus-visible{color:var(--rust);border-bottom-color:var(--rust)}

/* 首屏 */
.hero{position:relative;padding:62px 0 50px;border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,#10161b 0%,#141d23 100%)}
.hero .wrap{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:44px;align-items:center}
.kicker{font-family:var(--mono);font-size:.72rem;letter-spacing:.34em;color:var(--rust);margin:0 0 16px}
h1{font-size:clamp(2rem,7vw,3.2rem);line-height:1.22;margin:0 0 20px;font-weight:800;letter-spacing:.02em}
h1 .sub{display:block;margin-top:14px;font-size:clamp(.92rem,2.9vw,1.06rem);font-weight:400;color:var(--fg-dim);letter-spacing:.04em;line-height:1.7}
.lede{color:#c6c0b1;margin:0 0 26px;font-size:1.03rem}
.hero figure{margin:0;border:1px solid var(--line);border-radius:3px;overflow:hidden;background:#0d1317}
.facts{display:flex;flex-wrap:wrap;gap:0;list-style:none;padding:0;margin:0;border-top:1px solid var(--line)}
.facts li{padding:14px 20px 12px 0;margin-right:26px;min-width:0}
.facts b{display:block;font-family:var(--mono);font-size:1.18rem;color:var(--rust);letter-spacing:.04em}
.facts span{font-size:.82rem;color:var(--fg-dim)}

/* 版块 */
section{padding:60px 0;border-bottom:1px solid var(--line)}
.head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin-bottom:12px}
.head .no{font-family:var(--mono);font-size:.74rem;color:var(--rust);letter-spacing:.2em}
h2{font-size:clamp(1.4rem,4.4vw,1.9rem);margin:0;font-weight:700;letter-spacing:.03em}
h3{font-size:1.05rem;margin:0 0 8px;font-weight:700;letter-spacing:.03em}
.note{color:var(--fg-dim);margin:0 0 30px;max-width:66ch}

/* 卡片网格 */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(258px,1fr));gap:22px}
.card{border:1px solid var(--line);border-radius:3px;background:var(--panel);padding:22px}
.card p{margin:0;color:var(--fg-dim);font-size:.93rem}
.card .tag{font-family:var(--mono);font-size:.68rem;letter-spacing:.2em;color:var(--rust);display:block;margin-bottom:10px}

/* 工具 */
.tool{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:26px;align-items:start}
form.panel{border:1px solid var(--line);border-radius:3px;background:var(--panel);padding:24px}
fieldset{border:0;padding:0;margin:0 0 22px;min-width:0}
legend{padding:0;font-family:var(--mono);font-size:.7rem;letter-spacing:.2em;color:var(--rust);margin-bottom:11px}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opt{position:relative}
.opt input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.opt span{display:block;border:1px solid var(--line);border-radius:2px;padding:7px 15px;font-size:.88rem;color:var(--fg-dim);background:#141c22}
.opt input:checked+span{background:var(--rust-dim);border-color:var(--rust);color:#fff}
.opt input:focus-visible+span{outline:2px solid var(--sand);outline-offset:2px}
.out{border:1px solid var(--line);border-left:3px solid var(--rust);border-radius:3px;background:var(--bg-2);padding:24px}
.out h3{color:var(--sand);font-size:1.22rem;margin-bottom:12px}
.out .line{display:grid;grid-template-columns:auto minmax(0,1fr);gap:9px 16px;font-size:.93rem;margin:0}
.out dt{color:var(--fg-dim);white-space:nowrap;font-family:var(--mono);font-size:.78rem;letter-spacing:.1em;padding-top:4px}
.out dd{margin:0}
.flags{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:9px}
.flags li{font-size:.88rem;color:#e6cfa6;border-top:1px dotted var(--line);padding-top:9px}
.flags li::before{content:"▲";color:var(--rust);margin-right:8px;font-size:.72rem}

/* 清单 */
.checks{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:12px}
.checks label{display:flex;gap:11px;align-items:flex-start;border:1px solid var(--line);border-radius:3px;background:var(--panel);padding:13px 15px;cursor:pointer;font-size:.91rem}
.checks input{margin:5px 0 0;accent-color:var(--moss);flex:0 0 auto}
.checks label:has(input:checked){border-color:var(--moss);background:#17241a}
.checks small{display:block;color:var(--fg-dim);font-size:.8rem;line-height:1.6}
.meter{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:22px 0 0}
.meter .track{flex:1 1 220px;height:7px;background:#223038;border-radius:4px;overflow:hidden;min-width:0}
.meter .track i{display:block;height:100%;background:var(--moss);width:0}
.meter .num{font-family:var(--mono);font-size:.88rem;color:var(--fg-dim)}

/* 表 */
.filters{display:flex;flex-wrap:wrap;gap:9px;list-style:none;padding:0;margin:0 0 22px}
.chip{border:1px solid var(--line);background:#141c22;color:var(--fg-dim);border-radius:2px;
  padding:6px 16px;font-size:.87rem;cursor:pointer;font-family:var(--mono);letter-spacing:.08em}
.chip[aria-pressed="true"]{background:var(--rust-dim);border-color:var(--rust);color:#fff}
.table-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:3px;background:var(--panel)}
table{width:100%;border-collapse:collapse;font-size:.9rem;min-width:520px}
th,td{text-align:left;padding:12px 15px;border-bottom:1px solid var(--line);vertical-align:top}
th{background:#141c22;font-weight:700;white-space:nowrap;font-family:var(--mono);font-size:.76rem;letter-spacing:.14em;color:var(--fg-dim)}
tbody tr:last-child td{border-bottom:0}
td .where{display:block;color:var(--fg-dim);font-size:.82rem}

/* 图注 */
.plate{border:1px solid var(--line);border-radius:3px;overflow:hidden;background:#0d1317;margin:0 0 16px}
.plate figcaption{font-size:.82rem;color:var(--fg-dim);padding:10px 15px;border-top:1px solid var(--line);background:var(--panel)}
.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:30px}
.two p{margin:0 0 14px}

.warn{border:1px solid var(--rust-dim);border-radius:3px;background:#1d1611;padding:20px 22px;font-size:.93rem}
.warn b{color:var(--rust)}
.warn p{margin:0 0 10px}
.warn p:last-child{margin-bottom:0}

footer{padding:38px 0 52px;color:var(--fg-dim);font-size:.87rem}
footer p{margin:0 0 8px}

/* 404 */
.lost{min-height:60vh;display:flex;align-items:center;padding:56px 0}
.lost .wrap{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,260px);gap:38px;align-items:center;width:100%}
.lost h1{font-size:clamp(1.7rem,5.6vw,2.5rem)}
.back{display:inline-block;margin-top:18px;border:1px solid var(--rust);color:var(--rust);text-decoration:none;border-radius:2px;padding:9px 24px;font-size:.9rem;font-family:var(--mono);letter-spacing:.1em}
.back:hover{background:var(--rust);color:#10161b}

@media (max-width:880px){
  .hero .wrap,.tool,.lost .wrap{grid-template-columns:minmax(0,1fr)}
  .hero{padding:40px 0 34px}
  section{padding:46px 0}
  .nav{margin-left:0;width:100%}
}
@media (max-width:420px){
  body{font-size:15px}
  .wrap{padding:0 16px}
  .facts li{margin-right:18px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
