:root{--ink-50:#eef4fa;--ink-100:#d7e6f4;--ink-200:#afc9e6;--ink-300:#7fa7d3;--ink-400:#4e82bc;--ink-500:#2c61a0;--ink-600:#1f4c82;--ink-700:#173a64;--ink-800:#112b4a;--ink-900:#0b1b2b;--brass-50:#fbf6ea;--brass-100:#f5ebd3;--brass-200:#e3ce97;--brass-400:#a8842f;--brass-500:#8a6a22;--brass-600:#6e5319;--slate-25:#f8fafc;--slate-50:#f5f7fa;--slate-100:#eff2f6;--slate-200:#d5d9e0;--slate-300:#b4bcc8;--slate-400:#8d97a5;--slate-500:#75808f;--slate-600:#475467;--slate-700:#334155;--slate-800:#1c2a3c;--slate-900:#0b1b2b;--green-600:#067647;--green-50:#e7f4ee;--green-200:#a9d8c2;--amber-600:#b54708;--amber-50:#fdf0e3;--amber-200:#f0c9a0;--red-600:#b42318;--red-50:#fdecea;--red-200:#f3b9b3;--blue-600:#175cd3;--blue-50:#e8f0fc;--blue-200:#b6cdf2;--font-display:"IBM Plex Serif", Georgia, "Times New Roman", serif;--font-sans:"IBM Plex Sans", "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", "SFMono-Regular", Consolas, monospace;--fs-display-lg:1.875rem;--fs-display-sm:1.5rem;--fs-heading-lg:1.25rem;--fs-heading-md:1rem;--fs-heading-sm:.875rem;--fs-body-md:.875rem;--fs-body-sm:.8125rem;--fs-label:.75rem;--fs-caption:.6875rem;--fs-kpi:2rem;--lh-tight:1.25;--lh-normal:1.45;--lh-relaxed:1.6;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--sp-16:64px;--radius-xs:2px;--radius-sm:4px;--radius-md:4px;--radius-lg:8px;--radius-pill:999px;--spine-width:3px;--sidebar-w:260px;--sidebar-w-collapsed:64px;--header-h:56px;--subheader-h:44px;--row-h:44px;--row-h-compact:36px;--control-h:36px;--control-h-sm:28px;--content-max:1600px;--ease:cubic-bezier(.2, 0, 0, 1);--dur-instant:.12s;--dur-control:.18s;--dur-layer:.24s;--dur-narrative:.6s;--viz-1:#2c61a0;--viz-2:#8a6a22;--viz-3:#3e7c6a;--viz-4:#7a4e7e;--viz-5:#b06a3b;--viz-grid:#e3e8ef;--viz-axis:#8d97a5;--phase-1:#7c8aa0;--phase-2:#5c7ea8;--phase-3:#3e71b0;--phase-4:#2c61a0;--phase-5:#2a6e93;--phase-6:#2a7b85;--phase-7:#2a8272;--phase-8:#1f8460;--phase-9:#0e8552;--phase-10:#067647}:root,[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:var(--slate-50);--surface:#fff;--surface-raised:#fff;--surface-sunken:var(--slate-100);--surface-hover:#f4f7fb;--surface-selected:var(--ink-50);--border:var(--slate-200);--border-strong:var(--slate-300);--border-subtle:#e6eaf0;--text:var(--ink-900);--text-secondary:var(--slate-600);--text-muted:var(--slate-500);--text-inverse:#fff;--primary:var(--ink-600);--primary-hover:var(--ink-700);--primary-subtle:var(--ink-50);--primary-text:var(--ink-600);--accent:var(--brass-500);--accent-hover:var(--brass-600);--accent-subtle:var(--brass-50);--accent-border:var(--brass-200);--success:var(--green-600);--success-bg:var(--green-50);--success-border:var(--green-200);--warning:var(--amber-600);--warning-bg:var(--amber-50);--warning-border:var(--amber-200);--danger:var(--red-600);--danger-bg:var(--red-50);--danger-border:var(--red-200);--info:var(--blue-600);--info-bg:var(--blue-50);--info-border:var(--blue-200);--neutral:var(--slate-600);--neutral-bg:var(--slate-100);--neutral-border:var(--slate-200);--nav-bg:var(--ink-900);--nav-text:#b9c6d6;--nav-text-active:#fff;--nav-hover:#16293c;--nav-active-bg:#16293c;--nav-border:#1b3049;--shadow-layer:0 4px 12px -2px #0b1b2b1a, 0 2px 4px -2px #0b1b2b0f;--shadow-overlay:0 16px 40px -8px #0b1b2b33, 0 4px 8px -4px #0b1b2b14;--scrim:#0b1b2b73;--focus-ring:var(--brass-500)}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b1420;--surface:#111c2b;--surface-raised:#162335;--surface-sunken:#080f19;--surface-hover:#172538;--surface-selected:#17304d;--border:#25344a;--border-strong:#354863;--border-subtle:#1c293a;--text:#e8edf4;--text-secondary:#9aa8bc;--text-muted:#6b7c93;--text-inverse:#0b1420;--primary:#2f6bb5;--primary-hover:#3b78c4;--primary-subtle:#14263c;--primary-text:#7fa7d3;--accent:#c79f4e;--accent-hover:#d8b268;--accent-subtle:#2a2213;--accent-border:#57451f;--success:#3cc98a;--success-bg:#0c2a1f;--success-border:#1e5540;--warning:#e08c3e;--warning-bg:#2d1d0d;--warning-border:#5c3a17;--danger:#f2776b;--danger-bg:#2e1512;--danger-border:#5e2a24;--info:#5b9bf5;--info-bg:#10233d;--info-border:#23446f;--neutral:#9aa8bc;--neutral-bg:#1a2434;--neutral-border:#2b3a51;--nav-bg:#080f19;--nav-text:#8fa0b6;--nav-text-active:#fff;--nav-hover:#162334;--nav-active-bg:#172a41;--nav-border:#1b2942;--shadow-layer:0 4px 12px -2px #00000073, 0 2px 4px -2px #0000004d;--shadow-overlay:0 16px 40px -8px #0009, 0 4px 8px -4px #0006;--scrim:#03080ea6;--focus-ring:#c79f4e;--viz-1:#5b9bf5;--viz-2:#c79f4e;--viz-3:#4fa48c;--viz-4:#a878ad;--viz-5:#d18f5c;--viz-grid:#233044;--viz-axis:#6b7c93;--phase-1:#8b99ad;--phase-2:#6f92bd;--phase-3:#4f87c9;--phase-4:#4a8bd0;--phase-5:#3f92b8;--phase-6:#3aa0a8;--phase-7:#35a68d;--phase-8:#2eab7c;--phase-9:#22ad6d;--phase-10:#1ea862}[data-density=compact]{--row-h:var(--row-h-compact);--control-h:32px}*,:before,:after{box-sizing:border-box}*{margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--fs-body-md);line-height:var(--lh-normal);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"ss01", "cv05"}#root{min-height:100vh}img,svg{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none}a{color:var(--primary-text);text-decoration:none}a:hover{text-decoration:underline}:focus{outline:none}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--radius-sm)}:target,tr:focus-visible{scroll-margin-block:calc(var(--header-h) + var(--sp-8))}.t-display-lg{font-family:var(--font-display);font-size:var(--fs-display-lg);line-height:var(--lh-tight);font-weight:var(--fw-semibold);letter-spacing:-.01em}.t-display-sm{font-family:var(--font-display);font-size:var(--fs-display-sm);line-height:var(--lh-tight);font-weight:var(--fw-semibold)}.t-heading-lg{font-size:var(--fs-heading-lg);line-height:var(--lh-tight);font-weight:var(--fw-semibold)}.t-heading-md{font-size:var(--fs-heading-md);line-height:var(--lh-tight);font-weight:var(--fw-semibold)}.t-heading-sm{font-size:var(--fs-heading-sm);line-height:var(--lh-tight);font-weight:var(--fw-semibold)}.t-body{font-size:var(--fs-body-md)}.t-body-sm{font-size:var(--fs-body-sm)}.t-label{font-size:var(--fs-label);font-weight:var(--fw-medium);letter-spacing:.02em;color:var(--text-secondary)}.t-caption{font-size:var(--fs-caption);color:var(--text-muted)}.t-data{font-family:var(--font-mono);font-size:var(--fs-body-sm);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.t-data-strong{font-family:var(--font-mono);font-size:var(--fs-body-sm);font-variant-numeric:tabular-nums;font-weight:var(--fw-medium);letter-spacing:-.01em}.t-ref{font-family:var(--font-mono);font-size:var(--fs-body-sm);font-weight:var(--fw-medium);letter-spacing:.01em;color:var(--text)}.t-kpi{font-family:var(--font-mono);font-size:var(--fs-kpi);line-height:1.1;font-weight:var(--fw-medium);font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--text)}.t-muted{color:var(--text-muted)}.t-secondary{color:var(--text-secondary)}.t-num{font-variant-numeric:tabular-nums}.t-truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{top:var(--sp-2);left:var(--sp-2);z-index:100;padding:var(--sp-2) var(--sp-4);background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow-overlay);position:absolute;transform:translateY(-200%)}.skip-link:focus-visible{transform:translateY(0)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-pill);background-clip:content-box;border:3px solid #0000}::-webkit-scrollbar-thumb:hover{background:var(--text-muted);background-clip:content-box}.row{align-items:center;gap:var(--sp-2);display:flex}.row-between{justify-content:space-between;align-items:center;gap:var(--sp-4);display:flex}.col{flex-direction:column;display:flex}.grow{flex:1;min-width:0}.wrap{flex-wrap:wrap}.grid{gap:var(--sp-4);display:grid}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media print{.app-sidebar,.app-header,.no-print{display:none!important}.app-main{margin:0!important;padding:0!important}.card,.panel{break-inside:avoid;border:1px solid #999!important}}.btn{justify-content:center;align-items:center;gap:var(--sp-2);height:var(--control-h);padding:0 var(--sp-3);border-radius:var(--radius-sm);font-size:var(--fs-body-md);font-weight:var(--fw-medium);white-space:nowrap;cursor:pointer;transition:background-color var(--dur-instant) var(--ease), border-color var(--dur-instant) var(--ease), color var(--dur-instant) var(--ease);border:1px solid #0000;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn svg{flex-shrink:0}.btn-primary{background:var(--primary);color:var(--text-inverse);border-color:var(--primary)}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-accent{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-accent:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--surface-hover);border-color:var(--text-muted)}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--surface-hover);color:var(--text)}.btn-danger{background:var(--surface);color:var(--danger);border-color:var(--danger-border)}.btn-danger:hover:not(:disabled){background:var(--danger-bg)}.btn-sm{height:var(--control-h-sm);padding:0 var(--sp-2);font-size:var(--fs-body-sm)}.btn-icon{width:var(--control-h);padding:0}.btn-icon.btn-sm{width:var(--control-h-sm)}.btn-block{width:100%}.badge{align-items:center;gap:var(--sp-1);height:20px;padding:0 var(--sp-2);border-radius:var(--radius-xs);font-size:var(--fs-caption);font-weight:var(--fw-medium);letter-spacing:.02em;white-space:nowrap;border:1px solid;display:inline-flex}.badge:before{content:"";border-radius:var(--radius-pill);background:currentColor;flex-shrink:0;width:5px;height:5px}.badge-plain:before{display:none}.badge-success{color:var(--success);background:var(--success-bg);border-color:var(--success-border)}.badge-warning{color:var(--warning);background:var(--warning-bg);border-color:var(--warning-border)}.badge-danger{color:var(--danger);background:var(--danger-bg);border-color:var(--danger-border)}.badge-info{color:var(--info);background:var(--info-bg);border-color:var(--info-border)}.badge-neutral{color:var(--neutral);background:var(--neutral-bg);border-color:var(--neutral-border)}.badge-accent{color:var(--accent);background:var(--accent-subtle);border-color:var(--accent-border)}.count{border-radius:var(--radius-pill);background:var(--primary);min-width:18px;height:18px;color:var(--text-inverse);font-family:var(--font-mono);font-size:var(--fs-caption);font-weight:var(--fw-medium);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;padding:0 5px;display:inline-flex}.count-danger{background:var(--danger);color:#fff}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md)}.panel-header{justify-content:space-between;align-items:center;gap:var(--sp-4);min-height:48px;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--border);display:flex}.panel-title{font-size:var(--fs-heading-sm);font-weight:var(--fw-semibold);color:var(--text)}.panel-subtitle{font-size:var(--fs-caption);color:var(--text-muted);margin-top:2px}.panel-body{padding:var(--sp-4)}.panel-footer{padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border);background:var(--surface-sunken)}.kpi{gap:var(--sp-2);padding:var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);transition:border-color var(--dur-instant) var(--ease);flex-direction:column;display:flex;position:relative;overflow:hidden}.kpi:before{content:"";width:var(--spine-width);background:var(--accent);transform-origin:top;transition:transform var(--dur-control) var(--ease);position:absolute;inset:0 auto 0 0;transform:scaleY(0)}.kpi:hover{border-color:var(--border-strong)}.kpi:hover:before{transform:scaleY(1)}.kpi-label{align-items:center;gap:var(--sp-2);font-size:var(--fs-label);font-weight:var(--fw-medium);letter-spacing:.02em;color:var(--text-secondary);text-transform:uppercase;display:flex}.kpi-value{font-family:var(--font-mono);font-size:var(--fs-kpi);line-height:1.1;font-weight:var(--fw-medium);font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--text)}.kpi-unit{font-size:var(--fs-heading-md);font-weight:var(--fw-regular);color:var(--text-muted);margin-left:2px}.kpi-foot{align-items:center;gap:var(--sp-2);font-size:var(--fs-caption);color:var(--text-muted);flex-wrap:wrap;display:flex}.kpi-delta-label{font-family:var(--font-sans);font-weight:var(--fw-regular);color:var(--text-muted);margin-left:3px}.kpi-delta{font-family:var(--font-mono);font-weight:var(--fw-medium);font-variant-numeric:tabular-nums;align-items:center;gap:2px;display:inline-flex}.kpi-delta.up{color:var(--success)}.kpi-delta.down{color:var(--danger)}.kpi-delta.flat{color:var(--text-muted)}.field{gap:var(--sp-1);flex-direction:column;display:flex}.field-label{align-items:center;gap:var(--sp-1);font-size:var(--fs-label);font-weight:var(--fw-medium);letter-spacing:.02em;color:var(--text-secondary);display:flex}.field-required{color:var(--danger)}.field-hint{font-size:var(--fs-caption);color:var(--text-muted)}.field-error{align-items:center;gap:var(--sp-1);font-size:var(--fs-caption);color:var(--danger);display:flex}.input,.select,.textarea{width:100%;height:var(--control-h);padding:0 var(--sp-3);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:var(--fs-body-md);color:var(--text);transition:border-color var(--dur-instant) var(--ease), box-shadow var(--dur-instant) var(--ease)}.textarea{height:auto;min-height:88px;padding:var(--sp-2) var(--sp-3);resize:vertical;line-height:var(--lh-normal)}.input::placeholder,.textarea::placeholder{color:var(--text-muted)}.input:hover:not(:disabled),.select:hover:not(:disabled),.textarea:hover:not(:disabled){border-color:var(--text-muted)}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-subtle);outline:none}.input:disabled,.select:disabled,.textarea:disabled{background:var(--surface-sunken);color:var(--text-muted);cursor:not-allowed}.input[aria-invalid=true],.select[aria-invalid=true]{border-color:var(--danger)}.input[aria-invalid=true]:focus{box-shadow:0 0 0 3px var(--danger-bg)}.input-data{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right}.select{appearance:none;padding-right:var(--sp-8);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%2375808f' stroke-width='1.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--sp-3) center}.search{align-items:center;display:flex;position:relative}.search svg{left:var(--sp-3);color:var(--text-muted);pointer-events:none;position:absolute}.search .input{padding-left:var(--sp-8)}.search-clear{right:var(--sp-2);border-radius:var(--radius-xs);width:20px;height:20px;color:var(--text-muted);place-items:center;display:grid;position:absolute}.search-clear:hover{background:var(--surface-hover);color:var(--text)}.check{align-items:center;gap:var(--sp-2);cursor:pointer;font-size:var(--fs-body-md);display:inline-flex}.check input{appearance:none;border:1px solid var(--border-strong);border-radius:var(--radius-xs);background:var(--surface);cursor:pointer;width:16px;height:16px;transition:background-color var(--dur-instant) var(--ease), border-color var(--dur-instant) var(--ease);flex-shrink:0}.check input[type=radio]{border-radius:var(--radius-pill)}.check input:checked{background:var(--primary);border-color:var(--primary);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath d='M3 7.2L5.6 9.8L11 4.4' stroke='white' stroke-width='1.8' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat}.check input[type=radio]:checked{box-shadow:inset 0 0 0 3px var(--surface);background-image:none}.check input:indeterminate{background:var(--primary);border-color:var(--primary);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 14 14'%3E%3Cpath d='M3.5 7H10.5' stroke='white' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat}.switch{align-items:center;gap:var(--sp-2);cursor:pointer;display:inline-flex}.switch input{appearance:none;border-radius:var(--radius-pill);background:var(--border-strong);cursor:pointer;width:32px;height:18px;transition:background-color var(--dur-control) var(--ease);position:relative}.switch input:after{content:"";border-radius:var(--radius-pill);width:14px;height:14px;transition:transform var(--dur-control) var(--ease);background:#fff;position:absolute;top:2px;left:2px}.switch input:checked{background:var(--primary)}.switch input:checked:after{transform:translate(14px)}.segmented{background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px;display:inline-flex}.segmented button{padding:0 var(--sp-3);height:28px;font-size:var(--fs-body-sm);font-weight:var(--fw-medium);color:var(--text-secondary);transition:background-color var(--dur-instant) var(--ease), color var(--dur-instant) var(--ease);border-radius:2px}.segmented button:hover{color:var(--text)}.segmented button[aria-pressed=true],.segmented button[aria-selected=true]{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0b1b2b14}.tabs{align-items:center;gap:var(--sp-1);border-bottom:1px solid var(--border);flex-wrap:wrap;display:flex}.tabs .tab:after{inset:auto 0 0}.tab{align-items:center;gap:var(--sp-2);height:40px;padding:0 var(--sp-3);font-size:var(--fs-body-md);font-weight:var(--fw-medium);color:var(--text-secondary);white-space:nowrap;transition:color var(--dur-instant) var(--ease);display:inline-flex;position:relative}.tab:after{content:"";background:var(--primary);height:2px;transition:transform var(--dur-control) var(--ease);position:absolute;inset:auto 0 -1px;transform:scaleX(0)}.tab:hover{color:var(--text)}.tab[aria-selected=true]{color:var(--text);font-weight:var(--fw-semibold)}.tab[aria-selected=true]:after{transform:scaleX(1)}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);position:relative;overflow:auto}.table{border-collapse:separate;border-spacing:0;width:100%;font-size:var(--fs-body-sm)}.table thead th{z-index:2;height:var(--subheader-h);padding:0 var(--sp-3);background:var(--surface-sunken);border-bottom:1px solid var(--border);font-size:var(--fs-label);font-weight:var(--fw-semibold);letter-spacing:.02em;color:var(--text-secondary);text-align:left;white-space:nowrap;-webkit-user-select:none;user-select:none;position:sticky;top:0}.table thead th.num{text-align:right}.table th.sortable{cursor:pointer}.table th.sortable:hover{color:var(--text);background:var(--surface-hover)}.th-inner{align-items:center;gap:var(--sp-1);display:inline-flex}.th-inner.num{justify-content:flex-end;width:100%}.sort-arrow{opacity:0;transition:opacity var(--dur-instant) var(--ease);color:var(--text-muted)}.table th.sortable:hover .sort-arrow{opacity:.5}.table th[aria-sort] .sort-arrow{opacity:1;color:var(--primary-text)}.table tbody td,.table tfoot td{height:var(--row-h);padding:0 var(--sp-3);border-bottom:1px solid var(--border-subtle);color:var(--text);vertical-align:middle}.table td.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.table tfoot td{border-top:1px solid var(--border);border-bottom:none}.table tbody tr{transition:background-color var(--dur-instant) var(--ease)}.table tbody tr:hover{background:var(--surface-hover)}.table tbody tr[aria-selected=true]{background:var(--surface-selected)}.table tbody tr:last-child td{border-bottom:none}.table td.spine{padding-left:var(--sp-4);position:relative}.table td.spine:before{content:"";width:var(--spine-width);background:var(--phase-color,var(--border-strong));transition:background-color var(--dur-instant) var(--ease), inset var(--dur-instant) var(--ease);border-radius:0 2px 2px 0;position:absolute;inset:6px auto 6px 0}.table tbody tr:hover td.spine:before{background:var(--accent);inset:0 auto 0 0}.table tbody tr.late td.spine:before{background:var(--danger)}.table .cell-strong{font-weight:var(--fw-medium);color:var(--text)}.table .cell-ref{font-family:var(--font-mono);font-size:var(--fs-body-sm);font-weight:var(--fw-medium);letter-spacing:.01em;white-space:nowrap}.table tbody td.num,.table td.nowrap{white-space:nowrap}.table .cell-actions{opacity:0;transition:opacity var(--dur-instant) var(--ease)}.table tbody tr:hover .cell-actions,.table tbody tr:focus-within .cell-actions{opacity:1}.table .col-select{width:44px;padding-right:0}.table td.col-select.spine{padding-left:var(--sp-3)}.bulkbar{justify-content:space-between;align-items:center;gap:var(--sp-4);padding:var(--sp-2) var(--sp-3);background:var(--primary-subtle);border-bottom:1px solid var(--info-border);font-size:var(--fs-body-sm);display:flex}.progress{background:var(--surface-sunken);border-radius:var(--radius-pill);width:100%;height:6px;position:relative;overflow:hidden}.progress-bar{border-radius:var(--radius-pill);background:var(--progress-color,var(--primary));height:100%;transition:width var(--dur-narrative) var(--ease)}.progress-row{align-items:center;gap:var(--sp-2);display:flex}.progress-row .progress{min-width:60px}.progress-value{font-family:var(--font-mono);font-size:var(--fs-caption);font-variant-numeric:tabular-nums;color:var(--text-secondary);text-align:right;min-width:34px}.stepper{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);align-items:stretch;display:flex;overflow:hidden}.step{align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-4);border-right:1px solid var(--border);text-align:left;min-width:0;transition:background-color var(--dur-instant) var(--ease);flex:1;display:flex;position:relative}.step:last-child{border-right:none}.step:hover:not(:disabled){background:var(--surface-hover)}.step:disabled{cursor:not-allowed}.step-num{border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);width:24px;height:24px;font-family:var(--font-mono);font-size:var(--fs-caption);font-weight:var(--fw-medium);color:var(--text-muted);transition:all var(--dur-control) var(--ease);flex-shrink:0;place-items:center;display:grid}.step-text{flex-direction:column;min-width:0;display:flex}.step-title{font-size:var(--fs-body-sm);font-weight:var(--fw-medium);color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.step-meta{font-size:var(--fs-caption);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.step.done .step-num{background:var(--success);border-color:var(--success);color:#fff}.step.done .step-title{color:var(--text)}.step[aria-current=step]{background:var(--accent-subtle)}.step[aria-current=step]:before{content:"";width:var(--spine-width);background:var(--accent);position:absolute;inset:0 auto 0 0}.step[aria-current=step] .step-num{background:var(--accent);border-color:var(--accent);color:#fff}.step[aria-current=step] .step-title{color:var(--text);font-weight:var(--fw-semibold)}.step.invalid .step-num{border-color:var(--danger);color:var(--danger)}.timeline{padding-left:var(--sp-2);position:relative}.timeline:before{content:"";width:var(--spine-width);border-radius:var(--radius-pill);background:var(--border);position:absolute;top:12px;bottom:12px;left:15px}.timeline:after{content:"";width:var(--spine-width);height:var(--fill,0%);border-radius:var(--radius-pill);background:linear-gradient(to bottom, var(--phase-1), var(--phase-5), var(--phase-10));animation:spine-fill var(--dur-narrative) var(--ease) both;transform-origin:top;position:absolute;top:12px;left:15px}@keyframes spine-fill{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.tl-item{gap:var(--sp-3);padding:var(--sp-2) 0 var(--sp-4) 0;display:flex;position:relative}.tl-dot{z-index:1;border:2px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);width:24px;height:24px;color:var(--text-muted);transition:all var(--dur-control) var(--ease);flex-shrink:0;place-items:center;display:grid;position:relative}.tl-item.done .tl-dot{background:var(--phase-color,var(--primary));border-color:var(--phase-color,var(--primary));color:#fff}.tl-item.current .tl-dot{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 0 0 4px var(--accent-subtle)}.tl-body{flex:1;min-width:0;padding-top:1px}.tl-title{align-items:center;gap:var(--sp-2);font-size:var(--fs-body-md);font-weight:var(--fw-medium);color:var(--text);display:flex}.tl-item.todo .tl-title{color:var(--text-muted);font-weight:var(--fw-regular)}.tl-meta{align-items:center;gap:var(--sp-3);font-size:var(--fs-caption);color:var(--text-muted);margin-top:2px;display:flex}.tl-date{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.tl-actions{margin-top:var(--sp-3);padding:var(--sp-3);background:var(--accent-subtle);border:1px solid var(--accent-border);border-radius:var(--radius-sm)}.timeline-h{padding:var(--sp-2) 0;scrollbar-width:none;align-items:flex-start;display:flex;overflow-x:auto}.timeline-h::-webkit-scrollbar{display:none}.tlh-item{align-items:center;gap:var(--sp-2);min-width:88px;padding:0 var(--sp-1);text-align:center;flex-direction:column;flex:1;display:flex;position:relative}.tlh-item:before{content:"";background:var(--border);width:100%;height:2px;position:absolute;top:9px;left:-50%}.tlh-item:first-child:before{display:none}.tlh-item.done:before,.tlh-item.current:before{background:var(--phase-color,var(--primary))}.tlh-dot{z-index:1;border:2px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);flex-shrink:0;place-items:center;width:20px;height:20px;display:grid;position:relative}.tlh-item.done .tlh-dot{background:var(--phase-color);border-color:var(--phase-color);color:#fff}.tlh-item.current .tlh-dot{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 0 0 4px var(--accent-subtle)}.tlh-label{font-size:var(--fs-caption);color:var(--text-muted);line-height:1.3}.tlh-item.done .tlh-label,.tlh-item.current .tlh-label{color:var(--text);font-weight:var(--fw-medium)}.scrim{z-index:50;background:var(--scrim);animation:fade var(--dur-layer) var(--ease);position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.modal{z-index:51;padding:var(--sp-4);pointer-events:none;place-items:center;display:grid;position:fixed;inset:0}.modal-panel{width:100%;max-width:var(--modal-w,560px);max-height:calc(100vh - var(--sp-16));background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-overlay);pointer-events:auto;animation:modal-in var(--dur-layer) var(--ease);flex-direction:column;display:flex}@keyframes modal-in{0%{opacity:0;transform:translateY(8px)scale(.99)}}.modal-header{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);padding:var(--sp-4);border-bottom:1px solid var(--border);display:flex}.modal-body{padding:var(--sp-4);overflow-y:auto}.modal-footer{justify-content:flex-end;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border);background:var(--surface-sunken);border-radius:0 0 var(--radius-lg) var(--radius-lg);display:flex}.drawer{z-index:51;width:min(var(--drawer-w,480px), 100vw);background:var(--surface-raised);border-left:1px solid var(--border);box-shadow:var(--shadow-overlay);animation:drawer-in var(--dur-layer) var(--ease);flex-direction:column;display:flex;position:fixed;inset:0 0 0 auto}@keyframes drawer-in{0%{opacity:0;transform:translate(16px)}}.drawer-header{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);padding:var(--sp-4);border-bottom:1px solid var(--border);display:flex}.drawer-body{padding:var(--sp-4);flex:1;overflow-y:auto}.drawer-footer{justify-content:flex-end;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-top:1px solid var(--border);background:var(--surface-sunken);display:flex}.menu{z-index:40;min-width:200px;padding:var(--sp-1);background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-layer);animation:menu-in var(--dur-instant) var(--ease);position:absolute}@keyframes menu-in{0%{opacity:0;transform:translateY(-4px)}}.menu-item{align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-2);border-radius:var(--radius-xs);font-size:var(--fs-body-sm);color:var(--text);text-align:left;display:flex}.menu-item:hover{background:var(--surface-hover);text-decoration:none}.menu-item.danger{color:var(--danger)}.menu-item.danger:hover{background:var(--danger-bg)}.menu-sep{height:1px;margin:var(--sp-1) 0;background:var(--border)}.menu-label{padding:var(--sp-2) var(--sp-2) var(--sp-1);font-size:var(--fs-caption);font-weight:var(--fw-semibold);letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted)}.tooltip{z-index:60;padding:var(--sp-1) var(--sp-2);background:var(--ink-900);color:#fff;border-radius:var(--radius-xs);font-size:var(--fs-caption);white-space:nowrap;pointer-events:none;box-shadow:var(--shadow-layer);position:absolute}.toasts{bottom:var(--sp-4);right:var(--sp-4);z-index:70;gap:var(--sp-2);width:380px;max-width:calc(100vw - var(--sp-8));flex-direction:column;display:flex;position:fixed}.toast{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3);padding-left:var(--sp-4);background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-overlay);animation:toast-in var(--dur-layer) var(--ease);display:flex;position:relative;overflow:hidden}@keyframes toast-in{0%{opacity:0;transform:translate(16px)}}.toast:before{content:"";width:var(--spine-width);background:var(--toast-color,var(--info));position:absolute;inset:0 auto 0 0}.toast-title{font-size:var(--fs-body-md);font-weight:var(--fw-medium);color:var(--text)}.toast-msg{font-size:var(--fs-body-sm);color:var(--text-secondary);margin-top:2px}.alert{align-items:flex-start;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--radius-sm);font-size:var(--fs-body-sm);border:1px solid;display:flex}.alert-success{background:var(--success-bg);border-color:var(--success-border);color:var(--success)}.alert-warning{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning)}.alert-danger{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger)}.alert-info{background:var(--info-bg);border-color:var(--info-border);color:var(--info)}.alert-body{min-width:0;color:var(--text);flex:1}.alert-title{font-weight:var(--fw-semibold);color:inherit}.filterbar{align-items:center;gap:var(--sp-2);padding:var(--sp-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md) var(--radius-md) 0 0;border-bottom:none;flex-wrap:wrap;display:flex}.filterbar>.select,.filterbar>.check{flex-shrink:0}.chip{align-items:center;gap:var(--sp-1);height:28px;padding:0 var(--sp-1) 0 var(--sp-2);background:var(--primary-subtle);border:1px solid var(--info-border);border-radius:var(--radius-sm);font-size:var(--fs-body-sm);color:var(--primary-text);white-space:nowrap;display:inline-flex}.chip-key{color:var(--text-secondary);font-weight:var(--fw-medium)}.chip-remove{border-radius:var(--radius-xs);color:currentColor;opacity:.7;place-items:center;width:18px;height:18px;display:grid}.chip-remove:hover{background:var(--info-border);opacity:1}.dropzone{justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-8) var(--sp-4);background:var(--surface-sunken);border:1px dashed var(--border-strong);border-radius:var(--radius-md);text-align:center;cursor:pointer;transition:border-color var(--dur-control) var(--ease), background-color var(--dur-control) var(--ease);flex-direction:column;display:flex}.dropzone:hover,.dropzone.over{border-color:var(--accent);background:var(--accent-subtle)}.file-row{align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);display:flex}.file-icon{border-radius:var(--radius-xs);background:var(--surface-sunken);width:32px;height:32px;color:var(--text-secondary);flex-shrink:0;place-items:center;display:grid}.tree{font-size:var(--fs-body-sm)}.tree-node{align-items:center;gap:var(--sp-2);width:100%;height:32px;padding:0 var(--sp-2);border-radius:var(--radius-xs);color:var(--text-secondary);text-align:left;display:flex}.tree-node:hover{background:var(--surface-hover);color:var(--text)}.tree-node[aria-selected=true]{background:var(--surface-selected);color:var(--text);font-weight:var(--fw-medium)}.tree-caret{width:16px;height:16px;color:var(--text-muted);transition:transform var(--dur-instant) var(--ease);flex-shrink:0;place-items:center;display:grid}.tree-caret.open{transform:rotate(90deg)}.tree-children{margin-left:var(--sp-3);padding-left:var(--sp-2);border-left:1px solid var(--border)}.empty{justify-content:center;align-items:center;gap:var(--sp-2);padding:var(--sp-16) var(--sp-4);text-align:center;color:var(--text-muted);flex-direction:column;display:flex}.empty-icon{width:44px;height:44px;margin-bottom:var(--sp-2);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-sunken);color:var(--text-muted);place-items:center;display:grid}.skeleton{background:linear-gradient(90deg, var(--surface-sunken) 25%, var(--border-subtle) 50%, var(--surface-sunken) 75%);border-radius:var(--radius-xs);background-size:200% 100%;animation:1.4s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.dl{gap:var(--sp-4) var(--sp-6);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.dl-item{flex-direction:column;gap:2px;min-width:0;display:flex}.dl-key{font-size:var(--fs-label);font-weight:var(--fw-medium);letter-spacing:.02em;color:var(--text-muted)}.dl-val{font-size:var(--fs-body-md);color:var(--text)}.dl-val.data{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:var(--fw-medium)}.divider{background:var(--border);border:none;height:1px}.divider-v{background:var(--border);align-self:stretch;width:1px}.markdown{padding:var(--sp-8);max-width:82ch;line-height:var(--lh-relaxed);color:var(--text);margin:0 auto}.markdown>:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3,.markdown h4{font-family:var(--font-display);color:var(--text);line-height:var(--lh-tight);scroll-margin-top:var(--sp-16)}.markdown h1{font-size:var(--fs-display-lg);margin:var(--sp-8) 0 var(--sp-4);padding-bottom:var(--sp-3);border-bottom:2px solid var(--accent)}.markdown h2{font-size:var(--fs-display-sm);margin:var(--sp-10) 0 var(--sp-4);padding-bottom:var(--sp-2);border-bottom:1px solid var(--border)}.markdown h3{font-size:var(--fs-heading-lg);margin:var(--sp-6) 0 var(--sp-3)}.markdown h4{font-size:var(--fs-heading-md);margin:var(--sp-5) 0 var(--sp-2)}.markdown p,.markdown li{font-size:var(--fs-body-md)}.markdown p{margin:var(--sp-3) 0}.markdown ul,.markdown ol{margin:var(--sp-3) 0;padding-left:var(--sp-6)}.markdown li{margin:var(--sp-1) 0}.markdown li::marker{color:var(--text-muted)}.markdown strong{font-weight:var(--fw-semibold)}.markdown a{color:var(--primary-text);text-underline-offset:2px;text-decoration:underline}.markdown blockquote{margin:var(--sp-4) 0;padding:var(--sp-3) var(--sp-4);border-left:var(--spine-width) solid var(--accent);background:var(--accent-subtle);color:var(--text)}.markdown blockquote p{margin:var(--sp-1) 0}.markdown code{font-family:var(--font-mono);background:var(--surface-sunken);border:1px solid var(--border-subtle);border-radius:var(--radius-xs);padding:1px 5px;font-size:.85em}.markdown pre{margin:var(--sp-4) 0;padding:var(--sp-4);background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--radius-sm);overflow-x:auto}.markdown pre code{font-size:var(--fs-body-sm);white-space:pre;background:0 0;border:none;padding:0;line-height:1.45}.markdown table{width:100%;margin:var(--sp-4) 0;border-collapse:separate;border-spacing:0;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--fs-body-sm);overflow:hidden}.markdown thead th{padding:var(--sp-2) var(--sp-3);background:var(--surface-sunken);border-bottom:1px solid var(--border);font-size:var(--fs-label);font-weight:var(--fw-semibold);letter-spacing:.02em;color:var(--text-secondary);text-align:left}.markdown tbody td{padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-subtle);vertical-align:top}.markdown tbody tr:last-child td{border-bottom:none}.markdown th[align=right],.markdown td[align=right]{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums}.markdown hr{height:1px;margin:var(--sp-8) 0;background:var(--border);border:none}.markdown>table{display:block;overflow-x:auto}@media (width<=767px){.markdown{padding:var(--sp-4)}}.lien-inline{font:inherit;color:var(--accent);text-underline-offset:2px;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.lien-inline:hover{text-decoration-thickness:2px}.lien-inline:focus-visible{border-radius:var(--radius-xs);outline:2px solid var(--accent);outline-offset:2px}.app{grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh;transition:grid-template-columns var(--dur-layer) var(--ease);display:grid}.app[data-collapsed=true]{grid-template-columns:var(--sidebar-w-collapsed) 1fr}.app-sidebar{z-index:30;background:var(--nav-bg);border-right:1px solid var(--nav-border);flex-direction:column;height:100vh;display:flex;position:sticky;top:0;overflow:hidden}.brand{align-items:center;gap:var(--sp-3);height:var(--header-h);padding:0 var(--sp-4);border-bottom:1px solid var(--nav-border);flex-shrink:0;display:flex}.brand-seal{border:1px solid var(--accent);border-radius:var(--radius-sm);color:#fff;width:30px;height:30px;font-family:var(--font-display);letter-spacing:-.02em;background:linear-gradient(160deg,#a8842f,#6e5319);flex-shrink:0;place-items:center;font-size:13px;font-weight:600;display:grid}.brand-name{font-family:var(--font-display);letter-spacing:.02em;color:#fff;white-space:nowrap;font-size:15px;font-weight:600}.brand-sub{font-size:var(--fs-caption);color:var(--nav-text);white-space:nowrap;letter-spacing:.04em;text-transform:uppercase}.nav{padding:var(--sp-3) var(--sp-2);flex:1;overflow:hidden auto}.nav-section{padding:var(--sp-4) var(--sp-2) var(--sp-1);font-size:var(--fs-caption);font-weight:var(--fw-semibold);letter-spacing:.06em;text-transform:uppercase;color:#5f7085;white-space:nowrap}.nav-item{align-items:center;gap:var(--sp-3);width:100%;height:36px;padding:0 var(--sp-2);border-radius:var(--radius-sm);color:var(--nav-text);font-size:var(--fs-body-md);white-space:nowrap;transition:background-color var(--dur-instant) var(--ease), color var(--dur-instant) var(--ease);margin-bottom:1px;display:flex;position:relative}.nav-item:hover{background:var(--nav-hover);color:#fff;text-decoration:none}.nav-item.active{background:var(--nav-active-bg);color:var(--nav-text-active);font-weight:var(--fw-medium)}.nav-item.active:before{content:"";width:var(--spine-width);background:var(--accent);border-radius:0 2px 2px 0;position:absolute;inset:6px auto 6px 0}.nav-item svg{color:currentColor;flex-shrink:0}.nav-item .count{margin-left:auto}.nav-label{text-overflow:ellipsis;overflow:hidden}.sidebar-foot{padding:var(--sp-2);border-top:1px solid var(--nav-border);flex-shrink:0}.app[data-collapsed=true] .brand-text,.app[data-collapsed=true] .nav-label,.app[data-collapsed=true] .nav-section,.app[data-collapsed=true] .nav-item .count{display:none}.app[data-collapsed=true] .nav-item,.app[data-collapsed=true] .brand{justify-content:center;padding:0}.app-body{flex-direction:column;min-width:0;display:flex}.app-header{z-index:20;align-items:center;gap:var(--sp-3);height:var(--header-h);padding:0 var(--sp-4);background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;display:flex;position:sticky;top:0}.header-search{width:100%;max-width:420px}.header-search .input{background:var(--surface-sunken);border-color:#0000;height:32px}.header-search .input:hover{border-color:var(--border-strong)}.header-search .input:focus{background:var(--surface);border-color:var(--primary)}.kbd{border:1px solid var(--border);border-radius:var(--radius-xs);background:var(--surface);font-family:var(--font-mono);color:var(--text-muted);border-bottom-width:2px;align-items:center;padding:1px 5px;font-size:10px;display:inline-flex}.header-actions{align-items:center;gap:var(--sp-1);margin-left:auto;display:flex}.avatar{border-radius:var(--radius-pill);background:var(--primary-subtle);border:1px solid var(--info-border);width:30px;height:30px;color:var(--primary-text);font-size:var(--fs-caption);font-weight:var(--fw-semibold);letter-spacing:.02em;flex-shrink:0;place-items:center;display:grid}.user-chip{align-items:center;gap:var(--sp-2);height:36px;padding:0 var(--sp-2);border-radius:var(--radius-sm);display:flex}.user-chip:hover{background:var(--surface-hover)}.user-name{font-size:var(--fs-body-sm);font-weight:var(--fw-medium);line-height:1.2}.user-role{font-size:var(--fs-caption);color:var(--text-muted);line-height:1.2}.breadcrumb{align-items:center;gap:var(--sp-1);font-size:var(--fs-body-sm);color:var(--text-muted);min-width:0;display:flex}.breadcrumb a{color:var(--text-secondary);border-radius:var(--radius-xs);padding:2px 4px}.breadcrumb a:hover{color:var(--text);background:var(--surface-hover);text-decoration:none}.breadcrumb .sep{color:var(--border-strong)}.breadcrumb .current{color:var(--text);font-weight:var(--fw-medium);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.app-main{min-width:0;padding:var(--sp-6);flex:1}.page{max-width:var(--content-max);gap:var(--sp-5);flex-direction:column;margin:0 auto;display:flex}.page-head{justify-content:space-between;align-items:flex-start;gap:var(--sp-4);flex-wrap:wrap;display:flex}.page-title{font-family:var(--font-display);font-size:var(--fs-display-sm);font-weight:var(--fw-semibold);line-height:var(--lh-tight);color:var(--text)}.page-desc{margin-top:var(--sp-1);font-size:var(--fs-body-md);color:var(--text-secondary);max-width:68ch}.page-actions{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.grid-kpi{gap:var(--sp-4);grid-template-columns:repeat(auto-fit,minmax(190px,1fr));display:grid}.grid-2{gap:var(--sp-4);grid-template-columns:2fr 1fr;display:grid}.grid-3{gap:var(--sp-4);grid-template-columns:repeat(3,1fr);display:grid}.grid-half{gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.record-head{padding:var(--sp-5);padding-left:var(--sp-6);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);position:relative;overflow:hidden}.record-head:before{content:"";background:var(--phase-color,var(--primary));width:4px;position:absolute;inset:0 auto 0 0}.record-title{font-family:var(--font-display);font-size:var(--fs-display-lg);font-weight:var(--fw-semibold);line-height:var(--lh-tight);letter-spacing:-.01em;color:var(--text);max-width:60ch}.record-ref{align-items:center;gap:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-body-sm);font-weight:var(--fw-medium);letter-spacing:.02em;color:var(--text-secondary);display:inline-flex}.record-meta{align-items:center;gap:var(--sp-3);margin-top:var(--sp-3);flex-wrap:wrap;display:flex}.meta-item{align-items:center;gap:var(--sp-2);font-size:var(--fs-body-sm);color:var(--text-secondary);display:flex}.meta-item strong{font-weight:var(--fw-medium);color:var(--text)}.meta-item .money{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:var(--fw-medium);color:var(--text)}.section{gap:var(--sp-3);flex-direction:column;display:flex}.section-title{align-items:center;gap:var(--sp-2);font-size:var(--fs-heading-sm);font-weight:var(--fw-semibold);color:var(--text);padding-bottom:var(--sp-2);border-bottom:1px solid var(--border);display:flex}.chart{width:100%}.chart svg{width:100%;height:auto;overflow:visible}.chart-legend{align-items:center;gap:var(--sp-4);font-size:var(--fs-caption);color:var(--text-secondary);flex-wrap:wrap;display:flex}.legend-item{align-items:center;gap:var(--sp-2);display:inline-flex}.legend-swatch{border-radius:2px;flex-shrink:0;width:10px;height:10px}.axis-label{font-family:var(--font-mono);font-variant-numeric:tabular-nums;fill:var(--viz-axis);font-size:10px}.grid-line{stroke:var(--viz-grid);stroke-width:1px}.chart-tooltip{z-index:10;padding:var(--sp-2);background:var(--surface-raised);border:1px solid var(--border-strong);border-radius:var(--radius-sm);min-width:150px;box-shadow:var(--shadow-layer);font-size:var(--fs-caption);pointer-events:none;position:absolute}.tt-row{justify-content:space-between;align-items:center;gap:var(--sp-4);padding:1px 0;display:flex}.tt-val{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:var(--fw-medium);color:var(--text)}.bar-list{gap:var(--sp-3);flex-direction:column;display:flex}.bar-item{gap:var(--sp-1) var(--sp-3);grid-template-columns:1fr auto;align-items:center;display:grid}.bar-item .bar-label{font-size:var(--fs-body-sm);color:var(--text)}.bar-item .bar-value{font-family:var(--font-mono);font-size:var(--fs-body-sm);font-variant-numeric:tabular-nums;font-weight:var(--fw-medium);color:var(--text)}.bar-item .bar-track{background:var(--surface-sunken);border-radius:2px;grid-column:1/-1;height:8px;overflow:hidden}.bar-item .bar-fill{height:100%;transition:width var(--dur-narrative) var(--ease);border-radius:2px}.score-cell{align-items:center;gap:var(--sp-2);justify-content:flex-end;width:100%;display:inline-flex}.score-bar{background:var(--surface-sunken);border-radius:2px;flex-shrink:0;width:44px;height:4px;overflow:hidden}.score-bar i{background:var(--score-color,var(--primary));border-radius:2px;height:100%;display:block}.rank{border-radius:var(--radius-pill);background:var(--surface-sunken);border:1px solid var(--border);width:22px;height:22px;font-family:var(--font-mono);font-size:var(--fs-caption);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums;color:var(--text-secondary);place-items:center;display:grid}.rank.first{background:var(--accent-subtle);border-color:var(--accent);color:var(--accent)}.doc-preview{padding:var(--sp-8);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-display);color:var(--text);line-height:var(--lh-relaxed)}.doc-preview h1{text-align:center;letter-spacing:.02em;text-transform:uppercase;font-size:20px;font-weight:600}.doc-preview h2{margin-top:var(--sp-5);padding-bottom:var(--sp-1);border-bottom:1px solid var(--border);font-size:15px;font-weight:600}.doc-preview p{margin-top:var(--sp-2);text-align:justify;font-size:13px}.doc-preview .doc-org{text-align:center;letter-spacing:.1em;text-transform:uppercase;color:var(--text-secondary);font-size:11px}.doc-preview .doc-rule{width:56px;height:2px;margin:var(--sp-3) auto;background:var(--accent)}.doc-field{background:var(--accent-subtle);border-bottom:1px solid var(--accent-border);font-family:var(--font-mono);padding:0 2px;font-size:12px}.mobile-nav{z-index:40;background:var(--surface);border-top:1px solid var(--border);height:60px;padding-bottom:env(safe-area-inset-bottom);display:none;position:fixed;inset:auto 0 0}.mobile-nav-item{color:var(--text-muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:10px;display:flex}.mobile-nav-item.active{color:var(--primary-text);text-decoration:none}.action-bar{z-index:10;gap:var(--sp-2);padding:var(--sp-3);background:var(--surface);border-top:1px solid var(--border);margin:0 calc(-1 * var(--sp-4));display:none;position:sticky;bottom:0}@media (width<=1279px){.app{grid-template-columns:var(--sidebar-w-collapsed) 1fr}.app .brand-text,.app .nav-label,.app .nav-section,.app .nav-item .count{display:none}.app .nav-item,.app .brand{justify-content:center;padding:0}.grid-2,.grid-3{grid-template-columns:1fr}.doc-layout{grid-template-columns:minmax(220px,260px) 1fr!important}.app-main{padding:var(--sp-4)}.btn,.nav-item{min-height:40px}}@media (width<=767px){.app{grid-template-columns:1fr}.app-sidebar{display:none}.mobile-nav,.action-bar{display:flex}.app-main{padding:var(--sp-4) var(--sp-4) calc(60px + var(--sp-6))}.app-header{padding:0 var(--sp-3)}.header-search{max-width:none}.grid-half,.grid-kpi,.doc-layout{grid-template-columns:1fr!important}.page-head{flex-direction:column;align-items:stretch}.record-title{font-size:var(--fs-display-sm)}.modal-panel{max-width:none}.drawer{width:100vw}.desktop-only{display:none!important}}@media (width>=768px){.mobile-only{display:none!important}}.record-card{gap:var(--sp-2);padding:var(--sp-3);padding-left:var(--sp-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);flex-direction:column;display:flex;position:relative;overflow:hidden}.record-card:before{content:"";width:var(--spine-width);background:var(--phase-color,var(--border-strong));position:absolute;inset:0 auto 0 0}.connexion-ecran{min-height:100dvh;padding:var(--sp-5);background:var(--bg);justify-content:center;align-items:center;display:flex}.connexion-carte{width:100%;max-width:24rem;padding:var(--sp-6);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);border-top:3px solid var(--accent)}.connexion-marque{margin-bottom:var(--sp-4);flex-direction:column;gap:2px;display:flex}.connexion-sigle{font-family:var(--font-mono);letter-spacing:.08em;color:var(--text);font-size:1.25rem;font-weight:600}.connexion-carte .field+.field{margin-top:var(--sp-3)}.connexion-carte .btn{margin-top:var(--sp-4)}.identite{align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);border-top:1px solid var(--border);display:flex}.identite-nom{flex-direction:column;min-width:0;line-height:1.25;display:flex}.identite-nom strong{text-overflow:ellipsis;white-space:nowrap;font-size:.8125rem;overflow:hidden}
