/* ===========================================================
   ANIMATIONS - Reveal, Parallax, Effects
   =========================================================== */

/* Hero title entrance */
.hero-title-line {
  opacity: 0;
  transform: translateY(100%);
  animation: heroTitleIn 1.4s var(--easing-out) forwards;
}
.hero-title-line[data-line="1"] { animation-delay: 1.5s; }
.hero-title-line[data-line="2"] { animation-delay: 1.7s; }
@keyframes heroTitleIn {
  from { opacity: 0; transform: translateY(100%); }
  to { opacity: 1; transform: translateY(0); }
}

.hero-desc {
  opacity: 0;
  transform: translateY(20px);
  animation: heroDescIn 1.2s 2.2s var(--easing-out) forwards;
}
.hero-scroll {
  opacity: 0;
  animation: heroDescIn 1s 2.6s var(--easing-out) forwards;
}
@keyframes heroDescIn {
  to { opacity: 1; transform: translateY(0); }
}

/* Hero image entrance scale */
#hero-img {
  animation: heroImgIn 2.4s 0.4s var(--easing-out) both;
}
@keyframes heroImgIn {
  from { transform: scale(1.18); }
  to { transform: scale(1.06); }
}

/* Reveal Animations (triggered by JS) */
[data-reveal] {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 1.1s var(--easing-out), transform 1.1s var(--easing-out);
}
[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger children */
[data-reveal] > * {
  transition-delay: 0.1s;
}

/* Section label entrance */
.section-label {
  position: relative;
  overflow: hidden;
}
.section-label .line {
  transform-origin: left;
  transform: scaleX(0);
  transition: transform 1.2s var(--easing-out) 0.3s;
}
.section-label.is-visible .line,
section.is-visible .section-label .line {
  transform: scaleX(1);
}

/* Number cards stagger */
.number-card {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 1.0s var(--easing-out), transform 1.0s var(--easing-out);
}
.number-card.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.number-card:nth-child(1).is-visible { transition-delay: 0.05s; }
.number-card:nth-child(2).is-visible { transition-delay: 0.15s; }
.number-card:nth-child(3).is-visible { transition-delay: 0.25s; }
.number-card:nth-child(4).is-visible { transition-delay: 0.35s; }

/* Plan cards stagger */
.plan-card {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 1s var(--easing-out), transform 1s var(--easing-out), box-shadow 0.6s var(--easing-out);
}
.plan-card.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.plan-card:nth-child(1).is-visible { transition-delay: 0.05s; }
.plan-card:nth-child(2).is-visible { transition-delay: 0.15s; }
.plan-card:nth-child(3).is-visible { transition-delay: 0.25s; }
.plan-card:nth-child(4).is-visible { transition-delay: 0.35s; }

/* Safety cards */
.safety-card {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.9s var(--easing-out), transform 0.9s var(--easing-out), box-shadow 0.6s;
}
.safety-card.is-visible {
  opacity: 1;
  transform: translateY(0);
}
.safety-card:nth-child(1).is-visible { transition-delay: 0.05s; }
.safety-card:nth-child(2).is-visible { transition-delay: 0.15s; }
.safety-card:nth-child(3).is-visible { transition-delay: 0.25s; }
.safety-card:nth-child(4).is-visible { transition-delay: 0.35s; }

/* Image hover zoom */
.concept-img-frame img,
.tower-hero-img img {
  transition: transform 1.6s var(--easing-out);
}
.tower-hero:hover .tower-hero-img img,
.concept-img-frame:hover img {
  transform: scale(1.05);
}

/* Reveal image clip */
.tower-hero-img,
.concept-img-frame,
.tower-feature-img,
.access-map {
  position: relative;
  overflow: hidden;
}
.tower-hero-img::before,
.tower-feature-img::before,
.concept-img-frame::before,
.access-map::before {
  content: '';
  position: absolute; inset: 0;
  background: var(--c-bg-2);
  transform-origin: right;
  transform: scaleX(1);
  transition: transform 1.4s var(--easing-out);
  z-index: 2;
  pointer-events: none;
}
.is-visible .tower-hero-img::before,
.is-visible .tower-feature-img::before,
.is-visible .concept-img-frame::before,
.is-visible .access-map::before,
.tower-hero-img.is-visible::before,
.tower-feature-img.is-visible::before,
.concept-img-frame.is-visible::before,
.access-map.is-visible::before {
  transform: scaleX(0);
}

/* Heading reveal */
.section-heading .en,
.section-heading .jp {
  display: block;
  overflow: hidden;
}
.section-heading .en > span,
.section-heading .jp > span {
  display: block;
  transform: translateY(100%);
  transition: transform 1.1s var(--easing-out);
}
.is-visible .section-heading .en > span,
.is-visible .section-heading .jp > span {
  transform: translateY(0);
}
.is-visible .section-heading .jp > span { transition-delay: 0.15s; }

/* Sim chart entrance */
.simulator-wrap {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 1.2s var(--easing-out), transform 1.2s var(--easing-out);
}
.simulator-wrap.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Marquee continuous */
.hero-marquee-track:hover { animation-play-state: paused; }

/* Text gradient effect */
.hero-title-line[data-line="2"] {
  background: linear-gradient(180deg, #fff 0%, #fff 50%, rgba(255,255,255,0.7) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}

/* Floating particles bg */
@keyframes float1 {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(20px, -30px); }
}
@keyframes float2 {
  0%, 100% { transform: translate(0, 0); }
  50% { transform: translate(-15px, 25px); }
}

/* Smooth scroll-driven parallax for hero */
.hero-bg.parallax {
  will-change: transform;
}

/* Hover effect for nav */
.header-nav a:hover .en { color: var(--c-accent); }
.header.is-light .header-nav a:hover .en { color: var(--c-accent-3); }

/* Pin pulse continuous */
.access-map.is-visible .pin-pulse {
  animation: pinDrop 0.6s var(--easing-out) 0.8s both;
}
@keyframes pinDrop {
  from { transform: translateY(-40px); opacity: 0; }
  to { transform: translateY(0); opacity: 1; }
}

/* Overview table row reveal */
.overview-table tr {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.8s var(--easing-out), transform 0.8s var(--easing-out);
}
.overview-table.is-visible tr {
  opacity: 1;
  transform: translateY(0);
}
.overview-table.is-visible tr:nth-child(1) { transition-delay: 0.05s; }
.overview-table.is-visible tr:nth-child(2) { transition-delay: 0.1s; }
.overview-table.is-visible tr:nth-child(3) { transition-delay: 0.15s; }
.overview-table.is-visible tr:nth-child(4) { transition-delay: 0.2s; }
.overview-table.is-visible tr:nth-child(5) { transition-delay: 0.25s; }
.overview-table.is-visible tr:nth-child(6) { transition-delay: 0.3s; }
.overview-table.is-visible tr:nth-child(7) { transition-delay: 0.35s; }
.overview-table.is-visible tr:nth-child(8) { transition-delay: 0.4s; }
.overview-table.is-visible tr:nth-child(n+9) { transition-delay: 0.45s; }

/* Smooth hover for buttons */
.btn::before {
  content: '';
  position: absolute;
  top: 0; left: -100%;
  width: 100%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent);
  transition: left 0.6s var(--easing);
}
.btn:hover::before { left: 100%; }

/* Reduce motion */
@media (prefers-reduced-motion: reduce) {
  * { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
  [data-reveal] { opacity: 1 !important; transform: none !important; }
}
