:root{--font-sans:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--fs-xs:12px;--fs-sm:13px;--fs-md:15px;--fs-lg:18px;--fs-xl:22px;--fs-2xl:28px;--fs-3xl:34px;--lh-tight:1.25;--lh-body:1.6;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--r-sm:6px;--r-md:10px;--r-lg:14px;--r-pill:999px;--header-h:56px;--tabbar-h:60px;--sidebar-w:240px;--content-max:1440px;--bg:#f7f7f5;--surface:#fff;--surface-2:#f1f1ee;--border:#e3e3de;--border-strong:#cfcfc8;--text:#16181d;--text-2:#4a4f59;--text-3:#5f6672;--accent:#1f5fd8;--accent-weak:#e7eefd;--pos:#0f7552;--neg:#c2410c;--warn:#9a4706;--focus:#1f5fd8;--cred-official:#0f7552;--cred-derived:#1f5fd8;--cred-estimate:#9a4706;--missing:#9aa0a6;--c1:#2f6fed;--c2:#12a37f;--c3:#e8a33d;--c4:#d4537e;--c5:#7a5af8;--c6:#0ea5b7;--c7:#8c6d46;--c8:#64748b;--ai0:#e8eef7;--ai1:#b9d3f0;--ai2:#7fb0e3;--ai3:#e8a33d;--ai4:#d9480f;--shadow:0 1px 2px #1018280f, 0 1px 3px #10182814;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1115;--surface:#161a20;--surface-2:#1d222a;--border:#2a303a;--border-strong:#3a4250;--text:#e8eaed;--text-2:#b4bac4;--text-3:#858c97;--accent:#6b9bff;--accent-weak:#1b2741;--pos:#3ccf9a;--neg:#ff8a5b;--warn:#f2b45a;--focus:#6b9bff;--cred-official:#3ccf9a;--cred-derived:#6b9bff;--cred-estimate:#f2b45a;--missing:#6b7280;--c1:#6b9bff;--c2:#3ccf9a;--c3:#f2b45a;--c4:#f07aa3;--c5:#a08bff;--c6:#3fd0e0;--c7:#c9a57a;--c8:#94a3b8;--ai0:#1f2836;--ai1:#24466e;--ai2:#2f6fb0;--ai3:#d08a2a;--ai4:#ff6a3d;--shadow:0 1px 2px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0f1115;--surface:#161a20;--surface-2:#1d222a;--border:#2a303a;--border-strong:#3a4250;--text:#e8eaed;--text-2:#b4bac4;--text-3:#858c97;--accent:#6b9bff;--accent-weak:#1b2741;--pos:#3ccf9a;--neg:#ff8a5b;--warn:#f2b45a;--focus:#6b9bff;--cred-official:#3ccf9a;--cred-derived:#6b9bff;--cred-estimate:#f2b45a;--missing:#6b7280;--c1:#6b9bff;--c2:#3ccf9a;--c3:#f2b45a;--c4:#f07aa3;--c5:#a08bff;--c6:#3fd0e0;--c7:#c9a57a;--c8:#94a3b8;--ai0:#1f2836;--ai1:#24466e;--ai2:#2f6fb0;--ai3:#d08a2a;--ai4:#ff6a3d;--shadow:0 1px 2px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-md);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-sm)}button,select,input,textarea{font:inherit;color:inherit}h1,h2,h3{line-height:var(--lh-tight);margin:0}h1{font-size:var(--fs-2xl);font-weight:650}h2{font-size:var(--fs-lg);font-weight:600}h3{font-size:var(--fs-md);font-weight:600}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.muted{color:var(--text-3)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.shell{flex-direction:column;min-height:100%;display:flex}.header{z-index:20;height:var(--header-h);align-items:center;gap:var(--sp-4);padding:0 var(--sp-5);background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(8px);backdrop-filter:saturate(1.4)blur(8px);border-bottom:1px solid var(--border);display:flex;position:sticky;top:0}.brand{font-weight:700;font-size:var(--fs-lg);color:var(--text);letter-spacing:.2px;white-space:nowrap}.brand:hover{text-decoration:none}.nav{gap:var(--sp-1);display:flex}.nav a{border-radius:var(--r-md);color:var(--text-2);font-size:var(--fs-sm);white-space:nowrap;padding:6px 12px;font-weight:500}.nav a:hover{background:var(--surface-2);text-decoration:none}.nav a.active{background:var(--accent-weak);color:var(--accent)}.header .spacer{flex:1}.header .tools{align-items:center;gap:var(--sp-2);display:flex}.main{width:100%;max-width:var(--content-max);padding:var(--sp-6) var(--sp-5) var(--sp-10);flex:1;margin:0 auto}.tabbar{display:none}.btn{justify-content:center;align-items:center;gap:var(--sp-2);border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface);min-height:36px;color:var(--text);font-size:var(--fs-sm);cursor:pointer;white-space:nowrap;padding:0 14px;font-weight:500;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{filter:brightness(1.06)}.btn.ghost{background:0 0;border-color:#0000}.btn[disabled]{opacity:.5;cursor:not-allowed}.select,.input{border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface);max-width:100%;min-height:36px;padding:0 10px}.input.area{resize:vertical;width:100%;min-height:96px;padding:10px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow)}.card.pad{padding:var(--sp-5)}.badge{border-radius:var(--r-pill);font-size:var(--fs-xs);background:var(--surface-2);color:var(--text-2);white-space:nowrap;align-items:center;gap:4px;padding:2px 8px;font-weight:500;display:inline-flex}.badge.official{color:var(--cred-official)}.badge.derived{color:var(--cred-derived)}.badge.estimate{color:var(--cred-estimate)}.badge.missing{color:var(--missing)}.badge.lock{background:var(--accent-weak);color:var(--accent)}.dot{background:currentColor;border-radius:50%;width:8px;height:8px;display:inline-block}.notice{padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);background:var(--accent-weak);color:var(--text);font-size:var(--fs-sm)}.notice.warn{background:color-mix(in srgb, var(--warn) 14%, var(--surface))}.missing-val{color:var(--missing);font-style:normal}.page-head{justify-content:space-between;align-items:flex-end;gap:var(--sp-4);margin-bottom:var(--sp-5);flex-wrap:wrap;display:flex}.page-head .sub{color:var(--text-3);font-size:var(--fs-sm);margin-top:var(--sp-1)}.controls{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.stats{gap:var(--sp-3);margin-bottom:var(--sp-5);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.stat{padding:var(--sp-4)}.stat .v{font-size:var(--fs-xl);font-weight:650}.stat .l{color:var(--text-3);font-size:var(--fs-xs);align-items:center;gap:6px;margin-top:2px;display:flex}.grid-2{gap:var(--sp-4);grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);display:grid}.grid-3{gap:var(--sp-4);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.stack{gap:var(--sp-4);flex-direction:column;display:flex}.section-title{justify-content:space-between;align-items:baseline;gap:var(--sp-3);margin-bottom:var(--sp-3);display:flex}.chart{width:100%;min-height:320px}.chart.tall{height:560px}.chart.mid{height:380px}.legend{gap:var(--sp-3);font-size:var(--fs-xs);color:var(--text-2);flex-wrap:wrap;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.kv{gap:6px var(--sp-4);font-size:var(--fs-sm);grid-template-columns:auto 1fr;display:grid}.kv dt{color:var(--text-3)}.kv dd{margin:0}.table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:8px 10px}.table th{color:var(--text-3);font-weight:500;font-size:var(--fs-xs)}.table td.r,.table th.r{text-align:right}.table tr.click{cursor:pointer}.table tr.click:hover td{background:var(--surface-2)}.bar{background:var(--surface-2);border-radius:3px;height:6px;overflow:hidden}.bar>i{background:var(--accent);height:100%;display:block}.cards{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.opp{padding:var(--sp-4);gap:var(--sp-2);flex-direction:column;display:flex}.opp h3{font-size:var(--fs-md)}.opp .meta{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.opp p{color:var(--text-2);font-size:var(--fs-sm);margin:0}.crumbs{font-size:var(--fs-sm);color:var(--text-3);margin-bottom:var(--sp-2);flex-wrap:wrap;gap:6px;display:flex}.crumbs a{color:var(--text-2)}.empty{padding:var(--sp-10) var(--sp-4);text-align:center;color:var(--text-3)}.skeleton{background:linear-gradient(90deg, var(--surface-2), var(--border), var(--surface-2));border-radius:var(--r-md);background-size:200% 100%;animation:1.2s linear infinite sk}@keyframes sk{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}.steps{gap:var(--sp-2);flex-wrap:wrap;display:flex}.steps .s{border-radius:var(--r-pill);background:var(--surface-2);font-size:var(--fs-xs);color:var(--text-3);padding:4px 10px}.steps .s.on{background:var(--accent-weak);color:var(--accent)}.report h2{margin:var(--sp-6) 0 var(--sp-3)}.report section{margin-bottom:var(--sp-5)}@media (width<=1024px){.grid-2,.grid-3{grid-template-columns:minmax(0,1fr)}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.chart.tall{height:520px}.header .nav{scrollbar-width:none;min-width:0;overflow-x:auto}.header .nav a{white-space:nowrap}}@media (width<=640px){.header{padding:0 var(--sp-4);gap:var(--sp-2)}.header .nav{display:none}.main{padding:var(--sp-4) var(--sp-4) calc(var(--tabbar-h) + var(--sp-6) + env(safe-area-inset-bottom))}h1{font-size:var(--fs-xl)}.stats{gap:var(--sp-2);grid-template-columns:repeat(2,minmax(0,1fr))}.stat{padding:var(--sp-3)}.stat .v{font-size:var(--fs-lg)}.chart.tall{height:640px}.chart.mid{height:320px}.cards{grid-template-columns:minmax(0,1fr)}.table.responsive thead{display:none}.table.responsive tr{border-bottom:1px solid var(--border);grid-template-columns:1fr auto;padding:8px 0;display:grid}.table.responsive td{border:0;padding:2px 4px}.tabbar{z-index:30;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--border);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.tabbar a{color:var(--text-3);flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:11px;display:flex}.tabbar a.active{color:var(--accent)}.tabbar a:hover{text-decoration:none}.tabbar svg{width:22px;height:22px}}.control-cols{gap:var(--sp-4);grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1.2fr);align-items:start;display:grid}.control-cols:has(.detail){grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1.2fr) minmax(0,.9fr)}.control .dot{border-radius:var(--r-pill);width:10px;height:10px;margin-right:var(--sp-2);vertical-align:middle;display:inline-block}.control .dot.live{background:var(--pos)}.control .dot.halted{background:var(--neg);animation:1.2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35}}.req{border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-3);gap:var(--sp-2);display:grid}.req.sel{border-color:var(--accent);background:var(--accent-weak)}.req.halted{border-color:var(--neg)}.row{gap:var(--sp-2);flex-wrap:wrap;align-items:center;display:flex}.chips{gap:var(--sp-2);flex-wrap:wrap;display:flex}.chip{font:inherit;font-size:var(--fs-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);padding:var(--sp-1) var(--sp-3);border-radius:var(--r-pill);cursor:pointer}.chip.on{background:var(--text);color:var(--surface);border-color:var(--text)}.field{gap:var(--sp-1);font-size:var(--fs-sm);color:var(--text-2);display:grid}.field input{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:var(--sp-2);min-width:0}.btn.danger{border-color:var(--neg);color:var(--neg);background:0 0;font-weight:600}.btn.danger:hover:not([disabled]){background:var(--neg);color:var(--surface)}.linkish{font:inherit;text-align:left;color:var(--text);cursor:pointer;background:0 0;border:0;padding:0}.linkish:hover{color:var(--accent)}pre.code{font-family:var(--font-mono);font-size:var(--fs-xs);background:var(--surface-2);border-radius:var(--r-sm);padding:var(--sp-2);max-width:100%;margin:0;overflow-x:auto}ul.evidence{margin:var(--sp-1) 0 0;font-size:var(--fs-xs);overflow-wrap:anywhere;padding:0;list-style:none}ul.evidence code{font-family:var(--font-mono)}ul.plain{gap:var(--sp-2);font-size:var(--fs-sm);margin:0;padding:0;list-style:none;display:grid}@media (prefers-reduced-motion:reduce){.control .dot.halted{animation:none}}@media (width<=1024px){:is(.control-cols,.control-cols:has(.detail)){grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){:is(.control-cols,.control-cols:has(.detail)){grid-template-columns:minmax(0,1fr)}.control .detail{z-index:40;border-radius:0;height:100dvh;position:fixed;inset:0;overflow-y:auto}}p a,li a,dd a,.notice a{text-underline-offset:2px;text-decoration:underline}@media (width<=640px){.shell[data-access=public_readonly] .page-head{align-items:stretch;width:100%;min-width:0}.shell[data-access=public_readonly] .page-head>.controls{flex:100%;width:100%;min-width:0;max-width:100%}.shell[data-access=public_readonly] .page-head>.controls>.select{flex:6rem;width:100%;min-width:0;max-width:100%}.shell[data-access=public_readonly] .page-head>.controls>.controls{flex:100%;min-width:0;max-width:100%}}
