:root{--surface-base: #0f172a;--surface-raised: #1e293b;--surface-overlay: #334155;--surface-deep: #475569;--text-primary: #f1f5f9;--text-secondary: #cbd5e1;--text-muted: #94a3b8;--text-subtle: #8794a8;--accent: #3b82f6;--accent-strong: #2563eb;--accent-soft: #60a5fa;--positive: #10b981;--negative: #f87171;--negative-strong: #ef4444;--negative-soft: #fca5a5;--caution: #f59e0b;--caution-soft: #fbbf24;--investment: #8b5cf6;--investment-soft: #a78bfa;--accent-rgb: 59 130 246;--positive-rgb: 16 185 129;--negative-rgb: 239 68 68;--caution-rgb: 245 158 11;--text-xs: 11px;--text-sm: 12px;--text-base: 14px;--text-md: 16px;--text-lg: 20px;--text-xl: 24px;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-xl: 12px;--radius-full: 999px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 2px 8px rgba(0, 0, 0, .3);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .4)}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:var(--surface-base);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{min-height:100vh}.app-container{display:flex;min-height:100vh}.nav-horizontal{background:var(--surface-raised);border-bottom:1px solid var(--surface-overlay);box-shadow:var(--shadow-sm);position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:0 24px;height:64px}.nav-horizontal>div{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:1800px}.nav-left{display:flex;align-items:center;gap:32px}.nav-brand{display:flex;flex-direction:column;gap:2px}.brand-name{font-size:18px;font-weight:700;color:var(--text-primary);letter-spacing:-.5px}.nav-links{display:flex;align-items:center;gap:4px}.nav-link{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;color:var(--text-muted);text-decoration:none;transition:all .2s ease;flex-shrink:0}.nav-link-label{font-size:14px;font-weight:500;color:inherit;white-space:nowrap}.nav-link:hover{background:#3b82f61a;color:var(--text-secondary)}.nav-link.active{background:#3b82f633;color:var(--accent)}.nav-icon{width:20px;height:20px;flex-shrink:0}.nav-right{display:flex;align-items:center}.main-content{flex:1;padding:24px;margin-top:64px;width:100%;max-width:1800px;margin-left:auto;margin-right:auto}.page-header{margin-bottom:20px}.page-title{font-size:24px;color:var(--text-primary);margin-bottom:4px;font-weight:600}.page-subtitle{color:var(--text-muted);font-size:13px}.summary-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;margin-top:16px;margin-bottom:20px}.summary-stats-grid>div{display:flex;justify-content:flex-start;align-items:center;gap:8px}.summary-stat-label{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px}.summary-stat-value{font-size:18px;font-weight:600;color:var(--text-primary)}.card{background:var(--surface-raised);border-radius:8px;padding:16px;box-shadow:var(--shadow-sm);border:1px solid var(--surface-overlay);margin-bottom:16px;transition:box-shadow .2s ease,border-color .2s ease}.card:hover{box-shadow:0 4px 8px #0006;border-color:var(--surface-deep)}.card-title{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:12px;display:flex;align-items:center;justify-content:space-between}.automation-badge{font-size:11px;font-weight:500;color:var(--positive);background:#10b9811a;padding:4px 10px;border-radius:12px;border:1px solid rgba(16,185,129,.3)}.status-badge{display:inline-block;padding:2px 6px;border-radius:3px;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.status-badge.complete{background:#10b98126;color:var(--positive)}.status-badge.pending{background:#f59e0b26;color:var(--caution)}.text-link{color:var(--accent-soft);text-decoration:none;font-size:12px;font-weight:500;background:#3b82f61a;padding:4px 8px;border-radius:4px;border:1px solid rgba(59,130,246,.2);transition:all .2s ease}.text-link:hover{background:#3b82f633;border-color:#3b82f64d;text-decoration:none;transform:translateY(-1px);box-shadow:0 2px 8px #3b82f633}.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}.summary-item{display:flex;justify-content:space-between;align-items:center;padding:12px 0}.summary-label{font-weight:500;color:var(--positive)}.ledger{background:var(--surface-base);border-radius:4px;padding:12px;border:1px solid var(--surface-overlay)}.ledger-row{display:flex;justify-content:space-between;align-items:center;padding:8px;margin:2px 0;border-radius:4px;font-size:13px}.ledger-row.income{background:#10b9811a}.ledger-row.expense{background:#ef44441a}.ledger-row.savings{background:#3b82f61a}.ledger-label{color:var(--text-secondary)}.ledger-amount{font-weight:600}.amount-positive{color:var(--positive)}.amount-neutral{color:var(--accent)}.ledger-divider{border-bottom:1px solid var(--surface-overlay);margin:8px 0}.ledger-label,.ledger-amount{font-size:13px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-strong)}.btn-secondary{background:var(--surface-deep);color:#fff}.btn-secondary:hover{background:var(--surface-overlay)}.btn-small{padding:6px 12px;font-size:12px}.dashboard{max-width:1800px;margin:0 auto}.dashboard-greeting{font-size:16px;font-weight:500;color:var(--text-secondary);margin-bottom:16px;padding:8px 12px}.dashboard-layout{display:grid;grid-template-columns:1fr 500px;gap:16px;margin-bottom:16px}.partnership-transparency{margin-top:16px;padding:16px;background:#667eea0d;border-radius:6px;border:1px solid rgba(102,126,234,.2)}.transparency-header{font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:12px;text-align:center}.transparency-split{margin-bottom:8px}.split-bar{display:flex;height:32px;border-radius:6px;overflow:hidden;background:var(--surface-raised)}.split-section{display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#fff;transition:all .3s ease}.split-section.partner1{background:var(--accent)}.split-section.partner2{background:var(--investment)}.transparency-helper{font-size:11px;color:var(--text-muted);text-align:center;font-style:italic}.dashboard-left{display:flex;flex-direction:column;gap:16px}.dashboard-right{display:flex;flex-direction:column;gap:16px;align-self:start}.bills-card{display:flex;flex-direction:column;flex:1;margin-bottom:0}.bills-card .bills-preview{flex:1;overflow-y:auto}.weekly-snapshot{background:linear-gradient(135deg,#1e3a8a99,#3b82f666);color:#fff;position:relative;border:1px solid rgba(59,130,246,.3);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.snapshot-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.snapshot-title{font-size:16px;font-weight:600}.week-badge{background:#ffffff26;padding:4px 10px;border-radius:4px;font-size:11px;font-weight:500}.snapshot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:16px;margin-bottom:12px}.snapshot-item{background:#ffffff1a;padding:12px;border-radius:6px}.snapshot-label{font-size:11px;opacity:.8;margin-bottom:2px;text-transform:uppercase;letter-spacing:.3px}.snapshot-value{font-size:20px;font-weight:600}.snapshot-action{display:flex;align-items:center;gap:12px;background:#ffffff26;color:#fff;padding:12px 16px;border-radius:6px;text-decoration:none;font-size:13px;font-weight:500;transition:all .2s ease;border:1px solid rgba(255,255,255,.25);cursor:pointer;width:100%;justify-content:space-between}.snapshot-action:hover{background:#ffffff40;transform:translateY(-2px);box-shadow:0 4px 12px #667eea33}.ritual-icon{font-size:20px;line-height:1}.ritual-text{flex:1;text-align:left}.ritual-title{font-size:14px;font-weight:600;margin-bottom:2px}.ritual-subtitle{font-size:11px;opacity:.85;font-weight:400}@keyframes completePulse{0%,to{box-shadow:0 0 20px #10b9814d}50%{box-shadow:0 0 30px #10b98180}}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.progress-bar{height:6px;background:var(--surface-overlay);border-radius:3px;margin-bottom:8px;overflow:hidden}.progress-fill{height:100%;border-radius:3px;transition:width .3s ease}.progress-fill.primary{background:var(--accent)}.progress-fill.success{background:var(--positive)}.progress-fill.warning{background:var(--caution)}.progress-fill.complete-pulse{animation:progressShine 2s ease-in-out infinite}@keyframes progressShine{0%,to{opacity:1}50%{opacity:.85;box-shadow:0 0 15px #10b98199}}.goals-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px;padding:12px;background:var(--surface-base);border-radius:6px;border:1px solid var(--surface-overlay)}.goals-summary .summary-item{display:flex;flex-direction:column;align-items:center;padding:0;transition:transform .2s ease}.goals-summary .summary-item:hover{transform:scale(1.05)}.goals-summary .summary-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px}.goals-summary .summary-value{font-size:18px;font-weight:700;color:var(--text-primary)}.goals-fuel{background:linear-gradient(135deg,#667eea14,#764ba214);border:1px solid rgba(102,126,234,.25);border-radius:8px;padding:16px;margin-bottom:16px;text-align:center}.fuel-label{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.fuel-amount{font-size:24px;font-weight:700;color:#667eea;margin-bottom:4px}.fuel-helper{font-size:13px;color:var(--text-secondary);font-style:italic}.goals-empty-state{padding:40px 24px;text-align:center;background:linear-gradient(135deg,#667eea0d,#764ba20d);border:2px dashed rgba(102,126,234,.3);border-radius:8px;margin-bottom:16px}.goals-empty-state h3{font-size:20px;font-weight:600;color:var(--text-primary);margin-bottom:12px}.goals-empty-state p{font-size:14px;line-height:1.6;color:var(--text-secondary);margin-bottom:20px;max-width:500px;margin-left:auto;margin-right:auto}.primary-button{padding:12px 24px;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s}.primary-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px #667eea66}.bills-summary{padding:16px;background:#10b9810d;border-radius:6px;border:1px solid rgba(16,185,129,.2);text-align:center}.bills-summary p{color:var(--text-secondary);font-size:14px;line-height:1.6;margin-bottom:12px}.bills-summary strong{color:var(--positive);font-weight:600}.bills-preview{display:flex;flex-direction:column;gap:4px}.bill-item{display:flex;align-items:center;gap:8px;padding:8px;margin-bottom:4px;background:var(--surface-base);border-radius:4px;font-size:13px;transition:background .2s ease,transform .15s ease,border-color .2s ease,opacity .2s ease;border:1px solid var(--surface-overlay);touch-action:pan-y}.bill-item:hover{background:var(--surface-raised);border-color:var(--surface-deep)}.bill-item.today{background:#f59e0b26;border-left:2px solid var(--caution)}.bill-item.paid{opacity:.55}.bill-item.paid .bill-name{text-decoration:line-through}.bill-item.pending{opacity:.7}.bill-item-checkbox{display:flex;align-items:center;flex-shrink:0;cursor:pointer}.bill-item-checkbox input[type=checkbox]{width:18px;height:18px;accent-color:var(--positive);cursor:pointer}.bill-item-checkbox input[type=checkbox]:disabled{cursor:default}.bill-item-main{flex:1;min-width:0;display:flex;justify-content:space-between;align-items:center;gap:8px}.bill-name{font-weight:500;color:var(--text-secondary)}.bill-date{font-size:11px;color:var(--text-muted);margin-top:2px}.bill-error{color:var(--negative-soft)}.bill-amount{font-weight:600;color:var(--text-primary);white-space:nowrap}.bills-summary-paid-note{color:var(--text-muted);font-weight:400}@media (prefers-reduced-motion: reduce){.bill-item{transition:background .2s ease,border-color .2s ease,opacity .2s ease}}table{width:100%;border-collapse:collapse;font-size:13px}th{padding:8px;text-align:left;color:var(--text-muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.3px;border-bottom:2px solid var(--surface-overlay)}td{padding:10px 8px;border-bottom:1px solid var(--surface-overlay);color:var(--text-secondary)}tr:hover{background:#3b82f60d}.table-cell.label{text-align:left;background:var(--surface-raised);font-weight:500}.table-cell.total{background:var(--surface-raised);font-weight:600}.table-cell.percentage{background:#3b82f61a;font-style:italic;color:var(--accent)}.table-cell.remaining{background:#10b9811a;font-weight:600}.amount{font-weight:600;color:var(--accent)}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-webkit-appearance:textfield;appearance:textfield;-moz-appearance:textfield}.balance-input:focus{outline:none;border-color:var(--accent)!important;box-shadow:0 0 0 3px #3b82f633}.goals-table{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}.goals-table thead tr{background:var(--surface-raised)}.goals-table th{padding:12px;font-weight:600;text-align:center;border-bottom:2px solid var(--surface-overlay);-webkit-user-select:none;user-select:none;color:var(--text-muted)}.goals-table th.sortable{cursor:pointer;transition:background .2s ease}.goals-table th.sortable:hover{background:var(--surface-overlay)}.goals-table th.text-left{text-align:left}.goals-table th.text-right{text-align:right}.sort-indicator{display:inline-block;margin-left:4px;font-size:10px;opacity:.6}.goals-table tbody tr{background:var(--surface-base)}.goals-table tbody tr:nth-child(odd){background:var(--surface-raised)}.goals-table td{padding:12px;text-align:center;border-bottom:1px solid var(--surface-overlay);color:var(--text-secondary)}.goals-table td[style*="text-align: left"]{text-align:left!important}.goals-table td[style*="text-align: right"]{text-align:right!important}.goals-table tbody tr.edit-row{background:#3b82f626!important}.goals-table tfoot tr{background:var(--surface-raised);font-weight:600;border-top:2px solid var(--surface-overlay)}.checkin-bill-row.paid{opacity:.6}.checkin-bill-name-cell{display:flex;align-items:center;gap:8px}.checkin-bill-name.paid{text-decoration:line-through}.checkin-bill-checkbox{width:17px;height:17px;flex-shrink:0;accent-color:var(--positive);cursor:pointer}.paid-bills-note{margin:8px 0 0;font-size:12px;color:var(--text-muted)}.refresh-balance-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:6px;background:transparent;color:var(--text-muted);cursor:pointer;transition:background .15s ease,color .15s ease}.refresh-balance-btn:hover:not(:disabled){background:var(--surface-overlay);color:var(--text-primary)}.refresh-balance-btn:disabled{cursor:default;opacity:.6}.refresh-balance-btn .spinning{animation:refresh-balance-spin .8s linear infinite}@keyframes refresh-balance-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.balance-refresh-info{margin-top:4px;font-size:12px;color:var(--text-muted)}.cell-meta-mobile{display:none}.badge{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;display:inline-block}.badge-green{background:#10b98126;color:var(--positive)}.badge-blue{background:#3b82f626;color:var(--accent)}.badge-yellow{background:#f59e0b26;color:var(--caution)}.badge-red{background:#ef444426;color:var(--negative)}.badge-gray{background:#94a3b826;color:var(--text-muted)}.icon-btn{background:none;border:none;cursor:pointer;padding:4px;color:var(--accent);transition:color .3s}.icon-btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.icon-btn:hover{color:var(--accent-soft)}.icon-btn.delete{color:var(--negative)}.icon-btn.delete:hover{color:var(--negative-soft)}.allocation-warning.error{background:#ef444426;color:var(--negative);border:1px solid rgba(239,68,68,.3)}.mode-btn{padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .3s;background:var(--surface-overlay);color:var(--text-secondary)}.mode-btn.active{background:var(--accent);color:#fff}.mode-btn:hover:not(.active){background:var(--surface-deep)}.text-right{text-align:right}.text-left{text-align:left}.flex{display:flex}.card-title-flex{display:flex;justify-content:space-between;align-items:center}.weekly-page{display:flex;flex-direction:column}.week-controls{background:var(--surface-raised);border-radius:12px;padding:20px 24px;box-shadow:var(--shadow-md);border:1px solid var(--surface-overlay);display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.week-controls-left{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.week-controls-right{display:flex;align-items:center;gap:12px}.week-heading{font-size:18px;font-weight:600;color:var(--text-primary);margin-bottom:6px}.week-selector{display:flex;align-items:center;gap:12px}.week-btn{padding:8px 12px;background:var(--surface-overlay);border:1px solid var(--surface-deep);border-radius:6px;color:var(--text-primary);font-weight:600;cursor:pointer;transition:all .2s}.week-btn:hover:not(:disabled){background:var(--accent);border-color:var(--accent);color:#fff}.week-btn:disabled{opacity:.5;cursor:not-allowed}.week-display{font-size:16px;color:var(--text-primary);font-weight:600;min-width:200px;text-align:center}select.past-weeks-dropdown{padding:8px 16px;border:1px solid var(--surface-deep);border-radius:6px;background:var(--surface-overlay);color:var(--text-primary);font-size:14px;cursor:pointer;min-width:200px;width:auto}.week-pill{padding:6px 12px;border-radius:999px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px}.week-pill.current{background:#3b82f626;color:var(--accent)}.week-pill.historical{background:#94a3b826;color:var(--text-muted)}.week-pill.future{background:#8b5cf626;color:var(--investment)}.ledger-card .card-title{font-size:16px;font-weight:600;margin-bottom:16px}.ledger{background:var(--surface-base);border-radius:8px;padding:16px;border:1px solid var(--surface-overlay)}.ledger-row{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;margin:4px -8px;border-radius:8px;transition:background .15s ease}.ledger-row.balance{background:#10b9811a;border:1px solid rgba(16,185,129,.2);margin-bottom:8px}.ledger-row.bills-header{font-weight:600;color:var(--text-primary);background:transparent}.ledger-row.bill-row{padding-left:40px;font-size:15px;color:var(--text-muted)}.ledger-row.bill-row:hover{background:#3b82f60d}.ledger-row.total{background:var(--surface-raised);border:1px solid rgba(59,130,246,.3);font-weight:600;font-size:17px;margin-top:8px}.ledger-divider{border:none;height:1px;background:var(--surface-overlay);margin:16px 0}.bill-amount{display:flex;align-items:center;gap:8px}.ledger-amount.positive{color:var(--positive);font-weight:600}.ledger-amount.negative{color:var(--negative);font-weight:600}.summary-notes li.complete{color:var(--positive)}.summary-notes li.pending{color:var(--caution)}.summary-notes li.positive{color:var(--positive)}.summary-notes li.negative{color:var(--negative)}.user-profile-container{position:relative;display:flex;align-items:center}.user-profile-trigger{width:40px;height:40px;background:transparent;border:none;padding:0;font:inherit;display:flex;align-items:center;justify-content:center;border-radius:8px;cursor:pointer;transition:all .2s ease;color:var(--text-muted)}.user-profile-trigger:hover,.user-profile-trigger[aria-expanded=true]{background:#3b82f61a;color:var(--accent)}.user-profile-trigger:focus-visible{outline:2px solid var(--accent-soft);outline-offset:2px}.user-profile-dropdown{position:absolute;top:calc(100% + 8px);right:0;width:280px;background:var(--surface-raised);border-radius:8px;box-shadow:0 4px 12px #00000080;border:1px solid var(--surface-overlay);opacity:0;visibility:hidden;transform:translateY(-10px);transition:all .2s ease;z-index:1000}.user-profile-dropdown.is-open{opacity:1;visibility:visible;transform:translateY(0)}.user-profile-header{padding:16px;border-bottom:1px solid var(--surface-overlay);display:flex;align-items:center;gap:12px}.user-profile-avatar{width:40px;height:40px;background:#3b82f633;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--accent);flex-shrink:0}.user-profile-info{flex:1;min-width:0}.user-profile-name{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-profile-provider{font-size:11px;color:var(--text-muted)}.user-profile-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:12px 16px;background:transparent;border:none;color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;text-decoration:none;transition:background .2s ease}.user-profile-menu-item:hover{background:#cbd5e11a;color:var(--text-primary)}.user-profile-logout{display:flex;align-items:center;gap:8px;width:100%;padding:12px 16px;background:transparent;border:none;color:var(--negative);font-size:13px;font-weight:500;cursor:pointer;transition:background .2s ease}.user-profile-logout:hover{background:#ef44441a}.scenario-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}.portfolio-hero{display:flex;flex-direction:column;gap:var(--space-5)}.portfolio-hero-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-6)}.portfolio-hero-label{font-size:var(--text-base);color:var(--text-muted);margin-bottom:var(--space-2)}.portfolio-hero-figure{font-size:44px;font-weight:var(--weight-bold);color:var(--positive);line-height:1.1}.portfolio-hero-figure-secondary{color:var(--accent-soft);font-size:36px}.portfolio-hero-figure-today{color:var(--text-primary)}.portfolio-hero-unit{font-size:var(--text-lg);font-weight:var(--weight-medium);color:var(--text-muted);margin-left:var(--space-1)}.portfolio-hero-subvalue{color:var(--text-muted);font-size:var(--text-base);margin-top:var(--space-1)}.portfolio-hero-progress{display:flex;flex-direction:column;gap:var(--space-2)}.portfolio-hero-progress-row{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--text-base);font-weight:var(--weight-semibold)}.portfolio-hero-cta{display:flex}.portfolio-accounts-summary{color:var(--text-secondary);font-size:var(--text-base)}.portfolio-income-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6);margin-top:var(--space-5)}.portfolio-income-box{background:var(--surface-overlay);border-radius:var(--radius-xl);padding:var(--space-6)}.portfolio-income-box-label{font-size:var(--text-base);font-weight:var(--weight-medium);color:var(--text-secondary);margin-bottom:var(--space-3)}.portfolio-income-box-figure{font-size:32px;font-weight:var(--weight-bold);color:var(--accent-soft);margin-bottom:var(--space-2)}.portfolio-income-box-figure-target{color:var(--investment-soft)}.portfolio-income-box-sub{font-size:var(--text-base);color:var(--text-muted)}.portfolio-income-breakdown{margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--surface-deep);display:flex;flex-direction:column;gap:var(--space-1)}.portfolio-income-line{display:flex;justify-content:space-between;padding:var(--space-2) 0;font-size:var(--text-base);color:var(--text-secondary)}.portfolio-income-line span:last-child{color:var(--text-primary);font-weight:var(--weight-semibold)}.portfolio-income-suggestions{margin-top:var(--space-5);padding:var(--space-5);background:rgb(var(--accent-rgb) / 10%);border-radius:var(--radius-lg)}.portfolio-income-suggestions-title{font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-secondary);margin-bottom:var(--space-3);text-transform:uppercase;letter-spacing:.5px}.portfolio-income-suggestion-item{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--space-2);line-height:1.5}.portfolio-income-suggestion-item strong{color:var(--text-primary)}.portfolio-income-ss{margin-top:var(--space-6);padding-top:var(--space-5);border-top:1px solid var(--surface-overlay)}.portfolio-income-ss-title{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--accent-soft);margin-bottom:var(--space-2)}.portfolio-income-ss-intro{color:var(--text-muted);font-size:var(--text-base);margin-bottom:var(--space-4)}.portfolio-income-ss-list{display:flex;flex-direction:column;gap:var(--space-3)}.portfolio-income-ss-item{display:flex;align-items:center;gap:var(--space-3)}.portfolio-income-ss-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.portfolio-income-ss-note{margin-top:var(--space-4);padding:var(--space-3);background:var(--surface-raised);border-radius:var(--radius-md);border-left:3px solid var(--accent-soft)}.portfolio-milestones{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-4)}.portfolio-milestone-row{display:flex;align-items:baseline;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface-overlay);border-radius:var(--radius-md)}.portfolio-milestone-amount{font-size:var(--text-base);font-weight:var(--weight-semibold);color:var(--positive);min-width:64px}.portfolio-milestone-age{font-size:var(--text-base);color:var(--text-primary);flex:1}.portfolio-milestone-years{font-size:var(--text-sm);color:var(--text-muted)}.bottom-tab-nav{display:none}.hide-mobile{display:table-cell}a{color:var(--accent-soft);text-decoration:none}a:hover{text-decoration:underline}.date-input{background:var(--surface-base);border:1px solid var(--surface-overlay);border-radius:6px;color:var(--text-primary);padding:6px 10px;font-size:13px;font-family:inherit}.date-input::-webkit-calendar-picker-indicator{filter:invert(1) opacity(.6);cursor:pointer}.loading{padding:32px;text-align:center;color:var(--text-muted);font-size:14px}.table-wrapper{width:100%;overflow-x:auto}.portfolio-container{width:100%}.cashflow-stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:16px}.tier-summary-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;padding:16px;background:var(--surface-raised);border-radius:8px}.btn-danger{background:var(--negative-strong);color:#fff}.btn-ghost{background:transparent;color:var(--text-secondary);border:1px solid var(--surface-overlay)}.btn-ghost:hover{background:var(--surface-overlay);color:var(--text-primary)}.btn-link{background:transparent;color:var(--accent);padding-left:0;padding-right:0}.btn-link:hover{color:var(--accent-soft);text-decoration:underline}.btn-large{padding:var(--space-3) var(--space-6);font-size:var(--text-base);font-weight:var(--weight-semibold);border-radius:var(--radius-lg)}.badge-investment{background:rgb(var(--investment-rgb, 139 92 246) / 15%);color:var(--investment)}.status-badge.neutral{background:rgb(var(--text-muted-rgb, 148 163 184) / 15%);color:var(--text-muted)}.status-badge.info{background:rgb(var(--accent-rgb) / 15%);color:var(--accent)}.status-badge.overdue,.week-pill.overdue{background:rgb(var(--negative-rgb) / 15%);color:var(--negative)}.week-pill.complete{background:rgb(var(--positive-rgb) / 15%);color:var(--positive)}.week-pill.pending{background:rgb(var(--caution-rgb) / 15%);color:var(--caution)}.page-header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.page-title-meta{margin-left:var(--space-3);font-size:var(--text-base);font-weight:var(--weight-normal);color:var(--text-muted)}.page-header-actions{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.field{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-4)}.field-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-muted)}.field-input{width:100%;background:var(--surface-base);border:1px solid var(--surface-overlay);border-radius:var(--radius-md);color:var(--text-primary);padding:var(--space-2) var(--space-3);font-size:var(--text-base);font-family:inherit}.field-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px rgb(var(--accent-rgb) / 25%)}.field-input[aria-invalid=true]{border-color:var(--negative)}.field-input::placeholder{color:var(--text-muted)}.field-input--inline{background:transparent;border-color:transparent;padding:var(--space-1) var(--space-2);font-size:inherit}.field-input--inline:focus{background:var(--surface-base);border-color:var(--accent)}.field-select{cursor:pointer}.field-currency{position:relative;display:block}.field-currency:before{content:"$";position:absolute;left:var(--space-3);top:50%;transform:translateY(-50%);color:var(--text-muted);font-size:var(--text-base);pointer-events:none}.field-input--currency{padding-left:var(--space-6)}.field-hint{font-size:var(--text-sm);color:var(--text-muted)}.field-error{font-size:var(--text-sm);color:var(--negative)}.btn.btn-bare{background:none;border:none;padding:0;color:inherit;font:inherit}.field.field--flush{margin-bottom:0}@media (max-width: 1024px){.dashboard-layout{grid-template-columns:1fr}.bills-card .bills-preview{min-height:300px;max-height:500px}.two-column,.scenario-grid,.portfolio-income-grid{grid-template-columns:1fr}.week-controls{flex-direction:column;gap:16px;align-items:stretch}.week-controls-left{flex-direction:column;gap:12px}.allocation-grid{grid-template-columns:1fr 1fr}.savings-grid,.goals-summary{grid-template-columns:repeat(2,1fr)}.collapsible-content{grid-template-columns:1fr}.cashflow-stat-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width: 768px){.nav-horizontal{padding:0 16px;height:56px}.main-content{margin-top:56px;padding-top:16px;padding-left:16px;padding-right:16px;padding-bottom:calc(72px + env(safe-area-inset-bottom))}.nav-link-content{display:none}.nav-link{padding:8px 12px}.nav-links{gap:4px}.brand-tagline{display:none}.user-profile-dropdown{right:-16px;width:calc(100vw - 32px);max-width:320px}.savings-grid,.goals-summary,.allocation-grid{grid-template-columns:1fr}.snapshot-grid{grid-template-columns:repeat(2,1fr)}.summary-stats-grid{grid-template-columns:1fr}.goals-table{font-size:12px}.goals-table th,.goals-table td{padding:8px 4px}table{font-size:12px}th,td{padding:8px 4px}.card{padding:12px}.btn{min-height:44px;padding:12px 16px}.btn-small{min-height:36px;padding:8px 12px}.nav-link{min-height:44px;min-width:44px}.icon-btn{min-height:44px;min-width:44px;padding:12px}.input-group input{font-size:16px;min-height:44px}input[type=number],input[type=text],input[type=date],select,textarea{font-size:16px}.week-controls{padding:16px}.week-btn{min-height:44px;padding:10px 16px}.past-weeks-dropdown{min-height:44px;width:100%}.week-controls-right{flex-direction:column;width:100%;gap:8px}.week-controls-right button{width:100%}.card-title,.card-title-flex{flex-direction:column;align-items:flex-start;gap:8px}.expense-item{grid-template-columns:1fr;gap:8px}.bill-item{flex-direction:row;align-items:center;justify-content:space-between;gap:8px}.bottom-tab-nav{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--surface-raised);border-top:1px solid var(--surface-overlay);padding:8px 0 max(8px,env(safe-area-inset-bottom));z-index:100;box-shadow:0 -2px 10px #0000004d}.bottom-tab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:8px 4px;color:var(--text-muted);text-decoration:none;transition:all .2s ease;min-height:56px;position:relative}.bottom-tab:active{background:#94a3b81a}.bottom-tab.active{color:var(--accent)}.bottom-tab.active:before{content:"";position:absolute;top:0;left:20%;right:20%;height:3px;background:var(--accent);border-radius:0 0 3px 3px}.bottom-tab-icon{flex-shrink:0}.bottom-tab-label{font-size:11px;font-weight:500;text-align:center;line-height:1.2}.nav-links{display:none}.dashboard-greeting{font-size:16px;margin-bottom:16px}.card-title>div{width:100%}.card-title .text-link{display:block;width:100%;text-align:center;margin-top:8px}.weekly-snapshot{padding:16px}.snapshot-header{flex-direction:column;align-items:flex-start;gap:8px}.snapshot-title{font-size:18px}.snapshot-value{font-size:20px}.bills-preview{max-height:400px}.bill-item{padding:8px 10px}.bill-name{font-size:14px}.bill-amount{font-size:16px;font-weight:600}.ledger-row{padding:10px 0}.ledger-label{font-size:13px}.ledger-amount{font-size:15px}select{min-height:44px;font-size:16px;padding:12px}textarea{min-height:100px;padding:12px;font-size:16px}input[type=date]{min-height:44px;padding:10px 12px}.goals-table{display:block}.goals-table thead{display:none}.goals-table tbody,.goals-table tfoot{display:block}.goals-table tr{display:block;background:var(--surface-base);border:1px solid var(--surface-overlay);border-radius:8px;padding:16px;margin-bottom:12px}.goals-table tfoot tr{background:var(--surface-raised)}.goals-table td{display:block;text-align:left!important;padding:8px 0!important;border:none}.goals-table td:before{content:attr(data-label);font-weight:600;color:var(--text-muted);display:inline-block;margin-right:8px;min-width:120px}.goals-table td:last-child{border-top:1px solid var(--surface-overlay);padding-top:12px!important;margin-top:8px}.goals-table.compact-list tr:not(.edit-row){display:grid;grid-template-columns:1fr auto;grid-template-areas:"primary amount" "meta actions";align-items:center;column-gap:10px;row-gap:3px;padding:10px 12px;margin-bottom:8px}.goals-table.compact-list tr:not(.edit-row) td{display:block;padding:0!important;border:none!important;text-align:left!important}.goals-table.compact-list tr:not(.edit-row) td:before{display:none!important}.goals-table.compact-list tr:not(.edit-row) .cell-primary{grid-area:primary;font-weight:600;font-size:15px}.goals-table.compact-list tr:not(.edit-row) .cell-amount{grid-area:amount;text-align:right!important;font-weight:700;font-size:15px;font-variant-numeric:tabular-nums}.goals-table.compact-list tr:not(.edit-row) .cell-meta-mobile{grid-area:meta;display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-muted)}.goals-table.compact-list tr:not(.edit-row) .cell-actions{grid-area:actions;display:flex;justify-content:flex-end;gap:4px}.goals-table.compact-list tr:not(.edit-row) .cell-desktop-only{display:none!important}.goals-table.compact-list tr:not(.edit-row) .cell-actions .icon-btn{min-height:32px;min-width:32px;padding:6px}.cell-meta-mobile .tier-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}.card-title+div{width:100%}.goals-table.month-breakdown{display:table;width:100%;min-width:600px}.goals-table.month-breakdown thead{display:table-header-group}.goals-table.month-breakdown tbody{display:table-row-group}.goals-table.month-breakdown tr{display:table-row;background:transparent;border:none;border-radius:0;padding:0;margin:0}.goals-table.month-breakdown td{display:table-cell;padding:8px 4px!important}.goals-table.month-breakdown td:before{display:none}.scenario-grid,.portfolio-income-grid{grid-template-columns:1fr;gap:12px}.portfolio-hero-figure{font-size:32px}.portfolio-hero-figure-secondary{font-size:26px}canvas{max-width:100%;height:auto!important}.hide-mobile{display:none!important}.categorizer-header-stats{flex-wrap:wrap;gap:12px!important;padding:12px 16px!important}.categorizer-header-stats>div{flex:0 0 auto}.categorizer-legend{grid-template-columns:1fr!important}.categorizer-table select{min-width:130px!important;font-size:12px!important;padding:4px 6px!important}.categorizer-table td,.categorizer-table th{padding:10px 8px!important;font-size:13px!important}.categorizer-table td:first-child{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cashflow-stat-grid{grid-template-columns:repeat(2,1fr)}.tier-summary-grid{grid-template-columns:1fr;gap:12px}}@media (max-width: 480px){.snapshot-grid{grid-template-columns:1fr}.nav-horizontal{padding:0 12px}.main-content{padding-top:12px;padding-left:12px;padding-right:12px}.week-selector{flex-direction:column;width:100%}.week-display{width:100%;min-width:0}.week-btn{width:100%}.cashflow-stat-grid{grid-template-columns:1fr}}@media print{*,*:before,*:after{background:transparent!important;background-image:none!important;box-shadow:none!important;color:#000!important;text-shadow:none!important}.amount-positive,.badge-green,.status-badge.complete{color:#05603a!important}.amount-negative,.badge-red,.status-badge.overdue{color:#9a1c1c!important}.goals-table th,.goals-table td,.card{border-color:#999!important}.bottom-tab-nav,.user-profile-container,.field-input,.mode-toggle,select,input[type=checkbox]{display:none!important}.table-wrapper,.portfolio-container{overflow:visible!important}@page{margin:14mm}.nav-horizontal,.no-print,.icon-btn,.btn,.dashboard-right,.bills-card{display:none!important}body{background-color:#fff!important;color:#000!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.main-content{margin-top:0!important;padding:0!important}.dashboard-layout{display:block!important}.dashboard-left{width:100%!important}.card{background:#fff!important;border:1px solid #ddd!important;box-shadow:none!important;margin-bottom:20px!important;break-inside:avoid}.card-title,.card-title-flex h2{color:#000!important}.goals-table{width:100%!important}.goals-table th,.goals-table td{color:#000!important;border-bottom:1px solid #ddd!important;padding:8px!important}.goals-table th{background-color:#f5f5f5!important;font-weight:600!important}.goals-table tfoot td{font-weight:600!important;border-top:2px solid #333!important}.goals-table th:last-child,.goals-table td:last-child{display:none!important}h1{color:#000!important;margin-bottom:20px!important}.bottom-tab-nav{display:none!important}}
