/*
 * selva-animations.css — Premium scroll reveals, transitions, micro-interactions
 * @package selva-dorada
 */

/* ── Page transition overlay ──────────────────────────────────────────── */
#selva-page-transition {
  position: fixed; inset: 0; z-index: 9999;
  background: var(--color-bg-primary);
  transform: translateY(100%);
  pointer-events: none;
}
#selva-page-transition.is-entering { animation: ptEnter .55s cubic-bezier(.76,0,.24,1) forwards; }
#selva-page-transition.is-leaving  { animation: ptLeave .5s  cubic-bezier(.76,0,.24,1) forwards; }
@keyframes ptEnter { from { transform: translateY(0) }   to { transform: translateY(-100%) } }
@keyframes ptLeave { from { transform: translateY(100%) } to { transform: translateY(0) } }

/* ── Scroll Reveal — base state ───────────────────────────────────────── */
[data-reveal] {
  will-change: opacity, transform;
}
[data-reveal="fade-up"]    { opacity: 0; transform: translateY(40px); transition: opacity .7s cubic-bezier(.22,1,.36,1), transform .7s cubic-bezier(.22,1,.36,1); }
[data-reveal="fade-in"]    { opacity: 0; transition: opacity .7s ease; }
[data-reveal="fade-left"]  { opacity: 0; transform: translateX(-32px); transition: opacity .7s cubic-bezier(.22,1,.36,1), transform .7s cubic-bezier(.22,1,.36,1); }
[data-reveal="fade-right"] { opacity: 0; transform: translateX(32px);  transition: opacity .7s cubic-bezier(.22,1,.36,1), transform .7s cubic-bezier(.22,1,.36,1); }
[data-reveal="scale-in"]   { opacity: 0; transform: scale(.94);         transition: opacity .65s ease, transform .65s cubic-bezier(.22,1,.36,1); }
[data-reveal="rotate-in"]  { opacity: 0; transform: rotate(-4deg) scale(.96); transition: opacity .7s ease, transform .7s cubic-bezier(.22,1,.36,1); }

[data-reveal].is-visible {
  opacity: 1;
  transform: none;
}

/* Stagger delays via data-delay attribute */
[data-delay="80"]  { transition-delay: 80ms  !important; }
[data-delay="160"] { transition-delay: 160ms !important; }
[data-delay="240"] { transition-delay: 240ms !important; }
[data-delay="320"] { transition-delay: 320ms !important; }
[data-delay="400"] { transition-delay: 400ms !important; }

/* Auto stagger on children when parent has data-stagger */
[data-stagger] > *:nth-child(1) { transition-delay: 0ms; }
[data-stagger] > *:nth-child(2) { transition-delay: 80ms; }
[data-stagger] > *:nth-child(3) { transition-delay: 160ms; }
[data-stagger] > *:nth-child(4) { transition-delay: 240ms; }
[data-stagger] > *:nth-child(5) { transition-delay: 320ms; }
[data-stagger] > *:nth-child(6) { transition-delay: 400ms; }
[data-stagger] > *:nth-child(n+7) { transition-delay: 480ms; }

/* ── Button ripple ────────────────────────────────────────────────────── */
.selva-btn { position: relative; overflow: hidden; }
.selva-ripple {
  position: absolute;
  border-radius: 50%;
  width: 6px; height: 6px;
  background: rgba(255,255,255,.35);
  transform: scale(0);
  animation: rippleOut .55s cubic-bezier(.22,1,.36,1) forwards;
  pointer-events: none;
}
@keyframes rippleOut {
  to { transform: scale(80); opacity: 0; }
}

/* ── Header shrink ────────────────────────────────────────────────────── */
.selva-header { transition: padding .35s ease, box-shadow .35s ease; }
.selva-header.is-scrolled { box-shadow: 0 2px 24px rgba(26,23,20,.09); }

/* ── Hero entrance ────────────────────────────────────────────────────── */
.hero__eyebrow  { animation: heroFadeUp .8s .1s cubic-bezier(.22,1,.36,1) both; }
.hero__title    { animation: heroFadeUp .9s .25s cubic-bezier(.22,1,.36,1) both; }
.hero__subtitle { animation: heroFadeUp .8s .45s cubic-bezier(.22,1,.36,1) both; }
.hero__actions  { animation: heroFadeUp .7s .6s  cubic-bezier(.22,1,.36,1) both; }
.hero__scroll   { animation: heroFadeIn 1s .9s ease both; }
@keyframes heroFadeUp {
  from { opacity: 0; transform: translateY(32px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes heroFadeIn {
  from { opacity: 0; } to { opacity: 0.35; }
}

/* ── Stats bar counter ────────────────────────────────────────────────── */
.selva-stat { transition: opacity .6s ease, transform .6s cubic-bezier(.22,1,.36,1); }
.selva-stat:not(.is-visible) { opacity: 0; transform: translateY(24px); }

/* ── Section ornament draw-on ─────────────────────────────────────────── */
.selva-ornament-line {
  transform-origin: left center;
  transition: transform .6s cubic-bezier(.22,1,.36,1);
}
[data-reveal]:not(.is-visible) .selva-ornament-line { transform: scaleX(0); }
[data-reveal].is-visible .selva-ornament-line { transform: scaleX(1); }

/* ── Card image shimmer on load ───────────────────────────────────────── */
.selva-svc-card__img,
.selva-blog-card__thumb,
.selva-team-card__photo img {
  background: linear-gradient(90deg, var(--color-border) 25%, var(--color-bg-secondary) 50%, var(--color-border) 75%);
  background-size: 200% 100%;
}
.selva-svc-card__img.loaded,
.selva-blog-card__thumb.loaded,
.selva-team-card__photo img.loaded { background: none; }

/* ── Cursor glow (desktop only) ───────────────────────────────────────── */
@media (pointer: fine) {
  body::after {
    content: '';
    position: fixed;
    width: 400px; height: 400px;
    left: calc(var(--cursor-x, -50%) - 200px);
    top:  calc(var(--cursor-y, -50%) - 200px);
    background: radial-gradient(circle, rgba(184,150,90,.06) 0%, transparent 70%);
    pointer-events: none;
    z-index: 0;
    transition: left .15s ease, top .15s ease;
  }
}

/* ── Smooth hover transitions ─────────────────────────────────────────── */
a { transition: color .2s ease; }
img { transition: transform .6s cubic-bezier(.22,1,.36,1); }

/* ── Reduced motion overrides ─────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  [data-reveal], [data-reveal].is-visible,
  .hero__eyebrow, .hero__title, .hero__subtitle, .hero__actions, .hero__scroll,
  .selva-stat, body::after { animation: none !important; transition: none !important; opacity: 1 !important; transform: none !important; }
}
