:root{color-scheme:dark;--bg:#080c18;--panel:#0e1528;--panel2:#111b31;--panel3:#17233b;--line:#27334e;--muted:#8390ac;--subtle:#60718e;--text:#eff4ff;--purple:#9c79ff;--violet:#6b59ff;--cyan:#44e7ed;--green:#42e6a4;--red:#ff688c;--gold:#ffce6c;font-family:Inter,'Segoe UI',system-ui,-apple-system,sans-serif;font-synthesis:none;font-size:14px}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{background:radial-gradient(ellipse 70% 55% at 65% -10%,rgba(58,51,121,.19),transparent 70%),var(--bg);color:var(--text)}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--cyan);outline-offset:2px}a{color:var(--cyan)}#app{min-height:100vh}.boot-loader{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center}.boot-loader p{font-size:11px;color:var(--muted);letter-spacing:.22em}.blink{animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:0}}.layout{display:flex;min-height:100vh}.sidebar{width:248px;flex:0 0 248px;min-height:100vh;background:#0a1020;border-right:1px solid #202943;display:flex;flex-direction:column;padding:25px 16px;position:sticky;top:0;height:100vh;z-index:3}.brand{display:flex;align-items:center;gap:12px;padding:2px 9px 30px}.mark{width:42px;height:42px;border:1px solid #6556a9;box-shadow:inset 0 0 15px #775cff15,0 0 30px #735aff20;background:linear-gradient(140deg,#29265c,#111c36);display:flex;align-items:center;justify-content:center;border-radius:12px;font-weight:900;letter-spacing:-.13em;font-size:18px;color:#fff}.mark span{color:var(--cyan)}.brand-text{display:flex;flex-direction:column;line-height:1.13}.brand-text strong{font-size:18px;letter-spacing:-.045em}.brand-text small{color:var(--muted);letter-spacing:.18em;font-size:9px;margin-top:6px}.nav-title{padding:12px 14px;color:#596985;letter-spacing:.17em;font-size:10px;font-weight:750}.nav-button{width:100%;display:flex;align-items:center;gap:11px;background:transparent;border:1px solid transparent;border-radius:10px;color:#8e9ab6;text-align:left;padding:13px 14px;margin:2px 0;font-weight:650;transition:.15s}.nav-button:hover{background:#142039;color:#fff}.nav-button.active{background:linear-gradient(90deg,#27234c,#131a35);border-color:#4c427c;color:#d9d0ff;box-shadow:inset 3px 0 var(--purple)}.nav-button svg{width:19px;height:19px}.sidebar-bottom{margin-top:auto;padding:16px 10px;border-top:1px solid var(--line)}.mode{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted)}.dot{width:7px;height:7px;background:var(--green);box-shadow:0 0 12px #40e5a5;border-radius:50%}.dot.amber{background:var(--gold);box-shadow:0 0 12px #ffce6c}.sidebar-bottom p{line-height:1.5;color:var(--subtle);font-size:11px;margin:12px 0 0}.main{flex:1;min-width:0;max-width:1550px;margin:0 auto;padding:0 38px 50px}.topbar{height:89px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid #1e2b46;margin-bottom:33px}.crumb{color:var(--subtle);display:flex;align-items:center;gap:9px}.crumb b{color:#dce6ff}.top-actions{display:flex;align-items:center;gap:13px}.avatar{width:35px;height:35px;display:grid;place-items:center;background:linear-gradient(145deg,#5741ab,#1b5167);border:1px solid #756ec7;border-radius:50%;font-weight:850;color:#fff}.userlabel{font-size:12px;color:var(--muted);max-width:180px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.eyebrow{font-size:11px;letter-spacing:.19em;color:var(--cyan);font-weight:750;text-transform:uppercase}.section-title{display:flex;justify-content:space-between;align-items:flex-end;gap:15px;margin:0 0 25px;flex-wrap:wrap}.section-title h1{font-weight:800;letter-spacing:-.055em;font-size:34px;margin:6px 0 6px}.section-title p{color:var(--muted);margin:0;font-size:13px}.button{display:inline-flex;justify-content:center;align-items:center;gap:8px;padding:11px 15px;border-radius:9px;border:1px solid #34415e;background:#1a2742;color:#e6ecff;font-weight:720;transition:.17s;text-decoration:none}.button svg{width:16px;height:16px}.button:hover{border-color:#6f6cae;background:#273658}.button.primary{background:linear-gradient(135deg,#7357ed,#4c57cf);color:white;border-color:#8b7cf1;box-shadow:0 4px 22px #6957d525}.button.primary:hover{filter:brightness(1.14)}.button.ghost{background:transparent;border-color:#27324c;color:#99a7c2}.button.danger{background:#3b1c31;color:#ffadbc;border-color:#864059}.button.small{font-size:12px;padding:8px 11px}.button.tiny{font-size:11px;padding:5px 8px}.button.full{width:100%}.actions{display:flex;gap:8px;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.card{background:linear-gradient(165deg,#11192d,#0d1527 75%);border:1px solid var(--line);border-radius:15px;box-shadow:0 8px 30px #02050d24;min-width:0}.stat{padding:20px 21px;position:relative;overflow:hidden}.stat::before{content:'';position:absolute;right:-40px;top:-35px;width:115px;height:115px;border-radius:50%;background:var(--glow,#9c79ff);filter:blur(59px);opacity:.15}.stat-head{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--muted);font-weight:650}.stat-icon{color:var(--accent,var(--purple));background:#fff1;padding:7px;border-radius:9px;display:flex}.stat-icon svg{width:17px;height:17px}.stat-value{font-size:29px;letter-spacing:-.055em;font-weight:790;margin:18px 0 7px;line-height:1}.stat-note{color:var(--subtle);font-size:11px}.stat-note b{color:var(--accent,var(--green))}.columns{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(290px,1fr);gap:18px;margin-bottom:18px}.panel-head{padding:22px 23px 0;display:flex;justify-content:space-between;gap:12px;align-items:start}.panel-title{font-size:15px;font-weight:790;letter-spacing:-.02em}.panel-sub{font-size:11px;color:var(--muted);margin-top:7px}.chart-container{padding:16px 18px 12px}.chart{width:100%;height:auto;overflow:visible}.chart text{font-family:inherit;font-size:10px;fill:#7082a3}.chart .grid{stroke:#283653;stroke-width:1;stroke-dasharray:2 6}.legend{display:flex;gap:17px;margin:0 24px 22px;color:#a2adca;font-size:11px;flex-wrap:wrap}.legend b{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}.goalbody{padding:21px 23px}.goal-amount{font-size:27px;font-weight:800;letter-spacing:-.045em;margin:9px 0 15px}.goal-meta{display:flex;justify-content:space-between;color:#9ba8c4;font-size:11px}.progress{height:8px;border-radius:100px;background:#283450;overflow:hidden;margin:11px 0}.progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--violet),var(--purple),var(--cyan));box-shadow:0 0 16px #8e72ff55}.forecast-lines{display:grid;gap:13px;margin-top:18px;border-top:1px solid var(--line);padding-top:18px}.forecast-line{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:#9caac7}.forecast-line b{color:var(--text)}.forecast-line b.green{color:var(--green)}.forecast-line b.red{color:var(--red)}.forecast-line b.purple{color:#b6a6ff}.table-wrap{overflow-x:auto;padding:12px 18px 20px}.data-table{width:100%;border-collapse:collapse;text-align:left;min-width:600px}.data-table th{color:#7787a6;font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:800;padding:12px;border-bottom:1px solid var(--line)}.data-table td{border-bottom:1px solid #202b44;color:#d4dff6;padding:14px 12px;font-size:12px}.data-table tr:last-child td{border:0}.data-table .money{font-weight:750;white-space:nowrap}.positive{color:var(--green)!important}.negative{color:var(--red)!important}.muted{color:var(--muted)!important}.tag{border:1px solid;border-radius:5px;font-size:10px;font-weight:760;letter-spacing:.035em;padding:4px 6px;display:inline-block;white-space:nowrap}.tag.paid{color:#58f0b7;background:#103b32;border-color:#21634d}.tag.confirmed{color:#8aeafa;background:#173843;border-color:#23596a}.tag.estimated{color:#ffda88;background:#3e321e;border-color:#68502b}.tag.wage{color:#a9a0ff;background:#29234a;border-color:#50438f}.tag.bill{color:#ffc0d0;background:#3f2638;border-color:#63344b}.empty{padding:28px;text-align:center;color:var(--muted);font-size:12px}.empty svg{margin-bottom:12px;color:#7083aa}.controls{display:flex;gap:11px;align-items:center;flex-wrap:wrap}.date-input,input,select{background:#0d1528;border:1px solid #30405e;color:#e6efff;border-radius:8px;padding:10px 12px;width:100%;outline:none;min-width:0}input[type=date]{color-scheme:dark}input::placeholder{color:#687994}input:focus,select:focus{border-color:#8873e9;box-shadow:0 0 0 3px #7059fc1a}.field label{display:block;font-size:11px;color:#98a9c8;font-weight:700;margin-bottom:7px}.field small{display:block;color:var(--subtle);margin-top:6px;font-size:10px}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.formgrid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.formgrid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.span2{grid-column:span 2}.panel-pad{padding:21px 23px}.panel-pad h2{margin:0 0 6px;font-size:16px}.panel-pad p{color:var(--muted);font-size:12px;line-height:1.7;margin:0 0 18px}.banner{padding:12px 15px;border:1px solid #7a613b;border-radius:10px;background:#262015;color:#ffdea5;display:flex;gap:10px;align-items:start;font-size:12px;line-height:1.6;margin-bottom:20px}.banner svg{flex:0 0 19px}.banner.info{background:#162536;border-color:#315173;color:#a8daf8}.buttonrow{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.buttonrow.right{justify-content:flex-end}.totals{padding:18px 21px;display:flex;justify-content:space-between;color:var(--muted);font-size:12px;border-top:1px solid var(--line)}.totals strong{color:var(--text);font-size:16px}.divider{height:1px;background:var(--line);margin:23px 0}.kicker{font-size:10px;font-weight:780;letter-spacing:.17em;text-transform:uppercase;color:var(--subtle)}.scenario{padding:15px 20px;margin-top:10px;background:#141f37;border:1px dashed #415273;border-radius:11px}.mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.toast{position:fixed;bottom:25px;right:24px;z-index:30;border:1px solid #576a8e;border-radius:11px;background:#192641;color:#f1f5ff;padding:13px 17px;box-shadow:0 14px 38px #0008;max-width:360px;font-size:13px}.toast.error{border-color:#8f405b;color:#ffd7e0}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:23px;background:radial-gradient(ellipse 60% 70% at 50% 0%,#28205266,transparent),#080c18}.auth-card{width:min(430px,100%);padding:31px;border-radius:20px;background:#0f182b;border:1px solid #30395d;box-shadow:0 15px 80px #0009}.auth-card h1{font-size:27px;letter-spacing:-.055em}.auth-card p{line-height:1.65;color:var(--muted);font-size:12px}.auth-card .field{margin:17px 0}.auth-brand{display:flex;gap:12px;align-items:center}.auth-brand h1{margin:0}.auth-notice{padding:11px;background:#172942;border:1px solid #345474;border-radius:9px;color:#b0d9fc;font-size:12px;line-height:1.55;margin-top:14px}.footnote{color:#7585a4;font-size:11px;line-height:1.7}.helper{color:var(--muted);font-size:12px}.right-num{text-align:right}.pill{display:inline-flex;gap:6px;align-items:center;border-radius:50px;background:#1c2740;color:#a1b4d5;border:1px solid #2f3e5b;padding:6px 9px;font-size:10px;letter-spacing:.04em;font-weight:700}.form-actions{margin-top:17px;display:flex;gap:10px;justify-content:flex-end}.section-gap{margin-top:18px}.mono{font-variant-numeric:tabular-nums}.chart-tip{color:var(--subtle);font-size:11px;text-align:right;margin:0 25px 12px}.list-rows{padding:8px 23px 18px}.list-item{display:flex;gap:10px;justify-content:space-between;border-bottom:1px solid var(--line);padding:13px 0;color:#c9d6ed}.list-item:last-child{border:0}.list-item strong{display:block;font-size:12px}.list-item small{display:block;color:var(--muted);font-size:10px;margin-top:5px}.list-item .value{text-align:right;font-size:12px;font-weight:730;white-space:nowrap}.loading-inline{color:var(--muted);font-size:12px}.mobile-title{display:none}@media(max-width:1180px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.columns{grid-template-columns:1fr 1fr}.main{padding:0 24px 40px}.sidebar{width:208px;flex-basis:208px}.stat-value{font-size:26px}}@media(max-width:800px){.layout{display:block;padding-bottom:66px}.sidebar{position:fixed;bottom:0;top:auto;height:67px;min-height:0;width:100%;z-index:8;border-right:0;border-top:1px solid #28334c;padding:5px 10px;flex-direction:row;align-items:center;justify-content:space-around;background:#091022ed;backdrop-filter:blur(16px)}.sidebar .brand,.sidebar .nav-title,.sidebar-bottom{display:none}.nav-button{width:auto;margin:0;border-radius:9px;display:flex;flex-direction:column;gap:3px;padding:6px 10px;font-size:10px;min-width:61px}.nav-button svg{width:20px;height:20px}.nav-button.active{box-shadow:inset 0 -2px var(--purple)}.main{padding:0 16px 24px}.topbar{height:66px;margin-bottom:22px}.columns{grid-template-columns:1fr}.section-title h1{font-size:29px}.formgrid.four,.formgrid.three{grid-template-columns:1fr 1fr}}@media(max-width:520px){.stats{grid-template-columns:1fr 1fr;gap:10px}.stat{padding:14px}.stat-value{font-size:21px}.stat-note{font-size:10px}.stat-head{font-size:10px}.section-title h1{font-size:26px}.section-title{align-items:start}.top-actions .userlabel{display:none}.formgrid,.formgrid.three,.formgrid.four,.mini-grid{grid-template-columns:1fr}.span2{grid-column:auto}.panel-head{padding:19px 17px 0}.panel-pad{padding:18px}.chart-container{padding:6px}.goalbody{padding:19px}.section-title .button{margin-top:8px}.stat-icon{padding:4px}.stat-icon svg{width:14px;height:14px}.table-wrap{padding:8px 10px 14px}.panel-title{font-size:14px}}
/* Mobile navigation: five compact actions, with a More drawer for the remaining pages. */
.mobile-nav,.mobile-menu{display:none}
@media(max-width:800px){
  .sidebar .desktop-nav{display:none}
  .sidebar .mobile-nav{display:flex;width:100%;align-items:center;justify-content:space-between;gap:2px}
  .mobile-nav .nav-button{flex:1;min-width:0;padding:6px 4px;text-align:center;align-items:center;font-size:10px}
  .mobile-menu{display:none;position:absolute;bottom:70px;left:8px;right:8px;max-height:70vh;overflow-y:auto;background:#111b31;border:1px solid #425179;border-radius:14px;box-shadow:0 -14px 40px #0009;padding:9px;grid-template-columns:1fr 1fr;gap:3px}
  .mobile-menu.open{display:grid}
  .mobile-menu .nav-button{width:100%;min-width:0;display:flex;flex-direction:row;text-align:left;justify-content:flex-start;gap:8px;padding:10px;font-size:12px}
}
@media(min-width:801px){.mobile-nav,.mobile-menu{display:none!important}}
/* Loans and credit cards have separate working areas and summary cards. */
.debt-switch{margin:0 0 20px}.debt-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:16px 0 20px}
.debt-account .goal-amount{font-size:25px}.debt-account .buttonrow{align-items:center}
.mini-label{padding:12px;border-radius:8px;background:var(--panel2);color:var(--cyan);border:1px solid var(--line)}
@media(max-width:650px){.debt-grid{grid-template-columns:1fr}.debt-switch .button{flex:1}.debt-switch{display:flex}}