/* ==========================================================================
   Austar India — design system
   Industrial dark surfaces, brand blue structure, amber conversion accents.
   ========================================================================== */

/* ---------------------------------------------------------------- tokens */
:root {
  /* ink scale — dark surfaces */
  --ink:        #080B0F;
  --ink-1:      #0D1218;
  --ink-2:      #141A22;
  --ink-3:      #1C242E;
  --ink-4:      #26303C;

  /* paper scale — light surfaces */
  --paper:      #FFFFFF;
  --paper-1:    #F5F7FA;
  --paper-2:    #EBEFF5;
  --paper-3:    #DDE3EC;

  /* brand */
  --blue:       #2E5AA8;
  --blue-lt:    #4C82D8;
  --blue-dk:    #1E3D75;
  --amber:      #F5A623;
  --amber-lt:   #FFC15E;
  --amber-dk:   #C97F0C;

  /* type */
  --on-dark:    #EDF1F7;
  --on-dark-mu: #8D9AAB;
  --on-dark-dim:#5D6A7B;
  --on-light:   #0E141C;
  --on-light-mu:#54626F;

  --line-dark:  rgba(255,255,255,.09);
  --line-dark-2:rgba(255,255,255,.16);
  --line-light: rgba(10,20,30,.10);
  --line-light-2:rgba(10,20,30,.18);

  --f-display: 'Barlow Condensed', 'Arial Narrow', Impact, sans-serif;
  --f-body:    'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --f-mono:    ui-monospace, 'Cascadia Mono', Consolas, monospace;

  --wrap:      1280px;
  --wrap-n:    1060px;
  --rad:       4px;
  --rad-lg:    8px;

  --sp-sec:    clamp(56px, 7vw, 104px);

  --sh-1: 0 1px 2px rgba(8,11,15,.08), 0 4px 16px rgba(8,11,15,.06);
  --sh-2: 0 2px 6px rgba(8,11,15,.10), 0 18px 44px rgba(8,11,15,.14);
  --sh-3: 0 30px 80px rgba(8,11,15,.30);

  --ease: cubic-bezier(.22,.61,.36,1);
}

/* ---------------------------------------------------------------- base */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: var(--f-body);
  font-size: 16px;
  line-height: 1.65;
  color: var(--on-light);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
  /* This is here to stop wide mega menus from widening the page. But overflow-x
     on one axis forces the other to compute to auto, which makes <body> a
     scroll container — and then every position:sticky descendant sticks to a
     box that never scrolls, so nothing sticks at all. `clip` cuts exactly the
     same overflow without creating that scroll container. Kept `hidden` as the
     fallback for browsers that do not know `clip` (Safari below 16). */
  overflow-x: hidden;
}
@supports (overflow-x: clip) {
  body { overflow-x: clip; }
}
body.is-locked { overflow: hidden; }
img, svg, video { max-width: 100%; display: block; }
img { height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; cursor: pointer; }
ul, ol { margin: 0; padding: 0; list-style: none; }
p { margin: 0 0 1em; }
p:last-child { margin-bottom: 0; }
h1, h2, h3, h4, h5 { margin: 0; font-weight: 700; line-height: 1.12; letter-spacing: -.01em; }
table { border-collapse: collapse; width: 100%; }
:focus-visible { outline: 2px solid var(--amber); outline-offset: 3px; border-radius: 2px; }
::selection { background: var(--amber); color: #12161C; }

.ic { width: 1.15em; height: 1.15em; flex: none; }

.wrap { width: 100%; max-width: var(--wrap); margin-inline: auto; padding-inline: 24px; }
.wrap--n { max-width: var(--wrap-n); }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ---------------------------------------------------------------- sections */
.sec { padding-block: var(--sp-sec); position: relative; }
.sec--tight { padding-block: clamp(40px, 5vw, 68px); }
.sec--dark  { background: var(--ink-1); color: var(--on-dark); }
.sec--ink   { background: var(--ink);   color: var(--on-dark); }
.sec--paper { background: var(--paper-1); }
.sec--white { background: var(--paper); }

/* Plain links in a dark section go amber on hover. Components that fill their
   own background on hover are excluded — a .pill turns amber behind the text,
   so letting this rule also colour the text amber made it vanish. Any future
   component with its own hover fill belongs in this list too. */
.sec--dark a:not(.btn):not(.pill):hover,
.sec--ink  a:not(.btn):not(.pill):hover { color: var(--amber); }

/* grid noise for dark sections */
.sec--dark::before, .sec--ink::before {
  content: ''; position: absolute; inset: 0; pointer-events: none; opacity: .5;
  background-image:
    linear-gradient(var(--line-dark) 1px, transparent 1px),
    linear-gradient(90deg, var(--line-dark) 1px, transparent 1px);
  background-size: 88px 88px;
  -webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 20%, transparent 78%);
  mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, #000 20%, transparent 78%);
}
.sec--dark > *, .sec--ink > * { position: relative; z-index: 1; }

/* ---------------------------------------------------------------- typography */
.eyebrow {
  display: inline-flex; align-items: center; gap: 10px;
  font-family: var(--f-body);
  font-size: 11.5px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase;
  color: var(--blue); margin-bottom: 14px;
}
.eyebrow::before { content: ''; width: 26px; height: 2px; background: var(--amber); flex: none; }
.eyebrow--light { color: var(--amber-lt); }
.sec--dark .eyebrow, .sec--ink .eyebrow { color: var(--amber); }

.sec-title {
  font-family: var(--f-display);
  font-size: clamp(30px, 4.2vw, 52px);
  font-weight: 600; line-height: 1.04; letter-spacing: .004em;
  text-transform: uppercase;
}
.sec-title em { font-style: normal; color: var(--blue); }
.sec--dark .sec-title em, .sec--ink .sec-title em { color: var(--amber); }

.sec-lead { margin-top: 16px; max-width: 66ch; font-size: 17px; color: var(--on-light-mu); }
.sec--dark .sec-lead, .sec--ink .sec-lead { color: var(--on-dark-mu); }

.sec-head { margin-bottom: clamp(30px, 4vw, 52px); max-width: 860px; }
.sec-head--center { margin-inline: auto; text-align: center; }
.sec-head--center .eyebrow::before { display: none; }
.sec-head--center .sec-lead { margin-inline: auto; }

.h3 { font-family: var(--f-display); font-size: clamp(21px, 2.2vw, 28px); font-weight: 600; text-transform: uppercase; letter-spacing: .01em; }
.lead { font-size: 18px; color: var(--on-light-mu); }
.rich p { margin-bottom: 1.1em; }
.rich h3 { font-family: var(--f-display); text-transform: uppercase; font-size: 24px; margin: 1.8em 0 .5em; letter-spacing: .01em; }
.rich h3:first-child { margin-top: 0; }
.rich ul { margin: 0 0 1.2em; }
.rich ul li { position: relative; padding-left: 26px; margin-bottom: 9px; }
.rich ul li::before {
  content: ''; position: absolute; left: 0; top: .62em;
  width: 8px; height: 8px; background: var(--amber); transform: rotate(45deg);
}

/* ---------------------------------------------------------------- buttons */
.btn {
  /* `background: transparent` and `appearance: none` matter: without them a
     <button class="btn"> keeps the UA's ButtonFace fill, and the light text on
     the ghost/outline variants disappears against it until hover recolours it. */
  -webkit-appearance: none; appearance: none; background: transparent;
  display: inline-flex; align-items: center; justify-content: center; gap: 9px;
  padding: 13px 24px; border: 1px solid transparent; border-radius: var(--rad);
  font-size: 13.5px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase;
  transition: background .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease), transform .16s var(--ease);
  white-space: nowrap;
}
.btn .ic { width: 16px; height: 16px; transition: transform .22s var(--ease); }
.btn:hover .ic { transform: translateX(3px); }
.btn:active { transform: translateY(1px); }

.btn--primary { background: var(--amber); color: #14181D; border-color: var(--amber); }
.btn--primary:hover { background: var(--amber-lt); border-color: var(--amber-lt); }

.btn--blue { background: var(--blue); color: #fff; border-color: var(--blue); }
.btn--blue:hover { background: var(--blue-lt); border-color: var(--blue-lt); }

.btn--ghost { border-color: var(--line-dark-2); color: var(--on-dark); }
.btn--ghost:hover { border-color: var(--amber); color: var(--amber); }

.btn--outline { border-color: var(--line-light-2); color: var(--on-light); }
.btn--outline:hover { border-color: var(--blue); color: var(--blue); }

.btn--sm { padding: 9px 16px; font-size: 12px; }
.btn--wide { width: 100%; }

.link-arrow {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 13px; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; color: var(--blue);
}
.link-arrow .ic { width: 15px; height: 15px; transition: transform .22s var(--ease); }
.link-arrow:hover .ic { transform: translateX(4px); }
.sec--dark .link-arrow, .sec--ink .link-arrow { color: var(--amber); }

/* ==========================================================================
   HEADER
   ========================================================================== */
.topbar {
  background: var(--ink); color: var(--on-dark-mu);
  font-size: 12.5px; border-bottom: 1px solid var(--line-dark);
}
.topbar__in { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 40px; }
.topbar__l, .topbar__r { display: flex; align-items: center; gap: 22px; }
.topbar a { display: inline-flex; align-items: center; gap: 7px; transition: color .18s; }
.topbar a:hover { color: var(--amber); }
.topbar .ic { width: 14px; height: 14px; color: var(--blue-lt); }
.topbar__cta { color: var(--amber) !important; font-weight: 700; letter-spacing: .04em; }
.topbar__soc { display: flex; gap: 4px; }
.topbar__soc a {
  width: 26px; height: 26px; display: grid; place-items: center;
  border: 1px solid var(--line-dark); border-radius: 3px;
}
.topbar__soc a:hover { border-color: var(--amber); background: rgba(245,166,35,.1); }
.topbar__soc .ic { width: 13px; height: 13px; color: inherit; }

.site-head {
  position: sticky; top: 0; z-index: 90;
  background: var(--ink-1); color: var(--on-dark);
  border-bottom: 1px solid var(--line-dark);
  transition: box-shadow .25s var(--ease);
}
.site-head.is-stuck { box-shadow: 0 10px 34px rgba(0,0,0,.42); }
.site-head .wrap { max-width: 1460px; }
.head__in { display: flex; align-items: center; gap: 22px; min-height: 74px; }
/* The CTA is a solid block against text links, so it needs more clearance than
   the flex gap alone gives — otherwise "Contact" sits right up against it. */
.head__cta { margin-left: 10px; }

.logo { display: flex; align-items: center; gap: 12px; flex: none; }
.logo img { height: 42px; width: auto; }
.logo__txt { display: none; }

.nav { margin-left: auto; min-width: 0; }
.nav__list { display: flex; align-items: center; gap: 2px; flex-wrap: nowrap; }
.nav__item { position: relative; }
.nav__link {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 26px 12px; font-size: 13.5px; font-weight: 600; letter-spacing: .03em;
  color: var(--on-dark); position: relative; transition: color .18s;
  /* The label is an anonymous flex item, so without this a two-word item like
     "HVLS Technology" breaks onto a second line when the bar gets tight. */
  white-space: nowrap;
}
.nav__link .ic { width: 13px; height: 13px; color: var(--on-dark-dim); transition: transform .2s var(--ease); }
.nav__link::after {
  content: ''; position: absolute; left: 12px; right: 12px; bottom: 0; height: 2px;
  background: var(--amber); transform: scaleX(0); transform-origin: left; transition: transform .24s var(--ease);
}
.nav__item:hover > .nav__link, .nav__link.is-active { color: var(--amber); }
.nav__item:hover > .nav__link::after, .nav__link.is-active::after { transform: scaleX(1); }
.nav__item:hover > .nav__link .ic { transform: rotate(180deg); color: var(--amber); }

/* The CTA must never be squeezed out of the bar — its label is the primary
   conversion action, so it holds its width and the nav tightens instead. */
.head__cta { flex: 0 0 auto; }
.head__cta .btn { white-space: nowrap; }

/* mega dropdown */
.mega {
  position: absolute; top: 100%; left: 50%; transform: translate(-50%, 10px);
  min-width: 260px; background: var(--ink-2); border: 1px solid var(--line-dark);
  border-top: 2px solid var(--amber); border-radius: 0 0 var(--rad-lg) var(--rad-lg);
  box-shadow: var(--sh-3); padding: 22px;
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity .2s var(--ease), transform .24s var(--ease), visibility .2s;
}
.nav__item:hover > .mega { opacity: 1; visibility: visible; pointer-events: auto; transform: translate(-50%, 0); }

/* The wide panels centre on the page, not on their nav item — Products and
   Applications sit right of centre in the bar, so a 1120px panel anchored to
   them would run off the viewport. Making the item `static` hands the
   positioning job up to .site-head, which spans the full width and is sticky,
   so this holds whether the header is scrolled to the top or not. */
.nav__item--wide { position: static; }
.mega--wide { width: min(1120px, calc(100vw - 48px)); }
.mega--mid  { width: min(760px, calc(100vw - 48px)); }

.mega__grid { display: grid; gap: 26px; }
.mega__grid--4 { grid-template-columns: repeat(4, 1fr); }
.mega__grid--3 { grid-template-columns: repeat(3, 1fr); }
.mega__grid--2 { grid-template-columns: repeat(2, 1fr); }

.mega__h {
  font-size: 10.5px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase;
  color: var(--blue-lt); padding-bottom: 9px; margin-bottom: 11px; border-bottom: 1px solid var(--line-dark);
}
.mega__list li + li { margin-top: 1px; }
.mega__list a {
  display: flex; align-items: center; gap: 8px; padding: 7px 9px; margin-left: -9px;
  border-radius: var(--rad); font-size: 13.5px; color: var(--on-dark-mu);
  transition: background .16s, color .16s, padding-left .16s var(--ease);
}
.mega__list a:hover { background: rgba(255,255,255,.05); color: var(--amber) !important; padding-left: 14px; }
.mega__list a small { display: block; font-size: 11.5px; color: var(--on-dark-dim); }

.mega__feat {
  background: linear-gradient(150deg, var(--ink-3), var(--ink-2));
  border: 1px solid var(--line-dark); border-radius: var(--rad-lg); padding: 18px; text-align: center;
}
.mega__feat img {
  margin: 0 auto 10px; max-height: 92px; width: auto; object-fit: contain;
  background: radial-gradient(ellipse at 50% 120%, #DFE6EF, #FFFFFF 68%);
  border-radius: var(--rad); padding: 10px 8px;
}
.mega__feat h4 {
  font-family: var(--f-display); font-size: 18px; line-height: 1.2;
  text-transform: uppercase; color: var(--amber); margin-bottom: 14px;
}
.mega__feat h4 a:hover { color: var(--amber-lt) !important; }
.mega__feat p { font-size: 12.5px; color: var(--on-dark-mu); margin: 6px 0 14px; }
/* the column heading doubles as the link to that category page */
.mega__h a { color: inherit; transition: color .16s; }
.mega__h a:hover { color: var(--amber) !important; }

/* burger + mobile */
.burger {
  display: none; width: 44px; height: 44px; margin-left: auto;
  background: none; border: 1px solid var(--line-dark); border-radius: var(--rad);
  place-items: center; color: var(--on-dark);
}
.burger .ic { width: 22px; height: 22px; }

.mnav {
  position: fixed; inset: 0 0 0 auto; width: min(400px, 100%); z-index: 120;
  background: var(--ink-1); color: var(--on-dark);
  transform: translateX(101%); transition: transform .34s var(--ease);
  display: flex; flex-direction: column;
}
.mnav.is-open { transform: none; }
.mnav__head { display: flex; align-items: center; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--line-dark); }
.mnav__head img { height: 34px; margin-right: auto; }
.mnav__close { width: 40px; height: 40px; display: grid; place-items: center; background: none; border: 1px solid var(--line-dark); border-radius: var(--rad); flex: none; }

/* Drill-down: the head swaps the logo for a Back button and the section name
   while a submenu panel is showing. */
.mnav__back {
  display: none; align-items: center; gap: 8px; margin-right: auto; padding: 8px 12px 8px 8px;
  background: none; border: 1px solid var(--line-dark); border-radius: var(--rad);
  color: var(--on-dark); font-size: 13px; font-weight: 600;
}
.mnav__back .ic { width: 16px; height: 16px; }
.mnav__back:hover { border-color: var(--amber); color: var(--amber); }
.mnav__title {
  display: none; font-family: var(--f-display); font-size: 19px; text-transform: uppercase;
  letter-spacing: .015em; color: var(--amber); margin-right: auto;
}
.mnav.is-drilled .mnav__head img { display: none; }
.mnav.is-drilled .mnav__back,
.mnav.is-drilled .mnav__title { display: flex; }

.mnav__body { flex: 1; overflow: hidden; position: relative; }
.mnav__list { height: 100%; overflow-y: auto; padding: 8px 0 20px; transition: transform .32s var(--ease); }
.mnav.is-drilled .mnav__list { transform: translateX(-24%); }
.mnav__group { border-bottom: 1px solid var(--line-dark); }
.mnav__top {
  display: flex; align-items: center; justify-content: space-between; width: 100%;
  padding: 15px 20px; background: none; border: 0; text-align: left;
  font-size: 15px; font-weight: 600; color: var(--on-dark);
}
/* The chevron points right — it opens a panel, it does not unfold a list. */
.mnav__top .ic { width: 17px; height: 17px; color: var(--on-dark-dim); }
.mnav__top:hover { color: var(--amber); }
.mnav__top:hover .ic { color: var(--amber); }

/* Second level: a full panel that slides in from the right over the first. */
.mnav__sub {
  position: absolute; inset: 0; z-index: 2;
  background: var(--ink-1);
  overflow-y: auto; -webkit-overflow-scrolling: touch;
  padding: 8px 0 20px;
  transform: translateX(100%);
  visibility: hidden;
  transition: transform .32s var(--ease), visibility .32s;
}
.mnav__sub.is-open { transform: none; visibility: visible; }
.mnav__sub a { display: block; padding: 13px 20px; font-size: 14.5px; color: var(--on-dark-mu); border-bottom: 1px solid var(--line-dark); }
.mnav__sub a:hover { color: var(--amber); background: rgba(255,255,255,.03); }
.mnav__sub .mnav__lbl {
  padding: 18px 20px 8px; font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--blue-lt); font-weight: 800;
}
.mnav__foot { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; padding: 16px 20px; border-top: 1px solid var(--line-dark); background: var(--ink); }
.mnav__foot > :first-child { grid-column: 1 / -1; }
.scrim { position: fixed; inset: 0; z-index: 110; background: rgba(4,7,10,.66); backdrop-filter: blur(3px); opacity: 0; visibility: hidden; transition: opacity .3s, visibility .3s; }
.scrim.is-on { opacity: 1; visibility: visible; }

/* ==========================================================================
   HERO
   ========================================================================== */
.hero { position: relative; background: var(--ink); color: var(--on-dark); overflow: hidden; }
.hero__slides { position: relative; min-height: clamp(560px, 82vh, 800px); }
.hero__slide {
  position: absolute; inset: 0; opacity: 0; visibility: hidden;
  transition: opacity .9s var(--ease), visibility .9s;
  display: flex; align-items: center;
}
.hero__slide.is-on { opacity: 1; visibility: visible; }
.hero__bg { position: absolute; inset: 0; background-size: cover; background-position: center; transform: scale(1.06); transition: transform 8s linear; }
.hero__slide.is-on .hero__bg { transform: scale(1); }
.hero__veil {
  position: absolute; inset: 0;
  background:
    linear-gradient(100deg, rgba(6,9,13,.94) 0%, rgba(6,9,13,.80) 42%, rgba(6,9,13,.34) 72%, rgba(6,9,13,.62) 100%),
    linear-gradient(0deg, rgba(6,9,13,.86) 0%, transparent 46%);
}
.hero__in { position: relative; z-index: 2; width: 100%; padding-block: 80px 120px; }
.hero__box { max-width: 720px; }
.hero__kicker {
  display: inline-flex; align-items: center; gap: 10px; margin-bottom: 20px;
  padding: 7px 14px; border: 1px solid rgba(245,166,35,.34); border-radius: 100px;
  background: rgba(245,166,35,.08);
  font-size: 11.5px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--amber);
}
.hero__kicker .ic { width: 15px; height: 15px; }
.hero__title {
  font-family: var(--f-display); font-weight: 600; text-transform: uppercase;
  font-size: clamp(40px, 6.6vw, 88px); line-height: .96; letter-spacing: .004em;
}
.hero__title em { font-style: normal; color: var(--amber); display: block; }
.hero__text { margin-top: 20px; font-size: clamp(16px, 1.45vw, 19px); color: #C4CEDB; max-width: 58ch; }
.hero__acts { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 34px; }

.hero__nav { position: absolute; left: 0; right: 0; bottom: 32px; z-index: 3; }
.hero__dots { display: flex; gap: 10px; }
.hero__dot {
  width: 46px; height: 3px; border: 0; padding: 0; background: rgba(255,255,255,.22); position: relative; overflow: hidden;
}
.hero__dot::after { content: ''; position: absolute; inset: 0; background: var(--amber); transform: scaleX(0); transform-origin: left; }
.hero__dot.is-on::after { animation: dot 7s linear forwards; }
@keyframes dot { to { transform: scaleX(1); } }

/* trust strip */
.trust { background: var(--ink-2); border-top: 1px solid var(--line-dark); border-bottom: 1px solid var(--line-dark); color: var(--on-dark); }
.trust__in { display: grid; grid-template-columns: repeat(5, 1fr); }
.trust__i { padding: 26px 22px; border-left: 1px solid var(--line-dark); }
.trust__i:first-child { border-left: 0; }
.trust__v { font-family: var(--f-display); font-size: clamp(30px, 3.4vw, 44px); font-weight: 600; color: var(--amber); line-height: 1; }
.trust__l { margin-top: 7px; font-size: 12.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.trust__s { margin-top: 3px; font-size: 12.5px; color: var(--on-dark-dim); }

/* ==========================================================================
   BANNER (interior pages)
   ========================================================================== */
.banner {
  position: relative; background: var(--ink) var(--banner-img) center/cover no-repeat;
  color: var(--on-dark); overflow: hidden;
}
.banner__veil {
  position: absolute; inset: 0;
  background: linear-gradient(95deg, rgba(6,9,13,.95) 0%, rgba(6,9,13,.84) 46%, rgba(6,9,13,.52) 100%);
}
.banner__in { position: relative; z-index: 1; padding-block: clamp(52px, 7vw, 90px); }
.banner__title { font-family: var(--f-display); font-weight: 600; text-transform: uppercase; font-size: clamp(31px, 4.8vw, 60px); line-height: 1.02; margin-top: 6px; }
.banner__title em { font-style: normal; color: var(--amber); }
.banner__lead { margin-top: 16px; max-width: 70ch; font-size: 17px; color: #B7C2D0; }

.crumbs { margin-bottom: 18px; }
.crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 12.5px; color: var(--on-dark-dim); }
.crumbs li + li::before { content: '/'; margin-right: 8px; color: var(--on-dark-dim); }
.crumbs a:hover { color: var(--amber); }
.crumbs span { color: var(--on-dark-mu); }

/* ==========================================================================
   CARDS & GRIDS
   ========================================================================== */
.grid { display: grid; gap: 22px; }
.g-2 { grid-template-columns: repeat(2, 1fr); }
.g-3 { grid-template-columns: repeat(3, 1fr); }
.g-4 { grid-template-columns: repeat(4, 1fr); }
.g-5 { grid-template-columns: repeat(5, 1fr); }

/* feature card */
.fcard {
  padding: 30px 26px; background: var(--paper); border: 1px solid var(--line-light);
  border-radius: var(--rad-lg); position: relative; overflow: hidden;
  transition: transform .26s var(--ease), box-shadow .26s var(--ease), border-color .26s;
}
.fcard::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--amber); transform: scaleY(0); transform-origin: top; transition: transform .3s var(--ease); }
.fcard:hover { transform: translateY(-4px); box-shadow: var(--sh-2); border-color: transparent; }
.fcard:hover::before { transform: scaleY(1); }
.fcard__ic {
  width: 50px; height: 50px; display: grid; place-items: center; margin-bottom: 18px;
  background: linear-gradient(150deg, var(--blue), var(--blue-dk)); color: #fff; border-radius: var(--rad);
}
.fcard__ic .ic { width: 24px; height: 24px; }
.fcard h3 { font-family: var(--f-display); font-size: 21px; text-transform: uppercase; letter-spacing: .012em; margin-bottom: 9px; }
.fcard p { font-size: 14.5px; color: var(--on-light-mu); }
.fcard__n { position: absolute; right: 18px; top: 12px; font-family: var(--f-display); font-size: 52px; font-weight: 600; color: var(--paper-2); line-height: 1; }

.sec--dark .fcard, .sec--ink .fcard { background: var(--ink-2); border-color: var(--line-dark); }
.sec--dark .fcard p, .sec--ink .fcard p { color: var(--on-dark-mu); }
.sec--dark .fcard__n, .sec--ink .fcard__n { color: rgba(255,255,255,.05); }
.sec--dark .fcard:hover, .sec--ink .fcard:hover { border-color: var(--line-dark-2); box-shadow: 0 24px 60px rgba(0,0,0,.44); }

/* product card */
.pcard {
  background: var(--paper); border: 1px solid var(--line-light); border-radius: var(--rad-lg);
  overflow: hidden; display: flex; flex-direction: column;
  transition: transform .26s var(--ease), box-shadow .26s var(--ease), border-color .26s;
}
.pcard:hover { transform: translateY(-5px); box-shadow: var(--sh-2); border-color: transparent; }
.pcard__media {
  position: relative; display: grid; place-items: center; padding: 30px 22px; min-height: 190px;
  background: radial-gradient(ellipse at 50% 120%, #DFE6EF, #FFFFFF 68%);
}
.pcard__media img { max-height: 130px; width: auto; object-fit: contain; transition: transform .4s var(--ease); }
.pcard:hover .pcard__media img { transform: scale(1.06); }
.pcard__tag {
  position: absolute; left: 14px; top: 14px; padding: 4px 10px; border-radius: 100px;
  background: var(--amber); border: 1px solid var(--amber); color: #14181D;
  font-size: 10.5px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
}
.pcard__body { padding: 22px; display: flex; flex-direction: column; flex: 1; }
.pcard__model { font-family: var(--f-mono); font-size: 12px; letter-spacing: .1em; color: var(--blue); font-weight: 700; }
.pcard__title { font-family: var(--f-display); font-size: 24px; text-transform: uppercase; margin: 4px 0 16px; }
.pcard__title a:hover { color: var(--blue); }
.pcard__spec { margin: 0 0 18px; border-top: 1px solid var(--line-light); }
.pcard__spec > div { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line-light); font-size: 13.5px; }
.pcard__spec dt { color: var(--on-light-mu); margin: 0; }
.pcard__spec dd { margin: 0; font-weight: 700; }
.pcard__link {
  margin-top: auto; display: inline-flex; align-items: center; gap: 8px;
  font-size: 12.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--blue);
}
.pcard__link .ic { width: 15px; height: 15px; transition: transform .22s var(--ease); }
.pcard__link:hover .ic { transform: translateX(4px); }
.pcard--sm .pcard__media { min-height: 150px; padding: 20px; }
.pcard--sm .pcard__media img { max-height: 96px; }
.pcard--sm .pcard__title { font-size: 20px; }

.sec--dark .pcard, .sec--ink .pcard { background: var(--ink-2); border-color: var(--line-dark); }
.sec--dark .pcard__spec, .sec--ink .pcard__spec,
.sec--dark .pcard__spec > div, .sec--ink .pcard__spec > div { border-color: var(--line-dark); }
.sec--dark .pcard__spec dt, .sec--ink .pcard__spec dt { color: var(--on-dark-dim); }
.sec--dark .pcard__model, .sec--ink .pcard__model,
.sec--dark .pcard__link, .sec--ink .pcard__link { color: var(--amber); }
.sec--dark .pcard__title a:hover, .sec--ink .pcard__title a:hover { color: var(--amber); }

/* application tile */
.acard {
  position: relative; display: block; border-radius: var(--rad-lg); overflow: hidden;
  background: var(--ink-2); border: 1px solid var(--line-dark); min-height: 190px;
  color: var(--on-dark); transition: transform .26s var(--ease), border-color .26s;
}
.acard:hover { transform: translateY(-4px); border-color: var(--amber); }
.acard__img { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: .34; transition: opacity .3s, transform .5s var(--ease); }
.acard:hover .acard__img { opacity: .5; transform: scale(1.05); }
.acard__veil { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(6,9,13,.95) 8%, rgba(6,9,13,.42) 100%); }
.acard__in { position: relative; z-index: 1; padding: 22px; display: flex; flex-direction: column; justify-content: flex-end; min-height: 190px; }
.acard__ic { width: 38px; height: 38px; display: grid; place-items: center; border: 1px solid rgba(245,166,35,.4); border-radius: var(--rad); color: var(--amber); margin-bottom: auto; }
.acard__ic .ic { width: 20px; height: 20px; }
.acard h3 { font-family: var(--f-display); font-size: 20px; text-transform: uppercase; margin-top: 16px; }
.acard span { display: inline-flex; align-items: center; gap: 7px; margin-top: 8px; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--amber); }
.acard span .ic { width: 14px; height: 14px; transition: transform .22s var(--ease); }
.acard:hover span .ic { transform: translateX(4px); }

/* stat tiles */
.stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--line-light); border: 1px solid var(--line-light); border-radius: var(--rad-lg); overflow: hidden; }
/* Column counts belong in classes, never in a style attribute: an inline
   grid-template-columns outranks every media query, so a grid written that way
   keeps its desktop column count on a phone and the breakpoints below are
   silently dead. */
.stats--2 { grid-template-columns: repeat(2, 1fr); }
.stats--3 { grid-template-columns: repeat(3, 1fr); }
.stats--7 { grid-template-columns: repeat(7, 1fr); }
.stat { background: var(--paper); padding: 26px 22px; }
.stat__v { font-family: var(--f-display); font-size: clamp(28px, 3vw, 40px); font-weight: 600; color: var(--blue); line-height: 1; }
.stat__l { margin-top: 6px; font-size: 12.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.stat__s { margin-top: 3px; font-size: 13px; color: var(--on-light-mu); }
.sec--dark .stats, .sec--ink .stats { background: var(--line-dark); border-color: var(--line-dark); }
.sec--dark .stat, .sec--ink .stat { background: var(--ink-2); }
.sec--dark .stat__v, .sec--ink .stat__v { color: var(--amber); }
.sec--dark .stat__s, .sec--ink .stat__s { color: var(--on-dark-dim); }

/* split media block */
.split { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(30px, 5vw, 66px); align-items: center; }
.split--wide-l { grid-template-columns: 1.15fr .85fr; }
.split--wide-r { grid-template-columns: .85fr 1.15fr; }
.split__media { position: relative; border-radius: var(--rad-lg); overflow: hidden; }
.split__media img { width: 100%; }
.split__media--frame { border: 1px solid var(--line-light); background: var(--paper-1); padding: 0; }
.split__badge {
  position: absolute; left: 22px; bottom: 22px; padding: 14px 20px;
  background: var(--amber); color: #14181D; border-radius: var(--rad);
}
.split__badge b { display: block; font-family: var(--f-display); font-size: 30px; line-height: 1; }
.split__badge span { font-size: 11.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }

/* product gallery — one stage, four views
   The stage is a scroll-snap track rather than a JS-animated carousel, so a
   swipe on a phone is handled by the browser and the thumbs only have to
   scroll it. */
.pgal__stage { position: relative; }
.pgal__track {
  display: flex; overflow-x: auto; overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory; scrollbar-width: none;
  border: 1px solid var(--line-light); border-radius: var(--rad-lg);
  background: var(--paper-1);
}
.pgal__track::-webkit-scrollbar { display: none; }
.pgal__slide { flex: 0 0 100%; margin: 0; scroll-snap-align: center; }
.pgal__slide img { display: block; width: 100%; height: auto; cursor: zoom-in; }

.pgal__nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 42px; height: 42px; display: grid; place-items: center;
  -webkit-appearance: none; appearance: none; padding: 0; cursor: pointer;
  background: rgba(255,255,255,.94); border: 1px solid var(--line-light-2);
  border-radius: 50%; color: var(--on-light);
  box-shadow: 0 2px 10px rgba(10,20,30,.10);
  transition: background .2s var(--ease), color .2s var(--ease), opacity .2s var(--ease);
}
.pgal__nav .ic { width: 20px; height: 20px; }
.pgal__nav--prev { left: 14px; }
.pgal__nav--next { right: 14px; }
.pgal__nav:hover { background: var(--amber); color: #14181D; border-color: var(--amber); }
.pgal__nav[disabled] { opacity: 0; pointer-events: none; }

.pgal__thumbs { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-top: 12px; }
.pgal__t {
  -webkit-appearance: none; appearance: none; padding: 0; line-height: 0; cursor: pointer;
  background: var(--paper-1); border: 1px solid var(--line-light);
  border-radius: var(--rad); overflow: hidden;
  transition: border-color .2s var(--ease), box-shadow .2s var(--ease);
}
.pgal__t img { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.pgal__t:hover { border-color: var(--line-light-2); }
.pgal__t.is-on { border-color: var(--amber); box-shadow: 0 0 0 2px rgba(245,166,35,.28); }

/* caption sits below the thumbs so a two-line caption cannot shift them */
.pgal__cap { margin: 14px 0 0; font-size: 13.5px; color: var(--on-light-mu); text-align: center; }

/* checklist */
.checks li { position: relative; padding-left: 34px; margin-bottom: 13px; font-size: 15px; }
.checks li .ic { position: absolute; left: 0; top: 2px; width: 20px; height: 20px; padding: 3px; color: var(--amber); background: rgba(245,166,35,.13); border-radius: 50%; }

/* ==========================================================================
   SIZE SELECTOR / CALCULATORS
   ========================================================================== */
.tool {
  background: var(--ink-2); border: 1px solid var(--line-dark); border-radius: var(--rad-lg);
  padding: clamp(24px, 3.4vw, 40px); color: var(--on-dark);
}
.tool--light { background: var(--paper); border-color: var(--line-light); color: var(--on-light); }
.tool__grid { display: grid; grid-template-columns: repeat(3, 1fr) auto; gap: 16px; align-items: end; }
.tool__out {
  margin-top: 26px; padding-top: 26px; border-top: 1px solid var(--line-dark);
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px;
}
.tool--light .tool__out { border-color: var(--line-light); }
.tool__o-l { font-size: 11.5px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--on-dark-dim); }
.tool--light .tool__o-l { color: var(--on-light-mu); }
.tool__o-v { font-family: var(--f-display); font-size: clamp(24px, 2.6vw, 34px); font-weight: 600; color: var(--amber); line-height: 1.1; margin-top: 5px; }
.tool--light .tool__o-v { color: var(--blue); }
.tool__hint { margin-top: 16px; font-size: 13px; color: var(--on-dark-dim); }
.tool--light .tool__hint { color: var(--on-light-mu); }

/* ==========================================================================
   FORMS
   ========================================================================== */
.form { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.form--1 { grid-template-columns: 1fr; }
.form--4 { grid-template-columns: repeat(4, 1fr); }
.field { display: flex; flex-direction: column; gap: 7px; }
.field--wide { grid-column: 1 / -1; }
.field label { font-size: 12px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--on-light-mu); }
.field .req { color: var(--amber-dk); margin-left: 3px; }
.field input, .field select, .field textarea {
  width: 100%; padding: 12px 14px; font: inherit; font-size: 15px;
  background: var(--paper); color: var(--on-light);
  border: 1px solid var(--line-light-2); border-radius: var(--rad);
  transition: border-color .18s, box-shadow .18s;
}
.field textarea { resize: vertical; min-height: 96px; }
.field input:focus, .field select:focus, .field textarea:focus {
  outline: none; border-color: var(--blue); box-shadow: 0 0 0 3px rgba(46,90,168,.16);
}
.field input::placeholder, .field textarea::placeholder { color: #9AA5B2; }

/* ---- "how to measure" helper / explainer video slot ---------------------- */
.howto {
  margin-top: 18px; padding: 14px 16px; border-radius: var(--rad);
  background: rgba(46,90,168,.07); border: 1px solid rgba(46,90,168,.22);
}
.howto__head { display: flex; align-items: center; gap: 9px; }
.howto__ic {
  width: 26px; height: 26px; flex: none; display: grid; place-items: center;
  border-radius: 50%; background: var(--amber); color: #14181D;
}
.howto__head strong { font-size: 14px; }
.howto p { margin: 8px 0 0; font-size: 13px; line-height: 1.55; color: var(--on-light-mu); }
.howto video, .howto iframe { width: 100%; margin-top: 10px; border-radius: var(--rad); display: block; }
.sec--dark .howto, .sec--ink .howto { background: rgba(255,255,255,.04); border-color: var(--line-dark); }
.sec--dark .howto p, .sec--ink .howto p { color: var(--on-dark-mu); }

/* ---- bay-wise dimensions ------------------------------------------------- */
/* The modal box is light, so only the dark page sections get the dark variants. */
.field__hint { display: block; margin-top: 6px; font-size: 12.5px; line-height: 1.5; color: var(--on-light-mu); }
.sec--dark .field__hint, .sec--ink .field__hint,
.tool:not(.tool--light) .field__hint { color: var(--on-dark-dim); }

.bayrows { gap: 10px; }
.bayrow {
  display: grid; grid-template-columns: 62px repeat(3, 1fr); gap: 10px; align-items: end;
  padding: 12px; border: 1px solid var(--line-light); border-radius: var(--rad);
  background: var(--paper-1);
}
.bayrow__n {
  align-self: center; font-size: 11.5px; font-weight: 800; letter-spacing: .08em;
  text-transform: uppercase; color: var(--blue);
}
.bayrow label { display: flex; flex-direction: column; gap: 5px; }
.bayrow label span {
  font-size: 11px; font-weight: 700; letter-spacing: .07em;
  text-transform: uppercase; color: var(--on-light-mu);
}
.bayrow input {
  width: 100%; padding: 9px 11px; font: inherit; font-size: 14.5px;
  background: var(--paper); color: var(--on-light);
  border: 1px solid var(--line-light-2); border-radius: var(--rad);
}
.bayrow input:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 3px rgba(46,90,168,.16); }
.bayrow__total {
  margin: 4px 0 0; font-size: 13px; font-weight: 600; color: var(--blue);
}

/* dark page sections carry their own feasibility form */
.sec--dark .bayrow, .sec--ink .bayrow {
  background: rgba(255,255,255,.03); border-color: var(--line-dark);
}
.sec--dark .bayrow__n, .sec--ink .bayrow__n { color: var(--amber); }
.sec--dark .bayrow label span, .sec--ink .bayrow label span { color: var(--on-dark-mu); }
.sec--dark .bayrow input, .sec--ink .bayrow input {
  background: var(--ink-3); color: var(--on-dark); border-color: var(--line-dark-2);
}
.sec--dark .bayrow input:focus, .sec--ink .bayrow input:focus {
  border-color: var(--amber); box-shadow: 0 0 0 3px rgba(245,166,35,.18);
}
.sec--dark .bayrow__total, .sec--ink .bayrow__total { color: var(--amber); }

@media (max-width: 560px) {
  .bayrow { grid-template-columns: 1fr 1fr; }
  .bayrow__n { grid-column: 1 / -1; }
}

.form__foot { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; gap: 16px; margin-top: 6px; }
.form__note { font-size: 12.5px; color: var(--on-light-mu); margin: 0; max-width: 42ch; }
.form__status { grid-column: 1 / -1; margin: 0; font-size: 14px; min-height: 0; }
.form__status.is-ok { color: #1D7A46; font-weight: 600; }
.form__status.is-err { color: #C0392B; font-weight: 600; }

/* dark context */
.sec--dark .field label, .sec--ink .field label, .tool:not(.tool--light) .field label,
.modal__body--dark .field label { color: var(--on-dark-mu); }
.sec--dark .field input, .sec--dark .field select, .sec--dark .field textarea,
.sec--ink .field input, .sec--ink .field select, .sec--ink .field textarea,
.tool:not(.tool--light) .field input, .tool:not(.tool--light) .field select, .tool:not(.tool--light) .field textarea {
  background: var(--ink-3); color: var(--on-dark); border-color: var(--line-dark-2);
}
.sec--dark .field input:focus, .sec--ink .field input:focus,
.tool:not(.tool--light) .field input:focus, .tool:not(.tool--light) .field select:focus {
  border-color: var(--amber); box-shadow: 0 0 0 3px rgba(245,166,35,.18);
}
.sec--dark .form__note, .sec--ink .form__note { color: var(--on-dark-dim); }
.sec--dark .form__status.is-ok, .sec--ink .form__status.is-ok, .modal .form__status.is-ok { color: #5FD69A; }

/* ==========================================================================
   TABS
   ========================================================================== */
.tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 30px; }
.tab {
  padding: 11px 22px; background: transparent; border: 1px solid var(--line-light-2); border-radius: 100px;
  font-size: 13px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase;
  transition: background .18s, color .18s, border-color .18s;
}
.tab:hover { border-color: var(--blue); color: var(--blue); }
.tab.is-on { background: var(--ink-1); border-color: var(--ink-1); color: #fff; }
.sec--dark .tab, .sec--ink .tab { border-color: var(--line-dark-2); color: var(--on-dark-mu); }
.sec--dark .tab:hover, .sec--ink .tab:hover { border-color: var(--amber); color: var(--amber); }
.sec--dark .tab.is-on, .sec--ink .tab.is-on { background: var(--amber); border-color: var(--amber); color: #14181D; }
.tabpane { display: none; }
.tabpane.is-on { display: block; animation: fadeUp .38s var(--ease); }
@keyframes fadeUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }

/* ==========================================================================
   PRODUCT RANGE (homepage)
   Category panel on the left, model rows on the right — so a 5-model and a
   4-model category both read as a complete block instead of leaving a hole
   in a fixed grid.
   ========================================================================== */
/* Section heading with an action (switcher, button) pulled to the right. */
.sec-top {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 34px;
  margin-bottom: clamp(30px, 4vw, 46px);
}
.sec-top .sec-head { margin-bottom: 0; }
.sec-top > .btn { flex: none; }

/* segmented control */
.seg {
  display: flex; flex: none; padding: 5px; gap: 4px;
  background: var(--paper-2); border-radius: 100px;
}
.seg__b {
  display: flex; flex-direction: column; align-items: center; gap: 1px;
  padding: 11px 26px; border: 0; border-radius: 100px; background: transparent;
  font-size: 14px; font-weight: 700; letter-spacing: .04em; color: var(--on-light-mu);
  transition: background .24s var(--ease), color .24s var(--ease), box-shadow .24s var(--ease);
}
.seg__b em {
  font-style: normal; font-size: 10.5px; font-weight: 600; letter-spacing: .12em;
  text-transform: uppercase; opacity: .68;
}
.seg__b:hover { color: var(--on-light); }
.seg__b.is-on { background: var(--ink-1); color: #fff; box-shadow: var(--sh-1); }
.seg__b.is-on em { color: var(--amber); opacity: 1; }

.range__grid { display: grid; grid-template-columns: 340px 1fr; gap: 24px; align-items: start; }

/* category panel */
.range__panel {
  border: 1px solid var(--line-light); border-radius: var(--rad-lg); overflow: hidden;
  background: var(--paper);
}
.range__media {
  position: relative; display: grid; place-items: center; padding: 30px 24px; min-height: 190px;
  background: radial-gradient(ellipse at 50% 120%, #DFE6EF, #FFFFFF 68%);
}
.range__media img { max-height: 132px; width: auto; object-fit: contain; }
.range__badge {
  position: absolute; left: 16px; top: 16px; padding: 5px 12px; border-radius: 100px;
  background: rgba(245,166,35,.14); border: 1px solid rgba(245,166,35,.36); color: var(--amber);
  font-size: 10.5px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
}
.range__body { padding: 24px; }
.range__body h3 { font-family: var(--f-display); font-size: 25px; text-transform: uppercase; letter-spacing: .012em; }
.range__body p { margin-top: 10px; font-size: 14px; color: var(--on-light-mu); }

.range__spread { margin: 20px 0 22px; border-top: 1px solid var(--line-light); }
.range__spread > div {
  display: flex; align-items: baseline; justify-content: space-between; gap: 14px;
  padding: 10px 0; border-bottom: 1px solid var(--line-light);
}
.range__spread dt { margin: 0; font-size: 11px; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; color: var(--on-light-mu); }
.range__spread dd { margin: 0; font-family: var(--f-display); font-size: 19px; font-weight: 600; color: var(--blue); }

/* model rows */
.range__list { border: 1px solid var(--line-light); border-radius: var(--rad-lg); overflow: hidden; }
.mrow {
  display: grid; grid-template-columns: 76px minmax(150px, 1.1fr) repeat(3, 1fr) 44px;
  align-items: center; gap: 18px; padding: 16px 20px;
  border-bottom: 1px solid var(--line-light);
  transition: background .2s var(--ease);
}
.mrow:hover { background: var(--paper-1); }

.mrow__size {
  display: grid; place-items: center; align-content: center; width: 62px; height: 62px;
  border-radius: var(--rad); background: var(--ink-1); color: #fff;
  font-family: var(--f-display); font-size: 27px; font-weight: 600; line-height: 1;
  transition: background .22s var(--ease), color .22s var(--ease);
}
.mrow__size i { font-style: normal; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; opacity: .66; margin-top: 2px; }
.mrow:hover .mrow__size { background: var(--amber); color: #14181D; }
.mrow:hover .mrow__size i { opacity: .8; }

.mrow__id b { display: block; font-family: var(--f-mono); font-size: 14px; letter-spacing: .07em; color: var(--blue); }
.mrow__id em { display: block; font-style: normal; font-size: 14.5px; font-weight: 600; margin-top: 3px; }

.mrow__spec { font-size: 14.5px; font-weight: 600; }
.mrow__spec i {
  display: block; font-style: normal; font-size: 10.5px; font-weight: 700;
  letter-spacing: .11em; text-transform: uppercase; color: var(--on-light-mu); margin-bottom: 3px;
}

.mrow__go {
  display: grid; place-items: center; width: 38px; height: 38px; justify-self: end;
  border: 1px solid var(--line-light-2); border-radius: 50%; color: var(--on-light-mu);
  transition: all .22s var(--ease);
}
.mrow__go .ic { width: 16px; height: 16px; }
.mrow:hover .mrow__go { border-color: var(--amber); background: var(--amber); color: #14181D; }

.range__foot {
  display: flex; flex-wrap: wrap; align-items: center; gap: 20px;
  padding: 20px; background: var(--paper-1);
}

@media (max-width: 1100px) {
  .range__grid { grid-template-columns: 1fr; }
  .range__panel { display: grid; grid-template-columns: 300px 1fr; }
  .range__media { min-height: 100%; }
}
@media (max-width: 900px) {
  .sec-top { flex-direction: column; align-items: flex-start; gap: 24px; }
  .seg { width: 100%; }
  .seg__b { flex: 1; padding-inline: 14px; }
  .mrow { grid-template-columns: 62px 1fr 38px; gap: 14px; row-gap: 12px; }
  .mrow__id { grid-column: 2 / 3; }
  .mrow__spec { grid-column: 2 / 4; display: flex; align-items: baseline; gap: 8px; font-size: 13.5px; }
  .mrow__spec i { margin: 0; }
  .mrow__go { grid-row: 1; grid-column: 3; }
}
@media (max-width: 620px) {
  .range__panel { grid-template-columns: 1fr; }
}

/* filter chips */
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip {
  padding: 8px 16px; border: 1px solid var(--line-light-2); border-radius: 100px; background: transparent;
  font-size: 12.5px; font-weight: 600; transition: all .18s;
}
.chip:hover { border-color: var(--blue); color: var(--blue); }
.chip.is-on { background: var(--blue); border-color: var(--blue); color: #fff; }

/* ==========================================================================
   TABLES
   ========================================================================== */
.tbl-wrap { overflow-x: auto; border: 1px solid var(--line-light); border-radius: var(--rad-lg); }
.tbl { min-width: 640px; font-size: 14.5px; }
.tbl th, .tbl td { padding: 14px 18px; text-align: left; border-bottom: 1px solid var(--line-light); }
.tbl thead th {
  background: var(--ink-1); color: var(--on-dark); font-size: 11.5px; font-weight: 800;
  letter-spacing: .12em; text-transform: uppercase; border-bottom: 0; white-space: nowrap;
}
.tbl tbody tr:last-child td { border-bottom: 0; }
.tbl tbody tr:nth-child(even) { background: var(--paper-1); }
.tbl th[scope="row"] { font-weight: 700; color: var(--on-light); width: 34%; background: var(--paper-1); }
.tbl td strong { color: var(--blue); }
.tbl .is-hi { background: rgba(245,166,35,.09) !important; }

.sec--dark .tbl-wrap, .sec--ink .tbl-wrap { border-color: var(--line-dark); }
.sec--dark .tbl th, .sec--dark .tbl td, .sec--ink .tbl th, .sec--ink .tbl td { border-color: var(--line-dark); }
.sec--dark .tbl thead th, .sec--ink .tbl thead th { background: var(--ink-3); }
.sec--dark .tbl tbody tr:nth-child(even), .sec--ink .tbl tbody tr:nth-child(even) { background: rgba(255,255,255,.025); }
.sec--dark .tbl th[scope="row"], .sec--ink .tbl th[scope="row"] { background: rgba(255,255,255,.04); color: var(--on-dark); }

/* Filter and selector rows. The column count is a --cols custom property, not
   an inline grid-template-columns: a custom property carries the per-page value
   without outranking the breakpoints underneath it. */
.selgrid { display: grid; gap: 16px; grid-template-columns: repeat(var(--cols, 3), 1fr); }
@media (max-width: 1024px) { .selgrid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 640px)  { .selgrid { grid-template-columns: 1fr; } }

/* spec chips */
.chipspec { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--line-light); border: 1px solid var(--line-light); border-radius: var(--rad-lg); overflow: hidden; }
.chipspec--2 { grid-template-columns: repeat(2, 1fr); }
.chipspec > div { background: var(--paper); padding: 16px 18px; }
.chipspec dt { font-size: 11px; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; color: var(--on-light-mu); margin: 0; }
.chipspec dd { margin: 5px 0 0; font-family: var(--f-display); font-size: 23px; font-weight: 600; line-height: 1.1; }

/* ==========================================================================
   ACCORDION
   ========================================================================== */
.accordion { border: 1px solid var(--line-light); border-radius: var(--rad-lg); overflow: hidden; }
.acc + .acc { border-top: 1px solid var(--line-light); }
.acc__q {
  display: flex; align-items: center; justify-content: space-between; gap: 20px; width: 100%;
  padding: 18px 22px; background: transparent; border: 0; text-align: left;
  font-size: 16px; font-weight: 600; transition: background .18s, color .18s;
}
.acc__q:hover { background: var(--paper-1); color: var(--blue); }
.acc__ic { width: 20px; height: 20px; flex: none; color: var(--blue); transition: transform .28s var(--ease); }
.acc.is-open .acc__q { color: var(--blue); }
.acc.is-open .acc__ic { transform: rotate(135deg); }
.acc__a { max-height: 0; overflow: hidden; transition: max-height .32s var(--ease); }
.acc.is-open .acc__a { max-height: 720px; }
.acc__a-in { padding: 0 22px 20px; color: var(--on-light-mu); font-size: 15px; max-width: 82ch; }

.sec--dark .accordion, .sec--ink .accordion { border-color: var(--line-dark); }
.sec--dark .acc + .acc, .sec--ink .acc + .acc { border-color: var(--line-dark); }
.sec--dark .acc__q:hover, .sec--ink .acc__q:hover { background: rgba(255,255,255,.04); color: var(--amber); }
.sec--dark .acc__ic, .sec--ink .acc__ic { color: var(--amber); }
.sec--dark .acc.is-open .acc__q, .sec--ink .acc.is-open .acc__q { color: var(--amber); }
.sec--dark .acc__a-in, .sec--ink .acc__a-in { color: var(--on-dark-mu); }

/* ==========================================================================
   PROCESS TIMELINE
   ========================================================================== */
.process { display: grid; grid-template-columns: repeat(6, 1fr); gap: 0; position: relative; }
.process::before { content: ''; position: absolute; left: 0; right: 0; top: 27px; height: 1px; background: var(--line-dark); }
.pstep { position: relative; padding: 0 16px; }
.pstep:first-child { padding-left: 0; }
.pstep:last-child { padding-right: 0; }
.pstep__n {
  position: relative; z-index: 1; width: 54px; height: 54px; display: grid; place-items: center;
  background: var(--ink-2); border: 1px solid var(--line-dark-2); border-radius: 50%;
  font-family: var(--f-display); font-size: 21px; font-weight: 600; color: var(--amber); margin-bottom: 18px;
  transition: background .24s, border-color .24s, color .24s;
}
.pstep:hover .pstep__n { background: var(--amber); border-color: var(--amber); color: #14181D; }
.pstep h3 { font-family: var(--f-display); font-size: 17.5px; text-transform: uppercase; letter-spacing: .014em; line-height: 1.2; }
.pstep p { margin-top: 8px; font-size: 13.5px; color: var(--on-dark-mu); }
.sec--white .process::before, .sec--paper .process::before { background: var(--line-light-2); }
.sec--white .pstep__n, .sec--paper .pstep__n { background: var(--paper); border-color: var(--line-light-2); color: var(--blue); }
.sec--white .pstep p, .sec--paper .pstep p { color: var(--on-light-mu); }

/* ==========================================================================
   MILESTONE TIMELINE (vertical)
   ========================================================================== */
.tline { position: relative; padding-left: 34px; }
.tline::before { content: ''; position: absolute; left: 7px; top: 8px; bottom: 8px; width: 2px; background: linear-gradient(var(--amber), var(--blue)); }
.tline__i { position: relative; padding-bottom: 34px; }
.tline__i:last-child { padding-bottom: 0; }
.tline__i::before {
  content: ''; position: absolute; left: -34px; top: 6px; width: 16px; height: 16px;
  background: var(--paper); border: 3px solid var(--amber); border-radius: 50%;
}
.sec--dark .tline__i::before, .sec--ink .tline__i::before { background: var(--ink-1); }
.tline__y { font-family: var(--f-mono); font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--blue); }
.sec--dark .tline__y, .sec--ink .tline__y { color: var(--amber); }
.tline__i h3 { font-family: var(--f-display); font-size: 22px; text-transform: uppercase; margin: 4px 0 7px; }
.tline__i p { font-size: 14.5px; color: var(--on-light-mu); }
.sec--dark .tline__i p, .sec--ink .tline__i p { color: var(--on-dark-mu); }

/* ==========================================================================
   GALLERY
   ========================================================================== */
.gal { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; }
.gal__i {
  position: relative; border-radius: var(--rad-lg); overflow: hidden; cursor: pointer;
  aspect-ratio: 4 / 3; background: var(--ink-2); border: 0; padding: 0; display: block; width: 100%;
}
.gal__i img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.gal__i:hover img { transform: scale(1.07); }
.gal__ov {
  position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; padding: 18px;
  background: linear-gradient(0deg, rgba(6,9,13,.93) 6%, transparent 62%);
  opacity: 0; transition: opacity .28s; text-align: left; color: var(--on-dark);
}
.gal__i:hover .gal__ov { opacity: 1; }
.gal__ov b { font-family: var(--f-display); font-size: 19px; text-transform: uppercase; font-weight: 600; }
.gal__ov span { font-size: 12.5px; color: #B7C2D0; margin-top: 3px; }
.gal__ov em { font-style: normal; color: var(--amber); font-weight: 700; }
.gal__i.is-hidden { display: none; }

/* lightbox */
.lbox {
  position: fixed; inset: 0; z-index: 150; background: rgba(4,7,10,.95);
  display: none; padding: 32px; overflow: auto;
  place-items: center;
  /* Plain centring pushes anything taller than the overlay out past *both*
     edges, and a fixed layer has nowhere to scroll — the image simply loses its
     top and bottom. `safe` centring falls back to start-aligned in that case so
     the overflow stays reachable. Older browsers drop this and keep the line
     above. */
  place-items: safe center;
}
.lbox.is-on { display: grid; }
.lbox img {
  /* 84vh was the crop on phones: vh is measured against the viewport with the
     address bar *hidden*, so it is taller than what is actually on screen. dvh
     tracks the real visible height. The subtraction leaves the caption and the
     overlay padding their room, so the picture is never the thing that gives. */
  max-width: min(1100px, calc(100vw - 48px));
  max-height: 78vh;
  max-height: calc(100dvh - 130px);
  object-fit: contain; border-radius: var(--rad);
}
.lbox__cap { color: var(--on-dark); text-align: center; margin-top: 16px; font-size: 14px; max-width: 60ch; margin-inline: auto; }
/* fixed, not absolute — the overlay can scroll now, and the close button must
   not scroll away with the picture */
.lbox__x { position: fixed; right: 24px; top: 24px; width: 46px; height: 46px; display: grid; place-items: center; background: rgba(255,255,255,.07); border: 1px solid var(--line-dark-2); border-radius: var(--rad); color: #fff; }
.lbox__x:hover { background: var(--amber); color: #14181D; border-color: var(--amber); }

@media (max-width: 720px) {
  .lbox { padding: 14px; }
  /* the caption wraps to three lines at this width, so it needs a bigger share */
  .lbox img { max-width: calc(100vw - 24px); max-height: calc(100dvh - 155px); }
  .lbox__cap { font-size: 13px; margin-top: 12px; }
  .lbox__x { right: 12px; top: 12px; width: 40px; height: 40px; }
}

/* The product renders are transparent PNGs of a matt black fan. Dimming the page
   to near-black hides them, so for those the whole overlay goes light instead —
   the image keeps its own transparency and sits on the light wash, with no plate
   and no box around it. Photographs are opaque and stay on the dark overlay.
   These come after the base rules so the override does not lean on specificity. */
.lbox--plate { background: rgba(240, 244, 249, .97); }
.lbox--plate img { background: none; border-radius: 0; }
.lbox--plate .lbox__cap { color: var(--on-light); }
.lbox--plate .lbox__x {
  background: rgba(10,20,30,.06); border-color: var(--line-light-2); color: var(--on-light);
}
.lbox--plate .lbox__x:hover { background: var(--amber); color: #14181D; border-color: var(--amber); }

/* ==========================================================================
   REELS — vertical YouTube Shorts, click to play
   The card is a facade: thumbnail plus play button. The iframe is only built
   when someone actually asks to watch, so the homepage does not carry four
   YouTube players on every load.
   ========================================================================== */
.reels { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }

/* One reel per reason: the film sits above the claim it demonstrates. */
.reasons { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.reason__h {
  font-family: var(--f-display); font-size: 20px; text-transform: uppercase;
  letter-spacing: .012em; line-height: 1.15; margin: 16px 0 8px; color: var(--on-dark);
}
.reason__p { font-size: 14px; line-height: 1.6; color: var(--on-dark-mu); }
@media (max-width: 900px) { .reasons { grid-template-columns: repeat(2, 1fr); gap: 18px; } }
@media (max-width: 520px) { .reasons { grid-template-columns: 1fr; } }

.reel {
  position: relative; display: block; width: 100%; padding: 0; overflow: hidden;
  aspect-ratio: 9 / 16; border: 1px solid var(--line-dark); border-radius: var(--rad-lg);
  background: var(--ink-2); cursor: pointer;
  transition: transform .26s var(--ease), border-color .26s var(--ease), box-shadow .26s var(--ease);
}
.reel:hover { transform: translateY(-5px); border-color: var(--amber); box-shadow: 0 24px 60px rgba(0,0,0,.5); }

.reel__thumb { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease), opacity .3s; }
.reel:hover .reel__thumb { transform: scale(1.05); opacity: .85; }

.reel__play {
  position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
  width: 62px; height: 62px; display: grid; place-items: center; border-radius: 50%;
  background: var(--amber); color: #14181D; box-shadow: 0 10px 30px rgba(0,0,0,.45);
  transition: transform .26s var(--ease), background .2s;
}
.reel__play svg { margin-left: 3px; }
.reel:hover .reel__play { transform: translate(-50%, -50%) scale(1.12); background: var(--amber-lt); }

.reel__cap {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 34px 16px 14px;
  background: linear-gradient(0deg, rgba(6,9,13,.94) 20%, transparent);
  color: var(--on-dark); font-size: 13.5px; font-weight: 600; text-align: left;
}

/* once playing, the iframe replaces the facade inside the same box */
.reel.is-playing { cursor: default; transform: none; }
.reel.is-playing:hover { transform: none; box-shadow: none; }
.reel iframe { width: 100%; height: 100%; border: 0; display: block; }

@media (max-width: 900px) {
  .reels { grid-template-columns: repeat(2, 1fr); gap: 14px; }
}
@media (max-width: 480px) {
  .reel__play { width: 52px; height: 52px; }
}

/* ==========================================================================
   LOGO MARQUEE
   ========================================================================== */
/* Logos are shown in full colour, at full opacity. The point of a client wall
   is that the visitor recognises the brand — greyscale at 60% opacity is a
   design habit that throws that recognition away. */
/* The strip has to clip horizontally, or the track would widen the page — but
   overflow clips both axes, which cut the cards' shadow and their hover lift
   off at the top and bottom edge. The padding gives those room to render; the
   negative margin gives most of it back so the section keeps its rhythm. */
.marq {
  overflow: hidden;
  padding: 26px 0 38px; margin: -16px 0 -24px;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}
/* The source logos are 200x200. Showing them at 120px keeps roughly 1.7x pixel
   density, so they stay crisp on a retina screen — going much past this makes
   them soft, and upscaling the files would not add any detail. */
.marq__track { display: flex; gap: 24px; width: max-content; animation: marq 58s linear infinite; }
.marq:hover .marq__track { animation-play-state: paused; }
@keyframes marq { to { transform: translateX(-50%); } }
.marq__i {
  width: 324px; height: 204px; flex: none; display: grid; place-items: center; padding: 24px;
  background: var(--paper); border: 1px solid var(--line-light); border-radius: var(--rad-lg);
  box-shadow: var(--sh-1);
  transition: transform .24s var(--ease), box-shadow .24s var(--ease), border-color .24s;
}
.marq__i img { max-height: 146px; max-width: 100%; width: auto; object-fit: contain; }

.logowall { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.logowall__i {
  aspect-ratio: 16 / 10; display: grid; place-items: center; padding: 24px;
  background: var(--paper); border: 1px solid var(--line-light); border-radius: var(--rad-lg);
  box-shadow: var(--sh-1);
  transition: transform .24s var(--ease), box-shadow .24s var(--ease), border-color .24s;
}
.logowall__i img { max-height: 146px; max-width: 100%; width: auto; object-fit: contain; }

/* One hover for both the moving strip and the static wall, so they read as the
   same component. --sh-2 was too deep for a card this small: 44px of blur had
   to be clipped somewhere, and it muddied the neighbouring logo in the grid.
   The amber edge carries the brand and keeps the card's outline on hover,
   which transparent borders threw away. */
.marq__i:hover, .logowall__i:hover {
  transform: translateY(-5px);
  border-color: rgba(245,166,35,.55);
  box-shadow: 0 8px 26px rgba(8,11,15,.13);
}

/* With the animation stopped, a clipped one-screen-wide strip would show four
   of the twenty-four clients and hide the rest. Lay them out as a wall instead
   and drop the duplicate pass the loop needs. */
@media (prefers-reduced-motion: reduce) {
  .marq { overflow: visible; padding: 4px 0 0; margin: 0;
          -webkit-mask-image: none; mask-image: none; }
  .marq__track {
    flex-wrap: wrap; justify-content: center; width: 100%;
    max-width: var(--wrap); margin-inline: auto; padding-inline: 24px;
    gap: 16px; animation: none;
  }
  .marq__i.is-dupe { display: none; }
}

@media (max-width: 1024px) { .logowall { grid-template-columns: repeat(3, 1fr); } }

/* Every logo file is a 200x200 canvas, but most of them hold a wordmark that
   only occupies a fifth of that height — one is 195x25 of ink in the middle of
   the square. `contain` scales a square canvas by whichever side of the box is
   shorter, and a 16/11 card is always short, so the card's width went unused
   and those wordmarks came out around 9px tall on a phone. Squaring the card
   lets the same file scale to the full card width instead. */
@media (max-width: 720px) {
  .logowall { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .logowall__i { aspect-ratio: 1 / 1; padding: 12px; }
  .marq__i { width: 172px; height: 172px; padding: 14px; }
  /* the cap is what the card measures now, so let the box do the limiting */
  .logowall__i img, .marq__i img { max-height: 100%; }
}

/* ==========================================================================
   CTA BAND
   ========================================================================== */
.cta-band { background: linear-gradient(100deg, var(--blue-dk), var(--blue)); color: #fff; position: relative; overflow: hidden; }
.cta-band::after {
  content: ''; position: absolute; right: -60px; top: -60px; width: 380px; height: 380px; border-radius: 50%;
  background: radial-gradient(circle, rgba(245,166,35,.24), transparent 66%);
}
.cta-band__in { position: relative; z-index: 1; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 26px; padding-block: clamp(34px, 4.4vw, 56px); }
.cta-band__title { font-family: var(--f-display); font-size: clamp(24px, 3vw, 38px); text-transform: uppercase; font-weight: 600; }
.cta-band__text { margin-top: 9px; max-width: 62ch; color: rgba(255,255,255,.84); font-size: 15px; }
.cta-band__actions { display: flex; flex-wrap: wrap; gap: 12px; }
.cta-band .btn--ghost { border-color: rgba(255,255,255,.4); color: #fff; }
.cta-band .btn--ghost:hover { background: rgba(255,255,255,.12); border-color: #fff; color: #fff; }

/* ==========================================================================
   FOOTER
   ========================================================================== */
.foot { background: var(--ink); color: var(--on-dark-mu); font-size: 14px; }
.foot__main { padding-block: clamp(44px, 5vw, 70px); display: grid; grid-template-columns: 1.5fr 1fr 1fr 1fr 1.4fr; gap: 34px; }
.foot h4 { font-family: var(--f-body); font-size: 11.5px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--on-dark); margin-bottom: 18px; }
.foot ul li { margin-bottom: 9px; }
.foot a:hover { color: var(--amber); }
.foot__logo img { height: 44px; margin-bottom: 16px; }
.foot__badge {
  display: inline-flex; align-items: center; gap: 9px; margin-top: 16px; padding: 8px 14px;
  border: 1px solid var(--line-dark-2); border-radius: 100px; font-size: 12px; font-weight: 700;
  letter-spacing: .06em; text-transform: uppercase; color: var(--amber);
}
.foot__badge .ic { width: 16px; height: 16px; }
.foot__soc { display: flex; gap: 8px; margin-top: 18px; }
.foot__soc a { width: 36px; height: 36px; display: grid; place-items: center; border: 1px solid var(--line-dark); border-radius: var(--rad); }
.foot__soc a:hover { background: var(--amber); border-color: var(--amber); color: #14181D; }
.foot__c li { display: flex; gap: 11px; align-items: flex-start; margin-bottom: 14px; line-height: 1.55; }
.foot__c .ic { width: 17px; height: 17px; color: var(--blue-lt); margin-top: 3px; flex: none; }

/* Address opens Google Maps — the cue makes that discoverable without
   dressing the address itself up as a link. */
.foot__addr { display: block; }
.foot__addr-cue {
  display: inline-flex; align-items: center; gap: 6px; margin-top: 6px;
  font-size: 11.5px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase;
  color: var(--amber); opacity: .82; transition: opacity .2s var(--ease);
}
.foot__addr-cue .ic { width: 13px; height: 13px; color: inherit; margin-top: 0; transition: transform .22s var(--ease); }
.foot__addr:hover .foot__addr-cue { opacity: 1; }
.foot__addr:hover .foot__addr-cue .ic { transform: translateX(4px); }

/* ---- sales network ticker -------------------------------------------------
   A labelled, single-line scrolling list of the network cities. The track holds
   two identical passes of the list and translates exactly -50%, so the loop is
   seamless — which is why spacing lives on the item's margin rather than on a
   flex `gap` (a gap would make one pass wider than half the track and drift). */
.salesnet {
  position: relative;
  border-top: 1px solid var(--line-dark);
  border-bottom: 1px solid var(--line-dark);
  background:
    linear-gradient(90deg, rgba(46,90,168,.20), rgba(46,90,168,0) 52%),
    var(--ink-1);
}
.salesnet::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--amber);
}
.salesnet__in { display: flex; align-items: center; gap: 26px; min-height: 74px; }

.salesnet__lbl { flex: none; display: flex; align-items: center; gap: 12px; }
.salesnet__ic {
  width: 38px; height: 38px; flex: none; display: grid; place-items: center; border-radius: var(--rad);
  background: rgba(245,166,35,.12); border: 1px solid rgba(245,166,35,.34); color: var(--amber);
}
.salesnet__ic .ic { width: 19px; height: 19px; }
.salesnet__txt b {
  display: block; font-size: 11px; font-weight: 800; letter-spacing: .15em;
  text-transform: uppercase; color: var(--on-dark); line-height: 1.3;
}
.salesnet__txt em {
  display: block; font-style: normal; font-size: 12.5px; color: var(--amber); margin-top: 2px;
}

.salesnet__view {
  flex: 1; min-width: 0; overflow: hidden;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 5%, #000 93%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 5%, #000 93%, transparent);
}
.salesnet__track { display: flex; width: max-content; animation: marq 44s linear infinite; }
.salesnet__view:hover .salesnet__track,
.salesnet__view:focus-within .salesnet__track { animation-play-state: paused; }

.salesnet__city {
  display: inline-flex; align-items: center; gap: 9px; margin-right: 12px; flex: none;
  padding: 8px 16px; border: 1px solid var(--line-dark); border-radius: 100px;
  background: rgba(255,255,255,.03);
  font-size: 13px; font-weight: 500; color: var(--on-dark-mu); white-space: nowrap;
  transition: border-color .22s var(--ease), color .22s var(--ease), background .22s var(--ease);
}
.salesnet__city:hover { border-color: rgba(245,166,35,.5); background: rgba(245,166,35,.08); color: var(--on-dark); }
.salesnet__dot {
  width: 7px; height: 7px; flex: none; background: var(--blue-lt);
  transform: rotate(45deg); transition: background .22s var(--ease);
}
.salesnet__city:hover .salesnet__dot { background: var(--amber); }

@media (max-width: 860px) {
  .salesnet__in { flex-direction: column; align-items: stretch; gap: 14px; padding-block: 18px; }
  .salesnet__view { width: 100%; }
}

/* With motion reduced the ticker cannot convey the full list, so it becomes a
   static wrapped set instead — and the duplicate pass is dropped. */
@media (prefers-reduced-motion: reduce) {
  .salesnet__view { -webkit-mask-image: none; mask-image: none; overflow: visible; }
  .salesnet__track { flex-wrap: wrap; width: auto; gap: 8px; animation: none; }
  .salesnet__city { margin-right: 0; }
  .salesnet__city.is-dupe { display: none; }
  .salesnet__in { padding-block: 18px; }
}

.foot__bot { padding-block: 20px; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px; font-size: 12.5px; color: var(--on-dark-dim); }
.foot__bot ul { display: flex; gap: 20px; }

/* ==========================================================================
   FIXED MODULES
   ========================================================================== */
/* Quick Connect owns the bottom-right corner (its FAB stack is ~134px tall at
   right:28px), so back-to-top sits above it rather than underneath. */
.fixed-stack { position: fixed; right: 28px; bottom: 180px; z-index: 80; display: flex; flex-direction: column; gap: 10px; align-items: flex-end; }
.fab {
  width: 50px; height: 50px; display: grid; place-items: center; border-radius: 50%;
  border: 0; box-shadow: var(--sh-2); color: #fff; transition: transform .22s var(--ease), background .22s;
}
.fab:hover { transform: translateY(-3px) scale(1.05); }
.fab .ic { width: 23px; height: 23px; }
.fab--wa { background: #25D366; }
.fab--top { background: var(--ink-3); border: 1px solid var(--line-dark-2); opacity: 0; visibility: hidden; }
.fab--top.is-on { opacity: 1; visibility: visible; }

.calltab {
  position: fixed; left: 0; top: 50%; transform: translateY(-50%); z-index: 80;
  display: flex; align-items: center; background: var(--blue); color: #fff;
  border-radius: 0 var(--rad) var(--rad) 0; box-shadow: var(--sh-2); overflow: hidden;
}
.calltab__btn { width: 46px; height: 52px; display: grid; place-items: center; background: none; border: 0; color: #fff; flex: none; }
.calltab__num {
  max-width: 0; overflow: hidden; white-space: nowrap; font-size: 14.5px; font-weight: 700; letter-spacing: .03em;
  transition: max-width .34s var(--ease), padding .34s var(--ease);
}
.calltab:hover .calltab__num, .calltab.is-open .calltab__num { max-width: 200px; padding-right: 20px; }

/* ==========================================================================
   MODALS
   ========================================================================== */
.modal { position: fixed; inset: 0; z-index: 140; display: none; align-items: center; justify-content: center; padding: 24px; overflow-y: auto; }
.modal.is-on { display: flex; }
.modal__bg { position: absolute; inset: 0; background: rgba(4,7,10,.72); backdrop-filter: blur(4px); }
.modal__box {
  position: relative; width: 100%; max-width: 660px; margin: auto;
  background: var(--paper); border-radius: var(--rad-lg); box-shadow: var(--sh-3);
  animation: pop .3s var(--ease);
}
@keyframes pop { from { opacity: 0; transform: translateY(16px) scale(.985); } to { opacity: 1; transform: none; } }
.modal__head { padding: 26px 30px 0; position: relative; }
.modal__eyebrow { font-size: 11px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; color: var(--blue); }
.modal__title { font-family: var(--f-display); font-size: 30px; text-transform: uppercase; margin-top: 6px; }
.modal__sub { margin-top: 8px; font-size: 14.5px; color: var(--on-light-mu); }
.modal__body { padding: 24px 30px 30px; }
.modal__x { position: absolute; right: 18px; top: 18px; width: 38px; height: 38px; display: grid; place-items: center; background: var(--paper-1); border: 1px solid var(--line-light); border-radius: var(--rad); }
.modal__x:hover { background: var(--ink-1); color: #fff; border-color: var(--ink-1); }

/* ==========================================================================
   MISC
   ========================================================================== */
.note {
  padding: 18px 22px; border-left: 3px solid var(--amber); background: rgba(245,166,35,.08);
  border-radius: 0 var(--rad) var(--rad) 0; font-size: 14.5px;
}
.note strong { display: block; margin-bottom: 4px; }

.pill {
  display: inline-flex; align-items: center; gap: 7px; padding: 6px 13px; border-radius: 100px;
  background: var(--paper-2); font-size: 12.5px; font-weight: 600;
}
.pill:hover { background: var(--blue); color: #fff; }
.sec--dark .pill, .sec--ink .pill { background: rgba(255,255,255,.07); }
.sec--dark .pill:hover, .sec--ink .pill:hover { background: var(--amber); color: #14181D; }

/* sticky side rail */
/* A sticky box can only travel as far as its parent is tall. The rail's column
   is a grid item under align-items:start, so it was sized to the rail itself
   and there was nothing to slide against — stretching it to the row height is
   what actually makes the rail follow the article down. */
.rail-col { align-self: stretch; }
.rail { position: sticky; top: 104px; }

/* Single column below this, and the rail is the second grid item — so a table
   of contents was landing *after* the article it indexes, which is no use to
   anyone. Move it above and lay the links out as chips, or seven stacked rows
   would push the article most of a screen down. */
@media (max-width: 1024px) {
  .rail { position: static; display: flex; flex-wrap: wrap; gap: 8px; }
  .rail-col { order: -1; }
  .rail h4 { flex: 1 0 100%; margin-bottom: 2px; }
  .rail a {
    padding: 8px 14px; border-left: 0;
    border: 1px solid var(--line-light-2); border-radius: 100px; font-size: 13px;
  }
  .rail .tool { flex: 1 0 100%; margin-top: 22px; }
}
.rail h4 { font-size: 11px; font-weight: 800; letter-spacing: .15em; text-transform: uppercase; color: var(--on-light-mu); margin-bottom: 14px; }
.rail a { display: block; padding: 9px 0 9px 16px; border-left: 2px solid var(--line-light-2); font-size: 14px; color: var(--on-light-mu); transition: all .2s; }
.rail a:hover, .rail a.is-on { border-color: var(--amber); color: var(--on-light); font-weight: 600; }

/* article body */
.article { font-size: 16.5px; line-height: 1.78; }
.article h2 { font-family: var(--f-display); font-size: 28px; text-transform: uppercase; margin: 1.6em 0 .5em; }
.article h2:first-child { margin-top: 0; }
.article p { margin-bottom: 1.2em; color: #2A3541; }

.meta { display: flex; flex-wrap: wrap; gap: 18px; font-size: 13px; color: var(--on-light-mu); }
.meta span { display: inline-flex; align-items: center; gap: 7px; }
.meta .ic { width: 15px; height: 15px; color: var(--blue); }

/* blog card */
.bcard { background: var(--paper); border: 1px solid var(--line-light); border-radius: var(--rad-lg); overflow: hidden; display: flex; flex-direction: column; transition: transform .26s var(--ease), box-shadow .26s var(--ease); }
.bcard:hover { transform: translateY(-4px); box-shadow: var(--sh-2); }
.bcard__img { aspect-ratio: 16 / 10; overflow: hidden; background: var(--ink-2); }
.bcard__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.bcard:hover .bcard__img img { transform: scale(1.06); }
.bcard__body { padding: 22px; display: flex; flex-direction: column; flex: 1; }
.bcard__cat { font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--blue); }
.bcard h3 { font-family: var(--f-display); font-size: 22px; text-transform: uppercase; margin: 8px 0 10px; line-height: 1.14; }
.bcard p { font-size: 14px; color: var(--on-light-mu); margin-bottom: 16px; }
.bcard .link-arrow { margin-top: auto; }

/* ==========================================================================
   BLOG BLOCK (homepage)
   Lead article on the left, remaining posts as compact rows on the right —
   gives the newest piece some weight instead of three identical cards.
   ========================================================================== */
.blogfeat { display: grid; grid-template-columns: 1.1fr .9fr; gap: 24px; align-items: start; }

.bfeat {
  background: var(--paper); border: 1px solid var(--line-light); border-radius: var(--rad-lg);
  overflow: hidden; display: flex; flex-direction: column;
  transition: transform .26s var(--ease), box-shadow .26s var(--ease);
}
.bfeat:hover { transform: translateY(-4px); box-shadow: var(--sh-2); }
.bfeat__img { position: relative; display: block; aspect-ratio: 16 / 9; overflow: hidden; background: var(--ink-2); }
.bfeat__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s var(--ease); }
.bfeat:hover .bfeat__img img { transform: scale(1.05); }
.bfeat__cat {
  position: absolute; left: 16px; top: 16px; padding: 6px 14px; border-radius: 100px;
  background: var(--amber); color: #14181D;
  font-size: 10.5px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase;
}
.bfeat__body { padding: clamp(22px, 2.4vw, 30px); display: flex; flex-direction: column; flex: 1; }
.bfeat__body h3 {
  font-family: var(--f-display); font-size: clamp(23px, 2.3vw, 31px);
  text-transform: uppercase; line-height: 1.08; margin: 14px 0 12px;
}
.bfeat__body h3 a:hover { color: var(--blue); }
.bfeat__body p { font-size: 15px; color: var(--on-light-mu); margin-bottom: 22px; }
.bfeat .link-arrow { margin-top: auto; }

.blist {
  display: flex; flex-direction: column;
  background: var(--paper); border: 1px solid var(--line-light);
  border-radius: var(--rad-lg); overflow: hidden;
}
.brow {
  display: grid; grid-template-columns: 104px 1fr; gap: 16px; padding: 18px;
  border-bottom: 1px solid var(--line-light); transition: background .2s var(--ease);
}
.brow:hover { background: var(--paper-1); }
.brow__img { aspect-ratio: 4 / 3; border-radius: var(--rad); overflow: hidden; background: var(--ink-2); }
.brow__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s var(--ease); }
.brow:hover .brow__img img { transform: scale(1.07); }
.brow__body i {
  display: block; font-style: normal; font-size: 10.5px; font-weight: 800;
  letter-spacing: .12em; text-transform: uppercase; color: var(--blue);
}
.brow__body b { display: block; font-size: 15.5px; font-weight: 600; line-height: 1.32; margin: 5px 0 6px; }
.brow:hover .brow__body b { color: var(--blue); }
.brow__body em { font-style: normal; font-size: 12.5px; color: var(--on-light-mu); }

.blist__foot { margin-top: auto; padding: 24px; background: var(--paper-1); }
.blist__foot h4 { font-family: var(--f-display); font-size: 20px; text-transform: uppercase; letter-spacing: .012em; }
.blist__foot p { margin: 8px 0 16px; font-size: 14px; color: var(--on-light-mu); }

@media (max-width: 1024px) {
  .blogfeat { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .brow { grid-template-columns: 80px 1fr; gap: 14px; padding: 15px; }
  .brow__body b { font-size: 14.5px; }
}

/* case study card */
.ccard { position: relative; border-radius: var(--rad-lg); overflow: hidden; background: var(--ink-2); color: var(--on-dark); min-height: 300px; display: flex; }
.ccard__img { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: .38; transition: transform .5s var(--ease); }
.ccard:hover .ccard__img { transform: scale(1.05); }
.ccard__veil { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(6,9,13,.96) 10%, rgba(6,9,13,.4)); }
.ccard__in { position: relative; z-index: 1; padding: 26px; display: flex; flex-direction: column; justify-content: flex-end; width: 100%; }
.ccard h3 { font-family: var(--f-display); font-size: 26px; text-transform: uppercase; }
.ccard__facts { display: flex; flex-wrap: wrap; gap: 16px; margin: 14px 0; font-size: 12.5px; color: var(--on-dark-mu); }
.ccard__facts b { color: var(--amber); font-weight: 700; }

/* pending-content flag */
.flag {
  display: inline-flex; align-items: center; gap: 8px; padding: 5px 12px; border-radius: 100px;
  background: rgba(245,166,35,.14); border: 1px dashed rgba(245,166,35,.5); color: var(--amber-dk);
  font-size: 11px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase;
}
.sec--dark .flag, .sec--ink .flag, .ccard .flag { color: var(--amber); }

/* pagination */
.pager { display: flex; justify-content: center; gap: 8px; }
.pager a, .pager span {
  min-width: 42px; height: 42px; display: grid; place-items: center; padding-inline: 12px;
  border: 1px solid var(--line-light-2); border-radius: var(--rad); font-size: 14px; font-weight: 600;
}
.pager a:hover { border-color: var(--blue); color: var(--blue); }
.pager .is-on { background: var(--ink-1); border-color: var(--ink-1); color: #fff; }

/* reveal on scroll */
[data-reveal] { opacity: 0; transform: translateY(22px); transition: opacity .6s var(--ease), transform .6s var(--ease); }
[data-reveal].is-in { opacity: 1; transform: none; }

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
/* Between 1024 and 1400 the nav tightens step by step so the header CTA
   keeps its full "Get Free Feasibility Study" label instead of being clipped. */
/* ---- header bar fit ------------------------------------------------------
   Nine top-level items, the logo and the CTA all share one row, and no label
   is allowed to wrap. The nav therefore tightens in two steps as the viewport
   narrows, and hands over to the burger at 1200px — below that the row cannot
   be made to fit without shrinking the CTA past legibility. */
@media (max-width: 1440px) {
  .head__in { gap: 18px; }
  .nav__link { padding: 26px 11px; font-size: 13px; }
  .nav__link::after { left: 11px; right: 11px; }
  .head__cta .btn { padding: 12px 16px; font-size: 12.5px; }
  .logo img { height: 40px; }
}
@media (max-width: 1380px) {
  .head__in { gap: 14px; }
  .nav__link { padding: 26px 8px; font-size: 11.8px; letter-spacing: 0; }
  .nav__link .ic { width: 12px; height: 12px; }
  .nav__link::after { left: 8px; right: 8px; }
  .head__cta .btn { padding: 11px 13px; font-size: 11px; letter-spacing: .04em; }
  .logo img { height: 34px; }
}
@media (max-width: 1200px) {
  .nav, .head__cta { display: none; }
  .burger { display: grid; }
  .head__in { min-height: 64px; }
}

@media (max-width: 1180px) {
  .foot__main { grid-template-columns: 1.4fr 1fr 1fr; }
}
@media (max-width: 1024px) {
  .topbar__l a:not(.topbar__cta) span { display: none; }
  .trust__in { grid-template-columns: repeat(3, 1fr); }
  .trust__i:nth-child(4) { border-left: 0; }
  .g-4, .g-5 { grid-template-columns: repeat(2, 1fr); }
  .g-3 { grid-template-columns: repeat(2, 1fr); }
  .stats { grid-template-columns: repeat(2, 1fr); }
  .process { grid-template-columns: repeat(3, 1fr); row-gap: 34px; }
  .process::before { display: none; }
  .gal { grid-template-columns: repeat(3, 1fr); }
  .split { grid-template-columns: 1fr; }
  .split--wide-l, .split--wide-r { grid-template-columns: 1fr; }
  .split__media { order: -1; }
  .tool__grid { grid-template-columns: repeat(2, 1fr); }
  .tool__out { grid-template-columns: repeat(2, 1fr); }
  .chipspec { grid-template-columns: repeat(2, 1fr); }
  /* the base .form is already two across, so only the four-across variant
     needs stepping down here */
  .form--4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 720px) {
  .wrap { padding-inline: 18px; }
  .topbar__l { gap: 14px; }
  .topbar__r { display: none; }
  .trust__in { grid-template-columns: repeat(2, 1fr); }
  .trust__i { border-left: 0; border-top: 1px solid var(--line-dark); padding: 20px 16px; }
  .trust__i:nth-child(odd) { border-right: 1px solid var(--line-dark); }
  .g-2, .g-3, .g-4, .g-5 { grid-template-columns: 1fr; }
  .stats { grid-template-columns: 1fr; }
  .process { grid-template-columns: 1fr; }
  .pstep { padding: 0; }
  .gal { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  /* Quick Connect turns into a full-width bar at the bottom on small screens,
     so back-to-top moves up to clear it. */
  .fixed-stack { right: 12px; bottom: 72px; }
  .form { grid-template-columns: 1fr; }
  .tool__grid, .tool__out { grid-template-columns: 1fr; }
  .chipspec { grid-template-columns: 1fr; }
  .foot__main { grid-template-columns: 1fr; gap: 30px; }
  .hero__slides { min-height: 620px; }
  .hero__acts .btn { flex: 1 1 100%; }
  .calltab { display: none; }
  .modal { padding: 0; }
  .modal__box { border-radius: 0; min-height: 100%; }
  .cta-band__actions { width: 100%; }
  .cta-band__actions .btn { flex: 1; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
  [data-reveal] { opacity: 1; transform: none; }
}

@media print {
  .topbar, .site-head, .fixed-stack, .calltab, .cta-band, .salesnet, .modal { display: none !important; }
  body { color: #000; background: #fff; }
}

.field input[type="file"] {
  padding: 9px 12px; font-size: 13.5px; cursor: pointer;
}

/* ------------------------------------------------------------ client stat band
   Sits above the logo wall so the wall reads as evidence rather than decoration. */
.clientstat {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px;
  margin: 34px auto 6px; max-width: 940px; text-align: center;
}
.clientstat > div {
  padding: 20px 14px; background: var(--paper);
  border: 1px solid var(--line-light); border-top: 3px solid var(--amber);
  border-radius: var(--rad-lg); box-shadow: var(--sh-1);
}
.clientstat dt {
  font-size: 11.5px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase;
  color: var(--on-light-mu);
}
.clientstat dd {
  margin: 8px 0 0; font-family: var(--f-display); font-weight: 600;
  font-size: clamp(26px, 3.2vw, 38px); line-height: 1; color: var(--ink-1);
}
.clientstat dd span { color: var(--amber-dk); }
@media (max-width: 760px) { .clientstat { grid-template-columns: repeat(2, 1fr); gap: 12px; } }
