/* AISTACS liquid glass layer. Loads after main.css.
   To go back to the flat look, remove the "aistacs-glass" line in functions.php or delete this file. */
:root{
 --g-bg:linear-gradient(140deg,rgba(255,255,255,.84),rgba(228,240,252,.6));
 --g-bg-soft:linear-gradient(145deg,rgba(255,255,255,.78),rgba(238,245,252,.52));
 --g-border:rgba(255,255,255,.88);
 --g-shadow:0 18px 40px -24px rgba(0,30,60,.4),0 0 0 1px rgba(0,45,90,.06),inset 0 1.5px 1px rgba(255,255,255,.95),inset 0 -1px 1px rgba(255,255,255,.35);
 --g-blur:blur(26px) saturate(185%);
 --r-card:24px;
}

/* soft colour glow behind everything: this is what the glass picks up */
html{background:#f3f8fd}
body{background:transparent}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:
 radial-gradient(55% 45% at 6% 4%,rgba(48,144,216,.26),transparent 70%),
 radial-gradient(45% 40% at 98% 36%,rgba(209,0,8,.11),transparent 70%),
 radial-gradient(50% 45% at 18% 100%,rgba(129,10,39,.10),transparent 70%),
 radial-gradient(40% 40% at 72% 80%,rgba(0,45,90,.08),transparent 70%)}
.s{border-top:0}
.banner{background:transparent;border-bottom:0}

/* ---------- header: floating glass capsule ---------- */
header.site{height:98px;display:flow-root}
.hbar{margin:12px auto 0;width:min(100% - 1.5rem,1240px);border-radius:999px;border:1px solid var(--g-border);
 background:linear-gradient(140deg,rgba(255,255,255,.8),rgba(240,247,253,.6));
 -webkit-backdrop-filter:var(--g-blur);backdrop-filter:var(--g-blur);
 box-shadow:0 18px 38px -24px rgba(0,30,60,.5),inset 0 1.5px 1px rgba(255,255,255,.95);
 transition:width .45s var(--ease),box-shadow .45s var(--ease)}
.is-shrunk .hbar{width:min(100% - 1.5rem,1120px)}
.bar{width:100%;max-width:none;margin:0;padding:0 1.2rem 0 1.5rem;min-height:76px}
.is-shrunk .bar{min-height:58px}
.brand{height:50px;width:135px}
.brand .b-full{height:50px}
.brand .b-mark{height:44px}
.is-shrunk .brand{height:40px;width:40px}
.nav{gap:.2rem}
.nav a,.mega-btn{padding:.55rem 1rem;border-radius:999px;border-bottom:0;transition:background .2s,color .2s}
.nav a:hover,.mega-btn:hover,.mega-btn[aria-expanded=true]{background:rgba(0,45,90,.08);color:var(--navy);border-bottom-color:transparent}
.nav a[aria-current]{background:rgba(255,255,255,.95);color:var(--navy);box-shadow:inset 0 0 0 1px rgba(0,45,90,.1),0 6px 12px -8px rgba(0,45,90,.4)}
.has-mega::after{display:none}
.bar-cta{min-height:46px}
.is-shrunk .bar-cta{min-height:40px;padding:.4rem 1.1rem}
.burger{width:46px;height:46px;border:1px solid var(--g-border);border-radius:50%;background:rgba(255,255,255,.7);box-shadow:var(--g-shadow)}
@media (min-width:901px){
 .nav>li.has-mega{position:static}
 .mega{position:absolute;left:0;right:0;top:100%;margin-top:8px;border-radius:30px;border:1px solid var(--g-border);padding:1.6rem 1.8rem;
  background:var(--g-bg);-webkit-backdrop-filter:var(--g-blur);backdrop-filter:var(--g-blur);
  box-shadow:0 34px 64px -28px rgba(0,30,60,.5),inset 0 1.5px 1px rgba(255,255,255,.95)}
 .mega{background:linear-gradient(160deg,#ffffff,#eef5ff);opacity:1;-webkit-backdrop-filter:none;backdrop-filter:none;max-height:none;overflow:visible}
 .mega .wrap{width:100%;padding:0}
 .nav .mega a{display:block;padding:.3rem .5rem;border-radius:10px;background:none;box-shadow:none}
 .nav .mega .mega-cat{padding:.3rem .5rem}
 .nav .mega a:hover{background:rgba(0,45,90,.07)}
 .mega ul{margin:0;padding:0}
 .mega-foot{border-top:1px solid rgba(0,45,90,.1)}
}
@media (max-width:900px){
 header.site{height:78px}
 .hbar{margin-top:8px}
 .bar{min-height:62px;padding:0 .9rem 0 1.1rem}
 .is-shrunk .bar{min-height:54px}
 .brand{height:44px;width:119px}.brand .b-full{height:44px}.brand .b-mark{height:40px}
 .is-shrunk .brand{height:38px;width:38px}
 .primary{top:calc(100% + 8px);border-radius:28px;border:1px solid var(--g-border);padding:.6rem 1.1rem 1.1rem;
  background:linear-gradient(160deg,#fff,#eef5ff);box-shadow:0 30px 60px -28px rgba(0,30,60,.5),inset 0 1.5px 1px rgba(255,255,255,.95);max-height:calc(100vh - 100px)}
 .nav a,.mega-btn{border-radius:16px;border-bottom:0}
 .nav a[aria-current]{box-shadow:none;background:rgba(0,45,90,.07)}
 .mega{background:transparent;border:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0;padding:0 0 .5rem 1rem}
}
/* home page: the capsule floats over the hero photo */
body.home #main{margin-top:-98px}
body.home .hero{padding-top:98px}
@media (max-width:900px){body.home #main{margin-top:-78px}body.home .hero{padding-top:78px}}

/* ---------- buttons ---------- */
.btn{border-radius:999px;border-width:1px}
.btn-red{background:linear-gradient(180deg,#e2141c,#b30008);border-color:rgba(255,255,255,.4);box-shadow:0 12px 24px -12px rgba(209,0,8,.8),inset 0 1.5px 1px rgba(255,255,255,.5)}
.btn-red:hover{background:linear-gradient(180deg,#ea242c,#a80006)}
.btn-line{background:rgba(255,255,255,.55);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-color:rgba(0,45,90,.35);box-shadow:inset 0 1.5px 1px rgba(255,255,255,.9)}
.btn-line:hover{background:var(--navy);color:#fff}
.btn-ghost{background:rgba(255,255,255,.16);-webkit-backdrop-filter:blur(16px) saturate(160%);backdrop-filter:blur(16px) saturate(160%);border-color:rgba(255,255,255,.7);box-shadow:inset 0 1.5px 1px rgba(255,255,255,.55)}
.btn-ghost:hover{background:rgba(255,255,255,.92);color:var(--navy)}

/* ---------- hero featured box ---------- */
.feat-wrap{border-radius:32px;padding:1rem;border:1px solid rgba(255,255,255,.72);
 background:linear-gradient(140deg,rgba(255,255,255,.6),rgba(255,255,255,.3));
 -webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);
 box-shadow:0 32px 64px -30px rgba(0,25,60,.65),inset 0 1.5px 1px rgba(255,255,255,.85)}
.feat{background:rgba(255,255,255,.85);border-radius:24px;overflow:hidden;box-shadow:0 14px 30px -22px rgba(0,30,60,.5),inset 0 1.5px 1px rgba(255,255,255,.95)}
.feat .ph{margin:8px 8px 0;border-radius:18px}
.feat-nav button{border-radius:50%;border:1px solid rgba(255,255,255,.9);background:rgba(255,255,255,.72);box-shadow:inset 0 1.5px 1px rgba(255,255,255,.95),0 6px 14px -8px rgba(0,30,60,.5)}
.feat-nav button:hover{background:var(--navy);color:#fff}

/* ---------- cards (translucent, no blur so a long page stays fast) ---------- */
.card,.tiles a,.steps li,.side .box,.ind-card{background:var(--g-bg-soft);border:1px solid var(--g-border);box-shadow:var(--g-shadow)}
.card{border-radius:var(--r-card)}
.card .ph{margin:8px 8px 0;border-bottom:0;border-radius:18px}
.card:hover{box-shadow:0 26px 46px -26px rgba(0,30,60,.5),0 0 0 1px rgba(0,45,90,.06),inset 0 1.5px 1px rgba(255,255,255,.95);transform:translateY(-4px)}
.tiles a{border-radius:20px}
.ind-card{border-radius:20px}
.ind-card:hover{border-color:rgba(209,0,8,.5)}
.steps li{border-top:1px solid var(--g-border);border-radius:24px;padding:1.3rem 1.3rem 1.4rem}
.side .box{border-radius:26px;padding:1.4rem}
.regions li{border:1px solid var(--g-border);border-radius:999px;background:var(--g-bg-soft);box-shadow:var(--g-shadow)}
.worldmap{border-radius:30px;background:var(--g-bg-soft);border:1px solid var(--g-border);box-shadow:var(--g-shadow)}
.hero-img{border-radius:26px;overflow:hidden;border:1px solid var(--g-border);box-shadow:var(--g-shadow)}
.notice{border-radius:18px}

/* ---------- forms ---------- */
.quote-form{padding:1.6rem;border-radius:30px;border:1px solid var(--g-border);background:var(--g-bg);-webkit-backdrop-filter:var(--g-blur);backdrop-filter:var(--g-blur);box-shadow:0 30px 60px -32px rgba(0,30,60,.45),inset 0 1.5px 1px rgba(255,255,255,.95)}
input,select,textarea{border:1px solid rgba(0,45,90,.38);border-radius:16px;background:rgba(255,255,255,.66);box-shadow:inset 0 1px 3px rgba(0,45,90,.1)}
input:focus,select:focus,textarea:focus{background:#fff;border-color:var(--sky)}
input[type=checkbox]{border-radius:6px;box-shadow:none}
.chip{border:1px solid rgba(0,45,90,.3);border-radius:999px;background:rgba(255,255,255,.6);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:inset 0 1.5px 1px rgba(255,255,255,.9)}
.chip[aria-pressed=true]{background:linear-gradient(180deg,#0a447f,#002D5A);border-color:rgba(255,255,255,.3);box-shadow:inset 0 1.5px 1px rgba(255,255,255,.35)}

/* ---------- footer ---------- */
footer.site{padding:3rem 0 0;background:radial-gradient(60% 90% at 8% 0%,rgba(48,144,216,.42),transparent 70%),radial-gradient(50% 80% at 96% 100%,rgba(209,0,8,.3),transparent 70%),#012F5C}
.foot-grid{padding:2rem 2.2rem;border-radius:34px;border:1px solid rgba(255,255,255,.24);background:linear-gradient(145deg,rgba(255,255,255,.15),rgba(255,255,255,.05));-webkit-backdrop-filter:blur(24px) saturate(160%);backdrop-filter:blur(24px) saturate(160%);box-shadow:inset 0 1.5px 1px rgba(255,255,255,.35),0 26px 50px -32px rgba(0,0,0,.7)}
.legal{border-top:0;margin-top:0;padding-block:1.4rem}

/* ---------- back to top ---------- */
.totop{background:rgba(255,255,255,.72);color:var(--navy);border:1px solid var(--g-border);-webkit-backdrop-filter:blur(14px) saturate(170%);backdrop-filter:blur(14px) saturate(170%);box-shadow:0 14px 28px -14px rgba(0,30,60,.55),inset 0 1.5px 1px rgba(255,255,255,.95)}
.totop:hover{background:var(--red);color:#fff;border-color:rgba(255,255,255,.5)}

@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
 .hbar,.mega,.quote-form,.primary{background:#fff}
 .feat-wrap{background:rgba(255,255,255,.88)}
 .foot-grid{background:rgba(255,255,255,.1)}
}
@media (prefers-reduced-transparency:reduce){
 .hbar,.mega,.quote-form,.primary,.feat-wrap,.ind-pop{background:#fff;-webkit-backdrop-filter:none;backdrop-filter:none}
}

/* =====================================================================
   BLACK GLASS: dark backdrop with coloured glows, glass picks the glow up.
   (Delete everything below this line to go back to the light glass look.)
   ===================================================================== */
:root{
 --navy:#eaf3ff;--ink:#e8eef6;--muted:#a7b4c4;--line:rgba(255,255,255,.13);--bg:#05070b;
 --g-bg:linear-gradient(140deg,rgba(255,255,255,.16),rgba(255,255,255,.05));
 --g-bg-soft:linear-gradient(145deg,rgba(255,255,255,.12),rgba(255,255,255,.04));
 --g-border:rgba(255,255,255,.2);
 --g-shadow:0 22px 44px -26px rgba(0,0,0,.9),inset 0 1px 1px rgba(255,255,255,.28),inset 0 -1px 1px rgba(255,255,255,.06);
 --solid:#0d1219;
}
html{background:#05070b;color-scheme:dark}
body{color:var(--ink)}
body::before{background:
 radial-gradient(55% 45% at 4% 6%,rgba(48,144,216,.34),transparent 70%),
 radial-gradient(45% 40% at 100% 34%,rgba(209,0,8,.22),transparent 70%),
 radial-gradient(50% 45% at 16% 100%,rgba(129,10,39,.28),transparent 70%),
 radial-gradient(40% 40% at 74% 78%,rgba(30,90,170,.2),transparent 70%)}
h1,h2,h3{color:#fff}
a{color:#bcd9f7}
a:hover{color:#ff6a70}
.eyebrow.dark{color:#ff6a70}
.sub,.lede{color:var(--muted)}
.skip{background:#111;color:#fff}

/* header and menus */
.hbar{background:linear-gradient(140deg,rgba(40,48,62,.62),rgba(14,18,26,.5));border-color:rgba(255,255,255,.22);
 box-shadow:0 20px 40px -22px rgba(0,0,0,.9),inset 0 1px 1px rgba(255,255,255,.3)}
.brand .b-full{box-sizing:content-box;background:rgba(255,255,255,.95);border-radius:999px;padding:4px 14px;height:42px;width:auto;box-shadow:inset 0 0 0 1px rgba(255,255,255,.4)}
.brand .b-mark{box-sizing:content-box;background:rgba(255,255,255,.95);border-radius:50%;padding:4px}
.brand{height:50px;width:142px}
.is-shrunk .brand{width:48px;height:48px}
@media (max-width:900px){.brand,.is-shrunk .brand{height:46px}.brand{width:134px}.is-shrunk .brand{width:46px}.brand .b-full{height:36px}.brand .b-mark{height:36px}}
.nav a,.mega-btn{color:#e8eef6}
.nav a:hover,.mega-btn:hover,.mega-btn[aria-expanded=true]{background:rgba(255,255,255,.12);color:#fff}
.nav a[aria-current]{background:rgba(255,255,255,.2);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.burger{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.3)}
.burger span{background:#fff}
@media (min-width:901px){
 .mega{background:linear-gradient(160deg,#18202b,#0b1016);border-color:rgba(255,255,255,.2);box-shadow:0 34px 70px -24px rgba(0,0,0,.95),inset 0 1px 1px rgba(255,255,255,.25)}
 .nav .mega a{color:#c6d2e0}
 .nav .mega .mega-cat,.nav .mega .mega-list a{color:#fff}
 .nav .mega a:hover{background:rgba(255,255,255,.1);color:#fff}
 .mega-foot{border-top-color:rgba(255,255,255,.14)}
}
@media (max-width:900px){
 .primary{background:linear-gradient(160deg,#18202b,#0b1016);border-color:rgba(255,255,255,.2)}
 .nav a,.mega-btn{border-bottom:0}
 .nav a[aria-current]{background:rgba(255,255,255,.12)}
}

/* hero: full bleed from the very top, fades into the black page so nothing looks cut off */
.hero{position:relative;isolation:isolate;background:none!important}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(5,7,11,.5) 0%,rgba(5,7,11,0) 24%),linear-gradient(90deg,rgba(4,10,28,.72) 0%,rgba(4,10,28,.5) 32%,rgba(4,10,28,0) 58%),linear-gradient(rgba(14,24,44,.34),rgba(14,24,44,.34)),var(--hero-img) center 60%/cover no-repeat;
 -webkit-mask-image:linear-gradient(180deg,#000 0,#000 68%,transparent 100%);mask-image:linear-gradient(180deg,#000 0,#000 68%,transparent 100%)}
.hero>.wrap{position:relative;z-index:1}
.feat-wrap{background:linear-gradient(140deg,rgba(255,255,255,.2),rgba(255,255,255,.07));border-color:rgba(255,255,255,.28);box-shadow:0 32px 64px -28px rgba(0,0,0,.9),inset 0 1px 1px rgba(255,255,255,.35)}
.feat-head h2{color:#fff}
.feat{background:rgba(10,14,20,.72);box-shadow:0 14px 30px -20px rgba(0,0,0,.9),inset 0 1px 1px rgba(255,255,255,.22)}
.feat .fp h3{color:#fff}.feat .fp p{color:#b5c2d2}.feat .fp a{color:#fff}
.feat-nav button{background:rgba(255,255,255,.16);color:#fff;border-color:rgba(255,255,255,.4)}
.feat-nav button:hover{background:var(--red);color:#fff}

/* buttons, chips, forms */
.btn-line{background:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.4);box-shadow:inset 0 1px 1px rgba(255,255,255,.3)}
.btn-line:hover{background:#fff;color:#05070b}
.chip{background:rgba(255,255,255,.08);color:#e8eef6;border-color:rgba(255,255,255,.25);box-shadow:inset 0 1px 1px rgba(255,255,255,.2)}
.chip:hover{background:rgba(255,255,255,.16)}
.chip[aria-pressed=true]{background:linear-gradient(180deg,#2f86d6,#1459a0);color:#fff;border-color:rgba(255,255,255,.4)}
.quote-form{background:linear-gradient(140deg,rgba(255,255,255,.14),rgba(255,255,255,.04));border-color:rgba(255,255,255,.22);box-shadow:0 30px 60px -30px rgba(0,0,0,.9),inset 0 1px 1px rgba(255,255,255,.3)}
input,select,textarea{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.28);box-shadow:inset 0 1px 3px rgba(0,0,0,.4)}
input::placeholder,textarea::placeholder{color:#8e9db0}
input:focus,select:focus,textarea:focus{background:rgba(255,255,255,.14);border-color:#5aaef0}
select option{background:#10161e;color:#fff}
label{color:#d6e0ec}

/* cards, tiles, steps, map */
.card,.tiles a,.steps li,.side .box,.ind-card{color:var(--ink)}
.card h3,.tiles a h3,.steps h3{color:#fff}
.card p,.steps p,.ind-card .d{color:var(--muted)}
.card .go,.card .more{color:#ff6a70}
.card:hover{box-shadow:0 30px 50px -26px rgba(0,0,0,.95),inset 0 1px 1px rgba(255,255,255,.3);border-color:rgba(255,255,255,.34)}
.ind-card .n{color:#fff}
.ind-card{background:var(--g-bg-soft)}
.steps .num{color:#fff}
.worldmap{background:linear-gradient(145deg,rgba(255,255,255,.07),rgba(255,255,255,.02))}
.worldmap img{opacity:.3}
.pin b{background:rgba(15,20,28,.85);color:#fff;border-color:rgba(255,255,255,.25)}
.regions li{color:#e8eef6}
.banner{background:transparent}
.breadcrumb a,.crumbs a{color:#bcd9f7}

/* industry popup */
.ind-pop{background:linear-gradient(140deg,rgba(255,255,255,.2),rgba(255,255,255,.06));border-color:rgba(255,255,255,.3);
 box-shadow:0 34px 80px -22px rgba(0,0,0,.95),inset 0 1.5px 1px rgba(255,255,255,.4),inset 0 -1px 2px rgba(255,255,255,.1)}
.ind-pop::before{background:linear-gradient(118deg,rgba(255,255,255,.22) 0%,rgba(255,255,255,0) 28%,rgba(255,255,255,0) 66%,rgba(255,255,255,.1) 100%)}
.ind-body{background:rgba(8,12,18,.62);border-color:rgba(255,255,255,.16);box-shadow:inset 0 1px 1px rgba(255,255,255,.2)}
.ind-body p,.ind-body li.more{color:#b5c2d2}
.ind-body li a{color:#fff}
.ind-body li a:hover{color:#ff6a70}
.ind-pop.noimg .ind-body{background:rgba(8,12,18,.7)}
.ind-img{background:linear-gradient(135deg,#1a2330,#0d1219)}
.ind-x{background:rgba(255,255,255,.18);color:#fff;border-color:rgba(255,255,255,.4)}
.ind-backdrop{background:rgba(0,0,0,.65)}

/* footer, back to top */
footer.site{background:radial-gradient(60% 90% at 8% 0%,rgba(48,144,216,.3),transparent 70%),radial-gradient(50% 80% at 96% 100%,rgba(209,0,8,.26),transparent 70%),#05070b;border-top:1px solid rgba(255,255,255,.1)}
.totop{background:rgba(255,255,255,.14);color:#fff;border-color:rgba(255,255,255,.3);box-shadow:0 14px 28px -14px rgba(0,0,0,.9),inset 0 1px 1px rgba(255,255,255,.35)}
.notice{background:rgba(255,255,255,.08);color:var(--ink)}
.notice.bad{background:rgba(209,0,8,.16)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
 .hbar,.quote-form,.primary{background:#10161e}.feat-wrap{background:rgba(16,22,30,.9)}.ind-pop{background:#10161e}
}
@media (prefers-reduced-transparency:reduce){
 .hbar,.mega,.quote-form,.primary,.feat-wrap,.ind-pop{background:#10161e}
}
.brand .b-mark{left:0}
.brand .b-mark{width:40px;height:40px;object-fit:contain}
.socials .soc{background:rgba(255,255,255,.1);color:#fff;border-color:rgba(255,255,255,.3)}
.socials .soc:hover{background:var(--red);color:#fff;border-color:var(--red)}
footer .socials .soc:hover{background:var(--red);color:#fff;border-color:var(--red)}

/* no sideways scroll (hidden industry popups used to push the page wider) */
html,body{overflow-x:clip;max-width:100%}

/* page title banner: a glass panel instead of a solid band, with tighter spacing */
.banner{background:transparent!important;border:0!important;padding:1.2rem 0 .6rem!important;color:var(--ink)}
.banner>.wrap{padding:1.6rem 2rem 1.7rem;border-radius:30px;border:1px solid rgba(255,255,255,.2);
 background:linear-gradient(140deg,rgba(255,255,255,.14),rgba(255,255,255,.04));
 -webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);
 box-shadow:0 26px 50px -30px rgba(0,0,0,.9),inset 0 1px 1px rgba(255,255,255,.3)}
.banner h1{color:#fff;margin-bottom:.4rem}
.banner .lede{color:#b5c2d2}
.banner .crumbs,.banner nav{margin-bottom:.6rem}
.banner+.s,.banner+section{padding-top:clamp(1.5rem,3vw,2.2rem)}
@media (max-width:700px){.banner>.wrap{padding:1.2rem 1.2rem 1.3rem;border-radius:24px}}

/* phones and touch: the industry cards are fixed bottom sheets; keep them out of the layout until opened */
html{overscroll-behavior-x:none}
@media (max-width:700px),(hover:none){
 .ind-pop,.ind--left .ind-pop,.ind--up .ind-pop{display:none}
 .ind.is-open .ind-pop{display:grid;animation:sheetin .28s var(--ease)}
 .indgrid,.ind,.ind-card{transform:none!important}
}
@keyframes sheetin{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}

/* ---------- world map: tilted glowing globe plane, AISTACS blue and red ---------- */
.worldmap{display:none}
.gmap{position:relative;margin:1.2rem auto 1.6rem;max-width:1100px}
.gmap::before{content:"";position:absolute;inset:-6% -4% 8%;background:radial-gradient(50% 55% at 50% 52%,rgba(48,144,216,.14),transparent 70%);pointer-events:none}
.gmap-stage{position:relative;perspective:1500px;padding-top:42%;margin-top:-3rem}
.gmap-plane{position:absolute;left:0;right:0;top:0;aspect-ratio:1000/436;transform-style:preserve-3d;transform:rotateX(40deg) scale(.96);transform-origin:50% 55%}
.gl{position:absolute;inset:0}
.gl i{position:absolute;inset:0;display:block;-webkit-mask:var(--mapland) center/100% 100% no-repeat;mask:var(--mapland) center/100% 100% no-repeat}
/* the rest of the world: a quiet dark relief */
.gl-under{transform:translateY(6px)}
.gl-under i{background:#02060c}
.gl-top{filter:drop-shadow(0 0 .6px rgba(150,190,235,.55))}
.gl-top i{background:radial-gradient(circle,rgba(160,195,235,.22) 0 1px,transparent 1.6px) 0 0/8px 8px,linear-gradient(160deg,#16253b,#0b1422)}
/* countries we serve: lit up */
.gl-mk i,.gl-mkglow i{-webkit-mask-image:var(--mapmk);mask-image:var(--mapmk)}
.gl-hq i,.gl-hqglow i{-webkit-mask-image:var(--maphq);mask-image:var(--maphq)}
.gl-mkglow,.gl-hqglow{filter:blur(12px);opacity:.95}
.gl-mkglow i{background:#ff2e38}.gl-hqglow i{background:#2f93e6}
.gl-mk{transform:translateY(-3px);filter:drop-shadow(0 0 2px rgba(255,170,175,.9)) drop-shadow(0 0 8px rgba(255,59,68,.7))}
.gl-mk i{background:radial-gradient(circle,rgba(255,255,255,.35) 0 1px,transparent 1.6px) 0 0/8px 8px,linear-gradient(160deg,#ff5a62,#d10008 70%,#8a0006)}
.gl-hq{transform:translateY(-3px);filter:drop-shadow(0 0 2px rgba(190,225,255,.9)) drop-shadow(0 0 8px rgba(48,144,216,.8))}
.gl-hq i{background:radial-gradient(circle,rgba(255,255,255,.35) 0 1px,transparent 1.6px) 0 0/8px 8px,linear-gradient(160deg,#6cbaf5,#2a82d0 70%,#124f93)}
.gmap-arcs{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.gmap-arcs path{fill:none;stroke:url(#arcg);stroke-width:2.2;stroke-linecap:round;stroke-dasharray:3 9;filter:drop-shadow(0 0 4px rgba(255,90,100,.8));animation:arcflow 2.4s linear infinite}
@keyframes arcflow{to{stroke-dashoffset:-48}}
.pin{position:absolute;width:0;height:0;transform-style:preserve-3d}
.pin i{position:absolute;left:0;top:0;transform:translate(-50%,-50%);width:12px;height:12px;border-radius:50%;background:#ff3b44;border:2px solid #fff;box-shadow:0 0 14px 3px rgba(255,59,68,.85)}
.pin i::after{content:"";position:absolute;inset:-12px;border-radius:50%;border:2px solid rgba(255,90,100,.9);opacity:0;animation:pinpulse 2.6s var(--ease) infinite}
.pin-ho i{background:#5db4f2;box-shadow:0 0 14px 3px rgba(93,180,242,.9)}.pin-ho i::after{border-color:rgba(93,180,242,.9)}
.pin .beam{position:absolute;left:0;bottom:0;width:0;height:58px;transform-origin:50% 100%;transform:rotateX(-40deg);border-left:2px solid transparent}
.pin .beam::before{content:"";position:absolute;left:-1px;bottom:0;width:2px;height:100%;background:linear-gradient(0deg,rgba(255,80,90,.95),rgba(255,80,90,0));box-shadow:0 0 10px 1px rgba(255,80,90,.7)}
.pin-ho .beam::before{background:linear-gradient(0deg,rgba(93,180,242,.95),rgba(93,180,242,0));box-shadow:0 0 10px 1px rgba(93,180,242,.7)}
.gmap-labels{position:absolute;inset:0;pointer-events:none}
.gmap-label{position:absolute;left:0;top:0;opacity:0;transform:translate(-50%,-100%);transition:opacity .3s;white-space:nowrap;font-size:.8rem;font-weight:700;color:#fff;background:linear-gradient(140deg,rgba(255,255,255,.22),rgba(255,255,255,.07));border:1px solid rgba(255,255,255,.3);padding:.2rem .7rem;border-radius:999px;background-color:rgba(12,24,44,.85);box-shadow:0 8px 18px -8px rgba(0,0,0,.9),inset 0 1px 1px rgba(255,255,255,.35)}
.gmap-stats{position:relative;display:flex;margin-top:-1rem;border-radius:22px;border:1px solid rgba(255,255,255,.2);background:linear-gradient(140deg,rgba(255,255,255,.12),rgba(255,255,255,.03));-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:0 26px 50px -30px rgba(0,0,0,.9),inset 0 1px 1px rgba(255,255,255,.3);overflow:hidden}
.gmap-stats>div{flex:1;padding:1rem .8rem;text-align:center;border-left:1px solid rgba(255,255,255,.12)}
.gmap-stats>div:first-child{border-left:0}
.gmap-stats strong{display:block;font-size:1.7rem;line-height:1.1;color:#fff}
.gmap-stats span{display:block;font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;color:#a7b4c4;margin-top:.2rem}
@media (max-width:700px){
 .gmap-stage{padding-top:52%}
 .gmap-plane{transform:rotateX(32deg) scale(1)}
 .pin .beam{height:30px;transform:rotateX(-32deg)}
 .gmap-labels{display:none}
 .pin i{width:9px;height:9px}
 .gmap-stats{flex-wrap:wrap;margin-top:.4rem}.gmap-stats>div{flex:1 1 45%;border-left:0;border-top:1px solid rgba(255,255,255,.12)}
 .gmap-stats>div:nth-child(-n+2){border-top:0}
}
@media (prefers-reduced-motion:reduce){.gmap-arcs path,.pin i::after{animation:none}}

/* hero photo has a bright doorway behind the featured box: keep its glass dark enough to read */
.feat-wrap{background:linear-gradient(140deg,rgba(10,16,26,.62),rgba(10,16,26,.38))}
.feat-head h2{text-shadow:0 1px 8px rgba(0,0,0,.6)}

/* ---- featured slider: every slide is exactly the same size, so nothing jumps ---- */
.feat .ph{aspect-ratio:16/10}
.feat .fp{display:flex;flex-direction:column;height:200px;padding:1rem 1.2rem 1.1rem}
.feat .fp .tag{flex:none}
.feat .fp h3{flex:none;min-height:2.3em;margin:.2rem 0 .3rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.feat .fp p{flex:1 1 auto;min-height:0;margin:0 0 .5rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.feat .fp a{flex:none;align-self:flex-start}
.feat-slides{min-height:0}

/* ---- emblem: always a perfect circle ---- */
.brand .b-mark{box-sizing:border-box;width:44px;height:44px;padding:5px;border-radius:50%;object-fit:contain;background:#fff;left:0;overflow:hidden}
.is-shrunk .brand{width:44px;height:44px}
@media (max-width:900px){.brand .b-mark{width:42px;height:42px}.is-shrunk .brand{width:42px;height:42px}}

/* ---- phone / tablet industry sheet: no hidden overflow, no sideways scroll ---- */
@media (max-width:700px),(hover:none){
 .ind-pop,.ind--left .ind-pop,.ind--up .ind-pop{left:.75rem;right:.75rem;width:auto;max-width:calc(100vw - 1.5rem);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
 .ind-pop::after{inset:0}
 .ind-pop>*{min-width:0;max-width:100%}
}

/* the map is decorative: never let its 3D layers catch taps or clicks meant for other sections */
.gmap-stage,.gmap-stage *{pointer-events:none!important}
.gmap{isolation:isolate}
.feat .fp h3{min-height:0}

/* heading descenders (g, y, p) were clipped by the line clamp */
.feat .fp h3{line-height:1.32;padding-bottom:.12em;margin:.1rem 0 .2rem}
.hero::before{image-rendering:auto}

/* hero photo: small file on phones, larger one on desktop (webp) */
.hero{--hero-img:url('../img/hero-port-1920.webp');background:none!important}

/* ---------- welcome preloader ---------- */
.pre{display:none}
html.pre-on{overflow:hidden}
html.pre-on .pre{display:flex;position:fixed;inset:0;z-index:99999;flex-direction:column;align-items:center;justify-content:center;gap:1.6rem;background:#05070b;color:#fff;
 transition:opacity .6s ease,transform .7s var(--ease),filter .6s ease;animation:preSafe 0s linear 9s forwards}
@keyframes preSafe{to{visibility:hidden;pointer-events:none}}
.pre.is-leaving{opacity:0;transform:scale(1.06);filter:blur(8px);pointer-events:none}
.pre-glow{position:absolute;inset:0;background:radial-gradient(45% 40% at 18% 12%,rgba(48,144,216,.38),transparent 70%),radial-gradient(40% 40% at 86% 88%,rgba(209,0,8,.3),transparent 70%),radial-gradient(35% 35% at 50% 50%,rgba(30,90,170,.18),transparent 70%)}
.pre-core{position:relative;width:132px;height:132px;display:grid;place-items:center}
.pre-ring{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,#3090d8,#d10008 55%,#3090d8);-webkit-mask:radial-gradient(circle,transparent 62%,#000 64%);mask:radial-gradient(circle,transparent 62%,#000 64%);animation:preSpin 1.3s linear infinite;filter:drop-shadow(0 0 10px rgba(48,144,216,.7))}
.pre-halo{position:absolute;inset:-14px;border-radius:50%;background:radial-gradient(circle,rgba(48,144,216,.35),transparent 68%);animation:prePulse 1.8s ease-in-out infinite}
.pre-mark{position:relative;width:96px;height:96px;border-radius:50%;background:#fff;padding:9px;object-fit:contain;box-shadow:0 14px 34px -10px rgba(0,0,0,.9),inset 0 0 0 1px rgba(255,255,255,.5);animation:preBob 1.8s ease-in-out infinite}
@keyframes preSpin{to{transform:rotate(360deg)}}
@keyframes prePulse{0%,100%{opacity:.55;transform:scale(.94)}50%{opacity:1;transform:scale(1.06)}}
@keyframes preBob{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
.pre-ripple{position:absolute;inset:0;border-radius:50%;border:2px solid rgba(93,180,242,.7);opacity:0;animation:preRipple 2s ease-out infinite}
.pre-ripple.r2{animation-delay:1s;border-color:rgba(255,90,100,.6)}
@keyframes preRipple{0%{transform:scale(.8);opacity:.9}100%{transform:scale(2.3);opacity:0}}
.pre-core{width:150px;height:150px}
.pre-mark{width:108px;height:108px;padding:10px}
.pre.is-welcome .pre-mark{animation:prePop .8s var(--ease) both}
.pre.is-welcome .pre-ring{animation-duration:.6s;filter:drop-shadow(0 0 16px rgba(255,90,100,.8))}
.pre.is-welcome .pre-ripple{animation-duration:.9s}
@keyframes prePop{0%{transform:scale(1)}45%{transform:scale(1.18)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){html.pre-on .pre{display:none}}

/* ---- v1.1.16 ---- */
/* hero photo on phones too, a little extra dulling so text stays readable */
@media (max-width:700px){
 .hero::before{background:linear-gradient(180deg,rgba(5,7,11,.5) 0%,rgba(5,7,11,0) 20%),linear-gradient(rgba(10,18,36,.42),rgba(10,18,36,.42)),var(--hero-img) 60% 0/auto 520px no-repeat}
}
/* Request a Quote (ghost) button: always readable, also on hover */
.btn-ghost{color:#fff;background:rgba(10,18,34,.5);border-color:rgba(255,255,255,.75)}
.btn-ghost:hover,.btn-ghost:focus-visible{background:#fff;color:#0a1a38;border-color:#fff}
/* logo: a little more room now the emblem and the letters are spaced */
.brand{width:150px}
@media (max-width:900px){.brand{width:140px}}
.brand .b-full{width:auto}
/* map links: calm and steady, not a launch trajectory */
.gmap-arcs path{stroke:rgba(170,210,248,.55);stroke-width:1.3;stroke-dasharray:none;filter:drop-shadow(0 0 5px rgba(93,180,242,.45));animation:linkbreath 6s ease-in-out infinite}
.gmap-arcs path:nth-of-type(2){animation-delay:1.5s}.gmap-arcs path:nth-of-type(3){animation-delay:3s}
@keyframes linkbreath{0%,100%{opacity:.25}50%{opacity:.8}}
.pin i::after{animation-duration:3.6s}
.pin .beam{opacity:.55}
/* theme switch */
.theme-toggle{flex:none;display:inline-grid;place-items:center;width:44px;height:44px;margin-left:.5rem;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.12);color:#fff;cursor:pointer;padding:0;transition:background .2s,transform .2s}
.theme-toggle:hover{background:rgba(255,255,255,.24);transform:rotate(18deg)}
.theme-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.theme-toggle .i-moon{display:none}
@media (max-width:900px){.theme-toggle{margin-left:auto;margin-right:.5rem}.burger{margin-left:0}}

/* ---- v1.1.17 ---- */
/* map: a little livelier. Soft light travels along each link in both directions, pins ripple faster */
.gmap-arcs path{stroke:rgba(170,210,248,.7);stroke-width:1.5;animation-duration:4.5s}
@keyframes linkbreath{0%,100%{opacity:.4}50%{opacity:1}}
.lk-dot{fill:#fff;filter:drop-shadow(0 0 5px #7fc4ff) drop-shadow(0 0 10px rgba(93,180,242,.9))}
.lk-dot2{fill:#ffd9db;filter:drop-shadow(0 0 5px #ff8a90) drop-shadow(0 0 10px rgba(255,90,100,.8))}
.pin i::after{animation-duration:2.4s}
.pin-ho i::before{content:"";position:absolute;inset:-12px;border-radius:50%;border:2px solid rgba(93,180,242,.8);opacity:0;animation:pinpulse 2.4s var(--ease) 1.2s infinite}
.pin .beam{opacity:.8;animation:beamglow 3.2s ease-in-out infinite}
@keyframes beamglow{0%,100%{opacity:.45}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){.lk-dot{display:none}.pin .beam,.pin-ho i::before{animation:none}}
/* theme switch: circular wipe from the button (browsers with view transitions), soft fade elsewhere */
::view-transition-old(root),::view-transition-new(root){animation-duration:.5s;animation-timing-function:cubic-bezier(.4,0,.2,1);mix-blend-mode:normal}
.theme-toggle svg{transition:transform .5s var(--ease),opacity .3s}
.theme-toggle.is-spin svg{animation:themeSpin .5s var(--ease)}
@keyframes themeSpin{0%{transform:rotate(-60deg) scale(.6);opacity:0}100%{transform:none;opacity:1}}

/* ---- v1.1.20: map shows presence, not movement between countries ---- */
.gmap-arcs,.lk-dot{display:none}
.gl-mkglow,.gl-hqglow{animation:landBreath 5s ease-in-out infinite}
.gl-hqglow{animation-delay:1.2s}
@keyframes landBreath{0%,100%{opacity:.55}50%{opacity:1}}
.pin i::after,.pin-ho i::before{border-width:1.5px;animation:presence 3.6s cubic-bezier(.2,.6,.3,1) infinite}
.pin-ho i::before{animation-delay:1.8s}
.pin-ho i::after{animation-delay:0s}
.pin-pakistan i::after{animation-delay:.6s}.pin-saudi-arabia-ksa i::after,.pin-saudi-arabia i::after{animation-delay:1.4s}.pin-uganda i::after{animation-delay:2.2s}
.pin i::after,.pin-ho i::before{inset:-6px}
@keyframes presence{0%{transform:scale(.6);opacity:.9}100%{transform:scale(3.4);opacity:0}}
.pin .beam{animation:beamglow 4.5s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.gl-mkglow,.gl-hqglow{animation:none}}

/* ================= v1.1.22: phones (desktop and tablet untouched) ================= */
@media (max-width:700px){
 body{font-size:.95rem}
 .s{padding-block:2.1rem}
 .s-head{margin-bottom:1rem}
 h2{font-size:1.45rem}
 .s-head .sub{font-size:.92rem;margin-bottom:0}
 /* header: logo left, theme switch and menu grouped on the right */
 .bar{padding:0 .7rem 0 .9rem;gap:0}
 .theme-toggle{margin-left:auto;margin-right:.45rem;width:40px;height:40px}
 .theme-toggle svg{width:18px;height:18px}
 .burger{width:42px;height:42px;margin-left:0}
 /* hero */
 .hero-grid,.hero-grid.solo{padding-block:1.2rem 1.5rem;gap:1.3rem}
 .hero .eyebrow{font-size:.64rem;letter-spacing:.09em;margin-bottom:.6rem;gap:.45rem}
 .hero .eyebrow::before{width:16px;height:2px}
 .hero h1{font-size:clamp(1.85rem,9vw,2.25rem);line-height:1.1;margin-bottom:.3rem}
 .hero .lede{font-size:.93rem;line-height:1.5;margin:.7rem 0 1.1rem}
 .cta{display:flex;flex-wrap:nowrap;gap:.55rem}
 .cta .btn{flex:1 1 0;min-width:0;max-width:none;padding:.72rem .4rem;font-size:.86rem;white-space:nowrap;justify-content:center;text-align:center}
 .feat-wrap{padding:.65rem;border-radius:24px;max-width:none}
 .feat-head{margin-bottom:.5rem}
 .feat-head h2{font-size:1.02rem}
 .feat-nav button{width:34px;height:34px}
 .feat .ph{aspect-ratio:16/8}
 .feat .fp{height:188px;padding:.75rem 1rem .85rem}
 .feat .fp h3{font-size:1.02rem}
 .feat .fp p{font-size:.86rem;line-height:1.42;-webkit-line-clamp:3}
 /* core services: two across, compact */
 .core{grid-template-columns:1fr 1fr;gap:.65rem}
 .core .card{border-radius:18px}
 .core .card .ph{margin:5px 5px 0;border-radius:13px;aspect-ratio:4/3}
 .core .card .body{padding:.6rem .75rem .8rem}
 .core .card h3{font-size:.95rem;margin-bottom:.25rem}
 .core .card p{font-size:.78rem;line-height:1.4;margin:0 0 .35rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
 .core .card .go,.core .card .more{font-size:.82rem}
 /* service list cards: shorter picture, tighter text */
 .cards{gap:.8rem}
 .cards .card .ph{aspect-ratio:16/8;margin:6px 6px 0}
 .cards .card .body{padding:.75rem 1rem .95rem}
 .cards .card h3{font-size:1.02rem;margin-bottom:.25rem}
 .cards .card p{font-size:.86rem;margin:0 0 .5rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
 .chip{padding:.4rem .75rem;font-size:.82rem}
 /* industries: two across, name only (tap opens the sheet) */
 .indgrid{grid-template-columns:1fr 1fr;gap:.55rem}
 .ind-card{padding:.7rem .8rem;border-radius:16px;min-height:0}
 .ind-card .n{font-size:.86rem;line-height:1.25;margin:0}
 .ind-card .d{display:none}
 /* steps: 2 x 2 */
 .steps{grid-template-columns:1fr 1fr;gap:.65rem}
 .steps li{padding:.85rem .9rem 1rem;border-radius:18px}
 .steps h3{font-size:.98rem;margin-bottom:.25rem}
 .steps p{font-size:.8rem;line-height:1.4;margin:0}
 /* map */
 .gmap{margin:.2rem auto .8rem}
 .gmap-stage{padding-top:48%;margin-top:-.6rem}
 .gmap-stats>div{padding:.65rem .5rem}
 .gmap-stats strong{font-size:1.3rem}
 .gmap-stats span{font-size:.62rem}
 .regions li{font-size:.85rem;padding:.35rem .8rem}
 /* contact form */
 .quote-form{padding:1.1rem;border-radius:24px}
 .quote-form label{font-size:.66rem;margin-bottom:.25rem}
 input,select,textarea{padding:.62rem .8rem;font-size:1rem}
 textarea{min-height:110px}
 .banner>.wrap{padding:1rem 1.1rem 1.1rem}
 .banner h1{font-size:1.6rem}
 /* footer */
 footer.site{padding-top:1.6rem}
 .foot-grid{grid-template-columns:1fr 1fr;gap:1.1rem 1rem;padding:1.3rem 1.2rem;border-radius:26px}
 .foot-grid>*:first-child,.foot-grid>*:last-child{grid-column:1/-1}
 footer li{margin:.25rem 0;font-size:.9rem}
 .foot-logo{height:60px}
 .legal{padding-block:1rem;font-size:.8rem}
}
/* theme switch on phones: a quick dip through the new colour (no page snapshot, so the header never glitches) */


/* phones: show the photo at a natural size across the top (not blown up to the full hero height) and fade it into the dark glass below */
@media (max-width:700px){
 .hero::before{-webkit-mask-image:linear-gradient(180deg,#000 0,#000 40%,transparent 62%);mask-image:linear-gradient(180deg,#000 0,#000 40%,transparent 62%)}
}

/* phones: no motion at all on the theme switch (colours change at once) */
@media (max-width:900px){.theme-toggle.is-spin svg{animation:none}.theme-toggle:hover{transform:none}}

/* the welcome screen hides the page scrollbar; keep its space reserved so the page does not jump left when it ends */
@media (min-width:901px){html{scrollbar-gutter:stable}}

/* no sideways jump when the welcome screen ends: keep room for the scrollbar the whole time */
html{scrollbar-gutter:stable}

/* ================= v1.1.28: full-width featured services slideshow ================= */
.hero{min-height:clamp(560px,38vw,720px)}
.fshow{padding:clamp(2rem,4vw,3.4rem) 0 0;position:relative}
.fshow-head{margin-bottom:1.3rem}
.fshow-head h2{margin:0}
.fs-stage{position:relative;height:clamp(500px,46vw,680px);overflow:hidden;background:#05070b;isolation:isolate;border-block:1px solid rgba(255,255,255,.1)}
.fs-slide{position:absolute;inset:0;visibility:hidden;transform:translate3d(100%,0,0);z-index:1;overflow:hidden;will-change:transform;backface-visibility:hidden}
.fs-slide.is-prev{visibility:visible;transform:translate3d(-26%,0,0);z-index:1;transition:transform 1.1s cubic-bezier(.65,0,.35,1)}
.fs-stage.is-back .fs-slide.is-prev{transform:translate3d(26%,0,0)}
.fs-slide.is-active{visibility:visible;transform:translate3d(0,0,0);z-index:2;transition:transform 1.1s cubic-bezier(.65,0,.35,1)}
.fs-slide.no-anim{transition:none!important}
.fs-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--pd,50% 50%);transform:scale(1.08);will-change:transform;backface-visibility:hidden}
.fs-slide.is-active .fs-img{animation:fsZoom 9s cubic-bezier(.25,.6,.3,1) forwards}
@keyframes fsZoom{from{transform:scale(1.08)}to{transform:scale(1)}}
.fs-slide::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(4,10,28,.82) 0%,rgba(4,10,28,.5) 42%,rgba(4,10,28,.08) 78%),linear-gradient(0deg,rgba(4,10,28,.78) 0%,rgba(4,10,28,0) 46%)}
.fs-copy{position:absolute;z-index:3;left:max(1.4rem,calc((100% - 1180px)/2));bottom:calc(84px + clamp(1.2rem,3vw,2.4rem));max-width:min(560px,86%);color:#fff}
.fs-in{opacity:0;transform:translateY(26px);transition:opacity .5s ease,transform .5s ease}
.fs-slide.is-active .fs-in{opacity:1;transform:none;transition:opacity .9s ease var(--d,.4s),transform .9s cubic-bezier(.2,.7,.2,1) var(--d,.4s)}
.fs-count{display:inline-block;font:600 .8rem ui-monospace,Menlo,Consolas,monospace;letter-spacing:.14em;color:#cfe3f8;margin-bottom:.7rem}
.fs-count b{color:#fff;font-size:1rem}
.fs-copy h3{font-size:clamp(1.9rem,3.8vw,3.3rem);line-height:1.08;margin:0 0 .6rem;color:#fff;letter-spacing:-.015em;text-shadow:0 1px 3px rgba(0,0,0,.4)}
.fs-copy p{font-size:clamp(.98rem,1.25vw,1.15rem);line-height:1.55;color:#e4edf8;margin:0 0 1.2rem;max-width:48ch}
.fs-copy .btn{display:inline-flex}
/* bottom bar: four tabs, each with a progress line */
.fs-bar{position:absolute;z-index:4;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(4,1fr);height:84px;background:linear-gradient(0deg,rgba(5,9,18,.94),rgba(5,9,18,.72));border-top:1px solid rgba(255,255,255,.14)}
.fs-tab{position:relative;display:flex;flex-direction:column;justify-content:center;gap:.15rem;text-align:left;padding:0 clamp(.8rem,2vw,1.8rem);background:none;border:0;border-left:1px solid rgba(255,255,255,.1);color:#9fb0c4;cursor:pointer;font:inherit;transition:color .3s,background .3s}
.fs-tab:first-child{border-left:0}
.fs-tab:hover{color:#fff;background:rgba(255,255,255,.05)}
.fs-n{font:600 .74rem ui-monospace,Menlo,Consolas,monospace;letter-spacing:.14em}
.fs-t{font-weight:700;font-size:clamp(.88rem,1.2vw,1.05rem);line-height:1.2}
.fs-prog{position:absolute;left:0;top:-1px;height:3px;width:100%;background:rgba(255,255,255,.12);overflow:hidden}
.fs-prog::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#3090d8,#d10008);transform:scaleX(0);transform-origin:left}
.fs-tab.is-active{color:#fff}
.fs-tab.is-active .fs-prog::after{animation:fsProg var(--dur,7s) linear forwards}
.fs-stage.is-still .fs-tab.is-active .fs-prog::after{animation:none;transform:scaleX(1)}
@keyframes fsProg{to{transform:scaleX(1)}}
.fs-arrows{position:absolute;z-index:4;right:max(1.4rem,calc((100% - 1180px)/2));bottom:calc(84px + clamp(1.2rem,3vw,2.4rem));display:flex;gap:.6rem}
.fs-arrows button{width:50px;height:50px;border-radius:50%;border:1px solid rgba(255,255,255,.4);background:rgba(20,28,44,.55);color:#fff;font-size:1.5rem;line-height:1;cursor:pointer;transition:background .25s,transform .25s}
.fs-arrows button:hover{background:var(--red);border-color:var(--red);transform:scale(1.06)}
@media (max-width:900px){
 .fs-stage{height:clamp(500px,120vw,640px)}
 .fs-img{object-position:var(--pm,50% 50%)}
 .fs-slide::after{background:linear-gradient(0deg,rgba(4,10,28,.92) 0%,rgba(4,10,28,.55) 48%,rgba(4,10,28,.1) 85%)}
 .fs-arrows{display:none}
}
@media (max-width:700px){
 .fshow{padding-top:1.6rem}
 .fs-bar{height:62px}
 .fs-t{display:none}
 .fs-tab{align-items:center}
 .fs-n{font-size:.9rem}
 .fs-copy{bottom:calc(62px + 1.3rem);left:1.1rem;right:1.1rem;max-width:none}
 .fs-copy h3{font-size:1.75rem}
 .fs-copy p{font-size:.92rem;margin-bottom:1rem;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
 .fs-copy .btn{padding:.7rem 1.1rem;font-size:.9rem}
}
@media (prefers-reduced-motion:reduce){
 .fs-slide.is-active,.fs-slide.is-prev,.fs-slide.is-active .fs-in{transition:none}
 .fs-slide.is-active .fs-img{animation:none;transform:scale(1.02)}
 .fs-in{opacity:1;transform:none}
}
html[data-theme=light] .fshow-head h2{color:var(--navy)}
html[data-theme=light] .fs-stage{border-color:rgba(0,45,90,.14)}

/* ---- v1.1.31: the hero is its own screen; featured services is the next one ---- */
.hero{min-height:100vh;min-height:100svh;align-items:flex-start}
.hero-grid,.hero-grid.solo{padding-block:5rem 3rem}
.fshow{padding-top:clamp(3.5rem,8vw,6.5rem)}
@media (max-width:700px){
 .hero{align-items:center}
 .hero-grid,.hero-grid.solo{padding-block:4.5rem 7rem}
 .hero::before{background:linear-gradient(180deg,rgba(5,7,11,.5) 0%,rgba(5,7,11,0) 20%),linear-gradient(rgba(10,18,36,.42),rgba(10,18,36,.42)),var(--hero-img) 60% 0/auto 600px no-repeat;
  -webkit-mask-image:linear-gradient(180deg,#000 0,#000 52%,transparent 78%);mask-image:linear-gradient(180deg,#000 0,#000 52%,transparent 78%)}
}
/* slideshow images: no zoom (it jumped back when a slide left), nothing to re-draw while sliding */
.fs-img{transform:none!important;animation:none!important;will-change:auto}

/* ================= v1.1.32: no seams, text that stays put, screen-size aware ================= */
/* hero never depends on a changing viewport: fixed fallback height, then the stable small-viewport height */
.hero{min-height:620px}
@supports (min-height:100svh){.hero{min-height:100svh}}
/* phones: text is anchored to the top (it can no longer drift when the browser bars hide), and the photo layer
   is exactly as tall as the photo and fades to nothing at its own bottom edge, so there is no line in dark or light mode */
@media (max-width:700px){
 .hero{align-items:flex-start;background:none!important}
 .hero-grid,.hero-grid.solo{padding-block:1.6rem 3rem}
 .hero::before{inset:0 0 auto 0;height:660px;
  background:linear-gradient(180deg,rgba(5,7,11,.5) 0%,rgba(5,7,11,0) 20%),linear-gradient(rgba(10,18,36,.42),rgba(10,18,36,.42)),var(--hero-img) 60% 0/auto 660px no-repeat;
  -webkit-mask-image:linear-gradient(180deg,#000 0,#000 66%,transparent 100%);mask-image:linear-gradient(180deg,#000 0,#000 66%,transparent 100%)}
}
/* laptops (13 to 15 inch, or any short window): everything scales down so the page is not "zoomed in" */
@media (min-width:901px) and (max-width:1535px),(min-width:901px) and (max-height:760px){
 html{font-size:14.5px}
 header.site{height:84px}
 body.home #main{margin-top:-84px}
 body.home .hero{padding-top:84px}
 .hbar{margin-top:10px}
 .bar{min-height:62px}
 .is-shrunk .bar{min-height:52px}
 .brand{height:42px;width:128px}
 .brand .b-full{height:34px;padding:3px 12px}
 .brand .b-mark{width:38px;height:38px}
 .is-shrunk .brand{width:38px;height:38px}
 .bar-cta{min-height:40px}
 .is-shrunk .bar-cta{min-height:36px}
 .theme-toggle{width:38px;height:38px}
 .hero-grid,.hero-grid.solo{padding-block:3rem 2rem}
 .hero h1{font-size:clamp(2rem,min(4.2vw,7.4vh),3.7rem)}
 .hero .lede{font-size:1rem;margin:.9rem 0 1.2rem}
 .hero .eyebrow{margin-bottom:.7rem}
 .fs-stage{height:clamp(420px,min(44vw,76vh),620px)}
 .fs-bar{height:72px}
 .fs-copy,.fs-arrows{bottom:calc(72px + 1.6rem)}
}
/* very large monitors: a little more room instead of a small island of content */
@media (min-width:2200px){
 html{font-size:18px}
 :root{--wrap:1360px}
}

/* ---- v1.1.33: phone hero text is centred again; the hero height is fixed at load so it cannot drift ---- */
@media (max-width:700px){
 .hero{align-items:center;min-height:var(--hero-h,100svh)}
 .hero-grid,.hero-grid.solo{padding-block:.6rem 2.4rem}
}


/* ---- v1.1.34: preloader plays the AISTACS emblem animation once ---- */
.pre-core{width:min(50vw,236px);height:min(50vw,236px)}
.pre-halo{inset:-45%;background:radial-gradient(closest-side,rgba(48,144,216,.16),rgba(48,144,216,.06) 50%,transparent 78%)}
.pre-emb{position:relative;display:block;width:100%;height:100%;object-fit:contain;filter:none}
.pre.is-welcome .pre-halo{animation:preFlash .7s ease-out both}
@keyframes preFlash{0%{opacity:.5;transform:scale(.9)}45%{opacity:1;transform:scale(1.18)}100%{opacity:.6;transform:scale(1.05)}}
html:not([data-theme=light]) .pre-emb{filter:none}

/* ---- v1.1.36: the sea is drawn by a small WebGL ripple (main.js); this is just its host ---- */
.hero-water{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.hero-water canvas{position:absolute;left:0;display:block;width:100%}

.hero::before{-webkit-clip-path:var(--seaclip,none);clip-path:var(--seaclip,none)}

/* Standards groups (ISO Certification) */
.std-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px;margin:18px 0}
.std-group{padding:16px 18px;border-radius:14px;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.05);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.prose .std-group h3{margin:0 0 8px;font-size:.95rem}
.prose .std-group ul{margin:0;padding-left:1.1em}
.prose .std-group li{margin:3px 0;font-size:.92rem}
