/* Motion layer: entrances, hover and pointer effects on top of style.css and refinement.css.
   Hidden "before" states live only under html.mo, which motion.js sets when motion is allowed,
   so the page reads fully without JS and with reduced motion (style.css also stops every animation there). */
@property --mo-a{syntax:'<angle>';inherits:false;initial-value:0deg}
.mo-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.mo-paused *,.mo-paused *::before,.mo-paused *::after{animation-play-state:paused!important}
/* rows and cards wait off to the side before they come in; that must never widen the page */
main>section{overflow-x:clip}

/* every section heading comes in word by word, from blur to sharp */
.mo .mo-w{display:inline-block;opacity:0;filter:blur(12px);transform:translateY(.35em) rotate(2deg);transition:opacity .8s var(--ease),filter .8s var(--ease),transform 1s var(--ease);transition-delay:calc(var(--w,0) * 70ms + .1s)}
.mo h2.mo-in .mo-w{opacity:1;filter:blur(0);transform:none}
/* the base styles color every span in a heading as its second line; a word keeps the color of where it sits */
.mo h2 span.mo-w{color:inherit}
/* a soft ice light follows the pointer over the dark sections (desktop) */
.mo-glow{position:fixed;top:0;left:0;width:680px;height:680px;margin:-340px 0 0 -340px;border-radius:50%;background:radial-gradient(closest-side,#b4edff14,#b4edff07 55%,transparent);pointer-events:none;z-index:5;opacity:0;transition:opacity .7s;will-change:transform}
.mo-glow.on{opacity:1}
/* how far down to the form */
.mo-progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:41;transform:scaleX(0);transform-origin:right;background:linear-gradient(270deg,var(--sky),#54bde4);box-shadow:0 0 12px #b4edffb3;pointer-events:none}
/* buttons lean toward the pointer, with a light under it */
.cta{transition:transform .35s var(--ease),box-shadow .35s,background .35s,translate .45s var(--ease)}
.cta-arrow{transition:rotate .35s var(--ease),translate .45s var(--ease)}
.mo-mag{isolation:isolate;transition:transform .35s var(--ease),background .3s,box-shadow .3s,translate .45s var(--ease)}
.mo-mag::before{content:'';position:absolute;inset:0;border-radius:inherit;background:radial-gradient(160px circle at var(--bx,50%) var(--by,50%),#ffffffc7,transparent 70%);opacity:0;transition:opacity .4s;z-index:-1;pointer-events:none}
.mo-mag:hover::before{opacity:.75}
.mo-spark{position:fixed;top:0;left:0;border-radius:50%;pointer-events:none;z-index:60}
.mo-ring{position:fixed;border:2px solid var(--sky);box-shadow:0 0 24px #b4edffb3,inset 0 0 18px #b4edff66;pointer-events:none;z-index:59}

/* hero: staggered entrance, masked title lines, light sweep on the accent, pointer parallax */
.hero .hero-main,.hero .title-accent{animation:none}
.header{animation:mo-down .9s var(--ease) .05s backwards}
.hero .eyebrow{animation:mo-up .9s var(--ease) .15s backwards}
.hero-pre{animation:mo-up .9s var(--ease) .25s backwards}
.title-line{clip-path:inset(-.1em -.3em -.22em -.3em)}
.title-line>span{display:block;animation:mo-rise 1.1s var(--ease) .32s backwards}
.title-line:nth-child(2)>span{animation-delay:.44s}
.title-accent>span{background:linear-gradient(105deg,var(--sky) 0 45%,#fff 50%,var(--sky) 55% 100%) 0 0/300% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 0 26px #b4edff38);animation:mo-rise 1.1s var(--ease) .56s backwards,mo-sheen 8s ease-in-out 1.5s infinite}
.hero-description{animation:mo-up .9s var(--ease) .75s backwards}
.hero .cta{animation:mo-up .9s var(--ease) .9s backwards,mo-breathe 3.6s ease-in-out 2.2s infinite}
.hero-clock{animation:mo-up .9s var(--ease) .98s backwards}
.hero .cta:after,.mobile-cta .cta:after{animation:mo-cta-sheen 6s ease-in-out 2.6s infinite}
.hero-assurances{animation:mo-up .9s var(--ease) 1.06s backwards}
.hero .event-meta{animation:mo-up .9s var(--ease) 1.12s backwards}
.hero-proof{animation:mo-up 1s var(--ease) 1.15s backwards}
.hero-media{animation:mo-emerge 1.8s var(--ease) backwards}
.hero-shade::after{content:'';position:absolute;inset:-10%;background:radial-gradient(38% 46% at 74% 40%,#b4edff17,transparent 70%),radial-gradient(28% 36% at 58% 82%,#54bde412,transparent 70%);animation:mo-aurora 18s ease-in-out infinite alternate;pointer-events:none}
.scene-caption{isolation:isolate;animation:mo-float-in 1.1s var(--ease) 1s backwards}
.scene-caption::before{content:'';position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:conic-gradient(from var(--mo-a),transparent 0 66%,#b4edff22 74%,#b4edffcc 88%,#fff 90%,transparent 91%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:mo-orbit 5s linear infinite;pointer-events:none}
.scene-word{filter:blur(8px);transition:opacity .55s,transform .55s var(--ease),filter .55s}
.scene-word.active{filter:blur(0)}
.scene-progress i{position:relative;overflow:hidden}
.scene-progress i.active{box-shadow:0 0 10px #b4edff80}
.proof-years strong,.host-experience strong{display:inline-block;font-variant-numeric:tabular-nums}
.mo-counted{animation:mo-flash 1.2s ease-out}
@media(min-width:701px){.scene-caption{position:relative}}
@media(hover:hover) and (min-width:1000px){.hero-media{transform:translate3d(calc(var(--px,0) * -16px),calc(var(--py,0) * -10px),0) scale(1.05)}}

/* what we learn: a path that draws itself, a gliding tab ink, odometer numbers, a pointer spotlight */
.service-path li{position:relative}
.service-path strong{display:block}
.mo .service-path li{border-top-color:transparent}
.mo .service-path li::before{content:'';position:absolute;top:-1px;right:0;left:0;height:1px;background:linear-gradient(270deg,var(--sky),#b4edff55 55%,#ffffff26);transform:scaleX(0);transform-origin:right;transition:transform 1s var(--ease) calc(var(--i,0) * .4s)}
.mo .service-path li::after{content:'';position:absolute;top:-5px;right:-4px;width:9px;height:9px;border-radius:50%;background:var(--sky);box-shadow:0 0 0 4px #b4edff1f,0 0 18px #b4edffb3;transform:scale(0);transition:transform .6s cubic-bezier(.34,1.56,.64,1) calc(var(--i,0) * .4s)}
.mo .service-path li>*{transition:opacity .8s var(--ease) calc(var(--i,0) * .4s + .25s),translate .8s var(--ease) calc(var(--i,0) * .4s + .25s)}
.mo .service-path:not(.mo-in) li>*{opacity:0;translate:0 14px}
.mo .service-path.mo-in li::before{transform:scaleX(1)}
.mo .service-path.mo-in li::after{transform:scale(1)}
@media(min-width:701px){.mo .service-path{position:relative}.mo .service-path.mo-in::after{content:'';position:absolute;top:-1px;right:0;left:0;height:1px;background:linear-gradient(90deg,transparent,#fff,transparent) no-repeat;background-size:160px 1px;background-position:right -160px top 0;animation:mo-flow 7s ease-in-out 2.2s infinite;pointer-events:none}}
.learning-controls.mo-has-ink{position:relative}
.learning-controls.mo-has-ink button,.learning-controls.mo-has-ink button[aria-selected=true]{border-bottom-color:transparent}
.mo-ink{position:absolute;bottom:-1px;left:0;width:0;height:2px;border-radius:2px;background:var(--sky);box-shadow:0 0 12px #b4edffb3;transition:left .6s var(--ease),width .6s var(--ease);pointer-events:none}
.learning-controls button{transition:color .4s}
.lesson-number{text-shadow:0 0 50px #b4edff14}
.mo-odo{display:inline-block;height:1em;line-height:1;overflow:hidden;vertical-align:top;color:var(--sky);text-shadow:0 0 34px #b4edff59}
.mo-odo-col{display:block;transform:translateY(calc(var(--d) * -1em))}
.mo-odo-col>span{display:block;height:1em}
.mo .lesson-list.mo-in article:not([hidden]) .mo-odo-col{animation:mo-odo 1.2s var(--ease) both}
.mo .lesson-list.mo-switch article:not([hidden]) .lesson-body{animation:mo-up .7s var(--ease) backwards}
@media(hover:hover){.lesson-list article{isolation:isolate}.lesson-list article::before{content:'';position:absolute;inset:0 -40px;border-radius:28px;background:radial-gradient(460px circle at var(--mx,50%) var(--my,50%),#b4edff12,transparent 65%);opacity:0;transition:opacity .5s;z-index:-1;pointer-events:none}.lesson-list article:hover::before{opacity:1}}

/* testimonials: cards deal in from a tilted stack, lift with an ice rim, the name underline draws */
.mo .testimonial-card{transform-origin:50% 100%;transition:opacity .9s var(--ease) calc(var(--i,0) * .14s),transform 1.2s var(--ease) calc(var(--i,0) * .14s)}
.mo .testimonial-card:not(.mo-in){opacity:0;transform:translateY(80px) rotate(var(--r,-4deg)) scale(.93)}
.testimonial-card:nth-child(even){--r:4deg}
.testimonial-card h3{position:relative;width:fit-content}
.testimonial-card h3::after{content:'';position:absolute;right:0;left:0;bottom:-2px;height:2px;border-radius:2px;background:linear-gradient(270deg,var(--sky),#b4edff00);transform:scaleX(0);transform-origin:right;transition:transform .7s var(--ease)}
.testimonial-card .testimonial-player{transition:transform .55s var(--ease),border-color .55s,box-shadow .55s}
@media(hover:hover){.testimonial-card:hover h3::after{transform:scaleX(1)}.testimonial-card:hover .testimonial-player{transform:translateY(-6px);border-color:#b4edff66;box-shadow:0 0 0 1px #b4edff2e,0 26px 60px -14px #b4edff38}}
@media(hover:none){.testimonial-card.mo-in h3::after{transform:scaleX(1);transition-delay:.7s}}

/* audience: rows slide in one by one, the arrow turns and fills, an ice wash sweeps the row */
.audience-list article{position:relative;isolation:isolate}
.mo .audience-list article{transition:opacity .9s var(--ease) calc(var(--i,0) * .15s),translate .9s var(--ease) calc(var(--i,0) * .15s)}
.mo .audience-list article:not(.mo-in){opacity:0;translate:-56px 0}
.audience-list article>span{transition:background .45s,color .45s,border-color .45s,box-shadow .45s,transform .7s var(--ease)}
.audience-list article::before{content:'';position:absolute;inset:0 -20px;border-radius:16px;background:linear-gradient(270deg,#d3effb,#d3effb00 88%);transform:scaleX(0);transform-origin:right;transition:transform .75s var(--ease);z-index:-1;pointer-events:none}
.audience-list article:first-child::before{top:-14px}
@media(hover:hover){.audience-list article:hover>span{background:#151e28;color:var(--sky);border-color:#151e28;box-shadow:0 0 0 6px #b4edff47;transform:rotate(-90deg)}.audience-list article:hover::before{transform:scaleX(1)}}
@media(hover:none){.mo .audience-list article.mo-in>span{background:#151e28;color:var(--sky);border-color:#151e28;box-shadow:0 0 0 5px #b4edff47;transform:rotate(-90deg);transition-delay:calc(var(--i,0) * .15s + .55s)}.mo .audience-list article.mo-in::before{animation:mo-wash 1.8s var(--ease) calc(var(--i,0) * .15s + .4s) both}}

/* host: the name is drawn as an outline and then filled, the period blinks like a caret, the quote rule grows */
.mo .host-identity h2{color:transparent;-webkit-text-stroke:1.5px #b4edffb3;clip-path:inset(-15% 0 -15% 100%)}
.mo .host-identity.mo-in h2{animation:mo-trace 1.3s var(--ease) .1s forwards,mo-fill 1s ease 1.25s forwards}
.mo .host-identity.mo-in .period{animation:mo-caret 1.1s steps(1) 2.4s infinite}
.mo .host-copy blockquote{border-right-color:transparent;transition:color .9s ease .55s}
.mo .host-copy blockquote:not(.mo-in){color:#eaf6fc00}
.mo .host-copy blockquote::before{content:'';position:absolute;top:0;bottom:0;right:-3px;width:3px;border-radius:3px;background:linear-gradient(180deg,var(--sky),#b4edff59);box-shadow:0 0 16px #b4edff73;transform:scaleY(0);transform-origin:top;transition:transform 1.1s var(--ease)}
.mo .host-copy blockquote.mo-in::before{transform:scaleY(1)}
.instagram-link{transition:background .3s,border-color .3s,box-shadow .4s}
@media(hover:hover){.instagram-link:hover{border-color:#b4edff73;box-shadow:0 0 0 4px #b4edff12,0 0 34px #b4edff26}}

/* FAQ: smooth open and close (motion.js), the plus turns into a minus */
.questions summary:after,.questions details[open] summary:after{content:'';background-color:transparent;background-image:linear-gradient(currentColor,currentColor),linear-gradient(currentColor,currentColor);background-repeat:no-repeat;background-position:center;background-size:12px 1.6px,1.6px 12px;transition:transform .55s var(--ease),background-size .45s var(--ease),background-color .35s,color .35s,border-color .35s}
.questions details[open]:not(.mo-closing) summary:after{background-color:#dff4fc;background-size:12px 1.6px,1.6px 0;transform:rotate(180deg)}
.questions summary{transition:color .35s,padding .5s var(--ease)}
@media(hover:hover){.questions summary:hover{color:#1d6a8a;padding-inline-start:8px}.questions summary:hover:after{border-color:#1d6a8a55}}

/* register: the ticket lands in 3D, tilts after the pointer, a light runs on its rim */
.ticket{position:relative;isolation:isolate}
.ticket::before{content:'';position:absolute;inset:0;border-radius:inherit;padding:1.5px;background:conic-gradient(from var(--mo-a),transparent 0 18%,#54bde4cc 26%,#b4edff 28%,transparent 34% 68%,#54bde4cc 76%,#b4edff 78%,transparent 84%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:mo-orbit 9s linear infinite;z-index:3;pointer-events:none}
.ticket::after{content:'';position:absolute;inset:0;border-radius:inherit;background:radial-gradient(520px circle at var(--gx,50%) var(--gy,0%),#ffffff59,transparent 45%);mix-blend-mode:soft-light;opacity:0;transition:opacity .5s;z-index:2;pointer-events:none}
.mo .ticket.reveal{transition:opacity 1s var(--ease),transform 1.3s var(--ease)}
.mo .ticket.reveal:not(.visible){opacity:0;transform:perspective(1400px) rotateX(24deg) translateY(90px) scale(.95)}
.mo .ticket.reveal.visible{transform:none}
.mo .ticket.reveal.visible.mo-tilting{transform:perspective(1400px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:opacity 1s var(--ease),transform .25s ease-out}
.ticket.mo-tilting::after{opacity:1}
.reg-field input{transition:border-color .3s,box-shadow .4s,background .3s}
.reg-field input:focus{background:#0c2131;box-shadow:0 0 0 4px #b4edff1f,0 0 28px #b4edff26}
.reg-field span{transition:color .3s}
.reg-field:focus-within span{color:var(--sky)}
.reg-form.is-ready .reg-submit{animation:mo-ready 2.2s ease-in-out infinite}
.reg-form.is-ready .reg-submit:after{animation:mo-cta-sheen 3s ease-in-out .2s infinite}
.reg-form.is-ready .reg-submit .cta-arrow{animation:mo-nudge 1.6s ease-in-out infinite}
.reg-form .reg-submit[disabled],.reg-form .reg-submit[disabled]:after,.reg-form .reg-submit[disabled] .cta-arrow{animation:none}
.rp-bar i.on{transform-origin:right;animation:mo-seg .5s var(--ease)}

/* phone dock: springs in, the button breathes */
.mobile-cta{transition:opacity .45s var(--ease),transform .7s cubic-bezier(.34,1.56,.64,1)}
.mobile-cta.obscured{transform:translateY(140%)}
.mobile-cta .cta{animation:mo-breathe 3.6s ease-in-out infinite}
.mobile-cta.obscured .cta,.mobile-cta.obscured .cta:after{animation-play-state:paused}

@keyframes mo-up{from{opacity:0;transform:translateY(22px)}}
@keyframes mo-down{from{opacity:0;transform:translateY(-16px)}}
@keyframes mo-rise{from{transform:translateY(120%)}}
@keyframes mo-sheen{0%{background-position:0 0}24%,100%{background-position:100% 0}}
@keyframes mo-emerge{from{opacity:0;scale:1.12}}
@keyframes mo-aurora{to{transform:translate(-4%,3%) scale(1.1)}}
@keyframes mo-float-in{from{opacity:0;transform:translateY(26px) scale(.96)}}
@keyframes mo-orbit{to{--mo-a:360deg}}
@keyframes mo-breathe{0%,100%{box-shadow:0 0 0 0 #b4edff00,0 10px 30px #b4edff12}50%{box-shadow:0 0 0 7px #b4edff17,0 14px 46px #b4edff3d}}
@keyframes mo-cta-sheen{0%{transform:translateX(0) rotate(25deg)}28%,100%{transform:translateX(640%) rotate(25deg)}}
@keyframes mo-flash{40%{text-shadow:0 0 28px #b4edffcc}}
@keyframes mo-flow{0%{background-position:right -160px top 0}45%,100%{background-position:left -160px top 0}}
@keyframes mo-odo{from{transform:translateY(0)}}
@keyframes mo-wash{0%{transform:scaleX(0);opacity:1}55%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1);opacity:0}}
@keyframes mo-trace{to{clip-path:inset(-15% -5% -15% -5%)}}
@keyframes mo-fill{to{color:#eff7fa;-webkit-text-stroke-color:#b4edff00}}
@keyframes mo-caret{50%{opacity:.15}}
@keyframes mo-ready{0%,100%{box-shadow:0 0 0 1px #ffffff80,0 0 0 6px #b4edff26,0 14px 46px #b4edff4d}50%{box-shadow:0 0 0 1px #ffffffb3,0 0 0 11px #b4edff1a,0 18px 60px #b4edff73}}
@keyframes mo-nudge{50%{translate:-4px 4px}}
@keyframes mo-seg{from{transform:scaleX(0)}}
