:root{--bg:#f6f7fb;--bg-2:#eef0f6;--card:#fff;--line:#e2e8f0;--text:#0f172a;--text-soft:#64748b;--text-dim:#94a3b8;--accent:#2563eb;--accent-deep:#1d4ed8;--violet:#7c3aed;--pink:#db2777;--amber:#f59e0b;--emerald:#16a34a;--coral:#dc2626;--overlay:#0f172a66;--shadow-lg:0 16px 32px #0f172a1f;--radius:3px}:root[data-theme=dark]{--bg:#0a0d1a;--bg-2:#12162a;--card:#12162a;--line:#ffffff1a;--text:#f1f5f9;--text-soft:#8891b0;--text-dim:#5b6389;--accent:#22d3ee;--accent-deep:#0ea5c4;--violet:#a78bfa;--pink:#f472b6;--amber:#fbbf24;--emerald:#34d399;--coral:#fb7185;--overlay:#000000a6;--shadow-lg:0 16px 32px #00000073}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);margin:0;font-family:Inter,sans-serif;transition:background .15s,color .15s}a{color:var(--accent-deep)}.mono{font-family:IBM Plex Mono,monospace}.wrap{max-width:1520px;margin:0 auto;padding:28px 28px 90px}header{border-bottom:2px solid var(--text);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:26px;padding-bottom:18px;display:flex}.brand{align-items:center;gap:12px;display:flex}.brand .dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:10px;height:10px}.eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--text-soft);margin-bottom:4px;font-size:10px}h1{letter-spacing:-.01em;margin:0;font-size:clamp(20px,2.4vw,26px);font-weight:700}.pill{letter-spacing:.14em;text-transform:uppercase;color:var(--text-soft);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:20px;padding:5px 11px;font-size:10px;font-weight:600}.pill:hover{color:var(--text);border-color:var(--text-soft)}.theme-toggle{border-radius:var(--radius);border:1px solid var(--line);cursor:pointer;background:0 0;padding:6px 9px;font-size:14px;line-height:1}.theme-toggle:hover{border-color:var(--text-soft)}.header-links{color:var(--text-soft);font-size:12px}.netnum{text-align:right}.netnum .lbl{letter-spacing:.14em;text-transform:uppercase;color:var(--text-soft);margin-bottom:2px;font-size:10px}.netnum .amt{color:var(--text);font-size:clamp(22px,3vw,30px);font-weight:700}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px}.card-title{text-transform:uppercase;letter-spacing:.12em;color:var(--text-soft);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;margin:0 0 12px;padding-bottom:8px;font-size:11px;font-weight:600;display:flex}.card-sub{color:var(--text-dim);margin-top:-6px;margin-bottom:14px;font-size:11px}.big-num{color:var(--text);margin-bottom:2px;font-family:IBM Plex Mono,monospace;font-size:26px;font-weight:600}.kpi-row{grid-template-columns:repeat(5,1fr);gap:16px;margin-bottom:22px;display:grid}@media (width<=1200px){.kpi-row{grid-template-columns:repeat(3,1fr)}}@media (width<=680px){.kpi-row{grid-template-columns:1fr 1fr}}.kpi-accent{background:var(--accent);border-radius:2px;height:3px;margin-bottom:14px}.kpi-accent.pink{background:var(--pink)}.kpi-accent.amber{background:var(--amber)}.kpi-accent.emerald{background:var(--emerald)}.kpi-delta{color:var(--text-soft);font-size:11px}.grid2{grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;display:grid}.grid3{grid-template-columns:1fr 1fr 1fr;gap:18px;margin-bottom:18px;display:grid}@media (width<=960px){.grid2,.grid3{grid-template-columns:1fr}}.ring-wrap{align-items:center;gap:18px;display:flex}.ring{flex-shrink:0;width:96px;height:96px;position:relative}.ring svg{width:100%;height:100%;transform:rotate(-90deg)}.ring-bg{fill:none;stroke:var(--line);stroke-width:10px}.ring-fill{fill:none;stroke:var(--accent);stroke-width:10px;stroke-linecap:round;transition:stroke-dashoffset 1s}.ring-label{color:var(--text);justify-content:center;align-items:center;font-family:IBM Plex Mono,monospace;font-size:15px;font-weight:700;display:flex;position:absolute;inset:0}.tag{letter-spacing:.08em;text-transform:uppercase;color:#0a0d1a;border-radius:20px;padding:3px 9px;font-size:9px;font-weight:700}.dot-tag{border-radius:50%;flex-shrink:0;width:8px;height:8px}:root[data-theme=dark] .dot-tag{box-shadow:0 0 6px}.mini-row{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);justify-content:space-between;align-items:center;margin-bottom:8px;padding:11px 14px;display:flex}.mini-row:last-child{margin-bottom:0}.mini-row .amt{font-family:IBM Plex Mono,monospace;font-size:14px;font-weight:700}.goal-row{margin-bottom:15px}.goal-row:last-child{margin-bottom:0}.goal-top{justify-content:space-between;margin-bottom:6px;font-size:12px;display:flex}.goal-top .cat{font-weight:600}.bar-bg{background:var(--bg-2);border:1px solid var(--line);border-radius:4px;height:7px;overflow:hidden}.bar-fill{background:var(--accent);border-radius:4px;height:100%;transition:width .6s}.bar-fill.good{background:var(--emerald)}.bar-fill.mid{background:var(--amber)}.bar-fill.danger{background:var(--coral)}.goal-note{color:var(--coral);margin-top:5px;font-size:10px}.tx-list{max-height:400px;padding-right:4px;overflow-y:auto}.tx-row{border-bottom:1px dashed var(--line);grid-template-columns:auto 1fr auto auto;align-items:center;gap:10px;padding:10px 0;font-size:13px;display:grid}.tx-row:last-child{border-bottom:none}.tx-desc{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.tx-desc .cat{color:var(--text-dim);font-size:11px}.tx-amt{white-space:nowrap;font-family:IBM Plex Mono,monospace;font-size:12px;font-weight:700}.tx-amt.neg{color:var(--coral)}.tx-amt.pos{color:var(--emerald)}.empty{color:var(--text-dim);padding:10px 0;font-size:12px;font-style:italic}.acct-row{border-bottom:1px dashed var(--line);grid-template-columns:auto 1fr auto auto;align-items:center;gap:10px;padding:10px 0;font-size:13px;display:grid}.acct-row:last-child{border-bottom:none}.acct-name{font-weight:600}.acct-meta{color:var(--text-dim);font-size:11px}.acct-val{white-space:nowrap;font-family:IBM Plex Mono,monospace;font-weight:700}.row-actions{opacity:0;gap:2px;transition:opacity .15s;display:flex}.tx-row:hover .row-actions,.acct-row:hover .row-actions{opacity:1}.row-actions button{color:var(--text-soft);cursor:pointer;border-radius:var(--radius);background:0 0;border:none;padding:3px 6px;font-size:13px;line-height:1}.row-actions button:hover{color:var(--text);background:var(--bg-2)}.row-actions button.danger:hover{color:var(--coral)}.footnote{text-align:center;color:var(--text-dim);margin-top:30px;font-size:12px}.section-nav{border-bottom:1px solid var(--line);gap:6px;margin-bottom:22px;display:flex;overflow-x:auto}.section-tab{color:var(--text-soft);white-space:nowrap;border-bottom:2px solid #0000;flex-shrink:0;padding:10px 16px;font-size:13px;font-weight:600;text-decoration:none}.section-tab.active{color:var(--text);border-bottom-color:var(--accent)}.section-tab:hover{color:var(--text)}.auth-wrap{justify-content:center;align-items:center;min-height:100%;padding:24px;display:flex}.auth-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);width:100%;max-width:380px;padding:32px}.auth-card h1{margin:0 0 6px;font-size:22px}.auth-card .sub{color:var(--text-soft);margin-bottom:22px;font-size:13px}.field{margin-bottom:14px}.field label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-soft);margin-bottom:6px;font-size:11px;display:block}.field input{border-radius:var(--radius);border:1px solid var(--line);background:var(--card);width:100%;color:var(--text);padding:10px 12px;font-family:Inter,sans-serif;font-size:14px}.field input:focus{border-color:var(--accent);outline:none}.auth-btn{border-radius:var(--radius);background:var(--text);width:100%;color:var(--bg);cursor:pointer;border:none;margin-top:6px;padding:11px;font-size:14px;font-weight:600}.auth-btn:hover{background:var(--text-soft)}.auth-btn:disabled{opacity:.6;cursor:not-allowed}.auth-error{color:var(--coral);margin-top:10px;font-size:12px}.auth-switch{color:var(--text-soft);text-align:center;margin-top:18px;font-size:12px}.auth-switch button{color:var(--accent-deep);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;text-decoration:underline}.loading-screen{min-height:100%;color:var(--text-soft);justify-content:center;align-items:center;font-size:14px;display:flex}.onboard-tabs{gap:8px;margin-bottom:18px;display:flex}.onboard-tabs button{border-radius:var(--radius);border:1px solid var(--line);background:var(--card);color:var(--text-soft);cursor:pointer;flex:1;padding:9px;font-size:12px;font-weight:600}.onboard-tabs button.active{background:var(--text);color:var(--bg);border-color:#0000}.household-panel{position:relative}.household-dropdown{z-index:20;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);width:320px;box-shadow:var(--shadow-lg);padding:18px;position:absolute;top:calc(100% + 8px);right:0}.invite-notice{color:var(--emerald);word-break:break-all;margin-top:10px;font-size:11px}.link-btn{color:var(--accent-deep);cursor:pointer;background:0 0;border:none;padding:0;font-family:Inter,sans-serif;font-size:12px;text-decoration:underline}.modal-overlay{background:var(--overlay);z-index:50;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);width:100%;max-width:420px;max-height:90vh;box-shadow:var(--shadow-lg);padding:26px;overflow-y:auto}.modal-card h2{margin:0 0 18px;font-size:18px}.field select{border-radius:var(--radius);border:1px solid var(--line);background:var(--card);width:100%;color:var(--text);padding:10px 12px;font-family:Inter,sans-serif;font-size:14px}.field select:focus{border-color:var(--accent);outline:none}.field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.modal-actions{gap:10px;margin-top:6px;display:flex}.modal-actions .auth-btn{margin-top:0}.btn-ghost{border-radius:var(--radius);border:1px solid var(--line);color:var(--text-soft);cursor:pointer;background:0 0;flex:1;padding:11px;font-size:14px;font-weight:600}.btn-ghost:hover{color:var(--text);border-color:var(--text-soft)}.add-btn{color:var(--accent-deep);cursor:pointer;background:0 0;border:none;padding:0;font-size:11px;font-weight:600}.modal-card.wide{max-width:960px}.dropzone{border:2px dashed var(--line);border-radius:var(--radius);text-align:center;cursor:pointer;color:var(--text-soft);background:var(--card);margin-bottom:6px;padding:32px;font-size:13px}.dropzone:hover{border-color:var(--accent);color:var(--text)}.csv-summary{color:var(--text-soft);flex-wrap:wrap;gap:16px;margin-bottom:10px;font-size:12px;display:flex}.csv-summary b{color:var(--text)}.csv-table-wrap{border:1px solid var(--line);border-radius:var(--radius);max-height:50vh;margin-bottom:14px;overflow:auto}.csv-table{border-collapse:collapse;width:100%;font-size:12px}.csv-table th{background:var(--card);text-align:left;color:var(--text-soft);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line);padding:8px 10px;font-size:10px;position:sticky;top:0}.csv-table td{border-bottom:1px dashed var(--line);vertical-align:middle;white-space:nowrap;padding:6px 10px}.csv-table td:nth-child(3){white-space:normal;min-width:200px}.csv-table tr.excluded{opacity:.45}.csv-table input[type=text]{border-radius:var(--radius);border:1px solid var(--line);background:var(--card);width:120px;color:var(--text);padding:4px 6px;font-size:12px}.csv-table select{border-radius:var(--radius);border:1px solid var(--line);background:var(--card);color:var(--text);padding:4px 6px;font-size:12px}.badge-dup{color:var(--coral);white-space:nowrap;background:#dc262624;border-radius:8px;margin-left:6px;padding:2px 6px;font-size:9px}.badge-transfer{color:var(--violet);white-space:nowrap;background:#7c3aed24;border-radius:8px;margin-left:6px;padding:2px 6px;font-size:9px}
