:root{--bg-1: #0d1b2a;--bg-2: #1b263b;--panel: rgba(255, 255, 255, .12);--text: #f1f5f9;--accent: #f4a261;--accent-2: #2a9d8f}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;color:var(--text);background:radial-gradient(circle at 20% 20%,var(--bg-2),var(--bg-1));min-height:100vh;overflow:hidden}#app{display:flex;flex-direction:column;padding:0;height:100vh}.loading-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;display:flex;align-items:flex-end;justify-content:center;padding:24px;background:#040404;overflow:hidden;opacity:1;visibility:visible;transition:opacity .22s ease,visibility .22s ease}.loading-screen:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:url(/art/splash.jpg) center center / cover no-repeat;filter:brightness(.28) saturate(.7);z-index:0}.loading-screen:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:url(/art/splash2.jpg) center center / contain no-repeat;filter:brightness(1.12) contrast(1.06);z-index:0}.loading-screen.is-hidden{opacity:0;visibility:hidden;pointer-events:none}.loading-screen-panel{position:relative;z-index:1;width:min(560px,92vw);padding:16px 18px;border-radius:12px;border:1px solid rgba(255,255,255,.26);background:#050c1abd;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 12px 40px #00000073}.loading-screen-title{margin:0;font-size:clamp(1.25rem,2.1vw,1.8rem);letter-spacing:.04em;color:#f7fbff}.loading-screen-stage{margin:8px 0 12px;font-size:.95rem;color:#f1f5f9eb}.loading-progress-track{width:100%;height:10px;border-radius:999px;overflow:hidden;border:1px solid rgba(255,255,255,.24);background:#06142cb8}.loading-progress-fill{width:0%;height:100%;border-radius:999px;background:linear-gradient(90deg,#f4a261,#2a9d8f);box-shadow:0 0 16px #f4a26173;transition:width .15s ease}.loading-screen-percent{margin:8px 0 0;text-align:right;font-weight:700;font-size:.95rem;color:#f7fbff}.scene-wrap{position:relative;display:flex;flex:1;overflow:hidden}#scene{display:block;flex:1;min-height:0;width:100%;border-radius:16px;outline:1px solid rgba(255,255,255,.2);background:linear-gradient(180deg,#0b132b,#1c2541)}.scene-title{position:absolute;top:14px;left:18px;margin:0;font-size:1.6rem;font-weight:700;color:#f8fbff;text-shadow:0 1px 8px rgba(0,0,0,.7);pointer-events:none;-webkit-user-select:none;user-select:none;letter-spacing:.03em}.typing-overlay{position:absolute;top:60px;right:14px;display:grid;gap:8px;width:min(380px,44vw);z-index:4;pointer-events:none}.type-panel{pointer-events:auto}.scene-settings-btn{position:absolute;top:12px;right:14px;z-index:6;background:#040a16b8;border:1px solid rgba(255,255,255,.2);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.scene-type-btn{position:absolute;top:12px;right:74px;z-index:6;background:#040a16b8;border:1px solid rgba(255,255,255,.2);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.light-debug-settings-section{margin-top:24px}.light-debug-settings-help{margin-bottom:12px}.light-debug-settings-btn{width:100%;margin-bottom:12px}.settings-panel-action-btn{width:100%}.light-debug-panel{width:100%;max-height:420px;overflow:auto;padding:12px;border-radius:12px;border:1px solid rgba(255,255,255,.16);background:#040a166b}.light-debug-panel.is-collapsed{display:none}.light-debug-header{margin-bottom:10px}.light-debug-title{margin:0;font-size:1rem;color:#f8fbff}.light-debug-subtitle{margin:4px 0 0;font-size:.78rem;color:#f1f5f9b3}.light-debug-content{display:grid;gap:12px}.light-debug-section{display:grid;gap:8px}.light-debug-section h3{margin:0;font-size:.85rem;color:#e9c46a;letter-spacing:.04em;text-transform:uppercase}.light-debug-control{display:grid;grid-template-columns:1fr auto;gap:4px 8px;align-items:center}.light-debug-control-label,.light-debug-control-value,.light-debug-toggle{font-size:.78rem}.light-debug-control-value{color:#f1f5f9c2}.light-debug-range{grid-column:1 / -1;width:100%}.light-debug-toggle{display:flex;gap:8px;align-items:center}.light-debug-actions{display:flex;gap:8px}.light-debug-action-btn{flex:1}.voice-record-btn{position:fixed;bottom:110px;left:50%;transform:translate(-50%);z-index:100;width:64px;height:64px;border-radius:50%;background:#1e293be6;border:3px solid rgba(255,255,255,.3);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;font-size:28px;box-shadow:0 4px 12px #0006}.voice-record-btn:hover{transform:translate(-50%) scale(1.1);border-color:#ffffff80;box-shadow:0 6px 20px #00000080}.voice-record-btn.recording{background:#dc2626f2;border-color:#fff9;animation:pulse-recording 2s ease-in-out infinite}.voice-record-btn.initializing{background:#2563ebf2;border-color:#ffffff8c;color:transparent;cursor:progress;pointer-events:none}.voice-record-btn.initializing:after{content:"";position:absolute;width:30px;height:30px;border-radius:50%;border:3px solid rgba(255,255,255,.35);border-top-color:#fffffff2;animation:record-btn-spinner .8s linear infinite}@keyframes pulse-recording{0%,to{box-shadow:0 4px 12px #dc262666,0 0 #dc2626b3}50%{box-shadow:0 4px 20px #dc262699,0 0 0 12px #dc262600}}@keyframes record-btn-spinner{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.subtitle{position:absolute;left:50%;bottom:max(190px,calc(env(safe-area-inset-bottom,0px) + 190px));transform:translate(-50%);width:min(90%,760px);padding:10px 14px;border-radius:10px;background:#2d384eb8;border:1px solid rgba(255,255,255,.2);color:#f8fbff;font-size:.95rem;line-height:1.35;text-align:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;transition:opacity .18s ease;pointer-events:none}.scene-status{position:absolute;left:14px;top:52px;margin:0;font-size:.75rem;color:#f1f5f9b3;text-shadow:0 1px 4px rgba(0,0,0,.5);pointer-events:none;-webkit-user-select:none;user-select:none;z-index:5}.subtitle.visible{opacity:1}h1{margin:0}#transcript{display:none;position:fixed;bottom:0;left:0;right:0;width:100%;padding:12px 14px;padding-bottom:max(12px,env(safe-area-inset-bottom,0px));background:#040a16f2;border:none;border-top:1px solid rgba(255,255,255,.2);color:var(--text);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:.9rem;resize:none;z-index:50;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;transform:translateY(10px);transition:opacity .35s ease,transform .35s ease}#transcript[hidden]{display:none!important}#transcript.is-visible{display:block;opacity:1;transform:translateY(0);visibility:visible}#transcript.is-fading{display:block;opacity:0;transform:translateY(10px)}.type-panel{display:grid;gap:8px;padding:10px;background:#040a16b8;border:1px solid rgba(255,255,255,.2);border-radius:10px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.type-panel-collapsed{display:none}button{border:none;border-radius:8px;padding:10px 14px;cursor:pointer;color:#08111f;font-weight:600}#send-btn{background:var(--accent)}#toggle-type-btn{background:#e9c46a}@media (max-width: 900px){#app{display:flex;flex-direction:column;padding:0;gap:0;height:100vh}.scene-wrap{flex:1;overflow:hidden;position:relative}#scene{height:100%}.subtitle{bottom:max(200px,calc(env(safe-area-inset-bottom,0px) + 200px));font-size:.85rem}.scene-status{left:20px;top:44px;font-size:.7rem}.typing-overlay{top:56px;right:10px;width:min(92vw,430px)}.scene-settings-btn{top:8px;right:10px}.scene-type-btn{top:8px;right:68px}.light-debug-panel{max-height:340px}.loading-screen{align-items:flex-end;padding:14px}.loading-screen-panel{width:100%;padding:14px;border-radius:10px}.loading-screen-stage{font-size:.88rem}.voice-record-btn{bottom:120px}}.settings-btn{background:none;border:none;color:var(--text);font-size:20px;cursor:pointer;padding:4px 8px;border-radius:6px;transition:all .2s ease}.settings-btn:hover{background:#ffffff1a;transform:scale(1.1)}.settings-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;z-index:999}.settings-overlay.active{display:block}.settings-modal{display:none;position:fixed;top:12px;right:12px;left:auto;transform:none;background:var(--bg-2);border:1px solid rgba(255,255,255,.2);border-radius:12px;box-shadow:0 8px 32px #0000004d;z-index:1000;width:min(40vw,520px);min-width:360px;max-height:calc(100vh - 24px);overflow-y:auto}.settings-modal.active{display:block}#settings-overlay,#morph-overlay{background:transparent}#settings-modal{box-shadow:none}.settings-modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid rgba(255,255,255,.1)}.settings-modal-header h2{margin:0;font-size:24px}.close-btn{background:none;border:none;color:var(--text);font-size:28px;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s ease}.close-btn:hover{background:#ffffff1a}.settings-modal-body{padding:20px;max-height:calc(100vh - 210px);overflow-y:auto}.settings-section{margin-bottom:20px}.settings-section-danger{margin-top:24px;padding-top:16px;border-top:1px dashed rgba(255,140,140,.45)}.settings-section h3{margin:0 0 12px;font-size:16px;color:var(--accent)}.settings-field{margin-bottom:16px}.settings-field label{display:block;margin-bottom:6px;font-weight:500;font-size:14px}.settings-field input[type=text],.settings-field select{width:100%;padding:8px 12px;background:#ffffff14;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:var(--text);font-size:14px}.settings-field input[type=text]:focus{outline:none;border-color:var(--accent);background:#ffffff1f}.settings-field select:focus{outline:none;border-color:var(--accent);background:#ffffff1f}.settings-help{margin:4px 0 0;font-size:12px;color:#fff9}.settings-modal-footer{display:flex;gap:8px;padding:20px;border-top:1px solid rgba(255,255,255,.1);justify-content:flex-end}.btn-primary{background:var(--accent);color:#08111f;font-weight:600;padding:10px 20px;border:none;border-radius:6px;cursor:pointer;transition:all .2s ease}.btn-primary:hover{background:#e89a3c;transform:scale(1.05)}.btn-secondary{background:#ffffff1a;color:var(--text);font-weight:600;padding:10px 20px;border:1px solid rgba(255,255,255,.2);border-radius:6px;cursor:pointer;transition:all .2s ease}.btn-secondary:hover{background:#ffffff26}.btn-danger{background:#dc2626db;color:#fff;font-weight:600;padding:10px 20px;border:1px solid rgba(255,170,170,.4);border-radius:6px;cursor:pointer;transition:all .2s ease}.btn-danger:hover{background:#b91c1cf2}.btn-danger:disabled{opacity:.65;cursor:not-allowed}.morph-modal{top:12px;right:12px;left:auto;transform:none;width:min(44vw,680px);min-width:360px;max-height:calc(100vh - 24px)}.morph-modal-body{max-height:calc(100vh - 210px);overflow-y:auto}.morph-target-list{display:grid;gap:8px;margin-top:10px}.animation-test-section{margin-top:10px;margin-bottom:16px;padding:12px;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:#ffffff0d}.test-section-title{margin:0 0 10px;font-size:14px;font-weight:600;color:var(--accent);text-transform:uppercase;letter-spacing:.05em}.animation-buttons{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.animation-test-btn{padding:8px 12px;font-size:13px;white-space:nowrap}.jaw-test-section{margin-top:10px;padding:10px;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:#ffffff0d}.jaw-target-row{margin:0}.jaw-test-help{margin-top:8px}.viseme-test-section{margin-top:14px}.viseme-debug-panel{margin-top:8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(58px,1fr));gap:6px}.viseme-debug-btn{padding:6px 8px;font-size:.75rem;line-height:1.1}.mesh-visibility-panel{margin-top:8px;display:grid;grid-template-columns:1fr;gap:6px;max-height:300px;overflow-y:auto;border:1px solid rgba(148,163,184,.2);border-radius:4px;padding:8px;background-color:#0f172a66}.mesh-visibility-item{display:flex;align-items:center;gap:8px;padding:4px}.mesh-visibility-item input[type=checkbox]{margin:0;cursor:pointer;width:18px;height:18px}.mesh-visibility-item label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;flex:1;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.morph-target-row{display:grid;grid-template-columns:minmax(120px,240px) 1fr 54px;align-items:center;gap:10px}.morph-target-name{font-size:13px;color:#f1f5f9f2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.morph-target-slider{width:100%}.morph-target-value{font-size:12px;text-align:right;color:#f1f5f9cc}.morph-empty-state{font-size:13px;color:#f1f5f9b3;margin:8px 0}@media (max-width: 900px){.morph-modal{top:50%;right:auto;left:50%;transform:translate(-50%,-50%);width:min(94vw,680px);min-width:0;max-height:80vh}.morph-modal-body{max-height:56vh}}.music-player-display{position:absolute;left:14px;bottom:40px;max-width:min(400px,90%);background:linear-gradient(135deg,#2a9d8f33,#f4a2611a);border:1px solid rgba(42,157,143,.4);border-radius:8px;padding:12px;display:flex;justify-content:space-between;align-items:center;gap:12px;animation:pulse-glow 2s ease-in-out infinite;z-index:5;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.music-player-display.hidden{display:none}.music-player-display.active{border-color:#2a9d8fd9}@keyframes pulse-glow{0%,to{border-color:#2a9d8f66;box-shadow:0 0 10px #2a9d8f1a}50%{border-color:#2a9d8fb3;box-shadow:0 0 20px #2a9d8f4d}}.music-info{flex:1;min-width:0}#music-status{font-size:12px;color:var(--accent-2);font-weight:600;text-transform:uppercase;letter-spacing:.5px}.music-title{margin:4px 0 0;font-size:14px;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.music-controls{display:flex;gap:4px}.music-controls button{background:#2a9d8f33;border:1px solid rgba(42,157,143,.5);color:var(--text);padding:6px 10px;border-radius:4px;cursor:pointer;font-size:14px;transition:all .2s ease}.music-controls button:hover{background:#2a9d8f66;border-color:var(--accent-2)}
