:root{--c-bg:#f8fafc;--c-surface:#fff;--c-ink:#0f172a;--c-muted:#64748b;--c-line:#e2e8f0;--c-primary:#4f46e5;--c-primary-soft:#eef2ff;--c-on-primary:#fff;--c-on-primary-muted:#c7d2fe;--c-ok:#10b981;--c-ok-soft:#ecfdf5;--c-ok-ink:#065f46;--c-warn:#f59e0b;--c-warn-soft:#fef3c7;--c-warn-ink:#92400e;--c-bad:#dc2626;--c-bad-soft:#fee2e2;--c-bad-ink:#991b1b;--c-m1-soft:#e0e7ff;--c-m1-ink:#3730a3;--c-m2-soft:#d1fae5;--c-m2-ink:#065f46;--c-joint-soft:#e2e8f0;--c-joint-ink:#334155;--c-m1-bar:#6366f1;--c-m2-bar:#10b981;--g-brand:linear-gradient(calc(135deg + var(--tilt-x,0) * 35deg), #4f46e5 0%, #7c3aed calc(48% + var(--tilt-y,0) * 14%), #0ea5a0 120%);--aura-3:#7c3aed1f;--g-ok:linear-gradient(90deg, #10b981, #22d3ee);--glow:0 18px 48px -18px #4f46e5a6;--glass:color-mix(in srgb, var(--c-surface) 78%, transparent);--aura-1:#6366f129;--aura-2:#10b9811f;--font-ui:"Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;--fs-xs:.75rem;--fs-sm:.8125rem;--fs-md:clamp(.9375rem, .9rem + .2vw, 1rem);--fs-lg:clamp(1.0625rem, 1rem + .4vw, 1.25rem);--fs-xl:clamp(1.5rem, 1.3rem + 1.2vw, 2rem);--fs-hero:clamp(2rem, 1.6rem + 2.4vw, 2.75rem);--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--r-sm:10px;--r-md:16px;--r-lg:24px;--r-pill:999px;--page-max:560px;--sidebar-w:232px;--canvas-max:1040px;--ease:cubic-bezier(.2, .8, .2, 1);--dur-fast:.14s;--dur:.26s;--dur-slow:.42s;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--c-bg:#070b14;--c-surface:#111a2c;--glow:0 18px 56px -16px #6366f1cc;--aura-1:#6366f147;--aura-2:#10b98129;--aura-3:#a855f733;--c-ink:#f1f5f9;--c-muted:#94a3b8;--c-line:#243047;--c-primary:#6366f1;--c-primary-soft:#1e1b4b;--c-on-primary:#fff;--c-on-primary-muted:#c7d2fe;--c-ok:#34d399;--c-ok-soft:#062e22;--c-ok-ink:#6ee7b7;--c-warn:#fbbf24;--c-warn-soft:#3a2a06;--c-warn-ink:#fcd34d;--c-bad:#f87171;--c-bad-soft:#3b1212;--c-bad-ink:#fca5a5;--c-m1-soft:#312e81;--c-m1-ink:#c7d2fe;--c-m2-soft:#064e3b;--c-m2-ink:#a7f3d0;--c-joint-soft:#243047;--c-joint-ink:#cbd5e1;--c-m1-bar:#818cf8;--c-m2-bar:#34d399;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--c-bg:#070b14;--c-surface:#111a2c;--glow:0 18px 56px -16px #6366f1cc;--aura-1:#6366f147;--aura-2:#10b98129;--aura-3:#a855f733;--c-ink:#f1f5f9;--c-muted:#94a3b8;--c-line:#243047;--c-primary:#6366f1;--c-primary-soft:#1e1b4b;--c-on-primary:#fff;--c-on-primary-muted:#c7d2fe;--c-ok:#34d399;--c-ok-soft:#062e22;--c-ok-ink:#6ee7b7;--c-warn:#fbbf24;--c-warn-soft:#3a2a06;--c-warn-ink:#fcd34d;--c-bad:#f87171;--c-bad-soft:#3b1212;--c-bad-ink:#fca5a5;--c-m1-soft:#312e81;--c-m1-ink:#c7d2fe;--c-m2-soft:#064e3b;--c-m2-ink:#a7f3d0;--c-joint-soft:#243047;--c-joint-ink:#cbd5e1;--c-m1-bar:#818cf8;--c-m2-bar:#34d399;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--c-bg);color:var(--c-ink);font:500 var(--fs-md)/1.45 var(--font-ui);-webkit-font-smoothing:antialiased;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);margin:0}button,input,select{font:inherit;color:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}h1,h2,h3,p{margin:0}:focus-visible{outline:2px solid var(--c-primary);outline-offset:2px}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum";white-space:nowrap}.muted{color:var(--c-muted)}.sm{font-size:var(--fs-sm)}.xs{font-size:var(--fs-xs)}.aurora{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.aurora i{will-change:transform;width:90vmax;height:90vmax;translate:calc(var(--tilt-x,0) * var(--lean,28px)) calc(var(--tilt-y,0) * var(--lean,28px));border-radius:50%;position:absolute}.aurora i:first-child{background:radial-gradient(closest-side, var(--aura-1), transparent);animation:26s ease-in-out infinite alternate float-a;top:-40vmax;left:-35vmax}.aurora i:nth-child(2){background:radial-gradient(closest-side, var(--aura-2), transparent);--lean:-36px;animation:32s ease-in-out infinite alternate float-b;bottom:-45vmax;right:-40vmax}.aurora i:nth-child(3){background:radial-gradient(closest-side, var(--aura-3), transparent);--lean:48px;width:60vmax;height:60vmax;animation:38s ease-in-out infinite alternate float-c;top:30vh;left:10vmax}@keyframes float-a{to{transform:translate(18vmax,12vmax)scale(1.15)}}@keyframes float-b{to{transform:translate(-16vmax,-14vmax)scale(.9)}}@keyframes float-c{to{transform:translate(-22vmax,-18vh)scale(1.25)}}html.has-cursor,html.has-cursor *{cursor:none!important}.cursor{z-index:100;pointer-events:none;will-change:transform;mix-blend-mode:difference;position:fixed;top:0;left:0}.cursor i{width:14px;height:14px;transition:width var(--dur) var(--ease), height var(--dur) var(--ease), margin var(--dur) var(--ease), opacity var(--dur-fast), border-radius var(--dur) var(--ease);background:#fff;border-radius:50%;margin:-7px 0 0 -7px;position:absolute;top:0;left:0}.cursor[data-mode=hover] i{width:46px;height:46px;margin:-23px 0 0 -23px}.cursor[data-mode=down] i{width:30px;height:30px;margin:-15px 0 0 -15px}.cursor[data-mode=text] i{border-radius:2px;width:3px;height:22px;margin:-11px 0 0 -1px}.cursor[data-mode=out] i{opacity:0}.route{gap:var(--sp-4);flex-direction:column;display:flex}.page{max-width:var(--page-max);gap:var(--sp-4);min-height:100dvh;padding:max(var(--sp-4), env(safe-area-inset-top)) max(var(--sp-4), env(safe-area-inset-right)) calc(112px + env(safe-area-inset-bottom)) max(var(--sp-4), env(safe-area-inset-left));flex-direction:column;margin:0 auto;display:flex}.stack{gap:var(--sp-3);flex-direction:column;display:flex}.row{justify-content:space-between;align-items:center;gap:var(--sp-3);min-width:0;display:flex}.grow{flex:1;min-width:0}.screen{gap:var(--sp-4);animation:rise var(--dur) var(--ease) both;flex-direction:column;display:flex}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}.section-h{font-size:var(--fs-sm);color:var(--c-muted);font-weight:700}.title{font-size:var(--fs-lg);letter-spacing:-.01em;font-weight:800}.card{background:var(--glass);-webkit-backdrop-filter:blur(18px)saturate(1.3);border:1px solid var(--c-line);border-radius:var(--r-md);padding:var(--sp-4)}.card.flush{padding:0;overflow:hidden}.hero{background:var(--g-brand);box-shadow:var(--glow);isolation:isolate;color:var(--c-on-primary);border-radius:var(--r-lg);padding:var(--sp-5);gap:var(--sp-2);transition:background var(--dur) var(--ease);flex-direction:column;display:flex;position:relative;overflow:hidden}.hero .label{color:var(--c-on-primary-muted);font-size:var(--fs-sm);font-weight:700}.hero .what{font-size:var(--fs-lg);font-weight:700}.hero .amount{font-size:var(--fs-hero);letter-spacing:-.02em;font-weight:800;line-height:1.05}.hero:after{content:"";z-index:-1;translate:calc(var(--tilt-x,0) * 22%) calc(var(--tilt-y,0) * 22%);animation:drift 9s var(--ease) infinite alternate;background:radial-gradient(closest-side,#ffffff47,#0000);position:absolute;inset:-40%}@keyframes drift{0%{transform:translate(-35%,-30%)}to{transform:translate(35%,25%)}}.hero.done{background:var(--c-ok-soft);color:var(--c-ok-ink);box-shadow:none}.hero.done:after{display:none}.hero.done .label{color:var(--c-ok-ink)}.btn{border:1px solid var(--c-line);background:var(--c-surface);border-radius:var(--r-sm);min-height:44px;transition:transform var(--dur-fast) var(--ease), background var(--dur-fast), opacity var(--dur-fast);padding:11px 16px;font-weight:700}.btn:active{transform:scale(.97)}.btn.primary{background:var(--g-brand);color:var(--c-on-primary);box-shadow:var(--glow);border-color:#0000}.btn.on-hero{background:var(--c-on-primary);border-color:var(--c-on-primary);color:var(--c-primary);margin-top:var(--sp-2)}.btn.ghost{color:var(--c-primary);background:0 0;border-color:#0000;padding-inline:8px}.btn.danger{background:var(--c-bad-soft);color:var(--c-bad-ink);border-color:#0000}.btn.block{width:100%}.btn:disabled{opacity:.5;cursor:default}.iconbtn{border-radius:var(--r-pill);border:1px solid var(--c-line);background:var(--c-surface);place-items:center;width:40px;height:40px;font-size:18px;display:grid}.item{align-items:center;gap:var(--sp-3);text-align:left;border:0;border-bottom:1px solid var(--c-line);width:100%;padding:14px var(--sp-4);transition:background var(--dur-fast), opacity var(--dur);background:0 0;display:flex}.item:last-child{border-bottom:0}.item:hover{background:color-mix(in srgb, var(--c-ink) 4%, transparent)}.item.done{opacity:.55}.item.done .name{text-decoration:line-through}.item .name{overflow-wrap:anywhere;font-weight:700}.tick{border-radius:var(--r-pill);border:2px solid var(--c-line);color:#0000;width:26px;height:26px;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), transform var(--dur) var(--ease);flex:none;place-items:center;font-size:14px;display:grid}.tick.on{background:var(--g-ok);color:var(--c-surface);animation:pop var(--dur-slow) var(--ease);border-color:#0000;box-shadow:0 0 #0000}@keyframes pop{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--c-ok) 60%, transparent);transform:scale(.6)}60%{transform:scale(1.18)}to{transform:scale(1);box-shadow:0 0 0 14px #0000}}.avatar{border-radius:var(--r-sm);width:34px;height:34px;font-size:var(--fs-xs);flex:none;place-items:center;font-weight:800;display:inline-grid}.avatar.m1{background:var(--c-m1-soft);color:var(--c-m1-ink)}.avatar.m2{background:var(--c-m2-soft);color:var(--c-m2-ink)}.avatar.joint{background:var(--c-joint-soft);color:var(--c-joint-ink)}.avatar.round{border-radius:var(--r-pill)}.avatars .avatar+.avatar{box-shadow:0 0 0 2px var(--c-bg);margin-left:-8px}.chip{font-size:var(--fs-xs);border-radius:var(--r-pill);background:var(--c-joint-soft);color:var(--c-joint-ink);white-space:nowrap;padding:2px 9px;font-weight:700;display:inline-block}.chip.ok{background:var(--c-ok-soft);color:var(--c-ok-ink)}.chip.warn{background:var(--c-warn-soft);color:var(--c-warn-ink)}.chip.bad{background:var(--c-bad-soft);color:var(--c-bad-ink)}.chip.m1{background:var(--c-m1-soft);color:var(--c-m1-ink)}.chip.m2{background:var(--c-m2-soft);color:var(--c-m2-ink)}.progress{border-radius:var(--r-pill);background:var(--c-line);height:6px;overflow:hidden}.progress i{border-radius:var(--r-pill);background:var(--g-ok);height:100%;transition:width var(--dur-slow) var(--ease);display:block}.progress.warn i{background:var(--c-warn)}.progress.bad i{background:var(--c-bad)}.sharebar{border-radius:var(--r-pill);gap:2px;height:8px;display:flex;overflow:hidden}.sharebar i{transition:flex-grow var(--dur-slow) var(--ease);border-radius:var(--r-pill)}.banner{border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);background:var(--c-warn-soft);color:var(--c-warn-ink)}.banner.bad{background:var(--c-bad-soft);color:var(--c-bad-ink)}.banner.info{background:var(--c-primary-soft);color:var(--c-ink)}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field>span{font-size:var(--fs-sm);color:var(--c-muted);font-weight:700}.field input,.field select{border:1px solid var(--c-line);border-radius:var(--r-sm);background:var(--c-bg);width:100%;min-width:0;max-width:100%;min-height:46px;transition:border-color var(--dur-fast), box-shadow var(--dur-fast);padding:11px 12px}.field input:focus,.field select:focus{border-color:var(--c-primary);box-shadow:0 0 0 4px color-mix(in srgb, var(--c-primary) 22%, transparent);outline:none}.field input[type=month],.field input[type=date]{appearance:none;display:block}.grid2{gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));display:grid}.months{grid-template-columns:repeat(6,1fr);gap:6px;display:grid}.months button,.seg button{border:1px solid var(--c-line);background:var(--c-bg);border-radius:var(--r-sm);font-size:var(--fs-sm);transition:background var(--dur-fast), color var(--dur-fast);padding:8px 0;font-weight:700}.months button[aria-pressed=true],.seg button[aria-pressed=true]{background:var(--c-primary);border-color:var(--c-primary);color:var(--c-on-primary)}.seg{grid-auto-columns:1fr;grid-auto-flow:column;gap:6px;display:grid}.option{gap:var(--sp-3);border:1px solid var(--c-line);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);background:var(--c-surface);text-align:left;width:100%;transition:border-color var(--dur-fast), background var(--dur-fast);align-items:flex-start;display:flex}.option[aria-pressed=true]{border-color:var(--c-primary);background:var(--c-primary-soft)}.check{align-items:center;gap:var(--sp-3);display:flex}.check input{appearance:none;border:2px solid var(--c-line);background:var(--c-bg);width:24px;height:24px;transition:background var(--dur-fast), border-color var(--dur-fast);border-radius:8px;flex:none;place-items:center;margin:0;display:grid}.check input:checked{background:var(--c-primary);border-color:var(--c-primary)}.check input:checked:after{content:"";border:solid var(--c-on-primary);border-width:0 2.5px 2.5px 0;width:6px;height:11px;transform:rotate(45deg)translateY(-1px)}.nav{left:max(12px, env(safe-area-inset-left));right:max(12px, env(safe-area-inset-right));bottom:max(12px, env(safe-area-inset-bottom));max-width:var(--page-max);border-radius:var(--r-lg);background:var(--glass);-webkit-backdrop-filter:blur(22px)saturate(1.4);border:1px solid var(--c-line);z-index:5;gap:4px;margin-inline:auto;padding:6px;display:flex;position:fixed;box-shadow:0 12px 40px -16px #02061773}.nav a{color:var(--c-muted);font-size:var(--fs-xs);border-radius:var(--r-md);white-space:nowrap;min-height:56px;transition:background var(--dur) var(--ease), color var(--dur) var(--ease), transform var(--dur-fast) var(--ease);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:9px 4px;font-weight:700;text-decoration:none;display:flex}.nav a:active{transform:scale(.94)}.nav a svg{width:24px;height:24px}.nav a[aria-current=page]{background:var(--g-brand);color:var(--c-on-primary);box-shadow:var(--glow)}.sheet-overlay{z-index:10;-webkit-backdrop-filter:blur(6px);background:#0206178c;position:fixed;inset:0}.sheet{z-index:11;width:100%;max-width:var(--page-max);background:var(--c-surface);border-radius:var(--r-lg) var(--r-lg) 0 0;max-height:92dvh;padding:var(--sp-3) var(--sp-4) calc(var(--sp-5) + env(safe-area-inset-bottom));gap:var(--sp-4);outline:none;flex-direction:column;margin-inline:auto;display:flex;position:fixed;bottom:0;left:0;right:0;overflow:hidden auto}.sheet-handle{border-radius:var(--r-pill);background:var(--c-line);flex:none;align-self:center;width:40px;height:4px}.sheet .title{margin:0}.avatar svg,.iconbtn svg,.nav svg{display:block}.stats{background:var(--c-line);border:1px solid var(--c-line);border-radius:var(--r-md);grid-template-columns:repeat(3,1fr);gap:1px;display:grid;overflow:hidden}.stats>div{background:var(--c-surface);padding:var(--sp-3);flex-direction:column;gap:2px;min-width:0;display:flex}.stats b{font-size:var(--fs-md);font-weight:800}.nav .brand{display:none}.cols{gap:var(--sp-4) var(--sp-5);grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));align-items:start;display:grid}@media (width>=960px){.page{max-width:none;margin-left:var(--sidebar-w);padding:var(--sp-6) clamp(var(--sp-5), 4vw, 56px) var(--sp-6)}.screen,.page>.banner{width:100%;max-width:var(--canvas-max);margin-inline:auto}.screen.narrow{max-width:640px}.nav{max-width:none;width:var(--sidebar-w);padding:var(--sp-5) var(--sp-3);border:0;border-right:1px solid var(--c-line);box-shadow:none;border-radius:0;flex-direction:column;gap:4px;margin:0;inset:0 auto 0 0}.nav .brand{font-size:var(--fs-lg);letter-spacing:-.02em;padding:0 var(--sp-3) var(--sp-4);font-weight:800;display:block}.nav a{border-radius:var(--r-sm);min-height:0;padding:11px var(--sp-3);font-size:var(--fs-md);justify-content:flex-start;gap:var(--sp-3);flex-direction:row;flex:none}.nav a svg{width:20px;height:20px}.sheet{bottom:var(--sp-5);border-radius:var(--r-lg)}.nav a:hover:not([aria-current]){background:color-mix(in srgb, var(--c-ink) 5%, transparent);color:var(--c-ink)}.hero{transform:perspective(1100px) rotateX(calc(var(--tilt-y,0) * -2.2deg)) rotateY(calc(var(--tilt-x,0) * 2.2deg))}.card,.item,.option{transition:transform var(--dur) var(--ease), border-color var(--dur), background var(--dur-fast), box-shadow var(--dur), opacity var(--dur)}.card:hover{border-color:color-mix(in srgb, var(--c-primary) 35%, var(--c-line));box-shadow:0 18px 44px -28px #4f46e58c}button.card:hover,.option:hover{transform:translateY(-2px)}.btn:hover:not(:disabled){transform:translateY(-1px)}.home{column-gap:var(--sp-5);grid-template-columns:minmax(0,1fr) 340px;align-content:start;display:grid}.home>*{grid-column:1}.home>.summary{top:var(--sp-6);grid-area:1/2/span 8;align-self:start;position:sticky}.home>header{justify-content:flex-start}.home>header>div{order:-1;margin-right:auto;text-align:left!important}}.chart{width:100%;min-width:0;height:clamp(200px,34vh,300px);overflow:hidden}.screen,.route,.card{min-width:0}.chart text{fill:var(--c-muted);font-size:clamp(9px,2.6vw,11px);font-family:var(--font-ui);font-weight:700}.tip{background:var(--c-surface);border:1px solid var(--c-line);border-radius:var(--r-sm);padding:var(--sp-2) var(--sp-3);font-size:var(--fs-sm);flex-direction:column;gap:2px;display:flex;box-shadow:0 12px 30px -14px #02061780}.legend{gap:var(--sp-3);font-size:var(--fs-sm);color:var(--c-muted);flex-wrap:wrap;display:flex}.legend i{border-radius:3px;width:10px;height:10px;margin-right:6px;display:inline-block}.catbar{gap:4px var(--sp-3);grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.catbar .progress{grid-column:1/-1}.center{min-height:100dvh;padding:var(--sp-5);text-align:center;place-items:center;display:grid}.swatch{border-radius:var(--r-sm);border:1px solid var(--c-line);height:56px}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}}
