:root{--bg:#fff;--ink:#101418;--muted:#5b6672;--line:#e3e8ee;--line-strong:#c8d1db;--income:#0b6b3a;--neg:#b3261e;--cash-bg:#f3f7fb;--pl-bg:#faf7f2;--accent:#1c4587;--focus:#1c4587;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:ui-sans-serif,system-ui,Segoe UI,Arial,sans-serif}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);margin:0;font-size:14px}main{padding:24px clamp(12px,3vw,32px) 48px}header h1{letter-spacing:-.01em;margin:0;font-size:20px}.sub,footer p{color:var(--muted);margin:4px 0 16px;font-size:13px}.pager{align-items:center;gap:12px;margin-bottom:10px;display:flex}.pager button{border:1px solid var(--line-strong);cursor:pointer;font:inherit;background:#fff;border-radius:6px;padding:5px 10px}.pager button:disabled{opacity:.4;cursor:default}.pager span{color:var(--muted);font-variant-numeric:tabular-nums}.scroll{border:1px solid var(--line);border-radius:8px;overflow-x:auto}table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%}th,td{border-bottom:1px solid var(--line);text-align:left;white-space:nowrap;background:#fff;padding:4px 8px}thead th{z-index:3;border-bottom:1px solid var(--line-strong);background:#fff;font-weight:600;position:sticky;top:0}.num{text-align:right;font-variant-numeric:tabular-nums}.sticky{z-index:2;position:sticky}.rowhead{min-width:130px;font-weight:500;left:0}.recurhead{border-right:1px solid var(--line-strong);min-width:250px;left:130px}thead .rowhead,thead .recurhead{z-index:4}tbody tr.income th{color:var(--income)}.cell{text-align:right;width:68px;font:inherit;font-variant-numeric:tabular-nums;color:var(--ink);background:0 0;border:1px solid #0000;border-radius:4px;padding:3px 5px}.cell::placeholder{color:var(--muted);opacity:.65}.cell:hover{border-color:var(--line)}.cell:focus{outline:2px solid var(--focus);outline-offset:-1px;border-color:#0000}.cell.overridden{color:#00f;font-weight:600}.recur{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.recur select,.recur input{font:inherit;border:1px solid var(--line-strong);background:#fff;border-radius:4px;padding:2px 4px}.recur input[type=number]{width:58px}.recur input[type=text]{width:92px}.recur label{color:var(--muted);align-items:center;gap:4px;font-size:12px;display:inline-flex}tfoot .derived th,tfoot .derived td{border-top:1px solid var(--line-strong);font-weight:600}tfoot .cash th,tfoot .cash td{background:var(--cash-bg)}tfoot .pl th,tfoot .pl td{background:var(--pl-bg)}tfoot .total,thead .total{border-left:1px solid var(--line-strong)}@media (prefers-color-scheme:dark){:root{--bg:#10141a;--ink:#e8edf3;--muted:#9aa7b4;--line:#232b35;--line-strong:#38434f;--cash-bg:#172029;--pl-bg:#221d17;--income:#4ade80;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}th,td,thead th,.recur select,.recur input,.pager button{background:#141a21}.cell.overridden{color:#7aa2ff}}.overview{margin:4px 0 22px}.stats{flex-wrap:wrap;gap:10px;margin-bottom:10px;display:flex}.stat{border:1px solid var(--line);background:#fff;border-radius:8px;min-width:132px;padding:8px 14px}.stat-label{color:var(--muted);font-size:12px;display:block}.stat strong{font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:19px}.stat strong.neg{color:var(--neg)}.stat-sub{color:var(--muted);margin-left:6px;font-size:12px}.chart{border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;height:auto;display:block}.axis-zero{stroke:var(--line-strong);stroke-width:1px}.axis-label{fill:var(--muted);font-variant-numeric:tabular-nums;font-size:11px}.bar{fill:#cfe0f5}.bar.neg{fill:#f3c9c6}.line{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round}.trough{fill:var(--neg);stroke:#fff;stroke-width:1.5px}.legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;margin:6px 2px 0;font-size:12px;display:flex}.key{border-radius:2px;width:14px;height:3px;margin-left:10px;display:inline-block}.key:first-child{margin-left:0}.line-key{background:var(--accent)}.bar-key{background:#cfe0f5;height:10px}.trough-key{background:var(--neg);border-radius:50%;width:8px;height:8px}.reset{border:1px solid var(--line-strong);font:inherit;cursor:pointer;background:#fff;border-radius:6px;padding:5px 10px}@media (prefers-color-scheme:dark){.stat,.chart,.reset{background:#141a21}.bar{fill:#27405e}.bar.neg{fill:#5e2b28}}.scenarios{margin:0 0 14px}.scenario-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.scenario-row label{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:inline-flex}.scenario-row select,.scenario-row button{font:inherit;border:1px solid var(--line-strong);color:var(--ink);cursor:pointer;background:#fff;border-radius:6px;padding:5px 10px}.scenario-row button.danger{color:var(--neg);border-color:#e6b8b5}.badge{color:var(--accent);background:#eef4ff;border:1px solid #d5e2fb;border-radius:999px;padding:3px 9px;font-size:12px}.badge.muted{color:var(--muted);border-color:var(--line);background:0 0}.scenario-controls{border:1px dashed var(--line-strong);border-radius:8px;flex-wrap:wrap;gap:8px 14px;margin-top:10px;padding:10px 12px;display:flex}.adj{color:var(--muted);align-items:center;gap:5px;font-size:12px;display:inline-flex}.adj input{width:62px;font:inherit;text-align:right;border:1px solid var(--line-strong);color:var(--ink);background:#fff;border-radius:4px;padding:2px 4px}.adj .unit{color:var(--muted)}.cell[readonly]{color:var(--muted);cursor:default}.recur select:disabled,.recur input:disabled{opacity:.55;cursor:default}@media (prefers-color-scheme:dark){.scenario-row select,.scenario-row button,.adj input{background:#141a21}.badge{color:#9dc0ff;background:#16233a;border-color:#24395c}}.import{margin:0 0 16px}.dropzone{border:1px dashed var(--line-strong);background:#fbfcfe;border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 14px;display:flex}.filebtn{border:1px solid var(--line-strong);cursor:pointer;background:#fff;border-radius:6px;padding:6px 12px;font-weight:500;display:inline-block;position:relative;overflow:hidden}.filebtn input{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.hint{color:var(--muted);font-size:13px}.import-ok,.import-err{margin:8px 2px 0;font-size:13px}.import-ok{color:var(--ink)}.import-ok .skipped{color:var(--muted)}.import-err{color:var(--neg)}@media (prefers-color-scheme:dark){.dropzone{background:#131920}.filebtn{background:#141a21}}.cloudwrap{margin:0 0 14px}.signedout{margin:0}.linkish{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.linkish.danger{color:var(--neg)}.auth{border:1px solid var(--line);background:#fff;border-radius:8px;flex-direction:column;gap:8px;max-width:340px;padding:14px 16px;display:flex}.auth h2{margin:0;font-size:16px}.auth-sub{color:var(--muted);margin:0 0 4px;font-size:12px}.auth label{color:var(--muted);flex-direction:column;gap:3px;font-size:13px;display:flex}.auth input{font:inherit;border:1px solid var(--line-strong);color:var(--ink);background:#fff;border-radius:6px;padding:7px 9px}.auth button[type=submit]{font:inherit;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:6px;padding:8px 12px;font-weight:500}.auth button[type=submit]:disabled{opacity:.6;cursor:default}.auth-error{color:var(--neg);margin:0;font-size:13px}.cloud-row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.cloud-row button,.cloud-row select{font:inherit;border:1px solid var(--line-strong);color:var(--ink);cursor:pointer;background:#fff;border-radius:6px;padding:5px 10px}.cloud-row .linkish{background:0 0;border:none;padding:0}.cloud-row label{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:inline-flex}.cloud-ok{color:var(--income);margin:6px 0 0;font-size:13px}.cloud-err{color:var(--neg);margin:6px 0 0;font-size:13px}.cloud-manage{color:var(--muted);margin-top:8px;font-size:13px}.cloud-manage ul{margin:6px 0 0;padding-left:18px}.cloud-manage li{align-items:center;gap:10px;display:flex}@media (prefers-color-scheme:dark){.auth,.auth input,.cloud-row button,.cloud-row select{background:#141a21}}.suggestions{background:#f4f8fe;border:1px solid #cfe0f5;border-radius:8px;margin:0 0 14px;padding:12px 14px}.sugg-head{margin:0 0 8px;font-size:13px}.suggestions ul{margin:0 0 10px;padding-left:18px;font-size:13px}.suggestions li{margin:2px 0}.suggestions .kept{color:var(--muted)}.sugg-actions{align-items:center;gap:12px;display:flex}.sugg-actions button:first-child{font:inherit;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;border-radius:6px;padding:6px 12px;font-weight:500}@media (prefers-color-scheme:dark){.suggestions{background:#16202c;border-color:#24395c}}.actuals{margin:0 0 12px}.actuals-row{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.actuals-row label{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:inline-flex}.actuals-row select{font:inherit;border:1px solid var(--line-strong);color:var(--ink);background:#fff;border-radius:6px;padding:4px 8px}.switch{cursor:pointer}.variance{border:1px solid var(--line);color:var(--muted);background:#fff;border-radius:8px;flex-wrap:wrap;gap:18px;margin-top:8px;padding:8px 12px;font-size:13px;display:flex}.variance strong{color:var(--ink);font-variant-numeric:tabular-nums}.variance .better strong{color:var(--income)}.variance .worse strong{color:var(--neg)}.cell.actual{border-color:var(--line);background:#fffdf5}.cell.actual.better{color:var(--income);font-weight:600}.cell.actual.worse{color:var(--neg);font-weight:600}@media (prefers-color-scheme:dark){.actuals-row select,.variance{background:#141a21}.cell.actual{background:#1c1a14}}.share{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.share h3{margin:0 0 6px;font-size:13px;font-weight:600}.share-list{margin:0 0 10px;padding:0;font-size:13px;list-style:none}.share-list li{align-items:center;gap:8px;padding:2px 0;display:flex}.role-tag{color:var(--muted);border:1px solid var(--line);background:#eef1f5;border-radius:999px;padding:1px 7px;font-size:11px}.share-form{flex-wrap:wrap;gap:8px;display:flex}.share-form input,.share-form select,.share-form button{font:inherit;border:1px solid var(--line-strong);color:var(--ink);background:#fff;border-radius:6px;padding:5px 9px}.share-form button{cursor:pointer;font-weight:500}.share-error{color:var(--neg);margin:6px 0 0;font-size:13px}@media (prefers-color-scheme:dark){.role-tag{background:#1c232c}.share-form input,.share-form select,.share-form button{background:#141a21}}.import-actuals{flex-wrap:wrap;align-items:center;gap:10px;margin-top:8px;display:flex}.filebtn.small{padding:4px 10px;font-size:13px;font-weight:400}.unmatched{background:#fffaf3;border:1px solid #e6c9a8;border-radius:8px;width:100%;margin-top:8px;padding:8px 12px;font-size:13px}.unmatched summary{cursor:pointer;color:var(--ink)}.unmatched ul{color:var(--muted);margin:6px 0 0;padding-left:18px}@media (prefers-color-scheme:dark){.unmatched{background:#221c14;border-color:#4a3a24}}.comments{border-top:1px solid var(--line);margin-top:12px;padding-top:10px}.comments h3{align-items:center;gap:8px;margin:0 0 8px;font-size:13px;font-weight:600;display:flex}.count{background:var(--accent);color:#fff;border-radius:999px;padding:1px 7px;font-size:11px;font-weight:600}.comment-form{flex-direction:column;gap:6px;max-width:560px;display:flex}.comment-form textarea{font:inherit;border:1px solid var(--line-strong);color:var(--ink);resize:vertical;background:#fff;border-radius:6px;padding:7px 9px}.comment-pin{flex-wrap:wrap;gap:8px;display:flex}.comment-pin select,.comment-pin input,.comment-pin button{font:inherit;border:1px solid var(--line-strong);color:var(--ink);background:#fff;border-radius:6px;padding:5px 9px}.comment-pin input{width:90px}.comment-pin button{cursor:pointer;font-weight:500}.comment-list{max-width:560px;margin:10px 0 0;padding:0;list-style:none}.comment-list li{border:1px solid var(--line);background:#fff;border-radius:8px;margin-bottom:6px;padding:8px 10px}.comment-list li.resolved{opacity:.6}.comment-meta{color:var(--muted);align-items:baseline;gap:8px;font-size:12px;display:flex}.comment-meta strong{color:var(--ink);font-size:13px}.pin{background:#eef1f5;border-radius:999px;padding:1px 7px;font-size:11px}.comment-list p{white-space:pre-wrap;margin:4px 0 6px;font-size:13px}.comment-actions{gap:12px;font-size:12px;display:flex}@media (prefers-color-scheme:dark){.comment-form textarea,.comment-pin select,.comment-pin input,.comment-pin button,.comment-list li{background:#141a21}.pin{background:#1c232c}}
