/* Content remains visible without JavaScript. Animation starts enabled. */
.motion-ready [data-reveal]{opacity:0;transform:translateY(25px);transition:opacity .85s ease,transform .85s cubic-bezier(.2,.65,.25,1);transition-delay:var(--reveal-delay,0ms)}
.motion-ready [data-reveal].is-revealed{opacity:1;transform:translateY(0)}
.site-header:after{content:'';position:absolute;left:0;bottom:-1px;height:2px;width:calc(var(--page-progress,0) * 100%);background:linear-gradient(90deg,#236c89,var(--cyan),#b5e881);box-shadow:0 0 8px #31bbe555;transition:width .15s linear;pointer-events:none}
.hero-grid{animation:hero-grid-travel 24s linear infinite}
.hero{background-size:160% 160%;animation:hero-atmosphere 18s ease-in-out infinite alternate}
.hero-copy>.eyebrow .status-dot{animation:signal-pulse 3s ease-in-out infinite}
.hero-copy h1{animation:hero-copy-arrive 1.2s cubic-bezier(.22,.61,.36,1) both}
.hero-description{animation:hero-copy-arrive 1.2s .16s both}.hero-actions{animation:hero-copy-arrive 1.2s .28s both}
.scroll-link>span{animation:scroll-cue 2.4s ease-in-out infinite}
.motion-ready .solution-card,.motion-ready .survey-service-card,.motion-ready .province-panel,.motion-ready .delivery-card{position:relative;isolation:isolate}
.solution-card:before,.survey-service-card:before,.province-panel:before,.delivery-card:before{content:'';position:absolute;inset:0;pointer-events:none;z-index:-1;background:radial-gradient(350px circle at var(--glow-x,50%) var(--glow-y,50%),#41c6f010,transparent 65%);opacity:0;transition:opacity .4s}
.solution-card:hover:before,.survey-service-card:hover:before,.province-panel:hover:before,.delivery-card:hover:before{opacity:1}
.survey-service-card,.province-panel,.delivery-card{transition:border-color .4s,box-shadow .4s}.survey-service-card:hover,.province-panel:hover,.delivery-card:hover{border-color:#3d7d96;box-shadow:0 12px 50px #0002}
.card-top svg{transition:transform .5s,color .5s}.solution-card:hover .card-top svg{transform:translateY(-3px) rotate(-5deg)}
.text-link>span[aria-hidden],.card-link>span,.delivery-card>a>span,.contact-email>span{transition:transform .3s}.text-link:hover>span[aria-hidden],.card-link:hover>span,.delivery-card>a:hover>span,.contact-email:hover>span{transform:translate(3px,-3px)}
.motion-active .fwd-basin{stroke-dasharray:650;stroke-dashoffset:650;animation:fwd-draw 5s ease-in-out infinite}.motion-active .fwd-load{animation:fwd-load 5s ease-in-out infinite}.motion-active .fwd-sensors circle{animation:sensor-glow 5s ease-in-out infinite}.motion-active .fwd-sensors circle:nth-child(2){animation-delay:.15s}.motion-active .fwd-sensors circle:nth-child(3){animation-delay:.3s}.motion-active .fwd-sensors circle:nth-child(4){animation-delay:.45s}
.motion-active .delivery-flow{animation:flow-travel 2.8s ease-in-out infinite}.motion-active .delivery-flow:nth-of-type(3){animation-delay:.7s}
.dva-wordmark-panel:after{content:'';position:absolute;inset:-50%;background:linear-gradient(105deg,transparent 40%,#50c6ed08 48%,#50c6ed18 50%,transparent 59%);transform:translateX(-60%) rotate(-10deg);pointer-events:none}.dva-wordmark-panel.motion-active:after{animation:panel-sweep 9s ease-in-out infinite}
.province-list li{transition:background .25s,color .25s,padding .25s}.province-list li:hover{color:#e0f5ff;background:#31bbe509;padding-inline:7px}.province-list li>span{position:relative}.province-list li>span:before{content:'';display:inline-block;width:4px;height:4px;background:#6cd6de;border-radius:50%;margin-right:7px}.province-panel.motion-active .province-list li>span:before{animation:province-pulse 4s ease-in-out infinite;animation-delay:var(--province-delay,0s)}
.year-lockup{transition:transform .8s}.about-visual:hover .year-lockup{transform:translateY(-5px)}
.motion-active .planned-route{animation:route-dash 12s linear infinite}.motion-active .completed-route{stroke-dasharray:1300;animation:route-draw 8s ease-in-out infinite}
.particle-fallback>.brand-bird{transform:scaleX(-1)}
.hosting-service-card.motion-active .hosting-map-route{stroke-dasharray:650;animation:fwd-draw 6s ease-in-out infinite}.hosting-service-card.motion-active .hosting-map-nodes circle{animation:sensor-glow 4s ease-in-out infinite}.hosting-service-card.motion-active .hosting-map-nodes circle:nth-child(2){animation-delay:.5s}.hosting-service-card.motion-active .hosting-map-nodes circle:nth-child(3){animation-delay:1s}.hosting-service-card.motion-active .hosting-map-nodes circle:nth-child(4){animation-delay:1.5s}
.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}
@keyframes hero-grid-travel{to{background-position:80px 80px}}
@keyframes hero-atmosphere{from{background-position:0 20%}to{background-position:100% 70%}}
@keyframes hero-copy-arrive{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes signal-pulse{0%,100%{box-shadow:0 0 0 0 #31bbe530}50%{box-shadow:0 0 0 6px #31bbe500}}
@keyframes scroll-cue{0%,100%{transform:translateY(0)}50%{transform:translateY(5px)}}
@keyframes fwd-draw{0%{stroke-dashoffset:650;opacity:.3}35%,80%{stroke-dashoffset:0;opacity:1}100%{stroke-dashoffset:0;opacity:.3}}
@keyframes fwd-load{0%,100%{transform:translateY(-6px);opacity:.45}25%,65%{transform:translateY(2px);opacity:1}}
@keyframes sensor-glow{0%,20%,100%{fill:#0d1c26}40%,65%{fill:#97dce8}}
@keyframes flow-travel{0%,100%{transform:translateY(-3px);opacity:.4}50%{transform:translateY(3px);opacity:1}}
@keyframes panel-sweep{0%,20%{transform:translateX(-60%) rotate(-10deg)}70%,100%{transform:translateX(60%) rotate(-10deg)}}
@keyframes province-pulse{0%,100%{opacity:.4}50%{opacity:1;box-shadow:0 0 7px #65cddc77}}
@keyframes route-dash{to{stroke-dashoffset:-168}}
@keyframes route-draw{0%{stroke-dashoffset:1300}65%,100%{stroke-dashoffset:0}}

