/* Movimiento: solo actúa cuando el script ha marcado <html class="mo"> (JS activo y sin movimiento reducido). */
.mo-progress{position:fixed;left:0;top:0;width:100%;height:2px;background:#C24648;transform:scaleX(0);transform-origin:0 50%;z-index:9999;pointer-events:none}
.mo .mo-r{opacity:0;transform:translateY(24px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
.mo .mo-r.mo-in{opacity:1;transform:none}
.mo .mo-words .mw{display:inline-block;overflow:hidden;vertical-align:top;padding:.14em .02em .12em;margin:-.14em -.02em -.12em}
.mo .mo-words .mwi{display:inline-block;transform:translateY(110%);transition:transform 1s cubic-bezier(.2,.75,.15,1)}
.mo .mo-words.mo-in .mwi{transform:none}
.mo .mo-img{clip-path:inset(0 0 100% 0);transition:clip-path 1.25s cubic-bezier(.7,0,.2,1)}
.mo .mo-img.mo-in{clip-path:inset(0 0 0 0)}
.mo .mo-img img,.mo img.mo-img{transition:transform 1.8s cubic-bezier(.2,.7,.2,1)}
.mo .mo-mark polygon{opacity:0;transform:translateY(-10px);transition:opacity .6s ease-out,transform .7s cubic-bezier(.2,.8,.2,1)}
.mo .mo-mark polygon:nth-child(1){transition-delay:.3s}
.mo .mo-mark polygon:nth-child(2){transition-delay:.15s}
.mo .mo-mark polygon:nth-child(3){transition-delay:0s}
.mo .mo-mark.mo-in polygon{opacity:1;transform:none}
.mo-safe .mo-r,.mo-safe .mo-words .mwi,.mo-safe .mo-mark polygon{opacity:1!important;transform:none!important}
.mo-safe .mo-img{clip-path:none!important}
.mo-pwrap{overflow:hidden;display:block}
.mo-pwrap>img{will-change:transform}

.mo .service,.mo .deliverable,.mo .case{transition:opacity .85s ease-out,transform .85s ease-out,box-shadow .35s ease,border-color .35s ease}
.mo-ready .service.is-revealed:hover,.mo-ready .deliverable.is-revealed:hover,.mo-ready .case.is-revealed:hover{transform:translateY(-5px);box-shadow:0 22px 44px -28px rgba(10,10,10,.45);transition-delay:0s!important}
.mo .mo-words.mo-in .dot{display:inline-block;animation:mo-dot .6s 1s cubic-bezier(.3,1.6,.5,1) both}
@keyframes mo-dot{from{transform:scale(0)}to{transform:scale(1)}}

.mo:not(.mo-ready) :is(h1, .cta-final h2){visibility:hidden}
.mo:not(.mo-ready) :is(.svc-hero-photo, .about-photo){clip-path:inset(0 0 100% 0)}
.mo-safe :is(h1, .cta-final h2){visibility:visible!important}
@media (prefers-reduced-motion:reduce){.mo-progress{display:none}}
