/* ============================================================
   Static override — L1. No motion of any kind.
   Load AFTER design.css. Retains only instantaneous state
   feedback on hover/focus, which is an affordance, not an effect.
   ============================================================ */

/* kill every animation outright */
*,*::before,*::after{animation:none!important}

/* everything renders in its final state, immediately */
[data-reveal]{opacity:1!important;transform:none!important;transition:none!important}
.h1-line>span{transform:none!important}
.fig path{stroke-dashoffset:0!important}
.fig .fade{opacity:1!important;transition:none!important}
.magnet{transform:none!important;transition:none!important}

/* the manifesto band becomes a fixed statement rather than a marquee */
.marquee{padding:22px 0}
.marquee-track{width:100%;max-width:var(--max);margin:0 auto;padding:0 var(--pad);
  gap:0;justify-content:flex-start;animation:none;white-space:normal}
.marquee-track span:not(:first-child),.marquee-track i{display:none}
.marquee-track span:first-child{letter-spacing:.2em}

/* links underline directly instead of drawing */
.lnk::after{display:none}
.lnk:hover{text-decoration:underline;text-underline-offset:3px}

/* hover/focus feedback: near-instant, no easing curve to read as motion */
.btn,.btn-ghost,.lang button,.spec tbody tr,.dochead{transition:background .1s linear,color .1s linear,border-color .1s linear}
.cell{transition:background .1s linear,color .1s linear}
.cell:hover{padding-left:0;padding-right:0}   /* no shift — invert in place */
.rev::after{transition:none}
.toast{transition:opacity .1s linear;transform:translate(-50%,0)}
.toast.on{transform:translate(-50%,0)}

@media (max-width:820px){
  .marquee-track{padding:0 var(--pad)}
}
