/* ===== Personnages vivants ===== */
.agent-img{position:relative}
.bot{width:100%;height:100%;overflow:visible;display:block}
.bot *{transform-box:fill-box}
.bot .rig{transform-origin:50% 100%;animation:b-breathe 3.6s ease-in-out infinite;animation-delay:var(--d)}
.bot .eyes{transform:translate(var(--ex,0),var(--ey,0));transition:transform .18s ease-out}
.bot .eyes-open{transform-origin:50% 50%;animation:b-blink 5.2s infinite;animation-delay:var(--d)}
.bot .eyes-happy,.bot .eyes-closed{display:none}
.bot .arm-l{transform-origin:85% 12%;transition:transform .35s cubic-bezier(.3,1.4,.5,1)}
.bot .arm-r{transform-origin:15% 12%;transition:transform .35s cubic-bezier(.3,1.4,.5,1)}
.bot .leg{transform-origin:50% 0}
.bot .shadow{transform-origin:50% 50%;animation:b-shadow 3.6s ease-in-out infinite;animation-delay:var(--d)}
.bot .fx>g{opacity:0;transition:opacity .25s;transform-origin:50% 50%}
.bot .fx text{font-family:"Lexend Deca",sans-serif;font-weight:700;fill:#1E1A17}
.bot .fx-dots circle{fill:#1E1A17}
.bot.mini .rig,.bot.mini .eyes-open,.bot.mini .shadow{animation:none}

/* Disponible : respire, cligne, micro-gestes */
.m-look .eyes{animation:b-look 2s ease-in-out}
.m-wave .arm-l{animation:b-wave .45s ease-in-out 4}
.m-stretch .arm-l{transform:rotate(150deg)}.m-stretch .arm-r{transform:rotate(-150deg)}.m-stretch .rig{animation:b-stretch 2s ease}
.m-hop .rig{animation:b-hop .55s ease 2}
.m-yawn .eyes-open{display:none}.m-yawn .eyes-closed{display:inline}.m-yawn .mouth{transform:scale(1.6,2.4);transform-origin:50% 0}

/* Au travail : tape au clavier */
.s-working .bot .arm-l{animation:b-typeL .32s ease-in-out infinite alternate}
.s-working .bot .arm-r{animation:b-typeR .32s ease-in-out infinite alternate .16s}
.s-working .bot .eyes{transform:translate(0,4px)}
.s-working .bot .rig{animation:b-bob .64s ease-in-out infinite}

/* Appel d'outil : branché, ondes */
.s-tool .bot .arm-l{animation:b-typeL .2s ease-in-out infinite alternate}
.s-tool .bot .arm-r{transform:rotate(-30deg)}
.s-tool .bot .leg0{animation:b-tap .3s ease-in-out infinite alternate}
.s-tool .bot .fx-call{opacity:1;animation:b-pulse .8s ease-in-out infinite}
.s-tool .bot .rig{animation:b-bob .4s ease-in-out infinite}

/* Réflexion : main au menton, regard en l'air */
.s-thinking .bot .arm-r{transform:rotate(42deg) translate(-6px,-14px)}
.s-thinking .bot .eyes{transform:translate(4px,-5px)}
.s-thinking .bot .rig{animation:b-tilt 2.6s ease-in-out infinite}
.s-thinking .bot .fx-dots{opacity:1}
.s-thinking .bot .fx-dots circle{animation:b-dot 1.2s infinite}
.s-thinking .bot .fx-dots circle:nth-child(2){animation-delay:.2s}.s-thinking .bot .fx-dots circle:nth-child(3){animation-delay:.4s}

/* Écoute : penché, content */
.s-listening .bot .rig{transform:rotate(-5deg);animation:b-nod 1s ease-in-out infinite}
.s-listening .bot .eyes-open,.s-hired .bot .eyes-open,.s-done .bot .eyes-open,.s-improved .bot .eyes-open{display:none}
.s-listening .bot .eyes-happy,.s-hired .bot .eyes-happy,.s-done .bot .eyes-happy,.s-improved .bot .eyes-happy{display:inline}

/* Attend ta validation : main levée */
.s-waiting .bot .arm-r{animation:b-raise 1.4s ease-in-out infinite}
.s-waiting .bot .fx-q{opacity:1;animation:b-float 1.4s ease-in-out infinite}
.s-waiting .bot .eyes{transform:translate(0,-2px)}

/* Problème : tremble, sueur */
.s-error .bot .rig{animation:b-shake .45s ease-in-out infinite}
.s-error .bot .fx-warn{opacity:1;animation:b-pulse 1s ease-in-out infinite}
.s-error .bot .fx-sweat{opacity:1;animation:b-drip 1.2s ease-in infinite}
.s-error .bot .mouth{transform:scaleY(-1);transform-origin:50% 50%}
.s-error .bot .arm-l{transform:rotate(60deg)}.s-error .bot .arm-r{transform:rotate(-60deg)}

/* Terminé : saut de joie */
.s-done .bot .rig{animation:b-hop .55s ease 3}
.s-done .bot .fx-ok{opacity:1;animation:b-popin .5s cubic-bezier(.3,1.6,.5,1)}
.s-done .bot .arm-l{transform:rotate(130deg)}.s-done .bot .arm-r{transform:rotate(-130deg)}

/* Vient d'arriver : salut */
.s-hired .bot{animation:b-arrive .8s cubic-bezier(.3,1.5,.5,1)}
.s-hired .bot .arm-l{animation:b-wave .4s ease-in-out infinite}
.s-hired .bot .fx-spark{opacity:1;animation:b-pulse .5s ease-in-out infinite}

/* Nouvelle version */
.s-improved .bot{filter:drop-shadow(0 0 16px rgba(255,219,33,.95))}
.s-improved .bot .rig{animation:b-hop .5s ease 4}
.s-improved .bot .fx-star{opacity:1;animation:b-spin 2s linear infinite}
.s-improved .bot .arm-l{transform:rotate(140deg)}.s-improved .bot .arm-r{transform:rotate(-140deg)}

/* En pause : dort */
.s-sleep .bot .eyes-open{display:none}.s-sleep .bot .eyes-closed{display:inline}
.s-sleep .bot .mouth{opacity:0}
.s-sleep .bot .rig{animation:b-breathe 5s ease-in-out infinite}
.s-sleep .bot .fx-z{opacity:1;animation:b-zz 2.6s ease-in-out infinite}
.s-sleep .bot{filter:saturate(.8)}

/* Création (Claw'd) */
.s-creating .bot{animation:b-build 6.5s ease forwards}
.s-creating .bot .eyes-open{animation:none;transform:scaleY(.1);transform-origin:50% 50%}

@keyframes b-breathe{0%,100%{transform:scale(1,1)}50%{transform:scale(1.015,.985)}}
@keyframes b-shadow{0%,100%{transform:scale(1)}50%{transform:scale(1.03)}}
@keyframes b-blink{0%,93%,100%{transform:scaleY(1)}95%{transform:scaleY(.08)}}
@keyframes b-look{0%,100%{transform:translate(0,0)}25%,40%{transform:translate(-5px,0)}60%,80%{transform:translate(5px,-1px)}}
@keyframes b-wave{0%,100%{transform:rotate(115deg)}50%{transform:rotate(155deg)}}
@keyframes b-stretch{0%,100%{transform:scale(1)}50%{transform:scale(.97,1.05)}}
@keyframes b-hop{0%,100%{transform:translateY(0) scale(1)}35%{transform:translateY(-16px) scale(.97,1.04)}70%{transform:translateY(0) scale(1.06,.94)}}
@keyframes b-typeL{from{transform:rotate(-12deg) translateY(2px)}to{transform:rotate(-26deg) translateY(-3px)}}
@keyframes b-typeR{from{transform:rotate(12deg) translateY(2px)}to{transform:rotate(26deg) translateY(-3px)}}
@keyframes b-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
@keyframes b-tap{from{transform:translateY(0)}to{transform:translateY(-5px)}}
@keyframes b-pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.12);opacity:.75}}
@keyframes b-tilt{0%,100%{transform:rotate(0)}40%{transform:rotate(-4deg)}70%{transform:rotate(2deg)}}
@keyframes b-dot{0%,100%{opacity:.25}50%{opacity:1}}
@keyframes b-nod{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(-2deg) translateY(2px)}}
@keyframes b-raise{0%,100%{transform:rotate(-150deg)}50%{transform:rotate(-125deg)}}
@keyframes b-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes b-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px) rotate(-2deg)}75%{transform:translateX(4px) rotate(2deg)}}
@keyframes b-drip{0%{transform:translateY(0);opacity:1}100%{transform:translateY(22px);opacity:0}}
@keyframes b-popin{from{transform:scale(0)}to{transform:scale(1)}}
@keyframes b-arrive{0%{transform:translateY(-60px) scale(.4);opacity:0}60%{transform:translateY(4px) scale(1.06,.94);opacity:1}100%{transform:none}}
@keyframes b-spin{to{transform:rotate(360deg)}}
@keyframes b-zz{0%{transform:translate(0,6px);opacity:0}30%{opacity:1}100%{transform:translate(8px,-10px);opacity:0}}
@keyframes b-build{0%{clip-path:inset(100% 0 0 0);filter:brightness(1.8) saturate(0)}55%{clip-path:inset(0 0 0 0);filter:brightness(1.3) saturate(.3)}100%{clip-path:inset(0 0 0 0);filter:none}}
@media (prefers-reduced-motion:reduce){.bot *,.bot{animation:none!important}}

/* Plume : voyant d'enregistrement */
.bot .rec-dot{animation:b-dot 1.6s ease-in-out infinite}
