@keyframes cursorBlink{0%,50%{opacity:1}51%,100%{opacity:0}}
@keyframes fadeInUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes scanDown{0%{top:-5%}100%{top:105%}}
@keyframes beepPulse{0%,100%{opacity:1;box-shadow:0 0 5px var(--green)}50%{opacity:0.3;box-shadow:none}}
@keyframes glitch1{0%{transform:translate(0)}20%{transform:translate(-2px,1px)}40%{transform:translate(2px,-1px)}60%{transform:translate(-1px,2px)}80%{transform:translate(1px,-2px)}100%{transform:translate(0)}}
@keyframes glitch2{0%{transform:translate(0)}25%{transform:translate(2px,-1px)}50%{transform:translate(-2px,1px)}75%{transform:translate(1px,2px)}100%{transform:translate(0)}}
@keyframes glowPulse{0%,100%{box-shadow:0 0 5px var(--green-glow),0 0 10px var(--green-glow)}50%{box-shadow:0 0 15px var(--green-glow-md),0 0 30px var(--green-glow)}}
@keyframes scrollArrow{0%{opacity:0;transform:translateY(-4px)}50%{opacity:1}100%{opacity:0;transform:translateY(4px)}}
@keyframes bootLine{to{opacity:1;transform:translateY(0)}}
@keyframes flickerIn{0%{opacity:0}4%{opacity:0}6%{opacity:0.6}8%{opacity:0}10%{opacity:0}11%{opacity:0.5}12%{opacity:0}100%{opacity:1}}
@keyframes crtFlicker{0%{opacity:0.03}50%{opacity:0.06}100%{opacity:0.03}}

.glitch{position:relative}
.glitch::before,.glitch::after{content:attr(data-text);position:absolute;top:0;left:0;width:100%;height:100%}
.glitch::before{animation:glitch1 2.5s infinite linear alternate-reverse;clip-path:polygon(0 0,100% 0,100% 35%,0 35%);color:var(--cyan);opacity:0.7}
.glitch::after{animation:glitch2 3.5s infinite linear alternate-reverse;clip-path:polygon(0 65%,100% 65%,100% 100%,0 100%);color:var(--red);opacity:0.7}

.reveal{opacity:0;transform:translateY(30px);transition:all var(--dur-slower) var(--ease-out)}
.reveal.visible{opacity:1;transform:translateY(0)}
.reveal[data-delay="200"]{transition-delay:0.2s}
.reveal[data-delay="400"]{transition-delay:0.4s}
.reveal[data-delay="600"]{transition-delay:0.6s}
.reveal[data-delay="800"]{transition-delay:0.8s}
.reveal[data-delay="1000"]{transition-delay:1s}
.reveal[data-delay="1200"]{transition-delay:1.2s}