/* ============================================================
   Homepage: one continuous background (soft drifting gradient mesh + film grain), dark blue
   ============================================================ */
.one-bg{background:#050F2B!important;color:#E6EDF9}
.one-bg .bg{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:#071A48;transform:translateZ(0)}
.one-bg .bg i{position:absolute;border-radius:50%;will-change:transform;mix-blend-mode:screen;opacity:.9;
  background:radial-gradient(closest-side,var(--c) 0%,transparent 72%)}
.one-bg .bg .b1{--c:rgba(37,99,235,.55);width:110vmax;height:110vmax;left:-35vmax;top:-45vmax;animation:bgA 26s ease-in-out infinite alternate}
.one-bg .bg .b2{--c:rgba(119,179,255,.32);width:80vmax;height:80vmax;right:-30vmax;top:10vh;animation:bgB 32s ease-in-out infinite alternate}
.one-bg .bg .b3{--c:rgba(21,67,180,.6);width:90vmax;height:90vmax;left:10vw;bottom:-45vmax;animation:bgC 38s ease-in-out infinite alternate}
.one-bg .bg .b4{--c:rgba(99,160,255,.22);width:50vmax;height:50vmax;left:40vw;top:35vh;animation:bgB 22s ease-in-out -9s infinite alternate-reverse}
@keyframes bgA{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(18vw,12vh,0) scale(1.15)}}
@keyframes bgB{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(-16vw,18vh,0) scale(1.1)}}
@keyframes bgC{from{transform:translate3d(0,0,0) scale(1.05)}to{transform:translate3d(14vw,-14vh,0) scale(.95)}}
.one-bg .bg .grain{position:absolute;inset:-50%;opacity:.14;mix-blend-mode:overlay;animation:grain 1.2s steps(4) infinite;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .6 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
@keyframes grain{0%{transform:translate(0,0)}25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(-1%,-2%)}100%{transform:translate(3%,1%)}}
@media (max-width:900px),(hover:none){.one-bg .bg i{animation-duration:60s}.one-bg .bg .grain{animation:none;opacity:.1}}
@media (prefers-reduced-motion:reduce){.one-bg .bg i,.one-bg .bg .grain{animation:none}}

/* everything sits on the one background */
.one-bg header.site-header{position:sticky;top:0;z-index:100}
.one-bg main,.one-bg section,.one-bg .logo-strip,.one-bg .h-mq,.one-bg footer.site-footer{position:relative;z-index:1}
.one-bg .page-index .hero,.one-bg .hero.kinetic-hero,.one-bg .logo-strip,.one-bg .h-mq,.one-bg .h-sec,.one-bg .h-sec.soft,.one-bg .h-work,.one-bg .h-book,.one-bg footer.site-footer{background:transparent!important}
.one-bg .page-index .hero::before,.one-bg .page-index .hero::after{display:none}
.one-bg header.site-header,.one-bg header.site-header.scrolled{background:rgba(5,15,43,.72)!important;border-bottom-color:rgba(255,255,255,.08)}
.one-bg .h-mq{border-color:rgba(255,255,255,.1)}
.one-bg .h-mq-track span{-webkit-text-stroke-color:rgba(255,255,255,.75)}
.one-bg .logo-strip .strip-title{color:#9FB0D0}

/* type on dark */
.one-bg .h-head h2,.one-bg .h-about h2,.one-bg .h-svc h3,.one-bg .h-step h4{color:#fff}
.one-bg .h-head h2 em,.one-bg .h-about h2 em{color:#77B3FF}
.one-bg .h-head p,.one-bg .h-lead,.one-bg .h-step p,.one-bg .h-about-img figcaption{color:#BFD0EE}
.one-bg .h-eyebrow{color:#9FB0D0}
.one-bg .h-points li{color:#E6EDF9}
.one-bg .h-faces span{color:#BFD0EE}
.one-bg .h-link{background:#fff;color:#0B1732}.one-bg .h-link.dark{background:#2563EB;color:#fff}
/* cards: brand fills with glass edges */
.one-bg .h-svc.c-ice,.one-bg .h-step.c-ice,.one-bg .h-wcard.c-ice{background:rgba(255,255,255,.08);color:#fff;border:1px solid rgba(255,255,255,.14);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.one-bg .h-svc.c-ice h3,.one-bg .h-step.c-ice h4,.one-bg .h-step.c-ice small,.one-bg .h-wcard.c-ice b{color:#fff}
.one-bg .h-svc.c-ice p,.one-bg .h-step.c-ice p,.one-bg .h-wcard.c-ice .lbl{color:#BFD0EE}
.one-bg .h-svc.c-ice li{background:rgba(255,255,255,.12);color:#fff}
.one-bg .h-svc.c-ice .h-num,.one-bg .h-step.c-ice:before{-webkit-text-stroke-color:#fff}
.one-bg .h-svc.c-navy,.one-bg .h-step.c-navy{background:#0A1F55;border:1px solid rgba(119,179,255,.25)}
.one-bg .h-svc.c-sky,.one-bg .h-step.c-sky,.one-bg .h-wcard.c-sky{border:0}
.one-bg .h-wcard:not([class*="c-"]){background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.14)}
/* faq */
.one-bg .h-faq-list details.faq{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);color:#fff}
.one-bg .h-faq-list details.faq summary{color:#fff}
.one-bg .h-faq-list details.faq summary::after{color:#77B3FF}
.one-bg .h-faq-list details.faq[open]{background:rgba(37,99,235,.18);border-color:rgba(119,179,255,.4)}
.one-bg .h-faq-list details.faq p,.one-bg .h-faq-list details.faq li{color:#BFD0EE}
.one-bg .h-faq .h-head p a{color:#77B3FF}
/* footer */
.one-bg footer.site-footer{border-top:1px solid rgba(255,255,255,.1)}
@media (max-width:900px) and (orientation:portrait){.one-bg .bg{background-image:url(images/home-bg-poster-portrait.jpg)}}
@media (max-width:900px),(hover:none){.one-bg .h-svc.c-ice,.one-bg .h-step.c-ice,.one-bg .h-wcard.c-ice{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(255,255,255,.1)}.one-bg header.site-header,.one-bg header.site-header.scrolled{background:#07163A!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}}
.one-bg .h-svc.c-sky h3,.one-bg .h-step.c-sky h4,.one-bg .h-step.c-sky small,.one-bg .h-wcard.c-sky b{color:#07193E}
.one-bg .h-svc.c-sky p,.one-bg .h-step.c-sky p,.one-bg .h-wcard.c-sky .lbl,.one-bg .h-wcard.c-sky .h-mini{color:#1F3D66}
.one-bg .h-svc.c-sky .h-num,.one-bg .h-step.c-sky:before{-webkit-text-stroke-color:#07193E}

/* background video (self-hosted loop, covers the viewport) */
.one-bg .bg{background:#071A48 url(images/home-bg-poster.jpg) center/cover no-repeat}
.one-bg .bg .bgv{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;opacity:1;pointer-events:none}
.one-bg .bg .tint{position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,15,43,.5),rgba(5,15,43,.66))}
/* no mix-blend-mode over the video: Safari/iOS composites it wrong and the page goes solid navy */
.one-bg .bg.has-video i{opacity:.35}

/* video only: no glows, grain, hero wave lines or sky dots */
.one-bg .bg i,.one-bg .bg .grain,.one-bg .motion-backdrop,.one-bg .motion-sky-dot,.one-bg .ov-mobile-streaks,.one-bg .fx,.one-bg .hero-side-label{display:none!important}
/* certified partner badges: white tiles so the logos read on the video */
.one-bg .partner-strip{background:transparent!important;border:0;padding:40px 0 10px}
.one-bg .partner-strip .strip-label{color:#9FB0D0}
.one-bg .partner-strip .partners{display:flex;flex-wrap:wrap;justify-content:center;gap:14px}
.one-bg .partner-strip .partners img{height:72px;width:auto;max-width:200px;object-fit:contain;background:#fff;border-radius:16px;padding:12px 18px;box-shadow:0 10px 30px rgba(0,0,0,.25);filter:none;opacity:1;transition:transform .4s cubic-bezier(.34,1.56,.64,1)}
.one-bg .partner-strip .partners img:hover{transform:translateY(-4px) scale(1.04)}
@media (max-width:600px){.one-bg .partner-strip .partners{gap:10px}.one-bg .partner-strip .partners img{height:56px;padding:9px 14px;max-width:150px}}
/* intro loader blends into the page background; no floating lights on the hero */
.one-bg .p-intro,.one-bg .p-intro.expand .p-intro-stack>.p-intro-final.top{background:#071A48}
.one-bg .p-intro-final{background:transparent}
.one-bg .p-intro-final img{filter:none}
.one-bg .fx,.one-bg .cursor-glow,.one-bg .motion-ambient-glow,.one-bg .p-flash,.one-bg .p-burst,.one-bg .p-canvas,.one-bg .p-grain,.one-bg .p-cur,.one-bg .ov-pause-motion,.one-bg .sound-toggle,.one-bg .p-sound{display:none!important}
.one-bg,.one-bg a,.one-bg button{cursor:auto}
.one-bg a,.one-bg button,.one-bg summary{cursor:pointer}
.one-bg .hero .btn-primary{box-shadow:none}
/* phones: lighter tint so the waves read on a small screen (kept last so nothing overrides it) */
@media (max-width:900px){.one-bg .bg .tint{background:linear-gradient(180deg,rgba(5,15,43,.36),rgba(5,15,43,.55))}}
