/* ============================================================
   CENTRAL PARK RESIDENCES — ANIMATIONS & TIMING
   animations.css
   ------------------------------------------------------------
   Keyframes, the scroll-reveal system, and the reduced-motion
   guard. Extracted verbatim from assets/site.css.

   Timing reference (durations used across the design, applied
   inline on components in core.css/utilities.css):
     • UI transitions ....... .3s – .55s
     • Nav solidify ......... .45s
     • Accordion body ....... .55s   (max-height)
     • Image zoom on hover .. 1s
     • Reveal in ............ 1s
   Standard easing token: --ease  (cubic-bezier(.22,.61,.36,1))

   Depends on: variables.css
   ============================================================ */

/* ---- Location home-pin pulse (used by .map-pin.home .pulse) ---- */
@keyframes pulse{0%{transform:scale(.6);opacity:.8;}100%{transform:scale(2.4);opacity:0;}}

/* ---- Scarcity dot pulse (used by .scarcity .pulse-dot) ---- */
@keyframes scpulse{0%{box-shadow:0 0 0 0 rgba(205,242,74,.55);}70%{box-shadow:0 0 0 8px rgba(205,242,74,0);}100%{box-shadow:0 0 0 0 rgba(205,242,74,0);}}

/* ---- Form success fade-in (used by .aform-success) ---- */
@keyframes fadein{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:none;}}

/* ============================================================
   SCROLL-REVEAL SYSTEM
   Elements start hidden and animate in when observed (JS toggles .in).
   Stagger with .d1 / .d2 / .d3.
   ============================================================ */
.reveal{opacity:0;transform:translateY(30px);transition:opacity 1s var(--ease),transform 1s var(--ease);}
.reveal.in{opacity:1;transform:none;}
.reveal.d1{transition-delay:.08s;}
.reveal.d2{transition-delay:.16s;}
.reveal.d3{transition-delay:.24s;}
@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none;}}
