/* ============ Reveal animations ============ */
[data-reveal] {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .8s cubic-bezier(.2,.7,.2,1), transform .8s cubic-bezier(.2,.7,.2,1);
  will-change: opacity, transform;
}
[data-reveal].in-view {
  opacity: 1;
  transform: translateY(0);
}
[data-reveal-delay="1"] { transition-delay: .08s; }
[data-reveal-delay="2"] { transition-delay: .16s; }
[data-reveal-delay="3"] { transition-delay: .24s; }
[data-reveal-delay="4"] { transition-delay: .32s; }
[data-reveal-delay="5"] { transition-delay: .40s; }

/* Tokenomics bar fill animation */
.alloc-bar { position: relative; }
.alloc-bar.in-view .alloc-seg { animation: allocGrow .9s cubic-bezier(.2,.7,.2,1) both; }
.alloc-bar .alloc-seg { transform-origin: left center; transform: scaleX(0); }
.alloc-bar.in-view .alloc-seg { transform: scaleX(1); }
@keyframes allocGrow {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}
.alloc-seg:nth-child(1) { animation-delay: 0s; }
.alloc-seg:nth-child(2) { animation-delay: .08s; }
.alloc-seg:nth-child(3) { animation-delay: .16s; }
.alloc-seg:nth-child(4) { animation-delay: .24s; }
.alloc-seg:nth-child(5) { animation-delay: .32s; }
.alloc-seg:nth-child(6) { animation-delay: .40s; }
.alloc-seg:nth-child(7) { animation-delay: .48s; }

/* Vest tracks animate width */
.vest-cliff, .vest-linear { transform-origin: left; transform: scaleX(0); transition: transform 1s cubic-bezier(.2,.7,.2,1); }
.vesting.in-view .vest-cliff, .vesting.in-view .vest-linear { transform: scaleX(1); }
.vesting.in-view .vest-row:nth-child(2) .vest-cliff,
.vesting.in-view .vest-row:nth-child(2) .vest-linear { transition-delay: .05s; }
.vesting.in-view .vest-row:nth-child(3) .vest-cliff,
.vesting.in-view .vest-row:nth-child(3) .vest-linear { transition-delay: .15s; }
.vesting.in-view .vest-row:nth-child(4) .vest-cliff,
.vesting.in-view .vest-row:nth-child(4) .vest-linear { transition-delay: .25s; }
.vesting.in-view .vest-row:nth-child(5) .vest-cliff,
.vesting.in-view .vest-row:nth-child(5) .vest-linear { transition-delay: .35s; }
.vesting.in-view .vest-row:nth-child(6) .vest-cliff,
.vesting.in-view .vest-row:nth-child(6) .vest-linear { transition-delay: .45s; }

/* 3D containers */
.scene-3d {
  position: relative;
  width: 100%;
  height: 100%;
}
.hero-3d-wrap {
  position: relative;
  aspect-ratio: 1 / 1;
  max-width: 460px;
  margin-left: auto;
  margin-bottom: 28px;
}
.flow-3d {
  width: 88px;
  height: 88px;
  position: absolute;
  top: 16px;
  right: 16px;
  pointer-events: none;
}
.flow { position: relative; }
.globe-wrap {
  position: relative;
  aspect-ratio: 1 / 1;
  max-width: 520px;
  margin: 0 auto;
}
.cta-particles {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}
.final-cta { position: relative; }
.final-cta > * { position: relative; z-index: 1; }

/* Roadmap timeline draw */
.roadmap-summary { position: relative; }
.roadmap-summary::before {
  content: '';
  position: absolute;
  left: -2px; top: 0;
  width: 2px;
  height: 100%;
  background: var(--gold);
  transform-origin: top;
  transform: scaleY(0);
  transition: transform .9s cubic-bezier(.2,.7,.2,1);
}
.roadmap-summary { border-left: 0; }
.roadmap-summary.in-view::before { transform: scaleY(1); }

@media (prefers-reduced-motion: reduce) {
  [data-reveal] { opacity: 1; transform: none; transition: none; }
  .alloc-bar .alloc-seg { transform: scaleX(1); animation: none; }
  .vest-cliff, .vest-linear { transform: scaleX(1); }
}
