@font-face{font-family:Inter;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/inter-latin-ext.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:Inter;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/inter-latin.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:JetBrains Mono;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/jetbrains-mono-latin-ext.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:JetBrains Mono;font-style:normal;font-weight:400 600;font-display:swap;src:url(/fonts/jetbrains-mono-latin.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}:root{--bg:#f4f4f2;--surface:#fff;--surface-2:#ececea;--surface-3:#f9f9f7;--ink:#0a0a0a;--ink-muted:#6b6b6b;--ink-soft:#a1a1a1;--accent:#ff5a1f;--accent-ink:#fff;--accent-soft:#ffe6da;--positive:#15803d;--positive-soft:#d6f0de;--negative:#dc2626;--negative-soft:#fbe0e0;--warning:#b45309;--warning-soft:#fde9c7;--info:#0f62a8;--info-soft:#dceaf7;--divider:#0a0a0a14;--divider-strong:#0a0a0a24;--shadow-sm:0 1px 2px #0000000a;--shadow-md:0 4px 16px -8px #0000002e;--shadow-lg:0 24px 48px -16px #0000003d;--r-sm:10px;--r-md:14px;--r-lg:20px;--r-xl:28px;--r-pill:999px;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", monospace;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}[data-theme=dark]{--bg:#0b0b0c;--surface:#16161a;--surface-2:#1e1e22;--surface-3:#121215;--ink:#f5f5f4;--ink-muted:#a1a1a1;--ink-soft:#6b6b6b;--accent:#ff7a47;--accent-ink:#1a0a05;--accent-soft:#3d1a0e;--positive:#4ade80;--positive-soft:#0f3d24;--negative:#f87171;--negative-soft:#3d1414;--warning:#facc15;--warning-soft:#3d2e0a;--info:#60a5fa;--info-soft:#102640;--divider:#ffffff14;--divider-strong:#ffffff29;--shadow-sm:0 1px 2px #0006;--shadow-md:0 4px 16px -8px #0009;--shadow-lg:0 24px 48px -16px #000c}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0;padding:0}html,body{background:var(--bg);color:var(--ink);overscroll-behavior:none}body{font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overflow:hidden}button{cursor:pointer;color:inherit;background:0 0;border:0;padding:0;font-family:inherit}input,textarea,select{color:inherit;font-family:inherit}.num{font-feature-settings:"tnum", "cv11";font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono)}.app-screen{background:var(--bg);width:100%;height:100dvh;color:var(--ink);padding-top:var(--safe-top);flex-direction:column;font-size:14px;line-height:1.4;display:flex;position:relative;overflow:hidden}.app-scroll{scrollbar-width:thin;scroll-behavior:smooth;padding-bottom:calc(96px + var(--safe-bottom));flex:1;position:relative;overflow:hidden auto}.app-scroll::-webkit-scrollbar{width:0}.card{background:var(--surface);border:1px solid var(--divider);border-radius:var(--r-lg);padding:16px}.card.flat{border-radius:var(--r-md);padding:12px}.card.lg{border-radius:var(--r-xl);padding:20px}.row{align-items:center;gap:12px;display:flex}.row.between{justify-content:space-between}.col{flex-direction:column;gap:12px;display:flex}.stack-tight{flex-direction:column;gap:4px;display:flex}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);font-size:11px;font-weight:600}.label{color:var(--ink-muted);font-size:13px;font-weight:500}.title-xs{font-size:13px;font-weight:600}.title-sm{font-size:15px;font-weight:600}.title-md{letter-spacing:-.01em;font-size:18px;font-weight:700}.title-lg{letter-spacing:-.02em;font-size:22px;font-weight:700}.title-xl{letter-spacing:-.025em;font-size:28px;font-weight:800}.title-2xl{letter-spacing:-.03em;font-size:34px;font-weight:800}.amount-xl{letter-spacing:-.03em;font-size:36px;font-weight:700}.amount-lg{letter-spacing:-.02em;font-size:24px;font-weight:700}.amount-md{font-size:17px;font-weight:600}.amount-sm{font-size:14px;font-weight:600}.muted{color:var(--ink-muted)}.soft{color:var(--ink-soft)}.pill{border-radius:var(--r-pill);background:var(--surface-2);color:var(--ink);white-space:nowrap;align-items:center;gap:6px;padding:5px 10px;font-size:12px;font-weight:600;display:inline-flex}.pill.pos{background:var(--positive-soft);color:var(--positive)}.pill.neg{background:var(--negative-soft);color:var(--negative)}.pill.warn{background:var(--warning-soft);color:var(--warning)}.pill.info{background:var(--info-soft);color:var(--info)}.pill.accent{background:var(--accent-soft);color:var(--accent)}.pill.outline{border:1px solid var(--divider-strong);background:0 0}.chip{border-radius:var(--r-pill);background:var(--surface);color:var(--ink);border:1px solid var(--divider);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:500;transition:all .15s;display:inline-flex}.chip:hover{border-color:var(--divider-strong)}.chip.active{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn{border-radius:var(--r-pill);background:var(--ink);color:var(--bg);justify-content:center;align-items:center;gap:8px;padding:14px 20px;font-size:15px;font-weight:600;transition:transform .12s,opacity .12s;display:inline-flex}.btn:active{transform:scale(.97)}.btn.accent{background:var(--accent);color:var(--accent-ink)}.btn.ghost{background:var(--surface-2);color:var(--ink)}.btn.outline{border:1px solid var(--divider-strong);color:var(--ink);background:0 0}.btn.block{width:100%}.btn.sm{padding:8px 14px;font-size:13px}.btn[disabled]{opacity:.4;pointer-events:none}.icon-btn{background:var(--surface-2);width:40px;height:40px;color:var(--ink);border-radius:50%;justify-content:center;align-items:center;transition:background .15s;display:inline-flex}.icon-btn:hover{background:var(--divider-strong)}.icon-btn.ghost{background:0 0}.bottom-nav{left:0;right:0;bottom:calc(16px + var(--safe-bottom));background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(16px);border:1px solid var(--divider);border-radius:var(--r-pill);box-shadow:var(--shadow-md);z-index:50;justify-content:space-around;margin:0 16px;padding:8px;display:flex;position:absolute}.bottom-nav button{height:48px;color:var(--ink-soft);border-radius:var(--r-pill);flex:1;justify-content:center;align-items:center;gap:6px;font-size:12px;font-weight:600;transition:all .2s;display:flex}.bottom-nav button.active{background:var(--ink);color:var(--bg)}.bottom-nav button .nav-label{display:none}.bottom-nav button.active .nav-label{display:inline}.bottom-nav-add{background:var(--accent);width:56px;height:56px;color:var(--accent-ink);border-radius:50%;flex:0 0 56px;justify-content:center;align-self:center;align-items:center;margin:0 4px;transition:transform .15s;display:flex;transform:translateY(-12px);box-shadow:0 6px 18px -4px #ff5a1f80}.bottom-nav-add:active{transform:translateY(-12px)scale(.94)}.fab{right:20px;bottom:calc(88px + var(--safe-bottom));background:var(--accent);width:56px;height:56px;color:var(--accent-ink);z-index:40;border-radius:50%;justify-content:center;align-items:center;transition:transform .15s;display:flex;position:absolute;box-shadow:0 8px 24px -4px #ff5a1f80}.fab:active{transform:scale(.93)}.list{flex-direction:column;display:flex}.list-item{border-bottom:1px solid var(--divider);align-items:center;gap:12px;padding:12px 0;display:flex}.list-item:last-child{border-bottom:0}.list-item .li-text{flex:1;min-width:0}.list-item .li-title{color:var(--ink);white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.list-item .li-sub{color:var(--ink-muted);font-size:12px}.list-item .li-amount{color:var(--ink);font-variant-numeric:tabular-nums;font-size:15px;font-weight:600}.list-item .li-amount.pos{color:var(--positive)}.list-item .li-amount.neg{color:var(--ink)}.cat-icon{border-radius:var(--r-md);background:var(--surface-2);width:40px;height:40px;color:var(--ink);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.cat-icon.lg{border-radius:var(--r-md);width:48px;height:48px}.cat-icon.sm{border-radius:10px;width:32px;height:32px}.progress{background:var(--surface-2);border-radius:999px;height:6px;position:relative;overflow:hidden}.progress>span{background:var(--ink);border-radius:999px;height:100%;transition:width .6s cubic-bezier(.4,0,.2,1);display:block}.progress.accent>span{background:var(--accent)}.progress.pos>span{background:var(--positive)}.progress.neg>span{background:var(--negative)}.progress.warn>span{background:var(--warning)}.swipe-wrap{background:var(--surface);position:relative;overflow:hidden}.swipe-action{color:#fff;align-items:center;gap:8px;width:50%;padding:0 20px;font-size:13px;font-weight:600;display:flex;position:absolute;top:0;bottom:0}.swipe-action.left{background:var(--info);justify-content:flex-start;left:0}.swipe-action.right{background:var(--negative);justify-content:flex-end;right:0}.swipe-content{background:var(--surface);z-index:1;transition:transform .25s cubic-bezier(.4,0,.2,1);position:relative}.sheet-backdrop{z-index:99;opacity:0;background:#00000073;animation:.2s forwards fadeIn;position:absolute;inset:0}.sheet{background:var(--surface);border-radius:var(--r-xl) var(--r-xl) 0 0;z-index:100;padding:12px 20px calc(28px + var(--safe-bottom));max-height:88%;animation:.3s cubic-bezier(.4,0,.2,1) forwards slideUp;position:absolute;bottom:0;left:0;right:0;overflow-y:auto;transform:translateY(100%)}.sheet-handle{background:var(--divider-strong);border-radius:2px;width:40px;height:4px;margin:4px auto 16px}@keyframes fadeIn{to{opacity:1}}@keyframes slideUp{to{transform:translateY(0)}}.sheet-backdrop.closing{animation:.22s forwards fadeOut}.sheet.closing{animation:.26s cubic-bezier(.4,0,.2,1) forwards slideDown}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideDown{0%{transform:translateY(0)}to{transform:translateY(100%)}}.input-group{flex-direction:column;gap:6px;display:flex}.input-group label{color:var(--ink-muted);font-size:12px;font-weight:600}.input,.select,.textarea{background:var(--surface-2);border-radius:var(--r-md);width:100%;color:var(--ink);border:1px solid #0000;outline:none;padding:14px 16px;font-size:16px;font-weight:500;transition:border-color .15s,background .15s}.input:focus,.select:focus,.textarea:focus{border-color:var(--ink);background:var(--surface)}.input.error{border-color:var(--negative)}.input.big{letter-spacing:-.02em;text-align:center;background:0 0;padding:8px 4px;font-size:36px;font-weight:700}.chart-svg{width:100%;display:block}.onb{padding:24px;padding-bottom:calc(24px + var(--safe-bottom));flex-direction:column;flex:1;display:flex;overflow-y:auto}.onb-progress{gap:6px;margin-bottom:24px;display:flex}.onb-progress>span{background:var(--surface-2);border-radius:999px;flex:1;height:3px}.onb-progress>span.done{background:var(--ink)}.onb-progress>span.active{background:var(--accent)}@keyframes pop{0%{opacity:0;transform:scale(.85)}60%{opacity:1;transform:scale(1.08)}to{transform:scale(1)}}.pop{animation:.35s cubic-bezier(.4,0,.2,1) backwards pop}.empty-state{text-align:center;color:var(--ink-muted);padding:32px 20px}.empty-state .empty-icon{background:var(--surface-2);width:64px;height:64px;color:var(--ink-soft);border-radius:20px;justify-content:center;align-items:center;margin:0 auto 16px;display:flex}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:none}}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.fade-up{animation:.35s cubic-bezier(.4,0,.2,1) backwards fadeUp}.screen-wrap{flex-direction:column;flex:1;min-height:0;animation:.22s backwards fadeUp;display:flex}.theme-anim,.theme-anim *,.theme-anim :before,.theme-anim :after{transition:background-color .3s,border-color .3s,color .3s,fill .3s!important}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.toast{left:16px;right:16px;bottom:calc(96px + var(--safe-bottom));background:var(--ink);color:var(--bg);border-radius:var(--r-md);z-index:200;box-shadow:var(--shadow-lg);align-items:center;gap:10px;padding:14px 18px;font-size:14px;font-weight:500;animation:.25s fadeUp;display:flex;position:absolute}.toast.toast-out{animation:.3s forwards toastOut}@keyframes toastOut{to{opacity:0;transform:translateY(6px)}}.notif-dot{background:var(--accent);border:2px solid var(--surface);border-radius:50%;width:8px;height:8px;position:absolute;top:4px;right:4px}.section-pad{padding:16px 20px}.section-pad-x{padding-left:20px;padding-right:20px}.section-head{justify-content:space-between;align-items:baseline;padding:0 20px 12px;display:flex}.section-head .title-md{font-size:16px}.section-head a{color:var(--ink-muted);font-size:13px;font-weight:600}.appbar{align-items:center;gap:12px;padding:12px 20px 4px;display:flex}.appbar .greeting{flex-direction:column;flex:1;display:flex}.appbar .greeting .hi{color:var(--ink-muted);font-size:13px}.appbar .greeting .name{font-size:17px;font-weight:700}.avatar{background:linear-gradient(135deg, var(--accent) 0%, #c03b0e 100%);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:40px;height:40px;font-size:14px;font-weight:700;display:flex;position:relative}.stat-large .stat-label{color:var(--ink-muted);margin-bottom:6px;font-size:13px}.stat-large .stat-val{letter-spacing:-.025em;color:var(--ink);font-size:32px;font-weight:800}.stat-large .stat-meta{color:var(--ink-muted);margin-top:4px;font-size:12px}.ring-wrap{display:inline-block;position:relative}.ring-text{flex-direction:column;justify-content:center;align-items:center;font-weight:700;display:flex;position:absolute;inset:0}.ai-card{background:linear-gradient(135deg, var(--ink) 0%, #2a2a2d 100%);color:#f5f5f4;border-radius:var(--r-xl);padding:18px;position:relative;overflow:hidden}.ai-card .ai-badge{border-radius:var(--r-pill);text-transform:uppercase;letter-spacing:.06em;color:var(--accent);background:#ffffff1a;border:1px solid #ffffff1a;align-items:center;gap:6px;padding:4px 10px;font-size:11px;font-weight:600;display:inline-flex}.ai-card .ai-glow{background:radial-gradient(circle, var(--accent) 0%, transparent 60%);opacity:.25;pointer-events:none;width:160px;height:160px;position:absolute;top:-40px;right:-40px}[data-theme=dark] .ai-card{border:1px solid var(--divider);background:linear-gradient(135deg,#1e1e22 0%,#16161a 100%)}.badge{background:var(--accent-soft);color:var(--accent);border-radius:var(--r-pill);align-items:center;gap:4px;padding:4px 8px;font-size:11px;font-weight:700;display:inline-flex}.forecast-band{border-radius:var(--r-md);background:var(--info-soft);color:var(--info);align-items:flex-start;gap:10px;padding:12px 14px;font-size:13px;font-weight:500;display:flex}.forecast-band.warn{background:var(--warning-soft);color:var(--warning)}.forecast-band.pos{background:var(--positive-soft);color:var(--positive)}.tabs{background:var(--surface-2);border-radius:var(--r-pill);gap:4px;padding:4px;display:flex}.tabs button{border-radius:var(--r-pill);color:var(--ink-muted);flex:1;padding:8px 12px;font-size:13px;font-weight:600;transition:all .15s}.tabs button.active{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}[data-theme=dark] .tabs button.active{background:var(--ink);color:var(--bg)}.cc{border-radius:var(--r-xl);color:#fff;min-height:170px;box-shadow:var(--shadow-md);flex-direction:column;justify-content:space-between;padding:18px;transition:transform .15s;display:flex;position:relative;overflow:hidden}.cc:active{transform:scale(.98)}.cc:before{content:"";pointer-events:none;background:radial-gradient(circle,#ffffff2e 0%,#0000 60%);width:140px;height:140px;position:absolute;top:-30px;right:-30px}.cc-top{justify-content:space-between;align-items:flex-start;display:flex}.cc-name{letter-spacing:.02em;font-size:14px;font-weight:700}.cc-brand{background:#fff3;border-radius:4px;justify-content:center;align-items:center;width:36px;height:24px;display:flex}.cc-num{font-family:var(--font-mono);letter-spacing:.15em;opacity:.9;margin-top:18px;font-size:15px}.cc-bottom{justify-content:space-between;align-items:flex-end;gap:12px;margin-top:14px;display:flex}.cc-bottom .cc-label{opacity:.7;text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:600}.cc-bottom .cc-due{font-family:var(--font-mono);font-size:13px;font-weight:600}.cc-usage{min-width:100px}.cc-usage .cc-pct{text-align:right;font-size:18px;font-weight:800;line-height:1}.cc-usage .cc-bar{background:#fff3;border-radius:999px;height:4px;margin-top:6px;overflow:hidden}.cc-usage .cc-bar-fill{background:#fff;border-radius:999px;height:100%;transition:width .6s cubic-bezier(.4,0,.2,1)}.cc-usage .cc-money{opacity:.8;text-align:right;font-size:11px;font-family:var(--font-mono);margin-top:4px}.cc-theme-pick{cursor:pointer;border:2px solid #0000;border-radius:12px;width:44px;height:44px;transition:border .15s,transform .15s}.cc-theme-pick:active{transform:scale(.95)}.cc-theme-pick.active{border-color:var(--ink)}[data-theme=dark] .cc-theme-pick.active{border-color:#fff}.pill-paid{background:var(--positive-soft);color:var(--positive)}.pill-pending{background:var(--surface-2);color:var(--ink-muted)}.pill-partial{background:var(--warning-soft);color:var(--warning)}.pill-overdue{background:var(--negative-soft);color:var(--negative)}.fc-splash{z-index:9999;padding:env(safe-area-inset-top,0) 24px env(safe-area-inset-bottom,0);color:#f5f5f4;opacity:1;background:radial-gradient(circle at 50% 30%,#ff5a1f2e 0%,#0000 60%),#0a0a0a;flex-direction:column;justify-content:center;align-items:center;gap:24px;transition:opacity .32s;display:flex;position:fixed;inset:0}.fc-splash-fade{opacity:0;pointer-events:none}.fc-splash-content{flex-direction:column;align-items:center;gap:24px;display:flex}.fc-mark{width:96px;height:96px;animation:1s cubic-bezier(.34,.9,.4,1) backwards fc-lift}.fc-mark svg{width:100%;height:100%;display:block}.fc-mark-stem,.fc-mark-top,.fc-mark-mid{animation:.7s cubic-bezier(.34,.9,.4,1) backwards fc-bar}.fc-mark-stem{transform-origin:50% 0;animation-name:fc-stem;animation-delay:50ms;transform:scaleY(0)}.fc-mark-top{transform-origin:0;animation-delay:.45s;transform:scaleX(0)}.fc-mark-mid{transform-origin:0;animation-delay:.65s;transform:scaleX(0)}@keyframes fc-stem{to{transform:scaleY(1)}}@keyframes fc-bar{to{transform:scaleX(1)}}@keyframes fc-lift{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.fc-wordmark{letter-spacing:-.9px;color:#f5f5f4;opacity:0;font-size:28px;font-weight:800;animation:.4s .95s forwards fc-fade;position:relative}.fc-wordmark .fc-dot{background:#ff5a1f;border-radius:50%;width:6px;height:6px;display:inline-block;position:absolute;top:8px;left:33px}.fc-tagline{color:#6b6b6b;letter-spacing:.02em;opacity:0;font-size:13px;font-weight:500;animation:.4s 1.2s forwards fc-fade}@keyframes fc-fade{to{opacity:1}}.fc-loader{left:50%;bottom:calc(64px + env(safe-area-inset-bottom,0));opacity:0;border:2px solid #ffffff14;border-top-color:#ff5a1f;border-radius:50%;width:32px;height:32px;animation:.9s linear infinite forwards fc-spin,.3s 1.4s forwards fc-fade;position:fixed;transform:translate(-50%)}@keyframes fc-spin{to{transform:translate(-50%)rotate(360deg)}}.fc-signature{left:0;right:0;bottom:calc(24px + env(safe-area-inset-bottom,0));text-align:center;color:#6b6b6b;letter-spacing:.1em;text-transform:uppercase;opacity:0;font-size:11px;font-weight:500;animation:.4s 1.5s forwards fc-fade;position:fixed}
