/* Generated by scripts/generators/build-site-motion.mjs from
   registry/site-motion.json. Do not hand-edit — constitution §0.2.

   Source version 1.0.0. 4 sequences.
   Under prefers-reduced-motion every sequence is skipped and its FINAL state is shown immediately. Not paused at frame zero — a viewer who cannot take motion still needs the information the sequence carries. */

/* The default entrance: a short rise and fade. Small travel, because a long one reads as a page still loading. */
@keyframes nhq-rise {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
/* A stage completing: the tick scales in and settles. */
@keyframes nhq-tick {
  0% { opacity: 0; transform: scale(0.6); }
  60% { opacity: 1; transform: scale(1.15); }
  100% { opacity: 1; transform: scale(1); }
}
/* A field being dropped at MINIMIZE. It slides and dims, but stays legible: the point of the visual is which field was removed, and a row faded to nothing tells the viewer less than no animation at all. */
@keyframes nhq-drop {
  0% { opacity: 1; transform: translateX(0); }
  100% { opacity: 0.62; transform: translateX(8px); }
}
/* A deterministic detection firing. One pulse, not a throb: a security control that looks like decoration gets ignored. */
@keyframes nhq-block {
  0% { box-shadow: 0 0 0 0 var(--danger-soft); }
  70% { box-shadow: 0 0 0 6px transparent; }
  100% { box-shadow: 0 0 0 0 transparent; }
}

/* ---------------------------------------------------------------- reveal */
/* Section entrances. Every element is visible by default and the animation only ever runs on top, so a failed observer can never leave content hidden. */
[data-reveal][data-reveal-armed="true"] { opacity: 0; }
[data-reveal][data-revealed="true"] {
  animation: nhq-rise 420ms var(--motion-ease) both;
}

/* ---------------------------------------------------------------- sequences */

/* From event to evidence — The notification rail, one stage at a time, then the evidence it wrote. The steps are the rail's real stages from registry/rails.json. */
[data-motion='rail-flow'][data-motion-armed="true"] .stage { opacity: 0; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(1) { animation: nhq-rise 420ms var(--motion-ease) 0ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(2) { animation: nhq-rise 420ms var(--motion-ease) 420ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(3) { animation: nhq-rise 420ms var(--motion-ease) 840ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(4) { animation: nhq-rise 420ms var(--motion-ease) 1260ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(5) { animation: nhq-rise 420ms var(--motion-ease) 1680ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(6) { animation: nhq-rise 420ms var(--motion-ease) 2100ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(7) { animation: nhq-rise 420ms var(--motion-ease) 2520ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(8) { animation: nhq-rise 420ms var(--motion-ease) 2940ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(9) { animation: nhq-rise 420ms var(--motion-ease) 3360ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(10) { animation: nhq-rise 420ms var(--motion-ease) 3780ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(11) { animation: nhq-rise 420ms var(--motion-ease) 4200ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(12) { animation: nhq-rise 420ms var(--motion-ease) 4620ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(13) { animation: nhq-rise 420ms var(--motion-ease) 5040ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .stage:nth-child(14) { animation: nhq-rise 420ms var(--motion-ease) 5460ms both; }
[data-motion='rail-flow'][data-motion-armed="true"] .timeline__row { opacity: 0; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(1) { animation: nhq-rise 360ms var(--motion-ease) 5880ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(2) { animation: nhq-rise 360ms var(--motion-ease) 6240ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(3) { animation: nhq-rise 360ms var(--motion-ease) 6600ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(4) { animation: nhq-rise 360ms var(--motion-ease) 6960ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(5) { animation: nhq-rise 360ms var(--motion-ease) 7320ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(6) { animation: nhq-rise 360ms var(--motion-ease) 7680ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(7) { animation: nhq-rise 360ms var(--motion-ease) 8040ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(8) { animation: nhq-rise 360ms var(--motion-ease) 8400ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(9) { animation: nhq-rise 360ms var(--motion-ease) 8760ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(10) { animation: nhq-rise 360ms var(--motion-ease) 9120ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(11) { animation: nhq-rise 360ms var(--motion-ease) 9480ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(12) { animation: nhq-rise 360ms var(--motion-ease) 9840ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(13) { animation: nhq-rise 360ms var(--motion-ease) 10200ms both; }
[data-motion='rail-flow'][data-motion-play="true"] .timeline__row:nth-child(14) { animation: nhq-rise 360ms var(--motion-ease) 10560ms both; }

/* Process first, store less — The preprocessing rail on a real payload: an undeclared field is dropped before anything stores it, and a card number is blocked by a deterministic check. Both behaviours are covered by tests. */
[data-motion='preprocess'][data-motion-armed="true"] .pp__row { opacity: 0; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(1) { animation: nhq-rise 220ms var(--motion-ease) 0ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(2) { animation: nhq-rise 220ms var(--motion-ease) 220ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(3) { animation: nhq-rise 220ms var(--motion-ease) 440ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(4) { animation: nhq-rise 220ms var(--motion-ease) 660ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(5) { animation: nhq-rise 220ms var(--motion-ease) 880ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(6) { animation: nhq-rise 220ms var(--motion-ease) 1100ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(7) { animation: nhq-rise 220ms var(--motion-ease) 1320ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(8) { animation: nhq-rise 220ms var(--motion-ease) 1540ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(9) { animation: nhq-rise 220ms var(--motion-ease) 1760ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(10) { animation: nhq-rise 220ms var(--motion-ease) 1980ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(11) { animation: nhq-rise 220ms var(--motion-ease) 2200ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(12) { animation: nhq-rise 220ms var(--motion-ease) 2420ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(13) { animation: nhq-rise 220ms var(--motion-ease) 2640ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__row:nth-child(14) { animation: nhq-rise 220ms var(--motion-ease) 2860ms both; }
[data-motion='preprocess'][data-motion-play="true"] .pp__out { animation: nhq-rise 220ms var(--motion-ease) 3080ms both; }

/* Four states, in order — Requested, sent, delivered, engaged — lit in sequence so the distance between them is visible rather than asserted. */
[data-motion='states'][data-motion-armed="true"] .state { opacity: 0; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(1) { animation: nhq-rise 700ms var(--motion-ease) 0ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(2) { animation: nhq-rise 700ms var(--motion-ease) 700ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(3) { animation: nhq-rise 700ms var(--motion-ease) 1400ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(4) { animation: nhq-rise 700ms var(--motion-ease) 2100ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(5) { animation: nhq-rise 700ms var(--motion-ease) 2800ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(6) { animation: nhq-rise 700ms var(--motion-ease) 3500ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(7) { animation: nhq-rise 700ms var(--motion-ease) 4200ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(8) { animation: nhq-rise 700ms var(--motion-ease) 4900ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(9) { animation: nhq-rise 700ms var(--motion-ease) 5600ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(10) { animation: nhq-rise 700ms var(--motion-ease) 6300ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(11) { animation: nhq-rise 700ms var(--motion-ease) 7000ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(12) { animation: nhq-rise 700ms var(--motion-ease) 7700ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(13) { animation: nhq-rise 700ms var(--motion-ease) 8400ms both; }
[data-motion='states'][data-motion-play="true"] .state:nth-child(14) { animation: nhq-rise 700ms var(--motion-ease) 9100ms both; }

/* One install, many flows — A pack cascading into a workspace. The rows are the pack's real contents from registry/packs.json. */
[data-motion='pack-install'][data-motion-armed="true"] .card { opacity: 0; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(1) { animation: nhq-rise 240ms var(--motion-ease) 0ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(2) { animation: nhq-rise 240ms var(--motion-ease) 240ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(3) { animation: nhq-rise 240ms var(--motion-ease) 480ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(4) { animation: nhq-rise 240ms var(--motion-ease) 720ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(5) { animation: nhq-rise 240ms var(--motion-ease) 960ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(6) { animation: nhq-rise 240ms var(--motion-ease) 1200ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(7) { animation: nhq-rise 240ms var(--motion-ease) 1440ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(8) { animation: nhq-rise 240ms var(--motion-ease) 1680ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(9) { animation: nhq-rise 240ms var(--motion-ease) 1920ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(10) { animation: nhq-rise 240ms var(--motion-ease) 2160ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(11) { animation: nhq-rise 240ms var(--motion-ease) 2400ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(12) { animation: nhq-rise 240ms var(--motion-ease) 2640ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(13) { animation: nhq-rise 240ms var(--motion-ease) 2880ms both; }
[data-motion='pack-install'][data-motion-play="true"] .card:nth-child(14) { animation: nhq-rise 240ms var(--motion-ease) 3120ms both; }

/* A dropped field leaves; it is removed, not hidden. */
[data-motion-play="true"] [data-pp="dropped"] { animation: nhq-rise 420ms var(--motion-ease) both, nhq-drop 520ms var(--motion-ease) 1.6s both; }
[data-motion-play="true"] [data-pp="blocked"] { animation: nhq-rise 420ms var(--motion-ease) both, nhq-block 900ms var(--motion-ease) 1.6s 2; }

/* ---------------------------------------------------------------- reduced motion */
/* Final state, immediately. Never frame zero. */
@media (prefers-reduced-motion: reduce) {
  [data-reveal][data-reveal-armed="true"],
  [data-motion='rail-flow'] .stage,
  [data-motion='preprocess'] .pp__row,
  [data-motion='states'] .state,
  [data-motion='pack-install'] .card,
  [data-motion='rail-flow'] .timeline__row {
    opacity: 1 !important;
    animation: none !important;
    transform: none !important;
  }
}
