:root,html[data-theme=dark]{--bg: #12160f;--bg-elev: #1a2118;--surface: #fffcf7;--surface-2: #f6f1e8;--text: #1a1f16;--text-inv: #f4efe6;--muted: #6b6459;--muted-inv: #c9c2b4;--line: #e2d8c8;--line-inv: #2a3326;--accent: #3d7a64;--accent-dark: #2b5a4a;--danger: #9b3d3d;--danger-bg: #f8eceb;--income: #2f7a5d;--income-soft: #8fd4a8;--expense: #9b3d3d;--expense-soft: #f0b4a8;--shadow: 0 22px 60px rgba(0, 0, 0, .28);--radius: 18px;--title: Fraunces, Georgia, serif;--ui: Figtree, system-ui, sans-serif;font-family:var(--ui);color:var(--text);background:var(--bg)}html[data-theme=light]{--bg: #f4efe6;--bg-elev: #ffffff;--surface: #ffffff;--surface-2: #f7f2ea;--text: #1a1f16;--text-inv: #1a1f16;--muted: #6b6459;--muted-inv: #6b6459;--line: #e2d8c8;--line-inv: #e2d8c8;--shadow: 0 16px 40px rgba(40, 32, 20, .08)}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:radial-gradient(900px 420px at 8% -10%,color-mix(in srgb,var(--accent) 22%,transparent),transparent 55%),radial-gradient(700px 380px at 100% 0%,color-mix(in srgb,#c45c26 16%,transparent),transparent 50%),var(--bg);color:var(--text-inv)}html[data-theme=light] body{background:radial-gradient(900px 420px at 8% -10%,#e8efe6,transparent 55%),var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}.shell{width:min(1120px,calc(100% - 32px));margin:0 auto;padding:28px 0 80px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}.brand{display:flex;align-items:center;gap:12px}.mark{width:46px;height:46px;border-radius:14px;background:linear-gradient(160deg,#5ea888,#2f5d50);color:#f4efe6;display:grid;place-items:center;font-family:var(--title);font-size:1.45rem}.brand-name{margin:0;font-weight:700;letter-spacing:-.03em;font-size:1.1rem;color:var(--text-inv)}.brand-sub{margin:0;color:var(--muted-inv);font-size:.9rem}.tabs{display:flex;gap:6px;background:var(--bg-elev);padding:4px;border-radius:14px}.tab{border:0;background:transparent;color:var(--muted-inv);padding:8px 12px;border-radius:10px;font-weight:600}.tab.on{background:var(--surface);color:var(--text)}.top-actions{display:flex;gap:8px;align-items:center}.period-bar{display:flex;align-items:center;gap:14px;margin-bottom:16px;flex-wrap:wrap}.period-kicker{margin:0;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-inv)}.period-title{margin:2px 0 0;font-family:var(--title);font-size:1.6rem;color:var(--text-inv)}.segment{display:flex;gap:4px;background:var(--bg-elev);padding:4px;border-radius:12px;margin-left:auto}.segment button{border:0;background:transparent;color:var(--muted-inv);padding:8px 12px;border-radius:9px;font-weight:600}.segment button.on{background:var(--surface);color:var(--text)}.banner{background:var(--surface);color:var(--text);border-radius:20px;padding:18px 20px;margin-bottom:16px;box-shadow:var(--shadow)}.banner.over{outline:2px solid color-mix(in srgb,var(--danger) 45%,white)}.banner-kicker{margin:0;font-size:.75rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.banner-title{margin:4px 0 2px;font-family:var(--title);font-size:1.45rem}.banner-meta,.banner-pace{margin:0;color:var(--muted);font-size:.9rem}.banner-track{height:8px;border-radius:99px;background:var(--line);margin:12px 0 8px;overflow:hidden}.banner-track span{display:block;height:100%;background:var(--accent)}.banner.over .banner-track span{background:var(--danger)}.empty-banner{display:flex;justify-content:space-between;align-items:center;gap:16px}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.kpi{background:var(--bg-elev);border:1px solid var(--line-inv);border-radius:20px;padding:18px 18px 16px;min-height:132px}.kpi.featured{background:var(--surface);color:var(--text);border-color:transparent;box-shadow:var(--shadow)}.kpi-label,.kpi-eyebrow{margin:0;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-inv)}.kpi.featured .kpi-label,.kpi.featured .kpi-meta{color:var(--muted)}.kpi-value{margin:10px 0 6px;font-family:var(--title);font-size:clamp(1.45rem,2.4vw,2.05rem);letter-spacing:-.04em;line-height:1.05;color:var(--text-inv)}.kpi.featured .kpi-value{color:var(--text)}.kpi-meta{margin:0;font-size:.86rem;color:var(--muted-inv)}.kpi-meta.up{color:var(--income-soft)}.kpi-meta.down{color:var(--expense-soft)}html[data-theme=light] .kpi-meta.up{color:var(--income)}html[data-theme=light] .kpi-meta.down{color:var(--expense)}.kpi-value.income{color:var(--income-soft)}.kpi-value.expense{color:var(--expense-soft)}html[data-theme=light] .kpi-value.income{color:var(--income)}html[data-theme=light] .kpi-value.expense{color:var(--expense)}.charts{display:grid;grid-template-columns:1.1fr .9fr;gap:16px;margin-bottom:16px}.panel{background:var(--surface);color:var(--text);border-radius:24px;padding:20px;box-shadow:var(--shadow)}.panel-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:16px}.panel-head h2{margin:0;font-family:var(--title);font-size:1.25rem}.panel-head p,.panel-empty{margin:0;color:var(--muted);font-size:.9rem}.panel-empty{padding:18px 0 8px}.list-total{text-align:right}.list-total-value{margin:4px 0 0;font-family:var(--title);font-size:1.6rem}.shortcuts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.chip-btn{border:1px solid var(--line);background:var(--surface-2);color:var(--text);border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:600;text-decoration:none}.bars{list-style:none;margin:0;padding:0;display:grid;gap:10px}.bar{width:100%;text-align:left;border:1px solid transparent;background:var(--surface-2);border-radius:14px;padding:10px 12px 12px;color:inherit}.bar:hover,.bar.active{border-color:color-mix(in srgb,var(--accent) 40%,white);background:var(--surface)}.bar-top,.bar-name{display:flex;align-items:center;justify-content:space-between;gap:8px}.bar-name{font-weight:600;font-size:.92rem}.bar-amount{font-family:var(--title);font-size:.98rem}.bar-track{display:block;height:7px;border-radius:99px;background:var(--line);margin:8px 0 6px;overflow:hidden}.bar-fill{display:block;height:100%;border-radius:99px;background:var(--accent)}.bar-fill.over{background:var(--danger)}.bar-meta{font-size:.78rem;color:var(--muted);display:flex;justify-content:space-between;gap:8px}.toolbar{display:grid;grid-template-columns:1.4fr 1fr .8fr .9fr .9fr;gap:10px;margin-bottom:16px}.search input,.select select,.toolbar input,.toolbar select,.dialog input,.dialog select,.dialog textarea,.inline-form input,.inline-form select,.cat-admin input{width:100%;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:12px 14px;color:var(--text);outline:none}.dialog input:focus,.dialog select:focus,.dialog textarea:focus,.toolbar input:focus,.toolbar select:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}.groups{display:grid;gap:18px}.day-label{margin:0 0 8px;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.row{display:grid;grid-template-columns:auto 1fr auto auto;gap:12px;align-items:center;background:var(--surface-2);border:1px solid transparent;border-radius:var(--radius);padding:12px 14px}.row:hover{background:var(--surface);border-color:var(--line)}.row-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:var(--chip, var(--accent));background:color-mix(in srgb,var(--chip, var(--accent)) 16%,white)}.row-main{min-width:0}.chip{display:inline-flex;align-items:center;gap:5px;font-size:.75rem;font-weight:600;color:var(--chip, var(--accent));background:color-mix(in srgb,var(--chip, var(--accent)) 12%,white);border-radius:999px;padding:3px 8px}.row-note{margin:0 0 6px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.muted,.optional{color:var(--muted);font-weight:400}.row-amount{margin:0;font-family:var(--title);font-size:1.2rem;letter-spacing:-.03em;white-space:nowrap}.row-amount.income{color:var(--income)}.row-amount.expense{color:var(--expense)}.row-amount.transfer{color:var(--muted)}.row-actions{display:flex;gap:6px;flex-wrap:wrap}.btn{border:0;border-radius:12px;padding:10px 14px;font-weight:600;background:transparent;color:var(--text)}.btn.primary{background:var(--accent);color:#f4efe6}.btn.primary:hover:not(:disabled){background:var(--accent-dark)}.btn.ghost{border:1px solid var(--line);background:var(--surface)}.btn.ghost:hover{background:var(--surface-2)}.btn.danger{color:var(--danger);border:1px solid transparent}.btn.danger:hover,.btn.danger.solid{background:var(--danger-bg);color:var(--danger)}.btn.wide{width:100%;margin-top:8px}.btn:disabled{opacity:.6;cursor:wait}.empty{border:1px dashed var(--line);border-radius:18px;padding:36px 18px;text-align:center}.empty h2{margin:12px 0 8px;font-family:var(--title)}.empty p{margin:0 auto 18px;max-width:380px;color:var(--muted)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0e088c;display:grid;place-items:center;padding:20px;z-index:20}.dialog{width:min(520px,100%);background:var(--surface);color:var(--text);border-radius:24px;padding:24px;box-shadow:var(--shadow)}.dialog.compact{width:min(440px,100%)}.dialog-head h2{margin:0 0 6px;font-family:var(--title)}.dialog-head p{margin:0 0 18px;color:var(--muted)}.dialog form,.dialog label{display:grid;gap:6px}.dialog label{font-weight:600;font-size:.92rem;margin-bottom:12px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field-error{color:var(--danger);font-size:.82rem;font-weight:500}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.toasts{position:fixed;right:20px;bottom:20px;display:grid;gap:8px;z-index:30}.toast{margin:0;background:var(--bg-elev);color:var(--text-inv);padding:12px 16px;border-radius:12px;box-shadow:var(--shadow);display:flex;align-items:center;gap:12px}.toast button{border:0;background:transparent;color:var(--income-soft);font-weight:700}.toast.err{background:var(--danger);color:#fff}.month-chart{display:flex;align-items:flex-end;gap:12px;min-height:160px;flex-wrap:wrap}.month-col{display:grid;justify-items:center;gap:6px;color:var(--muted);font-size:.75rem}.month-bars{display:flex;align-items:flex-end;gap:4px;height:120px}.col{width:12px;border-radius:6px 6px 0 0;min-height:4px}.col.income{background:var(--income)}.col.expense{background:#c45c26}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin:0 6px 0 12px}.dot.income{background:var(--income)}.dot.expense{background:#c45c26}.chart-legend{width:100%;color:var(--muted);font-size:.82rem}.insights{list-style:none;margin:0 0 16px;padding:0;display:grid;gap:8px}.insight{border-radius:14px;padding:12px 16px;background:var(--bg-elev);color:var(--muted-inv)}.insight.warn{border-left:4px solid #c45c26}.insight.ok{border-left:4px solid var(--accent)}.insight.info{border-left:4px solid #2f6f8f}.row-tags{display:flex;flex-wrap:wrap;gap:6px}.tag{font-size:.75rem;color:var(--muted);background:var(--surface);border-radius:999px;padding:2px 8px;text-decoration:none}.kind-toggle{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}.kind-toggle button{border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:10px;font-weight:600}.kind-toggle button.on{background:var(--accent);color:#f4efe6;border-color:var(--accent)}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.cal-dow,.cal-day{min-height:72px;border-radius:12px;padding:8px;text-align:left}.cal-dow{min-height:auto;color:var(--muted);font-size:.78rem}.cal-day{border:1px solid var(--line);background:var(--surface-2);color:inherit;display:grid;align-content:start;gap:2px}.cal-day:disabled{opacity:0;pointer-events:none}.cal-in{font-size:.68rem;color:var(--income)}.cal-out{font-size:.68rem;color:var(--expense)}.plan-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.inline-form{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.inline-form input,.inline-form select{flex:1;min-width:110px}.goal-list,.account-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}.goal-card,.account-row{background:var(--surface-2);border-radius:14px;padding:12px}.account-row{display:flex;justify-content:space-between;gap:12px;align-items:center}.account-row p{margin:4px 0 0;color:var(--muted)}.cat-admin{list-style:none;margin:0;padding:0;display:grid;gap:8px}.cat-admin li{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center}.linkish{border:0;background:none;color:var(--accent);font-weight:600;padding:0}.receipt-row{display:flex;justify-content:space-between;margin:0 0 12px}@media(max-width:960px){.kpis,.charts,.plan-grid,.toolbar{grid-template-columns:1fr}.segment{margin-left:0}}@media(max-width:720px){.row,.form-row,.account-row{grid-template-columns:1fr}.row-amount{justify-self:start}.topbar{align-items:flex-start;flex-wrap:wrap}}
