.frame{max-width:720px;margin:0 auto;padding:28px 20px 100px}.masthead{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.07);padding:4px 0 16px;margin-bottom:4px;position:sticky;top:0;z-index:40;background:#0f1110bf;backdrop-filter:blur(20px) saturate(160%);-webkit-backdrop-filter:blur(20px) saturate(160%)}.masthead .brand-mark{display:flex;align-items:center;gap:10px}.masthead h1{font-family:var(--font-display);font-size:22px;font-weight:700;letter-spacing:-.01em;margin:0}.masthead .dateline{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft);display:block;margin-top:2px}.signoff-btn{background:none;border:1px solid var(--border);color:var(--ink-soft);font-size:12px;font-family:var(--font-body);padding:6px 12px;cursor:pointer;border-radius:6px;transition:border-color .15s ease,color .15s ease}.signoff-btn:hover{color:var(--ink);border-color:var(--ink-soft)}.thread-mark{width:28px;height:16px;flex-shrink:0}.tab-nav{display:flex;gap:4px;margin:20px 0 24px;padding:4px;background:var(--panel);border:1px solid var(--border);border-radius:8px}.tab-btn{flex:1;background:none;border:none;padding:8px 10px;font-family:var(--font-body);font-size:13px;font-weight:500;color:var(--ink-soft);cursor:pointer;border-radius:6px;transition:background .15s ease,color .15s ease}.tab-btn.active{color:var(--bg);background:var(--accent);font-weight:600}.tab-btn:not(.active):hover{color:var(--ink);background:var(--panel-raised)}.summary-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-bottom:24px}.summary-strip.currency-grouped{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.summary-cell{background:var(--panel);padding:14px 16px}.summary-cell .label{font-family:var(--font-body);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);display:block;margin-bottom:6px}.summary-cell .value{font-family:var(--font-mono);font-size:18px;font-weight:600;display:block;color:var(--ink)}.summary-cell .sublabel{font-family:var(--font-mono);font-size:11px;display:block;margin-top:4px;color:var(--ink-soft)}.summary-cell .value.accent{color:var(--accent)}.summary-cell .value.good{color:var(--good)}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.section-head h2{font-family:var(--font-display);font-size:16px;font-weight:600;margin:0;color:var(--ink)}.add-btn{background:var(--accent);color:var(--bg);border:none;padding:8px 14px;font-size:13px;font-weight:600;font-family:var(--font-body);border-radius:6px;cursor:pointer;transition:background .15s ease}.add-btn:hover{background:var(--accent-dim)}.ledger-list{border-top:1px solid var(--border)}.ledger-row{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid var(--border-soft)}.ledger-row .stamp{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--accent);border:1px solid var(--accent-dim);background:var(--accent-bg);border-radius:4px;padding:2px 7px;white-space:nowrap;flex-shrink:0}.ledger-row .details{flex:1;min-width:0}.ledger-row .name{font-size:14px;font-weight:500;margin:0 0 2px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ledger-row .meta{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ledger-row .amount{font-family:var(--font-mono);font-size:15px;font-weight:600;flex-shrink:0;color:var(--ink)}.ledger-row .amount.accent{color:var(--accent)}.ledger-row .delete-btn{background:none;border:none;color:var(--ink-faint);font-size:18px;line-height:1;cursor:pointer;padding:4px 2px;flex-shrink:0}.ledger-row .delete-btn:hover{color:var(--danger)}.row-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.row-actions .delete-btn{padding:4px 6px}.empty-state{padding:32px 20px;text-align:center;color:var(--ink-soft);font-family:var(--font-body);font-size:14px;line-height:1.6;border:1px dashed var(--border);border-radius:8px}.goal-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:16px 18px;margin-bottom:14px}.goal-card-link{display:block;width:100%;text-align:left;cursor:pointer;font-family:inherit;transition:border-color .15s ease}.goal-card-link:hover{border-color:var(--accent-dim)}.status-filter-row{display:flex;gap:6px;margin-bottom:16px;overflow-x:auto}.status-filter-btn{background:var(--panel);border:1px solid var(--border);color:var(--ink-soft);font-family:var(--font-body);font-size:12px;font-weight:500;padding:6px 12px;border-radius:14px;cursor:pointer;white-space:nowrap;flex-shrink:0}.status-filter-btn.active{background:var(--accent-bg);border-color:var(--accent-dim);color:var(--accent)}.status-filter-btn:not(.active):hover{border-color:var(--ink-soft)}.status-badge{font-family:var(--font-body);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:3px 8px;border-radius:4px;white-space:nowrap;flex-shrink:0}.status-active{color:var(--accent);background:var(--accent-bg);border:1px solid var(--accent-dim)}.status-on-hold{color:var(--warn);background:var(--warn-bg);border:1px solid var(--warn)}.status-achieved{color:var(--ink-soft);background:var(--panel-raised);border:1px solid var(--border)}.status-switch-row{display:flex;gap:6px;margin-top:14px;padding-top:14px;border-top:1px solid var(--border-soft)}.status-switch-btn{flex:1;background:var(--bg);border:1px solid var(--border);color:var(--ink-soft);font-family:var(--font-body);font-size:12px;font-weight:500;padding:8px;border-radius:6px;cursor:pointer}.status-switch-btn.active{background:var(--accent);border-color:var(--accent);color:var(--bg);font-weight:600}.status-switch-btn:not(.active):hover{border-color:var(--ink-soft);color:var(--ink)}.back-link{background:none;border:none;color:var(--accent);font-family:var(--font-body);font-size:13px;font-weight:500;cursor:pointer;padding:4px 0}.back-link:hover{color:var(--accent-dim)}.goal-card-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}.goal-card-top .name{font-family:var(--font-display);font-size:15px;font-weight:600;color:var(--ink)}.goal-card-top .deadline{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint);text-transform:uppercase}.goal-amounts{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:13px;margin-bottom:8px}.goal-amounts .raised{color:var(--accent);font-weight:600}.goal-amounts .target{color:var(--ink-soft)}.goal-bar-track{height:6px;background:var(--border-soft);border-radius:3px;overflow:hidden;margin-bottom:10px}.goal-bar-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .3s ease}.goal-bar-fill.over{background:var(--warn)}.goal-footer{display:flex;justify-content:space-between;align-items:center}.goal-footer .pct{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft)}.goal-footer .delete-btn{background:none;border:none;color:var(--ink-soft);font-size:12px;font-family:var(--font-body);font-weight:500;cursor:pointer}.goal-footer .delete-btn:hover{color:var(--danger)}.sheet-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:flex-end;justify-content:center;z-index:200;animation:fadeIn .15s ease}@media (min-width: 600px){.sheet-overlay{align-items:center}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.sheet{background:var(--panel);border-top:1px solid var(--border);border-radius:16px 16px 0 0;width:100%;max-width:480px;max-height:62vh;overflow-y:auto;overflow-x:hidden;padding:20px 20px 28px;box-sizing:border-box}@media (min-width: 600px){.sheet{border:1px solid var(--border);border-radius:12px}}.sheet h3{font-family:var(--font-display);font-size:17px;font-weight:600;margin:0 0 18px;color:var(--ink)}.field{margin-bottom:16px}.field label{display:block;font-family:var(--font-body);font-size:12px;font-weight:500;color:var(--ink-soft);margin-bottom:6px}.field-hint{font-size:12px;color:var(--warn);margin:6px 0 0}.account-email{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:10px 12px;font-size:14px;color:var(--ink);margin:0}.field input,.field select,.field textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:10px 12px;font-size:15px;color:var(--ink)}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field-row-3{grid-template-columns:1fr 1fr .8fr}.sheet-actions{display:flex;gap:10px;margin-top:22px}.btn-primary,.btn-secondary{flex:1;padding:12px;font-family:var(--font-body);font-size:13px;font-weight:600;border-radius:6px;cursor:pointer;border:none}.btn-primary{background:var(--accent);color:var(--bg)}.btn-primary:hover{background:var(--accent-dim)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:none;border:1px solid var(--border);color:var(--ink-soft)}.btn-secondary:hover{border-color:var(--ink-soft);color:var(--ink)}.auth-shell{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:380px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:36px 28px}.auth-card .brand-row{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:4px}.auth-card .brand{font-family:var(--font-display);font-size:26px;font-weight:700;margin:0;text-align:center;color:var(--ink)}.auth-card .tag{font-family:var(--font-body);font-size:12px;color:var(--ink-soft);text-align:center;margin:4px 0 28px}.auth-toggle{display:flex;justify-content:center;gap:16px;margin-top:18px;font-family:var(--font-body);font-size:12px}.auth-toggle button{background:none;border:none;color:var(--accent);cursor:pointer;padding:0;font-weight:500}.auth-toggle button:hover{color:var(--accent-dim);text-decoration:underline}.forgot-link{display:block;background:none;border:none;color:var(--ink-soft);font-family:var(--font-body);font-size:12px;cursor:pointer;padding:0;margin:-8px 0 16px;text-align:right;width:100%}.forgot-link:hover{color:var(--accent)}.auth-error{background:#e0654f1a;border:1px solid var(--danger);color:var(--danger);font-size:13px;padding:10px 12px;border-radius:6px;margin-bottom:16px}.auth-hint{font-family:var(--font-body);font-size:13px;color:var(--accent);background:var(--good-bg);border:1px solid var(--accent-dim);border-radius:6px;padding:10px 12px;margin-bottom:16px}.loading-text{font-family:var(--font-body);font-size:13px;color:var(--ink-soft);text-align:center;padding:60px 0}.dash-currency-block{margin-bottom:28px}.dash-currency-head{display:flex;align-items:center;gap:8px;margin-bottom:12px}.dash-currency-head h3{font-family:var(--font-display);font-size:14px;font-weight:600;letter-spacing:.04em;color:var(--ink-soft);text-transform:uppercase;margin:0}.thread-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);flex-shrink:0}.dash-bar-track{height:8px;background:var(--border-soft);border-radius:4px;overflow:hidden;margin-bottom:6px}.dash-bar-fill{height:100%;background:var(--accent);border-radius:4px;transition:width .3s ease}.dash-bar-caption{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft);margin:0 0 4px}.dash-hint{font-size:13px;color:var(--ink-soft);margin:0 0 14px;line-height:1.5}.dash-thread-list{display:flex;flex-direction:column;gap:8px}.dash-thread-row{display:flex;align-items:baseline;gap:8px}.dash-thread-row .thread-line{flex:0 1 28px;height:0;border-top:1px dashed var(--border);min-width:14px}.dash-thread-row .meta{font-family:var(--font-body);font-size:13px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:auto}.dash-thread-row .amount{font-family:var(--font-mono);font-size:13px;font-weight:600;color:var(--accent);white-space:nowrap;flex-shrink:0}.charts-section{margin-top:28px;padding-top:24px;border-top:1px solid var(--border)}.chart-block{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:16px 14px 12px;margin-bottom:18px;overflow:hidden;max-width:100%;box-sizing:border-box}.chart-title{font-family:var(--font-display);font-size:13px;font-weight:600;color:var(--ink-soft);margin:0 0 12px 6px}.chart-tooltip{background:var(--panel-raised);border:1px solid var(--border);border-radius:6px;padding:8px 12px;font-size:12px}.chart-tooltip-label{font-family:var(--font-body);font-weight:600;color:var(--ink);margin:0 0 4px}.chart-tooltip-row{display:flex;align-items:center;gap:6px;color:var(--ink-soft);margin:2px 0}.chart-tooltip-dot{width:8px;height:8px;border-radius:2px;flex-shrink:0}.chart-legend{display:flex;flex-wrap:wrap;gap:14px;margin:8px 0 0 6px}.chart-legend-item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-soft)}.chart-legend-dot{width:9px;height:9px;border-radius:2px;flex-shrink:0}.chart-pie-row{display:flex;align-items:center;gap:12px;max-width:100%}.chart-pie-row>div:first-child{flex:0 0 auto;width:45%;min-width:0;overflow:hidden}.chart-pie-legend{flex:1;display:flex;flex-direction:column;gap:6px;min-width:0}.chart-pie-legend .chart-legend-item{margin:0;font-size:13px;line-height:1.3}.insights-container{padding-top:4px}.insights-intro{font-size:12px;color:var(--ink-faint);font-style:italic;margin:0 0 16px;line-height:1.5}.insight-card{display:flex;align-items:flex-start;gap:14px;padding:16px;background:var(--panel);border:1px solid var(--border);border-radius:8px;margin-bottom:10px}.insight-icon{font-size:18px;flex-shrink:0;line-height:1;margin-top:2px;opacity:.75}.insight-body{flex:1;min-width:0}.insight-label{font-family:var(--font-body);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);margin:0 0 4px}.insight-text{font-size:14px;color:var(--ink);margin:0 0 4px;line-height:1.5}.insight-sub{font-size:12px;color:var(--ink-soft);margin:0;line-height:1.5}.insights-empty{text-align:center;padding:40px 20px}.insights-empty-icon{font-size:28px;color:var(--accent);margin:0 0 12px}.insights-empty-title{font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--ink);margin:0 0 8px}.insights-empty-sub{font-size:13px;color:var(--ink-soft);margin:0 auto;line-height:1.6;max-width:320px}.snapshot{margin-bottom:24px}.snapshot-row{display:flex;align-items:flex-start;gap:0;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:16px;margin-bottom:10px}.snapshot-cell{display:flex;flex-direction:column;gap:4px}.snapshot-divider{width:1px;background:var(--border);align-self:stretch;margin:0 16px;flex-shrink:0}.snapshot-label{font-family:var(--font-body);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint)}.snapshot-value{font-family:var(--font-mono);font-size:20px;font-weight:600;color:var(--ink);line-height:1.2}.snapshot-value.accent{color:var(--accent)}.snapshot-value-soft{font-family:var(--font-body);font-size:14px;color:var(--ink-soft)}.snapshot-edit-link,.snapshot-set-link{background:none;border:none;color:var(--accent);font-family:var(--font-body);font-size:12px;cursor:pointer;padding:0;text-align:left}.snapshot-edit-link:hover,.snapshot-set-link:hover{text-decoration:underline}.snapshot-payday-edit{display:flex;flex-direction:column;gap:4px}.snapshot-payday-input{width:60px;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:15px;color:var(--ink);font-family:var(--font-mono)}.snapshot-payday-input:focus{border-color:var(--accent);outline:none}.snapshot-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px 16px;margin-bottom:10px}.snapshot-card-label{font-family:var(--font-body);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin-bottom:8px}.snapshot-card-body{display:flex;flex-direction:column;gap:2px}.snapshot-card-sub{font-size:12px;color:var(--ink-soft);font-family:var(--font-body)}.snapshot-goal-row{display:flex;align-items:center;gap:14px}.snapshot-goal-detail{display:flex;flex-direction:column;gap:4px;min-width:0}.snapshot-goal-name{font-family:var(--font-display);font-size:15px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.snapshot-action{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;background:var(--accent-bg);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;margin-bottom:10px}.snapshot-action-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0;margin-top:5px}.snapshot-action-text{font-size:13px;color:var(--ink-soft);line-height:1.5;flex:1}.income-filter-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px;overflow-x:auto}.month-group{margin-bottom:6px;border:1px solid var(--border);border-radius:8px;overflow:hidden}.month-group-header{display:flex;justify-content:space-between;align-items:center;width:100%;padding:12px 14px;background:var(--panel);border:none;cursor:pointer;font-family:inherit;text-align:left;gap:12px}.month-group-header:hover{background:var(--panel-raised)}.month-group-left{display:flex;align-items:center;gap:8px;min-width:0}.month-group-chevron{font-size:13px;color:var(--ink-soft);flex-shrink:0;width:14px}.month-group-label{font-family:var(--font-display);font-size:14px;font-weight:600;color:var(--ink)}.month-group-count{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint)}.month-group-totals{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0}.month-group-amount{font-size:14px;font-weight:600;color:var(--accent)}.month-group-body{border-top:1px solid var(--border-soft);padding:0 0 4px}.month-group-body .ledger-row{padding-left:14px;padding-right:10px}.source-toggle-row{display:flex;gap:8px}.source-toggle-row select{flex:1;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:10px 12px;font-size:15px;color:var(--ink)}.source-toggle-row select:focus{border-color:var(--accent)}.trends-section{margin-bottom:28px}.trends-heading{font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--ink);margin:0 0 6px}.chart-summary{font-size:13px;color:var(--ink-soft);line-height:1.6;margin:0 0 12px}.upcoming-list{display:flex;flex-direction:column;gap:10px}.upcoming-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;background:var(--bg);border:1px solid var(--border-soft);border-radius:6px}.upcoming-item-today{border-color:var(--accent-dim);background:var(--accent-bg)}.upcoming-item-soon{border-color:var(--border)}.upcoming-item-left{display:flex;flex-direction:column;gap:2px;min-width:0}.upcoming-item-name{font-size:14px;font-weight:500;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upcoming-item-meta{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft)}.upcoming-countdown{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--ink-soft);white-space:nowrap;flex-shrink:0}.upcoming-countdown-today{color:var(--accent)}.upcoming-countdown-soon{color:var(--warn)}.schedule-manager{margin-bottom:8px}.schedule-manager-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.schedule-manager-title{font-family:var(--font-display);font-size:15px;font-weight:600;color:var(--ink)}.schedule-empty{font-size:13px;color:var(--ink-soft);line-height:1.5;margin:0 0 12px}.schedule-list{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}.schedule-item{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 14px;background:var(--bg);border:1px solid var(--border);border-radius:8px}.schedule-item-inactive{opacity:.5}.schedule-item-left{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.schedule-item-top{display:flex;align-items:center;gap:6px}.schedule-item-name{font-size:14px;font-weight:500;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.schedule-item-meta{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft)}.schedule-item-amount{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--accent)}.schedule-item-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}.schedule-countdown{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--ink-soft)}.schedule-countdown-soon{color:var(--warn)}.schedule-paused{font-family:var(--font-mono);font-size:11px;color:var(--ink-faint)}.schedule-item-actions{display:flex;gap:10px}.account-nav-btn{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 14px;background:var(--bg);border:1px solid var(--border);border-radius:8px;cursor:pointer;font-family:inherit;margin-bottom:12px;text-align:left}.account-nav-btn:hover{border-color:var(--accent-dim)}.account-nav-btn-left{display:flex;flex-direction:column;gap:3px}.account-nav-btn-label{font-size:14px;font-weight:500;color:var(--ink)}.account-nav-btn-sub{font-size:12px;color:var(--ink-soft)}.account-nav-btn-arrow{font-size:18px;color:var(--ink-soft)}.acct-title{font-family:var(--font-display);font-size:20px;font-weight:600;margin:0 0 20px;color:var(--ink)}.acct-section-label{font-family:var(--font-body);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);margin:18px 0 6px}.acct-card-divider{height:1px;background:var(--border-soft);margin:0}.acct-email-row{padding:12px 14px;display:flex;flex-direction:column;gap:4px}.acct-email-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint)}.acct-section-card .account-nav-btn{border:none;border-radius:0;background:transparent;margin:0;padding:12px 14px;width:100%}.acct-section-card .account-nav-btn:hover{background:var(--panel);border-color:transparent}.acct-toggle-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:14px}.acct-toggle-left{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.acct-toggle-label{font-size:14px;font-weight:500;color:var(--ink)}.acct-toggle-sub{font-size:12px;color:var(--ink-soft);line-height:1.4}.acct-toggle-btn{flex-shrink:0;width:44px;height:26px;border-radius:13px;border:none;background:var(--border);cursor:pointer;padding:3px;position:relative;transition:background .2s ease;margin-top:2px}.acct-toggle-btn.acct-toggle-on{background:var(--accent)}.acct-toggle-knob{display:block;width:20px;height:20px;border-radius:50%;background:var(--ink);position:absolute;top:3px;left:3px;transition:transform .2s ease}.acct-toggle-btn.acct-toggle-on .acct-toggle-knob{transform:translate(18px);background:var(--bg)}.acct-threshold-row{padding:14px;display:flex;flex-direction:column;gap:10px}.acct-threshold-input-row{display:flex;align-items:center;gap:10px}.acct-threshold-input{width:120px;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-family:var(--font-mono);font-size:15px;color:var(--ink)}.acct-saving-label{font-size:12px;color:var(--ink-soft)}.acct-signout-btn{width:100%;margin-top:20px;padding:13px;background:none;border:1px solid var(--border);border-radius:10px;color:var(--danger);font-family:var(--font-body);font-size:14px;font-weight:500;cursor:pointer;transition:background .15s ease}.acct-signout-btn:hover{background:#e0654f14}.insight-card-forecaster{border-color:var(--accent-dim);background:var(--accent-bg)}.insight-card-forecaster .insight-label{color:var(--accent)}.thread-loader{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-height:40vh}.thread-loader-svg{width:100px;height:60px;overflow:visible}.thread-loader-source{animation:loader-pulse 1.8s ease-in-out infinite;transform-origin:8px 34px}.thread-loader-path{animation:loader-draw 1.8s ease-in-out infinite}.thread-loader-dest{opacity:0;animation:loader-dest-appear 1.8s ease-in-out infinite}.thread-loader-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:var(--ink-faint);text-transform:uppercase}@keyframes loader-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.2);opacity:.7}}@keyframes loader-draw{0%{stroke-dashoffset:80;opacity:1}60%{stroke-dashoffset:0;opacity:1}80%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:80;opacity:0}}@keyframes loader-dest-appear{0%{opacity:0}55%{opacity:0}75%{opacity:1}90%{opacity:1}to{opacity:0}}.auth-confirm{text-align:center;padding:8px 0}.auth-confirm-icon{font-size:36px;margin-bottom:14px}.auth-confirm-title{font-family:var(--font-display);font-size:18px;font-weight:600;color:var(--ink);margin:0 0 12px}.auth-confirm-body{font-size:14px;color:var(--ink-soft);line-height:1.6;margin:0 0 10px}.auth-confirm-body strong{color:var(--ink);font-weight:500}.forecast-section{margin-top:4px}.forecast-horizon-row{display:flex;align-items:center;gap:12px;margin-bottom:20px;flex-wrap:wrap}.forecast-horizon-label{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);white-space:nowrap}.forecast-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:16px;margin-bottom:16px}.forecast-card-head{display:flex;align-items:center;gap:8px;margin-bottom:14px}.forecast-card-head h3{font-family:var(--font-display);font-size:14px;font-weight:600;color:var(--ink);margin:0}.forecast-block-label{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);margin:0 0 8px}.forecast-income-block,.forecast-goals-block{margin-bottom:14px}.forecast-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--border-soft)}.forecast-row:last-child{border-bottom:none}.forecast-row-total{padding-top:8px}.forecast-row-name{font-size:13px;color:var(--ink-soft);flex:1;min-width:0}.forecast-row-date{font-size:11px;color:var(--ink-faint)}.forecast-row-amount{font-size:13px;font-weight:500;color:var(--ink);flex-shrink:0}.forecast-row-total .forecast-row-name{font-weight:600;color:var(--ink)}.forecast-outcome{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:8px;margin-top:4px}.forecast-outcome-good{background:var(--accent-bg);border:1px solid var(--accent-dim)}.forecast-outcome-warn{background:var(--warn-bg, #1C1510);border:1px solid var(--warn, #E0A847)}.forecast-outcome-icon{font-size:14px;color:var(--accent);flex-shrink:0;margin-top:1px}.forecast-outcome-warn .forecast-outcome-icon{color:var(--warn)}.forecast-outcome-text{font-size:13px;color:var(--ink-soft);line-height:1.5}.forecast-oneoff-section{margin-top:8px}.forecast-received{opacity:.5}.forecast-received-badge{font-size:11px;color:var(--accent)}.forecast-received-tick{color:var(--accent);font-size:14px;flex-shrink:0}.forecast-range-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px}.forecast-range-field{display:flex;flex-direction:column;gap:4px}.forecast-range-label{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint)}.forecast-range-input{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:10px 12px;font-size:14px;color:var(--ink);font-family:var(--font-mono);width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none}.forecast-range-input:focus{border-color:var(--accent);outline:none}.forecast-range-sep{display:none}.auth-google-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:12px 16px;background:var(--panel-raised, #1C1F1E);border:1px solid var(--border);border-radius:8px;color:var(--ink);font-family:var(--font-body);font-size:14px;font-weight:500;cursor:pointer;transition:border-color .15s ease,background .15s ease;margin-bottom:0}.auth-google-btn:hover{border-color:var(--ink-soft);background:#222625}.auth-google-btn:disabled{opacity:.6;cursor:not-allowed}.auth-divider{display:flex;align-items:center;gap:12px;margin:16px 0;color:var(--ink-faint);font-size:12px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.tab-content{flex:1;overflow-y:auto;padding-bottom:calc(96px + env(safe-area-inset-bottom))}.bottom-nav{position:fixed;bottom:calc(20px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);width:auto;display:flex;align-items:center;justify-content:center;gap:4px;background:#0f111073;backdrop-filter:blur(32px) saturate(200%) brightness(1.1);-webkit-backdrop-filter:blur(32px) saturate(200%) brightness(1.1);border:1px solid rgba(255,255,255,.12);border-top-color:#ffffff2e;border-radius:40px;padding:6px 8px;z-index:50;box-shadow:0 12px 40px #00000080,0 2px 8px #0000004d,inset 0 1px #ffffff1f,inset 0 -1px #0003}.bottom-nav-item{display:flex;align-items:center;justify-content:center;background:none;border:none;cursor:pointer;padding:10px 18px;border-radius:32px;transition:background .18s ease,transform .12s ease;-webkit-tap-highlight-color:transparent}.bottom-nav-item:active{transform:scale(.92)}.bottom-nav-item.active{background:#3ecf8e2e;box-shadow:inset 0 1px #3ecf8e40,0 2px 8px #3ecf8e1f}.bottom-nav-label{display:none}.fab{position:fixed;bottom:calc(104px + env(safe-area-inset-bottom));right:calc(50% - 220px);width:52px;height:52px;border-radius:50%;background:var(--accent);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px #3ecf8e66,0 2px 8px #0000004d;z-index:60;transition:transform .2s ease,background .15s ease}.fab:hover{background:var(--accent-dim)}.fab-open{background:var(--ink-soft);box-shadow:0 2px 10px #0000004d}.fab-open:hover{background:var(--ink-faint)}.fab-icon{font-size:26px;font-weight:300;color:var(--bg);line-height:1;transition:transform .2s ease}.fab-open .fab-icon{transform:rotate(45deg)}.fab-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;background:#0000004d}.fab-actions{position:fixed;bottom:calc(164px + env(safe-area-inset-bottom));right:calc(50% - 220px);display:flex;flex-direction:column;gap:10px;align-items:flex-end;z-index:61;animation:fabFadeUp .2s ease}@keyframes fabFadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.fab-action-item{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--border);border-radius:24px;padding:10px 16px 10px 18px;cursor:pointer;font-family:var(--font-body);box-shadow:0 4px 20px #0006;transition:border-color .15s ease,transform .1s ease;white-space:nowrap}.fab-action-item:hover{border-color:var(--accent-dim);transform:translate(-2px)}.fab-action-label{font-size:14px;font-weight:500;color:var(--ink)}.fab-action-icon{font-size:16px}@media (max-width: 480px){.fab,.fab-actions{right:20px}}.dash-home{padding:12px 0 8px;display:flex;flex-direction:column;gap:10px}.dash-stats-row{display:flex;align-items:center;background:#1a1e1ccc;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.07);border-top-color:#ffffff1a;border-radius:14px;padding:14px 16px;gap:0;box-shadow:0 4px 16px #0003}.dash-stat{flex:1;display:flex;flex-direction:column;gap:4px;align-items:center}.dash-stat-label{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint)}.dash-stat-value{font-family:var(--font-mono);font-size:16px;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100px}.dash-stat-divider{width:1px;height:32px;background:var(--border);flex-shrink:0}.dash-alert{display:flex;align-items:center;gap:12px;padding:13px 14px;background:var(--warn-bg, #1C1510);border:1px solid var(--warn, #E0A847);border-left:3px solid var(--warn, #E0A847);border-radius:10px;cursor:pointer}.dash-alert-dot{width:7px;height:7px;border-radius:50%;background:var(--warn, #E0A847);flex-shrink:0}.dash-alert-body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.dash-alert-title{font-size:14px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-alert-sub{font-size:11px;color:var(--warn, #E0A847)}.dash-alert-pct{font-family:var(--font-mono);font-size:13px;font-weight:700;color:var(--warn, #E0A847);flex-shrink:0}.dash-card{background:#1a1e1ccc;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.07);border-top-color:#ffffff1a;border-radius:14px;padding:14px 16px;box-shadow:0 4px 16px #0003}.dash-card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.dash-card-label{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint)}.dash-card-link{font-size:11px;color:var(--accent);background:none;border:none;cursor:pointer;padding:0;font-family:var(--font-body)}.dash-card-empty{font-size:13px;color:var(--ink-soft)}.dash-event-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--border-soft)}.dash-event-row:last-child{border-bottom:none;padding-bottom:0}.dash-event-left{display:flex;flex-direction:column;gap:2px;min-width:0}.dash-event-amount{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft)}.dash-event-chip{font-family:var(--font-mono);font-size:12px;font-weight:600;white-space:nowrap;padding:4px 10px;border-radius:12px;flex-shrink:0}.chip-today{background:var(--accent-bg);color:var(--accent)}.chip-soon{background:#e0a8471f;color:#e0a847}.chip-default{background:var(--bg);color:var(--ink-soft);border:1px solid var(--border)}.dash-goal-row{display:flex;align-items:center;gap:16px}.dash-goal-detail{display:flex;flex-direction:column;gap:4px;min-width:0}.dash-goal-name{font-size:16px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-goal-sub{font-family:var(--font-mono);font-size:12px;color:var(--ink-soft)}.dash-goal-deadline{font-size:11px;color:var(--ink-faint)}.dash-welcome{text-align:center;padding:24px 16px}.dash-welcome-title{font-size:16px;font-weight:600;color:var(--ink);margin-bottom:8px}.dash-welcome-sub{font-size:13px;color:var(--ink-soft);line-height:1.6}.dash-welcome-sub strong{color:var(--accent)}.avatar-btn{width:36px;height:36px;border-radius:50%;border:2px solid var(--border);background:var(--panel);cursor:pointer;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;transition:border-color .15s ease}.avatar-btn:hover{border-color:var(--accent)}.avatar-img{width:100%;height:100%;object-fit:cover;border-radius:50%}.avatar-initials{font-family:var(--font-mono);font-size:13px;font-weight:700;color:var(--accent);letter-spacing:.02em}.dash-greeting{padding:4px 0 8px}.dash-greeting-text{font-family:var(--font-display);font-size:26px;font-weight:700;color:var(--ink);margin:0 0 4px;line-height:1.2}.dash-greeting-sub{font-size:13px;color:var(--ink-soft);margin:0}.acct-sheet{max-height:92vh}.acct-title{font-size:18px;font-weight:600;color:var(--ink);margin:0 0 20px}.acct-section-label{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);margin:20px 0 6px}.acct-section-card{background:var(--bg);border:1px solid var(--border);border-radius:10px;overflow:hidden}.acct-card-divider{height:1px;background:var(--border)}.acct-avatar-hero{display:flex;align-items:center;gap:16px;padding:8px 0 16px}.acct-avatar-wrap{position:relative;width:72px;height:72px;border-radius:50%;cursor:pointer;flex-shrink:0}.acct-avatar-img{width:72px;height:72px;border-radius:50%;object-fit:cover;border:2px solid var(--border)}.acct-avatar-placeholder{width:72px;height:72px;border-radius:50%;background:var(--panel);border:2px solid var(--border);display:flex;align-items:center;justify-content:center}.acct-avatar-initials{font-family:var(--font-mono);font-size:22px;font-weight:700;color:var(--accent)}.acct-avatar-edit{position:absolute;bottom:0;right:0;width:22px;height:22px;border-radius:50%;background:var(--accent);color:var(--bg);font-size:11px;display:flex;align-items:center;justify-content:center;border:2px solid var(--panel)}.acct-avatar-info{display:flex;flex-direction:column;gap:3px;min-width:0}.acct-avatar-name{font-size:18px;font-weight:600;color:var(--ink);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.acct-avatar-email{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft);margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.acct-field-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px}.acct-field-label{font-size:14px;color:var(--ink-soft);flex-shrink:0;white-space:nowrap}.acct-field-input{background:transparent;border:none;outline:none;font-size:14px;color:var(--ink);text-align:right;flex:1;min-width:0;font-family:var(--font-body)}.acct-field-input::placeholder{color:var(--ink-faint)}.acct-field-value{font-size:13px;color:var(--ink-soft);text-align:right}.acct-toggle-row{display:flex;align-items:flex-start;gap:12px;padding:12px 14px}.acct-toggle-left{flex:1;display:flex;flex-direction:column;gap:3px}.acct-toggle-label{font-size:14px;color:var(--ink)}.acct-toggle-sub{font-size:11px;color:var(--ink-soft);line-height:1.4}.acct-toggle-btn{width:44px;height:26px;border-radius:13px;background:var(--border);border:none;cursor:pointer;position:relative;flex-shrink:0;transition:background .2s ease;margin-top:2px}.acct-toggle-on{background:var(--accent)}.acct-toggle-knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s ease;display:block}.acct-toggle-on .acct-toggle-knob{transform:translate(18px)}.acct-threshold-row{display:flex;align-items:flex-start;gap:12px;padding:12px 14px;flex-direction:column}.acct-threshold-input-row{display:flex;align-items:center;gap:8px;width:100%}.acct-threshold-input{background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-size:14px;color:var(--ink);font-family:var(--font-mono);width:120px}.acct-threshold-input:focus{border-color:var(--accent);outline:none}.acct-saving-label{font-size:11px;color:var(--ink-faint)}.account-nav-btn{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;cursor:pointer;padding:14px;gap:8px}.account-nav-btn-left{display:flex;flex-direction:column;gap:2px;text-align:left}.account-nav-btn-label{font-size:14px;color:var(--ink)}.account-nav-btn-sub{font-size:11px;color:var(--ink-soft)}.account-nav-btn-arrow{font-size:20px;color:var(--ink-faint)}.acct-signout-btn{width:100%;margin-top:24px;padding:13px;background:none;border:1px solid rgba(220,50,50,.3);border-radius:10px;color:#e05555;font-size:14px;font-weight:500;cursor:pointer;transition:background .15s ease;font-family:var(--font-body)}.acct-signout-btn:hover{background:#dc323214}.acct-sub-header{display:flex;align-items:center;gap:12px;margin-bottom:20px}.back-link{background:none;border:none;cursor:pointer;font-size:14px;color:var(--accent);padding:0;font-family:var(--font-body);flex-shrink:0}.dash-grid-2x2{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto;gap:10px}.dash-grid-card{background:#1a1e1ccc;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.07);border-top-color:#ffffff1a;border-radius:14px;padding:14px 14px 12px;display:flex;flex-direction:column;gap:10px;cursor:default;box-shadow:0 4px 16px #0003}.dash-grid-tall{grid-row:1 / 3;min-height:200px}.dash-grid-card-goals{cursor:pointer}.dash-grid-card-goals:active{opacity:.85}.dash-grid-label{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);flex-shrink:0}.dash-upcoming-list{display:flex;flex-direction:column;gap:0}.dash-upcoming-header-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.dash-upcoming-header-label{font-family:var(--font-mono);font-size:8px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint)}.dash-upcoming-row{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--border-soft)}.dash-upcoming-row:last-child{border-bottom:none}.dash-priority-chip{font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:.04em;padding:3px 7px;border-radius:4px;flex-shrink:0;text-transform:uppercase}.dash-event-name{font-size:14px;font-weight:500;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-event-meta{font-family:var(--font-mono);font-size:11px;color:var(--ink-soft)}.dash-event-countdown{font-family:var(--font-mono);font-size:13px;font-weight:600;white-space:nowrap;flex-shrink:0}.dash-insight-card{display:flex;align-items:flex-start;gap:12px;background:#1a1e1cbf;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.07);border-left:3px solid var(--accent);border-radius:14px;padding:13px 14px;box-shadow:0 4px 16px #0003}.dash-insight-icon{font-size:18px;flex-shrink:0}.dash-insight-text{font-size:13px;color:var(--ink-soft);line-height:1.5;margin:0}.acct-sheet-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.acct-close-btn{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:var(--bg);color:var(--ink-soft);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s ease,color .15s ease}.acct-close-btn:hover{background:var(--panel);color:var(--ink)}@keyframes promptFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}:root{--bg: #0F1110;--panel: #161918;--panel-raised: #1C1F1E;--border: #2A2F2D;--border-soft: #20231F;--ink: #ECEEED;--ink-soft: #8A9290;--ink-faint: #5C6462;--accent: #3ECF8E;--accent-dim: #2BA876;--accent-bg: #15291F;--warn: #E0A847;--warn-bg: #2A2418;--danger: #E0654F;--good: #3ECF8E;--good-bg: #15291F;--font-display: "Roboto", -apple-system, "Helvetica Neue", Arial, sans-serif;--font-mono: "Roboto Mono", "SF Mono", "Menlo", monospace;--font-body: "Roboto", -apple-system, "Helvetica Neue", Arial, sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;height:100%}#root{min-height:100vh;min-height:100dvh}.app-shell{min-height:100vh;min-height:100dvh;background-color:var(--bg);background-image:repeating-linear-gradient(135deg,rgba(62,207,142,.035) 0px,rgba(62,207,142,.035) 2px,transparent 2px,transparent 14px);padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}button,input,select,textarea{font-family:inherit}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}.mono{font-family:var(--font-mono);font-feature-settings:"tnum"}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:0}::-webkit-scrollbar-track{background:transparent}
