.character-layer .face-frame{position:absolute;inset:0;display:block;width:100%;height:100%;pointer-events:none;opacity:0}
.character-layer .eyes-frame{clip-path:polygon(34% 24%,46% 24%,47% 29.5%,34% 29.5%,34% 24%,54% 24%,66% 24%,66% 29.5%,54% 29.5%,54% 24%)}
.character-layer .mouth-frame{clip-path:ellipse(5.2% 2.4% at 50.8% 35.2%)}
.character-layer.blink .eyes-frame,.character-layer.mouth-open .mouth-frame{opacity:1}
.character-layer.frames-unavailable .face-frame{display:none}
.character-layer[data-state=attentive]{animation:attentive-breathe 4s ease-in-out infinite}
.character-layer[data-state=replying]{animation:reply-posture 2.8s ease-in-out infinite}
@keyframes attentive-breathe{0%,100%{transform:translate(.3%,-.25%) rotate(-.5deg) scale(1.009)}50%{transform:translate(.3%,-.9%) rotate(-.2deg) scale(1.015)}}
@keyframes reply-posture{0%,100%{transform:translate(0,-.4%) rotate(-.25deg) scale(1.008)}45%{transform:translate(.35%,-1%) rotate(.45deg) scale(1.014)}75%{transform:translate(-.2%,-.3%) rotate(-.15deg) scale(1.006)}}
@media(prefers-reduced-motion:reduce){.character-layer[data-state]{animation:none!important}.character-layer .face-frame{opacity:0!important}}
.reduce-motion .character-layer .face-frame{opacity:0!important}

.character-layer.original-ready{animation:none!important;filter:saturate(.88) brightness(.94);left:8%;top:-4%;width:86%;aspect-ratio:764 / 1028}
.character-layer.original-ready .character-cutout,.character-layer.original-ready .face-frame{display:none}
.kurisu-video{position:absolute;inset:0;width:100%;height:auto;display:block;opacity:0}
.original-ready .kurisu-video{opacity:1}

.voice-controls{display:flex;gap:14px;margin-top:8px;font-size:11px;color:#bfa678}.voice-controls button{font-size:inherit;color:inherit;padding:4px 0}.speech-subtitle{font-size:13px;color:#eed9b3;line-height:1.6;margin:6px 0}.speech-subtitle:empty{display:none}#chat-memory{display:block;color:#9c8d76;font-size:10px;margin-top:4px}.chat-entry{animation:none!important}

/* Only the supplied GitHub character is rendered, including first load. */
.character-layer{animation:none!important;left:8%;top:-4%;width:86%;aspect-ratio:764 / 1028}
.character-layer:not(.original-ready)::after{content:'AMADEUS / 接続中';position:absolute;top:48%;left:0;width:100%;text-align:center;font:12px monospace;letter-spacing:2px;color:#bfa678}
.character-layer[data-video-error]:not(.original-ready)::after{content:'映像接続エラー';color:#c79c7e}
@media(max-width:700px){.texture{display:none}.character-layer,.character-layer.original-ready{filter:none;will-change:auto}}
