/* =========================================================
   ANIMATIONS — subtle, purposeful motion only
   ========================================================= */

@keyframes pulse{
  0%{ box-shadow:0 0 0 0 rgba(124,211,166,.55); }
  70%{ box-shadow:0 0 0 8px rgba(124,211,166,0); }
  100%{ box-shadow:0 0 0 0 rgba(124,211,166,0); }
}

@keyframes fadeUp{
  from{ opacity:0; transform:translateY(18px); }
  to{ opacity:1; transform:translateY(0); }
}

@keyframes lineGrow{
  from{ transform:scaleX(0); }
  to{ transform:scaleX(1); }
}

@keyframes dividerReveal{
  from{ width:0; }
  to{ width:100%; }
}

/* Scroll reveal: elements start hidden, revealed via .in-view (JS/IntersectionObserver) */
[data-reveal]{
  opacity:0;
  transform:translateY(22px);
  transition:opacity .7s cubic-bezier(.22,.61,.36,1), transform .7s cubic-bezier(.22,.61,.36,1);
}
[data-reveal].in-view{ opacity:1; transform:translateY(0); }
[data-reveal="1"].in-view{ transition-delay:.05s; }
[data-reveal="2"].in-view{ transition-delay:.12s; }
[data-reveal="3"].in-view{ transition-delay:.19s; }
[data-reveal="4"].in-view{ transition-delay:.26s; }

.divider-line{
  height:1px; background:var(--border); position:relative; overflow:hidden;
}
.divider-line[data-reveal].in-view::after{ animation:lineGrow .9s ease forwards; }
.divider-line::after{
  content:''; position:absolute; inset:0; background:var(--secondary); transform-origin:left; transform:scaleX(0);
}

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