.navbar{background:var(--paper);padding:var(--space-md) var(--space-lg);display:flex;justify-content:space-between;align-items:center;position:relative;border-bottom:1px solid var(--rule)}.navbar-brand{display:inline-flex;align-items:center;gap:.4em;font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);letter-spacing:-.025em;color:var(--ink);text-decoration:none}.navbar-brand:before{content:"";width:10px;height:10px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.navbar-links{display:flex;gap:var(--space-2xs);align-items:center}.navbar-link{color:var(--ink-muted);text-decoration:none;padding:var(--space-xs) var(--space-md);font-size:var(--text-sm);font-weight:500;border-radius:var(--radius-full);transition:color .2s,background-color .2s}.navbar-link:hover{color:var(--ink);background:var(--paper-sunken)}.navbar-link.active{color:var(--brand-ink);background:var(--brand);font-weight:600}.navbar-theme{background:var(--paper-sunken);border:none;color:var(--ink-muted);width:36px;height:36px;border-radius:var(--radius-full);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:color .2s,background .2s,transform .4s var(--ease-out-expo)}.navbar-theme:hover{color:var(--ink);background:var(--paper-raised);transform:rotate(24deg)}.navbar-logout{background:transparent;border:none;color:var(--ink-faint);cursor:pointer;font-family:var(--font-body);font-size:var(--text-sm);font-weight:500;padding:var(--space-xs) var(--space-md);border-radius:var(--radius-full);transition:color .2s,background-color .2s;display:flex;align-items:center}.navbar-logout:hover{color:var(--danger);background:var(--danger-soft)}.navbar-hamburger{background:var(--paper-sunken);border:none;color:var(--ink);cursor:pointer;width:36px;height:36px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center}.navbar-mobile-menu{position:absolute;top:calc(100% + var(--space-xs));left:var(--space-md);right:var(--space-md);background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-md);display:flex;flex-direction:column;padding:var(--space-xs);z-index:1000;box-shadow:var(--shadow-lift)}.navbar-mobile-link{color:var(--ink-muted);text-decoration:none;padding:var(--space-sm) var(--space-md);font-size:var(--text-base);font-weight:500;border-radius:var(--radius-sm)}.navbar-mobile-link:hover{background:var(--paper-sunken);color:var(--ink)}.navbar-mobile-link.active{color:var(--brand-ink);background:var(--brand);font-weight:600}.navbar-mobile-logout{background:transparent;border:none;color:var(--danger);padding:var(--space-sm) var(--space-md);font-family:var(--font-body);font-weight:500;font-size:var(--text-base);text-align:left;border-radius:var(--radius-sm);cursor:pointer;margin-top:var(--space-2xs)}.navbar-mobile-logout:hover{background:var(--danger-soft)}.mobile-only{display:none;align-items:center;gap:var(--space-xs)}@media(max-width:768px){.desktop-only{display:none}.mobile-only{display:flex}}.hero{background:var(--paper-accent);border-radius:var(--radius-lg);border:1px solid var(--card-border);padding:var(--space-xl);margin:0 0 var(--space-xl);display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--space-xs);position:relative;overflow:hidden}.hero-label{font-size:var(--text-sm);font-weight:500;color:var(--ink-muted);display:inline-flex;align-items:center;gap:var(--space-xs);justify-content:center}.hero-label .dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--brand)}.hero-amount{font-family:var(--font-display);font-weight:700;font-size:var(--text-hero);line-height:1;letter-spacing:-.04em;color:var(--ink);font-feature-settings:"tnum","lnum";font-variant-numeric:tabular-nums;white-space:nowrap;text-align:center}.hero-amount .currency{font-weight:500;font-size:.42em;color:var(--ink-muted);margin-right:.2em;vertical-align:.5em;letter-spacing:0}.hero-amount.hidden{color:var(--ink-faint);letter-spacing:.05em}.hero-eye{position:absolute;top:var(--space-md);right:var(--space-md);background:var(--paper-raised);border:1.5px solid var(--rule-strong);color:var(--ink);cursor:pointer;width:38px;height:38px;border-radius:var(--radius-full);display:inline-flex;align-items:center;justify-content:center;transition:color .2s,background .2s,border-color .2s,box-shadow .2s;box-shadow:var(--shadow-card);z-index:1}.hero-eye:hover{color:var(--brand);background:var(--paper);border-color:var(--brand)}.hero-meta{margin-top:var(--space-sm);font-size:var(--text-sm);color:var(--ink-muted);text-align:center}.hero-meta strong{color:var(--ink);font-weight:600}@media(max-width:480px){.hero{padding:var(--space-lg);margin:var(--space-md) 0 var(--space-lg)}}.tabs-wrap{display:flex;justify-content:center;margin:0 0 var(--space-lg)}.tabs{display:inline-flex;gap:var(--space-2xs);background:var(--paper-sunken);padding:var(--space-2xs);border-radius:var(--radius-full)}.tab{background:transparent;border:none;padding:var(--space-xs) var(--space-lg);font-family:var(--font-body);font-weight:600;font-size:var(--text-sm);color:var(--ink-muted);cursor:pointer;border-radius:var(--radius-full);transition:color .2s,background-color .2s}.tab:hover{color:var(--ink)}.tab.active{background:var(--paper-raised);color:var(--ink);box-shadow:0 1px 2px #00000014}.category-pills{display:flex;gap:var(--space-xs);overflow-x:auto;padding:var(--space-2xs) 0 var(--space-md);margin-bottom:var(--space-md);scrollbar-width:thin}.category-pill{padding:var(--space-xs) var(--space-md);border-radius:var(--radius-full);border:none;background:var(--paper-sunken);color:var(--ink-muted);cursor:pointer;font-family:var(--font-body);font-size:var(--text-sm);font-weight:500;white-space:nowrap;transition:all .2s var(--ease-out-quart)}.category-pill:hover{color:var(--ink);background:var(--paper-raised)}.category-pill.active{background:var(--brand);color:var(--brand-ink);font-weight:600}.category-pill.add-btn{background:transparent;border:1px dashed var(--rule-strong);color:var(--ink-faint);display:flex;align-items:center;justify-content:center;padding:var(--space-xs) var(--space-sm);min-width:36px}.category-pill.add-btn:hover{color:var(--brand);border-color:var(--brand);background:var(--brand-soft)}.section-header{display:flex;justify-content:space-between;align-items:center;margin:var(--space-xl) 0 var(--space-md);gap:var(--space-md)}.section-header h2{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);letter-spacing:-.02em;color:var(--ink)}.ledger{display:flex;flex-direction:column;gap:var(--space-2xs)}.ledger-group{display:contents}.ledger-date{display:flex;justify-content:space-between;align-items:baseline;padding:var(--space-md) var(--space-sm) var(--space-xs);margin-top:var(--space-xs)}.ledger-date span{font-family:var(--font-display);font-size:var(--text-sm);font-weight:600;color:var(--ink)}.ledger-date small{font-family:var(--font-body);font-size:var(--text-sm);color:var(--ink-faint);font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ledger-row{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);background:var(--paper-raised);border:1px solid var(--card-border);cursor:pointer;transition:background .18s var(--ease-out-quart);position:relative}.ledger-row:hover{background:var(--paper-accent)}.cat-dot{width:40px;height:40px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--text-sm);color:var(--ink);background:var(--brand-soft);flex-shrink:0}.ledger-body{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.ledger-desc{font-size:var(--text-base);font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ledger-cat{font-size:var(--text-xs);color:var(--ink-faint);font-weight:500}.ledger-amount{font-family:var(--font-display);font-weight:700;font-size:var(--text-md);color:var(--ink);font-feature-settings:"tnum","lnum";font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.01em;transition:opacity .18s}.ledger-amount .minus{color:var(--ink-faint);font-weight:500;margin-right:.05em}.ledger-actions{display:flex;gap:var(--space-2xs);flex-shrink:0;overflow:hidden;max-width:0;margin-left:0;opacity:0;pointer-events:none;transition:max-width .25s var(--ease-out-quart),margin-left .25s var(--ease-out-quart),opacity .18s var(--ease-out-quart)}.ledger-row.is-active .ledger-actions{max-width:96px;margin-left:var(--space-sm);opacity:1;pointer-events:auto}.action-btn{background:transparent;border:none;cursor:pointer;padding:var(--space-xs);color:var(--ink-muted);display:flex;align-items:center;border-radius:var(--radius-full);transition:color .15s,background .15s;width:32px;height:32px;justify-content:center}.action-btn:hover{background:var(--paper-sunken)}.action-btn.edit:hover{color:var(--brand)}.action-btn.delete:hover{color:var(--danger);background:var(--danger-soft)}.card-actions{display:flex;gap:var(--space-2xs);flex-shrink:0;overflow:hidden;max-width:0;margin-left:0;opacity:0;pointer-events:none;transition:max-width .25s var(--ease-out-quart),margin-left .25s var(--ease-out-quart),opacity .18s var(--ease-out-quart)}.card.is-active .card-actions{max-width:144px;margin-left:var(--space-sm);opacity:1;pointer-events:auto}@media(max-width:480px){.ledger-row{gap:var(--space-sm)}}.budget-list{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-md)}@media(max-width:560px){.budget-list{grid-template-columns:1fr}}.budget-card{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-lg);background:var(--paper-raised);border-radius:var(--radius-md);border:1px solid var(--card-border);box-shadow:var(--shadow-card);cursor:pointer;transition:transform .2s var(--ease-out-quart),box-shadow .2s;position:relative}.budget-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift)}@keyframes budget-shake{0%,to{transform:translateY(-2px) rotate(0)}15%{transform:translate(-2px,-2px) rotate(-.6deg)}30%{transform:translate(2px,-3px) rotate(.6deg)}45%{transform:translate(-2px,-2px) rotate(-.4deg)}60%{transform:translate(2px,-3px) rotate(.4deg)}75%{transform:translate(-1px,-2px) rotate(-.2deg)}}@keyframes budget-shake-strong{0%,to{transform:translateY(-2px) rotate(0)}10%{transform:translate(-3px,-1px) rotate(-1.2deg)}25%{transform:translate(3px,-3px) rotate(1.2deg)}40%{transform:translate(-3px,-2px) rotate(-1deg)}55%{transform:translate(3px,-3px) rotate(1deg)}70%{transform:translate(-2px,-2px) rotate(-.6deg)}85%{transform:translate(2px,-3px) rotate(.6deg)}}.budget-card[data-state=warn]:hover{animation:budget-shake .55s var(--ease-out-quart) infinite;box-shadow:var(--shadow-lift),0 0 0 1px var(--warn-soft)}.budget-card[data-state=danger]:hover{animation:budget-shake-strong .4s linear infinite;box-shadow:var(--shadow-lift),0 0 0 1px var(--danger-soft)}@media(prefers-reduced-motion:reduce){.budget-card[data-state=warn]:hover,.budget-card[data-state=danger]:hover{animation:none}}.budget-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-sm)}.budget-card h3{font-family:var(--font-display);font-weight:700;font-size:var(--text-md);color:var(--ink);letter-spacing:-.015em;margin-bottom:2px}.budget-card .budget-category{font-size:var(--text-xs);color:var(--ink-faint);font-weight:500}.budget-state-chip{font-size:var(--text-xs);font-weight:600;padding:2px var(--space-xs);border-radius:var(--radius-full);text-transform:none;letter-spacing:0;background:var(--ok-soft);color:var(--ok);white-space:nowrap}.budget-state-chip[data-state=warn]{background:var(--warn-soft);color:var(--warn)}.budget-state-chip[data-state=danger]{background:var(--danger-soft);color:var(--danger)}.budget-amounts{display:flex;align-items:baseline;gap:var(--space-xs);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.budget-amounts .spent{font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);color:var(--ink);letter-spacing:-.02em;line-height:1}.budget-amounts .slash{color:var(--ink-faint);margin:0 .1em}.budget-amounts .max{color:var(--ink-faint);font-size:var(--text-sm);font-weight:500}.budget-bar{height:10px;background:var(--paper-sunken);border-radius:var(--radius-full);overflow:hidden;margin-top:var(--space-2xs)}.budget-bar-fill{height:100%;background:var(--brand);border-radius:var(--radius-full);transition:width .7s var(--ease-out-expo),background-color .3s}.budget-bar-fill[data-state=ok]{background:var(--ok)}.budget-bar-fill[data-state=warn]{background:var(--warn)}.budget-bar-fill[data-state=danger]{background:var(--danger)}.budget-remaining{display:flex;justify-content:space-between;font-size:var(--text-sm);color:var(--ink-muted)}.budget-remaining .label{font-weight:500}.budget-remaining .value{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--ink);font-weight:600}.budget-remaining .value.over{color:var(--danger)}.progress-bar-track{background:var(--paper-sunken);border-radius:var(--radius-full);overflow:hidden;height:10px}.progress-bar-fill{height:100%;transition:width .7s var(--ease-out-expo);border-radius:var(--radius-full);background:var(--ok)}.progress-bar-fill[data-state=warn]{background:var(--warn)}.progress-bar-fill[data-state=danger]{background:var(--danger)}.budget-detail-card{background:var(--paper-accent);padding:var(--space-xl);border-radius:var(--radius-lg);border:1px solid var(--card-border);margin-bottom:var(--space-lg);box-shadow:var(--shadow-card)}.back-btn{background:var(--paper-raised);border:none;color:var(--ink-muted);cursor:pointer;display:inline-flex;align-items:center;gap:var(--space-2xs);margin-bottom:var(--space-md);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-full);font-size:var(--text-sm);font-family:var(--font-body);font-weight:500;box-shadow:0 1px 2px #00000014}.back-btn:hover{color:var(--brand)}.budget-detail-content h3{font-family:var(--font-display);font-size:var(--text-lg);margin-bottom:var(--space-2xs);font-weight:700}.budget-detail-content small{color:var(--ink-muted);font-size:var(--text-sm)}.budget-detail-amounts{margin-top:var(--space-md);display:flex;align-items:baseline;gap:var(--space-xs);font-feature-settings:"tnum"}.spent-amount{font-family:var(--font-display);font-weight:700;font-size:var(--text-2xl);letter-spacing:-.03em;line-height:1;color:var(--ok)}.spent-amount[data-state=warn]{color:var(--warn)}.spent-amount[data-state=danger]{color:var(--danger)}.max-amount{color:var(--ink-faint);font-size:var(--text-md)}.budget-detail-remaining{margin-top:var(--space-md);font-size:var(--text-sm);color:var(--ink-muted);font-feature-settings:"tnum"}.budget-detail-remaining .amount{font-weight:700;color:var(--ink)}.budget-detail-remaining .amount.ok{color:var(--ok)}.budget-detail-remaining .amount.over{color:var(--danger)}.loading-text{text-align:center;padding:var(--space-xl);color:var(--ink-faint);font-size:var(--text-sm);font-weight:500}.empty-state{padding:var(--space-2xl) var(--space-lg);background:var(--paper-raised);border-radius:var(--radius-md);border:1px solid var(--card-border);text-align:center;color:var(--ink-muted);box-shadow:var(--shadow-card)}.empty-state p{margin:0;font-size:var(--text-md);color:var(--ink);font-weight:600}.empty-state .empty-hint{display:block;margin-top:var(--space-xs);font-size:var(--text-sm);color:var(--ink-muted);font-weight:400}.pagination-controls{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);margin-top:var(--space-xl);padding-top:var(--space-md)}.pagination-btn{background:var(--paper-raised);border:none;padding:var(--space-xs) var(--space-md);border-radius:var(--radius-full);cursor:pointer;color:var(--ink);font-family:var(--font-body);font-size:var(--text-sm);font-weight:500;transition:background .15s,color .15s;box-shadow:0 1px 2px #0000000f}.pagination-btn:hover:not(.disabled){background:var(--brand);color:var(--brand-ink)}.pagination-btn.disabled{color:var(--ink-faint);cursor:not-allowed;box-shadow:none;background:transparent}.pagination-info{color:var(--ink-muted);font-size:var(--text-sm);font-weight:500;font-feature-settings:"tnum"}.pagination-summary{text-align:center;margin-top:var(--space-sm);color:var(--ink-faint);font-size:var(--text-xs)}.modal-overlay{position:fixed;inset:0;background:color-mix(in oklab,var(--paper-sunken) 75%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-md)}.modal-content{background:var(--paper-raised);padding:var(--space-xl);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow-lift)}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-lg)}.modal-header h3{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);letter-spacing:-.02em}.modal-close{background:var(--paper-sunken);border:none;color:var(--ink-muted);font-size:20px;cursor:pointer;line-height:1;width:32px;height:32px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center}.modal-close:hover{color:var(--ink);background:var(--paper)}.modal-form{display:flex;flex-direction:column;gap:var(--space-sm)}.expense-modal__category-row{display:flex;gap:var(--space-xs);align-items:stretch}.expense-modal__category-row .input-dark{flex:1;margin-bottom:0}.btn-icon{width:42px;flex-shrink:0;padding:0;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center}.profile-card{display:flex;flex-direction:column;gap:var(--space-md)}.profile-avatar{width:72px;height:72px;border-radius:50%;background:var(--brand);color:var(--brand-ink);display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;font-size:28px}.profile-hero{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);margin:var(--space-lg) 0 var(--space-xl)}.profile-hero-main{display:flex;align-items:center;gap:var(--space-md);min-width:0}.profile-avatar--lg{width:88px;height:88px;font-size:36px;letter-spacing:-.02em}.profile-hero-info{display:flex;flex-direction:column;gap:var(--space-2xs);min-width:0}.profile-hero-name-row{display:flex;align-items:center;gap:var(--space-sm);flex-wrap:wrap}.profile-hero-name{font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);letter-spacing:-.02em;color:var(--ink);margin:0}.profile-plan-chip{display:inline-flex;align-items:center;background:var(--brand-soft);color:var(--brand);border:1px solid var(--card-border);padding:2px var(--space-sm);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;white-space:nowrap}.profile-hero-meta{margin:0;font-size:var(--text-sm);color:var(--ink-muted);overflow:hidden;text-overflow:ellipsis}.profile-edit-btn{flex-shrink:0;white-space:nowrap}@media(max-width:560px){.profile-hero{flex-direction:column;align-items:flex-start;gap:var(--space-md)}.profile-edit-btn{align-self:stretch}}.section-title{margin-top:var(--space-xl);margin-bottom:var(--space-md);font-family:var(--font-display);font-weight:700}.stats-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md);margin-bottom:var(--space-md)}.stats-row--money .stat-card{background:var(--paper-accent)}@media(max-width:560px){.stats-row{grid-template-columns:1fr}}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:var(--space-md)}.stat-card{padding:var(--space-md);background:var(--paper-raised);border-radius:var(--radius-md);border:1px solid var(--card-border);box-shadow:var(--shadow-card);text-align:left}.stat-card small{color:var(--ink-faint);font-size:var(--text-xs);font-weight:500}.stat-card h2{margin-top:var(--space-xs);font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);letter-spacing:-.02em;font-feature-settings:"tnum"}.top-category-card{margin-top:var(--space-md);background:var(--paper-accent);padding:var(--space-md);border-radius:var(--radius-md);border:1px solid var(--card-border);box-shadow:var(--shadow-card)}.top-category-card small{color:var(--ink-muted);font-size:var(--text-xs);font-weight:500}.top-category-card h3{font-family:var(--font-display);font-weight:700;margin:var(--space-xs) 0;color:var(--ink)}.top-category-card p{margin:0;color:var(--danger);font-weight:700;font-feature-settings:"tnum"}.stat-card.clickable,.top-category-card.clickable{cursor:pointer;transition:transform .2s var(--ease-out-quart),box-shadow .2s}.stat-card.clickable:hover,.top-category-card.clickable:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift)}.stat-feature{display:flex;flex-direction:column;gap:var(--space-2xs);padding:var(--space-lg);background:var(--paper-accent);border-radius:var(--radius-md);border:1px solid var(--card-border);box-shadow:var(--shadow-card);text-align:left}.stat-feature small{color:var(--ink-muted);font-size:var(--text-xs);font-weight:600;letter-spacing:.01em}.stat-feature-name{font-family:var(--font-display);font-weight:700;font-size:var(--text-md);color:var(--ink);letter-spacing:-.015em;margin-top:var(--space-xs)}.stat-feature-amount{font-family:var(--font-display);font-weight:700;font-size:clamp(2.5rem,6vw,3.25rem);letter-spacing:-.035em;line-height:1;color:var(--ink);margin-top:auto;margin-bottom:var(--space-sm);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat-feature-name+.stat-feature-amount{font-size:var(--text-xl);margin:0;letter-spacing:-.02em}.stat-feature-meta{margin:var(--space-xs) 0 0;color:var(--ink-muted);font-size:var(--text-sm);font-feature-settings:"tnum"}.stat-feature-footer{margin-top:auto;padding-top:var(--space-md);display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-sm);flex-wrap:wrap}.stat-feature-footer .stat-feature-meta{margin:0}.stat-trend{display:inline-flex;align-items:center;gap:2px;padding:2px var(--space-xs);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;font-feature-settings:"tnum";white-space:nowrap;border:1px solid transparent}.stat-trend-arrow{font-size:var(--text-sm);line-height:1}.stat-trend--up{background:var(--danger-soft);color:var(--danger)}.stat-trend--down{background:var(--ok-soft);color:var(--ok)}.stat-trend--flat{background:var(--paper-sunken);color:var(--ink-muted)}.stat-feature-bar{margin-top:var(--space-sm);height:6px;background:var(--paper-sunken);border-radius:var(--radius-full);overflow:hidden}.stat-feature-bar-fill{height:100%;background:var(--brand);border-radius:var(--radius-full);transition:width .7s var(--ease-out-expo)}.stat-feature.clickable{cursor:pointer;transition:transform .2s var(--ease-out-quart),box-shadow .2s}.stat-feature.clickable:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift)}.stat-feature--empty{align-items:flex-start;justify-content:center}.profile-sections{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md);margin-top:var(--space-xl)}@media(max-width:720px){.profile-sections{grid-template-columns:1fr}}.profile-section{display:flex;flex-direction:column;gap:var(--space-sm)}.profile-section-title{margin:0;font-family:var(--font-display);font-weight:700;color:var(--ink);letter-spacing:-.015em;padding-left:var(--space-2xs)}.profile-rows{list-style:none;margin:0;padding:var(--space-sm) var(--space-lg);display:flex;flex-direction:column;background:var(--paper-raised);border:1px solid var(--card-border);border-radius:var(--radius-md);box-shadow:var(--shadow-card)}.profile-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) 0;border-bottom:1px solid var(--rule)}.profile-row:first-child{padding-top:0}.profile-row:last-child{border-bottom:none;padding-bottom:0}.profile-row-info{display:flex;flex-direction:column;gap:2px;min-width:0}.profile-row-info small{color:var(--ink-faint);font-size:var(--text-xs);font-weight:500}.profile-row-info p{margin:0;color:var(--ink);font-weight:600;font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-row-action{background:none;border:none;color:var(--brand);font-family:var(--font-body);font-weight:600;font-size:var(--text-sm);cursor:pointer;padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-full);flex-shrink:0;transition:background .15s,color .15s}.profile-row-action:hover{background:var(--brand-soft);color:var(--brand-hover)}.section-title--danger{color:var(--danger)}.danger-zone{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg);padding:var(--space-lg);background:var(--paper-raised);border:1px solid var(--danger-soft);border-radius:var(--radius-md);box-shadow:var(--shadow-card);flex-wrap:wrap}.danger-zone-info{flex:1 1 280px;min-width:0}.danger-zone-subtitle{margin:0 0 var(--space-2xs);font-family:var(--font-display);font-weight:700;font-size:var(--text-md);color:var(--ink);letter-spacing:-.015em}.danger-zone-desc{margin:0;color:var(--ink-muted);font-size:var(--text-sm);line-height:1.5}.danger-zone-actions{display:flex;gap:var(--space-sm);flex-shrink:0}@media(max-width:560px){.danger-zone-actions{width:100%}.danger-zone-actions .btn{flex:1}}.calendar-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);margin:var(--space-lg) 0 var(--space-lg)}.calendar-title{font-family:var(--font-display);font-weight:700;letter-spacing:-.02em;text-transform:capitalize;margin:0}.calendar-title span{color:var(--ink-faint);font-weight:500;margin-left:var(--space-xs)}.calendar-nav{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-full);background:var(--paper-raised);border:1px solid var(--card-border);color:var(--ink);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.calendar-nav:hover{color:var(--brand);border-color:var(--brand);background:var(--brand-soft)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(5,1fr);gap:var(--space-xs);aspect-ratio:7 / 5}.calendar-layout{display:grid;grid-template-columns:1fr;gap:var(--space-md);align-items:start}.calendar-layout.is-split{grid-template-columns:minmax(0,1.4fr) minmax(280px,1fr)}.calendar-cell{position:relative;background:var(--paper-raised);border:1px solid var(--card-border);border-radius:var(--radius-md);padding:var(--space-sm);display:flex;align-items:center;justify-content:center;min-height:64px}.calendar-cell--button{font:inherit;color:inherit;cursor:pointer;text-align:center;appearance:none;width:100%}.calendar-cell--button:hover{border-color:color-mix(in oklab,var(--brand) 60%,var(--card-border))}.calendar-cell--selected{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand)}.calendar-cell--empty{background:transparent;border-style:dashed;border-color:var(--rule)}.calendar-cell--today{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}.calendar-day{font-family:var(--font-display);font-weight:700;font-size:var(--text-md);color:var(--ink);font-feature-settings:"tnum";transition:opacity .12s ease}.calendar-cell--today .calendar-day{color:var(--brand)}.calendar-amount{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:700;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;opacity:0;pointer-events:none;transition:opacity .12s ease}.calendar-cell:hover .calendar-day,.calendar-cell:focus-visible .calendar-day{opacity:0}.calendar-cell:hover .calendar-amount,.calendar-cell:focus-visible .calendar-amount{opacity:1}.calendar-cell--tier-1{background:color-mix(in oklab,var(--brand) 15%,transparent);border-color:color-mix(in oklab,var(--brand) 25%,transparent)}.calendar-cell--tier-2{background:color-mix(in oklab,var(--brand) 35%,transparent);border-color:color-mix(in oklab,var(--brand) 45%,transparent)}.calendar-cell--tier-3{background:color-mix(in oklab,var(--brand) 60%,transparent);border-color:color-mix(in oklab,var(--brand) 70%,transparent)}.calendar-cell--tier-4{background:color-mix(in oklab,var(--brand) 90%,transparent);border-color:var(--brand)}.calendar-cell--tier-3 .calendar-day,.calendar-cell--tier-3 .calendar-amount,.calendar-cell--tier-4 .calendar-day,.calendar-cell--tier-4 .calendar-amount{color:var(--brand-ink)}.calendar-summary{margin:0 0 var(--space-md);color:var(--ink-muted);font-size:var(--text-sm)}.calendar-summary strong{color:var(--ink);font-weight:700;font-feature-settings:"tnum"}.calendar-day-panel{background:var(--paper-raised);border:1px solid var(--card-border);border-radius:var(--radius-md);padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-sm);min-width:0}.calendar-day-panel__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-sm)}.calendar-day-panel__title{margin:0;font-family:var(--font-display);font-size:var(--text-md);font-weight:700;color:var(--ink);text-transform:capitalize}.calendar-day-panel__total{margin:2px 0 0;font-size:var(--text-sm);color:var(--ink-muted)}.calendar-day-panel__total strong{color:var(--ink);font-weight:700;font-feature-settings:"tnum"}.calendar-day-panel__close{appearance:none;background:transparent;border:1px solid var(--card-border);border-radius:var(--radius-sm);width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;color:var(--ink-faint);cursor:pointer;flex-shrink:0}.calendar-day-panel__close:hover{color:var(--ink);background:var(--paper-accent)}.calendar-day-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2xs)}.calendar-day-row{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm);border-radius:var(--radius-sm);background:var(--paper);border:1px solid var(--card-border)}.calendar-day-row__body{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.calendar-day-row__desc{font-size:var(--text-sm);font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-day-row__cat{font-size:var(--text-xs);color:var(--ink-faint)}.calendar-day-row__amount{font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.calendar-day-row__amount .minus{color:var(--ink-faint);font-weight:500;margin-right:.05em}.calendar-legend{margin-top:var(--space-md);display:flex;align-items:center;gap:var(--space-2xs);font-size:var(--text-xs);color:var(--ink-faint);justify-content:flex-end}.calendar-legend-swatch{display:inline-block;width:18px;height:18px;border-radius:var(--radius-xs);border:1px solid var(--card-border)}@media(max-width:720px){.calendar-layout.is-split{grid-template-columns:1fr}.calendar-grid{gap:4px}.calendar-cell{min-height:52px;padding:4px}.calendar-day{font-size:var(--text-sm)}.calendar-amount{font-size:.65rem;padding:2px;line-height:1.1;text-align:center;word-break:break-word}.calendar-cell:active .calendar-day{opacity:0}.calendar-cell:active .calendar-amount{opacity:1}.calendar-day-panel{padding:var(--space-sm)}.calendar-day-panel__title{font-size:var(--text-base)}}.range-filter{display:flex;flex-direction:column;gap:var(--space-sm);margin-bottom:var(--space-md)}.range-chips{display:flex;flex-wrap:wrap;gap:var(--space-2xs)}.range-chip{background:var(--paper-sunken);border:1px solid transparent;color:var(--ink-muted);padding:var(--space-2xs) var(--space-sm);font-size:var(--text-sm);font-weight:500;border-radius:var(--radius-full);cursor:pointer;transition:color .2s,background .2s,border-color .2s}.range-chip:hover{color:var(--ink);background:var(--paper-raised)}.range-chip.is-active{background:var(--brand);color:var(--brand-ink);font-weight:600}.range-custom{display:flex;flex-wrap:wrap;gap:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--paper-sunken);border-radius:var(--radius-md)}.range-custom-field{display:flex;flex-direction:column;gap:2px;font-size:var(--text-xs);color:var(--ink-faint)}.range-custom-field input{background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius-sm);padding:var(--space-2xs) var(--space-xs);font-family:var(--font-body);font-size:var(--text-sm);color:var(--ink)}.range-custom-field input:focus{outline:none;border-color:var(--brand)}:root{--font-body: "Commissioner", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-display: "Commissioner", ui-sans-serif, system-ui, -apple-system, sans-serif;--space-2xs: .25rem;--space-xs: .5rem;--space-sm: .75rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--space-4xl: 6rem;--radius-xs: 8px;--radius-sm: 12px;--radius-md: 16px;--radius-lg: 20px;--radius-xl: 28px;--radius-full: 999px;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-md: 1.125rem;--text-lg: 1.375rem;--text-xl: 1.875rem;--text-2xl: 2.5rem;--text-hero: clamp(3rem, 9vw, 4.75rem);--ease-out-quart: cubic-bezier(.25, 1, .5, 1);--ease-out-expo: cubic-bezier(.19, 1, .22, 1)}[data-theme=light]{color-scheme:light;--paper: oklch(.975 .008 150);--paper-raised: oklch(.995 .005 150);--paper-sunken: oklch(.94 .012 150);--paper-accent: oklch(.93 .03 150);--ink: oklch(.24 .018 150);--ink-muted: oklch(.46 .02 150);--ink-faint: oklch(.62 .015 150);--rule: oklch(.88 .014 150);--rule-strong: oklch(.76 .022 150);--brand: oklch(.55 .115 152);--brand-soft: oklch(.92 .045 152);--brand-hover: oklch(.48 .125 150);--brand-ink: oklch(.985 .005 150);--ok: oklch(.58 .145 138);--ok-soft: oklch(.93 .05 138);--warn: oklch(.72 .14 75);--warn-soft: oklch(.94 .05 75);--danger: oklch(.58 .17 28);--danger-soft: oklch(.93 .05 28);--card-border: oklch(.18 .012 150);--shadow-card: 0 1px 2px oklch(.5 .04 150 / .08), 0 8px 24px -12px oklch(.35 .05 150 / .14);--shadow-lift: 0 2px 4px oklch(.5 .04 150 / .1), 0 16px 40px -16px oklch(.35 .05 150 / .22)}[data-theme=dark]{color-scheme:dark;--paper: oklch(.185 .014 150);--paper-raised: oklch(.235 .016 150);--paper-sunken: oklch(.155 .012 150);--paper-accent: oklch(.27 .03 150);--ink: oklch(.955 .008 150);--ink-muted: oklch(.75 .015 150);--ink-faint: oklch(.58 .016 150);--rule: oklch(.31 .016 150);--rule-strong: oklch(.44 .02 150);--brand: oklch(.74 .115 152);--brand-soft: oklch(.3 .05 152);--brand-hover: oklch(.8 .115 152);--brand-ink: oklch(.18 .014 150);--ok: oklch(.78 .14 138);--ok-soft: oklch(.3 .05 138);--warn: oklch(.8 .14 80);--warn-soft: oklch(.3 .04 80);--danger: oklch(.72 .17 28);--danger-soft: oklch(.3 .05 28);--card-border: oklch(.42 .022 150);--shadow-card: 0 1px 2px oklch(0 0 0 / .4), 0 8px 24px -12px oklch(0 0 0 / .5);--shadow-lift: 0 2px 4px oklch(0 0 0 / .5), 0 16px 40px -16px oklch(0 0 0 / .6)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--text-base);line-height:1.5;font-feature-settings:"ss01","ss02","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background-color .3s var(--ease-out-quart),color .3s var(--ease-out-quart)}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;letter-spacing:-.015em;margin:0}a{color:inherit}button{font-family:inherit}::selection{background:color-mix(in oklab,var(--brand) 35%,transparent)}.container{max-width:920px;margin:0 auto;padding:var(--space-lg) var(--space-lg) var(--space-3xl)}@media(max-width:640px){.container{padding:var(--space-md) var(--space-md) var(--space-2xl)}}.btn{background:var(--brand);color:var(--brand-ink);border:none;padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-full);font-family:var(--font-body);font-weight:600;font-size:var(--text-sm);letter-spacing:0;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-xs);transition:transform .15s var(--ease-out-quart),background-color .2s,box-shadow .2s;box-shadow:0 1px 2px #00000014}.btn:hover{background:var(--brand-hover);transform:translateY(-1px);box-shadow:var(--shadow-card)}.btn:active{transform:translateY(0)}.btn-ghost{background:var(--paper-raised);color:var(--ink);border:1px solid var(--rule);box-shadow:none}.btn-ghost:hover{background:var(--paper-sunken);color:var(--ink);transform:translateY(-1px)}.btn-danger{background:var(--danger);color:var(--brand-ink)}.btn-danger:hover{background:var(--danger);opacity:.92}.input-dark{background:var(--paper-sunken);color:var(--ink);border:1px solid transparent;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);width:100%;box-sizing:border-box;margin-bottom:var(--space-sm);font-family:var(--font-body);font-size:var(--text-base);transition:border-color .15s,background .15s}.input-dark:focus{outline:none;border-color:var(--brand);background:var(--paper-raised)}.input-dark.disabled{color:var(--ink-faint);cursor:not-allowed}.card{position:relative;background:var(--paper-raised);padding:var(--space-lg);border-radius:var(--radius-md);border:1px solid var(--card-border);box-shadow:var(--shadow-card);margin-bottom:var(--space-lg)}.card.clickable{cursor:pointer;transition:transform .2s var(--ease-out-quart),box-shadow .2s,background-color .2s}.card.clickable:hover{transform:translateY(-2px);box-shadow:var(--shadow-lift);background:var(--paper-accent)}.card.clickable:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.custom-scrollbar::-webkit-scrollbar{height:6px;width:6px}.custom-scrollbar::-webkit-scrollbar-track{background:transparent}.custom-scrollbar::-webkit-scrollbar-thumb{background:var(--rule-strong);border-radius:var(--radius-full)}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-lg)}.page-header h2{margin:0}.tier-banner{margin-bottom:var(--space-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);background:var(--paper-sunken);color:var(--ink-muted);font-size:var(--text-sm)}.stack{display:flex;flex-direction:column;gap:var(--space-md)}.stack--sm{gap:var(--space-sm)}.btn-with-icon{display:flex;align-items:center;gap:var(--space-2xs)}.empty-card{text-align:center;padding:var(--space-2xl) var(--space-lg)}.empty-card p{color:var(--ink-muted);margin:0}.actions-row{display:flex;align-items:center;gap:var(--space-sm)}.budget-row__head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:var(--space-sm)}.budget-row__head h3{margin:0 0 var(--space-2xs) 0}.budget-row__head small{color:var(--ink-muted)}.budget-row__amount-wrap{text-align:right}.budget-row__amount{font-weight:700;font-size:var(--text-lg);color:var(--ok)}.budget-row__amount[data-state=warn]{color:var(--warn)}.budget-row__amount[data-state=danger]{color:var(--danger)}.budget-row__bar{flex:1}.budget-row__amount--muted{color:var(--ink-muted);font-weight:400}.budget-row__remaining{margin-top:var(--space-xs);font-size:var(--text-sm);color:var(--ink-muted)}.budget-row__remaining .ok{color:var(--ok)}.budget-row__remaining .over{color:var(--danger)}.modal-actions{display:flex;gap:var(--space-sm);justify-content:flex-end}.modal-message{margin:0;color:var(--ink-muted)}.category-row{padding:var(--space-md);display:flex;justify-content:space-between;align-items:center;margin:0}.category-row__main{min-width:0;flex:1}.category-row__desc{color:var(--ink-muted);margin-left:var(--space-xs)}.category-row__count{margin-top:var(--space-2xs);font-size:var(--text-xs);color:var(--ink-muted)}.category-row__total{font-size:var(--text-lg);font-weight:600;white-space:nowrap;flex-shrink:0}.stat-progress{margin-top:var(--space-xs)}.stat-limit{color:var(--ink-muted)}.login-wrapper{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-lg);background:var(--paper);color:var(--ink);padding:var(--space-lg);font-family:var(--font-body)}.login-box{background:var(--paper-raised);padding:var(--space-2xl) var(--space-xl);border-radius:var(--radius-lg);box-shadow:var(--shadow-lift);width:100%;max-width:420px}.login-box--wide{max-width:460px}.login-box--xwide{max-width:500px}.login-box--centered{text-align:center}.login-button--inline-link{display:inline-block;width:100%;text-decoration:none;box-sizing:border-box}.login-button--external{display:flex;align-items:center;justify-content:center;gap:var(--space-xs);text-decoration:none;width:100%;box-sizing:border-box;margin-top:0}.verify-icon{margin:0 auto var(--space-lg);display:block}.verify-icon--spin{animation:spin 2s linear infinite}.verify-message{margin-top:var(--space-sm)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.login-brand{display:inline-flex;align-items:center;gap:.55em;font-family:var(--font-display);font-weight:700;font-size:var(--text-2xl);color:var(--ink);letter-spacing:-.04em;line-height:1}.login-brand--dot:before{content:"";width:22px;height:22px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 5px var(--brand-soft)}.login-title{margin:0 0 var(--space-xs);font-family:var(--font-display);font-size:var(--text-xl);font-weight:700;letter-spacing:-.025em;color:var(--ink)}.login-subtitle{margin:0 0 var(--space-xl);color:var(--ink-muted);font-size:var(--text-base);line-height:1.55}.login-form{display:flex;flex-direction:column;gap:var(--space-md)}.login-input-group{display:flex;flex-direction:column;gap:var(--space-2xs)}.login-input-label{font-size:var(--text-sm);color:var(--ink-muted);font-weight:500;margin-left:var(--space-2xs)}.login-input{width:100%;box-sizing:border-box;background:var(--paper-sunken);color:var(--ink);padding:var(--space-md) var(--space-lg);border:1px solid transparent;border-radius:var(--radius-sm);font-size:var(--text-base);font-family:var(--font-body);outline:none;transition:border-color .2s,background-color .2s}.login-input::placeholder{color:var(--ink-faint)}.login-input:focus{border-color:var(--brand);background:var(--paper)}.login-input.login-input--error,.login-input.login-input--error:hover,.login-input.login-input--error:focus{border-color:var(--danger);background-color:var(--danger-soft)}.login-input.login-input--error:-webkit-autofill,.login-input.login-input--error:-webkit-autofill:hover,.login-input.login-input--error:-webkit-autofill:focus,.login-input.login-input--error:-webkit-autofill:active{-webkit-box-shadow:0 0 0 1000px var(--danger-soft) inset!important;-webkit-text-fill-color:var(--ink)!important;border-color:var(--danger)!important}.login-field-error{color:var(--danger);font-size:var(--text-sm);margin-left:var(--space-2xs);line-height:1.3}.login-input:-webkit-autofill,.login-input:-webkit-autofill:hover,.login-input:-webkit-autofill:focus{-webkit-text-fill-color:var(--ink);-webkit-box-shadow:0 0 0 1000px var(--paper-sunken) inset;transition:background-color 5000s ease-in-out 0s}.login-button{background:var(--brand);color:var(--brand-ink);border:none;padding:var(--space-md) var(--space-lg);border-radius:var(--radius-full);font-size:var(--text-base);font-weight:600;font-family:var(--font-body);cursor:pointer;transition:background-color .2s,transform .12s var(--ease-out-quart),box-shadow .2s;margin-top:var(--space-xs);box-shadow:0 1px 2px #00000014}.login-button:hover:not(:disabled){background:var(--brand-hover);transform:translateY(-1px);box-shadow:var(--shadow-card)}.login-button:active{transform:translateY(0)}.login-button:disabled{opacity:.55;cursor:not-allowed}.error-message{background:var(--danger-soft);color:var(--danger);text-align:center;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);margin-bottom:var(--space-md);font-size:var(--text-sm);font-weight:500}.register-link{text-align:center;margin-top:var(--space-xl);color:var(--ink-muted);font-size:var(--text-sm)}.register-link a{color:var(--brand);text-decoration:none;font-weight:600}.register-link a:hover{text-decoration:underline}.login-password-field{position:relative}.login-password-field .login-input{padding-right:48px}.login-password-toggle{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:transparent;border:none;color:var(--ink-faint);cursor:pointer;display:flex;align-items:center;padding:var(--space-xs);border-radius:var(--radius-full);transition:color .2s,background .2s}.login-password-toggle:hover{color:var(--ink);background:var(--paper-sunken)}.login-row{display:flex;gap:var(--space-sm)}.login-row>*{flex:1}.login-icon-circle{width:72px;height:72px;border-radius:50%;background:var(--brand-soft);color:var(--brand);display:inline-flex;align-items:center;justify-content:center;margin-bottom:var(--space-lg)}.onboarding-intro{color:var(--ink-muted);margin-bottom:var(--space-xl);line-height:1.6;font-size:var(--text-base)}.onboarding-intro strong{color:var(--ink);font-weight:600}.theme-toggle{background:var(--paper-raised);border:1px solid var(--rule);color:var(--ink-muted);width:40px;height:40px;border-radius:var(--radius-full);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:color .2s,background .2s,transform .4s var(--ease-out-expo);box-shadow:0 1px 2px #00000014}.theme-toggle:hover{color:var(--ink);background:var(--paper);transform:rotate(24deg)}.theme-toggle--floating{position:fixed;top:var(--space-lg);right:var(--space-lg);z-index:10}.auth-top-actions{position:fixed;top:var(--space-lg);right:var(--space-lg);z-index:10;display:flex;align-items:center;gap:var(--space-xs)}.auth-home-btn{background:var(--paper-raised);border:1px solid var(--rule);color:var(--ink-muted);width:40px;height:40px;border-radius:var(--radius-full);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;transition:color .2s,background .2s,border-color .2s;box-shadow:0 1px 2px #00000014}.auth-home-btn:hover{color:var(--brand);background:var(--paper);border-color:var(--brand)}@media(max-width:480px){.theme-toggle--floating,.auth-top-actions{top:var(--space-md);right:var(--space-md)}}@media(max-width:480px){.login-box{padding:var(--space-xl) var(--space-lg);border-radius:var(--radius-md)}}.landing{min-height:100vh;background:var(--paper);color:var(--ink);font-family:var(--font-body);display:flex;flex-direction:column}.landing-nav{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);max-width:1120px;width:100%;margin:0 auto;padding:var(--space-lg)}.landing-brand{display:inline-flex;align-items:center;gap:var(--space-sm);font-family:var(--font-display);font-weight:700;font-size:var(--text-md);letter-spacing:-.03em}.landing-brand__dot{width:14px;height:14px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 4px var(--brand-soft)}.landing-nav__links{display:flex;gap:var(--space-lg)}.landing-nav__links a{color:var(--ink-muted);text-decoration:none;font-size:var(--text-sm);font-weight:500;transition:color .15s}.landing-nav__links a:hover{color:var(--ink)}.landing-nav__actions{display:flex;align-items:center;gap:var(--space-sm)}.landing-nav__login{color:var(--ink-muted);text-decoration:none;font-size:var(--text-sm);font-weight:600;padding:var(--space-xs) var(--space-sm)}.landing-nav__login:hover{color:var(--ink)}@media(max-width:720px){.landing-nav__links{display:none}}.landing-hero{max-width:1120px;width:100%;margin:0 auto;padding:var(--space-2xl) var(--space-lg) var(--space-3xl);display:grid;grid-template-columns:1.15fr 1fr;gap:var(--space-3xl);align-items:center}.landing-eyebrow{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-2xs) var(--space-sm);background:var(--brand-soft);color:var(--brand);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;width:fit-content;margin-bottom:var(--space-lg);grid-column:1 / -1}.landing-hero__title{grid-column:1;font-size:var(--text-hero);font-weight:700;letter-spacing:-.03em;line-height:1.02;margin-bottom:var(--space-lg);max-width:14ch}.landing-hero__accent{color:var(--brand)}.landing-hero__subtitle{grid-column:1;color:var(--ink-muted);font-size:var(--text-md);line-height:1.55;max-width:52ch;margin:0 0 var(--space-xl)}.landing-hero__ctas{grid-column:1;display:flex;align-items:center;gap:var(--space-md);flex-wrap:wrap}.landing-cta{padding:var(--space-md) var(--space-xl);font-size:var(--text-base)}.landing-cta-ghost{color:var(--ink-muted);text-decoration:none;font-weight:600;font-size:var(--text-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-full);transition:color .15s,background .15s}.landing-cta-ghost:hover{color:var(--ink);background:var(--paper-sunken)}.landing-hero__preview{grid-column:2;grid-row:2 / span 3;display:flex;justify-content:center;align-items:center}.landing-preview-card{width:100%;max-width:360px;background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-xl);padding:var(--space-xl);box-shadow:var(--shadow-lift);transform:rotate(-1.2deg)}.landing-preview-card__header{display:flex;justify-content:space-between;align-items:center;color:var(--ink-muted);font-size:var(--text-sm);margin-bottom:var(--space-sm)}.landing-preview-card__pill{background:var(--brand-soft);color:var(--brand);padding:2px var(--space-sm);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600}.landing-preview-card__amount{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:700;letter-spacing:-.03em;margin-bottom:var(--space-lg)}.landing-preview-bars{display:flex;align-items:flex-end;gap:var(--space-xs);height:96px}.landing-preview-bars span{flex:1;background:var(--brand-soft);border-radius:var(--radius-xs);min-height:12px}.landing-preview-bars span:nth-child(1){height:40%}.landing-preview-bars span:nth-child(2){height:65%}.landing-preview-bars span:nth-child(3){height:55%}.landing-preview-bars span:nth-child(4){height:80%;background:var(--brand)}.landing-preview-bars span:nth-child(5){height:48%}.landing-preview-bars span:nth-child(6){height:72%}.landing-preview-bars span:nth-child(7){height:60%}@media(max-width:880px){.landing-hero{grid-template-columns:1fr;gap:var(--space-xl);padding-bottom:var(--space-2xl)}.landing-hero__preview{grid-column:1;grid-row:auto}.landing-hero__title{max-width:20ch}}.landing-section{max-width:1120px;width:100%;margin:0 auto;padding:var(--space-3xl) var(--space-lg)}.landing-section--band{background:var(--paper-accent);border-radius:var(--radius-xl);padding:var(--space-3xl) var(--space-2xl);margin-top:var(--space-xl);margin-bottom:var(--space-xl);width:calc(100% - var(--space-lg) * 2)}.landing-section--band .landing-feature{background:var(--paper-raised);border-color:transparent}@media(max-width:720px){.landing-section--band{padding:var(--space-2xl) var(--space-lg)}}.landing-section__header{max-width:640px;margin-bottom:var(--space-2xl)}.landing-section__header h2{font-size:var(--text-xl);letter-spacing:-.025em;margin-bottom:var(--space-sm)}.landing-section__header p{color:var(--ink-muted);font-size:var(--text-md);line-height:1.55;margin:0}.landing-features{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-lg)}.landing-feature{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-lg);padding:var(--space-xl);transition:transform .2s var(--ease-out-quart),box-shadow .2s,border-color .2s}.landing-feature:hover{transform:translateY(-2px);box-shadow:var(--shadow-card);border-color:var(--rule-strong)}.landing-feature__icon{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-md);background:var(--brand-soft);color:var(--brand);margin-bottom:var(--space-md)}.landing-feature h3{font-size:var(--text-md);margin-bottom:var(--space-xs)}.landing-feature p{color:var(--ink-muted);font-size:var(--text-sm);line-height:1.55;margin:0}@media(max-width:880px){.landing-features{grid-template-columns:1fr}}.landing-steps-cascade{display:flex;flex-direction:column;gap:var(--space-3xl)}.landing-step-card{width:100%;max-width:380px;background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-xl);padding:var(--space-xl);box-shadow:var(--shadow-lift)}.landing-split .landing-step-card{transform:rotate(.8deg)}.landing-split--reverse .landing-step-card{transform:rotate(-.8deg)}.landing-step-card__head{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-sm);margin-bottom:var(--space-md)}.landing-step-card__head h3{font-family:var(--font-display);font-size:var(--text-md);font-weight:700;letter-spacing:-.015em;margin:0;color:var(--ink)}.landing-step-card__head small{color:var(--ink-muted);font-size:var(--text-sm);font-weight:500;font-feature-settings:"tnum"}.landing-step-form{display:flex;flex-direction:column;gap:var(--space-sm)}.landing-step-form label{display:flex;flex-direction:column;gap:4px}.landing-step-form label small{color:var(--ink-faint);font-size:var(--text-xs);font-weight:500;padding-left:var(--space-2xs)}.landing-step-input{background:var(--paper-sunken);border-radius:var(--radius-sm);padding:var(--space-sm) var(--space-md);color:var(--ink);font-size:var(--text-sm);font-weight:500;border:1px solid transparent}.landing-step-submit{margin-top:var(--space-xs);background:var(--brand);color:var(--brand-ink);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-full);text-align:center;font-weight:600;font-size:var(--text-sm)}.landing-step-pills{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.landing-step-pills span{padding:var(--space-2xs) var(--space-md);border-radius:var(--radius-full);background:var(--paper-sunken);color:var(--ink-muted);font-size:var(--text-sm);font-weight:500}.landing-step-pills span.is-active{background:var(--brand);color:var(--brand-ink);font-weight:600}.landing-step-pills span.is-add{background:transparent;border:1px dashed var(--rule-strong);color:var(--ink-faint);font-weight:600}.landing-step-ledger{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.landing-step-ledger li{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-sm) 0;border-bottom:1px solid var(--rule)}.landing-step-ledger li:first-child{padding-top:0}.landing-step-ledger li:last-child{padding-bottom:0;border-bottom:none}.landing-step-ledger strong{display:block;color:var(--ink);font-weight:600;font-size:var(--text-sm);margin-bottom:2px}.landing-step-ledger small{color:var(--ink-faint);font-size:var(--text-xs);font-weight:500}.landing-step-ledger span{font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media(max-width:880px){.landing-steps-cascade{gap:var(--space-2xl)}.landing-split .landing-step-card,.landing-split--reverse .landing-step-card{transform:none}}.landing-cta-band{max-width:1120px;width:100%;margin:var(--space-2xl) auto var(--space-3xl);padding:var(--space-3xl) var(--space-xl);background:var(--paper-accent);border-radius:var(--radius-xl);text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--space-md)}.landing-cta-band h2{font-size:var(--text-xl);letter-spacing:-.025em;max-width:22ch}.landing-cta-band p{color:var(--ink-muted);font-size:var(--text-md);max-width:48ch;margin:0 0 var(--space-sm)}.landing-footer{max-width:1120px;width:100%;margin:0 auto;padding:var(--space-xl) var(--space-lg) var(--space-2xl);display:flex;gap:var(--space-sm);align-items:center;color:var(--ink-faint);font-size:var(--text-sm);border-top:1px solid var(--rule)}.landing-footer a{color:var(--ink-muted);text-decoration:none}.landing-footer a:hover{color:var(--ink)}.landing-footer__dot{color:var(--rule-strong)}.landing-split{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3xl);align-items:center}.landing-split__copy{max-width:48ch}.landing-split__eyebrow{display:inline-flex;align-items:center;gap:var(--space-xs);padding:var(--space-2xs) var(--space-sm);background:var(--brand-soft);color:var(--brand);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;margin-bottom:var(--space-md)}.landing-split__copy h2{font-size:var(--text-xl);letter-spacing:-.025em;margin-bottom:var(--space-md)}.landing-split__copy>p{color:var(--ink-muted);font-size:var(--text-md);line-height:1.55;margin:0 0 var(--space-lg)}.landing-bullets{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.landing-bullets li{display:flex;align-items:center;gap:var(--space-sm);font-size:var(--text-sm);color:var(--ink);font-weight:500}.landing-bullets svg{color:var(--brand);flex-shrink:0}.landing-split__visual{display:flex;justify-content:center}.landing-cat-card{width:100%;max-width:420px;background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-xl);padding:var(--space-xl);box-shadow:var(--shadow-lift);transform:rotate(.8deg)}.landing-cat-card__head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-md)}.landing-cat-card__head h3{font-family:var(--font-display);font-size:var(--text-md);font-weight:700;letter-spacing:-.015em;margin:0}.landing-cat-card__add{display:inline-flex;align-items:center;gap:var(--space-2xs);background:var(--brand-soft);color:var(--brand);padding:var(--space-2xs) var(--space-sm);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600}.landing-cat-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.landing-cat-list li{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md);padding:var(--space-md) 0;border-bottom:1px solid var(--rule)}.landing-cat-list li:first-child{padding-top:0}.landing-cat-list li:last-child{border-bottom:none;padding-bottom:0}.landing-cat-list strong{display:block;color:var(--ink);font-weight:600;font-size:var(--text-sm);margin-bottom:2px}.landing-cat-list small{color:var(--ink-faint);font-size:var(--text-xs);font-weight:500}.landing-cat-amount{font-family:var(--font-display);font-weight:700;font-size:var(--text-md);color:var(--ink);letter-spacing:-.015em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.landing-split--reverse .landing-split__copy{grid-column:2;grid-row:1;justify-self:end}.landing-split--reverse .landing-split__visual{grid-column:1;grid-row:1}.landing-budget-card{transform:rotate(-.8deg)}.landing-budget-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.landing-budget-list li{padding:var(--space-md) 0;border-bottom:1px solid var(--rule);display:flex;flex-direction:column;gap:var(--space-xs)}.landing-budget-list li:first-child{padding-top:0}.landing-budget-list li:last-child{padding-bottom:0;border-bottom:none}.landing-budget-row{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-sm)}.landing-budget-row strong{display:block;color:var(--ink);font-weight:600;font-size:var(--text-sm);margin-bottom:2px}.landing-budget-row small{color:var(--ink-faint);font-size:var(--text-xs);font-weight:500}.landing-budget-row .landing-cat-amount{font-size:var(--text-sm);white-space:nowrap;text-align:right}.landing-budget-bar{height:8px;background:var(--paper-sunken);border-radius:var(--radius-full);overflow:hidden}.landing-budget-bar>span{display:block;height:100%;background:var(--ok);border-radius:var(--radius-full)}.landing-budget-bar>span[data-state=warn]{background:var(--warn)}.landing-budget-bar>span[data-state=danger]{background:var(--danger)}.landing-budget-foot{margin:0;color:var(--ink-muted);font-size:var(--text-xs);font-feature-settings:"tnum"}.landing-budget-foot strong{color:var(--ink);font-weight:700;font-feature-settings:"tnum"}.landing-budget-foot--over,.landing-budget-foot--over strong{color:var(--danger)}@media(max-width:880px){.landing-split{grid-template-columns:1fr;gap:var(--space-xl)}.landing-cat-card,.landing-budget-card{transform:none}.landing-split--reverse .landing-split__copy,.landing-split--reverse .landing-split__visual{grid-column:1;grid-row:auto;justify-self:stretch}}.landing-stats__copy{max-width:56ch;margin-bottom:var(--space-xl)}.landing-stats__copy h2{font-size:var(--text-xl);letter-spacing:-.025em;margin-bottom:var(--space-md)}.landing-stats__copy p{color:var(--ink-muted);font-size:var(--text-md);line-height:1.55;margin:0}.landing-stats-mock{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-xl);padding:var(--space-xl);box-shadow:var(--shadow-lift)}.landing-stats-mock__title{font-family:var(--font-display);font-weight:700;font-size:1.5rem;letter-spacing:-.015em;margin:0 0 var(--space-md);color:var(--ink)}.landing-stats-mock__row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md);margin-bottom:var(--space-md)}.landing-stats-mock__feature{background:var(--paper-accent);border:1px solid var(--rule);border-radius:var(--radius-md);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-2xs)}.landing-stats-mock__feature small{color:var(--ink-muted);font-size:var(--text-xs);font-weight:600}.landing-stats-mock__name{font-family:var(--font-display);font-weight:700;font-size:var(--text-md);color:var(--ink);margin-top:var(--space-xs);letter-spacing:-.015em}.landing-stats-mock__amount{font-family:var(--font-display);font-weight:700;font-size:clamp(2rem,4vw,2.5rem);letter-spacing:-.035em;line-height:1;color:var(--ink);margin-top:auto;margin-bottom:var(--space-xs);font-feature-settings:"tnum"}.landing-stats-mock__amount--sm{font-size:var(--text-xl);margin-top:0;margin-bottom:0}.landing-stats-mock__sub,.landing-stats-mock__feature>p{margin:0;color:var(--ink-muted);font-size:var(--text-sm)}.landing-stats-mock__foot{margin-top:auto;display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-sm);flex-wrap:wrap}.landing-stats-mock__foot p{margin:0;color:var(--ink-muted);font-size:var(--text-sm)}.landing-trend{display:inline-flex;align-items:center;gap:2px;padding:2px var(--space-xs);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;white-space:nowrap}.landing-trend--down{background:var(--ok-soft);color:var(--ok)}.landing-trend--up{background:var(--danger-soft);color:var(--danger)}.landing-stats-mock__bar{margin-top:var(--space-sm);height:6px;background:var(--paper-sunken);border-radius:var(--radius-full);overflow:hidden}.landing-stats-mock__bar>span{display:block;height:100%;background:var(--brand);border-radius:var(--radius-full)}.landing-stats-mock__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-md)}.landing-stats-mock__tile{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-md);padding:var(--space-md)}.landing-stats-mock__tile small{color:var(--ink-faint);font-size:var(--text-xs);font-weight:500}.landing-stats-mock__tile h4{margin:var(--space-xs) 0 0;font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);letter-spacing:-.02em;color:var(--ink);font-feature-settings:"tnum"}.landing-stats-mock__tile h4 span{color:var(--ink-faint);font-weight:500;font-size:var(--text-md)}@media(max-width:720px){.landing-stats-mock__row{grid-template-columns:1fr}.landing-stats-mock__grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:420px){.landing-stats-mock__grid{grid-template-columns:1fr}}
