:root{color-scheme:light;color:#0e1014;background:#fafafa;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--accent: #0f766e;--accent-strong: #0b5e58;--accent-soft: #e2f7f3;--accent-veil: rgba(15, 118, 110, .08);--ink: #0e1014;--muted: #6b7076;--line: #e6e7eb;--panel: #ffffff;--subtle: #f4f5f7;--warn: #b77918;--warn-soft: #fff4db;--risk: #b42318;--risk-soft: #fdecea;--good: #0f766e;--bg: #fafafa;--bg-haze: #fafafa;--field-bg: #ffffff;--shadow: 0 1px 2px rgba(15, 23, 42, .04), 0 4px 12px rgba(15, 23, 42, .04);--shadow-lift: 0 4px 16px rgba(15, 23, 42, .08), 0 12px 32px rgba(15, 23, 42, .06);--sand: #f7f1e8;--sand-line: #ebe2d2;--success-ink: #0f766e;--warn-ink: #b77918;--risk-ink: #b42318;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 64px;--dur-fast: .12s;--dur-base: .2s;--dur-slow: .32s;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--num-feat: "tnum" 1, "lnum" 1, "ss01" 1}:root[data-theme=dark],:root[data-theme=dark] body{color-scheme:dark;color:#f3f4f6;--accent: #2dd4bf;--accent-strong: #5eead4;--accent-soft: rgba(45, 212, 191, .14);--accent-veil: rgba(45, 212, 191, .08);--ink: #f3f4f6;--muted: #9aa0a6;--line: #23252b;--panel: #15161a;--subtle: #1a1c21;--warn: #f7b955;--warn-soft: rgba(247, 185, 85, .12);--risk: #f87171;--risk-soft: rgba(248, 113, 113, .12);--good: #2dd4bf;--bg: #0b0b0c;--bg-haze: #0b0b0c;--field-bg: #15161a;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 12px rgba(0, 0, 0, .32);--shadow-lift: 0 4px 16px rgba(0, 0, 0, .5), 0 12px 32px rgba(0, 0, 0, .4);--sand: #1c1a17;--sand-line: #2a2722;--success-ink: #2dd4bf;--warn-ink: #f7b955;--risk-ink: #f87171}@media(prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;color:#f3f4f6;--accent: #2dd4bf;--accent-strong: #5eead4;--accent-soft: rgba(45, 212, 191, .14);--accent-veil: rgba(45, 212, 191, .08);--ink: #f3f4f6;--muted: #9aa0a6;--line: #23252b;--panel: #15161a;--subtle: #1a1c21;--warn: #f7b955;--warn-soft: rgba(247, 185, 85, .12);--risk: #f87171;--risk-soft: rgba(248, 113, 113, .12);--good: #2dd4bf;--bg: #0b0b0c;--bg-haze: #0b0b0c;--field-bg: #15161a;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 12px rgba(0, 0, 0, .32);--shadow-lift: 0 4px 16px rgba(0, 0, 0, .5), 0 12px 32px rgba(0, 0, 0, .4);--sand: #1c1a17;--sand-line: #2a2722;--success-ink: #2dd4bf;--warn-ink: #f7b955;--risk-ink: #f87171}}:root[data-accent=teal]{--accent:#0f766e;--accent-strong:#0b5e58;--accent-soft:#e2f7f3;--accent-veil:rgba(15,118,110,.08)}:root[data-accent=indigo]{--accent:#4f46e5;--accent-strong:#4338ca;--accent-soft:#eef0ff;--accent-veil:rgba(79,70,229,.08)}:root[data-accent=violet]{--accent:#7c3aed;--accent-strong:#6d28d9;--accent-soft:#f3eaff;--accent-veil:rgba(124,58,237,.08)}:root[data-accent=rose]{--accent:#e11d48;--accent-strong:#be123c;--accent-soft:#ffe9ee;--accent-veil:rgba(225,29,72,.08)}:root[data-accent=amber]{--accent:#b45309;--accent-strong:#92400e;--accent-soft:#fff3e0;--accent-veil:rgba(180,83,9,.08)}:root[data-accent=emerald]{--accent:#059669;--accent-strong:#047857;--accent-soft:#e3fbf0;--accent-veil:rgba(5,150,105,.08)}:root[data-accent=sky]{--accent:#0284c7;--accent-strong:#0369a1;--accent-soft:#e3f4fd;--accent-veil:rgba(2,132,199,.08)}:root[data-accent=slate]{--accent:#475569;--accent-strong:#334155;--accent-soft:#eef1f5;--accent-veil:rgba(71,85,105,.08)}:root[data-theme=dark][data-accent=teal]{--accent:#2dd4bf;--accent-strong:#5eead4;--accent-soft:rgba(45,212,191,.16);--accent-veil:rgba(45,212,191,.08)}:root[data-theme=dark][data-accent=indigo]{--accent:#818cf8;--accent-strong:#a5b4fc;--accent-soft:rgba(129,140,248,.16);--accent-veil:rgba(129,140,248,.08)}:root[data-theme=dark][data-accent=violet]{--accent:#a78bfa;--accent-strong:#c4b5fd;--accent-soft:rgba(167,139,250,.16);--accent-veil:rgba(167,139,250,.08)}:root[data-theme=dark][data-accent=rose]{--accent:#fb7185;--accent-strong:#fda4af;--accent-soft:rgba(251,113,133,.16);--accent-veil:rgba(251,113,133,.08)}:root[data-theme=dark][data-accent=amber]{--accent:#fbbf24;--accent-strong:#fcd34d;--accent-soft:rgba(251,191,36,.16);--accent-veil:rgba(251,191,36,.08)}:root[data-theme=dark][data-accent=emerald]{--accent:#34d399;--accent-strong:#6ee7b7;--accent-soft:rgba(52,211,153,.16);--accent-veil:rgba(52,211,153,.08)}:root[data-theme=dark][data-accent=sky]{--accent:#38bdf8;--accent-strong:#7dd3fc;--accent-soft:rgba(56,189,248,.16);--accent-veil:rgba(56,189,248,.08)}:root[data-theme=dark][data-accent=slate]{--accent:#94a3b8;--accent-strong:#cbd5e1;--accent-soft:rgba(148,163,184,.16);--accent-veil:rgba(148,163,184,.08)}@media(prefers-color-scheme:dark){:root:not([data-theme])[data-accent=teal]{--accent:#2dd4bf;--accent-strong:#5eead4;--accent-soft:rgba(45,212,191,.16);--accent-veil:rgba(45,212,191,.08)}:root:not([data-theme])[data-accent=indigo]{--accent:#818cf8;--accent-strong:#a5b4fc;--accent-soft:rgba(129,140,248,.16);--accent-veil:rgba(129,140,248,.08)}:root:not([data-theme])[data-accent=violet]{--accent:#a78bfa;--accent-strong:#c4b5fd;--accent-soft:rgba(167,139,250,.16);--accent-veil:rgba(167,139,250,.08)}:root:not([data-theme])[data-accent=rose]{--accent:#fb7185;--accent-strong:#fda4af;--accent-soft:rgba(251,113,133,.16);--accent-veil:rgba(251,113,133,.08)}:root:not([data-theme])[data-accent=amber]{--accent:#fbbf24;--accent-strong:#fcd34d;--accent-soft:rgba(251,191,36,.16);--accent-veil:rgba(251,191,36,.08)}:root:not([data-theme])[data-accent=emerald]{--accent:#34d399;--accent-strong:#6ee7b7;--accent-soft:rgba(52,211,153,.16);--accent-veil:rgba(52,211,153,.08)}:root:not([data-theme])[data-accent=sky]{--accent:#38bdf8;--accent-strong:#7dd3fc;--accent-soft:rgba(56,189,248,.16);--accent-veil:rgba(56,189,248,.08)}:root:not([data-theme])[data-accent=slate]{--accent:#94a3b8;--accent-strong:#cbd5e1;--accent-soft:rgba(148,163,184,.16);--accent-veil:rgba(148,163,184,.08)}}:root[data-density=compact]{--space-1: 3px;--space-2: 6px;--space-3: 9px;--space-4: 12px;--space-5: 18px;--space-6: 24px;--space-7: 48px}:root[data-density=spacious]{--space-1: 5px;--space-2: 10px;--space-3: 15px;--space-4: 20px;--space-5: 30px;--space-6: 40px;--space-7: 80px}:root[data-font-scale=large]{font-size:17px}:root[data-font-scale=xlarge]{font-size:18px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;touch-action:manipulation}body{margin:0;min-width:280px;min-height:100vh;background:var(--bg-haze);color:var(--ink);overscroll-behavior-y:contain}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.app-shell{position:relative;min-height:100vh}.app-main{width:min(1160px,100%);margin:0 auto;padding:18px 12px calc(110px + env(safe-area-inset-bottom))}.topbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:16px}.topbar-spacer{flex:1;min-width:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.brand-glyph{display:block;width:36px;height:36px;border-radius:8px;object-fit:cover;flex:0 0 auto}.eyebrow,.section-label{margin:0 0 4px;color:var(--muted);font-size:.68rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}h1,h2,p{margin:0}h1{color:var(--ink);font-size:clamp(1.45rem,7vw,2.4rem);line-height:1.1;letter-spacing:-.01em;font-weight:700}h2{color:var(--ink);font-size:1rem;line-height:1.3;font-weight:600;letter-spacing:-.005em}.month-input,.icon-button,.add-button,select,input,textarea{min-height:40px;border:1px solid var(--line);border-radius:8px;background:var(--field-bg);color:var(--ink);box-shadow:none}.month-input{width:126px;padding:0 8px}.icon-button,.add-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 12px}.add-button{border-color:var(--accent);background:var(--accent);color:#fff;font-weight:600;box-shadow:none;letter-spacing:-.005em}.add-button:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.ghost-button{min-height:36px;padding:0 12px;border-radius:8px;border:1px solid var(--line);background:var(--field-bg);color:var(--ink);font-weight:500;font-size:.82rem}.ghost-button:hover{border-color:var(--ink);color:var(--ink)}.install-button{display:inline-flex;align-items:center;gap:8px}.add-toolbar{display:flex;align-items:center}.back-button{display:inline-flex;align-items:center;gap:6px}.back-button svg{width:16px;height:16px}svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.screen-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-4)}.today-hero,.today-bottom{display:grid;gap:12px}.insight-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--panel);padding:15px;box-shadow:var(--shadow)}.insight-banner span{display:block;margin-bottom:4px;color:var(--muted);font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.insight-banner strong{display:block;color:var(--ink);font-size:1rem;line-height:1.3;font-weight:600;font-feature-settings:"tnum" 1,"lnum" 1}.spark-badge{display:grid;width:44px;height:44px;flex:0 0 auto;place-items:center;border:1px solid var(--line);border-radius:10px;background:var(--subtle);color:var(--ink);font-weight:600;font-feature-settings:"tnum" 1,"lnum" 1}.kpi-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.kpi-card,.panel,.amount-panel{border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:var(--shadow)}.kpi-card{min-width:0;min-height:88px;padding:14px;transition:border-color .16s ease}.kpi-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpi-card:hover{border-color:var(--ink)}.kpi-card span,.panel-heading p,.category-row span,.transaction-main span,.week-row small,.week-row span{color:var(--muted);font-size:.78rem;line-height:1.35;font-weight:500}.kpi-card strong{display:block;margin-top:8px;color:var(--ink);font-size:clamp(1.14rem,5vw,1.4rem);line-height:1.1;font-weight:600;letter-spacing:-.01em;font-feature-settings:"tnum" 1,"lnum" 1}.kpi-card.good strong{color:var(--good)}.kpi-card.warn strong{color:var(--warn)}.kpi-card.risk strong{color:var(--risk)}.panel{padding:var(--space-4)}.hero-panel{background:var(--panel);box-shadow:var(--shadow)}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.panel-heading.compact{margin-bottom:12px}.score-ring{display:grid;width:60px;height:60px;place-items:center;border-radius:50%;background:radial-gradient(var(--panel) 58%,transparent 59%),conic-gradient(var(--accent) var(--score),var(--line) 0);color:var(--ink);font-size:.95rem;font-weight:600;font-feature-settings:"tnum" 1,"lnum" 1}.budget-bars{display:grid;gap:12px}.budget-line{display:grid;gap:6px}.budget-line>div:first-child{display:flex;justify-content:space-between;gap:12px;color:var(--ink);font-size:.85rem;font-weight:500}.budget-line small{color:var(--muted);font-weight:500;font-feature-settings:"tnum" 1,"lnum" 1}.progress-track{overflow:hidden;height:6px;border-radius:999px;background:var(--line)}.progress-track span{display:block;height:100%;border-radius:inherit;background:var(--accent);transition:width .22s ease}.progress-track span.over{background:var(--risk)}.mini-chart{display:flex;align-items:end;gap:4px;height:160px;padding-top:16px;border-bottom:1px solid var(--line)}.mini-chart span{flex:1;min-width:8px;border-radius:3px 3px 0 0;background:var(--accent);opacity:.85}.mini-chart span:hover{opacity:1}.category-list,.weekly-list,.transaction-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.category-row,.transaction-row,.week-row{border:1px solid var(--line);border-radius:10px;background:var(--panel)}.category-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px}.category-name{display:flex;align-items:center;gap:10px;min-width:0}.category-name div{min-width:0}.category-dot,.chip-dot{display:inline-block;width:10px;height:10px;flex:0 0 auto;border-radius:50%;background:var(--accent)}.chip-dot{margin-right:6px}.category-row strong,.transaction-main strong,.week-row strong{display:block;color:var(--ink);font-size:.9rem;line-height:1.25;font-weight:500}.category-metric{text-align:right}.category-metric b{display:block;color:var(--ink);white-space:nowrap;font-weight:600;font-feature-settings:"tnum" 1,"lnum" 1}.week-row{display:grid;gap:8px;padding:12px}.week-row>div:first-child{display:flex;justify-content:space-between;gap:10px}.transaction-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px}.transaction-row .row-check{flex:0 0 auto}button.transaction-main{background:transparent;border:0;color:inherit;text-align:left;cursor:pointer;padding:0;font:inherit}.transaction-main{display:flex;flex:1 1 0;min-width:0;align-items:center;gap:10px}.transaction-main div{min-width:0}.transaction-main strong,.transaction-main>div>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.transaction-side{flex:0 0 auto;min-width:0;max-width:45%;text-align:right}.transaction-side strong{color:var(--ink);font-weight:600;font-feature-settings:"tnum" 1,"lnum" 1}.amount-panel{padding:20px;border:1px solid var(--line);background:var(--panel);color:var(--ink);box-shadow:var(--shadow)}.amount-caption{display:flex;align-items:center;justify-content:space-between;gap:12px}.amount-caption span,.amount-panel label{color:var(--muted);font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase}.amount-input{display:flex;align-items:baseline;gap:8px;margin-top:6px}.amount-input span{color:var(--muted);font-size:1.25rem;font-weight:500}.amount-input input{width:100%;min-height:64px;border:0;background:transparent;color:var(--ink);font-size:clamp(2.2rem,14vw,3.4rem);font-weight:600;letter-spacing:-.02em;outline:0;box-shadow:none;font-feature-settings:"tnum" 1,"lnum" 1}.amount-input input::placeholder{color:var(--muted);opacity:.5}.form-panel,.filter-panel,.planner-settings{display:grid;gap:14px}.form-heading{padding-bottom:12px;border-bottom:1px solid var(--line)}label{display:grid;gap:6px;color:var(--muted);font-size:.78rem;font-weight:500}input,select,textarea{width:100%;padding:10px 12px;outline-color:var(--accent)}textarea{resize:vertical}.chip-field,.segmented{margin:0;padding:0;border:0}.chip-field legend,.segmented legend{margin-bottom:8px;color:var(--muted);font-size:.78rem;font-weight:600}.chip-field>div,.segmented>div{display:flex;flex-wrap:wrap;gap:8px}.chip-field button,.segmented button{min-height:34px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);padding:0 12px;font-size:.84rem;font-weight:500;transition:border-color .16s ease,background .16s ease,color .16s ease;display:inline-flex;align-items:center;gap:4px}.chip-field button.selected,.segmented button.selected{border-color:var(--ink);background:var(--ink);color:var(--bg)}.segmented>div{display:grid;grid-template-columns:repeat(var(--cols, 3),1fr);border:1px solid var(--line);border-radius:6px;padding:3px}.segmented button{border:0;border-radius:5px;justify-content:center}.sticky-save{width:100%;min-height:50px;border:0;border-radius:10px;background:var(--ink);color:var(--bg);font-size:.95rem;font-weight:600;letter-spacing:-.005em;box-shadow:var(--shadow)}.sticky-save:hover{background:var(--accent)}.txn-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border:1px solid var(--line);border-radius:10px;background:var(--panel);overflow:hidden}.txn-summary>div{padding:10px 12px;display:grid;gap:4px;min-width:0;border-right:1px solid var(--line)}.txn-summary>div:last-child{border-right:0}.txn-summary span{color:var(--muted);font-size:.66rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase}.txn-summary strong{color:var(--ink);font-size:.95rem;font-weight:600;letter-spacing:-.01em;font-feature-settings:"tnum" 1,"lnum" 1}.txn-toolbar{display:grid;grid-template-columns:1fr;gap:8px}.txn-search{position:relative}.txn-search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--muted);pointer-events:none}.txn-search input{padding-left:36px}.txn-toolbar-actions{display:flex;gap:8px;flex-wrap:wrap}.txn-sort{display:inline-flex;margin:0;gap:0}.txn-sort select{min-height:36px;padding:0 28px 0 12px;border-radius:8px;font-weight:500;font-size:.82rem}.txn-filter-button{display:inline-flex;align-items:center;gap:6px}.txn-filter-button.active{border-color:var(--ink);color:var(--ink)}.txn-filter-button svg{width:14px;height:14px}.txn-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.txn-chip{display:inline-flex;align-items:center;gap:6px;min-height:28px;padding:0 10px;border-radius:999px;border:1px solid var(--line);background:var(--subtle);color:var(--ink);font-size:.78rem;font-weight:500}.txn-chip svg{width:12px;height:12px;color:var(--muted)}.txn-chip:hover{border-color:var(--ink)}.txn-clear-all{min-height:28px;padding:0 10px;font-size:.78rem}.txn-selection-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px;border-radius:10px;border:1px solid var(--ink);background:var(--ink);color:var(--bg)}.txn-selection-bar span{font-size:.85rem;font-weight:500}.txn-selection-bar strong{font-weight:600;font-feature-settings:"tnum" 1,"lnum" 1}.txn-selection-actions{display:flex;gap:6px;flex-wrap:wrap}.txn-selection-actions .ghost-button{background:transparent;border-color:#ffffff40;color:var(--bg)}.txn-selection-actions .ghost-button:hover{background:#ffffff14;border-color:#ffffff80;color:var(--bg)}.txn-selection-actions .ghost-button.danger{border-color:var(--risk);color:var(--bg)}.txn-selection-actions .ghost-button.danger:hover{background:var(--risk);border-color:var(--risk)}.txn-panel{padding:12px}.txn-panel-head{padding:4px 6px 6px;border-bottom:1px solid var(--line)}.txn-select-all{display:inline-flex;align-items:center;gap:8px;border:0;background:transparent;color:var(--ink);font-size:.82rem;font-weight:500;padding:0}.txn-checkbox{display:inline-grid;place-items:center;width:18px;height:18px;flex:0 0 auto;border:1px solid var(--line);border-radius:5px;background:var(--panel);color:transparent;padding:0}.txn-checkbox.checked{background:var(--ink);border-color:var(--ink);color:var(--bg)}.txn-checkbox svg{width:12px;height:12px;stroke-width:3}.txn-groups{display:grid;grid-template-columns:minmax(0,1fr);gap:14px;margin-top:10px}.txn-group{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;min-width:0}.txn-day-header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:6px 4px;margin-bottom:6px;border-bottom:1px solid var(--line)}.txn-day-header span{color:var(--muted);font-size:.75rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase}.txn-day-header strong{color:var(--ink);font-size:.88rem;font-weight:600;font-feature-settings:"tnum" 1,"lnum" 1}.transaction-row.selected{border-color:var(--ink);background:var(--accent-veil)}.transaction-row .row-check{margin-right:2px}.txn-filters-sheet{grid-template-rows:auto 1fr auto}.txn-filters-body{display:grid;gap:12px;overflow-y:auto}.txn-date-range{display:grid;grid-template-columns:1fr 1fr;gap:8px}.txn-filters-footer{display:flex;justify-content:space-between;gap:8px;padding-top:8px;border-top:1px solid var(--line)}.filter-row{display:grid;grid-template-columns:1fr;gap:8px}.filter-row.date-range{grid-template-columns:1fr 1fr;align-items:end}.filter-row.date-range button{grid-column:span 2}.row-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px;margin-top:5px}.row-actions button,.inline-editor button{min-height:28px;padding:0 8px;border:1px solid var(--line);border-radius:5px;background:var(--panel);color:var(--ink);font-size:.72rem;font-weight:600}@media(max-width:360px){.transaction-row .row-actions{display:none}}.inline-editor{display:grid;gap:8px;border:1px solid var(--line);border-radius:6px;padding:10px;background:var(--subtle)}.inline-editor div{display:flex;gap:8px}.ratio-editor{margin:0;padding:0;border:0;display:grid;gap:10px}.ratio-editor legend{width:100%;display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;color:var(--muted);font-size:.78rem;font-weight:600}.ratio-sum{font-size:.78rem;font-weight:600;padding:2px 8px;border-radius:999px;border:1px solid var(--line);font-feature-settings:"tnum" 1,"lnum" 1}.ratio-sum.ok{color:var(--ink)}.ratio-sum.bad{color:var(--risk);border-color:var(--risk)}.ratio-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.ratio-input{position:relative}.ratio-input input{padding-right:28px}.ratio-input span{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:.82rem;font-weight:600;pointer-events:none}.ratio-balance{justify-self:end}.ratio-amount{display:block;margin-top:3px;font-size:.75rem;font-weight:600;color:var(--accent);font-feature-settings:"tnum" 1,"lnum" 1;text-align:center}.ratio-money{display:grid;gap:4px;margin-top:4px}.ratio-money input{text-align:right}.ratio-money span{font-size:.72rem;color:var(--muted);text-align:right;font-feature-settings:var(--num-feat)}.settings-changelog{list-style:none;margin:0;padding:0;display:grid;gap:0}.changelog-entry{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.changelog-entry:last-child{border-bottom:none}.changelog-dot{flex-shrink:0;margin-top:4px;width:8px;height:8px;border-radius:50%;background:var(--accent)}.changelog-body{display:grid;gap:2px;flex:1;min-width:0}.changelog-desc{font-size:.84rem;color:var(--ink);font-weight:500}.changelog-when{font-size:.74rem;color:var(--muted)}.salary-by-year{margin:0;padding:0;border:0}.salary-by-year legend{margin-bottom:8px;color:var(--muted);font-size:.78rem;font-weight:600}.salary-by-year>div{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}.month-heatmap{display:grid;gap:6px}.month-heatmap-head,.month-heatmap-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.month-heatmap-head span{text-align:center;font-size:.7rem;font-weight:600;color:var(--muted)}.month-heatmap-grid span{aspect-ratio:1;border-radius:6px;display:grid;place-items:center;font-size:.72rem;font-weight:700;background:color-mix(in srgb,var(--accent) calc(var(--level, 0) * 80%),var(--subtle));color:var(--ink);border:1px solid color-mix(in srgb,var(--accent) calc(var(--level, 0) * 60%),transparent)}.month-heatmap-grid span.out-month{opacity:.35}.month-heatmap-grid span.in-month{border-color:color-mix(in srgb,var(--accent) calc(var(--level, 0) * 60% + 8%),var(--line))}.month-heatmap-legend{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:.7rem;color:var(--muted)}.month-heatmap-legend .legend-swatch{width:14px;height:14px;border-radius:4px;background:color-mix(in srgb,var(--accent) calc(var(--level, 0) * 80%),var(--subtle));border:1px solid color-mix(in srgb,var(--accent) calc(var(--level, 0) * 60%),var(--line))}.month-heatmap-empty{margin-top:8px}.monthly-table{display:grid;gap:4px}.monthly-table-head,.monthly-table-row{display:grid;grid-template-columns:1.2fr repeat(5,1fr);gap:6px;align-items:center;padding:8px 10px;border-radius:8px}.monthly-table-head{background:var(--subtle);font-size:.72rem;color:var(--muted);font-weight:600;text-transform:uppercase}.monthly-table-row{background:var(--panel);border:1px solid var(--line);font-size:.84rem;color:var(--ink)}.monthly-table-row .good{color:var(--good);font-weight:600}.monthly-table-row .risk{color:var(--risk);font-weight:600}.monthly-table-row span{font-feature-settings:"tnum" 1,"lnum" 1}.sync-pill{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:999px;border:1px solid var(--line);background:var(--panel);font-size:.74rem;font-weight:500;color:var(--muted)}.sync-pill .sync-dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.sync-pill.good{color:var(--ink);border-color:var(--line)}.sync-pill.good .sync-dot{background:var(--accent)}.sync-pill.warn{color:var(--warn);border-color:var(--line)}.sync-pill.warn .sync-dot{background:var(--warn)}.sync-pill.active{color:var(--ink);border-color:var(--line)}.sync-pill.active .sync-dot{background:var(--accent);animation:pulse 1.2s infinite}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.4);opacity:.5}}.empty-state{display:grid;gap:12px;text-align:center;padding:28px 20px}.empty-state .add-button{justify-self:center}.empty-note{color:var(--muted);font-size:.85rem;padding:16px 0;text-align:center}.data-panel{display:grid;gap:12px}.data-actions{display:flex;flex-wrap:wrap;gap:8px}.data-actions .ghost-button{display:inline-flex;align-items:center;gap:6px}.auth-panel{display:grid;gap:12px}.auth-body{display:grid;gap:10px}.auth-user{display:grid;gap:4px}.auth-user strong{color:var(--ink);font-size:.95rem}.auth-user span{color:var(--muted);font-size:.78rem}.auth-actions{display:flex;gap:8px;flex-wrap:wrap}.auth-note{color:var(--muted);font-size:.84rem;line-height:1.45}.auth-note code{background:var(--subtle);padding:1px 5px;border-radius:4px;font-size:.78rem}.auth-error{color:var(--risk);font-size:.78rem}.google-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:42px;padding:0 16px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font-weight:500}.google-button svg{width:18px;height:18px;stroke:none}.google-button:hover{border-color:var(--ink)}.modal-backdrop{position:fixed;inset:0;z-index:50;background:#0811108c;display:grid;place-items:center;padding:16px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.modal{background:var(--panel);border-radius:12px;padding:18px;width:min(440px,100%);max-height:90vh;overflow-y:auto;display:grid;gap:12px;border:1px solid var(--line);box-shadow:var(--shadow-lift)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:6px}.picker-field{display:grid;gap:7px}.picker-field label{color:var(--muted);font-size:.78rem;font-weight:600}.picker-trigger{display:flex;align-items:center;gap:10px;min-height:42px;width:100%;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--field-bg);color:var(--ink);font-size:.9rem;font-weight:500;text-align:left;box-shadow:none;transition:border-color .16s ease}.picker-trigger:hover{border-color:var(--ink)}.picker-dot{width:10px;height:10px;flex:0 0 auto;border-radius:50%;background:var(--accent)}.picker-value{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-placeholder{flex:1;color:var(--muted);font-weight:600}.picker-caret{width:16px;height:16px;color:var(--muted)}.picker-backdrop{z-index:70;align-items:flex-end;padding:0}.picker-sheet{width:100%;max-height:70vh;display:grid;grid-template-rows:auto auto 1fr;gap:10px;background:var(--panel);border-top-left-radius:16px;border-top-right-radius:16px;padding:16px 16px 22px;box-shadow:var(--shadow-lift);border:1px solid var(--line);border-bottom:0;animation:pickerSlideUp .22s ease}@keyframes pickerSlideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.picker-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.picker-header h3{margin:0;font-size:1.05rem;color:var(--ink)}.picker-search{min-height:42px}.picker-list{list-style:none;margin:0;padding:0;overflow-y:auto;display:grid;gap:4px}.picker-empty{padding:24px 8px;text-align:center;color:var(--muted);font-size:.85rem}.picker-row{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:0 12px;border:0;border-radius:10px;background:transparent;color:var(--ink);font-size:.92rem;font-weight:600;text-align:left;cursor:pointer}.picker-row.highlight,.picker-row:hover{background:var(--subtle)}.picker-row.selected{background:var(--accent-soft);color:var(--ink);font-weight:600}.picker-row.selected .picker-check{color:var(--accent)}.picker-row-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.picker-check{width:18px;height:18px;color:var(--accent)}@media(min-width:720px){.picker-backdrop{align-items:center;padding:16px}.picker-sheet{width:min(420px,100%);max-height:70vh;border-radius:12px;border:1px solid var(--line);animation:pickerFadeIn .18s ease}@keyframes pickerFadeIn{0%{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}}.onboarding-backdrop{z-index:60;background:#081110b3}.onboarding-card{width:min(520px,100%);max-height:90vh;overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px;display:grid;gap:14px;box-shadow:var(--shadow-lift)}.start-over{justify-self:start;margin-top:6px}.onboarding-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.onboarding-progress{display:flex;gap:6px;flex:1}.onboarding-progress span{flex:1;height:4px;border-radius:999px;background:var(--line);transition:background .2s ease}.onboarding-progress span.active{background:var(--accent)}.onboarding-header .skip{min-height:32px;padding:0 12px;font-size:.74rem}.onboarding-body{display:grid;gap:12px}.onboarding-body h2{font-size:1.35rem;line-height:1.15}.onboarding-body p{color:var(--muted);font-size:.9rem;line-height:1.5}.onboarding-glyph{width:52px;height:52px;display:grid;place-items:center;border-radius:12px;background:var(--ink);color:var(--bg);font-weight:600;font-size:1.3rem}.onboarding-list{margin:0;padding:0 0 0 18px;display:grid;gap:6px;color:var(--ink);font-size:.88rem}.ratios-sum-row{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-radius:8px;font-size:.8rem;font-weight:500;border:1px solid var(--line);background:var(--subtle)}.ratios-sum-row.ok{color:var(--ink);border-color:var(--line)}.ratios-sum-row.bad{color:var(--risk);border-color:var(--risk)}.ratios-sum-row strong{font-feature-settings:"tnum" 1,"lnum" 1}.ratios-sum-row strong{color:inherit}.budget-preview{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px}.budget-preview>div{padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--subtle);text-align:center}.budget-preview strong{font-feature-settings:"tnum" 1,"lnum" 1}.budget-preview span{display:block;color:var(--muted);font-size:.7rem;font-weight:600;text-transform:uppercase}.budget-preview strong{display:block;margin-top:4px;color:var(--ink);font-size:1rem}.onboarding-footer{display:flex;justify-content:space-between;gap:8px;margin-top:6px;border-top:1px solid var(--line);padding-top:12px}.bottom-nav{position:fixed;right:0;bottom:0;left:0;z-index:10;display:grid;grid-template-columns:repeat(var(--nav-cols, 4),1fr);gap:2px;border-top:1px solid var(--line);border-radius:0;background:var(--panel);padding:6px 8px calc(6px + env(safe-area-inset-bottom));box-shadow:none}.bottom-nav button,.desktop-rail button{display:grid;place-items:center;gap:2px;min-height:50px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:.68rem;font-weight:500}.bottom-nav button .nav-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.bottom-nav button svg{width:22px;height:22px}.bottom-nav button.active,.desktop-rail button.active{background:transparent;color:var(--ink);font-weight:600}.bottom-nav button.active svg,.desktop-rail button.active svg{color:var(--accent)}.desktop-rail{display:none}.brand-mark{display:block;width:42px;height:42px;border-radius:10px;object-fit:cover}.toast{position:fixed;right:18px;bottom:88px;z-index:20;display:inline-flex;align-items:center;gap:10px;border-radius:8px;background:var(--ink);color:var(--bg);padding:10px 14px;font-size:.82rem;font-weight:500;box-shadow:var(--shadow-lift)}.toast button{background:transparent;border:0;color:var(--accent);font-weight:600;font-size:.82rem;padding:0}:root[data-theme=dark] .toast,:root:not([data-theme]) .toast{background:var(--ink);color:var(--bg)}@media(prefers-color-scheme:dark){:root:not([data-theme]) .toast{background:var(--panel);color:var(--ink);border:1px solid var(--line)}}@media(min-width:720px){.app-shell{display:grid;grid-template-columns:92px minmax(0,1fr)}.app-main{padding:28px 28px 48px}.desktop-rail{position:sticky;top:0;display:flex;height:100vh;flex-direction:column;align-items:center;gap:20px;border-right:1px solid var(--line);background:var(--panel);padding:24px 12px}.desktop-rail .rail-brand{display:flex;align-items:center;gap:10px}.desktop-rail .rail-wordmark{display:none;font-weight:700;letter-spacing:-.01em;color:var(--ink)}.desktop-rail nav{display:grid;gap:6px;width:100%}.desktop-rail .rail-tab-label{display:none}.desktop-rail .rail-add{display:grid;place-items:center;width:48px;height:48px;border-radius:999px;background:var(--accent);color:#fff;border:0;cursor:pointer;box-shadow:0 8px 20px #0f766e40}.desktop-rail .rail-add svg{width:22px;height:22px}.desktop-rail .rail-add-label,.desktop-rail .rail-add-kbd{display:none}.desktop-rail .rail-foot{margin-top:auto;display:grid;gap:6px;width:100%;place-items:center}.desktop-rail .rail-utility{display:grid;place-items:center;width:44px;height:44px;border-radius:8px;border:0;background:transparent;color:var(--muted);cursor:pointer}.desktop-rail .rail-utility:hover,.desktop-rail .rail-utility:focus-visible{background:var(--subtle);color:var(--ink)}.desktop-rail .rail-utility-label,.bottom-nav{display:none}.kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.desktop-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:14px}.filter-row{grid-template-columns:repeat(3,1fr)}.filter-row.date-range{grid-template-columns:1fr 1fr auto}.filter-row.date-range button{grid-column:auto}.sticky-save{max-width:520px}.topbar{flex-wrap:nowrap}.topbar .brand-glyph{display:none}.txn-toolbar{grid-template-columns:1fr auto;align-items:center}.txn-summary{max-width:520px}.app-main{width:min(960px,100%);margin-inline:auto}.today-hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:14px;align-items:stretch}.today-hero .narrative{align-self:stretch}.today-hero .kpi-grid-today{grid-template-columns:minmax(0,1fr);gap:10px}.today-bottom{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.goals-list{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.profile-stack{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}.profile-stack>.profile-id,.profile-stack>.profile-foot{grid-column:1 / -1}.profile-stack>.auth-panel{align-self:start}.profile-stack>.profile-section{align-self:start}.fab{display:none}.rail-add{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:0;background:var(--accent);color:#fff;box-shadow:0 6px 16px #0f766e40;transition:background var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-spring);margin-top:4px}.rail-add:hover{background:var(--accent-strong)}.rail-add:active{transform:scale(.94)}.rail-add svg{width:22px;height:22px;stroke-width:2.4}}.rail-add{display:none}.surface-sand{background:var(--sand);border:1px solid var(--sand-line)}.t-display{font-size:clamp(1.7rem,6.5vw,2.2rem);line-height:1.15;letter-spacing:-.02em;font-weight:600;font-feature-settings:var(--num-feat)}.t-h1{font-size:1.4rem;line-height:1.2;font-weight:600;letter-spacing:-.01em}.t-body{font-size:.95rem;line-height:1.55;font-weight:450}.t-caption{font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600}.fab{position:fixed;right:16px;bottom:calc(74px + env(safe-area-inset-bottom));z-index:12;display:grid;place-items:center;width:60px;height:60px;border-radius:50%;border:0;background:var(--accent);color:#fff;box-shadow:0 12px 28px #0f766e52,0 4px 12px #0f766e2e;transition:transform var(--dur-fast) var(--ease-spring),background var(--dur-fast) var(--ease-out)}.fab:hover{background:var(--accent-strong)}.fab:active{transform:scale(.94)}.fab svg{width:26px;height:26px;stroke-width:2.6}.app-shell.add-open .fab{opacity:0;pointer-events:none}.bottom-nav.with-fab{grid-template-columns:1fr 1fr 76px 1fr 1fr}.bottom-nav .nav-notch{pointer-events:none;visibility:hidden}.greeting{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 2px}.greeting strong{display:block;font-size:1.05rem;font-weight:600;color:var(--ink);line-height:1.2}.greeting span{color:var(--muted);font-size:.78rem}.greeting .avatar-link{display:grid;place-items:center;flex:0 0 auto;width:36px;height:36px;aspect-ratio:1 / 1;overflow:hidden;border-radius:50%;border:0;padding:0;line-height:1;background:var(--subtle);color:var(--ink);font-weight:600;font-size:.85rem;text-decoration:none;cursor:pointer}.greeting .avatar-link img{display:block;width:100%;height:100%;object-fit:cover}.narrative{padding:20px;border-radius:14px;display:grid;gap:10px}.narrative p{color:var(--ink);font-size:1rem;line-height:1.55;letter-spacing:-.005em}.narrative p strong{font-weight:600;font-feature-settings:var(--num-feat)}.sparkline{display:block;width:100%;height:36px;overflow:visible}.sparkline path.line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.sparkline path.fill{fill:var(--accent);opacity:.12;stroke:none}.sparkline circle.dot{fill:var(--accent);r:2.5}.tick{font-feature-settings:var(--num-feat);transition:color var(--dur-base) var(--ease-out)}.add-sheet-backdrop{position:fixed;inset:0;z-index:55;background:#0811108c;display:grid;align-items:flex-end;padding:0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:addSheetFade var(--dur-base) var(--ease-out)}.add-sheet{background:var(--panel);border:1px solid var(--line);border-bottom:0;border-top-left-radius:20px;border-top-right-radius:20px;width:100%;max-height:92vh;overflow-y:auto;padding:18px 16px calc(24px + env(safe-area-inset-bottom));display:grid;gap:14px;box-shadow:var(--shadow-lift);animation:addSheetSlide var(--dur-base) var(--ease-out)}.add-sheet-handle{margin:0 auto 6px;width:38px;height:4px;border-radius:999px;background:var(--line)}.add-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.add-sheet-head h2{margin:0;font-size:1.05rem}@keyframes addSheetSlide{0%{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes addSheetFade{0%{opacity:0}to{opacity:1}}@media(min-width:720px){.add-sheet-backdrop{align-items:center;padding:16px}.add-sheet{border:1px solid var(--line);border-radius:16px;width:min(520px,100%);max-height:88vh}.fab{display:none}.bottom-nav.with-fab{grid-template-columns:repeat(4,1fr)}.bottom-nav .nav-notch{display:none}}.shell-empty{display:grid;gap:12px;text-align:center;padding:40px 20px}.shell-empty h2{font-size:1.2rem;font-weight:600}.shell-empty p{color:var(--muted);font-size:.9rem;line-height:1.55}.profile-id{display:flex;align-items:center;gap:14px;padding:16px;border-radius:12px;border:1px solid var(--line);background:var(--panel)}.profile-id .avatar{display:grid;place-items:center;flex:0 0 auto;width:52px;height:52px;aspect-ratio:1 / 1;overflow:hidden;border-radius:50%;background:var(--accent);color:#fff;font-weight:600;font-size:1.1rem}.profile-id .avatar img{display:block;width:100%;height:100%;object-fit:cover}.profile-id .who{display:grid;gap:2px;min-width:0}.profile-id .who strong{font-size:1rem;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-id .who span{color:var(--muted);font-size:.82rem}.kpi-grid-today{grid-template-columns:1fr;gap:10px}@media(min-width:460px){.kpi-grid-today{grid-template-columns:1.2fr 1fr 1fr;gap:10px}.kpi-grid-today .kpi-budget{grid-row:span 1}}.kpi-budget{display:grid;gap:8px;min-width:0}.kpi-budget-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}.kpi-budget-row strong{margin:0;font-size:clamp(1.4rem,6vw,1.8rem);font-weight:600;letter-spacing:-.01em;color:var(--ink);font-feature-settings:var(--num-feat);flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpi-budget .score-ring{width:52px;height:52px;font-size:.85rem;flex:0 0 auto}.kpi-foot{display:block;color:var(--muted);font-size:.78rem;font-weight:500;font-feature-settings:var(--num-feat)}.kpi-with-spark{display:grid;gap:6px;min-width:0}.kpi-with-spark .kpi-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.kpi-with-spark strong{margin:0;font-size:clamp(1.05rem,4.5vw,1.3rem);font-weight:600;letter-spacing:-.01em;color:var(--ink);font-feature-settings:var(--num-feat);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kpi-with-spark .sparkline{margin-top:4px;height:30px}.delta-badge{display:inline-flex;align-items:center;gap:4px;font-size:.72rem;font-weight:600;letter-spacing:-.005em;padding:2px 6px;border-radius:999px;border:1px solid var(--line);font-feature-settings:var(--num-feat)}.delta-badge.tone-good{color:var(--success-ink);border-color:var(--success-ink)}.delta-badge.tone-risk{color:var(--risk-ink);border-color:var(--risk-ink)}.delta-badge.tone-flat{color:var(--muted)}.top-movers{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.top-mover-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.top-mover-main{flex:1 1 0;min-width:0;display:grid;gap:2px}.top-mover-main strong{font-size:.92rem;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.top-mover-main span{color:var(--muted);font-size:.74rem}.top-mover-side{flex:0 0 auto;text-align:right;display:grid;gap:2px}.top-mover-side strong{font-weight:600;font-feature-settings:var(--num-feat);font-size:.9rem}.top-mover-side small{color:var(--muted);font-size:.72rem;font-feature-settings:var(--num-feat)}.top-mover-side.dir-up strong{color:var(--risk-ink)}.top-mover-side.dir-down strong{color:var(--success-ink)}.top-mover-side.dir-flat strong{color:var(--muted)}.add-recents{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;padding-bottom:4px;margin:0 -4px;scrollbar-width:thin}.add-recent-chip{display:grid;gap:2px;flex:0 0 auto;padding:8px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--ink);font-size:.78rem;text-align:left;max-width:160px;cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out)}.add-recent-chip:hover{border-color:var(--ink)}.add-recent-amt{font-weight:600;font-feature-settings:var(--num-feat);color:var(--ink);font-size:.85rem}.add-recent-desc{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.suggest-banner{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:10px;border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.suggest-banner-text{display:flex;align-items:baseline;gap:6px;min-width:0;flex-wrap:wrap}.suggest-banner-text span{font-size:.78rem;color:var(--muted)}.suggest-banner-text strong{font-size:.95rem;font-weight:600;color:var(--accent-strong)}.suggest-banner-text em{font-style:normal;font-size:.78rem;color:var(--muted)}.suggest-banner-actions{display:flex;gap:6px;flex:0 0 auto}.add-recurring-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--subtle);color:var(--ink);cursor:pointer}.add-recurring-toggle>span{display:grid;gap:2px}.add-recurring-toggle strong{font-size:.92rem;font-weight:500;color:var(--ink)}.add-recurring-toggle em{font-style:normal;font-size:.76rem;color:var(--muted)}.add-recurring-toggle input[type=checkbox]{appearance:none;width:40px;height:22px;margin:0;border-radius:999px;background:var(--line);position:relative;cursor:pointer;transition:background var(--dur-fast) var(--ease-out);flex:0 0 auto;min-height:0;border:0;padding:0;box-shadow:none}.add-recurring-toggle input[type=checkbox]:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform var(--dur-fast) var(--ease-out)}.add-recurring-toggle input[type=checkbox]:checked{background:var(--accent)}.add-recurring-toggle input[type=checkbox]:checked:after{transform:translate(18px)}.add-actions{display:flex;gap:8px;margin-top:4px}.add-actions .ghost-button{flex:1 1 auto;min-height:46px}.sticky-save.inline{flex:1.4 1 auto;min-height:46px}.sticky-save:disabled,.add-actions button:disabled{opacity:.45;cursor:not-allowed}.landing{min-height:100vh;max-width:1120px;margin:0 auto;padding:24px 20px calc(48px + env(safe-area-inset-bottom));display:grid;gap:28px}.landing-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.landing-brand{display:inline-flex;align-items:center;gap:10px;font-weight:600;font-size:1.05rem;color:var(--ink)}.landing-brand img{border-radius:8px}.landing-hero{position:relative;border-radius:18px;padding:28px 22px;display:grid;gap:22px;border:1px solid var(--sand-line);overflow:hidden}.landing-hero:before{content:"";position:absolute;inset:-20% -10% auto auto;width:60%;height:60%;border-radius:50%;background:radial-gradient(closest-side,var(--accent-veil),transparent 70%);pointer-events:none}.landing-hero-copy{display:grid;gap:12px;max-width:560px;position:relative}.landing-hero-copy .t-caption{color:var(--accent-strong)}.landing-hero-copy .t-display{margin:0;letter-spacing:-.022em;color:var(--ink)}.landing-hero-copy .t-body{color:var(--muted);margin:0;max-width:50ch}.landing-cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}.google-cta{display:inline-flex;align-items:center;gap:10px;padding:0 18px;min-height:46px;font-size:.95rem}.landing-fineprint{margin:0;color:var(--muted);font-size:.78rem}.landing-hero-art{display:none;position:relative}.landing-mock{border:1px solid var(--line);border-radius:14px;background:var(--panel);display:grid;grid-template-rows:auto 1fr;box-shadow:0 18px 48px #0f766e2e,0 4px 14px #0f172a0f;overflow:hidden}.landing-mock-head{display:flex;align-items:center;gap:6px;padding:10px 14px;border-bottom:1px solid var(--line);background:var(--subtle)}.landing-mock-dot{width:8px;height:8px;border-radius:50%;background:var(--line)}.landing-mock-dot:nth-child(1){background:#f87171;opacity:.6}.landing-mock-dot:nth-child(2){background:#f7b955;opacity:.6}.landing-mock-dot:nth-child(3){background:#34d399;opacity:.6}.landing-mock-title{margin-left:auto;font-size:.72rem;font-weight:500;color:var(--muted)}.landing-mock-body{display:grid;gap:14px;padding:18px}.landing-mock-hero{display:grid;gap:4px;padding:14px;border-radius:10px;background:var(--sand);border:1px solid var(--sand-line)}.landing-mock-hero span{font-size:.66rem;color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-weight:600}.landing-mock-hero strong{font-size:1.6rem;color:var(--ink);font-weight:600;letter-spacing:-.015em;font-feature-settings:var(--num-feat)}.landing-mock-hero small{color:var(--muted);font-size:.78rem}.landing-mock-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}.landing-mock-stats>div{display:grid;gap:4px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.landing-mock-stats span{color:var(--muted);font-size:.7rem;letter-spacing:.05em;text-transform:uppercase;font-weight:600}.landing-mock-stats strong{color:var(--ink);font-weight:600;font-feature-settings:var(--num-feat)}.landing-mock-bars{display:flex;align-items:flex-end;gap:4px;height:70px;padding:8px 0 0;border-top:1px solid var(--line)}.landing-mock-bars span{flex:1 1 0;background:var(--accent);opacity:.85;border-radius:3px 3px 0 0}.landing-features{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}.landing-feature{display:grid;gap:10px;padding:20px;border:1px solid var(--line);border-radius:14px;background:var(--panel);transition:transform var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out)}.landing-feature:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:var(--shadow)}.landing-feature svg{width:22px;height:22px;color:var(--accent);stroke-width:2;padding:8px;background:var(--accent-veil);border-radius:8px;box-sizing:content-box}.landing-feature h3{margin:0;font-size:1.05rem;font-weight:600;color:var(--ink)}.landing-feature p{margin:0;color:var(--muted);font-size:.9rem;line-height:1.55}.landing-privacy,.landing-install{padding:18px;border-radius:12px}.landing-privacy{display:grid;gap:6px}.landing-privacy strong{color:var(--ink);font-weight:600}.landing-privacy p{margin:0;color:var(--muted);font-size:.9rem;line-height:1.55}.landing-install{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;background:var(--accent-veil);border-color:var(--accent)}.landing-install>div{flex:1 1 220px;min-width:0;display:grid;gap:4px}.landing-install strong{color:var(--ink);font-weight:600}.landing-install p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.5}.landing-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;color:var(--muted);font-size:.78rem;padding-top:12px;border-top:1px solid var(--line)}.landing-foot a{color:var(--accent-strong);text-decoration:none}.landing-foot a:hover{text-decoration:underline}.landing-foot-link{background:none;border:0;padding:0;font:inherit;color:var(--accent-strong);cursor:pointer}.landing-foot-link:hover{text-decoration:underline}@media(min-width:720px){.landing{padding:40px 40px 80px;gap:48px}.landing-top{padding-bottom:8px}.landing-hero{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:center;padding:56px 48px;gap:48px;border-radius:22px}.landing-hero-copy .t-display{font-size:clamp(2.4rem,4vw,3rem);line-height:1.08}.landing-hero-art{display:block}.landing-features{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.landing-feature,.landing-privacy,.landing-install{padding:24px}}@media(min-width:1024px){.landing{padding-bottom:96px;gap:56px}.landing-hero{padding:72px 64px}.landing-hero-copy .t-display{font-size:clamp(2.6rem,3.6vw,3.4rem)}}@media(min-width:1280px){.app-shell{grid-template-columns:232px minmax(0,1fr)}.app-main{width:min(1320px,100%);margin-inline:auto;padding:32px 40px 56px}.month-history-panel.desktop-only{display:block}.today-bottom{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr)}.desktop-rail{align-items:stretch;padding:20px 16px;gap:18px}.desktop-rail .rail-brand{justify-content:flex-start;padding-left:4px}.desktop-rail .rail-wordmark{display:inline;font-size:1.05rem}.desktop-rail .rail-add{width:100%;height:44px;border-radius:10px;grid-template-columns:22px 1fr auto;gap:10px;place-items:center start;padding:0 14px}.desktop-rail .rail-add-label{display:inline;font-weight:600;font-size:.92rem;color:#fff}.desktop-rail .rail-add-kbd,.desktop-rail .rail-utility .rail-add-kbd{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:5px;background:#ffffff2e;color:#ffffffeb;font-size:.72rem;font-weight:600}.desktop-rail nav button{grid-template-columns:22px 1fr;gap:12px;place-items:center start;padding:0 12px;min-height:40px;border-radius:8px}.desktop-rail nav button:hover,.desktop-rail nav button:focus-visible{background:var(--subtle);color:var(--ink)}.desktop-rail nav button.active{background:var(--accent-veil);color:var(--ink)}.desktop-rail .rail-tab-label{display:inline;font-size:.92rem;font-weight:500}.desktop-rail .rail-foot{place-items:stretch;gap:4px;padding-top:12px;border-top:1px solid var(--line)}.desktop-rail .rail-utility{width:100%;height:36px;grid-template-columns:22px 1fr auto;gap:12px;place-items:center start;padding:0 12px;font-size:.86rem;border-radius:8px}.desktop-rail .rail-utility .rail-add-kbd{background:var(--subtle);color:var(--muted)}.desktop-rail .rail-utility-label{display:inline}.desktop-rail .sync-pill{align-self:start;margin-bottom:4px}}.shortcut-help-backdrop{position:fixed;inset:0;background:#0f172a73;display:grid;place-items:center;z-index:50;padding:20px}.shortcut-help{background:var(--panel);border-radius:14px;padding:20px 22px;width:min(520px,100%);max-height:80vh;overflow:auto;box-shadow:var(--shadow-lift);display:grid;gap:16px}.shortcut-help header{display:flex;align-items:center;justify-content:space-between}.shortcut-help header h2{margin:0;font-size:1.05rem}.shortcut-help header .ghost-button{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;font-size:1.2rem;line-height:1}.shortcut-group h3{margin:0 0 8px;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}.shortcut-group ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.shortcut-group li{display:grid;grid-template-columns:120px 1fr;align-items:center;font-size:.92rem}.shortcut-keys{display:inline-flex;gap:4px}.shortcut-keys kbd{font-family:inherit;font-size:.78rem;font-weight:600;background:var(--subtle);border:1px solid var(--line);border-radius:5px;padding:2px 8px;min-width:22px;text-align:center;color:var(--ink)}.shortcut-hint{margin:0;color:var(--muted);font-size:.82rem}.panel.month-history-panel.desktop-only{display:none}@media(min-width:1280px){.panel.month-history-panel.desktop-only{display:block}.profile-stack>.profile-spending{grid-column:1 / -1}.profile-stack>.data-panel{align-self:stretch}.profile-stack>.profile-changelog{align-self:stretch}.txn-panel .transaction-row{padding:8px 14px;border-radius:8px}.txn-panel .transaction-row+.transaction-row{margin-top:2px}.txn-panel .transaction-row .row-actions{opacity:0;transition:opacity var(--dur-fast) var(--ease-out);pointer-events:none}.txn-panel .transaction-row:hover .row-actions,.txn-panel .transaction-row:focus-within .row-actions{opacity:1;pointer-events:auto}.txn-panel .txn-day-header{padding:14px 14px 6px;border-bottom:1px solid var(--line);margin-bottom:6px}.txn-panel .transaction-main strong{font-size:.94rem}.txn-panel .transaction-main>div>span{font-size:.78rem}}.month-history-bars{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;padding:8px 0 4px}.month-history-bar{display:grid;grid-template-rows:1fr auto auto;align-items:end;gap:6px;min-height:110px}.month-history-fill{width:100%;height:calc(60px + var(--level, 0) * 60px);border-radius:6px;background:color-mix(in srgb,var(--accent) calc(var(--level, 0) * 80% + 12%),var(--subtle));border:1px solid color-mix(in srgb,var(--accent) calc(var(--level, 0) * 50% + 8%),var(--line));transition:height var(--dur-base) var(--ease-out)}.month-history-label{font-size:.72rem;color:var(--muted);text-align:center;font-weight:600}.month-history-amount{font-size:.82rem;color:var(--ink);text-align:center;font-feature-settings:"tnum" 1}.profile-foot-link{justify-self:center;margin-top:4px}.profile-foot-links{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;gap:4px}.privacy-page{min-height:100vh;max-width:720px;margin:0 auto;padding:20px 20px calc(48px + env(safe-area-inset-bottom));display:grid;gap:20px;align-content:start}.privacy-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.privacy-body{display:grid;gap:16px}.privacy-body .t-caption{margin:0;color:var(--muted)}.privacy-body .t-display{margin:0;letter-spacing:-.02em;color:var(--ink)}.privacy-body>.t-body{margin:0;color:var(--muted)}.privacy-section{display:grid;gap:6px;padding-top:14px;border-top:1px solid var(--line)}.privacy-section h2{margin:0;font-size:1rem;font-weight:600;color:var(--ink)}.privacy-section p{margin:0;color:var(--muted);font-size:.92rem;line-height:1.6}.privacy-body a{color:var(--accent-strong);text-decoration:none}.privacy-body a:hover{text-decoration:underline}.privacy-done{margin-top:8px;justify-self:start}.daily-target-card{display:grid;gap:14px;padding:18px;border:1px solid var(--sand-line)}.daily-target-card header{display:grid;gap:4px}.daily-target-card .t-display{margin:0;color:var(--ink)}.daily-target-card .t-body{color:var(--muted);margin:0}.daily-chart{position:relative;height:96px;padding-top:8px}.daily-bars{display:flex;align-items:flex-end;gap:3px;height:100%}.daily-bar{flex:1 1 0;min-width:4px;border-radius:3px 3px 0 0;background:var(--accent);opacity:.85;transition:opacity .16s ease}.daily-bar.over{background:var(--risk-ink);opacity:.9}.daily-bar.future{background:var(--line);opacity:.55}.daily-target-rule{position:absolute;left:0;right:0;height:0;border-top:1px dashed var(--muted);pointer-events:none;z-index:1}.goals-summary{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.goals-summary>div{display:grid;gap:4px;min-width:0}.goals-summary small{color:var(--muted);font-size:.78rem;font-feature-settings:var(--num-feat)}.goals-list{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.goal-card{display:flex;align-items:center;gap:14px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--panel);color:var(--ink);text-align:left;width:100%;cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out)}.goal-card:hover{border-color:var(--ink)}.goal-ring{width:56px;height:56px;font-size:.8rem;flex:0 0 auto}.goal-card-main{flex:1 1 0;min-width:0;display:grid;gap:2px}.goal-card-main strong{font-size:.98rem;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.goal-card-main span{color:var(--muted);font-size:.82rem;font-feature-settings:var(--num-feat)}.goal-card-main small{color:var(--muted);font-size:.74rem}.goal-card-side{flex:0 0 auto;display:grid;gap:4px;justify-items:end;text-align:right}.goal-card-side small{color:var(--muted);font-size:.72rem;font-feature-settings:var(--num-feat)}.goal-preview{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px 12px;border:1px dashed var(--line);border-radius:8px;background:var(--subtle)}.goal-preview>div{display:grid;gap:2px}.goal-preview span{color:var(--muted);font-size:.7rem;letter-spacing:.04em;text-transform:uppercase;font-weight:600}.goal-preview strong{color:var(--ink);font-size:.95rem;font-weight:600;font-feature-settings:var(--num-feat)}.goal-templates{display:flex;flex-wrap:wrap;gap:8px}.goal-template-chip{display:grid;gap:2px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--subtle);color:var(--ink);text-align:left;cursor:pointer;flex:1 1 calc(50% - 4px);min-width:140px}.goal-template-chip:hover{border-color:var(--ink)}.goal-template-chip strong{font-size:.85rem;font-weight:500;color:var(--ink)}.goal-template-chip span{color:var(--muted);font-size:.74rem;font-feature-settings:var(--num-feat)}.ghost-button.danger{border-color:var(--risk-ink);color:var(--risk-ink)}.ghost-button.danger:hover{background:var(--risk-soft);border-color:var(--risk-ink);color:var(--risk-ink)}.profile-stack,.profile-section{display:grid;gap:12px}.profile-section .panel-heading{margin-bottom:4px}.profile-foot{color:var(--muted);font-size:.78rem;text-align:center;padding:8px 0 0}@media(prefers-reduced-motion:reduce){.add-sheet,.add-sheet-backdrop,.fab,.tick{animation:none!important;transition:none!important}}@media(min-width:720px){.goals-list{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.profile-stack{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}.profile-stack>.profile-id,.profile-stack>.auth-panel,.profile-stack>.profile-achievements,.profile-stack>.profile-changelog,.profile-stack>.data-panel,.profile-stack>.profile-spending,.profile-stack>.profile-foot,.profile-stack>.profile-foot-links{grid-column:1 / -1}.profile-stack>.profile-section{align-self:start}.profile-foot-links{flex-direction:row;justify-content:center;gap:8px}.today-bottom{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.today-hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:14px;align-items:stretch}.today-hero .kpi-grid-today{grid-template-columns:minmax(0,1fr);gap:10px}}.contact-avatar{display:grid;place-items:center;width:34px;height:34px;flex:0 0 auto;border-radius:50%;background:var(--accent-soft);color:var(--accent-strong);font-size:.85rem;font-weight:600}.contact-avatar.plus{background:var(--subtle);color:var(--muted)}.picker-footer{display:flex;justify-content:flex-end;gap:8px;padding:12px 4px 4px}.picker-create .contact-avatar{background:var(--subtle)}.contact-create{display:grid;gap:12px;padding:4px}.contact-create-actions{display:flex;justify-content:flex-end;gap:8px}.splits-balance{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.splits-balance small{display:block;margin-top:4px;color:var(--muted)}.splits-balance-actions{display:flex;gap:8px}.group-chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.group-chips::-webkit-scrollbar{display:none}.group-chip{flex:0 0 auto;padding:7px 14px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--muted);font-size:.85rem;font-weight:600;cursor:pointer;transition:border-color .16s ease,background .16s ease,color .16s ease}.group-chip.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.group-chip-new{border-style:dashed}.splits-rows{display:grid;gap:4px}.splits-row{display:flex;align-items:center;gap:12px;width:100%;padding:10px 8px;border:0;border-radius:12px;background:transparent;text-align:left;cursor:pointer;transition:background .16s ease}.splits-row:hover{background:var(--subtle)}.splits-row-main{display:grid;gap:2px;flex:1 1 auto;min-width:0}.splits-row-main strong{font-weight:600}.splits-row-main span{font-size:.82rem;color:var(--muted)}.splits-activity{display:grid;gap:2px}.splits-activity-row{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:10px;padding:8px 4px}.splits-activity-row>div{display:grid;gap:2px;min-width:0}.splits-activity-row strong{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.splits-activity-row span{font-size:.8rem;color:var(--muted)}.splits-activity-date{font-size:.78rem;color:var(--muted);font-variant-numeric:tabular-nums}.activity-amount{font-variant-numeric:tabular-nums}.activity-amount.tone-good{color:var(--good)}.activity-amount.tone-risk{color:var(--risk)}.activity-amount.tone-flat{color:var(--muted)}.split-fields{display:grid;gap:14px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--field-bg, var(--subtle))}.split-people{display:grid;gap:8px}.split-hint{margin:0}.split-chips{display:flex;flex-wrap:wrap;gap:8px}.split-chip{display:inline-flex;align-items:center;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:var(--panel);font-size:.85rem;font-weight:600;color:var(--ink)}.split-chip.is-self{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-strong)}.split-chip-add{border-style:dashed;color:var(--muted);cursor:pointer}.split-breakdown{display:grid;gap:2px}.split-breakdown-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 2px}.split-breakdown-name{font-weight:600}.split-breakdown-amount{font-variant-numeric:tabular-nums;color:var(--ink)}.split-input-cell{display:inline-flex;align-items:center;gap:6px}.split-input-cell input{width:92px;text-align:right;padding:8px 10px}.split-share-amount{font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums;min-width:56px;text-align:right}.split-error{margin:0;font-size:.82rem;color:var(--risk)}.settle-contact{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--panel);text-align:left;cursor:pointer}.settle-contact-main{display:grid;gap:2px;flex:1 1 auto;min-width:0}.settle-contact-main strong{font-weight:600}.settle-contact-main span{font-size:.82rem;color:var(--muted)}.brand-mark-svg{display:block;border-radius:22%}.view-shell{animation:view-enter var(--dur-base, .2s) var(--ease-out, ease) both}@keyframes view-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.add-button,.ghost-button,.group-chip,.kpi-card,.split-chip-add,.checklist-step-btn{transition:transform var(--dur-fast, .12s) var(--ease-out, ease),border-color .16s ease,background .16s ease,color .16s ease,box-shadow .16s ease}.add-button:active,.ghost-button:active,.group-chip:active,.kpi-card:active,.split-chip-add:active,.checklist-step-btn:active{transform:scale(.97)}.skeleton{position:relative;overflow:hidden;background:var(--subtle);border-radius:12px}.skeleton:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.08),transparent);animation:skeleton-shimmer 1.3s infinite}@keyframes skeleton-shimmer{to{transform:translate(100%)}}.boot-skeleton{max-width:560px;margin:0 auto;padding:24px 16px;display:grid;gap:14px}.boot-skeleton .skeleton-line{height:22px;width:60%}.boot-skeleton .sk-hero{height:150px}.boot-skeleton .skeleton-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.boot-skeleton .sk-kpi{height:92px}.boot-skeleton .sk-panel{height:180px}.streak-risk{display:flex;align-items:center;gap:10px;width:100%;padding:12px 14px;border:1px solid color-mix(in srgb,var(--warn) 40%,var(--line));border-radius:14px;background:color-mix(in srgb,var(--warn) 12%,var(--panel));color:var(--ink);text-align:left;cursor:pointer}.streak-risk .flame-glyph{width:20px;height:20px;flex:0 0 auto;color:var(--warn);fill:currentColor}.streak-risk span:nth-of-type(1){flex:1 1 auto;font-weight:600}.streak-risk-cta{flex:0 0 auto;padding:4px 12px;border-radius:999px;background:var(--accent);color:#fff;font-size:.82rem;font-weight:600}.habit-strip.at-risk .flame-glyph{color:var(--warn)}.checklist-card{display:grid;gap:12px}.checklist-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.checklist-head h2{margin:0}.checklist-head p{margin:2px 0 0;color:var(--muted);font-size:.85rem}.checklist-track{height:6px;border-radius:999px;background:var(--subtle);overflow:hidden}.checklist-fill{display:block;height:100%;border-radius:999px;background:var(--accent);transition:width var(--dur-slow, .32s) var(--ease-out, ease)}.checklist-steps{list-style:none;margin:0;padding:0;display:grid;gap:2px}.checklist-steps li{display:flex;align-items:center}.checklist-step-btn{display:flex;align-items:center;gap:10px;width:100%;padding:9px 6px;border:0;background:transparent;text-align:left;cursor:pointer;border-radius:10px;color:var(--ink);font:inherit}.checklist-step-btn:hover{background:var(--subtle)}.checklist-step-btn span:nth-of-type(1){flex:0 0 auto}.checklist-step-btn>span:nth-of-type(2){flex:1 1 auto}.checklist-step-btn svg{width:18px;height:18px;color:var(--muted)}.checklist-step-label{padding:9px 6px;color:var(--muted)}.checklist-steps li.is-done .checklist-step-label{text-decoration:line-through}.checklist-mark{display:grid;place-items:center;width:22px;height:22px;flex:0 0 auto;border-radius:50%;border:2px solid var(--line)}.checklist-mark.checked{border-color:var(--accent);background:var(--accent)}.checklist-mark.checked svg{width:14px;height:14px;stroke:#fff;stroke-width:3;fill:none}.month-review-backdrop{display:grid;place-items:center;padding:16px}.month-review{width:min(440px,100%);background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:22px;box-shadow:var(--shadow-lift);display:grid;gap:16px;animation:view-enter var(--dur-base, .2s) var(--ease-spring, ease) both}.month-review-head{position:relative}.month-review-head h2{margin:2px 0 0}.month-review-head .icon-button{position:absolute;top:0;right:0}.month-review-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px}.month-review-stat{display:grid;gap:2px;padding:12px;border-radius:14px;background:var(--subtle)}.month-review-stat span{font-size:.78rem;color:var(--muted)}.month-review-stat strong{font-size:1.3rem}.month-review-stat .tone-good{color:var(--good)}.month-review-stat .tone-risk{color:var(--risk)}.month-review-movers{display:grid;gap:6px}.month-review-mover{display:flex;justify-content:space-between;align-items:center}.month-review-mover .tone-good{color:var(--good)}.month-review-mover .tone-risk{color:var(--risk)}.month-review-mover .tone-flat{color:var(--muted)}.month-review-ach{margin:0;color:var(--muted);font-size:.88rem}.month-review-cta{width:100%}.subtab-bar{margin-bottom:4px}.investment-card{display:grid;gap:12px;width:100%;padding:16px;border:1px solid var(--line);border-radius:16px;background:var(--panel);text-align:left;cursor:pointer;transition:border-color .16s ease,box-shadow .16s ease}.investment-card:hover{border-color:var(--accent);box-shadow:var(--shadow)}.investment-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.investment-card-title{display:flex;align-items:center;gap:8px;min-width:0}.investment-card-title strong{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.investment-type-badge{flex:0 0 auto;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);font-size:.7rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.investment-card-figures{display:flex;flex-wrap:wrap;gap:18px}.investment-card-figures>div{display:grid;gap:2px}.investment-card-figures strong{font-size:1.05rem;font-variant-numeric:tabular-nums}.money-flow-list{display:grid;gap:4px}.money-flow-row{display:flex;align-items:center;gap:12px;padding:8px 2px}.money-flow-main{display:grid;gap:2px;flex:1 1 auto;min-width:0}.money-flow-main strong{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.money-flow-main span{font-size:.8rem;color:var(--muted)}.money-flow-total{font-variant-numeric:tabular-nums}.appearance-panel .field-label,.appearance-field-label{display:block;margin:12px 0 8px;font-size:.85rem;font-weight:600;color:var(--ink)}.accent-picker{display:flex;flex-wrap:wrap;gap:10px}.accent-swatch{position:relative;width:34px;height:34px;border-radius:50%;border:2px solid transparent;background:var(--swatch, var(--accent));cursor:pointer;padding:0;transition:transform .12s var(--ease-out, ease)}.accent-swatch:hover{transform:scale(1.08)}.accent-swatch[aria-checked=true]{border-color:var(--ink);box-shadow:0 0 0 2px var(--bg)}.accent-swatch.accent-swatch-custom{background:conic-gradient(from 0deg,#e11d48,#b45309,#059669,#0284c7,#4f46e5,#7c3aed,#e11d48)}.accent-hue-row{display:flex;align-items:center;gap:12px;margin-top:12px}.accent-hue-slider{flex:1 1 auto;width:100%;height:10px;border-radius:999px;appearance:none;-webkit-appearance:none;background:linear-gradient(to right,#c32222,#c3c322,#22c322,#22c3c3,#2222c3,#c322c3,#c32222);cursor:pointer}.accent-hue-slider::-webkit-slider-thumb{-webkit-appearance:none;width:22px;height:22px;border-radius:50%;background:var(--accent);border:2px solid var(--panel);box-shadow:var(--shadow)}.accent-hue-slider::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--accent);border:2px solid var(--panel)}.accent-hue-preview{width:34px;height:34px;border-radius:50%;flex:0 0 auto;background:var(--accent)}.habit-strip{display:flex;align-items:center;gap:14px;padding:10px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}.habit-streak{display:inline-flex;align-items:center;gap:6px}.habit-streak strong{font-size:1.05rem;font-variant-numeric:tabular-nums}.habit-streak span{color:var(--muted);font-size:.85rem}.flame-glyph{width:20px;height:20px;fill:var(--accent);stroke:none}.habit-divider{width:1px;align-self:stretch;background:var(--line)}.habit-level{display:grid;gap:5px;flex:1 1 auto;min-width:0}.habit-level-label{font-size:.85rem;font-weight:600}.habit-level-track{height:6px;border-radius:999px;background:var(--subtle);overflow:hidden}.habit-level-fill{display:block;height:100%;border-radius:999px;background:var(--accent);transition:width var(--dur-base, .2s) var(--ease-out, ease)}.achievement-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.achievement-badge{display:grid;gap:4px;padding:12px;border:1px solid var(--line);border-radius:12px;text-align:center;justify-items:center}.achievement-badge strong{font-size:.85rem}.achievement-badge span{font-size:.72rem;color:var(--muted)}.achievement-medal svg{width:28px;height:28px}.achievement-badge.earned .achievement-medal svg{fill:var(--accent);stroke:none}.achievement-badge.locked{opacity:.5}.achievement-badge.locked .achievement-medal svg{fill:none;stroke:var(--muted);stroke-width:1.5}.celebrations-toggle{margin-top:12px}.celebration-layer{position:fixed;inset:0;z-index:40;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;top:-12px;width:9px;height:14px;border-radius:2px;opacity:0;animation-name:confetti-fall;animation-timing-function:var(--ease-out, cubic-bezier(.22, 1, .36, 1));animation-fill-mode:forwards}.confetti-piece.round{border-radius:50%;width:10px;height:10px}@keyframes confetti-fall{0%{opacity:1;transform:translate(0) rotate(0)}to{opacity:0;transform:translate(var(--drift, 0),95vh) rotate(var(--rot, 360deg))}}@media(prefers-reduced-motion:reduce){.celebration-layer{display:none}}
