
@keyframes fadeIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}
.screen.active{animation:fadeIn .35s ease;}
@keyframes wireFlow{to{stroke-dashoffset:-40;}}
.wire-path{animation:wireFlow 1s linear infinite;}
@keyframes shake{0%,100%{transform:translateX(0);}20%{transform:translateX(-4px);}40%{transform:translateX(4px);}60%{transform:translateX(-4px);}80%{transform:translateX(4px);}}
.slot.error{animation:shake .4s ease;}
@keyframes particleRise{from{opacity:.9;transform:translateY(0) scale(1);}to{opacity:0;transform:translateY(-60px) scale(.4);}}
.particle{position:absolute;width:4px;height:4px;border-radius:50%;background:var(--accent-1);animation:particleRise 1.4s ease-out forwards;pointer-events:none;}
.reduce-motion *{animation-duration:.001s !important;transition-duration:.001s !important;}
