.face-root{background:radial-gradient(circle at 50% 40%,#131a2d 0%,#07090f 70%),linear-gradient(#0b1220 0%,#050912 100%);justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.face-svg{width:min(80vmin,640px);height:min(80vmin,640px);filter:drop-shadow(0 0 24px var(--led-color,#5082ff59));transition:filter .24s}.face-halo{opacity:.85;transform-origin:200px 200px;transition:opacity .24s;animation:4s ease-in-out infinite breathe}.face-antenna-tip{fill:var(--led-color,#5082ffb3);filter:drop-shadow(0 0 6px var(--led-color,#5082ff99));animation:1.6s ease-in-out infinite blink-pulse}.face-statusdot{fill:var(--led-color,#5082ffb3);filter:drop-shadow(0 0 3px var(--led-color,#5082ff99));animation:2.4s ease-in-out infinite dot-flash}.face-eye{fill:var(--led-color,#5082ffd9);filter:drop-shadow(0 0 10px var(--led-color,#5082ffb3));transform-origin:50%;transform-box:fill-box;animation:6s infinite eye-blink}.face-eye.right{animation-delay:50ms}.face-mouth-seg{fill:var(--led-color,#5082ffd9);filter:drop-shadow(0 0 4px var(--led-color,#5082ff80));transition:y 80ms linear,height 80ms linear}.face-state-listening .face-halo,.face-state-speaking .face-halo{opacity:1}.face-state-error .face-halo{opacity:.5}.face-state-listening .face-eye{animation-duration:4s}.face-state-speaking .face-eye{animation-duration:10s}.face-state-error .face-eye{animation:none;transform:scaleY(.12)}.face-state-error .face-antenna-tip{animation:.8s ease-in-out infinite error-strobe}@keyframes breathe{0%,to{transform:scale(1)}50%{transform:scale(1.025)}}@keyframes eye-blink{0%,92%,to{transform:scaleY(var(--eye-scale,1))}94%,96%{transform:scaleY(.08)}}@keyframes blink-pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes dot-flash{0%,60%,to{opacity:1}70%,80%{opacity:.2}}@keyframes error-strobe{0%,to{opacity:1}50%{opacity:.2}}.face-brow{fill:var(--led-color,#5082ffd9);filter:drop-shadow(0 0 6px var(--led-color,#5082ff80));transform-box:fill-box;transform-origin:50%;opacity:0;transition:transform .24s}.emotion-happy{--eye-scale:.72}.emotion-surprised{--eye-scale:1.18}.emotion-sad{--eye-scale:.86}.emotion-curious{--eye-scale:1.08}.emotion-happy .face-brow,.emotion-sad .face-brow,.emotion-surprised .face-brow,.emotion-curious .face-brow{opacity:1}.emotion-happy .face-brow.left{transform:rotate(-9deg)translateY(3px)}.emotion-happy .face-brow.right{transform:rotate(9deg)translateY(3px)}.emotion-sad .face-brow.left{transform:rotate(15deg)translateY(-2px)}.emotion-sad .face-brow.right{transform:rotate(-15deg)translateY(-2px)}.emotion-surprised .face-brow{transform:translateY(-7px)}.emotion-curious .face-brow.right{transform:rotate(-17deg)translateY(-6px)}.face-arms{animation:2.6s ease-in forwards arms-fade}.face-arm{filter:drop-shadow(0 0 7px var(--led-color,#5082ff80));transform-box:fill-box;transform-origin:50% 0}.face-heart{transform-box:fill-box;transform-origin:50%;opacity:0}@keyframes arms-fade{0%,80%{opacity:1}to{opacity:0}}@keyframes heart-pop{0%,12%{opacity:0;transform:scale(.6)}35%,78%{opacity:.95;transform:scale(1)}to{opacity:0;transform:scale(.6)}}.gesture-face_wave .face-arm.right{animation:1.6s ease-in-out arm-wave-r}@keyframes arm-wave-r{0%{transform:rotate(0)}15%{transform:rotate(-115deg)}30%{transform:rotate(-100deg)}45%{transform:rotate(-125deg)}60%{transform:rotate(-100deg)}75%{transform:rotate(-125deg)}90%{transform:rotate(-110deg)}to{transform:rotate(0)}}.gesture-high_wave .face-arm.right{animation:1.4s ease-in-out arm-highwave-r}@keyframes arm-highwave-r{0%{transform:rotate(0)}14%{transform:rotate(-150deg)}28%{transform:rotate(-132deg)}42%{transform:rotate(-158deg)}56%{transform:rotate(-132deg)}70%{transform:rotate(-158deg)}84%{transform:rotate(-140deg)}to{transform:rotate(0)}}.gesture-high_five .face-arm.right{animation:1.8s ease-out arm-highfive-r}@keyframes arm-highfive-r{0%{transform:rotate(0)}25%{transform:rotate(-165deg)}33%{transform:rotate(-155deg)}41%{transform:rotate(-165deg)}85%{transform:rotate(-165deg)}to{transform:rotate(0)}}.gesture-clap .face-arm.left{animation:arm-clap-l .5s ease-in-out var(--clap-count,1)}.gesture-clap .face-arm.right{animation:arm-clap-r .5s ease-in-out var(--clap-count,1)}@keyframes arm-clap-l{0%,to{transform:rotate(68deg)}50%{transform:rotate(96deg)}}@keyframes arm-clap-r{0%,to{transform:rotate(-68deg)}50%{transform:rotate(-96deg)}}.gesture-hug .face-arm.left{animation:2.4s ease-in-out arm-hug-l}.gesture-hug .face-arm.right{animation:2.4s ease-in-out arm-hug-r}@keyframes arm-hug-l{0%{transform:rotate(0)}22%,78%{transform:rotate(118deg)}to{transform:rotate(0)}}@keyframes arm-hug-r{0%{transform:rotate(0)}22%,78%{transform:rotate(-118deg)}to{transform:rotate(0)}}.gesture-heart .face-arm.left{animation:2.4s ease-in-out arm-heart-l}.gesture-heart .face-arm.right{animation:2.4s ease-in-out arm-heart-r}.gesture-heart .face-heart{animation:2.4s ease-in-out heart-pop}@keyframes arm-heart-l{0%{transform:rotate(0)}25%,80%{transform:rotate(126deg)}to{transform:rotate(0)}}@keyframes arm-heart-r{0%{transform:rotate(0)}25%,80%{transform:rotate(-126deg)}to{transform:rotate(0)}}.gesture-reject .face-arm.left{animation:1.4s ease-in-out arm-reject-l}.gesture-reject .face-arm.right{animation:1.4s ease-in-out arm-reject-r}@keyframes arm-reject-l{0%{transform:rotate(0)}25%{transform:rotate(-150deg)}40%{transform:rotate(-138deg)}55%,85%{transform:rotate(-150deg)}to{transform:rotate(0)}}@keyframes arm-reject-r{0%{transform:rotate(0)}25%{transform:rotate(150deg)}40%{transform:rotate(138deg)}55%,85%{transform:rotate(150deg)}to{transform:rotate(0)}}.gesture-hands_up .face-arm.left{animation:2s ease-in-out arm-up-l}.gesture-hands_up .face-arm.right{animation:2s ease-in-out arm-up-r}@keyframes arm-up-l{0%{transform:rotate(0)}25%{transform:rotate(-162deg)}35%{transform:rotate(-150deg)}45%{transform:rotate(-162deg)}55%{transform:rotate(-152deg)}80%{transform:rotate(-162deg)}to{transform:rotate(0)}}@keyframes arm-up-r{0%{transform:rotate(0)}25%{transform:rotate(162deg)}35%{transform:rotate(150deg)}45%{transform:rotate(162deg)}55%{transform:rotate(152deg)}80%{transform:rotate(162deg)}to{transform:rotate(0)}}.gesture-two_hand_kiss .face-arm.left{animation:2.2s ease-in-out arm-kiss-l}.gesture-two_hand_kiss .face-arm.right{animation:2.2s ease-in-out arm-kiss-r}.gesture-two_hand_kiss .face-heart{animation:2.2s ease-in-out heart-pop}@keyframes arm-kiss-l{0%{transform:rotate(0)}25%,50%{transform:rotate(135deg)}72%{transform:rotate(58deg)}to{transform:rotate(0)}}@keyframes arm-kiss-r{0%{transform:rotate(0)}25%,50%{transform:rotate(-135deg)}72%{transform:rotate(-58deg)}to{transform:rotate(0)}}.gesture-release .face-arm.left,.gesture-release .face-arm.right{animation:1s ease-out arm-release}@keyframes arm-release{0%{transform:rotate(28deg)}60%{transform:rotate(0)}to{transform:rotate(0)}}.face-status{top:env(safe-area-inset-top,12px);letter-spacing:.04em;color:#e6ecffbf;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0f1830b3;border-radius:999px;align-items:center;gap:8px;padding:6px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;display:flex;position:absolute;right:16px}.face-status-dot{background:currentColor;border-radius:50%;width:8px;height:8px;box-shadow:0 0 6px}.face-status-open{color:#58e08a}.face-status-connect{color:#e0c258}.face-status-error{color:#e07172}
