@font-face{font-family:Satoshi;src:url(/fonts/Satoshi-Variable.ttf) format("truetype");font-weight:300 900;font-style:normal;font-display:swap}:root{--bg:#0f172a;--bg-secondary:#1e293b;--bg-elevated:#273548;--text:#e2e8f0;--text-muted:#94a3b8;--text-dim:#64748b;--accent-blue:#3b82f6;--accent-green:#10b981;--accent-amber:#f59e0b;--accent-red:#ef4444;--border:#334155;--font-body:"Satoshi",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;--font-mono:"SF Mono","Fira Code","Fira Mono",monospace;--radius-sm:4px;--radius-md:6px;--radius-lg:8px}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-body);background:var(--bg);color:var(--text);line-height:1.6}a{color:var(--accent-blue);text-decoration:none}a:hover{text-decoration:underline}main{max-width:1200px;margin:0 auto;padding:1.5rem}h1{font-size:1.5rem}h1,h2{font-weight:600}h2{font-size:1.15rem;color:var(--text)}h3{font-size:1rem;font-weight:600;color:var(--accent-blue)}.panel{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.25rem}button{font-family:inherit;cursor:pointer}.btn{padding:.5rem 1rem;border-radius:var(--radius-md);font-size:.85rem;font-weight:500;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text);transition:border-color .15s}.btn:hover{border-color:var(--accent-blue)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent-blue);color:#fff;border-color:var(--accent-blue)}.btn-danger{background:var(--accent-red);color:#fff;border-color:var(--accent-red)}.input{width:100%;padding:.5rem .75rem;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-size:.9rem;font-family:inherit;transition:border-color .15s}.input:focus{outline:none;border-color:var(--accent-blue)}.label{display:block;font-size:.85rem;color:var(--text-muted);margin-bottom:.25rem}.table{width:100%;border-collapse:collapse;font-size:.875rem}.table th{text-align:left;color:var(--text-muted);font-weight:500}.table td,.table th{padding:.5rem .75rem;border-bottom:1px solid var(--border)}.table tr:hover{background:var(--bg-elevated)}.tag{font-size:.7rem;padding:.1rem .35rem;border-radius:3px;font-weight:600;display:inline-block}.tag-success{background:#064e3b;color:#6ee7b7}.tag-warning{background:#78350f;color:#fcd34d}.tag-error{background:#7f1d1d;color:#fca5a5}.tag-info{background:#1e3a5f;color:#93c5fd}.grid{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:1fr}.empty-state{text-align:center;padding:3rem 1rem;color:var(--text-muted)}.page-header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.flex-spacer{flex:1 1}.form-stack{flex-direction:column}.form-grid,.form-stack{display:flex;gap:.75rem}.form-grid{flex-wrap:wrap}.form-field{flex:1 1;min-width:120px}.list-stack{display:flex;flex-direction:column;gap:.75rem}.row-between{display:flex;justify-content:space-between}.row-center{display:flex;align-items:center;gap:.5rem}.text-muted{color:var(--text-muted)}.text-dim{color:var(--text-dim)}.text-sm{font-size:.85rem}.text-xs{font-size:.75rem}.hero{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center;gap:.75rem}.hero h1{font-size:2.5rem;font-weight:700;letter-spacing:-.02em}.toast-container{position:fixed;top:1rem;right:1rem;z-index:1000;display:flex;flex-direction:column;gap:.5rem}.toast{padding:.75rem 1rem;border-radius:var(--radius-md);font-size:.85rem;animation:toast-in .25s ease-out;border:1px solid var(--border);background:var(--bg-elevated)}.toast-success{border-color:var(--accent-green)}.toast-error{border-color:var(--accent-red)}@keyframes toast-in{0%{opacity:0;transform:translateX(1rem)}to{opacity:1;transform:translateX(0)}}.app-nav{display:flex;align-items:center;gap:1.25rem;padding:.75rem 1.5rem;border-bottom:1px solid var(--border);background:var(--bg-secondary);font-size:.9rem}.app-nav a{color:var(--text-muted)}.app-nav a:hover{color:var(--text)}.basis-note{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem 1rem;margin-bottom:1rem;border:1px solid var(--border);border-left:3px solid var(--accent-blue);border-radius:var(--radius-md);background:var(--bg-secondary)}.basis-list{list-style:none;display:flex;flex-direction:column;gap:.15rem}.provenance-tag{margin-left:.4rem;vertical-align:middle}.stat-row{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:flex-end}.stat{display:flex;flex-direction:column;gap:.15rem}.stat-label{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.stat-value{font-size:1.15rem;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat-headline .stat-value{font-size:1.5rem}.money-at-risk{color:var(--accent-amber)}.reconciliation-gap{margin-top:.75rem;color:var(--accent-red)}.portfolio-totals{margin-bottom:1.25rem}.supplier-group{background:var(--bg-secondary);border:1px solid var(--border);border-left:3px solid var(--accent-blue);border-radius:var(--radius-lg);padding:1rem 1.25rem .25rem}.supplier-group-header{display:flex;align-items:flex-end;gap:1rem;flex-wrap:wrap;padding-bottom:.75rem}.supplier-group-figure{display:flex;flex-direction:column;align-items:flex-end;gap:.15rem}.table-total td{font-weight:600;border-top:1px solid var(--border);border-bottom:none;background:var(--bg-elevated)}.headline{display:flex;flex-direction:column;gap:.35rem}.headline-figure{font-size:2.5rem;font-weight:700;letter-spacing:-.02em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.headline-saving{color:var(--accent-green)}.headline-cost{color:var(--accent-amber)}.compare-grid{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:1fr;margin:1rem 0}.compare-card{display:flex;flex-direction:column;gap:.75rem}.exposure-warning{color:var(--accent-amber)}.breach{color:var(--accent-red);font-size:.8rem}.override-breached td{background:rgba(239,68,68,.08)}.override-tag{margin-left:.4rem}.input-narrow{width:6rem}.input-select{width:auto;min-width:9rem}@media (min-width:640px){.compare-grid,.grid{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.grid{grid-template-columns:repeat(3,1fr)}}