:root{--bg:#f4f7fb;--ink:#0f172a;--muted:#64748b;--card:#fff;--line:#e2e8f0;--accent:#2563eb;--accent2:#0f766e;--danger:#b91c1c;--sidebar:#0b1220;--sidebar2:#111c31}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink)}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 20% 20%,#1d4ed8 0,transparent 28%),radial-gradient(circle at 80% 80%,#0f766e 0,transparent 30%),#07101f}.auth-card{width:min(440px,100%);background:#fff;border-radius:24px;padding:30px;box-shadow:0 30px 80px #0008}.auth-card h1{margin:28px 0 18px}.brand{display:flex;align-items:center;gap:11px;color:#fff}.auth-card .brand{color:var(--ink)}.brand.big{font-size:20px}.brand small{display:block;color:#94a3b8;font-size:11px;margin-top:2px}.logo{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,#2563eb,#0f766e);color:#fff;font-weight:900}.stack{display:grid;gap:12px}.stack input,.stack select,.form-grid input,.form-grid select,.form-grid textarea,select,textarea{width:100%;padding:12px 13px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink)}textarea{min-height:72px}.primary{border:0;background:var(--accent);color:#fff;border-radius:10px;padding:11px 15px;font-weight:700}.ghost{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:9px;padding:8px 11px}.linkbtn{border:0;background:transparent;color:var(--accent);padding:15px 0 0}.app{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:240px;background:linear-gradient(180deg,var(--sidebar),var(--sidebar2));padding:18px 14px;display:flex;flex-direction:column;z-index:10}.sidebar nav{display:grid;gap:4px;margin-top:24px}.sidebar nav button{border:0;text-align:left;padding:11px 13px;border-radius:9px;background:transparent;color:#cbd5e1}.sidebar nav button:hover,.sidebar nav button.active{background:#ffffff12;color:#fff}.sidebar-foot{margin-top:auto;color:#cbd5e1;border-top:1px solid #ffffff1a;padding-top:14px;display:flex;justify-content:space-between;align-items:center;font-size:13px}.sidebar-foot button{border:0;background:transparent;color:#93c5fd}main{margin-left:240px;min-height:100vh;padding:0 24px 50px}.topbar{min-height:74px;display:flex;align-items:center;gap:14px;justify-content:space-between}.topbar>div{margin-right:auto}.topbar h2{margin:0;font-size:20px}.menu{display:none;border:0;background:transparent;font-size:24px}.page{display:grid;gap:18px}.hero{background:linear-gradient(120deg,#10223d,#164e63);color:#fff;border-radius:20px;padding:26px;display:flex;align-items:flex-end;justify-content:space-between;box-shadow:0 14px 35px #0f172a18}.hero h1{font-size:34px;margin:5px 0}.hero p{margin:0;color:#cbd5e1}.eyebrow{font-size:11px;letter-spacing:.16em;font-weight:800;color:#93c5fd}.hero-number{text-align:right}.hero-number small{display:block;color:#cbd5e1}.hero-number strong{font-size:32px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 4px 16px #0f172a08}.stat small{color:var(--muted)}.stat strong{display:block;font-size:24px;margin-top:7px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.card h3{margin:0 0 14px}.card-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.card-head h3{margin:0}.muted{color:var(--muted);font-size:13px}.envelope-row{padding:11px 0;border-bottom:1px solid var(--line)}.envelope-row:last-child{border-bottom:0}.env-top{display:flex;justify-content:space-between;gap:10px}.progress{height:7px;background:#e2e8f0;border-radius:99px;overflow:hidden;margin-top:7px}.progress>span{display:block;height:100%;background:linear-gradient(90deg,#2563eb,#0f766e)}.progress.over>span{background:#dc2626}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;align-items:center}.check{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:13px}.check input{width:auto}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);white-space:nowrap}th{color:var(--muted);font-size:12px}.amount.pos{color:#047857}.amount.neg{color:#b91c1c}.tiny{border:1px solid var(--line);border-radius:7px;background:#fff;padding:5px 8px}.alloc-row{display:grid;grid-template-columns:1.4fr .8fr .8fr .8fr;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.alloc-row input{padding:9px;border:1px solid var(--line);border-radius:8px;width:100%}.pill{display:inline-block;border-radius:999px;padding:4px 8px;background:#e0f2fe;color:#075985;font-size:11px}.bill-row,.account-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}pre{white-space:pre-wrap;background:#f8fafc;padding:12px;border-radius:9px;min-height:45px}.ai-banner{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:12px;background:linear-gradient(120deg,#eff6ff,#ecfeff)}.analysis-output{white-space:pre-wrap;line-height:1.6}.badge{border-radius:99px;padding:6px 9px;background:#e2e8f0;color:#334155;font-size:12px}.badge.good{background:#dcfce7;color:#166534}#toast{position:fixed;right:20px;top:20px;z-index:1000;display:grid;gap:8px}.toast{background:#0f172a;color:#fff;padding:11px 14px;border-radius:9px;box-shadow:0 10px 30px #0004}.toast.error{background:#991b1b}canvas{width:100%;height:auto;max-height:320px}@media(max-width:950px){.stats{grid-template-columns:repeat(2,1fr)}.grid2{grid-template-columns:1fr}.sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:translateX(0)}main{margin-left:0;padding:0 14px 35px}.menu{display:block}.hero{align-items:flex-start;gap:20px}.ai-banner{grid-template-columns:1fr}.alloc-row{grid-template-columns:1fr 1fr}.alloc-row .label{grid-column:1/-1}}@media(max-width:560px){.stats{grid-template-columns:1fr 1fr}.hero{display:grid}.hero h1{font-size:27px}.hero-number{text-align:left}.hero-number strong{font-size:27px}.topbar{min-height:66px}.card{padding:14px}.form-grid{grid-template-columns:1fr}.alloc-row{grid-template-columns:1fr 1fr}.brand b{font-size:14px}}
.eyebrow.dark{color:#1d4ed8}.planner-card{border-color:#bfdbfe;background:linear-gradient(135deg,#fff,#eff6ff 115%)}.planner-actions{display:flex;align-items:center;gap:12px}.planner-actions strong{font-size:24px;color:#1d4ed8}.planner-list{display:grid;gap:8px}.planner-item{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:#fff}.planner-item .meta{font-size:12px;color:var(--muted);margin-top:3px}.planner-item .fund-amount{font-weight:800;color:#0f766e}.priority{display:inline-block;margin-right:6px;padding:2px 6px;border-radius:99px;font-size:10px;background:#e2e8f0;color:#334155}.priority.p1{background:#fee2e2;color:#991b1b}.priority.p2{background:#fef3c7;color:#92400e}.priority.p3{background:#dcfce7;color:#166534}details{margin-top:12px}summary{cursor:pointer;color:#1d4ed8;font-weight:700}.future-plan{display:grid;gap:10px;margin-top:12px}.future-period{padding:12px;border-radius:11px;background:#f8fafc;border:1px solid var(--line)}.future-period-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:5px}.goal-row{padding:12px 0;border-bottom:1px solid var(--line)}.goal-row:last-child{border-bottom:0}.goal-head{display:flex;justify-content:space-between;gap:10px}.goal-progress{margin-top:7px}.bill-row{gap:12px}.bill-row .bill-actions{display:flex;align-items:center;gap:10px}.bill-row .bill-details{min-width:0}.danger-tiny{border:1px solid #fecaca;background:#fff;color:#b91c1c;border-radius:7px;padding:5px 8px}@media(max-width:700px){.planner-actions{align-items:flex-end;flex-direction:column}.planner-item{grid-template-columns:1fr}.planner-item .fund-amount{font-size:18px}.future-period-head{display:grid}.bill-row{align-items:flex-start}.bill-row .bill-actions{flex-direction:column;align-items:flex-end}}

.bill-form-actions{display:flex;gap:10px;align-items:center}
.paycheck-import-card{border-color:#93c5fd;background:linear-gradient(135deg,#fff,#eff6ff 120%)}
.pay-import-start{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center}.pay-import-start input{padding:11px;border:1px dashed #93c5fd;border-radius:10px;background:#fff}
.import-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:16px}.import-summary-grid>div{padding:12px;border:1px solid var(--line);background:#fff;border-radius:11px}.import-summary-grid small{display:block;color:var(--muted);font-size:11px}.import-summary-grid strong{display:block;margin-top:3px;font-size:18px}
.import-review{display:grid;gap:10px;margin-top:15px}.import-group{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}.import-group>summary{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:13px 14px;color:var(--ink);font-weight:400}.import-group[open]>summary{border-bottom:1px solid var(--line);background:#f8fafc}.import-group.import-ignored{opacity:.58}.import-fields{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;padding:14px}.import-fields label{font-size:11px;color:var(--muted);font-weight:700}.import-fields input,.import-fields select{display:block;width:100%;margin-top:5px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--ink);font-weight:400}.import-examples{margin:0 14px 14px;padding:10px 12px;border-radius:9px;background:#f8fafc;color:var(--muted);font-size:12px}.import-examples b{display:block;color:#334155;margin-bottom:5px}.import-examples div+div{margin-top:4px}.import-actions{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
@media(max-width:950px){.import-fields{grid-template-columns:repeat(2,minmax(140px,1fr))}.import-summary-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.pay-import-start{grid-template-columns:1fr}.import-fields{grid-template-columns:1fr}.import-actions{align-items:stretch;flex-direction:column}.import-actions>div{display:grid;grid-template-columns:1fr 1fr;gap:8px}.import-group>summary{align-items:flex-start;flex-direction:column}}
.tx-mapping{margin-top:14px;padding:14px;border:1px solid #bfdbfe;border-radius:12px;background:#eff6ff}.tx-mapping h4{margin:0 0 4px}.tx-mapping .import-fields{padding:0;margin-top:10px;grid-template-columns:repeat(3,minmax(150px,1fr))}.tx-map-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:12px}.tx-mapping .table-wrap{margin-top:12px;max-height:260px;background:#fff;border:1px solid var(--line);border-radius:9px}.tx-mapping .table-wrap table{font-size:12px}.tx-invert{align-self:end;min-height:42px;padding:8px 0}@media(max-width:700px){.tx-mapping .import-fields{grid-template-columns:1fr}.tx-map-actions{display:grid;grid-template-columns:1fr 1fr}}

/* v1.3 theme + AI categorization */
:root{--chart-track:#e2e8f0;--success:#166534;--surface-soft:#f8fafc;--surface-tint:#eff6ff;--input:#fff;--shadow:rgba(15,23,42,.08)}
html[data-theme="dark"]{color-scheme:dark;--bg:#08111f;--ink:#e5edf7;--muted:#94a3b8;--card:#0f1b2d;--line:#26354b;--accent:#60a5fa;--accent2:#2dd4bf;--danger:#f87171;--sidebar:#050b14;--sidebar2:#0a1423;--chart-track:#26354b;--success:#4ade80;--surface-soft:#0b1627;--surface-tint:#10233c;--input:#0b1627;--shadow:rgba(0,0,0,.28)}
html[data-theme="dark"] body{background:var(--bg);color:var(--ink)}
html[data-theme="dark"] .auth-shell{background:radial-gradient(circle at 20% 20%,#123a70 0,transparent 28%),radial-gradient(circle at 80% 80%,#0b5a54 0,transparent 30%),#030812}
html[data-theme="dark"] .auth-card{background:var(--card);box-shadow:0 30px 80px #000a}
html[data-theme="dark"] .auth-card .brand{color:var(--ink)}
html[data-theme="dark"] .stack input,html[data-theme="dark"] .stack select,html[data-theme="dark"] .form-grid input,html[data-theme="dark"] .form-grid select,html[data-theme="dark"] .form-grid textarea,html[data-theme="dark"] select,html[data-theme="dark"] textarea,html[data-theme="dark"] .alloc-row input{background:var(--input);color:var(--ink);border-color:var(--line)}
html[data-theme="dark"] input::placeholder,html[data-theme="dark"] textarea::placeholder{color:#6f829a}
html[data-theme="dark"] .ghost,html[data-theme="dark"] .tiny{background:var(--card);color:var(--ink);border-color:var(--line)}
html[data-theme="dark"] .danger-tiny{background:var(--card);color:#fca5a5;border-color:#7f1d1d}
html[data-theme="dark"] .card{box-shadow:0 4px 16px var(--shadow)}
html[data-theme="dark"] .planner-card{border-color:#214d77;background:linear-gradient(135deg,var(--card),#10233c 115%)}
html[data-theme="dark"] .planner-item{background:var(--surface-soft)}
html[data-theme="dark"] .future-period,html[data-theme="dark"] pre{background:var(--surface-soft)}
html[data-theme="dark"] .ai-banner{background:linear-gradient(120deg,#10233c,#0c292d)}
html[data-theme="dark"] .progress{background:var(--chart-track)}
html[data-theme="dark"] .pill,html[data-theme="dark"] .badge{background:#1d334d;color:#bfdbfe}
html[data-theme="dark"] .badge.good{background:#143827;color:#86efac}
html[data-theme="dark"] .priority{background:#26354b;color:#cbd5e1}
html[data-theme="dark"] .priority.p1{background:#4c1d1d;color:#fecaca}
html[data-theme="dark"] .priority.p2{background:#4a3512;color:#fde68a}
html[data-theme="dark"] .priority.p3{background:#143827;color:#bbf7d0}
html[data-theme="dark"] .eyebrow.dark,html[data-theme="dark"] summary{color:#93c5fd}
html[data-theme="dark"] .amount.pos{color:#4ade80}
html[data-theme="dark"] .amount.neg{color:#f87171}
html[data-theme="dark"] .toast{background:#dbeafe;color:#0f172a}
html[data-theme="dark"] .toast.error{background:#7f1d1d;color:#fee2e2}

.theme-switch{display:inline-flex;align-items:center;gap:7px;cursor:pointer;user-select:none;margin-left:auto}.theme-switch input{position:absolute;opacity:0;pointer-events:none}.theme-switch .slider{position:relative;width:46px;height:25px;border-radius:99px;background:#cbd5e1;border:1px solid var(--line);transition:.2s;box-shadow:inset 0 1px 3px #0002}.theme-switch .slider:after{content:"";position:absolute;width:19px;height:19px;left:2px;top:2px;border-radius:50%;background:#fff;box-shadow:0 1px 5px #0005;transition:.2s}.theme-switch input:checked+.slider{background:#2563eb}.theme-switch input:checked+.slider:after{transform:translateX(21px)}.theme-switch input:focus-visible+.slider{outline:3px solid #60a5fa66;outline-offset:2px}.theme-icon{font-size:14px;line-height:1}.inline-actions{display:flex;align-items:center;gap:8px}

.ai-category-controls{display:grid;grid-template-columns:minmax(150px,220px) 1fr auto;gap:12px;align-items:end;margin:12px 0}.ai-category-controls label:not(.check){display:grid;gap:6px;font-size:13px;color:var(--muted)}.ai-category-review{display:grid;gap:9px;margin-top:14px}.ai-cat-row{display:grid;grid-template-columns:auto minmax(240px,1fr) minmax(210px,310px);gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface-soft)}.ai-cat-check{align-self:start;padding-top:5px}.ai-cat-check input{width:17px;height:17px}.ai-cat-tx{min-width:0}.ai-cat-reason{margin-top:6px;font-size:12px;color:var(--muted);line-height:1.45}.ai-cat-choice{display:grid;gap:7px}.ai-cat-choice select,.ai-cat-choice input{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--input);color:var(--ink)}.ai-category-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:14px;padding-top:13px;border-top:1px solid var(--line)}
@media(max-width:760px){.theme-icon{display:none}.theme-switch{margin-left:auto}.topbar{gap:9px}.ai-category-controls{grid-template-columns:1fr}.ai-cat-row{grid-template-columns:auto 1fr}.ai-cat-choice{grid-column:2}.inline-actions{flex-wrap:wrap;justify-content:flex-end}}
@media(max-width:480px){.topbar h2{font-size:18px}.theme-switch .slider{width:42px}.theme-switch input:checked+.slider:after{transform:translateX(17px)}.ai-cat-row{grid-template-columns:1fr}.ai-cat-check{position:absolute}.ai-cat-tx,.ai-cat-choice{grid-column:1;padding-left:26px}}

/* v1.4 analytics + forecasting */
:root{--warning:#d97706;--violet:#7c3aed;--cyan:#0891b2;--pink:#db2777}
html[data-theme="dark"]{--warning:#fbbf24;--violet:#a78bfa;--cyan:#22d3ee;--pink:#f472b6}
.button-link{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.analytics-toolbar{display:flex;justify-content:space-between;gap:18px;align-items:center}.analytics-toolbar h3{margin:4px 0}.report-controls{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.report-controls label{display:grid;gap:4px;font-size:11px;color:var(--muted);font-weight:700}.report-controls select{padding:8px 10px}.report-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.report-card{min-width:0;position:relative;cursor:grab;break-inside:avoid}.report-card:active{cursor:grabbing}.report-card.dragging{opacity:.45;outline:2px dashed var(--accent)}.report-wide{grid-column:1/-1}.report-card canvas{display:block;width:100%;max-width:100%;height:320px}.health-score{min-width:92px;height:92px;border-radius:50%;display:grid;place-items:center;font-size:23px;font-weight:900;border:8px solid var(--line);background:var(--surface-soft)}.health-score.good{border-color:#22c55e}.health-score.warn{border-color:#f59e0b}.health-score.bad{border-color:#ef4444}.health-metrics{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.health-metrics>div{padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--surface-soft)}.health-metrics small{display:block;color:var(--muted);font-size:11px}.health-metrics strong{display:block;margin-top:4px;font-size:20px}.insight-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:8px}.warning-chip,.good-chip{padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800}.warning-chip{background:#fef3c7;color:#92400e}.good-chip{background:#dcfce7;color:#166534}html[data-theme="dark"] .warning-chip{background:#4a3512;color:#fde68a}html[data-theme="dark"] .good-chip{background:#143827;color:#bbf7d0}.drill-links{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}.projection-box{margin-top:8px;padding:11px;border:1px solid var(--line);border-radius:10px;background:var(--surface-soft);line-height:1.5}.report-goal{padding:11px 0;border-bottom:1px solid var(--line)}.report-goal:last-child{border-bottom:0}.report-goal>div:first-child{display:flex;justify-content:space-between;gap:10px}.report-goal .progress{margin:7px 0}.recurring-row{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);padding:11px 2px;display:flex;justify-content:space-between;gap:12px;text-align:left}.recurring-row:hover{background:var(--surface-soft)}.recurring-row span:last-child{text-align:right}.recurring-row small{display:block;color:var(--muted);margin-top:2px}.scenario-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px;align-items:end;margin:12px 0}.scenario-grid label{display:grid;gap:5px;color:var(--muted);font-size:11px;font-weight:700}.scenario-grid input,.scenario-grid select,.debt-grid input{width:100%;padding:10px;border:1px solid var(--line);border-radius:9px;background:var(--input);color:var(--ink)}.analysis-output.compact{min-height:auto;margin-top:10px;padding:12px;white-space:pre-wrap}.debt-grid{display:grid;grid-template-columns:repeat(3,1fr) auto;gap:8px;align-items:center}.report-card .card-head select{width:auto;min-width:110px;padding:7px 9px}.report-card .account-row{border-bottom:1px solid var(--line)}#drilldownPanel{margin-top:16px}.print-only{display:none}
@media(max-width:1050px){.health-metrics{grid-template-columns:repeat(3,1fr)}.scenario-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.analytics-toolbar{align-items:stretch;flex-direction:column}.report-grid{grid-template-columns:1fr}.report-wide{grid-column:auto}.health-metrics{grid-template-columns:repeat(2,1fr)}.scenario-grid{grid-template-columns:1fr}.debt-grid{grid-template-columns:1fr}.health-score{width:76px;height:76px;min-width:76px;font-size:18px}}
@media(max-width:520px){.report-controls>*{flex:1 1 44%}.health-metrics{grid-template-columns:1fr}.report-card{padding:14px}.report-card canvas{height:280px}.recurring-row{flex-direction:column}.recurring-row span:last-child{text-align:left}}
@media print{.sidebar,.topbar,#toast,.analytics-toolbar .report-controls,#drilldownPanel,.report-card button,.report-card select{display:none!important}.app main{margin:0!important;padding:0!important}.page{display:none!important}#page-reports{display:block!important}.analytics-toolbar{display:block!important;border:0!important;box-shadow:none!important}.report-grid{display:block!important}.report-card{margin:0 0 12px;box-shadow:none!important;page-break-inside:avoid}.report-card canvas{max-height:280px}.report-wide{width:100%}body{background:#fff!important;color:#111!important}}
.paycheck-flow{display:grid;gap:12px}.flow-row>div:first-child{display:flex;justify-content:space-between;gap:10px;margin-bottom:5px}.flow-track{height:13px;border-radius:999px;background:var(--chart-track);overflow:hidden}.flow-track span{display:block;height:100%;border-radius:inherit;background:var(--accent)}.flow-track .assigned{background:var(--cyan)}.flow-track .planned{background:var(--violet)}.flow-track .spent{background:var(--warning)}.flow-track .saved{background:var(--accent2)}
.heatmap-wrap{overflow:auto}.heatmap-table{display:grid;grid-template-columns:minmax(130px,1.4fr) repeat(13,minmax(72px,1fr));min-width:980px;gap:4px;align-items:stretch}.heatmap-head,.heatmap-label{padding:8px;font-size:11px;font-weight:800;color:var(--muted);display:flex;align-items:center}.heat-cell{border:1px solid var(--line);border-radius:7px;min-height:43px;padding:5px;background:color-mix(in srgb,var(--accent) calc(var(--heat)*100%),var(--card));color:var(--ink);font-size:10px;font-weight:700}.heat-cell:hover{outline:2px solid var(--accent);outline-offset:1px}.heatmap-label{color:var(--ink);font-size:12px}.heatmap-table:has(.heatmap-head:nth-child(n+15)){grid-template-columns:minmax(130px,1.4fr) repeat(26,minmax(68px,1fr))}
@supports not (background:color-mix(in srgb,red 10%,white)){.heat-cell{background:var(--surface-tint)}}
.report-user-hidden{display:none!important}.report-customize{border-color:#93c5fd}.report-card-choices{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:9px}.report-card-choices label{padding:9px;border:1px solid var(--line);border-radius:9px;background:var(--surface-soft)}@media(max-width:800px){.report-card-choices{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.report-card-choices{grid-template-columns:1fr}}@media print{#reportCustomizePanel{display:none!important}.report-user-hidden{display:none!important}}
.bank-provider-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:14px}.bank-provider{border:1px solid var(--line);border-radius:14px;padding:16px;background:var(--surface-soft)}.bank-provider h4{margin:0 0 2px}.bank-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.bank-connections{display:grid;gap:8px;margin-top:10px}.bank-connection{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card)}.bank-connection .meta{font-size:.82rem;color:var(--muted)}.bank-connection-actions{display:flex;gap:6px;flex-wrap:wrap}.bank-provider .form-grid{align-items:end}@media(max-width:900px){.bank-provider-grid{grid-template-columns:1fr}.bank-actions>*{flex:1 1 160px}.bank-connection{align-items:flex-start;flex-direction:column}}
.oauth-return{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--bg)}.oauth-card{width:min(520px,100%);background:var(--card);border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:0 18px 50px #0f172a20}.oauth-card h2{margin-top:0}

/* v1.6 investments + retirement */
.investment-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(135deg,var(--card),var(--surface-tint))}.investment-hero h3{margin:4px 0}.investment-total{text-align:right;min-width:220px}.investment-total small{display:block;color:var(--muted);font-weight:700}.investment-total strong{display:block;font-size:30px;margin-top:4px}.investment-hero+.card{border-color:color-mix(in srgb,var(--accent) 28%,var(--line))}#investmentAccounts .account-row{border-bottom:1px solid var(--line)}#investmentHoldings td{vertical-align:top}#investmentActivity td{vertical-align:top}.investment-isolated-note{border-left:4px solid var(--accent);padding-left:12px}.investment-hero .eyebrow{color:var(--accent)}
@media(max-width:760px){.investment-hero{align-items:flex-start;flex-direction:column}.investment-total{text-align:left;min-width:0}.investment-total strong{font-size:26px}#page-investments .grid2{grid-template-columns:1fr}}

/* v1.7 email alerts + budget warnings */
.alert-settings-card{border-color:color-mix(in srgb,var(--warning) 32%,var(--line))}.alert-settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.alert-section{border:1px solid var(--line);border-radius:12px;padding:13px;background:var(--surface-soft)}.alert-section>label:not(.check){display:grid;gap:5px;color:var(--muted);font-size:11px;font-weight:700;margin-top:10px}.alert-section input[type=email],.alert-section input[type=number],.alert-section select{width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--input);color:var(--ink)}.compact-grid{gap:8px}.alert-history-head{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}.alert-history{display:grid;gap:8px}.alert-event{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:start;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface-soft)}.alert-dot{width:9px;height:9px;border-radius:50%;margin-top:6px;background:var(--warning)}.alert-event.critical .alert-dot{background:var(--danger)}.alert-event.good .alert-dot{background:#16a34a}.alert-event h5{margin:0 0 3px;font-size:13px}.alert-event .alert-meta{font-size:11px;color:var(--muted)}.alert-event .alert-status{font-size:10px;font-weight:800;padding:4px 7px;border-radius:999px;background:var(--chart-track);color:var(--muted)}.alert-event .alert-status.sent{background:#dcfce7;color:#166534}.alert-event .alert-status.failed{background:#fee2e2;color:#991b1b}html[data-theme="dark"] .alert-event .alert-status.sent{background:#143827;color:#bbf7d0}html[data-theme="dark"] .alert-event .alert-status.failed{background:#431818;color:#fecaca}
@media(max-width:850px){.alert-settings-grid{grid-template-columns:1fr}}@media(max-width:560px){.alert-event{grid-template-columns:auto 1fr}.alert-event .alert-status{grid-column:2;justify-self:start}.compact-grid{grid-template-columns:1fr}}
.reconcile-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:14px 0}.reconcile-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin:12px 0;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--panel-soft)}.reconcile-option{display:flex;gap:9px;align-items:flex-start;padding:10px;border:1px solid var(--border);border-radius:10px;background:var(--panel)}.reconcile-option span{display:flex;flex-direction:column;gap:2px}.reconcile-option small{color:var(--muted)}.reconcile-card .table-wrap{margin-top:14px}.reconcile-card td.amount.neg{font-weight:700}@media(max-width:700px){.reconcile-controls{grid-template-columns:1fr}}
