.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);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:grid;grid-template-columns:1fr auto;gap:var(--space-md);align-items:center;padding:var(--space-md);border-radius:var(--radius-md);background:var(--paper-raised);transition:background .18s var(--ease-out-quart),transform .18s;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;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{position:absolute;left:100%;top:50%;transform:translateY(-50%) translate(-8px);display:flex;gap:var(--space-2xs);padding:var(--space-2xs);background:var(--paper);border-radius:var(--radius-full);box-shadow:var(--shadow-card);margin-left:var(--space-sm);opacity:0;pointer-events:none;transition:opacity .2s var(--ease-out-quart),transform .2s var(--ease-out-quart);z-index:2}.ledger-actions:before{content:"";position:absolute;left:calc(-1 * (var(--space-sm) + 16px));right:-24px;top:-24px;bottom:-24px;z-index:-1}.ledger-row:hover .ledger-actions,.ledger-row:focus-within .ledger-actions{opacity:1;pointer-events:auto;transform:translateY(-50%) translate(0)}.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)}@media(max-width:1024px)and (min-width:481px){.ledger-actions{left:auto;right:var(--space-sm);margin-left:0;transform:translateY(-50%) translate(4px)}.ledger-row:hover .ledger-actions,.ledger-row:focus-within .ledger-actions{transform:translateY(-50%) translate(0)}.ledger-row:hover .ledger-amount,.ledger-row:focus-within .ledger-amount{opacity:0}}@media(max-width:480px){.ledger-row{grid-template-columns:1fr auto}.ledger-actions{display:none}.ledger-row.is-active .ledger-actions{display:flex}}.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);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)}.budget-detail-card{background:var(--paper-accent);padding:var(--space-xl);border-radius:var(--radius-lg);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}.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 span{font-weight:700;color:var(--ink)}.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);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-header{display:flex;align-items:center;gap:var(--space-md);border-bottom:1px solid var(--rule);padding-bottom: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-header h3{font-family:var(--font-display);font-weight:700;font-size:var(--text-xl);margin-bottom:var(--space-2xs)}.profile-username{color:var(--ink-muted);font-size:var(--text-sm);font-weight:500}.profile-details{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}.profile-details small{color:var(--ink-faint);font-size:var(--text-xs);font-weight:500}.profile-details p{margin:var(--space-2xs) 0 0 0;font-weight:600}.section-title{margin-top:var(--space-xl);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);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);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)}: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);--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);--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{background:var(--paper-raised);padding:var(--space-lg);border-radius:var(--radius-md);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)}.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-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:-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(4){background:var(--brand)}@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__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{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-lg);counter-reset:step}.landing-steps li{background:var(--paper-sunken);border-radius:var(--radius-lg);padding:var(--space-xl);display:flex;flex-direction:column;gap:var(--space-md)}.landing-steps__num{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-full);background:var(--paper-raised);color:var(--brand);font-family:var(--font-display);font-weight:700;font-size:var(--text-md);border:1px solid var(--rule)}.landing-steps h3{font-size:var(--text-md);margin-bottom:var(--space-2xs)}.landing-steps p{color:var(--ink-muted);font-size:var(--text-sm);line-height:1.55;margin:0}@media(max-width:880px){.landing-steps{grid-template-columns:1fr}}.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)}
