:root{color-scheme:light;--bg:#f3f6f4;--surface:#fff;--text:#23352c;--muted:#617369;--line:#dce5df;--accent:#24694f;--soft:#e7f2eb;--warning:#fff3df;--warntext:#785019;--danger:#a93636}
@media(prefers-color-scheme:dark){:root{color-scheme:dark;--bg:#171e1a;--surface:#222b25;--text:#e6eee8;--muted:#b1c2b6;--line:#3c4c40;--accent:#96dbb6;--soft:#2d4032;--warning:#3d3323;--warntext:#f1cd90;--danger:#ffb1a8}}
.login-shell{display:grid;place-items:center;min-height:100vh;max-width:none;padding:24px}.login-panel{width:100%;max-width:420px;margin:0}.login-panel .brand{margin:0 0 18px}.login-panel button{min-height:44px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 'Segoe UI',sans-serif}a{color:var(--accent)}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:7px;padding:9px 14px}button:hover{background:var(--soft)}button.primary{background:var(--accent);color:var(--surface);border-color:var(--accent)}input,select{display:block;width:100%;min-width:0;padding:9px;border:1px solid var(--line);border-radius:6px;background:var(--surface);color:var(--text)}label{font-size:13px;color:var(--muted);display:grid;gap:5px}input:focus-visible,select:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.app-shell{display:grid;grid-template-columns:210px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--line);padding:28px 14px}.brand{font-size:20px;font-weight:600;text-decoration:none;color:var(--text);display:block;margin:0 10px}.brand-caption{font-size:13px;margin:3px 10px 28px}nav{display:grid;gap:5px}nav a,.planned{padding:11px;border-radius:7px;text-decoration:none;display:flex;justify-content:space-between;align-items:center;color:var(--text)}nav a.active{background:var(--soft);color:var(--accent);font-weight:600}.planned{color:var(--muted);font-size:14px}.planned small{font-size:10px;opacity:.85}.sidebar-footer{margin:35px 10px;color:var(--muted);font-size:12px}main{padding:22px 30px;max-width:1500px;width:100%;min-width:0}.demo-banner{border:1px solid var(--line);border-radius:7px;background:var(--surface);padding:9px 13px;display:flex;gap:13px;font-size:12px;color:var(--muted);margin-bottom:25px;flex-wrap:wrap}.demo-banner strong{color:var(--accent)}h1{font-size:28px;letter-spacing:-.6px;line-height:1.2;margin:0 0 8px;font-weight:600}h2{font-size:17px;margin:0 0 14px;font-weight:600}p{margin:0 0 12px}.muted{color:var(--muted);font-size:13px}.page-header{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;margin-bottom:20px;flex-wrap:wrap}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:18px}.stat{background:var(--surface);border:1px solid var(--line);padding:17px 15px;border-radius:9px;display:grid;gap:8px}.stat>span,.stat small{font-size:12px;color:var(--muted)}.stat strong{font-size:27px;letter-spacing:-.5px;font-weight:600;font-variant-numeric:tabular-nums}.negative,.error{color:var(--danger)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:22px;margin-bottom:18px;min-width:0}.two-column{display:grid;grid-template-columns:1fr 1fr;gap:18px}.attention{display:grid;gap:4px;text-decoration:none;color:var(--text);padding:14px 0;border-top:1px solid var(--line)}.attention strong{font-size:14px;font-weight:500}.attention span{font-size:12px;color:var(--muted)}.attention .action-label{color:var(--accent)}.breakdown{margin:0 0 18px}.breakdown>div{display:flex;justify-content:space-between;gap:12px;padding:9px 0}.breakdown dd{margin:0;font-variant-numeric:tabular-nums}.total{border-top:1px solid var(--line);font-weight:600;margin-top:8px}.chart{display:flex;gap:10px;margin:18px 0}.chart-labels{width:58px;flex-shrink:0;display:flex;flex-direction:column;justify-content:space-between;padding-bottom:30px;font-size:11px;color:var(--muted)}.chart-drawing{flex:1;min-width:0}.chart svg{width:100%;height:190px;display:block}.grid-line{stroke:var(--line);stroke-width:1;vector-effect:non-scaling-stroke}.reserve-line{stroke:var(--warntext);stroke-dasharray:3 4;vector-effect:non-scaling-stroke}.balance-line{stroke:var(--accent);fill:none;stroke-width:2;vector-effect:non-scaling-stroke}.forecast-line{stroke-dasharray:6 4}.axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:9px}.legend{display:flex;gap:20px;flex-wrap:wrap;color:var(--muted);font-size:12px}.legend i{display:inline-block;width:22px;border-top:2px solid var(--accent);vertical-align:middle;margin-right:5px}.legend i.dashed{border-top-style:dashed}.panel-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.panel-toolbar h2{margin:0}.toolbar-actions{display:flex;align-items:end;gap:12px;flex-wrap:wrap}.filter-label{font-size:11px}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{font-size:12px;font-weight:500;color:var(--muted);text-align:left}td,th{padding:12px 8px;border-bottom:1px solid var(--line)}td strong{font-weight:500}td small{display:block;font-size:11px;color:var(--muted)}.money{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.nowrap{white-space:nowrap}.status{background:var(--soft);color:var(--accent);font-size:11px;padding:4px 6px;border-radius:5px}.text-button{border:0;padding:5px;background:none;color:var(--accent)}.ending{display:flex;justify-content:space-between;padding-top:17px;font-variant-numeric:tabular-nums}.editor{border-left:3px solid var(--accent)}fieldset{border:0;padding:0;margin:0 0 16px;min-width:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.editor-actions{display:flex;gap:10px;margin-top:18px}.check-label{display:flex;align-items:center;gap:8px}.check-label input{width:auto}.warning{padding:12px 14px;background:var(--warning);color:var(--warntext);border-radius:7px;font-size:13px}.import-steps{padding-left:25px}.import-steps li{padding:7px 0}.change-list{padding-left:20px}.change-list li{margin-bottom:8px}.positive{color:var(--accent);margin-top:15px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}#blazor-error-ui{display:none;position:fixed;bottom:0;padding:18px;background:var(--warning);width:100%;z-index:100}#blazor-error-ui .dismiss{float:right}.loading-progress{display:block;width:90px;height:90px;margin:20vh auto 0}.loading-progress circle{fill:none;stroke:var(--accent);stroke-width:5px}.loading-progress-text{text-align:center;margin:15px}.loading-progress-text:after{content:'Loading FinancialPlanner…'}
@media(max-width:1100px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}main{padding:22px}.two-column{grid-template-columns:1fr}.app-shell{grid-template-columns:185px minmax(0,1fr)}}
@media(max-width:640px){.app-shell{grid-template-columns:1fr}.sidebar{padding:15px;border-right:0;border-bottom:1px solid var(--line)}.brand-caption{margin-bottom:10px}nav{display:flex;flex-wrap:wrap;gap:5px}nav a{font-size:13px;min-height:44px}.planned,.sidebar-footer{display:none}main{padding:16px}.panel{padding:16px}.stat{padding:13px}.stat strong{font-size:23px}.stats{gap:10px}h1{font-size:24px}.form-grid{grid-template-columns:1fr}input,select{font-size:16px}button{min-height:44px}.demo-banner{margin-bottom:20px}.chart-labels{width:50px}td,th{padding:10px 6px}.toolbar-actions{width:100%;justify-content:space-between}}
.table-scroll{position:relative}
@media(max-width:1100px){main input:not([type=checkbox]),main select,main textarea{font-size:16px;min-height:44px}button,nav a,.check-label{min-height:44px}.editor-actions{flex-wrap:wrap}}
.skip-link{position:fixed;top:8px;left:8px;z-index:1000;transform:translateY(-150%);padding:10px 14px;background:var(--surface);color:var(--accent);border:1px solid var(--accent);border-radius:7px;font-weight:600}.skip-link:focus{transform:translateY(0)}
.import-counts{display:grid;gap:10px}.import-counts>div{display:grid;grid-template-columns:minmax(120px,1fr) 2fr;gap:12px}.import-counts dd{margin:0}.import-finding{padding:16px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}.import-finding h4{margin:0 0 8px;font-size:15px}.import-finding form{margin-top:14px}.review-history li{margin-bottom:16px;overflow-wrap:anywhere}.review-history p{white-space:pre-wrap;margin:6px 0}textarea{font:inherit;width:100%;max-width:100%;padding:9px;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:6px}textarea:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:3px}button:disabled{opacity:.55;cursor:default}summary{cursor:pointer;padding:12px 0}h3{font-size:16px}input[type=file]{margin:8px 0;max-width:100%}@media(max-width:640px){.import-counts>div{grid-template-columns:1fr;gap:2px}textarea{font-size:16px}.editor-actions{flex-wrap:wrap}}

.mobile-menu-toggle{display:none}.app-shell,.login-shell{min-height:100dvh}body{-webkit-text-size-adjust:100%;text-size-adjust:100%}.table-scroll{overscroll-behavior-x:contain}input[type=date]{max-width:100%;min-width:0}
@media(max-width:640px){.app-shell{align-content:start}.sidebar{padding-left:max(15px,env(safe-area-inset-left));padding-right:max(15px,env(safe-area-inset-right));padding-top:max(15px,env(safe-area-inset-top))}.sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.sidebar-header .brand{margin:0}.mobile-menu-toggle{display:block;min-height:44px}.brand-caption{display:none}.navigation-panel{display:none}.navigation-panel.is-open{display:block;margin-top:12px}.navigation-panel nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.navigation-panel nav a{min-width:0;overflow-wrap:anywhere}main{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right));padding-bottom:max(16px,env(safe-area-inset-bottom))}}
.checking-ledger{min-width:850px}.checking-ledger td{vertical-align:top}.ledger-balance{font-weight:700}.ledger-actions{min-width:190px}.ledger-actions button{margin:3px}.ledger-actions small{display:block}.entry-marker{cursor:pointer;outline:none}.entry-marker-hit{fill:transparent}.entry-marker-dot{fill:var(--accent);stroke:var(--surface);stroke-width:2;vector-effect:non-scaling-stroke}.entry-marker:focus-visible .entry-marker-dot,.entry-marker:hover .entry-marker-dot{stroke:var(--text);stroke-width:3}.chart-entry-details{border:1px solid var(--line);border-radius:8px;padding:14px;margin-top:14px}.chart-entry-details ul{list-style:none;padding:0;margin:10px 0}.chart-entry-details li{display:flex;gap:16px;justify-content:space-between;padding:6px 0;border-top:1px solid var(--line)}.chart-entry-details li strong{white-space:nowrap}.chart-entry-details small{display:block;color:var(--muted)}
.entry-marker-income{fill:#15803d}.entry-marker-withdrawal{fill:#dc2626}.entry-marker-neutral{fill:#64748b}.transaction-legend i{width:9px;height:9px;border-radius:50%;border:0}.transaction-legend .income-dot{background:#15803d}.transaction-legend .withdrawal-dot{background:#dc2626}
.entry-marker.is-selected .entry-marker-dot{stroke:var(--text);stroke-width:3}.chart-entry-day+.chart-entry-day{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}.chart-date-button{font-weight:600;margin-right:10px;min-height:44px}
