/* =========================================================
   ANIMAÇÕES — scroll reveal, entrada, microinterações
   ========================================================= */

[data-reveal]{
  opacity:0;
  transform:translateY(28px);
  filter:blur(6px);
  transition:opacity .9s cubic-bezier(.16,.84,.44,1), transform .9s cubic-bezier(.16,.84,.44,1), filter .9s cubic-bezier(.16,.84,.44,1);
}
[data-reveal].is-visible{
  opacity:1; transform:translateY(0); filter:blur(0);
}
[data-reveal-delay="1"]{ transition-delay:.08s; }
[data-reveal-delay="2"]{ transition-delay:.16s; }
[data-reveal-delay="3"]{ transition-delay:.24s; }
[data-reveal-delay="4"]{ transition-delay:.32s; }

@media (prefers-reduced-motion: reduce){
  [data-reveal]{ opacity:1; transform:none; filter:none; transition:none; }
}

/* Preloader inicial (somente index) */
.preloader{
  position:fixed; inset:0; z-index:200; background:var(--black);
  display:flex; align-items:center; justify-content:center; flex-direction:column; gap:18px;
  transition:opacity .8s ease, visibility .8s ease;
}
.preloader.is-hidden{ opacity:0; visibility:hidden; pointer-events:none; }
.preloader__mark{ width:64px; height:64px; }
.preloader__mark circle{ fill:none; stroke:var(--stencil); stroke-width:1; }
.preloader__mark path{
  fill:none; stroke:var(--stencil-glow); stroke-width:1.4;
  stroke-dasharray:220; stroke-dashoffset:220;
  animation:drawStencil 1.6s cubic-bezier(.16,.84,.44,1) forwards .1s;
}
.preloader__label{ font-family:var(--font-mono); font-size:.68rem; letter-spacing:.2em; text-transform:uppercase; color:var(--ash); }

/* Cursor agulha (somente desktop, ponteiro fino) */
.needle-cursor{
  position:fixed; top:0; left:0; width:26px; height:26px; pointer-events:none; z-index:9999;
  transform:translate(-50%,-50%); mix-blend-mode:difference; opacity:0; transition:opacity .3s;
}
.needle-cursor.is-active{ opacity:1; }
.needle-cursor svg{ width:100%; height:100%; }

/* Skeleton shimmer para placeholders de imagem */
@keyframes shimmer{ 0%{ background-position:-200% 0;} 100%{ background-position:200% 0;} }
.ph-shimmer{
  background:linear-gradient(100deg, #0a0a0b 30%, #17171a 50%, #0a0a0b 70%);
  background-size:200% 100%;
  animation:shimmer 3.4s ease-in-out infinite;
}
