:root{--warm-300: #ffc78f;--warm-400: #ffae5e;--warm-500: #f26b2a;--warm-600: #cf4a18;--n-0: #ffffff;--n-25: #fafbfd;--n-50: #f6f7fb;--n-100: #eef0f4;--n-150: #e9eaf0;--n-200: #dde0e8;--n-300: #c4c8d4;--n-400: #9aa0ad;--n-500: #7a7f8c;--n-600: #565b67;--n-700: #3a3f4a;--n-800: #262a36;--n-850: #1a1c25;--n-900: #14151c;--n-950: #0f1117;--green-50: #f0fdf4;--green-100: #dcfce7;--green-200: #bbf7d0;--green-500: #22c55e;--green-600: #16a34a;--green-700: #166534;--amber-50: #fff7ed;--amber-100: #ffedd5;--amber-200: #fed7aa;--amber-500: #f59e0b;--amber-600: #d97706;--amber-700: #9a3412;--red-50: #fef2f2;--red-100: #fee2e2;--red-200: #fecaca;--red-500: #ef4444;--red-600: #dc2626;--red-700: #b91c1c;--lav-50: #eef0fe;--lav-100: #e0e3fb;--lav-200: #d9ddfb;--lav-600: #4b4fae;--lav-700: #3a3f9c;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Inter, Arial, sans-serif;--text-2xs: 11px;--text-xs: 12px;--text-sm: 13.5px;--text-base:15px;--text-md: 16px;--text-lg: 17px;--text-xl: 21px;--text-2xl: 26px;--text-3xl: 32px;--lh-tight: 1.2;--lh-snug: 1.35;--lh-base: 1.5;--fw-regular: 400;--fw-medium: 500;--fw-semibold:600;--fw-bold: 700;--fw-black: 800;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-7: 28px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-xs: 6px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-2xl: 28px;--radius-full: 999px;--ease-out: cubic-bezier(.22, .8, .3, 1);--ease-in-out:cubic-bezier(.5, 0, .2, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--dur-fast: .12s;--dur-base: .2s;--dur-slow: .32s;--z-base: 1;--z-sticky: 20;--z-overlay: 40;--z-sheet: 50;--z-toast: 60;--color-app-backdrop: var(--n-100);--color-bg: var(--n-50);--color-surface: var(--n-0);--color-surface-2: var(--n-50);--color-surface-3: var(--n-100);--color-border: var(--n-150);--color-border-strong: var(--n-200);--color-track: #e9ebf2;--color-text: var(--n-850);--color-text-muted: var(--n-500);--color-text-subtle: var(--n-400);--color-text-on-accent: var(--n-0);--color-primary: var(--color-action);--color-primary-hover: var(--color-action-hover);--color-primary-weak: var(--color-action-weak);--color-primary-weak-border: var(--color-action-weak-border);--color-primary-text: var(--color-action-text);--grad-brand: var(--color-action);--color-focus: var(--color-action);--color-action: #dc5c33;--color-action-hover: #e8703f;--color-on-action: #ffffff;--color-action-weak: rgba(220, 92, 51, .14);--color-action-weak-border: rgba(220, 92, 51, .32);--color-action-text: #c44a26;--grad-warm: #dc5c33;--color-success: var(--green-600);--color-success-weak: var(--green-50);--color-success-weak-border: var(--green-200);--color-success-text: var(--green-700);--color-warning: var(--amber-600);--color-warning-weak: var(--amber-50);--color-warning-weak-border: var(--amber-200);--color-warning-text: var(--amber-700);--color-danger: var(--red-600);--color-danger-weak: var(--red-50);--color-danger-weak-border: var(--red-200);--color-danger-text: var(--red-700);--color-memory-bg: var(--lav-50);--color-memory-border: var(--lav-200);--color-memory-text: var(--lav-600);--color-memory-strong: var(--lav-700);--color-ping-bg: var(--amber-50);--color-ping-border: var(--amber-200);--color-ping-text: var(--amber-700);--color-result-bg: var(--green-50);--color-result-border: var(--green-200);--color-result-text: var(--green-700);--color-bubble-ag-bg: var(--color-surface);--color-bubble-ag-text: var(--color-text);--color-bubble-me-bg: var(--n-150);--color-bubble-me-text: var(--color-text);--shadow-xs: 0 1px 2px rgba(20, 22, 40, .06);--shadow-sm: 0 2px 8px rgba(20, 22, 40, .08);--shadow-md: 0 6px 18px rgba(20, 22, 40, .1);--shadow-lg: 0 14px 34px rgba(20, 22, 40, .16);--shadow-accent: 0 6px 22px rgba(220, 92, 51, .35)}:root[data-theme=dark],.theme-dark{--color-app-backdrop: #0d0e13;--color-bg: #16181e;--color-surface: #1f232b;--color-surface-2: #272b34;--color-surface-3: #313641;--color-border: #333945;--color-border-strong: #3e4552;--color-track: #313847;--color-text: #e8e9ee;--color-text-muted: #9fa5b0;--color-text-subtle: #727884;--color-text-on-accent: #ffffff;--color-primary: var(--color-action);--color-primary-hover: var(--color-action-hover);--color-primary-weak: var(--color-action-weak);--color-primary-weak-border: var(--color-action-weak-border);--color-primary-text: var(--color-action-text);--color-focus: var(--color-action);--color-action-text: #e8835c;--color-success-weak: rgba(34, 197, 94, .12);--color-success-weak-border: rgba(34, 197, 94, .3);--color-success-text: #6ee7a8;--color-warning-weak: rgba(245, 158, 11, .12);--color-warning-weak-border: rgba(245, 158, 11, .3);--color-warning-text: #fbbf6b;--color-danger-weak: rgba(239, 68, 68, .12);--color-danger-weak-border: rgba(239, 68, 68, .3);--color-danger-text: #fca5a5;--color-memory-bg: rgba(139, 124, 246, .12);--color-memory-border: rgba(139, 124, 246, .26);--color-memory-text: #b9aef9;--color-memory-strong: #cbc2fb;--color-ping-bg: rgba(245, 158, 11, .12);--color-ping-border: rgba(245, 158, 11, .3);--color-ping-text: #fbbf6b;--color-result-bg: rgba(34, 197, 94, .12);--color-result-border: rgba(34, 197, 94, .3);--color-result-text: #6ee7a8;--color-bubble-ag-bg: #272b34;--color-bubble-ag-text: var(--color-text);--color-bubble-me-bg: #2f343e;--color-bubble-me-text: var(--color-text);--shadow-xs: 0 1px 2px rgba(0, 0, 0, .4);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .45);--shadow-md: 0 6px 18px rgba(0, 0, 0, .5);--shadow-lg: 0 14px 34px rgba(0, 0, 0, .6);--shadow-accent: 0 6px 18px rgba(220, 92, 51, .42)}*,*:before,*:after{box-sizing:border-box}*{margin:0}*{-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--lh-base);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none}input,textarea{background:none;border:none;outline:none}@media (pointer: coarse){input,textarea,select{font-size:16px!important}}a{color:inherit;text-decoration:none}h1,h2,h3,h4{font-weight:var(--fw-bold);line-height:var(--lh-tight)}:focus{outline:none}:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-xs)}input:focus-visible,textarea:focus-visible,select:focus-visible,button:focus-visible,[role=button]:focus-visible{outline:none}::selection{background:var(--color-primary-weak);color:var(--color-primary-text)}.scroll-y{overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}.scroll-y::-webkit-scrollbar{width:0;height:0;display:none}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}.app-shell{position:relative;width:100%;height:100vh;height:-webkit-fill-available;height:100dvh;height:var(--app-height, 100dvh);background:var(--color-bg);color:var(--color-text);overflow:hidden;display:flex;flex-direction:column}html.app-locked,html.app-locked body{height:var(--app-height, 100dvh);overflow:hidden;overscroll-behavior:none}.screen{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--color-bg)}.btn{--_h: 44px;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--_h);padding:0 var(--space-5);border-radius:var(--radius-md);font-size:var(--text-md);font-weight:var(--fw-semibold);line-height:1;white-space:nowrap;transition:transform var(--dur-fast) var(--ease-out),background var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out),opacity var(--dur-base) var(--ease-out)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.5;pointer-events:none}.btn--block{display:flex;width:100%}.btn--sm{--_h: 34px;padding:0 var(--space-3);font-size:var(--text-sm);border-radius:var(--radius-sm)}.btn--lg{--_h: 52px;font-size:var(--text-lg);border-radius:var(--radius-lg)}.btn--primary{background:var(--color-primary);color:var(--color-text-on-accent);box-shadow:var(--shadow-accent)}@media (hover: hover){.btn--primary:hover{background:var(--color-primary-hover)}}.btn--brand{background:var(--grad-brand);color:#fff;box-shadow:var(--shadow-accent)}.btn--soft{background:var(--color-primary-weak);color:var(--color-primary-text);border:1px solid var(--color-primary-weak-border)}@media (hover: hover){.btn--soft:hover{background:var(--color-primary-weak-border)}}.btn--outline{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}@media (hover: hover){.btn--outline:hover{border-color:var(--color-border-strong)}}.btn--ghost{background:transparent;color:var(--color-text-muted)}@media (hover: hover){.btn--ghost:hover{background:var(--color-surface-3);color:var(--color-text)}}.btn--dark{background:var(--color-text);color:var(--color-bg)}.btn--danger{background:var(--color-danger);color:#fff}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-full);color:var(--color-text-muted);font-size:var(--text-lg);flex:0 0 auto;transition:transform var(--dur-fast) var(--ease-out),background var(--dur-base) var(--ease-out)}@media (hover: hover){.icon-btn:hover{background:var(--color-surface-3);color:var(--color-text)}}.icon-btn:active{transform:scale(.92)}.icon-btn--accent{background:var(--color-primary);color:var(--color-text-on-accent)}@media (hover: hover){.icon-btn--accent:hover{background:var(--color-primary-hover)}}.icon-btn--soft{background:var(--color-surface-2);border:1px solid var(--color-border)}.icon-btn:disabled{opacity:.45;pointer-events:none}.icon-btn--sm{width:32px;height:32px;font-size:var(--text-base)}.chip{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--fw-semibold);background:var(--color-surface);color:var(--color-primary-text);border:1px solid var(--color-border-strong);transition:background var(--dur-base) var(--ease-out),color var(--dur-base) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.chip:active{transform:scale(.96)}@media (hover: hover){.chip:hover{background:var(--color-primary-weak)}}.chip--solid{background:var(--color-primary);color:var(--color-text-on-accent);border-color:transparent}@media (hover: hover){.chip--solid:hover{background:var(--color-primary-hover)}}.chip--ok{background:var(--color-success-weak);color:var(--color-success-text);border-color:var(--color-success-weak-border)}.chip--muted{color:var(--color-text-muted)}.field{width:100%;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);font-size:var(--text-md);color:var(--color-text);transition:border-color var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out)}.field::placeholder{color:var(--color-text-subtle)}.field:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-weak)}.field--pill{border-radius:var(--radius-full)}.field--center{text-align:center}.field--area{resize:none;display:block;font-size:var(--text-lg);line-height:1.4;max-height:150px;overflow-y:auto;scrollbar-width:none;border-radius:var(--radius-xl)}.field--area::-webkit-scrollbar{width:0;height:0;display:none}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-3);transition:border-color var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out)}.card--row{display:flex;align-items:center;gap:var(--space-3)}.card--pad{padding:var(--space-4)}.card--hover:hover{border-color:var(--color-border-strong);box-shadow:var(--shadow-sm)}.card--accent{border-color:var(--color-primary-weak-border);background:var(--color-primary-weak)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:2px var(--space-2);border-radius:var(--radius-xs);font-size:var(--text-xs);font-weight:var(--fw-bold);letter-spacing:.02em}.badge--free{background:var(--color-success-weak);color:var(--color-success-text)}.badge--paid{background:var(--color-primary-weak);color:var(--color-primary-text)}.badge--neutral{background:var(--color-surface-3);color:var(--color-text-muted)}.badge--warn{background:var(--color-warning-weak);color:var(--color-warning-text)}.tag{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--color-text-subtle);background:var(--color-surface);border:1px solid var(--color-border)}.appbar{flex:0 0 auto;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);padding-top:max(var(--space-3),env(safe-area-inset-top));background:var(--color-surface);border-bottom:1px solid var(--color-border)}.appbar__title{font-weight:var(--fw-bold);font-size:var(--text-lg);line-height:1.1}.appbar__sub{font-size:var(--text-xs);color:var(--color-text-muted)}.appbar__spacer{margin-left:auto}.install-banner{position:fixed;top:0;left:0;right:0;z-index:var(--z-overlay);display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);padding-top:max(var(--space-3),env(safe-area-inset-top));background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-lg);animation:install-down var(--dur-base) var(--ease-out)}@keyframes install-down{0%{transform:translateY(-100%)}to{transform:none}}.install-banner__text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;line-height:1.25}.install-banner__text b{font-size:var(--text-md)}.install-banner__text span{font-size:var(--text-xs);color:var(--color-text-muted)}.install-banner__cta{flex:0 0 auto;background:var(--grad-brand);color:#fff;border:none;border-radius:var(--radius-full);padding:8px 16px;cursor:pointer;font-weight:var(--fw-semibold);font-size:var(--text-sm)}.install-banner__x{flex:0 0 auto;background:transparent;border:none;color:var(--color-text-subtle);cursor:pointer;display:inline-flex;padding:4px}.update-banner{position:fixed;left:50%;transform:translate(-50%);top:calc(env(safe-area-inset-top) + var(--space-3));z-index:var(--z-toast);display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);box-shadow:var(--shadow-lg);animation:install-down var(--dur-base) var(--ease-out)}.update-banner__text{font-size:var(--text-sm);white-space:nowrap}.update-banner__cta{flex:0 0 auto;background:var(--grad-brand);color:#fff;border:none;border-radius:var(--radius-full);padding:8px 16px;cursor:pointer;font-weight:var(--fw-semibold);font-size:var(--text-sm)}.divider{height:1px;background:var(--color-border);border:0;margin:var(--space-4) 0}.section-title{font-size:var(--text-xs);font-weight:var(--fw-bold);letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-subtle);margin-bottom:var(--space-2)}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:var(--z-sheet);background:#0f111780;display:flex;align-items:flex-end;justify-content:center;animation:overlay-in var(--dur-base) var(--ease-out)}.sheet{width:100%;background:var(--color-surface);border-radius:var(--radius-2xl) var(--radius-2xl) 0 0;padding:var(--space-5) var(--space-4) var(--space-6);display:flex;flex-direction:column;gap:var(--space-3);box-shadow:var(--shadow-lg);animation:sheet-in var(--dur-slow) var(--ease-spring)}.sheet__grip{width:38px;height:4px;border-radius:var(--radius-full);background:var(--color-border-strong);align-self:center}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}.banner{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:var(--text-sm);background:var(--color-memory-bg);border-bottom:1px solid var(--color-memory-border);color:var(--color-memory-text)}.banner__spacer{margin-left:auto}.confirm-toast{position:fixed;top:var(--space-3);left:50%;transform:translate(-50%);z-index:1000;padding:var(--space-2) var(--space-4);background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-full);box-shadow:var(--shadow-lg);font-size:var(--text-sm);font-weight:500;animation:confirm-toast-in .25s ease}@keyframes confirm-toast-in{0%{opacity:0;transform:translate(-50%) translateY(-8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.confirm-toast--warn{cursor:pointer;font-family:inherit;max-width:92vw;border-color:var(--color-warning);color:var(--color-text)}.energy{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);font-weight:var(--fw-bold);color:var(--color-success)}.energy--low{color:var(--color-warning)}.batt{position:relative;width:42px;height:16px;border:2px solid var(--color-border-strong);border-radius:var(--radius-xs);padding:1px}.batt:after{content:"";position:absolute;right:-4px;top:4px;width:3px;height:6px;background:var(--color-border-strong);border-radius:0 2px 2px 0}.batt__fill{display:block;height:100%;border-radius:1px;background:linear-gradient(90deg,var(--green-500),#84e1a5);transition:width var(--dur-slow) var(--ease-out)}.batt__fill--low{background:linear-gradient(90deg,var(--red-500),var(--amber-500))}.chat{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:var(--space-4) var(--space-3);display:flex;flex-direction:column;gap:var(--space-3);transition:opacity .22s var(--ease-out),transform .22s var(--ease-out)}.chat{scrollbar-width:thin;scrollbar-color:var(--color-border-strong) transparent}.chat::-webkit-scrollbar{width:8px;height:8px;display:block}.chat::-webkit-scrollbar-track{background:transparent}.chat::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:var(--radius-full);border:2px solid transparent;background-clip:padding-box}.chat::-webkit-scrollbar-thumb:hover{background:var(--color-text-subtle);background-clip:padding-box}.chat--switching{opacity:0;transform:translateY(10px);transition:none}.chat:before{content:"";margin-top:auto}.row{display:flex;flex-wrap:wrap}.row--me{justify-content:flex-end}.msg-actions{flex-basis:100%;display:flex;justify-content:flex-start;padding:2px var(--space-1) 0;animation:msg-actions-in .16s var(--ease-out)}.row--me .msg-actions{justify-content:flex-end}@keyframes msg-actions-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}.bubble__foot{flex-basis:100%;display:flex;align-items:center;justify-content:flex-start;gap:var(--space-2);padding:2px var(--space-1) 0}.row--me .bubble__foot{justify-content:flex-end}.bubble__foot .msg-actions{flex-basis:auto;padding:0;gap:2px;animation:none}.bubble__time{font-size:var(--text-xs);line-height:1;color:var(--color-text-subtle);white-space:nowrap}.bubble__foot .msg-actions:not(:empty)+.bubble__time:before,.bubble__foot .msg-actions:not(:empty)+.gen-mult:before,.bubble__foot .gen-mult+.bubble__time:before{content:"·";margin-right:5px}.gen-mult{font-size:var(--text-xs);line-height:1;font-variant-numeric:tabular-nums;color:var(--color-text-subtle);white-space:nowrap}.tok-dbg{flex-basis:100%;margin-top:2px;padding:0 var(--space-1);display:flex;flex-direction:column;gap:1px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px;line-height:1.3;color:var(--color-text-subtle);font-variant-numeric:tabular-nums}.tok-dbg__sum{font-weight:600}.tok-dbg__row{white-space:nowrap}.chat-older-sentinel{height:1px}.chat-older-loading{display:flex;align-items:center;justify-content:center;gap:var(--space-2);margin:var(--space-2) 0 var(--space-1);font-size:var(--text-xs);color:var(--color-text-subtle)}.chat-older-loading__spinner{width:12px;height:12px;border-radius:var(--radius-full);border:2px solid var(--color-border);border-top-color:var(--color-text-muted);animation:chat-older-spin .7s linear infinite}@keyframes chat-older-spin{to{transform:rotate(360deg)}}.chat-day{display:flex;justify-content:center;margin:var(--space-1) 0}.chat-day span{font-size:var(--text-xs);color:var(--color-text-subtle);background:var(--color-surface-2);border-radius:var(--radius-full);padding:2px var(--space-3)}.bubble--queued{opacity:.5;transition:opacity .25s var(--ease-out)}.msg-queued{flex-basis:100%;display:inline-flex;align-items:center;gap:5px;justify-content:flex-end;padding:3px var(--space-1) 0;background:none;color:var(--color-text-muted);font-size:var(--text-xs);font-weight:var(--fw-semibold)}.bubble--failed{opacity:.6;border-color:var(--color-warning)!important}.msg-failed{flex-basis:100%;display:inline-flex;align-items:center;gap:5px;justify-content:flex-end;padding:3px var(--space-1) 0;background:none;color:var(--color-warning);font-size:var(--text-xs);font-weight:var(--fw-semibold)}.msg-failed:disabled{opacity:.5}.copy-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);color:var(--color-text-subtle);opacity:.55;transition:opacity var(--dur-fast) var(--ease-out),background var(--dur-base) var(--ease-out),color var(--dur-base) var(--ease-out)}.copy-btn:hover{opacity:1;background:var(--color-surface-2);color:var(--color-text-muted)}.copy-btn:active{transform:scale(.92)}.copy-btn--done{color:var(--color-success);opacity:1}.chat-to-bottom{position:absolute;right:var(--space-4);bottom:calc(112px + env(safe-area-inset-bottom));z-index:var(--z-sheet, 50);width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);background:var(--color-surface);color:var(--color-text-muted);border:1px solid var(--color-border);box-shadow:var(--shadow-md);cursor:pointer;transition:background var(--dur-base) var(--ease-out),color var(--dur-base) var(--ease-out),transform var(--dur-fast) var(--ease-out);animation:chat-to-bottom-in var(--dur-base) var(--ease-out)}.chat-to-bottom:hover{background:var(--color-surface-2);color:var(--color-text)}.chat-to-bottom:active{transform:scale(.92)}@keyframes chat-to-bottom-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.bubble{max-width:82%;padding:var(--space-3) var(--space-4);border-radius:var(--radius-lg);font-size:var(--text-lg);line-height:var(--lh-snug);white-space:pre-wrap;word-wrap:break-word;animation:bubble-in var(--dur-base) var(--ease-out)}.bubble--ag{background:transparent;color:var(--color-bubble-ag-text);border:none;border-radius:0;padding-left:0;padding-right:0;max-width:100%}.bubble--me{background:var(--color-bubble-me-bg);color:var(--color-bubble-me-text);border:1px solid var(--color-border);border-bottom-right-radius:var(--radius-xs)}.bubble--ping{background:var(--color-ping-bg);border:1px solid var(--color-ping-border);color:var(--color-ping-text)}.bubble--result{background:var(--color-result-bg);border:1px solid var(--color-result-border);color:var(--color-result-text)}.bubble--img{padding:var(--space-1);max-width:min(84%,420px)}.bubble--img .bubble__text{padding:var(--space-2) var(--space-3) var(--space-1)}.chat-img{display:block;width:100%;height:auto;border-radius:var(--radius-md);background:var(--color-surface-sunken, var(--color-border))}.chat-img--load{aspect-ratio:1 / 1;animation:chat-img-pulse 1.2s var(--ease-out) infinite}.chat-img--zoom{cursor:zoom-in}.bubble--gen{width:min(84%,420px)}.chat-img--gen{aspect-ratio:1 / 1;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-md);background:linear-gradient(100deg,var(--color-surface-2) 25%,var(--color-border) 50%,var(--color-surface-2) 75%);background-size:200% 100%;animation:chat-img-shimmer 1.5s linear infinite}@keyframes chat-img-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.chat-img--err{aspect-ratio:3 / 2;display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);color:var(--color-text-muted);text-align:center;padding:var(--space-3)}@keyframes chat-img-pulse{0%,to{opacity:.5}50%{opacity:.85}}.img-lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-toast);background:#000000d9;display:flex;align-items:center;justify-content:center;padding:var(--space-4);animation:overlay-in var(--dur-base) var(--ease-out)}.img-lightbox__img{max-width:100%;max-height:100%;object-fit:contain;border-radius:var(--radius-md)}.img-lightbox__close{position:absolute;top:var(--space-3);right:var(--space-3);width:40px;height:40px;border-radius:var(--radius-full);display:inline-flex;align-items:center;justify-content:center;background:#0006;color:#fff}@keyframes bubble-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.memo{align-self:flex-start;display:flex;align-items:center;gap:var(--space-2);max-width:92%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);background:var(--color-memory-bg);border:1px solid var(--color-memory-border);color:var(--color-memory-text);animation:bubble-in var(--dur-base) var(--ease-out)}.memo b{color:var(--color-memory-strong);font-weight:var(--fw-semibold)}.memo__undo{margin-left:auto;font-weight:var(--fw-bold);color:var(--color-primary-text);white-space:nowrap}.row--note{justify-content:flex-start}.memo--settled{align-self:center;opacity:.8}.memo--policy{align-items:flex-start;cursor:pointer;line-height:1.4;background:var(--color-surface);border-color:var(--color-border);color:var(--color-text-muted)}.memo--policy .nova-icon{flex:0 0 auto;margin-top:2px;color:var(--color-text-subtle)}.memo--policy .memo__undo{margin-left:4px;white-space:nowrap}.memo--upsell{align-items:center;line-height:1.4;background:var(--color-surface);border-color:var(--color-border);color:var(--color-text-muted)}.memo--upsell .nova-icon{flex:0 0 auto;color:var(--color-text-subtle)}.memo--upsell .memo__undo{cursor:pointer}.memo--upsell .memo__x{flex:0 0 auto;display:grid;place-items:center;padding:2px;border-radius:var(--radius-full);color:var(--color-text-subtle)}.memo--upsell .memo__x:hover{color:var(--color-text);background:var(--color-track)}.dots{display:inline-flex;gap:var(--space-1);padding:var(--space-3);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-xs)}.dots span{width:6px;height:6px;border-radius:var(--radius-full);background:var(--color-text-subtle);animation:dot-bounce 1.2s var(--ease-in-out) infinite}.dots span:nth-child(2){animation-delay:.15s}.dots span:nth-child(3){animation-delay:.3s}@keyframes dot-bounce{0%,60%,to{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}.inputbar{flex:0 0 auto;padding:var(--space-2) var(--space-3);padding-bottom:max(var(--space-2),env(safe-area-inset-bottom));background:var(--color-bg)}.composer{display:flex;flex-direction:column;gap:var(--space-1)}.composer__field{display:flex;align-items:flex-end;gap:var(--space-1);background:var(--color-surface-2);border:1px solid var(--color-border-strong);border-radius:var(--radius-xl);padding:var(--space-1) var(--space-1) var(--space-1) var(--space-4);transition:border-color var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out)}.composer__field:focus-within{border-color:var(--color-border-strong);box-shadow:0 0 0 3px #7f7f7f1a}.composer__ta.field--area{background:none;border:none;border-radius:0;padding:var(--space-2) 0;max-height:150px}.composer__ta.field--area:focus,.composer__ta.field--area:focus-visible{outline:none;box-shadow:none}.icon-btn.composer__send{width:36px;height:36px;background:var(--color-surface-3);color:var(--color-text-subtle)}.icon-btn.composer__send:hover{background:var(--color-surface-3);color:var(--color-text-muted)}.icon-btn.composer__send--on{background:var(--color-action);color:var(--color-on-action)}.icon-btn.composer__send--on:hover{background:var(--color-action-hover)}.composer__bar{display:flex;align-items:center;gap:0;padding:0 var(--space-1)}.composer__bar .icon-btn{width:36px;height:36px;color:var(--color-text-muted)}.composer__spacer{flex:1}.composer__ctx{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-full);color:var(--color-text-muted);transition:background var(--dur-base) var(--ease-out),color var(--dur-base) var(--ease-out)}.composer__ctx:hover{background:var(--color-surface-2);color:var(--color-text)}.composer__charge-wrap{display:inline-flex;align-items:center}.composer__charge{width:36px;height:36px}.mic-live{animation:mic-pulse 1.1s ease-in-out infinite}@keyframes mic-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.65;transform:scale(1.12)}}.skills-pop{display:flex;flex-direction:column;gap:2px}.skills-pop__empty{font-size:var(--text-sm);color:var(--color-text-muted);padding:2px 8px 8px}.skills-pop__it{display:flex;align-items:center;gap:var(--space-2);width:100%;text-align:left;padding:9px 8px;border-radius:var(--radius-md);color:var(--color-text);font-size:var(--text-md);transition:background var(--dur-fast) var(--ease-out)}.skills-pop__it:hover,.skills-pop__it:active{background:var(--color-surface-2)}.skills-pop__it .nova-icon{color:var(--color-text-muted);flex:0 0 auto}.skills-pop__it span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.skills-pop__sep{height:1px;background:var(--color-border);margin:4px 6px}.skills-pop__all{color:var(--color-text-muted)}.skills-pop__it--cur{background:var(--color-surface-2)}.skills-pop__here{font-size:var(--text-xs);color:var(--color-text-subtle);flex:0 0 auto}.push{display:flex;gap:var(--space-3);align-items:flex-start;margin:var(--space-3);padding:var(--space-3);border-radius:var(--radius-lg);background:var(--color-surface);border:1px solid var(--color-border);box-shadow:var(--shadow-md)}.push__title{font-weight:var(--fw-bold);font-size:var(--text-sm)}.push__body{font-size:var(--text-sm);color:var(--color-text-muted)}.memo--tap{cursor:pointer;flex-wrap:wrap}.memo__chev{opacity:.6}.memo__details{flex-basis:100%;display:flex;flex-direction:column;gap:2px;margin-top:6px;padding-top:6px;border-top:1px solid var(--color-border)}.memo__detail{color:var(--color-text-muted);font-size:13px;text-align:left}.memo__val{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;text-align:left}.memo__val--open{white-space:normal;overflow:visible}.nova-ring{display:block;transform:rotate(-90deg)}.nova-ring .track{fill:none;stroke:var(--color-track)}.nova-ring .prog{fill:none;stroke-linecap:round;transition:stroke-dashoffset .5s var(--ease-out)}.nova-ring-btn{display:grid;place-items:center;border-radius:var(--radius-full);transition:transform var(--dur-fast) var(--ease-out),filter var(--dur-base) var(--ease-out)}.nova-ring-btn:hover{filter:brightness(1.12)}.nova-ring-btn:active{transform:scale(.92)}.nova-aura{position:relative;display:grid;place-items:center}.nova-aura .nova-ring{position:absolute;top:0;right:0;bottom:0;left:0}.energy-panel{width:100%;font-size:var(--text-base);line-height:1.35;color:var(--color-text)}.energy-panel button{font:inherit;color:inherit;background:none;border:0;padding:0}.energy-panel :where(button):focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-sm)}.ep-charge{display:flex;align-items:center;gap:var(--space-3)}.ep-charge-l{flex:1;min-width:0}.ep-charge-name{font-weight:var(--fw-medium)}.ep-charge-meta{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:1px;font-variant-numeric:tabular-nums}.ep-charge-val{flex:none;font-size:var(--text-lg);font-weight:var(--fw-medium);font-variant-numeric:tabular-nums}.ep-ring{position:relative;width:40px;height:40px;flex:none}.ep-orb{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none}.ep-div{height:1px;background:var(--color-border);margin:var(--space-3) 0}.ep-res{display:flex;align-items:center;gap:var(--space-3);min-height:36px}.ep-res-ic{width:40px;flex:none;display:grid;place-items:center;color:var(--color-text-muted)}.ep-res-name{flex:none;min-width:56px}.ep-res-bar{flex:1;min-width:48px;height:6px;border-radius:var(--radius-full);background:var(--color-track);overflow:hidden}.ep-res-bar b{display:block;height:100%;border-radius:var(--radius-full);background:var(--color-action)}.ep-res-val{flex:none;display:flex;align-items:center;gap:6px;font-size:var(--text-sm);color:var(--color-text-muted);white-space:nowrap;font-variant-numeric:tabular-nums}.ep-res--locked .ep-res-name{color:var(--color-text-muted)}.ep-res--locked .ep-res-bar{background:none;border:1px dashed var(--color-border-strong)}.ep-pending{display:flex;align-items:center;gap:var(--space-2);margin:var(--space-2) 0 0;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);font-size:var(--text-sm)}.ep-pending .nova-icon{flex:0 0 auto;color:var(--color-text-subtle)}.ep-foot{display:flex;align-items:center;gap:var(--space-3);min-height:56px;width:100%;text-align:left;cursor:pointer;border-radius:var(--radius-md);padding:var(--space-1) var(--space-2);margin:0 calc(-1 * var(--space-2));transition:background var(--dur-base) var(--ease-out)}.ep-foot--static{cursor:default}.ep-foot-l{flex:1;min-width:0}.ep-foot-plan{font-weight:var(--fw-medium);font-variant-numeric:tabular-nums}.ep-foot-meta{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:1px;font-variant-numeric:tabular-nums}.ep-manage{flex:none;display:flex;align-items:center;gap:var(--space-1);font-weight:var(--fw-medium);white-space:nowrap;color:var(--color-action-text);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);transition:background var(--dur-base) var(--ease-out)}.ep-foot:not(.ep-foot--static):hover .ep-manage,.ep-foot:focus-visible .ep-manage{background:var(--color-action-weak)}.ep-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}.switch{position:relative;width:48px;height:28px;flex:0 0 auto;border-radius:var(--radius-full);background:var(--color-surface-3);border:1px solid var(--color-border);transition:background var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out)}.switch--on{background:var(--color-primary);border-color:transparent}.switch__knob{position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:var(--radius-full);background:#fff;box-shadow:var(--shadow-xs);transition:transform var(--dur-base) var(--ease-out)}.switch--on .switch__knob{transform:translate(20px)}
