@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/1e219c03c996efbd-s.2qo5md4hn_gum.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/b35b0dbffda7f2c4-s.1d9rlgtqyj_-l.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/03bda585a99c6450-s.p.32sris142tqlb.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Fraunces Fallback;src:local(Times New Roman);ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.0%;size-adjust:115.45%}.fraunces_ca873fe6-module__1rc9Oq__className{font-family:Fraunces,Fraunces Fallback;font-style:normal}.fraunces_ca873fe6-module__1rc9Oq__variable{--font-display:"Fraunces", "Fraunces Fallback"}
@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/a342834df7752944-s.3hd2l7bm32o7k.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/d3fe2f289711ac3f-s.1l2zhvq5eocqf.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/58c4895d0a0ef7cc-s.2vhvl9vrvk-va.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/bfc7db5c00d21bc5-s.173xwsdme27n8.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/6ab0db14f70d8ed6-s.13hnt-xgp82zk.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/a343f882a40d2cc9-s.p.1sj6eobyi31rd.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope Fallback;src:local(Arial);ascent-override:103.31%;descent-override:29.07%;line-gap-override:0.0%;size-adjust:103.19%}.manrope_2086aec6-module__U1xg0W__className{font-family:Manrope,Manrope Fallback;font-style:normal}.manrope_2086aec6-module__U1xg0W__variable{--font-body:"Manrope", "Manrope Fallback"}
:root{--bg:#eef3eb;--bg-deep:#dfe8da;--surface:#fbfdf9;--surface-2:#f3f8f0;--text:#243028;--text-muted:#5c6b60;--border:#c9d6c4;--accent:#3f6b4e;--accent-hover:#335842;--accent-soft:#d5e5d8;--sun:#d4923a;--sun-soft:#f5e4c8;--clay:#b86a4f;--success:#3f6b4e;--success-soft:#d5e5d8;--warning:#c4892b;--warning-soft:#f5e4c8;--danger:#a84a3a;--danger-soft:#f3d8d2;--radius:14px;--shadow-1:0 1px 2px #2430280f, 0 8px 24px #2430280a;--shadow-2:0 4px 20px #2430281a;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--step-0:.8125rem;--step-1:.875rem;--step-2:1rem;--step-3:1.25rem;--step-4:1.5625rem;--step-5:1.9375rem;--step-6:2.4375rem;--nav-h:64px;--max:1080px}*{box-sizing:border-box}html,body{min-height:100%;font-family:var(--font-body), system-ui, sans-serif;font-size:var(--step-2);color:var(--text);background:radial-gradient(1200px 600px at 10% -10%, #dce8d6 0%, transparent 55%), radial-gradient(900px 500px at 100% 0%, #f0e4cc 0%, transparent 45%), linear-gradient(180deg, var(--bg) 0%, #e7efe3 100%);background-attachment:fixed;margin:0;padding:0;line-height:1.55}body:before{content:"";pointer-events:none;opacity:.35;z-index:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160' viewBox='0 0 160 160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");position:fixed;inset:0}a{color:var(--accent);text-decoration:none}a:hover{color:var(--accent-hover)}h1,h2,h3,.display{font-family:var(--font-display), Georgia, serif;letter-spacing:-.015em;margin:0;font-weight:700;line-height:1.2}h1{font-size:var(--step-6)}h2{font-size:var(--step-4)}h3{font-size:var(--step-3)}p{margin:0}button,input,select,textarea{font:inherit}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{z-index:1;flex-direction:column;min-height:100vh;display:flex;position:relative}.container{width:min(100% - 32px, var(--max));margin-inline:auto}.topnav{z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);background:#eef3ebdb;position:sticky;top:0}.topnav-inner{height:var(--nav-h);justify-content:space-between;align-items:center;gap:var(--space-4);display:flex}.brand{align-items:center;line-height:0;display:inline-flex}.brand-logo{object-fit:contain;width:auto;height:40px;display:block}.brand-logo-hero{object-fit:contain;width:min(320px,72vw);height:auto;display:block}.nav-links{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.nav-links a{color:var(--text-muted);font-size:var(--step-1);border-radius:999px;padding:8px 12px;font-weight:600;transition:background .15s,color .15s,transform .15s}.nav-links a:hover,.nav-links a[aria-current=page]{background:var(--accent-soft);color:var(--accent-hover)}.nav-links a:active{transform:translateY(1px)}.page{padding:var(--space-5) 0 var(--space-8);flex:1}.page-header{justify-content:space-between;align-items:end;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap;animation:.4s ease-out both fade-up;display:flex}.page-header p{color:var(--text-muted);margin-top:var(--space-2);max-width:48ch}.stack{gap:var(--space-4);display:grid}.stack-lg{gap:var(--space-5);display:grid}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-1);padding:var(--space-5);animation:.45s ease-out both fade-up}.panel-quiet{border:1px dashed var(--border);border-radius:var(--radius);padding:var(--space-5);background:0 0}.kpi-grid{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}@media (min-width:800px){.kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4);box-shadow:var(--shadow-1);animation:.4s ease-out both fade-up}.kpi:nth-child(2){animation-delay:60ms}.kpi:nth-child(3){animation-delay:.12s}.kpi:nth-child(4){animation-delay:.18s}.kpi-label{color:var(--text-muted);font-size:var(--step-0);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.kpi-value{margin-top:var(--space-2);font-family:var(--font-display), Georgia, serif;font-size:var(--step-4);font-variant-numeric:tabular-nums;letter-spacing:-.02em}.btn{cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 18px;font-weight:700;transition:background .15s,transform .15s,border-color .15s,box-shadow .15s;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:focus-visible,.input:focus-visible,.select:focus-visible,.textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-primary{background:var(--accent);color:#fff;box-shadow:0 8px 18px #3f6b4e38}.btn-primary:hover{background:var(--accent-hover);color:#fff}.btn-secondary{background:var(--sun-soft);color:var(--text);border-color:#e2c48f}.btn-secondary:hover{color:var(--text);background:#f0d7b0}.btn-ghost{color:var(--text-muted);background:0 0;border-color:#0000}.btn-danger{background:var(--danger-soft);color:var(--danger);border-color:#0000}.btn-sm{min-height:36px;font-size:var(--step-1);padding:0 12px}.form-grid{gap:var(--space-4);display:grid}@media (min-width:720px){.form-grid.two{grid-template-columns:1fr 1fr}}.field{gap:6px;display:grid}.field label{font-size:var(--step-1);color:var(--text);font-weight:600}.field .hint{color:var(--text-muted);font-size:var(--step-0)}.input,.select,.textarea{border:1px solid var(--border);width:100%;min-height:44px;color:var(--text);background:#fff;border-radius:12px;padding:10px 12px}.textarea{resize:vertical;min-height:96px}.field-error{color:var(--danger);font-size:var(--step-0);font-weight:600}.alert{font-size:var(--step-1);border-radius:12px;padding:12px 14px;font-weight:600}.alert-error{background:var(--danger-soft);color:var(--danger)}.alert-ok{background:var(--success-soft);color:var(--success)}.list{gap:0;display:grid}.list-row{gap:var(--space-3);border-bottom:1px solid var(--border);grid-template-columns:1fr auto;align-items:center;padding:14px 0;display:grid}.list-row:last-child{border-bottom:0}.list-meta{color:var(--text-muted);font-size:var(--step-0)}.amount{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.amount-pos{color:var(--accent)}.amount-neg{color:var(--clay)}.badge{background:var(--accent-soft);min-height:24px;color:var(--accent-hover);border-radius:999px;align-items:center;padding:0 10px;font-size:12px;font-weight:700;display:inline-flex}.badge-warn{background:var(--warning-soft);color:#8a5d12}.badge-danger{background:var(--danger-soft);color:var(--danger)}.progress{background:var(--bg-deep);border-radius:999px;height:10px;overflow:hidden}.progress>span{border-radius:inherit;background:linear-gradient(90deg, var(--accent), #6f9a74);transform-origin:0;width:100%;height:100%;transition:transform .35s;display:block;transform:scaleX(0)}.progress.over>span{background:linear-gradient(90deg, var(--clay), #d08a6d)}.month-switch{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-1);border-radius:999px;align-items:center;gap:8px;padding:4px;display:inline-flex}.month-switch a,.month-switch span{min-width:40px;min-height:40px;color:var(--text);border-radius:999px;justify-content:center;align-items:center;padding:0 12px;font-weight:700;display:inline-flex}.month-switch a:hover{background:var(--accent-soft)}.cat-thumb{object-fit:cover;background:var(--accent-soft);border:1px solid var(--border);border-radius:12px;flex-shrink:0;width:44px;height:44px}.cat-thumb.placeholder{color:var(--accent);font-family:var(--font-display), Georgia, serif;place-items:center;font-weight:700;display:grid}.row-with-media{align-items:center;gap:12px;min-width:0;display:flex}.calendar{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.calendar-head{text-align:center;font-size:var(--step-0);color:var(--text-muted);padding:6px 0;font-weight:700}.calendar-day{aspect-ratio:1;color:var(--text);font-size:var(--step-1);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:12px;place-content:center;gap:2px;font-weight:600;transition:background .15s,transform .15s;display:grid}.calendar-day:hover{background:var(--surface)}.calendar-day.has-spend{background:var(--surface);border-color:var(--border)}.calendar-day.selected{background:var(--accent);color:#fff;border-color:var(--accent)}.calendar-day .dot-row{justify-content:center;gap:3px;min-height:5px;display:flex}.calendar-day .dot,.calendar-legend .dot{border-radius:50%;flex-shrink:0;width:5px;height:5px;display:inline-block}.calendar-day .dot.kind-fixed,.calendar-legend .dot.kind-fixed{background:var(--accent)}.calendar-day .dot.kind-variable,.calendar-legend .dot.kind-variable{background:var(--clay)}.calendar-day .dot.kind-guilty_pleasure,.calendar-legend .dot.kind-guilty_pleasure{background:var(--sun)}.calendar-day.selected .dot{box-shadow:0 0 0 1px #ffffff8c}.calendar-legend{font-size:var(--step-0);color:var(--text-muted);flex-wrap:wrap;gap:12px 16px;margin:0;padding:0;font-weight:600;list-style:none;display:flex}.calendar-legend li{align-items:center;gap:6px;display:inline-flex}.calendar-compact .calendar{gap:4px}.calendar-compact .calendar-day{font-size:var(--step-0);border-radius:10px}.calendar-compact .calendar-head{padding:2px 0;font-size:.7rem}.note-preview{color:var(--text-muted);font-size:var(--step-1);-webkit-line-clamp:3;white-space:pre-wrap;word-break:break-word;-webkit-box-orient:vertical;margin:0;line-height:1.5;display:-webkit-box;overflow:hidden}textarea.input{resize:vertical;min-height:120px;font-family:inherit;line-height:1.5}.landing{z-index:1;position:relative}.landing-hero{min-height:calc(100dvh - var(--nav-h));align-content:center;gap:var(--space-5);padding:var(--space-7) 0 var(--space-8);display:grid}.landing-hero>*{animation:.45s ease-out both fade-up}.landing-hero>:nth-child(2){animation-delay:70ms}.landing-hero>:nth-child(3){animation-delay:.14s}.landing-hero>:nth-child(4){animation-delay:.21s}.landing-hero .brand-hero-link{width:fit-content;margin-bottom:4px}.landing-hero .brand-logo-hero{filter:drop-shadow(0 8px 24px #3f6b4e1f)}.landing-hero h1{max-width:18ch;font-size:clamp(1.6rem,4vw,2.4rem)}.landing-hero .lead{max-width:42ch;color:var(--text-muted);font-size:var(--step-3)}.cta-row{flex-wrap:wrap;gap:12px;display:flex}.auth-card{width:min(100% - 32px,420px);margin:var(--space-8) auto;padding:var(--space-6);background:var(--surface);border:1px solid var(--border);border-radius:calc(var(--radius) + 4px);box-shadow:var(--shadow-2);animation:.4s ease-out both fade-up}.auth-card h1{font-size:var(--step-5);margin-bottom:var(--space-2)}.auth-card .lead{color:var(--text-muted);margin-bottom:var(--space-5)}.empty{text-align:left;color:var(--text-muted)}.empty strong{color:var(--text);font-family:var(--font-display), Georgia, serif;font-size:var(--step-3);margin-bottom:6px;display:block}.split-actions{flex-wrap:wrap;gap:8px;display:flex}.mobile-nav{display:none}.landing-features{padding:var(--space-7) 0 var(--space-8);gap:var(--space-5);display:grid}.landing-features h2{max-width:18ch}.feature-list{gap:var(--space-5);display:grid}@media (min-width:800px){.feature-list{gap:var(--space-6) var(--space-7);grid-template-columns:1fr 1fr}}.feature-item{padding-top:var(--space-4);border-top:2px solid var(--accent-soft);gap:8px;animation:.4s ease-out both fade-up;display:grid}.feature-item:nth-child(2){animation-delay:60ms}.feature-item:nth-child(3){animation-delay:.12s}.feature-item:nth-child(4){animation-delay:.18s}.feature-item h3{font-size:var(--step-3)}.feature-item p{color:var(--text-muted);max-width:36ch}@media (max-width:860px){.nav-links.desktop{display:none}.mobile-nav{z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--border);padding:6px 8px calc(6px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch;background:#fbfdf9f0;gap:4px;display:flex;position:sticky;bottom:0;overflow-x:auto}.mobile-nav a{text-align:center;min-width:72px;min-height:44px;color:var(--text-muted);border-radius:12px;flex:1 0 auto;justify-content:center;align-items:center;padding:10px 8px;font-size:12px;font-weight:700;display:inline-flex}.mobile-nav a[aria-current=page]{background:var(--accent-soft);color:var(--accent-hover)}}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
