:root{--paper:#f2f1ec;--surface:#fff;--ink:#21252c;--ink-2:#545d6a;--muted:#8a919e;--line:#dfddd4;--line-soft:#eceae2;--spruce:#23524a;--spruce-deep:#1c2b28;--spruce-soft:#e4ebe7;--gold:#e8c97d;--danger:#b3402a;--danger-soft:#f7e8e3;--warn:#a97614;--warn-soft:#f6eedb;--ok:#2e7d4f;--ok-soft:#e3efe7;--radius:6px;--sans:"IBM Plex Sans", system-ui, sans-serif;--serif:"IBM Plex Serif", Georgia, serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--shadow:0 1px 2px #21252c0d, 0 4px 14px #21252c0a}[data-theme=dark]{--paper:#191c1b;--surface:#22262a;--ink:#e6e4dd;--ink-2:#a8b0ba;--muted:#7b8490;--line:#3a4046;--line-soft:#2e3338;--spruce:#4e9d8d;--spruce-deep:#131e1b;--spruce-soft:#223734;--gold:#e8c97d;--danger:#e07a5f;--danger-soft:#3a2622;--warn:#d9a441;--warn-soft:#382f1c;--ok:#63b284;--ok-soft:#1f3328;--shadow:0 1px 2px #0000004d, 0 4px 14px #00000040}[data-theme=dark] .tbl tr:hover td{background:#262b30}[data-density=compact] .tbl th{padding:5px 8px}[data-density=compact] .tbl td{padding:4px 8px}[data-density=compact] .card{padding:12px 14px}[data-density=compact] .kpi .kpi-value{font-size:22px}[data-density=compact] .grid{gap:10px}.skeleton{background:var(--line-soft);border-radius:4px;min-height:14px;position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(90deg,#0000,#ffffff59,#0000);animation:1.4s infinite shimmer;position:absolute;inset:0;transform:translate(-100%)}[data-theme=dark] .skeleton:after{background:linear-gradient(90deg,#0000,#ffffff14,#0000)}@keyframes shimmer{to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.skeleton:after{animation:none}}.kpi .kpi-spark{margin-top:6px;display:block}.delta-chip{font-family:var(--mono);border-radius:99px;margin-left:6px;padding:0 6px;font-size:11px;display:inline-block}.delta-chip.up{background:var(--warn-soft);color:var(--warn)}.delta-chip.down{background:var(--ok-soft);color:var(--ok)}.view-chips{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.view-chips .chip{cursor:pointer}.view-chips .chip:hover{background:var(--spruce-soft);color:var(--spruce)}.assistant-panel{background:var(--surface);border:1px solid var(--line);z-index:50;border-radius:10px;flex-direction:column;width:min(420px,100vw - 36px);height:min(560px,100vh - 60px);display:flex;position:fixed;bottom:18px;right:18px;box-shadow:0 8px 40px #0000002e}.assistant-head{border-bottom:1px solid var(--line-soft);justify-content:space-between;align-items:center;padding:10px 14px;font-weight:600;display:flex}.assistant-body{flex:1;padding:12px 14px;overflow-y:auto}.assistant-msg{margin-bottom:10px;display:flex}.assistant-msg.user{justify-content:flex-end}.assistant-msg .bubble{white-space:pre-wrap;border-radius:10px;max-width:88%;padding:8px 12px;font-size:13px;line-height:1.5}.assistant-msg.user .bubble{background:var(--spruce);color:#fff}.assistant-msg.assistant .bubble{background:var(--line-soft)}.tools-used{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.assistant-input{border-top:1px solid var(--line-soft);gap:8px;padding:10px 12px;display:flex}.assistant-input input{flex:1}.side-toggles{gap:6px;margin-top:8px;display:flex}.side-toggles button{color:#7e938b;border-radius:var(--radius);cursor:pointer;background:0 0;border:1px solid #2c3f3a;padding:3px 8px;font-size:11px}.side-toggles button:hover{color:#fff;border-color:#4a5f58}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.5}.app{min-height:100vh;display:flex}.sidebar{background:var(--spruce-deep);color:#cfd8d3;flex-direction:column;flex:0 0 216px;width:216px;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.wordmark{font-family:var(--serif);color:#fff;letter-spacing:.01em;padding:2px 10px 0;font-size:26px;font-style:italic;font-weight:600}.wordmark .antler{color:var(--gold)}.wordmark-sub{letter-spacing:.08em;text-transform:uppercase;color:#7e938b;border-bottom:1px solid #2c3f3a;margin-bottom:14px;padding:0 10px 18px;font-size:11px}.nav{flex-direction:column;gap:2px;display:flex}.nav a{border-radius:var(--radius);color:#b9c6c0;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;font-weight:500;text-decoration:none;display:flex}.nav a:hover{color:#fff;background:#24352f}.nav a.active{background:var(--spruce);color:#fff}.nav .alert-dot{background:var(--danger);color:#fff;font-family:var(--mono);border-radius:99px;padding:0 7px;font-size:11px;line-height:18px}.sidebar-foot{color:#7e938b;border-top:1px solid #2c3f3a;margin-top:auto;padding:12px 10px 0;font-size:12px}.sidebar-foot .who{color:#b9c6c0;text-overflow:ellipsis;overflow:hidden}.main{flex:1;min-width:0;max-width:1340px;padding:26px 32px 60px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:20px;display:flex}.page-title{font-family:var(--serif);margin:0;font-size:26px;font-weight:600}.page-sub{color:var(--ink-2);margin:2px 0 0}.head-controls{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.seg{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);display:inline-flex;overflow:hidden}.seg button{cursor:pointer;font-family:var(--mono);color:var(--ink-2);background:0 0;border:0;padding:6px 12px;font-size:12.5px}.seg button.on{background:var(--spruce);color:#fff}select,input[type=text],input[type=number],input[type=date],input[type=password]{font-family:var(--sans);color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);outline:none;padding:7px 10px;font-size:13.5px}select:focus,input:focus{border-color:var(--spruce);box-shadow:0 0 0 2px var(--spruce-soft)}label.field{color:var(--ink-2);flex-direction:column;gap:4px;font-size:12px;font-weight:500;display:flex}.btn{font-family:var(--sans);border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;align-items:center;gap:6px;padding:7px 14px;font-size:13.5px;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--spruce);border-color:var(--spruce);color:#fff}.btn.primary:hover{background:#1d453e}.btn.danger{color:var(--danger);border-color:#e5c4ba}.btn.small{padding:4px 10px;font-size:12.5px}.btn:disabled{opacity:.5;cursor:default}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px}.card-title{letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2);margin:0 0 10px;font-size:12px;font-weight:600}.grid{gap:16px;display:grid}.kpis{grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.two-col{grid-template-columns:3fr 2fr}.charts-row{grid-template-columns:1fr 1fr}@media (width<=1100px){.two-col,.charts-row{grid-template-columns:1fr}}.kpi .kpi-label{letter-spacing:.07em;text-transform:uppercase;color:var(--ink-2);font-size:12px;font-weight:600}.kpi .kpi-value{font-family:var(--mono);font-variant-numeric:tabular-nums;margin-top:4px;font-size:26px;font-weight:600}.kpi .kpi-note{color:var(--muted);margin-top:2px;font-size:12px}.kpi .kpi-note strong{color:var(--ink-2)}.fy-spine{align-items:stretch;gap:3px;margin:4px 0 22px;display:flex}.fy-cell{flex:1;position:relative}.fy-cell .bar{background:var(--line-soft);border:1px solid var(--line-soft);border-radius:3px;height:34px;position:relative;overflow:hidden}.fy-cell .bar .fill{background:var(--spruce);opacity:var(--intensity,0);position:absolute;inset:0}.fy-cell.current .bar{border-color:var(--spruce)}.fy-cell .m{font-family:var(--mono);color:var(--muted);text-align:center;margin-top:3px;font-size:10.5px}.fy-cell.current .m{color:var(--spruce);font-weight:600}.fy-cell .amt{height:34px;font-family:var(--mono);color:#0000;justify-content:center;align-items:center;font-size:10.5px;display:flex;position:absolute;inset:0}.fy-cell:hover .amt{color:#fff;text-shadow:0 1px 2px #0006}.fy-cell:hover .bar .fill{opacity:max(var(--intensity), .35)}.tbl{border-collapse:collapse;width:100%;font-size:13px}.tbl th{text-align:left;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);border-bottom:1px solid var(--line);white-space:nowrap;padding:8px 10px;font-size:11px;font-weight:600}.tbl td{border-bottom:1px solid var(--line-soft);vertical-align:middle;padding:7px 10px}.tbl tr:hover td{background:#fbfaf6}.tbl .num{font-family:var(--mono);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.tbl th.num{text-align:right}.alert-tr{animation:.35s both alert-in}.alert-tr td:first-child{border-left:3px solid #0000}.alert-tr.high td:first-child{border-left-color:var(--danger)}.alert-tr.warn td:first-child{border-left-color:var(--warn)}.alert-tr.high td{background:color-mix(in srgb, var(--danger-soft) 35%, transparent)}@keyframes alert-in{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.alert-tr{animation:none}}.ratio-bar{background:var(--line-soft);vertical-align:middle;border-radius:4px;width:90px;height:8px;display:inline-block;position:relative;overflow:hidden}.ratio-bar>i{background:var(--warn);border-radius:4px;position:absolute;top:0;bottom:0;left:0}.ratio-bar>i.high{background:var(--danger)}.dot{vertical-align:1px;border-radius:2px;width:9px;height:9px;margin-right:7px;display:inline-block}.chip{background:var(--line-soft);color:var(--ink-2);border-radius:99px;padding:1px 8px;font-size:11.5px;font-weight:500;display:inline-block}.chip.ok{background:var(--ok-soft);color:var(--ok)}.chip.warn{background:var(--warn-soft);color:var(--warn)}.chip.err{background:var(--danger-soft);color:var(--danger)}.budget-row{border-bottom:1px solid var(--line-soft);flex-direction:column;gap:4px;padding:10px 0;display:flex}.budget-row:last-child{border-bottom:0}.budget-row .top{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.budget-row .name{font-weight:600}.budget-row .meta{color:var(--muted);font-size:12px}.budget-row .nums{font-family:var(--mono);color:var(--ink-2);font-size:12.5px}.meter{background:var(--line-soft);border-radius:99px;height:8px;overflow:hidden}.meter .fill{background:var(--spruce);border-radius:99px;height:100%}.meter .fill.warn{background:var(--warn)}.meter .fill.over{background:var(--danger)}.form-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:end;gap:12px;display:grid}.stack{flex-direction:column;gap:12px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.spread{justify-content:space-between}.help{color:var(--muted);font-size:12px}.error-text{color:var(--danger);font-size:13px}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.section-gap{margin-top:22px}.empty{text-align:center;color:var(--ink-2);padding:36px 20px}.empty .big{font-family:var(--serif);margin-bottom:6px;font-size:18px;font-style:italic}.conn-grid{grid-template-columns:repeat(auto-fill,minmax(330px,1fr))}.conn-card .row-top{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:8px;display:flex}.conn-card h3{margin:0;font-size:15px}.conn-card .provider{color:var(--ink-2);font-size:12px}a{color:var(--spruce)}
