/* ============================================
   NUKA · ANIMATIONS v2
   Editorial reveals, page transitions, depth
   ============================================ */

/* Page entrance */
@keyframes nukaPageIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

body {
  animation: nukaPageIn 400ms cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

/* ============================================
   SCROLL REVEAL — Editorial line-by-line
   ============================================ */

.nuka-reveal {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity var(--transition-reveal), transform var(--transition-reveal);
}

.nuka-reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

.nuka-reveal--visible {
  opacity: 1;
  transform: scale(1) translateY(0);
  transition: opacity var(--transition-mid), transform var(--transition-mid);
}

/* Text line reveal — child lines slide up with stagger */
.nuka-reveal-text .nuka-reveal-line {
  display: block;
  overflow: hidden;
}

.nuka-reveal-text .nuka-reveal-line > span {
  display: block;
  transform: translateY(110%);
  transition: transform var(--transition-reveal);
}

.nuka-reveal-text.visible .nuka-reveal-line > span {
  transform: translateY(0);
}

/* Stagger delays */
.nuka-reveal--delay-1 { transition-delay: 0.05s; }
.nuka-reveal--delay-2 { transition-delay: 0.10s; }
.nuka-reveal--delay-3 { transition-delay: 0.15s; }
.nuka-reveal--delay-4 { transition-delay: 0.20s; }
.nuka-reveal--delay-5 { transition-delay: 0.25s; }
.nuka-reveal--delay-6 { transition-delay: 0.30s; }
.nuka-reveal--delay-7 { transition-delay: 0.35s; }
.nuka-reveal--delay-8 { transition-delay: 0.40s; }

/* ============================================
   IMAGE REVEAL — Scale from 1.08 to 1.0
   ============================================ */

.nuka-reveal-img {
  opacity: 0;
  transform: scale(1.08);
  transition: opacity var(--transition-reveal), transform var(--transition-reveal);
}

.nuka-reveal-img.visible {
  opacity: 1;
  transform: scale(1);
}

/* ============================================
   SLIDE IN DIRECTIONS
   ============================================ */

.nuka-reveal--left {
  transform: translateX(-40px);
}

.nuka-reveal--right {
  transform: translateX(40px);
}

.nuka-reveal--up {
  transform: translateY(40px);
}

/* ============================================
   HERO SLIDER
   ============================================ */

@keyframes nukaCrossfade {
  0%, 45% { opacity: 1; }
  50%, 95% { opacity: 0; }
  100% { opacity: 1; }
}

.nuka-hero__slide {
  opacity: 0;
  transition: opacity 1.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.nuka-hero__slide.is-active {
  opacity: 1;
}

/* ============================================
   HOVER STATES
   ============================================ */

.nuka-img-hover {
  transition: transform var(--transition-mid);
}

.nuka-img-hover:hover {
  transform: scale(1.02);
}

/* Card image with parallax hint */
.nuka-card__image img {
  transition: transform var(--transition-mid), filter var(--transition-mid);
}

.nuka-card:hover .nuka-card__image img {
  transform: scale(1.03);
}

/* Filter transition */
.nuka-filter-item {
  transition: opacity var(--transition-mid), transform var(--transition-mid);
}

.nuka-filter-item.is-hidden {
  opacity: 0;
  transform: scale(0.95);
  pointer-events: none;
}

/* Nav link underline */
.nuka-nav-link {
  position: relative;
}

.nuka-nav-link::after {
  content: '';
  position: absolute;
  bottom: -4px;
  left: 0;
  width: 0;
  height: 1px;
  background-color: var(--color-accent);
  transition: width var(--transition-fast);
}

.nuka-nav-link:hover::after,
.nuka-nav-link.active::after {
  width: 100%;
}

/* Button */
.nuka-btn {
  transition: background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast);
}

.nuka-btn:hover {
  transform: translateY(-1px);
}

/* ============================================
   ACCENT LINE ANIMATION
   ============================================ */

.nuka-accent-line {
  display: block;
  width: 40px;
  height: 2px;
  background-color: var(--color-accent);
}

.nuka-accent-line--animated {
  width: 0;
  transition: width var(--transition-slow);
}

.nuka-reveal.visible .nuka-accent-line--animated {
  width: 40px;
}

/* ============================================
   MARQUEE / SCROLLING TEXT
   ============================================ */

@keyframes nukaMarquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

.nuka-marquee {
  overflow: hidden;
  white-space: nowrap;
}

.nuka-marquee__inner {
  display: inline-flex;
  animation: nukaMarquee 30s linear infinite;
}

/* ============================================
   SCROLL INDICATOR
   ============================================ */

@keyframes nukaBounce {
  0%, 100% { transform: translateY(0); opacity: 1; }
  50% { transform: translateY(8px); opacity: 0.5; }
}

.nuka-scroll-indicator {
  animation: nukaBounce 2s ease-in-out infinite;
}

/* ============================================
   WHATSAPP PULSE
   ============================================ */

@keyframes nukaPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(37, 211, 102, 0.4); }
  50% { box-shadow: 0 0 0 12px rgba(37, 211, 102, 0); }
}

.nuka-whatsapp-bubble {
  animation: nukaPulse 2s ease-in-out infinite;
}

/* ============================================
   LIGHTBOX
   ============================================ */

@keyframes nukaLightboxIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes nukaLightboxImg {
  from { opacity: 0; transform: scale(0.95); }
  to { opacity: 1; transform: scale(1); }
}

/* ============================================
   PAGE EXIT
   ============================================ */

.nuka-page-exit {
  animation: nukaPageOut 300ms cubic-bezier(0.4, 0, 1, 1) forwards;
}

@keyframes nukaPageOut {
  from { opacity: 1; }
  to { opacity: 0; }
}

/* ============================================
   REDUCED MOTION
   ============================================ */

@media (prefers-reduced-motion: reduce) {
  body { animation: none; }

  .nuka-reveal,
  .nuka-reveal-text .nuka-reveal-line > span,
  .nuka-reveal-img,
  .nuka-reveal--visible {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .nuka-scroll-indicator,
  .nuka-whatsapp-bubble,
  .nuka-marquee__inner {
    animation: none;
  }

  .nuka-card__image img,
  .nuka-img-hover,
  .nuka-filter-item,
  .nuka-btn,
  .nuka-nav-link::after {
    transition: none;
  }

  .nuka-hero__slide {
    transition: none;
  }
}
