/* index-3d-lite.css
   Subset léger des effets 3D pour la page d'index.
   - Poussière 3D dans le hero seulement
   - Entrée discrète du H1 et du sous-titre
   PAS de letter-by-letter ni de mega-effects — l'index reste rapide. */

/* ===== Dust particles — limited to the hero zone ===== */
.idx-3d-dust {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  overflow: hidden;
  transform-style: preserve-3d;
  perspective: 1400px;
}
.idx-3d-mote {
  position: absolute;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 245, 220, 0.85) 0%, rgba(255, 245, 220, 0) 70%);
  will-change: transform, opacity;
  animation: idx3d-drift var(--dur, 16s) linear infinite;
  animation-delay: var(--delay, 0s);
  opacity: 0;
}
@keyframes idx3d-drift {
  0%   { opacity: 0;             transform: translate3d(0, 110%, var(--z, 0px)); }
  10%  { opacity: var(--op, 0.5); }
  90%  { opacity: var(--op, 0.5); }
  100% { opacity: 0;             transform: translate3d(var(--dx, 0px), -10%, var(--z, 0px)); }
}

/* Make sure the hero section becomes a positioning context for the dust */
.hero.hero-3d-mount { position: relative; }

/* Make sure copy sits above dust */
.hero-doc-copy,
.hero-doc-scene,
.hero-doc-nav { position: relative; z-index: 2; }

/* ===== H1 + sub entry — subtle, fast, NO BLUR (blur stays stuck on some browsers) ===== */
.hero-doc-title {
  opacity: 0;
  transform: translateY(18px);
  animation: idx3d-rise 0.9s cubic-bezier(0.16, 1, 0.3, 1) 0.15s forwards;
}
.hero-doc-sub {
  opacity: 0;
  transform: translateY(14px);
  animation: idx3d-rise 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.42s forwards;
}
.hero-doc-actions {
  opacity: 0;
  transform: translateY(10px);
  animation: idx3d-rise 0.7s cubic-bezier(0.16, 1, 0.3, 1) 0.62s forwards;
}
@keyframes idx3d-rise {
  to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .hero-doc-title,
  .hero-doc-sub,
  .hero-doc-actions {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
  }
  .idx-3d-dust { display: none; }
}
