.navbar{background:var(--paper);padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--rule);justify-content:space-between;align-items:center;display:flex;position:relative}.navbar-brand{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);letter-spacing:-.025em;color:var(--ink);align-items:center;gap:.4em;text-decoration:none;display:inline-flex}.navbar-brand:before{content:"";background:var(--brand);width:10px;height:10px;box-shadow:0 0 0 3px var(--brand-soft);border-radius:50%}.navbar-links{gap:var(--space-2xs);align-items:center;display:flex}.navbar-link{color:var(--ink-muted);padding:var(--space-xs) var(--space-md);font-size:var(--text-sm);border-radius:var(--radius-full);font-weight:500;text-decoration:none;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);color:var(--ink-muted);border-radius:var(--radius-full);cursor:pointer;width:36px;height:36px;transition:color .2s, background .2s, transform .4s var(--ease-out-expo);border:none;justify-content:center;align-items:center;display:inline-flex}.navbar-theme:hover{color:var(--ink);background:var(--paper-raised);transform:rotate(24deg)}.navbar-logout{color:var(--ink-faint);cursor:pointer;font-family:var(--font-body);font-size:var(--text-sm);padding:var(--space-xs) var(--space-md);border-radius:var(--radius-full);background:0 0;border:none;align-items:center;font-weight:500;transition:color .2s,background-color .2s;display:flex}.navbar-logout:hover{color:var(--danger);background:var(--danger-soft)}.navbar-hamburger{background:var(--paper-sunken);color:var(--ink);cursor:pointer;border-radius:var(--radius-full);border:none;justify-content:center;align-items:center;width:36px;height:36px;display:flex}.navbar-mobile-menu{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);padding:var(--space-xs);z-index:1000;box-shadow:var(--shadow-lift);flex-direction:column;display:flex;position:absolute}.navbar-mobile-link{color:var(--ink-muted);padding:var(--space-sm) var(--space-md);font-size:var(--text-base);border-radius:var(--radius-sm);font-weight:500;text-decoration:none}.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{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);background:0 0;border:none}.navbar-mobile-logout:hover{background:var(--danger-soft)}.mobile-only{align-items:center;gap:var(--space-xs);display:none}@media (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);text-align:center;align-items:center;gap:var(--space-xs);flex-direction:column;display:flex;position:relative;overflow:hidden}.hero-label{font-size:var(--text-sm);color:var(--ink-muted);align-items:center;gap:var(--space-xs);justify-content:center;font-weight:500;display:inline-flex}.hero-label .dot{background:var(--brand);border-radius:50%;width:6px;height:6px;display:inline-block}.hero-amount{font-family:var(--font-display);font-weight:700;font-size:var(--text-hero);letter-spacing:-.04em;color:var(--ink);font-feature-settings:"tnum", "lnum";font-variant-numeric:tabular-nums;white-space:nowrap;text-align:center;line-height:1}.hero-amount .currency{color:var(--ink-muted);vertical-align:.5em;letter-spacing:0;margin-right:.2em;font-size:.42em;font-weight:500}.hero-amount.hidden{color:var(--ink-faint);letter-spacing:.05em}.hero-eye{top:var(--space-md);right:var(--space-md);background:var(--paper-raised);border:1.5px solid var(--rule-strong);color:var(--ink);cursor:pointer;border-radius:var(--radius-full);width:38px;height:38px;box-shadow:var(--shadow-card);z-index:1;justify-content:center;align-items:center;transition:color .2s,background .2s,border-color .2s,box-shadow .2s;display:inline-flex;position:absolute}.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 (width<=480px){.hero{padding:var(--space-lg);margin:var(--space-md) 0 var(--space-lg)}}.tabs-wrap{margin:0 0 var(--space-lg);justify-content:center;display:flex}.tabs{gap:var(--space-2xs);background:var(--paper-sunken);padding:var(--space-2xs);border-radius:var(--radius-full);display:inline-flex}.tab{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);background:0 0;border:none;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 oklch(0% 0 0/.08)}.category-pills{gap:var(--space-xs);padding:var(--space-2xs) 0 var(--space-md);margin-bottom:var(--space-md);scrollbar-width:thin;display:flex;overflow-x:auto}.category-pill{padding:var(--space-xs) var(--space-md);border-radius:var(--radius-full);background:var(--paper-sunken);color:var(--ink-muted);cursor:pointer;font-family:var(--font-body);font-size:var(--text-sm);white-space:nowrap;transition:all .2s var(--ease-out-quart);border:none;font-weight:500}.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{border:1px dashed var(--rule-strong);color:var(--ink-faint);padding:var(--space-xs) var(--space-sm);background:0 0;justify-content:center;align-items:center;min-width:36px;display:flex}.category-pill.add-btn:hover{color:var(--brand);border-color:var(--brand);background:var(--brand-soft)}.section-header{margin:var(--space-xl) 0 var(--space-md);justify-content:space-between;align-items:center;gap:var(--space-md);display:flex}.section-header h2{font-family:var(--font-display);font-weight:700;font-size:var(--text-lg);letter-spacing:-.02em;color:var(--ink)}.ledger{gap:var(--space-2xs);flex-direction:column;display:flex}.ledger-group{display:contents}.ledger-date{padding:var(--space-md) var(--space-sm) var(--space-xs);margin-top:var(--space-xs);justify-content:space-between;align-items:baseline;display:flex}.ledger-date span{font-family:var(--font-display);font-size:var(--text-sm);color:var(--ink);font-weight:600}.ledger-date small{font-family:var(--font-body);font-size:var(--text-sm);color:var(--ink-faint);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:500}.ledger-row{gap:var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);background:var(--paper-raised);transition:background .18s var(--ease-out-quart), transform .18s;grid-template-columns:1fr auto;align-items:center;display:grid;position:relative}.ledger-row:hover{background:var(--paper-accent)}.cat-dot{width:40px;height:40px;font-weight:700;font-size:var(--text-sm);color:var(--ink);background:var(--brand-soft);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.ledger-body{flex-direction:column;gap:2px;min-width:0;display:flex}.ledger-desc{font-size:var(--text-base);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.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);margin-right:.05em;font-weight:500}.ledger-actions{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;display:flex;position:absolute;top:50%;left:100%;transform:translateY(-50%)translate(-8px)}.ledger-actions:before{content:"";left:calc(-1 * (var(--space-sm) + 16px));z-index:-1;position:absolute;top:-24px;bottom:-24px;right:-24px}.ledger-row:hover .ledger-actions,.ledger-row:focus-within .ledger-actions{opacity:1;pointer-events:auto;transform:translateY(-50%)translate(0)}.action-btn{cursor:pointer;padding:var(--space-xs);color:var(--ink-muted);border-radius:var(--radius-full);background:0 0;border:none;justify-content:center;align-items:center;width:32px;height:32px;transition:color .15s,background .15s;display:flex}.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 (width<=1024px) and (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 (width<=480px){.ledger-row{grid-template-columns:1fr auto}.ledger-actions{display:none}.ledger-row.is-active .ledger-actions{display:flex}}.budget-list{gap:var(--space-md);grid-template-columns:repeat(2,1fr);display:grid}@media (width<=560px){.budget-list{grid-template-columns:1fr}}.budget-card{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;flex-direction:column;display:flex;position:relative}.budget-card:hover{box-shadow:var(--shadow-lift);transform:translateY(-2px)}@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{box-shadow:var(--shadow-lift), 0 0 0 1px var(--danger-soft);animation:.4s linear infinite budget-shake-strong}@media (prefers-reduced-motion:reduce){.budget-card[data-state=warn]:hover,.budget-card[data-state=danger]:hover{animation:none}}.budget-card-top{justify-content:space-between;align-items:flex-start;gap:var(--space-sm);display:flex}.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);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;font-weight:600}.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{align-items:baseline;gap:var(--space-xs);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;display:flex}.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{background:var(--paper-sunken);border-radius:var(--radius-full);height:10px;margin-top:var(--space-2xs);overflow:hidden}.budget-bar-fill{background:var(--brand);border-radius:var(--radius-full);height:100%;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{font-size:var(--text-sm);color:var(--ink-muted);justify-content:space-between;display:flex}.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);height:10px;overflow:hidden}.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);color:var(--ink-muted);cursor:pointer;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);border:none;font-weight:500;display:inline-flex;box-shadow:0 1px 2px oklch(0% 0 0/.08)}.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);align-items:baseline;gap:var(--space-xs);font-feature-settings:"tnum";display:flex}.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{color:var(--ink);font-weight:700}.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{font-size:var(--text-md);color:var(--ink);margin:0;font-weight:600}.empty-state .empty-hint{margin-top:var(--space-xs);font-size:var(--text-sm);color:var(--ink-muted);font-weight:400;display:block}.pagination-controls{justify-content:space-between;align-items:center;gap:var(--space-md);margin-top:var(--space-xl);padding-top:var(--space-md);display:flex}.pagination-btn{background:var(--paper-raised);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);border:none;font-weight:500;transition:background .15s,color .15s;box-shadow:0 1px 2px oklch(0% 0 0/.06)}.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:0 0}.pagination-info{color:var(--ink-muted);font-size:var(--text-sm);font-feature-settings:"tnum";font-weight:500}.pagination-summary{text-align:center;margin-top:var(--space-sm);color:var(--ink-faint);font-size:var(--text-xs)}.modal-overlay{background:color-mix(in oklab, var(--paper-sunken) 75%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:1000;padding:var(--space-md);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.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{margin-bottom:var(--space-lg);justify-content:space-between;align-items:center;display:flex}.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);color:var(--ink-muted);cursor:pointer;border-radius:var(--radius-full);border:none;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;line-height:1;display:flex}.modal-close:hover{color:var(--ink);background:var(--paper)}.modal-form{gap:var(--space-sm);flex-direction:column;display:flex}.expense-modal__category-row{gap:var(--space-xs);align-items:stretch;display:flex}.expense-modal__category-row .input-dark{flex:1;margin-bottom:0}.btn-icon{border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;width:42px;padding:0;display:inline-flex}.profile-card{gap:var(--space-md);flex-direction:column;display:flex}.profile-header{align-items:center;gap:var(--space-md);border-bottom:1px solid var(--rule);padding-bottom:var(--space-md);display:flex}.profile-avatar{background:var(--brand);width:72px;height:72px;color:var(--brand-ink);font-family:var(--font-display);border-radius:50%;justify-content:center;align-items:center;font-size:28px;font-weight:700;display:flex}.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{gap:var(--space-md);grid-template-columns:1fr 1fr;display:grid}.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{gap:var(--space-md);margin-bottom:var(--space-md);grid-template-columns:1fr 1fr;display:grid}.stats-row--money .stat-card{background:var(--paper-accent)}@media (width<=560px){.stats-row{grid-template-columns:1fr}}.stats-grid{gap:var(--space-md);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.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);margin:var(--space-xs) 0;color:var(--ink);font-weight:700}.top-category-card p{color:var(--danger);font-feature-settings:"tnum";margin:0;font-weight:700}.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{box-shadow:var(--shadow-lift);transform:translateY(-2px)}: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]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:oklch(97.5% .008 150);--paper-raised:oklch(99.5% .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(98.5% .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(50% .04 150/.08), 0 8px 24px -12px oklch(35% .05 150/.14);--shadow-lift:0 2px 4px oklch(50% .04 150/.1), 0 16px 40px -16px oklch(35% .05 150/.22)}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--paper:oklch(18.5% .014 150);--paper-raised:oklch(23.5% .016 150);--paper-sunken:oklch(15.5% .012 150);--paper-accent:oklch(27% .03 150);--ink:oklch(95.5% .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(30% .05 152);--brand-hover:oklch(80% .115 152);--brand-ink:oklch(18% .014 150);--ok:oklch(78% .14 138);--ok-soft:oklch(30% .05 138);--warn:oklch(80% .14 80);--warn-soft:oklch(30% .04 80);--danger:oklch(72% .17 28);--danger-soft:oklch(30% .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);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);line-height:1.5}h1,h2,h3,h4{font-family:var(--font-display);letter-spacing:-.015em;margin:0;font-weight:700}a{color:inherit}button{font-family:inherit}::selection{background:color-mix(in oklab, var(--brand) 35%, transparent)}.container{max-width:920px;padding:var(--space-lg) var(--space-lg) var(--space-3xl);margin:0 auto}@media (width<=640px){.container{padding:var(--space-md) var(--space-md) var(--space-2xl)}}.btn{background:var(--brand);color:var(--brand-ink);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;justify-content:center;align-items:center;gap:var(--space-xs);transition:transform .15s var(--ease-out-quart), background-color .2s, box-shadow .2s;border:none;text-decoration:none;display:inline-flex;box-shadow:0 1px 2px oklch(0% 0 0/.08)}.btn:hover{background:var(--brand-hover);box-shadow:var(--shadow-card);transform:translateY(-1px)}.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);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);box-sizing:border-box;width:100%;margin-bottom:var(--space-sm);font-family:var(--font-body);font-size:var(--text-base);border:1px solid #0000;transition:border-color .15s,background .15s}.input-dark:focus{border-color:var(--brand);background:var(--paper-raised);outline:none}.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{box-shadow:var(--shadow-lift);background:var(--paper-accent);transform:translateY(-2px)}.card.clickable:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.custom-scrollbar::-webkit-scrollbar{width:6px;height:6px}.custom-scrollbar::-webkit-scrollbar-track{background:0 0}.custom-scrollbar::-webkit-scrollbar-thumb{background:var(--rule-strong);border-radius:var(--radius-full)}.login-wrapper{justify-content:center;align-items:center;gap:var(--space-lg);background:var(--paper);min-height:100vh;color:var(--ink);padding:var(--space-lg);font-family:var(--font-body);flex-direction:column;display:flex}.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{font-family:var(--font-display);font-weight:700;font-size:var(--text-2xl);color:var(--ink);letter-spacing:-.04em;align-items:center;gap:.55em;line-height:1;display:inline-flex}.login-brand--dot:before{content:"";background:var(--brand);width:22px;height:22px;box-shadow:0 0 0 5px var(--brand-soft);border-radius:50%}.login-title{margin:0 0 var(--space-xs);font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:-.025em;color:var(--ink);font-weight:700}.login-subtitle{margin:0 0 var(--space-xl);color:var(--ink-muted);font-size:var(--text-base);line-height:1.55}.login-form{gap:var(--space-md);flex-direction:column;display:flex}.login-input-group{gap:var(--space-2xs);flex-direction:column;display:flex}.login-input-label{font-size:var(--text-sm);color:var(--ink-muted);margin-left:var(--space-2xs);font-weight:500}.login-input{box-sizing:border-box;background:var(--paper-sunken);width:100%;color:var(--ink);padding:var(--space-md) var(--space-lg);border-radius:var(--radius-sm);font-size:var(--text-base);font-family:var(--font-body);border:1px solid #0000;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{-webkit-text-fill-color:var(--ink);-webkit-box-shadow:0 0 0 1000px var(--paper-sunken) inset;transition:background-color 5000s ease-in-out}.login-input:-webkit-autofill:hover{-webkit-text-fill-color:var(--ink);-webkit-box-shadow:0 0 0 1000px var(--paper-sunken) inset;transition:background-color 5000s ease-in-out}.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}.login-button{background:var(--brand);color:var(--brand-ink);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);border:none;box-shadow:0 1px 2px oklch(0% 0 0/.08)}.login-button:hover:not(:disabled){background:var(--brand-hover);box-shadow:var(--shadow-card);transform:translateY(-1px)}.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);font-weight:600;text-decoration:none}.register-link a:hover{text-decoration:underline}.login-password-field{position:relative}.login-password-field .login-input{padding-right:48px}.login-password-toggle{color:var(--ink-faint);cursor:pointer;padding:var(--space-xs);border-radius:var(--radius-full);background:0 0;border:none;align-items:center;transition:color .2s,background .2s;display:flex;position:absolute;top:50%;right:14px;transform:translateY(-50%)}.login-password-toggle:hover{color:var(--ink);background:var(--paper-sunken)}.login-row{gap:var(--space-sm);display:flex}.login-row>*{flex:1}.login-icon-circle{background:var(--brand-soft);width:72px;height:72px;color:var(--brand);margin-bottom:var(--space-lg);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.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);border-radius:var(--radius-full);cursor:pointer;width:40px;height:40px;transition:color .2s, background .2s, transform .4s var(--ease-out-expo);justify-content:center;align-items:center;display:inline-flex;box-shadow:0 1px 2px oklch(0% 0 0/.08)}.theme-toggle:hover{color:var(--ink);background:var(--paper);transform:rotate(24deg)}.theme-toggle--floating{top:var(--space-lg);right:var(--space-lg);z-index:10;position:fixed}.auth-top-actions{top:var(--space-lg);right:var(--space-lg);z-index:10;align-items:center;gap:var(--space-xs);display:flex;position:fixed}.auth-home-btn{background:var(--paper-raised);border:1px solid var(--rule);color:var(--ink-muted);border-radius:var(--radius-full);cursor:pointer;justify-content:center;align-items:center;width:40px;height:40px;text-decoration:none;transition:color .2s,background .2s,border-color .2s;display:inline-flex;box-shadow:0 1px 2px oklch(0% 0 0/.08)}.auth-home-btn:hover{color:var(--brand);background:var(--paper);border-color:var(--brand)}@media (width<=480px){.theme-toggle--floating,.auth-top-actions{top:var(--space-md);right:var(--space-md)}.login-box{padding:var(--space-xl) var(--space-lg);border-radius:var(--radius-md)}}.landing{background:var(--paper);min-height:100vh;color:var(--ink);font-family:var(--font-body);flex-direction:column;display:flex}.landing-nav{justify-content:space-between;align-items:center;gap:var(--space-md);width:100%;max-width:1120px;padding:var(--space-lg);margin:0 auto;display:flex}.landing-brand{align-items:center;gap:var(--space-sm);font-family:var(--font-display);font-weight:700;font-size:var(--text-md);letter-spacing:-.03em;display:inline-flex}.landing-brand__dot{background:var(--brand);width:14px;height:14px;box-shadow:0 0 0 4px var(--brand-soft);border-radius:50%}.landing-nav__links{gap:var(--space-lg);display:flex}.landing-nav__links a{color:var(--ink-muted);font-size:var(--text-sm);font-weight:500;text-decoration:none;transition:color .15s}.landing-nav__links a:hover{color:var(--ink)}.landing-nav__actions{align-items:center;gap:var(--space-sm);display:flex}.landing-nav__login{color:var(--ink-muted);font-size:var(--text-sm);padding:var(--space-xs) var(--space-sm);font-weight:600;text-decoration:none}.landing-nav__login:hover{color:var(--ink)}@media (width<=720px){.landing-nav__links{display:none}}.landing-hero{width:100%;max-width:1120px;padding:var(--space-2xl) var(--space-lg) var(--space-3xl);gap:var(--space-3xl);grid-template-columns:1.15fr 1fr;align-items:center;margin:0 auto;display:grid}.landing-eyebrow{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);width:fit-content;margin-bottom:var(--space-lg);grid-column:1/-1;font-weight:600;display:inline-flex}.landing-hero__title{font-size:var(--text-hero);letter-spacing:-.03em;margin-bottom:var(--space-lg);grid-column:1;max-width:14ch;font-weight:700;line-height:1.02}.landing-hero__accent{color:var(--brand)}.landing-hero__subtitle{color:var(--ink-muted);font-size:var(--text-md);max-width:52ch;margin:0 0 var(--space-xl);grid-column:1;line-height:1.55}.landing-hero__ctas{align-items:center;gap:var(--space-md);flex-wrap:wrap;grid-column:1;display:flex}.landing-cta{padding:var(--space-md) var(--space-xl);font-size:var(--text-base)}.landing-cta-ghost{color:var(--ink-muted);font-weight:600;font-size:var(--text-sm);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-full);text-decoration:none;transition:color .15s,background .15s}.landing-cta-ghost:hover{color:var(--ink);background:var(--paper-sunken)}.landing-hero__preview{grid-area:2/2/span 3;justify-content:center;align-items:center;display:flex}.landing-preview-card{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-xl);width:100%;max-width:360px;padding:var(--space-xl);box-shadow:var(--shadow-lift);transform:rotate(-1.2deg)}.landing-preview-card__header{color:var(--ink-muted);font-size:var(--text-sm);margin-bottom:var(--space-sm);justify-content:space-between;align-items:center;display:flex}.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);letter-spacing:-.03em;margin-bottom:var(--space-lg);font-weight:700}.landing-preview-bars{align-items:flex-end;gap:var(--space-xs);height:96px;display:flex}.landing-preview-bars span{background:var(--brand-soft);border-radius:var(--radius-xs);flex:1;min-height:12px}.landing-preview-bars span:nth-child(4){background:var(--brand)}@media (width<=880px){.landing-hero{gap:var(--space-xl);padding-bottom:var(--space-2xl);grid-template-columns:1fr}.landing-hero__preview{grid-area:auto/1}.landing-hero__title{max-width:20ch}}.landing-section{width:100%;max-width:1120px;padding:var(--space-3xl) var(--space-lg);margin:0 auto}.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);margin:0;line-height:1.55}.landing-features{gap:var(--space-lg);grid-template-columns:repeat(3,1fr);display:grid}.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{box-shadow:var(--shadow-card);border-color:var(--rule-strong);transform:translateY(-2px)}.landing-feature__icon{border-radius:var(--radius-md);background:var(--brand-soft);width:44px;height:44px;color:var(--brand);margin-bottom:var(--space-md);justify-content:center;align-items:center;display:inline-flex}.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);margin:0;line-height:1.55}@media (width<=880px){.landing-features{grid-template-columns:1fr}}.landing-steps{gap:var(--space-lg);counter-reset:step;grid-template-columns:repeat(3,1fr);margin:0;padding:0;list-style:none;display:grid}.landing-steps li{background:var(--paper-sunken);border-radius:var(--radius-lg);padding:var(--space-xl);gap:var(--space-md);flex-direction:column;display:flex}.landing-steps__num{border-radius:var(--radius-full);background:var(--paper-raised);width:36px;height:36px;color:var(--brand);font-family:var(--font-display);font-weight:700;font-size:var(--text-md);border:1px solid var(--rule);justify-content:center;align-items:center;display:inline-flex}.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);margin:0;line-height:1.55}@media (width<=880px){.landing-steps{grid-template-columns:1fr}}.landing-cta-band{width:100%;max-width:1120px;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;align-items:center;gap:var(--space-md);flex-direction:column;display:flex}.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{width:100%;max-width:1120px;padding:var(--space-xl) var(--space-lg) var(--space-2xl);gap:var(--space-sm);color:var(--ink-faint);font-size:var(--text-sm);border-top:1px solid var(--rule);align-items:center;margin:0 auto;display:flex}.landing-footer a{color:var(--ink-muted);text-decoration:none}.landing-footer a:hover{color:var(--ink)}.landing-footer__dot{color:var(--rule-strong)}
