/* Animation states. Only active when <html> has .anim (real visitors, motion allowed).
   In the Elementor editor and for reduced-motion users everything is simply visible. */

/* reset v1 defaults so nothing is hidden without JS */
.rv{opacity:1;transform:none;transition:none}
.frame img{transform:none}
.reveal .line>span{transform:none}

html.anim .rv:not(.in){opacity:0;transform:translateY(34px)}
html.anim .rv{transition:opacity 1s var(--ease-out),transform 1.1s var(--ease-out)}
html.anim .rv.in{opacity:1;transform:none}

/* headlines are split into lines by JS; hidden until split to avoid a flash */
html.anim .reveal,html.anim .split,html.anim .split-words{visibility:hidden}
html.anim .is-split{visibility:visible}
.mt-line{display:block;overflow:hidden;padding-bottom:.1em;margin-bottom:-.1em}
.mt-line-in{display:block;will-change:transform}
.mt-word{display:inline-block;will-change:opacity}

/* pictures: wipe up + settle */
html.anim .frame.wipe,html.anim .hero-frame{clip-path:inset(100% 0 0 0)}
html.anim .frame.wipe.in,html.anim .hero-frame.in{clip-path:inset(0 0 0 0);transition:clip-path 1.4s var(--ease-io)}
html.anim .frame.wipe:not(.parallax):not(.parallax-sm) img{transform:scale(1.25);transition:transform 1.8s var(--ease-out)}
html.anim .frame.wipe.in:not(.parallax):not(.parallax-sm) img{transform:scale(1)}
.parallax img,.parallax-sm img{will-change:transform}

/* sections opted out */
html.anim .no-anim .rv,html.anim .no-anim .frame.wipe{opacity:1!important;transform:none!important;clip-path:none!important}
html.anim .no-anim .reveal,html.anim .no-anim .split,html.anim .no-anim .split-words{visibility:visible}

/* footer words rise */
html.anim .big-foot span{transform:translateY(100%);transition:transform 1.2s var(--ease-out)}
html.anim .big-foot.in span{transform:none}
html.anim .big-foot.in span+span{transition-delay:.1s}

/* loader */
#loader{transition:clip-path 1s var(--ease-io)}
#loader.done{transform:none;clip-path:inset(0 0 100% 0)}
#loader .count,#loader .ld-logo,#loader .ld-word{transition:opacity .4s,transform .8s var(--ease-out)}
#loader.done .count,#loader.done .ld-logo,#loader.done .ld-word{opacity:0;transform:translateY(-30px)}

@media (prefers-reduced-motion: reduce){
	html.anim .rv:not(.in){opacity:1;transform:none}
	html.anim .frame.wipe,html.anim .hero-frame{clip-path:none}
	html.anim .reveal,html.anim .split,html.anim .split-words{visibility:visible}
	.marquee .track{animation:none}
}

/* SplitText line masks: keep italic descenders visible */
.mt-line-in-mask{padding-bottom:.1em;margin-bottom:-.1em;padding-right:.06em}

/* hairlines draw from left as rows scroll in (--ln animated by JS, 1 = full) */
.list .row,.step,.tl,.way,.detail,.pr{position:relative}
html.anim .list .row,html.anim .step,html.anim .tl,html.anim .way{border-bottom-color:transparent}
html.anim .detail,html.anim .pr{border-top-color:transparent}
html.anim .list .row::after,html.anim .step::after,html.anim .tl::after,html.anim .way::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--line);transform:scaleX(var(--ln,1));transform-origin:left;pointer-events:none}
html.anim .detail::before,html.anim .pr::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:var(--line);transform:scaleX(var(--ln,1));transform-origin:left;pointer-events:none}
html.anim .dark .list .row::after,html.anim .dark .step::after,html.anim .dark .tl::after,html.anim .dark .way::after,html.anim .dark .detail::before,html.anim .dark .pr::before{background:#2a2a2a}
