:root{--bg: #0b0d12;--panel: #141823;--panel-2: #1b2030;--text: #e7eaf0;--dim: #8b93a7;--accent: #6c8cff;--accent-hover: #5a7aef;--user: #2d3a5c;--assistant: #1e2433;--border: rgba(255, 255, 255, .1);--border-strong: #2a3146;--radius: 14px;--radius-sm: 10px;--radius-pill: 999px;--glass-bg: rgba(12, 14, 22, .55);--glass-border: rgba(255, 255, 255, .14);--transcript-bg: rgba(14, 17, 26, .82);--blur: blur(10px) saturate(180%);--chat-max: 25vh;--chat-clear: calc(var(--chat-max) + 22px + env(safe-area-inset-bottom, 0px))}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:Fira Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}html:has(.app.embed),body:has(.app.embed),#root:has(.app.embed){overflow:hidden;overscroll-behavior:none;-webkit-text-size-adjust:100%;text-size-adjust:100%}.app{display:flex;flex-direction:column;height:100vh;height:100dvh;max-width:720px;margin:0 auto}.app.embed{max-width:none;height:100%;height:100dvh;max-height:100dvh;overflow:hidden;position:relative}.app.embed .topbar{position:absolute;top:0;left:0;right:0;z-index:30;background:transparent;border-bottom:none;backdrop-filter:none;-webkit-backdrop-filter:none;padding:14px 14px 0;padding-left:calc(14px + env(safe-area-inset-left,0px));padding-right:calc(14px + env(safe-area-inset-right,0px));pointer-events:none}.app.embed .topbar .brand,.app.embed .topbar .close-btn{pointer-events:auto}.app.embed .brand{background:var(--glass-bg);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border:1px solid var(--glass-border);border-radius:var(--radius-pill);padding:7px 14px;font-size:13px;font-weight:600;letter-spacing:.01em;line-height:1.2;box-shadow:0 8px 24px #0000002e}.app.embed .close-btn{width:40px;height:40px;border-radius:50%;background:var(--glass-bg);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);border:1px solid var(--glass-border);color:var(--text);box-shadow:0 8px 24px #0000002e}.app.embed .close-btn:hover{background:#0c0e16b8;border-color:#ffffff47;color:var(--text)}.app.embed .camera-btn{top:58px}@media (max-width: 480px){.app.embed .topbar{padding-top:max(12px,env(safe-area-inset-top,0px))}.app.embed .camera-btn{top:calc(46px + max(12px,env(safe-area-inset-top,0px)))}}.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border-strong);background:#0b0d12eb;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);z-index:4;flex-shrink:0}.brand{font-weight:600;letter-spacing:.3px;font-size:15px}.brand-dim{color:var(--dim);font-weight:400}.status{font-size:12px;color:var(--dim);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-right{display:flex;align-items:center;gap:10px}.char-select{background:var(--panel-2);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:6px 10px;font-size:13px;outline:none;cursor:pointer;transition:border-color .15s ease}.char-select:focus-visible{border-color:var(--accent);outline:2px solid rgba(108,140,255,.35);outline-offset:1px}.glb-picker{display:flex;align-items:center;gap:8px;min-width:0}.glb-picker-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.glb-picker-btn{flex-shrink:0;background:var(--panel-2);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:6px 10px;font-size:13px;cursor:pointer;transition:border-color .15s ease,background .15s ease}.glb-picker-btn:hover{border-color:var(--accent)}.glb-picker-btn:focus-visible{outline:2px solid rgba(108,140,255,.35);outline-offset:1px}.glb-picker-label{max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--dim)}.glb-body-select{flex-shrink:0}.glb-dropzone{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:32px;text-align:center;background:radial-gradient(ellipse 70% 50% at 50% 40%,rgba(108,140,255,.08),transparent 70%),var(--bg);border:1px dashed var(--border-strong);margin:16px;border-radius:var(--radius);pointer-events:none}.glb-dropzone-title{margin:0;font-size:1.25rem;font-weight:600;letter-spacing:-.02em}.glb-dropzone-hint{margin:0;max-width:32ch;font-size:.9rem;line-height:1.45;color:var(--dim)}@media (max-width: 720px){.glb-picker-label{display:none}}.close-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;border-radius:var(--radius-sm);background:var(--panel-2);border:1px solid var(--border-strong);color:var(--dim);cursor:pointer;transition:color .15s ease,border-color .15s ease,background .15s ease}.close-btn:hover{color:var(--text);border-color:var(--accent)}.close-btn:focus-visible{outline:2px solid rgba(108,140,255,.35);outline-offset:1px}.validation{position:absolute;top:14px;right:14px;background:var(--glass-bg);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--glass-border);border-radius:var(--radius);font-size:13px;max-width:320px;overflow:hidden;z-index:3}.validation.warn{border-color:#5a3a1d}.validation-head{display:flex;align-items:center;gap:8px;width:100%;background:transparent;border:none;color:var(--text);padding:9px 12px;font-size:13px;cursor:pointer}.validation-head .chev{margin-left:auto;color:var(--dim)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.ok{background:#4caf7d}.dot.bad{background:#e0a23c}.validation-body{padding:0 12px 12px}.pill-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.pill{padding:3px 8px;border-radius:var(--radius-pill);font-size:12px;border:1px solid transparent}.pill.ok{background:#4caf7d26;color:#8fe0b4;border-color:#4caf7d4d}.pill.bad{background:#e0a23c26;color:#f0c486;border-color:#e0a23c4d}.validation-note{font-size:12px;line-height:1.45;color:#f0c486}.validation-note.muted{color:var(--dim)}.stage-wrap{position:relative;flex:1 1 auto;min-height:0;background:radial-gradient(120% 80% at 50% 0%,#1a2030,#0b0d12 70%)}.avatar-stage,.avatar-canvas{width:100%;height:100%}.avatar-stage{position:relative}.avatar-loading{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:#0b0d12b8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:2;pointer-events:none}.avatar-loading-spinner{width:36px;height:36px;border:3px solid rgba(108,140,255,.2);border-top-color:var(--accent);border-radius:50%;animation:avatar-spin .75s linear infinite}.avatar-loading-label{font-size:13px;color:var(--dim);letter-spacing:.02em}@keyframes avatar-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.avatar-loading-spinner{animation:none;border-top-color:#6c8cff80}.send-spinner{animation:none;border-top-color:#fff}.suggestion-chip-skeleton:after{animation:none;opacity:.35;transform:none}}.avatar-canvas canvas{display:block}.avatar-error{position:absolute;inset:auto 16px var(--chat-clear) 16px;background:#3a1d22;color:#ffb4b4;padding:10px 12px;border-radius:var(--radius-sm);font-size:13px;z-index:2}.camera-btn{position:absolute;left:16px;top:16px;z-index:3;display:flex;align-items:center;gap:7px;background:var(--glass-bg);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);color:var(--text);border:1px solid var(--glass-border);padding:7px 12px;border-radius:var(--radius-pill);font-size:12.5px;font-weight:500;letter-spacing:.02em;cursor:pointer;transition:background .15s ease,border-color .15s ease}.camera-btn:hover{background:#0c0e16b8;border-color:#6c8cff73}.camera-btn:focus-visible{outline:2px solid rgba(108,140,255,.45);outline-offset:2px}.camera-btn svg{color:var(--accent)}.chat{position:absolute;left:0;right:0;bottom:0;width:100%;max-width:100%;box-sizing:border-box;padding:0 14px calc(14px + env(safe-area-inset-bottom,0px));z-index:3;pointer-events:none;display:flex;flex-direction:column;gap:8px;overflow-x:hidden;min-width:0}.speech-subtitles{position:absolute;left:14px;right:14px;bottom:calc(118px + env(safe-area-inset-bottom,0px));z-index:2;display:flex;justify-content:center;pointer-events:none}.speech-subtitles-slot{position:relative;width:min(340px,92%);min-height:3.15em}.speech-subtitle{position:absolute;left:0;right:0;bottom:0;margin:0;width:100%;box-sizing:border-box;padding:8px 14px;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:#0c0e16b8;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);color:var(--text);font-size:14px;line-height:1.4;text-align:center;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;box-shadow:0 8px 24px #00000047}.outgoing-fly{position:fixed;left:0;top:0;z-index:50;pointer-events:none;transform-style:preserve-3d;will-change:transform,opacity}.outgoing-fly-text{display:block;transform:translate(-50%,-50%);max-width:min(300px,78vw);padding:10px 16px;border-radius:var(--radius-pill);border:1px solid rgba(108,140,255,.4);background:#2d3a5cf2;color:var(--text);font-size:14px;font-weight:500;line-height:1.35;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 0 0 1px #ffffff0f inset,0 12px 32px #0006,0 0 24px #6c8cff38}.app.embed .speech-subtitles{bottom:calc(128px + env(safe-area-inset-bottom,0px))}.app.embed .speech-subtitle{font-size:13px;padding:7px 12px}.chat-panel{pointer-events:auto;display:flex;flex-direction:column;max-height:var(--chat-max);overflow:hidden;background:var(--transcript-bg);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 10px 30px #00000059}.chat-panel.is-empty{display:none}.transcript{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;padding:12px 14px;display:flex;flex-direction:column;gap:8px;scrollbar-width:thin;scrollbar-color:rgba(139,147,167,.35) transparent;-webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 14px,#000 100%);mask-image:linear-gradient(to bottom,transparent 0%,#000 14px,#000 100%)}.transcript::-webkit-scrollbar{width:5px}.transcript::-webkit-scrollbar-thumb{background:#8b93a759;border-radius:var(--radius-pill)}.hint{color:var(--dim);font-size:13px;text-align:center;padding:4px 8px;line-height:1.45}.bubble{max-width:85%;padding:10px 14px;border-radius:20px;font-size:14px;line-height:1.45;white-space:pre-wrap;word-wrap:break-word;border:1px solid transparent}.bubble.user{align-self:flex-end;background:var(--user);border-color:#6c8cff2e;border-bottom-right-radius:6px}.bubble.assistant{align-self:flex-start;background:var(--assistant);border-color:var(--border);border-bottom-left-radius:6px}.jump-latest{pointer-events:auto;align-self:center;margin:0 auto 6px;background:var(--glass-bg);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);color:var(--text);border:1px solid var(--glass-border);padding:5px 14px;border-radius:var(--radius-pill);font-size:12px;font-weight:500;cursor:pointer;transition:background .15s ease,border-color .15s ease}.jump-latest:hover{background:#0c0e16b8;border-color:#6c8cff73}.jump-latest:focus-visible{outline:2px solid rgba(108,140,255,.45);outline-offset:2px}.composer-stack{pointer-events:auto;flex-shrink:0;display:flex;flex-direction:column;gap:6px;width:100%;max-width:100%;min-width:0}.app.embed .composer-stack{transform:translateY(calc(-1 * var(--keyboard-inset, 0px)))}.suggestion-chips{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch;gap:6px;width:calc(100% + 28px);max-width:calc(100% + 28px);min-width:0;box-sizing:border-box;margin:0 -14px -2px;padding:0 14px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}.suggestion-chips::-webkit-scrollbar{display:none}.suggestion-chip{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:30px;padding:0 11px;border-radius:var(--radius-pill);border:1px solid var(--glass-border);background:#121622e0;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);color:var(--text);font-size:13px;line-height:1.2;white-space:nowrap;cursor:pointer;box-shadow:0 4px 12px #0000002e;transition:border-color .15s ease,background .15s ease}.suggestion-chip-label{display:block}.suggestion-chips.is-loading{pointer-events:none}.suggestion-chip-skeleton{position:relative;overflow:hidden;border-color:#6c8cff24;background:#161c2cb8;cursor:default;box-shadow:none;pointer-events:none}.suggestion-chip-skeleton:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent 0%,rgba(108,140,255,.14) 45%,rgba(108,140,255,.28) 50%,rgba(108,140,255,.14) 55%,transparent 100%);transform:translate(-120%);animation:suggestion-shimmer 1.15s ease-in-out infinite}@keyframes suggestion-shimmer{to{transform:translate(120%)}}.suggestion-chip:hover:not(:disabled){border-color:#6c8cff80;background:#1c2234f0}.suggestion-chip-action{text-decoration:none;border-color:#c9a2278c;background:linear-gradient(180deg,#d4af37f2,#b89427eb);color:#1a1408;font-weight:600;box-shadow:0 4px 14px #b8942747}.suggestion-chip-action:hover:not(:disabled){border-color:#e6be3cbf;background:linear-gradient(180deg,#e6be3cfa,#c9a227f2)}.suggestion-chip-action:focus-visible{outline:2px solid rgba(230,190,60,.65);outline-offset:2px}.suggestion-chip:focus-visible{outline:2px solid rgba(108,140,255,.45);outline-offset:2px}.suggestion-chip:disabled{opacity:.45;cursor:default}.composer{flex-shrink:0;display:flex;width:100%;max-width:100%;min-width:0;padding:0;border-top:none;background:transparent}.composer-field{flex:1 1 auto;width:100%;max-width:100%;min-width:0;display:flex;align-items:center;gap:6px;padding:5px 5px 5px 18px;border-radius:var(--radius-pill);border:1px solid rgba(255,255,255,.12);background:#1c202ec7;box-shadow:inset 0 1px #ffffff0d,0 8px 24px #0000002e;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.composer-field:focus-within{border-color:#6c8cff80;background:#202536e0;box-shadow:inset 0 1px #ffffff0f,0 0 0 3px #6c8cff24,0 8px 24px #0003}.composer-field.is-listening{border-color:#e848558c;background:#2a161cb8}.composer-field.is-listening:focus-within{box-shadow:inset 0 1px #ffffff0a,0 0 0 3px #e8485529,0 8px 24px #0000002e}.composer-field.is-busy{opacity:.92}.composer-field input{flex:1;min-width:0;background:transparent;border:none;color:var(--text);padding:10px 2px;border-radius:0;font-size:16px;line-height:1.35;outline:none;box-shadow:none}.composer-field input::placeholder{color:var(--dim)}.composer-field input:focus-visible{outline:none;box-shadow:none}.composer-field input:read-only{cursor:default}.composer-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.composer-mic{background:transparent;color:var(--dim);border:none;width:38px;height:38px;min-width:38px;min-height:38px;padding:0;border-radius:50%;cursor:pointer;transition:background .15s ease,color .15s ease,opacity .15s ease;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.composer-mic:hover:not(:disabled){background:#ffffff1a;color:var(--text)}.composer-mic:focus-visible{outline:2px solid rgba(108,140,255,.55);outline-offset:1px}.composer-mic:disabled{opacity:.4;cursor:default}.composer-mic.is-listening{background:#e8485533;color:#ffb4ba}.composer-mic.is-speaking{animation:mic-pulse 1.4s ease-in-out infinite}.composer-mic.is-suspended{background:#e848551a;color:#ffb4ba;opacity:.85}.voice-status{flex-shrink:0;padding:8px 16px 0;font-size:12px;color:var(--dim);letter-spacing:.01em}.voice-status-error{color:#ff8e98}@keyframes mic-pulse{0%,to{box-shadow:0 0 #e8485559}50%{box-shadow:0 0 0 6px #e8485500}}.composer-send{background:var(--accent);color:#fff;border:none;width:38px;height:38px;min-width:38px;min-height:38px;padding:0;border-radius:50%;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s ease,opacity .15s ease,transform .12s ease;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center}.send-spinner{width:15px;height:15px;border:2px solid rgba(255,255,255,.28);border-top-color:#fff;border-radius:50%;animation:avatar-spin .7s linear infinite;flex-shrink:0}.composer-send:hover:not(:disabled){background:var(--accent-hover);transform:scale(1.04)}.composer-send:focus-visible{outline:2px solid rgba(255,255,255,.45);outline-offset:2px}.composer-send:disabled{opacity:.38;cursor:default;transform:none}.ms-gui.lil-gui{--background-color: rgba(14, 17, 26, .52);--widget-color: rgba(255, 255, 255, .08);--focus-color: rgba(108, 140, 255, .55);--hover-color: rgba(255, 255, 255, .12);--font-family: "Fira Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-size: 11.5px;--input-font-size: 11px;--font-family-mono: ui-monospace, "SF Mono", Menlo, monospace;--padding: 4px;--spacing: 4px;--widget-height: 22px;--name-width: 55%;--slider-knob-width: 3px;--slider-input-width: 52px;--color-input-width: 52px;--number-color: #c8d0ff;--string-color: #e7eaf0;--title-background-color: rgba(255, 255, 255, .06);--title-text-color: rgba(231, 234, 240, .92);--text-color: rgba(231, 234, 240, .78);--controller-text-color: rgba(231, 234, 240, .88);border:1px solid rgba(255,255,255,.12)!important;border-radius:14px!important;overflow:hidden!important;box-shadow:0 12px 40px #00000059,inset 0 1px #ffffff0f;backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.2) transparent}.ms-gui.lil-gui::-webkit-scrollbar{width:5px}.ms-gui.lil-gui::-webkit-scrollbar-thumb{background:#fff3;border-radius:999px}.ms-gui.lil-gui>.title{font-weight:600;letter-spacing:.02em;border-radius:0;border-bottom:1px solid rgba(255,255,255,.08)}.ms-gui.lil-gui .children{border:none}.ms-gui.lil-gui .controller{margin:1px 0}.ms-gui.lil-gui .controller.number input,.ms-gui.lil-gui .controller.string input{border-radius:6px;background:#00000038}.ms-gui.lil-gui .controller .widget .slider{border-radius:999px;background:#ffffff14}.ms-gui.lil-gui .controller .widget .slider .fill{background:#6c8cff8c;border-radius:999px}.ms-gui.lil-gui .controller button{border-radius:8px;background:#6c8cff38;border:1px solid rgba(108,140,255,.28);color:#e7eaf0;font-weight:500;letter-spacing:.01em}.ms-gui.lil-gui .controller button:hover{background:#6c8cff59}.ms-gui.lil-gui .folder>.title{border-radius:8px;margin:2px 4px;background:#ffffff0a}.ms-gui.lil-gui .folder>.title:hover{background:#ffffff14}.ms-gui.lil-gui .ms-gui-name{display:flex;align-items:center;gap:4px;min-width:0}.ms-gui.lil-gui .ms-gui-info{flex:0 0 auto;width:14px;height:14px;margin:0;padding:0;border-radius:50%;border:1px solid rgba(255,255,255,.28);background:#ffffff14;color:#e7eaf0bf;font-size:9px;font-weight:700;font-style:italic;font-family:Georgia,Times New Roman,serif;line-height:1;cursor:help;display:inline-flex;align-items:center;justify-content:center;transition:background .12s ease,border-color .12s ease,color .12s ease}.ms-gui.lil-gui .ms-gui-info:hover,.ms-gui.lil-gui .ms-gui-info:focus-visible{background:#6c8cff59;border-color:#6c8cffa6;color:#fff;outline:none}.ms-gui.lil-gui .controller.function.ms-gui-has-info>button{padding-right:22px}.ms-gui.lil-gui .controller.function>.ms-gui-info{position:absolute;right:6px;top:50%;transform:translateY(-50%);z-index:2}.ms-gui-tooltip{position:fixed;z-index:2147483647;max-width:240px;padding:8px 10px;border-radius:10px;border:1px solid rgba(255,255,255,.14);background:#0e111ad1;color:#e7eaf0eb;font-family:Fira Sans,system-ui,-apple-system,Segoe UI,sans-serif;font-size:12px;line-height:1.4;letter-spacing:.01em;box-shadow:0 10px 28px #0006;backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);pointer-events:none;opacity:0;transform:translateY(2px);transition:opacity .12s ease,transform .12s ease}.ms-gui-tooltip[data-show="1"]{opacity:1;transform:translateY(0)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.ms-gui.lil-gui{-webkit-backdrop-filter:none;backdrop-filter:none;background:#141823f0!important;--background-color: rgba(20, 24, 35, .94)}}@media (prefers-reduced-transparency: reduce){.ms-gui.lil-gui{backdrop-filter:none;-webkit-backdrop-filter:none;background:#141823f5!important;--background-color: rgba(20, 24, 35, .96)}}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.topbar,.app.embed .brand,.app.embed .close-btn,.validation,.camera-btn,.jump-latest,.ms-gui.lil-gui{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--panel)}.app.embed .topbar{background:transparent}}@media (prefers-reduced-transparency: reduce){.topbar,.app.embed .brand,.app.embed .close-btn,.validation,.camera-btn,.jump-latest,.chat-panel,.ms-gui.lil-gui{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--panel)}.app.embed .topbar{background:transparent}}
