/* ═══════════════════════════════════════════════════════════════
   SKYFLEX 2 — one design system.
   Cinematic industrial: real deliverable renders, annotated data,
   restrained precise motion. Tokens drive everything.
   ═══════════════════════════════════════════════════════════════ */

/* ---------- 0. Tokens ---------- */
:root{
  --ink:#0E1726;          /* near-black, blue-biased */
  --ink-2:#3D4C63;        /* muted body on light */
  --paper:#FFFFFF;        /* light section ground */
  --paper-2:#EFF3F8;      /* alt light ground */
  --navy:#0B1322;         /* dark section ground */
  --navy-2:#101B2E;       /* raised dark surface */
  --line:rgba(14,23,38,.12);
  --line-inv:rgba(255,255,255,.10);
  --accent:#2E7FD6;
  --accent-deep:#2368B4;
  --data:#7FC0FF;         /* mono/data text on dark */
  --white:#FFFFFF;
  --text-inv:#E8F0FA;
  --text-inv-2:rgba(216,229,244,.78);
  --elev:linear-gradient(90deg,#2563EB 0%,#22C1A0 34%,#EAB308 67%,#EF4444 100%); /* LiDAR elevation ramp */
  --sans:'Inter',ui-sans-serif,system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  --disp:'Space Grotesk',var(--sans);
  --mono:ui-monospace,'SF Mono',SFMono-Regular,Menlo,Consolas,monospace;
  --ease:cubic-bezier(.16,1,.3,1);
  --r-sm:10px; --r-md:14px; --r-lg:18px;
  --shadow-stage:0 34px 90px -34px rgba(2,8,18,.7);
  --shadow-card:0 14px 44px -18px rgba(10,22,40,.28);
  --wrap:1200px;
  --pad:clamp(20px,4.5vw,44px);
  --header-h:76px;
}

/* ---------- 1. Reset / base ---------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
html,body{overflow-x:clip;}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto;}}
body{margin:0;font:400 16.5px/1.65 var(--sans);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;}
img{max-width:100%;height:auto;display:block;}
a{color:var(--accent);text-decoration:none;}
a:hover{color:var(--accent-deep);}
button{font:inherit;cursor:pointer;}
h1,h2,h3,h4{font-family:var(--disp);font-weight:600;line-height:1.08;letter-spacing:-.015em;color:var(--ink);margin:0;}
p{margin:0 0 1em;}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px;}
[id]{scroll-margin-top:calc(var(--header-h) + 12px);}
.screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
.sx-wrap{max-width:var(--wrap);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad);}

/* ---------- 2. Type roles ---------- */
.sx-h1{font-size:clamp(2.5rem,1.35rem + 4.2vw,4.4rem);line-height:1.03;}
.sx-h2{font-size:clamp(1.95rem,1.25rem + 2.3vw,2.9rem);}
.sx-h3{font-size:clamp(1.3rem,1.1rem + .8vw,1.7rem);}
.sx-lede{font-size:clamp(1.05rem,.98rem + .4vw,1.24rem);line-height:1.6;color:var(--ink-2);max-width:56ch;}
.sx-label{display:inline-block;font:700 12px/1.4 var(--sans);letter-spacing:.15em;text-transform:uppercase;color:var(--accent);}
.sx-label::after{content:"";display:block;width:30px;height:2px;margin-top:7px;background:var(--elev);border-radius:1px;}
.sx-on-dark .sx-h1,.sx-on-dark .sx-h2,.sx-on-dark .sx-h3{color:var(--white);}
.sx-on-dark .sx-lede{color:var(--text-inv-2);}
.sx-mono{font-family:var(--mono);font-size:.86em;letter-spacing:.01em;}

/* ---------- 3. Buttons ---------- */
.sx-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 27px;
  border-radius:var(--r-sm);border:0;background:var(--accent-deep);color:#fff !important;font:600 15.5px/1.2 var(--sans);
  transition:background .25s var(--ease),transform .25s var(--ease),box-shadow .25s var(--ease);}
.sx-btn:hover{background:#1C5490;}
.sx-btn:active{transform:scale(.97);}
.sx-btn--ghost{background:rgba(10,17,28,.55);border:1px solid rgba(255,255,255,.5);color:#fff !important;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);}
.sx-btn--ghost:hover{background:rgba(10,17,28,.72);border-color:rgba(255,255,255,.72);}
.sx-btn--light{background:#fff;color:var(--ink) !important;}
.sx-btn--light:hover{background:var(--paper-2);}
.sx-btn--line{background:transparent;border:1.5px solid var(--line);color:var(--ink) !important;}
.sx-btn--line:hover{border-color:var(--ink-2);background:#fff;}

/* ---------- 4. Header ---------- */
.sx-header{position:fixed;inset:0 0 auto 0;z-index:60;height:var(--header-h);display:flex;align-items:center;
  background:linear-gradient(180deg,rgba(6,11,20,.72) 0%,rgba(6,11,20,.28) 70%,transparent 100%);
  transition:background .35s var(--ease),box-shadow .35s var(--ease);}
.sx-header.is-solid{background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  box-shadow:0 1px 0 var(--line),0 14px 40px -26px rgba(10,22,40,.18);}
.sx-header.is-solid .sx-brand{color:var(--ink) !important;}
.sx-header.is-solid .sx-nav a{color:var(--ink-2) !important;}
.sx-header.is-solid .sx-nav a:hover{background:var(--paper-2);color:var(--ink) !important;}
.sx-header.is-solid .sx-nav .current-menu-item > a,.sx-header.is-solid .sx-nav .current_page_item > a{background:var(--paper-2);color:var(--ink) !important;}
.sx-header.is-solid .sx-nav-toggle{border-color:var(--line);background:var(--paper-2);}
.sx-header.is-solid .sx-nav-toggle span{background:var(--ink);}
.sx-header__row{display:flex;align-items:center;gap:26px;width:100%;}
.sx-brand{display:inline-flex;align-items:center;color:#fff !important;font:700 19px/1 var(--disp);letter-spacing:.14em;
  border:2px solid currentColor;border-radius:3px;padding:8px 14px 7px;}
.sx-brand span{transform:translateY(.5px);}
.sx-nav{margin-left:auto;}
.sx-nav ul{display:flex;align-items:center;gap:4px;list-style:none;margin:0;padding:0;}
.sx-nav a{display:inline-block;padding:9px 14px;border-radius:9px;color:rgba(228,238,250,.88) !important;font:500 15px/1.2 var(--sans);transition:background .2s var(--ease),color .2s var(--ease);}
.sx-nav a:hover{background:rgba(255,255,255,.1);color:#fff !important;}
.sx-nav .current-menu-item > a,.sx-nav .current_page_item > a{background:rgba(255,255,255,.13);color:#fff !important;}
.sx-nav .sub-menu{display:none;}
.sx-header__cta{flex:none;}
.sx-nav-toggle{display:none;flex:none;width:46px;height:46px;border:1px solid var(--line-inv);border-radius:10px;background:rgba(255,255,255,.06);}
.sx-nav-toggle span{display:block;width:20px;height:2px;margin:4px auto;background:#fff;border-radius:1px;transition:transform .3s var(--ease),opacity .3s var(--ease);}
/* MOBILE DRAWER SCROLL FIX — 100dvh bounds it to the *visible* viewport (the
   address bar made inset:0 taller than the screen), and the nav below scrolls. */
.sx-mobile{position:fixed;inset:0;height:100dvh;z-index:70;background:rgba(255,255,255,.98);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  display:flex;flex-direction:column;padding:26px;transform:translateX(102%);transition:transform .4s var(--ease);}
.sx-mobile.is-open{transform:none;}
.sx-mobile__top{flex:none;display:flex;align-items:center;justify-content:space-between;}
.sx-mobile .sx-brand{color:var(--ink) !important;}
.sx-mobile__close{width:46px;height:46px;border:1px solid var(--line);border-radius:10px;background:transparent;color:var(--ink);font-size:22px;line-height:1;}
.sx-mobile nav{margin-top:34px;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}
.sx-mobile ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px;}
.sx-mobile a{display:block;padding:15px 10px;border-bottom:1px solid var(--line);color:var(--ink) !important;font:600 21px/1.2 var(--disp);}
.sx-mobile .sx-btn{flex:none;margin-top:26px;margin-bottom:max(0px,env(safe-area-inset-bottom));}
@media(max-width:920px){.sx-nav,.sx-header__cta{display:none;}.sx-nav-toggle{display:block;margin-left:auto;}}

/* ---------- 5. Hero ---------- */
.sx-hero{position:relative;display:flex;align-items:flex-end;overflow:hidden;background:linear-gradient(118deg,#0b131f 0%,#15223a 52%,#2a4266 100%);}
.sx-hero--tall{min-height:max(600px,92svh);}
.sx-hero--page{min-height:clamp(400px,52vh,560px);}
.sx-hero__bg{position:absolute;left:0;right:0;top:-12%;height:124%;z-index:0;background-size:cover;background-position:var(--hero-pos,60% 40%);background-repeat:no-repeat;will-change:transform;}
.sx-hero__bg::after{content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,rgba(6,11,20,.62) 0%,rgba(6,11,20,.42) 30%,rgba(6,11,20,.18) 55%,rgba(6,11,20,0) 78%),
             linear-gradient(180deg,rgba(6,11,20,.4) 0%,rgba(6,11,20,0) 22%),
             linear-gradient(180deg,rgba(6,11,20,0) 46%,rgba(6,11,20,.66) 100%);}
.sx-hero__grid{position:absolute;inset:0;z-index:1;pointer-events:none;
  background-image:linear-gradient(rgba(125,175,225,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(125,175,225,.05) 1px,transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:linear-gradient(105deg,#000 0%,rgba(0,0,0,.4) 52%,transparent 82%);
          mask-image:linear-gradient(105deg,#000 0%,rgba(0,0,0,.4) 52%,transparent 82%);}
.sx-hero__inner{position:relative;z-index:2;width:100%;padding-top:calc(var(--header-h) + clamp(30px,7vh,90px));padding-bottom:clamp(28px,5vh,54px);}
.sx-hero .sx-label{color:rgba(210,228,246,.92);text-shadow:0 1px 8px rgba(4,8,14,.6);}
.sx-hero__title{color:#fff;max-width:19ch;margin-top:16px;
  text-shadow:0 1px 2px rgba(4,8,14,.7),0 2px 14px rgba(4,8,14,.5),0 6px 40px rgba(4,8,14,.4);}
.sx-hero__sub{margin:19px 0 0;font-size:clamp(1.04rem,.96rem + .42vw,1.24rem);line-height:1.58;color:#E9F0F9;max-width:47ch;
  text-shadow:0 1px 2px rgba(4,8,14,.62),0 2px 16px rgba(4,8,14,.45);}
.sx-hero__actions{margin-top:29px;display:flex;flex-wrap:wrap;align-items:center;gap:13px 20px;}
.sx-hero__crumb,.sx-hero .breadcrumb{position:relative;z-index:2;font-size:13.5px;color:rgba(212,227,243,.85);}
.sx-hero .breadcrumb a{color:rgba(212,227,243,.85);}
.sx-hero .breadcrumb a:hover{color:#fff;}
.sx-hero .breadcrumb-sep{margin:0 7px;color:rgba(212,227,243,.45);}
/* credential chips (mono, industrial) */
.sx-chips{display:flex;flex-wrap:wrap;gap:9px 22px;margin-top:30px;padding-top:19px;border-top:1px solid rgba(255,255,255,.16);}
.sx-chip{display:inline-flex;align-items:center;gap:8px;font:600 11.5px/1.4 var(--sans);letter-spacing:.09em;text-transform:uppercase;color:rgba(222,234,247,.92);text-shadow:0 1px 6px rgba(4,8,14,.6);}
.sx-chip::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 9px rgba(90,169,255,.8);}


/* ---------- 6. Reveal system (one, with failsafes) ---------- */
html.sx-anim .sx-r{opacity:0;transform:translateY(24px);transition:opacity .65s var(--ease),transform .65s var(--ease);transition-delay:var(--d,0ms);}
html.sx-anim .sx-r.in{opacity:1;transform:none;}
@media(prefers-reduced-motion:reduce){html.sx-anim .sx-r{opacity:1;transform:none;transition:none;}}

/* ---------- 7. Sections ---------- */
.sx-sec{padding:clamp(72px,9.5vw,128px) 0;}
.sx-sec--dark{background:var(--navy);}
.sx-sec--alt{background:var(--paper-2);}
.sx-sec__head{max-width:760px;margin-bottom:clamp(34px,5vw,58px);}
.sx-sec__head .sx-h2{margin-top:13px;}
.sx-sec__head .sx-lede{margin-top:15px;}

/* ---------- 8. Annotated deliverable stage (signature) ---------- */
.sx-stage{position:relative;margin:0;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);box-shadow:0 26px 70px -30px rgba(10,22,40,.35);background:#0a1220;}
.sx-stage::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--elev);z-index:5;opacity:.85;}
.sx-stage img{width:100%;height:auto;display:block;}
.sx-stage__scan{position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(130,185,240,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(130,185,240,.05) 1px,transparent 1px);background-size:42px 42px;}
.sx-pin{position:absolute;display:flex;align-items:center;z-index:4;transform:translateY(-50%);pointer-events:none;}
.sx-pin--left{flex-direction:row-reverse;}
.sx-pin__dot{position:relative;flex:none;width:11px;height:11px;border-radius:50%;background:#5aa9ff;box-shadow:0 0 0 4px rgba(90,169,255,.22),0 0 14px rgba(90,169,255,.85);
  opacity:0;transform:scale(.35);transition:opacity .3s ease,transform .35s var(--ease);}
.sx-pin__dot::after{content:"";position:absolute;inset:-3px;border-radius:50%;border:1px solid rgba(90,169,255,.6);animation:sxPulse 2.6s ease-out infinite;}
.sx-pin__conn{flex:none;height:1.5px;width:0;background:linear-gradient(90deg,rgba(90,169,255,.95),rgba(90,169,255,.35));transition:width .55s var(--ease);}
.sx-pin--right .sx-pin__conn{margin-left:3px;}
.sx-pin--left .sx-pin__conn{margin-right:3px;background:linear-gradient(270deg,rgba(90,169,255,.95),rgba(90,169,255,.35));}
.sx-pin__tag{flex:none;background:rgba(8,13,22,.84);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);
  border:1px solid rgba(120,170,225,.32);border-radius:9px;padding:7px 12px;white-space:nowrap;
  opacity:0;transform:translateX(-7px);transition:opacity .45s ease,transform .45s var(--ease);}
.sx-pin--left .sx-pin__tag{transform:translateX(7px);text-align:right;}
.sx-pin__tag b{display:block;font:700 11px/1.25 var(--sans);letter-spacing:.03em;color:#fff;}
.sx-pin__tag em{display:block;font-family:var(--mono);font-style:normal;font-size:12px;color:var(--data);margin-top:3px;}
.sx-stage.is-on .sx-pin__dot{opacity:1;transform:none;transition-delay:calc(var(--i,0)*.14s);}
.sx-stage.is-on .sx-pin__conn{width:clamp(30px,3.6vw,58px);transition-delay:calc(var(--i,0)*.14s + .12s);}
.sx-stage.is-on .sx-pin__tag{opacity:1;transform:none;transition-delay:calc(var(--i,0)*.14s + .32s);}
@keyframes sxPulse{0%{transform:scale(1);opacity:.65}100%{transform:scale(2.7);opacity:0}}
.sx-stage__list{display:none;list-style:none;margin:20px 0 0;padding:0;}
@media(prefers-reduced-motion:reduce){.sx-pin__conn{transition:none}.sx-pin__tag,.sx-pin__dot{opacity:1;transform:none}.sx-pin__dot::after{animation:none}}
@media(max-width:820px){
  .sx-pin__conn,.sx-pin__tag{display:none;}
  .sx-pin__dot{opacity:1;transform:none;}
  .sx-stage__list{display:block;border-top:1px solid var(--line-inv);}
  .sx-stage__list li{display:flex;align-items:baseline;gap:11px;padding:12px 2px;border-bottom:1px solid var(--line-inv);}
  .sx-stage__list li::before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px rgba(90,169,255,.7);transform:translateY(-1px);}
  .sx-stage__list b{font:700 14px/1.3 var(--sans);color:#fff;}
  .sx-stage__list em{font-family:var(--mono);font-style:normal;font-size:13px;color:var(--data);margin-left:auto;text-align:right;}
}
.sx-stage-cap{margin:14px 2px 0;font-size:13.5px;color:var(--ink-2);}
/* Full-bleed parallax stage — WINDOW model: the figure is a fixed-height
   viewport; the unscaled image layer (with its pins, feature-locked) travels
   vertically behind it. No upscaling = native sharpness. */
.sx-stage--bleed{width:100vw;position:relative;left:50%;margin-left:-50vw;border-radius:0;border-left:0;border-right:0;}
@media(min-width:821px){
  .sx-stage--bleed{height:clamp(480px,74vh,780px);}
  .sx-stage--bleed .sx-stage__plx{position:absolute;left:0;right:0;top:0;will-change:transform;}
}
.sx-stage__plx{position:relative;}
.sx-stage--bleed::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:5;
  box-shadow:inset 0 26px 34px -26px rgba(2,8,18,.55),inset 0 -26px 34px -26px rgba(2,8,18,.55);}
@media(prefers-reduced-motion:reduce){.sx-stage__plx{transform:none !important;}}

/* ---------- 9. Cards ---------- */
.sx-grid{display:grid;gap:24px;grid-template-columns:repeat(12,1fr);}
.sx-grid > *{grid-column:span 4;}
.sx-grid > .is-wide{grid-column:span 6;}
.sx-grid > .is-full{grid-column:1/-1;}
@media(max-width:980px){.sx-grid > *,.sx-grid > .is-wide{grid-column:span 6;}}
@media(max-width:640px){.sx-grid > *,.sx-grid > .is-wide{grid-column:1/-1;}}
.sx-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;
  transition:transform .3s var(--ease),box-shadow .3s var(--ease);}
.sx-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-card);}
.sx-card:active{transform:scale(.99);}
.sx-card__media{display:block;width:100%;aspect-ratio:16/10;background-size:cover;background-position:center;transition:transform .5s var(--ease);}
.sx-card:hover .sx-card__media{transform:scale(1.05);}
.sx-card__media-clip{overflow:hidden;flex:none;}
.sx-card__body{display:flex;flex-direction:column;flex:1;padding:22px 24px 24px;}
.sx-card__title{font-size:19px;color:var(--ink);}
.sx-card__desc{margin:9px 0 16px;font-size:14.5px;line-height:1.6;color:var(--ink-2);flex:1;}
.sx-card__go{display:inline-flex;align-items:center;gap:7px;font:600 14px/1 var(--sans);color:var(--accent);}
.sx-card__go svg{transition:transform .25s var(--ease);}
.sx-card:hover .sx-card__go svg{transform:translateX(3px);}
/* dark photo tile (industries) */
.sx-tile{position:relative;display:flex;align-items:flex-end;min-height:340px;border-radius:var(--r-md);overflow:hidden;
  background-size:cover;background-position:center;transition:transform .3s var(--ease),box-shadow .3s var(--ease);}
.sx-tile::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,13,22,.05) 30%,rgba(8,13,22,.82) 100%);}
.sx-tile:hover{transform:translateY(-4px);box-shadow:var(--shadow-stage);}
.sx-tile__body{position:relative;z-index:1;display:block;padding:22px 24px;}
.sx-tile__title{display:block;color:#fff;font-size:22px;font-family:var(--disp);font-weight:600;letter-spacing:-.015em;}
.sx-tile__desc{display:block;margin:7px 0 0;font-size:14.5px;line-height:1.55;color:rgba(226,236,248,.88);}

/* ---------- 10. Spec rows / index rows ---------- */
.sx-spec{list-style:none;margin:22px 0 0;padding:0;border-top:1px solid var(--line-inv);}
.sx-spec li{display:flex;gap:16px;align-items:baseline;padding:13px 2px;border-bottom:1px solid var(--line-inv);}
.sx-spec .k{flex:none;width:118px;font:700 11px/1.5 var(--sans);letter-spacing:.11em;text-transform:uppercase;color:var(--data);}
.sx-spec .v{font-size:15.5px;color:var(--text-inv);}
.sx-sec--light .sx-spec{border-color:var(--line);}
.sx-sec--light .sx-spec li{border-color:var(--line);}
.sx-sec--light .sx-spec .k{color:var(--accent);}
.sx-sec--light .sx-spec .v{color:var(--ink);}
.sx-rows{border-top:1px solid var(--line);}
.sx-row{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr) auto;gap:18px;align-items:center;padding:22px 4px;border-bottom:1px solid var(--line);color:inherit !important;transition:background .2s var(--ease);}
.sx-row:hover{background:#fff;}
.sx-row h3{font-size:20px;}
.sx-row p{margin:0;font-size:14.5px;color:var(--ink-2);}
.sx-row .sx-card__go{justify-self:end;}
@media(max-width:760px){.sx-row{grid-template-columns:1fr;gap:7px;}.sx-row .sx-card__go{justify-self:start;}}

/* ---------- 11. Process (numbered steps) ---------- */
.sx-step{position:relative;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(26px,4.5vw,64px);align-items:center;
  padding:clamp(28px,4vh,44px) 0;border-top:1px solid var(--line);}
.sx-step:first-of-type{border-top:0;padding-top:0;}
.sx-step__num{position:absolute;top:clamp(18px,3vh,30px);right:0;font:700 clamp(52px,7vw,88px)/1 var(--disp);color:var(--accent);opacity:.14;pointer-events:none;}
.sx-step__media{border-radius:var(--r-md);overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow-card);}
.sx-step__media img{width:100%;aspect-ratio:4/3;object-fit:cover;}
.sx-step__label{font:700 11.5px/1.4 var(--sans);letter-spacing:.13em;text-transform:uppercase;color:var(--accent);}
.sx-step__title{margin-top:9px;font-size:clamp(20px,2.3vw,27px);color:var(--ink);}
.sx-step__body{margin:11px 0 0;font-size:15.5px;line-height:1.65;color:var(--ink-2);}
.sx-step__tags{margin-top:13px;font-family:var(--mono);font-size:12.5px;letter-spacing:.02em;color:var(--accent-deep);opacity:.9;}
.sx-step:nth-child(even) .sx-step__media{order:2;}
/* The step number belongs above the TEXT column, never over the image. On the
   reversed rows the media moves right, so the number moves left to follow the copy. */
.sx-step:nth-child(even) .sx-step__num{left:0;right:auto;}
@media(max-width:860px){.sx-step{grid-template-columns:1fr;}.sx-step:nth-child(even) .sx-step__media{order:0;}.sx-step:nth-child(even) .sx-step__num{left:auto;right:0;}}

/* ---------- 12. Content prose + sidebar ---------- */
.sx-content{display:grid;grid-template-columns:minmax(0,8fr) minmax(0,4fr);gap:clamp(30px,4.5vw,64px);align-items:start;}
@media(max-width:980px){.sx-content{grid-template-columns:1fr;}}
.sx-prose{font-size:16.5px;line-height:1.72;color:var(--ink-2);}
.sx-prose h2{font-size:clamp(1.5rem,1.2rem + 1vw,1.95rem);color:var(--ink);margin:1.9em 0 .6em;padding-top:.2em;}
.sx-prose h2:first-child{margin-top:0;}
.sx-prose h2::after{content:"";display:block;width:38px;height:2.5px;margin-top:10px;background:var(--elev);border-radius:2px;}
.sx-prose h3{font-size:1.2rem;color:var(--ink);margin:1.5em 0 .5em;}
.sx-prose ul{list-style:none;margin:0 0 1.2em;padding:0;}
.sx-prose ul li{position:relative;padding:6px 0 6px 32px;}
.sx-prose ul li::before{content:"";position:absolute;left:2px;top:12px;width:15px;height:15px;border-radius:50%;background:rgba(46,127,214,.12);box-shadow:inset 0 0 0 1.5px var(--accent);}
.sx-prose ul li::after{content:"";position:absolute;left:6.2px;top:16px;width:7px;height:4.5px;border-left:1.8px solid var(--accent);border-bottom:1.8px solid var(--accent);transform:rotate(-45deg);}
.sx-prose ol{padding-left:1.3em;}
.sx-prose strong{color:var(--ink);}
.sx-prose blockquote{margin:1.4em 0;padding:4px 0 4px 20px;border-left:3px solid var(--accent);color:var(--ink);font-family:var(--disp);font-size:1.12em;}
.sx-prose dl{margin:0 0 1.6em;}
.sx-prose dt{font-family:var(--disp);font-weight:600;font-size:1.06em;color:var(--ink);padding:14px 0 4px 16px;position:relative;}
.sx-prose dt::before{content:"";position:absolute;left:0;top:21px;width:7px;height:7px;border-radius:2px;background:var(--accent);}
.sx-prose dd{margin:0 0 6px 16px;padding-bottom:10px;border-bottom:1px solid var(--line);color:var(--ink-2);}
.sx-prose dl:last-of-type dd:last-child{border-bottom:0;}
.sx-side{position:sticky;top:calc(var(--header-h) + 20px);display:flex;flex-direction:column;gap:18px;}
.sx-side__cta{background:var(--navy);border-radius:var(--r-md);padding:26px;color:var(--text-inv);}
.sx-side__cta h3{color:#fff;font-size:20px;}
.sx-side__cta p{margin:9px 0 17px;font-size:14.5px;color:var(--text-inv-2);}
.sx-side__facts{background:#fff;border:1px solid var(--line);border-radius:var(--r-md);padding:24px 26px;}
.sx-side__facts h3{font-size:16px;margin-bottom:9px;}
.sx-side__facts ul{list-style:none;margin:0;padding:0;}
.sx-side__facts li{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:14.5px;color:var(--ink-2);border-bottom:1px solid var(--line);}
.sx-side__facts li:last-child{border-bottom:0;}
.sx-side__facts svg{flex:none;stroke:var(--accent);}

/* ---------- 13. CTA band ---------- */
.sx-cta{position:relative;background:var(--paper-2);border-top:1px solid var(--line);padding:clamp(44px,6.5vw,84px) 0;}
.sx-cta__bg{display:none;}
.sx-cta__inner{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,7fr) auto;gap:26px;align-items:center;
  background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-card);
  padding:clamp(34px,5vw,58px) clamp(26px,4vw,56px);overflow:hidden;}
.sx-cta__inner::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:var(--elev);opacity:.9;}
.sx-cta__title{color:var(--ink);font-size:clamp(1.8rem,1.3rem + 2vw,2.7rem);max-width:22ch;}
.sx-cta__sub{margin:12px 0 0;color:var(--ink-2);font-size:16px;max-width:52ch;}
.sx-cta__actions{display:flex;flex-wrap:wrap;gap:13px;}
.sx-cta .sx-btn--light{background:var(--accent-deep);color:#fff !important;}
.sx-cta .sx-btn--light:hover{background:var(--accent-deep);}
.sx-cta .sx-btn--ghost{background:#fff;border:1.5px solid var(--line);color:var(--ink) !important;-webkit-backdrop-filter:none;backdrop-filter:none;text-shadow:none;}
.sx-cta .sx-btn--ghost:hover{border-color:var(--ink-2);background:#fff;}
@media(max-width:860px){.sx-cta__inner{grid-template-columns:1fr;}}

/* ---------- 14. Footer ---------- */
.sx-footer{background:#fff;color:var(--ink-2);border-top:1px solid var(--line);}
.sx-footer__grid{display:grid;grid-template-columns:minmax(0,4fr) repeat(3,minmax(0,2.6fr));gap:34px;padding:clamp(52px,7vw,84px) 0 clamp(36px,5vw,60px);}
@media(max-width:980px){.sx-footer__grid{grid-template-columns:1fr 1fr;}}
@media(max-width:600px){.sx-footer__grid{grid-template-columns:1fr;}}
.sx-footer__brand img{max-width:210px;}
.sx-footer__brand p{margin:16px 0 0;font-size:14.5px;line-height:1.6;max-width:34ch;}
.sx-footer__meta{margin-top:18px;font-size:14.5px;display:flex;flex-direction:column;gap:7px;}
.sx-footer__meta a{color:var(--ink);}
.sx-footer h2{color:var(--ink);font:700 12px/1.4 var(--sans);letter-spacing:.13em;text-transform:uppercase;margin-bottom:16px;}
.sx-footer ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;}
.sx-footer ul a{color:var(--ink-2);font-size:14.5px;}
.sx-footer ul a:hover{color:var(--ink);}
.sx-footer__badges{display:flex;flex-wrap:wrap;gap:9px;margin-top:18px;}
.sx-badge{display:inline-block;padding:7px 13px;border-radius:999px;border:1px solid rgba(46,127,214,.35);background:rgba(46,127,214,.08);color:var(--accent-deep);font:600 12px/1.3 var(--sans);}
.sx-footer__legal{display:flex;flex-wrap:wrap;gap:12px 28px;align-items:center;padding:20px 0 26px;border-top:1px solid var(--line);font-size:13.5px;}
.sx-footer__legal a{color:var(--ink-2);}
.sx-footer__legal a:hover{color:var(--ink);}
.sx-social{display:flex;gap:9px;margin-top:18px;}
.sx-social a{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;border:1px solid var(--line);color:var(--ink-2);transition:background .2s var(--ease),color .2s var(--ease);}
.sx-social a:hover{background:var(--paper-2);color:var(--ink);}

/* ---------- 15. Contact / quote form ---------- */
#skyflex-quote-form label{display:block;font:600 13px/1.4 var(--sans);letter-spacing:.02em;color:var(--ink);margin:0 0 6px;}
#skyflex-quote-form input:not([type=checkbox]):not([type=radio]),#skyflex-quote-form select,#skyflex-quote-form textarea{
  width:100%;padding:13px 15px;margin-bottom:16px;border:1.5px solid var(--line);border-radius:var(--r-sm);
  background:#fff;font:400 15.5px/1.4 var(--sans);color:var(--ink);transition:border-color .2s var(--ease),box-shadow .2s var(--ease);}
#skyflex-quote-form input:focus,#skyflex-quote-form select:focus,#skyflex-quote-form textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(46,127,214,.16);}
#skyflex-quote-form textarea{min-height:130px;resize:vertical;}
#skyflex-quote-form button[type=submit]{min-height:52px;padding:0 27px;border-radius:var(--r-sm);border:0;background:var(--accent);color:#fff;font:600 15.5px/1.2 var(--sans);transition:background .25s var(--ease),transform .25s var(--ease);}
#skyflex-quote-form button[type=submit]:hover{background:var(--accent-deep);}
#skyflex-quote-form button[type=submit]:active{transform:scale(.97);}
#skyflex-quote-form.is-pending button[type=submit]{opacity:.6;pointer-events:none;}
#skyflex-quote-form.is-submitted .qf-fields{display:none;}
.qf-error{background:#FDECEC;border:1px solid #F3B8B8;color:#8C2626;border-radius:var(--r-sm);padding:12px 15px;margin-bottom:16px;font-size:14.5px;}
/* Honeypot. Must never be visible or focusable for a real visitor: anyone who
   fills it has their enquiry silently discarded server-side. Offset rather than
   display:none, which some bots skip. */
#skyflex-quote-form .qf-honeypot{position:absolute!important;left:-9999px!important;top:auto;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none;}
/* Submit button shows one state at a time. */
#skyflex-quote-form .qf-submit-pending{display:none;}
#skyflex-quote-form.is-pending .qf-submit-label{display:none;}
#skyflex-quote-form.is-pending .qf-submit-pending{display:inline;}
.qf-success{background:#EAF7F0;border:1px solid #B5E0C8;color:#1C6B43;border-radius:var(--r-md);padding:22px 24px;font-size:15.5px;}
/* honeypot */
#skyflex-quote-form [name=company_url]{position:absolute !important;left:-9999px !important;width:1px;height:1px;opacity:0;}

/* ---------- 16. 404 + utilities ---------- */
.sx-404{min-height:70vh;display:flex;align-items:center;text-align:left;}
.sx-404 .sx-mono{color:var(--accent);}
.sx-divider{height:1px;background:var(--line);border:0;margin:0;}
.sx-fig-graphic{display:block;margin:0;background:#fff;border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-card);padding:clamp(12px,2.2vw,28px);}
.sx-fig-graphic img{width:100%;height:auto;display:block;}
/* Bare graphic: the PNG sits straight on the page. No card, no border, no
   shadow — it is artwork, not a document. */
.sx-fig-plain{display:block;margin:0;background:none;border:0;box-shadow:none;padding:0;}
.sx-fig-plain img{width:100%;height:auto;display:block;}
/* The pipeline diagram carries fine print that is unreadable at sidebar width.
   On screens wide enough to have a gutter, let it reach into that gutter instead
   of shrinking. The min() is bounded by the real gutter so it can never overflow. */
@media(min-width:1240px){
  .sx-side .sx-fig-plain{width:calc(100% + min(180px, (100vw - var(--wrap)) / 2));max-width:none;}
}
@media(max-width:700px){.sx-hide-sm{display:none !important;}}
.sx-center{text-align:center;}
.sx-mt-0{margin-top:0!important}


/* ============ SERVICES MEGA-MENU ============ */
.sx-has-mega{position:static;}
.sx-has-mega > a{position:relative;}
.sx-has-mega > a::after{content:"";display:inline-block;width:.42em;height:.42em;margin-left:.5em;vertical-align:middle;
  border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-.15em) rotate(45deg);
  transition:transform .22s var(--ease);opacity:.85;}
.sx-has-mega:hover > a::after,.sx-has-mega:focus-within > a::after{transform:translateY(.05em) rotate(225deg);}
.sx-mega{position:absolute;top:100%;left:50%;width:min(940px,95vw);text-align:left;
  transform:translateX(-50%) translateY(10px);
  background:#fff;border:1px solid var(--line);border-radius:16px;
  box-shadow:0 34px 70px -26px rgba(11,19,34,.42),0 6px 16px rgba(11,19,34,.08);
  padding:22px;opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .2s var(--ease),transform .2s var(--ease);z-index:65;}
/* Hover bridge. Must span the FULL gap between the nav link and the panel
   (measured 30px) or the pointer crosses dead space on the way down, the
   li loses :hover and the menu closes before you reach a submenu item.
   Was 12px at top:-12px, leaving an 18px dead zone. */
.sx-mega::before{content:"";position:absolute;left:0;right:0;top:-34px;height:34px;}
.sx-mega::after{content:"";position:absolute;left:0;right:0;top:0;height:3px;border-radius:16px 16px 0 0;background:var(--elev);opacity:.9;}
.sx-has-mega:hover .sx-mega,.sx-has-mega:focus-within .sx-mega{opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(0);}
.sx-mega__inner{display:grid;grid-template-columns:repeat(4,1fr) 1.2fr;gap:14px 24px;}
.sx-mega__h{display:block;font:700 10.5px/1 var(--disp);letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent-deep);margin-bottom:11px;padding-bottom:9px;border-bottom:1px solid var(--line);}
.sx-mega__col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;align-items:stretch;gap:1px;}
.sx-header .sx-mega__col a{display:block;padding:7px 9px;border-radius:8px;color:var(--ink-2) !important;
  font:500 13.5px/1.3 var(--sans);transition:background .16s var(--ease),color .16s var(--ease);}
.sx-header .sx-mega__col a:hover{background:var(--paper-2);color:var(--ink) !important;}
.sx-mega__rail{background:var(--navy);border-radius:12px;padding:17px 17px 18px;display:flex;flex-direction:column;gap:9px;}
.sx-mega__eyebrow{font:700 10.5px/1.3 var(--disp);letter-spacing:.12em;text-transform:uppercase;color:var(--data);}
.sx-mega__rail p{margin:0;font:400 12.5px/1.55 var(--sans);color:rgba(228,238,250,.82);}
.sx-header .sx-mega__rail a.sx-mega__cta{margin-top:auto;display:inline-block;padding:9px 14px;border-radius:9px;
  background:var(--accent);color:#fff !important;font:600 13px/1 var(--sans);text-align:center;transition:background .2s var(--ease);}
.sx-header .sx-mega__rail a.sx-mega__cta:hover{background:var(--accent-deep);}

/* mobile services accordion */
.sx-has-msub > a{position:relative;}
.sx-has-msub > a::after{content:"+";position:absolute;right:4px;top:50%;transform:translateY(-50%);font:400 22px/1 var(--sans);color:var(--ink-2);}
.sx-has-msub.is-open > a::after{content:"\2013";}
.sx-msub{display:none;padding:4px 0 12px 14px;margin:2px 0 4px;border-left:2px solid var(--line);}
.sx-has-msub.is-open .sx-msub{display:block;}
.sx-msub__h{display:block;font:700 10px/1 var(--disp);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-deep);margin:13px 0 3px;}
.sx-mobile .sx-msub a{display:block;padding:7px 4px;color:var(--ink-2) !important;font:500 15px/1.25 var(--sans);}
.sx-mobile .sx-msub a.sx-msub__all{color:var(--accent-deep) !important;font-weight:700;margin-top:10px;}
@media(min-width:921px){.sx-msub{display:none !important;}}

/* Drawer CTA: out-specify `.sx-mobile a` so the button keeps white text (WCAG AA). */
.sx-mobile a.sx-btn{color:#fff !important;}

/* ═══ Audit Phase 1 — service-page conversion furniture ═══════════════════ */

/* Phone in the sidebar CTA. The 19 service pages are the highest-intent pages
   on the site and had no number on them at all. */
.sx-side__tel{display:flex;align-items:center;justify-content:center;gap:8px;
  min-height:44px;margin-top:10px;color:var(--ink-2);font:500 14px/1.2 var(--sans);
  text-decoration:none;border-radius:var(--r-sm);border:1px solid var(--line);
  transition:border-color .25s var(--ease),color .25s var(--ease);}
.sx-side__tel:hover{border-color:var(--accent-deep);color:var(--accent-deep);}
.sx-side__tel b{font-weight:700;color:var(--ink);}
.sx-side__tel:hover b{color:var(--accent-deep);}

/* Second sidebar module — fills the ~1,500px of dead column that sat beside
   the lower half of every service page. */
.sx-side__lede{margin:0 0 12px;color:var(--ink-2);font-size:14.5px;line-height:1.55;}
.sx-side__more{font:600 13px/1 var(--sans);color:var(--accent-deep);text-decoration:none;
  letter-spacing:.01em;}
.sx-side__more:hover{text-decoration:underline;}

/* Deliverable spec table dropped into the prose flow. */
.sx-prose .sx-spectable{width:100%;border-collapse:collapse;margin:26px 0;font-size:14.5px;}
.sx-prose .sx-spectable th,.sx-prose .sx-spectable td{text-align:left;padding:10px 14px;
  border-bottom:1px solid var(--line);}
.sx-prose .sx-spectable th{font:600 10.5px/1 var(--disp);letter-spacing:.12em;
  text-transform:uppercase;color:var(--ink-2);background:var(--paper-2);}
.sx-prose .sx-spectable td:first-child{font-weight:600;color:var(--ink);white-space:nowrap;}
.sx-prose .sx-spectable tr:last-child td{border-bottom:0;}

/* Sticky mobile action bar. Service pages only. */
.sx-actionbar{display:none;}
@media(max-width:860px){
  .sx-actionbar{display:grid;grid-template-columns:auto 1fr;gap:10px;
    position:fixed;left:0;right:0;bottom:0;z-index:60;padding:10px 14px;
    padding-bottom:calc(10px + env(safe-area-inset-bottom));
    background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
    border-top:1px solid var(--line);}
  .sx-actionbar__tel,.sx-actionbar__cta{display:inline-flex;align-items:center;justify-content:center;
    gap:8px;min-height:48px;border-radius:var(--r-sm);font:600 15px/1 var(--sans);text-decoration:none;}
  .sx-actionbar__tel{padding:0 18px;border:1px solid var(--line);color:var(--ink);}
  .sx-actionbar__cta{background:var(--accent-deep);color:#fff;}
  /* keep the footer clear of the bar */
  .sx-footer{padding-bottom:84px;}
}
@media(prefers-color-scheme:dark){
  @media(max-width:860px){.sx-actionbar{background:rgba(11,19,34,.94);}
    .sx-actionbar__tel{color:#fff;border-color:var(--line-inv);}}
}

/* ═══ Audit Phase 1 — grouped services index ══════════════════════════════ */
.sx-group{margin-top:clamp(38px,5vw,58px);}
.sx-group:first-of-type{margin-top:0;}
.sx-group__hd{display:flex;align-items:baseline;gap:14px;margin-bottom:22px;
  padding-bottom:12px;border-bottom:1px solid var(--line);}
.sx-group__hd h2{font:700 clamp(19px,2.2vw,23px)/1.2 var(--disp);letter-spacing:-.018em;margin:0;}
.sx-group__n{font:600 11px/1 var(--mono,ui-monospace);letter-spacing:.1em;color:var(--ink-2);
  font-variant-numeric:tabular-nums;}

/* === Audit Phase 2 - imagery mechanics === */
/* Stage images were object-fit:fill. Today's files happen to match the
   container ratio so nothing visibly stretched, but the moment a replacement
   with a different aspect ratio lands it would distort - and this is exactly
   the section being re-shot. cover + centre keeps the crop honest. */
.sx-stage img,.sx-stage__plx img{object-fit:cover;object-position:center;}
/* Intrinsic ratio so the stage reserves its box before the image arrives.
   Previously it collapsed to 1440x0 and rendered as a black void mid-load. */
.sx-stage__plx{aspect-ratio:1400/781;}
.sx-stage picture{display:contents;}

/* === Audit Phase 6 - visual polish === */
/* D3: the four strongest proof points were the smallest type on the page,
   set over a photograph. 11.5 -> 12.5px, and the stage callouts 11 -> 12px. */
.sx-chip{font-size:12.5px;letter-spacing:.055em;}
.sx-pin__tag b{font-size:12px;}
.sx-pin__tag em{font-size:11.5px;}

/* D1: the hero scrim was a flat wash that dimmed the whole photo without
   protecting the text. A directional gradient darkens the reading side and
   leaves the image open on the other. */
.sx-hero::before{background:
  linear-gradient(100deg, rgba(8,13,22,.88) 0%, rgba(8,13,22,.72) 38%, rgba(8,13,22,.34) 66%, rgba(8,13,22,.22) 100%),
  linear-gradient(180deg, rgba(8,13,22,.52) 0%, rgba(8,13,22,.10) 34%, rgba(8,13,22,.62) 100%);}
@media(max-width:860px){
  /* On a phone the headline sits over the busiest part of the frame, so the
     protection has to be stronger and run top-to-bottom rather than sideways. */
  .sx-hero::before{background:
    linear-gradient(180deg, rgba(8,13,22,.80) 0%, rgba(8,13,22,.66) 42%, rgba(8,13,22,.74) 100%);}
}

/* E3: footer link targets were 18px tall; WCAG 2.2 AA asks for 24. */
.sx-footer ul a{display:inline-block;padding:4px 0;min-height:24px;}
.sx-footer__meta a{min-height:26px;display:inline-flex;align-items:center;}

/* D4: the closing CTA is the conversion moment on 27 pages and was the
   quietest band on each. Give it type weight and a real edge. */
.sx-cta__title{font-size:clamp(27px,3.8vw,44px);letter-spacing:-.028em;}
.sx-cta__inner{border-top:2px solid transparent;
  border-image:linear-gradient(90deg,#2563EB,#22C1A0,#EAB308,#EF4444) 1;}

/* === Audit Phase 5 - glossary structure === */
/* The A-Z letters were plain divs, so the page had no headings at all: no jump
   nav, nothing for a screen-reader rotor, no outline for search. */
.glossary-jump{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 30px;padding-bottom:18px;
  border-bottom:1px solid var(--line);}
.glossary-jump a{display:inline-flex;align-items:center;justify-content:center;
  min-width:32px;min-height:32px;border:1px solid var(--line);border-radius:var(--r-sm);
  font:600 13px/1 var(--disp);color:var(--ink-2);text-decoration:none;
  transition:border-color .2s var(--ease),color .2s var(--ease);}
.glossary-jump a:hover,.glossary-jump a:focus-visible{border-color:var(--accent-deep);color:var(--accent-deep);}
h2.glossary-alpha-letter{font:700 clamp(20px,2.4vw,26px)/1 var(--disp);letter-spacing:-.02em;
  color:var(--accent-deep);margin:34px 0 12px;padding-bottom:8px;border-bottom:2px solid var(--line);
  scroll-margin-top:90px;}
h2.glossary-alpha-letter:focus{outline:none;}

/* Footer wordmark matches the header exactly (was a separate PNG lockup). */
/* Footer is white (.sx-footer{background:#fff}); the base .sx-brand is white for
   the dark header, so it was invisible down here. */
.sx-footer__brand .sx-brand{color:var(--ink) !important;margin-bottom:2px;}

/* === Audit C8 - contact NAP block === */
.sx-nap address{font-style:normal;font-size:15px;line-height:1.65;color:var(--ink);margin:0 0 10px;}
.sx-nap__dir{display:inline-block;font:600 13.5px/1 var(--sans);color:var(--accent-deep);
  text-decoration:none;min-height:24px;}
.sx-nap__dir:hover{text-decoration:underline;}
.sx-nap__area{margin:14px 0 0;font-size:14px;line-height:1.6;color:var(--ink-2);}

/* === Audit D2 - homepage capabilities === */
.sx-caps{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;align-items:start;}
@media(max-width:1180px){.sx-caps{grid-template-columns:repeat(2,1fr);}}
@media(max-width:620px){.sx-caps{grid-template-columns:1fr;}}
.sx-cap{background:var(--surface,#fff);border:1px solid var(--line);border-radius:var(--r-md);
  overflow:hidden;display:flex;flex-direction:column;}
.sx-cap__lead{display:block;text-decoration:none;color:inherit;}
.sx-cap__media{display:block;height:150px;background-size:cover;background-position:center;
  transition:transform .5s var(--ease);}
.sx-cap__lead:hover .sx-cap__media{transform:scale(1.04);}
.sx-cap__body{display:block;padding:16px 18px 4px;}
.sx-cap__group{display:block;font:700 10px/1 var(--disp);letter-spacing:.14em;text-transform:uppercase;
  color:var(--accent-deep);margin-bottom:9px;}
.sx-cap__title{display:block;font-size:17px;line-height:1.28;margin-bottom:7px;}
.sx-cap__desc{display:block;font-size:13.8px;line-height:1.55;color:var(--ink-2);}
.sx-cap__more{list-style:none;margin:12px 0 0;padding:12px 18px 16px;display:flex;
  flex-direction:column;gap:2px;border-top:1px solid var(--line-2,rgba(14,23,38,.07));}
.sx-cap__more a{display:block;padding:5px 0;min-height:24px;font:500 13.5px/1.35 var(--sans);
  color:var(--ink-2);text-decoration:none;}
.sx-cap__more a:hover{color:var(--accent-deep);}
.sx-caps__foot{margin-top:22px;}
.sx-row--wide{border:1px solid var(--line);border-radius:var(--r-md);}

/* ── Field Notes: editorial feed, one post per row ───────────────── */
.sx-feed{max-width:940px;margin-inline:auto;}
.sx-note{position:relative;padding:0 0 clamp(38px,5vw,58px);margin-bottom:clamp(38px,5vw,58px);border-bottom:1px solid var(--line);}
.sx-note:last-of-type{border-bottom:0;margin-bottom:0;padding-bottom:0;}
.sx-note__hit{position:absolute;inset:0;z-index:3;}
.sx-note__hit:focus-visible{outline:2px solid var(--accent);outline-offset:6px;border-radius:var(--r-md);}
.sx-note__media{position:relative;overflow:hidden;border-radius:var(--r-md);border:1px solid var(--line);background:var(--paper-2);aspect-ratio:16/9;margin-bottom:clamp(18px,2.2vw,26px);}
.sx-note__media img{width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.001);transition:transform .9s var(--ease);}
.sx-note:hover .sx-note__media img{transform:scale(1.045);}
.sx-note__body{display:flex;flex-direction:column;gap:11px;}
.sx-note__meta{margin:0;display:flex;align-items:center;flex-wrap:wrap;gap:9px;font-family:var(--mono);font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-2);}
.sx-note__dot{width:3px;height:3px;border-radius:50%;background:currentColor;opacity:.5;}
.sx-note__title{margin:0;font-family:var(--disp);font-size:clamp(24px,3vw,34px);line-height:1.18;letter-spacing:-.015em;color:var(--ink);transition:color .35s var(--ease);}
.sx-note:hover .sx-note__title{color:var(--accent-deep);}
.sx-note__excerpt{margin:0;max-width:68ch;color:var(--ink-2);font-size:16.5px;line-height:1.7;}
.sx-note__more{margin-top:4px;display:inline-flex;align-items:center;gap:7px;font-size:14.5px;font-weight:600;color:var(--accent);}
.sx-note__more svg{transition:transform .4s var(--ease);}
.sx-note:hover .sx-note__more svg{transform:translateX(4px);}
.sx-postpager{margin-top:44px;}
.sx-postpager .nav-links{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.sx-postpager .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:40px;height:40px;padding:0 12px;border:1px solid var(--line);border-radius:var(--r-sm);color:var(--ink-2);font-size:14.5px;text-decoration:none;transition:border-color .3s var(--ease),color .3s var(--ease);}
.sx-postpager .page-numbers:hover{border-color:var(--accent);color:var(--accent);}
.sx-postpager .page-numbers.current{background:var(--ink);border-color:var(--ink);color:var(--white);}
.sx-postpager .screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}
@media(prefers-reduced-motion:reduce){.sx-note__media img,.sx-note__title,.sx-note__more svg{transition:none;}.sx-note:hover .sx-note__media img{transform:none;}}

/* ── Field Notes: single article ─────────────────────────────────── */
.sx-article{max-width:760px;margin-inline:auto;}
.sx-article__hero .sx-hero__bg{filter:saturate(.92);}
.sx-article__meta{margin:14px 0 0;display:flex;align-items:center;flex-wrap:wrap;gap:9px;font-family:var(--mono);font-size:12px;letter-spacing:.09em;text-transform:uppercase;color:var(--text-inv-2);}
.sx-article__body{font-size:17.5px;line-height:1.78;}
.sx-article__body > *:first-child{margin-top:0;}
.sx-article__body h2{margin:2.1em 0 .55em;font-family:var(--disp);font-size:clamp(22px,2.3vw,28px);line-height:1.25;letter-spacing:-.012em;color:var(--ink);}
.sx-article__body h3{margin:1.8em 0 .5em;font-size:clamp(18px,1.7vw,21px);color:var(--ink);}
.sx-article__body p{margin:0 0 1.15em;}
.sx-article__body ul,.sx-article__body ol{margin:0 0 1.3em;padding-left:1.15em;}
.sx-article__body li{margin-bottom:.5em;}
.sx-article__body a{color:var(--accent-deep);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;}
.sx-article__body a:hover{color:var(--accent);}
.sx-article__body blockquote{margin:1.6em 0;padding:4px 0 4px 22px;border-left:3px solid var(--accent);color:var(--ink);font-size:19px;line-height:1.6;}
.sx-article__body img{max-width:100%;height:auto;border-radius:var(--r-md);margin:1.4em 0;}
.sx-article__body strong{color:var(--ink);}
.sx-article__foot{margin-top:clamp(34px,4.5vw,52px);padding-top:24px;border-top:1px solid var(--line);}
.sx-article__back{display:inline-flex;align-items:center;gap:8px;font-size:14.5px;font-weight:600;color:var(--accent);}
.sx-article__back svg{transition:transform .4s var(--ease);}
.sx-article__back:hover svg{transform:translateX(-4px);}
.sx-article__cta{margin-top:clamp(32px,4vw,46px);display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:22px;background:var(--navy);border-radius:var(--r-md);padding:clamp(26px,3.4vw,38px);}
.sx-article__cta h2{margin:0 0 8px;color:#fff;font-family:var(--disp);font-size:clamp(20px,2vw,25px);line-height:1.25;}
.sx-article__cta p{margin:0;color:var(--text-inv-2);font-size:15.5px;line-height:1.62;max-width:52ch;}
.sx-article__cta .sx-btn{flex-shrink:0;}
@media(prefers-reduced-motion:reduce){.sx-article__back svg{transition:none;}}

/* ── Accessibility fixes (Lighthouse) ────────────────────────────── */
/* White on --accent is 4.10:1 and fails WCAG AA for normal text. --accent-deep
   is 5.66:1 and is already a brand token, so the primary action stays on-brand
   and becomes readable. */
#skyflex-quote-form .qf-submit,
#skyflex-quote-form button[type="submit"]{background:var(--accent-deep);}
#skyflex-quote-form .qf-submit:hover,
#skyflex-quote-form button[type="submit"]:hover{background:#1F5FA8;}

/* The mobile nav was only translated off-screen while carrying aria-hidden,
   so its links stayed keyboard-focusable and announced nothing. Taking it out
   of the focus order when closed. */
.sx-mobile{visibility:hidden;}
.sx-mobile.is-open{visibility:visible;}
/* Mega-menu CTA had the same white-on---accent 4.10:1 failure at 13px. */
.sx-header .sx-mega__rail a.sx-mega__cta{background:var(--accent-deep);}
.sx-header .sx-mega__rail a.sx-mega__cta:hover{background:#1F5FA8;}
/* Small blue eyebrow/label text was --accent on white = 4.10:1 at 11.5-12px,
   which fails AA. --accent-deep is 5.66:1 and visually near-identical at this size. */
.sx-label,
.sx-step__label,
.sx-note__more,
.sx-article__back,
.sx-side__more{color:var(--accent-deep);}
/* The step watermark is decoration, not content: the order is already carried by
   the visual sequence and the Fly/Model/Deliver labels, and the span is
   aria-hidden. Rendering it as generated content puts it in the presentation
   layer where it belongs, instead of a text node that must meet text contrast. */
.sx-step__num::before{content:attr(data-num);}
/* Body links: --accent on white is 4.10:1 (fails AA), and colour alone did not
   separate them from surrounding text (2.12:1, needs 3:1). Deeper blue + an
   underline fixes both, and the underline is the accessible signal regardless
   of colour vision. */
.sx-prose a:not(.wp-block-button__link){color:var(--accent-deep);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;}
.sx-prose a:not(.wp-block-button__link):hover{color:#1F5FA8;}
/* The sidebar phone line used --ink-2 (a light-background body colour) on the
   navy card: 2.13:1. --text-inv-2 is the dark-surface equivalent. */
.sx-side__cta .sx-side__tel,
.sx-side__cta .sx-side__tel span{color:var(--text-inv-2);}
.sx-side__cta .sx-side__tel b{color:#fff;}
/* WordPress block buttons defaulted to #32373c grey, off-brand and low contrast.
   Brand them properly: white on --accent-deep is 5.66:1. */
.sx-prose .wp-block-button__link{background-color:var(--accent-deep)!important;color:#fff!important;border-radius:var(--r-sm);text-decoration:none;padding:14px 26px;font-weight:600;}
.sx-prose .wp-block-button__link:hover{background-color:#1F5FA8!important;}
/* Card "go" affordance was --accent on white (~4.0:1). */
.sx-card__go{color:var(--accent-deep);}
/* Spec keys are 11px on --paper-2, where --accent is only 3.67:1. Needs the
   same specificity as .sx-sec--light .sx-spec .k above to win. */
.sx-sec--light .sx-spec .k{color:var(--accent-deep);}

/* Video thumbnails became <img> so they can lazy-load; background-size:cover
   no longer applies to them, so object-fit has to do the same job. */
img.sx-card__media{object-fit:cover;height:100%;}
