/* Landing motion (08.11). Only transform and opacity. Nothing here applies without the `lm` class (public/landing-motion.js),
   and that class is never set with prefers-reduced-motion, so the page stays complete and still. */
.lm .lm-r{transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1);transition-delay:calc(var(--lm-i,0)*70ms)}
.lm .lm-r:not(.lm-in){opacity:0;transform:translateY(22px)}
@media print{.lm .lm-r{opacity:1!important;transform:none!important}}
.lm #home .hero-copy>*{animation:lm-rise .7s cubic-bezier(.16,1,.3,1) backwards}
.lm #home .hero-copy>:nth-child(2){animation-delay:50ms}.lm #home .hero-copy>:nth-child(3){animation-delay:100ms}.lm #home .hero-copy>:nth-child(4){animation-delay:150ms}.lm #home .hero-copy>:nth-child(n+5){animation-delay:200ms}
@keyframes lm-rise{from{transform:translateY(16px);opacity:.25}}
.lm #home .hero-image>img{animation:lm-photo 1.5s cubic-bezier(.16,1,.3,1) backwards}
@keyframes lm-photo{from{transform:scale(1.05)}}
.lm #home .corner-label{animation:lm-sticker .8s cubic-bezier(.34,1.56,.64,1) .7s backwards}
@keyframes lm-sticker{from{transform:rotate(12deg) scale(.7);opacity:0}}
.lm #home .image-label{animation:lm-rise .7s cubic-bezier(.16,1,.3,1) .35s backwards}
.lm #discuss-request{position:relative;overflow:hidden}
.lm #discuss-request::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 30%,rgba(255,255,255,0.4) 50%,transparent 70%);transform:translateX(-120%);animation:lm-sheen 1.1s ease-in-out 1.3s}
@keyframes lm-sheen{to{transform:translateX(120%)}}
.lm-accents{position:absolute;inset:0;overflow:hidden;pointer-events:none;transition:transform .35s ease-out}
.lm-band{position:absolute;top:-30%;left:-10%;width:34%;height:160%;background:linear-gradient(90deg,rgba(110,38,248,0.0),rgba(110,38,248,0.2) 50%,rgba(110,38,248,0.0));transform:rotate(16deg) translateX(-130%);animation:lm-band 2.2s cubic-bezier(.33,0,.2,1) .25s forwards}
.lm-band-2{left:18%;width:16%;background:linear-gradient(90deg,rgba(255,255,255,0.0),rgba(255,255,255,0.22) 50%,rgba(255,255,255,0.0));animation-delay:.5s}
@keyframes lm-band{to{transform:rotate(16deg) translateX(460%)}}
.lm-spark{position:absolute;display:block;width:22px;height:22px;background:var(--surface);clip-path:polygon(50% 0,57% 43%,100% 50%,57% 57%,50% 100%,43% 57%,0 50%,43% 43%);opacity:0;animation:lm-spark-in .8s cubic-bezier(.34,1.56,.64,1) 1s forwards,lm-drift 7s ease-in-out 1.8s 3}
.lm-s1{left:8%;top:9%}
.lm-s2{left:20%;top:28%;width:14px;height:14px;background:var(--lime);animation-delay:1.25s,2.05s}
.lm-s3{right:9%;top:30%;width:16px;height:16px;animation-delay:1.5s,2.3s}
@keyframes lm-spark-in{from{opacity:0;transform:scale(.2) rotate(-40deg)}to{opacity:.95;transform:none}}
@keyframes lm-drift{50%{transform:translateY(-7px) rotate(12deg)}}
@media (hover:hover){
 .lm .how-grid>*,.lm .toolkit-grid>*,.lm .audience-grid>*,.lm .mentor-grid>*,.lm .package-card,.lm .curriculum-row{transition:transform .2s cubic-bezier(.16,1,.3,1)}
 .lm .how-grid>*:hover,.lm .toolkit-grid>*:hover,.lm .audience-grid>*:hover,.lm .mentor-grid>*:hover,.lm .package-card:hover,.lm .curriculum-row:hover{transform:translateY(-3px)}
}
.lm .light-btn,.lm .button{transition:transform .15s cubic-bezier(.16,1,.3,1)}
.lm .light-btn:active,.lm .button:active{transform:scale(.97)}
