/* JustiX v0.8.9 — Unified Audio & Chat Runtime */
.jx-audio-controls{display:flex;align-items:center;gap:10px;margin:10px 0 0;padding:9px 12px;min-height:46px;border-radius:16px;max-width:100%;overflow:hidden}
.jx-audio-button{width:34px;height:34px;border:1px solid rgba(212,175,55,.25);border-radius:12px;background:#071729;color:#f7d66f;display:grid;place-items:center;cursor:pointer;flex:0 0 auto}
.jx-audio-dot{width:8px;height:8px;border-radius:50%;background:#55e7bd;box-shadow:0 0 12px rgba(85,231,189,.5);flex:0 0 auto}.jx-audio-dot[data-mode="muted"],.jx-audio-dot[data-mode="text"]{background:#8496ab;box-shadow:none}.jx-audio-dot[data-mode="blocked"]{background:#f1c84a}.jx-audio-dot[data-mode="unsupported"]{background:#ef5d66}
#jxAudioStatus{min-width:0;font-size:13px;font-weight:700;color:#c9d5e4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jx-volume{margin-left:auto;display:flex;align-items:center;gap:7px;color:#8295aa;font-size:11px}.jx-volume input{width:82px;accent-color:#e7bc3e}
#sceneSpeaker.jx-text-only .speaker-pulse{opacity:.35;animation:none}#sceneSpeaker.jx-audio-speaking .speaker-pulse{opacity:1}
.jx-learning-chat{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;margin-top:12px}.jx-learning-chat input{min-width:0;width:100%;height:46px;border:1px solid rgba(123,151,181,.28);background:#061526;color:#eef4fb;border-radius:14px;padding:0 14px;font:inherit}.jx-learning-chat input:focus{outline:2px solid rgba(232,189,60,.4);outline-offset:1px}
@media(max-width:720px){.jx-audio-controls{gap:8px;padding:8px 10px}.jx-volume span{display:none}.jx-volume input{width:60px}#jxAudioStatus{font-size:12px}.jx-learning-chat{grid-template-columns:1fr}.jx-learning-chat button{width:100%}}
/* v0.9.3 exact-duration lip sync */
.court-stage.mode-3d .actor3d.speaking .mouth{animation:jxLip093 .16s ease-in-out infinite alternate!important;will-change:transform,height}
.court-stage.mode-3d .actor3d.jx-mouth-beat .mouth{transform:scaleY(3.4) scaleX(.82)!important}
@keyframes jxLip093{0%{transform:scaleY(.65) scaleX(1.08)}35%{transform:scaleY(2.4) scaleX(.9)}70%{transform:scaleY(4.4) scaleX(.78)}100%{transform:scaleY(1.35) scaleX(1.02)}}
