:root{
  /* Rule 1 — a layer lighting up: slow, confident, sweeps in */
  --motion-layer-on-dur:640ms;
  --motion-layer-on-ease:cubic-bezier(.16,.84,.24,1);
  --motion-layer-sweep-dur:1900ms; /* 1100ms dans le design system, ralenti pour la démonstration */

  /* Rule 2 — a parcel going out: quick, unsentimental, no glow */
  --motion-parcel-off-dur:320ms;
  --motion-parcel-off-ease:cubic-bezier(.4,0,1,1);
  --motion-parcel-off-stagger:22ms;

  /* Rule 3 — an intersection igniting: snap overshoot, then long settle */
  --motion-ignite-dur:180ms;
  --motion-ignite-ease:cubic-bezier(0,.92,.18,1);
  --motion-ignite-settle-dur:900ms;
  --motion-ignite-settle-ease:cubic-bezier(.2,.6,.2,1);

  /* UI */
  --motion-ui-dur:160ms;
  --motion-ui-ease:cubic-bezier(.3,.7,.3,1);
  --motion-caret-dur:1s;
}
@keyframes layer-on{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@keyframes sweep{from{transform:translateX(-120%)}to{transform:translateX(220%)}}
@keyframes parcel-off{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.5)}}
@keyframes ignite{0%{transform:scale(1);box-shadow:var(--glow-sm)}55%{transform:scale(1.65);box-shadow:var(--glow-lg)}100%{transform:scale(1.12);box-shadow:var(--glow-md)}}
@keyframes pulse{0%,100%{opacity:.55}50%{opacity:1}}
@keyframes caret{0%,49%{opacity:1}50%,100%{opacity:0}}
