:root{--bg:#EEF1F4;--panel:#FFFFFF;--ink:#16202A;--muted:#5B6773;--line:#D3DAE1;--accent:#0F6C74;--accent-soft:#DCEDEE;--crit:#BF3328;--good:#2E7D4F;
  --f-body:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;--f-mono:"IBM Plex Mono",ui-monospace,monospace;color-scheme:light}
@media (prefers-color-scheme:dark){:root{--bg:#10161C;--panel:#18212A;--ink:#E6ECF1;--muted:#97A4B0;--line:#2C3843;--accent:#4FB8C0;--accent-soft:#163339;--crit:#F0766B;--good:#5CC285;color-scheme:dark}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:15px;line-height:1.55}
.card{max-width:420px;margin:10vh auto 40px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:28px 24px;display:flex;flex-direction:column;gap:14px}
.wide{max-width:760px;margin-top:32px}
.eyebrow{font-size:.8rem;color:var(--muted);letter-spacing:.04em}
h1{margin:0;font-size:1.5rem;font-weight:900}
h2{margin:8px 0 0;font-size:1.05rem}
label{display:flex;flex-direction:column;gap:4px;font-size:.88rem;color:var(--muted)}
input,button{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:8px 10px;min-height:40px}
button{cursor:pointer}button:hover{border-color:var(--accent)}
button.primary{background:var(--accent);border-color:var(--accent);color:var(--panel);font-weight:700}
:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.msg{min-height:1.4em;font-size:.88rem;color:var(--crit);margin:0}
.msg.ok{color:var(--good)}
.help{font-size:.82rem;color:var(--muted);margin:0}
a{color:var(--accent)}
table{width:100%;border-collapse:collapse;font-size:.88rem}
th,td{text-align:left;padding:6px 4px;border-bottom:1px solid var(--line)}
td.num,th.num{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:end}
.row label{flex:1 1 160px}
.stats{display:flex;flex-wrap:wrap;gap:10px}
.stat{border:1px solid var(--line);border-radius:8px;padding:8px 12px;min-width:110px}
.stat b{display:block;font-family:var(--f-mono);font-size:1.2rem}
.stat span{font-size:.8rem;color:var(--muted)}
