@keyframes glassBreathe{
  0%,100%{transform:scale(1);opacity:1}
  50%{transform:scale(1.005);opacity:0.97}
}

@keyframes blobDrift1{
  0%{transform:translate(0,0) scale(1)}
  100%{transform:translate(-80px,60px) scale(1.15)}
}
@keyframes blobDrift2{
  0%{transform:translate(0,0) scale(1)}
  100%{transform:translate(60px,-50px) scale(1.1)}
}
@keyframes blobDrift3{
  0%{transform:translate(0,0) scale(1)}
  100%{transform:translate(-40px,80px) scale(0.9)}
}

@keyframes fadeInUp{
  from{opacity:0;transform:translateY(30px)}
  to{opacity:1;transform:translateY(0)}
}
@keyframes fadeIn{
  from{opacity:0}
  to{opacity:1}
}
@keyframes fadeInScale{
  from{opacity:0;transform:scale(0.95)}
  to{opacity:1;transform:scale(1)}
}
@keyframes slideInLeft{
  from{opacity:0;transform:translateX(-30px)}
  to{opacity:1;transform:translateX(0)}
}
@keyframes slideInRight{
  from{opacity:0;transform:translateX(30px)}
  to{opacity:1;transform:translateX(0)}
}

@keyframes pulse{
  0%,100%{opacity:1}
  50%{opacity:0.5}
}
@keyframes spin{
  to{transform:rotate(360deg)}
}
@keyframes bounce{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-6px)}
}

@keyframes typeCursor{
  0%,100%{opacity:1}
  50%{opacity:0}
}

@keyframes codeScroll{
  0%{transform:translateY(0)}
  100%{transform:translateY(-50%)}
}

@keyframes particleFloat{
  0%,100%{transform:translateY(0) translateX(0);opacity:0.3}
  25%{transform:translateY(-20px) translateX(10px);opacity:0.6}
  50%{transform:translateY(-40px) translateX(-5px);opacity:0.4}
  75%{transform:translateY(-20px) translateX(-10px);opacity:0.5}
}

@keyframes shimmer{
  0%{background-position:-200% 0}
  100%{background-position:200% 0}
}

@keyframes scrollCue{
  0%,100%{transform:translateY(0);opacity:0.6}
  50%{transform:translateY(8px);opacity:1}
}

@keyframes dotPulse{
  0%,80%,100%{transform:scale(0);opacity:0}
  40%{transform:scale(1);opacity:1}
}

@keyframes dashDraw{
  to{stroke-dashoffset:0}
}

@keyframes nodeGlow{
  0%,100%{filter:drop-shadow(0 0 4px var(--blue)) brightness(1)}
  50%{filter:drop-shadow(0 0 12px var(--blue)) brightness(1.2)}
}

@keyframes progressPulse{
  0%{width:0}
  100%{width:var(--progress)}
}

@keyframes floatUI{
  0%,100%{transform:translateY(0) rotate(0deg)}
  33%{transform:translateY(-12px) rotate(1deg)}
  66%{transform:translateY(-6px) rotate(-0.5deg)}
}

@keyframes welcomeZoom{
  0%{transform:scale(1);opacity:1}
  100%{transform:scale(2.5);opacity:0}
}
@keyframes welcomeFade{
  0%{opacity:1}
  100%{opacity:0;visibility:hidden}
}
@keyframes siteReveal{
  0%{opacity:0;transform:scale(0.98)}
  100%{opacity:1;transform:scale(1)}
}

@keyframes lineIconShake{
  0%,35%,100%{transform:rotate(0deg)}
  5%{transform:rotate(-10deg)}
  10%{transform:rotate(10deg)}
  15%{transform:rotate(-7deg)}
  20%{transform:rotate(7deg)}
  25%{transform:rotate(-3deg)}
  30%{transform:rotate(3deg)}
}

@keyframes botRingSpin{
  to{transform:rotate(360deg)}
}

@keyframes panelFloat{
  0%,100%{transform:translateY(0) rotate(var(--panel-rot,0deg))}
  50%{transform:translateY(-14px) rotate(var(--panel-rot,0deg))}
}

@keyframes btnShimmer{
  0%{left:-100%}
  30%{left:150%}
  100%{left:150%}
}

@keyframes glassShine{
  0%{left:-80%}
  20%{left:140%}
  100%{left:140%}
}

@keyframes ciPulse{
  0%,100%{background:var(--blue);box-shadow:0 1px 2px rgba(61,165,245,0.2),0 4px 16px rgba(61,165,245,0.25)}
  50%{background:var(--yellow);box-shadow:0 1px 2px rgba(245,184,52,0.2),0 4px 16px rgba(245,184,52,0.25)}
}

.reveal{opacity:0;transform:translateY(30px);transition:opacity 0.6s var(--ease-out),transform 0.6s var(--ease-out)}
.reveal.is-visible{opacity:1;transform:translateY(0)}
.reveal--delay-1{transition-delay:0.1s}
.reveal--delay-2{transition-delay:0.2s}
.reveal--delay-3{transition-delay:0.3s}
.reveal--delay-4{transition-delay:0.4s}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:0.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.01ms !important;
  }
  .reveal{opacity:1;transform:none}
  .bg-substrate__blob{animation:none !important}
}
