@keyframes spin { to { transform:rotate(360deg); } }
@keyframes float { 50% { transform:translateY(-14px) rotate(2deg); } }
@keyframes particle { 0% { opacity:0; transform:translateY(100px); } 20%,70% { opacity:.7; } 100% { opacity:0; transform:translateY(-180px); } }
@keyframes signal { to { transform:rotate(360deg); } }
@keyframes flowPulse { 0%,100% { opacity:.25; transform:scale(.7); } 50% { opacity:1; transform:scale(1.5); } }
@keyframes typeCaret { 0%,48% { opacity:1; } 49%,100% { opacity:0; } }
@keyframes dashFlow { to { stroke-dashoffset:-72; } }
@keyframes logoFlashlight { 0% { background-position:145% 0; } 58%,100% { background-position:-45% 0; } }
@keyframes contactShake { 0%,18%,100% { transform:translateX(0) rotate(0); } 3% { transform:translateX(-5px) rotate(-.8deg); } 6% { transform:translateX(5px) rotate(.8deg); } 9% { transform:translateX(-3px) rotate(-.45deg); } 12% { transform:translateX(3px) rotate(.45deg); } 15% { transform:translateX(0) rotate(0); } }
@keyframes galaxyTwinkleColored { 0% { opacity:.42; filter:brightness(.8) drop-shadow(0 0 2px rgba(28,152,237,.18)); } 55% { opacity:.86; filter:brightness(1.22) drop-shadow(0 0 5px rgba(28,152,237,.32)); } 100% { opacity:.58; filter:brightness(.94) drop-shadow(0 0 3px rgba(255,92,172,.22)); } }
@keyframes galaxyTwinkleGlints { 0%,100% { opacity:.2; filter:brightness(.8); transform:scale(.998); } 35% { opacity:.82; filter:brightness(1.35); } 68% { opacity:.4; filter:brightness(1); transform:scale(1.004); } }
@keyframes starTwinkle { 0%,100% { opacity:.16; transform:scale(.65); } 38% { opacity:var(--star-opacity); transform:scale(1.08); } 62% { opacity:.32; transform:scale(.86); } 82% { opacity:var(--star-opacity); transform:scale(1.22); } }
@keyframes cometTravelRight { 0% { height:2px; opacity:0; filter:drop-shadow(0 0 8px rgba(28,152,237,.9)) drop-shadow(0 0 16px rgba(157,212,255,.42)); transform:translate3d(96vw,-12vh,0) rotate(-10deg) scale(var(--flight-scale)); } 6% { opacity:1; } 48% { height:2px; opacity:1; filter:drop-shadow(0 0 8px rgba(28,152,237,.9)) drop-shadow(0 0 16px rgba(157,212,255,.42)); } 66% { height:1.25px; opacity:.68; filter:drop-shadow(0 0 4px rgba(28,152,237,.55)) drop-shadow(0 0 8px rgba(157,212,255,.25)); } 82% { height:.3px; opacity:0; filter:drop-shadow(0 0 1px rgba(28,152,237,.12)); } 100% { height:.3px; opacity:0; filter:none; transform:translate3d(-45vw,var(--flight-drop),0) rotate(-10deg) scale(var(--flight-scale)); } }
@keyframes cometCoreFade { 0%,48% { width:11px; height:11px; opacity:1; box-shadow:0 0 12px 5px rgba(216,241,255,.98),0 0 30px 10px rgba(28,152,237,.5); } 66% { width:7px; height:7px; opacity:.62; box-shadow:0 0 7px 2px rgba(216,241,255,.68),0 0 15px 4px rgba(28,152,237,.28); } 82%,100% { width:2px; height:2px; opacity:0; box-shadow:0 0 2px rgba(28,152,237,.08); } }
@keyframes contactAura { 0%,100% { opacity:.48; transform:scale(.92); } 50% { opacity:.9; transform:scale(1.06); } }
.reveal { opacity:0; transform:translateY(28px); transition:opacity .8s var(--ease),transform .9s var(--ease); }
.reveal.is-visible { opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
  .reveal { opacity:1; transform:none; }
  .solution-card.reveal { opacity:1; transform:none; clip-path:none; }
  .star-layer { opacity:.58; animation:none !important; filter:none; transform:none; }
  .hero-star { opacity:1; animation:none !important; transform:none; }
  .hero-star::before { opacity:var(--star-opacity); animation:none !important; transform:none; }
  .sky-traveler-layer { display:none; }
}
