/* ══ ONE MOTION LANGUAGE FOR THE FIELD ═══════════════════════════════════════════════════════════
   Shared by the landing page, the restyled atlas and the guide: one easing curve, two durations, and a
   handful of named moves. Nothing here is decorative for its own sake: things rise as they arrive, fill as
   they count, lift when they can be pressed. Under reduced motion every move collapses to its resting state. */
:root { --ease:cubic-bezier(.2,.8,.2,1); --dur:.55s; --dur-fast:.25s; }

/* arriving: a section, a sheet, a column */
.reveal { opacity:0; transform:translateY(22px); transition:opacity var(--dur) var(--ease), transform var(--dur) var(--ease); }
.reveal.in { opacity:1; transform:none; }
.stagger > * { opacity:0; transform:translateY(18px); transition:opacity .5s var(--ease), transform .5s var(--ease); }
.stagger.in > * { opacity:1; transform:none; }
.stagger.in > *:nth-child(2) { transition-delay:.07s; } .stagger.in > *:nth-child(3) { transition-delay:.14s; } .stagger.in > *:nth-child(4) { transition-delay:.21s; }
.stagger.in > *:nth-child(5) { transition-delay:.28s; } .stagger.in > *:nth-child(6) { transition-delay:.35s; } .stagger.in > *:nth-child(7) { transition-delay:.42s; } .stagger.in > *:nth-child(8) { transition-delay:.49s; }

/* the named moves */
@keyframes fm-rise { from { opacity:0; transform:translateY(14px); } to { opacity:1; transform:none; } }
@keyframes fm-pop { 0% { opacity:0; transform:scale(.94); } 60% { opacity:1; transform:scale(1.02); } 100% { opacity:1; transform:none; } }
@keyframes fm-fill { from { width:0; } }
@keyframes fm-fade { from { opacity:0; } to { opacity:1; } }
@keyframes fm-blink { 0%, 100% { opacity:1; } 50% { opacity:.35; } }

/* pressable things lift a little; nothing jumps */
.lift { transition:transform .3s var(--ease), box-shadow .3s ease; }
.lift:hover { transform:translateY(-3px); }

@media (prefers-reduced-motion: reduce) {
  .reveal, .stagger > * { opacity:1 !important; transform:none !important; transition:none !important; }
  .lift:hover { transform:none; }
  * { animation-duration:.001s !important; animation-iteration-count:1 !important; transition-duration:.001s !important; }
}
