:root{--g:#217346;--ink:#222;--mute:#777;--line:#e3e3e3;--bg:#f6f7f6;--up:#1a7f37;--dn:#c62828;--fc:#8a6d00;--fcbg:#fff6d6}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 system-ui,"Segoe UI","Yu Gothic UI","Hiragino Sans",sans-serif}
header{background:#fff;border-bottom:1px solid var(--line);padding:8px 14px;display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px}
header h1{font-size:16px;margin:0;color:var(--g)}
.meta{color:var(--mute);font-size:12px}
.meta a{color:#1a4b8c}
nav.top button{font:13px system-ui,sans-serif;padding:4px 12px;border:1px solid #c8c8c8;background:#fff;cursor:pointer}
nav.top button:first-child{border-radius:4px 0 0 4px}nav.top button:nth-child(2){border-radius:0 4px 4px 0;margin-left:-1px}
nav.top button.on{background:var(--g);color:#fff;border-color:var(--g)}
main{padding:12px 14px 40px;max-width:1280px;margin:0 auto}
#banner{display:none;background:#fff3cd;color:#664d03;padding:6px 14px;font-size:13px}#banner.show{display:block}
.total{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin-bottom:12px;display:flex;flex-wrap:wrap;gap:6px 28px;align-items:baseline}
.total .big{font-size:22px;font-weight:700}
.total .lbl{color:var(--mute);font-size:12px;margin-right:6px}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px}
.card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:10px 12px;cursor:pointer;transition:box-shadow .15s}
.card:hover{box-shadow:0 2px 10px rgba(0,0,0,.12)}
.card.on{outline:2px solid var(--g)}
.card h2{font-size:15px;margin:0 0 6px;display:flex;justify-content:space-between;align-items:baseline}
.card h2 small{font-weight:400;color:var(--mute);font-size:11px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;font-size:13px}
.kv .k{color:var(--mute)}
.kv .v{text-align:right;font-variant-numeric:tabular-nums}
.noi{font-size:20px;font-weight:700;text-align:right;margin:4px 0 2px}
.pos{color:var(--up)}.neg{color:var(--dn)}
.fc{color:var(--fc)}
.spark{margin-top:6px;width:100%;height:46px;display:block}
.yoy{font-size:12px;color:var(--mute);text-align:right}
.detail{background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin-top:14px;overflow-x:auto}
.detail h2{font-size:16px;margin:0 0 8px;color:var(--g)}
.detail h2 .sub{font-weight:400;color:var(--mute);font-size:12px;margin-left:10px}
.detail table{border-collapse:collapse;font-size:12.5px;white-space:nowrap}
.detail th,.detail td{border-bottom:1px solid var(--line);padding:4px 8px;text-align:right;font-variant-numeric:tabular-nums}
.detail th{color:var(--mute);font-weight:500;background:#fafafa;position:sticky;top:0}
.detail td:first-child,.detail th:first-child{text-align:left;position:sticky;left:0;background:#fff}
.detail tr.sum td{font-weight:700;border-top:2px solid #bbb}
.detail tr.grp td:first-child{color:var(--g);font-weight:600}
.detail td.f{background:var(--fcbg);color:var(--fc)}
.detail td.cur{outline:1px dashed var(--g);outline-offset:-1px}
.detail td.link{cursor:pointer;text-decoration:underline dotted}
.detail .chart{width:100%;max-width:980px;height:220px;display:block;margin:6px 0 10px}
.legend{font-size:12px;color:var(--mute);margin-bottom:6px}
.legend i{display:inline-block;width:12px;height:12px;vertical-align:-2px;margin:0 4px 0 10px;border-radius:2px}
.note{color:var(--mute);font-size:12px;margin-top:16px}
#pop{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:50;display:flex;align-items:center;justify-content:center;padding:12px}
#pop[hidden]{display:none}
#pop .box{background:#fff;border-radius:8px;max-width:760px;width:100%;max-height:85vh;overflow:auto;padding:12px 14px}
#pop .hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
#pop button{font:12px system-ui,sans-serif;padding:4px 10px;border:1px solid #c8c8c8;background:#fff;border-radius:3px;cursor:pointer}
#pop table{border-collapse:collapse;font-size:12.5px;width:100%}
#pop th,#pop td{border-bottom:1px solid var(--line);padding:4px 8px;text-align:right;font-variant-numeric:tabular-nums}
#pop th:first-child,#pop td:first-child{text-align:left}
#toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:#333;color:#fff;padding:8px 14px;border-radius:6px;font-size:13px;display:none;z-index:60}
#lock{position:fixed;inset:0;background:#f3f5f4;display:flex;align-items:center;justify-content:center;z-index:100}
#lock[hidden]{display:none}
#lock form{background:#fff;padding:22px 24px;border-radius:10px;width:min(92vw,380px);box-shadow:0 8px 30px rgba(0,0,0,.12)}
#lock h2{margin:0 0 8px;font-size:18px;color:var(--g)}
#lock p{font-size:12.5px;color:#555}
#lock input{width:100%;font-size:16px;padding:9px;border:1px solid #bbb;border-radius:6px}
#lock button{margin-top:10px;width:100%;font-size:15px;padding:9px;border:0;border-radius:6px;background:var(--g);color:#fff;cursor:pointer}
#lock .err{color:#c62828;font-size:13px;min-height:1.2em;margin-top:6px}
@media (max-width:600px){main{padding:8px 8px 40px}.cards{grid-template-columns:1fr}header{padding:8px 10px}}
