/* Slip Surgeon light motion: transform/opacity only, off for prefers-reduced-motion */
@media (prefers-reduced-motion:no-preference){
.mo .mo-r{opacity:0;transform:translateY(14px)}
.mo .mo-r.mo-in{opacity:1;transform:none;transition:opacity .5s ease,transform .5s cubic-bezier(.2,.7,.2,1)}
.combo,.spot,.plan,.price-card,.step,.hero-card{transition:transform .2s ease}
@media (hover:hover){.combo:not(.sk):hover,.spot:hover,.plan:hover,.price-card:hover,.step:hover{transform:translateY(-3px)}}
.combo:not(.sk):active,.spot:active{transform:scale(.993)}
.combo:not(.sk),.spot,.res:not(.hidden),.rd:not(.hidden){animation:mo-pop .38s cubic-bezier(.2,.7,.2,1) backwards}
.combos>:nth-child(2),.spots>:nth-child(2){animation-delay:.06s}.combos>:nth-child(3),.spots>:nth-child(3){animation-delay:.12s}
.spots>:nth-child(n+4){animation-delay:.16s}
@keyframes mo-pop{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
.drop{position:relative}
.drop::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 5px rgba(70,220,200,.2),0 0 26px rgba(70,220,200,.45);opacity:0;pointer-events:none;animation:mo-glow 3s ease-in-out infinite}
.drop:hover::after,.drop:focus-within::after{animation:none;opacity:0}
@keyframes mo-glow{50%{opacity:.85}}
.mo-beat{position:absolute;left:0;right:0;top:100%;height:16px;overflow:hidden;pointer-events:none}
.mo-beat svg{position:absolute;left:0;top:0;width:120px;height:16px;transform:translateX(-130px);opacity:.7;animation:mo-run 5s cubic-bezier(.45,.05,.55,.95) .8s infinite}
.mo-beat path{fill:none;stroke:#46DCC8;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
@keyframes mo-run{0%{transform:translateX(-130px)}55%,100%{transform:translateX(var(--mo-w,100vw))}}
}
.spot.sk{min-height:150px}
.sk{position:relative;overflow:hidden;background:#0D1828!important;border-color:#16262F!important}
@media (prefers-reduced-motion:no-preference){
.sk::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(70,220,200,.07),transparent);transform:translateX(-100%);animation:mo-sh 1.3s ease-in-out infinite}
@keyframes mo-sh{to{transform:translateX(100%)}}
}
/* ---- v2: livelier pass ---- */
.mo-tick{height:34px;overflow:hidden;border-bottom:1px solid rgba(70,220,200,.10);background:rgba(8,19,26,.7);position:relative;font:600 12px/34px "JetBrains Mono",monospace;letter-spacing:.06em;color:var(--mut,#9DB1B6);white-space:nowrap}
.mo-tick::before,.mo-tick::after{content:"";position:absolute;top:0;bottom:0;width:28px;z-index:1;pointer-events:none}
.mo-tick::before{left:0;background:linear-gradient(90deg,#061015,transparent)}.mo-tick::after{right:0;background:linear-gradient(-90deg,#061015,transparent)}
.mo-tt{display:inline-flex;will-change:transform}
.mo-tt span,.mo-tt a{padding:0 18px;color:inherit;text-decoration:none}.mo-tt b{color:#F2F7F8;font-weight:700}.mo-tt em{font-style:normal;color:#46DCC8}
.mo-tt i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#46DCC8;margin-right:8px;vertical-align:1px}
@media (prefers-reduced-motion:reduce){.mo-tick{overflow-x:auto}}
@media (prefers-reduced-motion:no-preference){
.mo-tt.run{animation:mo-mq var(--mo-d,40s) linear infinite}.mo-tick:hover .mo-tt{animation-play-state:paused}
@keyframes mo-mq{to{transform:translateX(-50%)}}
.mo-tt i{animation:mo-dot 1.6s ease-in-out infinite}
/* hero: headline rise, drifting glow, live dot */
.hero h1,.hero .eyebrow,.hero .live{animation:mo-rise .6s cubic-bezier(.2,.7,.2,1) backwards}
.hero h1 em{display:inline-block;animation:mo-rise .7s cubic-bezier(.2,.7,.2,1) .18s backwards}
.hero .sub{animation:mo-rise .6s cubic-bezier(.2,.7,.2,1) .1s backwards}
@keyframes mo-rise{from{opacity:0;transform:translateY(14px)}}
.hero{position:relative;overflow:hidden}.hero>.wrap{position:relative;z-index:1}
.hero::after{content:"";position:absolute;z-index:0;top:-30%;right:-25%;width:min(80vw,720px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(70,220,200,.11),rgba(70,220,200,0) 65%);pointer-events:none;will-change:transform;animation:mo-drift 14s ease-in-out infinite alternate}
@keyframes mo-drift{to{transform:translate(-22%,18%) scale(1.15)}}
#upd::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:#46DCC8;box-shadow:0 0 8px #46DCC8;margin-right:7px;vertical-align:1px;animation:mo-dot 1.6s ease-in-out infinite}
@keyframes mo-dot{50%{opacity:.3}}
/* shine sweep on main CTAs (background-position, so nothing is clipped) */
.btn-teal,.top .btn,.cta .btn,.place,.drop{position:relative}
.btn-teal::before,.top .btn::before,.cta .btn::before,.place::before,.drop::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(100deg,transparent 40%,rgba(255,255,255,.38) 50%,transparent 60%) no-repeat;background-size:250% 100%;background-position:100% 0;animation:mo-shine 5s ease-in-out 1.5s infinite}
.top .btn::before{animation-delay:2.6s}.place::before{animation-duration:3.5s;animation-delay:.6s}
@keyframes mo-shine{0%{background-position:100% 0}22%,100%{background-position:0 0}}
/* homepage example card: scan + legs light up in turn */
.hero-card{position:relative;overflow:hidden}
.hero-card::after{content:"";position:absolute;left:0;right:0;top:0;height:60px;background:linear-gradient(180deg,rgba(70,220,200,0),rgba(70,220,200,.13) 80%,rgba(70,220,200,.6));border-bottom:1px solid rgba(70,220,200,.8);transform:translateY(-70px);pointer-events:none;animation:mo-scan 5.5s cubic-bezier(.45,.05,.55,.95) 1s infinite}
@keyframes mo-scan{0%{transform:translateY(-70px)}45%{transform:translateY(var(--mo-h,330px))}100%{transform:translateY(var(--mo-h,330px))}}
.hero-card .leg span{display:inline-block;animation:mo-tag 5.5s ease-out 1s infinite}
.hero-card .leg:nth-of-type(2) span{animation-delay:1.45s}.hero-card .leg:nth-of-type(3) span{animation-delay:1.9s}.hero-card .leg:nth-of-type(4) span{animation-delay:2.35s}.hero-card .leg:nth-of-type(5) span{animation-delay:2.8s}
@keyframes mo-tag{0%,4%{transform:none;filter:none}9%{transform:scale(1.18);filter:brightness(1.6)}16%,100%{transform:none;filter:none}}
.hero-card .books span{display:inline-block;animation:mo-book 5.5s ease-out 3.4s infinite}.hero-card .books span+span{animation-delay:3.6s}
@keyframes mo-book{0%{transform:none}5%{transform:translateY(-3px) scale(1.06)}12%,100%{transform:none}}
/* top Hunter combo: moving gradient border */
@property --mo-a{syntax:"<angle>";inherits:false;initial-value:0deg}
.combos>.combo:not(.sk):first-child{position:relative}
.combos>.combo:not(.sk):first-child::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1.5px;background:conic-gradient(from var(--mo-a),rgba(70,220,200,0) 0 55%,#46DCC8 75%,rgba(70,220,200,0) 95%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;animation:mo-spin 5s linear infinite}
@keyframes mo-spin{to{--mo-a:360deg}}
.combo:not(.sk),.spot{animation-duration:.5s}
.combos>:nth-child(2){animation-delay:.1s}.combos>:nth-child(3){animation-delay:.2s}
/* cards: tilt (set by JS) */
.mo-tilt{transition:transform .25s ease-out;will-change:transform}
/* menus */
.tn-menu:not([hidden]){animation:mo-drop .18s cubic-bezier(.2,.7,.2,1)}
@keyframes mo-drop{from{opacity:0;transform:translateY(-6px) scale(.98)}}
/* Defense: rows + bars animate in */
#tb tr{animation:mo-row .4s cubic-bezier(.2,.7,.2,1) backwards}
#tb tr:nth-child(2){animation-delay:.03s}#tb tr:nth-child(3){animation-delay:.06s}#tb tr:nth-child(4){animation-delay:.09s}#tb tr:nth-child(5){animation-delay:.12s}#tb tr:nth-child(6){animation-delay:.15s}#tb tr:nth-child(7){animation-delay:.18s}#tb tr:nth-child(8){animation-delay:.21s}#tb tr:nth-child(n+9){animation-delay:.24s}
@keyframes mo-row{from{opacity:0;transform:translateX(-10px)}}
.bar i{transform-origin:left center;animation:mo-bar .7s cubic-bezier(.2,.7,.2,1) .15s backwards}.bar i[style*="4A5A63"]{transform-origin:right center}
@keyframes mo-bar{from{transform:scaleX(0)}}
/* Slip Surgery: reading sweep, legs check in, matched pulse */
.prog{position:relative;overflow:hidden}
.prog:not(.done)::after{content:"";position:absolute;top:0;bottom:0;left:0;width:30%;background:linear-gradient(90deg,transparent,rgba(70,220,200,.18),transparent);transform:translateX(-100%);animation:mo-sweep 1.1s linear infinite;pointer-events:none}
@keyframes mo-sweep{to{transform:translateX(340%)}}
.mo-first .lr{animation:mo-row .42s cubic-bezier(.2,.7,.2,1) backwards}
.mo-first .lr .av{animation:mo-tick .5s cubic-bezier(.3,1.6,.5,1) backwards}
.mo-first .lr:nth-of-type(2),.mo-first .lr:nth-of-type(2) .av{animation-delay:.09s}.mo-first .lr:nth-of-type(3),.mo-first .lr:nth-of-type(3) .av{animation-delay:.18s}.mo-first .lr:nth-of-type(4),.mo-first .lr:nth-of-type(4) .av{animation-delay:.27s}.mo-first .lr:nth-of-type(5),.mo-first .lr:nth-of-type(5) .av{animation-delay:.36s}.mo-first .lr:nth-of-type(n+6),.mo-first .lr:nth-of-type(n+6) .av{animation-delay:.45s}
@keyframes mo-tick{from{transform:scale(.4);opacity:0}60%{transform:scale(1.12)}}
.tile{position:relative}
.mo-first .tile::after{content:"";position:absolute;inset:-2px;border-radius:15px;border:2px solid currentColor;opacity:0;pointer-events:none;animation:mo-ring .9s ease-out .55s 2}
.mo-first .tile.fd::after{color:#1493FF}.mo-first .tile.mg::after{color:#C9A65A}
@keyframes mo-ring{0%{opacity:.9;transform:scale(1)}100%{opacity:0;transform:scale(1.07)}}
/* pause what is offscreen or in a hidden tab */
.mo-off,.mo-off *,.mo-off::before,.mo-off::after,.mo-off *::before,.mo-off *::after,.mo-hid *,.mo-hid *::before,.mo-hid *::after{animation-play-state:paused!important}
}
