/* VORACE V23 · compositor-friendly per-section motion, no infinite morphing */
:root{--v23-ease:cubic-bezier(.18,.78,.19,1)}
.v23-stage{--v23-color:#e7cc93;position:fixed;inset:0;pointer-events:none;z-index:92;visibility:hidden;opacity:0;overflow:hidden;isolation:isolate;contain:layout paint;}
.v23-stage.v23-running{visibility:visible;opacity:1;animation:v23StageDone 1.02s linear both}
.v23-veil{position:absolute;inset:0;background:rgba(5,8,12,.62);opacity:0}
.v23-blade{position:absolute;top:-8%;height:116%;width:58%;background:linear-gradient(110deg,#0b0e14 5%,#121722 64%,#070a10);border-inline:1px solid rgba(255,255,255,.07);transform:translate3d(-110%,0,0) skewX(-7deg);will-change:transform}
.v23-blade.blade-left{left:-8%;}
.v23-blade.blade-right{right:-8%;background:linear-gradient(-110deg,#121820,#10131a,#080b10);transform:translate3d(110%,0,0) skewX(7deg)}
.v23-stage-inner{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:clamp(22px,4vw,80px);padding:clamp(24px,7vw,100px);color:var(--v23-color)}
.v23-visual{position:relative;display:grid;place-items:center;flex:0 0 clamp(160px,28vw,360px);width:clamp(160px,28vw,360px);aspect-ratio:1;transform:translate3d(24vw,6vh,0) rotate(-19deg) scale(.35);opacity:0;will-change:transform,opacity}
.v23-visual::before{content:'';position:absolute;inset:8%;border:1px solid currentColor;border-radius:50%;opacity:.23;transform:rotate(-25deg) scale(1.07)}
.v23-visual::after{content:'';position:absolute;inset:0;border:1px dashed currentColor;border-radius:50%;opacity:.17;transform:rotate(12deg)}
.v23-line-art{display:block;width:76%;height:76%;overflow:visible;filter:none}
.v23-logo-mark,.v23-portal{display:grid;place-items:center;position:relative;width:82%;height:82%;border-radius:50%;border:1px solid rgba(232,204,147,.58)}
.v23-logo-mark img,.v23-portal img{width:54%;height:54%;object-fit:contain}
.v23-halo-ring{position:absolute;inset:13%;border:1px dashed rgba(238,220,185,.34);border-radius:50%}
.v23-device-frame{width:60%;height:90%;padding:8px;border-radius:20px;background:#0c1016;border:2px solid var(--v23-color);box-shadow:0 12px 32px #0008;overflow:hidden;transform:rotate(-7deg)}
.v23-device-frame img{display:block;width:100%;height:calc(100% - 23px);object-fit:cover;object-position:top;border-radius:9px}
.v23-device-top{height:23px;display:flex;align-items:center;gap:4px}
.v23-device-top i{width:6px;height:6px;border-radius:50%;background:var(--v23-color);opacity:.6}.v23-device-top span{margin-left:auto;color:#dfe7e4;font:700 7px sans-serif;letter-spacing:.08em}
.v23-portal-ring{position:absolute;inset:13%;border-radius:50%;border:1px dashed rgba(237,212,170,.5)}.v23-portal-ring.ring-two{inset:-18%;border-style:solid;opacity:.25}
.v23-stage-copy{max-width:45vw;min-width:0;display:flex;flex-direction:column;align-items:flex-start;opacity:0;transform:translate3d(-30px,32px,0);will-change:transform,opacity}
.v23-number{font:700 clamp(10px,1vw,13px) sans-serif;letter-spacing:.24em;color:var(--v23-color);margin-bottom:12px}
.v23-stage-word{display:block;font:800 clamp(44px,8.8vw,145px)/.88 var(--type,system-ui);letter-spacing:-.09em;color:#f3f0ea;text-transform:uppercase;white-space:normal;overflow-wrap:normal}
.v23-stage-sub{margin-top:20px;padding-top:14px;border-top:1px solid currentColor;font:700 clamp(11px,1.2vw,16px) sans-serif;letter-spacing:.21em;color:var(--v23-color)}
.v23-scanline{position:absolute;left:-35%;top:50%;width:170%;height:1px;background:linear-gradient(90deg,transparent,var(--v23-color),transparent);opacity:0;transform:rotate(-16deg) scaleX(.15)}
.v23-edge-marker{position:absolute;bottom:7%;left:5%;right:5%;height:1px;transform:scaleX(0);transform-origin:left;background:linear-gradient(90deg,var(--v23-color),transparent);opacity:.6}
.v23-running .v23-veil{animation:v23Veil .94s ease both}
.v23-running .blade-left{animation:v23BladeLeft .95s var(--v23-ease) both}
.v23-running .blade-right{animation:v23BladeRight .95s var(--v23-ease) both}
.v23-running .v23-visual{animation:v23IconMove .96s var(--v23-ease) both}
.v23-running .v23-stage-copy{animation:v23CopyMove .88s var(--v23-ease) .08s both}
.v23-running .v23-scanline{animation:v23Flash .7s ease .08s both}
.v23-running .v23-edge-marker{animation:v23Rule .8s var(--v23-ease) both}
@keyframes v23StageDone{0%,93%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}
@keyframes v23Veil{0%,100%{opacity:0}25%,59%{opacity:1}80%{opacity:.38}}
@keyframes v23BladeLeft{0%{transform:translate3d(-110%,0,0) skewX(-7deg)}27%,50%{transform:translate3d(0,0,0) skewX(-7deg)}100%{transform:translate3d(-112%,0,0) skewX(-7deg)}}
@keyframes v23BladeRight{0%{transform:translate3d(110%,0,0) skewX(7deg)}27%,50%{transform:translate3d(0,0,0) skewX(7deg)}100%{transform:translate3d(112%,0,0) skewX(7deg)}}
@keyframes v23IconMove{0%{opacity:0;transform:translate3d(18vw,6vh,0) rotate(-27deg) scale(.28)}30%{opacity:1;transform:translate3d(0,0,0) rotate(3deg) scale(1.1)}53%{opacity:1;transform:translate3d(0,0,0) rotate(0deg) scale(1)}100%{opacity:0;transform:translate3d(-17vw,-8vh,0) rotate(18deg) scale(.32)}}
@keyframes v23CopyMove{0%{opacity:0;transform:translate3d(-50px,30px,0)}27%,58%{opacity:1;transform:translate3d(0,0,0)}100%{opacity:0;transform:translate3d(-24px,-20px,0)}}
@keyframes v23Flash{0%,100%{opacity:0;transform:rotate(-16deg) scaleX(.15)}45%{opacity:.9;transform:rotate(-16deg) scaleX(1)}}
@keyframes v23Rule{0%{transform:scaleX(0)}55%,82%{transform:scaleX(1)}100%{transform:scaleX(0)}}
/* Context-specific local arrivals: finite, not tied to scroll position each frame */
.v23-arriving .section-title,.v23-arriving .interlude-heading,.v23-arriving .contact-heading,.v23-arriving .hero-heading{animation:v23LocalTitle .7s var(--v23-ease) .49s both!important}
.v23-arriving .method-card,.v23-arriving .brand-card,.v23-arriving .testi-featured,.v23-arriving .contact-sidecard,.v23-arriving #ws-stage{animation:v23LocalCard .8s var(--v23-ease) .47s both!important}
@keyframes v23LocalTitle{from{opacity:.48;transform:translate3d(0,25px,0) scale(.98)}to{opacity:1;transform:none}}
@keyframes v23LocalCard{from{opacity:.65;transform:translate3d(0,17px,0) scale(.985)}to{opacity:1;transform:none}}
.v23-corner{--v23-corner-color:#e7cc93;position:fixed;z-index:16;pointer-events:none;right:clamp(14px,2vw,35px);bottom:clamp(20px,3vh,34px);display:flex;align-items:center;gap:10px;color:var(--v23-corner-color);opacity:.8;letter-spacing:.12em;font:700 9px sans-serif;text-transform:uppercase}
.v23-corner i{display:block;width:18px;height:1px;background:currentColor}.v23-corner-n{font-size:12px}.v23-corner-label{color:#aeb6b0}
body.modal-open .v23-stage,body.modal-open .v23-corner{display:none!important}
/* Safari performance fixes: never animate live blur/filter on multiple full-window layers. */
.cursor-glow{display:none!important}
.hero-ghost-mark{animation:none!important}
.v20-motion-grid{display:none!important}
.v20-motion-orbit{box-shadow:none!important}
.v20-motion-stage .slide-stage-content{animation:v23ProjectReveal .92s var(--v23-ease) .22s both!important;filter:none!important}
@keyframes v23ProjectReveal{0%{opacity:0;transform:translate3d(0,24px,0) scale(.965)}100%{opacity:1;transform:none}}
/* Reduce the number of large animated layers on mobile. */
@media(max-width:760px){
 .v23-stage.v23-running{animation-duration:.75s}
 .v23-stage-inner{flex-direction:column;gap:10px;padding:24px;justify-content:center}
 .v23-visual{width:clamp(130px,42vw,230px);flex:0 0 auto}
 .v23-stage-copy{align-items:center;max-width:92vw;text-align:center}
 .v23-stage-word{font-size:clamp(45px,11vw,74px)}
 .v23-stage-sub{margin-top:8px;font-size:10px}
 .v23-veil{background:rgba(6,9,13,.72)}
 .v23-corner{display:none}
 .v23-running .blade-left,.v23-running .blade-right{animation-duration:.72s}
 .v23-running .v23-visual{animation-duration:.72s}
 .v23-running .v23-stage-copy{animation-duration:.69s}
 .v23-arriving .section-title,.v23-arriving .interlude-heading,.v23-arriving .contact-heading,.v23-arriving .hero-heading{animation-duration:.62s!important}
}
@media(prefers-reduced-motion:reduce){
 .v23-stage,.v23-corner{display:none!important}
 .v23-arriving *{animation:none!important}
 html{scroll-behavior:auto!important}
}
