/*
Theme Name: IT Next Consultant
Description: Custom WordPress theme for IT Next Consultant — network infrastructure & physical security systems for retail and commercial businesses.
Author: GearUp Code
Version: 1.0
*/

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --bg:      #0A1628;
  /* Widened from #0F2040. With the decorative glows gone, tone alternation is
     the main thing separating sections — the old 10-point luminance gap was
     too tight to register on its own. */
  --surface: #12264A;
  --accent:  #8DC63F;
  --blue:    #45B8FF;
  --navy:    #004670;
  --border:  #1E3A5F;
  --white:   #FFFFFF;
  --muted:   #94A3B8;
  --foot-bg: #060E1A;
  --max-w:   1440px;
  --t:       0.3s cubic-bezier(0.22, 1, 0.36, 1);
}

html { scroll-behavior: smooth; }

body {
  font-family: 'Inter', sans-serif;
  background: var(--bg);
  color: var(--white);
  font-size: 16px;
  line-height: 1.6;
  overflow-x: hidden;
}

.container {
  width: 100%;
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 0 32px;
}

/* ── FADE UP ── */
/* Scroll reveal: opacity only, no slide. Sliding content on every section is
   the single biggest "template demo" tell — a quiet fade reads as considered. */
/* Hiding is gated on the `js` class, which an inline script in <head> sets
   before first paint. Without it .fu stayed at opacity:0 unconditionally — so
   if main.js failed to load (it is enqueued in the footer) the entire site
   rendered blank with no way to recover. No JS, no hiding, content just shows. */
.js .fu {
  opacity: 0;
  transition: opacity 0.4s ease-out;
}
.js .fu.on { opacity: 1; }
/* Halved stagger — enough to avoid everything snapping in at once, not enough
   to read as a choreographed cascade. */
.js .fu.d1 { transition-delay: 0.05s; }
.js .fu.d2 { transition-delay: 0.10s; }
.js .fu.d3 { transition-delay: 0.15s; }
.js .fu.d4 { transition-delay: 0.20s; }

/* Anyone who has asked their OS for less motion gets the content outright,
   with no fade and no stagger. Previously the only reduced-motion rule on the
   site covered the CTA dot pattern; every scroll reveal still ran. */
@media (prefers-reduced-motion: reduce) {
  .js .fu,
  .js .fu.on {
    opacity: 1;
    transition: none;
    transition-delay: 0s;
  }
}

/* ── BUTTONS ── */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: linear-gradient(135deg, #8DC63F, #6A952F);
  color: #fff;
  font-size: 15px;
  font-weight: 600;
  padding: 14px 28px;
  border-radius: 8px;
  border: none;
  cursor: pointer;
  text-decoration: none;
  letter-spacing: 0.01em;
  transition: box-shadow var(--t), transform var(--t);
  position: relative;
  overflow: hidden;
}
.btn::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,0.08), transparent);
  border-radius: inherit;
}
.btn:hover {
  box-shadow: 0 4px 16px rgba(0,0,0,0.3);
  transform: translateY(-2px);
}
.btn-outline {
  background: transparent;
  border: 1px solid var(--border);
  color: var(--muted);
}
.btn-outline:hover {
  border-color: var(--accent);
  color: var(--accent);
  box-shadow: none;
}
.btn-scroll-icon {
  width: 16px;
  height: 16px;
  stroke: currentColor;
  fill: none;
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  animation: btn-scroll-bounce 1.6s ease-in-out infinite;
}
@keyframes btn-scroll-bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(4px); }
}

/* ── LABEL / HEADING ── */
.label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 600;
  color: var(--accent);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  margin-bottom: 12px;
}
.label::before {
  content: '';
  display: inline-block;
  width: 20px;
  height: 2px;
  background: var(--accent);
  border-radius: 2px;
}

/* Centred-heading modifier.
   Applied ONLY to sections whose content is already centre-aligned (stat cards,
   connected-node grids, process steps). Deliberately not the common
   centred-heading-over-left-body pattern — that creates a "T" the eye has to
   jump across, and is the classic template tell. Keeping each section
   internally consistent instead gives the page a left / centre rhythm without
   any single section contradicting itself. */
.section--centered > .container { text-align: center; }
.section--centered > .container > .sub { margin-left: auto; margin-right: auto; }
.h2 {
  font-size: 38px;
  font-weight: 700;
  color: var(--white);
  line-height: 1.2;
  margin-bottom: 16px;
}
.sub {
  font-size: 17px;
  color: var(--muted);
  line-height: 1.8;
  max-width: 540px;
  margin-bottom: 32px;
}

/* ════════════════════════════════
   NAVBAR
════════════════════════════════ */
nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  /* Must sit ABOVE .mobile-menu (1050). `position: fixed` makes this nav its own
     stacking context, so the hamburger's own z-index:1100 is capped by whatever
     the nav has — at 1000 the open menu covered the navbar entirely and the X
     could not be tapped, leaving no way to close the menu. */
  z-index: 1100;
  padding: 0 32px;
  overflow: visible;
  background: rgba(10,22,40,0.97);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  box-shadow: 0 1px 0 var(--border);
  transition: background var(--t), box-shadow var(--t);
}
nav.scrolled {
  background: rgba(10,22,40,0.98);
}
.nav-inner {
  max-width: var(--max-w);
  margin: 0 auto;
  height: 92px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  overflow: visible;
}
.nav-logo {
  display: flex;
  align-items: center;
  text-decoration: none;
  flex-shrink: 1;
  min-width: 0;
}
.nav-logo img {
  height: 62px;
  width: auto;
  object-fit: contain;
  display: block;
  filter: brightness(0) invert(1);
  transition: opacity var(--t);
}
.nav-logo img:hover { opacity: 0.85; }
.nav-links {
  display: flex;
  align-items: center;
  gap: 36px;
  list-style: none;
}
.nav-links > li { position: relative; }
.nav-links > li > a {
  font-size: 15.5px;
  font-weight: 500;
  letter-spacing: 0.03em;
  color: var(--muted);
  text-decoration: none;
  transition: color var(--t);
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.nav-links > li > a::after {
  content: '';
  position: absolute;
  bottom: -4px; left: 0;
  width: 0; height: 2px;
  background: var(--accent);
  border-radius: 2px;
  transition: width var(--t);
}
.nav-links > li > a:hover,
.nav-links > li > a.active { color: var(--white); }
.nav-links > li > a.active::after,
.nav-links > li > a:hover::after { width: 100%; }

/* ── NAV DROPDOWNS ── */
.nav-chevron {
  font-size: 11px;
  opacity: 0.85;
  transition: transform var(--t), opacity var(--t);
  position: relative;
  top: 0;
  display: inline-block;
}
.has-dropdown:hover .nav-chevron { transform: rotate(180deg); opacity: 1; color: var(--accent); }
.dropdown {
  display: none;
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  margin-top: 18px;
  width: max-content;
  min-width: 240px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: 0 20px 48px rgba(0,0,0,0.45);
  padding: 8px;
  list-style: none;
  z-index: 200;
}
.dropdown::before {
  content: '';
  position: absolute;
  top: -18px; left: 0; right: 0;
  height: 18px;
}
.has-dropdown:hover .dropdown { display: block; }
.dropdown li a {
  display: block;
  padding: 12px 16px;
  font-size: 14px;
  font-weight: 500;
  white-space: nowrap;
  color: rgba(255,255,255,0.82);
  text-decoration: none;
  border-radius: 8px;
  transition: background var(--t), color var(--t);
}
.dropdown li a:hover { background: rgba(141,198,63,0.15); color: var(--white); }
[data-theme="light"] .dropdown li a { color: rgba(15,23,42,0.75); }
[data-theme="light"] .dropdown li a:hover { color: var(--white); }

/* ── HAMBURGER ── */
.hamburger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 40px; height: 40px;
  background: none;
  border: 1px solid var(--border);
  border-radius: 8px;
  cursor: pointer;
  padding: 8px;
  z-index: 1100;
  transition: border-color var(--t);
}
.hamburger:hover { border-color: var(--accent); }
.hamburger span {
  display: block;
  width: 100%; height: 2px;
  background: var(--white);
  border-radius: 2px;
  transition: transform 0.35s ease, opacity 0.35s ease;
  transform-origin: center;
}
.hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.hamburger.open span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ── MOBILE DRAWER ── */
.mobile-menu {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(10,22,40,0.98);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  z-index: 1050;
  flex-direction: column;
  /* Safety net: the menu is a fixed, full-height panel, so any content taller
     than the screen was simply unreachable — nothing could scroll and plain
     `center` clips equally off the top and bottom. `safe center` keeps the
     centred look when it fits but falls back to the start edge when it doesn't;
     the flex-start declaration above it covers browsers without `safe`. */
  justify-content: flex-start;
  justify-content: safe center;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  align-items: flex-start;
  /* Top padding clears the navbar, which now sits above this panel so the close
     (X) stays tappable. Without it the first menu item hides behind the header. */
  padding: 100px 32px 40px;
  opacity: 0;
  transform: translateX(100%);
  transition: opacity 0.35s ease, transform 0.35s ease;
}
.mobile-menu.open {
  opacity: 1;
  transform: translateX(0);
}
.mobile-menu ul {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 100%;
  margin-bottom: 40px;
}
.mobile-menu ul a {
  font-size: 32px;
  font-weight: 700;
  color: var(--muted);
  text-decoration: none;
  letter-spacing: -0.02em;
  display: block;
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
  transition: color var(--t), padding-left var(--t);
}
.mobile-menu ul a:hover {
  color: var(--white);
  padding-left: 12px;
}
.mobile-menu ul li:last-child a { border-bottom: none; }
.mm-group {
  border-bottom: 1px solid var(--border);
  padding: 10px 0;
}
.mm-heading {
  display: block;
  font-size: 28px;
  font-weight: 700;
  color: var(--muted);
  letter-spacing: -0.02em;
  padding: 4px 0 2px;
}
.mm-sub {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 4px;
}
/* Scoped to `.mobile-menu ul` deliberately. As plain `.mm-sub a` (0,1,1) this
   entire rule lost to `.mobile-menu ul a` (0,2,1) above — so every submenu item
   rendered at 32px instead of 17px, with no indent and no left border. That
   alone made the open menu ~1350px tall, roughly double any phone screen. */
.mobile-menu ul .mm-sub a {
  font-size: 17px;
  font-weight: 500;
  color: var(--muted);
  text-decoration: none;
  display: block;
  padding: 8px 0 8px 16px;
  border-bottom: none;
  border-left: 2px solid var(--border);
  transition: color var(--t), border-color var(--t);
}
.mobile-menu ul .mm-sub a:hover { color: var(--white); border-color: var(--accent); }
.mobile-contact {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.mobile-contact a {
  font-size: 15px;
  color: var(--muted);
  text-decoration: none;
  display: flex;
  align-items: center;
  gap: 10px;
  transition: color var(--t);
}
.mobile-contact a:hover { color: var(--accent); }
.mobile-contact svg {
  width: 16px; height: 16px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  flex-shrink: 0;
}
.mobile-cta {
  margin-top: 32px;
  width: 100%;
}
.mobile-cta .btn {
  width: 100%;
  justify-content: center;
  font-size: 16px;
  padding: 16px;
}

/* ════════════════════════════════
   HERO
════════════════════════════════ */
#home {
  min-height: 100vh;
  display: flex;
  align-items: center;
  padding-top: 140px;
  padding-bottom: 80px;
  position: relative;
  overflow: hidden;
}

/* ════════════════════════════════
   INTERNAL PAGE HERO (shorter band, no video — used on service/area pages)
════════════════════════════════ */
/* Internal pages get a page HEADER, not a cinematic hero. 900px of near-empty
   background on every subpage is the clearest template-demo signal there is —
   real B2B sites reserve the full-height treatment for the homepage. */
.page-hero {
  min-height: 0;
  display: flex;
  align-items: center;
  padding-top: 150px;
  padding-bottom: 80px;
  position: relative;
  overflow: hidden;
}
/* The homepage's 580px measure forces the subpage intro to 5 lines and the
   trust line to wrap — together that was ~270px of the hero. A wider measure
   is still comfortably readable at this size and removes the dead space. */
.page-hero .hero-content p { max-width: 780px; margin-bottom: 34px; }
.page-hero .hero-trust { max-width: 780px; }
.page-hero .hero-content { margin-top: 0; }
.page-hero .hero-content h1 { font-size: 44px; }

/* video background */
.hero-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: 0;
  opacity: 0.75;
}
/* fallback background image/gradient when no video is available */
.hero-fallback-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  /* Near-solid. A pronounced diagonal gradient is the giveaway of a background
     with nothing real behind it — this reads as a flat considered surface and
     lets the type carry the hero. Replace with genuine site photography when
     Juan supplies it; that is the proper fix here. */
  background: linear-gradient(180deg, #0C1A30 0%, #0A1628 100%);
}
/* dark gradient overlay so text stays readable */
.hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    105deg,
    rgba(10,22,40,0.80) 0%,
    rgba(10,22,40,0.55) 60%,
    rgba(10,22,40,0.35) 100%
  );
  z-index: 1;
}

/* animated bottom glow line */
/* Static hairline. Was a pulsing accent glow — permanent ambient animation with
   no informational purpose. Now just a quiet section boundary. */
.hero-line {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 1px;
  background: var(--border);
}

/* Cable-run schematic canvas.
   Sits ABOVE .hero-overlay (z-index 1), not below it — underneath, the overlay's
   35-80% dark gradient was knocking the traces down to roughly 4% effective
   opacity, which is why they were invisible. Still below .hero-content (2). */
.hero-schematic {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  pointer-events: none;
}

.hero-content {
  position: relative;
  z-index: 2;
  max-width: 960px;
  margin-left: 0;
  margin-top: 36px;
}

.hero-badge {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: rgba(141,198,63,0.1);
  border: 1px solid rgba(141,198,63,0.25);
  border-radius: 100px;
  padding: 6px 16px;
  font-size: 13px;
  font-weight: 500;
  color: var(--accent);
  margin-bottom: 28px;
}
.hero-badge .dot {
  width: 6px; height: 6px;
  background: var(--accent);
  border-radius: 50%;
}
/* blue variant — used on the Website Design & Development page, matching its homepage service card */
.hero-badge--blue {
  background: rgba(69,184,255,0.1);
  border-color: rgba(69,184,255,0.25);
  color: var(--blue);
}
.hero-badge--blue .dot { background: var(--blue); }

.hero-content h1 {
  font-size: 52px;
  font-weight: 800;
  color: var(--white);
  line-height: 1.12;
  letter-spacing: -0.03em;
  margin-bottom: 28px;
}
.hero-content h1 .accent-word {
  color: var(--accent);
}
.hero-content h1 .accent-word--blue {
  color: var(--blue);
}
.hero-tagline {
  font-size: 15px;
  font-weight: 500;
  color: var(--accent);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  margin-bottom: 28px;
  opacity: 0.85;
}
.hero-content p {
  font-size: 18px;
  color: rgba(255,255,255,0.88);
  text-shadow: 0 1px 12px rgba(0,0,0,0.4);
  line-height: 1.8;
  max-width: 580px;
  margin-bottom: 44px;
}
.hero-cta {
  display: flex;
  gap: 16px;
  align-items: center;
  flex-wrap: wrap;
}
.hero-trust {
  font-size: 13px;
  color: var(--muted);
  margin-top: 48px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.hero-trust::before {
  content: '';
  display: block;
  width: 32px;
  height: 1px;
  background: var(--border);
}

/* ════════════════════════════════
   STATS BAR
════════════════════════════════ */
.stats-bar {
  background: var(--surface);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  padding: 0 32px;
}
.stats-inner {
  max-width: var(--max-w);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4,1fr);
}
.stat-item {
  padding: 44px 32px;
  text-align: left;
  border-right: 1px solid var(--border);
  position: relative;
  transition: background var(--t);
}
.stat-item:last-child { border-right: none; }
.stat-item:hover { background: rgba(141,198,63,0.04); }
.stat-icon {
  width: 40px; height: 40px;
  min-width: 40px; min-height: 40px;
  background: rgba(141,198,63,0.1);
  border: 1px solid rgba(141,198,63,0.2);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 16px;
}
.stat-icon svg {
  width: 20px; height: 20px;
  min-width: 20px; min-height: 20px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.stat-num {
  display: block;
  font-size: 42px;
  font-weight: 800;
  color: var(--white);
  letter-spacing: -0.04em;
  line-height: 1;
  margin-bottom: 8px;
}
.stat-lbl {
  font-size: 13px;
  font-weight: 600;
  color: rgba(255,255,255,0.75);
  text-transform: uppercase;
  letter-spacing: 1px;
}

/* ════════════════════════════════
   SERVICES
════════════════════════════════ */
#services, .services-section {
  padding: 110px 32px;
  position: relative;
  overflow: hidden;
}
#services::before, .services-section::before {
  content: '';
  position: absolute;
  top: 0; left: 50%;
  transform: translateX(-50%);
  width: 600px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--border), transparent);
}
.services-grid {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 20px;
}
/* Homepage only — four service pillars read better as 2x2 than as four cramped
   columns. Scoped as a modifier because .services-grid itself is a 3-col grid
   used by the Smart Systems, Website Design and Office Equipment pages.
   Deliberately no mobile rule here: the existing `.services-grid { 1fr }` at
   max-width 960px sits later in this file, so it already collapses this to a
   single column at the same breakpoint as every other grid. */
.services-grid--four { grid-template-columns: repeat(2,1fr); }
.s-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 36px;
  position: relative;
  overflow: hidden;
  transition: border-color var(--t), box-shadow var(--t), transform var(--t);
}
.s-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(141,198,63,0), transparent);
  transition: background var(--t);
}
.s-card:hover {
  border-color: rgba(141,198,63,0.5);
  box-shadow: 0 8px 32px rgba(0,0,0,0.2);
  transform: translateY(-3px);
}
.s-card:hover::before {
  background: linear-gradient(90deg, transparent, var(--accent), transparent);
}
.s-icon {
  width: 52px; height: 52px;
  min-width: 52px; min-height: 52px;
  background: rgba(141,198,63,0.1);
  border: 1px solid rgba(141,198,63,0.2);
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 24px;
}
.s-icon svg {
  width: 22px; height: 22px;
  min-width: 22px; min-height: 22px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.s-card h3 {
  font-size: 18px;
  font-weight: 600;
  color: var(--white);
  margin-bottom: 12px;
  letter-spacing: -0.01em;
  word-break: break-word;
  overflow-wrap: break-word;
}
.s-card p {
  font-size: 15px;
  color: var(--muted);
  line-height: 1.8;
}
/* These are real <a> elements now — they were <div>s with cursor:pointer and a
   "Learn More" affordance that went nowhere, which made all six homepage cards
   dead ends into the Services and Service Area pages. Reset the inherited link
   styling so they still render exactly like the surrounding cards. */
.s-card--linkable {
  cursor: pointer;
  display: block;
  text-decoration: none;
  color: inherit;
}
.s-card--linkable:hover h3 { color: var(--accent); }
.s-card-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 20px;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--accent);
  letter-spacing: 0.02em;
}
.s-card--blue .s-icon {
  background: rgba(69,184,255,0.1);
  border-color: rgba(69,184,255,0.25);
}
.s-card--blue .s-icon svg { stroke: var(--blue); }
.s-card--blue:hover {
  border-color: rgba(69,184,255,0.5);
  box-shadow: 0 8px 32px rgba(0,0,0,0.2);
}
.s-card--blue:hover::before {
  background: linear-gradient(90deg, transparent, var(--blue), transparent);
}
.s-card--blue .s-card-link { color: var(--blue); }
.s-card--blue .s-card-link svg { stroke: var(--blue); }

/* Real-photo card variant: background image is set inline per-card (via PHP,
   so it works regardless of theme), this class just adds the treatment —
   cover sizing + pinned light text, since a photo card stays dark-styled
   in both themes rather than following the light-mode flip to a white card. */
.s-card--photo {
  background-size: cover;
  background-position: center;
  min-height: 360px;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
}
.s-card--photo .s-icon { background: rgba(10,22,40,0.75); border-color: rgba(141,198,63,0.35); backdrop-filter: blur(3px); }
.s-card--photo .s-icon svg { stroke: var(--accent); }
.s-card--photo h3 { color: #FFFFFF; }
.s-card--photo p { color: #C3CEDC; }
.s-card-link svg {
  width: 15px; height: 15px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform var(--t);
}
.s-card--linkable:hover .s-card-link svg { transform: translateX(4px); }

/* ════════════════════════════════
   HOW WE WORK
════════════════════════════════ */
.how-section {
  background: var(--surface);
  padding: 110px 32px;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  position: relative;
  overflow: hidden;
}
.how-section > .container {
  position: relative;
  z-index: 1;
}
.how-watermark {
  position: absolute;
  top: 50%;
  right: -40px;
  transform: translateY(-50%);
  width: auto;
  height: 340px;
  max-width: none;
  object-fit: contain;
  filter: brightness(0) invert(1);
  opacity: 0.03;
  pointer-events: none;
}
.steps-grid {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 16px;
  position: relative;
}
.steps-grid::before {
  content: '';
  position: absolute;
  top: 27px;
  left: 12.5%;
  right: 12.5%;
  height: 1px;
  border-top: 2px dashed #8DC63F;
  opacity: 0.35;
}
.step {
  text-align: center;
  padding: 0 20px;
  position: relative;
  z-index: 1;
  transition: transform var(--t);
}
.step:hover { transform: translateY(-4px); }
.step-num {
  width: 54px; height: 54px;
  border-radius: 50%;
  background: var(--navy);
  border: 6px solid var(--surface);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  font-weight: 700;
  color: #FFFFFF;
  margin: 0 auto 24px auto;
  transition: box-shadow var(--t), transform var(--t);
}
.step:hover .step-num {
  box-shadow: none;
  transform: scale(1.05);
}
.step h3 {
  font-size: 17px;
  font-weight: 600;
  color: var(--white);
  margin-bottom: 10px;
}
.step p { font-size: 14px; color: var(--muted); line-height: 1.75; }

/* ════════════════════════════════
   ABOUT
════════════════════════════════ */
#about { padding: 110px 32px; position: relative; overflow: hidden; border-top: 1px solid var(--border); }
.about-inner {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 0 32px;
  display: grid;
  grid-template-columns: 55fr 45fr;
  gap: 90px;
  align-items: center;
}
.accent-line {
  width: 60px; height: 3px;
  background: #8DC63F;
  border-radius: 3px;
  margin-bottom: 16px;
}
.about-text p {
  font-size: 16.5px;
  color: rgba(255,255,255,0.82);
  line-height: 1.85;
  margin-bottom: 22px;
  max-width: 620px;
}
.about-text p:last-child { margin-bottom: 0; }

/* ── Printers & Copiers section: text + feature list left, real photo right ── */
.printers-layout {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: 56px;
  align-items: center;
  margin-top: 8px;
}
.printers-content { display: flex; flex-direction: column; }
.printers-features {
  display: flex;
  flex-direction: column;
  gap: 24px;
  margin-top: 36px;
}
.printers-feature {
  display: flex;
  align-items: flex-start;
  gap: 18px;
}
.printers-feature-icon {
  width: 44px; height: 44px;
  min-width: 44px;
  border-radius: 12px;
  background: rgba(141,198,63,0.1);
  border: 1px solid rgba(141,198,63,0.2);
  display: flex;
  align-items: center;
  justify-content: center;
}
.printers-feature-icon svg {
  width: 20px; height: 20px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.printers-feature h3 {
  font-size: 17px;
  font-weight: 600;
  color: var(--white);
  margin-bottom: 6px;
  letter-spacing: -0.01em;
}
.printers-feature p {
  font-size: 14.5px;
  color: var(--muted);
  line-height: 1.7;
}
.printers-photo {
  min-height: 420px;
  border-radius: 16px;
  border: 1px solid var(--border);
  background-size: cover;
  background-position: center;
  box-shadow: 0 8px 32px rgba(0,0,0,0.2);
}
[data-theme="light"] .printers-photo { background-size: cover; }

.about-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-left: 3px solid #8DC63F;
  border-radius: 12px;
  padding: 52px 40px;
  text-align: left;
  position: relative;
  overflow: hidden;
}
.about-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--accent), transparent);
  opacity: 0.4;
}
/* decorative rings */
.about-card .ring {
  position: absolute;
  border-radius: 50%;
  border: 1px solid var(--border);
  pointer-events: none;
}
.about-card .ring1 { width: 200px; height: 200px; top: -60px; right: -60px; opacity: 0.4; }
.about-card .ring2 { width: 160px; height: 160px; bottom: -50px; left: -50px; opacity: 0.25; }

.about-metric {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  padding: 20px 0;
  border-bottom: 1px solid var(--border);
  margin-bottom: 20px;
}
.about-metric:last-of-type { border-bottom: none; margin-bottom: 0; }
.about-metric-num {
  font-size: 36px;
  font-weight: 700;
  color: #8DC63F;
  letter-spacing: -0.04em;
  line-height: 1;
  margin-bottom: 4px;
}
.about-metric-lbl {
  font-size: 13px;
  color: var(--muted);
  font-weight: 500;
}
.about-location {
  position: relative;
  z-index: 1;
  margin-top: 28px;
  padding-top: 28px;
  border-top: 1px solid var(--border);
}
.about-location-city {
  font-size: 15px;
  font-weight: 600;
  color: var(--white);
  margin-bottom: 4px;
}
.about-location-sub {
  font-size: 13px;
  color: var(--muted);
}

/* ════════════════════════════════
   WHY CHOOSE US
════════════════════════════════ */
.why-section {
  background: var(--surface);
  padding: 110px 32px;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  position: relative;
  overflow: hidden;
}
.why-grid {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 24px;
}
.why-item {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 32px 28px;
  overflow: hidden;
  transition: transform var(--t), border-color var(--t), box-shadow var(--t);
}
.why-item::before {
  content: attr(data-num);
  position: absolute;
  top: 14px; right: 18px;
  font-size: 56px;
  font-weight: 800;
  line-height: 1;
  color: var(--accent);
  opacity: 0.08;
  pointer-events: none;
  transition: opacity var(--t), transform var(--t);
}
.why-item:hover {
  transform: translateY(-5px);
  border-color: rgba(141,198,63,0.5);
  box-shadow: 0 8px 32px rgba(0,0,0,0.25);
}
.why-item:hover::before { opacity: 0.14; transform: scale(1.08); }
.why-icon {
  position: relative;
  z-index: 1;
  flex-shrink: 0;
  width: 52px; height: 52px;
  background: rgba(141,198,63,0.1);
  border: 1px solid rgba(141,198,63,0.2);
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 22px;
  transition: background var(--t), border-color var(--t), transform var(--t);
}
.why-item:hover .why-icon {
  background: var(--accent);
  border-color: var(--accent);
  transform: scale(1.08) rotate(-6deg);
}
.why-icon svg {
  width: 22px; height: 22px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: stroke var(--t);
}
.why-item:hover .why-icon svg { stroke: #FFFFFF; }
.why-item h3 {
  position: relative;
  z-index: 1;
  font-size: 17px;
  font-weight: 600;
  color: var(--white);
  margin-bottom: 10px;
  letter-spacing: -0.01em;
}
.why-item p {
  position: relative;
  z-index: 1;
  font-size: 14px;
  color: var(--muted);
  line-height: 1.75;
}

/* Blue variant — Website Design & Development page */
.why-item--blue::before { color: var(--blue); }
.why-item--blue:hover {
  border-color: rgba(69,184,255,0.5);
  box-shadow: 0 8px 32px rgba(0,0,0,0.25);
}
.why-item--blue .why-icon {
  background: rgba(69,184,255,0.1);
  border-color: rgba(69,184,255,0.2);
}
.why-item--blue .why-icon svg { stroke: var(--blue); }
.why-item--blue:hover .why-icon {
  background: var(--blue);
  border-color: var(--blue);
}

/* ════════════════════════════════
   SERVICE PAGE — OVERVIEW SECTION
════════════════════════════════ */
.ns-overview {
  background: var(--surface);
  padding: 110px 32px;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  position: relative;
  overflow: hidden;
}
.ns-overview-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 56px;
  align-items: center;
  margin-top: 8px;
}
.ns-overview-chips {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.ns-chip {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 14px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 20px 18px;
  font-size: 14.5px;
  font-weight: 600;
  color: rgba(255,255,255,0.85);
  text-decoration: none;
  transition: border-color var(--t), transform var(--t), box-shadow var(--t);
}
.ns-chip--wide {
  grid-column: 1 / -1;
  flex-direction: row;
  align-items: center;
}
.ns-chip-icon {
  width: 38px; height: 38px;
  min-width: 38px;
  background: rgba(141,198,63,0.1);
  border: 1px solid rgba(141,198,63,0.2);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background var(--t), border-color var(--t), transform var(--t);
}
.ns-chip-icon svg {
  width: 17px; height: 17px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: stroke var(--t);
}
.ns-chip:hover {
  border-color: rgba(141,198,63,0.5);
  transform: translateY(-3px);
  box-shadow: 0 8px 20px rgba(0,0,0,0.2);
}
.ns-chip--wide:hover { transform: translateY(-2px); }
.ns-chip:hover .ns-chip-icon {
  background: var(--accent);
  border-color: var(--accent);
  transform: scale(1.06) rotate(-4deg);
}
.ns-chip:hover .ns-chip-icon svg { stroke: #FFFFFF; }

/* Blue variant — Website Design & Development page */
.ns-chip--blue .ns-chip-icon {
  background: rgba(69,184,255,0.1);
  border-color: rgba(69,184,255,0.2);
}
.ns-chip--blue .ns-chip-icon svg { stroke: var(--blue); }
.ns-chip--blue:hover {
  border-color: rgba(69,184,255,0.5);
  box-shadow: 0 8px 20px rgba(0,0,0,0.2);
}
.ns-chip--blue:hover .ns-chip-icon {
  background: var(--blue);
  border-color: var(--blue);
}

/* ── MILESTONES (About page) ── */
.milestone-grid {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 20px;
  margin-top: 28px;
}
.milestone-item {
  /* --surface, not --bg: these cards sit on a bg-toned section, matching the
     .s-card convention. Using --bg here renders them invisible in dark mode. */
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  padding: 30px 24px;
  text-align: center;
  transition: transform var(--t), border-color var(--t), box-shadow var(--t);
}
.milestone-item:hover {
  transform: translateY(-4px);
  border-color: rgba(141,198,63,0.5);
  box-shadow: 0 8px 24px rgba(0,0,0,0.22);
}
.milestone-num {
  font-size: 42px;
  font-weight: 800;
  line-height: 1;
  color: var(--accent);
  letter-spacing: -0.02em;
  margin-bottom: 10px;
}
.milestone-lbl {
  font-size: 15px;
  font-weight: 600;
  color: var(--white);
  margin-bottom: 8px;
}
.milestone-sub {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.6;
}

/* ── FOUNDER PULL-QUOTE (About page) ── */
.story-quote {
  position: relative;
  background: var(--bg);
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  border-radius: 14px;
  padding: 36px 34px;
  overflow: hidden;
}
.story-quote::before {
  content: '\201C';
  position: absolute;
  top: 2px; right: 24px;
  font-size: 92px;
  line-height: 1;
  font-weight: 800;
  color: var(--accent);
  opacity: 0.12;
  pointer-events: none;
}
.story-quote p {
  position: relative;
  z-index: 1;
  font-size: 19px;
  line-height: 1.7;
  color: var(--white);
  font-style: italic;
  margin-bottom: 22px;
}
.story-quote cite {
  position: relative;
  z-index: 1;
  display: block;
  font-style: normal;
  font-size: 14px;
  font-weight: 600;
  color: var(--accent);
}
.story-quote cite span {
  display: block;
  font-weight: 400;
  font-size: 13px;
  color: var(--muted);
  margin-top: 3px;
}

/* ── FLAGSHIP HIGHLIGHT (EAS + Drive-Thru) ── */
.flagship-section {
  padding: 110px 32px;
  position: relative;
  overflow: hidden;
  border-top: 1px solid var(--border);
}
.flagship-section::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: none;
  background-size: 28px 28px;
  mask-image: radial-gradient(ellipse 80% 70% at 50% 45%, #000 40%, transparent 100%);
  -webkit-mask-image: radial-gradient(ellipse 80% 70% at 50% 45%, #000 40%, transparent 100%);
  pointer-events: none;
}
.flagship-section > .container {
  position: relative;
  z-index: 1;
}
.flagship-grid {
  display: grid;
  grid-template-columns: repeat(2,1fr);
  gap: 28px;
  margin-top: 8px;
}
.flagship-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 40px;
  position: relative;
  overflow: hidden;
  transition: border-color var(--t), box-shadow var(--t), transform var(--t);
}
.flagship-card:hover {
  border-color: rgba(141,198,63,0.5);
  box-shadow: 0 8px 32px rgba(0,0,0,0.2);
  transform: translateY(-3px);
}

/* Video-backed flagship card. Uses a real <video> element rather than a CSS
   background deliberately: a `background:` shorthand in a light-mode override
   silently resets background-size, which is exactly the bug that broke the
   .s-card--photo cards in light mode on 2026-07-27. An element can't hit that. */
.flagship-card--video > .flagship-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}
.flagship-card--video > .flagship-bg video,
.flagship-card--video > .flagship-bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
/* Scrim keeps body copy legible over the footage in BOTH themes — the card text
   is white either way, so this stays dark in light mode on purpose.
   Angled at 105deg rather than a flat wash: the badge, heading, paragraph and
   list all sit left, so the scrim stays heavy there and opens up towards the
   right where nothing needs protecting — that's what lets the footage read
   without costing contrast. Paired with the text-shadow below. */
.flagship-card--video > .flagship-bg::after {
  content: '';
  position: absolute;
  inset: 0;
  background:
    linear-gradient(105deg, rgba(10,22,40,0.95) 0%, rgba(10,22,40,0.90) 42%, rgba(10,22,40,0.58) 74%, rgba(10,22,40,0.34) 100%),
    linear-gradient(to top, rgba(10,22,40,0.60) 0%, rgba(10,22,40,0) 55%);
}
/* Everything except the background sits above it. */
.flagship-card--video > *:not(.flagship-bg) { position: relative; z-index: 1; }
/* Text shadow does the heavy lifting the scrim used to, so the footage can stay
   visible. Cheap insurance against a bright frame passing behind the copy. */
.flagship-card--video h3,
.flagship-card--video p,
.flagship-card--video .flagship-list li {
  text-shadow: 0 1px 2px rgba(4,10,20,0.95), 0 2px 10px rgba(4,10,20,0.8), 0 0 22px rgba(4,10,20,0.6);
}
.flagship-card--video h3,
.flagship-card--video p,
.flagship-card--video .flagship-list li { color: #FFFFFF; }
@media (prefers-reduced-motion: reduce) {
  .flagship-card--video > .flagship-bg video { display: none; }
}
.flagship-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(141,198,63,0.1);
  border: 1px solid rgba(141,198,63,0.25);
  border-radius: 100px;
  padding: 5px 14px;
  font-size: 12px;
  font-weight: 600;
  color: var(--accent);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 22px;
}
.flagship-icon {
  width: 64px; height: 64px;
  min-width: 64px; min-height: 64px;
  background: rgba(141,198,63,0.1);
  border: 1px solid rgba(141,198,63,0.2);
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 24px;
}
.flagship-icon svg {
  width: 28px; height: 28px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.flagship-card h3 {
  font-size: 22px;
  font-weight: 700;
  color: var(--white);
  margin-bottom: 14px;
  letter-spacing: -0.01em;
}
.flagship-card > p {
  font-size: 15.5px;
  color: var(--muted);
  line-height: 1.8;
  margin-bottom: 24px;
}
.flagship-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.flagship-list li {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14.5px;
  color: rgba(255,255,255,0.85);
}
.flagship-list svg {
  width: 16px; height: 16px;
  min-width: 16px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.flagship-card--blue .flagship-badge { background: rgba(69,184,255,0.1); border-color: rgba(69,184,255,0.25); color: var(--blue); }
.flagship-card--blue .flagship-icon { background: rgba(69,184,255,0.1); border-color: rgba(69,184,255,0.25); }
.flagship-card--blue .flagship-icon svg { stroke: var(--blue); }
.flagship-card--blue .flagship-list svg { stroke: var(--blue); }
.flagship-card--blue:hover {
  border-color: rgba(69,184,255,0.5);
  box-shadow: 0 8px 32px rgba(0,0,0,0.2);
}
.flagship-proof {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 32px;
  padding: 18px 24px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  border-radius: 10px;
  font-size: 14px;
  color: var(--muted);
}
.flagship-proof strong { color: var(--white); }
.flagship-proof--blue { border-left-color: var(--blue); }

/* ── CORE CAPABILITIES GRID ── */
.capabilities-section {
  background: var(--bg);
  padding: 110px 32px;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  position: relative;
  overflow: hidden;
}
.capability-grid {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 32px;
  position: relative;
  margin-top: 24px;
}
.capability-grid::before {
  content: '';
  position: absolute;
  top: 34px;
  left: 16.5%;
  right: 16.5%;
  height: 1px;
  border-top: 2px dashed var(--accent);
  opacity: 0.35;
}
.capability-item {
  position: relative;
  text-align: center;
  padding: 0 16px;
}
.capability-node {
  width: 68px; height: 68px;
  min-width: 68px;
  border-radius: 50%;
  background: var(--surface);
  border: 6px solid var(--bg);
  box-shadow: 0 0 0 1px var(--border);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 24px auto;
  position: relative;
  transition: box-shadow var(--t), transform var(--t);
}
.capability-node svg {
  width: 26px; height: 26px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.capability-item:hover .capability-node {
  transform: scale(1.06);
  box-shadow: 0 0 0 1px var(--accent);
}

/* Blue variant — Website Design & Development page */
.capability-grid--blue::before { border-top-color: var(--blue); }
.capability-grid--blue .capability-node svg { stroke: var(--blue); }
.capability-grid--blue .capability-item:hover .capability-node {
  box-shadow: 0 0 0 1px var(--blue);
}
.capability-item h3 {
  font-size: 18px;
  font-weight: 600;
  color: var(--white);
  margin-bottom: 12px;
  letter-spacing: -0.01em;
}
.capability-item p {
  font-size: 15px;
  color: var(--muted);
  line-height: 1.8;
}

/* ════════════════════════════════
   SERVICE AREAS
════════════════════════════════ */
/* Had no tone and no border — the decorative glow was doing all its separation,
   so it read as blank once that went. A hairline divider is the structural
   equivalent, consistent with .ns-overview / #industries / .capabilities-section. */
#service-areas {
  padding: 110px 32px;
  position: relative;
  overflow: hidden;
  border-top: 1px solid var(--border);
}
#service-areas::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image: none;
  background-size: 28px 28px;
  mask-image: radial-gradient(ellipse 80% 70% at 50% 45%, #000 40%, transparent 100%);
  -webkit-mask-image: radial-gradient(ellipse 80% 70% at 50% 45%, #000 40%, transparent 100%);
  pointer-events: none;
}
#service-areas > .container {
  position: relative;
  z-index: 1;
}

/* ════════════════════════════════
   INDUSTRIES
════════════════════════════════ */
#industries {
  padding: 110px 32px;
  background: var(--surface);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  position: relative;
  overflow: hidden;
}
.ind-grid {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 20px;
}

/* ════════════════════════════════
   CLIENTS
════════════════════════════════ */
#clients { padding: 110px 0; border-top: 1px solid var(--border); position: relative; overflow: hidden; }
.clients-marquee {
  overflow: hidden;
  margin-top: 32px;
  padding: 10px 0;
  display: flex;
  flex-direction: column;
  gap: 16px;
  -webkit-mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);
  mask-image: linear-gradient(90deg, transparent, #000 5%, #000 95%, transparent);
}
.clients-track {
  display: flex;
  width: max-content;
  animation: clients-scroll 80s linear infinite;
}
.clients-track--reverse {
  animation-name: clients-scroll-reverse;
  animation-duration: 95s;
}
.clients-marquee:hover .clients-track {
  animation-play-state: paused;
}
.clients-set {
  display: flex;
  gap: 12px;
  flex-shrink: 0;
  padding-right: 12px;
}
.client-pill {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 10px 18px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--muted);
  font-size: 14px;
  font-weight: 600;
  white-space: nowrap;
  flex-shrink: 0;
  transition: border-color var(--t), color var(--t), transform var(--t), box-shadow var(--t);
}
.client-pill-dot {
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--accent);
  flex-shrink: 0;
  opacity: 0.5;
  transition: opacity var(--t);
}
.client-pill:hover {
  border-color: var(--accent);
  color: var(--white);
  transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(141,198,63,0.12);
}
.client-pill:hover .client-pill-dot { opacity: 1; }
.client-pill--dim { opacity: 0.6; font-size: 13px; }
.client-pill--dim:hover { opacity: 1; }

@keyframes clients-scroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

/* ════════════════════════════════
   PROOF BAND — homepage, directly under the hero
   Static on purpose. The scrolling marquee lower down reads as decoration;
   this has to read as evidence, and moving text does the opposite.
════════════════════════════════ */
.proof-band {
  padding: 56px 0;
  background: var(--surface);
  border-bottom: 1px solid var(--border);
}
.proof-lead {
  font-size: 17px;
  color: var(--muted);
  text-align: center;
  max-width: 760px;
  margin: 0 auto;
}
.proof-lead strong {
  color: var(--white);
  font-weight: 700;
  white-space: nowrap;
}
.proof-names {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px;
  margin-top: 26px;
}
.proof-names .client-pill { cursor: default; }
/* The "+63 more" chip is the only interactive pill here — it jumps to the
   full list, so it gets the accent treatment to read as a control. */
.client-pill--more {
  cursor: pointer;
  text-decoration: none;
  color: var(--accent);
  border-color: rgba(141,198,63,0.45);
  font-weight: 700;
}
.client-pill--more:hover {
  color: var(--white);
  border-color: var(--accent);
}

@media (max-width: 600px) {
  .proof-band { padding: 40px 0; }
  .proof-lead { font-size: 15px; }
  .proof-names { gap: 8px; margin-top: 20px; }
}

/* ════════════════════════════════
   CITY GRID — Service Area pages
   Deliberately static, unlike .clients-marquee which scrolls. Someone checking
   whether their own town is covered has to be able to read the list, not chase
   it past. Reuses .client-pill so it stays in the same visual family.
════════════════════════════════ */
.city-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 40px;
}
.city-grid .client-pill { cursor: default; }
.city-note {
  font-size: 13px;
  color: var(--muted);
  margin-top: 26px;
}
.city-note a {
  color: var(--accent);
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid rgba(141,198,63,0.4);
}
.city-note a:hover { border-bottom-color: var(--accent); }

/* Area pages only (#what-we-do exists nowhere else): the three service cards
   carry different amounts of copy, which left their "More on..." links sitting
   at three different heights. Pin the link to the bottom of each card instead.
   Scoped rather than applied to .s-card globally — that class is used on the
   homepage and every service page, and none of those need this. */
#what-we-do .s-card {
  display: flex;
  flex-direction: column;
}
/* !important is required here only because .cta-cross-link itself sets
   `margin: 24px 0 0 0 !important` — without matching it, margin-top:auto loses. */
#what-we-do .s-card .cta-cross-link { margin-top: auto !important; padding-top: 24px; }

@media (max-width: 600px) {
  .city-grid { gap: 9px; margin-top: 30px; }
}
@keyframes clients-scroll-reverse {
  from { transform: translateX(-50%); }
  to { transform: translateX(0); }
}

/* ════════════════════════════════
   CTA STRIP
════════════════════════════════ */
.cta-strip {
  position: relative;
  overflow: hidden;
  background: var(--surface);
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  padding: 100px 32px;
}
/* Page-scoped modifier: flips the CTA strip to bg-tone, for pages where the preceding
   section is already surface-tone and would otherwise create a same-tone seam. */
.cta-strip--bg { background: var(--bg); }

/* Animated dot-grid variants for the CTA strip, so pages sharing this component
   don't all read as identical — a slow diagonal pan gives it life without being
   distracting. Color modifier picks which accent tints the dots. */
.cta-strip--dots { position: relative; overflow: hidden; }
.cta-strip--dots::before {
  content: '';
  position: absolute;
  inset: -56px;
  background-size: 28px 28px;
  mask-image: radial-gradient(ellipse 75% 65% at 70% 50%, #000 40%, transparent 100%);
  -webkit-mask-image: radial-gradient(ellipse 75% 65% at 70% 50%, #000 40%, transparent 100%);
  animation: ctaDotsPan 24s linear infinite;
  pointer-events: none;
}
.cta-strip--dots-green::before { background-image: none; }
.cta-strip--dots-blue::before { background-image: none; }
/* Brand gray (#485759) — Office Equipment Support. Navy was the original plan here,
   but #004670 on the #0A1628 dark background is effectively invisible; gray reads
   clearly in both themes and stays distinct from the green/blue pages. */
.cta-strip--dots-gray::before { background-image: none; }
@keyframes ctaDotsPan {
  from { background-position: 0 0; }
  to { background-position: 56px 56px; }
}
@media (prefers-reduced-motion: reduce) {
  .cta-strip--dots::before { animation: none; }
}
.cta-inner {
  max-width: var(--max-w);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 60px;
  align-items: center;
  position: relative;
  z-index: 1;
}
.cta-text .label { margin-bottom: 20px; }
.cta-strip h2 {
  font-size: 46px;
  font-weight: 800;
  color: var(--white);
  letter-spacing: -0.03em;
  line-height: 1.15;
  margin-bottom: 18px;
}
.cta-strip p {
  font-size: 17px;
  color: var(--muted);
  max-width: 480px;
  line-height: 1.8;
  margin-bottom: 40px;
}
.cta-strip .btn { font-size: 16px; padding: 16px 36px; }
.cta-trust-box {
  background: rgba(141,198,63,0.05);
  border: 1px solid var(--border);
  border-left: 3px solid #8DC63F;
  border-radius: 16px;
  padding: 36px 32px;
  min-width: 260px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.cta-trust-item {
  display: flex;
  align-items: flex-start;
  gap: 14px;
}
.cta-trust-icon {
  width: 36px; height: 36px;
  flex-shrink: 0;
  background: rgba(141,198,63,0.1);
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.cta-trust-icon svg {
  width: 18px; height: 18px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.cta-trust-item strong {
  display: block;
  font-size: 14px;
  font-weight: 600;
  color: var(--white);
  margin-bottom: 2px;
}
.cta-trust-item span {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.5;
}
.cta-cross-link {
  font-size: 13px !important;
  color: var(--muted) !important;
  max-width: none !important;
  margin: 24px 0 0 0 !important;
}
.cta-cross-link a {
  color: var(--accent);
  font-weight: 600;
  text-decoration: none;
  border-bottom: 1px solid rgba(141,198,63,0.4);
}
.cta-cross-link a:hover { border-bottom-color: var(--accent); }

/* ════════════════════════════════
   FAQ ACCORDION
════════════════════════════════ */
.faq-list {
  max-width: 780px;
  margin: 8px 0 0 0;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.faq-item {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 6px 24px;
  transition: border-color var(--t);
}
.faq-item[open] { border-color: rgba(141,198,63,0.4); }
.faq-question {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 18px 0;
  font-size: 18px;
  font-weight: 600;
  color: var(--white);
}
.faq-question::-webkit-details-marker { display: none; }
.faq-icon {
  width: 28px; height: 28px;
  min-width: 28px;
  border-radius: 50%;
  background: rgba(141,198,63,0.1);
  border: 1px solid rgba(141,198,63,0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform var(--t);
}
.faq-icon svg {
  width: 14px; height: 14px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 2.4;
  stroke-linecap: round;
}
.faq-item[open] .faq-icon { transform: rotate(45deg); }
.faq-answer p {
  font-size: 15px;
  color: var(--muted);
  line-height: 1.75;
  padding-bottom: 22px;
  margin: 0;
}

/* Split-view FAQ variant: question list on the left, answer panel on the right.
   Independent of .faq-item/.faq-question above so pages using the accordion variant
   (e.g. Networking & Security) are unaffected. */
.faq-split {
  margin-top: 40px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  align-items: start;
}
.faq-tabs {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.faq-tab {
  width: 100%;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 18px 22px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  font-family: inherit;
  font-size: 16.5px;
  font-weight: 600;
  text-align: left;
  color: var(--white);
  cursor: pointer;
  transition: border-color var(--t), background var(--t);
}
.faq-tab:hover { border-color: rgba(141,198,63,0.35); }
.faq-tab.is-active {
  border-color: rgba(141,198,63,0.45);
  background: rgba(141,198,63,0.06);
}
.faq-tab .faq-icon {
  width: 28px; height: 28px;
  min-width: 28px;
  border-radius: 50%;
  background: rgba(141,198,63,0.1);
  border: 1px solid rgba(141,198,63,0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform var(--t);
}
.faq-tab .faq-icon svg {
  width: 14px; height: 14px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 2.4;
  stroke-linecap: round;
}
.faq-tab.is-active .faq-icon { transform: rotate(45deg); }
.faq-panel {
  position: sticky;
  top: 130px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 40px;
  min-height: 240px;
}
.faq-panel-content { display: none; }
.faq-panel-content.is-active { display: block; animation: faqPanelFade .3s ease; }
.faq-panel-content h3 {
  font-size: 21px;
  font-weight: 700;
  color: var(--white);
  margin-bottom: 16px;
  line-height: 1.4;
}
.faq-panel-content p {
  font-size: 15.5px;
  color: var(--muted);
  line-height: 1.8;
  margin: 0;
}
@keyframes faqPanelFade {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: none; }
}

/* ════════════════════════════════
   FOOTER CONTACT (form lives in the footer, shown on every page)
════════════════════════════════ */
.footer-contact {
  padding: 90px 32px;
  background: var(--bg);
  border-bottom: 1px solid var(--border);
}
.contact-layout {
  max-width: var(--max-w);
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 80px;
  align-items: center;
}
.contact-left h2 { margin-bottom: 12px; }
.contact-left .sub { margin-bottom: 32px; }
.contact-info-list {
  display: flex;
  flex-direction: column;
  gap: 20px;
  margin-bottom: 32px;
}
.contact-info-item {
  display: flex;
  align-items: flex-start;
  gap: 14px;
}
.contact-info-icon {
  width: 40px; height: 40px;
  flex-shrink: 0;
  background: rgba(141,198,63,0.1);
  border: 1px solid rgba(141,198,63,0.2);
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.contact-info-icon svg {
  width: 18px; height: 18px;
  stroke: var(--accent);
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.contact-info-item strong {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: 3px;
}
.contact-info-item a,
.contact-info-item span {
  font-size: 15px;
  color: var(--white);
  text-decoration: none;
  line-height: 1.5;
  transition: color var(--t);
}
.contact-info-item a:hover { color: var(--accent); }
.contact-promise {
  background: rgba(141,198,63,0.05);
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  border-radius: 10px;
  padding: 20px 24px;
  font-size: 14px;
  color: var(--muted);
  line-height: 1.7;
}
.contact-promise strong { color: var(--white); display: block; margin-bottom: 4px; font-size: 15px; }
.contact-right {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 40px;
}
.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.form-group { margin-bottom: 16px; }
.form-group label {
  display: block;
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  margin-bottom: 8px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.form-group input,
.form-group select,
.form-group textarea {
  width: 100%;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 13px 16px;
  font-size: 15px;
  font-family: 'Inter', sans-serif;
  color: var(--white);
  outline: none;
  transition: border-color var(--t), box-shadow var(--t);
  -webkit-appearance: none;
  appearance: none;
}
.form-group input::placeholder,
.form-group textarea::placeholder { color: #2E4A66; }
.form-group select option { background: #0A1628; }
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(141,198,63,0.15);
}
.form-group textarea { min-height: 110px; resize: vertical; }

.form-field { position: relative; }
.form-field-icon {
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  width: 17px; height: 17px;
  stroke: var(--muted);
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  pointer-events: none;
  transition: stroke var(--t);
  z-index: 1;
}
.form-field input,
.form-field select { padding-left: 42px; }
.form-field select { padding-right: 40px; }
.form-field:focus-within .form-field-icon { stroke: var(--accent); }
.form-field-icon--end { left: auto; right: 14px; }
.btn-full { width: 100%; justify-content: center; padding: 15px; font-size: 15px; }
.contact-note {
  text-align: center;
  margin-top: 20px;
  font-size: 13px;
  color: var(--muted);
}
.contact-note a { color: var(--accent); text-decoration: none; font-weight: 500; }
.form-error {
  display: none;
  font-size: 0.85rem;
  font-weight: 600;
  color: #F87171;
  margin: -8px 0 16px;
}
.form-error.is-visible { display: block; }
.form-success {
  display: none;
  text-align: center;
  padding: 40px 0;
}
.form-success.is-visible { display: block; }
.form-success h3 { font-size: 20px; font-weight: 700; color: var(--white); margin-bottom: 10px; }
.form-success p { font-size: 15px; color: var(--muted); }

/* ════════════════════════════════
   FOOTER
════════════════════════════════ */
footer {
  background: var(--foot-bg);
  border-top: 1px solid var(--border);
}
.footer-top {
  max-width: var(--max-w);
  margin: 0 auto;
  padding: 64px 32px 48px;
  display: grid;
  grid-template-columns: 1.3fr 1fr 1fr 1fr;
  gap: 48px;
  align-items: flex-start;
}
.footer-col-logo {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
}
.footer-col-logo .footer-logo {
  margin-bottom: 16px;
}
.footer-col-logo .footer-logo img {
  height: 64px;
  width: auto;
  max-width: 240px;
  object-fit: contain;
  display: block;
  filter: brightness(0) invert(1);
}
.footer-tagline {
  font-size: 14px;
  color: var(--muted);
  line-height: 1.75;
  margin-bottom: 20px;
}
.footer-divider {
  width: 36px;
  height: 2px;
  background: var(--accent);
  border-radius: 2px;
  margin-bottom: 20px;
}
.footer-address {
  font-size: 13px;
  color: var(--muted);
  line-height: 2;
}
.footer-address a {
  color: var(--muted);
  text-decoration: none;
  transition: color var(--t);
  display: block;
}
.footer-address a:hover { color: var(--accent); }

.footer-col h4 {
  font-size: 12px;
  font-weight: 600;
  color: var(--white);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  margin-bottom: 20px;
}
.footer-col ul {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.footer-col ul a {
  font-size: 14px;
  color: var(--muted);
  text-decoration: none;
  transition: color var(--t);
  display: flex;
  align-items: center;
  gap: 6px;
}
.footer-col ul a::before {
  content: '';
  width: 4px; height: 4px;
  background: var(--border);
  border-radius: 50%;
  flex-shrink: 0;
  transition: background var(--t);
}
.footer-col ul a:hover { color: var(--white); }
.footer-col ul a:hover::before { background: var(--accent); }

.footer-bottom {
  border-top: 1px solid var(--border);
  padding: 20px 32px;
}
.footer-bottom-inner {
  max-width: var(--max-w);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
}
.footer-copy { font-size: 13px; color: #4A6080; }
.footer-right-note { font-size: 13px; color: #4A6080; }

/* ════════════════════════════════
   RESPONSIVE
════════════════════════════════ */
/* Nav collapses to hamburger well before 600px — today's nav grew (bigger logo/
   font, two dropdown items with chevrons, CTA button) and no longer fits in the
   600–1040px tablet range without wrapping/overflowing. */
@media (max-width: 1040px) {
  .nav-links, .nav-cta { display: none; }
  .hamburger { display: flex; }
  .mobile-menu { display: flex; }
}

@media (max-width: 960px) {
  .milestone-grid { grid-template-columns: repeat(2,1fr); }
  .hero-content h1 { font-size: 42px; }
  .page-hero .hero-content h1 { font-size: 38px; }
  #home { padding-top: 160px; padding-bottom: 60px; }
  .page-hero { height: auto; min-height: 0; padding-top: 160px; padding-bottom: 60px; }
  #services, .services-section, #about, #industries, #service-areas { padding: 80px 24px; }
  #clients { padding: 80px 0; }
  .how-section, .why-section, .ns-overview { padding: 80px 24px; }
  .ns-overview-grid { grid-template-columns: 1fr; gap: 32px; }
  .printers-layout { grid-template-columns: 1fr; gap: 32px; }
  .printers-photo { min-height: 280px; order: -1; }
  .flagship-section { padding: 80px 24px; }
  .flagship-grid { grid-template-columns: 1fr; }
  .capabilities-section { padding: 80px 24px; }
  .capability-grid { grid-template-columns: 1fr; gap: 48px; }
  .capability-grid::before { display: none; }
  .footer-contact { padding: 64px 24px; }
  .stats-inner { grid-template-columns: repeat(2,1fr); }
  .stat-item:nth-child(2) { border-right: none; }
  .stat-item:nth-child(3) { border-top: 1px solid var(--border); }
  .stat-item:nth-child(4) { border-top: 1px solid var(--border); border-right: none; }
  .services-grid { grid-template-columns: 1fr; }
  .s-card--photo { min-height: 300px; }
  .steps-grid { grid-template-columns: repeat(2,1fr); gap: 32px; }
  .steps-grid::before { display: none; }
  .about-inner { grid-template-columns: 1fr; gap: 40px; max-width: 100%; padding: 0 24px; }
  .why-grid { grid-template-columns: repeat(2,1fr); gap: 20px; }
  .ind-grid { grid-template-columns: 1fr; }
  .contact-layout { grid-template-columns: 1fr; gap: 40px; }
  .footer-top { grid-template-columns: 1fr 1fr; gap: 40px; }
  .footer-bottom-inner { flex-direction: column; align-items: flex-start; gap: 8px; }
  .faq-split { grid-template-columns: 1fr; }
  .faq-panel { position: static; }
}

/* CTA strip had NO responsive rule at all: `.cta-inner` stayed `1fr auto` at
   every width while `.cta-trust-box` held a 260px min-width, so below roughly
   860px the grid squeezed the text column and pushed the trust box past the
   viewport — where `.cta-strip { overflow: hidden }` silently cut it off. On a
   phone the three trust points simply vanished. Affected the homepage and every
   service page, not just the area pages. Own breakpoint because 960px is still
   comfortably wide enough for two columns and stacking there would be early. */
@media (max-width: 860px) {
  .cta-inner { grid-template-columns: 1fr; gap: 40px; }
  .cta-trust-box { min-width: 0; }
}

@media (max-width: 600px) {
  .milestone-grid { grid-template-columns: 1fr; }
  .milestone-num { font-size: 38px; }
  /* Nav */
  .nav-inner { height: 68px; padding: 0 16px; }
  .nav-logo img { height: 44px; max-width: 130px; object-fit: contain; }
  .hamburger { width: 36px; height: 36px; }
  /* 11 destinations in the menu is a lot of vertical space. Tightened so it
     fits without scrolling on a typical phone; it still scrolls safely on
     short screens now that overflow-y is set. */
  .mobile-menu { padding: 84px 24px 28px; }   /* 68px navbar + 16px breathing room */
  .mobile-menu ul { margin-bottom: 24px; gap: 4px; }
  .mobile-menu ul a { font-size: 27px; padding: 7px 0; }
  .mm-heading { font-size: 24px; padding: 2px 0 0; }
  .mm-group { padding: 6px 0; }
  .mobile-menu ul .mm-sub a { font-size: 16px; padding: 6px 0 6px 14px; }
  #theme-toggle { width: 36px; height: 36px; }
  .nav-right { gap: 8px; }

  /* Hero */
  #home { padding-top: 120px; padding-bottom: 60px; }
  .page-hero { padding-top: 120px; padding-bottom: 60px; }
  .hero-content h1 { font-size: 30px; line-height: 1.2; }
  .page-hero .hero-content h1 { font-size: 28px; }
  .hero-content p { font-size: 16px; }
  .hero-cta { flex-direction: column; align-items: flex-start; gap: 12px; }
  .hero-trust { font-size: 12px; margin-top: 32px; flex-wrap: wrap; }

  /* Global */
  .container { padding: 0 20px; }
  .h2 { font-size: 24px; }
  .sub { font-size: 15px; margin-bottom: 28px; }
  .btn { font-size: 14px; padding: 13px 22px; }

  /* Stats */
  .stats-bar { padding: 0 20px; }
  .stat-item { padding: 32px 16px; }
  .stat-num { font-size: 32px; }
  .stat-lbl { font-size: 11px; }

  /* Sections */
  #services, .services-section, #about, #industries, #service-areas { padding: 64px 20px; }
  #clients { padding: 64px 0; }
  .how-section, .why-section, .ns-overview { padding: 64px 20px; }
  .ns-overview-chips { grid-template-columns: 1fr; }
  .ns-chip--wide { grid-column: auto; }
  .flagship-section { padding: 64px 20px; }
  .flagship-card { padding: 28px 24px; }
  .capabilities-section { padding: 64px 20px; }
  .footer-contact { padding: 48px 20px; }

  /* Services */
  .services-grid { gap: 16px; }
  .s-card { padding: 28px 24px; }

  /* FAQ */
  .faq-item { padding: 4px 18px; }
  .faq-question { font-size: 15px; gap: 12px; }
  .cta-cross-link { margin-top: 16px !important; }

  /* Steps */
  .steps-grid { grid-template-columns: 1fr; gap: 28px; }

  /* About */
  .about-inner { grid-template-columns: 1fr; gap: 32px; padding: 0; max-width: 100%; }
  .about-card { padding: 32px 24px; }

  /* Why */
  .why-grid { grid-template-columns: 1fr; gap: 16px; }
  .why-item { padding: 26px 22px; }

  /* Industries */
  .ind-grid { gap: 16px; }

  /* Clients */
  .clients-set { gap: 8px; padding-right: 8px; }
  .clients-track { animation-duration: 55s; }
  .clients-track--reverse { animation-duration: 65s; }
  .client-pill { padding: 8px 14px; font-size: 13px; }

  /* Contact */
  .contact-layout { grid-template-columns: 1fr; gap: 32px; }
  .contact-right { padding: 28px 20px; }
  .form-row { grid-template-columns: 1fr; }

  /* Footer */
  .footer-top { grid-template-columns: 1fr; gap: 32px; padding: 40px 20px 32px; }
  .footer-col-logo .footer-logo img { height: 60px; }
  .footer-bottom { padding: 16px 20px; }
  .footer-bottom-inner { flex-direction: column; gap: 6px; }
}

@media (max-width: 390px) {
  .hero-content h1 { font-size: 26px; }
  .page-hero .hero-content h1 { font-size: 24px; }
  .h2 { font-size: 22px; }
  .stat-num { font-size: 28px; }
  .nav-logo img { height: 38px; max-width: 110px; }
  .s-card, .about-card { padding: 24px 18px; }
  .client-pill { padding: 7px 12px; font-size: 12px; }
  .contact-right { padding: 24px 16px; }
  .mobile-menu ul a { font-size: 26px; }
  .nav-inner { padding: 0 12px; }
  .nav-right { gap: 6px; }
  .hamburger { width: 32px; height: 32px; }
  #theme-toggle { width: 32px; height: 32px; }
}

/* ════════════════════════════════
   THEME TOGGLE BUTTON
════════════════════════════════ */
#theme-toggle {
  position: relative;
  width: 38px; height: 38px;
  background: none;
  border: 1px solid var(--border);
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: border-color var(--t), background var(--t);
  flex-shrink: 0;
}
#theme-toggle:hover { border-color: var(--accent); background: rgba(141,198,63,0.08); }
#theme-toggle svg { width: 17px; height: 17px; stroke: var(--muted); fill: none; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
#theme-toggle .icon-moon { stroke: none; fill: var(--muted); }
[data-theme="light"] #theme-toggle .icon-sun { stroke: var(--muted); fill: none; }

.theme-toggle-tip {
  position: absolute;
  top: calc(100% + 12px);
  left: 50%;
  transform: translateX(-50%) translateY(-4px);
  background: var(--surface);
  border: 1px solid var(--border);
  color: var(--white);
  font-size: 12px;
  font-weight: 500;
  padding: 7px 12px;
  border-radius: 7px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--t), transform var(--t);
  box-shadow: 0 10px 24px rgba(0,0,0,0.3);
  z-index: 50;
}
#theme-toggle:hover .theme-toggle-tip,
#theme-toggle:focus-visible .theme-toggle-tip {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.tip-to-dark { display: none; }
[data-theme="light"] .tip-to-light { display: none; }
[data-theme="light"] .tip-to-dark { display: inline; }
.icon-sun { display: none; }
.icon-moon { display: block; }
[data-theme="light"] .icon-sun { display: block; }
[data-theme="light"] .icon-moon { display: none; }

/* ════════════════════════════════
   LIGHT MODE
════════════════════════════════ */
[data-theme="light"] {
  --bg:      #F0F4F8;
  --surface: #FFFFFF;
  --accent:  #6A952F;
  --border:  #CBD5E1;
  --white:   #0F172A;
  --muted:   #64748B;
  --foot-bg: #E2E8F0;
}

[data-theme="light"] body { background: #F0F4F8; color: #0F172A; }

[data-theme="light"] nav {
  background: rgba(240,244,248,0.97);
  box-shadow: 0 1px 0 #CBD5E1;
}
[data-theme="light"] nav.scrolled { background: rgba(240,244,248,0.99); }

[data-theme="light"] .hero-fallback-bg {
  background: linear-gradient(160deg, #FFFFFF 0%, #F0F4F8 60%, #E2E8F0 100%);
}
[data-theme="light"] .hero-overlay {
  background: linear-gradient(105deg, rgba(240,244,248,0.82) 0%, rgba(240,244,248,0.55) 55%, rgba(240,244,248,0.25) 100%);
}
[data-theme="light"] .nav-logo img { filter: none; }
[data-theme="light"] .how-watermark { filter: none; opacity: 0.04; }
[data-theme="light"] .footer-col-logo .footer-logo img { filter: none; }
[data-theme="light"] .hero-content h1 { color: #0F172A; }
[data-theme="light"] .hero-content p { color: #475569; }
[data-theme="light"] .hero-trust { color: #64748B; }
[data-theme="light"] .hero-trust::before { background: #CBD5E1; }
[data-theme="light"] .btn-outline { border-color: #CBD5E1; color: #64748B; }

[data-theme="light"] .stats-bar { background: #FFFFFF; border-color: #CBD5E1; }

[data-theme="light"] .stat-num { color: #0F172A; }

[data-theme="light"] .s-card { background: #FFFFFF; box-shadow: 0 2px 12px rgba(0,0,0,0.06); }
[data-theme="light"] .s-card--photo { background-size: cover; }
[data-theme="light"] .s-card:hover { box-shadow: 0 8px 32px rgba(106,149,47,0.12); }
[data-theme="light"] .s-icon { background: rgba(106,149,47,0.08); border-color: rgba(106,149,47,0.15); }
[data-theme="light"] .s-card--blue .s-icon { background: rgba(69,184,255,0.1); border-color: rgba(69,184,255,0.2); }

[data-theme="light"] .why-item { background: #FFFFFF; border-color: #E2E8F0; box-shadow: 0 2px 12px rgba(0,0,0,0.05); }
[data-theme="light"] .why-item:hover { box-shadow: 0 8px 32px rgba(106,149,47,0.12); }
[data-theme="light"] .why-item:hover .why-icon svg { stroke: #FFFFFF; }
[data-theme="light"] .why-item--blue:hover { box-shadow: 0 8px 32px rgba(69,184,255,0.15); }
[data-theme="light"] .why-item--blue .why-icon { background: rgba(69,184,255,0.1); border-color: rgba(69,184,255,0.2); }
[data-theme="light"] .why-item--blue .why-icon svg { stroke: var(--blue); }
[data-theme="light"] .why-item--blue:hover .why-icon { background: var(--blue); border-color: var(--blue); }

[data-theme="light"] .how-section { background: #E8EEF5; border-color: #CBD5E1; }
[data-theme="light"] .how-section::before { background: none; }
[data-theme="light"] .steps-grid::before { border-color: rgba(106,149,47,0.35); }
[data-theme="light"] .step-num { background: var(--navy); color: #FFFFFF; border-color: var(--surface); }

[data-theme="light"] .about-text p { color: rgba(15,23,42,0.72); }

[data-theme="light"] .about-card { background: #FFFFFF; border-color: #CBD5E1; border-left-color: #6A952F; box-shadow: 0 2px 12px rgba(0,0,0,0.06); }
[data-theme="light"] .about-card .ring { border-color: #CBD5E1; }
[data-theme="light"] .about-metric { border-bottom-color: #E2E8F0; }
[data-theme="light"] .about-metric-num { color: #6A952F; }
[data-theme="light"] .about-location { border-top-color: #E2E8F0; }
[data-theme="light"] .about-location-city { color: #0F172A; }

[data-theme="light"] .why-icon { background: rgba(106,149,47,0.08); border-color: rgba(106,149,47,0.15); }
[data-theme="light"] .why-section { background: #EDF1F7; border-color: #CBD5E1; }

[data-theme="light"] .ns-overview { background: #EDF1F7; border-color: #CBD5E1; }
[data-theme="light"] .ns-overview::before { background: none; }
[data-theme="light"] .ns-chip { background: #FFFFFF; border-color: #E2E8F0; color: #334155; }
[data-theme="light"] .ns-chip:hover { border-color: rgba(106,149,47,0.5); box-shadow: 0 8px 24px rgba(106,149,47,0.12); }
[data-theme="light"] .ns-chip-icon { background: rgba(106,149,47,0.08); border-color: rgba(106,149,47,0.15); }
[data-theme="light"] .ns-chip-icon svg { stroke: #6A952F; }
[data-theme="light"] .ns-chip:hover .ns-chip-icon { background: #6A952F; border-color: #6A952F; }
[data-theme="light"] .ns-chip--blue:hover { border-color: rgba(69,184,255,0.5); box-shadow: 0 8px 24px rgba(69,184,255,0.15); }
[data-theme="light"] .ns-chip--blue .ns-chip-icon { background: rgba(69,184,255,0.1); border-color: rgba(69,184,255,0.2); }
[data-theme="light"] .ns-chip--blue .ns-chip-icon svg { stroke: var(--blue); }
[data-theme="light"] .ns-chip--blue:hover .ns-chip-icon { background: var(--blue); border-color: var(--blue); }

[data-theme="light"] .flagship-card { background: #FFFFFF; border-color: #E2E8F0; box-shadow: 0 2px 12px rgba(0,0,0,0.05); }
[data-theme="light"] .flagship-card:hover { box-shadow: 0 8px 32px rgba(106,149,47,0.12); }
[data-theme="light"] .flagship-card h3 { color: #0F172A; }
[data-theme="light"] .flagship-card--blue:hover { box-shadow: 0 8px 32px rgba(69,184,255,0.15); }
[data-theme="light"] .flagship-list li { color: #334155; }
[data-theme="light"] .milestone-item { background: #FFFFFF; border-color: #E2E8F0; box-shadow: 0 2px 12px rgba(0,0,0,0.05); }
[data-theme="light"] .milestone-item:hover { box-shadow: 0 8px 28px rgba(106,149,47,0.12); }
[data-theme="light"] .milestone-num { color: #6A952F; }
[data-theme="light"] .milestone-lbl { color: #0F172A; }
[data-theme="light"] .milestone-sub { color: #64748B; }
[data-theme="light"] .story-quote { background: #FFFFFF; border-color: #E2E8F0; border-left-color: #6A952F; }
[data-theme="light"] .story-quote::before { color: #6A952F; }
[data-theme="light"] .story-quote p { color: #0F172A; }
[data-theme="light"] .story-quote cite { color: #6A952F; }
[data-theme="light"] .story-quote cite span { color: #64748B; }
[data-theme="light"] .flagship-proof { background: #FFFFFF; border-color: #E2E8F0; border-left-color: #6A952F; }
[data-theme="light"] .flagship-proof strong { color: #0F172A; }
[data-theme="light"] .flagship-section::before { background: none; }
[data-theme="light"] .flagship-section::after { background-image: none; }

[data-theme="light"] .capabilities-section { background: #EDF1F7; border-color: #CBD5E1; }
[data-theme="light"] .capabilities-section::before { background: none; }
[data-theme="light"] .capability-grid::before { border-color: rgba(106,149,47,0.35); }
[data-theme="light"] .capability-node { background: #FFFFFF; border-color: #EDF1F7; box-shadow: 0 0 0 1px #CBD5E1; }
[data-theme="light"] .capability-node svg { stroke: #6A952F; }
[data-theme="light"] .capability-item:hover .capability-node { box-shadow: 0 0 0 1px #6A952F; }
[data-theme="light"] .capability-grid--blue::before { border-color: rgba(69,184,255,0.45); }
[data-theme="light"] .capability-grid--blue .capability-node svg { stroke: var(--blue); }
[data-theme="light"] .capability-grid--blue .capability-item:hover .capability-node { box-shadow: 0 0 0 1px var(--blue); }
[data-theme="light"] .capability-item h3 { color: #0F172A; }

[data-theme="light"] #industries { background: #EDF1F7; border-color: #CBD5E1; }
[data-theme="light"] #industries::before { background: none; }
[data-theme="light"] #services::after { background: none; }
[data-theme="light"] #about::before { background: none; }
[data-theme="light"] #service-areas::after { background-image: none; }
[data-theme="light"] #clients::before { background: none; }
[data-theme="light"] .footer-contact { background: var(--bg); border-color: #CBD5E1; }

[data-theme="light"] .cta-strip { background: #E8EEF5; border-color: #CBD5E1; }
[data-theme="light"] .cta-strip::after { background: none; }
[data-theme="light"] .cta-strip.cta-strip--bg { background: #EDF1F7; }
[data-theme="light"] .cta-strip--dots-green::before { background-image: none; }
[data-theme="light"] .cta-strip--dots-blue::before { background-image: none; }
[data-theme="light"] .cta-strip--dots-gray::before { background-image: none; }
[data-theme="light"] .cta-trust-box { background: rgba(106,149,47,0.04); border-color: #CBD5E1; border-left-color: #6A952F; }
[data-theme="light"] .cta-trust-item strong { color: #0F172A; }
[data-theme="light"] .cta-cross-link a { border-bottom-color: rgba(106,149,47,0.4); }

[data-theme="light"] .faq-item { background: #FFFFFF; border-color: #E2E8F0; box-shadow: 0 2px 12px rgba(0,0,0,0.05); }
[data-theme="light"] .faq-item[open] { border-color: rgba(106,149,47,0.5); }
[data-theme="light"] .faq-question { color: #0F172A; }
[data-theme="light"] .faq-icon { background: rgba(106,149,47,0.08); border-color: rgba(106,149,47,0.15); }
[data-theme="light"] .faq-icon svg { stroke: #6A952F; }
[data-theme="light"] .faq-tab { background: #FFFFFF; border-color: #E2E8F0; box-shadow: 0 2px 12px rgba(0,0,0,0.05); color: #0F172A; }
[data-theme="light"] .faq-tab:hover { border-color: rgba(106,149,47,0.35); }
[data-theme="light"] .faq-tab.is-active { border-color: rgba(106,149,47,0.5); background: rgba(106,149,47,0.05); }
[data-theme="light"] .faq-tab .faq-icon { background: rgba(106,149,47,0.08); border-color: rgba(106,149,47,0.15); }
[data-theme="light"] .faq-tab .faq-icon svg { stroke: #6A952F; }
[data-theme="light"] .faq-panel { background: #EDF1F7; border-color: #CBD5E1; }
[data-theme="light"] .faq-panel-content h3 { color: #0F172A; }

[data-theme="light"] .contact-right { background: #FFFFFF; border-color: #CBD5E1; box-shadow: 0 2px 12px rgba(0,0,0,0.06); }
[data-theme="light"] .contact-info-icon { background: rgba(106,149,47,0.08); border-color: rgba(106,149,47,0.15); }
[data-theme="light"] .contact-promise { background: rgba(106,149,47,0.04); border-color: #CBD5E1; border-left-color: #6A952F; }
[data-theme="light"] .contact-promise strong { color: #0F172A; }
[data-theme="light"] .form-group input,
[data-theme="light"] .form-group select,
[data-theme="light"] .form-group textarea { background: #F8FAFC; border-color: #CBD5E1; color: #0F172A; }
[data-theme="light"] .form-group input::placeholder,
[data-theme="light"] .form-group textarea::placeholder { color: #94A3B8; }
[data-theme="light"] .form-group select option { background: #F8FAFC; color: #0F172A; }
[data-theme="light"] .form-field-icon { stroke: #94A3B8; }
[data-theme="light"] .form-field:focus-within .form-field-icon { stroke: #6A952F; }

[data-theme="light"] footer { background: #E2E8F0; border-color: #CBD5E1; }
[data-theme="light"] .footer-top { border-color: #CBD5E1; }
[data-theme="light"] .footer-divider { background: #6A952F; }
[data-theme="light"] .footer-bottom { border-color: #CBD5E1; }
[data-theme="light"] .footer-col ul a::before { background: #CBD5E1; }
[data-theme="light"] .footer-col ul a:hover::before { background: #6A952F; }

/* NOTE: an orphaned `[data-theme="light"]` selector used to sit here with no
   block after it. CSS therefore parsed it together with the rule below as
   `[data-theme="light"] #btt`, so the back-to-top button had NO styling at all
   in dark mode — it rendered as a bare 24px arrow inline at the foot of the
   page instead of a fixed floating button. Do not reintroduce a bare selector. */
#btt {
  position: fixed;
  bottom: 32px;
  right: 32px;
  width: 48px;
  height: 48px;
  background: var(--accent);
  border: none;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity var(--t), transform var(--t), box-shadow var(--t);
  z-index: 999;
  pointer-events: none;
}
#btt.show {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
#btt:hover {
  box-shadow: none;
  transform: translateY(-2px);
}
#btt svg { width: 20px; height: 20px; stroke: #fff; }
