/* Motion is an enhancement: content remains visible if scripts are unavailable. */
::selection{background:var(--soi-terracotta);color:#fff}
.reading-progress{position:fixed;top:0;left:0;z-index:30;width:100%;height:2px;background:var(--soi-slate-deep);transform:scaleX(var(--read,0));transform-origin:left;pointer-events:none}

/* ticker marquee */
.ticker-track{animation:none}
body.motion-enabled .ticker-track{animation:coast 36s linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
@keyframes coast{to{transform:translateX(-50%)}}

/* hero photo drift (JS sets --photo-drift on scroll) */
.hero-photo img{transform:translateY(var(--photo-drift,0px))}

/* nudge underline on nav/footer links */
nav a:not(.nav-cta),footer a:not(.brand){position:relative}
nav a:not(.nav-cta)::after,footer a:not(.brand)::after{content:'';position:absolute;left:0;bottom:-6px;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform var(--duration-base) var(--ease-out)}
nav a:not(.nav-cta):hover::after,nav a[aria-current=location]::after,footer a:not(.brand):hover::after{transform:scaleX(1);transform-origin:left}

/* a white wash is invisible on linen, so the hover tint is terracotta */
.hero-bottom a:hover{background:var(--soi-terracotta-tint);transform:translateY(3px)}

.motion-toggle:hover span{background:#F2ECDB26}

body.motion-paused *,body.motion-paused *::before,body.motion-paused *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
html:has(body.motion-paused){scroll-behavior:auto}
@media(hover:none){.how-grid article:hover,.session-card:hover{transform:none}}
@media(prefers-reduced-motion:reduce){.ticker-track{animation:none!important}.reading-progress{display:none}}
