/* Fonts: Inter (SIL OFL 1.1, self-hosted subset, licence in assets/fonts/Inter-OFL.txt); Chinese: Noto Sans SC / Source Han Sans SC (SIL OFL 1.1) when installed, else the visitor's default sans-serif. */
@font-face{font-family:Inter;src:url(fonts/Inter-var-latin.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}
:root{--ink:#1F2A37;--muted:#6B7280;--line:#E5E7EB;--bg:#F8FAFB;--accent:#159A7B;--red:#E2574C;--grey:#5E6B7A;--card:#fff}
*{box-sizing:border-box}html,body{margin:0}body{font:15px/1.6 Inter,"Noto Sans SC","Noto Sans CJK SC","Source Han Sans SC",sans-serif;color:var(--ink);background:var(--bg)}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
.top{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5;flex-wrap:wrap;gap:8px}
.brand{font-weight:700;color:var(--ink);font-size:18px;display:inline-flex;align-items:center;gap:8px;line-height:1}.brand:hover{text-decoration:none}.brand .logo{width:30px;height:30px;display:block;flex:none}
@media(max-width:700px){.brand{font-size:16px;gap:6px}.brand .logo{width:26px;height:26px}}
nav{display:flex;gap:14px;align-items:center;flex-wrap:wrap}nav a{color:var(--ink)}
.lang{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:6px;padding:3px 10px;cursor:pointer;font-weight:600}
main{max-width:1180px;margin:0 auto;padding:20px}
h1{font-size:26px;margin:8px 0 4px}h2{font-size:20px;margin:28px 0 10px}h3{font-size:16px;margin:16px 0 6px}
.muted{color:var(--muted)}.small{font-size:13px}
.hero{padding:18px 0 6px}.hero p{margin:4px 0;color:var(--muted)}
.search{width:100%;padding:12px 14px;font-size:16px;border:1px solid var(--line);border-radius:10px;margin:12px 0;background:var(--card);color:var(--ink)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px;display:block;color:var(--ink)}
.card:hover{border-color:var(--accent);text-decoration:none}
.card img{width:100%;aspect-ratio:16/10;object-fit:contain;background:#fff;border-radius:6px}
.card .t{font-weight:700}.card .s{font-size:13px;color:var(--muted)}
.chip{display:inline-block;font-size:12px;padding:1px 8px;border-radius:99px;background:#E7F5F1;color:var(--accent);margin-right:4px}
.chip.q{background:#EEF1F4;color:var(--grey)}
.feed{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}
.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:10px 0}
.toolbar select,.btn{padding:7px 12px;border:1px solid var(--line);border-radius:8px;background:var(--card);font-size:14px;cursor:pointer;color:var(--ink)}
.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:default}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{border:0;background:var(--card);color:var(--ink);padding:7px 12px;cursor:pointer}.seg button.on{background:var(--ink);color:#fff}
.chart{background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px;overflow:auto}
.chart img{width:100%;height:auto;min-width:640px;display:block}
.crumbs{font-size:14px;color:#6B7280;margin:4px 0 8px}.crumbs a{color:inherit}
.lead{font-size:16px;line-height:1.6}
.seo-links{margin-top:32px;border-top:1px solid #E5E7EB;padding-top:12px}.seo-links h3{font-size:16px;margin:14px 0 6px}
.plinks{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px 14px}.pn{display:flex;gap:18px;font-weight:600}
.hist img.thumb{width:100%;height:auto}
table.kn{border-collapse:collapse;width:100%;background:var(--card);border:1px solid var(--line);border-radius:8px;font-size:14px;margin-top:10px}
table.kn th,table.kn td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:right}table.kn th:first-child,table.kn td:first-child{text-align:left}
.pos{color:var(--accent)}.neg{color:var(--red)}
.hist{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px}
.hist .card{padding:8px;position:relative;cursor:pointer}.hist .card.sel{outline:3px solid var(--accent)}
.hist .card input{position:absolute;top:8px;right:8px;transform:scale(1.3)}
.cmp{display:grid;gap:10px}.cmp.n2{grid-template-columns:1fr 1fr}.cmp.n3,.cmp.n4{grid-template-columns:1fr 1fr}
.cmp .chart img{min-width:0}
.trend{background:#fff;border:1px solid var(--line);border-radius:12px;padding:10px;margin-top:12px}
.trend svg{width:100%;height:auto;display:block}.legend{font-size:13px;display:flex;gap:14px;flex-wrap:wrap}
.legend i{display:inline-block;width:12px;height:3px;vertical-align:middle;margin-right:4px}
.prose{background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px 22px 18px}
.foot{max-width:1180px;margin:30px auto;padding:16px 20px;color:var(--muted);font-size:13px;border-top:1px solid var(--line)}
.notice{background:#FFF8E6;border:1px solid #F5D98B;border-radius:8px;padding:8px 12px;font-size:13px}
body.en .zh{display:none!important}body:not(.en) .en{display:none!important}
@media(max-width:700px){main{padding:12px}h1{font-size:21px}.cmp.n2,.cmp.n3,.cmp.n4{grid-template-columns:1fr}.chart img{min-width:0}nav{gap:10px;font-size:14px}}
/* A–Z directory */
.searchrow{display:flex;gap:8px;align-items:center}.searchrow .search{flex:1}.azbtn{white-space:nowrap;padding:11px 14px;border-radius:10px}
.dir-head h1{margin-bottom:0}
.az-wrap{position:sticky;top:57px;z-index:4;background:var(--bg);padding:8px 0 6px;border-bottom:1px solid var(--line)}
.drawer .az-wrap{top:0;background:var(--card)}
.az-wrap .search{margin:0 0 8px}
.az{display:flex;flex-wrap:wrap;gap:2px}.az a,.az span{display:inline-block;min-width:26px;text-align:center;padding:3px 0;border-radius:6px;font-weight:700;font-size:14px}
.az a{background:var(--card);border:1px solid var(--line);color:var(--ink)}.az a:hover{background:var(--accent);color:#fff;text-decoration:none}.az .off{color:#C7CDD4}
.dir-count{display:block;margin-top:4px}
.dir-g h3{font-size:22px;color:var(--accent);margin:18px 0 6px;border-bottom:2px solid var(--line)}
.dir-row{display:grid;grid-template-columns:72px 1fr auto;gap:10px;align-items:center;padding:8px 10px;background:var(--card);border:1px solid var(--line);border-radius:8px;margin:6px 0;color:var(--ink)}
.dir-row:hover{border-color:var(--accent);text-decoration:none}
.dir-row .tk{font-weight:800;font-family:ui-monospace,monospace}.dir-row .nm{display:flex;flex-direction:column;line-height:1.3}
.dir-row .n-zh{color:var(--muted);font-size:13px}.dir-row .lp{font-size:13px;color:var(--muted);text-align:right}
.drawer{position:fixed;top:0;right:0;height:100%;width:min(440px,92vw);background:var(--card);z-index:20;box-shadow:-8px 0 30px rgba(0,0,0,.12);transform:translateX(105%);transition:transform .25s ease;overflow-y:auto;padding:0 14px 20px}
.drawer.open{transform:none}.drawer-head{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:12px 0;position:sticky;top:0;background:#fff;z-index:5}
.drawer .az-wrap{top:54px}
.scrim{position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:19}
/* on-demand generate */
.gen{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:4px 0 10px}
.gen .bar{height:8px;background:var(--line);border-radius:99px;overflow:hidden;margin:10px 0 6px}.gen .bar i{display:block;height:100%;background:var(--accent);width:0;transition:width .6s ease}
.gen .steps{font-size:13px;color:var(--muted);margin:0;padding-left:18px}.gen .steps li.done{color:var(--accent)}.gen .steps li.now{color:var(--ink);font-weight:600}
.gen .sugg button{margin:4px 6px 0 0}.gen.err{border-color:#F5B7B1;background:#FFF5F4}.gen.held{border-color:#F5D98B;background:#FFF8E6}.gen.ok{border-color:#9FD9C8;background:#F0FAF6}
@media(max-width:700px){.dir-row{grid-template-columns:60px 1fr;}.dir-row .lp{grid-column:2;text-align:left}.azbtn span{display:none!important}.az a,.az span{min-width:22px;font-size:13px}}

/* round 5: explainer, flags, cash card, glossary, scroll boxes, dark mode */
.explain{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:10px;padding:8px 14px;margin:12px 0}
.explain summary{cursor:pointer;font-weight:700}.explain summary::marker{color:var(--accent)}
.explain .tpl{margin:6px 0;color:var(--muted);font-size:14px}.explain ul{margin:6px 0 4px;padding-left:20px}.explain li{margin:3px 0}
.below{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}.below>div:only-child{grid-column:1/-1}
.flags,.cash{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 14px}
.flags h3,.cash h3{margin:4px 0 8px}
.flags ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.flag{display:flex;flex-direction:column;max-width:100%}
.flag .fc{display:inline-block;padding:3px 10px;border-radius:99px;font-size:13px;font-weight:600;background:#FFF4E5;color:#9A5B00;border:1px solid #F5D9AE;cursor:help}
.flag.move .fc{background:#EEF1F4;color:var(--grey);border-color:var(--line)}.flag.tax .fc{background:#F3EEFF;color:#6D4BC2;border-color:#DCD0F7}
.flag .why{font-size:12px;color:var(--ink);padding:2px 10px}.flags .human{border-left:3px solid #F5B54A;padding:2px 10px;margin:8px 0}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.kpi{border:1px solid var(--line);border-radius:8px;padding:8px 10px}.kpi .k{font-size:13px;color:var(--muted)}.kpi .v{font-size:20px;font-weight:800}
.gl{border-bottom:1px dashed currentColor;cursor:help;position:relative;outline:none}
.gl:hover::after,.gl:focus::after{content:attr(data-tip);position:absolute;left:0;top:calc(100% + 6px);z-index:20;width:max-content;max-width:min(320px,80vw);
  white-space:normal;background:#1F2A37;color:#fff;font-size:13px;font-weight:400;line-height:1.5;padding:8px 10px;border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.18);text-align:left}
table.kn .gl:hover::after,table.kn .gl:focus::after{left:0}
/* directory: fixed-height box with its own scroll; the A–Z bar stays pinned inside it */
.dir.box{position:relative;height:min(68vh,760px);overflow-y:auto;border:1px solid var(--line);border-radius:12px;background:var(--bg);padding:0 12px 12px;overscroll-behavior:contain}
.dir.box .az-wrap{top:0;padding-top:10px}
.scrollbox{max-height:min(68vh,760px);overflow-y:auto;border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--bg);overscroll-behavior:contain}
@media(max-width:700px){.below{grid-template-columns:1fr}.dir.box,.scrollbox{height:auto;max-height:72vh}}
@media (prefers-color-scheme: dark){
  :root{--ink:#E6EAEE;--muted:#9AA5B1;--line:#2B3540;--bg:#0E1318;--card:#161D24;--grey:#AAB4BF}
  .chip{background:#12352D;color:#6FD3B8}.chip.q{background:#25303A;color:#C2CBD4}
  .flag .fc{background:#3A2A10;color:#F5C77A;border-color:#5A4320}.flag.move .fc{background:#25303A;color:#C2CBD4;border-color:#34404C}
  .flag.tax .fc{background:#2A2340;color:#C7B6F5;border-color:#3E3462}
  .seg button.on{background:#E6EAEE;color:#0E1318}.az .off{color:#46525E}
  .chart,.card img{background:#fff}  /* charts keep their white paper so the palette and labels read as designed */
}
/* on-demand 立即获取 */
.gen .mrow{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:6px 0}
.gen .tk{font:600 .85em ui-monospace,monospace;background:var(--bg);padding:1px 6px;border-radius:5px;margin-left:4px}
.gen .btn.big{font-size:1.05rem;padding:10px 22px}
.gen.match{border-color:var(--accent)}
.gen .eta{font-size:.95rem}
.gen ol.steps4{display:flex;gap:6px;list-style:none;padding:0;margin:10px 0 6px;flex-wrap:wrap}
.gen ol.steps4 li{flex:1 1 120px;display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--muted);padding:6px 8px;border-radius:8px;background:var(--bg)}
.gen ol.steps4 li span{display:inline-flex;width:20px;height:20px;border-radius:50%;align-items:center;justify-content:center;font-size:.75rem;border:1px solid currentColor}
.gen ol.steps4 li.done{color:var(--accent)}.gen ol.steps4 li.done span{background:var(--accent);color:#fff;border-color:var(--accent)}
.gen ol.steps4 li.now{color:inherit;font-weight:600;box-shadow:inset 0 0 0 1.5px var(--accent)}
.gen ol.steps4 li.now span{animation:pulse 1.2s infinite}
@keyframes pulse{50%{opacity:.35}}
.gen .spin{display:inline-block;width:12px;height:12px;border:2px solid var(--accent);border-right-color:transparent;border-radius:50%;animation:rot .8s linear infinite;vertical-align:-1px}
@keyframes rot{to{transform:rotate(360deg)}}
.gen .jid{opacity:.6;font-family:ui-monospace,monospace}
.gen form.notify{margin-top:10px}.gen form.notify input{flex:1;min-width:200px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:inherit}
.nomatch{margin:6px 0}
@media (prefers-color-scheme: dark){.gen.err{background:rgba(226,87,76,.12)}.gen.held{background:rgba(245,190,60,.12)}.gen.ok{background:rgba(21,154,123,.14)}}
/* feedback / report-an-error modal */
.fb-bar{display:flex;justify-content:flex-end;margin:6px 0 10px}.fb-bar .btn.small{font-size:13px;padding:5px 10px}
dialog.fb{border:0;border-radius:12px;padding:0;max-width:520px;width:calc(100% - 32px);box-shadow:0 20px 50px rgba(0,0,0,.25)}
dialog.fb::backdrop{background:rgba(17,24,39,.45)}
.fb-form{padding:20px 22px;display:flex;flex-direction:column;gap:6px}.fb-form h2{margin:0;font-size:19px}
.fb-form fieldset{border:0;padding:0;margin:6px 0;display:flex;gap:16px;flex-wrap:wrap}.fb-form legend{font-weight:600;margin-bottom:4px}
.fb-form textarea,.fb-form input[type=email]{font:inherit;padding:8px;border:1px solid #D1D5DB;border-radius:8px;width:100%;box-sizing:border-box}
.fb-form textarea:focus,.fb-form input:focus{outline:2px solid #159A7B;outline-offset:1px}
.fb-hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.fb-st{min-height:1.2em;margin:4px 0}.fb-st.err{color:#B42318}.fb-btns{display:flex;justify-content:flex-end;gap:10px}
/* older periods that can be generated on request (site_seo.missing_block + period.js) */
details.older{margin-top:14px;border:1px dashed var(--line,#d7dce3);border-radius:10px;padding:8px 12px}
details.older summary{cursor:pointer;font-weight:600}
.plinks.missing li{display:inline-flex;align-items:center;gap:6px;color:#9aa3af}
.plinks.missing li span{text-decoration:none}
.plinks.missing button.gp{font:inherit;font-size:12px;padding:1px 8px;border-radius:999px;border:1px solid #c9d1db;background:#fff;color:#374151;cursor:pointer}
.plinks.missing button.gp:hover{border-color:var(--accent,#10a37f);color:var(--accent,#10a37f)}
.plinks.missing button.gp:disabled{opacity:.5;cursor:default}
.plinks.missing li em{font-style:normal;font-size:12px}
.plinks.missing li[data-state=run] span,.plinks.missing li[data-state=ok] span{color:var(--accent,#10a37f)}
.gp-msg.err{color:#b42318}.gp-msg.sched{color:#92400e}.gp-msg.ok,.gp-msg.run{color:#0f766e}
