/* ===== motion layer ===== */
:root{--ease:cubic-bezier(.22,.8,.26,1);--ease-out:cubic-bezier(.16,1,.3,1)}

/* page load */
body{opacity:0;animation:atIn .5s var(--ease) forwards}
@keyframes atIn{to{opacity:1}}

/* scroll reveal */
.rv{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}
.rv.in{opacity:1;transform:none}
.rv-d1{transition-delay:.07s}.rv-d2{transition-delay:.14s}.rv-d3{transition-delay:.21s}
.rv-d4{transition-delay:.28s}.rv-d5{transition-delay:.35s}.rv-d6{transition-delay:.42s}
.rv-left{transform:translateX(-26px)}.rv-left.in{transform:none}
.rv-scale{transform:scale(.965);opacity:0}.rv-scale.in{transform:none;opacity:1}
.rv-line{transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease-out)}
.rv-line.in{transform:scaleX(1)}

/* hero entrance */
.hero h1 .ln{display:block;overflow:hidden}
.hero h1 .ln>span{display:block;transform:translateY(102%);animation:atLine .95s var(--ease-out) forwards}
.hero h1 .ln:nth-child(1)>span{animation-delay:.18s}
.hero h1 .ln:nth-child(2)>span{animation-delay:.28s}
.hero h1 .ln:nth-child(3)>span{animation-delay:.38s}
.hero h1 .ln:nth-child(4)>span{animation-delay:.48s}
@keyframes atLine{to{transform:none}}
.hero .section-eyebrow,.hero .hero-lead,.hero .row,.hero .assure{opacity:0;animation:atUp .8s var(--ease-out) forwards}
.hero .section-eyebrow{animation-delay:.1s}
.hero .hero-lead{animation-delay:.62s}
.hero .row{animation-delay:.72s}
.hero .assure{animation-delay:.82s}
@keyframes atUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.hero-img{animation:atZoom 1.6s var(--ease-out) forwards;transform-origin:70% 50%}
@keyframes atZoom{from{transform:scale(1.07);opacity:.5}to{transform:none;opacity:1}}
.hero-foot,.hero-side{opacity:0;animation:atUp .8s var(--ease-out) .95s forwards}

/* header */
.hdr{transition:height .3s var(--ease),background-color .3s var(--ease),box-shadow .3s var(--ease)}
.hdr.stuck{box-shadow:0 10px 30px -22px oklch(0 0 0/85%)}
@media(min-width:768px){.hdr.stuck{height:70px}}
.nav a::after{content:'';position:absolute;bottom:21px;left:0;width:16px;height:2px;background:var(--primary);transform:scaleX(0);transform-origin:left;transition:transform .28s var(--ease)}
.nav a.on::after,.nav a:hover::after{transform:scaleX(1)}
.mnav{display:block;overflow:hidden;max-height:0;border-bottom-width:0;transition:max-height .42s var(--ease)}
.mnav.open{max-height:520px;border-bottom-width:1px}
.burger svg{transition:transform .3s var(--ease)}
.burger[aria-expanded="true"] svg{transform:rotate(90deg)}

/* buttons */
.btn{position:relative;overflow:hidden;isolation:isolate}
.btn::before{content:'';position:absolute;inset:0;background:var(--primary-dim);transform:translateY(101%);transition:transform .4s var(--ease);z-index:-1}
.btn.ink::before{background:var(--card)}
.btn.ghost::before{background:oklch(1 0 0/9%)}
.light .btn.ghost::before{background:oklch(0 0 0/6%)}
.btn:hover::before{transform:none}
.btn:hover{background:var(--primary)}
.btn.ghost:hover{background:transparent}
.btn.ink:hover{background:var(--ink)}
.btn svg{transition:transform .32s var(--ease)}
.btn:hover svg{transform:translate(3px,-3px)}
.btn.b-back:hover svg{transform:translateX(-3px)}
.btn:active{transform:translateY(1px)}

/* links + rows */
.tlink svg{transition:transform .3s var(--ease)}
.tlink:hover svg{transform:translate(4px,-4px)}
.svc{position:relative}
.svc::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--primary);transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease)}
.svc:hover::after{transform:scaleX(1)}
.svc-row{position:relative}
.svc-row::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--primary);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--ease)}
.svc-row:hover::after{transform:scaleX(1)}
.channel,.quote,.plan{transition:transform .35s var(--ease),border-color .35s var(--ease)}
.quote:hover,.plan:hover{transform:translateY(-4px);border-color:var(--primary)}
.proof b{font-variant-numeric:tabular-nums}
.foot-links a{transition:color .25s var(--ease),transform .25s var(--ease)}
.foot-links a:hover{transform:translateX(3px)}
.filters button{transition:border-color .22s var(--ease),color .22s var(--ease),background .22s var(--ease),transform .22s var(--ease)}
.filters button:active{transform:scale(.96)}
.faq summary{transition:color .22s var(--ease),padding-left .3s var(--ease)}
.faq summary:hover{color:var(--primary);padding-left:6px}
.lb-box{animation:atPop .42s var(--ease-out)}
@keyframes atPop{from{opacity:0;transform:translateY(16px) scale(.985)}to{opacity:1;transform:none}}
.lb{animation:atFade .25s var(--ease) }
@keyframes atFade{from{opacity:0}to{opacity:1}}

@media(prefers-reduced-motion:reduce){
 body{opacity:1;animation:none}
 .rv,.rv-left,.rv-scale,.rv-line{opacity:1!important;transform:none!important;transition:none!important}
 .hero h1 .ln>span,.hero .section-eyebrow,.hero .hero-lead,.hero .row,.hero .assure,.hero-img,.hero-foot,.hero-side{animation:none!important;opacity:1!important;transform:none!important}
 .btn::before{display:none}
 *,*::before,*::after{animation-duration:.001ms!important;transition-duration:.001ms!important}
}