:root {
  --bg-primary: #020B18;
  --bg-card: rgba(0, 30, 60, 0.6);
  --color-primary: #00B4FF;
  --color-secondary: #0047AB;
  --color-accent: #00FFCC;
  --color-text: #E8F4FF;
  --color-muted: #7A9BBF;
  --glow-blue: 0 0 20px rgba(0, 180, 255, 0.5);
  --glow-teal: 0 0 20px rgba(0, 255, 204, 0.4);
  --glass: rgba(0, 60, 120, 0.15);
  --border-glass: rgba(0, 180, 255, 0.2);
}

@keyframes float { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-20px)} }
@keyframes pulse-glow { 0%,100%{box-shadow:0 0 18px rgba(0,180,255,.35)} 50%{box-shadow:0 0 38px rgba(0,255,204,.55)} }
@keyframes rotate3d { from{transform:rotateX(-18deg) rotateY(0)} to{transform:rotateX(-18deg) rotateY(360deg)} }
@keyframes slideInUp { from{opacity:0;transform:translateY(44px)} to{opacity:1;transform:translateY(0)} }
@keyframes slideInLeft { from{opacity:0;transform:translateX(-44px)} to{opacity:1;transform:translateX(0)} }
@keyframes slideInRight { from{opacity:0;transform:translateX(44px)} to{opacity:1;transform:translateX(0)} }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
@keyframes typewriter { 0%,100%{border-color:transparent} 50%{border-color:var(--color-accent)} }
@keyframes marquee { from{transform:translateX(0)} to{transform:translateX(-50%)} }
@keyframes drawLine { from{width:0} to{width:100%} }
@keyframes bounce { 0%,100%{transform:translateY(0)} 50%{transform:translateY(12px)} }
@keyframes shimmer { from{background-position:-200% 0} to{background-position:200% 0} }

.animate-on-scroll { opacity:0; transform:translateY(36px); transition:opacity .8s ease, transform .8s ease; transition-delay:var(--delay,0ms); }
.animate-on-scroll.in-view { opacity:1; transform:translateY(0); }
.slide-left { transform:translateX(-36px); }
.slide-right { transform:translateX(36px); }
.scale-in { transform:scale(.92); }
.scale-in.in-view { transform:scale(1); }

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