/* True WebGL MIHO. The previous sprite rig stays only as a fallback for devices without WebGL. */
.miho-three-host{
  position:absolute;z-index:12;inset:0;width:100%;height:100%;overflow:visible;
  pointer-events:none;opacity:0;transform-origin:50% 92%;transition:opacity .3s ease;
  filter:drop-shadow(0 15px 13px rgba(0,4,19,.42))
}
.miho-three-canvas{display:block;width:100%!important;height:100%!important;overflow:visible}
.student-companion.is-webgl-ready .miho-three-host{opacity:1}
.student-companion.is-webgl-ready :is(.miho-articulated,.miho-sprite,.miho-pose-sprite){display:none!important}
.student-companion.is-webgl-ready .student-companion-robot::before,
.student-companion.is-webgl-ready .student-companion-robot::after{display:none!important}
.student-companion.is-webgl-ready .student-companion-robot:hover{filter:brightness(1.035)}
.student-companion.is-webgl-ready.is-dragging .miho-three-host{transform:rotate(-3deg) scale(1.035)}
.student-companion.is-webgl-ready[data-voice="listening"] .miho-three-host,
.student-companion.is-webgl-ready[data-voice="speaking"] .miho-three-host{filter:drop-shadow(0 15px 13px rgba(0,4,19,.42)) drop-shadow(0 0 9px rgba(49,229,255,.24))}
@media(max-width:700px){.miho-three-host{inset:-2px 0 0 -1px}}
@media(prefers-reduced-motion:reduce){.miho-three-host{transition:none}}

/* Neon v2 owns the entire character; never reveal a mismatched legacy sprite. */
.student-companion:is([data-character=neon-v2],[data-character=approved-v8]){transition:none!important}
.student-companion:is([data-character=neon-v2],[data-character=approved-v8]) .miho-three-host{opacity:1;filter:drop-shadow(0 9px 11px #02091f38)}
.student-companion:is([data-character=neon-v2],[data-character=approved-v8]) .student-companion-robot{transform:none!important;animation:none!important}
.student-companion:is([data-character=neon-v2],[data-character=approved-v8]) .student-companion-robot::before,
.student-companion:is([data-character=neon-v2],[data-character=approved-v8]) .student-companion-robot::after{display:none!important}
.student-companion:is([data-character=neon-v2],[data-character=approved-v8]) .student-companion-hearts{display:none}
.miho-context-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
.miho-context-actions button{min-height:40px;padding:8px 12px;border:1px solid #5ca5cb;border-radius:9px;background:#153354;color:#e7f8ff;font:600 12px/1.4 Manrope,Arial,sans-serif;cursor:pointer}
.miho-guided-target{outline:3px solid #37d9ff!important;outline-offset:5px!important;box-shadow:0 0 0 8px #37d9ff26!important;scroll-margin:110px 24px}
.miho-mic{flex:none;min-width:44px;min-height:44px;padding:8px;border:1px solid #5b729c;border-radius:10px;background:#14253e;color:#cceeff;cursor:pointer;font:600 13px Manrope,Arial,sans-serif}
.miho-mic[aria-pressed=true]{background:#56337f;border-color:#72ecff;color:white;box-shadow:0 0 0 3px #49e0ff26}
.miho-mic:disabled{opacity:.5;cursor:not-allowed}
.miho-voice-notice{font:12px/1.5 Manrope,Arial,sans-serif;color:#b9cbe5;margin:0}
.miho-composer:has(.miho-mic){flex-wrap:wrap}
.miho-composer .miho-voice-notice{flex:0 0 100%}
.student-companion:is([data-character=neon-v2],[data-character=approved-v8]) .miho-composer{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px}
.student-companion:is([data-character=neon-v2],[data-character=approved-v8]) .miho-composer>.miho-text-field{grid-column:1/-1;min-width:0}
.student-companion:is([data-character=neon-v2],[data-character=approved-v8]) .miho-composer>.miho-voice-notice{grid-column:1/-1}
.student-companion:is([data-character=neon-v2],[data-character=approved-v8]) .miho-composer>.miho-mic{justify-self:start;width:auto!important;min-width:118px;max-width:100%;padding:8px 12px!important;white-space:nowrap;text-align:center}
.student-companion:is([data-character=neon-v2],[data-character=approved-v8]) .miho-send{background:#784af3;color:#fff;border:1px solid #b8a0ff;border-radius:10px}
.student-companion[data-character=approved-v8] .miho-three-host{opacity:1}.miho-approved-image{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}.student-companion.is-approved-fallback :is(.miho-articulated,.miho-sprite,.miho-pose-sprite){display:none!important}
