/* OLS motion: short, flat, no bounce. Fade + 4-8px travel only. */
:root{
  --ease-standard: cubic-bezier(0.2, 0, 0.2, 1); /* @kind other */
  --ease-out: cubic-bezier(0, 0, 0.2, 1); /* @kind other */
  --duration-fast: 120ms; /* @kind other */
  --duration-base: 180ms; /* @kind other */
  --duration-slow: 240ms; /* @kind other */
  --duration-sheet: 280ms; /* @kind other */
  --travel: 6px;

  --press-scale: 0.985; /* @kind other */

  /* SANCTIONED EXCEPTION — trust-strip count-up. This is the ONE motion pattern outside
     "fade + ≤6px travel": the two COUNT figures in the homepage trust strip — 23 (items)
     and 580 (reviews) — animate from zero to their real value once on load (not on scroll).
     EXCLUDED, always static: the 4.3 rating (climbing from zero reads as "starting bad")
     and 100%. NEVER calorie/protein/carb/fat/price — published facts must not build up
     from zero. Progressive enhancement: real value is the source in the HTML, JS animates
     a visual copy; JS-off shows the real value static. prefers-reduced-motion jumps
     straight to the final value. Not a general utility. */
  --duration-countup: 900ms; /* trust strip only */
}
@media (prefers-reduced-motion: reduce){
  :root{ --duration-fast: 0ms; /* @kind other */ --duration-base: 0ms; /* @kind other */ --duration-slow: 0ms; /* @kind other */ --duration-sheet: 0ms; /* @kind other */ --travel: 0px; --press-scale: 1; /* @kind other */ --duration-countup: 0ms; }
}
