/* Animaciones de Oxi. Respetan prefers-reduced-motion. */
.oxi{display:block;overflow:visible}
.oxi-body{transform-origin:120px 250px;animation:oxi-latido 1.3s ease-in-out infinite}
@keyframes oxi-latido{0%,100%{transform:scale(1)}14%{transform:scale(1.035,.98)}28%{transform:scale(1)}42%{transform:scale(1.02,.99)}}
.oxi-ojo{transform-box:fill-box;transform-origin:center;animation:oxi-parpadeo 4.5s infinite}
@keyframes oxi-parpadeo{0%,92%,100%{transform:scaleY(1)}95%{transform:scaleY(.08)}}
.oxi-ecg{stroke-dasharray:34 66;animation:oxi-barrido 1.3s linear infinite}
@keyframes oxi-barrido{from{stroke-dashoffset:100}to{stroke-dashoffset:0}}
.oxi-led{animation:oxi-led 1.3s ease-in-out infinite}
@keyframes oxi-led{0%,100%{opacity:.55}14%{opacity:1}}
.oxi-ojof{stroke:#bdf3ff;stroke-width:6;fill:none;stroke-linecap:round}
.oxi-saludo{transform-origin:186px 124px;animation:oxi-saludo 1s ease-in-out infinite}
@keyframes oxi-saludo{0%,100%{transform:rotate(0)}50%{transform:rotate(-14deg)}}
.oxi-chispa path{transform-box:fill-box;transform-origin:center;animation:oxi-chispa 1.6s ease-in-out infinite}
.oxi-chispa path:nth-child(2){animation-delay:.5s}.oxi-chispa path:nth-child(3){animation-delay:1s}
@keyframes oxi-chispa{0%,100%{transform:scale(.6);opacity:.5}50%{transform:scale(1.1);opacity:1}}
.oxi-flota{animation:oxi-flota 3.2s ease-in-out infinite}
@keyframes oxi-flota{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@media(prefers-reduced-motion:reduce){.oxi *,.oxi-avatar *{animation:none!important}}
