:root{--color-bg: #F8FAFC;--color-surface: #FFFFFF;--color-surface-muted: #F1F5F9;--color-border: #E2E8F0;--color-border-strong: #CBD5E1;--color-text: #0F172A;--color-text-muted: #64748B;--color-primary: #1E293B;--color-primary-hover: #334155;--color-on-primary: #FFFFFF;--color-accent: #EA580C;--color-accent-text: #C2410C;--color-success: #15803D;--color-warning: #B45309;--color-error: #DC2626;--color-info: #0369A1;--color-success-text: #166534;--color-warning-text: #92400E;--color-error-text: #B91C1C;--color-info-text: #0369A1;--color-text-subtle: #475569;--color-border-input: #7C8BA1;--tint-success: color-mix(in srgb, var(--color-success) 10%, var(--color-surface));--tint-warning: color-mix(in srgb, var(--color-warning) 11%, var(--color-surface));--tint-error: color-mix(in srgb, var(--color-error) 9%, var(--color-surface));--tint-info: color-mix(in srgb, var(--color-info) 9%, var(--color-surface));--tint-accent: color-mix(in srgb, var(--color-accent) 10%, var(--color-surface));--overlay: color-mix(in srgb, #0F172A 45%, transparent);--shadow-overlay: 0 12px 32px color-mix(in srgb, #0F172A 12%, transparent), 0 2px 6px color-mix(in srgb, #0F172A 6%, transparent);--font-display: "DM Sans", "Noto Sans SC", system-ui, sans-serif;--font-body: "DM Sans", "Noto Sans SC", system-ui, sans-serif;--font-mono: "DM Mono", "Noto Sans SC", ui-monospace, monospace;--text-xs: 12px;--text-sm: 14px;--text-base: 16px;--text-lg: 18px;--text-2xl: 24px;--text-3xl: 32px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--space-16: 64px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 10px;--radius-xl: 14px;--radius-full: 9999px;--sidebar-width: 248px;--topbar-height: 56px;--content-max: 1440px;--touch: 44px;--drawer-width: 520px;--modal-width: 520px;--focus-ring: 2px solid var(--color-accent);--z-raised: 1;--z-sticky: 20;--z-scrim: 30;--z-sidebar: 40;--z-overlay: 50;--z-toast: 60;--z-skip: 70;--ease: cubic-bezier(.2, .8, .2, 1);--duration: .18s}[data-theme=dark]{--color-bg: #0F172A;--color-surface: #1E293B;--color-surface-muted: #334155;--color-border: #334155;--color-border-strong: #475569;--color-text: #F8FAFC;--color-text-muted: #94A3B8;--color-primary: #CBD5E1;--color-primary-hover: #E2E8F0;--color-on-primary: #0F172A;--color-accent: #FB923C;--color-accent-text: #FDBA74;--color-success: #4ADE80;--color-warning: #FBBF24;--color-error: #EF4444;--color-info: #38BDF8;--color-success-text: #4ADE80;--color-warning-text: #FBBF24;--color-error-text: #F87171;--color-info-text: #38BDF8;--color-text-subtle: #CBD5E1;--color-border-input: #64748B}@media(prefers-reduced-motion:reduce){:root{--duration: 0ms}}*,*:before,*:after{box-sizing:border-box}html,body,#root{margin:0;padding:0;min-height:100dvh}body{font-family:var(--font-body);font-size:var(--text-base);line-height:1.5;color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-display);margin:0;line-height:1.25;text-wrap:balance;color:var(--color-text)}h1{font-size:var(--text-2xl);font-weight:700}h2{font-size:var(--text-lg);font-weight:600}h3{font-size:var(--text-base);font-weight:600}p{margin:0;text-wrap:pretty}button{font:inherit;color:inherit}a{color:var(--color-accent-text)}:focus-visible{outline:var(--focus-ring);outline-offset:2px}.sr-only{position:absolute;top:0;left:0;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.mono{font-family:var(--font-mono);font-size:var(--text-sm)}.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.muted{color:var(--color-text-muted)}.small{font-size:var(--text-sm)}.xs{font-size:var(--text-xs)}.strong{font-weight:600}.text-error{color:var(--color-error-text)}.text-warning{color:var(--color-warning-text)}.text-success{color:var(--color-success-text)}.text-accent{color:var(--color-accent-text)}.nowrap{white-space:nowrap}.app-shell{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100dvh}.app-body{display:flex;flex-direction:column;min-width:0}.app-main{flex:1;min-width:0}.sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;position:sticky;top:0;height:100dvh;overflow-y:auto}.sidebar-brand{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);height:var(--topbar-height);border-bottom:1px solid var(--color-border)}.brand-mark{width:32px;height:32px;border-radius:var(--radius-md);background:var(--color-primary);color:var(--color-on-primary);display:grid;place-items:center;font-weight:700;font-size:var(--text-sm)}.brand-text{display:flex;flex-direction:column;line-height:1.2}.brand-text strong{font-size:var(--text-sm)}.brand-text span{font-size:var(--text-xs);color:var(--color-text-muted)}.nav-group{padding:var(--space-3) var(--space-3) 0}.nav-group-label{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:500;padding:var(--space-2) var(--space-3)}.nav-item{display:flex;align-items:center;gap:var(--space-3);width:100%;min-height:var(--touch);padding:0 var(--space-3);border:0;background:transparent;border-radius:var(--radius-md);color:var(--color-text);font-size:var(--text-sm);font-weight:500;text-align:left;cursor:pointer;border-left:3px solid transparent;transition:background var(--duration) var(--ease)}.nav-item:hover{background:var(--color-surface-muted)}.nav-item[aria-current=page]{background:var(--color-surface-muted);border-left-color:var(--color-accent);font-weight:600}.nav-item .nav-label{flex:1}.sidebar-foot{margin-top:auto;padding:var(--space-3) var(--space-4) var(--space-4);border-top:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--space-2)}.user-row{display:flex;align-items:center;gap:var(--space-3)}.topbar{height:var(--topbar-height);display:flex;align-items:center;gap:var(--space-3);padding:0 var(--space-6);background:var(--color-surface);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:var(--z-sticky)}.topbar-spacer{flex:1}.menu-toggle{display:none}.run-status{display:flex;align-items:center;gap:var(--space-2);width:100%;min-height:var(--touch);padding:0 var(--space-4);border:0;border-bottom:1px solid var(--color-border);background:none;font:inherit;font-size:var(--text-xs);color:var(--color-text-muted);cursor:pointer;text-align:left}.run-status:hover{background:var(--color-surface-muted)}.run-dot{width:8px;height:8px;border-radius:var(--radius-full);background:var(--color-success)}.run-dot.warn{background:var(--color-warning)}.lang-switch{display:inline-flex;align-self:flex-start;border:1px solid var(--color-border-input);border-radius:var(--radius-md);overflow:hidden}.lang-switch button{min-height:var(--touch);min-width:var(--touch);border:0;background:transparent;cursor:pointer;font-size:var(--text-sm);font-weight:500;padding:0 var(--space-2)}.lang-switch button[aria-pressed=true]{background:var(--color-primary);color:var(--color-on-primary)}.avatar{width:32px;height:32px;border-radius:var(--radius-full);background:var(--tint-accent);color:var(--color-accent-text);display:grid;place-items:center;font-size:var(--text-xs);font-weight:600}.scrim{display:none}.page{max-width:var(--content-max);margin:0 auto;padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-6)}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.page-header-text{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.page-subtitle{color:var(--color-text-muted);font-size:var(--text-sm)}.page-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.breadcrumb ol{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-1);padding:0;margin:0;font-size:var(--text-sm);color:var(--color-text-muted)}.breadcrumb button{border:0;background:none;padding:0 var(--space-1);margin:calc(var(--space-3) * -1) calc(var(--space-1) * -1);color:var(--color-text-muted);cursor:pointer;min-height:var(--touch)}.breadcrumb button:hover{color:var(--color-text);text-decoration:underline}.breadcrumb [aria-current=page]{color:var(--color-text);font-weight:500}.panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-width:0}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-4);border-bottom:1px solid var(--color-border);flex-wrap:wrap}.panel-header p{font-size:var(--text-sm);color:var(--color-text-muted)}.panel-body{padding:var(--space-4)}.panel-body.flush{padding:0}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.stack-sm{display:flex;flex-direction:column;gap:var(--space-2)}.row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.row-between{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.split{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--space-6);align-items:start}.split-even{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-6);align-items:start}.kpi-row{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:var(--space-4)}.kpi-row.four{grid-template-columns:repeat(4,minmax(0,1fr))}.kpi{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1);text-align:left;min-width:0}button.kpi{cursor:pointer;font:inherit;transition:border-color var(--duration) var(--ease)}button.kpi:hover{border-color:var(--color-border-strong)}.kpi-label{font-size:var(--text-sm);color:var(--color-text-muted);font-weight:500;display:flex;align-items:center;gap:var(--space-2)}.kpi-value{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:700;font-variant-numeric:tabular-nums;line-height:1.1}.kpi-meta{font-size:var(--text-xs);color:var(--color-text-muted)}.kpi.lead{background:var(--color-primary);border-color:var(--color-primary)}.kpi.lead .kpi-label,.kpi.lead .kpi-meta{color:color-mix(in srgb,var(--color-on-primary) 75%,transparent)}.kpi.lead .kpi-value{color:var(--color-on-primary)}.dl{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:var(--space-2) var(--space-4);margin:0;font-size:var(--text-sm)}.dl dt{color:var(--color-text-muted)}.dl dd{margin:0;font-weight:500;min-width:0;overflow-wrap:anywhere}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--touch);padding:0 var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;font-size:var(--text-sm);font-weight:600;cursor:pointer;white-space:nowrap;transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease),transform var(--duration) var(--ease)}.btn:active{transform:translateY(1px)}.btn:disabled{cursor:not-allowed;opacity:.5;transform:none}.btn-primary{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);border-color:var(--color-border-input);color:var(--color-text)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-muted)}.btn-ghost{background:transparent;color:var(--color-text)}.btn-ghost:hover:not(:disabled){background:var(--color-surface-muted)}.btn-danger{background:var(--color-error);color:var(--color-on-primary)}.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--color-error) 85%,var(--color-text))}.btn-success{background:var(--color-success);color:var(--color-on-primary)}.btn-success:hover:not(:disabled){background:color-mix(in srgb,var(--color-success) 85%,var(--color-text))}.btn-icon{width:var(--touch);min-width:var(--touch);flex:none;padding:0}.btn-link{background:none;border:0;padding:0 var(--space-1);min-height:var(--touch);color:var(--color-accent-text);font-weight:500;cursor:pointer;text-decoration:underline;text-underline-offset:2px;font-size:inherit}.btn-link.mono{font-family:var(--font-mono)}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:600;white-space:nowrap;border:1px solid transparent}.badge-success{background:var(--tint-success);color:var(--color-success-text)}.badge-warning{background:var(--tint-warning);color:var(--color-warning-text)}.badge-error{background:var(--tint-error);color:var(--color-error-text)}.badge-info{background:var(--tint-info);color:var(--color-info-text)}.badge-accent{background:var(--tint-accent);color:var(--color-accent-text)}.badge-neutral{background:var(--color-surface-muted);color:var(--color-text-subtle)}.badge-outline{background:transparent;border-color:var(--color-border-strong);color:var(--color-text-muted)}.toolbar{display:flex;gap:var(--space-3);align-items:center;flex-wrap:wrap;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border)}.search{position:relative;flex:1 1 240px;max-width:360px}.search svg{position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);color:var(--color-text-muted)}.search input{padding-left:36px}.chips{display:flex;gap:var(--space-2);flex-wrap:wrap}.chip{min-height:var(--touch);padding:0 var(--space-3);border-radius:var(--radius-md);border:1px solid var(--color-border-input);background:var(--color-surface);font-size:var(--text-sm);font-weight:500;cursor:pointer;display:inline-flex;align-items:center;gap:var(--space-2)}.chip:hover{background:var(--color-surface-muted)}.chip[aria-pressed=true]{background:var(--color-primary);color:var(--color-on-primary);border-color:var(--color-primary)}.chip .count{font-variant-numeric:tabular-nums;opacity:.8}.field{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.label{font-size:var(--text-sm);font-weight:500}.hint{font-size:var(--text-xs);color:var(--color-text-muted)}.field-error{font-size:var(--text-xs);color:var(--color-error-text);font-weight:500}.input,.select,.textarea{width:100%;min-height:var(--touch);padding:0 var(--space-3);border:1px solid var(--color-border-input);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-text);font:inherit;font-size:var(--text-sm)}.textarea{padding:var(--space-2) var(--space-3);min-height:88px;resize:vertical}.input[aria-invalid=true],.select[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--color-error)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.form-grid .full{grid-column:1 / -1}.switch{display:inline-flex;align-items:center;gap:var(--space-3);cursor:pointer;min-height:var(--touch);font-size:var(--text-sm)}.switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:40px;height:24px;border-radius:var(--radius-full);background:var(--color-border-input);position:relative;cursor:pointer;transition:background var(--duration) var(--ease);margin:0;flex:none}.switch input:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:var(--radius-full);background:var(--color-surface);transition:transform var(--duration) var(--ease)}.switch input:checked{background:var(--color-success)}.switch input:checked:after{transform:translate(16px)}.table-wrap{overflow-x:auto;position:relative}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th{text-align:left;font-size:var(--text-xs);font-weight:500;color:var(--color-text-subtle);padding:0 var(--space-3);border-bottom:1px solid var(--color-border);background:var(--color-surface-muted);white-space:nowrap}.table th.num{text-align:right}.table td{padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);vertical-align:middle}.table tbody tr{transition:background var(--duration) var(--ease)}.table tbody tr:hover{background:color-mix(in srgb,var(--color-surface-muted) 60%,transparent)}.table tbody tr.is-selected{background:var(--tint-accent)}.table tbody tr.is-dim td{color:var(--color-text-muted)}.table tbody tr:last-child td{border-bottom:0}.sort-btn{display:inline-flex;align-items:center;gap:var(--space-1);border:0;background:none;padding:0;min-height:var(--touch);min-width:var(--touch);font:inherit;color:inherit;cursor:pointer}.sort-btn:hover{color:var(--color-text)}.cell-stack{display:flex;flex-direction:column;line-height:1.3}.cell-stack .sub{font-size:var(--text-xs);color:var(--color-text-muted)}.row-actions{display:flex;gap:var(--space-1);justify-content:flex-end;flex-wrap:nowrap}.table-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-4);border-top:1px solid var(--color-border);font-size:var(--text-sm);color:var(--color-text-muted);flex-wrap:wrap}.bucket-table th,.bucket-table td{text-align:right;font-variant-numeric:tabular-nums}.bucket-table th:first-child,.bucket-table td:first-child{text-align:left;position:sticky;left:0;background:var(--color-surface);z-index:var(--z-raised)}.bucket-table th:first-child{background:var(--color-surface-muted)}.bucket-table tr.net-row td{font-weight:600}.bucket-table td.neg{color:var(--color-error-text);background:var(--tint-error)}.bucket-table td.planned{color:var(--color-accent-text);font-weight:600}.tree-row td:first-child{padding-left:calc(var(--space-3) + var(--level, 0) * var(--space-6))}.tree-toggle{width:var(--touch);height:var(--touch);margin:calc(var(--space-2) * -1) 0;border:0;background:none;cursor:pointer;display:inline-grid;place-items:center;border-radius:var(--radius-sm);vertical-align:middle}.tree-toggle:hover{background:var(--color-surface-muted)}.tree-spacer{display:inline-block;width:var(--touch)}.tabs{display:flex;gap:var(--space-4);border-bottom:1px solid var(--color-border);padding:0 var(--space-4);overflow-x:auto}.tab{min-height:var(--touch);border:0;background:none;padding:0 var(--space-1);font-size:var(--text-sm);font-weight:500;color:var(--color-text-muted);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;display:inline-flex;align-items:center;gap:var(--space-2)}.tab:hover{color:var(--color-text)}.tab[aria-selected=true]{color:var(--color-text);border-bottom-color:var(--color-accent);font-weight:600}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:var(--z-overlay);display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.overlay.right{justify-content:flex-end;align-items:stretch;padding:0}.modal{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:var(--modal-width);max-height:90dvh;overflow-y:auto;box-shadow:var(--shadow-overlay);display:flex;flex-direction:column}.modal-header,.drawer-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border)}.modal-body,.drawer-body{padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.modal-footer,.drawer-footer{display:flex;justify-content:flex-end;gap:var(--space-2);padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-border);flex-wrap:wrap}.drawer{background:var(--color-surface);width:100%;max-width:var(--drawer-width);height:100dvh;overflow-y:auto;box-shadow:var(--shadow-overlay);display:flex;flex-direction:column;animation:slide-in var(--duration) var(--ease)}.drawer-body{flex:1}@keyframes slide-in{0%{transform:translate(24px);opacity:.6}to{transform:none;opacity:1}}.toast{position:fixed;bottom:var(--space-6);right:var(--space-6);z-index:var(--z-toast);background:var(--color-primary);color:var(--color-on-primary);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);box-shadow:var(--shadow-overlay);font-size:var(--text-sm);display:flex;align-items:center;gap:var(--space-3);max-width:calc(100vw - var(--space-8))}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-12) var(--space-6);gap:var(--space-2)}.empty svg{color:var(--color-text-muted);margin-bottom:var(--space-2)}.empty p{color:var(--color-text-muted);font-size:var(--text-sm);max-width:380px}.empty .btn{margin-top:var(--space-3)}.skeleton{background:var(--color-surface-muted);animation:pulse 1.2s var(--ease) infinite;border-radius:var(--radius-sm)}@keyframes pulse{50%{opacity:.55}}.sk-line{height:14px}.sk-kpi{height:104px;border-radius:var(--radius-lg)}.sk-row{height:40px;margin:var(--space-2) var(--space-4)}.callout{display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);align-items:flex-start;border:1px solid transparent}.callout svg{flex:none;margin-top:2px}.callout-warning{background:var(--tint-warning);color:var(--color-text);border-color:color-mix(in srgb,var(--color-warning) 30%,transparent)}.callout-warning svg{color:var(--color-warning)}.callout-error{background:var(--tint-error);border-color:color-mix(in srgb,var(--color-error) 30%,transparent)}.callout-error svg{color:var(--color-error)}.callout-info{background:var(--tint-info);border-color:color-mix(in srgb,var(--color-info) 25%,transparent)}.callout-info svg{color:var(--color-info)}.list{list-style:none;margin:0;padding:0}.list-item{display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);align-items:flex-start}.list-item:last-child{border-bottom:0}.list-item .grow{flex:1;min-width:0}.list-item button.grow{text-align:left;background:none;border:0;padding:0;cursor:pointer;min-height:var(--touch)}.trace-item{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-sm)}.trace-item code{font-family:var(--font-mono);font-size:var(--text-xs);background:var(--color-surface-muted);padding:2px var(--space-1);border-radius:var(--radius-sm);overflow-wrap:anywhere}.citation{border-left:3px solid var(--color-accent);background:var(--color-surface-muted);padding:var(--space-3) var(--space-4);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-size:var(--text-sm)}.citation mark{background:var(--tint-accent);color:var(--color-accent-text);font-weight:600;padding:0 2px;border-radius:2px}.citation-src{font-size:var(--text-xs);color:var(--color-text-subtle);margin-top:var(--space-2);display:flex;gap:var(--space-2);flex-wrap:wrap}.compare{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.compare-col{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3)}.progress{height:8px;background:var(--color-surface-muted);border-radius:var(--radius-full);overflow:hidden}.progress>span{display:block;height:100%;width:var(--pct, 0%);background:var(--color-primary);border-radius:var(--radius-full)}.progress.warn>span{background:var(--color-warning)}.progress.ok>span{background:var(--color-success)}.progress.err>span{background:var(--color-error)}.chart{width:100%;height:auto;display:block;overflow:visible}.chart-grid{stroke:var(--color-border);stroke-width:1}.chart-axis-label{fill:var(--color-text-muted);font-size:var(--text-xs);font-family:var(--font-body)}.chart-line{fill:none;stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}.series-1{stroke:var(--color-primary);fill:var(--color-primary)}.series-2{stroke:var(--color-accent);fill:var(--color-accent)}.series-3{stroke:var(--color-info);fill:var(--color-info)}.series-4{stroke:var(--color-success);fill:var(--color-success)}.chart-line.series-2{stroke-dasharray:6 4}.chart-line.series-3{stroke-dasharray:2 4}.chart-bar{stroke:none}.chart-point{stroke:var(--color-surface);stroke-width:2}.legend{display:flex;gap:var(--space-4);flex-wrap:wrap;font-size:var(--text-xs);color:var(--color-text-muted)}.legend-swatch{display:inline-block;width:16px;height:3px;border-radius:2px;margin-right:var(--space-1);vertical-align:middle}.legend-swatch.s1{background:var(--color-primary)}.legend-swatch.s2{background:var(--color-accent)}.legend-swatch.s3{background:var(--color-info)}.legend-swatch.s4{background:var(--color-success)}details.data-table summary{font-size:var(--text-sm);color:var(--color-text-muted);cursor:pointer;min-height:var(--touch);display:flex;align-items:center}.signin{min-height:100dvh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr)}.signin-aside{background:var(--color-primary);color:var(--color-on-primary);padding:var(--space-12);display:flex;flex-direction:column;justify-content:space-between;gap:var(--space-8)}.signin-aside h1{color:var(--color-on-primary);font-size:var(--text-3xl);max-width:440px}.signin-aside p{color:color-mix(in srgb,var(--color-on-primary) 75%,transparent);max-width:440px}.signin-main{display:flex;align-items:center;justify-content:center;padding:var(--space-8) var(--space-4)}.signin-card{width:100%;max-width:420px;display:flex;flex-direction:column;gap:var(--space-4)}.role-options{display:grid;grid-template-columns:1fr;gap:var(--space-2)}.role-option{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);min-height:var(--touch);border:1px solid var(--color-border-input);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;text-align:left}.role-option:hover{background:var(--color-surface-muted)}.role-option[aria-pressed=true]{border-color:var(--color-accent);background:var(--tint-accent)}.role-option .cell-stack{flex:1}@media(max-width:1200px){.kpi-row,.kpi-row.four{grid-template-columns:repeat(2,minmax(0,1fr))}.split{grid-template-columns:minmax(0,1fr)}}@media(max-width:1023px){.app-shell{grid-template-columns:minmax(0,1fr)}.sidebar{position:fixed;left:0;top:0;z-index:var(--z-sidebar);width:var(--sidebar-width);transform:translate(-100%);visibility:hidden;transition:transform var(--duration) var(--ease),visibility 0s linear var(--duration);box-shadow:var(--shadow-overlay)}.app-shell.nav-open .sidebar{transform:none;visibility:visible;transition:transform var(--duration) var(--ease),visibility 0s}.app-shell.nav-open .scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:var(--z-scrim);border:0}.menu-toggle{display:inline-flex}.split-even,.compare,.signin{grid-template-columns:minmax(0,1fr)}.signin-aside{padding:var(--space-8) var(--space-6)}}@media(max-width:767px){.page{padding:var(--space-4);gap:var(--space-4)}.topbar{padding:0 var(--space-3);gap:var(--space-2)}.kpi-row,.kpi-row.four,.form-grid{grid-template-columns:minmax(0,1fr)}.search{max-width:none}.toast{left:var(--space-4);right:var(--space-4);bottom:var(--space-4)}.hide-sm{display:none}}.grow{flex:1;min-width:0}.figure{margin:0}.fieldset-plain{border:0;padding:0;margin:0}.align-end{align-self:flex-end}.cell-stack{min-width:0;overflow-wrap:anywhere}.row-between>.grow{flex:1 1 220px}.table-foot .badge{white-space:normal}polyline.chart-line{fill:none}.btn-link.mono{white-space:nowrap}.cell-stack>.btn-link,.stack-sm>.btn-link,.row-between>.btn-link{align-self:flex-start;text-align:left;justify-content:flex-start}.topbar .menu-toggle{display:none}.col-wide{min-width:300px}.panel .btn-ghost.wrap{white-space:normal;text-align:left}@media(max-width:1023px){.topbar .menu-toggle{display:inline-flex}}.signin-aside .brand-mark{background:var(--color-on-primary);color:var(--color-primary)}.skip-link{position:absolute;left:var(--space-4);top:calc(var(--space-12) * -2);z-index:var(--z-skip);background:var(--color-primary);color:var(--color-on-primary);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-weight:600;text-decoration:none}.skip-link:focus{top:var(--space-2)}.app-main:focus{outline:none}button,a,input,select,textarea,label,summary{touch-action:manipulation}.required-mark{color:var(--color-error-text);margin-left:2px}.chart-wrap{width:100%}.chart-point:focus-visible{outline:var(--focus-ring)}.legend-toggle{display:inline-flex;align-items:center;gap:var(--space-1);min-height:var(--touch);border:0;background:none;padding:0 var(--space-1);font:inherit;font-size:var(--text-xs);color:var(--color-text-muted);cursor:pointer}.legend-toggle[aria-pressed=false]{text-decoration:line-through;opacity:.6}@media(prefers-reduced-motion:reduce){.skeleton,.spin,.drawer{animation:none}}@media(max-width:767px){.input,.select,.textarea{font-size:var(--text-base)}.col-wide{min-width:220px}}.table th{height:var(--touch)}.empty-title{font-size:var(--text-base);font-weight:600}.chart-tip{fill:var(--color-text);font-weight:600}.divider-text{text-align:center}.topbar{display:none}@media(max-width:1023px){.topbar{display:flex}}.calc-table td{height:var(--touch)}.calc-sign{width:var(--space-8);text-align:center;font-family:var(--font-mono);color:var(--color-text-subtle);font-weight:600}.calc-total td{font-weight:600;background:var(--color-surface-muted)}.cite{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--color-text-subtle);background:var(--color-surface-muted);padding:2px var(--space-1);border-radius:var(--radius-sm);overflow-wrap:anywhere}.cite-block{margin-top:var(--space-3)}[id^=cite-]{scroll-margin-top:var(--space-6)}.row-link{cursor:pointer}.calc-total .sub{color:var(--color-text-subtle)}.bucket-table tbody th{text-align:left;font-weight:500;font-size:var(--text-sm);color:var(--color-text);background:var(--color-surface);white-space:nowrap;height:auto;padding:var(--space-2) var(--space-3);position:sticky;left:0;z-index:var(--z-raised)}.bucket-table .need-col{box-shadow:inset 2px 0 0 var(--color-accent),inset -2px 0 0 var(--color-accent)}.bucket-table td.below-ss{color:var(--color-warning-text);background:var(--tint-warning)}.section-title{font-size:var(--text-lg);margin-top:var(--space-2)}.filter-select{width:auto;flex:0 1 220px}@media(max-width:767px){.filter-select{flex:1 1 100%}}.citation-translation{display:block;margin-top:var(--space-2);color:var(--color-text-subtle)}.lang-options{max-width:360px}.callout-center{align-items:center}.callout-center>svg{margin-top:0}.bell{position:relative}.bell-count{position:absolute;top:4px;right:4px;min-width:18px;height:18px;padding:0 4px;border-radius:var(--radius-full);background:var(--color-error-text);color:var(--color-on-primary);font-size:var(--text-xs);line-height:18px;text-align:center;font-weight:600}.sidebar .bell{color:inherit}.topbar .grow{flex:1}.notif-list{display:flex;flex-direction:column;gap:var(--space-1)}.notif-btn{display:flex;align-items:flex-start;gap:var(--space-3);width:100%;min-height:var(--touch);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);text-align:left;cursor:pointer;color:var(--color-text)}.notif-btn:hover{background:var(--color-surface-muted)}.notif-btn:disabled{cursor:default}.notif.unread .notif-btn{border-left:3px solid var(--color-accent);background:var(--tint-accent)}.notif-strong-alert .notif-btn svg{color:var(--color-error-text)}.callout-confirm{background:var(--color-surface-muted);border:1px dashed var(--color-border-input);color:var(--color-text)}.callout-confirm svg{color:var(--color-info-text);flex-shrink:0}.confirm-list{margin:0;padding-left:var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.source-list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin:0}.sparkline{display:inline-flex;flex-direction:column;gap:var(--space-1)}.spark polyline{stroke:var(--color-accent-text)}.spark circle{fill:var(--color-accent-text)}.spark-info polyline{stroke:var(--color-info-text)}.spark-info circle{fill:var(--color-info-text)}.spark-neutral polyline{stroke:var(--color-text-subtle)}.spark-neutral circle{fill:var(--color-text-subtle)}.spark-table th,.spark-table td{padding:var(--space-1) var(--space-2)}.email-body{min-height:220px;font-family:var(--font-body);white-space:pre-wrap}.strong-row{box-shadow:inset 3px 0 0 var(--color-error-text)}.callout-warning .btn-link{color:var(--color-warning-text)}.callout-error .btn-link{color:var(--color-error-text)}.callout-info .btn-link{color:var(--color-info-text)}.version-switch{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);margin:var(--space-2) var(--space-3)}.version-switch-label{font-size:var(--text-xs);color:var(--color-text-subtle);font-weight:600}.version-switch-options{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--color-border-input);border-radius:var(--radius-full);background:var(--color-surface-muted)}.version-switch-options button{min-width:36px;min-height:24px;padding:0 var(--space-2);border:0;border-radius:var(--radius-full);background:transparent;cursor:pointer;font:inherit}.version-switch-options button strong{font-size:var(--text-xs);color:var(--color-text-subtle)}.version-switch-options button:hover{background:var(--color-surface)}.version-switch-options button[aria-pressed=true]{background:var(--color-primary)}.version-switch-options button[aria-pressed=true] strong{color:var(--color-on-primary)}
