/* Slow layered waves with a soft CSS bloom; no bitmap backgrounds. */
.dx-section-wave{--wave-surface:#f3faff;position:absolute;left:0;right:0;top:-66px;height:68px;overflow:hidden;pointer-events:none;z-index:0;isolation:isolate}
.dx-section-wave-layer{position:absolute;left:0;bottom:0;width:200%;height:100%;max-width:none;display:block;animation:dx-wave-drift 22s linear infinite;will-change:transform}
.dx-section-wave-layer--1{fill:#00bce9;opacity:.11;bottom:12px;animation-duration:27s;animation-delay:-10s}
.dx-section-wave-layer--2{fill:#00ca98;opacity:.1;bottom:5px;animation-duration:20s;animation-delay:-7s}
.dx-section-wave-layer--3{fill:var(--wave-surface);animation-duration:24s;animation-delay:-14s}
.dx-section-wave-bloom{position:absolute;left:-10%;right:-10%;bottom:0;height:45px;background:radial-gradient(ellipse at 25% 80%,#00c9ff18,transparent 45%),radial-gradient(ellipse at 76% 70%,#00d99e12,transparent 42%);animation:dx-wave-bloom 8s ease-in-out infinite alternate}
.dx-services:has(>.dx-section-wave){overflow:visible;-webkit-mask-image:none;mask-image:none;background:radial-gradient(ellipse at 8% 18%,#009dff12,transparent 48%),radial-gradient(ellipse at 94% 85%,#00bc6810,transparent 45%),linear-gradient(#f3faff,#f8fcff)}
.dx-services:has(>.dx-section-wave)>.dx-services-waves{display:none}
.dx-services:has(>.dx-section-wave)::after{display:none}
.dx-contact:has(>.dx-section-wave){overflow:visible;background:radial-gradient(ellipse at 0 35%,#0097ff12,transparent 50%),radial-gradient(ellipse at 100% 80%,#00c58b10,transparent 48%),linear-gradient(#f8fcff,#edf7fc)}
.dx-section-wave--contact{--wave-surface:#f8fcff;top:-50px;height:52px}
.dx-footer:has(>.dx-section-wave){position:relative;overflow:visible}
.dx-section-wave--footer{--wave-surface:#edf7fc;top:-35px;height:37px}
.dx-footer>.dx-section-wave .dx-section-wave-layer--1{opacity:.07}
.dx-footer>.dx-section-wave .dx-section-wave-layer--2{opacity:.06}
.dx-services-layout,.dx-contact-layout{position:relative;z-index:1}
@keyframes dx-wave-drift{to{transform:translate3d(-50%,0,0)}}
@keyframes dx-wave-bloom{from{opacity:.35;transform:translateX(-3%)}to{opacity:.9;transform:translateX(3%)}}
@media(max-width:650px){.dx-section-wave{top:-38px;height:40px}.dx-section-wave--contact{top:-29px;height:31px}.dx-section-wave--footer{top:-23px;height:25px}.dx-section-wave-layer{animation-duration:30s}.dx-section-wave-layer--1{animation-duration:35s;bottom:7px}.dx-section-wave-layer--2{animation-duration:28s;bottom:3px}.dx-section-wave-bloom{height:26px;opacity:.4}}
@media(prefers-reduced-motion:reduce){.dx-section-wave-layer,.dx-section-wave-bloom{animation:none;will-change:auto}.dx-section-wave-layer--1{transform:translateX(-14%)}.dx-section-wave-layer--2{transform:translateX(-30%)}}
/* Visible animated transition between services and contact. */
.dx-contact:has(>.dx-section-wave--contact) { z-index: 4; }
.dx-section-wave--contact { top: -74px; height: 76px; }
.dx-section-wave--contact .dx-section-wave-layer--1 { fill: #00aaf0; opacity: .22; bottom: 17px; }
.dx-section-wave--contact .dx-section-wave-layer--2 { fill: #00c9a0; opacity: .18; bottom: 8px; }
.dx-section-wave--contact .dx-section-wave-bloom { height: 56px; background: radial-gradient(ellipse at 25% 80%,#00c9ff25,transparent 48%),radial-gradient(ellipse at 76% 70%,#00d99e20,transparent 45%); }
@media (max-width: 650px) {
 .dx-section-wave--contact { top: -44px; height: 46px; }
 .dx-section-wave--contact .dx-section-wave-layer--1 { bottom: 10px; }
 .dx-section-wave--contact .dx-section-wave-layer--2 { bottom: 5px; }
 .dx-section-wave--contact .dx-section-wave-bloom { height: 32px; }
}
/* The same full-width wave silhouette at every major section boundary. */
.dx-services:has(>.dx-section-wave) { position:relative; z-index:3; }
.dx-contact:has(>.dx-section-wave) { position:relative; z-index:4; padding-top:65px; }
.dx-footer:has(>.dx-section-wave) { position:relative; z-index:5; }
.dx-services>.dx-section-wave,
.dx-contact>.dx-section-wave,
.dx-footer>.dx-section-wave {
 display:block; position:absolute; top:-78px; height:80px; left:0; right:0; z-index:0;
}
.dx-section-wave .dx-section-wave-layer { width:200%; max-width:none; height:100%; }
.dx-section-wave .dx-section-wave-layer--1 { fill:#009fe7; opacity:.23; bottom:15px; }
.dx-section-wave .dx-section-wave-layer--2 { fill:#00c79b; opacity:.18; bottom:7px; }
.dx-section-wave .dx-section-wave-layer--3 { fill:var(--wave-surface); bottom:0; }
.dx-section-wave--contact { --wave-surface:#eef8ff; }
.dx-contact:has(>.dx-section-wave) { background:radial-gradient(ellipse at 0 35%,#0097ff12,transparent 50%),radial-gradient(ellipse at 100% 80%,#00c58b10,transparent 48%),linear-gradient(#eef8ff,#edf7fc); }
.dx-section-wave--footer { --wave-surface:#e1f4ff; }
.dx-footer .dx-footer-benefits { background:linear-gradient(#e1f4ff,#cceeff); }
@media(max-width:650px) {
 .dx-services>.dx-section-wave,.dx-contact>.dx-section-wave,.dx-footer>.dx-section-wave { top:-44px; height:46px; }
 .dx-section-wave .dx-section-wave-layer--1 { bottom:9px; }
 .dx-section-wave .dx-section-wave-layer--2 { bottom:4px; }
 .dx-contact:has(>.dx-section-wave) { padding-top:45px; }
}

/* Mobile photo-to-copy wave, matching the animated desktop transitions. */
@media (max-width: 650px) {
 body.dx-header-on .dx-hero-art--photo,
 body.dx-header-on .dx-hero--full .dx-hero-art--photo {
  -webkit-mask-image: none;
  mask-image: none;
  overflow: hidden;
 }
 .dx-hero-art--photo::after {
  content: '';
  position: absolute;
  bottom: -1px;
  left: 0;
  width: 200%;
  height: 48px;
  background: url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%202880%20110%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20fill%3D%22%23f4faff%22%20d%3D%22M0%2050%20Q180%200%20360%2050%20T720%2050%20T1080%2050%20T1440%2050%20T1800%2050%20T2160%2050%20T2520%2050%20T2880%2050%20V110%20H0Z%22%2F%3E%3C%2Fsvg%3E') center / 100% 100% no-repeat;
  animation: dx-wave-drift 22s linear infinite;
  pointer-events: none;
 }
 .dx-hero--modern { background: linear-gradient(#f4faff,#fff 75%); }
 .dx-hero--modern .dx-hero-inner { margin-top: 0; padding-top: 8px; }
 .dx-services>.dx-section-wave,.dx-contact>.dx-section-wave,.dx-footer>.dx-section-wave { top: -56px; height: 58px; }
 .dx-section-wave .dx-section-wave-layer--1 { opacity: .25; bottom: 12px; }
 .dx-section-wave .dx-section-wave-layer--2 { opacity: .2; bottom: 6px; }
 .dx-section-wave-bloom { height: 36px; }
}
@media (prefers-reduced-motion: reduce) {
 .dx-hero-art--photo::after { animation: none; }
}
/* Give the services CTA breathing room before the contact wave. */
.dx-services:has(>.dx-section-wave) { padding-bottom: 145px; }
@media (max-width: 900px) { .dx-services:has(>.dx-section-wave) { padding-bottom: 105px; } }
@media (max-width: 540px) { .dx-services:has(>.dx-section-wave) { padding-bottom: 90px; } }

/* Blue-green translucent fade above the mobile photo wave. */
@media (max-width:650px) {
 .dx-hero-art--photo::before {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 200%;
  height: 69px;
  background-image: linear-gradient(180deg,transparent,rgba(82,201,244,.09)),url('data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%202880%20110%22%20preserveAspectRatio%3D%22none%22%3E%3Cpath%20fill%3D%22%2300aef0%22%20fill-opacity%3D%22.27%22%20d%3D%22M0%2040Q180%200%20360%2040T720%2040T1080%2040T1440%2040T1800%2040T2160%2040T2520%2040T2880%2040V110H0Z%22%2F%3E%3Cpath%20fill%3D%22%2300cd97%22%20fill-opacity%3D%22.21%22%20d%3D%22M0%2058Q180%2015%20360%2058T720%2058T1080%2058T1440%2058T1800%2058T2160%2058T2520%2058T2880%2058V110H0Z%22%2F%3E%3C%2Fsvg%3E');
  background-size: 100% 100%;
  background-repeat: no-repeat;
  animation: dx-wave-drift 29s linear infinite;
  pointer-events: none;
 }
 .dx-hero-art--photo::after { height:48px; }
}
@media (prefers-reduced-motion:reduce) {
 .dx-hero-art--photo::before { animation:none; }
}
/* Comfortable centered content width on large desktop screens. */
@media (min-width:1200px) {
 .dx-header { width:min(100%,1600px); max-width:1600px; margin-left:auto; margin-right:auto; }
 .dx-header-wrap.is-stuck .dx-header { width:calc(100% - 40px); max-width:1600px; margin-left:auto; margin-right:auto; }
 .dx-hero--modern .dx-hero-inner { margin-left:max(8%,calc((100% - 1440px)/2)); }
 .dx-services .dx-services-layout { max-width:1440px; margin-left:auto; margin-right:auto; }
 .dx-contact .dx-contact-layout { max-width:1280px; margin-left:auto; margin-right:auto; }
 .dx-footer-benefits-inner { max-width:1440px; }
 .dx-footer-columns { max-width:1560px; }
 .dx-footer-trust-inner { max-width:1560px; }
}
@media (min-width:1900px) {
 .dx-footer-columns { max-width:1560px; padding-left:30px; padding-right:30px; grid-template-columns:minmax(270px,1.25fr) minmax(190px,.85fr) minmax(210px,.9fr) minmax(300px,1.2fr); gap:34px; }
 .dx-footer-art { opacity:.28; }
}
/* Keep the mobile call button clear of the overlapping services wave. */
@media (max-width:1199px) {
 .dx-hero.dx-hero--modern:has(+ .dx-services) { padding-bottom:110px; }
 .dx-services:has(>.dx-section-wave--services) { margin-top:0; }
}
@media (max-width:650px) {
 .dx-hero.dx-hero--modern:has(+ .dx-services) { padding-bottom:90px; }
}
