/* =====================================================================
   Telco Alliance — "Midnight Network" theme (test site, 2026-10-14)
   Loaded after styles.css, site.css and cable-hero.css on every page.
   Brand: navy #082d72 · deep navy #061e4c · blue #0d83f7 · cyan #11c6e8
   Added for this theme: midnight #050b1f, electric violet #8b7cff, signal mint #2ee6a6
   Type: Sora (display) · Geist (text) · Geist Mono (labels, numbers)
   ===================================================================== */

:root{
  --bg:#050b1f;            /* midnight base */
  --bg-2:#081434;          /* raised band */
  --bg-3:#0b1a42;
  --surface:rgba(255,255,255,.035);
  --surface-2:rgba(255,255,255,.06);
  --stroke:rgba(150,185,245,.14);
  --stroke-2:rgba(150,185,245,.24);
  --text:#eef4ff;          /* 17:1 on --bg */
  --text-2:#b4c3dc;        /* 10.6:1 on --bg */
  --text-3:#93a7c7;        /* 7.3:1 on --bg, 6.5:1 on --bg-2 */
  --violet:#8b7cff;
  --mint:#2ee6a6;
  --blue-ink:#0868c9;      /* blue text on white surfaces */
  --muted:#526176;         /* grey text on white surfaces */
  --grad-brand:linear-gradient(120deg,#0d83f7 0%,#11c6e8 100%);
  --grad-text:linear-gradient(95deg,#3b9dff 0%,#11c6e8 55%,#a99dff 100%);
  --grad-border:linear-gradient(140deg,rgba(17,198,232,.7),rgba(139,124,255,.15) 40%,rgba(13,131,247,.05) 60%,rgba(139,124,255,.6));
  --radius:16px;
  --radius-lg:24px;
  --ease-out:cubic-bezier(.22,1,.36,1);
  --ease-in-out:cubic-bezier(.65,0,.35,1);
  --shadow:0 30px 60px -30px rgba(0,0,0,.7);
  --glow:0 0 0 1px rgba(17,198,232,.25),0 20px 60px -20px rgba(13,131,247,.55);
  --font-display:'Sora',system-ui,sans-serif;
  --font-body:'Geist',system-ui,-apple-system,'Segoe UI',sans-serif;
  --font-mono:'Geist Mono',ui-monospace,'SFMono-Regular',Consolas,monospace;
}

/* ---------- Base ---------- */
html{background:var(--bg);color-scheme:dark;scroll-padding-top:112px}  /* focused fields and #anchors land below the floating header */
body{background:var(--bg);color:var(--text);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body,button,input,select,textarea,.btn{font-family:var(--font-body)}
h1,h2,h3,h4{font-family:var(--font-display);color:var(--text)!important}
h1{font-weight:700;letter-spacing:-.04em!important;line-height:1.02}
h2{font-weight:700;letter-spacing:-.032em!important;line-height:1.05}
h3{letter-spacing:-.015em!important}
p{color:var(--text-2)}
::selection{background:rgba(17,198,232,.3);color:#fff}
:focus-visible{outline:3px solid var(--cyan);outline-offset:3px;border-radius:8px}
.icon-svg{width:1em;height:1em;display:inline-block;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.125em}
.section{position:relative}

/* Ambient aurora behind every section: very slow, GPU-only */
.services-section,.platforms,.industries,.process,.contact,.page-hero,.section{isolation:isolate}
/* Keep the oversized glows inside their sections so nothing scrolls sideways */
.services-section,.platforms,.industries,.contact,.page-hero,.dark-section,.voice-otp-section{overflow:hidden}
html,body{overflow-x:clip}
.services-section::before,.platforms::before,.industries::before,.contact::before,.page-hero::after{content:"";position:absolute;z-index:-1;inset:auto;width:780px;height:780px;border-radius:50%;filter:blur(40px);opacity:.55;pointer-events:none}
.services-section::before{left:-260px;top:-180px;background:radial-gradient(circle,rgba(13,131,247,.22),transparent 65%)}
.platforms::before{right:-280px;top:10%;background:radial-gradient(circle,rgba(139,124,255,.2),transparent 65%)}
.industries::before{left:-300px;bottom:-200px;background:radial-gradient(circle,rgba(17,198,232,.16),transparent 65%)}
.contact::before{right:-260px;top:-120px;background:radial-gradient(circle,rgba(13,131,247,.2),transparent 65%)}

/* Section labels: mono capsule with a live dot */
.section-label,.ch-eyebrow,.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono)!important;font-size:12.5px!important;font-weight:600;letter-spacing:.12em!important;text-transform:uppercase;color:var(--cyan)!important;padding:7px 14px 7px 12px;border-radius:999px;background:rgba(17,198,232,.08);box-shadow:inset 0 0 0 1px rgba(17,198,232,.22)}
.section-label,.ch-eyebrow,.eyebrow{width:fit-content;height:fit-content;align-self:flex-start;justify-self:start}
.centered .section-label{align-self:center;justify-self:center}
.section-label::before,.ch-eyebrow::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 12px var(--cyan);animation:dot 2.4s var(--ease-in-out) infinite}
.eyebrow span{width:7px!important;height:7px!important;border-radius:50%;background:var(--cyan)!important;box-shadow:0 0 12px var(--cyan)}
@keyframes dot{50%{opacity:.35}}
.section-label.light{color:var(--cyan)!important}
.centered .section-label{margin-inline:auto}
.centered{text-align:center}

/* ---------- Top bar ---------- */
.topbar{background:#030817;color:var(--text-3);font-size:13px;border-bottom:1px solid var(--stroke)}
.topbar-inner{padding:0}
.top-links{gap:4px 26px}
.top-links a{display:inline-flex;align-items:center;min-height:40px;color:var(--text-2);transition:color .2s}
.top-links a:hover{color:#fff}

/* ---------- Header: floating light-glass bar (keeps the real logo legible) ---------- */
.site-header{top:12px;width:min(1340px,calc(100% - 32px));margin:12px auto 0;border-radius:22px;background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);border:1px solid rgba(255,255,255,.6);box-shadow:0 20px 50px -24px rgba(0,0,0,.65),0 0 0 1px rgba(8,45,114,.06);transition:box-shadow .3s var(--ease-out),transform .3s var(--ease-out)}
.site-header.is-scrolled{box-shadow:0 24px 60px -24px rgba(0,0,0,.8),0 0 0 1px rgba(17,198,232,.2)}
.site-header .container{width:calc(100% - 36px)!important}
.nav-wrap{height:76px!important}
.brand img{width:200px!important}
.nav{gap:2px}
.nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:999px;color:#0a1b35;font-weight:600;font-size:15px;transition:background-color .2s,color .2s}
.nav a:not(.nav-cta):after{display:none}
.nav a:not(.nav-cta):hover{background:rgba(13,131,247,.09);color:var(--navy)}
.nav-product{color:var(--blue-ink)!important;gap:8px}
.nav-product::before{content:"";width:7px;height:7px;border-radius:50%;background:#16b364;animation:livePulse 2.4s var(--ease-out) infinite}
@keyframes livePulse{0%{box-shadow:0 0 0 0 rgba(22,179,100,.55)}70%,100%{box-shadow:0 0 0 7px rgba(22,179,100,0)}}
.nav-cta{position:relative;overflow:hidden;margin-left:10px;padding:0 22px!important;color:#fff!important;background:linear-gradient(135deg,#061e4c 0%,#0b3d94 100%)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 10px 24px -10px rgba(8,45,114,.6)!important}
.nav-cta::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.3) 50%,transparent 70%);transform:translateX(-120%);transition:transform .7s var(--ease-out)}
.nav-cta:hover::after{transform:translateX(120%)}
.menu-toggle{position:relative;width:44px;height:44px;border-radius:12px;color:var(--navy)}
.menu-toggle .bars{position:relative;display:block;width:22px;height:2px;margin:auto;background:currentColor;border-radius:2px;transition:background-color .2s}
.menu-toggle .bars::before,.menu-toggle .bars::after{content:"";position:absolute;left:0;width:22px;height:2px;background:currentColor;border-radius:2px;transition:transform .35s var(--ease-out)}
.menu-toggle .bars::before{transform:translateY(-7px)}
.menu-toggle .bars::after{transform:translateY(7px)}
.menu-toggle[aria-expanded="true"] .bars{background:transparent}
.menu-toggle[aria-expanded="true"] .bars::before{transform:rotate(45deg)}
.menu-toggle[aria-expanded="true"] .bars::after{transform:rotate(-45deg)}

/* ---------- Buttons ---------- */
.btn{min-height:54px;border-radius:999px;padding:0 26px;font-weight:600;font-size:15.5px;letter-spacing:-.005em;transition:transform .2s var(--ease-out),box-shadow .25s var(--ease-out),background .25s,border-color .2s,color .2s}
.btn span{display:inline-flex;transition:transform .25s var(--ease-out)}
.btn:hover span{transform:translateX(4px)}
.btn:active{transform:scale(.97)!important;transition-duration:.08s}
/* Primary: brand gradient with deep-navy text (4.8:1 at the darkest stop) */
.btn-primary{background:var(--grad-brand)!important;color:#041632!important;box-shadow:0 0 0 1px rgba(17,198,232,.4),0 16px 40px -14px rgba(13,131,247,.8),inset 0 1px 0 rgba(255,255,255,.35)!important}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 0 0 1px rgba(17,198,232,.6),0 22px 50px -14px rgba(17,198,232,.75),inset 0 1px 0 rgba(255,255,255,.35)!important}
.btn-secondary{background:rgba(255,255,255,.05)!important;border:1px solid var(--stroke-2)!important;color:#fff!important;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.btn-secondary:hover{background:rgba(255,255,255,.1)!important;border-color:rgba(17,198,232,.5)!important;transform:translateY(-2px)}
.btn-white,.btn-otp{background:#fff!important;color:#061e4c!important;box-shadow:0 18px 40px -16px rgba(0,0,0,.7)}
.btn-white:hover,.btn-otp:hover{transform:translateY(-2px);box-shadow:0 0 0 4px rgba(255,255,255,.12),0 22px 44px -16px rgba(0,0,0,.7)}
.btn-ghost-light{border:1px solid var(--stroke-2)!important;color:#fff!important;background:transparent}
.btn-ghost-light:hover{background:rgba(255,255,255,.08);border-color:#fff!important}

/* ---------- Home hero: dark cable map ---------- */
.ch-hero{background:radial-gradient(900px 520px at 50% 28%,rgba(13,131,247,.22),transparent 65%),radial-gradient(700px 420px at 85% 70%,rgba(139,124,255,.16),transparent 65%),var(--bg)!important;min-height:max(calc(100svh - 100px),820px)!important}
.ch-content{background:linear-gradient(to top,var(--bg) 0%,rgba(8,7,15,.9) 50%,rgba(8,7,15,0) 100%)!important}
.ch-title{font-size:clamp(2.6rem,5vw,4.9rem)!important;color:#fff!important;font-weight:700}
.ch-title em{background:var(--grad-text)!important;-webkit-background-clip:text!important;background-clip:text!important}
.ch-text{color:var(--text-2)!important;font-size:18px!important;max-width:600px!important}
/* Earth photo + cable canvas (earth-hero.js sizes and places the photo) */
.ch-hero{justify-content:center!important}
.ch-bg{overflow:hidden}
.ch-bg-inner{opacity:1!important;transform:none;animation:none!important}
.ch-earth{position:absolute;left:0;top:0;width:100%;height:100%;max-width:none!important;object-fit:cover;transform-origin:center;opacity:0;transition:opacity 1.6s var(--ease-out);pointer-events:none;user-select:none}
.earth-ready .ch-earth{opacity:1}
.ch-bg::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgba(8,7,15,.94) 0%,rgba(8,7,15,.72) 30%,rgba(8,7,15,.15) 58%,rgba(8,7,15,0) 72%),linear-gradient(to top,var(--bg) 0%,rgba(8,7,15,0) 26%),linear-gradient(to bottom,var(--bg) 0%,rgba(8,7,15,0) 18%)}
.ch-canvas{z-index:2;-webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 30%,rgba(0,0,0,.35) 42%,#000 56%),linear-gradient(to top,transparent 0%,#000 14%);-webkit-mask-composite:source-in;mask-image:linear-gradient(90deg,transparent 0%,transparent 30%,rgba(0,0,0,.35) 42%,#000 56%),linear-gradient(to top,transparent 0%,#000 14%);mask-composite:intersect}
.ch-content{z-index:30;background:none!important;flex-direction:column!important;align-items:flex-start!important;justify-content:center!important;gap:30px!important;padding:150px max(40px,calc((100vw - 1260px)/2)) 110px!important}
.ch-left{max-width:680px!important}
.ch-tags{justify-content:flex-start!important;max-width:none!important;gap:10px!important}
.ch-tag{padding:14px 18px;border-radius:18px;background:rgba(255,255,255,.05);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--stroke);box-shadow:none;transition:transform .3s var(--ease-out),border-color .3s}
.ch-tag:hover{transform:translateY(-3px);border-color:rgba(17,198,232,.4)}
.ch-tag strong{font-family:var(--font-display)!important;font-size:15px!important;color:#fff!important}
.ch-tag span{font-family:var(--font-mono)!important;font-size:12.5px!important;color:var(--text-3)!important}

/* ---------- Subpage hero ---------- */
.page-hero{background:radial-gradient(800px 480px at 80% 0%,rgba(13,131,247,.25),transparent 65%),radial-gradient(600px 400px at 0% 100%,rgba(139,124,255,.14),transparent 65%),var(--bg)!important;margin-top:-88px;padding-top:88px}
.page-hero::before{background:none!important}
.page-hero::after{right:-200px;top:-200px;background:radial-gradient(circle,rgba(17,198,232,.18),transparent 65%)}
.page-hero-inner{padding:90px 0 110px!important}
.page-hero h1{font-size:clamp(44px,6vw,84px)!important;color:#fff!important;margin:18px 0 0}
.page-hero .hero-text{color:var(--text-2)!important;font-size:19px!important;max-width:760px;margin:26px 0 34px!important}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px}
.hero-wave{display:none!important}
.breadcrumb{font-family:var(--font-mono);font-size:13px!important;color:var(--text-3)!important}
.breadcrumb a{color:var(--cyan)!important}
.page-hero-inner .eyebrow{margin-bottom:6px}

/* ---------- Photography ---------- */
.intro-aside{display:flex;flex-direction:column;gap:26px}
.photo-card{position:relative;margin:0;border-radius:var(--radius-lg);overflow:hidden;aspect-ratio:4/5;border:1px solid var(--stroke);box-shadow:0 40px 80px -40px rgba(0,0,0,.85),0 0 80px -30px rgba(13,131,247,.45)}
.photo-card img{width:100%;height:100%;object-fit:cover;object-position:62% center;transform:scale(1.04);transition:transform 1.2s var(--ease-out)}
.photo-card:hover img{transform:scale(1.09)}
.photo-card::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,7,15,0) 55%,rgba(8,7,15,.75) 100%),linear-gradient(140deg,rgba(13,131,247,.18),transparent 50%);pointer-events:none}
.about-photo{position:absolute;inset:0;width:100%;height:100%;max-width:none;object-fit:cover;opacity:.9;filter:saturate(1.15) brightness(1.15)}
.about-visual .grid-glow{opacity:.35}
.about-visual::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at center,rgba(8,7,15,0),rgba(8,7,15,.55) 85%);pointer-events:none}
.about-visual .net-lines,.about-panel{z-index:2}
.cta-photo{position:absolute;right:0;top:0;height:100%;width:62%;max-width:none;object-fit:cover;opacity:.5;-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 55%);mask-image:linear-gradient(90deg,transparent 0%,#000 55%);pointer-events:none}
.cta-section .cta-cables{z-index:0}

/* ---------- Section headings ---------- */
.section-heading h2,.intro h2,.h2-md,.contact-copy h2,.about-copy h2,.traffic-inner h2,.cta-inner h2,.voice-otp-copy h2{color:#fff!important;margin-top:18px!important}
.section-heading>p,.intro p,.contact-copy>p,.centered>p{color:var(--text-2)!important}
.muted{color:var(--text-2)!important}
.muted a{color:var(--cyan)!important}

/* ---------- Bands ---------- */
.intro,.services-section,.platforms,.industries,.process,.contact,.dark-section,.soft{background:transparent!important}
.services-section,.industries,.soft,.faq-section{background:linear-gradient(180deg,var(--bg) 0%,var(--bg-2) 18%,var(--bg-2) 82%,var(--bg) 100%)!important}
.section{border:0}

/* Glass card base used by every card type */
.service-card,.platform-card,.process-step,.industry-list div,.feature,.related-card,.faq details,.uses li{position:relative;background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.02))!important;border:1px solid var(--stroke)!important;border-radius:var(--radius-lg)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.06)!important;color:var(--text)}

/* ---------- Voice OTP band ---------- */
.voice-otp-section{background:radial-gradient(900px 500px at 85% 20%,rgba(139,124,255,.22),transparent 60%),radial-gradient(700px 500px at 10% 90%,rgba(17,198,232,.14),transparent 60%),linear-gradient(140deg,#061e4c 0%,#082d72 55%,#0a2f7c 100%)!important;border-block:1px solid var(--stroke)}
.voice-otp-section::after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);background-size:56px 56px;-webkit-mask-image:radial-gradient(ellipse at 70% 40%,#000 0%,transparent 70%);mask-image:radial-gradient(ellipse at 70% 40%,#000 0%,transparent 70%);pointer-events:none}
.voice-otp-grid{z-index:1}
.voice-otp-copy>p{color:#c5d5e9!important}
.otp-features span{color:#b9cce3!important;font-size:15px}
.otp-features b{font-family:var(--font-display);font-size:17px;color:#fff!important}
.otp-features strong,.values strong,.process-step>span,.feature>span,.service-number{font-family:var(--font-mono)!important}
.otp-features strong{color:var(--cyan)!important}
.otp-call-card{position:relative;border-radius:30px!important;background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.04))!important;border:1px solid rgba(255,255,255,.18)!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 50px 100px -40px rgba(0,0,0,.8),0 0 120px -30px rgba(139,124,255,.5)!important}
.otp-call-card::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:var(--grad-border);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.otp-call-top small{font-family:var(--font-mono);font-size:12px!important;letter-spacing:.1em!important;color:#8fd8f0!important}
.otp-call-top strong{color:#fff}
.otp-phone-icon{position:relative;font-size:22px}
.otp-phone-icon::before,.otp-phone-icon::after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid rgba(17,198,232,.6);animation:ring 2.2s var(--ease-out) infinite;animation-play-state:paused}
.otp-phone-icon::after{animation-delay:1.1s}
@keyframes ring{0%{transform:scale(1);opacity:.9}100%{transform:scale(1.9);opacity:0}}
.otp-wave i{transform-origin:center;animation:wave 1.1s var(--ease-in-out) infinite alternate;animation-play-state:paused;background:linear-gradient(var(--cyan),var(--violet))!important}
.otp-wave i:nth-child(2){animation-delay:.12s}.otp-wave i:nth-child(3){animation-delay:.24s}.otp-wave i:nth-child(4){animation-delay:.36s}
.otp-wave i:nth-child(5){animation-delay:.48s}.otp-wave i:nth-child(6){animation-delay:.6s}.otp-wave i:nth-child(7){animation-delay:.72s}
@keyframes wave{from{transform:scaleY(.4)}to{transform:scaleY(1)}}
.otp-call-card>p{font-size:14px!important;color:#c5d5e9!important}
.otp-code b{font-family:var(--font-mono)!important;border-radius:14px!important;box-shadow:0 12px 24px -12px rgba(0,0,0,.6),inset 0 -2px 0 rgba(8,45,114,.12);opacity:0;transform:translateY(10px) scale(.94);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}
.was-seen .otp-code b{opacity:1;transform:none}
.otp-code b:nth-child(2){transition-delay:.12s}.otp-code b:nth-child(3){transition-delay:.24s}.otp-code b:nth-child(4){transition-delay:.36s}.otp-code b:nth-child(5){transition-delay:.48s}.otp-code b:nth-child(6){transition-delay:.6s}
.otp-status{font-size:14px!important;color:var(--mint)!important;opacity:0;transition:opacity .6s var(--ease-out) .9s}
.was-seen .otp-status{opacity:1}
.otp-status span{width:22px!important;height:22px!important;font-size:12px;background:rgba(46,230,166,.15)!important}
.is-inview .otp-phone-icon::before,.is-inview .otp-phone-icon::after,.is-inview .otp-wave i{animation-play-state:running}

/* ---------- Services ---------- */
.service-grid{gap:18px}
.service-card{--mx:50%;--my:0%;display:flex;flex-direction:column;overflow:hidden;isolation:isolate;transition:transform .5s var(--ease-out),border-color .3s,box-shadow .5s var(--ease-out)!important}
.service-card::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:radial-gradient(420px circle at var(--mx) var(--my),rgba(17,198,232,.14),transparent 45%);opacity:0;transition:opacity .4s}
.service-card::after{content:"";position:absolute;left:28px;right:28px;top:-1px;height:1px;background:linear-gradient(90deg,transparent,var(--cyan),var(--violet),transparent);opacity:.0;transition:opacity .5s}
.service-card:hover{transform:translateY(-6px);border-color:rgba(17,198,232,.35)!important;box-shadow:var(--glow)!important}
.service-card:hover::before,.service-card:hover::after{opacity:1}
.service-card .icon{display:grid;place-items:center;width:58px;height:58px;margin-bottom:30px;border-radius:18px;font-size:26px;color:var(--cyan)!important;background:linear-gradient(145deg,rgba(17,198,232,.16),rgba(139,124,255,.12));box-shadow:inset 0 0 0 1px rgba(17,198,232,.3),0 10px 30px -10px rgba(17,198,232,.5);transition:transform .5s var(--ease-out)}
.service-card:hover .icon{transform:translateY(-3px) rotate(-5deg)}
.service-card.featured{background:radial-gradient(500px circle at 100% 0%,rgba(139,124,255,.38),transparent 55%),radial-gradient(400px circle at 0% 100%,rgba(17,198,232,.25),transparent 55%),linear-gradient(150deg,#0a3f94 0%,#082d72 100%)!important;border-color:rgba(17,198,232,.35)!important;box-shadow:var(--glow)!important}
.service-card.featured .icon{color:#fff!important;background:rgba(255,255,255,.14)}
.service-number{font-size:13px!important;color:var(--text-3)!important}
.featured .service-number{color:#a9d4ff!important}
.service-card h3{font-size:24px!important;line-height:1.2;color:#fff!important}
.service-card h3 a{display:inline-block;padding:4px 0;font-size:inherit!important;font-weight:inherit;color:inherit!important}
.service-card h3 a:hover{color:var(--cyan)!important}
.service-card p{color:var(--text-2)!important;font-size:15.5px!important}
.service-card.featured p{color:#d8e6fb!important}
.service-card ul{color:var(--text)!important;font-size:15px}
.service-card li{display:flex;align-items:center;gap:10px}
.service-card li:before{content:""!important;flex:none;width:18px;height:18px;margin:0!important;border-radius:50%;background:rgba(17,198,232,.14) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2311c6e8' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/11px no-repeat}
.service-card>a:last-child{margin-top:auto;display:inline-flex;align-items:center;min-height:44px;color:var(--cyan)!important;font-size:15px;font-weight:600}
.service-card.featured>a:last-child{color:#fff!important}

/* ---------- Platforms ---------- */
.platform-grid{gap:18px}
.platform-card{overflow:hidden;isolation:isolate;min-height:360px!important;transition:transform .5s var(--ease-out),border-color .3s,box-shadow .5s var(--ease-out)!important}
.platform-card::before{content:"";position:absolute;right:-70px;top:-70px;width:240px;height:240px;z-index:-1;border-radius:50%;background:repeating-radial-gradient(circle,rgba(17,198,232,.18) 0 1px,transparent 1px 22px);transition:transform .9s var(--ease-out)}
.platform-card::after{content:"";position:absolute;inset:auto -40% -60% auto;width:320px;height:320px;z-index:-1;border-radius:50%;background:radial-gradient(circle,rgba(139,124,255,.28),transparent 65%);opacity:.5;transition:opacity .5s}
.platform-card:hover{transform:translateY(-6px);border-color:rgba(17,198,232,.35)!important;box-shadow:var(--glow)!important}
.platform-card:hover::before{transform:scale(1.3) rotate(20deg)}
.platform-card:hover::after{opacity:1}
.platform-tag{display:inline-flex;align-self:flex-start;padding:7px 13px;border-radius:999px;background:rgba(17,198,232,.1);box-shadow:inset 0 0 0 1px rgba(17,198,232,.25);font-family:var(--font-mono)!important;font-size:12px!important;letter-spacing:.08em!important;color:var(--cyan)!important}
.platform-card h3{font-size:34px!important;color:#fff!important}
.platform-card p{color:var(--text-2)!important}
.platform-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--cyan)!important;font-size:15px}

/* ---------- Nigeria & international band with server rack ---------- */
.traffic-band{position:relative;overflow:hidden;background:radial-gradient(900px 520px at 85% 50%,rgba(17,198,232,.16),transparent 60%),radial-gradient(600px 400px at 10% 10%,rgba(139,124,255,.16),transparent 60%),linear-gradient(115deg,#061e4c 0%,#082d72 60%,#0a2f7c 100%)!important;padding:120px 0!important;border-block:1px solid var(--stroke)}
.traffic-inner{position:relative;z-index:1;display:grid!important;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:center;gap:60px}
.traffic-inner p{color:#c5d5e9!important}
.traffic-copy .btn{margin-top:32px}
.rack-visual{position:relative;width:100%;max-width:500px;justify-self:end}
.rack-visual svg{display:block;width:100%;height:auto;overflow:visible;-webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 30%);mask-image:linear-gradient(90deg,transparent 0%,#000 30%)}

/* Fibre photo in the traffic band: the photo's own dark backdrop fades into the band */
.fibre-visual{position:relative;justify-self:end;width:100%;max-width:500px;aspect-ratio:1;margin:0;border-radius:32px;overflow:hidden;box-shadow:0 50px 100px -40px rgba(0,0,0,.8),0 0 120px -30px rgba(17,198,232,.45)}
.fibre-visual img{width:100%;height:100%;max-width:none;object-fit:cover;object-position:40% 62%;transform:scale(1.12);transition:transform 1.4s var(--ease-out)}
.fibre-visual:hover img{transform:scale(1.18)}
.fibre-visual::after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle at 45% 60%,transparent 40%,rgba(6,30,76,.55) 100%),linear-gradient(180deg,rgba(8,45,114,.25),transparent 40%);box-shadow:inset 0 0 0 1px rgba(150,185,245,.2);pointer-events:none}
@media (max-width:900px){.fibre-visual{justify-self:center;max-width:420px}}
@media (prefers-reduced-motion:reduce){.fibre-visual:hover img{transform:scale(1.12)}}

/* Shared animated-network pieces */
.cable-base{fill:none;stroke:#0b3d94;stroke-width:5;stroke-linecap:round}
.cable-core{fill:none;stroke:#2563c9;stroke-width:2;stroke-linecap:round}
.cable-pulse{fill:none;stroke:url(#gradPulse);stroke-width:3;stroke-linecap:round;stroke-dasharray:28 260;stroke-dashoffset:288;animation:pulseRun 3.2s linear infinite;animation-play-state:paused}
.cable-pulse.d2{animation-delay:-1.1s;animation-duration:3.8s}
.cable-pulse.d3{animation-delay:-2.2s;animation-duration:2.9s}
.cable-pulse.d4{animation-delay:-.6s;animation-duration:4.2s}
@keyframes pulseRun{to{stroke-dashoffset:0}}
.led{animation:led 1.6s steps(1,end) infinite;animation-play-state:paused}
.led.g{fill:var(--mint)}.led.b{fill:var(--cyan)}.led.a{fill:#ffb020}
.led.s1{animation-duration:1.3s}.led.s2{animation-duration:2.1s;animation-delay:-.4s}.led.s3{animation-duration:.9s;animation-delay:-.2s}.led.s4{animation-duration:2.7s;animation-delay:-1s}
@keyframes led{0%,100%{opacity:1}50%{opacity:.25}}
.rack-glow{animation:glow 4s var(--ease-in-out) infinite alternate;animation-play-state:paused}
@keyframes glow{from{opacity:.55}to{opacity:1}}
.net-node{animation:node 2.6s var(--ease-out) infinite;transform-box:fill-box;transform-origin:center;animation-play-state:paused}
@keyframes node{0%{transform:scale(1);opacity:.9}70%,100%{transform:scale(2.6);opacity:0}}
.is-inview .cable-pulse,.is-inview .led,.is-inview .rack-glow,.is-inview .net-node{animation-play-state:running}

/* ---------- About ---------- */
.dark-section{background:radial-gradient(800px 500px at 10% 30%,rgba(13,131,247,.18),transparent 60%),var(--bg)!important}
.about-copy p{color:var(--text-2)!important}
.about-visual{border-radius:30px!important;border:1px solid var(--stroke);box-shadow:0 50px 100px -40px rgba(0,0,0,.8),0 0 120px -40px rgba(13,131,247,.5)!important}
.about-visual .net-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.about-panel{z-index:1;border-radius:22px!important;background:linear-gradient(160deg,rgba(255,255,255,.14),rgba(255,255,255,.04))!important;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 30px 60px -30px rgba(0,0,0,.7)}
.mini-label{font-family:var(--font-mono);font-size:12px!important;letter-spacing:.14em!important;color:var(--cyan)!important}
.big-word{font-family:var(--font-display)!important;font-weight:800;background:linear-gradient(180deg,#fff 20%,#9cc8ff 70%,#a99dff 100%);-webkit-background-clip:text;background-clip:text;color:transparent!important}
.about-panel p{font-size:14px!important;color:var(--text-2)!important}
.values div{border-top-color:var(--stroke)!important;transition:border-color .3s}
.values div:hover{border-top-color:rgba(17,198,232,.6)!important}
.values strong{font-size:13px!important;color:var(--cyan)!important}
.values-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin-top:26px;color:var(--cyan);font-weight:600}
.values-link span{transition:transform .25s var(--ease-out)}
.values-link:hover span{transform:translateX(4px)}
.values span{font-size:16px!important;color:var(--text)!important}

/* ---------- Industries ---------- */
.industry-list{gap:12px;border:0!important}
.industry-list div{align-items:center;min-height:76px;padding:20px 22px!important;border-radius:var(--radius)!important;font-weight:600;color:var(--text)!important;overflow:hidden;transition:transform .4s var(--ease-out),border-color .3s,background .3s!important}
.industry-list div::before{content:"";position:absolute;left:0;top:16px;bottom:16px;width:3px;border-radius:0 3px 3px 0;background:linear-gradient(var(--cyan),var(--violet));transform:scaleY(0);transition:transform .35s var(--ease-out)}
.industry-list div:hover{transform:translateY(-3px);border-color:rgba(17,198,232,.35)!important;background:linear-gradient(180deg,rgba(17,198,232,.08),rgba(255,255,255,.02))!important}
.industry-list div:hover::before{transform:scaleY(1)}
.industry-list span{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:rgba(17,198,232,.1);color:var(--cyan)!important;font-size:16px}

/* ---------- Process ---------- */
.process-grid{position:relative;gap:18px}
.process-step{z-index:1;padding:34px!important;transition:transform .4s var(--ease-out),border-color .3s!important}
.process-step:hover{transform:translateY(-4px);border-color:rgba(17,198,232,.35)!important}
.process-step>span{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;background:var(--grad-brand);color:#041632!important;font-size:13px!important;font-weight:600;box-shadow:0 0 0 6px var(--bg),0 0 0 7px var(--stroke-2),0 0 30px -4px rgba(17,198,232,.6)}
.process-step h3{margin-top:32px!important;color:#fff!important}
.process-step p{color:var(--text-2)!important}
.process-line{position:absolute;left:12.5%;right:12.5%;top:57px;height:1px;z-index:0;background:linear-gradient(90deg,var(--stroke),var(--stroke-2),var(--stroke));overflow:hidden;pointer-events:none}
.process-line::after{content:"";position:absolute;top:0;left:0;width:18%;height:100%;background:linear-gradient(90deg,transparent,var(--cyan),var(--violet),transparent);animation:lineRun 3.4s var(--ease-in-out) infinite;animation-play-state:paused}
.is-inview .process-line::after{animation-play-state:running}
@keyframes lineRun{from{transform:translateX(-100%)}to{transform:translateX(560%)}}

/* ---------- Features / uses / FAQ / related (product & service pages) ---------- */
.feature-grid{gap:18px!important;border:0!important}
.feature{padding:34px 30px!important;transition:transform .45s var(--ease-out),border-color .3s,box-shadow .45s!important}
.feature:hover{transform:translateY(-5px);border-color:rgba(17,198,232,.35)!important;box-shadow:var(--glow)!important}
.feature>span{display:inline-grid;place-items:center;min-width:40px;height:30px;padding:0 10px;border-radius:999px;background:rgba(17,198,232,.1);box-shadow:inset 0 0 0 1px rgba(17,198,232,.25);font-size:12.5px!important;color:var(--cyan)!important}
.feature h3{color:#fff!important;font-size:22px!important}
.feature p{color:var(--text-2)!important}
.uses{gap:10px!important;border:0!important}
.uses li{padding:18px 20px!important;border-radius:var(--radius)!important;color:var(--text)!important;align-items:center}
.uses li:before{content:""!important;flex:none;width:22px;height:22px;border-radius:50%;background:rgba(17,198,232,.14) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2311c6e8' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/12px no-repeat}
.faq details{border-radius:var(--radius)!important;transition:border-color .3s,background .3s}
.faq details[open]{border-color:rgba(17,198,232,.35)!important;background:linear-gradient(180deg,rgba(17,198,232,.07),rgba(255,255,255,.02))!important}
.faq summary{color:#fff!important;font-family:var(--font-display)!important;min-height:64px;display:flex;align-items:center}
.faq summary:after{color:var(--cyan)!important}
.faq details p{color:var(--text-2)!important}
.related-card{padding:30px!important;transition:transform .45s var(--ease-out),border-color .3s,box-shadow .45s!important}
.related-card:hover{transform:translateY(-5px);border-color:rgba(17,198,232,.35)!important;box-shadow:var(--glow)!important}
.related-card span{font-family:var(--font-mono)!important;font-size:12.5px!important;color:var(--cyan)!important;letter-spacing:.1em!important}
.related-card strong{color:#fff!important}
.related-card em{color:var(--text-2)!important}

/* ---------- CTA band ---------- */
.cta-section{position:relative;overflow:hidden;background:radial-gradient(700px 400px at 90% 50%,rgba(139,124,255,.3),transparent 60%),radial-gradient(600px 400px at 0% 0%,rgba(17,198,232,.18),transparent 60%),linear-gradient(110deg,#061e4c 0%,#0a2f7c 100%)!important;border-block:1px solid var(--stroke)}
.cta-section .cta-cables{position:absolute;right:0;top:0;height:100%;width:min(780px,70%);pointer-events:none}
.cta-inner{position:relative;z-index:1}
.cta-inner p{color:#c5d5e9!important}

/* ---------- Contact: dark band, crisp white form card ---------- */
.contact-copy h2{color:#fff!important}
.contact-details{gap:10px}
.contact-details a{min-height:68px;padding:10px 16px 10px 10px;border-radius:var(--radius);border:1px solid var(--stroke);background:rgba(255,255,255,.03);transition:background-color .25s,border-color .25s,transform .25s var(--ease-out)}
.contact-details a:hover{background:rgba(255,255,255,.07);border-color:rgba(17,198,232,.4);transform:translateX(4px)}
.contact-details a>span{width:46px;height:46px;border-radius:14px;font-size:20px;background:rgba(17,198,232,.12)!important;color:var(--cyan)!important;box-shadow:inset 0 0 0 1px rgba(17,198,232,.3)}
.contact-details a>span.wa-dot{background:rgba(46,230,166,.12)!important;color:var(--mint)!important;box-shadow:inset 0 0 0 1px rgba(46,230,166,.3)}
.contact-details small{font-family:var(--font-mono);font-size:12px!important;letter-spacing:.1em!important;color:var(--text-3)!important}
.contact-details strong{font-size:16px!important;color:#fff!important}
.contact-form{border-radius:30px!important;border:1px solid rgba(255,255,255,.7)!important;background:#fff!important;box-shadow:0 50px 100px -40px rgba(0,0,0,.85),0 0 120px -40px rgba(13,131,247,.6)!important;padding:42px!important;color:#0a1b35}
.contact-form label{font-size:14px!important;font-weight:600;color:#2b3b52!important}
.contact-form input,.contact-form select,.contact-form textarea{min-height:52px;border-radius:12px!important;border:1px solid #d3deeb!important;background:#fbfdff!important;font-size:16px!important;font-weight:400!important;color:#0a1b35!important;transition:border-color .2s,box-shadow .2s,background-color .2s}
.contact-form textarea{min-height:140px}
.contact-form input::placeholder,.contact-form textarea::placeholder{color:#6b7a90;font-weight:400;opacity:1}
.contact-form input:hover,.contact-form select:hover,.contact-form textarea:hover{border-color:#b6c8de!important}
.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{background:#fff!important;border-color:var(--blue)!important;box-shadow:0 0 0 4px rgba(13,131,247,.18)!important}
.contact-form select{appearance:none;-webkit-appearance:none;padding-right:44px!important;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23082d72' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")!important;background-repeat:no-repeat!important;background-position:right 16px center!important;background-size:18px!important}
.contact-form :focus-visible{outline-color:var(--blue)}
.contact-form .btn-primary{color:#041632!important}
.poc-fields{border-left:0!important;padding:18px 18px 4px!important;margin-bottom:16px;border-radius:16px;background:linear-gradient(160deg,#f1f7ff,#f7fbff);box-shadow:inset 0 0 0 1px rgba(13,131,247,.16)}
.form-status{font-size:15px}
.form-status.err{color:#b42318!important}
.form-note{font-size:14px!important;color:var(--muted)!important;margin-top:16px!important}
.form-note a{color:var(--blue-ink)!important;text-decoration:underline;text-underline-offset:3px}
.form-success h3{color:#061e4c!important}
.form-success p{color:var(--muted)!important}
.form-success .tick{background:linear-gradient(145deg,#e7f2ff,#d7ebff)!important;color:var(--blue-ink)!important;animation:tickIn .6s var(--ease-out)}
@keyframes tickIn{from{transform:scale(.6);opacity:0}to{transform:none;opacity:1}}

/* ---------- Footer ---------- */
.footer{position:relative;background:radial-gradient(800px 400px at 0% 0%,rgba(13,131,247,.14),transparent 60%),radial-gradient(600px 300px at 100% 100%,rgba(139,124,255,.12),transparent 60%),#030817!important;color:var(--text-3)}
.footer::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(17,198,232,.6),rgba(139,124,255,.5),transparent)}
.footer-brands img{width:220px!important;padding:14px 18px;border-radius:18px;background:#fff;opacity:1!important;box-shadow:0 20px 40px -24px rgba(0,0,0,.8)}
.footer-brands p{color:var(--text)!important;font-size:16px}
.footer-tag{color:var(--text-3)!important;font-size:14px!important}
.footer-links h3{color:#fff!important;font-family:var(--font-mono)!important;font-size:13px!important;font-weight:600;text-transform:uppercase;letter-spacing:.12em!important;margin:0 0 14px}
.footer-links a{display:flex;align-items:center;min-height:36px;margin:0!important;font-size:15px!important;color:var(--text-3)!important;transition:color .2s,transform .2s var(--ease-out)}
.footer-links a:hover{color:#fff!important;transform:translateX(3px)}
.footer-bottom{font-size:13px!important;color:var(--text-3);border-top-color:var(--stroke)!important}

/* ---------- Floating WhatsApp ---------- */
.wa-float{gap:10px;min-height:54px;padding:0 20px 0 16px;border-radius:999px;background:#0e7a3f!important;color:#fff!important;font-size:15px;font-weight:700;box-shadow:0 18px 40px -16px rgba(14,122,63,.8),inset 0 1px 0 rgba(255,255,255,.2)!important;opacity:0;transform:translateY(16px) scale(.96);pointer-events:none;transition:opacity .4s var(--ease-out),transform .4s var(--ease-out),background-color .2s}
.wa-float span{font-size:22px}
.wa-float:hover{background:#0b6a36!important}
body.show-wa .wa-float,.wa-float:focus-visible{opacity:1;transform:none;pointer-events:auto}

/* ---------- Scroll reveal ---------- */
.reveal{transform:translateY(24px);transition:opacity .8s var(--ease-out),transform .8s var(--ease-out);transition-delay:calc(var(--i,0) * 80ms)}
.motion-on .reveal{transition:none}
.motion-on .reveal.visible{opacity:1;transform:none}

/* =====================================================================
   Product pages (Alliance SBC, Alliance PBX, Voice OTP)
   ===================================================================== */
.product-hero .product-hero-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);align-items:center;gap:40px}
.product-hero .page-hero-inner{max-width:none;padding:90px 0 100px!important}
.product-hero h1{font-size:clamp(40px,4.8vw,70px)!important}
.hero-chips{display:flex;flex-wrap:wrap;gap:8px;margin:30px 0 0;padding:0;list-style:none}
.hero-chips li{padding:8px 14px;border-radius:999px;font-family:var(--font-mono);font-size:12.5px;color:var(--text-2);background:rgba(255,255,255,.04);box-shadow:inset 0 0 0 1px var(--stroke)}

/* Routing diagram */
.route-visual{margin:0;position:relative}
.route-visual::before{content:"";position:absolute;inset:8% 10%;border-radius:50%;background:radial-gradient(circle,rgba(13,131,247,.35),transparent 65%);filter:blur(30px);z-index:-1}
.route-visual svg,.nodes-visual svg{display:block;width:100%;height:auto;overflow:visible}
.route-visual text,.nodes-visual text{font-family:var(--font-body);text-anchor:middle;dominant-baseline:middle}
.rv-pill rect{fill:rgba(255,255,255,.06);stroke:rgba(150,185,245,.3);stroke-width:1.5}
.rv-pill text{fill:#e8f0ff;font-size:16px;font-weight:600}
.rv-line{fill:none;stroke:rgba(150,185,245,.28);stroke-width:2.5;stroke-linecap:round}
.rv-flow{fill:none;stroke:var(--cyan);stroke-width:3;stroke-linecap:round;stroke-dasharray:10 14;animation:rvDash 1.1s linear infinite;opacity:0;filter:drop-shadow(0 0 6px rgba(17,198,232,.8))}
@keyframes rvDash{to{stroke-dashoffset:-48}}
.rv-flow.r1{animation:rvDash 1.1s linear infinite,rvR1 10s var(--ease-in-out) infinite}
.rv-flow.r2{animation:rvDash 1.1s linear infinite,rvR2 10s var(--ease-in-out) infinite}
@keyframes rvR1{0%,44%{opacity:1}50%,100%{opacity:0}}
@keyframes rvR2{0%,52%{opacity:0}58%,94%{opacity:1}100%{opacity:0}}
.rv-line.r1{animation:rvRed 10s var(--ease-in-out) infinite}
@keyframes rvRed{0%,44%{stroke:rgba(150,185,245,.28)}50%,92%{stroke:rgba(255,107,107,.65)}98%{stroke:rgba(150,185,245,.28)}}
.rv-route.r1 rect{animation:rvPill1 10s var(--ease-in-out) infinite}
@keyframes rvPill1{0%,44%{stroke:#11c6e8;fill:rgba(17,198,232,.14)}50%,92%{stroke:#ff6b6b;fill:rgba(255,107,107,.12)}98%{stroke:#11c6e8;fill:rgba(17,198,232,.14)}}
.rv-route.r2 rect{animation:rvPill2 10s var(--ease-in-out) infinite}
@keyframes rvPill2{0%,52%{stroke:rgba(150,185,245,.3);fill:rgba(255,255,255,.06)}58%,94%{stroke:#11c6e8;fill:rgba(17,198,232,.14)}100%{stroke:rgba(150,185,245,.3);fill:rgba(255,255,255,.06)}}
.rv-tag text{font-family:var(--font-mono);font-size:12.5px;font-weight:600}
.rv-best rect{fill:rgba(46,230,166,.16);stroke:rgba(46,230,166,.6)}.rv-best text{fill:#7ff5cb}
.rv-fail rect{fill:rgba(255,107,107,.16);stroke:rgba(255,107,107,.6)}.rv-fail text{fill:#ffb3b3}
.rv-over rect{fill:rgba(17,198,232,.16);stroke:rgba(17,198,232,.6)}.rv-over text{fill:#9eeefc}
.rv-best{animation:tagBest 10s var(--ease-in-out) infinite}
.rv-fail{animation:tagFail 10s var(--ease-in-out) infinite}
.rv-over{animation:tagOver 10s var(--ease-in-out) infinite}
@keyframes tagBest{0%,42%{opacity:1}47%,100%{opacity:0}}
@keyframes tagFail{0%,46%{opacity:0}50%,90%{opacity:1}95%,100%{opacity:0}}
@keyframes tagOver{0%,54%{opacity:0}58%,90%{opacity:1}95%,100%{opacity:0}}
.rv-core-t{fill:#fff;font-family:var(--font-display)!important;font-size:19px;font-weight:700}
.rv-ring{fill:none;stroke:rgba(17,198,232,.5);stroke-width:2;transform-box:fill-box;transform-origin:center;animation:rvRing 2.6s var(--ease-out) infinite}
@keyframes rvRing{0%{transform:scale(.85);opacity:.9}100%{transform:scale(1.35);opacity:0}}
.rv-drop{fill:none;stroke:var(--stroke-2);stroke-width:2;stroke-dasharray:3 6}
.rv-checks rect{fill:rgba(255,255,255,.05);stroke:var(--stroke)}
.rv-checks text{fill:var(--text-2);font-family:var(--font-mono)!important;font-size:13.5px}
.rv-checks g{animation:chk 10s var(--ease-out) infinite}
.rv-checks g:nth-child(2){animation-delay:.25s}.rv-checks g:nth-child(3){animation-delay:.5s}
@keyframes chk{0%,4%{opacity:.35}10%,100%{opacity:1}}
/* Pause the diagram whenever its section is off screen (animation shorthands above reset play-state, hence !important) */
[data-inview]:not(.is-inview) .route-visual *{animation-play-state:paused!important}

/* PBX wallboard illustration */
.pbx-visual{margin:0;position:relative}
.pbx-visual::before{content:"";position:absolute;inset:6% 8%;border-radius:50%;background:radial-gradient(circle,rgba(139,124,255,.32),transparent 65%);filter:blur(34px);z-index:-1}
.pbx-visual svg{display:block;width:100%;height:auto;overflow:visible}
.pbx-visual text{font-family:var(--font-body);text-anchor:middle;dominant-baseline:middle}
.pv-tenants rect{fill:rgba(255,255,255,.04);stroke:var(--stroke)}
.pv-title{fill:#fff;font-size:16px;font-weight:600}
.pv-label{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:12.5px;text-anchor:start!important;letter-spacing:.06em}
.pv-track{fill:rgba(255,255,255,.07)}
.pv-fill{transform-box:fill-box;transform-origin:left}
.pv-fill.q1{fill:#11c6e8;animation:q1 7s var(--ease-in-out) infinite}
.pv-fill.q2{fill:#8b7cff;animation:q2 9s var(--ease-in-out) infinite}
@keyframes q1{0%,100%{transform:scaleX(.25)}40%{transform:scaleX(.7)}70%{transform:scaleX(.45)}}
@keyframes q2{0%,100%{transform:scaleX(.55)}35%{transform:scaleX(.3)}75%{transform:scaleX(.8)}}
.pv-agent>rect{fill:rgba(255,255,255,.045);stroke:var(--stroke)}
.pv-agent>circle{fill:#173a86}
.pv-in{fill:#fff;font-family:var(--font-mono)!important;font-size:13px;font-weight:600}
.st text{font-family:var(--font-mono)!important;font-size:12.5px;font-weight:600}
.st-a rect{fill:rgba(46,230,166,.14);stroke:rgba(46,230,166,.5)}.st-a text{fill:#7ff5cb}
.st-b rect{fill:rgba(17,198,232,.14);stroke:rgba(17,198,232,.5)}.st-b text{fill:#9eeefc}
.st-c rect{fill:rgba(255,176,32,.14);stroke:rgba(255,176,32,.5)}.st-c text{fill:#ffd27a}
/* each agent shows its first status, then swaps to the second, on a staggered loop */
.pv-agent .st:nth-of-type(1){animation:stA 8s var(--ease-in-out) infinite}
.pv-agent .st:nth-of-type(2){animation:stB 8s var(--ease-in-out) infinite}
.pv-agent.a2 .st{animation-delay:-1.5s}.pv-agent.a3 .st{animation-delay:-3s}.pv-agent.a4 .st{animation-delay:-4.5s}.pv-agent.a5 .st{animation-delay:-6s}.pv-agent.a6 .st{animation-delay:-2.2s}
/* hand-off is quick (2% of the cycle) so the two labels never visibly overlap */
@keyframes stA{0%,46%{opacity:1}47%,97%{opacity:0}98%,100%{opacity:1}}
@keyframes stB{0%,46.5%{opacity:0}48%,96.5%{opacity:1}97.5%,100%{opacity:0}}
.pv-call{animation:callIn 8s var(--ease-out) infinite}
@keyframes callIn{0%,8%{opacity:0;transform:translateY(16px)}14%,80%{opacity:1;transform:none}88%,100%{opacity:0;transform:translateY(-6px)}}
.pv-call>rect{fill:rgba(8,20,52,.94);stroke:rgba(17,198,232,.5);stroke-width:1.5}
.pv-ring{fill:none;stroke:rgba(17,198,232,.7);stroke-width:2;transform-box:fill-box;transform-origin:center;animation:rvRing 1.6s var(--ease-out) infinite}
.pv-call-t{fill:#fff;font-family:var(--font-display)!important;font-size:17px;font-weight:700}
.pv-call-s{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:13px}
.pv-rec rect{fill:rgba(255,107,107,.15);stroke:rgba(255,107,107,.55)}
.pv-rec circle{fill:#ff6b6b;animation:dot 1.2s var(--ease-in-out) infinite}
.pv-rec text{fill:#ffb3b3;font-family:var(--font-mono)!important;font-size:12.5px;font-weight:600}
[data-inview]:not(.is-inview) .pbx-visual *{animation-play-state:paused!important}
.deploy-grid.deploy-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.app-card{text-align:left}

/* Voice OTP phone illustration: 10s loop
   0–28% ringing · 30–60% code read out digit by digit · 62–92% verified · status chips light in order */
.otp-visual{margin:0;position:relative}
.otp-visual::before{content:"";position:absolute;inset:4% 14%;border-radius:50%;background:radial-gradient(circle,rgba(17,198,232,.3),transparent 65%);filter:blur(34px);z-index:-1}
.otp-visual svg,.portal-visual svg{display:block;width:100%;height:auto;overflow:visible}
.otp-visual text,.portal-visual text{font-family:var(--font-body);dominant-baseline:middle}
.otp-visual text{text-anchor:middle}
.ov-api rect{fill:rgba(8,20,52,.92);stroke:rgba(17,198,232,.45);stroke-width:1.5}
.ov-api text{text-anchor:start!important}
.ov-api-h{fill:var(--cyan);font-family:var(--font-mono)!important;font-size:12.5px;font-weight:600;letter-spacing:.08em}
.ov-api-k{fill:var(--text-3);font-size:12.5px}
.ov-api-v{fill:#fff;font-family:var(--font-mono)!important;font-size:14px;font-weight:600}
.ov-api{animation:ovApi 10s var(--ease-out) infinite}
@keyframes ovApi{0%{opacity:0;transform:translateX(-10px)}6%,92%{opacity:1;transform:none}98%,100%{opacity:0}}
.ov-link{fill:none;stroke:var(--cyan);stroke-width:2;stroke-dasharray:4 6;animation:rvDash 1s linear infinite}
.ov-small{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:12.5px;letter-spacing:.1em}
.ov-brand{fill:#fff;font-family:var(--font-display)!important;font-size:21px;font-weight:700}
.ov-sub{fill:var(--text-2);font-size:14px}
.ov-handset{fill:none;stroke:#041632;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.ov-pulse{fill:none;stroke:rgba(17,198,232,.6);stroke-width:2;transform-box:fill-box;transform-origin:center;animation:rvRing 1.6s var(--ease-out) infinite}
.ov-pulse.p2{animation-delay:.8s}
.ov-ring-scene{animation:ovRing 10s var(--ease-in-out) infinite}
@keyframes ovRing{0%,26%{opacity:1}30%,97%{opacity:0}100%{opacity:1}}
.ov-btns circle:last-child{animation:dot 1s var(--ease-in-out) infinite}
.ov-code-scene{opacity:0;animation:ovCode 10s var(--ease-in-out) infinite}
@keyframes ovCode{0%,28%{opacity:0}32%,94%{opacity:1}98%,100%{opacity:0}}
.ov-wave rect{fill:url(#phWave);transform-box:fill-box;transform-origin:center;animation:wave .9s var(--ease-in-out) infinite alternate}
.ov-wave rect:nth-child(2){animation-delay:.1s}.ov-wave rect:nth-child(3){animation-delay:.2s}.ov-wave rect:nth-child(4){animation-delay:.3s}.ov-wave rect:nth-child(5){animation-delay:.4s}.ov-wave rect:nth-child(6){animation-delay:.5s}.ov-wave rect:nth-child(7){animation-delay:.6s}
.ov-digits rect{fill:#fff}
.ov-digits text{fill:#061e4c;font-family:var(--font-mono)!important;font-size:19px;font-weight:600}
.ov-digits g{opacity:0;animation:dg 10s var(--ease-out) infinite}
.ov-digits g:nth-child(1){animation-name:dg1}.ov-digits g:nth-child(2){animation-name:dg2}.ov-digits g:nth-child(3){animation-name:dg3}
.ov-digits g:nth-child(4){animation-name:dg4}.ov-digits g:nth-child(5){animation-name:dg5}.ov-digits g:nth-child(6){animation-name:dg6}
@keyframes dg1{0%,34%{opacity:0}37%,94%{opacity:1}98%,100%{opacity:0}}
@keyframes dg2{0%,38%{opacity:0}41%,94%{opacity:1}98%,100%{opacity:0}}
@keyframes dg3{0%,42%{opacity:0}45%,94%{opacity:1}98%,100%{opacity:0}}
@keyframes dg4{0%,46%{opacity:0}49%,94%{opacity:1}98%,100%{opacity:0}}
@keyframes dg5{0%,50%{opacity:0}53%,94%{opacity:1}98%,100%{opacity:0}}
@keyframes dg6{0%,54%{opacity:0}57%,94%{opacity:1}98%,100%{opacity:0}}
.ov-verified{opacity:0;transform-box:fill-box;transform-origin:left center;animation:ovOk 10s var(--ease-out) infinite}
@keyframes ovOk{0%,60%{opacity:0;transform:scale(.85)}65%,92%{opacity:1;transform:none}97%,100%{opacity:0}}
.ov-verified rect{fill:rgba(8,20,52,.95);stroke:rgba(46,230,166,.6);stroke-width:1.5}
.ov-verified text{fill:#fff;font-family:var(--font-display)!important;font-size:18px;font-weight:700}
.ov-track{fill:none;stroke:var(--stroke-2);stroke-width:2}
.ov-status circle{fill:#0b1a42;stroke:var(--stroke-2);stroke-width:2}
.ov-status text{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:13px}
.ov-status g{animation:ovS 10s var(--ease-out) infinite}
.ov-status .s1{animation-name:ovS1}.ov-status .s2{animation-name:ovS2}.ov-status .s3{animation-name:ovS3}.ov-status .s4{animation-name:ovS4}
@keyframes ovS1{0%,2%{opacity:.45}4%,95%{opacity:1}100%{opacity:.45}}
@keyframes ovS2{0%,10%{opacity:.45}13%,95%{opacity:1}100%{opacity:.45}}
@keyframes ovS3{0%,28%{opacity:.45}31%,95%{opacity:1}100%{opacity:.45}}
@keyframes ovS4{0%,57%{opacity:.45}60%,95%{opacity:1}100%{opacity:.45}}
.ov-status g circle{transition:fill .3s}
.ov-status .s1 circle{animation:ovC1 10s infinite}.ov-status .s2 circle{animation:ovC2 10s infinite}.ov-status .s3 circle{animation:ovC3 10s infinite}.ov-status .s4 circle{animation:ovC4 10s infinite}
@keyframes ovC1{0%,2%{fill:#0b1a42}4%,95%{fill:#11c6e8}100%{fill:#0b1a42}}
@keyframes ovC2{0%,10%{fill:#0b1a42}13%,95%{fill:#11c6e8}100%{fill:#0b1a42}}
@keyframes ovC3{0%,28%{fill:#0b1a42}31%,95%{fill:#11c6e8}100%{fill:#0b1a42}}
@keyframes ovC4{0%,57%{fill:#0b1a42}60%,95%{fill:#2ee6a6}100%{fill:#0b1a42}}
[data-inview]:not(.is-inview) .otp-visual *{animation-play-state:paused!important}

/* Voice OTP portal illustration */
.portal-visual{margin:0}
.pt-win{fill:rgba(255,255,255,.04);stroke:var(--stroke-2);stroke-width:1.5}
.pt-line{stroke:var(--stroke);fill:none}
.pt-nav rect{fill:transparent}
.pt-nav rect.on{fill:rgba(17,198,232,.12)}
.pt-nav text{fill:var(--text-2);font-size:14px}
.pt-h{fill:#fff;font-family:var(--font-display)!important;font-size:19px;font-weight:700}
.pt-btn rect{fill:#11c6e8}
.pt-btn text{fill:#041632;font-size:14px;font-weight:700;text-anchor:middle}
.pt-btn{animation:ptBtn 6s var(--ease-in-out) infinite}
@keyframes ptBtn{0%,8%{opacity:1}10%{opacity:.6}12%,100%{opacity:1}}
.pt-rows>g>rect{fill:rgba(255,255,255,.04);stroke:var(--stroke)}
.pt-rows .k{fill:var(--text);font-family:var(--font-mono)!important;font-size:14px}
.chip text{font-family:var(--font-mono)!important;font-size:12.5px;font-weight:600;text-anchor:middle}
.chip.ok rect{fill:rgba(46,230,166,.14);stroke:rgba(46,230,166,.5)}.chip.ok text{fill:#7ff5cb}
.chip.mid rect{fill:rgba(17,198,232,.14);stroke:rgba(17,198,232,.5)}.chip.mid text{fill:#9eeefc}
.chip.dial rect{fill:rgba(255,176,32,.14);stroke:rgba(255,176,32,.5)}.chip.dial text{fill:#ffd27a}
.pt-new{animation:ptNew 6s var(--ease-out) infinite}
@keyframes ptNew{0%,12%{opacity:0}20%,92%{opacity:1}100%{opacity:0}}
[data-inview]:not(.is-inview) .portal-visual *{animation-play-state:paused!important}

/* Feature card icon (service pages): sits top-right, opposite the number pill */
.feature{position:relative}
.f-icon{position:absolute;top:28px;right:26px;display:grid;place-items:center;width:46px;height:46px;border-radius:14px;font-size:21px;font-style:normal;color:var(--cyan);background:linear-gradient(145deg,rgba(17,198,232,.14),rgba(139,124,255,.1));box-shadow:inset 0 0 0 1px rgba(17,198,232,.28);transition:transform .45s var(--ease-out)}
.feature:hover .f-icon{transform:translateY(-2px) rotate(-5deg)}

/* Bulk SMS fan-out illustration */
.sms-visual{margin:0;position:relative}
.sms-visual::before{content:"";position:absolute;inset:6% 4% 6% 30%;border-radius:50%;background:radial-gradient(circle,rgba(13,131,247,.3),transparent 65%);filter:blur(34px);z-index:-1}
.sms-visual svg{display:block;width:100%;height:auto;overflow:visible}
.sms-visual text{font-family:var(--font-body);dominant-baseline:middle}
.sv-api>rect{fill:rgba(8,20,52,.94);stroke:rgba(17,198,232,.5);stroke-width:1.5}
.sv-ico{fill:none;stroke:var(--cyan);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sv-api-t{fill:#fff;font-family:var(--font-display)!important;font-size:20px;font-weight:700}
.sv-api-s{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:13px}
.sv-msg>rect{fill:rgba(255,255,255,.05);stroke:var(--stroke-2);stroke-width:1.5}
.sv-from{fill:var(--cyan);font-family:var(--font-mono)!important;font-size:13px;font-weight:600;letter-spacing:.08em}
.sv-line{fill:rgba(255,255,255,.14)}
.sv-st text{font-family:var(--font-mono)!important;font-size:12.5px;font-weight:600;text-anchor:middle}
.sv-st.pend rect{fill:rgba(255,176,32,.14);stroke:rgba(255,176,32,.5)}.sv-st.pend text{fill:#ffd27a}
.sv-st.done rect{fill:rgba(46,230,166,.14);stroke:rgba(46,230,166,.5)}.sv-st.done text{fill:#7ff5cb}
/* each message lands, waits as pending, then flips to delivered (staggered) */
.sv-msg{animation:svIn 8s var(--ease-out) infinite}
.sv-msg .pend{animation:svPend 8s var(--ease-in-out) infinite}
.sv-msg .done{animation:svDone 8s var(--ease-in-out) infinite}
.sv-msg.m2,.sv-msg.m2 .sv-st{animation-delay:.5s}.sv-msg.m3,.sv-msg.m3 .sv-st{animation-delay:1s}.sv-msg.m4,.sv-msg.m4 .sv-st{animation-delay:1.5s}
/* opacity only: a CSS transform here would override each card's SVG translate() position */
@keyframes svIn{0%,4%{opacity:.35}10%,92%{opacity:1}100%{opacity:.35}}
@keyframes svPend{0%,30%{opacity:1}33%,100%{opacity:0}}
@keyframes svDone{0%,31%{opacity:0}34%,94%{opacity:1}100%{opacity:0}}
[data-inview]:not(.is-inview) .sms-visual *{animation-play-state:paused!important}
@media (max-width:900px){.sms-visual{max-width:560px;width:100%;margin:0 auto 60px}}
@media (max-width:620px){.sv-from,.sv-api-s{font-size:15px}.sv-st text{font-size:14.5px}}
@media (prefers-reduced-motion:reduce){.sms-visual *{animation:none!important}.sv-msg .pend{opacity:0}.sv-msg .done{opacity:1}}

/* SIP trunk illustration */
.trunk-visual{margin:0;position:relative}
.trunk-visual::before{content:"";position:absolute;inset:10% 10%;border-radius:50%;background:radial-gradient(circle,rgba(13,131,247,.32),transparent 65%);filter:blur(34px);z-index:-1}
.trunk-visual svg{display:block;width:100%;height:auto;overflow:visible}
.trunk-visual text{font-family:var(--font-body);dominant-baseline:middle}
.tv-box>rect{fill:rgba(8,20,52,.94);stroke:rgba(17,198,232,.5);stroke-width:1.5}
.tv-t{fill:#fff;font-family:var(--font-display)!important;font-size:19px;font-weight:700}
.tv-s{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:12.5px}
.tv-lane{fill:none;stroke:rgba(37,99,201,.55);stroke-width:4;stroke-linecap:round}
.tv-flow{fill:none;stroke:var(--cyan);stroke-width:3;stroke-linecap:round;stroke-dasharray:14 40;animation:rvDash 1.4s linear infinite;filter:drop-shadow(0 0 5px rgba(17,198,232,.8))}
.tv-flow.f2{animation-duration:1.7s}.tv-flow.f3{animation-duration:1.2s}.tv-flow.f4{animation-duration:1.9s}.tv-flow.f5{animation-duration:1.5s}
.tv-cap{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:12.5px;letter-spacing:.12em;text-anchor:middle}
.tv-new{animation:tvNew 8s var(--ease-out) infinite}
@keyframes tvNew{0%,30%{opacity:0}40%,90%{opacity:1}100%{opacity:0}}
.tv-add rect{fill:rgba(46,230,166,.14);stroke:rgba(46,230,166,.5)}
.tv-add text{fill:#7ff5cb;font-family:var(--font-mono)!important;font-size:12.5px;font-weight:600;text-anchor:middle}
.tv-add{animation:tvAdd 8s var(--ease-out) infinite}
@keyframes tvAdd{0%,26%{opacity:0}32%,60%{opacity:1}70%,100%{opacity:0}}
.tv-lock rect{fill:rgba(8,20,52,.95);stroke:rgba(46,230,166,.55);stroke-width:1.5}
.tv-shield{fill:none;stroke:var(--mint);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.tv-core-t{fill:#fff;font-family:var(--font-display)!important;font-size:15px;font-weight:700;text-anchor:middle}
.tv-dest rect{fill:rgba(255,255,255,.05);stroke:var(--stroke-2);stroke-width:1.5}
.tv-dt{fill:#fff;font-size:15px;font-weight:600;text-anchor:middle}
.tv-ds{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:12.5px;text-anchor:middle}
[data-inview]:not(.is-inview) .trunk-visual *{animation-play-state:paused!important}
.uses-photo{margin-top:30px;aspect-ratio:4/3}
@media (max-width:900px){.trunk-visual{max-width:560px;width:100%;margin:0 auto 60px}}
@media (max-width:620px){.tv-cap,.tv-ds,.tv-add text{font-size:15px}.tv-dt{font-size:17px}.tv-s{font-size:13px}}
@media (prefers-reduced-motion:reduce){.trunk-visual *{animation:none!important}.tv-new{opacity:1}.tv-add{opacity:0}}

/* Wholesale voice interconnect illustration */
.wv-visual{margin:0;position:relative}
.wv-visual::before{content:"";position:absolute;inset:10% 14%;border-radius:50%;background:radial-gradient(circle,rgba(139,124,255,.28),transparent 65%);filter:blur(34px);z-index:-1}
.wv-visual svg{display:block;width:100%;height:auto;overflow:visible}
.wv-visual text{font-family:var(--font-body);dominant-baseline:middle}
.wv-head{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:12.5px;letter-spacing:.12em}
.wv-pill rect{fill:rgba(255,255,255,.05);stroke:var(--stroke-2);stroke-width:1.5}
.wv-pill text{fill:#fff;font-size:16px;font-weight:600;text-anchor:middle}
.wv-pill.ng rect{fill:rgba(46,230,166,.08);stroke:rgba(46,230,166,.45)}
.wv-pill.ng text{font-family:var(--font-display)!important;font-weight:700;font-size:17px}
.wv-wire{fill:none;stroke:rgba(37,99,201,.5);stroke-width:5;stroke-linecap:round}
.wv-in,.wv-out{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-dasharray:12 30;animation:rvDash 1.3s linear infinite}
.wv-in{stroke:var(--cyan);filter:drop-shadow(0 0 4px rgba(17,198,232,.8))}
.wv-out{stroke:var(--violet);filter:drop-shadow(0 0 4px rgba(139,124,255,.8));animation-duration:1.6s}
.wv-in.i2,.wv-out.o2{animation-duration:1.1s}.wv-in.i3,.wv-out.o3{animation-duration:1.9s}
.wv-core-t{fill:#fff;font-family:var(--font-display)!important;font-size:19px;font-weight:700;text-anchor:middle}
.wv-core-s{fill:#a9d4ff;font-family:var(--font-mono)!important;font-size:12.5px;letter-spacing:.12em;text-anchor:middle}
.wv-tag rect{fill:rgba(8,20,52,.95);stroke:var(--stroke-2)}
.wv-tag text{fill:var(--text-2);font-family:var(--font-mono)!important;font-size:12.5px;text-anchor:middle}
.wv-tag.noc circle{fill:var(--mint);animation:dot 2s var(--ease-in-out) infinite}
.wv-legend text{fill:var(--text-2);font-size:13.5px}
.lg-in{fill:var(--cyan)}.lg-out{fill:var(--violet)}
[data-inview]:not(.is-inview) .wv-visual *{animation-play-state:paused!important}
@media (max-width:900px){.wv-visual{max-width:560px;width:100%;margin:0 auto 60px}}
@media (max-width:620px){.wv-pill text{font-size:18px}.wv-head,.wv-core-s{font-size:14.5px}.wv-legend text{font-size:15.5px}}
@media (prefers-reduced-motion:reduce){.wv-visual *{animation:none!important}}

/* IVR call-tree illustration: 9s loop, key 1 → 2 → 3, each lighting its branch */
.ivr-visual{margin:0;position:relative}
.ivr-visual::before{content:"";position:absolute;inset:10% 10%;border-radius:50%;background:radial-gradient(circle,rgba(17,198,232,.26),transparent 65%);filter:blur(34px);z-index:-1}
.ivr-visual svg{display:block;width:100%;height:auto;overflow:visible}
.ivr-visual text{font-family:var(--font-body);dominant-baseline:middle}
.iv-t{fill:var(--text-2);font-size:14px}
.iv-h{fill:var(--cyan);font-family:var(--font-mono)!important;font-size:12.5px;font-weight:600;letter-spacing:.1em}
.iv-menu>rect{fill:rgba(8,20,52,.94);stroke:rgba(17,198,232,.5);stroke-width:1.5}
.iv-key rect{fill:rgba(255,255,255,.06);stroke:var(--stroke-2)}
.iv-key text{fill:#fff;font-family:var(--font-mono)!important;font-size:20px;font-weight:600}
.iv-wire{fill:none;stroke:rgba(37,99,201,.45);stroke-width:4;stroke-linecap:round}
.iv-flow{fill:none;stroke:var(--cyan);stroke-width:3;stroke-linecap:round;stroke-dasharray:12 22;opacity:0;filter:drop-shadow(0 0 5px rgba(17,198,232,.8))}
.iv-dest>rect,.iv-sys>rect,.iv-agent>rect,.iv-out>rect{fill:rgba(255,255,255,.05);stroke:var(--stroke-2);stroke-width:1.5}
.iv-dt{fill:#fff;font-size:15px;font-weight:600}
.iv-ds{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:12.5px}
.iv-out>rect{stroke:rgba(139,124,255,.5)}
.iv-out{animation:ivOut 9s var(--ease-in-out) infinite}
@keyframes ivOut{0%,100%{opacity:.6}50%{opacity:1}}
/* timing per branch */
.iv-key.k1 rect,.iv-dest.d1>rect{animation:ivHi1 9s var(--ease-in-out) infinite}
.iv-key.k2 rect,.iv-dest.d2>rect{animation:ivHi2 9s var(--ease-in-out) infinite}
.iv-key.k3 rect,.iv-dest.d3>rect{animation:ivHi3 9s var(--ease-in-out) infinite}
.iv-flow.b1{animation:rvDash 1s linear infinite,ivF1 9s var(--ease-in-out) infinite}
.iv-flow.b2{animation:rvDash 1s linear infinite,ivF2 9s var(--ease-in-out) infinite}
.iv-flow.b3{animation:rvDash 1s linear infinite,ivF3 9s var(--ease-in-out) infinite}
@keyframes ivHi1{0%,2%{fill:rgba(255,255,255,.06);stroke:rgba(150,185,245,.24)}5%,30%{fill:rgba(17,198,232,.22);stroke:#11c6e8}33%,100%{fill:rgba(255,255,255,.06);stroke:rgba(150,185,245,.24)}}
@keyframes ivHi2{0%,35%{fill:rgba(255,255,255,.06);stroke:rgba(150,185,245,.24)}38%,63%{fill:rgba(17,198,232,.22);stroke:#11c6e8}66%,100%{fill:rgba(255,255,255,.06);stroke:rgba(150,185,245,.24)}}
@keyframes ivHi3{0%,68%{fill:rgba(255,255,255,.06);stroke:rgba(150,185,245,.24)}71%,96%{fill:rgba(17,198,232,.22);stroke:#11c6e8}99%,100%{fill:rgba(255,255,255,.06);stroke:rgba(150,185,245,.24)}}
@keyframes ivF1{0%,3%{opacity:0}6%,30%{opacity:1}33%,100%{opacity:0}}
@keyframes ivF2{0%,36%{opacity:0}39%,63%{opacity:1}66%,100%{opacity:0}}
@keyframes ivF3{0%,69%{opacity:0}72%,96%{opacity:1}99%,100%{opacity:0}}
[data-inview]:not(.is-inview) .ivr-visual *{animation-play-state:paused!important}
@media (max-width:900px){.ivr-visual{max-width:560px;width:100%;margin:0 auto 60px}}
@media (max-width:620px){.iv-dt{font-size:17px}.iv-ds,.iv-t,.iv-h{font-size:14.5px}}
@media (prefers-reduced-motion:reduce){.ivr-visual *{animation:none!important}.iv-flow.b2{opacity:1}}

/* Business internet site-network illustration */
.bi-visual{margin:0;position:relative}
.bi-visual::before{content:"";position:absolute;inset:8% 8%;border-radius:50%;background:radial-gradient(circle,rgba(13,131,247,.3),transparent 65%);filter:blur(34px);z-index:-1}
.bi-visual svg{display:block;width:100%;height:auto;overflow:visible}
.bi-visual text{font-family:var(--font-body);dominant-baseline:middle}
.bi-ico-w{fill:none;stroke:#fff;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.bi-t{fill:#fff;font-family:var(--font-display)!important;font-size:17px;font-weight:700}
.bi-pipe{fill:none;stroke:rgba(13,131,247,.35);stroke-width:16;stroke-linecap:round}
.bi-pipe-core{fill:none;stroke:#1f5fd0;stroke-width:6;stroke-linecap:round}
.bi-pipe-flow{fill:none;stroke:var(--cyan);stroke-width:4;stroke-linecap:round;stroke-dasharray:18 22;animation:rvDash .9s linear infinite;filter:drop-shadow(0 0 6px rgba(17,198,232,.9))}
.bi-tag rect{fill:rgba(8,20,52,.95);stroke:rgba(17,198,232,.5)}
.bi-tag text{fill:var(--cyan);font-family:var(--font-mono)!important;font-size:12px;font-weight:600;letter-spacing:.08em}
.bi-site>rect{fill:rgba(255,255,255,.05);stroke:var(--stroke-2);stroke-width:1.5}
.bi-site.hq>rect{fill:rgba(8,20,52,.94);stroke:rgba(17,198,232,.5)}
.bi-st{fill:#fff;font-size:16px;font-weight:600}
.bi-lan{fill:none;stroke:rgba(37,99,201,.5);stroke-width:4;stroke-linecap:round;stroke-dasharray:2 8}
.bi-lock circle{fill:rgba(8,20,52,.96);stroke:rgba(46,230,166,.55);stroke-width:1.5}
.bi-cap{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:12px;letter-spacing:.1em}
.bi-frame{fill:rgba(255,255,255,.04);stroke:var(--stroke-2);stroke-width:1.5}
.bi-gh{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:12.5px;letter-spacing:.1em}
.bi-bar{fill:var(--cyan);opacity:.2;animation:biBar 6s var(--ease-out) infinite}
.bi-bar.b2{animation-name:biBar2}.bi-bar.b3{animation-name:biBar3}.bi-bar.b4{animation-name:biBar4}.bi-bar.b5{animation-name:biBar5;fill:var(--violet)}
@keyframes biBar{0%,4%{opacity:.2}8%,90%{opacity:1}100%{opacity:.2}}
@keyframes biBar2{0%,16%{opacity:.2}20%,90%{opacity:1}100%{opacity:.2}}
@keyframes biBar3{0%,28%{opacity:.2}32%,90%{opacity:1}100%{opacity:.2}}
@keyframes biBar4{0%,40%{opacity:.2}44%,90%{opacity:1}100%{opacity:.2}}
@keyframes biBar5{0%,52%{opacity:.2}56%,90%{opacity:1}100%{opacity:.2}}
[data-inview]:not(.is-inview) .bi-visual *{animation-play-state:paused!important}
@media (max-width:900px){.bi-visual{max-width:560px;width:100%;margin:0 auto 60px}}
@media (max-width:620px){.bi-st{font-size:18px}.bi-gh,.bi-cap{font-size:14px}}
@media (prefers-reduced-motion:reduce){.bi-visual *{animation:none!important}.bi-bar{opacity:1}}
/* golden light-tunnel photo shifted into the brand blues */
.tint-blue img{filter:hue-rotate(185deg) saturate(1.25) brightness(.95)}

/* Telecom consultancy blueprint: spokes draw in one by one, then a highlight travels round the ring (12s) */
.tc-visual{margin:0;position:relative}
.tc-visual::before{content:"";position:absolute;inset:6% 8% 20%;border-radius:50%;background:radial-gradient(circle,rgba(139,124,255,.26),transparent 65%);filter:blur(34px);z-index:-1}
.tc-visual svg{display:block;width:100%;height:auto;overflow:visible}
.tc-visual text{font-family:var(--font-body);dominant-baseline:middle}
.tc-board{fill:rgba(8,20,52,.7);stroke:var(--stroke-2);stroke-width:1.5}
.tc-corner{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:12.5px;letter-spacing:.12em}
.tc-spoke{fill:none;stroke:var(--cyan);stroke-width:2;stroke-linecap:round;stroke-dasharray:180;stroke-dashoffset:180;animation:tcDraw 12s var(--ease-out) infinite;opacity:.8}
.tc-spoke.s2{animation-delay:.3s}.tc-spoke.s3{animation-delay:.6s}.tc-spoke.s4{animation-delay:.9s}.tc-spoke.s5{animation-delay:1.2s}.tc-spoke.s6{animation-delay:1.5s}
@keyframes tcDraw{0%{stroke-dashoffset:180}10%,92%{stroke-dashoffset:0}100%{stroke-dashoffset:180}}
.tc-core{fill:#fff;font-family:var(--font-display)!important;font-size:16px;font-weight:700;text-anchor:middle}
.tc-node rect{fill:rgba(8,20,52,.95);stroke:var(--stroke-2);stroke-width:1.5}
.tc-node text{fill:#fff;font-size:15px;font-weight:600;text-anchor:middle}
.tc-node rect{animation:tcHi 12s var(--ease-in-out) infinite}
.tc-node.n1 rect{animation-delay:2s}.tc-node.n2 rect{animation-delay:3.5s}.tc-node.n3 rect{animation-delay:5s}.tc-node.n4 rect{animation-delay:6.5s}.tc-node.n5 rect{animation-delay:8s}.tc-node.n6 rect{animation-delay:9.5s}
@keyframes tcHi{0%,100%{stroke:rgba(150,185,245,.24);fill:rgba(8,20,52,.95)}4%,10%{stroke:#11c6e8;fill:rgba(17,198,232,.18)}16%{stroke:rgba(150,185,245,.24);fill:rgba(8,20,52,.95)}}
.tc-plat rect{fill:rgba(255,255,255,.05);stroke:rgba(139,124,255,.45);stroke-width:1.5}
.tc-plat text{fill:#fff;font-family:var(--font-display)!important;font-size:15px;font-weight:700;text-anchor:middle}
[data-inview]:not(.is-inview) .tc-visual *{animation-play-state:paused!important}
@media (max-width:900px){.tc-visual{max-width:560px;width:100%;margin:0 auto 60px}}
@media (max-width:620px){.tc-node text,.tc-plat text{font-size:17px}.tc-corner{font-size:14px}}
@media (prefers-reduced-motion:reduce){.tc-visual *{animation:none!important}.tc-spoke{stroke-dashoffset:0}}

/* Values page: numbered cards on an animated vertical track */
.values-hero .page-hero-inner{max-width:900px}
.values-list{position:relative;list-style:none;margin:0 auto;padding:0;max-width:960px;display:grid;gap:18px}
.values-track{position:absolute;left:43px;top:30px;bottom:30px;width:2px;background:linear-gradient(var(--stroke-2),var(--stroke));overflow:hidden;pointer-events:none}
.values-track::after{content:"";position:absolute;left:0;top:0;width:100%;height:22%;background:linear-gradient(transparent,var(--cyan),var(--violet),transparent);animation:trackRun 5s var(--ease-in-out) infinite;animation-play-state:paused}
.is-inview .values-track::after{animation-play-state:running}
@keyframes trackRun{from{transform:translateY(-100%)}to{transform:translateY(460%)}}
.value-card{position:relative;display:grid;grid-template-columns:88px minmax(0,1fr);align-items:start;gap:26px;padding:30px 34px 30px 0;border-radius:var(--radius-lg);background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.02));border:1px solid var(--stroke);transition:transform .45s var(--ease-out),border-color .3s,box-shadow .45s}
.value-card:hover{transform:translateX(6px);border-color:rgba(17,198,232,.35);box-shadow:var(--glow)}
.value-num{position:relative;z-index:1;justify-self:center;display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--grad-brand);color:#041632;font-family:var(--font-mono);font-size:14px;font-weight:600;box-shadow:0 0 0 6px var(--bg),0 0 0 7px var(--stroke-2),0 0 30px -4px rgba(17,198,232,.6)}
.value-body{display:grid;grid-template-columns:auto minmax(0,1fr);column-gap:18px;align-items:center}
.value-body .b-icon{grid-row:span 2;align-self:start}
.value-body h2{margin:4px 0 6px!important;font-size:clamp(24px,2.6vw,32px)!important;color:#fff!important}
.value-body p{grid-column:2;margin:0;font-size:17px;color:var(--text-2);max-width:640px}
.values-hero + .section{padding-top:40px}
@media (max-width:620px){
  .values-track{left:31px}
  .value-card{grid-template-columns:62px minmax(0,1fr);gap:14px;padding:24px 20px 24px 0}
  .value-num{width:44px;height:44px;font-size:13px}
  .value-body{grid-template-columns:1fr}
  .value-body .b-icon{grid-row:auto;margin-bottom:14px}
  .value-body p{grid-column:1;font-size:16px}
}
@media (prefers-reduced-motion:reduce){.values-track::after{animation:none!important;opacity:0}.value-card:hover{transform:none}}

/* Voice OTP access steps */
.access-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;counter-reset:none}
.access-step{position:relative;padding:28px 24px;border-radius:var(--radius-lg);background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.02));border:1px solid var(--stroke)}
.access-step>span{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--grad-brand);color:#041632;font-family:var(--font-mono);font-size:13px;font-weight:600}
.access-step:last-child>span{background:linear-gradient(120deg,#2ee6a6,#11c6e8)}
.access-step h3{color:#fff!important;font-size:19px;margin:20px 0 8px}
.access-step p{margin:0;font-size:15px;color:var(--text-2)}
.access-step:not(:last-child)::after{content:"";position:absolute;top:47px;right:-14px;width:14px;height:1px;background:var(--stroke-2)}
@media (max-width:1100px){.access-steps{grid-template-columns:repeat(3,minmax(0,1fr))}.access-step::after{display:none}}
@media (max-width:620px){.access-steps{grid-template-columns:1fr}}

/* Bento grid */
.bento{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.bento-card{position:relative;overflow:hidden;padding:34px;border-radius:var(--radius-lg);background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.02));border:1px solid var(--stroke);box-shadow:inset 0 1px 0 rgba(255,255,255,.06);transition:transform .45s var(--ease-out),border-color .3s,box-shadow .45s}
.bento-card:hover{transform:translateY(-5px);border-color:rgba(17,198,232,.35);box-shadow:var(--glow)}
.bento-card.b-wide{grid-column:span 2;background:radial-gradient(500px circle at 100% 0%,rgba(139,124,255,.2),transparent 55%),linear-gradient(180deg,rgba(255,255,255,.06),rgba(255,255,255,.02))}
.bento-card h3,.deploy-card h3,.mini h3{color:#fff!important;font-size:22px;margin:22px 0 10px}
.bento-card p,.deploy-card p,.mini p{margin:0;color:var(--text-2)}
.b-icon{display:inline-grid;place-items:center;width:52px;height:52px;border-radius:16px;font-size:24px;color:var(--cyan);background:linear-gradient(145deg,rgba(17,198,232,.16),rgba(139,124,255,.12));box-shadow:inset 0 0 0 1px rgba(17,198,232,.3),0 10px 30px -12px rgba(17,198,232,.5);flex:none}
.b-chips{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0 0;padding:0;list-style:none}
.b-chips li{padding:7px 12px;border-radius:10px;font-family:var(--font-mono);font-size:13px;font-weight:600;color:#fff;background:rgba(17,198,232,.1);box-shadow:inset 0 0 0 1px rgba(17,198,232,.3)}
.b-meter{position:relative;height:8px;margin-top:26px;border-radius:999px;background:rgba(255,255,255,.07);overflow:hidden}
.b-meter span{position:absolute;inset:0;border-radius:inherit;background:linear-gradient(90deg,var(--blue),var(--cyan),var(--violet));transform-origin:left;animation:meter 6s steps(12,end) infinite}
@keyframes meter{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* Split sections */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:70px}
.split-copy>p{font-size:17px;margin:20px 0 0}
.tick-list{list-style:none;margin:26px 0 0;padding:0;display:grid;gap:12px}
.tick-list li{display:flex;align-items:center;gap:12px;color:var(--text)}
.tick-list li::before{content:"";flex:none;width:22px;height:22px;border-radius:50%;background:rgba(17,198,232,.14) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2311c6e8' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/12px no-repeat}
.nodes-visual{margin:0}
.nv-console rect{fill:rgba(255,255,255,.06);stroke:rgba(17,198,232,.45);stroke-width:1.5}
.nv-console .nv-bar{fill:rgba(255,255,255,.06);stroke:none}
.nv-node rect{fill:rgba(255,255,255,.05);stroke:var(--stroke-2);stroke-width:1.5}
.nv-title{fill:#fff;font-family:var(--font-display)!important;font-size:18px;font-weight:700}
.nv-sub{fill:var(--text-3);font-family:var(--font-mono)!important;font-size:13.5px}
.photo-panel{position:relative;margin:0;border-radius:28px;overflow:hidden;aspect-ratio:5/4;border:1px solid var(--stroke);box-shadow:0 40px 80px -40px rgba(0,0,0,.85),0 0 100px -40px rgba(13,131,247,.5)}
.photo-panel img{width:100%;height:100%;max-width:none;object-fit:cover;transition:transform 1.2s var(--ease-out)}
.photo-panel:hover img{transform:scale(1.05)}
.photo-panel::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 50%,rgba(8,7,15,.7));pointer-events:none}
.photo-chip{position:absolute;left:18px;bottom:18px;z-index:1;display:inline-flex;align-items:center;gap:10px;padding:10px 16px;border-radius:999px;font-family:var(--font-mono);font-size:13px;color:#fff;background:rgba(8,7,15,.65);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:inset 0 0 0 1px var(--stroke-2)}
.live-dot{width:8px;height:8px;border-radius:50%;background:var(--mint);box-shadow:0 0 10px var(--mint);animation:dot 2s var(--ease-in-out) infinite}
.mini-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:30px}
.mini{display:flex;flex-direction:column;padding:22px;border-radius:var(--radius);background:rgba(255,255,255,.035);border:1px solid var(--stroke)}
.mini h3{font-size:18px!important;margin:16px 0 6px}
.mini p{font-size:15px}
.deploy-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.deploy-card{padding:30px;border-radius:var(--radius-lg);background:linear-gradient(180deg,rgba(255,255,255,.055),rgba(255,255,255,.02));border:1px solid var(--stroke);transition:transform .45s var(--ease-out),border-color .3s,box-shadow .45s}
.deploy-card:hover{transform:translateY(-5px);border-color:rgba(17,198,232,.35);box-shadow:var(--glow)}
.split-section .split-copy,.split-reverse .split-copy{max-width:600px}

@media (max-width:1100px){
  .deploy-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:900px){
  .product-hero .product-hero-grid,.split{grid-template-columns:1fr;gap:40px}
  .product-hero .page-hero-inner{padding:60px 0 10px!important}
  .route-visual{max-width:560px;width:100%;margin:0 auto 60px}
  .split-reverse .photo-panel{order:2}
  .bento{grid-template-columns:1fr 1fr}
  .bento-card.b-wide{grid-column:span 2}
  .deploy-grid.deploy-3{grid-template-columns:1fr}
  .pbx-visual,.otp-visual{max-width:560px;width:100%;margin:0 auto 60px}
}
@media (max-width:620px){
  .bento,.mini-grid,.deploy-grid{grid-template-columns:1fr}
  .bento-card.b-wide{grid-column:auto}
  .bento-card{padding:26px}
  .photo-panel{aspect-ratio:4/3}
  /* Diagram text scales down with the SVG, so start larger on phones */
  .rv-pill text{font-size:19px}
  .rv-core-t{font-size:22px}
  .rv-checks text{font-size:16px}
  .nv-title{font-size:21px}
  .nv-sub{font-size:16px}
  .pv-title{font-size:19px}
  .pv-call-t{font-size:20px}
  .pv-call-s,.pv-label{font-size:15px}
  .st text,.pv-in{font-size:15.5px}
  .ov-status text,.ov-api-k,.ov-small{font-size:15px}
  .ov-api-v,.ov-sub{font-size:16px}
  .pt-nav text,.pt-btn text,.pt-rows .k{font-size:16px}
  .chip text{font-size:14px}
}
@media (prefers-reduced-motion:reduce){
  .route-visual *,.b-meter span,.live-dot{animation:none!important}
  .rv-flow.r1{opacity:1}
  .rv-fail,.rv-over{opacity:0}
  .b-meter span{transform:scaleX(.6)}
}

/* ---------- Responsive ---------- */
@media (max-width:1100px){
  .nav a{padding:0 10px;font-size:14px}
  .nav-cta{margin-left:4px}
  .brand img{width:180px!important}
}
@media (max-width:900px){
  .site-header{top:8px;width:calc(100% - 20px);margin-top:8px;border-radius:18px}
  .nav{top:calc(100% + 8px)!important;left:0;right:0;gap:2px;padding:10px 12px 14px!important;background:rgba(255,255,255,.98)!important;border-radius:18px;border:0!important;box-shadow:0 30px 60px -20px rgba(0,0,0,.7)!important}
  .nav.open{animation:sheetIn .35s var(--ease-out)}
  @keyframes sheetIn{from{opacity:0;transform:translateY(-8px) scale(.98)}to{opacity:1;transform:none}}
  .nav a{min-height:48px;padding:0 14px!important;border-radius:12px}
  .nav-cta{justify-content:center;margin:10px 0 0!important}
  .traffic-inner{grid-template-columns:1fr;gap:44px}
  .rack-visual{justify-self:center;max-width:420px}
  .process-line{display:none}
  .industry-list{grid-template-columns:1fr 1fr!important}
  .photo-card{aspect-ratio:16/10}
  .cta-photo{width:100%;opacity:.28;-webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 60%);mask-image:linear-gradient(180deg,transparent 0%,#000 60%)}
  .page-hero{margin-top:-84px;padding-top:84px}
  .ch-hero{min-height:max(calc(100svh - 80px),700px)!important}
}
@media (max-width:620px){
  .nav-wrap{height:64px!important}
  .brand img{width:min(170px,52vw)!important}
  .btn{min-height:54px}
  .ch-title{font-size:clamp(2.4rem,11vw,3.4rem)!important}
  .ch-text{font-size:16.5px!important}
  .ch-tag{padding:11px 14px}
  .page-hero-inner{padding:60px 0 70px!important}
  .page-hero h1{font-size:clamp(36px,10.5vw,48px)!important}
  .page-hero .hero-text{font-size:17px!important}
  .page-hero .hero-actions .btn{width:100%}
  .service-card h3{font-size:22px!important}
  .platform-card h3{font-size:28px!important}
  .industry-list{grid-template-columns:1fr!important;gap:10px}
  .industry-list div{min-height:62px}
  .otp-call-card{border-radius:24px!important}
  .otp-code b{font-size:18px}
  .traffic-band{padding:84px 0!important}
  .contact-form{padding:24px 18px!important;border-radius:24px!important}
  .contact-details strong{font-size:15px!important}
  .footer-links a{min-height:44px}
  .footer-bottom span span{display:inline!important;margin:0!important}
  .footer-links-4>div:last-child{grid-column:1/-1}
  .wa-float{min-height:56px;width:56px;padding:0;justify-content:center}
}
@media (pointer:coarse){.footer-links a{min-height:44px}}
/* Earth hero on phones and tablets: photo stage on top, text stacked below (earth-hero.js uses the same 1024px breakpoint) */
@media (max-width:1023px){
  .ch-content{justify-content:flex-start!important;padding:calc(54svh - 20px) max(18px,calc((100vw - 720px)/2)) 40px!important;gap:22px!important}
  .ch-bg{inset:0 0 auto 0!important;height:62svh}
  .ch-bg::after{background:linear-gradient(to top,var(--bg) 0%,rgba(8,7,15,.6) 18%,rgba(8,7,15,0) 42%),linear-gradient(to bottom,var(--bg) 0%,rgba(8,7,15,0) 22%)}
  .ch-canvas{-webkit-mask-image:linear-gradient(to bottom,#000 72%,transparent 96%);mask-image:linear-gradient(to bottom,#000 72%,transparent 96%)}
}

/* ---------- Accessibility preferences ---------- */
@media (prefers-reduced-motion:reduce){
  .nav-product::before,.section-label::before,.ch-eyebrow::before,.cable-pulse,.led,.rack-glow,.net-node,.process-line::after,.otp-wave i,.otp-phone-icon::before,.otp-phone-icon::after{animation:none!important}
  .cable-pulse,.net-node,.otp-phone-icon::before,.otp-phone-icon::after{opacity:0}
  .otp-code b,.otp-status{opacity:1;transform:none;transition:none}
  .reveal{transition:opacity .2s ease!important;transform:none!important}
  .service-card:hover,.platform-card:hover,.industry-list div:hover,.process-step:hover,.ch-tag:hover,.feature:hover,.related-card:hover{transform:none}
}
@media (prefers-reduced-transparency:reduce){
  .site-header{background:#fff;-webkit-backdrop-filter:none;backdrop-filter:none}
  .ch-tag,.about-panel,.otp-call-card,.btn-secondary{-webkit-backdrop-filter:none;backdrop-filter:none}
}
@media (prefers-contrast:more){
  :root{--stroke:rgba(190,215,255,.45);--text-2:#dbe6f7;--text-3:#c3d2ea}
}

/* =====================================================================
   "Pop" layer (2026-10-14): less blue, glowing lavender / rose-red / green accents,
   no top strip, header blended into the page. Overrides everything above.
   ===================================================================== */
:root{
  --bg:#08070f; --bg-2:#100d1f; --bg-3:#16122a;
  --lav:#b79cff; --rose:#ff6b9a; --red:#ff5c6c; --green:#3ee08f;
  --text-2:#c6c4dc; --text-3:#9e9bb8;
  --stroke:rgba(200,190,255,.13); --stroke-2:rgba(200,190,255,.22);
  --grad-pop:linear-gradient(120deg,#b79cff 0%,#ff6b9a 55%,#ffa36b 100%);
  --grad-btn:linear-gradient(120deg,#b79cff 0%,#ff6b9a 100%);
  --glow:0 0 0 1px rgba(183,156,255,.3),0 20px 60px -20px rgba(255,107,154,.45);
}
html,body{background:var(--bg)}

/* ---------- Top strip removed; header floats on the hero ---------- */
.topbar{display:none!important}
.site-header{position:fixed!important;top:0!important;left:0;right:0;width:100%!important;margin:0!important;border-radius:0!important;border:0!important;background:transparent!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;box-shadow:none!important;transition:background-color .35s var(--ease-out),box-shadow .35s,backdrop-filter .35s}
.site-header.is-scrolled{background:rgba(8,7,15,.72)!important;-webkit-backdrop-filter:blur(18px) saturate(160%)!important;backdrop-filter:blur(18px) saturate(160%)!important;box-shadow:0 1px 0 rgba(200,190,255,.1),0 20px 40px -24px rgba(0,0,0,.8)!important}
.site-header .container{width:min(1340px,calc(100% - 48px))!important}
.nav-wrap{height:88px!important}
/* logo keeps its real colours on a small frosted chip */
.brand{display:inline-flex;align-items:center;padding:8px 14px;border-radius:16px;background:rgba(255,255,255,.88);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 10px 30px -14px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.6)}
.brand img{width:178px!important}
.nav a{color:#ecebf7!important}
.nav a:not(.nav-cta):hover{background:rgba(255,255,255,.08)!important;color:#fff!important}
.nav-product{color:var(--lav)!important}
.nav-cta{background:var(--grad-btn)!important;color:#12061f!important;box-shadow:0 0 0 1px rgba(255,255,255,.18),0 12px 30px -10px rgba(255,107,154,.7)!important}
.menu-toggle{color:#fff;background:rgba(255,255,255,.08)}
/* page tops now start under the floating header */
.ch-hero{margin-top:0!important}
.page-hero{margin-top:0!important;padding-top:96px!important}
@media (max-width:900px){
  .nav-wrap{height:72px!important}
  .brand{padding:6px 10px;border-radius:13px}
  .brand img{width:150px!important}
  .nav{left:12px!important;right:12px!important;top:calc(100% + 4px)!important;background:rgba(18,15,32,.97)!important;box-shadow:0 30px 60px -20px rgba(0,0,0,.85),inset 0 0 0 1px rgba(200,190,255,.14)!important}
  .nav a{color:#ecebf7!important}
  .page-hero{padding-top:80px!important}
}

/* ---------- Accent colours per section ---------- */
.section-label,.ch-eyebrow,.eyebrow{color:var(--accent,var(--lav))!important;background:color-mix(in srgb,var(--accent,var(--lav)) 10%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent,var(--lav)) 32%,transparent)}
.section-label::before,.ch-eyebrow::before,.eyebrow span{background:var(--accent,var(--lav))!important;box-shadow:0 0 12px var(--accent,var(--lav))!important}
.ch-hero{--accent:var(--lav)}
.intro{--accent:var(--rose)}
.voice-otp-section{--accent:var(--rose)}
.services-section{--accent:var(--lav)}
.platforms{--accent:var(--green)}
.traffic-band{--accent:var(--green)}
.dark-section{--accent:var(--lav)}
.industries{--accent:var(--rose)}
.process{--accent:var(--green)}
.cta-section{--accent:#ffd1df}
.contact{--accent:var(--lav)}

/* headline highlight */
.ch-title em,h1 em{background:var(--grad-pop)!important;-webkit-background-clip:text!important;background-clip:text!important;color:transparent!important;filter:drop-shadow(0 0 24px rgba(255,107,154,.35))}

/* buttons */
.btn-primary{background:var(--grad-btn)!important;color:#12061f!important;box-shadow:0 0 0 1px rgba(255,255,255,.18),0 16px 40px -14px rgba(255,107,154,.75),inset 0 1px 0 rgba(255,255,255,.4)!important}
.btn-primary:hover{box-shadow:0 0 0 1px rgba(255,255,255,.3),0 22px 50px -14px rgba(183,156,255,.85),inset 0 1px 0 rgba(255,255,255,.4)!important}
.contact-form .btn-primary{color:#12061f!important}
.btn-secondary:hover{border-color:rgba(183,156,255,.6)!important}

/* hero */
.ch-hero{background:radial-gradient(900px 520px at 70% 30%,rgba(183,156,255,.16),transparent 65%),radial-gradient(700px 420px at 90% 80%,rgba(255,107,154,.12),transparent 65%),var(--bg)!important}
.ch-tag:hover{border-color:rgba(183,156,255,.5)}
.ch-tag:nth-child(1) strong{color:var(--green)!important}
.ch-tag:nth-child(2) strong{color:var(--lav)!important}
.ch-tag:nth-child(3) strong{color:var(--rose)!important}
.page-hero{background:radial-gradient(800px 480px at 80% 0%,rgba(183,156,255,.2),transparent 65%),radial-gradient(600px 400px at 0% 100%,rgba(255,107,154,.12),transparent 65%),var(--bg)!important}

/* bands: deep neutral bases with coloured glows instead of navy */
.voice-otp-section{background:radial-gradient(900px 500px at 85% 20%,rgba(255,107,154,.22),transparent 60%),radial-gradient(700px 500px at 10% 90%,rgba(183,156,255,.22),transparent 60%),linear-gradient(140deg,#120c22 0%,#170f2c 55%,#1c0f26 100%)!important}
.otp-features strong{color:var(--rose)!important}
.otp-phone-icon{background:var(--rose)!important;color:#12061f!important}
.otp-wave i{background:linear-gradient(var(--rose),var(--lav))!important}
.traffic-band{background:radial-gradient(900px 520px at 85% 50%,rgba(62,224,143,.16),transparent 60%),radial-gradient(600px 400px at 10% 10%,rgba(183,156,255,.14),transparent 60%),linear-gradient(115deg,#07110f 0%,#0b1a17 55%,#0d1424 100%)!important}
.traffic-inner p{color:#c9d8d2!important}
.dark-section{background:radial-gradient(800px 500px at 10% 30%,rgba(183,156,255,.16),transparent 60%),radial-gradient(600px 400px at 90% 90%,rgba(62,224,143,.08),transparent 60%),var(--bg)!important}
.values strong{color:var(--lav)!important}
.cta-section{background:radial-gradient(700px 400px at 90% 50%,rgba(255,107,154,.32),transparent 60%),radial-gradient(600px 400px at 0% 0%,rgba(183,156,255,.3),transparent 60%),linear-gradient(110deg,#170d26 0%,#24102a 100%)!important}
.cta-photo{filter:hue-rotate(70deg) saturate(1.2);opacity:.38!important}
.services-section,.industries,.soft,.faq-section{background:linear-gradient(180deg,var(--bg) 0%,var(--bg-2) 18%,var(--bg-2) 82%,var(--bg) 100%)!important}

/* service cards: icons cycle lavender, rose, green, red */
.service-card:nth-child(4n+1){--accent:var(--lav)}
.service-card:nth-child(4n+2){--accent:var(--rose)}
.service-card:nth-child(4n+3){--accent:var(--green)}
.service-card:nth-child(4n+4){--accent:var(--red)}
.service-card .icon{color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 14%,transparent)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 38%,transparent),0 10px 30px -10px color-mix(in srgb,var(--accent) 60%,transparent)!important}
.service-card::before{background:radial-gradient(420px circle at var(--mx) var(--my),color-mix(in srgb,var(--accent) 16%,transparent),transparent 45%)!important}
.service-card::after{background:linear-gradient(90deg,transparent,var(--accent),transparent)!important}
.service-card:hover{border-color:color-mix(in srgb,var(--accent) 50%,transparent)!important;box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent),0 20px 60px -20px color-mix(in srgb,var(--accent) 55%,transparent)!important}
.service-card li:before{background-color:color-mix(in srgb,var(--accent) 16%,transparent)!important}
.service-card>a:last-child{color:var(--accent)!important}
.service-card.featured{background:radial-gradient(500px circle at 100% 0%,rgba(255,107,154,.4),transparent 55%),radial-gradient(400px circle at 0% 100%,rgba(183,156,255,.35),transparent 55%),linear-gradient(150deg,#2a1450 0%,#1a0f33 100%)!important;border-color:rgba(255,107,154,.4)!important}
.service-card.featured>a:last-child{color:#fff!important}

/* platforms: one colour each */
.platform-card:nth-child(1){--accent:var(--lav)}
.platform-card:nth-child(2){--accent:var(--green)}
.platform-card:nth-child(3){--accent:var(--rose)}
.platform-tag{color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 12%,transparent)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent)!important}
.platform-link{color:var(--accent)!important}
.platform-card::before{background:repeating-radial-gradient(circle,color-mix(in srgb,var(--accent) 22%,transparent) 0 1px,transparent 1px 22px)!important}
.platform-card::after{background:radial-gradient(circle,color-mix(in srgb,var(--accent) 30%,transparent),transparent 65%)!important}
.platform-card:hover{border-color:color-mix(in srgb,var(--accent) 50%,transparent)!important;box-shadow:0 20px 60px -20px color-mix(in srgb,var(--accent) 55%,transparent)!important}

/* industries + process + contact */
.industry-list div::before{background:linear-gradient(var(--lav),var(--rose))!important}
.industry-list span{color:var(--rose)!important;background:rgba(255,107,154,.1)!important}
.industry-list div:hover{border-color:rgba(255,107,154,.4)!important;background:linear-gradient(180deg,rgba(255,107,154,.07),rgba(255,255,255,.02))!important}
.process-step>span{background:linear-gradient(135deg,var(--green),#7ff5cb)!important;color:#06140e!important;box-shadow:0 0 0 6px var(--bg),0 0 0 7px var(--stroke-2),0 0 30px -4px rgba(62,224,143,.6)!important}
.process-line::after{background:linear-gradient(90deg,transparent,var(--green),var(--lav),transparent)!important}
.process-step:hover{border-color:rgba(62,224,143,.4)!important}
.contact-details a>span{color:var(--lav)!important;background:rgba(183,156,255,.12)!important;box-shadow:inset 0 0 0 1px rgba(183,156,255,.3)!important}
.contact-details a>span.wa-dot{color:var(--green)!important;background:rgba(62,224,143,.12)!important;box-shadow:inset 0 0 0 1px rgba(62,224,143,.3)!important}
.contact-details a:hover{border-color:rgba(183,156,255,.45)}
.contact-form{box-shadow:0 50px 100px -40px rgba(0,0,0,.85),0 0 120px -40px rgba(183,156,255,.6)!important}
.contact-form input:focus,.contact-form select:focus,.contact-form textarea:focus{border-color:#8a63f5!important;box-shadow:0 0 0 4px rgba(138,99,245,.2)!important}

/* footer */
.footer{background:radial-gradient(800px 400px at 0% 0%,rgba(183,156,255,.12),transparent 60%),radial-gradient(600px 300px at 100% 100%,rgba(255,107,154,.1),transparent 60%),#06050c!important}
.footer::before{background:linear-gradient(90deg,transparent,rgba(183,156,255,.6),rgba(255,107,154,.5),rgba(62,224,143,.4),transparent)!important}
.footer-links a:hover{color:var(--lav)!important}
/* pop-layer fixes */
.nav-wrap{height:96px!important}
.brand{padding:6px 12px!important;background:rgba(255,255,255,.95)!important}
.brand img{width:148px!important}
.nav a.nav-cta,.nav a.nav-cta:hover{color:#12061f!important}
.section-label.light{color:var(--accent,var(--lav))!important}
@media (max-width:900px){.nav-wrap{height:76px!important}.brand img{width:126px!important}.brand{padding:5px 10px!important}}
/* Display font for decorative moments; Sora stays for headings, Geist for body, Geist Mono for labels */
:root{--font-deco:'Unbounded','Sora',system-ui,sans-serif}
.big-word{font-family:var(--font-deco)!important;font-weight:700!important;letter-spacing:-.03em!important;background:linear-gradient(180deg,#fff 15%,#d8c8ff 55%,#ff9cbc 100%)!important;-webkit-background-clip:text!important;background-clip:text!important}
.platform-card h3{font-family:var(--font-deco)!important;font-weight:600!important;letter-spacing:-.025em!important;font-size:clamp(24px,2.3vw,30px)!important}
.ch-tag strong{font-family:var(--font-deco)!important;font-weight:600!important;letter-spacing:-.01em}

/* About visual: lavender/rose instead of navy */
.about-visual{background:radial-gradient(circle at 50% 50%,rgba(183,156,255,.35),transparent 50%),linear-gradient(145deg,#2a1450,#0d0a1c)!important;border-color:rgba(183,156,255,.25)!important;box-shadow:0 50px 100px -40px rgba(0,0,0,.85),0 0 120px -40px rgba(255,107,154,.45)!important}
.about-photo{filter:hue-rotate(60deg) saturate(1.1) brightness(1.05)!important;opacity:.7!important}
.about-visual .cable-core{stroke:#8f6fe8!important}
.about-visual circle[fill="#11c6e8"]{fill:var(--rose)}
.about-visual .net-node{stroke:var(--rose)!important}
.about-panel .line{background:var(--grad-btn)!important}
.mini-label{color:var(--lav)!important}
@media (max-width:900px){.site-header .container{padding-top:6px}}
.big-word{font-size:clamp(30px,4.2vw,58px)!important;white-space:nowrap}
@media (max-width:620px){.big-word{font-size:clamp(28px,10vw,44px)!important}}

/* =====================================================================
   Calm-down layer (2026-10-14): one notch less colourful.
   Lavender = main accent, rose = sparing highlight, green = status dots only.
   ===================================================================== */
:root{--accent:var(--lav);--grad-pop:linear-gradient(120deg,#c3adff 0%,#ff8fb3 100%);--grad-btn:linear-gradient(120deg,#c3adff 0%,#f39dbe 100%)}
.ch-hero,.intro,.voice-otp-section,.services-section,.platforms,.traffic-band,.dark-section,.industries,.process,.cta-section,.contact{--accent:var(--lav)!important}
.section-label,.ch-eyebrow,.eyebrow{background:rgba(183,156,255,.07)!important;box-shadow:inset 0 0 0 1px rgba(183,156,255,.24)!important}
.section-label::before,.ch-eyebrow::before,.eyebrow span{box-shadow:0 0 8px rgba(183,156,255,.6)!important}
.ch-title em,h1 em{filter:none!important}

/* hero: quieter tags and glow */
.ch-tag strong{color:#fff!important}
.ch-hero{background:radial-gradient(900px 520px at 70% 30%,rgba(183,156,255,.1),transparent 65%),var(--bg)!important}
.btn-primary{box-shadow:0 0 0 1px rgba(255,255,255,.14),0 12px 30px -14px rgba(183,156,255,.6),inset 0 1px 0 rgba(255,255,255,.35)!important}
.btn-primary:hover{box-shadow:0 0 0 1px rgba(255,255,255,.2),0 16px 38px -14px rgba(183,156,255,.7),inset 0 1px 0 rgba(255,255,255,.35)!important}
.nav-cta{box-shadow:0 8px 22px -12px rgba(183,156,255,.6)!important}

/* bands: neutral bases, one soft lavender glow each */
.voice-otp-section{background:radial-gradient(900px 500px at 85% 20%,rgba(183,156,255,.14),transparent 60%),linear-gradient(140deg,#0e0b1a 0%,#120e22 100%)!important}
.otp-features strong{color:var(--lav)!important}
.otp-phone-icon{background:var(--lav)!important}
.otp-wave i{background:linear-gradient(var(--lav),#8f74e8)!important}
.traffic-band{background:radial-gradient(800px 480px at 85% 50%,rgba(183,156,255,.1),transparent 60%),linear-gradient(115deg,#0b0a14 0%,#0e0c1a 100%)!important}
.traffic-inner p{color:var(--text-2)!important}
.fibre-visual{box-shadow:0 50px 100px -40px rgba(0,0,0,.8),0 0 90px -40px rgba(183,156,255,.35)!important}
.dark-section{background:radial-gradient(800px 500px at 10% 30%,rgba(183,156,255,.1),transparent 60%),var(--bg)!important}
.cta-section{background:radial-gradient(700px 400px at 90% 50%,rgba(183,156,255,.18),transparent 60%),linear-gradient(110deg,#110d1f 0%,#150f24 100%)!important}
.cta-photo{opacity:.28!important}
.about-visual{background:radial-gradient(circle at 50% 50%,rgba(183,156,255,.22),transparent 50%),linear-gradient(145deg,#1a1233,#0c0a18)!important;box-shadow:0 50px 100px -40px rgba(0,0,0,.85)!important}
.about-visual circle[fill="#11c6e8"]{fill:var(--lav)}
.about-visual .net-node{stroke:var(--lav)!important}
.big-word{background:linear-gradient(180deg,#fff 20%,#d9ccff 100%)!important;-webkit-background-clip:text!important;background-clip:text!important}

/* cards: single lavender accent */
.service-card:nth-child(n),.platform-card:nth-child(n){--accent:var(--lav)!important}
.service-card:hover,.platform-card:hover{box-shadow:0 0 0 1px rgba(183,156,255,.22),0 18px 50px -24px rgba(183,156,255,.45)!important}
.service-card.featured{background:radial-gradient(500px circle at 100% 0%,rgba(183,156,255,.28),transparent 55%),linear-gradient(150deg,#1d1438 0%,#140f28 100%)!important;border-color:rgba(183,156,255,.35)!important}
.industry-list span{color:var(--lav)!important;background:rgba(183,156,255,.1)!important}
.industry-list div::before{background:var(--lav)!important}
.industry-list div:hover{border-color:rgba(183,156,255,.35)!important;background:linear-gradient(180deg,rgba(183,156,255,.06),rgba(255,255,255,.02))!important}
.process-step>span{background:var(--grad-btn)!important;color:#12061f!important;box-shadow:0 0 0 6px var(--bg),0 0 0 7px var(--stroke-2)!important}
.process-line::after{background:linear-gradient(90deg,transparent,var(--lav),transparent)!important}
.process-step:hover{border-color:rgba(183,156,255,.35)!important}
.values strong{color:var(--lav)!important}
.contact-form{box-shadow:0 50px 100px -40px rgba(0,0,0,.85),0 0 90px -40px rgba(183,156,255,.4)!important}
.footer{background:radial-gradient(800px 400px at 0% 0%,rgba(183,156,255,.08),transparent 60%),#06050c!important}
.footer::before{background:linear-gradient(90deg,transparent,rgba(183,156,255,.5),transparent)!important}
.ch-tag:nth-child(n) strong{color:#fff!important}
/* Logo sits on a soft frosted light wash that fades into the header (no white chip) */
.brand{background:transparent!important;box-shadow:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;padding:6px 0!important;border-radius:0!important}
.site-header::before{content:"";position:absolute;left:0;top:0;bottom:0;width:min(560px,46vw);pointer-events:none;background:linear-gradient(90deg,rgba(255,255,255,.66) 0%,rgba(255,255,255,.5) 38%,rgba(255,255,255,.16) 70%,rgba(255,255,255,0) 100%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);-webkit-mask-image:linear-gradient(90deg,#000 55%,transparent 100%);mask-image:linear-gradient(90deg,#000 55%,transparent 100%)}
.site-header>.container{position:relative;z-index:1}
@media (max-width:900px){.site-header::before{width:78vw}}
.site-header::before{bottom:auto!important;height:180px;width:min(620px,60vw)!important;background:radial-gradient(ellipse 300px 96px at 150px 48px,rgba(255,255,255,.68) 0%,rgba(255,255,255,.5) 42%,rgba(255,255,255,.18) 72%,rgba(255,255,255,0) 100%)!important;-webkit-mask-image:none!important;mask-image:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
@media (max-width:900px){.site-header::before{width:90vw!important;height:140px;background:radial-gradient(ellipse 210px 70px at 100px 40px,rgba(255,255,255,.68) 0%,rgba(255,255,255,.5) 42%,rgba(255,255,255,.16) 72%,rgba(255,255,255,0) 100%)!important}}
.site-header::before{background:radial-gradient(ellipse 300px 96px at 150px 48px,rgba(244,238,255,.72) 0%,rgba(226,214,255,.5) 42%,rgba(183,156,255,.16) 72%,rgba(183,156,255,0) 100%)!important}
@media (max-width:900px){.site-header::before{background:radial-gradient(ellipse 210px 70px at 100px 40px,rgba(244,238,255,.72) 0%,rgba(226,214,255,.5) 42%,rgba(183,156,255,.14) 72%,rgba(183,156,255,0) 100%)!important}}
/* Logo: near-white core so the navy lettering is crisp, soft fade at the edges */
.site-header::before{background:radial-gradient(ellipse 260px 82px at 140px 48px,rgba(255,255,255,.96) 0%,rgba(255,255,255,.92) 48%,rgba(244,238,255,.55) 70%,rgba(183,156,255,.12) 88%,rgba(183,156,255,0) 100%)!important}
@media (max-width:900px){.site-header::before{background:radial-gradient(ellipse 180px 58px at 94px 40px,rgba(255,255,255,.96) 0%,rgba(255,255,255,.92) 48%,rgba(244,238,255,.55) 70%,rgba(183,156,255,.1) 88%,rgba(183,156,255,0) 100%)!important}}
.brand img{image-rendering:auto;filter:contrast(1.06) saturate(1.05)}
.nav a.is-current{background:rgba(183,156,255,.14)!important;color:#fff!important}

/* =====================================================================
   Middle ground (2026-10-14): keep lavender, rose and green, at softer intensity.
   ===================================================================== */
:root{--rose-s:#f3a0bd;--green-s:#6fdcaa;--grad-pop:linear-gradient(120deg,#c3adff 0%,#f39dbe 60%,#ffc09a 100%)}
/* section labels: gentle variety */
.voice-otp-section,.industries{--accent:var(--rose-s)!important}
.platforms,.traffic-band,.process{--accent:var(--green-s)!important}
/* hero tags coloured again */
.ch-tag:nth-child(1) strong{color:var(--green-s)!important}
.ch-tag:nth-child(2) strong{color:var(--lav)!important}
.ch-tag:nth-child(3) strong{color:var(--rose-s)!important}
/* service icons cycle again, with softer glow */
.service-card:nth-child(3n+1){--accent:var(--lav)!important}
.service-card:nth-child(3n+2){--accent:var(--rose-s)!important}
.service-card:nth-child(3n+3){--accent:var(--green-s)!important}
.service-card .icon{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 32%,transparent)!important;background:color-mix(in srgb,var(--accent) 11%,transparent)!important}
.service-card:hover{box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 24%,transparent),0 18px 50px -26px color-mix(in srgb,var(--accent) 45%,transparent)!important}
.service-card.featured{background:radial-gradient(500px circle at 100% 0%,rgba(243,160,189,.22),transparent 55%),radial-gradient(400px circle at 0% 100%,rgba(183,156,255,.2),transparent 55%),linear-gradient(150deg,#1d1438 0%,#140f28 100%)!important}
/* platforms: one colour each */
.platform-card:nth-child(1){--accent:var(--lav)!important}
.platform-card:nth-child(2){--accent:var(--green-s)!important}
.platform-card:nth-child(3){--accent:var(--rose-s)!important}
.platform-card:hover{box-shadow:0 18px 50px -26px color-mix(in srgb,var(--accent) 45%,transparent)!important}
/* bands: faint colour glows */
.voice-otp-section{background:radial-gradient(900px 500px at 85% 20%,rgba(243,160,189,.12),transparent 60%),radial-gradient(700px 500px at 10% 90%,rgba(183,156,255,.12),transparent 60%),linear-gradient(140deg,#0e0b1a 0%,#120e22 100%)!important}
.otp-features strong{color:var(--rose-s)!important}
.otp-phone-icon{background:var(--rose-s)!important}
.otp-wave i{background:linear-gradient(var(--rose-s),var(--lav))!important}
.traffic-band{background:radial-gradient(800px 480px at 85% 50%,rgba(111,220,170,.1),transparent 60%),linear-gradient(115deg,#0a0d12 0%,#0d0d18 100%)!important}
.fibre-visual{box-shadow:0 50px 100px -40px rgba(0,0,0,.8),0 0 90px -40px rgba(111,220,170,.3)!important}
.cta-section{background:radial-gradient(700px 400px at 90% 50%,rgba(243,160,189,.16),transparent 60%),radial-gradient(600px 400px at 0% 0%,rgba(183,156,255,.16),transparent 60%),linear-gradient(110deg,#110d1f 0%,#150f24 100%)!important}
.industry-list span{color:var(--rose-s)!important;background:rgba(243,160,189,.1)!important}
.industry-list div::before{background:linear-gradient(var(--lav),var(--rose-s))!important}
.process-step>span{background:linear-gradient(135deg,var(--green-s),#a8f0cf)!important;color:#06140e!important}
.process-line::after{background:linear-gradient(90deg,transparent,var(--green-s),var(--lav),transparent)!important}
.contact-details a>span.wa-dot{color:var(--green-s)!important;background:rgba(111,220,170,.12)!important}
.footer::before{background:linear-gradient(90deg,transparent,rgba(183,156,255,.45),rgba(243,160,189,.4),rgba(111,220,170,.35),transparent)!important}
/* Yellow joins the mix (soft gold) */
:root{--yellow-s:#f5d77a}
.service-card:nth-child(4n+1){--accent:var(--lav)!important}
.service-card:nth-child(4n+2){--accent:var(--rose-s)!important}
.service-card:nth-child(4n+3){--accent:var(--green-s)!important}
.service-card:nth-child(4n+4){--accent:var(--yellow-s)!important}
.industries{--accent:var(--yellow-s)!important}
.industry-list span{color:var(--yellow-s)!important;background:rgba(245,215,122,.1)!important}
.industry-list div::before{background:linear-gradient(var(--yellow-s),var(--rose-s))!important}
.industry-list div:hover{border-color:rgba(245,215,122,.35)!important;background:linear-gradient(180deg,rgba(245,215,122,.05),rgba(255,255,255,.02))!important}
.ch-tag:nth-child(3) strong{color:var(--yellow-s)!important}
.value-card:nth-child(2) .value-num{background:var(--lav)!important}
.value-card:nth-child(3) .value-num{background:var(--rose-s)!important}
.value-card:nth-child(4) .value-num{background:var(--green-s)!important}
.value-card:nth-child(5) .value-num{background:var(--yellow-s)!important}
.value-card:nth-child(6) .value-num{background:linear-gradient(135deg,#c3adff,#f39dbe)!important}
.value-num{color:#12061f!important}
.footer::before{background:linear-gradient(90deg,transparent,rgba(183,156,255,.45),rgba(243,160,189,.4),rgba(245,215,122,.35),rgba(111,220,170,.35),transparent)!important}
/* Logo: soft-edged light capsule hugging the logo (replaces the wide spotlight) */
.site-header::before{display:none!important}
.brand{position:relative;isolation:isolate}
.brand::before{content:"";position:absolute;z-index:-1;inset:2px -14px;border-radius:999px;background:rgba(255,255,255,.95);filter:blur(7px);box-shadow:0 0 30px 6px rgba(183,156,255,.25)}
@media (max-width:900px){.brand::before{inset:2px -10px;filter:blur(5px)}}
/* Values page: icon colour follows the number colour */
.value-card:nth-child(2){--accent:var(--lav)}
.value-card:nth-child(3){--accent:var(--rose-s)}
.value-card:nth-child(4){--accent:var(--green-s)}
.value-card:nth-child(5){--accent:var(--yellow-s)}
.value-card:nth-child(6){--accent:var(--lav)}
.value-card .b-icon{color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 12%,transparent)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 32%,transparent)!important}
.value-card:hover{border-color:color-mix(in srgb,var(--accent) 40%,transparent)!important;box-shadow:0 18px 50px -26px color-mix(in srgb,var(--accent) 45%,transparent)!important}
.values-track::after{background:linear-gradient(transparent,var(--lav),var(--rose-s),var(--green-s),var(--yellow-s),transparent)!important}

/* =====================================================================
   Final colour balance (2026-10-14): vivid backgrounds/glows/icons (the "pop" version),
   calm text. Colour lives in surfaces, borders, icons and light; text stays white/grey.
   ===================================================================== */
/* --- calm text --- */
.section-label,.ch-eyebrow,.eyebrow{color:#e9e6f7!important}
.section-label::before,.ch-eyebrow::before,.eyebrow span{background:var(--accent,var(--lav))!important;box-shadow:0 0 12px var(--accent,var(--lav))!important}
.section-label,.ch-eyebrow,.eyebrow{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent,var(--lav)) 40%,transparent)!important;background:color-mix(in srgb,var(--accent,var(--lav)) 10%,transparent)!important}
.ch-tag:nth-child(n) strong{color:#fff!important}
.service-card>a:last-child,.platform-link,.related-card span,.platform-tag,.nav-product,.values-link,.muted a,.breadcrumb a{color:#fff!important}
.service-card>a:last-child:hover,.platform-card:hover .platform-link{color:var(--accent,var(--lav))!important}
.platform-tag{background:color-mix(in srgb,var(--accent) 16%,transparent)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent)!important}
.otp-features strong,.values strong,.service-number,.feature>span{color:#d8d4ea!important}
.footer-links a:hover{color:#fff!important}

/* --- vivid surfaces (pop version, with yellow in the mix) --- */
.ch-hero{background:radial-gradient(900px 520px at 70% 30%,rgba(183,156,255,.18),transparent 65%),radial-gradient(700px 420px at 90% 80%,rgba(255,107,154,.14),transparent 65%),var(--bg)!important}
.page-hero{background:radial-gradient(800px 480px at 80% 0%,rgba(183,156,255,.22),transparent 65%),radial-gradient(600px 400px at 0% 100%,rgba(255,107,154,.13),transparent 65%),var(--bg)!important}
.voice-otp-section{background:radial-gradient(900px 500px at 85% 20%,rgba(255,107,154,.22),transparent 60%),radial-gradient(700px 500px at 10% 90%,rgba(183,156,255,.22),transparent 60%),linear-gradient(140deg,#120c22 0%,#170f2c 55%,#1c0f26 100%)!important}
.otp-phone-icon{background:var(--rose)!important}
.otp-wave i{background:linear-gradient(var(--rose),var(--lav))!important}
.traffic-band{background:radial-gradient(900px 520px at 85% 50%,rgba(62,224,143,.17),transparent 60%),radial-gradient(600px 400px at 10% 10%,rgba(245,215,122,.1),transparent 60%),linear-gradient(115deg,#07110f 0%,#0b1a17 55%,#0d1424 100%)!important}
.fibre-visual{box-shadow:0 50px 100px -40px rgba(0,0,0,.8),0 0 110px -30px rgba(62,224,143,.45)!important}
.dark-section{background:radial-gradient(800px 500px at 10% 30%,rgba(183,156,255,.17),transparent 60%),radial-gradient(600px 400px at 90% 90%,rgba(245,215,122,.08),transparent 60%),var(--bg)!important}
.about-visual{background:radial-gradient(circle at 50% 50%,rgba(183,156,255,.35),transparent 50%),linear-gradient(145deg,#2a1450,#0d0a1c)!important;box-shadow:0 50px 100px -40px rgba(0,0,0,.85),0 0 120px -40px rgba(255,107,154,.45)!important}
.about-visual circle[fill="#11c6e8"]{fill:var(--rose)}
.about-visual .net-node{stroke:var(--rose)!important}
.big-word{background:linear-gradient(180deg,#fff 15%,#d8c8ff 55%,#ff9cbc 100%)!important;-webkit-background-clip:text!important;background-clip:text!important}
.cta-section{background:radial-gradient(700px 400px at 90% 50%,rgba(255,107,154,.32),transparent 60%),radial-gradient(600px 400px at 0% 0%,rgba(183,156,255,.3),transparent 60%),linear-gradient(110deg,#170d26 0%,#24102a 100%)!important}
.cta-photo{opacity:.38!important}
.industries{background:radial-gradient(700px 400px at 0% 100%,rgba(245,215,122,.08),transparent 60%),linear-gradient(180deg,var(--bg) 0%,var(--bg-2) 18%,var(--bg-2) 82%,var(--bg) 100%)!important}

/* cards: vivid accent per card (icons, borders, glows) */
.service-card:nth-child(4n+1){--accent:var(--lav)!important}
.service-card:nth-child(4n+2){--accent:var(--rose)!important}
.service-card:nth-child(4n+3){--accent:var(--green)!important}
.service-card:nth-child(4n+4){--accent:var(--yellow-s)!important}
.service-card .icon{color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 15%,transparent)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 40%,transparent),0 10px 30px -10px color-mix(in srgb,var(--accent) 60%,transparent)!important}
.service-card:hover{border-color:color-mix(in srgb,var(--accent) 50%,transparent)!important;box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 30%,transparent),0 20px 60px -20px color-mix(in srgb,var(--accent) 55%,transparent)!important}
.service-card li:before{background-color:color-mix(in srgb,var(--accent) 18%,transparent)!important}
.service-card.featured{background:radial-gradient(500px circle at 100% 0%,rgba(255,107,154,.4),transparent 55%),radial-gradient(400px circle at 0% 100%,rgba(183,156,255,.35),transparent 55%),linear-gradient(150deg,#2a1450 0%,#1a0f33 100%)!important;border-color:rgba(255,107,154,.4)!important}
.platform-card:nth-child(1){--accent:var(--lav)!important}
.platform-card:nth-child(2){--accent:var(--green)!important}
.platform-card:nth-child(3){--accent:var(--rose)!important}
.platform-card:hover{border-color:color-mix(in srgb,var(--accent) 50%,transparent)!important;box-shadow:0 20px 60px -20px color-mix(in srgb,var(--accent) 55%,transparent)!important}
.industry-list span{color:var(--yellow-s)!important;background:rgba(245,215,122,.12)!important}
.industry-list div::before{background:linear-gradient(var(--yellow-s),var(--rose))!important}
.process-step>span{background:linear-gradient(135deg,var(--green),#7ff5cb)!important;color:#06140e!important;box-shadow:0 0 0 6px var(--bg),0 0 0 7px var(--stroke-2),0 0 30px -4px rgba(62,224,143,.6)!important}
.contact-form{box-shadow:0 50px 100px -40px rgba(0,0,0,.85),0 0 120px -40px rgba(183,156,255,.6)!important}
.footer{background:radial-gradient(800px 400px at 0% 0%,rgba(183,156,255,.12),transparent 60%),radial-gradient(600px 300px at 100% 100%,rgba(255,107,154,.1),transparent 60%),#06050c!important}
.btn-primary{box-shadow:0 0 0 1px rgba(255,255,255,.18),0 16px 40px -14px rgba(255,107,154,.7),inset 0 1px 0 rgba(255,255,255,.4)!important}
.section-label.light,.section-label.light:not(x){color:#e9e6f7!important}
/* Homepage only (body has no .subpage class): coloured text is back */
body:not(.subpage) .section-label,body:not(.subpage) .ch-eyebrow,body:not(.subpage) .section-label.light,body:not(.subpage) .section-label.light:not(x){color:var(--accent,var(--lav))!important}
body:not(.subpage) .ch-hero{--accent:var(--lav)!important}
body:not(.subpage) .voice-otp-section{--accent:var(--rose)!important}
body:not(.subpage) .services-section{--accent:var(--lav)!important}
body:not(.subpage) .platforms,body:not(.subpage) .traffic-band,body:not(.subpage) .process{--accent:var(--green)!important}
body:not(.subpage) .industries{--accent:var(--yellow-s)!important}
body:not(.subpage) .cta-section{--accent:#ffc2d6!important}
body:not(.subpage) .ch-tag:nth-child(1) strong{color:var(--green)!important}
body:not(.subpage) .ch-tag:nth-child(2) strong{color:var(--lav)!important}
body:not(.subpage) .ch-tag:nth-child(3) strong{color:var(--yellow-s)!important}
body:not(.subpage) .service-card>a:last-child,body:not(.subpage) .platform-link,body:not(.subpage) .platform-tag{color:var(--accent)!important}
body:not(.subpage) .service-card.featured>a:last-child{color:#fff!important}
body:not(.subpage) .otp-features strong{color:var(--rose)!important}
body:not(.subpage) .service-number{color:color-mix(in srgb,var(--accent) 70%,#fff)!important}
body:not(.subpage) .nav-product{color:var(--lav)!important}
/* Use cases: heading on top, photo and list side by side with equal height (pages with a photo) */
.uses-grid:has(.uses-photo){grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);grid-template-areas:"label ." "title ." "photo list";row-gap:0;column-gap:28px;align-items:stretch}
.uses-grid:has(.uses-photo)>div:first-child{display:contents}
.uses-grid:has(.uses-photo) .section-label{grid-area:label}
.uses-grid:has(.uses-photo) .h2-md{grid-area:title;margin-bottom:34px!important}
.uses-grid:has(.uses-photo) .uses-photo{grid-area:photo;margin:0;aspect-ratio:auto;height:100%;min-height:280px}
.uses-grid:has(.uses-photo) .uses{grid-area:list;grid-auto-rows:1fr;align-content:stretch}
.uses-grid:has(.uses-photo) .uses li{height:100%}
@media (max-width:900px){
  .uses-grid:has(.uses-photo){grid-template-columns:1fr;grid-template-areas:"label" "title" "photo" "list";row-gap:0}
  .uses-grid:has(.uses-photo) .uses-photo{min-height:0;aspect-ratio:16/10;height:auto;margin-bottom:18px}
  .uses-grid:has(.uses-photo) .uses{grid-auto-rows:auto}
}
.related-grid:has(>:nth-child(4)){grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width:1100px){.related-grid:has(>:nth-child(4)){grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:620px){.related-grid:has(>:nth-child(4)){grid-template-columns:1fr}}
/* Required fields: rose asterisk after the label text; red outline on empty required fields */
.contact-form label:has(> [required]){display:flex;flex-wrap:wrap;align-items:baseline;column-gap:4px}
.contact-form label:has(> [required])::after{content:"*";order:1;color:#e0447a;font-weight:700}
.contact-form label:has(> [required])>input,.contact-form label:has(> [required])>textarea{order:2;flex-basis:100%}
.contact-form [aria-invalid="true"]{border-color:#d92d5b!important;box-shadow:0 0 0 4px rgba(217,45,91,.15)!important;background:#fff7f9!important}
