@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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 Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Playfair Display Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/playfair-display-cyrillic-wght-normal-5WvUvBgz.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Playfair Display Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/playfair-display-vietnamese-wght-normal-Cabi7G8-.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/playfair-display-latin-ext-wght-normal-CT1r92Rl.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Playfair Display Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/assets/playfair-display-latin-wght-normal-BOwq7MWX.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--background: oklch(.9833 .0022 17.1956);--foreground: oklch(.2017 .0526 2.2444);--card: oklch(.9591 .0041 17.2293);--card-foreground: oklch(.2531 .0733 3.4468);--popover: oklch(.9591 .0041 17.2293);--popover-foreground: oklch(.2017 .0526 2.2444);--primary: oklch(.4569 .1726 15.548);--primary-foreground: oklch(1 0 0);--secondary: oklch(.4403 .1603 303.373);--secondary-foreground: oklch(1 0 0);--muted: oklch(.9201 .006 354.7749);--muted-foreground: oklch(.4862 .0577 357.8339);--accent: oklch(.915 .0486 356.0715);--accent-foreground: oklch(.4094 .1533 15.1293);--destructive: oklch(.5517 .2195 28.5591);--destructive-foreground: oklch(1 0 0);--border: oklch(.8749 .0182 355.1821);--input: oklch(.9337 .0095 354.8812);--ring: oklch(.4569 .1726 15.548);--chart-1: oklch(.4569 .1726 15.548);--chart-2: oklch(.4781 .1762 303.2755);--chart-3: oklch(.4997 .1777 344.6279);--chart-4: oklch(.2697 0 0);--chart-5: oklch(.8828 .0267 48.4017);--font-sans: "Inter Variable", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";--font-serif: "Playfair Display Variable", "Playfair Display", Georgia, serif;--font-mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, monospace;--radius: .25rem;--tracking-normal: -.02em;--shadow-sm: 0px 4px 10px 0px hsl(345 80% 10% / .1), 0px 1px 2px -1px hsl(345 80% 10% / .1);--shadow-md: 0px 4px 10px 0px hsl(345 80% 10% / .1), 0px 2px 4px -1px hsl(345 80% 10% / .1);--shadow-lg: 0px 4px 10px 0px hsl(345 80% 10% / .1), 0px 4px 6px -1px hsl(345 80% 10% / .1);--shadow-xl: 0px 4px 10px 0px hsl(345 80% 10% / .1), 0px 8px 10px -1px hsl(345 80% 10% / .1);--great: oklch(.58 .115 165);--good: oklch(.62 .09 205);--warn: oklch(.72 .13 75);--over: var(--primary);--gold: oklch(.8 .12 72);color-scheme:light}.dark{--background: oklch(.1243 .0149 354.3898);--foreground: oklch(.8831 .02 48.4846);--card: oklch(.1616 .0199 357.973);--card-foreground: oklch(.9223 .0131 48.5794);--popover: oklch(.1616 .0199 357.973);--popover-foreground: oklch(.9223 .0131 48.5794);--primary: oklch(.5655 .2229 18.516);--primary-foreground: oklch(.1243 .0149 354.3898);--secondary: oklch(.4095 .1866 305.6795);--secondary-foreground: oklch(.9613 .0065 48.6682);--muted: oklch(.2251 .0315 358.4161);--muted-foreground: oklch(.7075 .034 355.9324);--accent: oklch(.3226 .1249 345.9812);--accent-foreground: oklch(.8525 .1093 339.6813);--destructive: oklch(.5308 .2178 29.2339);--destructive-foreground: oklch(1 0 0);--border: oklch(.2549 .0382 358.6888);--input: oklch(.2047 .0269 358.1778);--ring: oklch(.5655 .2229 18.516);--chart-1: oklch(.5655 .2229 18.516);--chart-2: oklch(.4498 .2071 305.5171);--chart-3: oklch(.5053 .2115 349.1668);--chart-4: oklch(.1579 0 0);--chart-5: oklch(.3539 .039 357.6054);--radius: 0rem;--shadow-sm: 0px 10px 20px 2px hsl(0 100% 0% / .6), 0px 1px 2px 1px hsl(0 100% 0% / .6);--shadow-md: 0px 10px 20px 2px hsl(0 100% 0% / .6), 0px 2px 4px 1px hsl(0 100% 0% / .6);--shadow-lg: 0px 10px 20px 2px hsl(0 100% 0% / .6), 0px 4px 6px 1px hsl(0 100% 0% / .6);--shadow-xl: 0px 10px 20px 2px hsl(0 100% 0% / .6), 0px 8px 10px 1px hsl(0 100% 0% / .6);--great: oklch(.78 .15 165);--good: oklch(.74 .11 205);--warn: oklch(.82 .14 78);--over: var(--primary);--gold: oklch(.85 .12 72);color-scheme:dark}:root{--bg: var(--background);--bg-soft: var(--card);--surface: var(--card);--surface-2: var(--muted);--surface-3: color-mix(in oklch, var(--muted), var(--foreground) 12%);--line: var(--border);--line-strong: color-mix(in oklch, var(--border), var(--foreground) 22%);--text: var(--foreground);--text-dim: var(--muted-foreground);--text-faint: color-mix(in oklch, var(--muted-foreground), var(--background) 32%);--accent: var(--primary);--accent-2: var(--secondary);--accent-soft: color-mix(in oklch, var(--primary) 16%, transparent);--radius-lg: var(--radius);--radius-md: var(--radius);--radius-pill: 999px;--shadow: var(--shadow-md);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--nav-h: 72px;--grad-brand: linear-gradient(135deg, var(--primary), var(--secondary));--grad-premium: linear-gradient(135deg, var(--secondary), var(--primary));font-family:var(--font-sans)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);letter-spacing:var(--tracking-normal);overscroll-behavior-y:none;-webkit-font-smoothing:antialiased}#root{max-width:520px;margin:0 auto;position:relative;background:radial-gradient(1200px 520px at 50% -12%,color-mix(in oklch,var(--primary) 20%,transparent),transparent 60%),var(--bg);min-height:100%}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer;letter-spacing:inherit}input,select,textarea{font:inherit;color:inherit}h1,h2,h3,h4,p{margin:0}.title,.onb h2,.sheet>h2,.level-num,.ring-center .amount,.amount-display .val,.big-amount{font-family:var(--font-serif);letter-spacing:-.01em}.app{min-height:100%;padding-bottom:calc(var(--nav-h) + var(--safe-bottom) + 12px)}.screen{padding:calc(var(--safe-top) + 12px) 18px 8px;animation:fade-up .32s cubic-bezier(.2,.8,.2,1)}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px;box-shadow:var(--shadow-sm)}.card.soft{background:linear-gradient(180deg,var(--surface-2),var(--surface))}.section-title{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);margin:22px 4px 10px}.settings-divider{height:1px;border:0;background:var(--line);margin:22px 0 4px}.splash{min-height:100dvh;display:flex;align-items:center;justify-content:center}.auth-gate{min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding:24px 20px calc(24px + var(--safe-bottom))}.auth-hero{text-align:center;margin-bottom:24px}.auth-logo{border-radius:20px;box-shadow:var(--shadow-md)}.muted{color:var(--text-dim)}.faint{color:var(--text-faint)}.app-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:6px}.app-header .hello{font-size:13px;color:var(--text-dim)}.app-header .title{font-size:26px;font-weight:800}.period-dd-wrap{position:relative}.period-dd{display:inline-flex;align-items:center;gap:4px;padding:0;background:none;border:none;color:var(--text);cursor:pointer}.period-chip{display:inline-flex;align-items:center;gap:4px;padding:6px 12px;border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--line);color:var(--text);font-weight:700;font-size:13px;box-shadow:var(--shadow-sm);cursor:pointer}.section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:22px 4px 10px}.period-menu{position:absolute;top:calc(100% + 8px);left:0;z-index:20;min-width:200px;background:var(--popover);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:6px;animation:fade-up .18s ease}.period-menu button{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px;border-radius:var(--radius-md);font-size:16px;font-weight:600;color:var(--text);transition:background .12s}.period-menu button:active{background:var(--surface-2)}.period-menu button.active{color:var(--primary);background:color-mix(in oklch,var(--primary) 10%,transparent)}.period-menu.right{left:auto;right:0}.period-custom{display:flex;flex-direction:column;gap:8px;padding:8px 8px 4px;border-top:1px solid var(--line);margin-top:4px}.period-custom label{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px;font-weight:600;color:var(--text-dim)}.period-custom input[type=date]{padding:9px 12px;border-radius:var(--radius-md);background:var(--input);border:1px solid var(--line);color:var(--text);outline:none;font-size:14px}.period-custom input[type=date]:focus{border-color:var(--primary)}.icon-btn{width:42px;height:42px;border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--line);display:grid;place-items:center;font-size:18px;transition:transform .15s,background .15s;box-shadow:var(--shadow-sm)}.icon-btn:active{transform:scale(.92);background:var(--surface-2)}.ring-wrap{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0 4px}.ring-center{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-content:center;text-align:center;pointer-events:none}.ring-center button,.ring-center a{pointer-events:auto}.ring-svg{overflow:visible}.donut-cta{display:inline-flex;align-items:center;gap:4px;margin:8px auto 0;padding:6px 12px;border-radius:var(--radius-pill);background:var(--primary);color:var(--primary-foreground);font-size:12px;font-weight:700;cursor:pointer;animation:fade-up .2s ease}.donut-cta:active{transform:scale(.95)}.donut-hint{text-align:center;font-size:12px;margin-top:12px}.ring-center .ring-cur{font-size:12px;font-weight:700;letter-spacing:.08em;color:var(--text-faint);text-transform:uppercase}.ring-center .amount{font-size:30px;font-weight:800;line-height:1.05}.ring-center .label{font-size:12px;color:var(--text-dim);margin-top:3px;padding:0 24px}.cat-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 14px;margin-top:14px;padding:0 6px}.cat-legend-item{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-dim);font-weight:600;background:none;border:none;padding:2px;cursor:pointer;transition:opacity .12s}button.cat-legend-item:active{opacity:.5}.filter-chip{display:inline-flex;align-items:center;gap:8px;margin:4px 0 8px;padding:8px 14px;border-radius:var(--radius-pill);background:var(--surface);border:1px solid var(--line);color:var(--text);font-weight:700;font-size:14px;box-shadow:var(--shadow-sm)}.filter-chip b{color:var(--text-dim);font-weight:700}.filter-chip:active{transform:scale(.97)}.cat-legend-item i{width:9px;height:9px;border-radius:3px;flex:none}.cat-legend-item b{color:var(--text);font-weight:700}.ring-svg{transform:rotate(-90deg)}.ring-svg circle{transition:stroke-dashoffset .6s cubic-bezier(.2,.8,.2,1),stroke .4s}.coach{position:relative;overflow:hidden;border-radius:var(--radius-lg);padding:18px;border:1px solid var(--line);background:linear-gradient(135deg,color-mix(in oklch,var(--primary) 20%,var(--card)),var(--card));box-shadow:var(--shadow-sm)}.coach.mood-great{background:linear-gradient(135deg,color-mix(in oklch,var(--great) 22%,var(--card)),var(--card))}.coach.mood-good{background:linear-gradient(135deg,color-mix(in oklch,var(--good) 20%,var(--card)),var(--card))}.coach.mood-warn{background:linear-gradient(135deg,color-mix(in oklch,var(--warn) 22%,var(--card)),var(--card))}.coach.mood-over{background:linear-gradient(135deg,color-mix(in oklch,var(--over) 22%,var(--card)),var(--card))}.coach .coach-top{display:flex;align-items:center;gap:8px;margin-bottom:8px}.coach .badge-pro{font-size:10px;font-weight:800;letter-spacing:.05em;padding:3px 8px;border-radius:var(--radius-pill);background:var(--grad-premium);color:var(--primary-foreground)}.coach .headline{font-size:18px;font-weight:800}.coach .body{margin-top:6px;font-size:15px;line-height:1.45;color:var(--text);opacity:.92}.coach .coach-emoji{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;flex:none;box-shadow:var(--shadow-sm)}.coach-carousel{margin-top:14px}.coach-track{display:flex;align-items:stretch;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}.coach-track::-webkit-scrollbar{display:none}.coach-slide{flex:0 0 100%;scroll-snap-align:center}.coach-slide .coach{height:100%}.coach-dots{display:flex;justify-content:center;gap:6px;margin-top:10px}.coach-dots span{width:6px;height:6px;border-radius:var(--radius-pill);background:var(--line-strong);transition:width .2s,background .2s}.coach-dots span.on{width:18px;background:var(--primary)}.shimmer{color:transparent;background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.3s ease infinite;border-radius:var(--radius-md)}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.stat{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);padding:12px;text-align:center;box-shadow:var(--shadow-sm)}.stat .k{font-size:20px;font-weight:800;display:flex;align-items:center;justify-content:center;gap:4px}.stat .l{font-size:11px;color:var(--text-dim);margin-top:2px}.day-group{margin-top:8px}.day-head{display:flex;justify-content:space-between;align-items:baseline;padding:14px 4px 8px}.day-head .d{font-weight:700}.day-head .t{color:var(--text-dim);font-size:14px;font-weight:600}.row{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);margin-bottom:8px;box-shadow:var(--shadow-sm);animation:fade-up .25s ease}.row .emoji{width:42px;height:42px;border-radius:var(--radius-md);display:grid;place-items:center;font-size:20px;flex:none}.row .meta{flex:1;min-width:0}.row .meta .name{font-weight:600;font-size:15px}.row .meta .sub{font-size:12px;color:var(--text-faint);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row .amt{font-weight:800;font-size:15px;font-family:var(--font-mono)}.tag-income{font-size:10px;font-weight:700;color:var(--great);background:color-mix(in oklch,var(--great) 18%,transparent);padding:1px 6px;border-radius:var(--radius-pill);margin-left:6px;vertical-align:middle}.row .del{color:var(--over);font-size:13px;font-weight:700;padding:6px 8px}.swrow{position:relative;margin-bottom:8px;border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}.swrow-del{position:absolute;top:0;right:0;bottom:0;width:96px;display:flex;align-items:center;justify-content:center;gap:5px;background:var(--over);color:#fff;font-weight:700;font-size:13px;border:0}.swrow-fg{position:relative;z-index:1;transition:transform .22s cubic-bezier(.2,.8,.2,1);will-change:transform;touch-action:pan-y;cursor:pointer}.swrow-fg:active{filter:brightness(.98)}.swrow .row{margin-bottom:0;border-radius:0;box-shadow:none;animation:none}.swrow-hover-del{position:absolute;top:50%;right:10px;transform:translateY(-50%);z-index:2;display:none;width:30px;height:30px;align-items:center;justify-content:center;border-radius:50%;color:var(--over);background:color-mix(in oklch,var(--over) 14%,var(--surface));box-shadow:var(--shadow-sm)}@media (hover: hover) and (pointer: fine){.swrow:hover .swrow-hover-del{display:inline-flex}}.nav{position:fixed;left:50%;transform:translate(-50%);bottom:0;width:100%;max-width:520px;height:calc(var(--nav-h) + var(--safe-bottom));padding-bottom:var(--safe-bottom);background:color-mix(in oklch,var(--background) 82%,transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-top:1px solid var(--line);display:flex;align-items:stretch;justify-content:space-around;z-index:30}.nav button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-faint);font-size:10px;font-weight:600;transition:color .15s}.nav button .ico{font-size:20px;transition:transform .15s}.nav button.active{color:var(--primary)}.nav button.active .ico{transform:translateY(-1px) scale(1.06)}.nav .spacer{flex:1}.fab{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-h) + var(--safe-bottom) - 28px);width:62px;height:62px;border-radius:50%;background:var(--grad-brand);color:var(--primary-foreground);font-size:32px;font-weight:300;display:grid;place-items:center;box-shadow:0 12px 30px -6px color-mix(in oklch,var(--primary) 70%,transparent);z-index:40;transition:transform .15s}.fab:active{transform:translate(-50%) scale(.9)}.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:16px;border-radius:var(--radius-md);font-weight:700;font-size:16px;background:var(--surface-2);border:1px solid var(--line);color:var(--text);transition:transform .12s,opacity .2s}.btn:active{transform:scale(.97)}.btn.primary{background:var(--grad-brand);color:var(--primary-foreground);border:none}.btn.gold{background:var(--grad-premium);color:var(--primary-foreground);border:none}.btn:disabled{opacity:.4}.btn.ghost{background:transparent;box-shadow:none}.scrim{position:fixed;top:0;left:0;right:0;height:100vh;height:100dvh;background:color-mix(in oklch,black 50%,transparent);z-index:50;animation:fade .2s ease;display:flex;align-items:flex-end;justify-content:center}@keyframes fade{0%{opacity:0}to{opacity:1}}.sheet{width:100%;max-width:520px;background:var(--popover);border-radius:calc(var(--radius-lg) + 16px) calc(var(--radius-lg) + 16px) 0 0;border-top:1px solid var(--line-strong);padding:10px 18px calc(18px + var(--safe-bottom));animation:slide-up .3s cubic-bezier(.2,.8,.2,1);max-height:90vh;max-height:90dvh;overflow-y:auto;box-shadow:var(--shadow-xl)}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.sheet-top{position:sticky;top:0;z-index:3;margin:-10px -18px 8px;padding:6px 14px 4px;background:var(--popover);display:flex;align-items:center;justify-content:center}.grabber{width:64px;height:22px;padding:0;border:0;background:transparent;cursor:pointer;position:relative}.grabber:before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:40px;height:5px;border-radius:var(--radius-pill);background:var(--line-strong)}.grabber:active:before{background:var(--text-faint)}.row.tappable{cursor:pointer}.row.tappable:active{background:var(--surface-2)}.icon-pick{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);background:var(--surface-2);border:2px solid transparent}.color-pick{width:26px;height:26px;border-radius:50%;outline-offset:2px}.install-banner{display:flex;align-items:center;gap:10px;margin-top:14px;padding:12px;border-radius:var(--radius-lg);border:1px solid var(--line);background:linear-gradient(135deg,color-mix(in oklch,var(--secondary) 12%,var(--card)),var(--card));box-shadow:var(--shadow-sm)}.treat-badge{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;flex:none;background:linear-gradient(135deg,var(--secondary),var(--primary));box-shadow:var(--shadow-sm)}.treat-nudge{margin-top:14px;border-radius:var(--radius-lg);padding:16px;border:1px solid var(--line);background:linear-gradient(135deg,color-mix(in oklch,var(--secondary) 16%,var(--card)),var(--card));box-shadow:var(--shadow-sm)}.fund-card{border-radius:var(--radius-lg);padding:18px;border:1px solid var(--line);background:linear-gradient(135deg,color-mix(in oklch,var(--primary) 14%,var(--card)),var(--card));box-shadow:var(--shadow-sm);margin-bottom:16px}.fund-amount{font-family:var(--font-serif);font-size:34px;font-weight:800;color:var(--primary);margin:6px 0 4px}.treat-row{display:flex;align-items:center;gap:12px;width:100%;padding:12px;border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--line);margin-bottom:8px;text-align:left}.treat-row:active{transform:scale(.985);background:var(--surface-2)}.treat-ic{display:inline-flex;width:38px;height:38px;align-items:center;justify-content:center;border-radius:50%;background:var(--surface-2);flex:none}.treat-label{flex:1;font-weight:600;font-size:14px}.treat-cost{font-weight:700;font-size:13px;color:var(--primary);flex:none}.seg{display:flex;gap:4px;padding:4px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);margin:2px 0 6px}.seg-btn{flex:1;padding:10px;border-radius:var(--radius-md);font-weight:700;font-size:15px;color:var(--text-dim);transition:background .15s,color .15s}.seg-btn.on{background:var(--primary);color:var(--primary-foreground)}.seg-btn.income.on{background:var(--great);color:#06331f}.amount-display{text-align:center;padding:6px 0 10px}.amount-display .cur{font-size:15px;color:var(--text-dim);font-weight:600}.amount-display .val{font-size:52px;font-weight:800;line-height:1.1;transition:transform .1s}.amount-display .val.pop{transform:scale(1.05)}.chips{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 12px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{flex:none;display:flex;align-items:center;gap:7px;padding:9px 14px;border-radius:var(--radius-pill);background:var(--surface);border:1.5px solid var(--line);color:var(--text);font-weight:600;font-size:14px;transition:transform .12s,border-color .15s,background .15s}.chip:active{transform:scale(.94)}.chip.chip-new{border-style:dashed;border-color:color-mix(in oklch,var(--primary) 55%,transparent);color:var(--primary);background:color-mix(in oklch,var(--primary) 6%,var(--surface))}.chip.selected{border-color:var(--sel, var(--primary));background:color-mix(in oklch,var(--sel, var(--primary)) 20%,var(--surface))}.chip .dot{width:10px;height:10px;border-radius:50%}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:6px}.key{height:62px;border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--line);font-size:24px;font-weight:700;font-family:var(--font-mono);display:grid;place-items:center;transition:transform .08s,background .1s;-webkit-user-select:none;user-select:none}.key:active{transform:scale(.94);background:var(--surface-3)}.key.wide{font-size:20px}.note-input{width:100%;padding:14px 16px;border-radius:var(--radius-md);background:var(--input);border:1px solid var(--line);margin-top:4px;outline:none}.note-input:focus{border-color:var(--primary)}.field{margin-bottom:14px}.field label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:6px;font-weight:600}.field input,.field select{width:100%;padding:14px 16px;border-radius:var(--radius-md);background:var(--input);border:1px solid var(--line);outline:none}.field input:focus,.field select:focus{border-color:var(--primary)}.list-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-md);margin-bottom:8px}.list-item .li-left{display:flex;align-items:center;gap:12px}.switch{width:50px;height:30px;border-radius:var(--radius-pill);background:var(--surface-3);position:relative;transition:background .2s;flex:none}.switch.on{background:var(--primary)}.switch:disabled{opacity:.45;cursor:not-allowed}.switch:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:transform .2s}.switch.on:after{transform:translate(20px)}.level-card{text-align:center;padding:22px 18px;background:linear-gradient(160deg,var(--surface-2),var(--surface));border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.level-num{width:74px;height:74px;margin:0 auto 10px;border-radius:50%;display:grid;place-items:center;font-size:30px;font-weight:800;color:var(--primary-foreground);background:var(--grad-brand);box-shadow:0 10px 26px -8px color-mix(in oklch,var(--primary) 70%,transparent)}.xp-bar{height:12px;border-radius:var(--radius-pill);background:var(--surface-3);overflow:hidden;margin-top:14px}.xp-bar>div{height:100%;border-radius:var(--radius-pill);background:var(--grad-brand);transition:width .6s cubic-bezier(.2,.8,.2,1)}.badge-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.badge-cell{text-align:center;padding:16px 8px;border-radius:var(--radius-md);background:var(--surface);border:1px solid var(--line);position:relative;transition:transform .15s;box-shadow:var(--shadow-sm)}.badge-cell.locked{opacity:.42;filter:grayscale(.7)}.badge-cell .bemoji{font-size:30px}.badge-cell .bname{font-size:12px;font-weight:700;margin-top:6px}.badge-cell .bdesc{font-size:10px;color:var(--text-faint);margin-top:3px;line-height:1.3}.badge-cell .newpip{position:absolute;top:8px;right:8px;font-size:9px;font-weight:800;background:var(--over);color:#fff;padding:2px 6px;border-radius:var(--radius-pill)}.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:12px;width:100%;background:none;border:none;padding:0;color:inherit;text-align:left;cursor:pointer;transition:opacity .12s}button.bar-row:active{opacity:.55}button.bar-row:disabled{cursor:default}.bar-row .bl{width:92px;font-size:13px;display:flex;align-items:center;gap:6px;flex:none}.bar-track{flex:1;height:12px;border-radius:var(--radius-pill);background:var(--surface-3);overflow:hidden}.bar-track>div{height:100%;border-radius:var(--radius-pill);transition:width .5s ease}.bar-row .bv{font-size:13px;font-weight:700;font-family:var(--font-mono);width:96px;text-align:right;white-space:nowrap;flex:none}.spark{display:flex;align-items:flex-end;gap:6px;height:120px;padding-top:8px}.spark .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}.spark .bar{width:100%;border-radius:var(--radius-md) var(--radius-md) 0 0;background:linear-gradient(180deg,var(--chart-1),color-mix(in oklch,var(--chart-1),var(--chart-2) 45%));min-height:4px;transition:height .5s ease}.spark .bar.over{background:linear-gradient(180deg,var(--chart-3),color-mix(in oklch,var(--chart-3),black 18%))}.spark .lbl{font-size:10px;color:var(--text-faint)}.toast{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-h) + var(--safe-bottom) + 74px);background:var(--popover);border:1px solid var(--line-strong);padding:12px 18px;border-radius:var(--radius-pill);font-weight:700;font-size:14px;z-index:60;display:flex;align-items:center;gap:8px;box-shadow:var(--shadow-lg);animation:toast-in .3s cubic-bezier(.2,.8,.2,1);max-width:90%}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}.onb{min-height:100%;display:flex;flex-direction:column;padding:calc(var(--safe-top) + 30px) 22px calc(28px + var(--safe-bottom))}.onb .steps{display:flex;gap:6px;margin-bottom:26px}.onb .steps>div{height:4px;flex:1;border-radius:var(--radius-pill);background:var(--surface-3)}.onb .steps>div.on{background:var(--primary)}.onb h2{font-size:28px;font-weight:800}.onb .sub{color:var(--text-dim);margin-top:8px;font-size:15px;line-height:1.5}.onb .grow{flex:1;overflow-y:auto;margin:22px 0}.big-amount{text-align:center;font-size:46px;font-weight:800;padding:12px 0}.cat-pick{display:flex;flex-wrap:wrap;gap:8px}.cat-pick .chip.selected{--sel: var(--primary)}.empty{text-align:center;color:var(--text-faint);padding:40px 20px}.empty .e-emoji{font-size:44px}.empty .e-text{margin-top:10px;font-size:15px}.center-col{display:flex;flex-direction:column;gap:10px}.hstack{display:flex;align-items:center;gap:10px}.pill{font-size:12px;font-weight:700;padding:4px 10px;border-radius:var(--radius-pill);background:var(--surface-2);border:1px solid var(--line)}
