:root{
/* Motion is functional: it confirms a tap or shows a bus moving. No bounces,
   no decorative entrances. Live-data changes cross-fade, never slide. */
--dur-instant:80ms; /* @kind other */
--dur-fast:120ms; /* @kind other */
--dur-base:180ms; /* @kind other */
--dur-slow:280ms; /* @kind other */
--dur-map:2000ms; /* @kind other */
--ease-out:cubic-bezier(.2,.8,.25,1); /* @kind other */
--ease-in-out:cubic-bezier(.4,0,.2,1); /* @kind other */
--ease-linear:linear; /* @kind other */
--transition-control:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out); /* @kind other */
--press-scale:.98; /* @kind other */
--pulse-live:live-pulse 1.8s var(--ease-in-out) infinite; /* @kind other */
}
@keyframes live-pulse{0%,100%{opacity:1}50%{opacity:.45}}
@media (prefers-reduced-motion:reduce){:root{--dur-fast:0ms; /* @kind other */
--dur-base:0ms; /* @kind other */
--dur-slow:0ms; /* @kind other */
--pulse-live:none; /* @kind other */
}}
