/* MOTION (2026-09-27) — see showcase-motion.js. Blocks rise in, numbers count,
   headings get one sweep of light, the key figure breathes. */
.mo{opacity:0;transform:translateY(16px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transition-delay:calc(var(--mo-i,0) * 70ms)}
.mo.mo-in{opacity:1;transform:none}
.lst-list li.mo{transform:translateX(-10px)}
.lst-tags.mo{transform:none}
/* the tags shimmer once as the block lands */
.mo-in .lst-tags li{animation:moTag .9s ease both;animation-delay:calc(var(--mo-i,0) * 70ms + 200ms)}
.lst-tags li:nth-child(2){--mo-i:1}.lst-tags li:nth-child(3){--mo-i:2}.lst-tags li:nth-child(4){--mo-i:3}.lst-tags li:nth-child(5){--mo-i:4}.lst-tags li:nth-child(6){--mo-i:5}
@keyframes moTag{0%{background:rgba(var(--accent-rgb),.07);box-shadow:0 0 0 0 rgba(var(--accent-rgb),0)}45%{background:rgba(var(--accent-rgb),.28);box-shadow:0 0 22px rgba(var(--accent-rgb),.35)}100%{background:rgba(var(--accent-rgb),.07);box-shadow:0 0 0 0 rgba(var(--accent-rgb),0)}}
/* one sweep of light across a heading */
.mo-sweep{position:relative;background:linear-gradient(100deg,currentColor 0 42%,var(--accent) 50%,currentColor 58% 100%) -200% 0/300% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;background-position:0 0;animation:moSweep 2.2s cubic-bezier(.4,0,.2,1) .35s 1 both}
@keyframes moSweep{from{background-position:100% 0}to{background-position:0 0}}   /* one pass, ends clean (MOTION-AUDIT #6: -200%→200% crossed twice and parked a band mid-heading) */
/* the key figure keeps breathing after it lands */
.mo-live{animation:moLive 6s ease-in-out 1.4s infinite alternate}
.lst-stat.mo-live b{text-shadow:0 0 0 rgba(var(--accent-rgb),0);animation:moGlow 6s ease-in-out 1.4s infinite alternate}
@keyframes moLive{from{text-shadow:0 0 0 rgba(var(--accent-rgb),0)}to{text-shadow:0 0 28px rgba(var(--accent-rgb),.45)}}
@keyframes moGlow{from{text-shadow:0 0 0 rgba(var(--accent-rgb),0)}to{text-shadow:0 0 22px rgba(var(--accent-rgb),.4)}}
/* highlights: a hover lifts a tile or a band bullet toward the light */
.lst-tile{transition:border-color .25s,transform .35s cubic-bezier(.16,1,.3,1),background .25s}
.lst-tile:hover{border-color:rgba(var(--accent-rgb),.6);background:rgba(var(--accent-rgb),.07);transform:translateY(-2px)}
.lst-list li{transition:color .2s,transform .25s}
.lst-list li:hover{color:#fff;transform:translateX(3px)}
.lst-list li:hover::before{box-shadow:0 0 0 4px rgba(var(--accent-rgb),.25)}
.lst-list li::before{transition:box-shadow .25s}
.lst-band h3{position:relative;overflow:hidden}
.lst-band h3::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:linear-gradient(90deg,var(--accent),transparent 70%);transform:scaleX(0);transform-origin:left;transition:transform .8s cubic-bezier(.16,1,.3,1) .2s}
.lst-band.mo-in h3::after{transform:scaleX(1)}
/* Concierge rows arrive in sequence and light on hover */
#conciergePage .g-path{transition:border-color .25s,transform .3s cubic-bezier(.16,1,.3,1),background .25s}
#conciergePage .g-path:hover{transform:translateX(4px)}
/* the map settles in a little later than the words */
.lst-map.mo{transform:scale(.985)}
@media (prefers-reduced-motion:reduce){.mo{opacity:1;transform:none;transition:none}.mo-sweep{animation:none;background:none;-webkit-text-fill-color:currentColor}.mo-live,.lst-stat.mo-live b,.mo-in .lst-tags li{animation:none}}
