@keyframes heroCopyIn{from{opacity:0;transform:translateY(36px)}to{opacity:1;transform:none}}
@keyframes heroImageIn{from{opacity:.55;transform:scale(1.08)}to{opacity:1;transform:scale(1)}}
@keyframes softPulse{0%,100%{filter:drop-shadow(0 0 8px rgba(67,189,228,.3))}50%{filter:drop-shadow(0 0 18px rgba(67,189,228,.65))}}
.hero-supplied>img,.page-hero>img{animation:heroImageIn 1.4s cubic-bezier(.2,.7,.2,1) both;transition:opacity .45s ease}
.hero-banner-actions,.page-hero-copy>*{animation:heroCopyIn .8s cubic-bezier(.2,.7,.2,1) both}
.page-hero-copy>*:nth-child(2){animation-delay:.1s}.page-hero-copy>*:nth-child(3){animation-delay:.2s}
.orel-brand img{animation:softPulse 3.6s ease-in-out infinite}
.motion-ready .reveal-item{opacity:0;transform:translateY(42px);transition:opacity .75s ease,transform .75s cubic-bezier(.2,.7,.2,1)}
.motion-ready .reveal-item.reveal-delay{transition-delay:.1s}
.motion-ready .reveal-item.is-visible{opacity:1;transform:none}
.solution-image img,.service-split-image img,.product-split-image img,.about-split-image img,.blog-image img{transition:transform .8s cubic-bezier(.2,.7,.2,1),filter .6s ease}
.solution-detail:hover img,.service-splits article:hover img,.product-splits article:hover img,.about-splits article:hover img,.blog-grid article:hover img{transform:scale(1.055);filter:saturate(1.08)}
.btn,.text-link,.service-splits a,.product-splits a,.blog-grid a{transition:transform .25s ease,box-shadow .25s ease}
.btn:hover{transform:translateY(-3px);box-shadow:0 14px 28px rgba(3,15,25,.18)}
.text-link:hover,.service-splits a:hover,.product-splits a:hover,.blog-grid a:hover{transform:translateX(6px)}
@media(prefers-reduced-motion:reduce){*{animation:none!important}.motion-ready .reveal-item{opacity:1;transform:none;transition:none}}
@keyframes networkSpin{to{transform:rotate(360deg)}}
@keyframes networkSpinReverse{to{transform:rotate(-360deg)}}
@keyframes corePulse{0%,100%{transform:translate(-50%,-50%) scale(.82);box-shadow:0 0 18px rgba(67,189,228,.5)}50%{transform:translate(-50%,-50%) scale(1.12);box-shadow:0 0 42px rgba(67,189,228,.95)}}
@keyframes nodeBlink{0%,100%{opacity:.35;box-shadow:0 0 8px #56d8ff}50%{opacity:1;box-shadow:0 0 22px #56d8ff}}
.loop-network{position:absolute;z-index:2;right:5.5vw;bottom:9%;width:clamp(190px,20vw,320px);aspect-ratio:1;pointer-events:none;opacity:.82;filter:drop-shadow(0 0 24px rgba(35,178,225,.2))}
.loop-ring{position:absolute;inset:0;border:1px solid rgba(112,220,255,.58);border-radius:50%}
.loop-ring:before,.loop-ring:after{position:absolute;width:7px;height:7px;border-radius:50%;background:#67ddff;box-shadow:0 0 18px #42c8f4;content:""}
.loop-ring:before{top:-4px;left:50%}.loop-ring:after{right:8%;bottom:22%}
.ring-a{animation:networkSpin 13s linear infinite}.ring-b{inset:17%;border-style:dashed;animation:networkSpinReverse 9s linear infinite}.ring-c{inset:34%;animation:networkSpin 6s linear infinite}
.loop-core{position:absolute;top:50%;left:50%;width:22px;height:22px;border:2px solid #a9efff;border-radius:50%;background:rgba(47,193,235,.35);animation:corePulse 2.4s ease-in-out infinite}
.loop-node{position:absolute;width:8px;height:8px;border-radius:50%;background:#9cecff;animation:nodeBlink 2s ease-in-out infinite}
.node-a{top:12%;left:18%}.node-b{top:27%;right:7%;animation-delay:.45s}.node-c{right:18%;bottom:10%;animation-delay:.9s}.node-d{bottom:22%;left:3%;animation-delay:1.35s}
@media(max-width:760px){.loop-network{right:-30px;bottom:18%;width:175px;opacity:.52}}
@keyframes ambientDrift{0%{transform:translate3d(0,-8%,0) rotate(0)}50%{transform:translate3d(0,8%,0) rotate(180deg)}100%{transform:translate3d(0,-8%,0) rotate(360deg)}}
@keyframes streamTravel{0%{background-position:0 -180px}100%{background-position:0 380px}}
@keyframes ambientPing{0%,100%{opacity:.2;transform:scale(.7)}45%{opacity:1;transform:scale(1.45)}}
@keyframes mapOrbitPulse{0%,100%{opacity:.22;transform:scale(.96)}50%{opacity:.68;transform:scale(1.035)}}
@keyframes hubBeacon{0%,100%{box-shadow:0 0 0 7px rgba(216,163,63,.13),0 0 8px rgba(216,163,63,.25)}50%{box-shadow:0 0 0 13px rgba(216,163,63,.08),0 0 25px rgba(216,163,63,.8)}}
.page-ambient{position:fixed;z-index:55;inset:0;overflow:hidden;pointer-events:none;opacity:.42;mask-image:linear-gradient(90deg,#000 0,rgba(0,0,0,.85) 12%,transparent 36%,transparent 64%,rgba(0,0,0,.85) 88%,#000 100%)}
.ambient-orbit{position:absolute;width:430px;height:430px;border:1px solid rgba(54,191,231,.26);border-radius:50%;animation:ambientDrift 28s linear infinite}
.ambient-orbit:before,.ambient-orbit:after{position:absolute;inset:12%;border:1px dashed rgba(54,191,231,.22);border-radius:50%;content:""}.ambient-orbit:after{inset:31%;border-style:solid}
.ambient-left{top:10%;left:-280px}.ambient-right{right:-275px;bottom:5%;animation-direction:reverse;animation-duration:34s}
.ambient-stream{position:absolute;top:0;bottom:0;width:1px;background:repeating-linear-gradient(to bottom,transparent 0 18px,rgba(68,204,241,.65) 18px 25px,transparent 25px 44px);animation:streamTravel 9s linear infinite}
.stream-a{left:3.5%}.stream-b{right:4.5%;animation-delay:-4s;animation-duration:12s}
.ambient-dot{position:absolute;width:7px;height:7px;border-radius:50%;background:#67ddff;box-shadow:0 0 16px #42c8f4;animation:ambientPing 3.2s ease-in-out infinite}
.dot-one{top:22%;left:3.25%}.dot-two{top:58%;right:4.25%;animation-delay:1.1s}.dot-three{bottom:13%;left:6%;animation-delay:2.1s}
.map .orbit{animation:mapOrbitPulse 5.8s ease-in-out infinite}.map .orbit.two{animation-delay:-2.9s}.map .hub b{animation:hubBeacon 2.2s ease-in-out infinite}.map .hub.sri b{animation-delay:.7s}.map .hub.world b{animation-delay:1.4s}
@media(max-width:760px){.page-ambient{opacity:.25}.ambient-orbit{width:300px;height:300px}.ambient-left{left:-230px}.ambient-right{right:-230px}.stream-a{left:2%}.stream-b{right:2%}}
@keyframes numberGlow{0%,100%{text-shadow:0 0 0 rgba(67,189,228,0)}50%{text-shadow:0 0 22px rgba(67,189,228,.32)}}
@keyframes partnerFloat{0%,100%{transform:translateY(0);color:rgba(255,255,255,.72)}50%{transform:translateY(-5px);color:#fff}}
@keyframes lightSweep{0%{transform:translateX(-160%) skewX(-18deg)}55%,100%{transform:translateX(260%) skewX(-18deg)}}
@keyframes borderBreathe{0%,100%{border-color:rgba(103,221,255,.14)}50%{border-color:rgba(103,221,255,.52)}}
.stats strong{animation:numberGlow 3.8s ease-in-out infinite}.stats article{transition:background .35s ease,transform .35s ease}.stats article:hover{z-index:2;background:#f1f9fc;transform:translateY(-6px)}
.partner-list span{animation:partnerFloat 4s ease-in-out infinite}.partner-list span:nth-child(2n){animation-delay:-1s}.partner-list span:nth-child(3n){animation-delay:-2s}.partner-list span:nth-child(5n){animation-delay:-3s}
.solution-copy,.service-split-copy,.product-split-copy,.about-split-copy,.inner-cta{position:relative;overflow:hidden}
.solution-copy:after,.service-split-copy:after,.product-split-copy:after,.about-split-copy:after,.inner-cta:after{position:absolute;top:-30%;bottom:-30%;left:-30%;width:16%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.13),transparent);content:"";pointer-events:none;animation:lightSweep 8s ease-in-out infinite}
.solution-splits article,.service-splits article,.product-splits article,.about-splits article{border:1px solid rgba(103,221,255,.14);animation:borderBreathe 5s ease-in-out infinite}.solution-splits article:nth-child(even),.service-splits article:nth-child(even),.product-splits article:nth-child(even),.about-splits article:nth-child(even){animation-delay:-2.5s}
