.b{--bg: #0D1117;--surface: #151A22;--surface-2: #1C232D;--line: #283140;--text: #EAEEF4;--muted: #9AA6B6;--accent: #8B9BFF;--on-accent: #0D1117;--accent-bg: rgba(139, 155, 255, .14);--ok: #3DD68C;--warn: #F5A524;--bad: #FF6B6B;--ok-bg: rgba(61, 214, 140, .14);--warn-bg: rgba(245, 165, 36, .14);--bad-bg: rgba(255, 107, 107, .14);--font: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-pill: 999px;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--s7: 48px;background:var(--bg);color:var(--text);font-family:var(--font);font-size:15px;line-height:1.4;-webkit-font-smoothing:antialiased}.b[data-theme=light]{--bg: #F3F5F8;--surface: #FFFFFF;--surface-2: #EEF1F5;--line: #DCE1E8;--text: #0F141B;--muted: #566172;--accent: #4453D6;--on-accent: #FFFFFF;--accent-bg: rgba(68, 83, 214, .1);--ok: #096B3E;--warn: #884F00;--bad: #B0243A;--ok-bg: rgba(9, 107, 62, .1);--warn-bg: rgba(136, 79, 0, .12);--bad-bg: rgba(176, 36, 58, .1)}.b *,.b *:before,.b *:after{box-sizing:border-box}.b a{color:inherit;text-decoration:none}.b h1,.b h2,.b h3,.b p{margin:0}.m{display:flex;flex-direction:column}.m .page{padding:8px 16px 24px;display:flex;flex-direction:column;gap:16px}.d{display:flex;flex-wrap:wrap;align-items:stretch;width:100%}.d .side{flex:0 0 232px;min-width:0;padding:24px 16px;border-right:1px solid var(--line);background:var(--surface);display:flex;flex-direction:column;gap:4px}.d .main{flex:999 1 560px;min-width:0;padding:32px 40px 48px;display:flex;flex-direction:column;gap:24px}.row{display:flex;flex-wrap:wrap;gap:16px;align-items:stretch}.col{flex:1 1 340px;min-width:0}.col-2{flex:2 1 480px;min-width:0}.fx{display:flex}.fc{display:flex;flex-direction:column}.ai-c{align-items:center}.ai-e{align-items:flex-end}.jb{justify-content:space-between}.wrap{flex-wrap:wrap}.g4{gap:4px}.g8{gap:8px}.g12{gap:12px}.g16{gap:16px}.g24{gap:24px}.grow{flex:1;min-width:0}.tr{text-align:right}.h1{font-size:24px;font-weight:800;letter-spacing:-.01em;line-height:1.15}.d .h1{font-size:30px}.h2{font-size:16px;font-weight:700}.label{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.muted{color:var(--muted)}.small{font-size:13px}.cap{font-size:12px;color:var(--muted)}.strong{font-weight:700}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.num-xl{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700;font-size:56px;line-height:1;letter-spacing:-.03em}.d .num-xl{font-size:88px}.num-lg{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:700;font-size:32px;line-height:1.1;letter-spacing:-.02em}.num-md{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:600;font-size:18px}.num-sm{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:500;font-size:14px}.cur{font-size:.4em;color:var(--muted);font-weight:500;margin-left:.25em;letter-spacing:0}.dec{font-size:.55em;color:var(--muted);font-weight:500}.t-ok{color:var(--ok)}.t-warn{color:var(--warn)}.t-bad{color:var(--bad)}.t-acc{color:var(--accent)}.ic{width:22px;height:22px;flex:none}.ic-sm{width:16px;height:16px;flex:none}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px;display:flex;flex-direction:column;gap:12px}.d .card{padding:24px;gap:16px}.card-flat{background:var(--surface-2);border-radius:var(--r-md);padding:12px}.sep{height:1px;background:var(--line);border:0;margin:0}.badge{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--r-pill);font-size:12px;font-weight:700;white-space:nowrap;background:var(--surface-2);color:var(--muted)}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.bad{background:var(--bad-bg);color:var(--bad)}.badge.acc{background:var(--accent-bg);color:var(--accent)}.badge.plain:before{display:none}.gauge{position:relative;height:8px;border-radius:var(--r-pill);background:var(--surface-2)}.gauge>i{position:absolute;left:0;top:0;bottom:0;border-radius:var(--r-pill);background:var(--accent)}.gauge.ok>i{background:var(--ok)}.gauge.warn>i{background:var(--warn)}.gauge.bad>i{background:var(--bad)}.gauge.mute>i{background:var(--muted);opacity:.6}.gauge.lg{height:14px}.gauge .tick{position:absolute;top:-4px;bottom:-4px;width:2px;border-radius:1px;background:var(--text)}.card .gauge{background:var(--surface-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:48px;padding:0 20px;border-radius:var(--r-md);border:1px solid transparent;font:700 15px var(--font);cursor:pointer;white-space:nowrap}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-secondary{background:var(--surface-2);border-color:var(--line);color:var(--text)}.btn-ghost{background:transparent;color:var(--accent);padding:0 12px}.btn-danger{background:var(--bad-bg);color:var(--bad)}.btn-block{width:100%}.btn-sm{height:36px;padding:0 14px;font-size:13px}.btn-icon{width:44px;padding:0}.d .btn{height:44px}.d .btn-sm{height:36px}.field{display:flex;flex-direction:column;gap:6px}.field>label{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.input{height:48px;width:100%;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-md);color:var(--text);padding:0 14px;font:500 15px var(--font)}.input:focus,.cell-in:focus{outline:2px solid var(--accent);outline-offset:1px}.input.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.input.amount{height:72px;font-family:var(--mono);font-size:32px;font-weight:700;letter-spacing:-.02em}.d .input{height:44px}.d .input.amount{height:64px}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:var(--r-pill);border:1px solid var(--line);background:transparent;color:var(--muted);font:600 13px var(--font);white-space:nowrap;cursor:pointer}.m .chip{height:44px}.chip.on{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}.scroll-x{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.tbl{width:100%;border-collapse:collapse;table-layout:fixed}.tbl th{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-align:right;padding:8px 6px}.tbl th:first-child,.tbl td:first-child{text-align:left}.tbl td{padding:4px 6px;border-top:1px solid var(--line);text-align:right;font-size:14px;vertical-align:middle}.tbl td:first-child{font-weight:600;font-size:14px}.tbl tr.tot td{font-weight:700;background:var(--surface-2);border-top:0}.tbl tr.tot td:first-child{border-radius:8px 0 0 8px;padding-left:10px}.tbl tr.tot td:last-child{border-radius:0 8px 8px 0}.m .tbl .wn{width:66px}.d .tbl .wn{width:130px}.cell-in{width:100%;height:40px;background:transparent;border:1px solid transparent;border-radius:8px;text-align:right;color:var(--text);font:500 14px var(--mono);font-variant-numeric:tabular-nums;padding:0 6px}.cell-in:hover{background:var(--surface-2);border-color:var(--line)}.m .cell-in{padding:0 4px;font-size:13px}.ec-ok{color:var(--ok)}.ec-warn{color:var(--warn)}.ec-bad{color:var(--bad)}.ec-0{color:var(--muted)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 16px 8px}.tabbar{margin-top:auto;display:flex;border-top:1px solid var(--line);background:var(--surface);padding:6px 4px 22px}.tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:52px;color:var(--muted);font-size:12px;font-weight:600}.tab.on{color:var(--accent)}.brand{display:flex;align-items:center;gap:10px;padding:4px 12px 20px;font-weight:800;font-size:18px}.brand i{width:28px;height:28px;border-radius:9px;background:var(--accent);display:grid;place-items:center;color:var(--on-accent)}.nav-i{display:flex;align-items:center;gap:12px;height:44px;padding:0 12px;border-radius:10px;color:var(--muted);font-weight:600;font-size:15px}.nav-i.on{background:var(--surface-2);color:var(--text)}.nav-i.on .ic{color:var(--accent)}.subnav{display:flex;gap:8px;overflow-x:auto;padding:0 16px}.cat{display:flex;flex-direction:column;gap:8px;padding:4px 0}.tx{display:flex;align-items:center;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.tx:first-child{border-top:0}.rank{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:13px;background:var(--bad-bg);color:var(--bad);flex:none}.hm{display:grid;gap:4px;align-items:center}.hc{height:40px;border-radius:8px;display:grid;place-items:center;font:600 13px var(--mono);background:var(--surface-2);color:var(--muted)}.hc.ok{background:var(--ok-bg);color:var(--ok)}.hc.warn{background:var(--warn-bg);color:var(--warn)}.hc.bad{background:var(--bad-bg);color:var(--bad)}.hh{font-size:12px;font-weight:700;color:var(--muted);text-align:center}.hr{font-size:13px;font-weight:600}.f-acc{fill:var(--accent)}.f-mut{fill:var(--muted);opacity:.55}.f-txt{fill:var(--text)}.f-lbl{fill:var(--muted);font:600 12px var(--font)}.s-line{stroke:var(--line)}.s-prev{stroke:var(--warn);stroke-dasharray:5 4}.leg{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);font-weight:600}.leg i{width:10px;height:10px;border-radius:3px;display:inline-block}.drop{border:2px dashed var(--line);border-radius:var(--r-lg);padding:32px 16px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;background:var(--surface)}.switch{width:44px;height:26px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);position:relative;flex:none}.switch:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:var(--muted)}.switch.on{background:var(--accent);border-color:var(--accent)}.switch.on:after{left:20px;background:var(--on-accent)}.kv{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.step{width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;font-weight:800;font-size:12px;flex:none}@font-face{font-family:Manrope;font-weight:500;font-display:swap;src:url(/fonts/manrope-latin-500-normal.woff2) format("woff2")}@font-face{font-family:Manrope;font-weight:600;font-display:swap;src:url(/fonts/manrope-latin-600-normal.woff2) format("woff2")}@font-face{font-family:Manrope;font-weight:700;font-display:swap;src:url(/fonts/manrope-latin-700-normal.woff2) format("woff2")}@font-face{font-family:Manrope;font-weight:800;font-display:swap;src:url(/fonts/manrope-latin-800-normal.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:500;font-display:swap;src:url(/fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:600;font-display:swap;src:url(/fonts/jetbrains-mono-latin-600-normal.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:700;font-display:swap;src:url(/fonts/jetbrains-mono-latin-700-normal.woff2) format("woff2")}html,body{margin:0}app-root{display:block;min-height:100vh;min-height:100dvh}.layout{min-height:100vh;min-height:100dvh}.contents{display:contents}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.b a:focus-visible,.b button:focus-visible,.b select:focus-visible,.b input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.b button:disabled{opacity:.5;cursor:not-allowed}.b button{font-family:inherit}.d .side .nav-i{cursor:pointer}.b .tab{text-decoration:none}.b .tab,.b .nav-i{background:none;border:0;font-family:inherit}.b .nav-i{width:100%;text-align:left;cursor:pointer}.b .nav-i.on{background:var(--surface-2)}.mnav{display:flex;align-items:center;gap:8px}.m .mnav{padding:0 16px;justify-content:space-between}.msg{padding:12px;border-radius:var(--r-md);font-size:14px;font-weight:600;background:var(--surface-2)}.msg.bad{background:var(--bad-bg);color:var(--bad)}.msg.ok{background:var(--ok-bg);color:var(--ok)}.msg.warn{background:var(--warn-bg);color:var(--warn)}.err{color:var(--bad);font-size:13px;font-weight:600}.input[aria-invalid=true],.cell-in[aria-invalid=true]{border-color:var(--bad)}.cell-in[readonly]{cursor:default}.cell-in{min-height:44px}.login{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:16px}.login .card{width:100%;max-width:400px}.tx .btn-icon{height:44px}.sync-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 16px;background:var(--surface-2);border-bottom:1px solid var(--line);font-size:13px;font-weight:600}.d .main .sync-bar{border:1px solid var(--line);border-radius:var(--r-md)}.d .side .foot{margin-top:auto;display:flex;flex-direction:column;gap:4px}.right{margin-left:auto}.m .tabbar{position:sticky;bottom:0;z-index:5}.tabbar .tab{min-height:56px}.nav-i,.tab{text-decoration:none}.col-s{flex:1 1 220px;min-width:0}.b a.btn-primary{color:var(--on-accent)}.b a.btn-secondary{color:var(--text)}.b a.btn-ghost{color:var(--accent)}.b a.btn-danger{color:var(--bad)}.b a.tab{color:var(--muted)}.b a.tab.on{color:var(--accent)}.b a.nav-i,.b button.nav-i{color:var(--muted)}.b a.nav-i.on{color:var(--text)}.b a.nav-i.on .ic{color:var(--accent)}.m .btn-sm{height:44px}.t-mute{color:var(--muted)}.t-text{color:var(--text)}.sp-between{justify-content:space-between}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.m .mt-12{margin-top:0}.pt-8{padding-top:8px}.tbl td.ta-l{text-align:left}.fw-6{font-weight:600}.tbl td.no-top{border-top:0}.fill-full{width:100%}.sep-nav{margin:12px 0}.brand.bare{padding:0}.card.tight{padding:12px;gap:12px}.card.gap-8{gap:8px}.card.table-card{padding:16px 24px 24px}.head-pad{padding:4px 6px}.tbl td.cell-pad{padding:14px 6px}.tbl td.sec-row-first{padding-top:16px;border-top:0}.tbl td.sec-row{padding-top:24px;border-top:0}.col-date{width:110px}.col-cat{width:160px}.col-amt{width:140px}.col-act{width:120px}.col-gap{width:58px}.input.date-w{width:160px}.num-lg.xl-d{font-size:44px}.m .num-lg.xl-d{font-size:32px}.badge-link{min-height:44px;display:inline-flex;align-items:center}.field-row{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}.field-row .field{flex:1 1 180px;min-width:0}.input-unit{display:flex;align-items:center;gap:8px}.input-unit .input{text-align:right}.set-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;padding:8px 0;border-top:1px solid var(--line)}.set-row:first-of-type{border-top:0}.set-row .grow{min-width:140px}.set-row .input{width:140px}.m>.m-main{flex:1;display:flex;flex-direction:column;min-width:0}.m-main:focus,.main:focus{outline:none}.skip:focus{position:fixed;z-index:10;top:8px;left:8px;width:auto;height:auto;margin:0;padding:12px 16px;clip:auto;background:var(--surface);color:var(--text);border-radius:var(--r-md);border:2px solid var(--accent)}.row-msg{flex:0 1 140px;min-width:0}#budgets:focus{outline:none}.nowrap{white-space:nowrap}.kv .muted{min-width:0}.actions{display:flex;flex-wrap:wrap;gap:8px}.pb-4{padding-bottom:4px}.col-card{flex-basis:300px}.card-flat details summary{cursor:pointer;min-height:44px;display:flex;align-items:center}details>summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.col-act2{width:170px}.data-note{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;font-size:13px;color:var(--muted);margin:0}.m .data-note{padding:0 16px}.sync-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:8px 16px;margin:0 16px;display:flex;flex-direction:column;gap:8px}.d .sync-panel{margin:0}.plain-list{list-style:none;margin:0;padding:0}.qrow{display:flex;align-items:center;gap:8px;padding:8px 0;border-top:1px solid var(--line);flex-wrap:wrap}.qrow:first-child{border-top:0}.f-bad{fill:var(--bad)}.f-warn{fill:var(--warn)}.f-rav{fill:var(--surface);stroke:var(--text);stroke-width:2}.s-acc{stroke:var(--accent);stroke-width:2.5;fill:none;stroke-linejoin:round}.s-mut{stroke:var(--muted);stroke-width:2;fill:none;stroke-dasharray:5 4}.leg i.sw-mut{background:var(--muted);opacity:.55}.leg i.sw-acc{background:var(--accent)}.leg i.sw-text{background:var(--text)}.leg i.sw-warn{background:var(--warn);height:3px}.leg i.sw-bad{background:var(--bad)}.leg i.sw-ok{background:var(--ok)}.leg i.sw-neutral{background:var(--surface-2);border:1px solid var(--line)}.leg i.sw-dot{background:var(--surface);border:2px solid var(--text);border-radius:50%;width:10px;height:10px}.chart-wrap,.hm-wrap{overflow-x:auto}.hm-wrap .hm{min-width:100%}.hc.neutral{background:var(--surface-2);color:var(--muted)}.hc{min-height:36px}.hc,.hh,.hr{white-space:nowrap}.hr{overflow:hidden;text-overflow:ellipsis}.cur-select{max-width:220px}.f-hatch{fill:url(#hatch);stroke:var(--accent);stroke-width:1.5}.row.gap-32{gap:32px}.tbl-auto{table-layout:auto;min-width:480px}.tbl .col-num{width:70px}.m .tbl .col-num{width:58px}.card,.chart-wrap,.hm-wrap{min-width:0;max-width:100%}.hm-wrap,.chart-wrap,.hc{position:relative}app-curve-chart{display:block;max-width:640px}.rank-num{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-weight:800;font-size:13px;background:var(--surface-2);color:var(--muted);flex:none}.rules{list-style:none;margin:0;padding:0}.check{display:flex;align-items:center;gap:8px;min-height:44px;font-size:13px;font-weight:600;cursor:pointer}.check input{width:20px;height:20px;accent-color:var(--accent);flex:none}.fieldset{border:0;margin:0;padding:0;min-width:0}.drop{position:relative;cursor:pointer}.drop input[type=file]{margin-top:8px;height:auto;padding:10px 14px}.imp-card{display:flex;flex-direction:column;gap:8px;padding:12px 0;border-top:1px solid var(--line)}.imp-card:first-child{border-top:0}.dim{opacity:.6}.sel-cat{height:44px;min-width:0}.input.kw{height:36px;width:140px}.col-stat{width:150px}.col-sel{width:190px}.tbl .col-stat{width:150px}.tbl .col-sel{width:200px}.tbl td .check{min-height:36px}.hm-t{border-collapse:separate;border-spacing:4px;width:100%;table-layout:auto}.hm-t th.hr{text-align:left;padding-right:8px;max-width:120px}.hm-t th.hh{padding:0 2px}.hm-t td{padding:0;min-width:38px}.hm-t td .hc{display:grid}.b [aria-disabled=true]{opacity:.5;cursor:not-allowed}
