:root{--bg:#faf7f2;--bg-elev:#fff;--bg-sunk:#f4f0e9;--border:oklch(92% .005 80);--border-strong:oklch(86% .008 80);--text:oklch(22% .01 80);--text-muted:oklch(50% .01 80);--text-subtle:oklch(65% .01 80);--nec:oklch(55% .08 155);--nec-soft:oklch(95% .025 155);--nec-mid:oklch(85% .05 155);--want:oklch(65% .12 60);--want-soft:oklch(96% .035 60);--want-mid:oklch(87% .07 60);--inv:oklch(50% .1 260);--inv-soft:oklch(95% .03 260);--inv-mid:oklch(86% .05 260);--shadow-sm:0 1px 2px oklch(20% .01 80/.04), 0 0 0 1px oklch(20% .01 80/.04);--shadow-md:0 1px 3px oklch(20% .01 80/.06), 0 4px 12px oklch(20% .01 80/.04), 0 0 0 1px oklch(20% .01 80/.04);--shadow-lg:0 4px 12px oklch(20% .01 80/.08), 0 16px 40px oklch(20% .01 80/.1);--radius:14px;--radius-sm:8px;--radius-lg:20px;--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;font-feature-settings:"cv11", "ss01";font-size:14px;line-height:1.45}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}input,select,textarea{font:inherit;color:inherit}.app{grid-template-columns:260px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:var(--bg);border-right:1px solid var(--border);flex-direction:column;gap:24px;height:100vh;padding:24px 16px;display:flex;position:sticky;top:0;overflow-y:auto}.brand{align-items:center;gap:10px;margin-bottom:8px;padding:0 8px;display:flex}.brand-mark{background:var(--text);width:28px;height:28px;color:var(--bg);letter-spacing:-.02em;border-radius:8px;place-items:center;font-size:13px;font-weight:600;display:grid}.brand-name{letter-spacing:-.02em;font-size:15px;font-weight:600}.nav{flex-direction:column;gap:2px;display:flex}.nav-item{color:var(--text-muted);text-align:left;border-radius:10px;align-items:center;gap:10px;width:100%;padding:9px 12px;font-size:13.5px;font-weight:500;text-decoration:none;transition:background .12s,color .12s;display:flex}.nav-item:hover{color:var(--text);background:oklch(95% .005 80)}.nav-item.active{background:var(--bg-elev);color:var(--text);box-shadow:var(--shadow-sm)}.nav-icon{opacity:.7;flex-shrink:0;width:16px;height:16px}.nav-item.active .nav-icon{opacity:1}.sidebar-section-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-subtle);justify-content:space-between;align-items:center;margin-bottom:8px;padding:0 12px;font-size:11px;font-weight:500;display:flex}.sidebar-add-btn{width:18px;height:18px;color:var(--text-subtle);border-radius:5px;place-items:center;transition:background .12s;display:grid}.sidebar-add-btn:hover{color:var(--text);background:oklch(94% .005 80)}.account-card{background:var(--bg-elev);box-shadow:var(--shadow-sm);cursor:pointer;border-radius:10px;flex-direction:column;margin-bottom:6px;padding:12px;transition:transform .12s;display:flex;position:relative}.account-card:hover{transform:translateY(-1px)}.account-card-label{color:var(--text-muted);align-items:center;gap:6px;font-size:12px;font-weight:500;display:flex}.account-dot{background:var(--text-muted);border-radius:50%;width:6px;height:6px}.account-card.savings .account-dot{background:var(--inv)}.account-card-balance{font-family:var(--font-mono);letter-spacing:-.02em;margin-top:4px;font-size:17px;font-weight:500}.account-card-edit{width:22px;height:22px;color:var(--text-subtle);opacity:0;border-radius:5px;place-items:center;transition:opacity .12s,background .12s;display:grid;position:absolute;top:8px;right:8px}.account-card:hover .account-card-edit{opacity:1}.account-card-edit:hover{background:var(--bg-sunk);color:var(--text)}.main{width:100%;max-width:1280px;padding:32px 40px 60px}.topbar{justify-content:space-between;align-items:center;margin-bottom:28px;display:flex}.topbar h1{letter-spacing:-.025em;font-size:26px;font-weight:600}.topbar-sub{color:var(--text-muted);margin-top:2px;font-size:13.5px}.topbar-actions{align-items:center;gap:8px;display:flex}.btn{border-radius:9px;align-items:center;gap:8px;padding:9px 14px;font-size:13px;font-weight:500;transition:background .12s,transform 80ms;display:inline-flex}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--text);color:var(--bg)}.btn-primary:hover{background:oklch(32% .01 80)}.btn-ghost{background:var(--bg-elev);color:var(--text);box-shadow:var(--shadow-sm)}.btn-ghost:hover{background:oklch(98% .005 80)}.month-switcher{background:var(--bg-elev);box-shadow:var(--shadow-sm);border-radius:9px;align-items:center;gap:4px;padding:4px;display:inline-flex}.month-switcher button{width:28px;height:28px;color:var(--text-muted);border-radius:6px;place-items:center;display:grid}.month-switcher button:hover{background:var(--bg-sunk);color:var(--text)}.month-switcher .month-label{text-align:center;min-width:110px;padding:0 12px;font-size:13px;font-weight:500}.card{background:var(--bg-elev);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:24px}.card-h{justify-content:space-between;align-items:baseline;margin-bottom:16px;display:flex}.card-title{color:var(--text-muted);letter-spacing:-.005em;font-size:13px;font-weight:500}.num{font-family:var(--font-mono);font-feature-settings:"tnum";letter-spacing:-.02em}.hero-grid{grid-template-columns:1.4fr 1fr 1fr 1fr;gap:12px;margin-bottom:18px;display:grid}.hero-card{background:var(--bg-elev);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px 20px}.hero-card.primary{background:var(--text);color:var(--bg)}.hero-card .label{color:var(--text-subtle);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;font-size:12px;font-weight:500}.hero-card.primary .label{color:oklch(75% .01 80)}.hero-card .value{font-family:var(--font-mono);letter-spacing:-.025em;font-size:26px;font-weight:500}.hero-card.primary .value{font-size:30px}.hero-card .delta{color:var(--text-muted);align-items:center;gap:4px;margin-top:4px;font-size:12px;display:inline-flex}.hero-card .delta.up{color:oklch(55% .1 155)}.hero-card .delta.down{color:oklch(55% .15 30)}.envelopes-row{grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:18px;display:grid}.envelope{background:var(--bg-elev);border-radius:var(--radius);box-shadow:var(--shadow-sm);cursor:pointer;flex-direction:column;padding:22px;transition:transform .15s,box-shadow .15s;display:flex;position:relative;overflow:hidden}.envelope:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.envelope-corner{background:var(--env-soft);opacity:.6;border-bottom-left-radius:80px;width:80px;height:80px;position:absolute;top:0;right:0}.envelope-head{z-index:1;justify-content:space-between;align-items:center;margin-bottom:16px;display:flex;position:relative}.envelope-tag{background:var(--env-soft);color:var(--env);letter-spacing:.02em;text-transform:uppercase;border-radius:6px;align-items:center;gap:6px;padding:4px 9px;font-size:11px;font-weight:600;display:inline-flex}.envelope-tag-dot{background:var(--env);border-radius:50%;width:6px;height:6px}.envelope-pct{font-family:var(--font-mono);color:var(--text-muted);font-size:12px;font-weight:500}.envelope-name{letter-spacing:-.02em;margin-bottom:4px;font-size:18px;font-weight:600}.envelope-spent-row{align-items:baseline;gap:8px;margin-bottom:14px;display:flex}.envelope-spent{font-family:var(--font-mono);letter-spacing:-.02em;font-size:22px;font-weight:500}.envelope-budget{font-family:var(--font-mono);color:var(--text-muted);font-size:13px}.envelope-bar{background:var(--bg-sunk);border-radius:4px;height:8px;margin-bottom:12px;position:relative;overflow:hidden}.envelope-bar-fill{background:var(--env);border-radius:4px;height:100%;transition:width .4s}.envelope-bar.over .envelope-bar-fill{background:oklch(60% .18 30)}.envelope-foot{color:var(--text-muted);justify-content:space-between;align-items:center;font-size:12px;display:flex}.envelope-remaining{font-family:var(--font-mono);color:var(--text);font-weight:500}.envelope-remaining.over{color:oklch(55% .18 30)}.categories-detail{background:var(--bg-elev);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:24px}.categories-tabs{background:var(--bg-sunk);border-radius:10px;gap:4px;width:fit-content;margin-bottom:18px;padding:4px;display:flex}.categories-tab{color:var(--text-muted);border-radius:7px;align-items:center;gap:6px;padding:7px 14px;font-size:12.5px;font-weight:500;display:flex}.categories-tab:hover{color:var(--text)}.categories-tab.active{background:var(--bg-elev);color:var(--text);box-shadow:var(--shadow-sm)}.categories-tab-dot{border-radius:50%;width:6px;height:6px}.cat-grid{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.cat-tile{background:var(--bg-sunk);cursor:pointer;border-radius:10px;flex-direction:column;gap:8px;padding:14px;transition:background .12s;display:flex;position:relative}.cat-tile:hover{background:oklch(93% .005 80)}.cat-tile-head{justify-content:space-between;align-items:center;display:flex}.cat-tile-name{color:var(--text);font-size:12.5px;font-weight:500}.cat-tile-amount{font-family:var(--font-mono);letter-spacing:-.02em;font-size:15px;font-weight:500}.cat-tile-bar{background:oklch(88% .005 80);border-radius:2px;height:4px;overflow:hidden}.cat-tile-bar-fill{background:var(--env);border-radius:2px;height:100%}.cat-tile-meta{font-family:var(--font-mono);color:var(--text-muted);font-size:10.5px}.cat-tile.add{border:1.5px dashed var(--border-strong);color:var(--text-muted);background:0 0;justify-content:center;align-items:center;min-height:86px;font-size:12.5px}.cat-tile.add:hover{border-color:var(--text-muted);background:oklch(97% .005 80)}.cat-tile-delete{width:20px;height:20px;color:var(--text-subtle);opacity:0;background:oklch(100% 0 0/.7);border-radius:5px;place-items:center;transition:opacity .12s;display:grid;position:absolute;top:6px;right:6px}.cat-tile:hover .cat-tile-delete{opacity:1}.cat-tile-delete:hover{color:oklch(50% .18 30)}.tx-toolbar{align-items:center;gap:8px;margin-bottom:14px;display:flex}.tx-search{background:var(--bg-elev);box-shadow:var(--shadow-sm);border:none;border-radius:9px;flex:1;padding:10px 14px;font-size:13.5px}.tx-search:focus{outline:2px solid var(--text);outline-offset:1px}.tx-filter-pill{background:var(--bg-elev);box-shadow:var(--shadow-sm);cursor:pointer;border-radius:9px;align-items:center;gap:6px;padding:8px 12px;font-size:12.5px;font-weight:500;display:inline-flex}.tx-filter-pill:hover{background:oklch(98% .005 80)}.tx-filter-pill.active{background:var(--text);color:var(--bg)}.tx-list{background:var(--bg-elev);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.tx-day-h{text-transform:uppercase;letter-spacing:.08em;color:var(--text-subtle);background:var(--bg-elev);justify-content:space-between;align-items:baseline;padding:14px 22px 8px;font-size:11px;font-weight:600;display:flex}.tx-day-h .day-total{font-family:var(--font-mono);font-weight:500}.tx-row{cursor:pointer;border-top:1px solid oklch(96% .005 80);grid-template-columns:36px 1fr 130px 120px 100px;align-items:center;gap:14px;padding:12px 22px;transition:background .1s;display:grid}.tx-row:hover{background:oklch(99% .005 80)}.tx-icon{background:var(--env-soft);width:32px;height:32px;color:var(--env);border-radius:8px;place-items:center;font-size:13px;font-weight:600;display:grid}.tx-merchant{font-size:13.5px;font-weight:500}.tx-cat{color:var(--text-muted);margin-top:1px;font-size:12px}.tx-envelope-tag{background:var(--env-soft);color:var(--env);border-radius:5px;align-items:center;gap:5px;width:fit-content;padding:3px 8px;font-size:11px;font-weight:500;display:inline-flex}.tx-envelope-tag-dot{background:var(--env);border-radius:50%;width:5px;height:5px}.tx-account{color:var(--text-muted);font-size:12.5px}.tx-amount{font-family:var(--font-mono);text-align:right;letter-spacing:-.01em;font-size:14px;font-weight:500}.tx-amount.income{color:oklch(50% .1 155)}.stats-grid{grid-template-columns:2fr 1fr;gap:12px;display:grid}.donut-wrap{align-items:center;gap:28px;display:flex}.donut-svg{flex-shrink:0}.donut-legend{flex-direction:column;flex:1;gap:14px;display:flex}.donut-legend-row{flex-direction:column;gap:4px;display:flex}.donut-legend-top{justify-content:space-between;align-items:baseline;display:flex}.donut-legend-label{align-items:center;gap:8px;font-size:13px;font-weight:500;display:inline-flex}.donut-legend-dot{border-radius:50%;width:8px;height:8px}.donut-legend-amount{font-family:var(--font-mono);font-size:13px;font-weight:500}.donut-legend-bar{background:var(--bg-sunk);border-radius:2px;height:4px;overflow:hidden}.donut-legend-bar-fill{border-radius:2px;height:100%}.donut-legend-meta{color:var(--text-muted);font-size:11.5px;font-family:var(--font-mono)}.bars-chart{flex-direction:column;gap:4px;margin-top:12px;display:flex}.bars-row{grid-template-columns:32px 1fr 70px;align-items:center;gap:12px;padding:8px 0;display:grid}.bars-month{color:var(--text-muted);text-transform:uppercase;font-size:11.5px;font-weight:500}.bars-stack{background:var(--bg-sunk);border-radius:4px;height:14px;display:flex;overflow:hidden}.bars-stack>span{height:100%;transition:width .3s;display:block}.bars-total{font-family:var(--font-mono);text-align:right;font-size:12px;font-weight:500}.top-cats{flex-direction:column;gap:12px;margin-top:8px;display:flex}.top-cat{grid-template-columns:auto 1fr auto;align-items:center;gap:12px;display:grid}.top-cat-icon{background:var(--env-soft);width:32px;height:32px;color:var(--env);border-radius:8px;place-items:center;font-size:12px;font-weight:600;display:grid}.top-cat-info{flex-direction:column;gap:4px;display:flex}.top-cat-name{font-size:13px;font-weight:500}.top-cat-bar{background:var(--bg-sunk);border-radius:2px;height:4px;overflow:hidden}.top-cat-bar-fill{border-radius:2px;height:100%}.top-cat-amount{font-family:var(--font-mono);font-size:13px;font-weight:500}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:oklch(20% .01 80/.3);place-items:center;animation:.18s fadeIn;display:grid;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--bg-elev);width:480px;max-width:92vw;box-shadow:var(--shadow-lg);border-radius:18px;padding:28px;animation:.22s cubic-bezier(.34,1.56,.64,1) pop}@keyframes pop{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:none}}.modal h2{letter-spacing:-.02em;margin-bottom:4px;font-size:19px;font-weight:600}.modal p.sub{color:var(--text-muted);margin-bottom:22px;font-size:13px}.field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.field label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:500}.field input,.field select{background:var(--bg-sunk);border:1.5px solid #0000;border-radius:9px;padding:10px 12px;font-size:14px;transition:border-color .12s,background .12s}.field input:focus,.field select:focus{border-color:var(--text);background:var(--bg-elev);outline:none}.field-amount{background:var(--bg-sunk);border:1.5px solid #0000;border-radius:9px;align-items:center;padding:0 14px;transition:border-color .12s,background .12s;display:flex}.field-amount:focus-within{border-color:var(--text);background:var(--bg-elev)}.field-amount .currency{font-family:var(--font-mono);color:var(--text-muted);font-size:22px;font-weight:500}.field-amount input{font-family:var(--font-mono);letter-spacing:-.02em;background:0 0;border:none;flex:1;padding:14px 8px;font-size:28px;font-weight:500}.field-amount input:focus{outline:none}.envelope-radio{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.envelope-radio-tile{background:var(--bg-sunk);cursor:pointer;border:1.5px solid #0000;border-radius:10px;flex-direction:column;gap:4px;padding:12px;transition:border-color .12s,background .12s;display:flex}.envelope-radio-tile:hover{background:oklch(94% .005 80)}.envelope-radio-tile.selected{background:var(--bg-elev);border-color:var(--env);box-shadow:0 0 0 3px var(--env-soft)}.envelope-radio-name{align-items:center;gap:6px;font-size:12.5px;font-weight:600;display:flex}.envelope-radio-meta{color:var(--text-muted);font-size:11px;font-family:var(--font-mono)}.modal-actions{justify-content:flex-end;gap:8px;margin-top:22px;display:flex}.modal-close{width:30px;height:30px;color:var(--text-muted);border-radius:8px;place-items:center;display:grid;position:absolute;top:18px;right:18px}.modal-close:hover{background:var(--bg-sunk)}.acct-edit-row{background:var(--bg-sunk);border-radius:10px;align-items:center;gap:8px;margin-bottom:8px;padding:12px;display:flex}.acct-edit-row input.name{background:var(--bg-elev);border:1px solid var(--border);border-radius:6px;flex:1;padding:6px 8px;font-size:13px}.acct-edit-row input.bal{background:var(--bg-elev);border:1px solid var(--border);width:110px;font-size:13px;font-family:var(--font-mono);text-align:right;border-radius:6px;padding:6px 8px}.acct-edit-row .del-btn{width:28px;height:28px;color:var(--text-muted);border-radius:6px;place-items:center;display:grid}.acct-edit-row .del-btn:hover{color:oklch(45% .18 30);background:oklch(92% .06 30)}.cat-add-input{background:var(--bg-elev);border:1.5px solid var(--text);border-radius:8px;width:100%;padding:8px 10px;font-size:12px}.section-title{color:var(--text);align-items:center;gap:8px;margin-bottom:14px;font-size:13px;font-weight:600;display:flex}.section-title-meta{color:var(--text-muted);font-size:12px;font-weight:400;font-family:var(--font-mono)}.env-necessities{--env:var(--nec);--env-soft:var(--nec-soft);--env-mid:var(--nec-mid)}.env-wants{--env:var(--want);--env-soft:var(--want-soft);--env-mid:var(--want-mid)}.env-investments{--env:var(--inv);--env-soft:var(--inv-soft);--env-mid:var(--inv-mid)}.recurring-grid{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px;display:grid}.rec-summary{background:var(--bg-elev);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:22px}.rec-summary .label{color:var(--text-subtle);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px;font-size:12px;font-weight:500}.rec-summary-row{border-top:1px solid oklch(96% .005 80);justify-content:space-between;align-items:center;padding:8px 0;display:flex}.rec-summary-row:first-of-type{border-top:none}.rec-summary-row .name{align-items:center;gap:8px;font-size:13px;display:flex}.rec-summary-row .name .dot{border-radius:50%;width:6px;height:6px}.rec-summary-row .amount{font-family:var(--font-mono);font-size:13.5px;font-weight:500}.rec-list{background:var(--bg-elev);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.rec-row{border-top:1px solid oklch(96% .005 80);grid-template-columns:36px 1fr 140px 130px 110px 90px 32px;align-items:center;gap:14px;padding:14px 22px;transition:background .1s;display:grid}.rec-row:first-of-type{border-top:none}.rec-row:hover{background:oklch(99% .005 80)}.rec-row.inactive{opacity:.5}.rec-icon{background:var(--env-soft);width:32px;height:32px;color:var(--env);border-radius:8px;place-items:center;font-size:13px;font-weight:600;display:grid}.rec-icon.income{color:oklch(45% .1 155);background:oklch(95% .04 155)}.rec-merchant{font-size:13.5px;font-weight:500}.rec-meta{color:var(--text-muted);margin-top:1px;font-size:12px}.rec-frequency{color:var(--text-muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.rec-frequency-icon{background:var(--bg-sunk);width:22px;height:22px;color:var(--text-muted);border-radius:6px;place-items:center;display:grid}.rec-next{font-family:var(--font-mono);color:var(--text-muted);font-size:12px}.rec-amount{font-family:var(--font-mono);text-align:right;font-size:14px;font-weight:500}.rec-amount.income{color:oklch(50% .1 155)}.rec-toggle{cursor:pointer;background:oklch(88% .005 80);border-radius:11px;width:36px;height:20px;transition:background .15s;position:relative}.rec-toggle.on{background:var(--text)}.rec-toggle:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000026}.rec-toggle.on:after{transform:translate(16px)}.rec-action-btn{width:28px;height:28px;color:var(--text-subtle);border-radius:7px;place-items:center;display:grid}.rec-action-btn:hover{background:var(--bg-sunk);color:var(--text)}.tx-transfer-arrow{color:var(--text-muted);font-size:11px;font-family:var(--font-mono);align-items:center;gap:4px;display:inline-flex}.modal-tabs{background:var(--bg-sunk);border-radius:10px;gap:4px;margin-bottom:18px;padding:4px;display:flex}.modal-tab{color:var(--text-muted);text-align:center;border-radius:7px;flex:1;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-size:13px;font-weight:500;display:inline-flex}.modal-tab:hover{color:var(--text)}.modal-tab.active{background:var(--bg-elev);color:var(--text);box-shadow:var(--shadow-sm)}.recurring-toggle{background:var(--bg-sunk);cursor:pointer;border-radius:10px;align-items:center;gap:12px;margin-bottom:14px;padding:14px;display:flex}.recurring-toggle:hover{background:oklch(94% .005 80)}.recurring-toggle .info{flex:1}.recurring-toggle .title{font-size:13px;font-weight:500}.recurring-toggle .desc{color:var(--text-muted);margin-top:2px;font-size:11.5px}.recurring-toggle .switch{background:oklch(85% .005 80);border-radius:11px;flex-shrink:0;width:36px;height:20px;transition:background .15s;position:relative}.recurring-toggle .switch.on{background:var(--text)}.recurring-toggle .switch:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #00000026}.recurring-toggle .switch.on:after{transform:translate(16px)}.transfer-row{grid-template-columns:1fr auto 1fr;align-items:end;gap:10px;display:grid}.transfer-arrow-icon{background:var(--bg-sunk);width:36px;height:36px;color:var(--text-muted);border-radius:50%;place-items:center;margin-bottom:8px;display:grid}.login-page{background:var(--bg);grid-template-columns:1fr 1fr;min-height:100vh;display:grid}.login-left{flex-direction:column;padding:40px 60px;display:flex;position:relative}.login-brand{align-items:center;gap:10px;font-size:15px;font-weight:600;display:flex}.login-card{width:100%;max-width:380px;margin:auto}.login-h1{letter-spacing:-.025em;margin-bottom:6px;font-size:28px;font-weight:600}.login-sub{color:var(--text-muted);margin-bottom:26px;font-size:13.5px}.login-card .field input{background:var(--bg-elev);border:1.5px solid var(--border);padding:12px 14px}.login-card .field input:focus{background:var(--bg-elev);border-color:var(--text)}.login-remember{color:var(--text-muted);cursor:pointer;align-items:center;gap:10px;margin:6px 0 18px;font-size:13px;display:flex}.login-check{border:1.5px solid var(--border-strong);background:var(--bg-elev);width:16px;height:16px;color:var(--bg);border-radius:4px;place-items:center;transition:background .12s,border-color .12s;display:grid}.login-check.on{background:var(--text);border-color:var(--text)}.login-divider{color:var(--text-subtle);text-transform:uppercase;letter-spacing:.08em;align-items:center;gap:12px;margin:22px 0 14px;font-size:11px;font-weight:500;display:flex}.login-divider:before,.login-divider:after{content:"";background:var(--border);flex:1;height:1px}.login-sso{justify-content:center;width:100%;margin-bottom:8px;padding:11px}.login-switch{text-align:center;color:var(--text-muted);margin-top:22px;font-size:13px}.login-link{color:var(--text);font:inherit;cursor:pointer;text-underline-offset:3px;background:0 0;border:none;padding:0;font-weight:500;-webkit-text-decoration:underline oklch(85% .005 80);text-decoration:underline oklch(85% .005 80)}.login-link:hover{-webkit-text-decoration-color:var(--text);text-decoration-color:var(--text)}.login-foot{color:var(--text-subtle);text-align:center;font-size:11.5px}.login-right{background:var(--text);color:var(--bg);justify-content:center;align-items:center;padding:40px 50px;display:flex;position:relative;overflow:hidden}.login-right:before{content:"";opacity:.5;background:oklch(30% .01 80);border-radius:50%;width:400px;height:400px;position:absolute;top:-100px;right:-100px}.login-right:after{content:"";opacity:.4;background:oklch(28% .02 60);border-radius:50%;width:380px;height:380px;position:absolute;bottom:-150px;left:-100px}.login-hero{z-index:1;max-width:460px;position:relative}.login-hero-tag{letter-spacing:.08em;text-transform:uppercase;color:oklch(85% .005 80);background:oklch(30% .01 80);border-radius:6px;margin-bottom:24px;padding:6px 12px;font-size:11px;font-weight:600;display:inline-block}.login-hero-title{letter-spacing:-.03em;margin-bottom:36px;font-size:42px;font-weight:600;line-height:1.08}.login-hero-cards{flex-direction:column;gap:8px;margin-bottom:32px;display:flex}.login-hero-card{background:oklch(27% .01 80);border-radius:12px;grid-template-columns:60px 1fr 110px;align-items:center;gap:14px;padding:14px 18px;display:grid}.login-hero-card-pct{font-family:var(--font-mono);letter-spacing:-.02em;color:var(--env);font-size:26px;font-weight:500}.login-hero-card-pct span{opacity:.7;margin-left:1px;font-size:14px}.login-hero-card-label{font-size:14px;font-weight:500}.login-hero-card-bar{background:oklch(35% .01 80);border-radius:2px;height:4px;margin-top:6px;overflow:hidden}.login-hero-card-bar>span{background:var(--env);border-radius:2px;height:100%;display:block}.login-hero-card-meta{font-family:var(--font-mono);color:oklch(70% .005 80);text-align:right;font-size:11.5px}.login-hero-quote{color:oklch(85% .005 80);border-left:2px solid oklch(45% .01 80);padding-left:14px;font-size:14px;font-style:italic;line-height:1.5}.login-hero-quote-author{color:oklch(65% .005 80);margin-top:8px;font-size:12px;font-style:normal}@media (width<=900px){.login-page{grid-template-columns:1fr}.login-right{display:none}}@media (width<=1024px){.main{padding:24px 24px 60px}.hero-grid{grid-template-columns:repeat(2,1fr)}.envelopes-row,.stats-grid,.recurring-grid{grid-template-columns:1fr}.cat-grid{grid-template-columns:repeat(3,1fr)}.envelope-radio{grid-template-columns:1fr}.tx-toolbar{flex-wrap:wrap}.tx-search{flex:100%}.tx-row{grid-template-columns:36px 1fr 100px;gap:10px;padding:12px 18px}.tx-row>div:nth-child(3),.tx-row>div:nth-child(4){display:none}.rec-row{grid-template-columns:32px 1fr auto auto;gap:10px;padding:12px 16px}.rec-row .rec-frequency,.rec-row .rec-next,.rec-row>.rec-meta:nth-of-type(2){display:none}.donut-wrap{flex-direction:column;gap:18px}.donut-legend{width:100%}}@media (width<=640px){html,body{overflow-x:hidden}.app{grid-template-rows:auto 1fr;grid-template-columns:1fr}.sidebar{border-right:none;border-bottom:1px solid var(--border);z-index:10;background:var(--bg);flex-direction:row;align-items:center;gap:12px;height:auto;padding:10px 14px;position:sticky;top:0;overflow-x:auto}.sidebar .brand{flex-shrink:0;margin-bottom:0}.sidebar .nav{flex-direction:row;flex-shrink:0;gap:4px}.sidebar .nav-item{white-space:nowrap;padding:8px 10px;font-size:13px}.sidebar>div:not(.brand):not(.nav),.sidebar-foot{display:none}.main{padding:20px 14px 60px}.topbar{flex-direction:column;align-items:stretch;gap:12px;margin-bottom:18px}.topbar h1{font-size:22px}.topbar-actions{flex-wrap:wrap;gap:8px}.month-switcher{flex:1;justify-content:space-between}.month-switcher .month-label{flex:1;min-width:0}.bars-row{grid-template-columns:28px 1fr 60px;gap:8px}.hero-grid,.cat-grid{grid-template-columns:1fr}.tx-toolbar{flex-wrap:wrap}.tx-search{width:100%}.tx-filter-pill{flex-shrink:0}.modal{max-width:none;max-height:calc(100vh - 24px);overflow-y:auto;width:calc(100% - 24px)!important}}.ratios-grid.svelte-1prpyun{grid-template-columns:1fr 1fr 1fr;gap:12px;margin:8px 0 6px;display:grid}.field.svelte-1prpyun span:where(.svelte-1prpyun){align-items:center;gap:8px;display:inline-flex}.dot.svelte-1prpyun{border-radius:50%;flex-shrink:0;width:8px;height:8px}.dot.nec.svelte-1prpyun{background:var(--nec)}.dot.want.svelte-1prpyun{background:var(--want)}.dot.inv.svelte-1prpyun{background:var(--inv)}.ratio-input.svelte-1prpyun{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-elev);align-items:center;gap:4px;padding:0 12px;display:flex}.ratio-input.svelte-1prpyun input:where(.svelte-1prpyun){width:100%;font-family:var(--font-mono);background:0 0;border:0;padding:10px 0;font-size:16px;font-weight:500}.ratio-input.svelte-1prpyun input:where(.svelte-1prpyun):focus{outline:none}.suffix.svelte-1prpyun{color:var(--text-muted);font-size:13px}.sum-line.svelte-1prpyun{color:var(--text-muted);margin-top:10px;font-size:13px}.sum-line.valid.svelte-1prpyun{color:var(--text)}.sum-line.invalid.svelte-1prpyun{color:oklch(50% .18 25)}.server-error.svelte-1prpyun{color:oklch(40% .18 25);background:oklch(95% .04 25);border-radius:6px;margin:12px 0 0;padding:8px 10px;font-size:13px}@media (width<=640px){.ratios-grid.svelte-1prpyun{grid-template-columns:1fr}}.sidebar-foot.svelte-1ccclju{flex-direction:column;gap:2px;margin-top:auto;display:flex}.settings.svelte-1ccclju{font-size:12.5px}.logout.svelte-1ccclju{color:var(--text-muted);font-size:12px}
