/* ==========================================================
   KAKABEKA — Animations (v2 Premium)
   ========================================================== */

/* ---------- Keyframes ---------- */
@keyframes spinRing{ to{ transform:rotate(360deg); } }
@keyframes loadBar{
  0%{ transform:translateX(-120%); }
  100%{ transform:translateX(320%); }
}
@keyframes pulseGlow{
  0%,100%{ opacity:.55; transform:translateX(-50%) scale(1); }
  50%{ opacity:1; transform:translateX(-50%) scale(1.12); }
}
.brand-mark-glow{ animation-name:pulseGlowStatic !important; }
@keyframes pulseGlowStatic{
  0%,100%{ opacity:.5; transform:scale(1); }
  50%{ opacity:1; transform:scale(1.15); }
}
@keyframes logoBreath{
  0%,100%{ transform:scale(1); filter:drop-shadow(0 0 16px rgba(200,169,107,.4)); }
  50%{ transform:scale(1.045); filter:drop-shadow(0 0 30px rgba(200,169,107,.7)); }
}
@keyframes ringExpand{
  0%{ transform:scale(.55); opacity:.9; }
  100%{ transform:scale(1.35); opacity:0; }
}
@keyframes goldShimmer{ to{ background-position:200% center; } }
@keyframes btnShine{
  0%,60%{ left:-80%; }
  100%{ left:130%; }
}
@keyframes scrollCue{
  0%{ top:0; opacity:0; }
  30%{ opacity:1; }
  100%{ top:54px; opacity:0; }
}
@keyframes marqueeScroll{ to{ transform:translateX(-50%); } }
@keyframes gridDrift{ to{ background-position:64px 64px; } }
@keyframes wmFloat{
  0%,100%{ transform:translateY(-50%) rotate(0deg); }
  50%{ transform:translateY(calc(-50% - 22px)) rotate(1.2deg); }
}
.footer-watermark{ animation-name:wmFloatFooter !important; }
@keyframes wmFloatFooter{
  0%,100%{ transform:translateY(0); }
  50%{ transform:translateY(-20px); }
}
@keyframes cornerPulse{
  0%,100%{ opacity:.6; }
  50%{ opacity:1; box-shadow:0 0 18px rgba(200,169,107,.35); }
}
@keyframes beamDrift{
  0%,100%{ opacity:0; transform:translateX(0); }
  40%{ opacity:1; }
  60%{ opacity:1; }
  100%{ opacity:0; transform:translateX(60px); }
}
@keyframes orbFloat1{
  0%,100%{ transform:translate(0,0); }
  50%{ transform:translate(70px,50px); }
}
@keyframes orbFloat2{
  0%,100%{ transform:translate(0,0); }
  50%{ transform:translate(-80px,-60px); }
}
@keyframes orbFloat3{
  0%,100%{ transform:translate(0,0) scale(1); }
  50%{ transform:translate(50px,-40px) scale(1.12); }
}

/* ---------- Scroll reveal variants ---------- */
.reveal, .reveal-up, .reveal-left, .reveal-right{
  opacity:0;
  transition:opacity 1s var(--ease), transform 1s var(--ease);
  will-change:opacity, transform;
}
.reveal{ transform:translateY(14px); }
.reveal-up{ transform:translateY(34px); }
.reveal-left{ transform:translateX(-40px); }
.reveal-right{ transform:translateX(40px); }
.reveal.is-visible, .reveal-up.is-visible, .reveal-left.is-visible, .reveal-right.is-visible{
  opacity:1; transform:translate(0,0);
}

/* hero entrance stagger */
.reveal.d1{ transition-delay:.15s; }
.reveal.d2{ transition-delay:.3s; }
.reveal.d3{ transition-delay:.45s; }
.reveal.d4{ transition-delay:.6s; }

/* grid stagger */
.card-grid .reveal-up:nth-child(1){ transition-delay:.02s; }
.card-grid .reveal-up:nth-child(2){ transition-delay:.09s; }
.card-grid .reveal-up:nth-child(3){ transition-delay:.16s; }
.card-grid .reveal-up:nth-child(4){ transition-delay:.23s; }
.card-grid .reveal-up:nth-child(5){ transition-delay:.30s; }
.card-grid .reveal-up:nth-child(6){ transition-delay:.37s; }
.card-grid .reveal-up:nth-child(7){ transition-delay:.44s; }
.card-grid .reveal-up:nth-child(8){ transition-delay:.51s; }

.industry-grid .reveal-up:nth-child(1){ transition-delay:.02s; }
.industry-grid .reveal-up:nth-child(2){ transition-delay:.08s; }
.industry-grid .reveal-up:nth-child(3){ transition-delay:.14s; }
.industry-grid .reveal-up:nth-child(4){ transition-delay:.20s; }
.industry-grid .reveal-up:nth-child(5){ transition-delay:.26s; }
.industry-grid .reveal-up:nth-child(6){ transition-delay:.32s; }
.industry-grid .reveal-up:nth-child(7){ transition-delay:.38s; }

.timeline .reveal-up:nth-child(1){ transition-delay:.02s; }
.timeline .reveal-up:nth-child(2){ transition-delay:.10s; }
.timeline .reveal-up:nth-child(3){ transition-delay:.18s; }
.timeline .reveal-up:nth-child(4){ transition-delay:.26s; }
.timeline .reveal-up:nth-child(5){ transition-delay:.34s; }
.timeline .reveal-up:nth-child(6){ transition-delay:.42s; }

/* ---------- Map animation ---------- */
.map-line{
  fill:none; stroke:var(--gold); stroke-width:1;
  stroke-dasharray:4 5; opacity:.6;
  animation:dashFlow 20s linear infinite;
  filter:drop-shadow(0 0 3px rgba(200,169,107,.6));
}
@keyframes dashFlow{ to{ stroke-dashoffset:-400; } }

.map-node{ animation:pulseNode 2.6s ease-in-out infinite; transform-origin:center; transform-box:fill-box; }
.map-node.hq{ animation-duration:1.8s; }
@keyframes pulseNode{
  0%,100%{ opacity:.55; transform:scale(1); }
  50%{ opacity:1; transform:scale(1.3); }
}
.map-ping{
  fill:none; stroke:var(--gold); stroke-width:1;
  transform-origin:center; transform-box:fill-box;
  animation:mapPing 2.8s ease-out infinite;
}
@keyframes mapPing{
  0%{ transform:scale(.4); opacity:.9; }
  100%{ transform:scale(2.6); opacity:0; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; }
  .reveal,.reveal-up,.reveal-left,.reveal-right{ opacity:1; transform:none; }
  .head-rule{ width:140px; }
}
