:root{--accent:#6d8dff;--accent-soft:#6d8dff26;--accent-hover-bg:#6d8dff1f;--accent-border:#6d8dff73;--bg-from:#1b2233;--bg-to:#0d1018;--bg-end:#05070b;--vignette:#0009;--panel-bg:#0d1018d9;--panel-bg-strong:#0d1018eb;--panel-border:#ffffff14;--panel-border-strong:#ffffff1a;--text:#e9ecf3;--text-muted:#ffffff8c;--text-faint:#ffffff59;--subtitle-muted:#9aa3b5;--user-msg-bg:#6d8dff38;--user-msg-border:#6d8dff52;--user-msg-text:#dbe4ff;--avatar-msg-bg:#ffffff0f;--avatar-msg-border:#ffffff14;--mic-idle:#4f6ef7;--mic-idle-hover:#3f5de8;--mic-idle-text:#fff;--mic-listening:#ef4444;--mic-processing:#f59e0b;--mic-speaking:#3b82f6;--mic-speaking-hover:#2a6fe3;--font-display:"Inter", system-ui, "Segoe UI", sans-serif;--font-body:"Inter", system-ui, "Segoe UI", sans-serif;--font-mono:"Consolas", "Courier New", monospace;--mic-radius:32px}.picker-title,.chat-title,.bottom-bar-title,.model-card-name,.character-card-name,.msg.reagan .msg-sender{letter-spacing:.2px;font-weight:600}body[data-theme=bestbuy]{--accent:#fff200;--accent-soft:#fff2002e;--accent-hover-bg:#fff20026;--accent-border:#fff20080;--bg-from:#0046be;--bg-to:#00204a;--bg-end:#00132e;--vignette:#000a1e8c;--panel-bg:#00132ee0;--panel-bg-strong:#00132ef0;--panel-border:#fff2002e;--panel-border-strong:#fff20047;--text:#fff;--text-muted:#ffffffb3;--text-faint:#ffffff73;--subtitle-muted:#ffffffa6;--user-msg-bg:#fff2002e;--user-msg-border:#fff20066;--user-msg-text:#fff8b0;--avatar-msg-bg:#ffffff14;--avatar-msg-border:#ffffff1f;--mic-idle:#fff200;--mic-idle-hover:#ffe000;--mic-idle-text:#00132e;--mic-listening:#ff4d4d;--mic-processing:#ffb84d;--mic-speaking:#4da3ff;--mic-speaking-hover:#2b8cff;--font-display:"Inter", system-ui, "Segoe UI", sans-serif;--font-body:"Inter", system-ui, "Segoe UI", sans-serif;--mic-radius:28px}*{box-sizing:border-box;margin:0;padding:0}html,body{background:radial-gradient(ellipse at center bottom, var(--bg-from) 0%, var(--bg-to) 70%, var(--bg-end) 100%);width:100%;height:100%;overflow:hidden}#avatar-canvas{z-index:1;width:100%;height:100%;display:block;position:relative}body:after{content:"";background:radial-gradient(ellipse at center, transparent 40%, var(--vignette) 100%);pointer-events:none;z-index:2;position:fixed;inset:0}#loading-overlay{background:radial-gradient(ellipse at center bottom, var(--bg-from) 0%, var(--bg-to) 70%, var(--bg-end) 100%);z-index:100;flex-direction:column;justify-content:center;align-items:center;transition:opacity .5s;display:flex;position:fixed;inset:0}#loading-overlay.hidden{opacity:0;pointer-events:none}#loading-overlay.error-state{z-index:5;pointer-events:none}#loading-overlay.error-state #loading-spinner{pointer-events:auto}#loading-text{color:var(--text);font-family:var(--font-body);margin-top:20px;font-size:16px}.spinner{border:3px solid #ffffff26;border-top-color:var(--accent);border-radius:50%;width:40px;height:40px;margin:0 auto;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}#model-picker{flex-direction:column;align-items:center;gap:24px;display:flex}#model-picker.hidden{display:none}.picker-title{font-family:var(--font-display);color:var(--accent);letter-spacing:.5px;font-size:22px;font-weight:400}#model-grid{flex-wrap:wrap;justify-content:center;gap:14px;max-width:600px;display:flex}.model-card{cursor:pointer;text-align:center;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:12px;min-width:140px;padding:20px 28px;transition:background .15s,border-color .15s,transform .1s}.model-card:hover{background:var(--accent-hover-bg);border-color:var(--accent-border);transform:translateY(-2px)}.model-card-name{font-family:var(--font-display);color:var(--text);margin-bottom:4px;font-size:16px}.model-card-size{font-family:var(--font-body);color:var(--text-faint);font-size:12px}#loading-spinner.hidden{display:none}#api-key-form{flex-direction:column;align-items:center;gap:18px;max-width:400px;display:flex}#api-key-form.hidden{display:none}.api-key-description{font-family:var(--font-body);color:var(--text-muted);text-align:center;margin:0;font-size:14px}.api-key-input-row{gap:10px;width:100%;display:flex}#api-key-input{color:var(--text);font-family:var(--font-body);background:#ffffff0f;border:1px solid #ffffff1f;border-radius:8px;outline:none;flex:1;padding:10px 14px;font-size:14px;transition:border-color .15s}#api-key-input:focus{border-color:var(--accent-border)}#api-key-input::placeholder{color:var(--text-faint)}#api-key-submit{background:var(--accent);color:#000;font-family:var(--font-body);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:10px 22px;font-size:14px;font-weight:500;transition:opacity .15s}#api-key-submit:hover{opacity:.85}#api-key-submit:disabled{opacity:.5;cursor:default}.api-key-error{color:#e54d4d;font-family:var(--font-body);text-align:center;margin:0;font-size:13px}.api-key-error.hidden{display:none}#api-url-input{color:var(--text);font-family:var(--font-body);background:#ffffff0f;border:1px solid #ffffff1f;border-radius:8px;outline:none;flex:1;padding:10px 14px;font-size:14px;transition:border-color .15s}#api-url-input:focus{border-color:var(--accent-border)}#api-url-input::placeholder{color:var(--text-faint)}#api-url-row.hidden{display:none}.api-key-fallback{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:8px;display:flex}.api-key-fallback .btn-secondary.hidden{display:none}.btn-secondary{color:var(--text-muted);font-family:var(--font-body);cursor:pointer;background:0 0;border:1px solid #fff3;border-radius:8px;padding:8px 16px;font-size:13px;transition:border-color .15s,color .15s,background .15s}.btn-secondary:hover{color:var(--text);background:#ffffff0a;border-color:#fff6}.btn-settings{color:#ffffffd9;min-width:0;font-family:var(--font-body);cursor:pointer;background:#ffffff14;border:1px solid #ffffff26;border-radius:5px;outline:none;flex:1;padding:4px 8px;font-size:12px;transition:border-color .15s,background .15s}.btn-settings:hover{background:#ffffff1f;border-color:#ffffff4d}#character-picker{flex-direction:column;align-items:center;gap:24px;display:flex}.picker-header{align-items:center;gap:14px;display:flex}.picker-refresh{color:var(--accent);font-family:var(--font-body,inherit);cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;transition:background .15s,border-color .15s;display:inline-flex}.picker-refresh:hover:not(:disabled){background:var(--accent-hover-bg);border-color:var(--accent-border)}.picker-refresh:disabled{cursor:default;opacity:.6}.picker-refresh svg{transition:transform .15s}.picker-refresh.refreshing svg{animation:.8s linear infinite picker-refresh-spin}@keyframes picker-refresh-spin{to{transform:rotate(360deg)}}#character-picker.hidden{display:none}#character-grid{flex-wrap:wrap;justify-content:center;gap:14px;max-width:700px;display:flex}.character-card{cursor:pointer;text-align:center;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:12px;min-width:150px;padding:20px 28px;transition:background .15s,border-color .15s,transform .1s;position:relative}.character-card:hover{background:var(--accent-hover-bg);border-color:var(--accent-border);transform:translateY(-2px)}.character-card.downloading{pointer-events:none;border-color:var(--accent-border)}.character-card-name{font-family:var(--font-display);color:var(--text);margin-bottom:4px;font-size:16px}.character-card-meta{font-family:var(--font-body);color:var(--text-faint);font-size:12px}.character-card-badge{border-radius:4px;margin-top:6px;padding:2px 6px;font-size:10px;display:inline-block}.character-card-badge.cloud{background:var(--accent-soft);color:var(--accent);border:1px solid var(--accent-border)}.character-card-badge.local{color:#4cc982;background:#4cc98226;border:1px solid #4cc9824d}.character-card-progress{background:#ffffff14;border-radius:2px;height:3px;margin-top:8px;overflow:hidden}.character-card-progress-fill{background:var(--accent);border-radius:2px;width:0%;height:100%;transition:width .2s}#download-progress{text-align:center;width:280px;margin-top:16px}#download-progress.hidden{display:none}.progress-track{background:#ffffff1a;border-radius:2px;height:4px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:2px;width:0%;height:100%;transition:width .2s}#progress-detail{font-family:var(--font-body);color:var(--text-faint);margin-top:8px;font-size:12px}#chat-panel{background:var(--panel-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-left:1px solid var(--panel-border);z-index:15;flex-direction:column;width:360px;height:calc(100% - 56px);display:flex;position:fixed;top:0;right:0}#chat-header{border-bottom:1px solid var(--panel-border);flex-shrink:0;padding:16px 20px}.chat-title{font-family:var(--font-display);color:var(--accent);letter-spacing:.5px;font-size:16px}#chat-messages{flex-direction:column;flex:1;gap:12px;padding:16px;display:flex;overflow-y:auto}#chat-messages::-webkit-scrollbar{width:4px}#chat-messages::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:2px}.msg{max-width:85%;font-family:var(--font-body);word-wrap:break-word;border-radius:12px;padding:10px 14px;font-size:14px;line-height:1.5}.msg.user{background:var(--user-msg-bg);border:1px solid var(--user-msg-border);color:var(--user-msg-text);border-bottom-right-radius:4px;align-self:flex-end}.msg.reagan{background:var(--avatar-msg-bg);border:1px solid var(--avatar-msg-border);color:var(--text);border-bottom-left-radius:4px;align-self:flex-start}.msg .msg-footer{justify-content:space-between;align-items:center;margin-top:4px;display:flex}.msg .msg-time{color:#ffffff4d;font-size:10px}.msg .msg-replay{color:#fff3;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 6px;font-size:11px;line-height:1;transition:color .15s,background .15s}.msg .msg-replay:hover{color:var(--accent);background:#ffffff14}.msg.reagan .msg-sender{font-family:var(--font-display);color:var(--accent);margin-bottom:4px;font-size:11px;display:block}#chat-typing{flex-shrink:0;padding:8px 20px 12px}#chat-typing.hidden{display:none}.typing-indicator{background:#ffffff0f;border-radius:12px;align-items:center;gap:4px;width:fit-content;padding:8px 14px;display:flex}.typing-indicator span{background:#fff6;border-radius:50%;width:6px;height:6px;animation:1.4s ease-in-out infinite typingDot}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes typingDot{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}#chat-input-form{border-top:1px solid var(--panel-border);flex-shrink:0;gap:8px;padding:12px 16px 14px;display:flex}#chat-input{border:1px solid var(--panel-border-strong);min-width:0;color:var(--text);font-family:var(--font-body);background:#ffffff0f;border-radius:10px;outline:none;flex:1;padding:9px 12px;font-size:13px;transition:border-color .15s,background .15s}#chat-input::placeholder{color:var(--text-faint)}#chat-input:focus{border-color:var(--accent-border);background:#ffffff17}#chat-input:disabled{opacity:.5;cursor:not-allowed}#chat-send-btn{border:1px solid var(--accent-border);background:var(--accent-soft);width:36px;height:36px;color:var(--accent);cursor:pointer;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;transition:background .15s,color .15s,opacity .15s;display:flex}#chat-send-btn:hover:not(:disabled){background:var(--accent);color:var(--mic-idle-text,#0d1117)}#chat-send-btn:disabled{opacity:.4;cursor:not-allowed}.chat-empty{color:#ffffff40;font-family:var(--font-body);text-align:center;padding:40px 20px;font-size:13px;line-height:1.6}#subtitle-overlay{pointer-events:none;z-index:20;opacity:0;flex-direction:column;align-items:center;padding:12px 20px;transition:opacity .3s;display:flex;position:fixed;bottom:56px;left:0;right:0}#subtitle-overlay.visible{opacity:1}body.captions-off #subtitle-overlay:not(.error){display:none}#subtitle-overlay.error #subtitle-response{color:#ff6b6b}#subtitle-transcription{color:var(--subtitle-muted);font-family:var(--font-body);text-align:center;max-width:600px;margin-bottom:4px;font-size:15px;font-style:italic}#subtitle-response{color:var(--text);font-family:var(--font-body);text-align:center;text-shadow:0 1px 4px #000c;max-width:600px;font-size:18px;line-height:1.4}#timings-text{color:#666;font-family:var(--font-mono);margin-top:6px;font-size:11px;display:none}#bottom-bar{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#ccc;height:56px;font-family:var(--font-body);z-index:10;background:#0009;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 20px;font-size:14px;display:grid;position:fixed;bottom:0;left:0;right:0}body[data-theme=bestbuy] #bottom-bar{border-top:1px solid var(--panel-border);background:#000a1cb3}.bottom-bar-title{font-family:var(--font-display);color:var(--accent);letter-spacing:.5px;flex-shrink:0;font-size:16px}body[data-theme=bestbuy] .bottom-bar-title{letter-spacing:.2px;text-transform:none;align-items:center;gap:10px;font-weight:600;display:inline-flex}body[data-theme=bestbuy] .bottom-bar-title:before{content:"";background:var(--accent);clip-path:polygon(0 0,85% 0,100% 50%,85% 100%,0 100%);width:26px;height:20px;display:inline-block;box-shadow:inset 0 0 0 1px #00000040}.bottom-bar-center{justify-self:center;align-items:center;gap:10px;display:flex}#status-text{color:#888;font-size:12px}#mic-btn{border-radius:var(--mic-radius);color:#fff;cursor:pointer;border:none;outline:none;padding:10px 28px;font-family:inherit;font-size:15px;transition:background .15s,box-shadow .15s,opacity .15s,color .15s}#mic-btn.mic-idle{background:var(--mic-idle);color:var(--mic-idle-text)}#mic-btn.mic-idle:hover{background:var(--mic-idle-hover)}body[data-theme=bestbuy] #mic-btn.mic-idle{font-weight:600;box-shadow:0 2px 12px #fff20040}body[data-theme=bestbuy] #mic-btn.mic-idle:hover{box-shadow:0 2px 18px #fff20073}#mic-btn.mic-listening{background:var(--mic-listening);color:#fff;animation:1.5s ease-in-out infinite pulse}#mic-btn.mic-processing{background:var(--mic-processing);color:#fff;opacity:.7;cursor:not-allowed}#mic-btn.mic-speaking{background:var(--mic-speaking);color:#fff}#mic-btn.mic-speaking:hover{background:var(--mic-speaking-hover)}@keyframes pulse{0%,to{box-shadow:0 0 #cd5c5c80}50%{box-shadow:0 0 0 10px #cd5c5c00}}.cc-btn{color:#fff;letter-spacing:.5px;cursor:pointer;background:#ffffff1f;border:1px solid #ffffff59;border-radius:6px;padding:6px 10px;font-family:inherit;font-size:12px;font-weight:600;transition:background .15s,opacity .15s,border-color .15s}.cc-btn:hover{background:#ffffff38}.cc-btn.off{opacity:.45;background:0 0;border-color:#ffffff2e;text-decoration:line-through}#settings-widget{z-index:20;position:fixed;bottom:68px;left:12px}#settings-btn{color:#ffffff80;cursor:pointer;background:#ffffff1a;border:none;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;transition:background .15s,color .15s;display:flex}#settings-btn:hover,#settings-btn.active{color:#ffffffd9;background:#fff3}#settings-panel{background:var(--panel-bg-strong);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--panel-border-strong);border-radius:10px;flex-direction:column;gap:10px;min-width:260px;padding:14px 16px;transition:opacity .15s,transform .15s;display:flex;position:absolute;bottom:44px;left:0}#settings-panel.hidden{opacity:0;pointer-events:none;transform:translateY(6px)}.settings-row{font-family:var(--font-body);color:var(--text-muted);align-items:center;gap:12px;margin:0;font-size:12px;display:flex}.settings-row>span:first-child{white-space:nowrap;flex:0 0 90px}.settings-row input[type=range]{accent-color:var(--accent);cursor:pointer;flex:1;min-width:0;height:4px}.settings-row select{color:#ffffffd9;min-width:0;font-family:var(--font-body);cursor:pointer;background:#ffffff14;border:1px solid #ffffff26;border-radius:5px;outline:none;flex:1;padding:4px 8px;font-size:12px}.settings-row select:hover{border-color:#ffffff4d}.settings-row select option{color:#ffffffd9;background:#1a1e27}body[data-theme=bestbuy] .settings-row select option{background:#00132e}.settings-row-hint{font-family:var(--font-body);color:var(--text-faint);margin-top:-4px;padding-left:102px;font-size:11px}.settings-row-hint>span{flex:none}#render-scale-value{text-align:right;font-family:var(--font-mono);color:var(--accent);flex:0 0 32px;font-size:12px}.settings-row .inline-checkbox{cursor:pointer;color:var(--text-faint);-webkit-user-select:none;user-select:none;flex:none;align-items:center;gap:4px;font-size:11px;display:flex}.settings-row .inline-checkbox input[type=checkbox]{cursor:pointer;accent-color:var(--accent);width:13px;height:13px;margin:0}.settings-row .inline-checkbox.hidden{display:none}.settings-row-toggle{cursor:pointer}.settings-row-toggle input[type=checkbox]{appearance:none;cursor:pointer;background:#ffffff1f;border:1px solid #ffffff2e;border-radius:10px;flex:none;width:32px;height:18px;margin:0 0 0 auto;transition:background .15s,border-color .15s;position:relative}.settings-row-toggle input[type=checkbox]:before{content:"";background:#ffffffd9;border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:1px;left:1px}.settings-row-toggle input[type=checkbox]:checked{background:var(--accent);border-color:var(--accent)}.settings-row-toggle input[type=checkbox]:checked:before{transform:translate(14px)}#emotions-widget{z-index:20;position:fixed;bottom:110px;left:12px}#emotions-btn,#face-btn{color:#ffffffb3;cursor:pointer;background:#ffffff1a;border:none;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:18px;line-height:1;transition:background .15s,color .15s;display:flex}#emotions-btn:hover,#emotions-btn.active,#face-btn:hover,#face-btn.active{color:#fffffff2;background:#fff3}#emotions-panel,#face-panel{background:var(--panel-bg-strong);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--panel-border-strong);border-radius:10px;flex-direction:column;gap:10px;min-width:280px;padding:14px 16px;transition:opacity .15s,transform .15s;display:flex;position:absolute;bottom:44px;left:0}#emotions-panel.hidden,#face-panel.hidden{opacity:0;pointer-events:none;transform:translateY(6px)}.emotions-header{font-family:var(--font-body);color:#ffffffd9;justify-content:space-between;align-items:center;gap:12px;margin-bottom:2px;font-size:13px;font-weight:500;display:flex}.emotions-header .header-actions{gap:6px;display:inline-flex}#emotions-list{flex-direction:column;gap:8px;display:flex}.emotion-row{font-family:var(--font-body);color:var(--text-muted);align-items:center;gap:10px;font-size:12px;display:flex}.emotion-row>.emotion-label{text-transform:capitalize;white-space:nowrap;flex:0 0 84px}.emotion-row>input[type=range]{accent-color:var(--accent);cursor:pointer;flex:1;min-width:0;height:4px}.emotion-row>.emotion-value{text-align:right;font-family:var(--font-mono);color:var(--accent);flex:0 0 30px;font-size:11px}.emotions-divider{background:#ffffff14;height:1px;margin:4px 0 2px}#face-widget{z-index:20;position:fixed;bottom:158px;left:12px}#face-panel{min-width:320px}.face-hint{font-family:var(--font-body);color:var(--text-faint);margin:-6px 0 0;font-size:11px}#face-extras-list{flex-direction:column;gap:8px;display:flex}.face-morph-count{font-family:var(--font-mono);color:var(--text-faint);font-size:11px;font-weight:400}#face-morph-filter{box-sizing:border-box;border:1px solid var(--panel-border);width:100%;font-family:var(--font-body);color:var(--text);background:#ffffff0f;border-radius:6px;outline:none;padding:6px 10px;font-size:12px}#face-morph-filter:focus{border-color:var(--accent-border)}#face-morph-filter::placeholder{color:var(--text-faint)}#face-morphs-list{scrollbar-width:thin;flex-direction:column;gap:6px;max-height:38vh;padding-right:4px;display:flex;overflow-y:auto}.morph-row>.emotion-label{font-family:var(--font-mono);text-transform:none;text-overflow:ellipsis;flex:0 0 150px;font-size:10.5px;overflow:hidden}.morph-row.hidden{display:none}#tweaks-list{flex-direction:column;gap:8px;display:flex}@media (width<=768px){#chat-panel{width:280px}}@media (width<=600px){#chat-panel{display:none}}body:not(.is-admin) [data-admin-only]{display:none!important}
