:root{--bg: #fbf7f0;--card: #ffffff;--ink: #4a4459;--muted: #6f6883;--line: #f0e9de;--lavender: #b9a7e8;--lavender-deep: #8e7cc3;--mint: #a8dfc3;--peach: #ffd9c0;--pink: #f9c9d4;--gold: #f4c95d;--ok: #6cc79b;--warn: #f0a95c;--danger: #ef8ba0;--ok-text: #2e7d57;--warn-text: #9a6014;--over-text: #b04664;--field: #ffffff;--soft: rgba(74, 68, 89, .07);--tabbar-bg: rgba(255, 255, 255, .97);--tip-bg: #4a4459;--chart-baseline: #d9d2c5;--warn-bg: #fdf0dd;--warn-ink: #9a6014;--over-bg: #fde3e9;--over-ink: #b04664;--money-pos: #2e7d57;--money-neg: #b23a58;--accent-ink: #8e7cc3;--radius: 20px;--shadow: 0 6px 24px rgba(74, 68, 89, .08);--tabbar-h: 64px;--skel-shine: rgba(255, 255, 255, .55);--keyboard-inset: 0px;font-size:16px}*{box-sizing:border-box}:focus-visible{outline:2px solid var(--lavender-deep);outline-offset:2px;border-radius:6px}html,body{margin:0;padding:0;height:100%;overflow:hidden;overscroll-behavior:none;background:var(--bg);color:var(--ink);font-family:Nunito,Segoe UI,system-ui,-apple-system,sans-serif;-webkit-tap-highlight-color:transparent}#root{height:100%}button{font-family:inherit;color:inherit;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.app{max-width:680px;margin:0 auto;height:100dvh;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top,0px)}.topbar{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 8px}.topbar-actions{display:flex;gap:8px;align-items:center}.topbar-add,.topbar-add-group{display:none}.brand{display:flex;align-items:center;gap:10px}.brand h1{margin:0;font-size:1.35rem;font-weight:900;letter-spacing:.02em}.brand-coin{font-size:1.6rem;display:inline-block;animation:coin-bob 3.2s ease-in-out infinite}@keyframes coin-bob{0%,to{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-4px) rotate(6deg)}}.icon-btn{border:none;background:var(--card);box-shadow:var(--shadow);border-radius:999px;width:42px;height:42px;font-size:1.1rem;cursor:pointer;display:grid;place-items:center;transition:transform .15s ease}.icon-btn:active{transform:scale(.92)}.month-nav{display:flex;align-items:center;justify-content:center;gap:12px;padding:6px 16px 14px}.month-label{border:none;background:none;font-size:1.05rem;font-weight:800;cursor:pointer;padding:6px 14px;border-radius:999px;min-width:170px}.month-label:hover{background:#b9a7e826}.view{animation:view-in .25s ease}@keyframes view-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;margin-bottom:14px}.skel{position:relative;overflow:hidden;background:var(--soft);border-radius:var(--radius)}.skel:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,var(--skel-shine),transparent);animation:skel-shimmer 1.4s ease-in-out infinite}@keyframes skel-shimmer{to{transform:translate(100%)}}.skel-card{height:118px;margin-bottom:14px}.skel-row{height:74px;border-radius:16px;margin-bottom:10px}@media(prefers-reduced-motion:reduce){.skel:after{animation:none;display:none}}.section-title{font-size:.85rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:22px 4px 10px}.summary{display:flex;align-items:center;gap:18px}.ring-wrap{position:relative;width:110px;height:110px;flex-shrink:0}.ring-wrap svg{transform:rotate(-90deg)}.ring-bg{fill:none;stroke:var(--line);stroke-width:12}.ring-fg{fill:none;stroke:var(--ok);stroke-width:12;stroke-linecap:round;transition:stroke-dashoffset .6s ease,stroke .3s ease}.ring-wrap.warn .ring-fg{stroke:var(--warn)}.ring-wrap.over .ring-fg{stroke:var(--danger)}.ring-center{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-size:1.5rem;font-weight:900}.summary-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:10px}.summary-figure{display:flex;flex-direction:column}.summary-label{font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.summary-value{font-size:1.25rem;font-weight:900;line-height:1.25;overflow-wrap:anywhere}.summary-value.ok{color:var(--ok-text)}.summary-value.warn{color:var(--warn-text)}.summary-value.over{color:var(--over-text)}.summary-value.saved{color:var(--money-pos)}.summary-note{margin:-4px 0 0;font-size:.82rem;font-weight:700;color:var(--muted)}.mascot{display:flex;gap:12px;align-items:center;background:linear-gradient(120deg,#b9a7e829,#a8dfc333);border-radius:var(--radius);padding:14px 16px;margin-bottom:14px}.mascot .face{font-size:1.8rem;display:inline-block;animation:pop-in .4s cubic-bezier(.34,1.56,.64,1)}.mascot p{margin:0;font-weight:700;flex:1}.mascot,.banner{position:relative;padding-right:40px}.banner-close{position:absolute;top:6px;right:6px;border:none;background:var(--soft);color:inherit;width:26px;height:26px;border-radius:999px;font-size:1rem;line-height:1;font-weight:800;cursor:pointer;display:grid;place-items:center;opacity:.7}.banner-close:hover{opacity:1}.banner{border-radius:var(--radius);padding:12px 16px;margin-bottom:14px;font-weight:700;display:flex;gap:10px;align-items:flex-start}.banner .emoji{font-size:1.3rem}.banner p{margin:0}.banner.warn{background:var(--warn-bg);color:var(--warn-ink)}.banner.over{background:var(--over-bg);color:var(--over-ink)}.cat-row{display:block;width:100%;text-align:left;border:none;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 16px;margin-bottom:10px;cursor:pointer;transition:transform .12s ease}.cat-row:active{transform:scale(.985)}.cat-row .row-top{display:flex;align-items:center;gap:10px;margin-bottom:8px}.cat-emoji{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-size:1.2rem;flex-shrink:0}.cat-name{font-weight:800;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cat-amounts{font-weight:800;font-size:.9rem;color:var(--muted);white-space:nowrap}.cat-amounts .spent{color:var(--ink)}.cat-row.warn .cat-amounts .spent{color:var(--warn-text)}.cat-row.over .cat-amounts .spent{color:var(--over-text)}.bar{position:relative;display:block;height:10px;border-radius:999px;background:var(--line);overflow:hidden}.bar-limit-mark{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--ink);opacity:.35}.bar-fill{display:block;height:100%;border-radius:999px;transition:width .5s ease}.cat-row.warn .bar-fill{background:var(--warn)!important}.cat-row.over .bar-fill{background:var(--danger)!important}.row-status{display:block;font-size:.8rem;font-weight:800;margin-top:6px}.row-status.ok{color:var(--ok-text)}.row-status.warn{color:var(--warn-text)}.row-status.over{color:var(--over-text)}.row-tags{display:flex;flex-wrap:wrap;gap:4px 6px;margin:0 0 8px}.row-tags .carry-tag,.row-tags .override-tag{margin-left:0}.carry-tag{display:inline-block;font-size:.68rem;font-weight:800;border-radius:999px;padding:2px 8px;margin-left:8px;vertical-align:middle;white-space:nowrap}.carry-tag.pos{background:#6cc79b29;color:var(--money-pos)}.carry-tag.neg{background:#fde3e9;color:var(--over-text)}.override-tag{display:inline-block;font-size:.68rem;font-weight:800;border-radius:999px;padding:2px 8px;margin-left:8px;vertical-align:middle;white-space:nowrap;background:#b9a7e833;color:var(--accent-ink)}.sub-carry{font-size:.8rem;color:var(--muted);font-weight:700}.seg{display:flex;background:var(--soft);border-radius:999px;padding:4px;margin-bottom:14px}.seg button{flex:1;border:none;background:none;padding:9px 0;border-radius:999px;font-weight:800;color:var(--muted);cursor:pointer;transition:transform .12s ease,background-color .18s ease,color .18s ease,box-shadow .18s ease}.seg button:active{transform:scale(.96)}.seg button.active{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}.day-header{font-size:.8rem;font-weight:800;color:var(--muted);margin:16px 4px 8px}.exp-row{display:flex;width:100%;align-items:center;gap:12px;border:none;text-align:left;background:var(--card);border-radius:16px;box-shadow:var(--shadow);padding:12px 14px;margin-bottom:8px;cursor:pointer;transition:transform .12s ease}.exp-row:active{transform:scale(.985)}.exp-row .cat-emoji{width:34px;height:34px;font-size:1.05rem}.exp-main{flex:1;min-width:0}.exp-title{display:block;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exp-sub{display:block;font-size:.8rem;color:var(--muted);font-weight:700}.exp-amount{font-weight:900;white-space:nowrap}.repeat-tag{font-size:.7rem;background:#b9a7e833;color:var(--accent-ink);font-weight:800;border-radius:999px;padding:2px 8px;margin-left:6px}.override-tag{background:#fce8a88c;color:#8f621a}.saving-tag{background:#6cc79b38;color:var(--money-pos)}.streak-card{text-align:center;background:linear-gradient(135deg,#fff6dd,#ffeef3)}.streak-num{font-size:2.6rem;font-weight:900;margin:4px 0;display:inline-block;animation:pop-in .4s cubic-bezier(.34,1.56,.64,1)}.streak-sub{color:var(--muted);font-weight:700;margin:0}.coin-total{display:flex;justify-content:center;gap:20px;margin-top:12px;font-weight:800}.badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}.badge{background:var(--card);border-radius:16px;box-shadow:var(--shadow);padding:14px 8px;text-align:center;animation:badge-in .36s cubic-bezier(.34,1.56,.64,1) backwards}.badge:nth-child(1){animation-delay:0ms}.badge:nth-child(2){animation-delay:30ms}.badge:nth-child(3){animation-delay:60ms}.badge:nth-child(4){animation-delay:90ms}.badge:nth-child(5){animation-delay:.12s}.badge:nth-child(6){animation-delay:.15s}.badge:nth-child(n+7){animation-delay:.18s}@keyframes badge-in{0%{opacity:0;transform:scale(.8) translateY(6px)}to{opacity:1;transform:none}}.badge .badge-icon{font-size:1.7rem;display:block}.badge .badge-icon.grey{filter:grayscale(1);opacity:.35}.badge .badge-month{font-size:.75rem;font-weight:800;color:var(--muted);margin-top:6px;display:block}.badge.gold{background:linear-gradient(135deg,#fff8e1,#fff)}.badge.current{outline:2px dashed rgba(185,167,232,.6);outline-offset:-2px}.savings-card{background:linear-gradient(135deg,#ffeef3,#eefaf3)}.savings-head{display:flex;align-items:center;gap:16px}.savings-pig{font-size:2.2rem}.savings-amount{font-size:1.5rem;font-weight:900;margin:0 0 2px}.savings-breakdown{margin-top:14px;border-top:2px dashed rgba(74,68,89,.12);padding-top:10px}.savings-row{display:flex;align-items:center;gap:10px;padding:5px 0;font-weight:800;font-size:.9rem}.savings-row .cat-emoji{width:30px;height:30px;font-size:.95rem;border-radius:10px}.savings-row-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.savings-row-amount{color:var(--money-pos);white-space:nowrap}.savings-row-amount.neg{color:var(--money-neg)}.carry-card{background:linear-gradient(135deg,#f3edff,#fff6e8)}.pot-list{margin-top:14px;border-top:2px dashed rgba(74,68,89,.12);padding-top:6px}.pot-row{display:flex;align-items:center;gap:10px;width:100%;padding:9px 6px;border:none;background:none;border-radius:14px;font:inherit;color:inherit;text-align:left;cursor:pointer;transition:transform .12s ease,background .12s ease}.pot-row:active{transform:scale(.985)}.pot-row:hover{background:#ffffff73}.pot-row-static{cursor:default}.pot-row-static:hover{background:none}.pot-row .cat-emoji{width:34px;height:34px;font-size:1.05rem}.pot-main{flex:1;min-width:0}.pot-title{display:block;font-weight:800;font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pot-sub{display:block;font-size:.78rem;color:var(--muted);font-weight:700}.pot-sub.warn{color:var(--warn-text)}.pot-amount{font-weight:900;white-space:nowrap}.pot-bar{height:7px;margin:5px 0 4px}.pot-done-tag{background:#6cc79b38;color:var(--money-pos)}.pot-add{margin-top:10px}.pot-detail-card .bar{margin-bottom:12px}.pot-plan-card .chart-table-wrap{margin-top:12px}.exp-amount.saved{color:var(--money-pos)}.detail-back{border:none;background:none;font-weight:800;color:var(--accent-ink);font-size:.95rem;cursor:pointer;padding:4px 4px 12px}.detail-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.detail-emoji{width:48px;height:48px;font-size:1.5rem;border-radius:16px}.detail-title{flex:1;min-width:0}.detail-title h2{margin:0;font-size:1.2rem;font-weight:900}.detail-mode{font-size:.78rem;font-weight:700;color:var(--muted)}.detail-edit{padding:8px 16px;flex-shrink:0}.detail-stats{margin-bottom:12px}.detail-stat-row{display:flex;justify-content:space-between;gap:12px;font-weight:700;font-size:.92rem;padding:5px 0;color:var(--muted)}.detail-stat-row span:last-child{color:var(--ink);font-weight:800}.detail-stat-row .carry-pos{color:var(--money-pos)!important}.detail-stat-row .carry-neg{color:var(--money-neg)!important}.month-budget-edit{border:0;background:none;font:inherit;color:inherit;padding:0;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}.month-budget-cat{display:flex;align-items:center;gap:8px;font-weight:800;margin:2px 0 10px}.detail-left{border-top:2px dashed rgba(74,68,89,.12);margin-top:4px;padding-top:9px;font-size:1rem}.detail-left.ok span:last-child{color:var(--ok-text)}.detail-left.warn span:last-child{color:var(--warn-text)}.detail-left.over span:last-child{color:var(--over-text)}.detail-card.warn .bar-fill{background:var(--warn)!important}.detail-card.over .bar-fill{background:var(--danger)!important}.empty{text-align:center;padding:36px 20px;color:var(--muted);font-weight:700}.empty .empty-emoji{font-size:2.4rem;display:block;margin-bottom:10px;animation:pop-in .4s cubic-bezier(.34,1.56,.64,1)}@keyframes pop-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}.btn{border:none;border-radius:999px;padding:11px 20px;font-weight:800;font-size:.95rem;cursor:pointer;transition:transform .12s ease,filter .15s ease}.btn:active{transform:scale(.96)}.btn:disabled{opacity:.6;cursor:default}.btn.primary{background:var(--lavender-deep);color:#fff}.btn.primary:hover{filter:brightness(1.06)}.btn.ghost{background:var(--soft)}.btn.danger{background:var(--over-bg);color:var(--over-ink)}.btn.block{display:block;width:100%;text-align:center}#fab,.topbar-add{touch-action:manipulation}#fab{position:relative;flex:0 0 auto;align-self:center;margin-top:-22px;width:54px;height:54px;border-radius:999px;border:none;background:var(--lavender-deep);color:#fff;font-size:1.7rem;line-height:1;cursor:pointer;display:grid;place-items:center;box-shadow:0 10px 24px #8e7cc373;transition:transform .15s ease;animation:fab-in .28s cubic-bezier(.34,1.56,.64,1) both}#fab:active{transform:scale(.9) rotate(90deg)}@keyframes fab-in{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}.hold-ring{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;display:block;opacity:0;pointer-events:none;transition:opacity .12s ease}.hold-ring circle{fill:none;stroke-width:4;stroke-linecap:round}.hold-ring-track{stroke:#342c4a52}.hold-ring-fill{stroke:var(--gold);stroke-dasharray:157.1;stroke-dashoffset:157.1;transition:stroke-dashoffset .18s ease}#fab.holding .hold-ring{opacity:1}#fab.holding .hold-ring-fill{animation:hold-charge var(--hold-ms, .45s) linear forwards}@keyframes hold-charge{to{stroke-dashoffset:0}}#fab.holding{transform:scale(1.06)}#fab .fab-plus{display:block}.topbar-add{position:relative;overflow:hidden}.topbar-add:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#ffffff47;transform:scaleX(0);transform-origin:left center;pointer-events:none}.topbar-add.holding:after{animation:hold-sweep var(--hold-ms, .45s) linear forwards}@keyframes hold-sweep{to{transform:scaleX(1)}}#fab.held,.topbar-add.held{animation:hold-pop .38s cubic-bezier(.34,1.56,.64,1)}@keyframes hold-pop{0%{transform:scale(.94)}45%{transform:scale(1.12)}to{transform:scale(1)}}@media(prefers-reduced-motion:reduce){#fab.held,.topbar-add.held{animation:none}#fab.holding{transform:none}}.tabbar{position:fixed;left:0;right:0;bottom:0;height:calc(var(--tabbar-h) + env(safe-area-inset-bottom,0px));padding-bottom:env(safe-area-inset-bottom,0px);background:var(--tabbar-bg);border-top:1px solid var(--line);display:flex;justify-content:space-around;z-index:20}.keyboard-open .tabbar{display:none}.tab{border:none;background:none;flex:1;max-width:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;cursor:pointer;color:var(--muted);font-weight:800;font-size:.7rem}.tab .tab-icon{font-size:1.25rem;opacity:.6;transition:.2s;padding:2px 12px;border-radius:999px}.tab.active{color:var(--accent-ink)}.tab.active .tab-icon{opacity:1;background:#b9a7e847;animation:tab-pop .32s cubic-bezier(.34,1.56,.64,1)}@keyframes tab-pop{0%{transform:scale(.7)}to{transform:scale(1)}}.auth-screen{height:100dvh;overflow-y:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:calc(24px + env(safe-area-inset-top,0px)) 16px calc(24px + env(safe-area-inset-bottom,0px))}.auth-hero{text-align:center;margin-bottom:22px}.auth-hero .auth-coin{font-size:4rem;display:inline-block;animation:coin-bob 3.2s ease-in-out infinite}.auth-hero h1{margin:8px 0 4px;font-weight:900;font-size:1.8rem}.auth-hero p{margin:0;color:var(--muted);font-weight:700}.auth-card{background:var(--card);border-radius:24px;box-shadow:var(--shadow);padding:24px;width:min(380px,100%)}.auth-error{background:var(--over-bg);color:var(--over-ink);border-radius:12px;padding:10px 14px;font-weight:700;font-size:.85rem;margin-bottom:12px}.auth-switch{text-align:center;margin:14px 0 0;font-weight:700;color:var(--muted);font-size:.9rem}.auth-switch button{border:none;background:none;color:var(--accent-ink);font-weight:800;cursor:pointer;font-size:.9rem;padding:0 2px}.auth-google{text-align:center}.google-button-host{display:flex;justify-content:center;min-height:44px}.google-native-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);font:inherit;font-weight:800;cursor:pointer;min-height:44px}.google-native-btn:disabled{opacity:.6;cursor:default}.auth-wait{font-weight:800;color:var(--muted);margin:10px 0 0}.auth-note{font-size:.85rem;font-weight:700;color:var(--muted);margin:14px 0 0}.auth-error code{font-family:ui-monospace,monospace;font-size:.8rem;background:#0000000f;border-radius:6px;padding:1px 5px}.settings-link{border:2px dashed rgba(185,167,232,.5);border-radius:16px;padding:12px 14px 14px;margin-bottom:16px}.settings-link .hint{margin:0 0 10px}.settings-link .google-button-host{justify-content:flex-start}.overlay{position:fixed;left:0;right:0;top:var(--vv-top, 0px);bottom:var(--keyboard-inset, 0px);transition:bottom .25s ease;background:#4a445959;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top,0px)) 16px max(16px,env(safe-area-inset-bottom,0px));z-index:50;animation:overlay-in .18s ease}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}.modal{border-radius:24px;box-shadow:0 20px 60px #4a445940;padding:22px;width:min(420px,100%);max-height:100%;min-height:0;overflow-y:auto;overscroll-behavior:contain;background:var(--card);color:var(--ink);transition:max-height .25s ease;animation:modal-in .22s cubic-bezier(.25,.8,.35,1)}.modal h2{margin:0 0 16px;font-size:1.15rem;font-weight:900}.modal label,.auth-card label{display:block;font-weight:800;font-size:.85rem;margin-bottom:12px}.modal .optional{color:var(--muted);font-weight:600}.modal input,.modal select,.auth-card input{display:block;width:100%;margin-top:5px;border:2px solid var(--line);border-radius:14px;padding:11px 12px;font-size:1rem;font-family:inherit;font-weight:700;color:var(--ink);background:var(--field)}.modal input:focus,.modal select:focus,.auth-card input:focus{outline:none;border-color:var(--lavender)}.modal input[hidden]{display:none}.modal label.saving-check,.modal label.import-clear{display:flex}.modal input[type=number]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.modal input[type=number]::-webkit-outer-spin-button,.modal input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.modal input[type=month],.modal input[type=date]{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:0;max-width:100%;min-height:48px}.modal input::-webkit-date-and-time-value{text-align:left}.field-row{display:flex;gap:10px}.field-row label{flex:1}.field-row .grow{flex:2}.emoji-field{flex:0 0 84px}.emoji-field input{text-align:center;font-size:1.2rem}.emoji-chips{display:flex;flex-wrap:wrap;gap:6px;margin:-4px 0 12px}.emoji-chip{border:none;background:var(--soft);border-radius:10px;font-size:1.1rem;padding:5px 8px;cursor:pointer;transition:transform .12s ease}.emoji-chip:active{transform:scale(.88)}.swatch-label{display:block;font-weight:800;font-size:.85rem;margin-bottom:8px}.seg-dialog{margin-bottom:8px}.seg-dialog button{font-size:.85rem;padding:8px 0}.saving-check{display:flex;flex-direction:row;align-items:center;gap:8px;font-weight:700;font-size:.9rem;cursor:pointer}.saving-check input{width:18px;height:18px;accent-color:var(--money-pos);cursor:pointer;flex-shrink:0}.rollover-hint{margin:0 2px 14px}.swatches{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}.swatch{width:34px;height:34px;border-radius:999px;border:3px solid transparent;cursor:pointer;transition:transform .12s ease}.swatch.selected{border-color:var(--ink);transform:scale(1.1)}.dialog-actions{display:flex;gap:8px;align-items:center;margin-top:6px}.add-choice-dialog{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.add-choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.add-choice{display:flex;flex-direction:column;align-items:center;gap:8px;border:2px solid var(--line);background:var(--field);border-radius:18px;padding:20px 10px;font-weight:800;font-size:.9rem;color:var(--ink);cursor:pointer;transition:transform .12s ease,border-color .15s ease}.add-choice:active{transform:scale(.96)}.add-choice:hover{border-color:var(--lavender)}.add-choice:last-child:nth-child(odd){grid-column:1 / -1;flex-direction:row;justify-content:center}.add-choice-icon{font-size:1.8rem}.spacer{flex:1}.settings-data{border:2px dashed rgba(74,68,89,.15);border-radius:16px;padding:12px 14px 14px;margin:18px 0 16px}.month-input-wrap{display:block;position:relative;margin-top:5px}.month-input-wrap input{margin-top:0}.month-placeholder{position:absolute;top:2px;right:48px;bottom:2px;left:2px;display:flex;align-items:center;padding-left:12px;border-radius:12px;background:var(--field);color:var(--muted);font-weight:700;pointer-events:none}.month-input-wrap:focus-within .month-placeholder{display:none}.settings-danger{border:2px dashed rgba(239,139,160,.5);border-radius:16px;padding:12px 14px 14px;margin-bottom:16px}.settings-danger .hint{margin:0 0 10px}.settings-user{font-weight:700;color:var(--muted);margin:0 0 14px}.hint{font-size:.8rem;color:var(--muted);font-weight:600;margin:6px 0 0}.currency-preview{margin:-6px 0 14px}.confirm-body p{font-weight:700;color:var(--muted)}.toast{position:fixed;left:50%;bottom:calc(var(--tabbar-h) + 84px + env(safe-area-inset-bottom,0px));transform:translate(-50%);background:var(--tip-bg);color:#fff;font-weight:800;padding:12px 20px;border-radius:999px;box-shadow:var(--shadow);max-width:calc(100vw - 40px);text-align:center;z-index:60;animation:toast-in .25s ease}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(16px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.toast.happy{background:var(--ok-text)}.toast.warn{background:var(--warn-text)}.toast.over{background:var(--over-text)}.confetti-host{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:70}.confetti-bit{position:absolute;top:-20px;width:10px;height:14px;border-radius:3px;animation:confetti-fall linear forwards}@keyframes confetti-fall{to{transform:translateY(110vh) rotate(720deg);opacity:.6}}main{position:relative;flex:1;overflow-x:clip;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:none;padding:0 16px calc(var(--tabbar-h) + 24px + env(safe-area-inset-bottom,0px))}.pull-content{position:relative}.pull-indicator{position:absolute;top:0;left:50%;width:40px;height:40px;margin-left:-20px;display:grid;place-items:center;border-radius:999px;background:var(--card);box-shadow:var(--shadow);transform:translateY(-56px);opacity:0;pointer-events:none;z-index:5}.pull-indicator-icon{display:inline-block;font-size:1.3rem}.pull-indicator.spinning .pull-indicator-icon{animation:pull-spin .7s linear infinite}@keyframes pull-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.pull-indicator.spinning .pull-indicator-icon{animation:none}}.month-pane.pane-out{position:absolute;top:0;left:0;width:100%;pointer-events:none}.pane-from-right .view,.pane-from-left .view,.pane-out .view{animation:none}.pane-from-right{animation:pane-from-right .26s cubic-bezier(.25,.8,.35,1)}.pane-from-left{animation:pane-from-left .26s cubic-bezier(.25,.8,.35,1)}.pane-to-left{animation:pane-to-left .26s cubic-bezier(.25,.8,.35,1) forwards}.pane-to-right{animation:pane-to-right .26s cubic-bezier(.25,.8,.35,1) forwards}@keyframes pane-from-right{0%{transform:translate(100%)}to{transform:none}}@keyframes pane-from-left{0%{transform:translate(-100%)}to{transform:none}}@keyframes pane-to-left{0%{transform:none}to{transform:translate(-100%);opacity:.4}}@keyframes pane-to-right{0%{transform:none}to{transform:translate(100%);opacity:.4}}@media(prefers-reduced-motion:reduce){.pane-from-right,.pane-from-left{animation:none}.pane-to-left,.pane-to-right{animation:none;visibility:hidden}.modal{animation:overlay-in .18s ease}.tab.active .tab-icon,#fab,.badge,.empty .empty-emoji,.mascot .face,.streak-num{animation:none}}.import-btn{display:inline-block;cursor:pointer;margin-bottom:8px}.import-line{font-weight:700;margin:0 0 10px}.import-list{list-style:none;padding:0;margin:0 0 12px;font-weight:700}.import-list li{padding:3px 0}.import-names{font-size:.8rem;color:var(--muted);font-weight:600}.import-clear{display:flex;align-items:center;gap:8px;font-weight:700;cursor:pointer;margin:2px 0}.import-clear input{width:18px;height:18px;accent-color:var(--danger);cursor:pointer}.hint.danger-hint{color:var(--over-ink)}.income-row{background:linear-gradient(120deg,#f2fbf5,#fff)}.income-emoji{background:#6cc79b2e}.income-card{padding:0;overflow:hidden;background:linear-gradient(120deg,#f2fbf5,#fff)}.income-strip{display:flex;align-items:center;gap:10px;padding:12px 16px;background:transparent;width:100%;border:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.carry-over-strip{display:flex;align-items:center;gap:10px;padding:10px 16px 12px;border-top:1px solid rgba(74,68,89,.09)}.carry-over-emoji{width:34px;display:grid;place-items:center;font-size:.95rem;flex-shrink:0}.carry-over-label{flex:1;font-weight:700;font-size:.92rem;color:var(--muted)}.carry-over-amount{font-weight:900;white-space:nowrap}.carry-over-strip.pos .carry-over-amount{color:var(--money-pos)}.carry-over-strip.neg .carry-over-amount{color:var(--money-neg)}.income-strip-chev,.mortgage-strip-chev{color:var(--muted);font-weight:800;font-size:1.3rem;line-height:1}.income-detail-card{background:linear-gradient(120deg,#f2fbf5,#fff)}.income-strip-emoji{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#6cc79b2e;font-size:1.05rem;flex-shrink:0}.income-strip-label{flex:1;font-weight:800}.income-strip-amount{font-weight:900;color:var(--money-pos);font-size:1.15rem;white-space:nowrap}.income-amount{color:var(--money-pos)}.sub-income{color:var(--money-pos)!important;font-size:.82rem;margin-top:2px!important}.entry-type-seg{margin-bottom:14px}.scope-seg{margin-bottom:10px}.scope-hint{font-size:.82rem;color:var(--muted);font-weight:700;margin:0 0 12px}.mortgage-emoji{background:#b9a7e838}.mortgage-bar{background:var(--money-pos)}.mortgage-strip{display:block;width:100%;border:none;font:inherit;color:inherit;text-align:left;cursor:pointer;padding:14px 16px;margin-bottom:10px;transition:transform .12s ease}.mortgage-strip:active{transform:scale(.985)}.mortgage-strip-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}.mortgage-strip .cat-emoji{width:34px;height:34px;font-size:1.05rem}.mortgage-strip-main{flex:1;min-width:0}.mortgage-strip-name{display:block;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mortgage-strip-sub{display:block;font-size:.8rem;font-weight:700;color:var(--muted);white-space:nowrap}@media(max-width:400px){.mortgage-strip-payoff{display:none}}.mortgage-strip-figures{text-align:right;flex-shrink:0}.mortgage-strip-amount{display:block;font-weight:900;white-space:nowrap}.mortgage-strip-total{display:block;font-size:.78rem;font-weight:700;color:var(--muted);white-space:nowrap}.mortgage-tag{background:#b9a7e833;color:var(--accent-ink)}.mortgage-headline{margin:2px 0 10px}.mortgage-headline .big{font-size:1.6rem;font-weight:900;margin:0 0 2px;overflow-wrap:anywhere}.mortgage-headline .sub{color:var(--muted);font-weight:700;margin:0;font-size:.9rem}.mortgage-detail-card .bar{margin-bottom:12px}.mortgage-stats{margin-bottom:0}.mortgage-split{color:var(--muted)!important;font-weight:700}.mortgage-plan-card{margin-bottom:14px}.mortgage-plan-line{font-weight:700;margin:6px 0 0}.mortgage-plan-line.ok{color:var(--ok-text)}.mortgage-plan-line.warn{color:var(--warn-text)}.mortgage-plan-sub{font-size:.85rem;font-weight:800;color:var(--muted);margin:4px 0 0}.mortgage-plan-sub.warn{color:var(--warn-text)}.mortgage-plan-more{margin-top:10px}.share-chips{margin-bottom:4px}.mortgage-share-preview{margin-top:0}.mortgage-link-hint{margin-bottom:10px}.mortgage-field-hint{margin-bottom:12px}.settings-mortgage{display:flex;align-items:center;gap:10px;width:100%;border:2px solid var(--line);background:var(--field);border-radius:14px;padding:10px 12px;margin-bottom:8px;text-align:left;font:inherit;color:inherit;cursor:pointer}.settings-mortgage:hover{border-color:var(--lavender)}.settings-mortgage-emoji{font-size:1.2rem}.settings-mortgage-main{flex:1;min-width:0}.settings-mortgage-name{display:block;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-mortgage-sub{display:block;font-size:.78rem;font-weight:700;color:var(--muted)}.settings-mortgage-edit{flex-shrink:0;opacity:.7}.swipe-row{position:relative;margin-bottom:8px;border-radius:var(--radius)}.swipe-row .exp-row,.swipe-row .cat-row{margin-bottom:0}.swipe-content{position:relative;z-index:1}.swipe-action{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;border-radius:var(--radius);font-weight:900;font-size:.9rem;color:#fff;opacity:0;transition:opacity .1s ease;padding:0 20px}.swipe-action-delete{background:var(--danger);justify-content:flex-start}.swipe-action-edit{background:var(--lavender-deep);justify-content:flex-end}.swipe-row[data-reveal=left] .swipe-action-delete,.swipe-row[data-reveal=right] .swipe-action-edit{opacity:calc(.35 + .65 * var(--swipe-strength, 0))}.trends{position:relative}.chart-card{padding-bottom:14px}.chart-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px}.chart-head>div{flex:1;min-width:0}.chart-title{margin:0;font-size:1.05rem;font-weight:900}.chart-sub{margin:2px 0 0;font-size:.8rem;font-weight:700;color:var(--muted)}.chart-toggle{padding:7px 12px;font-size:.8rem;flex-shrink:0}.chart-toggle.toggle-on{background:#b9a7e840;color:var(--accent-ink)}.chart-head{flex-wrap:wrap}.chart-svg{display:block;width:100%;height:auto}.chart-grid{stroke:var(--line);stroke-width:1}.chart-baseline{stroke:var(--chart-baseline);stroke-width:1.5}.chart-axis{fill:var(--muted);font-size:11px;font-weight:700;font-family:inherit}.chart-crosshair{stroke:var(--muted);stroke-width:1;stroke-dasharray:3 3}.chart-seg{cursor:pointer}.chart-seg:hover{opacity:.85}.chart-empty{text-align:center;color:var(--muted);font-weight:700;padding:26px 10px}.hbar-list{display:flex;flex-direction:column;gap:8px}.hbar-row{display:grid;grid-template-columns:minmax(90px,32%) 1fr auto;align-items:center;gap:8px;width:100%;border:none;background:none;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer}.hbar-row:hover .hbar-label{text-decoration:underline}.chart-cat-btn,.legend-btn{border:none;background:none;padding:0;font:inherit;color:inherit;cursor:pointer}.chart-cat-btn:hover,.legend-btn:hover{text-decoration:underline}.hbar-label{font-weight:800;font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.hbar-track{height:14px;border-radius:999px;background:var(--line);overflow:hidden}.hbar-fill{display:block;height:100%;border-radius:999px;transition:width .4s ease}.hbar-value{font-weight:800;font-size:.8rem;color:var(--muted);white-space:nowrap}.chart-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:.78rem;font-weight:800;color:var(--ink)}.legend-item{display:inline-flex;align-items:center;gap:6px}.legend-chip{width:10px;height:10px;border-radius:3px;flex-shrink:0}.legend-chip-line{height:3px;border-radius:2px}.chart-tip{position:absolute;transform:translate(-50%,calc(-100% - 12px));background:var(--tip-bg);color:#fff;border-radius:12px;padding:8px 12px;font-size:.78rem;font-weight:700;pointer-events:none;display:flex;flex-direction:column;gap:1px;box-shadow:var(--shadow);white-space:nowrap;z-index:40}.chart-tip-title{font-weight:900}.chart-table-wrap{overflow-x:auto}.chart-table{width:100%;border-collapse:collapse;font-size:.82rem;font-weight:700}.chart-table th{text-align:left;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;padding:6px 10px 6px 0;border-bottom:2px solid var(--line)}.chart-table td{padding:7px 10px 7px 0;border-bottom:1px solid var(--line);white-space:nowrap}.chart-table-total td{font-weight:900;border-bottom:none}.year-table-wrap{overflow:auto;max-height:max(calc(100vh - var(--tabbar-h) - 250px),320px);max-height:max(calc(100dvh - var(--tabbar-h) - 250px),320px);overscroll-behavior:contain;margin-top:12px}.year-table{border-collapse:separate;border-spacing:0;width:100%;font-size:.82rem;font-weight:700}.year-table th,.year-table td{padding:7px 10px;border-bottom:1px solid var(--line);white-space:nowrap;text-align:right}.year-table thead th{position:sticky;top:0;z-index:2;background-color:var(--card);color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--line)}.year-table .yt-name{position:sticky;left:0;z-index:1;background-color:var(--card);border-right:1px solid var(--line);text-align:left;font-weight:700;max-width:200px;overflow:hidden;text-overflow:ellipsis}.year-table thead .yt-name{z-index:3}.yt-section .yt-name{padding-top:22px;color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.yt-section th,.yt-section td{border-bottom:2px solid var(--line)}.year-table .yt-now{background-image:linear-gradient(#b9a7e829,#b9a7e829)}.yt-dim{color:var(--muted);opacity:.55}.yt-sum th,.yt-sum td{font-weight:900}.yt-pos{color:var(--money-pos)}.yt-neg{color:var(--money-neg)}.yt-cell-btn{border:none;background:none;padding:0;font:inherit;color:inherit;cursor:pointer;width:100%;text-align:right}.yt-cell-btn:hover{text-decoration:underline}.yt-dragging{-webkit-user-select:none;user-select:none}.year-table td.yt-fillsel{background-image:linear-gradient(#b9a7e84d,#b9a7e84d)}.peek-empty{color:var(--muted);font-weight:700;margin:4px 0 8px}.peek-sub{margin:-12px 0 12px;font-size:.8rem;font-weight:700;color:var(--muted)}.peek-list{display:flex;flex-direction:column}.peek-row{display:flex;align-items:baseline;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.9rem;font-weight:700}.peek-date{color:var(--muted);white-space:nowrap}.peek-note{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.peek-amount{white-space:nowrap}.peek-total{border-bottom:none;font-weight:900}@media(min-width:900px){:root{--tabbar-h: 0px}.app{max-width:880px;padding-left:104px;padding-bottom:40px}.app.app-wide{max-width:none}.tabbar{left:0;right:auto;top:0;bottom:0;height:100vh;width:96px;flex-direction:column;justify-content:center;gap:8px;border-top:none;border-right:1px solid var(--line);padding-bottom:0}.tab{flex:0 0 auto;padding:14px 0;width:100%;font-size:.75rem}.tab .tab-icon{font-size:1.5rem}#fab{display:none}.topbar-add-group{display:inline-flex;gap:2px}.topbar-add{display:inline-flex;align-items:center;gap:6px}.topbar-add,.topbar-add-more{border-radius:999px}.topbar-add{border-top-right-radius:8px;border-bottom-right-radius:8px}.topbar-add-more{border-top-left-radius:8px;border-bottom-left-radius:8px;padding:11px 14px;font-size:.85rem;line-height:1}.topbar{padding-top:28px}.brand h1{font-size:1.6rem}.cat-row:hover,.exp-row:hover{transform:translateY(-2px)}.cat-row,.exp-row{transition:transform .15s ease}}.advisor-card{display:flex;align-items:center;gap:12px;width:100%;border:none;font:inherit;color:inherit;text-align:left;cursor:pointer;padding:14px 16px;background:linear-gradient(120deg,#f6f2fd,#fff);transition:transform .12s ease}.advisor-card:active{transform:scale(.985)}.advisor-emoji{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#b9a7e838;font-size:1.05rem;flex-shrink:0}.advisor-card-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.advisor-card-label{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--accent-ink)}.advisor-card-lead{font-weight:700}.advisor-card-more{font-size:.82rem;color:var(--muted);font-weight:700}.advisor-card-chev{color:var(--muted);font-weight:800;font-size:1.3rem;line-height:1}.advisor-card-loading:active{transform:none}.advisor-skel-line{display:block;height:13px;border-radius:7px;width:65%;margin:5px 0}.advisor-skel-line.wide{width:88%}.advisor-skel-blob{width:26px;height:26px;border-radius:50%;flex-shrink:0;margin-top:2px}.advisor-emoji-thinking{animation:advisor-think 2.4s ease-in-out infinite}@keyframes advisor-think{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.12);opacity:.72}}.advisor-refresh.spinning span{display:inline-block;animation:advisor-spin .9s linear infinite}@keyframes advisor-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.advisor-emoji-thinking{animation:none}.advisor-refresh.spinning span{animation:none;opacity:.55}}.advisor-detail{background:linear-gradient(120deg,#f6f2fd,var(--card))}.advisor-detail-emoji{background:#b9a7e838}.advisor-headline{margin:12px 0 0;font-weight:700;line-height:1.45}.advisor-suggestion{display:flex;gap:12px;padding:14px 16px;margin-bottom:10px;border-left:4px solid var(--lavender)}.advisor-suggestion.alert{border-left-color:var(--danger)}.advisor-suggestion.watch{border-left-color:var(--warn)}.advisor-suggestion.good{border-left-color:var(--ok)}.advisor-suggestion-emoji{font-size:1.3rem;line-height:1.3;flex-shrink:0}.advisor-suggestion-main{flex:1;min-width:0}.advisor-suggestion-main h3{margin:0 0 4px;font-size:1rem}.advisor-suggestion-main p{margin:0;line-height:1.5}.advisor-fact{margin-top:8px!important;font-size:.85rem;font-weight:700;color:var(--muted)}.advisor-jump{margin-top:10px;padding:6px 12px;font-size:.85rem}.advisor-note{font-size:.78rem;color:var(--muted);line-height:1.5;margin:4px 2px 0}.advisor-ask{display:flex;align-items:center;gap:12px;width:100%;border:none;font:inherit;color:inherit;text-align:left;cursor:pointer;padding:14px 16px;margin-bottom:10px;background:linear-gradient(120deg,#f6f2fd,var(--card));transition:transform .12s ease}.advisor-ask:active{transform:scale(.985)}.advisor-ask-emoji{font-size:1.3rem;flex-shrink:0}.advisor-ask-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.advisor-ask-label{font-weight:800}.advisor-ask-sub{font-size:.82rem;color:var(--muted);font-weight:700}.chat-view{display:flex;flex-direction:column;min-height:68dvh}@supports not (height: 1dvh){.chat-view{min-height:68vh}}.chat-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.chat-clear{padding:6px 12px;font-size:.85rem}.chat-log{flex:1;display:flex;flex-direction:column;gap:12px;padding:4px 0 12px}.chat-intro{text-align:center;padding:24px 8px 8px}.chat-intro-emoji{width:52px;height:52px;margin:0 auto 12px;font-size:1.6rem}.chat-intro-text{margin:0 0 18px;color:var(--muted);font-weight:700;line-height:1.5}.chat-starters{display:flex;flex-direction:column;gap:8px}.chat-starter{border:1px solid var(--line);background:var(--card);color:inherit;font:inherit;font-weight:700;text-align:left;border-radius:14px;padding:11px 14px;cursor:pointer;transition:transform .12s ease}.chat-starter:active{transform:scale(.98)}.chat-starter:disabled{opacity:.5;cursor:default}.chat-turn{display:flex;gap:8px;align-items:flex-end}.chat-turn.user{justify-content:flex-end}.chat-owl{font-size:1.1rem;line-height:1;flex-shrink:0;margin-bottom:6px}.chat-bubble{max-width:82%;padding:11px 14px;border-radius:18px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;background:var(--card);box-shadow:var(--shadow)}.chat-turn.user .chat-bubble{background:var(--lavender);color:#2f2a44;font-weight:700;border-bottom-right-radius:6px}.chat-turn.assistant .chat-bubble{border-bottom-left-radius:6px}.chat-thinking{display:flex;gap:5px;padding:15px 16px}.chat-thinking span{width:7px;height:7px;border-radius:50%;background:var(--muted);animation:chat-dot 1.3s ease-in-out infinite}.chat-thinking span:nth-child(2){animation-delay:.18s}.chat-thinking span:nth-child(3){animation-delay:.36s}@keyframes chat-dot{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}.chat-composer{position:sticky;bottom:0;display:flex;align-items:center;gap:8px;padding:10px 0 calc(10px + var(--keyboard-inset));background:var(--bg)}.chat-input{flex:1;min-width:0;border:1px solid var(--line);background:var(--field);color:inherit;font:inherit;border-radius:999px;padding:12px 16px}.chat-input:disabled{opacity:.6}.chat-send{border-radius:50%;width:44px;height:44px;display:grid;place-items:center;padding:0;font-size:1.2rem;font-weight:900;line-height:1;flex-shrink:0}.chat-send:disabled{opacity:.4}.chat-unavailable{text-align:center;padding:12px 0}@media(prefers-reduced-motion:reduce){.chat-thinking span{animation:none;opacity:.6}}:root[data-theme=dark]{--bg: #201c2a;--card: #292435;--ink: #ece8f4;--muted: #a49dbb;--line: #3a3448;--field: #1f1b29;--soft: rgba(255, 255, 255, .07);--tabbar-bg: rgba(32, 28, 42, .97);--tip-bg: #57506b;--chart-baseline: #4a4358;--warn-bg: #443626;--warn-ink: #f0b573;--over-bg: #472834;--over-ink: #f2a0b6;--money-pos: #58c894;--money-neg: #ef8ba0;--accent-ink: #b3a2ea;--ok-text: #58c894;--warn-text: #f0b573;--over-text: #f2a0b6;--shadow: 0 6px 24px rgba(0, 0, 0, .35);--skel-shine: rgba(255, 255, 255, .12)}:root[data-theme=dark] .cat-emoji[style]{box-shadow:inset 0 0 0 100px #ffffff38}:root[data-theme=dark] .mascot{background:linear-gradient(120deg,#8a6fd838,#2798622e)}:root[data-theme=dark] .streak-card{background:linear-gradient(135deg,#3b3226,#3a2a33)}:root[data-theme=dark] .savings-card{background:linear-gradient(135deg,#3a2b33,#253b31)}:root[data-theme=dark] .carry-card{background:linear-gradient(135deg,#2f2a44,#3b3226)}:root[data-theme=dark] .pot-row:hover{background:#ffffff12}:root[data-theme=dark] .pot-row-static:hover{background:none}:root[data-theme=dark] .pot-done-tag{background:#58c8942e}:root[data-theme=dark] .income-row{background:linear-gradient(120deg,#233530,var(--card))}:root[data-theme=dark] .income-card{background:linear-gradient(120deg,#233530,var(--card))}:root[data-theme=dark] .carry-over-strip{border-top-color:#ffffff17}:root[data-theme=dark] .bar-limit-mark{background:#fff;opacity:.4}:root[data-theme=dark] .income-detail-card{background:linear-gradient(120deg,#233530,var(--card))}:root[data-theme=dark] .override-tag{background:#b8861f47;color:#ecd9a0}:root[data-theme=dark] .carry-tag.pos{background:#58c8942e}:root[data-theme=dark] .carry-tag.neg{background:#472834}:root[data-theme=dark] .saving-tag{background:#58c8942e}:root[data-theme=dark] .badge.gold{background:linear-gradient(135deg,#3b3226,var(--card))}:root[data-theme=dark] .seg button.active{background:#3a3448}:root[data-theme=dark] .swatch.selected{border-color:var(--ink)}:root[data-theme=dark] .income-emoji{background:#58c89429}:root[data-theme=dark] .mortgage-emoji{background:#8a6fd847}:root[data-theme=dark] .mortgage-tag{background:#8a6fd847;color:#cdbdfa}:root[data-theme=dark] .swipe-action-edit{background:#6a51c2}:root[data-theme=dark] .advisor-card{background:linear-gradient(120deg,#302a42,var(--card))}:root[data-theme=dark] .advisor-detail{background:linear-gradient(120deg,#302a42,var(--card))}:root[data-theme=dark] .advisor-emoji,:root[data-theme=dark] .advisor-detail-emoji{background:#8a6fd847}:root[data-theme=dark] .advisor-ask{background:linear-gradient(120deg,#302a42,var(--card))}:root[data-theme=dark] .chat-turn.user .chat-bubble{background:#6a51c2;color:#f3efff}:root[data-theme=dark] .chat-starter{border-color:#3a3448}
