:root{--bg:#f5f3ee;--surface:#fff;--surface-soft:#fbfaf7;--surface-strong:#10251f;--border:#ded9cc;--muted:#68746f;--text:#10251f;--green:#1f8f5f;--blue:#246b8f;--amber:#c9892c;--red:#c94d45;--nest:#d7eadf;--nest-strong:#0f5f46}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}a{color:inherit;text-decoration:none}.app-shell{grid-template-columns:280px 1fr;min-height:100vh;display:grid}.sidebar{border-right:1px solid var(--border);background:#fcfbf8;padding:24px}.brand{color:inherit;align-items:center;gap:12px;margin-bottom:32px;display:flex}.brand-mark,.metric-icon{background:var(--nest);width:40px;height:40px;color:var(--nest-strong);border-radius:8px;place-items:center;display:grid}.brand strong,.brand span{display:block}.brand span{color:var(--muted);margin-top:2px;font-size:13px}.nav-list{gap:4px;display:grid}.nav-list a{color:var(--muted);border-radius:8px;align-items:center;gap:8px;padding:10px 12px;font-size:14px;display:flex}.nav-list a.active,.nav-list a:hover{color:var(--text);background:#eef4ef}.content{padding:24px 28px}.topbar{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.eyebrow{color:var(--muted);margin:0 0 4px;font-size:13px}h1,h2,p{margin:0}h1{letter-spacing:0;font-size:30px}.status-pill{color:var(--nest-strong);background:#eef8f1;border:1px solid #c8e8d2;border-radius:999px;align-items:center;gap:8px;padding:8px 12px;font-size:14px;display:inline-flex}.session-cluster{align-items:center;gap:8px;display:flex}.icon-action.subtle{color:var(--text);background:#eef4ef;min-height:38px}.auth-page{background-color:#0000;background-image:linear-gradient(#10251fb8,#10251fb8),url(https://images.unsplash.com/photo-1554224155-6726b3ff858f?auto=format&fit=crop&w=1600&q=80);background-position:50%;background-repeat:repeat,repeat;background-size:cover;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;align-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{background:#fffffff5;border:1px solid #ffffffbd;border-radius:8px;justify-self:center;width:100%;max-width:440px;padding:28px;box-shadow:0 24px 80px #00000038}.auth-brand span{color:var(--nest-strong);font-size:14px;font-weight:800}.auth-brand h1{margin-top:8px;font-size:28px}.auth-form{gap:12px;margin-top:22px;display:grid}.auth-form button{min-height:48px}.auth-error{color:var(--red);background:#f8e8e6;border:1px solid #f2d2ce;border-radius:8px;margin-top:16px;padding:10px 12px;font-size:14px}.auth-switch{color:var(--muted);text-align:center;margin-top:18px;font-size:14px}.auth-switch a{color:var(--nest-strong);font-weight:800}.metric-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-bottom:12px;display:grid}.metric-card,.panel{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:18px}.metric-card{min-height:170px}.metric-card span,.panel-header span{color:var(--muted);margin-top:16px;font-size:13px;display:block}.metric-card strong{margin-top:8px;font-size:24px;display:block}.metric-card p,.panel p{color:var(--muted);margin-top:8px;font-size:14px;line-height:1.5}.dashboard-main-grid{grid-template-columns:1.2fr .8fr;align-items:start;gap:12px;display:grid}.analysis-column,.action-column{gap:12px;display:grid}.panel-header{justify-content:space-between;align-items:flex-start;display:flex}.panel-header h2{letter-spacing:0;margin-top:4px;font-size:18px}.finance-bars{border-bottom:1px solid var(--border);align-items:end;gap:18px;height:160px;margin-top:14px;padding:0 12px;display:flex}.finance-bars>div{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:6px;min-width:88px;height:100%;display:flex}.finance-bars span{font-size:13px;font-weight:700}.finance-bars small{color:var(--muted);font-size:12px}.finance-bar{border-radius:8px 8px 0 0;width:100%}.finance-bar.income{background:var(--green)}.finance-bar.expense{background:var(--red)}.finance-bar.saving{background:var(--amber)}.trm-box{border-top:1px solid var(--border);gap:4px;margin-top:16px;padding-top:12px;display:grid}.trm-box strong,.trm-box span{display:block}.trm-box strong{font-size:22px}.trm-box span{color:var(--muted);font-size:13px}.form-grid{gap:10px;margin-top:16px;display:grid}.form-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.account-form-row{grid-template-columns:minmax(128px,1fr) minmax(0,1.35fr) minmax(128px,1fr);align-items:start;gap:10px;display:grid}.goal-amount-row{grid-template-columns:minmax(180px,1fr) minmax(0,1.25fr);align-items:start;gap:10px;display:grid}.goal-amount-row .currency-rate-field.compact:not(.has-rate){justify-self:stretch;width:112px}.goal-amount-row .currency-rate-field.compact.has-rate{grid-template-columns:1fr}.contribution-row{grid-template-columns:minmax(140px,1fr) minmax(0,1.45fr) minmax(140px,1fr);align-items:start;gap:10px;display:grid}.transaction-money-row{grid-template-columns:minmax(128px,1fr) minmax(0,1.55fr);align-items:start;gap:10px;display:grid}input,select,textarea,button{font:inherit;border-radius:8px;min-height:42px}input,select,textarea{border:1px solid var(--border);color:var(--text);background:#fff;width:100%;padding:0 12px}textarea{resize:vertical;min-height:76px;padding-top:10px;padding-bottom:10px}button{background:var(--surface-strong);color:#fff;cursor:pointer;border:0;justify-content:center;align-items:center;gap:8px;padding:0 14px;font-weight:700;display:inline-flex}button:disabled{cursor:wait;opacity:.7}.quick-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px;display:grid}.quick-action{background:var(--surface-soft);border:1px solid var(--border);color:var(--text);justify-content:flex-start;gap:8px;min-height:46px}.quick-action:hover{background:#eef4ef}.secondary-button{color:var(--text);background:#eef4ef}.danger-button{color:var(--red);background:#f8e8e6}.danger-button:hover{background:#f2d2ce}.icon-button{aspect-ratio:1;width:42px;min-height:42px;padding:0}.trm-input-row{grid-template-columns:minmax(0,1fr) 42px;gap:10px;display:grid}.currency-rate-field{gap:10px;display:grid}.currency-rate-field.compact{justify-self:stretch}.currency-rate-field.compact:not(.has-rate){justify-self:start;width:96px}.currency-rate-field.compact.has-rate{grid-template-columns:86px minmax(0,1fr);align-items:start;display:grid}.currency-rate-field.compact.stacked-rate.has-rate{grid-template-columns:1fr}.currency-rate-field.compact.has-rate .trm-input-row{grid-template-columns:minmax(96px,1fr) 42px}.currency-rate-field.compact select{padding-left:10px;padding-right:8px}.field-note{color:var(--blue);margin-top:-2px;font-size:13px;line-height:1.4}.compact-metric{min-height:92px}.compact-metric span{margin-top:0}.budget-form,.filter-bar,.import-map{gap:10px;margin-top:16px;display:grid}.budget-form{grid-template-columns:150px minmax(220px,1fr) minmax(160px,.7fr) auto}.filter-bar{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));align-items:start}.filter-bar button{width:100%}.import-map{grid-template-columns:minmax(180px,.8fr) minmax(240px,1.2fr)}.budget-list,.alert-list{gap:10px;margin-top:16px;display:grid}.budget-row{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;grid-template-columns:minmax(150px,.8fr) minmax(220px,1.2fr) auto auto;align-items:center;gap:14px;padding:12px;display:grid}.budget-row strong,.budget-row span{display:block}.budget-row span{color:var(--muted);margin-top:3px;font-size:13px}.budget-progress{gap:6px;display:grid}.budget-progress small{color:var(--muted);font-size:12px}.budget-track{background:#e7ece6;border-radius:999px;height:10px;overflow:hidden}.budget-track span{background:var(--green);border-radius:inherit;height:100%}.alert-row{background:var(--surface-soft);border:1px solid var(--border);border-left:5px solid var(--blue);border-radius:8px;gap:4px;padding:12px 14px;display:grid}.alert-row.high{border-left-color:var(--red)}.alert-row.medium{border-left-color:var(--amber)}.alert-row.low{border-left-color:var(--green)}.alert-row span{color:var(--muted);font-size:13px}.import-drop{background:var(--surface-soft);border:1px dashed var(--border);color:var(--text);border-radius:8px;grid-template-columns:42px 1fr;align-items:center;gap:12px;min-height:104px;margin-top:12px;padding:16px;display:grid;position:relative}.import-drop svg{color:var(--nest-strong)}.import-drop strong,.import-drop span{display:block}.import-drop span{color:var(--muted);margin-top:3px;font-size:13px}.import-drop input{cursor:pointer;opacity:0;position:absolute;inset:0}.import-preview{border:1px solid var(--border);border-radius:8px;gap:8px;margin-top:16px;padding:14px;display:grid}.import-check{justify-self:start}.import-review-row{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;grid-template-columns:minmax(0,1fr) minmax(180px,.35fr);align-items:start;gap:12px;padding:12px;display:grid}.import-review-row.is-duplicate{background:#fff8f7;border-color:#e7b7b1}.import-review-main{grid-template-columns:116px minmax(150px,.85fr) minmax(190px,1fr) 130px minmax(180px,1fr);gap:8px;display:grid}.reference-input{padding-left:10px;padding-right:10px;font-size:13px}.import-review-side{justify-items:end;gap:4px;display:grid}.import-review-side strong,.import-review-side span,.import-review-side small{display:block}.import-review-side span,.import-review-side small{color:var(--muted);text-align:right;font-size:12px}.import-summary-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;display:grid}.import-summary-box{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;min-width:0;padding:10px}.import-summary-box span,.import-summary-box strong{display:block}.import-summary-box span{color:var(--muted);font-size:12px}.import-summary-box strong{text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:14px;overflow:hidden}.import-quality-grid{grid-template-columns:minmax(240px,1fr) repeat(2,minmax(190px,.8fr));gap:10px;display:grid}.quality-meter,.quality-panel{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;gap:8px;padding:12px;display:grid}.quality-meter{grid-template-columns:54px 1fr}.quality-meter>span{aspect-ratio:1;background:radial-gradient(circle at center, var(--surface) 58%, transparent 59%), conic-gradient(var(--green) var(--quality,0%), #dfe9e1 0);border-radius:999px}.quality-meter strong,.quality-meter small,.quality-panel strong,.quality-panel span{display:block}.quality-meter small,.quality-panel span{color:var(--muted);font-size:12px}.quality-panel button{justify-self:start;min-height:34px}.inline-link-button{color:var(--nest-strong);background:0 0;min-height:0;padding:0;font-size:12px;text-decoration:underline;display:inline}.import-filters{flex-wrap:wrap;gap:8px;display:flex}.filter-chip{background:var(--surface-soft);border:1px solid var(--border);color:var(--text);min-height:34px}.filter-chip.active{background:var(--surface-strong);color:#fff}.import-history{border-top:1px solid var(--border);margin-top:18px;padding-top:18px}.import-history-row{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;grid-template-columns:minmax(0,1fr) minmax(220px,.7fr) auto;align-items:center;gap:12px;padding:12px;display:grid}.import-history-row strong,.import-history-row span,.import-history-row small,.import-history-totals span{display:block}.import-history-row span,.import-history-row small,.import-history-totals span{color:var(--muted);font-size:12px}.import-history-totals{gap:4px;display:grid}.rule-form{grid-template-columns:minmax(180px,1fr) 110px repeat(2,minmax(140px,.75fr));gap:10px;margin-top:16px;display:grid}.rule-form .rule-action-value{grid-column:span 2}.check-row{background:var(--surface-soft);border:1px solid var(--border);color:var(--muted);border-radius:8px;align-items:center;gap:8px;min-height:42px;padding:0 12px;font-size:14px;display:inline-flex}.check-row input{width:auto;min-height:auto}.rule-list,.compact-list{gap:10px;margin-top:16px;display:grid}.rule-row,.summary-row{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;align-items:center;gap:12px;padding:12px;display:grid}.rule-row{grid-template-columns:minmax(0,1.4fr) minmax(160px,.8fr) auto}.summary-row{grid-template-columns:minmax(0,1fr) auto auto}.rule-row strong,.rule-row span,.summary-row strong,.summary-row span,.summary-row small{display:block}.rule-row span,.summary-row span,.summary-row small{color:var(--muted);font-size:13px}.report-quality{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:16px;display:grid}.report-quality div{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;padding:14px}.report-quality span,.report-quality strong{display:block}.report-quality span{color:var(--muted);font-size:13px}.report-quality strong{margin-top:6px;font-size:20px}.modal-backdrop{z-index:20;background:#0f172a6b;justify-content:center;align-items:center;padding:18px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:8px;width:100%;max-width:420px;padding:18px;box-shadow:0 24px 70px #0f172a38}.modal .panel-header{align-items:center;gap:10px}.priority-inline{max-width:170px;min-height:38px;margin-left:auto}.account-modal{max-width:620px}.goal-modal{max-width:640px}.transaction-modal{max-width:620px}.contribution-modal{max-width:640px}.page-actions{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}.pending-classification{background:#eef4ef;border:1px solid #cfe0d3;border-radius:8px;gap:12px;margin-top:16px;padding:14px;display:grid}.pending-classification-header{justify-content:space-between;align-items:center;display:flex}.pending-classification-header span,.pending-row span{color:var(--muted);font-size:13px;display:block}.pending-classification-header h3{margin:3px 0 0;font-size:20px}.pending-classification-header strong{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:999px;min-width:38px;padding:8px 12px}.pending-list{gap:10px;display:grid}.pending-row{background:var(--surface);border:1px solid var(--border);border-radius:8px;gap:10px;padding:12px;display:grid}.pending-group-row{border-color:#cfe0d3}.pending-main{justify-content:space-between;align-items:start;gap:12px;display:flex}.pending-controls,.pending-rule-controls{gap:8px;display:grid}.pending-controls{grid-template-columns:minmax(140px,.9fr) minmax(180px,1.2fr) 130px minmax(220px,1.1fr)}.pending-group-controls{grid-template-columns:140px minmax(220px,1fr)}.pending-rule-controls{grid-template-columns:180px minmax(220px,1fr)}.pending-group-detail{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;gap:4px;padding:10px 12px;display:grid}.pending-group-detail span{color:var(--muted);font-size:12px}.pending-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px;display:grid}.secondary-grid{grid-template-columns:1.2fr .8fr;align-items:start;gap:12px;margin-top:12px;display:grid}.insight-panel,.goals-panel{min-height:361px}.empty-state{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;gap:4px;margin-top:16px;padding:14px;display:grid}.empty-state strong{font-size:14px}.empty-state span{color:var(--muted);font-size:13px}.compact-empty{margin-top:10px;padding:10px 12px}.goal-list{gap:14px;margin-top:16px;display:grid}.goal-reserve{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.goal-reserve span{color:var(--muted);font-size:13px}.goal-reserve strong{font-size:14px}.goal-row{gap:7px;display:grid}.goal-row-header,.goal-row-footer{justify-content:space-between;align-items:center;display:flex}.goal-row-header strong,.goal-row-header span,.goal-row-footer span{font-size:13px}.goal-row-footer span{color:var(--muted)}.goal-track{background:#e8ede7;border-radius:999px;height:10px;overflow:hidden}.goal-fill{background:var(--green);border-radius:inherit;height:100%}.future-list{gap:10px;margin-top:16px;display:grid}.future-list span{background:var(--surface-soft);border:1px solid var(--border);color:var(--muted);border-radius:8px;padding:10px 12px;font-size:14px}.chart-panel{min-height:310px}.compact-chart-panel{min-height:465px}.pie-layout{grid-template-columns:minmax(320px,1.35fr) minmax(180px,.65fr);align-items:center;gap:12px;display:grid}.chart-box{min-height:220px;margin-top:12px}.compact-chart{min-height:300px}.account-type-chart{min-height:250px}.legend-list{gap:8px;margin-top:12px;display:grid}.compact-legend{margin-top:16px}.legend-row{grid-template-columns:12px 1fr auto;align-items:center;gap:8px;min-height:28px;display:grid}.legend-row strong,.legend-row span{font-size:13px}.legend-dot{border-radius:999px;width:10px;height:10px}.data-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px;display:grid}.table-list{gap:8px;margin-top:16px;display:grid}.table-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding-top:10px;display:flex}.manageable-row{align-items:flex-start}.row-actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;align-items:center;gap:8px;display:flex}.row-actions form{display:inline-flex}.goal-actions{justify-content:flex-start;margin-top:4px}.goal-actions button{min-height:38px}.manageable-goal{background:var(--surface-soft);border:1px solid var(--border);border-radius:8px;padding:14px}.goal-history{border-top:1px solid var(--border);gap:8px;margin-top:8px;padding-top:8px;display:grid}.goal-history-item{grid-template-columns:10px minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.history-dot{background:var(--green);border-radius:999px;width:8px;height:8px}.goal-history-item strong,.goal-history-item span{font-size:12px;display:block}.goal-history-item span,.goal-history-item small{color:var(--muted);font-size:12px}.contribution-summary{background:#eef4ef;border:1px solid #cfe0d3;border-radius:8px;grid-template-columns:92px 1fr;align-items:center;gap:14px;padding:12px;display:grid}.contribution-progress{aspect-ratio:1;background:radial-gradient(circle at center, var(--surface) 57%, transparent 58%), conic-gradient(var(--green) var(--progress,0%), #dfe9e1 0);text-align:center;border-radius:999px;flex-direction:column;justify-content:center;align-items:center;display:flex}.contribution-progress strong,.contribution-progress span{display:block}.contribution-progress strong{font-size:17px}.contribution-progress span{color:var(--muted);font-size:11px}.contribution-metrics{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.contribution-metrics div{background:var(--surface);border:1px solid var(--border);border-radius:8px;min-width:0;padding:9px 10px}.contribution-metrics span,.contribution-metrics strong{display:block}.contribution-metrics span{color:var(--muted);font-size:12px}.contribution-metrics strong{text-overflow:ellipsis;white-space:nowrap;margin-top:3px;font-size:13px;overflow:hidden}.table-row strong,.table-row span{display:block}.table-row span{color:var(--muted);margin-top:3px;font-size:13px}.ok{color:var(--green)}.danger{color:var(--red)}@media (max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{border-bottom:1px solid var(--border);border-right:0}.nav-list{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-grid,.dashboard-main-grid,.chart-grid,.secondary-grid,.data-grid,.budget-form,.filter-bar,.import-map,.budget-row,.rule-form,.rule-row,.summary-row,.report-quality,.import-review-row,.import-review-main,.import-summary-grid,.import-quality-grid,.import-history-row,.pending-controls,.pending-rule-controls{grid-template-columns:1fr}.rule-form .rule-action-value{grid-column:auto}.pie-layout{grid-template-columns:1fr}}@media (max-width:560px){.content,.sidebar{padding:18px}.topbar{flex-direction:column;align-items:flex-start;gap:12px}.metric-grid{gap:12px}.nav-list,.quick-actions,.account-form-row,.goal-amount-row,.contribution-row,.transaction-money-row{grid-template-columns:1fr}.priority-inline{width:100%;max-width:none}.currency-rate-field.compact,.currency-rate-field.compact:not(.has-rate){justify-self:stretch;width:100%}}
