/* Scroll reveal animations — directional, high-impact */

:root {
  --reveal-duration: 0.95s;
  --reveal-ease: cubic-bezier(0.16, 1, 0.3, 1);
  --reveal-distance: 72px;
  --reveal-rotate: 8deg;
}

/* Page load — navbar drops in */
@keyframes nav-enter {
  from {
    opacity: 0;
    transform: translateY(-28px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.navbar-genz {
  animation: nav-enter 0.8s var(--reveal-ease) both;
}

/* Scroll reveal base */
.reveal {
  opacity: 0;
  transform-origin: center center;
  transition:
    opacity var(--reveal-duration) var(--reveal-ease),
    transform var(--reveal-duration) var(--reveal-ease),
    filter var(--reveal-duration) var(--reveal-ease);
  transition-delay: var(--reveal-delay, 0ms);
  will-change: opacity, transform, filter;
}

/* ── Cardinal directions ── */
.reveal--from-bottom {
  transform: translateY(var(--reveal-distance));
}

.reveal--from-top {
  transform: translateY(calc(var(--reveal-distance) * -1));
}

.reveal--from-left {
  transform: translateX(calc(var(--reveal-distance) * -1.2));
}

.reveal--from-right {
  transform: translateX(var(--reveal-distance));
}

/* ── Diagonal corners ── */
.reveal--from-bottom-left {
  transform: translate(calc(var(--reveal-distance) * -0.85), var(--reveal-distance)) rotate(calc(var(--reveal-rotate) * -1));
}

.reveal--from-bottom-right {
  transform: translate(var(--reveal-distance), var(--reveal-distance)) rotate(var(--reveal-rotate));
}

.reveal--from-top-left {
  transform: translate(calc(var(--reveal-distance) * -0.85), calc(var(--reveal-distance) * -0.75)) rotate(var(--reveal-rotate));
}

.reveal--from-top-right {
  transform: translate(var(--reveal-distance), calc(var(--reveal-distance) * -0.75)) rotate(calc(var(--reveal-rotate) * -1));
}

/* ── Scale & depth ── */
.reveal--zoom-in {
  transform: scale(0.72);
  filter: blur(4px);
}

.reveal--zoom-out {
  transform: scale(1.18);
  filter: blur(3px);
}

.reveal--tilt-left {
  transform: translateY(40px) rotate(-12deg) scale(0.92);
}

.reveal--tilt-right {
  transform: translateY(40px) rotate(12deg) scale(0.92);
}

.reveal--rise-rotate {
  transform: translateY(56px) rotate(6deg) scale(0.88);
}

/* Legacy aliases mapped in JS — keep for safety */
.reveal--fade-up { transform: translateY(var(--reveal-distance)); }
.reveal--fade-down { transform: translateY(calc(var(--reveal-distance) * -1)); }
.reveal--fade-left { transform: translateX(calc(var(--reveal-distance) * -1.2)); }
.reveal--fade-right { transform: translateX(var(--reveal-distance)); }
.reveal--fade-in { transform: scale(0.96); filter: blur(2px); }
.reveal--scale-up { transform: scale(0.78); filter: blur(3px); }
.reveal--blur-in { transform: translateY(48px); filter: blur(10px); }

.reveal.is-visible {
  opacity: 1;
  transform: none;
  filter: none;
}

/* Hero collage — stronger slide */
.reveal--from-right.reveal-hero-media,
.reveal--from-left.reveal-hero-media {
  --reveal-distance: 96px;
}

/* Card hover after reveal */
.reveal.is-visible.fashion-card:hover,
.reveal.is-visible.showroom-card:hover,
.reveal.is-visible.cut-box:hover {
  transition:
    opacity var(--reveal-duration) var(--reveal-ease),
    transform 0.35s var(--reveal-ease),
    box-shadow 0.35s ease,
    border-color 0.35s ease;
}

@media (prefers-reduced-motion: reduce) {
  .navbar-genz {
    animation: none;
  }

  .reveal,
  .reveal.is-visible {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
  }
}

@media (max-width: 767.98px) {
  :root {
    --reveal-distance: 44px;
    --reveal-rotate: 5deg;
    --reveal-duration: 0.78s;
  }

  .reveal--from-right.reveal-hero-media,
  .reveal--from-left.reveal-hero-media {
    --reveal-distance: 56px;
  }
}
