/* =========================================================
   ANIMATIONS — refinadas, no decorativas
========================================================= */

[data-reveal]{
  opacity:0;
  transform: translateY(18px);
  transition:
    opacity .7s var(--ease),
    transform .7s var(--ease),
    border-color .3s var(--ease-soft),
    box-shadow .3s var(--ease-soft),
    background-color .3s var(--ease-soft),
    color .3s var(--ease-soft);
  transition-delay: var(--reveal-delay, 0ms), var(--reveal-delay, 0ms), 0ms, 0ms, 0ms, 0ms;
}
[data-reveal].is-visible{ opacity:1; transform: translateY(0); }

.header{ animation: headerDrop .5s var(--ease) both; }
@keyframes headerDrop{
  from{ opacity:0; transform: translateY(-10px); }
  to{ opacity:1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce){
  *, *::before, *::after{
    animation-duration:0.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:0.001ms !important;
    scroll-behavior:auto !important;
  }
  [data-reveal]{ opacity:1; transform:none; }
  .signal::after{ animation:none; left:0; }
}
