/* Motion.
   A static Figma capture carries no timing data, so these are INFERRED from the
   hover-state pairs the file does document (every interactive element ships a
   :hover variant) plus the conventions of the source site. Flagged in readme.md
   — confirm against the live product before treating them as canon. */
:root{
  --duration-instant:80ms; /* @kind other */
  /* colour + opacity on hover */
  --duration-fast:150ms; /* @kind other */
  /* size, position, reveal */
  --duration-base:250ms; /* @kind other */
  /* panel and overlay entrances */
  --duration-slow:400ms; /* @kind other */
  /* scroll-in and ticker motion */
  --duration-ambient:800ms; /* @kind other */

  /* default: quick out, long settle */
  --ease-out:cubic-bezier(0.22,1,0.36,1); /* @kind other */
  --ease-in-out:cubic-bezier(0.65,0,0.35,1); /* @kind other */
  /* tickers and marquees only */
  --ease-linear:linear; /* @kind other */

  --transition-hover:color var(--duration-fast) var(--ease-out),
                     background-color var(--duration-fast) var(--ease-out),
                     border-color var(--duration-fast) var(--ease-out),
                     opacity var(--duration-fast) var(--ease-out); /* @kind other */
  --transition-transform:transform var(--duration-base) var(--ease-out); /* @kind other */
}
@media (prefers-reduced-motion:reduce){
  :root{
    --duration-instant:0ms; /* @kind other */
    --duration-fast:0ms; /* @kind other */
    --duration-base:0ms; /* @kind other */
    --duration-slow:0ms; /* @kind other */
    --duration-ambient:0ms; /* @kind other */
  }
}
