:root{--bg: #f4f5f7;--card: #ffffff;--ink: #1a1d21;--muted: #6b7280;--brand: #1f4e78;--brand-soft: #eaf0f6;--line: #e6e8eb;--pos: #1a7f4b;--neg: #c0392b}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:-apple-system,Segoe UI,Roboto,system-ui,sans-serif;background:var(--bg);color:var(--ink);-webkit-text-size-adjust:100%}.app{max-width:720px;margin:0 auto;padding:52px 14px 24px}.app.center{display:flex;align-items:center;justify-content:center;min-height:100%}h1{color:var(--brand);font-size:1.4rem}.muted{color:var(--muted);font-size:.9rem}.error{color:var(--neg);font-size:.9rem;margin-top:4px}.login-box{width:100%;max-width:340px;text-align:center}.login-form{display:flex;flex-direction:column;gap:10px;margin-top:18px}.login-form input,.login-form button{padding:12px 14px;font-size:1rem;border-radius:10px;border:1px solid var(--line)}.login-form button{background:var(--brand);color:#fff;border:none;font-weight:600;cursor:pointer}.login-form button:disabled{opacity:.6}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.topbar h1{font-size:1.25rem}.linkbtn{background:none;border:none;color:var(--muted);font-size:.85rem;cursor:pointer;text-decoration:underline}.controls{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:14px}.cgroup{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.segment{display:flex;background:var(--brand-soft);border-radius:10px;padding:3px}.segment button{border:none;background:none;padding:7px 12px;border-radius:8px;font-size:.85rem;color:var(--brand);cursor:pointer;font-weight:600}.segment button.on{background:var(--brand);color:#fff}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:14px}.card h2{font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:12px}.headline-main{font-size:2rem;font-weight:700;color:var(--brand)}.headline-sub{color:var(--muted);font-size:.85rem;margin-top:2px}.headline-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.headline-grid .k{color:var(--muted);font-size:.78rem}.headline-grid .v{font-size:1.05rem;font-weight:600}.row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(--line);font-size:.95rem}.row:last-child{border-bottom:none}.row .label{color:var(--ink)}.row .amount{font-variant-numeric:tabular-nums;font-weight:600}.row .amount.neg{color:var(--neg)}.field{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}.field:last-child{border-bottom:none}.field span,.field label{color:var(--ink);font-size:.9rem}.field input,.field select{width:140px;padding:8px 9px;border:1px solid var(--line);border-radius:8px;font-size:.95rem;background:#fff;color:var(--ink);font-variant-numeric:tabular-nums}.editrow{padding:11px 0;border-bottom:1px solid var(--line)}.editrow:last-child{border-bottom:none}.editrow-name{font-weight:600;font-size:.95rem;margin-bottom:7px}.editrow-fields{display:flex;flex-wrap:wrap;gap:10px}.editrow-fields label{flex:1 1 calc(50% - 5px);min-width:0;display:flex;flex-direction:column;gap:3px;font-size:.75rem;color:var(--muted)}.editrow-fields input{width:100%;box-sizing:border-box;padding:8px 9px;border:1px solid var(--line);border-radius:8px;font-size:.95rem;font-variant-numeric:tabular-nums}.editrow-actions{display:flex;align-items:center;gap:14px}.tag{display:inline-block;margin-left:8px;padding:1px 7px;background:var(--brand-soft);color:var(--brand);border-radius:6px;font-size:.68rem;font-weight:600;text-transform:none;letter-spacing:0}.linkbtn.danger{color:var(--neg)}.btn{display:inline-block;margin-top:10px;padding:10px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--brand);font-weight:600;font-size:.9rem;cursor:pointer}.btn-primary{background:var(--brand);color:#fff;border:none}.btn:disabled{opacity:.6}.savebar{display:flex;align-items:center;gap:12px;margin:6px 2px 8px}.topnav{position:fixed;left:0;right:0;top:0;z-index:10;display:flex;background:#fff;border-bottom:1px solid var(--line);overflow-x:hidden}.topnav button{flex:1 1 0;min-width:0;padding:9px 4px;border:none;background:none;font-size:.66rem;font-weight:600;color:var(--muted);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topnav button.on{color:var(--brand)}.holdstatus{font-size:.72rem;color:var(--muted);margin-top:6px}.holdstatus.on{color:var(--pos)}.monthsel{padding:7px 10px;border:1px solid var(--line);border-radius:10px;font-size:.85rem;background:#fff;color:var(--brand);font-weight:600}.periodlabel{color:var(--muted);font-size:.85rem;align-self:center}.periodlabel.sep{margin-left:16px}.chartfoot{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin-top:6px}.cf{width:100%;border-collapse:collapse}.cf th,.cf td{padding:7px 3px;text-align:right;font-size:.8rem}.cf th:first-child,.cf td:first-child{text-align:left}.cf th{color:var(--muted);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.03em}.cf tbody td{border-top:1px solid var(--line);font-weight:600;font-variant-numeric:tabular-nums}.cf tbody td:first-child{font-weight:400;color:var(--ink)}.cf td.neg{color:var(--neg)}.cf .sub{display:block;font-size:.66rem;color:var(--muted);font-weight:400}.cf tr.exp{cursor:pointer}.cf tr.exp td:first-child{color:var(--brand);font-weight:600}.cf tr.child td:first-child{padding-left:20px;color:var(--muted)}.cf .caret{display:inline-block;width:14px;color:var(--muted);font-size:.7rem}.cf tr.subrow td:first-child{padding-left:20px;font-weight:600}.cf tr.child.lvl2 td:first-child{padding-left:38px}.cf.inputcols td input{width:100%;box-sizing:border-box;text-align:right;padding:5px 6px;border:1px solid var(--line);border-radius:7px;font-size:.82rem;font-variant-numeric:tabular-nums;background:#fff;color:var(--ink)}.cf.inputcols th:last-child{color:var(--brand)}.cf td.ro{color:var(--muted);font-weight:400}.cf tr.acct-head td{background:var(--brand-soft);color:var(--brand);font-weight:600;font-size:.78rem;padding-top:9px;padding-bottom:9px}.cf tr.total td{border-top:2px solid var(--line);font-weight:600}.cf tr.spacer td{padding:3px;border:none}.typetag{display:inline-block;padding:1px 6px;border-radius:5px;font-size:.6rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;vertical-align:middle}.t-actual{background:#ebedf0;color:#5b6470}.t-live{background:#e2f3e8;color:#1a7f4b}.t-forecast{background:#e7eef7;color:#1f4e78}.cf th .typetag{display:block;margin:3px auto 0;width:fit-content}.typebanner{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-6px 0 14px;font-size:.82rem;color:var(--muted)}.livedot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--pos);margin-left:6px;vertical-align:middle}.acctrow{display:flex;align-items:center;justify-content:space-between;padding:12px 4px;border-bottom:1px solid var(--line);cursor:pointer}.acctrow:last-child{border-bottom:none}.acctrow .nm{font-weight:600;font-size:.95rem}.acctrow .meta{color:var(--muted);font-size:.74rem;margin-top:2px}.acctrow .bal{font-variant-numeric:tabular-nums;font-weight:600;text-align:right}.acctrow .bal.neg{color:var(--neg)}.acctrow .chev{color:var(--muted);margin-left:12px;font-size:1rem}.backbtn{background:none;border:none;color:var(--brand);font-size:.85rem;font-weight:600;cursor:pointer;padding:0;margin-bottom:10px}.acctgroup{display:flex;justify-content:space-between;align-items:baseline;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--brand);background:var(--brand-soft);padding:6px 8px;border-radius:6px;margin:14px 0 2px}.acctgroup:first-child{margin-top:0}.acctgroup .gt{font-variant-numeric:tabular-nums}.chartkey{display:flex;gap:14px;flex-wrap:wrap;font-size:.72rem;color:var(--muted);margin-top:4px}.chartkey span{display:flex;align-items:center;gap:5px}.chartkey i{display:inline-block;width:18px;height:0;font-style:normal}.chartkey i.solid{border-top:2px solid var(--brand)}.chartkey i.dashed{border-top:2px dashed var(--brand)}.chartkey i.dot{width:8px;height:8px;border-radius:50%;background:var(--neg)}.textswitch{display:inline-flex;gap:4px}.textswitch button{background:none;border:none;cursor:pointer;padding:6px 8px;font-size:.8rem;color:var(--muted);font-family:inherit}.textswitch button.on{color:var(--ink);font-weight:600}.topbar .asof{font-size:.78rem;color:var(--muted);margin-top:2px}.charttip{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:6px 9px;font-size:.78rem}.charttip .ct-month{color:var(--muted)}.charttip .ct-val{font-weight:600}.tip{position:relative;cursor:help;outline:none}.tip-pop{position:absolute;left:0;top:100%;margin-top:6px;width:240px;max-width:72vw;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:9px 11px;font-size:.74rem;font-weight:400;line-height:1.5;text-transform:none;letter-spacing:0;box-shadow:0 6px 18px #00000024;opacity:0;visibility:hidden;pointer-events:none;z-index:30;transition:opacity .12s ease,visibility 0s linear .12s}.tip:hover .tip-pop{opacity:1;visibility:visible;transition:opacity .12s ease .5s,visibility 0s linear .5s}.tip:focus .tip-pop,.tip:focus-visible .tip-pop{opacity:1;visibility:visible;transition:none}@page{margin:12mm}@media print{.topnav,.controls,.savebar,.linkbtn,.backbtn,.chartfoot button,.editrow-actions button{display:none!important}.app{max-width:100%!important;width:100%!important;padding:0 8mm!important;margin:0!important}.card{break-inside:avoid}}:root{--font-serif: "Playfair Display", "Tiempos Headline", Georgia, serif;--font-sans: "Inter", "Söhne", -apple-system, "Segoe UI", system-ui, sans-serif;--type-display: 2.25rem;--type-h1: 1.5rem;--type-h2: .74rem;--type-body: .95rem;--type-small: .8rem;--type-micro: .66rem;--type-figure: 1rem;--line-body: 1.55;--line-tight: 1.2;--tracking-header: .16em;--tracking-label: .09em;--tracking-normal: 0;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 20px;--space-5: 32px;--space-6: 48px;--space-7: 72px;--space-8: 104px;--radius-none: 0;--radius-sm: 2px;--hairline: 1px;--measure: 680px}:root,[data-theme=light]{color-scheme:light;--color-bg: #F5F2EC;--color-surface: #FAF7F1;--color-text: #1A2332;--color-text-secondary: #6B6660;--color-hairline: rgba(107, 102, 96, .15);--color-hairline-strong: rgba(107, 102, 96, .32);--color-accent-oxblood: #6B2737;--color-accent-forest: #2D4A3E;--color-accent-gold: #A68B5B;--color-accent: var(--color-accent-oxblood);--color-control: #1A2332;--color-control-text: #FAF7F1;--color-on-accent: #FAF7F1;--color-state-actual: #6B6660;--color-state-live: #2D4A3E;--color-state-forecast: #8A6F43}[data-skin=private][data-theme=dark]{color-scheme:dark;--color-bg: #1A1814;--color-surface: #252320;--color-text: #EDE8DE;--color-text-secondary: #9A9489;--color-hairline: rgba(237, 232, 222, .1);--color-hairline-strong: rgba(237, 232, 222, .26);--color-accent-oxblood: #8B3744;--color-accent-forest: #3D6354;--color-accent-gold: #C4A572;--color-accent: var(--color-accent-oxblood);--color-control: #EDE8DE;--color-control-text: #1A1814;--color-on-accent: #1A1814;--color-state-actual: #9A9489;--color-state-live: #7BA890;--color-state-forecast: #C4A572;--weight-regular: 500;--tracking-label: .11em}@media (prefers-color-scheme: dark){[data-skin=private]:not([data-theme=light]):not([data-theme=dark]){color-scheme:dark;--color-bg: #1A1814;--color-surface: #252320;--color-text: #EDE8DE;--color-text-secondary: #9A9489;--color-hairline: rgba(237, 232, 222, .1);--color-hairline-strong: rgba(237, 232, 222, .26);--color-accent-oxblood: #8B3744;--color-accent-forest: #3D6354;--color-accent-gold: #C4A572;--color-accent: var(--color-accent-oxblood);--color-control: #EDE8DE;--color-control-text: #1A1814;--color-on-accent: #1A1814;--color-state-actual: #9A9489;--color-state-live: #7BA890;--color-state-forecast: #C4A572;--weight-regular: 500;--tracking-label: .11em}}html[data-skin=private] body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-weight:var(--weight-regular);line-height:var(--line-body)}html[data-skin=private] .app{max-width:var(--measure);padding:64px var(--space-5) var(--space-8)}html[data-skin=private] .app.center{padding:var(--space-5)}html[data-skin=private] h1{font-family:var(--font-serif);font-weight:var(--weight-medium);color:var(--color-text);font-size:var(--type-h1);letter-spacing:.01em}html[data-skin=private] .topbar h1{font-size:var(--type-h1)}html[data-skin=private] .card h2{font-family:var(--font-sans);font-size:var(--type-h2);text-transform:uppercase;letter-spacing:var(--tracking-header);color:var(--color-text-secondary);font-weight:var(--weight-medium);margin-bottom:var(--space-4)}html[data-skin=private] .muted,html[data-skin=private] .periodlabel,html[data-skin=private] .holdstatus{color:var(--color-text-secondary)}html[data-skin=private] .error{color:var(--color-accent)}html[data-skin=private] .topnav{background:var(--color-surface);border-bottom:var(--hairline) solid var(--color-hairline)}html[data-skin=private] .topnav button{font-size:.55rem;font-weight:var(--weight-regular);letter-spacing:.02em;text-transform:uppercase;color:var(--color-text-secondary);padding:var(--space-3) var(--space-1)}html[data-skin=private] .topnav button.on{color:var(--color-text);box-shadow:inset 0 -1px 0 0 var(--color-accent)}html[data-skin=private] .card{background:transparent;border:0;border-top:var(--hairline) solid var(--color-hairline);border-radius:var(--radius-none);padding:var(--space-5) 0;margin:0}html[data-skin=private] .headline-main{font-family:var(--font-serif);font-weight:var(--weight-medium);color:var(--color-text);font-variant-numeric:tabular-nums}html[data-skin=private] .headline-sub,html[data-skin=private] .headline-grid .k{color:var(--color-text-secondary)}html[data-skin=private] .headline-grid .v{font-family:var(--font-serif);font-variant-numeric:tabular-nums;font-weight:var(--weight-medium)}html[data-skin=private] .row{border-bottom:var(--hairline) solid var(--color-hairline)}html[data-skin=private] .row .label{color:var(--color-text)}html[data-skin=private] .row .amount,html[data-skin=private] .amount{font-family:var(--font-serif);font-variant-numeric:tabular-nums;font-weight:var(--weight-regular)}html[data-skin=private] .btn{background:transparent;border:var(--hairline) solid var(--color-hairline-strong, var(--color-text-secondary));border-radius:var(--radius-sm);color:var(--color-text);font-weight:var(--weight-medium);box-shadow:none}html[data-skin=private] .btn-primary{background:var(--color-control);color:var(--color-control-text);border:var(--hairline) solid var(--color-control)}html[data-skin=private] .linkbtn{color:var(--color-text-secondary)}html[data-skin=private] .linkbtn.danger{color:var(--color-accent)}html[data-skin=private] .field{border-bottom:var(--hairline) solid var(--color-hairline)}html[data-skin=private] .field input,html[data-skin=private] .field select,html[data-skin=private] .editrow-fields input,html[data-skin=private] .cf.inputcols td input,html[data-skin=private] .monthsel,html[data-skin=private] .login-form input{background:var(--color-surface);border:var(--hairline) solid var(--color-hairline-strong, var(--color-text-secondary));border-radius:var(--radius-sm);color:var(--color-text)}html[data-skin=private] .editrow{border-bottom:var(--hairline) solid var(--color-hairline)}html[data-skin=private] .editrow-fields label{color:var(--color-text-secondary)}html[data-skin=private] .field span,html[data-skin=private] .field label,html[data-skin=private] .editrow-name{color:var(--color-text)}html[data-skin=private] .acctrow .meta,html[data-skin=private] .cf .sub{color:var(--color-text-secondary)}html[data-skin=private] .segment{background:transparent;padding:0;gap:var(--space-4)}html[data-skin=private] .segment button{color:var(--color-text-secondary);font-weight:var(--weight-regular);padding:var(--space-1) 0;border-radius:var(--radius-none)}html[data-skin=private] .segment button.on{background:transparent;color:var(--color-text);box-shadow:inset 0 -1px 0 0 var(--color-accent)}html[data-skin=private] .cf th{color:var(--color-text-secondary);letter-spacing:var(--tracking-label)}html[data-skin=private] .cf.inputcols th:last-child{color:var(--color-text)}html[data-skin=private] .cf tbody td{border-top:var(--hairline) solid var(--color-hairline);font-family:var(--font-serif);font-variant-numeric:tabular-nums;font-weight:var(--weight-regular)}html[data-skin=private] .cf tbody td:first-child{font-family:var(--font-sans);color:var(--color-text)}html[data-skin=private] .cf td.ro{color:var(--color-text-secondary)}html[data-skin=private] .cf.inputcols td input,html[data-skin=private] .field input,html[data-skin=private] .editrow-fields input{font-family:var(--font-serif);font-variant-numeric:tabular-nums}html[data-skin=private] .cf tr.exp td:first-child{color:var(--color-text)}html[data-skin=private] .cf tr.acct-head td,html[data-skin=private] .acctgroup{background:transparent;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:var(--tracking-label);font-weight:var(--weight-medium);border-radius:var(--radius-none)}html[data-skin=private] .acctgroup{border-bottom:var(--hairline) solid var(--color-hairline)}html[data-skin=private] .cf tr.total td{border-top:var(--hairline) solid var(--color-text-secondary)}html[data-skin=private] .neg,html[data-skin=private] .amount.neg,html[data-skin=private] .cf td.neg,html[data-skin=private] .row .amount.neg{color:var(--color-text)}html[data-skin=private] .acctrow{border-bottom:var(--hairline) solid var(--color-hairline)}html[data-skin=private] .acctrow .bal{font-family:var(--font-serif)}html[data-skin=private] .acctrow .bal.neg{color:var(--color-text)}html[data-skin=private] .backbtn{color:var(--color-accent)}html[data-skin=private] .typetag{background:transparent;padding:0 0 0 var(--space-2);font-size:var(--type-micro);letter-spacing:var(--tracking-label);font-weight:var(--weight-medium)}html[data-skin=private] .typetag.t-actual{color:var(--color-state-actual)}html[data-skin=private] .typetag.t-live{color:var(--color-state-live)}html[data-skin=private] .typetag.t-forecast{color:var(--color-state-forecast)}html[data-skin=private] .typebanner{color:var(--color-text-secondary)}html[data-skin=private] .tag{background:transparent;color:var(--color-text-secondary);padding:0 0 0 var(--space-2)}html[data-skin=private] .livedot{background:var(--color-state-live)}html[data-skin=private] .chartkey{color:var(--color-text-secondary)}html[data-skin=private] .chartkey i.solid{border-top-color:var(--color-accent)}html[data-skin=private] .chartkey i.dashed{border-top-color:var(--color-text-secondary)}html[data-skin=private] .chartkey i.dot{background:var(--color-accent)}html[data-skin=private] .login-form button{background:var(--color-control);color:var(--color-control-text);border:var(--hairline) solid var(--color-control);border-radius:var(--radius-sm)}html[data-skin=private] .textswitch button.on{color:var(--color-text);box-shadow:inset 0 -1px 0 0 var(--color-accent)}html[data-skin=private] .topbar{align-items:flex-start}html[data-skin=private] .topbar .asof{color:var(--color-text-secondary);font-size:var(--type-small);margin-top:var(--space-1)}html[data-skin=private] .colophon{display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-6);padding-top:var(--space-4);border-top:var(--hairline) solid var(--color-hairline);font-size:var(--type-micro);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--color-text-secondary)}html[data-skin=private] .savenote{font-family:var(--font-serif);font-style:italic;color:var(--color-text-secondary)}html[data-skin=private] .charttip{background:var(--color-surface);border:var(--hairline) solid var(--color-hairline-strong, var(--color-text-secondary));border-radius:var(--radius-sm)}html[data-skin=private] .tip-pop{background:var(--color-surface);color:var(--color-text);border:var(--hairline) solid var(--color-hairline-strong);border-radius:var(--radius-sm);box-shadow:none}html[data-skin=private] .charttip .ct-month{color:var(--color-text-secondary)}html[data-skin=private] .charttip .ct-val{font-family:var(--font-serif);font-variant-numeric:tabular-nums;font-weight:var(--weight-regular)}
