/* =========================================================
   MATEMÁTICAS MÁGICAS 3D · animations.css
   ========================================================= */
@keyframes pulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.12); } }
@keyframes glow { 0%, 100% { box-shadow: 0 6px 0 rgba(0,0,0,.2), 0 0 0 0 rgba(255,201,60,.9); } 50% { box-shadow: 0 6px 0 rgba(0,0,0,.2), 0 0 0 14px rgba(255,201,60,0); } }
@keyframes starPop { 0% { transform: scale(0) rotate(-90deg); } 70% { transform: scale(1.3) rotate(10deg); } 100% { transform: scale(1) rotate(0); } }
@keyframes toastIn { 0% { transform: scale(.3); opacity: 0; } 15% { transform: scale(1.15); opacity: 1; } 25% { transform: scale(1); } 80% { opacity: 1; transform: translateY(0); } 100% { opacity: 0; transform: translateY(-40px); } }
@keyframes wand { from { transform: rotate(-15deg); } to { transform: rotate(15deg) scale(1.1); } }
@keyframes loadbar { 0% { transform: translateX(-110%); } 100% { transform: translateX(260%); } }
@keyframes popIn { 0% { transform: scale(.4); opacity: 0; } 70% { transform: scale(1.06); opacity: 1; } 100% { transform: scale(1); } }
@keyframes slideUp { from { transform: translateY(40px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@keyframes slideDown { from { transform: translateY(-40px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@keyframes floaty { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes wiggle { 0%, 100% { transform: rotate(0); } 25% { transform: rotate(-6deg); } 75% { transform: rotate(6deg); } }
@keyframes shake { 0%, 100% { transform: translateX(0); } 20%, 60% { transform: translateX(-10px); } 40%, 80% { transform: translateX(10px); } }
@keyframes eqIn { 0% { transform: scale(.2); opacity: 0; } 60% { transform: scale(1.15); opacity: 1; } 100% { transform: scale(1); } }
@keyframes fadeOut { to { opacity: 0; } }

.pop-in { animation: popIn .45s cubic-bezier(.2,.9,.3,1.3) both; }
.slide-up { animation: slideUp .45s ease both; }
.slide-down { animation: slideDown .45s ease both; }
.floaty { animation: floaty 2.4s ease-in-out infinite; }
.wiggle { animation: wiggle .5s ease 2; }
.shake { animation: shake .45s ease; }
.equation-pop { animation: eqIn .6s cubic-bezier(.2,.9,.3,1.3) both; }
.equation-pop.out { animation: fadeOut .4s forwards; }
.screen.active > * { animation: slideUp .4s ease both; }
.screen.active > .no-anim { animation: none; }

/* Animaciones SVG del profesor */
@keyframes svgPop { 0% { transform: scale(0); } 70% { transform: scale(1.2); } 100% { transform: scale(1); } }
@keyframes svgFadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes svgDraw { from { stroke-dashoffset: 400; } to { stroke-dashoffset: 0; } }
.svg-pop { transform-box: fill-box; transform-origin: center; animation: svgPop .45s cubic-bezier(.2,.9,.3,1.3) both; }
.svg-fade { animation: svgFadeIn .5s ease both; }
.svg-draw { stroke-dasharray: 400; animation: svgDraw .8s ease both; }

@media (prefers-reduced-motion: reduce) {
  *, *:before, *:after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
