:root{--tg-bg: #ffffff;--tg-text: #000000;--tg-hint: #888888;--tg-button: #2ea6ff;--tg-button-text: #ffffff;--tg-secondary-bg: #f1f1f1;--brand: #5b54e6;--brand-2: #8b5cf6;--brand-mint: #16c79a;--brand-ink: #ffffff;--bg: var(--tg-bg);--text: var(--tg-text);--hint: var(--tg-subtitle, var(--tg-hint));--accent: var(--brand);--accent-text: var(--brand-ink);--section: var(--tg-section-bg, var(--tg-bg));--surface: var(--tg-secondary-bg);--surface-2: color-mix(in srgb, var(--tg-secondary-bg) 55%, var(--tg-bg));--border: var(--tg-separator, color-mix(in srgb, var(--tg-hint) 24%, transparent));--separator: var(--tg-separator, color-mix(in srgb, var(--tg-hint) 18%, transparent));--border-strong: color-mix(in srgb, var(--tg-hint) 55%, transparent);--success: #16c79a;--danger: var(--tg-destructive, #ff4d4f);--radius: 18px;--radius-sm: 13px;--shadow: 0 6px 24px color-mix(in srgb, #000 12%, transparent);--brand-shadow: 0 10px 28px color-mix(in srgb, var(--brand) 30%, transparent);--safe-bottom: env(safe-area-inset-bottom, 0px);--nav-h: calc(62px + var(--safe-bottom))}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:16px;line-height:1.4}#root{max-width:520px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select{font-family:inherit;width:100%;padding:13px 14px;font-size:16px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);outline:none}input:focus,select:focus{border-color:var(--accent)}.screen{flex:1;padding:calc(var(--tg-safe-top, 92px) + 8px) 16px calc(var(--nav-h) + 20px);animation:screen-in .28s cubic-bezier(.22,1,.36,1)}@keyframes screen-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.screen-head{position:sticky;top:0;z-index:5;display:flex;align-items:baseline;justify-content:space-between;padding:6px 0 14px;background:linear-gradient(var(--bg) 70%,transparent)}.screen-head h1{font-size:22px;font-weight:700;margin:0}.screen-head .sub{color:var(--hint);font-size:13px}.card{background:var(--surface);border-radius:var(--radius);padding:16px;margin-bottom:12px}.card.flush{padding:6px}.card-title{font-weight:600;font-size:15px}.muted{color:var(--hint);font-size:13px}@keyframes amount-in{0%{opacity:0;transform:translateY(6px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.segmented{display:flex;background:var(--surface);border-radius:999px;padding:4px;gap:4px}.segmented button{flex:1;min-width:0;padding:9px 6px;font-size:13.5px;font-weight:600;border-radius:999px;color:inherit;opacity:.7;white-space:nowrap;transition:background .18s,opacity .18s}.segmented button.active{box-shadow:0 1px 3px color-mix(in srgb,#000 14%,transparent)}.segmented button.active{background:var(--bg);color:var(--text);opacity:1;animation:seg-pop .28s cubic-bezier(.34,1.56,.64,1)}@keyframes seg-pop{0%{transform:scale(.92)}60%{transform:scale(1.04)}to{transform:scale(1)}}.section-title{font-size:14px;font-weight:700;color:var(--hint);text-transform:uppercase;letter-spacing:.4px;margin:18px 2px 10px}.tiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.tile{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:14px 10px;text-align:center;transition:transform .12s}.tile:active{transform:scale(.95)}.tile .ic,.row-ic{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;margin:0 auto 8px}.tile .ic{background:color-mix(in srgb,var(--brand) 11%,var(--surface))}.row-ic{margin:0;flex:none}.tile .name{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile .val{font-size:12px;color:var(--hint);margin-top:2px}.tile.selected{outline:2px solid var(--accent);animation:tile-pop .32s cubic-bezier(.34,1.56,.64,1)}@keyframes tile-pop{0%{transform:scale(1)}50%{transform:scale(1.04)}to{transform:scale(1)}}.tiles>*{animation:tile-in .34s cubic-bezier(.22,1,.36,1) backwards}.tiles>*:nth-child(1){animation-delay:20ms}.tiles>*:nth-child(2){animation-delay:45ms}.tiles>*:nth-child(3){animation-delay:70ms}.tiles>*:nth-child(4){animation-delay:95ms}.tiles>*:nth-child(5){animation-delay:.12s}.tiles>*:nth-child(6){animation-delay:145ms}.tiles>*:nth-child(7){animation-delay:.17s}.tiles>*:nth-child(8){animation-delay:195ms}.tiles>*:nth-child(9){animation-delay:.22s}@keyframes tile-in{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:none}}.list-row{display:flex;align-items:center;gap:12px;padding:11px 14px;background:var(--surface);transition:background .15s ease}.list-row:active{background:var(--surface-2)}.list-row:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.list-row:last-child{border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius)}.list-row+.list-row{border-top:1px solid var(--border)}.list-row .body{flex:1;min-width:0}.list-row .t1{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-row .t2{font-size:12px;color:var(--hint);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-row .amt{font-size:15px;font-weight:700;white-space:nowrap}.amt.pos{color:var(--success)}.amt.neg{color:var(--danger)}.date-sep{font-size:13px;font-weight:600;color:var(--hint);margin:16px 2px 8px}.btn{width:100%;padding:15px;font-size:16px;font-weight:600;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-text);transition:opacity .15s,transform .1s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.55}.btn.secondary{background:var(--surface);color:var(--text)}.btn.danger{background:color-mix(in srgb,var(--danger) 16%,transparent);color:var(--danger)}.alloc-incomplete{margin-top:12px;padding:12px 14px;border-radius:var(--radius-sm);background:color-mix(in srgb,#f7934c 14%,var(--surface));border:1px solid color-mix(in srgb,#f7934c 38%,transparent)}.alloc-incomplete-title{font-size:14px;font-weight:700}.alloc-incomplete-sub{font-size:12px;color:var(--hint);margin:4px 0 10px;line-height:1.35}.alloc-incomplete-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--separator)}.alloc-incomplete-name{font-size:14px;font-weight:600;flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alloc-incomplete-gap{font-size:12px;font-weight:700;color:#d9772e;white-space:nowrap;font-variant-numeric:tabular-nums}.alloc-incomplete-cta{width:auto;flex:none;padding:7px 12px;font-size:13px}.row{display:flex;gap:10px}.row>*{flex:1}label.field{display:block;font-size:13px;color:var(--hint);margin:14px 0 5px;font-weight:600}.amount-display{text-align:center;font-size:46px;font-weight:800;letter-spacing:-1px;padding:18px 0 6px;min-height:78px}.amount-display.spend{color:var(--danger)}.amount-display.revenue{color:var(--success)}.amount-display .cur{font-size:22px;font-weight:700;color:var(--hint);margin-left:6px}.amount-display .amount-caret{display:inline-block;width:2px;height:.9em;margin:0 1px;vertical-align:text-bottom;background:currentColor;border-radius:1px;animation:amount-caret-blink 1s steps(1) infinite}@keyframes amount-caret-blink{50%{opacity:0}}.amount-display .amount-value,.amount-display .amount-char{cursor:text}.amount-display .amount-zero{color:var(--hint)}.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.keypad button{font-size:24px;font-weight:600;padding:16px 0;border-radius:var(--radius-sm);background:var(--surface);transition:transform .08s,background .15s}.keypad button:active{transform:scale(.94);background:var(--surface-2)}.chip{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid var(--border-strong);border-radius:999px;background:var(--surface);font-size:14px;font-weight:600}.chip-row{display:flex;gap:8px;overflow-x:auto;padding:2px;scrollbar-width:none}.chip-row::-webkit-scrollbar{display:none}.chip.active{background:var(--accent);color:var(--accent-text);border-color:var(--accent);animation:chip-pop .28s cubic-bezier(.34,1.56,.64,1)}.chip:active{transform:scale(.95)}@keyframes chip-pop{0%{transform:scale(.9)}60%{transform:scale(1.06)}to{transform:scale(1)}}.donut-wrap{display:flex;align-items:center;justify-content:flex-start;gap:18px;flex-wrap:wrap}.donut-wrap-open{justify-content:flex-start;align-items:flex-start}.donut-svg{transition:transform .28s ease,opacity .22s ease,max-width .28s ease,margin .28s ease}.donut-wrap-open .donut-svg{transform:translate(-120%);opacity:0;max-width:0;margin:0;pointer-events:none;overflow:hidden}.donut-svg{flex:none;display:flex;align-items:center;justify-content:center;background:transparent;border:0;padding:0;cursor:pointer;animation:donut-in .55s cubic-bezier(.22,1,.36,1) both}.donut-svg:active{transform:scale(.97)}.donut-svg svg circle{transition:stroke-width .18s ease}.donut-svg svg text{animation:amount-in .5s cubic-bezier(.22,1,.36,1) .15s both}@keyframes donut-in{0%{opacity:0;transform:scale(.84) rotate(-12deg)}to{opacity:1;transform:scale(1) rotate(0)}}.center-toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:130;background:var(--surface);color:var(--text);padding:16px 22px;border-radius:16px;font-size:15px;font-weight:600;line-height:1.35;text-align:center;max-width:min(86vw,360px);box-shadow:0 18px 48px #00000052,0 2px 10px #0003;pointer-events:none;animation:center-toast-pop .42s cubic-bezier(.2,1.4,.4,1)}.center-toast.ok{background:color-mix(in srgb,var(--success) 18%,var(--surface));color:var(--success);box-shadow:0 0 0 2px color-mix(in srgb,var(--success) 35%,transparent),0 18px 48px #00000052}.center-toast.err{background:color-mix(in srgb,var(--danger) 18%,var(--surface));color:var(--danger)}@keyframes center-toast-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}55%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}75%{transform:translate(-50%,-50%) scale(.96)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.cat-picker{position:relative;margin-bottom:10px}.cat-picker-trigger{display:flex;align-items:center;gap:10px;width:100%;background:var(--surface-2);color:var(--text);border:0;border-radius:12px;padding:9px 12px;font-size:14px;font-weight:600;cursor:pointer;text-align:left;transition:background .12s}.cat-picker-trigger:active{background:color-mix(in srgb,var(--accent) 12%,var(--surface-2))}.cat-picker-trigger.open{border-radius:12px 12px 0 0}.cat-picker-icon{width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:none;font-size:14px;background:var(--surface);color:var(--text)}.cat-picker-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cat-picker-sum{font-size:12px;font-weight:700;color:var(--hint);font-variant-numeric:tabular-nums;flex:none}.cat-picker-chev{font-size:12px;color:var(--hint);transition:transform .18s;flex:none}.cat-picker-chev.open{transform:rotate(180deg)}.cat-picker-menu{position:absolute;top:100%;left:0;right:0;z-index:30;background:var(--surface-2);border-radius:0 0 12px 12px;box-shadow:0 12px 32px #00000047;max-height:320px;overflow-y:auto;padding:4px;animation:cat-picker-in .14s ease}@keyframes cat-picker-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.cat-picker-row{display:flex;align-items:center;gap:10px;width:100%;background:transparent;color:var(--text);border:0;border-radius:8px;padding:9px 10px;font-size:14px;font-weight:500;cursor:pointer;text-align:left}.cat-picker-row:active{background:color-mix(in srgb,var(--accent) 12%,transparent)}.cat-picker-row.active{background:color-mix(in srgb,var(--accent) 18%,transparent);font-weight:700}.donut-mini{display:none;flex:1;flex-direction:column;justify-content:center;gap:8px;min-width:0;cursor:pointer;padding-left:4px}.donut-mini-row{display:flex;align-items:center;gap:8px;font-size:12px;min-width:0}.donut-mini-dot{width:8px;height:8px;border-radius:2px;flex:none}.donut-mini-name{flex:1;min-width:0;color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.donut-mini-pct{flex:none;color:var(--hint);font-weight:700;font-variant-numeric:tabular-nums;font-size:11px}.donut-mini-more{font-size:11px;color:var(--hint);padding-left:16px;font-style:italic}@media (max-width: 480px){.donut-wrap .donut-legend{display:none}.donut-wrap .donut-mini{display:flex}.donut-wrap-open .donut-legend{display:flex;width:100%;margin-top:8px}.donut-wrap-open .donut-mini{display:none}}.donut-legend{flex:1;display:flex;flex-direction:column;gap:9px;min-width:160px}.donut-wrap-open .donut-legend{cursor:pointer}.donut-collapse-hint{margin-top:6px;align-self:center;font-size:11px;color:var(--hint);font-weight:600;letter-spacing:.04em;text-transform:uppercase}.legend-item{display:flex;align-items:center;gap:8px;font-size:13px}.legend-dot{width:10px;height:10px;border-radius:3px;flex:none}.legend-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legend-pct{flex:none;color:var(--hint);font-size:12px;font-weight:600;min-width:34px;text-align:right}.legend-val{flex:none;color:var(--text);font-weight:700;font-size:13px}.donut-empty{flex:1;min-width:140px;color:var(--text);font-size:15px;font-weight:600;text-align:center;padding:18px 8px}.swipe-row{position:relative;overflow:hidden;background:var(--danger)}.swipe-row+.swipe-row .swipe-row-body .list-row{border-top:1px solid var(--border)}.swipe-row-delete{position:absolute;right:0;top:0;bottom:0;width:76px;display:flex;align-items:center;justify-content:center;background:var(--danger);color:#fff;border:0;font-size:22px;cursor:pointer}.swipe-row-delete:active{filter:brightness(.92)}.swipe-row-body{position:relative;background:var(--surface);transition:transform .18s ease-out;touch-action:pan-y;will-change:transform}.bottom-nav{position:fixed;bottom:0;left:0;right:0;max-width:520px;margin:0 auto;height:var(--nav-h);padding-bottom:var(--safe-bottom);display:flex;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);border-top:1px solid var(--border);z-index:20}.bottom-nav button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--hint);font-size:11px;font-weight:600}.bottom-nav button{position:relative;transition:color .15s ease}.bottom-nav button.active{color:var(--accent)}.bottom-nav button.active .ic{animation:nav-bounce .42s cubic-bezier(.34,1.56,.64,1)}.bottom-nav button.active:after{content:"";position:absolute;bottom:calc(var(--safe-bottom) + 4px);left:50%;width:18px;height:3px;margin-left:-9px;border-radius:2px;background:var(--accent);animation:nav-dot-in .32s cubic-bezier(.22,1,.36,1)}.bottom-nav button:active .ic{transform:scale(.88);transition:transform .08s ease}.bottom-nav .ic{font-size:21px;line-height:1;transition:transform .18s cubic-bezier(.34,1.56,.64,1)}@keyframes nav-bounce{0%{transform:scale(1)}35%{transform:scale(1.22) translateY(-2px)}70%{transform:scale(.94)}to{transform:scale(1)}}@keyframes nav-dot-in{0%{opacity:0;transform:scaleX(.3)}to{opacity:1;transform:scaleX(1)}}.fab{position:fixed;right:max(18px,calc((100vw - 520px)/2 + 18px));bottom:calc(var(--nav-h) + 16px);width:56px;height:56px;border-radius:50%;background:var(--accent);color:var(--accent-text);font-size:28px;box-shadow:0 6px 20px color-mix(in srgb,var(--accent) 38%,transparent),0 2px 6px color-mix(in srgb,#000 16%,transparent);display:flex;align-items:center;justify-content:center;z-index:21;transition:transform .18s cubic-bezier(.34,1.56,.64,1),box-shadow .18s ease;animation:fab-in .42s cubic-bezier(.34,1.56,.64,1) .1s both}.fab:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:var(--accent);opacity:.28;z-index:-1;filter:blur(8px)}.fab:active{transform:scale(.88) rotate(90deg)}@keyframes fab-in{0%{opacity:0;transform:scale(.5) rotate(-45deg)}to{opacity:1;transform:scale(1) rotate(0)}}.notice{padding:12px 14px;border-radius:var(--radius-sm);margin-top:14px;font-size:14px;font-weight:500;white-space:pre-line}.notice{animation:notice-in .32s cubic-bezier(.22,1,.36,1)}@keyframes notice-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.notice.ok{background:color-mix(in srgb,var(--success) 16%,transparent);color:var(--success)}.notice.err{background:color-mix(in srgb,var(--danger) 16%,transparent);color:var(--danger)}.notice.warn{background:color-mix(in srgb,#f0a020 18%,transparent);color:#b06d00}.skeleton{background:linear-gradient(90deg,var(--surface) 25%,var(--surface-2) 37%,var(--surface) 63%);background-size:400% 100%;animation:shimmer 1.3s ease infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.empty{text-align:center;color:var(--hint);padding:40px 16px;font-size:14px}.empty .big{font-size:38px;margin-bottom:10px}pre{white-space:pre-wrap;font-family:inherit;margin:0}.alloc-branch{position:relative}.alloc-row{display:flex;align-items:center;gap:8px;border-left:1px dashed var(--surface-2);margin-left:6px;padding:7px 0 7px 10px;font-size:13.5px}.alloc-branch:first-child>.alloc-row{border-left-color:transparent}.alloc-dot{width:22px;height:22px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;font-size:13px;flex:none}.alloc-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}.alloc-kind{font-size:11px;color:var(--hint);padding:1px 6px;border-radius:999px;background:var(--surface-2);flex:none}.alloc-kind.tech{opacity:.7}.alloc-pct{font-weight:700;font-variant-numeric:tabular-nums;color:var(--text);min-width:44px;text-align:right;flex:none}.alloc-cycle{color:var(--hint);font-size:12px}.alloc-graph-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;border-radius:12px;background:var(--surface-2);padding:4px;margin:0 -4px}.alloc-graph-scroll svg{min-width:100%}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:60;padding:16px}.modal{background:var(--bg);border-radius:var(--radius);padding:18px;width:100%;max-width:360px;box-shadow:var(--shadow)}.modal .checkbox-row{display:flex;align-items:center;gap:10px;margin:12px 0 4px;font-size:14px;cursor:pointer;-webkit-user-select:none;user-select:none}.modal .checkbox-row input[type=checkbox]{width:20px;height:20px;flex:none}.modal .checkbox-row>span{min-width:0}.alloc-legend{display:flex;flex-wrap:wrap;gap:6px 12px;margin-bottom:10px;font-size:11.5px;color:var(--hint)}.alloc-legend-item{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}.alloc-legend-swatch{width:10px;height:10px;border-radius:3px;flex:none}.alloc-legend-btn{width:22px;height:22px;border-radius:50%;background:var(--surface-2);color:var(--hint);font-size:13px;font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center;padding:0}.alloc-legend-btn.active{background:var(--accent);color:var(--accent-text)}.field-row{display:flex;align-items:center;justify-content:space-between;margin:14px 0 8px;gap:10px}.preset-cat{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:14px;color:var(--text);background:var(--surface);border-radius:999px;padding:6px 12px}.section-toggle{display:flex;align-items:center;justify-content:space-between;width:100%;padding:0 2px;margin:18px 0 10px;background:transparent;font-size:14px;font-weight:700;color:var(--hint);text-transform:uppercase;letter-spacing:.4px}.section-toggle .chev{font-size:14px;transition:transform .18s;display:inline-block}.section-toggle .chev.open{transform:rotate(180deg)}.tile.overspent{background:color-mix(in srgb,var(--danger) 12%,var(--surface));outline:1px solid color-mix(in srgb,var(--danger) 38%,transparent)}.tile.overspent .val{color:var(--danger);font-weight:700}.tile.overspent .name{color:var(--danger)}.ptr-indicator{position:fixed;top:0;left:50%;margin-left:-18px;width:36px;height:36px;border-radius:50%;background:var(--bg);box-shadow:0 2px 10px color-mix(in srgb,#000 18%,transparent);display:flex;align-items:center;justify-content:center;z-index:100;pointer-events:none;transition:opacity .18s}.ptr-spinner{font-size:18px;color:var(--accent);font-weight:700;display:inline-flex;align-items:center;justify-content:center}.ptr-spinner.spin{animation:ptr-rot .8s linear infinite}@keyframes ptr-rot{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.savings-hero{position:relative;overflow:hidden;background:linear-gradient(135deg,var(--brand),var(--brand-2) 92%);color:var(--brand-ink);border-radius:var(--radius);padding:18px;box-shadow:var(--brand-shadow)}.savings-hero:after{content:"";position:absolute;top:-48px;right:-36px;width:132px;height:132px;border-radius:50%;border:1.5px solid rgba(255,255,255,.14);background:radial-gradient(circle at 30% 30%,rgba(255,255,255,.12),transparent 62%);pointer-events:none}.savings-hero-value{display:inline-block;animation:amount-in .55s cubic-bezier(.22,1,.36,1) .05s both}.savings-hero-balance-value{animation:amount-in .5s cubic-bezier(.22,1,.36,1) .1s both}.savings-hero-badge{animation:chip-pop .4s cubic-bezier(.34,1.56,.64,1) .2s both}.savings-hero .skeleton{background:linear-gradient(90deg,#ffffff0d 25%,#ffffff1f 37%,#ffffff0d 63%);background-size:400% 100%}.savings-hero-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.savings-hero-title{font-size:13px;opacity:.85;font-weight:600}.savings-hero-badge{font-size:11px;font-weight:700;color:#fff;border-radius:999px;padding:2px 10px}.savings-hero-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:6px}.savings-hero-head,.savings-hero-row,.savings-hero-balance,.savings-hero-hint{position:relative;z-index:1}.savings-hero-value{font-size:34px;font-weight:800;letter-spacing:-.5px;line-height:1.02;font-variant-numeric:tabular-nums}.savings-hero-sub{font-size:12px;opacity:.7;margin-top:4px}.savings-hero-meta{display:flex;flex-direction:column;gap:3px;min-width:130px}.savings-mini-row{display:flex;justify-content:space-between;gap:8px;font-size:12px;font-variant-numeric:tabular-nums}.savings-mini-row>span:first-child{opacity:.7}.savings-mini-row .pos{color:#58e1a3;font-weight:700}.savings-mini-row .neg{color:#ff9192;font-weight:700}.savings-hero-hint{font-size:11px;opacity:.7;margin-top:10px}.rec-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--border)}.rec-item:first-of-type{border-top:none}.segmented-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -16px;padding:0 16px;scrollbar-width:none}.segmented-scroll::-webkit-scrollbar{display:none}.segmented-scroll .segmented{width:max-content;min-width:100%}.segmented-scroll .segmented button{flex:0 0 auto;padding:9px 14px}.tile,.btn,.chip{transition:transform .12s,opacity .15s,background .15s}.card{box-shadow:0 1px 2px color-mix(in srgb,#000 4%,transparent)}.section-toggle{padding:4px 2px;border-radius:8px}.section-toggle:active{background:var(--surface-2)}.savings-hero+.hero{margin-top:12px}.hero+.card{margin-top:12px}.savings-hero-balance{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding-top:12px;border-top:1px solid rgba(255,255,255,.1);flex-wrap:wrap;row-gap:8px}.savings-hero-balance-left{display:flex;align-items:baseline;gap:10px;min-width:0;flex:1 1 auto}.savings-hero-balance-label{font-size:11px;opacity:.7;text-transform:uppercase;letter-spacing:.6px;font-weight:600;flex:none}.savings-hero-balance-value{font-size:18px;font-weight:800;letter-spacing:-.3px;font-variant-numeric:tabular-nums;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scope-pills{display:inline-flex;background:#ffffff1a;border-radius:999px;padding:2px;flex:none}.scope-pill{padding:5px 11px;font-size:11.5px;font-weight:600;border-radius:999px;color:#ffffffbf;background:transparent;white-space:nowrap;transition:background .15s,color .15s}.scope-pill.active{background:#ffffffeb;color:#1a1a1a}.deep-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.deep-tile{background:var(--surface);border-radius:var(--radius);padding:14px 14px 12px;text-align:left;display:flex;flex-direction:column;gap:2px;transition:transform .12s,background .15s;min-height:84px}.deep-tile:active{transform:scale(.97);background:var(--surface-2)}.deep-tile-emoji{font-size:22px;line-height:1;margin-bottom:6px}.deep-tile-label{font-size:14.5px;font-weight:700;color:var(--text)}.deep-tile-hint{font-size:11.5px;color:var(--hint)}.back-bar{display:inline-flex;align-items:center;gap:8px;padding:10px 14px 10px 10px;margin:0 0 14px;background:var(--surface-2);color:var(--text);border:0;border-radius:999px;font-size:14px;font-weight:700;cursor:pointer;min-height:40px}.back-bar:active{background:color-mix(in srgb,var(--accent) 18%,var(--surface-2))}.back-bar-arrow{font-size:20px;line-height:1;color:var(--accent);font-weight:800}.back-bar-title{color:var(--text);font-weight:700;font-size:14px}.sticky-save{position:fixed;left:0;right:0;bottom:var(--nav-h);z-index:40;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));background:linear-gradient(to top,var(--bg) 60%,color-mix(in srgb,var(--bg) 0%,transparent));backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);animation:sticky-in .28s cubic-bezier(.22,1,.36,1)}@keyframes sticky-in{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}#root .sticky-save .btn{box-shadow:0 6px 16px color-mix(in srgb,var(--accent) 30%,transparent)}.adjust-note{font-size:12px;color:var(--text);background:color-mix(in srgb,var(--accent) 8%,var(--surface));border-left:3px solid var(--accent);border-radius:8px;padding:8px 10px;margin-bottom:12px;line-height:1.4}.qa-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:80;display:flex;align-items:flex-end;justify-content:center;animation:qa-fadein .18s ease}@keyframes qa-fadein{0%{opacity:0}to{opacity:1}}.qa-sheet{background:var(--bg);width:100%;max-width:520px;border-radius:20px 20px 0 0;padding:8px 16px calc(20px + env(safe-area-inset-bottom,0px));max-height:92vh;overflow-y:auto;-webkit-overflow-scrolling:touch;animation:qa-slideup .22s cubic-bezier(.2,.8,.2,1)}@keyframes qa-slideup{0%{transform:translateY(40px);opacity:.4}to{transform:translateY(0);opacity:1}}.qa-handle{width:44px;height:4px;background:var(--border);border-radius:999px;margin:4px auto 12px}.qa-kind-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:4px}.qa-kind{padding:10px 12px;border-radius:999px;background:var(--surface);color:var(--hint);font-weight:700;font-size:14px;transition:background .15s,color .15s}.qa-kind.active.spend{background:color-mix(in srgb,var(--danger) 14%,var(--surface));color:var(--danger)}.qa-kind.active.revenue{background:color-mix(in srgb,var(--success) 14%,var(--surface));color:var(--success)}.qa-chip-row{margin-bottom:10px}.qa-section-title{font-size:12px;font-weight:700;color:var(--hint);text-transform:uppercase;letter-spacing:.4px;margin:6px 2px}.qa-actions{display:grid;grid-template-columns:1fr 2fr;gap:8px;margin-top:14px}.xp-head{display:flex;align-items:center;gap:12px;padding:2px 2px 14px;border-bottom:1px solid var(--border);margin-bottom:8px}.xp-ic{width:40px;height:40px;flex:0 0 40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:20px;background:color-mix(in srgb,var(--ic-color, var(--accent)) 16%,var(--surface))}.xp-head-text{flex:1 1 auto;min-width:0}.xp-title{font-weight:800;font-size:17px;line-height:1.2}.xp-sub{font-size:12px;color:var(--hint);margin-top:2px}.xp-total{font-weight:800;font-size:17px;white-space:nowrap}.xp-total.neg{color:var(--danger)}.xp-list{display:flex;flex-direction:column}.xp-row{display:flex;align-items:center;gap:12px;padding:11px 2px;border-bottom:1px solid var(--border)}.xp-row:last-child{border-bottom:none}.xp-row-main{flex:1 1 auto;min-width:0}.xp-row-title{font-size:14px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.xp-row-meta{font-size:12px;color:var(--hint);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.xp-row-delta{font-weight:700;font-size:15px;white-space:nowrap}.xp-row-delta.pos{color:var(--success)}.xp-row-delta.neg{color:var(--danger)}.bar-tip{position:absolute;bottom:calc(100% + 2px);left:50%;transform:translate(-50%);z-index:6;display:flex;flex-direction:column;align-items:center;gap:1px;padding:5px 9px;border-radius:10px;background:var(--text);color:var(--bg);white-space:nowrap;box-shadow:0 6px 18px color-mix(in srgb,#000 28%,transparent);animation:bar-tip-in .14s ease;pointer-events:none}.bar-tip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--text)}.bar-tip-month{font-size:10px;font-weight:600;opacity:.7}.bar-tip-val{font-size:13px;font-weight:800;font-variant-numeric:tabular-nums}@keyframes bar-tip-in{0%{opacity:0;transform:translate(-50%,3px)}to{opacity:1;transform:translate(-50%)}}.ptr-toast{position:fixed;top:12px;left:50%;transform:translate(-50%);z-index:110;background:var(--success);color:#fff;font-size:13px;font-weight:700;padding:7px 14px;border-radius:999px;box-shadow:0 4px 14px color-mix(in srgb,var(--success) 35%,transparent);animation:ptr-toast-in .2s ease;pointer-events:none}@keyframes ptr-toast-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}.stagger>*{animation:card-in .32s ease both}.stagger>*:nth-child(1){animation-delay:0ms}.stagger>*:nth-child(2){animation-delay:50ms}.stagger>*:nth-child(3){animation-delay:.1s}.stagger>*:nth-child(4){animation-delay:.15s}.stagger>*:nth-child(5){animation-delay:.2s}.stagger>*:nth-child(6){animation-delay:.25s}.stagger>*:nth-child(7){animation-delay:.3s}.stagger>*:nth-child(8){animation-delay:.35s}@keyframes card-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}:root{--accent: #3a7bff;--accent-2: #6a5cff;--success: #1faa6a;--success-soft: color-mix(in srgb, var(--success) 14%, transparent);--danger: #ed3b41;--danger-soft: color-mix(in srgb, var(--danger) 14%, transparent)}.hist-controls{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.hist-search{padding:10px 14px;font-size:14px;border-radius:999px;background:var(--surface);border:1px solid transparent;color:var(--text)}.hist-search:focus{border-color:var(--accent)}.hist-meta{font-size:11px;color:var(--hint);font-weight:600;text-align:right;padding:0 2px}.rec-timeline{background:var(--surface-2);border-radius:12px;padding:8px 10px 4px;margin-bottom:14px}.rec-timeline-title{font-size:11px;color:var(--hint);font-weight:700;text-transform:uppercase;letter-spacing:.4px;margin-bottom:4px}.pnl-row{display:grid;grid-template-columns:56px 1fr auto;gap:10px;align-items:center;padding:8px 0;border-top:1px solid var(--border)}.pnl-row:first-child{border-top:none}.pnl-cur{font-weight:800;font-size:14px;color:var(--text)}.pnl-rates{display:flex;flex-direction:column;gap:1px;font-size:11.5px;color:var(--hint);min-width:0}.pnl-rates b{color:var(--text);font-weight:700;font-variant-numeric:tabular-nums}.pnl-delta{text-align:right;font-variant-numeric:tabular-nums}.pnl-delta.pos{color:var(--success)}.pnl-delta.neg{color:var(--danger)}.exch-kpi{background:var(--surface-2);border-radius:12px;padding:10px 12px}.exch-kpi-title{font-size:11px;color:var(--hint);font-weight:700;text-transform:uppercase;letter-spacing:.4px}.exch-kpi-value{font-size:20px;font-weight:900;letter-spacing:-.5px;margin-top:2px}.exch-kpi-sub{font-size:11px;color:var(--hint);margin-top:2px}.exch-list{display:flex;flex-direction:column;gap:4px}.exch-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--border)}.exch-row-main{flex:1;min-width:0}.exch-row-pair{display:flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;font-variant-numeric:tabular-nums}.exch-arrow{color:var(--hint)}.exch-amt{white-space:nowrap}.exch-row-meta{display:flex;gap:8px;flex-wrap:wrap;font-size:11px;color:var(--hint);margin-top:2px}.exch-tag{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent);font-weight:700;padding:1px 6px;border-radius:999px;font-size:10px}.exch-delta{font-weight:700;font-variant-numeric:tabular-nums;font-size:13px;white-space:nowrap}.exch-delta.pos{color:var(--success)}.exch-delta.neg{color:var(--danger)}.qa-preset-cat{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:14px;color:var(--text);background:var(--surface);border-radius:999px;padding:8px 14px;margin-bottom:12px}.error-screen{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;gap:10px}.error-screen-emoji{font-size:56px}.error-screen-title{font-size:18px;font-weight:700}.error-screen-msg{color:var(--hint);max-width:320px;word-break:break-word}.error-screen-btn{margin-top:14px;background:var(--accent);color:var(--accent-text);padding:12px 22px;border-radius:var(--radius-sm);font-weight:600}.tile .ic{background:color-mix(in srgb,var(--ic-color, var(--accent)) 22%,transparent);color:var(--ic-color, var(--accent));transition:transform .2s cubic-bezier(.34,1.56,.64,1)}.tile:active .ic{transform:scale(.88) rotate(-4deg)}.tile.overspent .ic{background:color-mix(in srgb,var(--danger) 22%,transparent);color:var(--danger)}.btn:not(:disabled):active{transform:scale(.97);filter:brightness(.96)}.keypad button{position:relative;overflow:hidden}.keypad button:active{background:color-mix(in srgb,var(--accent) 14%,var(--surface))}.scope-pill{transition:background .2s ease,color .2s ease,transform .18s ease}.scope-pill:active{transform:scale(.94)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-delay:0ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.fab:before{display:none}.hero:after{display:none}}.user-groups-panel{margin-bottom:12px;border:1px solid var(--surface-2);border-radius:12px;background:var(--surface);overflow:hidden}.user-groups-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:transparent;color:var(--text);font-size:14px;font-weight:600;border:0;cursor:pointer}.user-groups-toggle .chev{color:var(--hint);font-size:12px}.user-groups-body{padding:4px 12px 12px;display:flex;flex-direction:column;gap:10px}.user-group-card{border:1px solid var(--surface-2);border-radius:10px;padding:10px 10px 8px;background:var(--bg);display:flex;flex-direction:column;gap:8px}.user-group-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.user-group-name{font-weight:700;font-size:14px}.user-group-desc{font-size:12px;color:var(--hint);margin-top:2px}.user-group-head-btns{display:flex;gap:6px;flex:none}.btn.tiny{padding:4px 8px;min-height:0;font-size:12px;border-radius:6px}.user-group-members{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.user-group-members li{display:flex;align-items:center;gap:8px;font-size:13px}.user-group-members .m-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-group-members .m-percent{background:var(--surface-2);color:var(--text);border:0;border-radius:6px;padding:2px 8px;font-size:12px;font-weight:600;cursor:pointer}.user-group-members .m-remove{background:transparent;border:0;color:var(--hint);font-size:16px;line-height:1;padding:2px 6px;cursor:pointer}.user-group-members .m-remove:hover{color:var(--danger)}.hint-line{color:var(--hint);font-size:12px;padding:6px 0}.monthly-preview-totals{background:var(--surface-2);border-radius:8px;padding:8px 10px}.m-totals-row{display:flex;justify-content:space-between;font-size:13px;padding:2px 0}.m-totals-row .ok{color:var(--success);font-weight:700}.m-totals-row .err{color:var(--danger);font-weight:700}.monthly-preview-list{list-style:none;padding:0;margin:0;max-height:40vh;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.monthly-preview-list li{display:flex;align-items:center;gap:8px;font-size:13px;padding:4px 0;border-bottom:1px solid var(--surface-2)}.monthly-preview-list .m-amount{font-variant-numeric:tabular-nums;font-weight:700}.onb-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;background:var(--bg);color:var(--text);display:flex;flex-direction:column;padding:max(16px,env(safe-area-inset-top)) 20px calc(20px + var(--safe-bottom));animation:onb-in .22s ease-out}@keyframes onb-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.onb-top{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:32px}.onb-dots{display:flex;gap:6px;align-items:center}.onb-dot{width:6px;height:6px;border-radius:50%;background:var(--border-strong);transition:width .18s ease,background .18s ease}.onb-dot.is-done{background:color-mix(in srgb,var(--accent) 55%,transparent)}.onb-dot.is-active{width:18px;border-radius:3px;background:var(--accent)}.onb-skip{font-size:14px;color:var(--hint);padding:8px 6px}.onb-body{flex:1;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:8px 0 24px;animation:onb-slide .22s ease-out}@keyframes onb-slide{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}.onb-emoji{width:72px;height:72px;border-radius:22px;background:var(--surface);display:flex;align-items:center;justify-content:center;font-size:36px;margin-bottom:20px}.onb-title{font-size:22px;font-weight:700;line-height:1.2;margin:0 0 10px}.onb-subtitle{font-size:15px;color:var(--hint);margin:0 0 20px;line-height:1.45}.onb-bullets{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px;width:100%}.onb-bullets li{display:flex;gap:12px;align-items:flex-start;font-size:15px;line-height:1.4;background:var(--surface);border-radius:var(--radius-sm);padding:12px 14px}.onb-bullet-mark{color:var(--accent);font-weight:700;line-height:1.4}.onb-cta-wrap{display:flex;gap:10px;padding-top:12px}.onb-cta{flex:1;background:var(--accent);color:var(--accent-text);font-size:16px;font-weight:600;padding:15px 16px;border-radius:var(--radius);min-height:50px;transition:transform .12s ease,opacity .12s ease}.onb-cta:active{transform:scale(.98);opacity:.92}.onb-back{background:var(--surface);color:var(--text);font-size:16px;font-weight:500;padding:15px 18px;border-radius:var(--radius);min-height:50px}.onb-back:active{opacity:.7}.kind-help{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;padding:0;border:none;border-radius:50%;background:var(--surface-2);color:var(--hint);font-size:11px;font-weight:700;line-height:1;cursor:pointer;-webkit-user-select:none;user-select:none;vertical-align:middle}.kind-help:active{background:var(--accent);color:var(--accent-text)}
