:root{color-scheme:light;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Inter,Helvetica Neue,system-ui,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"kern" 1,"liga" 1;--bg: #F5F5F7;--bg-grouped: #F5F5F7;--bg-elevated: #FFFFFF;--surface: #FFFFFF;--surface-strong: #FFFFFF;--surface-muted: #F5F5F7;--surface-secondary: rgba(142, 142, 147, .06);--surface-fill: rgba(142, 142, 147, .1);--surface-glass: rgba(255, 255, 255, .72);--surface-glass-heavy: rgba(255, 255, 255, .85);--text-primary: #1D1D1F;--text-secondary: #86868B;--text-muted: #AEAEB2;--text-quaternary: #C7C7CC;--text-on-fill: #FFFFFF;--system-blue: #0071E3;--system-blue-hover: #0077ED;--system-green: #28CD41;--system-red: #FF3B30;--system-orange: #FF9500;--system-purple: #AF52DE;--system-teal: #5AC8FA;--system-indigo: #5856D6;--brand: #0071E3;--brand-hover: #0077ED;--brand-strong: #0058B0;--income: #28CD41;--expense: #FF3B30;--savings: #0071E3;--warning: #FF9500;--danger: #FF3B30;--brand-soft: rgba(0, 113, 227, .08);--brand-soft-hover: rgba(0, 113, 227, .14);--income-soft: rgba(40, 205, 65, .1);--danger-soft: rgba(255, 59, 48, .08);--warning-soft: rgba(255, 149, 0, .1);--purple-soft: rgba(175, 82, 222, .08);--border: rgba(0, 0, 0, .06);--border-strong: rgba(0, 0, 0, .12);--separator: rgba(0, 0, 0, .06);--border-focus: rgba(0, 113, 227, .4);--shadow-xs: 0 .5px 1px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .03);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .04), 0 4px 8px rgba(0, 0, 0, .03);--shadow: 0 2px 8px rgba(0, 0, 0, .04), 0 8px 24px rgba(0, 0, 0, .06);--shadow-lg: 0 4px 12px rgba(0, 0, 0, .04), 0 16px 48px rgba(0, 0, 0, .08);--shadow-xl: 0 8px 24px rgba(0, 0, 0, .06), 0 24px 80px rgba(0, 0, 0, .1);--radius-xs: 8px;--radius-sm: 12px;--radius-md: 16px;--radius-lg: 20px;--radius-xl: 24px;--radius-2xl: 28px;--radius-pill: 980px;--content-width: 480px;--sidebar-width: 260px;--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--ease-out: cubic-bezier(.25, 1, .5, 1);--ease-in-out: cubic-bezier(.45, 0, .55, 1);--ease-bounce: cubic-bezier(.175, .885, .32, 1.275);--duration-fast: .14s;--duration-base: .22s;--duration-slow: .36s;--duration-gentle: .5s}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}html,body,#app{min-height:100%}body{margin:0;min-width:320px;background:var(--bg);color:var(--text-primary);overflow-x:hidden}::selection{background:#0071e32e;color:inherit}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;border:none;background:none}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}.app-shell{min-height:100vh;min-height:100dvh;display:flex;justify-content:center;background:var(--bg)}.app-shell__inner{width:100%;max-width:var(--content-width)}.app-layout{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh}.app-layout__content{flex:1;display:flex;flex-direction:column;gap:16px;padding:8px 16px 100px;animation:fadeInContent .4s var(--ease-out) both}@keyframes fadeInContent{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.auth-layout{display:grid;min-height:100vh;min-height:100dvh;align-items:center;padding:32px 20px}.page-container{display:flex;flex-direction:column;gap:16px}.page-header{display:flex;flex-direction:column;gap:6px;padding-bottom:4px}.page-header h1{margin:0;font-size:2rem;font-weight:700;letter-spacing:-.03em;line-height:1.08;color:var(--text-primary)}.page-header h2,.page-header h3{margin:0;font-size:1.125rem;font-weight:600;letter-spacing:-.015em;line-height:1.25;color:var(--text-primary)}.muted{color:var(--text-secondary);font-size:.9375rem;line-height:1.45}.tiny{color:var(--text-muted);font-size:.8125rem;line-height:1.4}.title{font-size:1.5rem;font-weight:700;letter-spacing:-.025em;margin:0}.surface-card{background:var(--surface);border-radius:var(--radius-2xl);border:1px solid var(--border);box-shadow:var(--shadow);padding:24px;transition:box-shadow var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}.surface-card:hover{box-shadow:var(--shadow-lg)}.section-card{background:var(--surface);border-radius:var(--radius-xl);border:1px solid var(--border);box-shadow:var(--shadow-sm);padding:20px;transition:box-shadow var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}.section-card__header,.split{display:flex;align-items:center;justify-content:space-between;gap:12px}.hero-card{background:var(--text-primary);color:var(--text-on-fill);position:relative;overflow:hidden;border-radius:var(--radius-2xl)}.hero-card:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 120% 80% at 90% 10%,rgba(0,113,227,.2) 0%,transparent 60%),radial-gradient(ellipse 100% 60% at 10% 90%,rgba(40,205,65,.1) 0%,transparent 50%),radial-gradient(ellipse 80% 80% at 50% 50%,rgba(88,86,214,.06) 0%,transparent 70%);pointer-events:none}.hero-card .muted{color:#ffffff8f;font-size:.875rem;letter-spacing:.01em}.hero-card .tiny{color:#fff6}.hero-card .pill{background:#ffffff1a;color:#ffffffd9;border:1px solid rgba(255,255,255,.08);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.hero-card__amount{font-size:2.75rem;font-weight:700;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}.hero-card__meta{display:flex;flex-wrap:wrap;gap:8px}.grid{display:grid;gap:12px}.grid--two,.grid--three{grid-template-columns:1fr}.stack{display:flex;flex-direction:column;gap:14px}.row{display:flex;align-items:center;gap:10px}.hero-grid{display:grid;gap:12px}.metrics-grid{display:grid;gap:10px;grid-template-columns:repeat(3,1fr)}.stat-card{display:flex;flex-direction:column;gap:6px;padding:16px;background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-xs);transition:box-shadow var(--duration-base) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.stat-card:hover{box-shadow:var(--shadow-sm)}.stat-card__label{font-size:.6875rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.stat-card__value{font-size:1.25rem;font-weight:700;letter-spacing:-.025em;color:var(--text-primary);line-height:1.1;font-variant-numeric:tabular-nums}.stat-card__hint{font-size:.75rem;color:var(--text-muted);line-height:1.35}.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:48px;padding:0 22px;border:0;border-radius:var(--radius-pill);font-size:.9375rem;font-weight:600;letter-spacing:-.01em;white-space:nowrap;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;transition:transform var(--duration-fast) var(--ease-out),opacity var(--duration-fast) var(--ease-out),background-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out)}.button:hover{transform:translateY(-.5px)}.button:active{transform:scale(.97);opacity:.88}.button:disabled{opacity:.36;cursor:not-allowed;transform:none;pointer-events:none}.button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--border-focus)}.button--primary{background:var(--brand);color:var(--text-on-fill)}.button--primary:hover{background:var(--brand-hover);box-shadow:0 2px 12px #0071e340}.button--secondary{background:var(--surface-secondary);color:var(--text-primary)}.button--secondary:hover{background:var(--surface-fill)}.button--danger{background:var(--expense);color:var(--text-on-fill)}.button--danger:hover{box-shadow:0 2px 12px #ff3b3040}.button--ghost{background:transparent;color:var(--brand);padding:0 10px}.button--ghost:hover{background:var(--brand-soft);transform:none}.button--block{width:100%;height:52px;font-size:1rem}.button--sm{height:36px;padding:0 16px;font-size:.875rem}.field{display:flex;flex-direction:column;gap:8px}.field label{font-size:.875rem;font-weight:500;color:var(--text-secondary);letter-spacing:-.01em}.field input,.field select,.field textarea{width:100%;min-height:48px;padding:12px 16px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-strong);color:var(--text-primary);font-size:1rem;letter-spacing:-.01em;-webkit-appearance:none;appearance:none;transition:border-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out),background-color var(--duration-base) var(--ease-out)}.field input::placeholder,.field textarea::placeholder{color:var(--text-muted)}.field input:hover,.field select:hover,.field textarea:hover{border-color:#0000002e}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3.5px #0071e31f;background:var(--bg-elevated)}.field select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2386868B' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:40px}.field textarea{min-height:96px;resize:vertical}.pill,.badge{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:var(--radius-pill);font-size:.8125rem;font-weight:600;line-height:1;letter-spacing:-.01em;transition:background-color var(--duration-fast) var(--ease-out)}.pill{background:var(--surface-secondary);color:var(--text-secondary)}.pill--success{background:var(--income-soft);color:var(--income)}.pill--danger{background:var(--danger-soft);color:var(--expense)}.pill--warning{background:var(--warning-soft);color:var(--warning)}.pill--brand{background:var(--brand-soft);color:var(--brand)}.list{display:flex;flex-direction:column}.list-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border-bottom:1px solid var(--separator);transition:background-color var(--duration-fast) var(--ease-out)}.list-item:last-child{border-bottom:none;padding-bottom:0}.list-item:first-child{padding-top:0}.amount--income{color:var(--income)}.amount--expense{color:var(--expense)}.amount--neutral{color:var(--text-primary)}.progress-track{width:100%;height:6px;background:var(--surface-fill);border-radius:var(--radius-pill);overflow:hidden}.progress-fill{height:100%;border-radius:var(--radius-pill);background:var(--brand);transition:width var(--duration-slow) var(--ease-out)}.category-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.insight-card{border-radius:var(--radius-lg);padding:18px;background:var(--surface);border:1px solid var(--border);transition:box-shadow var(--duration-base) var(--ease-out)}.insight-card:hover{box-shadow:var(--shadow-xs)}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:var(--content-width);display:grid;grid-template-columns:repeat(5,1fr);padding:6px 8px max(12px,env(safe-area-inset-bottom));background:var(--surface-glass-heavy);border-top:.5px solid var(--border);backdrop-filter:blur(40px) saturate(180%);-webkit-backdrop-filter:blur(40px) saturate(180%);z-index:100}.bottom-nav__link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 4px;border-radius:var(--radius-sm);color:var(--text-muted);font-size:.625rem;font-weight:500;letter-spacing:.02em;transition:color var(--duration-base) var(--ease-out),transform var(--duration-fast) var(--ease-spring);-webkit-tap-highlight-color:transparent}.bottom-nav__link svg{width:22px;height:22px;stroke-width:1.8;transition:transform var(--duration-fast) var(--ease-spring)}.bottom-nav__link.router-link-active{color:var(--brand)}.bottom-nav__link.router-link-active svg{transform:scale(1.08)}.bottom-nav__link:active{transform:scale(.92)}.header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 16px 8px}.header__greeting{font-size:.8125rem;color:var(--text-muted);font-weight:400;letter-spacing:.01em}.header__title{font-size:1.5rem;font-weight:700;letter-spacing:-.03em;color:var(--text-primary);line-height:1.08}.header__title-block{display:flex;flex-direction:column;gap:2px}.empty-state{padding:48px 24px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px}.empty-state__icon{font-size:2.5rem;margin-bottom:4px;opacity:.35}.empty-state__title{font-size:1.0625rem;font-weight:600;color:var(--text-primary);margin:0;letter-spacing:-.01em}.empty-state__desc{font-size:.9375rem;color:var(--text-secondary);max-width:280px;line-height:1.5;margin:0}.cta-list,.chip-list{display:flex;flex-wrap:wrap;gap:8px}.chip-list button{border:0}.segmented{display:flex;gap:2px;background:var(--surface-fill);border-radius:var(--radius-sm);padding:3px}.segmented__option{flex:1;height:32px;border:0;border-radius:calc(var(--radius-sm) - 3px);font-size:.875rem;font-weight:500;background:transparent;color:var(--text-secondary);letter-spacing:-.01em;transition:all var(--duration-base) var(--ease-out)}.segmented__option.is-active{background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-xs);font-weight:600}.divider{width:100%;height:.5px;background:var(--separator)}.offline-banner{margin:0 16px;padding:12px 18px;border-radius:var(--radius-pill);background:var(--warning-soft);color:var(--warning);font-size:.875rem;font-weight:600;text-align:center;letter-spacing:-.01em}.auth-hero{width:100%;max-width:420px;margin:0 auto}.auth-hero__eyebrow{display:inline-flex;padding:6px 14px;background:var(--brand-soft);color:var(--brand);border-radius:var(--radius-pill);font-weight:700;font-size:.8125rem;letter-spacing:.02em}.settings-list{display:flex;flex-direction:column}.settings-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 0;border-bottom:.5px solid var(--separator)}.settings-row:last-child{border-bottom:none;padding-bottom:0}.settings-row:first-child{padding-top:0}.quick-actions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:10px}.quick-action-btn{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px 8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);font-size:.75rem;font-weight:500;color:var(--text-secondary);letter-spacing:-.01em;transition:all var(--duration-base) var(--ease-out);cursor:pointer;-webkit-tap-highlight-color:transparent}.quick-action-btn:hover{background:var(--surface-muted);border-color:var(--border-strong);transform:translateY(-1px);box-shadow:var(--shadow-xs)}.quick-action-btn:active{transform:scale(.96)}.quick-action-btn__icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);background:var(--brand-soft);color:var(--brand)}.toast-stack{position:fixed;bottom:84px;left:50%;transform:translate(-50%);width:calc(100% - 32px);max-width:calc(var(--content-width) - 32px);z-index:200;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{display:flex;align-items:center;gap:10px;padding:14px 18px;border-radius:var(--radius-lg);font-size:.9375rem;font-weight:500;letter-spacing:-.01em;pointer-events:all;animation:toastIn .35s var(--ease-out) both;backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%)}.toast--info{background:#1d1d1fe0;color:var(--text-on-fill);box-shadow:var(--shadow-lg)}.toast--success{background:#1d1d1fe0;color:var(--system-green);box-shadow:var(--shadow-lg)}.toast--error{background:#1d1d1fe0;color:var(--system-red);box-shadow:var(--shadow-lg)}.toast__action{margin-left:auto;padding:4px 12px;border:0;border-radius:var(--radius-pill);font-size:.875rem;font-weight:600;background:#ffffff29;color:var(--text-on-fill);cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.toast__action:hover{background:#ffffff3d}@keyframes toastIn{0%{opacity:0;transform:translateY(16px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.fab-wrap{position:fixed;bottom:80px;right:max(16px,calc((100vw - var(--content-width)) / 2 + 16px));z-index:90;display:flex;flex-direction:column-reverse;align-items:flex-end;gap:10px}.fab-trigger{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--brand);color:var(--text-on-fill);border:0;box-shadow:var(--shadow-lg),0 2px 16px #0071e34d;cursor:pointer;transition:transform var(--duration-base) var(--ease-spring),box-shadow var(--duration-base) var(--ease-out);-webkit-tap-highlight-color:transparent}.fab-trigger:hover{transform:scale(1.06);box-shadow:var(--shadow-xl),0 4px 24px #0071e359}.fab-trigger:active{transform:scale(.94)}.fab-trigger svg{width:22px;height:22px;transition:transform var(--duration-base) var(--ease-spring)}.fab-trigger.is-open svg{transform:rotate(45deg)}.fab-action{display:flex;align-items:center;gap:10px;padding:10px 16px 10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);box-shadow:var(--shadow);font-size:.875rem;font-weight:500;color:var(--text-primary);cursor:pointer;animation:fabActionIn .25s var(--ease-out) both;transition:background var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out);-webkit-tap-highlight-color:transparent}.fab-action:hover{background:var(--surface-muted);transform:translate(-2px)}.fab-action:active{transform:scale(.96)}@keyframes fabActionIn{0%{opacity:0;transform:translateY(8px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}.sidebar{width:var(--sidebar-width);height:100vh;height:100dvh;position:sticky;top:0;display:flex;flex-direction:column;padding:24px 16px;background:var(--surface-glass);backdrop-filter:blur(40px) saturate(200%);-webkit-backdrop-filter:blur(40px) saturate(200%);border-right:.5px solid var(--border);overflow-y:auto}.sidebar__logo{padding:8px 12px;margin-bottom:8px}.sidebar__logo-text{font-size:1.25rem;font-weight:700;letter-spacing:-.03em;color:var(--text-primary)}.sidebar__user{padding:12px;margin-bottom:16px;border-radius:var(--radius-sm);background:var(--surface-secondary)}.sidebar__user-name{font-size:.9375rem;font-weight:600;color:var(--text-primary);letter-spacing:-.01em}.sidebar__user-handle{font-size:.8125rem;color:var(--text-muted)}.sidebar__nav{display:flex;flex-direction:column;gap:2px;flex:1}.sidebar__link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-xs);font-size:.9375rem;font-weight:500;color:var(--text-secondary);letter-spacing:-.01em;transition:all var(--duration-base) var(--ease-out)}.sidebar__link svg{width:20px;height:20px;stroke-width:1.8;flex-shrink:0}.sidebar__link:hover{background:var(--surface-secondary);color:var(--text-primary)}.sidebar__link.router-link-active{background:var(--brand-soft);color:var(--brand);font-weight:600}.sidebar__footer{padding-top:16px;border-top:.5px solid var(--separator);margin-top:8px}.modal-backdrop{position:fixed;inset:0;background:#00000052;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:300;display:grid;place-items:center;padding:24px;animation:backdropIn .2s var(--ease-out) both}.modal-content{width:100%;max-width:420px;background:var(--surface);border-radius:var(--radius-2xl);box-shadow:var(--shadow-xl);padding:28px;animation:modalIn .3s var(--ease-out) both}@keyframes backdropIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@media(min-width:480px){.app-shell{padding:0}.grid--two{grid-template-columns:repeat(2,1fr)}.grid--three{grid-template-columns:repeat(3,1fr)}.hero-grid{grid-template-columns:1.3fr .7fr}}.desktop-sidebar-wrap{display:none}.mobile-chrome{display:block}@media(min-width:960px){.desktop-sidebar-wrap{display:block}.mobile-chrome{display:none}.app-shell{justify-content:flex-start;align-items:stretch}.app-shell__inner{max-width:none;flex:1;min-width:0}.app-layout__content{padding:32px 44px 48px;max-width:800px;gap:20px}.app-shell__inner{border-left:.5px solid var(--border)}.fab-wrap{bottom:32px;right:max(32px,calc((100vw - 800px - var(--sidebar-width)) / 2 + 32px))}.toast-stack{bottom:32px;max-width:400px}}.page-enter-active,.page-leave-active{transition:opacity var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out)}.page-enter-from{opacity:0;transform:translateY(6px)}.page-leave-to{opacity:0;transform:translateY(-4px)}.tabular-nums{font-variant-numeric:tabular-nums}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#0000001f;border-radius:var(--radius-pill)}::-webkit-scrollbar-thumb:hover{background:#0003}
