:root{--space: 4px;--radius: 12px;--radius-sm: 6px;--bg: #edf0f4;--surface: #ffffff;--surface-2: #f4f6fa;--border: #e2e8f0;--text: #0f1729;--text-muted: #64748b;--text-faint: #94a3b8;--brand: #3d4ed6;--brand-strong: #2f3ca8;--brand-soft: #eef1fd;--link: #3d4ed6;--header-bg: #002d56;--header-bg-strong: #001c3a;--gold: #8d7150;--mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--ok: #1a7f4b;--ok-bg: #e4f4ea;--warn: #b9750a;--warn-bg: #fdf0db;--low: #c0392b;--low-bg: #fbe7e4;--shadow: 0 1px 2px rgba(16, 32, 40, .06), 0 2px 8px rgba(16, 32, 40, .05);--maxw: 1160px;font-family:Pretendard,Apple SD Gothic Neo,Malgun Gothic,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}:root[data-theme=dark]{--bg: #0e1420;--surface: #161d2b;--surface-2: #1e2739;--border: #2c3548;--text: #e5e9f2;--text-muted: #98a3b8;--text-faint: #6a7488;--brand: #7b86e8;--brand-strong: #9aa4ee;--brand-soft: #1e2547;--link: #8b95ec;--header-bg: #002d56;--header-bg-strong: #0a2038;--gold: #c4a878;--ok: #3ecf8e;--ok-bg: #123024;--warn: #e0a53a;--warn-bg: #33280f;--low: #f4796b;--low-bg: #331b18;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 2px 10px rgba(0, 0, 0, .35)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:var(--radius-sm)}.container{max-width:var(--maxw);margin:0 auto;padding:calc(var(--space) * 6) calc(var(--space) * 5) calc(var(--space) * 16)}.app-header{background:var(--header-bg);color:#fff;border-bottom:3px solid var(--header-bg-strong)}.app-header .inner{max-width:var(--maxw);margin:0 auto;padding:calc(var(--space) * 4) calc(var(--space) * 5);display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--space) * 3);justify-content:space-between}.app-header h1{font-size:18px;margin:0;letter-spacing:-.2px}.app-header h1 a{color:#fff}.app-header h1{display:inline-flex;align-items:baseline;gap:12px;flex-wrap:wrap}.app-header h1 .doc-link{font-size:12.5px;font-weight:600;letter-spacing:0;color:#e6e9fb;text-decoration:none;white-space:nowrap;padding:3px 10px;border-radius:999px;background:#ffffff29;border:1px solid rgba(255,255,255,.34)}.app-header h1 .doc-link:hover{background:#ffffff47;text-decoration:none}.app-header .meta-badges{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.app-header .meta-badges-row{flex-basis:100%;width:100%;justify-content:flex-end}.app-header .meta-badges-row+.meta-badges-row{margin-top:6px}.app-header .meta-badges-row.hc-metrics{justify-content:space-between;gap:12px}.app-header .metric-summary{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}.header-title{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.window-caption{font-size:12.5px;font-weight:600;color:#c9d2f5;background:#ffffff1f;border:1px solid rgba(255,255,255,.22);border-radius:999px;padding:2px 10px;white-space:nowrap}.basis-note{font-size:11.5px;line-height:1.3;color:#dbe1fb;background:#ffffff14;border:1px solid rgba(255,255,255,.18);border-radius:8px;padding:3px 9px}.basis-note strong{color:#fff;font-weight:700}.header-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px;justify-content:flex-end}.year-window{display:flex;align-items:center;gap:8px;background:#ffffff1f;border:1px solid rgba(255,255,255,.22);border-radius:var(--radius-sm);padding:4px 10px}.year-window .yw-title{font-size:11px;font-weight:700;color:#e6e9fb;opacity:.85}.year-window .yw-field{display:inline-flex;align-items:center;gap:5px}.year-window .yw-label{font-size:11px;color:#c9d2f5}.year-window .yw-dash{color:#c9d2f5}.year-window select{font:inherit;font-size:13px;font-weight:600;padding:3px 6px;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.3);background:var(--surface);color:var(--text)}.year-window.yw-edition{flex-wrap:wrap}.year-window .yw-range-label{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:#e6e9fb}.year-window .yw-range-label strong{font-weight:700}.year-window .yw-range-years{color:#c9d2f5}.year-window .yw-est{font-size:9.5px;font-weight:700;letter-spacing:.3px;padding:1px 5px;border-radius:999px;cursor:help;background:#ffffff2e;color:#ffe9b8;border:1px solid rgba(255,255,255,.28)}.year-window .yw-provisional{font-size:9.5px;font-weight:700;letter-spacing:.3px;padding:1px 5px;border-radius:999px;cursor:help;margin-left:4px;background:#ff8a8038;color:#ffd0c8;border:1px solid rgba(255,138,128,.5)}.ed-tag{font-size:9px;font-weight:700;letter-spacing:.2px;padding:0 4px;border-radius:999px;margin-left:4px;cursor:help;vertical-align:middle;white-space:nowrap}.ed-tag.ed-prov{background:#dc26261f;color:#b91c1c;border:1px solid rgba(220,38,38,.35)}.ed-tag.ed-est{background:#ca8a0424;color:#a16207;border:1px solid rgba(202,138,4,.4)}.year-window .yw-toggle{font:inherit;font-size:11px;font-weight:600;color:#e6e9fb;cursor:pointer;background:transparent;border:1px solid rgba(255,255,255,.28);border-radius:999px;padding:2px 8px}.year-window .yw-toggle:hover,.year-window .yw-toggle:focus-visible{background:#ffffff24;outline:none}.year-window .yw-manual,.year-window .yw-range{display:inline-flex;align-items:center;gap:8px}.year-window .yw-manual{flex-basis:100%;padding-top:2px}@media (max-width: 700px){.header-controls{justify-content:flex-start;width:100%}}.breadcrumbs{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:13px;color:var(--text-muted);margin-bottom:calc(var(--space) * 4)}.breadcrumbs .sep{color:var(--text-faint)}.page-title{font-size:27px;font-weight:800;letter-spacing:-.5px;line-height:1.2;color:var(--text);margin:0 0 calc(var(--space) * 3)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:calc(var(--space) * 4)}.card-grid{display:grid;gap:calc(var(--space) * 4);grid-template-columns:repeat(3,1fr)}@media (max-width: 880px){.card-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.card-grid{grid-template-columns:1fr}}.chart-pair{display:grid;gap:calc(var(--space) * 4);grid-template-columns:repeat(2,1fr);margin-top:16px}@media (max-width: 720px){.chart-pair{grid-template-columns:1fr}}.nat-table td.num,.nat-table th.num{font-variant-numeric:tabular-nums}.nat-group th{background:var(--brand-soft);color:var(--brand-strong);font-size:12px;letter-spacing:.03em;padding-top:10px;padding-bottom:6px}.nat-table td.nat-lead,.rank td.nat-lead{font-weight:700;color:var(--brand)}.rank th.nat-div,.rank td.nat-div{border-right:2px solid var(--border, #e2e5e9)}.win-badge{display:inline-block;vertical-align:middle;margin-left:8px;padding:2px 10px;border-radius:999px;background:var(--brand-soft);color:var(--brand-strong);font-size:12px;font-weight:600;letter-spacing:.01em}.section{margin-bottom:calc(var(--space) * 8)}.section>h2{font-size:20px;font-weight:700;margin:0 0 calc(var(--space) * 3);display:flex;align-items:center;gap:8px}.section-sub{color:var(--text-muted);font-size:13px;margin:-4px 0 12px}.section-window{font-size:13px;font-weight:500;color:var(--text-muted)}.kpi-row{display:flex;flex-wrap:wrap;gap:calc(var(--space) * 4)}.kpi{min-width:90px}.kpi .label{font-size:11px;color:var(--text-muted)}.kpi .value{font-size:20px;font-weight:700;letter-spacing:-.3px}.kpi .value.dash{color:var(--text-faint);font-weight:600}.metric-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:calc(var(--space) * 3);margin-bottom:calc(var(--space) * 5)}.metric-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:calc(var(--space) * 3) calc(var(--space) * 4)}.metric-card .mc-label{font-size:11px;color:var(--text-muted);margin-bottom:4px}.metric-card .mc-label .metric-label{gap:4px}.metric-card .mc-label .metric-label-text{font-size:11px}.metric-card .mc-value{font-size:22px;font-weight:700;letter-spacing:-.3px;font-variant-numeric:tabular-nums}.metric-card .mc-value.dash{color:var(--text-faint);font-weight:600}table.rank td.num,table.rank .rank-no,.metric-card .mc-value{font-family:var(--mono)}.metric-card .mc-value{font-size:28px;letter-spacing:-.5px}.metric-card.accent{background:var(--brand-soft);border-color:#c9d0f7}.metric-card.accent .mc-value{color:var(--brand)}.fwci-col{background:#f4f6fe}.card,.metric-card{box-shadow:none}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}table.rank{width:100%;border-collapse:collapse;font-size:13px;min-width:640px}table.rank th,table.rank td{padding:10px 12px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--border)}table.rank.pub-table{width:auto;min-width:0}.pub-title,.pub-source{display:inline-block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.pub-title{max-width:360px}.pub-source{max-width:200px}table.rank th{background:var(--surface-2);color:var(--text-muted);font-weight:600;position:sticky;top:0}table.rank th.left,table.rank td.left{text-align:left}table.rank tbody tr:hover{background:var(--brand-soft)}table.rank td.num{font-variant-numeric:tabular-nums}table.rank td.dash{color:var(--text-faint)}table.rank .rank-no{color:var(--text-faint);font-variant-numeric:tabular-nums}table.rank a.row-link{font-weight:600;color:var(--text)}table.rank a.row-link:hover{color:var(--link)}table.rank tbody.pinned-overall .overall-row{background:var(--brand-soft);font-weight:700}table.rank tbody.pinned-overall .overall-row:hover{background:var(--brand-soft)}table.rank tbody.pinned-overall .overall-row td{border-bottom:2px solid var(--brand)}table.rank .overall-row .rank-no{color:var(--brand)}table.rank .overall-row .overall-tag{font-size:10px;font-weight:700;letter-spacing:.2px;padding:1px 6px;border-radius:999px;white-space:nowrap;background:var(--brand);color:#fff}.badge{display:inline-flex;align-items:center;gap:4px;font-size:11.5px;font-weight:600;padding:2px 8px;border-radius:999px;border:1px solid transparent;white-space:nowrap}.badge.cov-ok{color:var(--ok);background:var(--ok-bg);border-color:#bfe3cd}.badge.cov-warn{color:var(--warn);background:var(--warn-bg);border-color:#f0d9a8}.badge.cov-low{color:var(--low);background:var(--low-bg);border-color:#f1c3bc}.badge.source{color:var(--text-muted);background:var(--surface-2);border-color:var(--border)}.badge.asof{color:var(--text-muted);background:transparent;border-color:var(--border)}.badge.nodata{color:#6b5b00;background:#fff6d6;border-color:#ece0a3}.badge.ms-matched{color:var(--ok);background:var(--ok-bg);border-color:#bfe3cd}.badge.ms-unmatched{color:var(--text-muted);background:var(--surface-2);border-color:var(--border)}.badge.ms-no_profile{color:#5b4a86;background:#efeaf9;border-color:#d8cdf0}.badge.ms-ambiguous{color:var(--warn);background:var(--warn-bg);border-color:#f0d9a8}.badge.ms-excluded{color:var(--text-faint);background:var(--surface-2);border-color:var(--border)}.badge-row{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.app-header .badge{background:#ffffff24;color:#e6e9fb;border-color:#ffffff40}.app-header .badge.cov-ok{background:#ffffff2e}.app-header .badge.cov-warn{color:#ffe1ad}.app-header .badge.cov-low{color:#ffd2cb}.app-header .badge.cpf-headline{background:#fff3;border-color:#ffffff59}.app-header .badge.cpf-headline strong{font-size:13px;font-weight:800;letter-spacing:.2px}.app-header .badge.cpf-headline .metric-label-text{font-weight:700}.app-header .badge.cpf-headline .cpf-sub{font-size:10px;font-weight:600;opacity:.75}.app-header .badge.irn-headline{background:#5eead42e;border-color:#5eead480;color:#d5fbf1}.app-header .badge.irn-headline strong{font-size:13px;font-weight:800;letter-spacing:.2px}.app-header .badge.irn-headline .metric-label-text{font-weight:700}.app-header .badge.irn-headline .cpf-sub{font-size:10px;font-weight:600;opacity:.75}.app-header .badge.qs-official{background:#ffd66633;border-color:#ffd6668c;color:#ffe9b8}.badge.qs-official .qs-official-tag{font-size:9.5px;font-weight:800;letter-spacing:.4px;padding:1px 5px;border-radius:999px;background:#ffd666d9;color:#4a3600}.badge.qs-official strong{font-size:13px;font-weight:800}.badge.qs-official .qs-official-scale{font-size:10px;opacity:.8}.badge.qs-official .qs-official-rank{font-size:10.5px;opacity:.85}.app-header .badge.cpf-headline.qs-actual-primary{background:#5eead42e;border-color:#5eead48c;color:#d5fbf1}.app-header .badge.cpf-headline.qs-actual-primary .qs-official-rank{font-size:10.5px;opacity:.9}.app-header .badge.cpf-secondary{background:#ffffff14;border-color:#ffffff2e;opacity:.82;font-size:11px}.app-header .badge.cpf-secondary strong{font-size:12px;font-weight:700}.app-header .badge.cpf-secondary .metric-label-text{font-weight:600;opacity:.85}.col-sub{display:block;font-size:9.5px;font-weight:600;opacity:.7}.filters{display:flex;flex-wrap:wrap;gap:calc(var(--space) * 2);align-items:end;margin-bottom:calc(var(--space) * 4)}.field{display:flex;flex-direction:column;gap:4px}.field label{font-size:11px;color:var(--text-muted);font-weight:600}.field input,.field select{font:inherit;padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);min-width:160px}.state{padding:calc(var(--space) * 8);text-align:center;color:var(--text-muted);background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius)}.state.error{color:var(--low);border-color:#f1c3bc;background:var(--low-bg)}.state .retry{margin-top:12px;padding:7px 16px;border:1px solid currentColor;border-radius:var(--radius-sm);background:transparent;color:inherit;font-weight:600}.state .err-code{font-size:11px;opacity:.7;display:block;margin-top:4px;font-variant-numeric:tabular-nums}.skeleton{height:14px;border-radius:4px;background:linear-gradient(90deg,var(--surface-2) 25%,#e7eaee 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.3s ease infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.chart-caption{font-size:11.5px;color:var(--text-muted);margin-top:8px}.chart-empty{color:var(--text-faint);padding:24px;text-align:center}.ts-band-note{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-muted);margin-top:8px}.ts-band-swatch{display:inline-block;width:22px;height:12px;flex:0 0 auto;background:#3d4ed61a;border:1px solid rgba(61,78,214,.3);border-radius:3px}.prof-card{display:flex;flex-direction:column;gap:10px}.prof-card .name{font-size:15px;font-weight:700}.prof-card .name small{color:var(--text-muted);font-weight:500;font-size:12px;margin-left:6px}.prof-card .sub{font-size:12px;color:var(--text-muted)}.prof-card .metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.prof-card .metrics .m .l{font-size:10.5px;color:var(--text-muted)}.prof-card .metrics .m .v{font-size:16px;font-weight:700}.prof-card .metrics .m .v.dash{color:var(--text-faint)}.prof-card .metrics .m.fwci{background:var(--brand-soft);border-radius:var(--radius-sm);padding:4px 6px}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable .th-inner{display:inline-flex;align-items:center;gap:4px;justify-content:flex-end}th.sortable.left .th-inner{justify-content:flex-start}th.sortable .arrow{font-size:9px;opacity:.4}th.sortable .arrow.active{opacity:1;color:var(--brand)}th.sortable:hover{color:var(--text)}th.sortable:hover .arrow{opacity:.7}.row-limit{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;margin-bottom:8px}.row-limit-info{font-size:12px;color:var(--text-muted);font-variant-numeric:tabular-nums}.row-limit-btns{display:inline-flex;gap:4px}.row-limit-btn{min-width:34px;padding:3px 8px;font-size:12px;font-weight:600;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer}.row-limit-btn:hover:not(:disabled){color:var(--text);border-color:var(--brand)}.row-limit-btn.active{color:#fff;background:var(--brand);border-color:var(--brand)}.row-limit-btn:disabled{opacity:.4;cursor:default}.metric-label{display:inline-flex;align-items:center;gap:4px}.info-tip{position:relative;display:inline-flex;align-items:center;color:var(--text-faint);cursor:help}.info-tip:hover,.info-tip:focus-visible,.info-tip:focus{color:var(--brand);outline:none}.info-ico{display:block}.tip-bubble{position:absolute;z-index:60;top:calc(100% + 8px);left:50%;transform:translate(-50%);width:max-content;max-width:250px;background:var(--brand-strong);color:#fff;padding:8px 10px;border-radius:var(--radius-sm);box-shadow:0 4px 14px #10202838;font-size:12px;font-weight:500;line-height:1.45;white-space:normal;text-align:left;flex-direction:column;gap:3px;display:none}.tip-bubble strong{font-size:11px;font-weight:700;opacity:.92}.info-tip:hover .tip-bubble,.info-tip:focus-visible .tip-bubble,.info-tip:focus .tip-bubble{display:flex}.tip-bubble:after{content:"";position:absolute;bottom:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-bottom-color:var(--brand-strong)}.kpi .label .metric-label{gap:4px}.kpi .label .metric-label-text{font-size:11px}.ts-toolbar{display:flex;justify-content:flex-start;margin-bottom:8px}.ts-metric-pick{display:inline-flex;align-items:center;gap:6px}.ts-pick-label{font-size:11px;font-weight:700;color:var(--text-muted)}.ts-metric-pick select{font:inherit;font-size:13px;font-weight:600;padding:4px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text)}.ts-metric-checks{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 12px;margin:0;width:100%}.ts-metric-checks legend{padding:0 6px}.ts-check{display:inline-flex;align-items:center;gap:5px}.ts-check input{margin:0;cursor:pointer}.ts-check input:disabled{cursor:not-allowed}.ts-check-lbl{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--text);cursor:pointer}.ts-check input:disabled+.ts-check-lbl{cursor:not-allowed;opacity:.85}.ts-color-chip{width:12px;height:12px;border-radius:3px;border:2px solid;box-sizing:border-box;flex:none}.ts-missing{list-style:none;margin:8px 0 0;padding:0;font-size:11.5px;color:var(--text-muted)}.ts-missing li{margin:2px 0}.ts-missing li:before{content:"· "}.ts-tip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;box-shadow:0 4px 14px #0000001a;font-size:12px}.ts-tip-year{font-weight:700;margin-bottom:4px;color:var(--text)}.ts-tip-list{list-style:none;margin:0;padding:0}.ts-tip-list li{display:flex;align-items:center;gap:6px;padding:1px 0}.ts-tip-chip{width:10px;height:10px;border-radius:2px;flex:none}.ts-tip-name{color:var(--text-muted);margin-right:auto}.ts-tip-val{font-weight:700;color:var(--text);font-variant-numeric:tabular-nums}.muted{color:var(--text-muted)}.note{font-size:12px;color:var(--text-muted);background:var(--surface-2);border-radius:var(--radius-sm);padding:10px 12px}.emeritus-tag{display:inline-block;margin-left:6px;padding:1px 6px;font-size:10px;font-weight:700;line-height:1.5;border-radius:999px;background:#eef1f4;color:#6b7280;border:1px solid #d6dbe1;vertical-align:middle;white-space:nowrap}.emeritus-tag.departed-tag{background:#fff1e6;color:#b45309;border-color:#fed7aa}.rank tr.row-emeritus td{background:#0f172a06;color:var(--text-muted)}.table-note{margin:8px 2px 0;font-size:12px;line-height:1.55;color:var(--text-muted)}.table-note strong{color:var(--text);font-weight:700}.table-note .emeritus-tag{margin-left:0;margin-right:4px}.emeritus-toggle{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;color:#e6e9fb;background:#ffffff1f;border:1px solid rgba(255,255,255,.24);border-radius:999px;padding:3px 10px;cursor:pointer;white-space:nowrap}.emeritus-toggle input{accent-color:#ffd666;cursor:pointer;margin:0}.emeritus-toggle.on{background:#ffd66638;border-color:#ffd66699;color:#ffe9b8}.mode-banner{display:flex;align-items:center;gap:6px;margin:0 0 10px;padding:7px 12px;font-size:12.5px;line-height:1.45;background:#fff7e6;border:1px solid #ffe0a3;border-radius:var(--radius-sm);color:#8a5a00}.mode-banner strong{font-weight:700}.dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;font-size:13px}.dl dt{color:var(--text-muted)}.dl dd{margin:0}.auth-splash{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg)}.login-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--brand) 0%,var(--brand-strong) 100%);padding:24px}.login-card{width:100%;max-width:380px;background:var(--surface);border-radius:var(--radius);box-shadow:0 12px 40px #00000047;padding:32px 28px;display:flex;flex-direction:column;gap:14px}.login-card h1{font-size:20px;margin:0;color:var(--brand);letter-spacing:-.3px}.login-sub{margin:-8px 0 6px;font-size:12.5px;color:var(--text-muted)}.login-card .field{gap:5px}.login-card .field input{min-width:0;width:100%}.login-error{font-size:12.5px;color:var(--low);background:var(--low-bg);border:1px solid #f1c3bc;border-radius:var(--radius-sm);padding:8px 10px}.login-btn{margin-top:4px;padding:10px 16px;border:none;border-radius:var(--radius-sm);background:var(--brand);color:#fff;font-weight:700;font-size:14px}.login-btn:hover:not(:disabled){background:var(--brand-strong)}.login-btn:disabled{opacity:.55;cursor:not-allowed}.login-note{margin:6px 0 0;font-size:11.5px;color:var(--text-faint);line-height:1.5}.navbar-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.user-bar{display:flex;align-items:center;gap:10px}.user-name{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:#e6e9fb}.role-tag{font-size:10px;font-weight:800;letter-spacing:.3px;padding:1px 7px;border-radius:999px;white-space:nowrap;background:#ffffff2e;color:#e6e9fb;border:1px solid rgba(255,255,255,.3)}.role-tag.admin{background:#ffd666e6;color:#4a3600;border-color:transparent}.role-tag.editor{background:#5eead4d9;color:#063b33;border-color:transparent}.section-head-row .role-tag.admin{background:var(--warn-bg);color:var(--warn);border:1px solid #f0d9a8}.logout-btn{font:inherit;font-size:11.5px;font-weight:600;color:#e6e9fb;background:#ffffff24;border:1px solid rgba(255,255,255,.3);border-radius:999px;padding:3px 12px}.logout-btn:hover{background:#ffffff42}.btn{font:inherit;font-size:13px;font-weight:600;padding:7px 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text)}.btn.sm{font-size:11.5px;padding:4px 9px}.btn.primary{background:var(--brand);color:#fff;border-color:var(--brand)}.btn.primary:hover:not(:disabled){background:var(--brand-strong)}.btn.ghost{background:var(--surface);color:var(--text)}.btn.ghost:hover:not(:disabled){background:var(--surface-2)}.btn.ghost.danger{color:var(--low);border-color:#f1c3bc}.btn.ghost.danger:hover:not(:disabled){background:var(--low-bg)}.btn.danger-solid{background:var(--low);color:#fff;border-color:var(--low)}.btn.danger-solid:hover:not(:disabled){background:#a5301f}.btn:disabled{opacity:.5;cursor:not-allowed}.section-head-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px;flex-wrap:wrap}.section-head-row h2{margin:0;font-size:16px;display:inline-flex;align-items:center;gap:8px}.row-actions{display:inline-flex;gap:6px}.admin-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--ok-bg);color:var(--ok);border:1px solid #bfe3cd;border-radius:var(--radius-sm);padding:10px 14px;margin-bottom:16px;font-weight:600;font-size:13px}.banner-x,.modal-x{background:transparent;border:none;color:inherit;font-size:14px;line-height:1;padding:2px 4px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#10202880;display:flex;align-items:center;justify-content:center;padding:24px}.modal-card{width:100%;max-width:520px;max-height:90vh;overflow-y:auto;background:var(--surface);border-radius:var(--radius);box-shadow:0 16px 48px #00000052;display:flex;flex-direction:column}.modal-card.wide{max-width:720px}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border)}.modal-head h3{margin:0;font-size:16px}.modal-body{padding:18px 20px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:14px 20px;border-top:1px solid var(--border)}.modal-inline-actions{display:flex;justify-content:space-between;gap:8px;margin-top:14px}.admin-form .form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}.admin-form .field{gap:5px}.admin-form .field input,.admin-form .field select{min-width:0;width:100%}.admin-form .field.span2{grid-column:1 / -1}.form-hint{font-size:11.5px;color:var(--text-muted);line-height:1.5;margin:12px 0 0}.form-error{font-size:12.5px;color:var(--low);background:var(--low-bg);border:1px solid #f1c3bc;border-radius:var(--radius-sm);padding:8px 10px;margin-top:12px}@media (max-width: 520px){.admin-form .form-grid{grid-template-columns:1fr}}.badge.job-queued{color:var(--text-muted);background:var(--surface-2);border-color:var(--border)}.badge.job-running{color:var(--link);background:var(--brand-soft);border-color:#c9d0f7}.badge.job-quota_wait{color:var(--warn);background:var(--warn-bg);border-color:#f0d9a8}.badge.job-done{color:var(--ok);background:var(--ok-bg);border-color:#bfe3cd}.badge.job-failed{color:var(--low);background:var(--low-bg);border-color:#f1c3bc}.heat-matrix td.num{border:1px solid var(--surface);font-variant-numeric:tabular-nums}.heat-matrix tr.heat-hufs td:first-child{box-shadow:inset 3px 0 0 0 var(--brand)}.heat-matrix tr.heat-hufs{outline:2px solid var(--brand);outline-offset:-2px}.heat-legend{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:11.5px;color:var(--text-muted)}.heat-legend-bar{width:120px;height:10px;border-radius:999px;border:1px solid var(--border);display:inline-block}.heat-legend-note{margin-left:4px}.reveal-btn{display:flex;align-items:center;gap:10px;width:100%;margin-top:14px;padding:13px 18px;background:var(--brand-soft);color:var(--brand);border:1px solid #c9d0f7;border-radius:var(--radius, 12px);font-size:15px;font-weight:700;cursor:pointer;transition:background .12s,border-color .12s,box-shadow .12s}.reveal-btn:hover{background:#e3e8fc;border-color:var(--brand)}.reveal-btn.is-open{background:var(--brand);color:#fff;border-color:var(--brand)}.reveal-btn-chevron{font-size:12px;line-height:1;opacity:.85}.reveal-btn-label{flex:1;text-align:left;letter-spacing:-.2px}.reveal-btn-action{font-size:12.5px;font-weight:600;padding:3px 10px;border-radius:999px;background:#3d4ed61f;color:inherit}.reveal-btn.is-open .reveal-btn-action{background:#ffffff38}.strip-plot{width:100%;max-width:760px;overflow-x:auto}.strip-plot svg{display:block;height:auto;min-width:580px}:root[data-theme=dark] .app-header{border-bottom-color:#0a2038;box-shadow:0 1px #ffffff0f}:root[data-theme=dark] .metric-card.accent{border-color:#3a4680}:root[data-theme=dark] .fwci-col{background:#1b2440}:root[data-theme=dark] .badge.cov-ok,:root[data-theme=dark] .badge.ms-matched{border-color:#1f5c3d}:root[data-theme=dark] .badge.cov-warn{border-color:#6b5117}:root[data-theme=dark] .badge.cov-low,:root[data-theme=dark] .state.error{border-color:#6e2f28}:root[data-theme=dark] .badge.nodata{color:#e0c766;background:#322a10;border-color:#55491c}:root[data-theme=dark] .badge.ms-no_profile{color:#b6a6e0;background:#241f3a;border-color:#3d3466}:root[data-theme=dark] .badge.ms-ambiguous{border-color:#6b5117}:root[data-theme=dark] .skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,#2a3448 37%,var(--surface-2) 63%)}:root[data-theme=dark] .emeritus-tag{background:#232a38;color:#98a3b8;border-color:#333d52}:root[data-theme=dark] .emeritus-tag.departed-tag{background:#3a2a17;color:#e0a53a;border-color:#5c4322}.theme-toggle{font-size:12.5px;font-weight:600;letter-spacing:0;white-space:nowrap;color:#e6e9fb;padding:3px 11px;border-radius:999px;background:#ffffff29;border:1px solid rgba(255,255,255,.34)}.theme-toggle:hover{background:#ffffff47}.recharts-cartesian-grid line{stroke:var(--chart-grid-css)}.recharts-cartesian-axis-line,.recharts-cartesian-axis-tick-line{stroke:var(--chart-axis-css)}.recharts-cartesian-axis-tick-value{fill:var(--chart-tick-css)}.recharts-default-tooltip{background:var(--surface)!important;border-color:var(--border)!important;border-radius:var(--radius-sm);color:var(--text)}.recharts-tooltip-item,.recharts-tooltip-label{color:var(--text)!important}:root{--chart-grid-css: #eceff2;--chart-axis-css: #cbd5e1;--chart-tick-css: #64748b}:root[data-theme=dark]{--chart-grid-css: #232c3f;--chart-axis-css: #3c465c;--chart-tick-css: #98a3b8}
