@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--bg:#f5f7f5;--surface:#fff;--surface-2:#edf1ee;--ink:#101a17;--ink-dim:#4c5b55;--ink-faint:#7c8b85;--border:#d7e0da;--accent:#00625e;--accent-ink:#fff;--accent-soft:#dceeec;--good:#197a34;--good-soft:#e1f3e6;--warn:#8a5a00;--warn-soft:#fbebcc;--critical:#b3261e;--critical-soft:#fbe3e1;--shadow:0 1px 2px #101a170f, 0 6px 20px -8px #101a172e}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0b1613;--surface:#10201c;--surface-2:#152722;--ink:#e7f0eb;--ink-dim:#a2b6ae;--ink-faint:#71857c;--border:#22352e;--accent:#3fd9ce;--accent-ink:#04211d;--accent-soft:#143430;--good:#4ed07a;--good-soft:#12301d;--warn:#f0c24b;--warn-soft:#362a0c;--critical:#ff8079;--critical-soft:#3a1613;--shadow:0 1px 2px #0000004d, 0 10px 30px -12px #0009}}:root[data-theme=dark]{--bg:#0b1613;--surface:#10201c;--surface-2:#152722;--ink:#e7f0eb;--ink-dim:#a2b6ae;--ink-faint:#71857c;--border:#22352e;--accent:#3fd9ce;--accent-ink:#04211d;--accent-soft:#143430;--good:#4ed07a;--good-soft:#12301d;--warn:#f0c24b;--warn-soft:#362a0c;--critical:#ff8079;--critical-soft:#3a1613;--shadow:0 1px 2px #0000004d, 0 10px 30px -12px #0009}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font-family:IBM Plex Sans,system-ui,sans-serif;font-size:15px;line-height:1.5}h1,h2,h3,h4{text-wrap:balance;margin:0;font-family:IBM Plex Sans,sans-serif;font-weight:600}code,.mono,.num{font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,ui-monospace,monospace}p{color:var(--ink-dim);margin:0 0 .6em}button{font-family:inherit}a{color:var(--accent)}input,select{font-family:inherit}::placeholder{color:var(--ink-faint)}.auth-screen{background:radial-gradient(circle at 20% 15%, var(--accent-soft), transparent 45%), var(--bg);place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{background:var(--surface);border:1px solid var(--border);width:100%;max-width:400px;box-shadow:var(--shadow);border-radius:16px;padding:32px 30px}.auth-brand{align-items:center;gap:10px;margin-bottom:22px;display:flex}.auth-brand .mark{background:var(--accent);width:34px;height:34px;color:var(--accent-ink);border-radius:9px;place-items:center;font:700 14px IBM Plex Mono;display:grid}.auth-brand span.name{font-size:16px;font-weight:700}.auth-tabs{background:var(--surface-2);border-radius:10px;gap:4px;margin-bottom:20px;padding:4px;display:flex}.auth-tabs button{appearance:none;color:var(--ink-dim);cursor:pointer;background:0 0;border:none;border-radius:7px;flex:1;padding:9px;font:600 13px IBM Plex Sans}.auth-tabs button[aria-selected=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field label{text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);font:600 11.5px IBM Plex Mono}.field input,.field select{border:1px solid var(--border);background:var(--bg);color:var(--ink);border-radius:9px;outline:none;padding:10px 12px;font-size:14px}.field input:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.btn{appearance:none;cursor:pointer;border:none;border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:11px 16px;font:600 13.5px IBM Plex Sans;display:inline-flex}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-block{width:100%}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-ghost{background:var(--surface-2);color:var(--ink)}.btn-sm{border-radius:7px;padding:7px 11px;font-size:12.5px}.form-error{color:var(--critical);min-height:16px;margin-top:-4px;margin-bottom:8px;font-size:12.5px}.auth-foot{text-align:center;color:var(--ink-faint);margin-top:14px;font-size:12.5px}.shell{min-height:100vh;display:flex}aside.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex:none;gap:4px;width:220px;padding:18px 14px;display:flex}.sidebar .brand{align-items:center;gap:9px;padding:6px 8px 18px;display:flex}.sidebar .brand .mark{background:var(--accent);width:28px;height:28px;color:var(--accent-ink);border-radius:8px;place-items:center;font:700 12px IBM Plex Mono;display:grid}.sidebar .brand span{font-size:14.5px;font-weight:700}.navlink{color:var(--ink-dim);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:9px;align-items:center;gap:10px;width:100%;padding:9px 10px;font:500 13.5px IBM Plex Sans;display:flex}.navlink:hover{background:var(--surface-2)}.navlink.active{background:var(--accent-soft);color:var(--accent);font-weight:600}.navlink .badge{background:var(--critical);color:#fff;border-radius:999px;margin-left:auto;padding:1px 6px;font:700 10px IBM Plex Mono}.sidebar-foot{border-top:1px solid var(--border);margin-top:auto;padding-top:10px}.user-chip{align-items:center;gap:8px;padding:8px;display:flex}.user-chip .avatar{background:var(--surface-2);width:28px;height:28px;color:var(--ink-dim);border-radius:50%;flex:none;place-items:center;font:700 12px IBM Plex Mono;display:grid}.user-chip .who{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.user-chip .who .n{white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:600;display:block;overflow:hidden}.user-chip .who .e{color:var(--ink-faint);white-space:nowrap;text-overflow:ellipsis;font-size:11px;display:block;overflow:hidden}.main{flex-direction:column;flex:1;min-width:0;display:flex}main.content{width:100%;max-width:1180px;padding:26px 34px 60px}.content.full-bleed{flex-direction:column;flex:1;width:100%;min-width:0;max-width:none;padding:0;display:flex}.topbar{justify-content:flex-end;align-items:center;gap:8px;padding:12px 34px 0;display:flex}.icon-btn{border:1px solid var(--border);background:var(--surface);width:32px;height:32px;color:var(--ink-dim);cursor:pointer;border-radius:8px;flex:none;place-items:center;font:600 12px IBM Plex Mono;display:grid}.mobile-nav-toggle{display:none}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px;display:flex}.page-head h1{font-size:21px}.page-head p{margin:2px 0 0;font-size:13px}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:14px;padding:20px 22px}.grid{gap:16px;display:grid}.grid.cols-2{grid-template-columns:repeat(2,1fr)}.grid.cols-3{grid-template-columns:repeat(3,1fr)}.grid.cols-4{grid-template-columns:repeat(4,1fr)}@media (width<=640px){.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}}@media (width>=641px) and (width<=1000px){.grid.cols-3,.grid.cols-4{grid-template-columns:repeat(2,1fr)}}.kpi{flex-direction:column;gap:6px;display:flex}.kpi .label{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);font:600 11px IBM Plex Mono}.kpi .value{font:700 26px IBM Plex Mono}.kpi .value.good{color:var(--good)}.kpi .value.critical{color:var(--critical)}.kpi .delta{color:var(--ink-dim);font-size:12px}.section-title{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.section-title h3{font-size:15px}.table-scroll{border:1px solid var(--border);border-radius:12px;overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:560px;font-size:13.5px}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 14px}thead th{background:var(--surface-2);text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);font:600 11px IBM Plex Mono}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-2)}td.num,th.num{text-align:right;font-family:IBM Plex Mono}td.amount.income{color:var(--good);font-weight:600}td.amount.expense{color:var(--ink);font-weight:600}.chip{border-radius:999px;align-items:center;gap:5px;padding:3px 9px;font:600 11px IBM Plex Mono;display:inline-flex}.chip.good{background:var(--good-soft);color:var(--good)}.chip.warn{background:var(--warn-soft);color:var(--warn)}.chip.critical{background:var(--critical-soft);color:var(--critical)}.chip.neutral{background:var(--surface-2);color:var(--ink-dim)}.chip .dot{background:currentColor;border-radius:50%;width:6px;height:6px}.bar-row{grid-template-columns:130px 1fr 70px;align-items:center;gap:10px;padding:7px 0;display:grid}.bar-row.mini{grid-template-columns:1fr auto}.bar-track{background:var(--surface-2);border-radius:6px;height:14px;overflow:hidden}.bar-fill{background:var(--accent);border-radius:6px;height:100%}.bar-row .name{color:var(--ink-dim);white-space:nowrap;text-overflow:ellipsis;font-size:12.5px;overflow:hidden}.bar-row .pct{text-align:right;font:600 12px IBM Plex Mono}.progress-track{background:var(--surface-2);border-radius:5px;height:9px;margin:8px 0;overflow:hidden}.progress-fill{background:var(--accent);border-radius:5px;height:100%}.progress-fill.over{background:var(--critical)}.rec-card{border-bottom:1px solid var(--border);align-items:flex-start;gap:12px;padding:14px 0;display:flex}.rec-card:last-child{border-bottom:none}.rec-card .stripe{border-radius:3px;flex:none;align-self:stretch;width:4px}.rec-card .stripe.warn{background:var(--warn)}.rec-card .stripe.critical{background:var(--critical)}.rec-card .stripe.good{background:var(--good)}.rec-card .body{flex:1}.rec-card .msg{margin-bottom:4px;font-size:13.5px}.rec-card .suggestion{color:var(--ink-faint);font-size:12.5px}.rec-card .source{color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em;margin-top:4px;font-family:IBM Plex Mono;font-size:10.5px}.rec-actions{gap:6px;margin-top:8px;display:flex}.empty{text-align:center;color:var(--ink-faint);padding:32px 16px;font-size:13.5px}.skel{background:linear-gradient(90deg, var(--surface-2) 25%, var(--border) 37%, var(--surface-2) 63%);background-size:400% 100%;border-radius:6px;animation:1.6s ease-in-out infinite skel-shimmer;display:block}@keyframes skel-shimmer{0%{background-position:100%}to{background-position:0}}@media (prefers-reduced-motion:reduce){.skel{opacity:.55;animation:none}}.modal-backdrop{z-index:50;background:#090e0c73;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:var(--surface);width:100%;max-width:420px;box-shadow:var(--shadow);border:1px solid var(--border);border-radius:16px;max-height:90vh;padding:24px;overflow-y:auto}.modal h3{margin-bottom:16px}.modal-foot{justify-content:flex-end;gap:8px;margin-top:6px;display:flex}.toast-wrap{z-index:100;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{background:var(--ink);color:var(--bg);box-shadow:var(--shadow);border-radius:10px;max-width:320px;padding:11px 16px;font-size:13px;animation:.2s toastIn}.toast.error{background:var(--critical);color:#fff}.toast.success{background:var(--good);color:#fff}@keyframes toastIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.toast{animation:none}}.notif-item{border-bottom:1px solid var(--border);align-items:flex-start;gap:10px;padding:12px 0;display:flex}.notif-item:last-child{border-bottom:none}.notif-item .dot-status{border-radius:50%;flex:none;width:8px;height:8px;margin-top:6px}.notif-item.unread .dot-status{background:var(--accent)}.notif-item.read .dot-status{background:var(--border)}.notif-item .txt{flex:1;font-size:13.5px}.notif-item .when{color:var(--ink-faint);margin-top:2px;font-size:11.5px}@media (width<=1000px){.shell{position:relative}aside.sidebar{z-index:60;box-shadow:var(--shadow);transition:transform .22s;position:fixed;inset:0 25% 0 0;overflow-y:auto;transform:translate(-100%)}aside.sidebar.open{transform:translate(0)}.sidebar-scrim{z-index:55;cursor:default;background:#090e0c66;border:none;padding:0;position:fixed;inset:0}.mobile-nav-toggle{border:1px solid var(--border);background:var(--surface);width:34px;height:34px;color:var(--ink-dim);cursor:pointer;border-radius:8px;place-items:center;margin-right:auto;font-size:16px;display:grid}.topbar{justify-content:space-between}main.content{padding:20px}}
