:root{--font-ui: "Instrument Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-display: "Fraunces", "Iowan Old Style", Georgia, serif;--radius-xl: 28px;--radius-lg: 22px;--radius: 16px;--radius-sm: 12px;--ease: cubic-bezier(.2, .8, .2, 1);--spring: cubic-bezier(.34, 1.4, .64, 1);--nav-h: 72px;--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px);color-scheme:light}:root,[data-theme=light]{--bg: #f6f3ee;--bg-glow: radial-gradient(1200px 600px at 85% -10%, #e8f1ec 0%, transparent 60%), radial-gradient(900px 500px at -10% 10%, #f1ece3 0%, transparent 55%);--surface: #ffffff;--surface-2: #fbf9f6;--surface-3: #f1ede6;--surface-glass: rgba(255, 255, 255, .78);--border: rgba(40, 32, 20, .08);--border-strong: rgba(40, 32, 20, .16);--ink: #1d1b17;--ink-2: #5f5a52;--ink-3: #9a948a;--accent: #127a64;--accent-2: #2e5bd8;--accent-ink: #ffffff;--accent-soft: #e2f1eb;--accent-grad: linear-gradient(135deg, #18886f 0%, #2e6fd8 100%);--hero-grad: linear-gradient(160deg, #ffffff 0%, #f7f4ee 100%);--pos: #1f8a5b;--pos-soft: #e3f3ea;--neg: #c2453d;--neg-soft: #fbe9e6;--warn: #b7791f;--warn-soft: #fbf0dc;--info: #3a63c9;--info-soft: #e7eefc;--ring-track: #ece7df;--shadow-1: 0 1px 2px rgba(40, 30, 10, .05), 0 4px 14px rgba(40, 30, 10, .05);--shadow-2: 0 2px 6px rgba(40, 30, 10, .06), 0 18px 40px rgba(40, 30, 10, .1);--shadow-accent: 0 10px 30px rgba(18, 122, 100, .28);--c1: #127a64;--c2: #2e6fd8;--c3: #e0884f;--c4: #a06cd5;--c5: #d4a017;--c6: #d1557b;--c7: #3aa6b9;--c8: #8b8f73;--chart-line: #127a64;--chart-band: rgba(18, 122, 100, .12);--chart-protect: rgba(194, 69, 61, .55);--chart-grid: rgba(40, 32, 20, .07);--scrim: rgba(25, 22, 18, .32)}[data-theme=dark]{color-scheme:dark;--bg: #191919;--bg-glow: radial-gradient(1000px 520px at 90% -10%, rgba(95, 196, 168, .07) 0%, transparent 60%);--surface: #202020;--surface-2: #252525;--surface-3: #2c2c2c;--surface-glass: rgba(32, 32, 32, .82);--border: rgba(255, 255, 255, .07);--border-strong: rgba(255, 255, 255, .13);--ink: #e9e8e4;--ink-2: #a5a39e;--ink-3: #6f6d69;--accent: #5fc4a8;--accent-2: #7ea2f7;--accent-ink: #0f1f1a;--accent-soft: rgba(95, 196, 168, .12);--accent-grad: linear-gradient(135deg, #5fc4a8 0%, #7ea2f7 100%);--hero-grad: linear-gradient(160deg, #232323 0%, #1e1e1e 100%);--pos: #6fcf97;--pos-soft: rgba(111, 207, 151, .12);--neg: #f08a80;--neg-soft: rgba(240, 138, 128, .12);--warn: #e7b65c;--warn-soft: rgba(231, 182, 92, .12);--info: #8fb0ff;--info-soft: rgba(143, 176, 255, .12);--ring-track: #2f2f2f;--shadow-1: 0 1px 0 rgba(255, 255, 255, .03) inset, 0 1px 2px rgba(0, 0, 0, .3);--shadow-2: 0 1px 0 rgba(255, 255, 255, .04) inset, 0 16px 40px rgba(0, 0, 0, .45);--shadow-accent: 0 8px 28px rgba(95, 196, 168, .18);--c1: #5fc4a8;--c2: #7ea2f7;--c3: #eda16b;--c4: #b994ef;--c5: #e7c35c;--c6: #ec8aa7;--c7: #63c3d4;--c8: #a5a98a;--chart-line: #5fc4a8;--chart-band: rgba(95, 196, 168, .12);--chart-protect: rgba(240, 138, 128, .55);--chart-grid: rgba(255, 255, 255, .06);--scrim: rgba(0, 0, 0, .55)}[data-theme=radiance]{--bg: #fbf2f7;--bg-glow: radial-gradient(900px 520px at 100% -5%, #f6dcef 0%, transparent 60%), radial-gradient(800px 520px at -10% 20%, #ece3fb 0%, transparent 60%), radial-gradient(700px 500px at 50% 110%, #fde6ea 0%, transparent 60%);--surface: rgba(255, 255, 255, .9);--surface-2: #fff8fc;--surface-3: #f8eaf3;--surface-glass: rgba(255, 250, 253, .8);--border: rgba(122, 56, 110, .1);--border-strong: rgba(122, 56, 110, .2);--ink: #3b2140;--ink-2: #7a5a7d;--ink-3: #b195b2;--accent: #c2418f;--accent-2: #8a5cf0;--accent-ink: #ffffff;--accent-soft: #fbe3f1;--accent-grad: linear-gradient(135deg, #e0559f 0%, #a466f2 100%);--hero-grad: linear-gradient(160deg, #fffafd 0%, #fdeef7 55%, #f4ecff 100%);--pos: #2f9e78;--pos-soft: #e2f5ee;--neg: #d04a6a;--neg-soft: #fde6ec;--warn: #c07a2c;--warn-soft: #fdf0e1;--info: #7b5ce8;--info-soft: #efe9fe;--ring-track: #f4e2ee;--shadow-1: 0 1px 2px rgba(150, 60, 120, .06), 0 6px 18px rgba(150, 60, 120, .07);--shadow-2: 0 2px 8px rgba(150, 60, 120, .08), 0 22px 48px rgba(150, 60, 120, .14);--shadow-accent: 0 12px 32px rgba(194, 65, 143, .3);--c1: #d4589f;--c2: #9a6cf0;--c3: #f29a7a;--c4: #6fa8f0;--c5: #e8b34f;--c6: #59b99a;--c7: #c98bd8;--c8: #b69a9f;--chart-line: #c2418f;--chart-band: rgba(194, 65, 143, .12);--chart-protect: rgba(208, 74, 106, .5);--chart-grid: rgba(122, 56, 110, .08);--scrim: rgba(60, 20, 55, .3)}*{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);background-image:var(--bg-glow);background-attachment:fixed;color:var(--ink);font-family:var(--font-ui);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased;min-height:100dvh;transition:background-color .4s var(--ease),color .3s var(--ease)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:var(--accent);text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.num{font-variant-numeric:tabular-nums}.display{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:-.02em}.muted{color:var(--ink-2)}.faint{color:var(--ink-3)}.pos{color:var(--pos)}.neg{color:var(--neg)}.warn{color:var(--warn)}.row{display:flex;align-items:center;gap:10px}.col{display:flex;flex-direction:column;gap:10px}.spread{display:flex;align-items:center;justify-content:space-between;gap:12px}.grow{flex:1;min-width:0}.wrap{flex-wrap:wrap}.ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.small{font-size:13px}.tiny{font-size:11.5px;letter-spacing:.01em}.caps{text-transform:uppercase;letter-spacing:.08em;font-size:11px;font-weight:600;color:var(--ink-3)}.app{min-height:100dvh}.main{padding:calc(14px + var(--safe-t)) 16px calc(var(--nav-h) + 24px + var(--safe-b));max-width:640px;margin:0 auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;min-height:44px}.topbar h1{font-family:var(--font-display);font-weight:500;font-size:30px;margin:0;letter-spacing:-.025em}.topbar .sub{color:var(--ink-2);font-size:13.5px}.icon-btn{width:42px;height:42px;display:grid;place-items:center;border-radius:14px;border:1px solid var(--border);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1);transition:transform .15s var(--ease),background .2s}.icon-btn:active{transform:scale(.94)}.icon-btn.plain{background:transparent;border-color:transparent;box-shadow:none}.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:40;height:calc(var(--nav-h) + var(--safe-b));padding:0 max(6px,calc((100% - 560px)/2)) var(--safe-b);display:grid;grid-template-columns:repeat(5,1fr);align-items:center;background:var(--surface-2);border-top:1px solid var(--border);border-radius:22px 22px 0 0;box-shadow:0 -8px 24px #0000001f}.nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:58px;border-radius:18px;color:var(--ink-3);font-size:11px;font-weight:600;border:0;background:transparent;transition:color .2s,background .2s}.nav-item.active{color:var(--ink)}.nav-item.active svg{color:var(--accent)}.nav-ask{width:54px;height:54px;margin:0 auto;border-radius:19px;border:0;display:grid;place-items:center;background:var(--accent-grad);color:var(--accent-ink);box-shadow:var(--shadow-accent);transition:transform .2s var(--spring)}.nav-ask:active{transform:scale(.92)}.nav-ask.active{outline:3px solid var(--accent-soft)}.side-nav{display:none}@media(min-width:1024px){.app{display:grid;grid-template-columns:248px 1fr}.bottom-nav{display:none}.side-nav{display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100dvh;padding:26px 16px;border-right:1px solid var(--border);background:var(--surface-glass);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.side-nav .brand{margin:0 10px 22px}.side-link{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:12px;color:var(--ink-2);font-weight:550;border:0;background:none;text-align:left;font-size:14.5px}.side-link:hover{background:var(--surface-3);color:var(--ink)}.side-link.active{background:var(--accent-soft);color:var(--ink)}.side-link.active svg{color:var(--accent)}.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:8px}.main{max-width:1240px;padding:30px 40px 60px}.fab{display:none!important}}.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-size:21px;font-weight:560;letter-spacing:-.02em}.brand-mark{width:32px;height:32px;border-radius:11px;background:var(--accent-grad);display:grid;place-items:center;color:var(--accent-ink);box-shadow:var(--shadow-accent)}.fab{position:fixed;right:18px;bottom:calc(var(--nav-h) + 16px + var(--safe-b));z-index:39;width:56px;height:56px;border-radius:20px;border:1px solid var(--border);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-2);display:grid;place-items:center;transition:transform .2s var(--spring)}.fab:active{transform:scale(.9) rotate(45deg)}.demo-banner{display:flex;align-items:center;gap:10px;padding:9px 14px;border-radius:14px;margin-bottom:14px;font-size:13px;background:var(--info-soft);color:var(--info);border:1px solid var(--border)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-1);padding:18px;position:relative}.card.flat{box-shadow:none;background:var(--surface-2)}.card.tight{padding:14px}.card-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.card-title h2,.card-title h3{margin:0;font-size:15px;font-weight:650;letter-spacing:-.005em}.section{margin-top:18px}.section-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:6px 12px;margin:26px 4px 10px}.section-head h2{margin:0;font-size:17px;font-weight:650;letter-spacing:-.01em}.stack{display:flex;flex-direction:column;gap:12px}.grid{display:grid;gap:14px}@media(min-width:720px){.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:repeat(3,1fr)}}@media(min-width:1024px){.dash{display:grid;grid-template-columns:repeat(12,1fr);gap:18px;align-items:start}.span-4{grid-column:span 4}.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}.span-8{grid-column:span 8}.span-12{grid-column:span 12}}.dash>*+*{margin-top:14px}@media(min-width:1024px){.dash>*+*{margin-top:0}}.hero{background:var(--hero-grad);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-2);padding:22px 20px 20px;position:relative;overflow:hidden;text-align:center}.hero:before{content:"";position:absolute;inset:-40% -20% auto;height:300px;background:var(--accent-grad);opacity:.07;filter:blur(50px);pointer-events:none}.ring-wrap{position:relative;width:min(270px,78vw);max-width:100%;aspect-ratio:1;margin:4px auto 6px}.ring-wrap svg{width:100%;height:100%;transform:rotate(-90deg)}.ring-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:2px}.ring-label{font-size:12.5px;font-weight:600;color:var(--ink-2);letter-spacing:.02em}.ring-amount{font-family:var(--font-display);font-weight:520;font-size:clamp(46px,13vw,62px);line-height:1.02;letter-spacing:-.035em;font-variant-numeric:lining-nums tabular-nums}.ring-amount .cents{font-size:.42em;vertical-align:.95em;margin-left:2px;color:var(--ink-2);letter-spacing:0}.ring-sub{font-size:13px;color:var(--ink-2)}.ring-arc{transition:stroke-dashoffset 1.1s var(--ease)}.hero-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}.hero-stat{background:var(--surface-glass);border:1px solid var(--border);border-radius:16px;padding:10px 6px}.hero-stat .v{font-weight:650;font-size:15.5px}.hero-stat .k{font-size:11.5px;color:var(--ink-2);margin-top:1px}.hero-why{margin-top:12px;font-size:13px;color:var(--ink-2);background:none;border:0;display:inline-flex;gap:6px;align-items:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 18px;border-radius:14px;font-weight:600;border:1px solid var(--border-strong);background:var(--surface);color:var(--ink);transition:transform .15s var(--ease),background .2s,opacity .2s;white-space:nowrap}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;pointer-events:none}.btn.primary{background:var(--accent-grad);color:var(--accent-ink);border-color:transparent;box-shadow:var(--shadow-accent)}.btn.ghost{background:transparent;border-color:transparent;color:var(--ink-2)}.btn.soft{background:var(--accent-soft);border-color:transparent;color:var(--accent)}.btn.danger{color:var(--neg);border-color:var(--neg-soft);background:var(--neg-soft)}.btn.sm{height:34px;padding:0 12px;border-radius:11px;font-size:13.5px}.btn.block{width:100%}.btn.lg{height:52px;font-size:16px;border-radius:16px}.quick{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px}.quick button{display:flex;flex-direction:column;align-items:center;gap:7px;padding:12px 4px;border-radius:18px;border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-1);font-size:12px;font-weight:600;color:var(--ink-2);transition:transform .15s var(--ease)}.quick button:active{transform:scale(.95)}.quick .qi{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}.seg{display:inline-flex;padding:3px;gap:2px;border-radius:13px;background:var(--surface-3);border:1px solid var(--border);max-width:100%;overflow-x:auto;scrollbar-width:none}.seg button{border:0;background:transparent;padding:7px 13px;border-radius:10px;font-size:13px;font-weight:600;color:var(--ink-2);white-space:nowrap;transition:background .2s,color .2s}.seg button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}.seg.full{display:flex;width:100%}.seg.full button{flex:1}.chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 11px;border-radius:999px;font-size:12.5px;font-weight:600;border:1px solid var(--border);background:var(--surface);color:var(--ink-2);white-space:nowrap}.chip.on{background:var(--ink);color:var(--bg);border-color:transparent}.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11.5px;font-weight:650;background:var(--surface-3);color:var(--ink-2)}.badge.pos{background:var(--pos-soft);color:var(--pos)}.badge.neg{background:var(--neg-soft);color:var(--neg)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.accent{background:var(--accent-soft);color:var(--accent)}.field{display:flex;flex-direction:column;gap:6px}.field>span{font-size:12.5px;font-weight:600;color:var(--ink-2)}.field .hint{font-size:12px;color:var(--ink-3);font-weight:500}.input,select.input,textarea.input{height:46px;border-radius:13px;border:1px solid var(--border-strong);background:var(--surface-2);padding:0 13px;width:100%;outline:none;transition:border-color .15s,box-shadow .15s;font-size:16px}textarea.input{height:auto;padding:11px 13px;min-height:80px;resize:vertical}.input:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.input.invalid{border-color:var(--neg)}.money-input{position:relative}.money-input .cur{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--ink-3);font-weight:600}.money-input .input{padding-left:28px;font-variant-numeric:tabular-nums}.big-amount{font-family:var(--font-display);font-size:44px;text-align:center;border:0;background:transparent;width:100%;outline:none;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.form-grid{display:grid;gap:14px}@media(min-width:560px){.form-grid.two{grid-template-columns:1fr 1fr}}.toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0}.switch{position:relative;width:46px;height:28px;flex:none}.switch input{opacity:0;width:0;height:0;position:absolute}.switch span{position:absolute;inset:0;border-radius:99px;background:var(--surface-3);border:1px solid var(--border-strong);transition:background .2s}.switch span:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--surface);box-shadow:0 1px 3px #00000040;transition:transform .25s var(--spring)}.switch input:checked+span{background:var(--accent);border-color:transparent}.switch input:checked+span:after{transform:translate(18px)}.switch input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}input[type=range]{width:100%;accent-color:var(--accent)}.list{display:flex;flex-direction:column}.list-row{display:flex;align-items:center;gap:12px;padding:11px 2px;border-bottom:1px solid var(--border);min-height:56px;background:none;border-left:0;border-right:0;border-top:0;text-align:left;width:100%;color:inherit}.list-row:last-child{border-bottom:0}button.list-row:active{background:var(--surface-3)}.list-row .t{font-weight:600;font-size:14.5px}.list-row .s{font-size:12.5px;color:var(--ink-2)}.cat-dot{width:38px;height:38px;border-radius:13px;display:grid;place-items:center;flex:none;color:#fff}.day-head{font-size:12px;font-weight:650;color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;margin:18px 4px 6px;display:flex;justify-content:space-between;gap:10px}.day-head span:last-child{text-transform:none;letter-spacing:0;font-weight:600}.amount{font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}.amount.in{color:var(--pos)}.amount.merged{text-decoration:line-through;color:var(--ink-3)}.ev{border-radius:14px;padding:10px 12px;display:flex;align-items:center;gap:12px;border:1px solid var(--border);background:var(--surface)}.ev.actual{background:var(--surface-2)}.ev.scheduled,.ev.confirmed{border-style:solid}.ev.estimated{border-style:dashed;border-color:var(--border-strong)}.ev.hypothetical{border-style:dashed;border-color:var(--accent);background:var(--accent-soft)}.ev.hypothetical .t{font-style:italic}.ev-mark{width:10px;height:10px;border-radius:50%;flex:none}.bar{height:8px;border-radius:99px;background:var(--ring-track);overflow:hidden}.bar>i{display:block;height:100%;border-radius:inherit;background:var(--accent-grad);transition:width .9s var(--ease)}.stackbar{display:flex;height:12px;border-radius:99px;overflow:hidden;gap:2px;background:var(--ring-track)}.stackbar>i{display:block;height:100%;transition:width .9s var(--ease)}.score-pill{display:inline-flex;align-items:baseline;gap:4px;font-family:var(--font-display);font-size:36px;font-weight:520;letter-spacing:-.03em}.insights{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -16px;padding:2px 16px 8px;scrollbar-width:none}.insights::-webkit-scrollbar{display:none}.insight{scroll-snap-align:start;flex:0 0 min(300px,82%);border-radius:20px;padding:15px;border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:8px}.insight .ic{width:30px;height:30px;border-radius:10px;display:grid;place-items:center}.insight.positive .ic{background:var(--pos-soft);color:var(--pos)}.insight.neutral .ic{background:var(--info-soft);color:var(--info)}.insight.attention .ic{background:var(--warn-soft);color:var(--warn)}.insight.warning .ic{background:var(--neg-soft);color:var(--neg)}.insight .t{font-weight:600;font-size:14px;line-height:1.35}.insight .d{font-size:12.5px;color:var(--ink-2)}@media(min-width:1024px){.insights{margin:0;padding:2px;flex-wrap:wrap}.insight{flex:1 1 260px}}.chart{width:100%;display:block;touch-action:pan-y;user-select:none;-webkit-user-select:none}.chart text{fill:var(--ink-3);font-size:10.5px;font-family:var(--font-ui)}.chart .grid-line{stroke:var(--chart-grid)}.chart-tip{position:absolute;pointer-events:none;background:var(--surface);border:1px solid var(--border-strong);border-radius:12px;padding:8px 10px;box-shadow:var(--shadow-2);font-size:12px;min-width:140px;transform:translate(-50%);z-index:3}.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--ink-2)}.legend i{display:inline-block;width:14px;height:3px;border-radius:2px;margin-right:6px;vertical-align:middle}.legend i.dash{background:repeating-linear-gradient(90deg,currentColor 0 4px,transparent 4px 7px);height:2px}.scrim{position:fixed;inset:0;background:var(--scrim);z-index:80;animation:fade .25s var(--ease);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:81;max-height:92dvh;overflow-y:auto;overscroll-behavior:contain;background:var(--bg);border-radius:28px 28px 0 0;box-shadow:var(--shadow-2);padding:8px 18px calc(22px + var(--safe-b));animation:rise .36s var(--ease)}.sheet-grip{width:40px;height:5px;border-radius:9px;background:var(--border-strong);margin:4px auto 12px}.sheet-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:10px}.sheet-head h2{margin:0;font-size:20px;font-family:var(--font-display);font-weight:540;letter-spacing:-.02em}.sheet-foot{display:flex;gap:10px;margin-top:20px;position:sticky;bottom:calc(-22px - var(--safe-b));background:var(--bg);padding:12px 0 calc(4px + var(--safe-b))}@media(min-width:720px){.sheet{inset:50% auto auto 50%;transform:translate(-50%,-50%);width:min(560px,92vw);max-height:86vh;border-radius:26px;animation:pop .3s var(--ease);padding-bottom:22px}.sheet-grip{display:none}.sheet-foot{bottom:-22px}}.toasts{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-h) + 16px + var(--safe-b));z-index:90;display:flex;flex-direction:column;gap:8px;width:min(440px,calc(100% - 24px))}@media(min-width:1024px){.toasts{bottom:24px}}.toast{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:16px;background:var(--ink);color:var(--bg);box-shadow:var(--shadow-2);font-size:14px;font-weight:550;animation:rise .3s var(--spring)}.toast.error{background:var(--neg);color:#fff}.toast button{margin-left:auto;background:none;border:0;color:inherit;font-weight:700;text-decoration:underline;text-underline-offset:3px}.empty{text-align:center;padding:34px 18px;color:var(--ink-2)}.empty .art{width:72px;height:72px;border-radius:24px;margin:0 auto 14px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}.empty h3{margin:0 0 6px;color:var(--ink);font-size:16px}.empty p{margin:0 auto 14px;max-width:320px;font-size:13.5px}.skel{background:linear-gradient(90deg,var(--surface-3) 0%,var(--surface-2) 50%,var(--surface-3) 100%);background-size:200% 100%;animation:shimmer 1.4s infinite linear;border-radius:14px}.chat{display:flex;flex-direction:column;gap:14px;padding-bottom:120px}.bubble{max-width:88%;padding:12px 14px;border-radius:20px;font-size:14.5px;line-height:1.5;animation:rise .3s var(--ease)}.bubble.me{align-self:flex-end;background:var(--accent-grad);color:var(--accent-ink);border-bottom-right-radius:6px}.bubble.ai{align-self:flex-start;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-1);border-bottom-left-radius:6px}.facts{margin:10px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}.facts li{padding:8px 10px;border-radius:12px;background:var(--surface-2);border:1px solid var(--border);font-size:13.5px}.composer{position:fixed;left:50%;transform:translate(-50%);bottom:calc(var(--nav-h) + 12px + var(--safe-b));width:min(600px,calc(100% - 24px));z-index:38;display:flex;gap:8px;padding:6px;border-radius:20px;background:var(--surface-glass);border:1px solid var(--border);box-shadow:var(--shadow-2);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.composer .input{border:0;background:transparent;box-shadow:none}@media(min-width:1024px){.composer{bottom:24px;left:calc(50% + 124px)}}.auth{min-height:100dvh;display:grid;place-items:center;padding:24px 18px}.auth-card{width:min(440px,100%)}.auth-hero{text-align:center;margin-bottom:26px}.auth-hero h1{font-family:var(--font-display);font-weight:500;font-size:clamp(34px,9vw,46px);line-height:1.05;letter-spacing:-.035em;margin:18px 0 10px}.auth-hero p{color:var(--ink-2);margin:0 auto;max-width:340px}.steps{display:flex;gap:6px;margin-bottom:20px}.steps i{flex:1;height:4px;border-radius:9px;background:var(--ring-track);transition:background .4s}.steps i.on{background:var(--accent)}.theme-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.theme-card{border-radius:18px;border:2px solid var(--border);padding:8px;background:var(--surface);text-align:center;font-size:12.5px;font-weight:600;transition:border-color .2s,transform .2s var(--spring)}.theme-card.on{border-color:var(--accent);transform:translateY(-2px)}.theme-swatch{height:64px;border-radius:12px;margin-bottom:7px;position:relative;overflow:hidden}.theme-swatch i{position:absolute;border-radius:6px}.pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}.pick{border:1px solid var(--border);background:var(--surface);border-radius:16px;padding:12px;text-align:left;display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:13.5px;transition:border-color .2s,background .2s}.pick.on{border-color:var(--accent);background:var(--accent-soft)}.pick .pi{color:var(--accent)}.mode-card{border:1.5px solid var(--border);border-radius:18px;padding:14px;background:var(--surface);text-align:left;width:100%;transition:border-color .2s}.mode-card.on{border-color:var(--accent);background:var(--accent-soft)}.compare{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:0;font-size:13.5px}.compare>div{padding:9px 8px;border-bottom:1px solid var(--border)}.compare .h{font-weight:650;color:var(--ink-2);font-size:12px}.delta-up{color:var(--pos);font-weight:650}.delta-down{color:var(--neg);font-weight:650}.page{animation:page-in .42s var(--ease)}@keyframes page-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes rise{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}@keyframes pop{0%{transform:translate(-50%,-46%) scale(.97);opacity:0}to{transform:translate(-50%,-50%);opacity:1}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.stagger>*{animation:page-in .5s var(--ease) both}.stagger>*:nth-child(2){animation-delay:.04s}.stagger>*:nth-child(3){animation-delay:.08s}.stagger>*:nth-child(4){animation-delay:.12s}.stagger>*:nth-child(5){animation-delay:.16s}.stagger>*:nth-child(6){animation-delay:.2s}.stagger>*:nth-child(n+7){animation-delay:.24s}.typing i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--ink-3);margin-right:4px;animation:pulse 1s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}:root{--spring-soft: cubic-bezier(.22, 1.25, .36, 1)}.brand-mark rect{transform-box:fill-box;transform-origin:center bottom}.brand-mark.build rect{animation:stack-drop .62s var(--spring-soft) both}.brand-mark.build rect:nth-child(1){animation-delay:.05s}.brand-mark.build rect:nth-child(2){animation-delay:.2s}.brand-mark.build rect:nth-child(3){animation-delay:.35s}@keyframes stack-drop{0%{transform:translateY(-140%) scaleY(.8);opacity:0}60%{transform:translateY(6%) scaleY(.92);opacity:1}to{transform:none}}@media(hover:hover){.brand:hover .brand-mark rect,.brand-mark.hoverable:hover rect{animation:stack-hop .5s var(--spring-soft)}.brand:hover .brand-mark rect:nth-child(2),.brand-mark.hoverable:hover rect:nth-child(2){animation-delay:.06s}.brand:hover .brand-mark rect:nth-child(3),.brand-mark.hoverable:hover rect:nth-child(3){animation-delay:.12s}}@keyframes stack-hop{40%{transform:translateY(-18%)}to{transform:none}}.seg{position:relative;isolation:isolate}.seg button.on{background:transparent;box-shadow:none}.seg-thumb{position:absolute;z-index:-1;border-radius:10px;background:var(--surface);box-shadow:var(--shadow-1);transition:left .38s var(--spring-soft),width .38s var(--spring-soft),top .2s,height .2s;pointer-events:none}.seg button{transition:color .25s}.bottom-nav{isolation:isolate}.nav-pill{position:absolute;z-index:-1;height:46px;border-radius:16px;background:var(--accent-soft);transition:left .45s var(--spring-soft),width .45s var(--spring-soft),opacity .2s;pointer-events:none}.nav-item.active{background:transparent}.nav-item svg{transition:transform .35s var(--spring-soft)}.nav-item.active svg{transform:translateY(-1px) scale(1.08)}.nav-item:active svg{transform:scale(.86)}.side-nav{position:sticky}.side-pill{position:absolute;left:16px;right:16px;border-radius:12px;background:var(--accent-soft);transition:top .42s var(--spring-soft),height .3s,opacity .2s;pointer-events:none;z-index:0}.side-link{position:relative;z-index:1;transition:color .2s}.side-link.active{background:transparent}.nav-ask{animation:ask-breathe 5s ease-in-out infinite}.nav-ask svg{transition:transform .5s var(--spring-soft)}.nav-ask:hover svg,.nav-ask.active svg{transform:rotate(18deg) scale(1.06)}@keyframes ask-breathe{0%,to{box-shadow:var(--shadow-accent)}50%{box-shadow:var(--shadow-accent),0 0 0 7px var(--accent-soft)}}.ring-wrap:before{content:"";position:absolute;inset:9%;border-radius:50%;z-index:-1;background:conic-gradient(from 0deg,transparent 0 55%,var(--accent) 72%,var(--accent-2) 86%,transparent 100%);opacity:.16;filter:blur(22px);animation:halo 14s linear infinite}.ring-wrap{isolation:isolate}@keyframes halo{to{transform:rotate(360deg)}}.ring-amount{transition:color .3s;display:inline-block}.bump{animation:bump .52s var(--spring-soft)}@keyframes bump{0%{transform:scale(1)}35%{transform:scale(1.06)}to{transform:scale(1)}}.dip{animation:dip .52s var(--spring-soft)}@keyframes dip{0%{transform:none}35%{transform:translateY(3px) scale(.97)}to{transform:none}}@media(hover:hover){.insight,.pick,.mode-card,.quick button,button.card,.theme-card{transition:transform .28s var(--spring-soft),box-shadow .28s var(--ease),border-color .2s,background .2s}.insight:hover,.pick:hover,.mode-card:hover,.quick button:hover,button.card:hover,.theme-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-2)}.btn.primary:hover{filter:brightness(1.06);transform:translateY(-1px)}button.list-row{transition:background .18s;border-radius:12px}button.list-row:hover{background:var(--surface-2)}}.btn,.icon-btn,.chip{transition:transform .18s var(--spring-soft),background .2s,color .2s,box-shadow .2s,filter .2s}.chip:active,.icon-btn:active{transform:scale(.94)}.quick .qi{transition:transform .35s var(--spring-soft)}.quick button:hover .qi{transform:rotate(-6deg) scale(1.08)}.bar>i{position:relative;overflow:hidden;animation:grow-x 1s var(--ease) both;transform-origin:left center}.bar>i:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);transform:translate(-100%);animation:sweep 1.4s .9s var(--ease) both}.stackbar>i{animation:grow-x .9s var(--ease) both;transform-origin:left center}.stackbar>i:nth-child(2){animation-delay:.08s}.stackbar>i:nth-child(3){animation-delay:.16s}.stackbar>i:nth-child(4){animation-delay:.24s}.stackbar>i:nth-child(5){animation-delay:.32s}@keyframes grow-x{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes sweep{to{transform:translate(100%)}}.draw{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 1.25s .1s var(--ease) forwards}@keyframes draw{to{stroke-dashoffset:0}}.fade-in{animation:fade .9s .3s var(--ease) both}.pop{transform-box:fill-box;transform-origin:center;animation:pop .45s var(--spring-soft) both}@keyframes pop{0%{transform:scale(0)}to{transform:scale(1)}}.spark-bar{transform-origin:bottom;animation:grow-y .7s var(--spring-soft) both}@keyframes grow-y{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.rows-in>*{animation:row-in .45s var(--ease) both}.rows-in>*:nth-child(2){animation-delay:.03s}.rows-in>*:nth-child(3){animation-delay:.06s}.rows-in>*:nth-child(4){animation-delay:.09s}.rows-in>*:nth-child(5){animation-delay:.12s}.rows-in>*:nth-child(6){animation-delay:.15s}.rows-in>*:nth-child(7){animation-delay:.18s}.rows-in>*:nth-child(8){animation-delay:.21s}.rows-in>*:nth-child(n+9){animation-delay:.24s}@keyframes row-in{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:none}}.toast:not(.error) svg path,.toast:not(.error) svg polyline{stroke-dasharray:24;stroke-dashoffset:24;animation:check-draw .45s .12s var(--ease) forwards}@keyframes check-draw{to{stroke-dashoffset:0}}.toast{animation:toast-in .45s var(--spring-soft)}@keyframes toast-in{0%{transform:translateY(18px) scale(.96);opacity:0}to{transform:none;opacity:1}}.celebrations{position:fixed;inset:0;pointer-events:none;z-index:120;overflow:hidden}.burst{position:absolute;width:0;height:0}.burst-bit{position:absolute;left:0;top:0;border-radius:3px;opacity:0;animation:bit 1.1s var(--ease) both}.burst-goal .burst-bit{animation-duration:1.6s}@keyframes bit{0%{transform:translate(-50%,-50%) rotate(0) scale(.4);opacity:0}12%{opacity:1}70%{opacity:1}to{transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy) + 60px)) rotate(var(--rot)) scale(1);opacity:0}}.burst-stack{position:absolute;left:0;top:0;transform:translate(-50%,-100%);display:flex;flex-direction:column-reverse;align-items:center;gap:3px}.burst-stack i{display:block;height:7px;border-radius:4px;background:var(--accent-grad);animation:stack-up 1.1s var(--spring-soft) both}.burst-stack i:nth-child(1){width:34px;animation-delay:0s}.burst-stack i:nth-child(2){width:28px;animation-delay:.1s;margin-left:6px}.burst-stack i:nth-child(3){width:22px;animation-delay:.2s;margin-left:12px}.burst-goal .burst-stack i{height:10px}.burst-goal .burst-stack i:nth-child(1){width:52px}.burst-goal .burst-stack i:nth-child(2){width:42px}.burst-goal .burst-stack i:nth-child(3){width:32px}@keyframes stack-up{0%{transform:translateY(-40px);opacity:0}35%{transform:translateY(3px);opacity:1}55%{transform:none}80%{opacity:1;transform:translateY(-14px)}to{opacity:0;transform:translateY(-34px)}}.scene{position:relative;overflow:hidden}.orb{position:absolute;border-radius:50%;filter:blur(40px);opacity:.35;pointer-events:none;animation:drift 16s ease-in-out infinite alternate}.orb.a{width:220px;height:220px;background:var(--accent);top:-60px;left:-40px}.orb.b{width:200px;height:200px;background:var(--accent-2);bottom:-70px;right:-30px;animation-duration:19s;animation-delay:-6s}.orb.c{width:140px;height:140px;background:var(--c3);top:40%;left:60%;opacity:.18;animation-duration:23s}@keyframes drift{0%{transform:translate(0) scale(1)}50%{transform:translate(30px,18px) scale(1.12)}to{transform:translate(-20px,28px) scale(.95)}}.scene-stack{position:absolute;left:18px;bottom:18px;display:flex;flex-direction:column-reverse;gap:4px}.scene-stack i{display:block;height:9px;border-radius:5px;background:var(--accent-grad);opacity:0;animation:build 6s var(--spring-soft) infinite}.scene-stack i:nth-child(1){width:54px;animation-delay:.2s}.scene-stack i:nth-child(2){width:46px;margin-left:5px;animation-delay:.5s}.scene-stack i:nth-child(3){width:40px;margin-left:10px;animation-delay:.8s}.scene-stack i:nth-child(4){width:33px;margin-left:15px;animation-delay:1.1s}.scene-stack i:nth-child(5){width:26px;margin-left:20px;animation-delay:1.4s}@keyframes build{0%{transform:translateY(-50px);opacity:0}8%{transform:translateY(2px);opacity:1}11%{transform:none}82%{transform:none;opacity:1}92%,to{transform:translateY(6px);opacity:0}}.note{position:absolute;display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;font-size:11.5px;font-weight:650;background:var(--surface-glass);border:1px solid var(--border);box-shadow:var(--shadow-1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);white-space:nowrap;animation:note-in .7s var(--spring-soft) both,bob 5s ease-in-out infinite}.note .dot{width:7px;height:7px;border-radius:50%}@keyframes note-in{0%{opacity:0;transform:translateY(12px) scale(.9)}to{opacity:1;transform:none}}@keyframes bob{0%,to{translate:0 0}50%{translate:0 -5px}}.step-fwd{animation:step-fwd .45s var(--ease) both}.step-back{animation:step-back .45s var(--ease) both}@keyframes step-fwd{0%{opacity:0;transform:translate(26px)}to{opacity:1;transform:none}}@keyframes step-back{0%{opacity:0;transform:translate(-26px)}to{opacity:1;transform:none}}.steps i{transition:background .45s var(--ease),transform .45s var(--spring-soft)}.steps i.now{transform:scaleY(1.6)}@media(prefers-reduced-motion:reduce){.celebrations,.orb,.ring-wrap:before{display:none}.draw{stroke-dashoffset:0}.scene-stack i,.note{opacity:1}}
