:root{--bg: var(--tg-theme-secondary-bg-color, #f1f3f5);--surface: var(--tg-theme-bg-color, #ffffff);--surface-2: var(--tg-theme-section-bg-color, #f6f8fa);--surface-inset: #eceff2;--ink: var(--tg-theme-text-color, #0f1418);--ink-2: var(--tg-theme-subtitle-text-color, #6b757d);--ink-3: var(--tg-theme-hint-color, #98a1a8);--on-dark: #ffffff;--accent: #0b6e4f;--accent-ink: #095c42;--on-accent: #ffffff;--expense: #c8362f;--income: #147a45;--warning: #8a5a00;--info: #0a63a8;--cat-1: #2f8f6b;--cat-2: #3d7ff0;--cat-3: #e07b2a;--cat-4: #7a5cf0;--cat-5: #cf3f5c;--cat-6: #b08512;--fin-light: #3fbf8f;--fin-dark: #0b6e4f;--fin-ink: #ffffff;--tile-orange: #f6873a;--tile-blue: #3d8bfd;--tile-violet: #7a5cf0;--tile-teal: #17a08a;--tile-indigo: #5b6ef5;--r-xs: 8px;--r-sm: 12px;--r-card: 18px;--r-sheet: 22px;--r-pill: 999px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--tap-min: 44px;--isle-h: 56px;--action-btn: 40px;--w-max: 460px;--sh-1: 0 1px 2px rgba(15, 20, 24, .04);--sh-2: 0 8px 28px rgba(15, 20, 24, .12);--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, system-ui, sans-serif;--fz-display: 28px;--fz-title: 20px;--fz-body: 16px;--fz-sub: 14px;--fz-cap: 12px;--dur-fast: .12s;--dur-base: .22s;--dur-slow: .36s;--ease-spring: cubic-bezier(.22, 1, .32, 1)}:root[data-theme=dark]{--bg: var(--tg-theme-secondary-bg-color, #0d1013);--surface: var(--tg-theme-bg-color, #171c20);--surface-2: var(--tg-theme-section-bg-color, #1e242a);--surface-inset: #232a30;--ink: var(--tg-theme-text-color, #eef2f4);--ink-2: var(--tg-theme-subtitle-text-color, #9aa4ab);--ink-3: var(--tg-theme-hint-color, #78838b);--accent: #2ecc9a;--accent-ink: #25b085;--on-accent: #03231a;--expense: #ff7a70;--income: #4ad295;--warning: #e0aa3e;--info: #5aa9ef;--fin-light: #56e0ad;--fin-dark: #127a58;--cat-1: #46c69a;--cat-2: #6aa5ff;--cat-3: #ff9e5e;--cat-4: #a68cff;--cat-5: #ff6f86;--cat-6: #e0c05a;--sh-1: 0 1px 2px rgba(0, 0, 0, .4);--sh-2: 0 8px 28px rgba(0, 0, 0, .55)}@media(prefers-reduced-motion:reduce){:root{--dur-fast: 0ms;--dur-base: 0ms;--dur-slow: 0ms}}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);font-size:var(--fz-body);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}button{font:inherit;color:inherit;border:none;background:none;cursor:pointer}.app{height:100%;display:flex;flex-direction:column}.stage{flex:1;position:relative;overflow:hidden}.pane{position:absolute;top:0;right:0;bottom:0;left:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;visibility:hidden}.pane[data-shown]{visibility:visible}.shimmer{position:relative;overflow:hidden;border-radius:var(--r-card);background:var(--surface);box-shadow:var(--sh-1)}.sk{position:relative;overflow:hidden;background:var(--surface-inset)}.shimmer:after,.sk:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);animation:shimmer-sweep 1.4s ease-in-out infinite}.shimmer:after{background:linear-gradient(90deg,transparent,var(--surface-inset),transparent)}.sk:after{background:linear-gradient(90deg,transparent,var(--surface),transparent);opacity:.7}@keyframes shimmer-sweep{to{transform:translate(100%)}}@media(prefers-reduced-motion:reduce){.shimmer:after,.sk:after{animation:none}}.sk-bubble{height:40px;border-radius:var(--r-sheet);border-bottom-left-radius:var(--r-xs)}.sk-bubble-user{border-bottom-left-radius:var(--r-sheet);border-bottom-right-radius:var(--r-xs)}.sk-input{flex:1;align-self:center;height:18px;margin:0 4px;border-radius:9px}.sk-still{pointer-events:none}.sk-icon{width:38px;height:38px;border-radius:var(--r-sm);flex:none}.sk-text{height:14px;border-radius:7px}.sk-text-sub{margin-top:6px;height:10px;border-radius:5px}.sk-pill{width:76px;height:38px;border-radius:var(--r-pill);flex:none}.sk-switch{width:50px;height:30px;border-radius:var(--r-pill);flex:none}.sk-avatar{width:48px;height:48px;border-radius:var(--r-pill);flex:none}.sk-segmented{height:40px;margin:0 var(--sp-4) var(--sp-4);border-radius:var(--r-sm)}.screen{max-width:var(--w-max);margin:0 auto;padding:calc(var(--safe-t, 0px) + var(--sp-5)) var(--sp-4) calc(var(--isle-h) + var(--safe-b, 0px) + var(--sp-8));display:flex;flex-direction:column;gap:var(--sp-4)}.greeting{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-1) var(--sp-1) var(--sp-2)}.greeting-title{font-size:var(--fz-display);font-weight:700;letter-spacing:-.02em;line-height:1.15}.greeting-name{color:var(--ink-3)}.greeting-handle{margin-top:2px;font-size:var(--fz-sub);color:var(--ink-2)}.screen-header{padding:var(--sp-1) var(--sp-1) var(--sp-2)}.screen-title{font-size:var(--fz-display);font-weight:700;letter-spacing:-.02em}.avatar{width:48px;height:48px;border-radius:var(--r-pill);object-fit:cover;flex:none;background:var(--surface-inset)}.avatar-fallback{display:flex;align-items:center;justify-content:center;font-size:var(--fz-title);font-weight:600;color:var(--ink-2)}.card-group{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--sh-1);overflow:hidden}.row-static{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);min-height:var(--tap-min)}.row-icon{width:38px;height:38px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;color:#fff;flex:none}.row-body{flex:1;min-width:0}.row-title{font-size:var(--fz-body);font-weight:600;letter-spacing:-.01em}.row-sub{margin-top:2px;font-size:var(--fz-sub);color:var(--ink-2);line-height:1.35}.row-divider{height:1px;margin-left:calc(var(--sp-4) * 2 + 38px);background:var(--surface-inset)}.row-chevron{flex:none;display:flex;color:var(--ink-3)}.pill-button{padding:10px var(--sp-4);border-radius:var(--r-pill);background:var(--surface-inset);font-size:var(--fz-sub);font-weight:600;min-height:38px;transition:transform var(--dur-fast) var(--ease-spring)}.pill-button:active{transform:scale(.96)}.pill-button:disabled{opacity:.5}.currency-grid{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding:0 var(--sp-4) var(--sp-4)}.currency-chip{padding:9px var(--sp-3);border-radius:var(--r-pill);background:var(--surface-inset);font-size:var(--fz-sub);font-weight:500;transition:background var(--dur-base) linear,color var(--dur-base) linear,transform var(--dur-fast) var(--ease-spring)}.currency-chip:active{transform:scale(.95)}.currency-chip[data-active]{background:var(--accent);color:var(--on-accent)}.switch{width:50px;height:30px;border-radius:var(--r-pill);background:var(--surface-inset);padding:3px;flex:none;transition:background var(--dur-fast) linear}.switch[aria-checked=true]{background:var(--accent)}.switch-knob{display:block;width:24px;height:24px;border-radius:var(--r-pill);background:#fff;box-shadow:var(--sh-1);transition:transform var(--dur-base) var(--ease-spring)}.switch[aria-checked=true] .switch-knob{transform:translate(20px)}.switch:disabled{opacity:.6}.empty-card{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--sh-1);padding:var(--sp-5)}.empty-title{font-size:var(--fz-title);font-weight:650;letter-spacing:-.015em}.empty-text{margin-top:var(--sp-2);font-size:var(--fz-sub);line-height:1.45;color:var(--ink-2)}.hint-note{padding:0 var(--sp-2);font-size:var(--fz-cap);line-height:1.45;color:var(--ink-3)}.form-error{padding:0 var(--sp-2);font-size:var(--fz-sub);color:var(--expense)}.tabbar{position:fixed;left:0;right:0;bottom:calc(var(--safe-b, 0px) + var(--sp-3));display:flex;justify-content:center;pointer-events:none;z-index:10}.tabbar-isle{position:relative;display:flex;align-items:center;gap:var(--sp-1);padding:6px;border-radius:var(--r-pill);background:var(--surface);box-shadow:var(--sh-2);pointer-events:auto}.tabbar-pill{position:absolute;top:6px;bottom:6px;left:0;width:0;border-radius:var(--r-pill);background:var(--ink);opacity:0;will-change:transform,width}.tab{position:relative;z-index:1;display:flex;align-items:center;height:44px;padding:0 var(--sp-4);border-radius:var(--r-pill);color:var(--ink-3);transition:color var(--dur-base) linear}.tab[data-active]{color:var(--surface)}.tab-label-wrap{display:grid;grid-template-columns:0fr;transition:grid-template-columns var(--dur-slow) var(--ease-spring)}.tab[data-active] .tab-label-wrap{grid-template-columns:1fr}.tab-label-clip{overflow:hidden;min-width:0}.tab-label{display:block;padding-left:var(--sp-2);font-size:var(--fz-sub);font-weight:600;white-space:nowrap;opacity:0;transition:opacity var(--dur-base) linear}.tab[data-active] .tab-label{opacity:1}.splash{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-4);padding:var(--sp-6);text-align:center}.splash-mark{width:44px;height:44px;border-radius:var(--r-sm);background:var(--accent);animation:pulse 1.4s ease-in-out infinite}.splash-text{font-size:var(--fz-sub);line-height:1.45;color:var(--ink-2);max-width:300px}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.9)}}@media(prefers-reduced-motion:reduce){.splash-mark{animation:none}}.chat{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column}.chat-scroll{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3);max-width:var(--w-max);width:100%;margin:0 auto}.bubble-row{display:flex;flex-direction:column;gap:var(--sp-2);max-width:88%;animation:bubble-in var(--dur-base) var(--ease-spring)}@keyframes bubble-in{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.bubble-row.is-user{align-self:flex-end;align-items:flex-end}.bubble-row.is-assistant{align-self:flex-start}.bubble{padding:10px var(--sp-4);border-radius:var(--r-sheet);background:var(--surface);box-shadow:var(--sh-1);font-size:var(--fz-body);line-height:1.4;white-space:pre-wrap;overflow-wrap:anywhere}.bubble.is-user{background:var(--ink);color:var(--surface);border-bottom-right-radius:var(--r-xs)}.bubble.is-assistant{border-bottom-left-radius:var(--r-xs)}.bubble-tag{margin-right:6px}.status-line{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fz-sub);color:var(--ink-2);padding-left:var(--sp-2)}.typing{display:inline-flex;gap:4px;align-items:center}.typing i{width:6px;height:6px;border-radius:50%;background:var(--ink-3);animation:blink 1.2s infinite}.typing i:nth-child(2){animation-delay:.15s}.typing i:nth-child(3){animation-delay:.3s}@keyframes blink{0%,60%,to{opacity:.3}30%{opacity:1}}@media(prefers-reduced-motion:reduce){.typing i{animation:none}}.rcard{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--sh-1);padding:var(--sp-4);display:flex;flex-direction:column;gap:6px;min-width:220px}.rcard-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}.rcard-title{font-size:var(--fz-sub);font-weight:600;color:var(--ink-2)}.rcard-chip{font-size:var(--fz-cap);padding:3px 9px;border-radius:var(--r-pill);background:var(--surface-inset);color:var(--ink-2);white-space:nowrap}.rcard-amount{font-size:24px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.rcard-amount.is-income,.is-income{color:var(--income)}.rcard-amount.is-expense,.is-expense{color:var(--expense)}.rcard-sub{font-size:var(--fz-cap);color:var(--ink-2)}.rcard-note{font-size:var(--fz-cap);color:var(--warning)}.rcard-split{display:flex;gap:var(--sp-5)}.rcard-list,.rcard-bars{list-style:none;display:flex;flex-direction:column;gap:6px;margin-top:2px}.rcard-row{display:flex;justify-content:space-between;gap:var(--sp-3);font-size:var(--fz-sub);font-variant-numeric:tabular-nums}.rcard-row-label{color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rcard-bar-head{display:flex;justify-content:space-between;font-size:var(--fz-cap);margin-bottom:3px;font-variant-numeric:tabular-nums}.rcard-bar-track{height:7px;border-radius:var(--r-pill);background:var(--surface-inset);overflow:hidden}.rcard-bar-fill{height:100%;border-radius:var(--r-pill);background:var(--accent);transition:width var(--dur-base) var(--ease-spring)}.rcard-bar-fill.is-over{background:var(--expense)}.limitbar{display:flex;flex-direction:column;gap:4px;padding-top:var(--sp-2)}.limitbar-head{display:flex;justify-content:space-between;gap:var(--sp-3);font-size:var(--fz-cap);color:var(--ink-2)}.option-row{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.option-chip{padding:9px var(--sp-4);border-radius:var(--r-pill);background:var(--surface);box-shadow:var(--sh-1);font-size:var(--fz-sub);text-align:left}.chat-error{align-self:center;padding:var(--sp-2) var(--sp-4);border-radius:var(--r-pill);background:var(--surface);color:var(--expense);font-size:var(--fz-sub)}.confirm-sheet{margin:0 var(--sp-4) var(--sp-2);padding:var(--sp-4);border-radius:var(--r-sheet);background:var(--surface);box-shadow:var(--sh-2);display:flex;flex-direction:column;gap:var(--sp-2)}.confirm-title{font-size:var(--fz-body);font-weight:650}.confirm-text{font-size:var(--fz-sub);color:var(--ink-2)}.confirm-actions{display:flex;gap:var(--sp-2);justify-content:flex-end;margin-top:var(--sp-1)}.pill-button.is-danger{background:var(--expense);color:#fff}.composer{padding:0 var(--sp-3) calc(var(--isle-h) + var(--safe-b, 0px) + var(--sp-4));max-width:var(--w-max);width:100%;margin:0 auto}.composer-bar{display:flex;align-items:flex-end;gap:var(--sp-2);padding:6px;border-radius:var(--r-sheet);background:var(--surface);box-shadow:var(--sh-2)}.composer-input{flex:1;border:none;outline:none;resize:none;background:none;color:var(--ink);font:inherit;font-size:var(--fz-body);line-height:1.35;padding:10px 4px;max-height:120px}.composer-input::placeholder{color:var(--ink-3)}.composer-icon,.composer-send{width:var(--action-btn);height:var(--action-btn);flex:none;border-radius:var(--r-pill);display:flex;align-items:center;justify-content:center;transition:transform var(--dur-fast) var(--ease-spring)}.composer-icon{color:var(--ink-2);background:var(--surface-inset)}.composer-send{background:var(--accent);color:var(--on-accent)}.composer-send.is-recording{background:var(--expense);color:#fff}.composer-icon:active,.composer-send:active{transform:scale(.92)}.composer-icon:disabled,.composer-send:disabled{opacity:.45}.recording{flex:1;display:flex;align-items:center;gap:var(--sp-2);padding:12px var(--sp-3);font-size:var(--fz-sub);color:var(--ink-2)}.recording.is-cancelling{color:var(--expense)}.recording-dot{width:9px;height:9px;border-radius:50%;background:var(--expense);animation:blink 1s infinite}.recording-time{font-variant-numeric:tabular-nums;color:var(--ink);font-weight:600}.recording-hint{margin-left:auto;font-size:var(--fz-cap);white-space:nowrap}.attach-sheet{margin-bottom:var(--sp-2);border-radius:var(--r-sheet);background:var(--surface);box-shadow:var(--sh-2);overflow:hidden}.attach-item{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-4);text-align:left}.attach-item+.attach-item{border-top:1px solid var(--surface-inset)}.attach-item b{display:block;font-size:var(--fz-body);font-weight:600}.attach-item small{font-size:var(--fz-cap);color:var(--ink-2)}.attach-emoji{font-size:22px}[data-kb] .composer{padding-bottom:calc(var(--kb, 0px) + var(--sp-3))}[data-kb] .tabbar{transform:translateY(calc(100% + var(--sp-4)));opacity:0;pointer-events:none}.tabbar{transition:transform var(--dur-base) var(--ease-spring),opacity var(--dur-fast) linear}.composer{transition:padding-bottom var(--dur-base) var(--ease-spring)}.board-add{width:var(--tap-min);height:var(--tap-min);border-radius:var(--r-pill);background:var(--accent);color:var(--on-accent);display:flex;align-items:center;justify-content:center;flex:none;box-shadow:var(--sh-1);transition:transform var(--dur-fast) var(--ease-spring)}.board-add:active{transform:scale(.92)}.board-fab{position:fixed;right:var(--sp-4);bottom:calc(var(--safe-b, 0px) + var(--sp-3) + var(--isle-h) + var(--sp-3));z-index:10;width:var(--action-btn);height:var(--action-btn);box-shadow:var(--sh-2)}.screen-board{padding-bottom:calc(var(--safe-b, 0px) + var(--sp-3) + var(--isle-h) + var(--sp-3) + var(--action-btn) + var(--sp-4))}.board-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3);align-items:start}.widget-slot{position:relative;min-width:0;grid-column:span 2;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.widget-slot[data-size=small]{grid-column:span 1}.widget-slot.is-dragging{z-index:30}.widget-slot.is-dragging .widget{box-shadow:var(--sh-2)}.widget-shell{height:100%}@keyframes wiggle{0%{transform:rotate(-.7deg)}50%{transform:rotate(.7deg)}to{transform:rotate(-.7deg)}}.widget-slot[data-editing]:not(.is-dragging) .widget-shell{animation:wiggle .32s ease-in-out infinite}.widget-slot[data-editing][data-phase="1"]:not(.is-dragging) .widget-shell{animation-duration:.36s;animation-delay:-.18s}@media(prefers-reduced-motion:reduce){.widget-slot[data-editing] .widget-shell{animation:none}}.widget-slot[data-editing] .widget{pointer-events:none;user-select:none;-webkit-user-select:none}.widget-slot[data-editing]{cursor:grab}.widget-remove{position:absolute;top:-7px;left:-7px;z-index:5;width:26px;height:26px;border-radius:var(--r-pill);background:var(--ink);color:var(--surface);display:flex;align-items:center;justify-content:center;box-shadow:var(--sh-2);animation:badge-in var(--dur-base) var(--ease-spring)}.widget-resize{position:absolute;right:-6px;bottom:-6px;z-index:5;width:30px;height:30px;border-radius:var(--r-pill);background:var(--surface);color:var(--ink-2);display:flex;align-items:center;justify-content:center;box-shadow:var(--sh-2);border:1px solid var(--surface-inset);touch-action:none;animation:badge-in var(--dur-base) var(--ease-spring)}@keyframes badge-in{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}.board-done{animation:badge-in var(--dur-base) var(--ease-spring)}.board-edit-hint{text-align:center}.widget{position:relative;height:100%;min-width:0;display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--r-card);background:var(--surface);box-shadow:var(--sh-1);transition:opacity var(--dur-fast) linear,box-shadow var(--dur-base) linear}.widget[data-busy]{opacity:.55}@media(max-width:359px){.widget-slot[data-size]{grid-column:span 2}}.widget-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-2)}.widget-title{font-size:var(--fz-sub);font-weight:600;letter-spacing:-.01em;color:var(--ink-2);min-width:0}.widget-menu-button{width:var(--tap-min);height:var(--tap-min);margin:-11px -12px -11px 0;display:flex;align-items:center;justify-content:center;border-radius:var(--r-pill);color:var(--ink-3);flex:none}.widget-menu-button:active{background:var(--surface-inset)}.widget-note{font-size:var(--fz-sub);line-height:1.4;color:var(--ink-3)}.widget-caption{font-size:var(--fz-cap);color:var(--ink-3)}.flow+.widget-caption{text-align:center}.widget-caption b[data-tone=good]{color:var(--income)}.widget-caption b[data-tone=bad]{color:var(--expense)}.widget-error{font-size:var(--fz-cap);color:var(--expense)}.board-retry{display:inline-flex;align-items:center;margin-top:var(--sp-4)}.widget-ghost{min-height:116px;animation:ghost 1.4s ease-in-out infinite}@keyframes ghost{0%,to{opacity:1}50%{opacity:.5}}@media(prefers-reduced-motion:reduce){.widget-ghost{animation:none}}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20}.widget-menu{position:absolute;z-index:21;top:calc(var(--sp-4) + 28px);right:var(--sp-3);min-width:212px;max-width:calc(100% - var(--sp-4));padding:var(--sp-1);border-radius:var(--r-sm);background:var(--surface);box-shadow:var(--sh-2);transform-origin:top right;animation:menu-in var(--dur-fast) var(--ease-spring)}@keyframes menu-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}.menu-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);width:100%;min-height:var(--tap-min);padding:0 var(--sp-3);border-radius:var(--r-xs);font-size:var(--fz-sub);font-weight:500;text-align:left}.menu-row:active{background:var(--surface-inset)}.menu-row[data-danger]{color:var(--expense)}.menu-row:disabled{opacity:.5}.menu-value{color:var(--ink-3);white-space:nowrap}.menu-note{padding:var(--sp-3) var(--sp-3) var(--sp-2);font-size:var(--fz-sub);color:var(--ink-2)}.menu-chips{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding:var(--sp-2)}.stat-value{font-size:var(--fz-display);font-weight:700;letter-spacing:-.02em;line-height:1.1}.widget[data-size=small] .stat-value{font-size:23px}.stat-value[data-tone=good]{color:var(--income)}.stat-value[data-tone=bad]{color:var(--expense)}.stat-sub{margin-top:var(--sp-1);font-size:var(--fz-cap);color:var(--ink-3)}.stat-delta{margin-top:var(--sp-3);font-size:var(--fz-cap);font-weight:600;line-height:1.35}.stat-delta[data-tone=good]{color:var(--income)}.stat-delta[data-tone=bad]{color:var(--expense)}.limits,.recent,.legend,.bars{list-style:none}.limits{display:flex;flex-direction:column;gap:var(--sp-4)}.limit-period{color:var(--ink-3);font-weight:400}.limit-foot{margin-top:6px;font-size:var(--fz-cap);color:var(--ink-3)}.recent-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) 0;min-height:40px}.recent-row+.recent-row{border-top:1px solid var(--surface-inset)}.recent-body{flex:1;min-width:0}.recent-title{font-size:var(--fz-sub);font-weight:600}.recent-sub{margin-top:1px;font-size:var(--fz-cap);color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-amount{font-size:var(--fz-sub);font-weight:600;white-space:nowrap;text-align:right}.recent-amount[data-tone=income]{color:var(--income)}.recent-amount[data-tone=expense]{color:var(--expense)}.recent-original{display:block;font-size:var(--fz-cap);font-weight:400;color:var(--ink-3)}.donut{display:flex;flex-direction:column;gap:var(--sp-4)}.donut-plot{position:relative;width:136px;align-self:center}.donut-plot svg{display:block;width:100%;height:auto;aspect-ratio:1}.ring-value{fill:var(--ink);font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.ring-value[data-tone=income]{fill:var(--income)}.ring-value[data-tone=expense]{fill:var(--expense)}.ring-caption{fill:var(--ink-3)}.legend{display:flex;flex-direction:column;gap:var(--sp-2)}.legend-row{display:grid;grid-template-columns:10px minmax(0,1fr) auto auto;align-items:center;gap:var(--sp-2);font-size:var(--fz-sub)}.legend-dot{width:10px;height:10px;border-radius:var(--r-pill)}.legend-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2)}.legend-value{font-weight:600;white-space:nowrap}.legend-pct{min-width:34px;text-align:right;font-size:var(--fz-cap);color:var(--ink-3)}.bars{display:flex;flex-direction:column;gap:var(--sp-3)}.bar-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-2);margin-bottom:6px;font-size:var(--fz-sub)}.bar-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2)}.bar-value{font-weight:600;white-space:nowrap}.meter,.chart-line{display:block;width:100%;overflow:visible}.meter{height:10px}.chart-line{height:96px}.widget[data-size=large] .chart-line{height:128px}.chart-peak{margin-bottom:var(--sp-2);font-size:var(--fz-cap);color:var(--ink-3)}.chart-peak b{color:var(--ink);font-weight:600}.chart-foot{display:flex;justify-content:space-between;margin-top:var(--sp-2);font-size:var(--fz-cap);color:var(--ink-3)}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:flex-end;justify-content:center}.sheet-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#04080b73;animation:fade-in var(--dur-fast) linear}.sheet-card{position:relative;width:100%;max-width:var(--w-max);max-height:82vh;overflow-y:auto;padding:var(--sp-3) var(--sp-4) calc(var(--safe-b, 0px) + var(--sp-6));border-radius:var(--r-sheet) var(--r-sheet) 0 0;background:var(--surface);box-shadow:var(--sh-2);animation:sheet-in var(--dur-base) var(--ease-spring)}.sheet-grip{width:36px;height:4px;margin:0 auto var(--sp-3);border-radius:var(--r-pill);background:var(--surface-inset)}.sheet-title{margin-bottom:var(--sp-2);font-size:var(--fz-title);font-weight:650;letter-spacing:-.015em}@keyframes sheet-in{0%{transform:translateY(14%);opacity:.5}to{transform:none;opacity:1}}.gallery-grid{list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3)}.gallery-card{display:flex;flex-direction:column;gap:6px;width:100%;height:100%;padding:var(--sp-3);border-radius:var(--r-card);background:var(--surface-2);text-align:left;transition:transform var(--dur-fast) var(--ease-spring)}.gallery-card:active{transform:scale(.97)}.gallery-card:disabled{opacity:.55}.gallery-card[data-pending]{opacity:1;outline:2px solid var(--accent)}.gallery-preview{display:flex;align-items:center;min-height:92px;border-radius:var(--r-sm);background:var(--bg);padding:var(--sp-2)}.gallery-name{font-size:var(--fz-sub);font-weight:600;letter-spacing:-.01em}.gallery-desc{font-size:var(--fz-cap);line-height:1.35;color:var(--ink-2)}.mini-widget{width:100%;display:flex;flex-direction:column;gap:7px;padding:10px;border-radius:var(--r-sm);background:var(--surface);box-shadow:var(--sh-1);font-size:10px;color:var(--ink-2);pointer-events:none}.mini-row{flex-direction:row;align-items:center;gap:10px}.mini-title{font-size:9px;font-weight:600;color:var(--ink-3);text-transform:none}.mini-value{font-size:15px;font-weight:700;letter-spacing:-.02em;color:var(--ink);white-space:nowrap}.mini-delta{font-size:9px;font-weight:600;color:var(--income)}.mini-value.is-income{color:var(--income)}.mini-donut{width:44px;height:44px;flex:none}.mini-legend{display:flex;flex-direction:column;gap:3px;min-width:0}.mini-legend span{display:flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-legend i{width:7px;height:7px;border-radius:var(--r-pill);flex:none}.mini-sub{font-size:9px;color:var(--ink-3)}.mini-bar{display:flex;align-items:center;justify-content:space-between;gap:8px}.mini-bar-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-meter{display:block;flex:1;height:6px;border-radius:var(--r-pill);background:var(--surface-inset);overflow:hidden;min-width:30px}.mini-meter i{display:block;height:100%;border-radius:var(--r-pill)}.mini-pct{font-weight:600;color:var(--ink)}.mini-line{display:block;width:100%;height:40px}.mini-axis{display:flex;justify-content:space-between;font-size:8px;color:var(--ink-3)}.mini-item{display:flex;align-items:center;justify-content:space-between;gap:8px}.mini-amount{font-weight:600;white-space:nowrap}.mini-amount.is-income{color:var(--income)}.mini-amount.is-expense{color:var(--expense)}.segmented{display:flex;gap:4px;margin:0 var(--sp-4) var(--sp-4);padding:3px;border-radius:var(--r-sm);background:var(--surface-inset)}.segmented-item{flex:1;min-height:34px;border-radius:calc(var(--r-sm) - 3px);font-size:var(--fz-sub);font-weight:500;color:var(--ink-2);transition:background var(--dur-base) var(--ease-spring),color var(--dur-base) linear,box-shadow var(--dur-base) linear}.segmented-item[data-active]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:var(--sh-1)}.reveal{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-slow) var(--ease-spring)}.reveal[data-open]{grid-template-rows:1fr}.reveal-inner{overflow:hidden;min-height:0}.row-button{width:100%;text-align:left;transition:background var(--dur-fast) linear}.row-button:active{background:var(--surface-2)}.tutorial{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;flex-direction:column;background:var(--bg);animation:fade-in var(--dur-base) linear}.tutorial-feed{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;display:flex;flex-direction:column;gap:var(--sp-8);width:100%;max-width:var(--w-max);margin:0 auto;padding:calc(var(--safe-t, 0px) + var(--sp-6)) var(--sp-6) calc(var(--isle-h) + var(--safe-b, 0px) + var(--sp-8))}.tutorial-feed::-webkit-scrollbar{display:none}.tutorial-feed[data-list]{gap:var(--sp-5)}.tut-list-title{font-size:var(--fz-display);font-weight:700;letter-spacing:-.02em}.tut-list-sub{margin-top:var(--sp-1);font-size:var(--fz-sub);color:var(--ink-2)}.tutorial-page{display:flex;flex-direction:column;gap:var(--sp-4)}.tut-visual{display:flex;align-items:center;justify-content:center;min-height:200px;padding:var(--sp-5);border-radius:var(--r-card);background:var(--surface);box-shadow:var(--sh-1)}.tut-title{font-size:var(--fz-title);font-weight:700;letter-spacing:-.015em}.tut-text{font-size:var(--fz-body);line-height:1.5;color:var(--ink-2)}.tut-bullets{list-style:none;display:flex;flex-direction:column;gap:var(--sp-2);font-size:var(--fz-sub);line-height:1.4;color:var(--ink-2)}.tut-bullets li{position:relative;padding-left:var(--sp-5)}.tut-bullets li:before{content:"";position:absolute;left:4px;top:6px;width:8px;height:8px;border-radius:var(--r-pill);background:var(--accent)}.tutorial-back{position:fixed;left:50%;bottom:calc(var(--safe-b, 0px) + var(--sp-3));transform:translate(-50%);z-index:41;display:flex;align-items:center;gap:var(--sp-2);height:var(--isle-h);padding:0 var(--sp-6) 0 var(--sp-5);border-radius:var(--r-pill);background:var(--surface);box-shadow:var(--sh-2);font-size:var(--fz-body);font-weight:600;transition:transform var(--dur-fast) var(--ease-spring)}.tutorial-back:active{transform:translate(-50%) scale(.96)}.tut-chat{display:flex;flex-direction:column;gap:var(--sp-3);width:100%}.tut-bubble-user{align-self:flex-end;max-width:85%}.tut-rcard{align-self:flex-start;min-width:190px;background:var(--surface-2)}.tut-composer{display:flex;flex-direction:column;gap:var(--sp-3);width:100%}.tut-composer-bar{pointer-events:none;box-shadow:var(--sh-1);background:var(--surface-2)}.tut-composer-text{flex:1;font-size:var(--fz-sub);color:var(--ink-3);padding:0 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tut-board{position:relative;display:flex;flex-direction:column;gap:var(--sp-3);width:100%}.tut-board-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3)}.tut-board-add{position:absolute;bottom:-10px;right:-6px;width:36px;height:36px;pointer-events:none;box-shadow:var(--sh-2)}.tut-edit{flex-direction:row;align-items:stretch;gap:var(--sp-4)}.tut-edit-slot{flex:1;min-width:0}.tut-wiggle{position:relative;height:100%;animation:wiggle .32s ease-in-out infinite}.tut-wiggle-alt{animation-duration:.36s;animation-delay:-.18s}@media(prefers-reduced-motion:reduce){.tut-wiggle{animation:none}}.tut-remove,.tut-resize{pointer-events:none}.tut-settings{display:flex;flex-direction:column;gap:var(--sp-2);width:100%}.tut-setting-row{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);border-radius:var(--r-sm);background:var(--surface-2)}.tut-setting-icon{width:30px;height:30px;border-radius:9px}.tut-setting-name{flex:1;font-size:var(--fz-sub);font-weight:600}.tut-setting-chevron{color:var(--ink-3);font-size:var(--fz-title);line-height:1}.chat[data-intro] .chat-scroll{flex:0 0 auto;padding:0 var(--sp-4)}.fin{display:inline-block;flex:none;line-height:0;isolation:isolate;--fin-orbit: 1px}.fin svg{width:100%;height:100%;overflow:visible}.fin-breath,.fin-pose,.fin-face,.fin-eyes,.fin-notch,.fin-waves circle,.fin-zzz{transform-box:view-box;transform-origin:50% 50%}.fin-shade{pointer-events:none}.fin-ring{fill:none;stroke:var(--fin-light);stroke-width:2;opacity:.35}.fin-notch{fill:none;stroke:#ffffff38;stroke-width:1.5;stroke-dasharray:3 7;animation:fin-spin 44s linear infinite}.fin-eye{fill:var(--fin-ink);transform-box:fill-box;transform-origin:center}.fin-mouth{stroke:var(--fin-ink);stroke-width:4;stroke-linecap:round;transform-box:fill-box;transform-origin:center;transition:d var(--dur-base) var(--ease-spring)}.fin-typing circle,.fin-waves circle,.fin-zzz{opacity:0}.fin-typing circle{fill:var(--fin-ink)}.fin-waves circle{fill:none;stroke:var(--fin-light);stroke-width:2}.fin-zzz text{fill:var(--fin-dark);font-size:16px;font-weight:700;opacity:0;transform-box:fill-box;transform-origin:center}.fin-collar{stroke:var(--surface);stroke-width:4}.fin-breath{animation:fin-breathe 4.4s ease-in-out infinite}@keyframes fin-breathe{0%,to{transform:scale(1) translateY(0)}44%{transform:scale(1.022,1.032) translateY(-.7px)}62%{transform:scale(1.014,1.02) translateY(-.4px)}}@keyframes fin-orbit{0%,to{transform:translateY(calc(var(--fin-orbit) * -1))}12.5%{transform:translate(calc(var(--fin-orbit) * .71),calc(var(--fin-orbit) * -.71))}25%{transform:translate(var(--fin-orbit))}37.5%{transform:translate(calc(var(--fin-orbit) * .71),calc(var(--fin-orbit) * .71))}50%{transform:translateY(var(--fin-orbit))}62.5%{transform:translate(calc(var(--fin-orbit) * -.71),calc(var(--fin-orbit) * .71))}75%{transform:translate(calc(var(--fin-orbit) * -1))}87.5%{transform:translate(calc(var(--fin-orbit) * -.71),calc(var(--fin-orbit) * -.71))}}.fin[data-state]:not([data-state=sleeping]) .fin-eye{animation:fin-blink 5.2s infinite}@keyframes fin-blink{0%,86%,to{transform:scaleY(1)}88%,91%{transform:scaleY(.12)}89.5%{transform:scaleY(1)}}.fin[data-state=idle] .fin-eyes{animation:fin-glance 9s ease-in-out infinite}.fin[data-state=idle] .fin-face{animation:fin-orbit 11s linear infinite}.fin[data-state=idle] .fin-pose{animation:fin-sway 7.5s ease-in-out infinite}@keyframes fin-glance{0%,58%,to{transform:translate(0)}64%,70%{transform:translate(-2.5px)}78%,84%{transform:translate(2.5px)}}@keyframes fin-sway{0%,to{transform:rotate(-1.4deg)}50%{transform:rotate(1.4deg)}}.fin[data-state=thinking] .fin-eyes{animation:fin-look 2.4s ease-in-out infinite}.fin[data-state=thinking] .fin-pose{animation:fin-ponder 2.4s ease-in-out infinite}.fin[data-state=thinking] .fin-mouth{d:path("M42 62 Q48 60 54 62")}.fin[data-state=thinking] .fin-notch{animation-duration:16s}.fin[data-state=thinking] .fin-ring{opacity:.9;stroke-dasharray:40 230;stroke-linecap:round;transform-box:view-box;transform-origin:50% 50%;animation:fin-spin 1.5s linear infinite}@keyframes fin-look{0%,to{transform:translate(0)}50%{transform:translate(2px,-3px)}}@keyframes fin-ponder{0%,to{transform:rotate(0)}50%{transform:rotate(3deg)}}@keyframes fin-spin{to{transform:rotate(360deg)}}.fin[data-state=writing] .fin-typing circle{opacity:1;animation:fin-dot 1s ease-in-out infinite}.fin[data-state=writing] .fin-typing circle:nth-child(2){animation-delay:.15s}.fin[data-state=writing] .fin-typing circle:nth-child(3){animation-delay:.3s}.fin[data-state=writing] .fin-mouth{d:path("M42 62 L54 62")}.fin[data-state=writing] .fin-eyes{animation:fin-read 1.9s ease-in-out infinite}.fin[data-state=writing] .fin-pose{animation:fin-tap 1.9s ease-in-out infinite}@keyframes fin-dot{0%,to{transform:translateY(0);opacity:.45}50%{transform:translateY(-3px);opacity:1}}@keyframes fin-read{0%,8%{transform:translate(-2px,1px)}62%,74%{transform:translate(2px,1px)}to{transform:translate(-2px,1px)}}@keyframes fin-tap{0%,to{transform:rotate(-1deg)}70%{transform:rotate(1.2deg)}}.fin[data-state=listening] .fin-waves circle{opacity:1;animation:fin-wave 1.8s ease-out infinite}.fin[data-state=listening] .fin-waves circle:nth-child(2){animation-delay:.9s}.fin[data-state=listening] .fin-mouth{d:path("M41 59 Q48 67 55 59");animation:fin-listen 1.8s ease-in-out infinite}.fin[data-state=listening] .fin-face{--fin-orbit: 1.4px;animation:fin-orbit 3.6s linear infinite}@keyframes fin-wave{0%{transform:scale(.72);opacity:.55}to{transform:scale(1.18);opacity:0}}@keyframes fin-listen{0%,to{transform:scaleY(1)}50%{transform:scaleY(1.3)}}.fin[data-state=sleeping] .fin-breath{animation:fin-sleep-breathe 5.2s ease-in-out infinite}.fin[data-state=sleeping] .fin-pose{animation:fin-doze 5.2s ease-in-out infinite}.fin[data-state=sleeping] .fin-face{--fin-orbit: 2.6px;animation:fin-orbit 5.2s linear infinite}.fin[data-state=sleeping] .fin-eyes{animation:fin-sleep-eyes 5.2s ease-in-out infinite}.fin[data-state=sleeping] .fin-eye{transform:scale(1.15,.16)}.fin[data-state=sleeping] .fin-mouth{d:path("M41 61 Q48 66 55 61");animation:fin-snore 5.2s ease-in-out infinite}.fin[data-state=sleeping] .fin-notch{animation-duration:90s}.fin[data-state=sleeping] .fin-zzz{opacity:1}.fin[data-state=sleeping] .fin-zzz text{animation:fin-zzz 3.4s ease-out infinite}.fin[data-state=sleeping] .fin-zzz text:nth-child(2){animation-delay:1.7s}@keyframes fin-sleep-breathe{0%,to{transform:scale(1) translateY(0)}42%{transform:scale(1.045,1.075) translateY(-2px)}58%{transform:scale(1.04,1.06) translateY(-1.6px)}}@keyframes fin-doze{0%,to{transform:rotate(-6deg)}42%{transform:rotate(-8.5deg)}}@keyframes fin-sleep-eyes{0%,to{transform:translateY(0)}42%{transform:translateY(-1.6px)}}@keyframes fin-snore{0%,to{transform:translateY(0) scaleY(.85)}42%{transform:translateY(2px) scale(1.12,1.55)}72%{transform:translateY(.6px) scale(1.04,1.1)}}@keyframes fin-zzz{0%{opacity:0;transform:translateY(6px) scale(.7)}30%{opacity:.9}to{opacity:0;transform:translate(7px,-14px) scale(1.15)}}.fin[data-state=playing] .fin-pose{animation:fin-hop 1.1s var(--ease-spring) infinite}.fin[data-state=playing] .fin-mouth{d:path("M36 58 Q48 70 60 58")}.fin[data-state=playing] .fin-face{--fin-orbit: 1.2px;animation:fin-orbit 1.1s linear infinite}@keyframes fin-hop{0%{transform:translateY(0) scale(1) rotate(0)}12%{transform:translateY(1px) scale(1.06,.94) rotate(0)}32%{transform:translateY(-6px) scale(.95,1.05) rotate(-4deg)}50%{transform:translateY(0) scale(1.05,.95) rotate(3deg)}64%{transform:translateY(0) scale(.99,1.01) rotate(-1deg)}76%,to{transform:translateY(0) scale(1) rotate(0)}}.fin[data-state=happy] .fin-mouth{d:path("M37 58 Q48 69 59 58")}.fin[data-state=happy] .fin-pose{animation:fin-nod .8s var(--ease-spring) 1}@keyframes fin-nod{0%,to{transform:rotate(0) translateY(0)}45%{transform:rotate(4deg) translateY(1.5px)}}.fin[data-state=sad] .fin-mouth{d:path("M39 65 Q48 58 57 65")}.fin[data-state=sad] .fin-breath{animation:fin-sigh 2.6s ease-out 1 both}.fin[data-state=sad] .fin-pose{animation:fin-settle .42s ease-out 1 both}.fin[data-state=sad] .fin-eyes{animation:fin-avert 2.6s ease-out 1 both}@keyframes fin-sigh{0%{transform:scale(1) translateY(0)}18%{transform:scale(1.03,1.05) translateY(-1.5px)}55%,to{transform:scale(.985,.975) translateY(1px)}}@keyframes fin-avert{0%{transform:translate(0)}to{transform:translate(-1.5px,2px)}}@keyframes fin-settle{0%{transform:rotate(0)}to{transform:rotate(-6deg)}}@media(prefers-reduced-motion:reduce){.fin svg,.fin svg *{animation:none!important;transition:none!important}.fin[data-state=sad] .fin-pose,.fin[data-state=sleeping] .fin-pose{transform:rotate(-6deg)}.fin[data-state=sleeping] .fin-zzz{opacity:1}.fin[data-state=sleeping] .fin-zzz text{opacity:.9}}.chat-head{animation:fade-in var(--dur-base) ease-out;display:flex;flex-direction:column;align-items:center;width:100%;max-width:var(--w-max);margin:0 auto;text-align:center}.chat-head[data-mode=bar]{position:absolute;top:0;left:0;right:0;z-index:2;max-width:none;padding:calc(var(--safe-t, 0px) + var(--sp-2)) var(--sp-4) var(--sp-2);pointer-events:none}.chat-head[data-mode=bar] .chat-head-isle{pointer-events:auto}.chat:not([data-intro]) .chat-scroll{padding-top:calc(var(--safe-t, 0px) + var(--sp-2) * 2 + var(--isle-h))}.chat-head-isle{display:flex;align-items:center;gap:var(--sp-3);padding:6px var(--sp-4) 6px 6px;border-radius:var(--r-pill);background:var(--surface);box-shadow:var(--sh-2);text-align:left}.chat-head[data-mode=intro] .chat-head-isle{padding:0;border-radius:0;background:none;box-shadow:none}.chat-head-meta{min-width:0;display:flex;flex-direction:column;gap:1px;line-height:1.2}.chat-head-name{font-size:15px;font-weight:650;letter-spacing:-.01em}.chat-head-role,.chat-head-status{font-size:var(--fz-cap);font-weight:500;color:var(--ink-3)}.chat-head[data-mode=intro] .chat-head-meta{display:none}.chat-head[data-mode=intro]{flex:1;justify-content:center;gap:var(--sp-4);padding:calc(var(--safe-t, 0px) + var(--sp-5)) var(--sp-5) var(--sp-4);min-height:0;overflow-y:auto}.chat-avatar{display:flex;align-items:center;justify-content:center}.chat-welcome{background:var(--surface);border-radius:var(--r-card);box-shadow:var(--sh-1);padding:var(--sp-5);display:flex;flex-direction:column;gap:var(--sp-3);animation:bubble-in var(--dur-slow) var(--ease-spring)}.chat-welcome-lead{font-size:var(--fz-title);font-weight:650;letter-spacing:-.015em}.chat-welcome-text,.chat-welcome-foot{font-size:var(--fz-sub);line-height:1.45;color:var(--ink-2)}.chat-welcome-list{list-style:none;display:flex;flex-direction:column;gap:var(--sp-2);text-align:left;font-size:var(--fz-sub);line-height:1.4}.chat-welcome-list li{position:relative;padding-left:var(--sp-4)}.chat-welcome-list li:before{content:"";position:absolute;left:0;top:8px;width:6px;height:6px;border-radius:50%;background:var(--accent)}.chat-service{align-self:center;max-width:100%;padding:2px var(--sp-3);font-size:var(--fz-cap);color:var(--ink-3);text-align:center;opacity:.75}.bubble-row.is-assistant .chat-service,.bubble-row.is-user .chat-service{align-self:center}.bubble.is-voice{padding:var(--sp-2) var(--sp-3);min-width:240px}.voice-row{display:flex;align-items:center;gap:var(--sp-2)}.voice-play{width:34px;height:34px;flex:none;border-radius:50%;display:grid;place-items:center;background:var(--on-accent);color:var(--accent-ink)}.bubble.is-user .voice-play{background:#ffffff38;color:var(--on-accent)}.voice-play:disabled{opacity:.5}.voice-wave{flex:1;display:flex;align-items:center;gap:2px;height:26px;cursor:pointer}.voice-wave i{flex:1;min-width:2px;border-radius:var(--r-pill);background:currentColor;opacity:.3;transition:opacity var(--dur-fast) linear}.voice-wave i[data-on]{opacity:.95}.voice-time{font-size:var(--fz-cap);font-variant-numeric:tabular-nums;opacity:.75}.voice-toggle{width:24px;height:24px;flex:none;display:grid;place-items:center;opacity:.7;transition:transform var(--dur-base) var(--ease-spring)}.voice-toggle[aria-expanded=true]{transform:rotate(180deg)}.voice-note{font-size:var(--fz-cap);opacity:.8;padding:var(--sp-1) 0 0}.voice-text{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--dur-base) var(--ease-spring)}.voice-text[data-open]{grid-template-rows:1fr}.voice-text-inner{overflow:hidden;font-size:var(--fz-sub);line-height:1.4;padding-top:0}.voice-text[data-open] .voice-text-inner{padding-top:var(--sp-2)}.recording-wave{flex:1;display:flex;align-items:center;gap:2px;height:24px;min-width:0}.recording-wave i{flex:1;min-width:2px;height:100%;border-radius:var(--r-pill);background:var(--expense);opacity:.85;transform:scaleY(.08);transform-origin:center;transition:transform 90ms linear}.recording.is-cancelling .recording-wave i{background:var(--ink-3)}.board-empty{flex:1;display:grid;place-items:center;min-height:46vh;padding:var(--sp-6) var(--sp-5)}.board-empty-text{max-width:30ch;text-align:center;font-size:var(--fz-sub);line-height:1.5;color:var(--ink-3)}.flow{display:grid;grid-template-columns:1fr 1px 1fr;gap:var(--sp-3);align-items:start}.flow-divider{align-self:stretch;background:var(--surface-inset)}.flow-col{min-width:0;display:flex;flex-direction:column;align-items:center;gap:var(--sp-1)}.flow-label{font-size:var(--fz-cap);color:var(--ink-3)}.flow-ring{width:100%;max-width:132px}.flow-ring svg{display:block;width:100%;height:auto;aspect-ratio:1}.flow-list{list-style:none;width:100%;display:flex;flex-direction:column;gap:4px;margin-top:var(--sp-2)}.flow-row{display:flex;align-items:center;gap:6px;font-size:var(--fz-cap);min-width:0}.flow-dot{width:7px;height:7px;flex:none;border-radius:50%}.flow-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2)}.flow-amount{font-variant-numeric:tabular-nums;color:var(--ink-2)}.flow-empty,.flow-more{font-size:var(--fz-cap);color:var(--ink-3);padding-left:13px}.mini-flow{flex-direction:row;gap:var(--sp-3);align-items:center}.mini-flow-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0}.mini-flow-col .mini-donut{width:34px;height:34px}.rcard-bar-name{display:inline-flex;align-items:center;gap:6px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rcard-bar-dot{width:7px;height:7px;flex:none;border-radius:50%}.rcard-bar-pct{margin-left:6px;font-weight:500;color:var(--ink-3)}.recent-dot{width:8px;height:8px;flex:none;border-radius:50%}.limit-original{color:var(--ink-3)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}
