:root{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;font-size:16px;line-height:1.5;color-scheme:light;--bg:#f3f5f7;--surface:#fff;--rail:#fff;--soft:#f5f7f8;--text:#18232d;--muted:#5f6d7a;--line:#e4e8ec;--accent:#087e52;--accent-ink:#fff;--selection:#e8f4ed;--warning:#8b5a19;--warning-bg:#fff5e6;--danger:#b23939;--hover:#edf1f4;--shadow:0 14px 48px #172a4026}:root[data-theme=dark]{color-scheme:dark;--bg:#10151c;--surface:#1a212b;--rail:#151b24;--soft:#202935;--text:#f0f3f6;--muted:#a9b5c2;--line:#303b48;--accent:#60d6a0;--accent-ink:#10291d;--selection:#223d32;--warning:#f0bf70;--warning-bg:#3b3021;--danger:#ff9a9a;--hover:#27323f;--shadow:0 14px 48px #0006}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,select{font:inherit}button{min-height:44px;display:inline-flex;justify-content:center;align-items:center;gap:8px;cursor:pointer;border:1px solid transparent;border-radius:9px;padding:10px 17px;background:var(--accent);color:var(--accent-ink);font-weight:600;transition:background .16s,color .16s}button:hover{filter:brightness(.95)}button:disabled{opacity:.55;cursor:wait}button.quiet,.secondary{background:var(--soft);color:var(--text);border-color:var(--line)}button.quiet:hover,.secondary:hover{background:var(--hover);filter:none}a{color:var(--accent);text-underline-offset:3px}input,select{display:block;width:100%;min-height:46px;border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--surface);color:var(--text);margin-top:7px;caret-color:var(--accent)}input::placeholder{color:var(--muted);opacity:1}label{display:block;font-size:.8125rem;color:var(--muted);font-weight:500}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}::selection{background:var(--accent);color:var(--accent-ink)}h1,h2,h3,p{margin:0}h1{font-size:1.875rem;line-height:1.25;letter-spacing:-.025em;font-weight:650}h2{font-size:1.125rem;letter-spacing:-.015em;font-weight:650}h3{font-size:.9375rem;font-weight:600}p{line-height:1.55}.muted,small{color:var(--muted)}small{font-size:.8125rem;line-height:1.5}.brand{font-size:1.5rem;letter-spacing:-.025em;font-weight:750;display:flex;align-items:center;gap:10px}.brandmark{background:var(--accent);color:var(--accent-ink);width:34px;height:34px;border-radius:10px;display:inline-grid;place-items:center;font-size:1.55rem;line-height:1;font-weight:700}.workspace{font-size:.75rem;color:var(--muted);margin:22px 0 14px;padding:12px;border:1px solid var(--line);border-radius:8px}aside{position:fixed;inset:0 auto 0 0;width:232px;background:var(--rail);border-right:1px solid var(--line);padding:30px 20px;display:flex;flex-direction:column;z-index:3}nav{display:grid;gap:5px;margin-top:8px}nav button{justify-content:flex-start;background:transparent;color:var(--muted);font-size:.875rem;min-height:48px;padding:11px 14px;font-weight:550}nav button.active{background:var(--selection);color:var(--accent)}nav button:hover{background:var(--hover);filter:none}svg.icon{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}nav [data-icon]{height:20px}.sidefoot{margin-top:auto;font-size:.75rem;color:var(--muted);padding:15px 8px}.sidefoot button{display:block;margin-top:14px;font-size:.8125rem;background:transparent!important;border:0!important;padding:4px 0}.connection{display:inline-block;width:6px;height:6px;background:var(--accent);border-radius:50%;margin-right:5px}main{margin-left:232px;padding:35px 40px 0;max-width:1640px}header{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-bottom:28px;padding-right:125px}header p{color:var(--muted);font-size:.875rem;margin-top:7px}.header-tools{display:flex;align-items:center;gap:20px}.month{width:174px}.month input{font-size:.8125rem;margin-top:4px}.avatar{width:40px;min-height:40px;border-radius:50%;padding:0;background:var(--soft);border-color:var(--line);color:var(--text)}.theme-toggle{position:fixed;right:35px;top:49px;min-height:40px;background:var(--surface);border-color:var(--line);color:var(--text);padding:8px 12px;font-size:.75rem;z-index:4}.theme-toggle svg{width:17px;height:17px}.panel,.card,.balance-sheet{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:24px;margin-bottom:22px}.panel h2{margin-bottom:18px}.sectionhead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.sectionhead h2{margin:0}.sectionhead button{font-size:.8125rem;min-height:36px;padding:6px 12px}.columns{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:22px}.columns>*{min-width:0}.balance-sheet{padding:0;overflow:hidden}.balance-head{padding:26px 28px;display:flex;align-items:center;justify-content:space-between;gap:24px}.balance-value{font-size:2.5rem;line-height:1.2;font-weight:650;letter-spacing:-.035em;margin:13px 0 8px;font-variant-numeric:tabular-nums}.balance-title{display:flex;align-items:center;gap:12px}.balance-title h2{font-size:.9375rem}.balance-actions{display:flex;flex-direction:column;gap:9px;min-width:165px}.balance-breakdown{display:grid;grid-template-columns:1fr 1fr 1.2fr;border-top:1px solid var(--line);background:var(--soft)}.balance-breakdown>div{padding:20px 28px}.balance-breakdown>div+div{border-left:1px solid var(--line)}.balance-breakdown b{display:block;font-size:1.2rem;letter-spacing:-.02em;margin-top:6px;font-variant-numeric:tabular-nums}.balance-help{padding:13px 28px;border-top:1px solid var(--line);font-size:.8125rem;color:var(--muted)}details summary{cursor:pointer;min-height:28px;display:list-item}details p{margin-top:10px;max-width:75ch}.month-summary{display:grid;grid-template-columns:1fr 1fr;border-bottom:1px solid var(--line);margin-bottom:22px;padding-bottom:20px;gap:15px}.month-summary b{display:block;margin-top:7px;font-size:1.5rem;font-weight:650;font-variant-numeric:tabular-nums}.text-positive{color:var(--accent)}.metric-label{font-size:.8125rem;color:var(--muted)}.row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:15px 0;border-bottom:1px solid var(--line);min-width:0}.row:last-child{border:0}.row>div:first-child{min-width:0}.row h3,.row p{overflow-wrap:anywhere}.row p{margin-top:3px}.amount{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:600;text-align:right}.category-row{margin-top:18px}.category-line{display:flex;justify-content:space-between;gap:15px;font-size:.8125rem}.category-line b{font-variant-numeric:tabular-nums}progress{width:100%;display:block;appearance:none;height:5px;border:0;border-radius:5px;background:var(--line);overflow:hidden;margin-top:9px}progress::-webkit-progress-bar{background:var(--line);border-radius:5px}progress::-webkit-progress-value{background:var(--accent);border-radius:5px}progress::-moz-progress-bar{background:var(--accent);border-radius:5px}.goal-row{display:grid;grid-template-columns:36px 1fr;gap:13px;padding:18px 0;border-bottom:1px solid var(--line)}.goal-row:last-child{border:0}.goal-icon{width:36px;height:36px;background:var(--selection);color:var(--accent);border-radius:10px;display:grid;place-items:center}.goal-top{display:flex;justify-content:space-between;gap:12px}.goal-top b{font-size:.875rem;font-variant-numeric:tabular-nums}.goal-row small{display:block;margin-top:3px}.actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}.actions button{min-height:36px;padding:5px 10px;font-size:.75rem}.note{padding:14px 18px;border-radius:10px;background:var(--soft);color:var(--muted);font-size:.8125rem;line-height:1.55;margin-bottom:20px}.attention{color:var(--warning);background:var(--warning-bg);display:flex;align-items:center;justify-content:space-between;gap:20px;padding:15px 18px;border-radius:10px;font-size:.8125rem;margin-bottom:22px}.attention button{min-height:34px;padding:5px 10px;color:inherit;background:transparent;white-space:nowrap}.empty{padding:28px 4px;color:var(--muted);font-size:.875rem;line-height:1.7;max-width:65ch}.empty b{display:block;color:var(--text);margin-bottom:4px;font-weight:550}.badge{display:inline-flex;align-items:center;gap:5px;border-radius:6px;padding:3px 7px;background:var(--soft);color:var(--muted);font-size:.6875rem;white-space:nowrap}.badge.review{color:var(--warning);background:var(--warning-bg)}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.card.primary{background:var(--selection)}.number{font-size:1.75rem;font-weight:650;font-variant-numeric:tabular-nums;letter-spacing:-.025em;margin:12px 0 6px}.toolbar{display:flex;gap:12px;align-items:center;margin-bottom:18px}.toolbar label{flex:1}.toolbar input{margin:0}.filter-tabs{display:flex;gap:6px;overflow-x:auto;margin-bottom:20px;padding:2px}.filter-tabs button{background:transparent;color:var(--muted);min-height:38px;padding:6px 12px;font-size:.8125rem;white-space:nowrap}.filter-tabs button.active{background:var(--selection);color:var(--accent)}.table-panel{padding:0;overflow:hidden}.table-head{padding:22px 24px 16px;display:flex;justify-content:space-between;gap:20px;align-items:center}.table-head small{display:block;margin-top:5px}.ledger{width:100%;border-collapse:collapse;table-layout:fixed;font-size:.8125rem}.ledger th{text-align:left;background:var(--soft);color:var(--muted);font-size:.6875rem;font-weight:550;padding:11px 20px}.ledger td{padding:15px 20px;border-bottom:1px solid var(--line);vertical-align:middle}.ledger tr:last-child td{border:0}.ledger tbody tr:hover{background:var(--soft)}.ledger th:first-child{width:110px}.ledger th:nth-child(3){width:23%}.ledger th:last-child{width:150px;text-align:right}.ledger .merchant{background:transparent;color:var(--text);padding:0;min-height:28px;font-size:.875rem;font-weight:550;text-align:left;justify-content:start;white-space:normal;overflow-wrap:anywhere}.ledger .merchant:hover{color:var(--accent);filter:none}.ledger td small{display:block;font-size:.75rem;margin-top:3px}.ledger td:last-child{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.ledger .badge{margin-top:5px}.date-mobile{display:none!important}.forms{display:grid;grid-template-columns:1fr 1fr;gap:20px}form{display:grid;gap:16px}form button{justify-self:start}.form-error{font-size:.8125rem;color:var(--danger);margin-top:4px}.form-error:empty{display:none}.login{max-width:440px;margin:13vh auto;padding:25px}.login .brand{margin-bottom:42px}.loginbox h1{font-size:1.75rem}.loginbox p{color:var(--muted);margin-top:12px;font-size:.9375rem}.loginbox form{margin:28px 0 20px}.loginbox button{width:100%;justify-self:stretch}.loginbox small{font-size:.75rem}footer{padding:12px 0 30px;color:var(--muted);font-size:.6875rem}dialog{position:fixed;inset:0 0 0 auto;margin:0;width:min(530px,100vw);max-width:100vw;height:100dvh;max-height:100dvh;overflow:auto;background:var(--surface);color:var(--text);border:0;border-left:1px solid var(--line);padding:28px;box-shadow:var(--shadow)}dialog::backdrop{background:#0f172a66}dialog h2{margin:50px 0 20px}dialog h3{margin-top:20px}dialog form{margin-top:20px}dialog .panel{border:0;padding:0}dialog .panel h2{margin-top:40px}.close{float:right}#toast{position:fixed;bottom:24px;right:24px;max-width:min(460px,90vw);background:var(--text);color:var(--surface);padding:14px 20px;border-radius:10px;box-shadow:var(--shadow);z-index:10;font-size:.875rem}.skip{position:fixed;top:-90px;left:20px;z-index:20;background:var(--surface);padding:15px}.skip:focus{top:10px}.negative{color:var(--danger)}[hidden]{display:none!important}body.busy #content{opacity:.7;pointer-events:none}body.busy{cursor:progress}@media(max-width:1100px){main{padding:28px 24px 0;margin-left:205px}aside{width:205px;padding:26px 16px}.columns{grid-template-columns:1fr}.theme-toggle{right:24px;top:42px}.balance-breakdown>div{padding:18px 20px}.cards{gap:12px}}@media(max-width:700px){body{padding-bottom:calc(72px + env(safe-area-inset-bottom))}aside{position:static;height:65px;width:auto;padding:16px 18px;border-right:0;border-bottom:1px solid var(--line);display:block}aside .brand{font-size:1.25rem}.brandmark{width:29px;height:29px;font-size:1.3rem;border-radius:8px}.workspace,.sidefoot{display:none}nav{position:fixed;bottom:0;left:0;right:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;background:var(--rail);border-top:1px solid var(--line);padding:8px 4px calc(6px + env(safe-area-inset-bottom));margin:0;z-index:5}nav button{min-height:50px;flex-direction:column;justify-content:center;gap:4px;font-size:.625rem;padding:5px 2px;border-radius:8px}nav button.active{background:transparent;color:var(--accent)}main{margin:0;padding:23px 16px 0}header{gap:10px;margin-bottom:22px;padding:0;align-items:start}h1{font-size:1.5rem}header p{font-size:.75rem;max-width:190px}.header-tools{gap:0}.avatar{display:none}.month{width:140px;font-size:.6875rem}.month input{font-size:.75rem;min-height:38px;padding:7px}.theme-toggle{top:14px;right:16px;position:absolute;min-height:36px;padding:6px 10px}.theme-toggle span:last-child{font-size:.6875rem}.balance-head{padding:20px;display:block}.balance-value{font-size:2rem;margin-top:14px}.balance-actions{flex-direction:row;margin-top:20px}.balance-actions button{flex:1;font-size:.75rem;padding:9px}.balance-breakdown{grid-template-columns:1fr 1fr}.balance-breakdown>div{padding:15px 20px}.balance-breakdown>div:last-child{grid-column:1/-1;border-left:0;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.balance-breakdown b{font-size:1.0625rem}.balance-breakdown>div:last-child b{margin:0}.balance-help{padding:12px 20px;font-size:.75rem}.columns,.forms{grid-template-columns:1fr;gap:0}.panel,.card{padding:20px;margin-bottom:16px}.panel h2{font-size:1rem}.cards{grid-template-columns:1fr;gap:0}.attention{font-size:.75rem;padding:12px 14px;gap:8px}.month-summary b{font-size:1.25rem}.goal-row .actions button{min-height:40px}.toolbar{gap:8px;flex-wrap:wrap}.toolbar label{min-width:60%}.toolbar button{font-size:.8125rem}.filter-tabs button{min-height:44px}.table-panel{padding:0}.table-head{padding:18px 16px}.ledger thead{display:none}.ledger,.ledger tbody,.ledger tr{display:block;width:100%}.ledger tr{display:grid;grid-template-columns:minmax(0,1fr) auto;padding:15px 16px;border-bottom:1px solid var(--line);gap:4px 12px}.ledger tr:last-child{border:0}.ledger td{padding:0;border:0}.ledger td:first-child,.ledger td:nth-child(3){display:none}.ledger td:last-child{grid-column:2;grid-row:1;align-self:start;font-size:.8125rem;padding-top:3px}.ledger .merchant{font-size:.8125rem}.ledger td small{font-size:.6875rem}.date-mobile{display:block!important}.ledger td:last-child .badge{display:flex;justify-self:end;max-width:120px}.table-panel .empty{padding:22px 18px}dialog{padding:22px}dialog .actions button{min-height:44px}.login{margin:10vh auto}footer{font-size:.625rem;padding-bottom:18px}#toast{bottom:calc(85px + env(safe-area-inset-bottom));right:16px;left:16px;max-width:none}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:700px){nav button{font-size:.75rem}.ledger .merchant{min-height:44px}.theme-toggle{min-height:44px;top:10px}.goal-row .actions button{min-height:44px}}
@media(max-width:700px){.filter-tabs{flex-wrap:wrap;overflow:visible;gap:3px}.filter-tabs button{font-size:.75rem;padding:6px 10px}.table-head small{font-size:.75rem}.table-head{align-items:flex-start}}

.nowrap{white-space:nowrap}
