:root{--font-display:"Instrument Serif","Cormorant Garamond","Times New Roman",serif;--font-sans:"IBM Plex Sans",ui-sans-serif,system-ui,-apple-system,sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace;--fs-xs:11px;--fs-sm:12.5px;--fs-base:14px;--fs-md:15px;--fs-lg:17px;--fs-xl:20px;--fs-2xl:28px;--fs-display-sm:40px;--fs-display:64px;--fs-display-lg:96px;--r-sm:8px;--r-md:12px;--r-lg:16px;--r-xl:22px;--r-pill:999px;--row-py:14px;--card-p:24px;--card-p-sm:18px;--gap:20px;--bg:oklch(0.985 0.004 85);--surface:oklch(0.975 0.006 85);--surface-2:oklch(0.96 0.008 85);--surface-sunk:oklch(0.945 0.008 85);--ink:oklch(0.22 0.012 75);--ink-2:oklch(0.42 0.012 75);--ink-3:oklch(0.58 0.012 75);--ink-4:oklch(0.72 0.008 75);--border:oklch(0.9 0.008 80);--border-strong:oklch(0.82 0.01 80);--hover:oklch(0.93 0.01 80);--accent:oklch(0.5 0.07 140);--accent-soft:oklch(0.94 0.04 140);--accent-ink:oklch(0.32 0.05 140);--pos:oklch(0.55 0.1 150);--pos-soft:oklch(0.93 0.05 150);--warn:oklch(0.66 0.13 75);--warn-soft:oklch(0.94 0.06 75);--neg:oklch(0.55 0.15 28);--neg-soft:oklch(0.94 0.05 28);--shadow-1:0 1px 0 oklch(1 0 0/.6) inset,0 1px 2px oklch(0 0 0/.04);--shadow-2:0 1px 0 oklch(1 0 0/.5) inset,0 8px 28px oklch(0 0 0/.07)}.theme-dark{--bg:oklch(0.17 0.008 80);--surface:oklch(0.205 0.008 80);--surface-2:oklch(0.235 0.008 80);--surface-sunk:oklch(0.155 0.008 80);--ink:oklch(0.96 0.005 85);--ink-2:oklch(0.78 0.008 80);--ink-3:oklch(0.6 0.008 80);--ink-4:oklch(0.42 0.008 80);--border:oklch(0.3 0.008 80);--border-strong:oklch(0.38 0.008 80);--hover:oklch(0.26 0.008 80);--accent:oklch(0.7 0.09 140);--accent-soft:oklch(0.3 0.04 140);--accent-ink:oklch(0.86 0.07 140);--pos:oklch(0.74 0.12 150);--pos-soft:oklch(0.28 0.05 150);--warn:oklch(0.78 0.14 75);--warn-soft:oklch(0.3 0.06 75);--neg:oklch(0.72 0.16 28);--neg-soft:oklch(0.3 0.07 28);--shadow-1:0 1px 0 oklch(1 0 0/.04) inset,0 1px 2px oklch(0 0 0/.25);--shadow-2:0 1px 0 oklch(1 0 0/.04) inset,0 12px 40px oklch(0 0 0/.35)}.accent-sage{--accent:oklch(0.5 0.07 140);--accent-soft:oklch(0.94 0.04 140);--accent-ink:oklch(0.32 0.05 140)}.accent-ink{--accent:oklch(0.32 0.02 270);--accent-soft:oklch(0.93 0.012 270);--accent-ink:oklch(0.22 0.02 270)}.accent-plum{--accent:oklch(0.42 0.1 330);--accent-soft:oklch(0.93 0.04 330);--accent-ink:oklch(0.3 0.07 330)}.accent-rust{--accent:oklch(0.52 0.12 45);--accent-soft:oklch(0.94 0.05 45);--accent-ink:oklch(0.35 0.08 45)}.theme-dark.accent-sage{--accent:oklch(0.74 0.09 140);--accent-soft:oklch(0.3 0.04 140);--accent-ink:oklch(0.88 0.07 140)}.theme-dark.accent-ink{--accent:oklch(0.75 0.02 270);--accent-soft:oklch(0.27 0.01 270);--accent-ink:oklch(0.92 0.01 270)}.theme-dark.accent-plum{--accent:oklch(0.75 0.1 330);--accent-soft:oklch(0.3 0.05 330);--accent-ink:oklch(0.88 0.07 330)}.theme-dark.accent-rust{--accent:oklch(0.75 0.12 45);--accent-soft:oklch(0.32 0.05 45);--accent-ink:oklch(0.9 0.08 45)}.density-compact{--row-py:9px;--card-p:18px;--card-p-sm:14px;--gap:14px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:var(--fs-base);font-feature-settings:"ss01","ss02","cv11";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .25s ease,color .25s ease}button{font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.serif{font-family:var(--font-display);font-weight:400;letter-spacing:-.01em}.mono{font-family:var(--font-mono)}.mono,.tnum{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.amt{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;letter-spacing:-.01em}.amt-display{font-family:var(--font-display);font-feature-settings:tabular-nums lining-nums;font-variant-numeric:tabular-nums lining-nums;letter-spacing:-.02em;font-weight:400}.card{background:var(--surface)}.card,.card-sunk{border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--card-p)}.card-sunk{background:var(--surface-sunk)}.divider{height:1px;background:var(--border);width:100%}.btn{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 14px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface);color:var(--ink);font-size:var(--fs-base);font-weight:500;cursor:pointer;white-space:nowrap;transition:background .15s ease,border-color .15s ease,color .15s ease}.btn:hover{background:var(--hover)}.btn-primary{background:var(--ink);color:var(--bg);border-color:var(--ink)}.btn-primary:hover{background:var(--ink-2);border-color:var(--ink-2)}.btn-accent{background:var(--accent);color:oklch(.99 0 0);border-color:var(--accent)}.btn-accent:hover{background:var(--accent-ink);border-color:var(--accent-ink);color:oklch(.99 0 0)}.theme-dark .btn-accent,.theme-dark .btn-accent:hover{color:oklch(.16 .008 80)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--hover)}.btn-sm{height:28px;padding:0 10px;font-size:var(--fs-sm);border-radius:var(--r-sm)}.btn-icon{width:36px;padding:0;justify-content:center}.btn-icon.btn-sm{width:28px}.chip{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:var(--r-pill);background:var(--surface-2);color:var(--ink-2);font-size:var(--fs-sm);font-weight:500;border:1px solid transparent;cursor:pointer}.chip:hover{background:var(--hover)}.chip.active{background:var(--ink);color:var(--bg)}.chip-cat{background:var(--cat-soft,var(--surface-2));color:var(--cat-ink,var(--ink-2))}.input{height:36px;padding:0 12px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--ink);outline:none;transition:border-color .15s ease,box-shadow .15s ease;width:100%}.input:focus{border-color:var(--border-strong);box-shadow:0 0 0 3px var(--accent-soft)}.input::placeholder{color:var(--ink-4)}.scroll::-webkit-scrollbar{width:10px;height:10px}.scroll::-webkit-scrollbar-track{background:transparent}.scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:5px;border:2px solid var(--bg);background-clip:content-box}.scroll::-webkit-scrollbar-thumb:hover{background:var(--border-strong);border:2px solid var(--bg);background-clip:content-box}::selection{background:var(--accent-soft);color:var(--accent-ink)}[data-tip]{position:relative}[data-tip]:hover:after{content:attr(data-tip);position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);white-space:nowrap;background:var(--ink);color:var(--bg);padding:4px 8px;border-radius:6px;font-size:var(--fs-xs);pointer-events:none;z-index:100}.app-loading{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg)}.app-loading-spinner{width:34px;height:34px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--accent);animation:app-spin .7s linear infinite}@keyframes app-spin{to{transform:rotate(1turn)}}.app{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.app.mobile{grid-template-columns:1fr}.sd{border-right:1px solid var(--border);display:flex;flex-direction:column;padding:22px 14px 18px;gap:28px;position:-webkit-sticky;position:sticky;height:100vh}.sd,.sd[data-mobile=true]{background:var(--bg);top:0}.sd[data-mobile=true]{position:fixed;left:0;bottom:0;width:280px;z-index:80;box-shadow:0 0 60px oklch(0 0 0/.15)}.sd-brand{padding:0 6px 4px}.sd-brand,.sd-brand-link{display:flex;align-items:center;gap:10px}.sd-brand-link{flex:1 1;min-width:0;color:inherit;text-decoration:none;border-radius:var(--r-md)}.sd-brand-link:hover .serif{color:var(--accent)}.sd-name{flex:1 1;min-width:0}.sd-sub{color:var(--ink-3);font-size:var(--fs-xs)}.sd-nav{display:flex;flex-direction:column;gap:2px;flex:1 1}.sd-link{display:flex;align-items:center;gap:12px;height:36px;padding:0 10px;background:transparent;border:none;color:var(--ink-2);font-size:var(--fs-base);font-weight:500;border-radius:var(--r-md);cursor:pointer;text-align:left;position:relative;transition:background .15s ease,color .15s ease}.sd-link:hover{background:var(--hover);color:var(--ink)}.sd-link.on{background:var(--accent-soft);color:var(--accent-ink);font-weight:600}.sd-link.on svg{color:var(--accent)}.sd-link span{flex:1 1}.sd-foot{display:flex;flex-direction:column;gap:8px}.sd-bot{gap:10px;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.sd-bot,.sd-bot-icon{display:flex;align-items:center}.sd-bot-icon{width:28px;height:28px;border-radius:8px;background:var(--surface-2);color:var(--ink-2);justify-content:center}.sd-pulse{width:7px;height:7px;border-radius:50%;background:var(--pos);box-shadow:0 0 0 0 var(--pos);animation:pulse 2.2s ease-out infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 oklch(.55 .1 150/.4)}70%{box-shadow:0 0 0 8px oklch(.55 .1 150/0)}to{box-shadow:0 0 0 0 oklch(.55 .1 150/0)}}.tb{display:flex;align-items:center;gap:14px;padding:14px 28px;border-bottom:1px solid var(--border);background:var(--bg);position:-webkit-sticky;position:sticky;top:0;z-index:30;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.tb-burger{display:none}.app.mobile .tb-burger{display:inline-flex}.app.mobile .tb{padding:12px 16px;gap:8px}.tb-search{flex:1 1;max-width:420px;display:flex;align-items:center;gap:8px;height:36px;padding:0 12px;background:var(--surface-sunk);border:1px solid transparent;border-radius:var(--r-md);margin-left:12px}.tb-search:focus-within{border-color:var(--border-strong);background:var(--surface)}.tb-search-input{flex:1 1;border:none;background:transparent;outline:none;font-size:var(--fs-base);color:var(--ink)}.tb-search-input::placeholder{color:var(--ink-3)}.tb-kbd{font-family:var(--font-mono);font-size:10px;padding:2px 5px;border:1px solid var(--border);border-radius:4px;color:var(--ink-3);background:var(--surface)}.app.mobile .tb-search{display:none}.tb-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.tb-user-wrap{position:relative}.tb-user{display:flex;align-items:center;gap:10px;padding-left:10px;margin-left:4px;height:36px;background:transparent;border:none;border-left:1px solid var(--border);cursor:pointer;color:inherit;font-family:inherit}.tb-user:hover{background:var(--hover);border-radius:0 8px 8px 0}.tb-user-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:50;width:240px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-2);padding:6px}.tb-user-pop-head{padding:10px 8px 12px;border-bottom:1px solid var(--border);margin-bottom:4px}.tb-user-pop-head,.tb-user-pop-row{display:flex;align-items:center;gap:10px}.tb-user-pop-row{width:100%;padding:9px 10px;background:transparent;border:none;border-radius:7px;cursor:pointer;color:var(--ink);font-size:var(--fs-sm);font-weight:500;text-align:left;white-space:nowrap}.tb-user-pop-row:hover{background:var(--surface-2)}.tb-user-pop-row>svg{color:var(--ink-3);flex-shrink:0}.tb-user-pop-div{height:1px;background:var(--border);margin:4px 0}.tb-user-pop-out,.tb-user-pop-out>svg{color:var(--neg)}.tb-user-pop-out:hover{background:var(--neg-soft)}.tb-ava{width:30px;height:30px;border-radius:50%;background:var(--accent-soft);color:var(--accent-ink);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;letter-spacing:.02em}.tb-user-meta{line-height:1.2}.app.mobile .tb-user-meta{display:none}.msw{position:relative;gap:2px}.msw,.msw-arrow{display:flex;align-items:center}.msw-arrow{width:30px;height:30px;border:none;background:transparent;color:var(--ink-3);border-radius:8px;cursor:pointer;justify-content:center}.msw-arrow:hover{background:var(--hover);color:var(--ink)}.msw-arrow:disabled{opacity:.3;cursor:default}.msw-arrow:disabled:hover{background:transparent;color:var(--ink-3)}.msw-pill{display:flex;align-items:center;gap:8px;height:32px;padding:0 12px;border:1px solid var(--border);background:var(--surface);border-radius:var(--r-pill);color:var(--ink);font-size:var(--fs-base);font-weight:500;cursor:pointer;min-width:170px;justify-content:center}.msw-pill:hover{background:var(--hover)}.msw-now{font-size:10px;background:var(--accent-soft);color:var(--accent-ink);padding:1px 6px;border-radius:999px;font-weight:500;letter-spacing:.04em;text-transform:uppercase}.msw-scrim{position:fixed;inset:0;z-index:40}.msw-pop{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);z-index:50;width:280px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-2);padding:10px}.msw-pop-head{display:flex;align-items:center;justify-content:space-between;padding:4px 6px 8px}.msw-pop-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:4px;gap:4px}.msw-pop-cell{padding:8px 6px;background:transparent;border:none;border-radius:8px;cursor:pointer;text-align:center;color:var(--ink);font-size:var(--fs-sm)}.msw-pop-cell:hover{background:var(--hover)}.msw-pop-cell.on{background:var(--ink);color:var(--bg)}.msw-pop-cell.on>div:last-child{color:var(--bg);opacity:.6}.hsw{position:relative}.hsw,.hsw-trigger{display:flex;align-items:center}.hsw-trigger{gap:10px;height:36px;padding:0 12px 0 8px;border:1px solid var(--border);background:var(--surface);border-radius:var(--r-pill);cursor:pointer;color:var(--ink);font-family:inherit}.hsw-trigger:hover{background:var(--hover)}.hsw-ic{width:24px;height:24px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.hsw-meta{text-align:left;line-height:1.2}.hsw-name{font-size:var(--fs-sm);font-weight:500;color:var(--ink);white-space:nowrap}.hsw-sub{font-size:10px;color:var(--ink-3)}.hsw-trigger:disabled{cursor:default}.hsw-ic-skeleton{background:var(--hover)}.hsw-name-skeleton{width:96px;height:11px}.hsw-name-skeleton,.hsw-sub-skeleton{border-radius:4px;background:var(--hover)}.hsw-sub-skeleton{width:60px;height:9px;margin-top:4px}.hsw-ic-skeleton,.hsw-name-skeleton,.hsw-sub-skeleton{animation:hsw-pulse 1.2s ease-in-out infinite}@keyframes hsw-pulse{0%,to{opacity:1}50%{opacity:.5}}.app.mobile .hsw-meta{display:none}.app.mobile .hsw-trigger{padding:0 8px}.hsw-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:50;width:300px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-2);padding:8px}.hsw-pop-h{font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;padding:4px 8px 8px}.hsw-pop-list{display:flex;flex-direction:column;gap:1px}.hsw-pop-row{display:flex;align-items:center;gap:10px;padding:8px;background:transparent;border:none;border-radius:8px;cursor:pointer;text-align:left;color:var(--ink)}.hsw-pop-row:hover{background:var(--hover)}.hsw-pop-row.on{background:var(--surface-2)}.hsw-pop-meta{flex:1 1;min-width:0}.hsw-pop-name{font-size:var(--fs-sm);color:var(--ink);font-weight:500}.hsw-pop-sub{font-size:var(--fs-xs);color:var(--ink-3);margin-top:2px}.hsw-pop-new{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:8px;padding:9px;width:100%;border:1px dashed var(--border-strong);background:transparent;border-radius:8px;cursor:pointer;color:var(--ink-2);font-size:var(--fs-sm);font-weight:500}.hsw-pop-new:hover{background:var(--surface-2);color:var(--ink)}.lsw{position:relative}.lsw-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:50;width:180px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-2);padding:6px}.lsw-row{display:flex;align-items:center;gap:10px;width:100%;padding:8px;background:transparent;border:none;border-radius:6px;cursor:pointer;color:var(--ink);font-size:var(--fs-sm)}.lsw-row-short,.lsw-row.on,.lsw-row:hover{background:var(--surface-2)}.lsw-row-short{font-size:10px;font-weight:600;color:var(--ink-2);padding:2px 6px;border-radius:4px}.lsw-row.on .lsw-row-short{background:var(--ink);color:var(--bg)}.sd-scrim{position:fixed;inset:0;background:oklch(0 0 0/.35);z-index:70;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.app.mobile .ov{gap:14px}.ov-hero{display:grid;grid-template-columns:1fr auto;grid-gap:32px;gap:32px;align-items:center;padding:32px 0 24px}.app.mobile .ov-hero{grid-template-columns:1fr;gap:24px;padding:12px 0 8px}.ov-hero-l{display:flex;flex-direction:column;gap:14px}.ov-eyebrow{display:flex;align-items:center;gap:12px;font-size:var(--fs-sm);color:var(--ink-3);letter-spacing:.01em}.ov-pill{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:500;background:var(--surface-2);color:var(--ink-2)}.ov-pill-pos{background:var(--pos-soft);color:var(--pos)}.ov-pill-neg{background:var(--neg-soft);color:var(--neg)}.ov-pill-warn{background:var(--warn-soft);color:var(--warn)}.ov-bignum{font-family:var(--font-display);font-size:clamp(56px,11vw,128px);line-height:.92;letter-spacing:-.03em;display:flex;align-items:baseline;gap:.08em;color:var(--ink)}.ov-cur{font-size:.55em}.ov-cents,.ov-cur{color:var(--ink-3)}.ov-cents{font-size:.42em;letter-spacing:0}.ov-hero-meta{display:flex;align-items:center;gap:20px;padding-top:14px}.app.mobile .ov-hero-meta{flex-wrap:wrap;gap:14px}.ov-meta-item{display:flex;flex-direction:column;gap:4px}.ov-meta-l{font-size:var(--fs-sm);color:var(--ink-3)}.ov-meta-v{font-size:var(--fs-lg);color:var(--ink);display:flex;gap:6px;align-items:baseline}.ov-meta-div{width:1px;height:32px;background:var(--border)}.app.mobile .ov-meta-div{display:none}.ov-hero-r{display:flex;align-items:center;gap:18px;position:relative}.app.mobile .ov-hero-r{justify-self:start}.ov-ring{position:relative}.ov-ring-meta{display:flex;flex-direction:column;gap:3px}.ov-ring-pct{font-family:var(--font-display);font-size:40px;line-height:1;color:var(--ink);letter-spacing:-.02em}.ov-ring-l{font-size:var(--fs-sm);color:var(--ink-3);white-space:nowrap}.ov-ring-tag{margin-top:6px;font-size:var(--fs-xs);font-weight:500;padding:2px 8px;border-radius:var(--r-pill);width:-moz-fit-content;width:fit-content;letter-spacing:.01em}.ov-ring-tag[data-tone=pos]{background:var(--pos-soft);color:var(--pos)}.ov-ring-tag[data-tone=warn]{background:var(--warn-soft);color:var(--warn)}.ov-ring-tag[data-tone=neg]{background:var(--neg-soft);color:var(--neg)}.ov-section-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:14px;gap:12px}.ov-section-title{font-size:var(--fs-md);font-weight:500;color:var(--ink);letter-spacing:-.005em}.ov-section-sub{font-size:var(--fs-sm);color:var(--ink-3);margin-top:2px}.ov-legend{display:flex;gap:14px;font-size:var(--fs-xs);color:var(--ink-3)}.ov-legend span{display:inline-flex;align-items:center;gap:6px}.ov-sw{width:14px;height:2px;border-radius:1px}.ov-trend-svg-wrap{width:100%}.ov-trend-svg{width:100%;height:200px;display:block}.app.mobile .ov-trend-svg{height:160px}.ov-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--gap);gap:var(--gap)}.app.mobile .ov-grid{grid-template-columns:1fr}.ov-cats{display:flex;flex-direction:column;gap:2px}.ov-cat-row{display:grid;grid-template-columns:160px 1fr 90px;grid-gap:14px;gap:14px;align-items:center;padding:10px 6px;background:transparent;border:none;border-radius:var(--r-sm);cursor:pointer;text-align:left;color:inherit;transition:background .15s ease}.ov-cat-row:hover{background:var(--surface-2)}.ov-cat-id{gap:10px;min-width:0}.ov-cat-ic,.ov-cat-id{display:flex;align-items:center}.ov-cat-ic{width:28px;height:28px;border-radius:8px;justify-content:center;flex-shrink:0}.ov-cat-name{font-size:var(--fs-base);color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ov-cat-bar{display:flex;align-items:center;min-width:0}.ov-cat-bar-track{height:6px;background:var(--surface-2);width:100%;overflow:visible}.ov-cat-bar-fill,.ov-cat-bar-track{border-radius:3px;position:relative}.ov-cat-bar-fill{height:100%;transition:width .8s cubic-bezier(.2,.7,.2,1)}.ov-cat-bar-over{position:absolute;top:-1px;right:0;height:8px;background:var(--neg);border-radius:0 3px 3px 0;opacity:.7;transform:translateX(100%)}.ov-cat-amts{text-align:right;line-height:1.25}.ov-tx{display:flex;flex-direction:column;gap:0}.ov-tx-row{display:grid;grid-template-columns:32px 1fr auto;grid-gap:12px;gap:12px;align-items:center;padding:var(--row-py) 6px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s ease}.ov-tx-row:last-child{border-bottom:none}.ov-tx-row:hover{background:var(--surface-2);margin:0 -6px;padding-left:12px;padding-right:12px}.ov-tx-ic{width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center}.ov-tx-mid{min-width:0}.ov-tx-note{font-size:var(--fs-base);color:var(--ink);display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ov-tx-flag{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;color:var(--warn)}.ov-tx-sub{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--ink-3);margin-top:2px}.ov-tx-sub .dot{color:var(--ink-4)}.ov-tx-amt{font-size:var(--fs-md);color:var(--ink);white-space:nowrap}.ov-whisper{display:flex;align-items:center;gap:12px;padding:14px 18px;background:var(--accent-soft);border:1px solid color-mix(in oklch,var(--accent) 25%,transparent);border-radius:var(--r-md);color:var(--ink);font-size:var(--fs-base)}.theme-dark .ov-whisper{border-color:color-mix(in oklch,var(--accent) 35%,transparent)}.empty-wrap{min-height:70vh;justify-content:center}.empty,.empty-wrap{display:flex;align-items:center}.empty{flex-direction:column;text-align:center;padding:40px 20px}.empty-art{opacity:.85;margin-bottom:8px}.act-page,.bud-page,.cat-page,.dbt-page,.ins-page,.ov,.pln-page,.set-page,.tx-page{padding:24px 28px 40px;max-width:1280px;margin:0 auto;width:100%;display:flex;flex-direction:column;gap:var(--gap)}.app.mobile .act-page,.app.mobile .bud-page,.app.mobile .cat-page,.app.mobile .dbt-page,.app.mobile .ins-page,.app.mobile .ov,.app.mobile .pln-page,.app.mobile .set-page,.app.mobile .tx-page{padding:16px 16px 40px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;padding-top:6px;margin-bottom:4px}.app.mobile .page-head{flex-direction:column;align-items:stretch}.page-title{font-size:42px;letter-spacing:-.02em;line-height:1;margin:0;font-weight:400}.app.mobile .page-title{font-size:32px}.page-sub{color:var(--ink-3);margin:6px 0 0;font-size:var(--fs-md)}.tx-layout{display:grid;grid-template-columns:1fr 280px;grid-gap:var(--gap);gap:var(--gap);align-items:flex-start}.app.mobile .tx-layout{grid-template-columns:1fr}.tx-main{min-width:0;display:flex;flex-direction:column;gap:var(--gap)}.tx-toolbar{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:12px 14px;flex-wrap:wrap}.tx-toolbar>.seg{margin-left:auto}.tx-filters{position:-webkit-sticky;position:sticky;top:86px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 16px 18px;display:flex;flex-direction:column;gap:18px;max-height:calc(100vh - 110px);overflow-y:auto}.app.mobile .tx-filters{position:static;max-height:none}.tx-filters-head{display:flex;align-items:center;justify-content:space-between;margin:-2px 0 -4px}.tx-filters-title{display:flex;align-items:center;gap:6px;font-size:var(--fs-md);font-weight:500;color:var(--ink)}.tx-filter-sect{display:flex;flex-direction:column;gap:8px;padding-top:14px;border-top:1px solid var(--border)}.tx-filters-head+.tx-filter-sect{border-top:none;padding-top:0}.tx-filter-l{font-size:var(--fs-xs);color:var(--ink-3);font-weight:600;letter-spacing:.06em;text-transform:uppercase;display:flex;align-items:center;justify-content:space-between}.tx-filter-l-toggle{background:transparent;border:none;cursor:pointer;padding:0;width:100%;font-family:inherit}.tx-filter-count{display:inline-block;min-width:16px;padding:0 5px;margin-left:4px;background:var(--accent);color:oklch(.99 0 0);font-size:10px;border-radius:8px;text-align:center;font-weight:600}.theme-dark .tx-filter-count{color:oklch(.16 .008 80)}.tx-opt-list{display:flex;flex-direction:column;gap:1px;max-height:240px;overflow-y:auto;margin:0 -6px}.tx-opt-row{display:flex;align-items:center;gap:8px;padding:5px 6px;font-size:var(--fs-sm);color:var(--ink);cursor:pointer;border-radius:6px}.tx-opt-row.on,.tx-opt-row:hover{background:var(--surface-2)}.tx-opt-row input{accent-color:var(--accent);width:14px;height:14px;margin:0;flex-shrink:0}.tx-cat-ic{width:22px;height:22px;border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.tx-date-quick{display:flex;gap:4px;flex-wrap:wrap}.tx-date-row{display:flex;align-items:center;gap:6px;margin-top:6px}.tx-date-row .input{height:32px;padding:0 8px;font-size:var(--fs-sm)}.tx-search{display:flex;align-items:center;gap:8px;height:38px;padding:0 12px;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md)}.tx-search:focus-within{border-color:var(--border-strong)}.tx-search input{flex:1 1;border:none;background:transparent;outline:none;color:var(--ink);font-size:var(--fs-base)}.tx-search input::placeholder{color:var(--ink-3)}.tx-clear{width:18px;height:18px;background:var(--surface-2);border:none;color:var(--ink-2);border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center}.tx-cats-row,.tx-range{display:flex;gap:6px}.tx-cats-row{overflow-x:auto;padding-bottom:2px;scrollbar-width:thin}.tx-cats-row::-webkit-scrollbar{height:6px}.tx-cats-row .chip{flex-shrink:0}.tx-list{--tx-cols:minmax(0,1fr) 172px 56px 64px 110px 36px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}.tx-list-head{display:grid;grid-template-columns:var(--tx-cols);grid-gap:14px;gap:14px;align-items:center;padding:11px 18px;border-bottom:1px solid var(--border);background:var(--surface-2);font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.tx-lh-member,.tx-lh-time{text-align:left}.tx-lh-amt{text-align:right}.app.mobile .tx-list-head{display:none}.tx-group{padding:0 18px}.tx-group-head{display:flex;justify-content:space-between;padding:12px 0 8px;font-size:var(--fs-sm);font-weight:500;color:var(--ink-2);letter-spacing:.01em}.tx-group-head,.tx-row{align-items:center;border-bottom:1px solid var(--border)}.tx-row{display:grid;grid-template-columns:var(--tx-cols);grid-gap:14px;gap:14px;padding:var(--row-py) 0;position:relative}.tx-row:hover{background:var(--surface-2)}.tx-group:last-child .tx-row:last-child{border-bottom:none}.app.mobile .tx-row{grid-template-columns:1fr auto;gap:10px}.app.mobile .tx-actions,.app.mobile .tx-cat-col,.app.mobile .tx-member-col,.app.mobile .tx-time{display:none}.tx-desc{gap:12px;min-width:0}.tx-desc,.tx-ic{display:flex;align-items:center}.tx-ic{width:32px;height:32px;border-radius:9px;flex-shrink:0;justify-content:center}.tx-desc-text{min-width:0}.tx-note{font-size:var(--fs-base);color:var(--ink);display:flex;align-items:center;gap:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tx-src{font-size:var(--fs-xs);color:var(--ink-3);margin-top:3px}.tx-recur{color:var(--ink-4);flex-shrink:0}.tx-cat-col{min-width:0}.tx-catpill-wrap{position:relative}.tx-catpill,.tx-catpill-wrap{display:inline-flex;max-width:100%}.tx-catpill{align-items:center;gap:5px;padding:4px 8px 4px 10px;border:none;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:500;font-family:inherit;cursor:pointer;transition:filter .15s ease}.tx-catpill:hover{filter:brightness(.97)}.tx-catpill-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tx-catpill svg{flex-shrink:0;opacity:.75}.tx-cat-menu{min-width:200px;max-height:280px;overflow-y:auto;padding:5px;box-shadow:0 8px 24px oklch(0 0 0/.14);display:flex;flex-direction:column;gap:1px}.tx-cat-menu-item{display:flex;align-items:center;gap:9px;padding:6px 8px;background:transparent;border:none;border-radius:7px;color:var(--ink);font-size:var(--fs-sm);font-family:inherit;text-align:left;cursor:pointer}.tx-cat-menu-item.on,.tx-cat-menu-item:hover{background:var(--surface-2)}.tx-cat-menu-ic{width:22px;height:22px;border-radius:6px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.tx-cat-menu-empty{font-size:var(--fs-xs);color:var(--ink-3);padding:6px 8px}.tx-member-col{display:flex}.tx-by{width:26px;height:26px;font-size:9.5px}.tx-time{color:var(--ink-3);font-size:var(--fs-sm)}.tx-actions{position:relative;display:flex;justify-content:flex-end}.tx-more{color:var(--ink-3);transition:background .15s ease,color .15s ease}.tx-more.on,.tx-more:hover{color:var(--ink)}.tx-more.on{background:var(--surface-2)}.tx-menu{min-width:168px;padding:5px;box-shadow:0 8px 24px oklch(0 0 0/.14);display:flex;flex-direction:column;gap:1px}.tx-menu-item{display:flex;align-items:center;gap:9px;padding:7px 9px;background:transparent;border:none;border-radius:7px;color:var(--ink);font-size:var(--fs-sm);font-family:inherit;text-align:left;cursor:pointer}.tx-menu-item svg{color:var(--ink-3)}.tx-menu-item:hover{background:var(--surface-2)}.tx-menu-item.danger,.tx-menu-item.danger svg{color:var(--neg)}.tx-menu-item.danger:hover{background:var(--neg-soft)}.tx-amt{font-size:var(--fs-md);color:var(--ink);text-align:right;white-space:nowrap}.tx-amt.income{color:var(--pos)}.tx-empty{padding:60px 20px;text-align:center;flex-direction:column}.tx-empty,.tx-empty-ic{display:flex;align-items:center}.tx-empty-ic{width:56px;height:56px;border-radius:16px;justify-content:center;background:var(--surface-2);color:var(--ink-3);margin-bottom:14px}.tx-empty-title{font-size:var(--fs-lg);font-weight:500;color:var(--ink)}.tx-empty-sub{font-size:var(--fs-sm);color:var(--ink-3);margin-top:4px;max-width:320px}.cat-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;padding:0 2px;gap:12px}.cat-section-l{display:flex;align-items:baseline;gap:12px}.cat-section-tag{font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:2px 8px;border-radius:var(--r-pill)}.cat-section-tag-exp{background:var(--surface-2);color:var(--ink-2)}.cat-section-tag-inc{background:var(--pos-soft);color:var(--pos)}.cat-section-h{font-family:var(--font-display);font-size:22px;color:var(--ink);letter-spacing:-.01em;white-space:nowrap}.cat-section-r{font-size:var(--fs-md)}.seg{display:inline-flex;background:var(--surface-sunk);border:1px solid var(--border);border-radius:var(--r-md);padding:3px;gap:2px}.seg-opt{padding:0 12px;height:28px;background:transparent;border:none;color:var(--ink-3);font-size:var(--fs-sm);font-weight:500;border-radius:7px;cursor:pointer}.seg-opt.on,.seg-opt:hover{color:var(--ink)}.seg-opt.on{background:var(--surface);box-shadow:0 1px 2px oklch(0 0 0/.06)}.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:14px;gap:14px}.cat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px;position:relative;cursor:pointer;transition:border-color .15s ease,transform .15s ease;display:flex;flex-direction:column;gap:14px}.cat-card:hover{border-color:var(--border-strong);transform:translateY(-1px)}.cat-card-head{display:flex;justify-content:space-between;align-items:flex-start}.cat-card-ic{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center}.cat-card-name{font-size:var(--fs-lg);color:var(--ink);margin-top:12px;font-weight:500}.cat-card-amt{display:flex;align-items:baseline;gap:6px;margin-top:4px}.cat-card-amt .big{font-family:var(--font-display);font-size:28px;line-height:1;color:var(--ink);letter-spacing:-.01em}.cat-card-amt .of{font-size:var(--fs-sm);color:var(--ink-3)}.cat-card-bar{height:5px;background:var(--surface-sunk);border:1px solid var(--border);border-radius:3px;position:relative;overflow:hidden}.cat-card-bar>div{height:100%;border-radius:3px;transition:width .8s}.cat-card-tag{font-size:var(--fs-xs);padding:2px 8px;border-radius:var(--r-pill);width:-moz-fit-content;width:fit-content;font-weight:500}.cat-card .add-card-body{min-height:160px;border:1.5px dashed var(--border);border-radius:var(--r-lg)}.cat-card .add-card-body,.cat-card-add{display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--ink-3);background:transparent;cursor:pointer}.cat-card-add{border:1.5px dashed var(--border);min-height:200px;gap:8px}.cat-card-add:hover{border-color:var(--border-strong);color:var(--ink)}.bud-hero{display:grid;grid-template-columns:minmax(240px,.9fr) 1.4fr;grid-gap:32px;gap:32px;align-items:center}.app.mobile .bud-hero{grid-template-columns:1fr;gap:22px}.bud-hero-net{border-right:1px solid var(--border);padding-right:28px}.app.mobile .bud-hero-net{border-right:none;padding-right:0;border-bottom:1px solid var(--border);padding-bottom:18px}.bud-hero-label{font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;margin-bottom:8px}.bud-hero-big{font-family:var(--font-display);font-size:52px;line-height:1;letter-spacing:-.02em}.bud-hero-sofar{font-size:var(--fs-sm);color:var(--ink-3);margin-top:10px}.bud-hero-bars{display:grid;grid-template-columns:1fr 1fr;grid-gap:28px;gap:28px}.app.mobile .bud-hero-bars{grid-template-columns:1fr;gap:18px}.bud-hero-meter-top{display:flex;align-items:center;gap:7px;font-size:var(--fs-sm);color:var(--ink-2)}.bud-hero-meter-top .dot{width:8px;height:8px;border-radius:50%}.bud-hero-meter-top .l{font-weight:500}.bud-hero-meter-top .pct{margin-left:auto;color:var(--ink-3);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.bud-hero-amt{font-size:22px;color:var(--ink);margin:6px 0 8px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.bud-hero-amt .of{font-size:var(--fs-sm);color:var(--ink-3)}.bud-hero-track{height:9px;background:var(--surface-sunk);border:1px solid var(--border);border-radius:5px;position:relative;overflow:visible}.bud-hero-track .fill{height:100%;border-radius:5px;transition:width .8s}.bud-hero-track .mark{position:absolute;top:50%;transform:translateY(-50%);width:2px;height:15px;background:var(--ink-2);border-radius:1px;opacity:.45}.bud-suggest-head{display:flex;align-items:center;gap:7px;font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;margin-bottom:8px}.bud-suggest-row{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px}.app.mobile .bud-suggest-row{grid-template-columns:1fr}.bud-suggest{display:flex;align-items:flex-start;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:14px 16px}.bud-suggest-ic{width:30px;height:30px;flex:0 0 30px;border-radius:9px;display:flex;align-items:center;justify-content:center}.bud-suggest-title{font-size:var(--fs-sm);font-weight:500;color:var(--ink);margin-bottom:3px}.bud-suggest-sub{font-size:var(--fs-xs);color:var(--ink-3);line-height:1.45}.bud-suggest>.btn-sm{margin-left:auto;align-self:center;white-space:nowrap}.savebar{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:40;display:flex;align-items:center;gap:16px;padding:8px 8px 8px 18px;background:var(--ink);border-radius:var(--r-pill);box-shadow:0 8px 28px oklch(0 0 0/.28);animation:savebar-in .18s ease}@keyframes savebar-in{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}.savebar-count{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm);color:var(--bg);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.savebar-count .dot{width:7px;height:7px;border-radius:50%;background:var(--warn)}.savebar-discard{border:none;background:transparent;color:color-mix(in oklch,var(--bg) 70%,transparent);font-size:var(--fs-sm);cursor:pointer;padding:0 2px}.savebar-discard:hover:not(:disabled){color:var(--bg)}.savebar-discard:disabled{opacity:.5;cursor:default}.savebar-ok{padding:8px 8px 8px 18px;background:var(--pos);box-shadow:0 8px 28px color-mix(in oklch,var(--pos) 45%,transparent)}.savebar-ok .savebar-count{color:#fff;font-size:var(--fs-base);font-weight:600}.savebar-ok .savebar-count svg{color:#fff}.savebar-ok-ic{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:color-mix(in oklch,#fff 28%,transparent)}.savebar-meta{color:color-mix(in oklch,#fff 80%,transparent);font-weight:400}.savebar-undo{border:none;background:color-mix(in oklch,#fff 20%,transparent);color:#fff;font-size:var(--fs-sm);font-weight:600;border-radius:var(--r-pill);padding:5px 14px;cursor:pointer;transition:background .15s ease}.savebar-undo:hover:not(:disabled){background:color-mix(in oklch,#fff 32%,transparent)}.savebar-undo:disabled{opacity:.55;cursor:default}.bud-cols{display:grid;grid-template-columns:1fr 1fr;grid-gap:var(--gap);gap:var(--gap);align-items:start}.app.mobile .bud-cols{grid-template-columns:1fr}.bud-col{padding:0;overflow:hidden}.bud-col-head{display:grid;grid-template-columns:32px 1fr auto 120px;grid-column-gap:12px;column-gap:12px;align-items:center;padding:16px 18px;border-bottom:1px solid var(--border)}.bud-col-title{grid-column:1/3;display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-size:17px;color:var(--ink)}.bud-col-title .dot{width:8px;height:8px;border-radius:50%}.bud-col-title .count{font-family:var(--font-sans);font-size:var(--fs-xs);font-weight:600;color:var(--ink-3);background:var(--surface-2);border-radius:var(--r-pill);padding:1px 7px}.bud-thead-budget,.bud-thead-spent{display:flex;flex-direction:column;gap:2px;text-align:right;font-size:var(--fs-md);color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.bud-thead-spent{grid-column:3}.bud-thead-budget{grid-column:4}.bud-thead-budget em,.bud-thead-spent em{font-style:normal;font-size:9px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.bud-col-rows{display:flex;flex-direction:column}.bud-row{display:grid;grid-template-columns:32px 1fr auto 120px;grid-template-areas:"ic id spent budget" "ic bar bar bar";grid-column-gap:12px;column-gap:12px;grid-row-gap:9px;row-gap:9px;padding:14px 18px;align-items:center;border-bottom:1px solid var(--border);transition:background .15s ease}.bud-row:last-child{border-bottom:none}.bud-row:hover{background:var(--surface-2)}.bud-row-ic{grid-area:ic;width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center}.bud-row-id{grid-area:id;min-width:0}.bud-row-name{font-size:var(--fs-base);color:var(--ink);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bud-row-sub{font-size:var(--fs-xs);color:var(--ink-3);margin-top:2px}.bud-row-spent{grid-area:spent;text-align:right;color:var(--ink)}.bud-row-bar{grid-area:bar;height:9px;background:var(--surface-sunk);border:1px solid var(--border);border-radius:5px;overflow:hidden}.bud-row-bar-fill{height:100%;border-radius:5px;transition:width .8s}.bud-row-budget{grid-area:budget;display:flex;align-items:center;background:var(--surface-sunk);border:1px solid transparent;border-radius:8px;padding:0 8px;height:30px;transition:border-color .15s ease}.bud-row-budget:focus-within{border-color:var(--border-strong);background:var(--bg)}.bud-row-budget .pre{color:var(--ink-3);font-size:var(--fs-sm)}.bud-row-budget input{width:100%;border:none;background:transparent;outline:none;color:var(--ink);font-size:var(--fs-base);text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ins-hero{display:grid;grid-template-columns:1.2fr 1fr;grid-gap:var(--gap);gap:var(--gap)}.app.mobile .ins-hero{grid-template-columns:1fr}.ins-bigcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:24px;display:flex;flex-direction:column;gap:18px}.ins-compare{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px;padding-top:8px}.ins-compare-item{display:flex;flex-direction:column;gap:4px}.ins-compare-label{font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase}.ins-compare-amt{font-family:var(--font-display);font-size:36px;line-height:1.1;color:var(--ink);letter-spacing:-.02em}.ins-compare-amt .delta{font-family:var(--font-sans);font-size:13px;margin-left:8px;vertical-align:middle;padding:2px 8px;border-radius:var(--r-pill);font-weight:500}.ins-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:var(--gap);gap:var(--gap)}.app.mobile .ins-grid{grid-template-columns:1fr}.ins-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px;display:flex;flex-direction:column;gap:12px}.ins-card-head{display:flex;align-items:flex-start;gap:12px}.ins-card-tone{width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center}.ins-card-tone[data-tone=warn]{background:var(--warn-soft);color:var(--warn)}.ins-card-tone[data-tone=neg]{background:var(--neg-soft);color:var(--neg)}.ins-card-tone[data-tone=pos]{background:var(--pos-soft);color:var(--pos)}.ins-card-tone[data-tone=neutral]{background:var(--surface-2);color:var(--ink-2)}.ins-card-title{font-size:var(--fs-md);font-weight:500;color:var(--ink);margin-top:4px}.ins-card-body{color:var(--ink-2);font-size:var(--fs-base);line-height:1.55}.set-layout{display:grid;grid-template-columns:220px 1fr;grid-gap:28px;gap:28px}.app.mobile .set-layout{grid-template-columns:1fr}.set-nav{display:flex;flex-direction:column;gap:2px;position:-webkit-sticky;position:sticky;top:80px;align-self:start}.set-nav button{text-align:left;padding:8px 12px;background:transparent;border:none;border-radius:8px;color:var(--ink-2);font-size:var(--fs-base);cursor:pointer}.set-nav button.on{background:var(--surface-2);color:var(--ink);font-weight:500}.set-nav button:hover{background:var(--hover);color:var(--ink)}.set-section{display:flex;flex-direction:column;gap:18px}.set-section h2{margin:0;font-family:var(--font-display);font-size:32px;font-weight:400;letter-spacing:-.01em}.set-row{display:grid;grid-template-columns:1fr auto;grid-gap:18px;gap:18px;align-items:center;padding:14px 0;border-bottom:1px solid var(--border)}.set-row:last-child{border-bottom:none}.set-row-l{font-size:var(--fs-base);color:var(--ink);font-weight:500}.set-row-d{font-size:var(--fs-sm);color:var(--ink-3);margin-top:2px;max-width:480px;line-height:1.5}.set-toggle{width:36px;height:22px;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;position:relative;cursor:pointer;transition:background .2s ease}.set-toggle:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:var(--bg);border:1px solid var(--border);border-radius:50%;transition:transform .2s ease}.set-toggle.on{background:var(--accent);border-color:var(--accent)}.set-toggle.on:after{transform:translateX(14px);border-color:transparent}.set-telegram-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:22px;display:flex;align-items:center;gap:18px}.set-telegram-ava{width:56px;height:56px;border-radius:16px;background:oklch(.6 .16 230);color:#fff;display:flex;align-items:center;justify-content:center;flex-shrink:0}.set-telegram-meta{flex:1 1}.set-telegram-status{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;background:var(--pos-soft);color:var(--pos);border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:500;margin-top:4px}.set-telegram-status:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.hh-summary{display:flex;align-items:center;gap:16px;padding:16px 18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg)}.hh-summary-meta{flex:1 1}.hh-card{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);text-align:left}.hh-card-mid{flex:1 1;min-width:0}.hh-card-name{font-size:var(--fs-base);font-weight:500;color:var(--ink);display:flex;align-items:center;gap:8px}.hh-card-sub{font-size:var(--fs-xs);color:var(--ink-3);margin-top:2px}.hh-role{font-size:10px;font-weight:600;padding:1px 6px;border-radius:var(--r-pill);text-transform:uppercase;letter-spacing:.06em}.hh-role-owner{background:var(--ink);color:var(--bg)}.hh-status{font-size:11px;font-weight:500;padding:3px 8px;border-radius:var(--r-pill);letter-spacing:.01em}.hh-status.active{background:var(--pos-soft);color:var(--pos)}.hh-status.invited{background:var(--warn-soft);color:var(--warn)}.hh-card-add{border-style:dashed;background:transparent;cursor:pointer;color:var(--ink-2)}.hh-card-add:hover{border-color:var(--border-strong);color:var(--ink)}.hh-card-add-ic{width:44px;height:44px;border-radius:14px;background:var(--surface-2);color:var(--ink-3);display:flex;align-items:center;justify-content:center}.pf-page-layout{display:grid;grid-template-columns:280px 1fr;grid-gap:var(--gap);gap:var(--gap);align-items:flex-start}.app.mobile .pf-page-layout{grid-template-columns:1fr}.pf-side{gap:12px}.pf-side,.pf-side-card{display:flex;flex-direction:column}.pf-side-card{align-items:center;text-align:center}.pf-stats{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:14px;gap:14px;margin-top:20px;padding-top:16px;border-top:1px solid var(--border);width:100%}.pf-stats>div{gap:3px}.pf-body,.pf-stats>div{display:flex;flex-direction:column}.pf-body{gap:var(--gap)}.pf-danger{border-color:color-mix(in oklch,var(--neg) 25%,var(--border));background:color-mix(in oklch,var(--neg-soft) 35%,var(--surface))}.pf-hero{display:flex;gap:24px;align-items:flex-start}.pf-ava{display:flex;flex-direction:column;align-items:center}.pf-section-h{font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;font-weight:600;margin-bottom:12px}.pf-row{display:flex;flex-direction:column;gap:5px;padding:10px 0}.pf-row label{font-size:var(--fs-sm);color:var(--ink-2);font-weight:500}.pf-help{font-size:var(--fs-xs);color:var(--ink-3)}.hhs-card{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);text-align:left;transition:border-color .15s ease}.hhs-card.active{border-color:var(--accent);background:var(--accent-soft)}.hhs-ic{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.hhs-mid{flex:1 1;min-width:0}.hhs-name{font-size:var(--fs-base);font-weight:500;color:var(--ink);display:flex;align-items:center;gap:8px}.hhs-sub{font-size:var(--fs-xs);color:var(--ink-3);margin-top:3px}.hhs-card-add{border-style:dashed;background:transparent;cursor:pointer;color:var(--ink-2)}.hhs-card-add:hover{border-color:var(--border-strong);color:var(--ink)}.cur-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:10px;gap:10px}.cur-card{display:flex;flex-direction:column;gap:4px;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);text-align:left;cursor:pointer;position:relative;transition:border-color .15s ease,background .15s ease}.cur-card:hover{border-color:var(--border-strong)}.cur-card.on{border-color:var(--accent);background:var(--accent-soft)}.cur-sym{font-family:var(--font-display);font-size:32px;line-height:1;color:var(--ink);letter-spacing:-.02em}.cur-name{font-size:var(--fs-sm);color:var(--ink);font-weight:500;margin-top:6px}.cur-code{letter-spacing:.06em}.cur-code,.cur-ex{font-size:var(--fs-xs);color:var(--ink-3)}.cur-ex{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border)}.cur-on{position:absolute;top:12px;right:12px;color:var(--accent)}.lang-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:10px;gap:10px}.lang-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:18px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;position:relative;transition:border-color .15s ease,background .15s ease}.lang-card:hover{border-color:var(--border-strong)}.lang-card.on{border-color:var(--accent);background:var(--accent-soft)}.lang-short{font-size:10px;font-weight:600;letter-spacing:.06em;padding:2px 6px;background:var(--surface-2);color:var(--ink-2);border-radius:4px}.lang-card.on .lang-short{background:var(--accent);color:oklch(.99 0 0)}.theme-dark .lang-card.on .lang-short{color:oklch(.16 .008 80)}.lang-native{font-size:22px;color:var(--ink);margin-top:6px;letter-spacing:-.01em}.lang-name{font-size:var(--fs-xs);color:var(--ink-3)}.lang-on{position:absolute;top:14px;right:14px;color:var(--accent)}.pln-summary{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;grid-gap:24px;gap:24px;padding:22px 26px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);align-items:center}.app.mobile .pln-summary{grid-template-columns:1fr;gap:18px}.app.mobile .pln-stat-div{display:none}.pln-stat{display:flex;flex-direction:column;gap:4px;min-width:0}.pln-stat-l{font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase}.pln-stat-v{font-family:var(--font-display);font-size:36px;line-height:1.05;color:var(--ink);letter-spacing:-.02em}.pln-stat-sub{font-size:var(--fs-xs);color:var(--ink-3);margin-top:2px}.pln-stat-div{width:1px;height:48px;background:var(--border)}.pln-tabs{gap:6px;border-bottom:1px solid var(--border);padding-bottom:0}.pln-tab,.pln-tabs{display:flex;align-items:center}.pln-tab{background:transparent;border:none;padding:10px 14px 12px;color:var(--ink-3);font-size:var(--fs-base);font-weight:500;cursor:pointer;position:relative;gap:8px;white-space:nowrap}.pln-tab:hover{color:var(--ink-2)}.pln-tab.on{color:var(--ink)}.pln-tab.on:after{content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:2px;background:var(--ink);border-radius:2px}.pln-tab-c{font-size:10px;font-weight:500;padding:1px 6px;background:var(--surface-2);color:var(--ink-3);border-radius:999px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.pln-tab.on .pln-tab-c{background:var(--ink);color:var(--bg)}.pln-tab-meta{font-size:var(--fs-xs);color:var(--ink-3);padding-bottom:12px;max-width:380px;text-align:right}.app.mobile .pln-tab-meta{display:none}.pln-wish-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));grid-gap:14px;gap:14px}.pln-wish{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px;display:flex;flex-direction:column;gap:8px;position:relative}.pln-wish-head{gap:8px;margin-bottom:4px}.pln-wish-head,.pln-wish-ic{display:flex;align-items:center}.pln-wish-ic{width:30px;height:30px;border-radius:9px;justify-content:center}.pln-wish-edit{margin-left:auto;width:24px;height:24px;border:none;background:transparent;color:var(--ink-3);border-radius:6px;cursor:pointer;opacity:0;transition:opacity .15s ease}.pln-wish:hover .pln-wish-edit{opacity:1}.pln-wish-edit:hover{background:var(--surface-2);color:var(--ink)}.pln-prio{display:inline-flex;align-items:center;font-size:10px;font-weight:500;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:var(--r-pill)}.pln-prio-firm{background:var(--ink);color:var(--bg)}.pln-prio-saving,.pln-prio-soon{background:var(--accent-soft);color:var(--accent-ink)}.pln-prio-someday{background:var(--surface-2);color:var(--ink-3)}.pln-wish-name{font-size:var(--fs-lg);font-weight:500;color:var(--ink);line-height:1.25;letter-spacing:-.005em}.pln-wish-cat{font-size:var(--fs-xs);color:var(--ink-3)}.pln-wish-amt{font-family:var(--font-display);font-size:30px;line-height:1;color:var(--ink);letter-spacing:-.02em;margin:6px 0 4px}.pln-wish-save{display:flex;flex-direction:column;gap:4px;margin:4px 0}.pln-wish-save-row{display:flex;justify-content:space-between;align-items:baseline}.pln-wish-save-bar{height:4px;background:var(--surface-2);border-radius:2px;overflow:hidden}.pln-wish-save-bar>div{height:100%;border-radius:2px;transition:width .8s}.pln-wish-note{font-size:var(--fs-sm);color:var(--ink-3);font-style:italic;line-height:1.4;margin:2px 0 4px;padding-left:8px;border-left:2px solid var(--border)}.pln-wish-foot{display:flex;align-items:center;gap:8px;margin-top:6px;padding-top:12px;border-top:1px solid var(--border)}.pln-wish-date{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-xs);font-weight:500;padding:3px 8px;border-radius:var(--r-pill)}.pln-wish-date-neg{background:var(--neg-soft);color:var(--neg)}.pln-wish-date-warn{background:var(--warn-soft);color:var(--warn)}.pln-wish-date-pos{background:var(--pos-soft);color:var(--pos)}.pln-wish-date-neutral{background:var(--surface-2);color:var(--ink-2)}.pln-wish-add{border:1.5px dashed var(--border);background:transparent;border-radius:var(--r-lg);min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--ink-3);cursor:pointer;font-size:var(--fs-base);font-weight:500}.pln-wish-add:hover{border-color:var(--border-strong);color:var(--ink)}.pln-sched{gap:var(--gap)}.pln-cal,.pln-sched{display:flex;flex-direction:column}.pln-cal{gap:16px}.pln-cal-head{display:flex;justify-content:space-between;align-items:baseline}.pln-cal-strip{display:grid;grid-template-columns:repeat(31,1fr);grid-gap:3px;gap:3px;padding:6px 0}.app.mobile .pln-cal-strip{grid-template-columns:repeat(15,1fr)}.pln-cal-day{display:flex;flex-direction:column;gap:4px;align-items:center;min-width:0}.pln-cal-day-n{font-family:var(--font-mono);font-size:10px;color:var(--ink-4)}.pln-cal-day.today .pln-cal-day-n{color:var(--bg);background:var(--ink);width:18px;height:18px;line-height:18px;border-radius:50%;text-align:center;font-weight:500}.pln-cal-day-bar{width:100%;height:26px;background:var(--surface-sunk);border-radius:3px;display:flex;flex-direction:column;gap:2px;padding:2px}.pln-cal-tick{flex:1 1;border-radius:1px;min-height:3px}.pln-sched-head{padding:16px 20px}.pln-sched-head,.pln-sched-row{border-bottom:1px solid var(--border)}.pln-sched-row{display:grid;grid-template-columns:56px 36px 1fr auto 130px auto;grid-gap:14px;gap:14px;align-items:center;padding:14px 20px;transition:background .15s ease}.pln-sched-actions{display:flex;align-items:center;gap:4px}.pln-sched-row:last-child{border-bottom:none}.pln-sched-row:hover{background:var(--surface-2)}.pln-sched-row.paid{opacity:.7}.pln-sched-row.paid .pln-sched-amt{color:var(--ink-3)}.app.mobile .pln-sched-row{grid-template-columns:48px 1fr auto;gap:10px;padding:12px 16px}.app.mobile .pln-sched-actions .btn,.app.mobile .pln-sched-row>.pln-sched-ic,.app.mobile .pln-sched-row>.pln-sched-status{display:none}.pln-sched-date{display:flex;flex-direction:column;align-items:center;padding:6px 0;background:var(--surface-sunk);border-radius:8px;line-height:1}.pln-sched-row.overdue .pln-sched-date{background:var(--neg-soft)}.pln-sched-day{font-family:var(--font-display);font-size:20px;color:var(--ink)}.pln-sched-row.overdue .pln-sched-day{color:var(--neg)}.pln-sched-mon{font-size:9px;color:var(--ink-3);letter-spacing:.08em;text-transform:uppercase;margin-top:2px}.pln-sched-ic{width:30px;height:30px;border-radius:9px;display:flex;align-items:center;justify-content:center}.pln-sched-mid{min-width:0}.pln-sched-name{font-size:var(--fs-base);font-weight:500;color:var(--ink);display:flex;align-items:center;gap:8px}.pln-sched-freq{font-size:9px;padding:1px 6px;background:var(--surface-2);color:var(--ink-3);border-radius:var(--r-pill);font-weight:500;letter-spacing:.04em;text-transform:uppercase}.pln-sched-meta{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--ink-3);margin-top:3px}.pln-sched-meta .dot{color:var(--ink-4)}.pln-sched-chip{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:500;padding:3px 8px;border-radius:var(--r-pill)}.pln-sched-chip-paid{background:var(--pos-soft);color:var(--pos)}.pln-sched-chip-upcoming{background:var(--surface-2);color:var(--ink-2)}.pln-sched-chip-overdue{background:var(--neg-soft);color:var(--neg)}.pln-sched-amt{font-size:var(--fs-md);color:var(--ink);text-align:right;white-space:nowrap}.pln-sched-amt.income{color:var(--pos)}.ov-upcoming{display:flex;flex-direction:column;gap:0}.ov-upcoming-row{display:grid;grid-template-columns:40px 1fr auto auto;grid-gap:12px;gap:12px;align-items:center;padding:10px 6px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s ease}.ov-upcoming-row:last-child{border-bottom:none}.ov-upcoming-row:hover{background:var(--surface-2);margin:0 -6px;padding-left:12px;padding-right:12px}.ov-upcoming-date{display:flex;flex-direction:column;align-items:center;font-family:var(--font-mono);line-height:1}.ov-upcoming-day{font-size:16px;color:var(--ink);font-weight:500}.ov-upcoming-mon{font-size:9px;color:var(--ink-3);margin-top:3px;letter-spacing:.06em;text-transform:uppercase}.ov-upcoming-mid{min-width:0}.ov-upcoming-name{font-size:var(--fs-base);color:var(--ink)}.ov-upcoming-sub{font-size:var(--fs-xs);color:var(--ink-3);margin-top:2px}.ov-upcoming-amt{font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:var(--fs-base);color:var(--ink)}.ov-upcoming-amt.income{color:var(--pos)}.ov-upcoming-kind{font-size:10px;padding:2px 7px;border-radius:var(--r-pill);font-weight:500;letter-spacing:.04em;text-transform:uppercase}.ov-upcoming-kind-wish{background:var(--accent-soft);color:var(--accent-ink)}.ov-upcoming-kind-sched{background:var(--surface-2);color:var(--ink-3)}.ov-upcoming-kind-group{background:var(--accent-soft);color:var(--accent-ink)}.ov-upcoming-kind-payment{background:var(--surface-2);color:var(--ink-3)}.pln-groups{gap:14px}.pln-group,.pln-groups{display:flex;flex-direction:column}.pln-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:18px 20px 14px;gap:10px;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.pln-group.done{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:color-mix(in oklch,var(--accent-soft) 15%,var(--surface))}.pln-group-head{gap:12px}.pln-group-head,.pln-group-ic{display:flex;align-items:center}.pln-group-ic{width:34px;height:34px;border-radius:10px;justify-content:center;flex-shrink:0}.pln-group-title-wrap{flex:1 1;min-width:0}.pln-group-assignee{display:inline-flex;align-items:center;gap:6px;padding:4px 10px 4px 5px;border:1px solid var(--border);border-radius:var(--r-pill);font-size:var(--fs-xs);color:var(--ink-2);white-space:nowrap;flex-shrink:0}.pln-group-title{font-size:var(--fs-lg);font-weight:500;color:var(--ink);letter-spacing:-.005em}.pln-group-meta{display:flex;align-items:center;gap:8px;margin-top:3px;flex-wrap:wrap}.pln-group-c,.pln-group-meta{font-size:var(--fs-xs);color:var(--ink-3)}.pln-group-date{display:inline-flex;align-items:center;gap:4px;font-weight:500;padding:2px 7px;border-radius:var(--r-pill);white-space:nowrap}.pln-group-date-neg{background:var(--neg-soft);color:var(--neg)}.pln-group-date-warn{background:var(--warn-soft);color:var(--warn)}.pln-group-date-pos{background:var(--pos-soft);color:var(--pos)}.pln-group-date-neutral{background:var(--surface-2);color:var(--ink-2)}.btn-icon-ghost{width:30px;height:30px;border:none;background:transparent;color:var(--ink-3);border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center}.btn-icon-ghost:hover{background:var(--surface-2);color:var(--ink)}.pln-group-note{font-size:var(--fs-sm);color:var(--ink-3);font-style:italic;line-height:1.45;padding-left:10px;border-left:2px solid var(--border)}.pln-group-bar{height:5px;background:var(--surface-sunk);border-radius:3px;position:relative;overflow:visible}.pln-group-bar-fill{height:100%;border-radius:3px;transition:width .6s cubic-bezier(.2,.7,.2,1)}.pln-group-bar-budget{position:absolute;top:-3px;width:2px;height:11px;background:var(--ink-3);opacity:.5}.pln-items{display:flex;flex-direction:column;gap:1px;margin-top:4px;background:var(--surface-sunk);border-radius:var(--r-md);border:1px solid var(--border);overflow:hidden}.pln-item{display:grid;grid-template-columns:24px 1fr auto 30px;grid-gap:14px;gap:14px;align-items:center;padding:10px 14px;background:var(--surface);transition:background .15s ease}.pln-item:hover{background:var(--surface-2)}.pln-item.bought .pln-item-name-row>span:first-child{text-decoration:line-through;-webkit-text-decoration-color:var(--ink-4);text-decoration-color:var(--ink-4);color:var(--ink-3)}.pln-check{width:18px;height:18px;border:1.5px solid var(--border-strong);background:var(--bg);border-radius:5px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:transparent;transition:background .15s ease,border-color .15s ease,color .15s ease}.pln-check:hover{border-color:var(--ink)}.pln-check.on{background:var(--accent);border-color:var(--accent);color:var(--bg)}.theme-dark .pln-check.on{color:oklch(.16 .008 80)}.pln-item-name{display:flex;flex-direction:column;font-size:var(--fs-base);color:var(--ink);min-width:0}.pln-item-name-row{display:flex;align-items:center;gap:8px;min-width:0}.pln-item-name-row>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pln-item-vendor{font-size:var(--fs-xs);color:var(--ink-3);margin-top:1px}.pln-item-lines{display:flex;flex-direction:column;gap:4px}.pln-math{display:grid;grid-template-columns:40px 48px 12px 84px 14px 76px;justify-content:end;align-items:center;grid-gap:6px;gap:6px;font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:var(--fs-sm);color:var(--ink-2)}.pln-math>.pln-item-price,.pln-math>.pln-item-qty,.pln-math>.pln-math-price,.pln-math>.pln-math-qty{justify-self:stretch}.pln-math-label{font-family:var(--font-sans);font-size:9px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-4);text-align:right}.pln-math-paid .pln-math-label{color:var(--pos)}.pln-item.bought .pln-math-est{color:var(--ink-3)}.pln-item.bought .pln-math-est .pln-math-price,.pln-item.bought .pln-math-est .pln-math-qty,.pln-item.bought .pln-math-est .pln-math-sub{color:var(--ink-3);font-weight:400;text-decoration:line-through}.pln-math-price,.pln-math-qty{text-align:right;color:var(--ink-2)}.pln-math-price .pre{color:var(--ink-3)}.pln-item-qty{width:100%;padding:3px 6px;border:1px solid var(--border-strong);background:var(--bg);color:var(--ink);border-radius:5px;text-align:right;font-family:var(--font-mono);font-size:var(--fs-sm);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.pln-item-qty:focus{border-color:var(--accent);outline:none}.pln-item-qty::-webkit-inner-spin-button,.pln-item-qty::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.pln-item-eq,.pln-item-x{color:var(--ink-4);text-align:center}.pln-item-price{display:flex;align-items:center;justify-content:flex-end;border:1px solid var(--border-strong);background:var(--bg);border-radius:5px;padding:0 6px}.pln-item-price:focus-within{border-color:var(--accent)}.pln-item-price .pre{color:var(--ink-3);font-size:var(--fs-sm)}.pln-item-price input{width:100%;min-width:0;border:none;background:transparent;outline:none;color:var(--ink);font-family:var(--font-mono);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:var(--fs-sm);text-align:right;padding:3px 0}.pln-item-price input::-webkit-inner-spin-button,.pln-item-price input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.pln-math-sub{text-align:right;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--ink)}.pln-math-paid .pln-math-sub{font-weight:600}.pln-item-cat{display:inline-flex;gap:4px;font-size:10px;padding:3px 7px;border-radius:var(--r-pill)}.pln-item-add,.pln-item-cat{align-items:center;font-weight:500;white-space:nowrap}.pln-item-add{display:flex;gap:6px;padding:9px 14px;background:transparent;border:none;border-top:1px dashed var(--border);color:var(--ink-3);font-size:var(--fs-sm);cursor:pointer;text-align:left}.pln-item-add:hover{background:var(--surface-2);color:var(--ink)}.pln-items-empty{padding:14px;font-size:var(--fs-sm);color:var(--ink-3);text-align:center}.pln-group-foot{display:flex;align-items:center;gap:8px;padding-top:6px}.pln-group-foot-l{flex:1 1;font-size:var(--fs-sm);color:var(--ink-3);display:flex;align-items:center;gap:6px}.pln-group-add{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:18px 22px;background:transparent;border:1.5px dashed var(--border);border-radius:var(--r-lg);color:var(--ink-2);font-size:var(--fs-base);font-weight:500;cursor:pointer;text-align:left}.pln-group-add>span:first-of-type{display:flex;align-items:center;gap:6px}.pln-group-add:hover{border-color:var(--border-strong);color:var(--ink)}.pln-group-add-sub{font-size:var(--fs-xs);color:var(--ink-3);font-weight:400}.app.mobile .pln-item{grid-template-columns:24px 1fr;gap:8px;padding:10px 12px}.app.mobile .pln-item-math{grid-column:1/-1;padding-left:30px;font-size:var(--fs-xs)}.ha{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;font-weight:600;letter-spacing:.01em;flex-shrink:0;font-family:var(--font-sans);-webkit-user-select:none;-moz-user-select:none;user-select:none}.ha.ring{box-shadow:0 0 0 2px var(--bg)}.ha.unassigned{background:var(--surface-2);color:var(--ink-4);border:1px dashed var(--border-strong)}.ha-stack{display:inline-flex;align-items:center}.ha-picker{position:relative;display:inline-flex}.ha-picker-trigger{background:transparent;border:none;padding:0;cursor:pointer;border-radius:50%;transition:transform .12s ease}.ha-picker-trigger:hover{transform:scale(1.08)}.ha-picker-trigger:hover .ha:not(.unassigned){box-shadow:0 0 0 2px var(--bg),0 0 0 3px var(--accent)}.ha-picker-scrim{position:fixed;inset:0;z-index:60}.ha-picker-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:70;min-width:200px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-2);padding:8px}.ha-picker-h{font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;padding:4px 8px 8px}.ha-picker-list{display:flex;flex-direction:column;gap:1px}.ha-picker-row{display:flex;align-items:center;gap:10px;padding:7px 8px;background:transparent;border:none;border-radius:7px;cursor:pointer;color:var(--ink);font-size:var(--fs-sm);text-align:left}.ha-picker-row.on,.ha-picker-row:hover{background:var(--surface-2)}.ha-seg{display:flex;gap:4px;padding:3px;background:var(--surface-sunk);border:1px solid var(--border);border-radius:var(--r-md)}.ha-seg-opt{flex:1 1;display:flex;align-items:center;justify-content:center;gap:8px;padding:7px 12px;background:transparent;border:none;border-radius:7px;cursor:pointer;color:var(--ink-2);font-size:var(--fs-sm);font-weight:500;white-space:nowrap}.ha-seg-opt:hover{color:var(--ink);background:oklch(0 0 0/.03)}.theme-dark .ha-seg-opt:hover{background:oklch(1 0 0/.03)}.ha-seg-opt.on{background:var(--surface);color:var(--ink);box-shadow:0 1px 2px oklch(0 0 0/.06)}.tx-by{display:inline-flex;align-items:center;margin-right:4px}.ha-select{height:38px}.dbt-summary{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;grid-gap:24px;gap:24px;padding:22px 26px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);align-items:center}.app.mobile .dbt-summary{grid-template-columns:1fr;gap:18px}.app.mobile .dbt-stat-div{display:none}.dbt-stat{display:flex;flex-direction:column;gap:4px}.dbt-stat-l{font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase}.dbt-stat-v-old{font-family:var(--font-display);font-size:36px;line-height:1.05;letter-spacing:-.02em}.dbt-stat-sub{font-size:var(--fs-xs);color:var(--ink-3);margin-top:2px}.dbt-stat-div{width:1px;height:48px;background:var(--border)}.dbt-list{display:flex;flex-direction:column;gap:8px}.dbt-row{display:grid;grid-template-columns:44px 1fr auto auto;grid-gap:16px;gap:16px;align-items:center;padding:16px 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md)}.dbt-row.overdue{border-color:color-mix(in oklch,var(--neg) 30%,var(--border));background:color-mix(in oklch,var(--neg-soft) 50%,var(--surface))}.dbt-ic{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center}.dbt-mid{min-width:0}.dbt-name{display:flex;align-items:center;gap:8px;font-size:var(--fs-base);color:var(--ink);flex-wrap:wrap}.dbt-name,.dbt-who{font-weight:500}.dbt-note{font-size:var(--fs-sm);color:var(--ink-2);margin-top:2px}.dbt-meta{display:flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--ink-3);margin-top:4px}.dbt-meta .dot{color:var(--ink-4)}.dbt-due-bad{color:var(--neg);font-weight:500}.dbt-due-warn{color:var(--warn);font-weight:500}.dbt-attach-add{align-self:flex-start}.dbt-attach{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md)}.dbt-attach-meta{display:flex;flex-direction:column;min-width:0;flex:1 1}.dbt-attach-name{font-size:var(--fs-sm);color:var(--ink);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dbt-attach-size{font-size:var(--fs-xs);color:var(--ink-3)}.dbt-attach-chip{display:inline-flex;align-items:center;color:var(--ink-3)}.dbt-amt{font-family:var(--font-display);font-size:28px;line-height:1;letter-spacing:-.02em;white-space:nowrap}.dbt-amt.in{color:var(--pos)}.dbt-amt.out{color:var(--neg)}.dbt-stat-v{font-family:var(--font-display);font-size:36px;line-height:1.05;letter-spacing:-.02em;white-space:nowrap}.dbt-actions{display:flex;align-items:center;gap:6px}.app.mobile .dbt-actions .btn{display:none}.dbt-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));grid-gap:16px;gap:16px}.app.mobile .dbt-cards{grid-template-columns:1fr}.dbt-card-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}.dbt-card-row,.dbt-card-visual{display:flex;flex-direction:column}.dbt-card-visual{padding:22px 24px 18px;color:oklch(.97 0 0);gap:4px;position:relative;background-image:linear-gradient(135deg,transparent 60%,oklch(1 0 0/.08))}.dbt-card-brand{font-size:11px;letter-spacing:.12em;text-transform:uppercase;opacity:.7}.dbt-card-num{font-size:20px;letter-spacing:.12em;margin-top:12px}.dbt-card-name{font-size:var(--fs-md);font-weight:500;margin-top:4px}.dbt-card-meta{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;grid-gap:18px;gap:18px;padding:18px 22px}.app.mobile .dbt-card-meta{grid-template-columns:1fr 1fr;gap:14px}.dbt-card-label{font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase}.dbt-card-val{font-size:22px;line-height:1.1;color:var(--ink);margin-top:4px}.dbt-card-bar{min-width:0}.dbt-card-bar-l{display:flex;justify-content:space-between;font-size:var(--fs-xs);color:var(--ink-3);margin-bottom:4px}.dbt-card-bar-track{height:5px;background:var(--surface-sunk);border-radius:3px;overflow:hidden}.dbt-card-bar-fill{height:100%;border-radius:3px;transition:width .6s}.dbt-card-actions{display:flex;flex-direction:column;gap:6px}.rep-stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--gap);gap:var(--gap)}.app.mobile .rep-stats{grid-template-columns:repeat(2,1fr);gap:12px}.rep-stat{padding:20px 22px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);display:flex;flex-direction:column}.rep-stat-l{font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase}.rep-stat-v{font-family:var(--font-display);font-size:36px;line-height:1.05;letter-spacing:-.02em;color:var(--ink);margin-top:6px;white-space:nowrap}.rep-stat-trend{font-size:var(--fs-xs);margin-top:6px;font-weight:500;padding:2px 8px;border-radius:var(--r-pill);width:-moz-fit-content;width:fit-content;letter-spacing:.01em}.rep-stat-trend[data-tone=pos]{background:var(--pos-soft);color:var(--pos)}.rep-stat-trend[data-tone=warn]{background:var(--warn-soft);color:var(--warn)}.rep-stat-trend[data-tone=neg]{background:var(--neg-soft);color:var(--neg)}.rep-stat-trend[data-tone=neutral]{background:var(--surface-2);color:var(--ink-2)}.rep-row{display:grid;grid-template-columns:380px 1fr;grid-gap:var(--gap);gap:var(--gap)}.app.mobile .rep-row{grid-template-columns:1fr}.rep-donut-card{display:flex;flex-direction:column;align-items:stretch}.rep-donut-wrap{position:relative;margin-top:16px}.rep-donut-center,.rep-donut-wrap{display:flex;justify-content:center;align-items:center}.rep-donut-center{position:absolute;inset:0;flex-direction:column;text-align:center;pointer-events:none}.rep-donut-l{font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase}.rep-donut-v{font-family:var(--font-display);font-size:30px;color:var(--ink);letter-spacing:-.02em;margin-top:4px}.rep-donut-sub{font-size:var(--fs-xs);color:var(--ink-3);margin-top:2px}.rep-cat-table,.rep-table{display:flex;flex-direction:column}.rep-table{gap:0;margin-top:14px;max-height:340px;overflow-y:auto}.rep-table-row{display:grid;grid-template-columns:1fr auto 56px;grid-gap:12px;gap:12px;padding:9px 4px;align-items:center;border-bottom:1px solid var(--border)}.rep-table-row:last-child{border-bottom:none}.rep-table-l{display:flex;align-items:center;gap:10px;min-width:0}.rep-table-amt{font-size:var(--fs-sm);color:var(--ink)}.rep-delta{font-size:11px;font-weight:500;text-align:right;color:var(--ink-3)}.rep-delta.up{color:var(--warn)}.rep-delta.down{color:var(--pos)}.rep-bars{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:16px;gap:16px;padding:14px 8px 0;height:220px}.rep-bar-col{display:flex;flex-direction:column;align-items:center;gap:8px}.rep-bar-stack{flex:1 1;width:100%;display:flex;gap:4px;align-items:flex-end;justify-content:center}.rep-bar{width:18px;border-radius:3px 3px 0 0;min-height:2px;transition:height .6s cubic-bezier(.2,.7,.2,1);position:relative}.rep-bar-spend{background:var(--ink)}.rep-bar-income{background:var(--pos)}.rep-bar-label{font-size:var(--fs-xs);color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase}.rep-bar-label.current{color:var(--ink);font-weight:500}.rep-bar-val{font-size:11px;color:var(--ink-2)}.rep-members{display:flex;flex-direction:column;gap:4px;margin-top:14px}.rep-member-row{display:grid;grid-template-columns:32px 140px 1fr auto 50px;grid-gap:12px;gap:12px;align-items:center;padding:10px 4px;border-bottom:1px solid var(--border)}.rep-member-row:last-child{border-bottom:none}.app.mobile .rep-member-row{grid-template-columns:32px 1fr auto auto}.app.mobile .rep-member-bar{display:none}.rep-member-name{font-size:var(--fs-sm);color:var(--ink);font-weight:500}.rep-member-bar{height:6px;background:var(--surface-2);border-radius:3px;position:relative;overflow:hidden}.rep-member-bar>div{height:100%;border-radius:3px;transition:width .6s}.rep-member-amt{font-size:var(--fs-sm);color:var(--ink)}.rep-member-pct{font-size:11px;color:var(--ink-3);text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.rep-pill{display:inline-flex;align-items:center;padding:3px 10px;background:var(--surface-2);color:var(--ink-2);border-radius:var(--r-pill);font-size:var(--fs-sm);font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ai-head{justify-content:space-between;margin-bottom:14px}.ai-head,.ai-head-l{gap:12px}.ai-head,.ai-head-l,.ai-spark{display:flex;align-items:center}.ai-spark{width:36px;height:36px;border-radius:11px;background:var(--accent-soft);color:var(--accent);justify-content:center}.ai-h{font-family:var(--font-display);font-size:22px;color:var(--ink);letter-spacing:-.01em;line-height:1.1}.ai-sub{font-size:var(--fs-sm);color:var(--ink-3);margin-top:2px}.ai-gen{white-space:nowrap}.ai-gen[disabled]{opacity:.6;cursor:wait}.ai-spinner{width:12px;height:12px;border:2px solid var(--ink-4);border-top-color:var(--ink);border-radius:50%;animation:ai-spin .8s linear infinite}@keyframes ai-spin{to{transform:rotate(1turn)}}.ai-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:12px;gap:12px}.ai-card{background:linear-gradient(180deg,var(--accent-soft),var(--surface) 60%);border:1px solid color-mix(in oklch,var(--accent) 25%,transparent);border-radius:var(--r-lg);padding:16px 18px;display:flex;flex-direction:column;gap:6px;transition:transform .15s ease,border-color .15s ease}.theme-dark .ai-card{background:linear-gradient(180deg,var(--accent-soft),var(--surface) 70%);border-color:color-mix(in oklch,var(--accent) 35%,transparent)}.ai-card.fresh{animation:ai-pop .35s cubic-bezier(.2,.7,.2,1)}@keyframes ai-pop{0%{transform:translateY(-6px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.ai-card-head{display:flex;align-items:center;gap:6px}.ai-tag{letter-spacing:.08em;text-transform:uppercase;color:var(--accent-ink)}.ai-new,.ai-tag{font-size:10px;font-weight:600}.ai-new{letter-spacing:.04em;background:var(--accent);color:oklch(.99 0 0);padding:1px 6px;border-radius:var(--r-pill);margin-left:auto}.theme-dark .ai-new{color:oklch(.16 .008 80)}.ai-card-title{font-size:var(--fs-md);font-weight:500;color:var(--ink);margin-top:4px;line-height:1.3}.ai-card-body{font-size:var(--fs-sm);color:var(--ink-2);line-height:1.5}.ai-error{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--warn-soft);color:var(--warn);border-radius:var(--r-md);font-size:var(--fs-sm);margin-bottom:12px}.ntf-scrim{position:fixed;inset:0;background:oklch(0 0 0/.25);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:90;animation:mdl-fade .15s ease}.ntf-panel{position:fixed;top:0;right:0;bottom:0;width:420px;max-width:100vw;background:var(--bg);border-left:1px solid var(--border);box-shadow:-16px 0 40px oklch(0 0 0/.15);z-index:91;display:flex;flex-direction:column;animation:ntf-slide .25s cubic-bezier(.2,.7,.2,1)}@keyframes ntf-slide{0%{transform:translateX(20px);opacity:0}}.ntf-head{display:flex;align-items:flex-start;justify-content:space-between;padding:18px 20px 12px;gap:12px;border-bottom:1px solid var(--border)}.ntf-title{font-family:var(--font-display);font-size:26px;line-height:1.1;color:var(--ink);letter-spacing:-.01em}.ntf-sub{font-size:var(--fs-sm);color:var(--ink-3);margin-top:4px}.ntf-toolbar{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;gap:10px;border-bottom:1px solid var(--border)}.ntf-count{display:inline-block;min-width:16px;padding:0 4px;margin-left:4px;background:var(--accent);color:oklch(.99 0 0);font-size:10px;border-radius:8px;text-align:center;font-weight:600}.theme-dark .ntf-count{color:oklch(.16 .008 80)}.seg-opt.on .ntf-count{background:var(--bg);color:var(--ink)}.ntf-body{flex:1 1;overflow-y:auto;padding:6px 14px}.ntf-empty{align-items:center;padding:60px 20px;text-align:center}.ntf-empty,.ntf-group{display:flex;flex-direction:column}.ntf-group-h{padding:12px 6px 8px;font-size:10px;color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;font-weight:600}.ntf-row{position:relative;display:grid;grid-template-columns:32px 1fr auto;grid-gap:12px;gap:12px;padding:12px 14px 12px 16px;background:transparent;border-radius:var(--r-md);cursor:pointer;align-items:flex-start;transition:background .15s ease}.ntf-row:hover{background:var(--surface-2)}.ntf-row.read{opacity:.72}.ntf-row.read:hover{opacity:1}.ntf-dot{position:absolute;left:4px;top:20px;width:6px;height:6px;border-radius:50%;background:var(--accent)}.ntf-ic{width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.ntf-mid,.ntf-row-h{min-width:0}.ntf-row-h{display:flex;align-items:flex-start;gap:6px}.ntf-row-title{flex:1 1;min-width:0;font-size:var(--fs-sm);font-weight:500;color:var(--ink);line-height:1.35;display:block}.ntf-sev{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;flex-shrink:0;margin-top:2px}.ntf-sev.sev-neg{background:var(--neg-soft);color:var(--neg)}.ntf-sev.sev-warn{background:var(--warn-soft);color:var(--warn)}.ntf-sev.sev-pos{background:var(--pos-soft);color:var(--pos)}.ntf-row-body{font-size:var(--fs-sm);color:var(--ink-2);margin-top:3px;line-height:1.45}.ntf-row-meta{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-3);margin-top:5px}.ntf-row-meta .dot{color:var(--ink-4)}.ntf-kind{text-transform:capitalize;font-weight:500}.ntf-action{white-space:nowrap;align-self:center}.ntf-foot{padding:12px 20px;border-top:1px solid var(--border);display:flex;justify-content:space-between;background:var(--surface-sunk)}.tb-bell{position:relative}.tb-bell-dot{position:absolute;top:4px;right:6px;width:8px;height:8px;background:var(--neg);border:2px solid var(--bg);border-radius:50%}