/* =================================================================
   Nexus Tech — Main Stylesheet
   Poppins loaded via Appearance → Fonts (WordPress font library)
================================================================= */

/* ── Reset / Base ─────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: 'Poppins', sans-serif !important;
  font-size: 18px;
  font-weight: 400;
  line-height: 1.6;
  color: #1a1a1a;
  background: #fff;
  -webkit-font-smoothing: antialiased;
  /* Kill any sideways scroll (e.g. a section below the hero with a stray margin)
     so the full-bleed hero/wave can't get cut on the right. clip keeps fixed/
     sticky positioning working, unlike overflow:hidden. */
  overflow-x: clip;
}
img { max-width: 100%; height: auto; display: block; }
a { text-decoration: none; color: inherit; }
ul { list-style: none; }
button { cursor: pointer; background: none; border: none; font: inherit; }

/* ── Global heading weight — Poppins SemiBold across all headings ── */
h1, h2, h3, h4, h5, h6,
[class*="headline"], [class*="heading"], [class*="__title"] {
  font-weight: 600 !important;
}

/* ── Buttons ──────────────────────────────────────────────────── */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 10px 24px;
  border-radius: 100px;
  font-weight: 600;
  font-size: 16px;
  letter-spacing: 0.3px;
  transition: opacity .2s, transform .15s;
  white-space: nowrap;
}
.btn:hover { opacity: .88; transform: translateY(-1px); }
.btn-yellow { background: #FED906; color: #111; }
.btn-dark   { background: #222222; color: #fff; }
.btn-white  { background: #fff;    color: #111; border: 1px solid #ddd; }
.btn-lg     { padding: 14px 32px; font-size: 18px; }
.btn-nav    { padding: 10px 28px; font-size: 16px; font-weight: 700; }

/* ================================================================
   NAVIGATION
================================================================= */

/* ── Site Header ──────────────────────────────────────────────── */
:root {
  --nexus-nav-h: 143px;     /* fallback until JS measures real height */
  --nexus-content-w: 1320px; /* standard inner max-width for all content sections */
}

.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 200;
  padding: 20px 185px;
  transition: padding .3s;
}
.site-header.scrolled { padding: 12px 185px; }

/* Non-hero pages: push content below the fixed nav */
#page-content { padding-top: var(--nexus-nav-h); }
/* Home page hero overlay: hero spans behind the nav from y=0 */
.home #page-content { padding-top: 0; }

/* ── Nav Card ─────────────────────────────────────────────────── */
.nav-card {
  position: relative;
  background: #fff;
  padding: 25px;
  border-radius: 20px;
  box-shadow: 2px 5px 3px 0px rgba(0,0,0,0.10);
  transition: box-shadow .3s;
}
.site-header.scrolled .nav-card { box-shadow: 2px 6px 6px 0px rgba(0,0,0,0.14); }
.nav-card.mega-is-open {
  border-radius: 20px 20px 0 0;
  box-shadow: none;
}

/* nav-inner is the flex row that holds everything inside the card */
.nav-inner {
  display: flex;
  align-items: center;
  width: 100%;
  gap: 0;
  padding: 0;
}

/* ── Logo ─────────────────────────────────────────────────────── */
.nav-logo { flex: 0 0 auto; }
.nav-logo a, .nav-logo .custom-logo-link { display: flex; align-items: center; }
.nav-logo img, .nav-logo .custom-logo { height: 53px; width: auto; max-width: 220px; }

/* ── Primary Nav Links ────────────────────────────────────────── */
.nav-primary {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  justify-content: center;
  align-items: center;
}
.nav-links {
  display: flex;
  align-items: center;
  list-style: none;
  margin: 0;
  padding: 0;
}
.nav-item {
  display: flex;
  align-items: center;
}
.nav-item > a,
.nav-item > span[role="button"] {
  display: flex;
  align-items: center;
  padding: 6px 22px;
  font-size: 18px;
  font-weight: 600;
  color: #1a1a1a;
  position: relative;
  transition: color .2s;
  white-space: nowrap;
  cursor: pointer;
}
/* Underline bar — hover only, NOT on active page */
.nav-item > a::after,
.nav-item > span[role="button"]::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 22px;
  right: 22px;
  height: 3px;
  background: transparent;
  border-radius: 2px;
  transition: background .2s;
}
/* Hover: show underline (skip active item) */
.nav-item:not(.active) > a:hover::after,
.nav-item:not(.active) > span[role="button"]:hover::after { background: #000; }
.nav-item > a:hover,
.nav-item > span[role="button"]:hover { color: #000; }
/* Active: darker text + yellow underline bar */
.nav-item.active > a,
.nav-item.active > span[role="button"] { color: #000; }
.nav-item.active > a::after,
.nav-item.active > span[role="button"]::after { background: #FED906; }
.has-mega-menu > a[aria-expanded="true"],
.has-mega-menu > span[aria-expanded="true"] { color: #000; }

/* ── Nav Actions (Search + Contact Us) ────────────────────────── */
.nav-actions {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 14px;
  position: relative;
}

/* Search icon button */
.nav-search-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  padding: 0;
  border: none;
  border-radius: 50%;
  background: transparent;
  color: #1a1a1a;
  cursor: pointer;
  transition: background .2s, color .2s;
}
.nav-search-toggle:hover,
.nav-search-toggle.is-active { background: #f3f1ee; color: #000; }
.nav-search-toggle:focus-visible { outline: 2px solid #FED906; outline-offset: 2px; }
.nav-search-toggle svg { display: block; }

/* Search popover panel — drops below the nav card */
.nav-search-panel {
  position: absolute;
  top: calc(100% + 18px);
  right: 0;
  width: min(360px, 80vw);
  background: #fff;
  border: 1px solid #e6e3e0;
  border-radius: 14px;
  box-shadow: 0 12px 34px rgba(0,0,0,0.14);
  padding: 14px;
  z-index: 120;
}
.nav-search-panel[hidden] { display: none; }
.nav-search-panel form { display: flex; gap: 8px; }
.nav-search-panel input[type="search"],
.nav-search-panel input[type="text"],
.nav-search-panel .search-field {
  flex: 1 1 auto;
  min-width: 0;
  height: 44px;
  padding: 0 14px;
  font-size: 17px;
  border: 1px solid #dcd9d9;
  border-radius: 10px;
  outline: none;
  background: #faf9f8;
}
.nav-search-panel input[type="search"]:focus,
.nav-search-panel .search-field:focus { border-color: #FED906; background: #fff; }
.nav-search-panel input[type="submit"],
.nav-search-panel .search-submit {
  flex: 0 0 auto;
  height: 44px;
  padding: 0 18px;
  border: none;
  border-radius: 10px;
  background: #111;
  color: #fff;
  font-weight: 700;
  font-size: 14px;
  cursor: pointer;
  transition: background .2s;
}
.nav-search-panel .search-submit:hover { background: #000; }

/* ── Mobile Toggle (hamburger SVG) ───────────────────────────── */
.nav-mobile-toggle {
  display: none;            /* shown at <=768 via the media query */
  align-items: center;
  justify-content: center;
  width: 36px; height: 36px;
  padding: 0;
  margin-left: auto;
  background: none;
  border: 0;
  color: #000;
  cursor: pointer;
  position: relative;   /* lift above any overlapping hero element */
  z-index: 5;
}
/* Explicit size so no inherited/reset rule can collapse the icon. The colour
   is baked into the SVG file, so it can't be recoloured away either. */
.site-header .nav-mobile-toggle .nav-burger-icon {
  display: block !important;
  width: 24px !important;
  height: 24px !important;
  max-width: none !important;   /* beat any global `img { max-width:100% }` quirk */
}

/* ================================================================
   MEGA MENU
================================================================= */
.mega-menu {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  width: auto;
  background: #fff;
  border: 0 !important;
  outline: 0 !important;
  border-top: 0 !important;
  border-right: 0 !important;
  border-bottom: 0 !important;
  border-left: 0 !important;
  border-color: transparent !important;
  border-radius: 0 0 20px 20px;
  padding: 28px 38px 32px;
  box-shadow: none;
  opacity: 0;
  visibility: hidden;
  transform: translateY(-6px);
  transition: opacity .22s ease, visibility .22s ease, transform .22s ease;
  z-index: 100;
  pointer-events: none;
}
.mega-menu.is-open {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  pointer-events: all;
}

/* Solutions header row — "View All Solutions →" sits above the columns */
.mega-solutions-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-bottom: 16px;
  margin-bottom: 16px;
  border-bottom: 1px solid #eceaea;
}
.mega-solutions-label {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: #888;
}
.mega-solutions-label--link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  text-decoration: none;
  transition: color .15s;
}
.mega-solutions-label--link:hover { color: #555; }
.mega-solutions-label--link svg { transition: transform .15s; }
.mega-solutions-label--link:hover svg { transform: translateX(3px); }
.mega-solutions-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 15px;
  font-weight: 600;
  color: #1a1a1a;
  transition: color .15s;
}
.mega-solutions-link:hover { color: #c8a800; }
.mega-solutions-link svg { transition: transform .15s; }
.mega-solutions-link:hover svg { transform: translateX(3px); }

.mega-menu-inner { display: flex; gap: 32px; align-items: flex-start; }

.mega-col { flex: 1; min-width: 0; }
.mega-col-heading {
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0.3px;
  margin-bottom: 10px;
  color: #000;
}
.mega-col-heading--sub { margin-top: 20px; }
a.mega-col-heading--link {
  display: flex;
  align-items: center;
  gap: 5px;
  text-decoration: none;
  color: #000;
  transition: color .15s;
}
a.mega-col-heading--link:hover { color: #555; }
a.mega-col-heading--link svg { transition: transform .15s; }
a.mega-col-heading--link:hover svg { transform: translateX(3px); }

.mega-link-list { display: flex; flex-direction: column; gap: 2px; }
.mega-link-list li a {
  font-size: 17px;
  font-weight: 400;
  line-height: 32px;
  letter-spacing: 0.2px;
  color: #333;
  transition: color .15s;
  display: block;
}
.mega-link-list li a:hover { color: #c8a800; }

/* Browse CTA at bottom of a column */
.mega-browse-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 12px;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: 0.3px;
  color: #1a1a1a;
  border: 1.5px solid #dcd9d9;
  border-radius: 20px;
  padding: 5px 14px;
  transition: border-color .15s, color .15s, background .15s;
}
.mega-browse-link:hover {
  color: #000;
  border-color: #aaa;
  background: #f5f5f5;
}
.mega-browse-link svg { transition: transform .15s; }
.mega-browse-link:hover svg { transform: translateX(2px); }

.mega-featured-card {
  flex: 0 0 242px;
  background: #f8f7f6;
  border-radius: 12px;
  padding: 16px;
}
.mega-featured-title { font-size: 20px; font-weight: 700; margin-bottom: 12px; }
.mega-featured-logo-wrap {
  background: #fff;
  border-radius: 10px;
  height: 101px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  margin-bottom: 12px;
}
.mega-featured-logo-placeholder { }
.mega-featured-logo-wrap img { max-height: 60px; width: auto; }
.mega-featured-desc { font-size: 18px; line-height: 1.4; margin-bottom: 16px; }
.mega-featured-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: 0.5px;
  color: #000;
}
.mega-featured-link:hover { text-decoration: underline; }

/* ================================================================
   HERO SLIDER
================================================================= */
/* Full-bleed: break out of Elementor's boxed container so the hero (image +
   wave) spans the whole viewport width, edge to edge. #page-content clips the
   horizontal overflow this creates. */
.hero-section {
  position: relative;
  left: 50%;
  width: 100vw;
  margin-left: -50vw;
  margin-right: -50vw;
  /* overflow:visible so the wave's left/right overhangs are never clipped.
     Images are already clipped by .hero-slide { overflow:hidden }.
     Horizontal scroll is prevented globally by body { overflow-x:clip }. */
  overflow: visible;
  /* Matches the first slide's bg_color (PHP outputs --hero-section-bg on the section)
     so any gap between the swiper and section edges shows the correct colour, not white. */
  background: var(--hero-section-bg, #FEFDF1);
  /* Effective wave height. Scales SMOOTHLY with the viewport width (21vw) so the
     wave keeps the same proportions — and therefore is never clipped/squashed —
     at every screen size, instead of jumping in fixed steps. Floored so it can't
     collapse on tiny phones, and capped at the editor's wave height (--wave-h). */
  --wave-h-eff: var(--wave-h, 300px);
  min-height: var(--hero-min-h, 0px);
}

/* ── Make the breakout work inside ANY Elementor wrapper ──────────────────
   The negative-margin breakout is clipped if an ancestor has overflow:hidden
   (Elementor sections/containers often do). So: (a) un-clip those wrappers,
   and (b) strip only their VERTICAL padding so the hero sits flush at the top.
   We must NOT touch horizontal padding/margins on ANCESTOR wrappers — the
   breakout relies on the container staying centred in the viewport. */
.elementor-section:has(.hero-section),
.elementor-container:has(.hero-section),
.elementor-column:has(.hero-section),
.elementor-widget-wrap:has(.hero-section),
.e-con:has(.hero-section),
.e-con-inner:has(.hero-section),
.e-child:has(.hero-section),
.elementor-element:has(.hero-section) {
  overflow: visible !important;
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* Full-bleed breakout lives on the WIDGET WRAPPER, not on .hero-section.
   calc(50% - 50vw) is self-correcting for any centred Elementor layout:
   whether the section is boxed (column ≈ 1320 px, centred with 60 px gutters)
   or full-width (column = 100vw), the resulting left offset always places the
   widget at exactly x = 0 relative to the viewport.
   Once the wrapper is 100 vw wide, the .hero-section breakout inside it becomes
   a no-op (50% of 100vw − 50vw = 0), and .hero-swiper / slides naturally
   inherit 100 % of 100 vw through normal flow. */
.elementor-widget-nexus_hero_slider {
  position: relative !important;
  left: calc(50% - 50vw) !important;
  width: 100vw !important;
  max-width: none !important;
  overflow: visible !important;
  padding: 0 !important;
  margin-top: 0 !important;
  margin-right: 0 !important;
  margin-left: 0 !important;
  margin-bottom: 0; /* no !important — overlap_below control writes margin-bottom */
}
.elementor-widget-nexus_hero_slider > .elementor-widget-container {
  width: 100% !important;
  max-width: none !important;
  overflow: visible !important;
  padding: 0 !important;
  margin: 0 !important;
}

/* ── Wave Divider overlap — un-clip all ancestor wrappers so negative
   margin-top on the widget can rise above the section boundary and
   visually overlap the hero section above it. ─────────────────────── */
.elementor-section:has(.elementor-widget-nexus_wave_divider),
.elementor-container:has(.elementor-widget-nexus_wave_divider),
.elementor-column:has(.elementor-widget-nexus_wave_divider),
.elementor-widget-wrap:has(.elementor-widget-nexus_wave_divider),
.e-con:has(.elementor-widget-nexus_wave_divider),
.e-con-inner:has(.elementor-widget-nexus_wave_divider),
.e-child:has(.elementor-widget-nexus_wave_divider) {
  overflow: visible !important;
}
/* The hero overlaps the fixed nav by design, so cancel the nav push-down
   whenever a hero is present (covers non-front-page placements too). */
#page-content:has(.hero-section)  { padding-top: 0 !important; }
#page-content:has(.simple-hero)   { padding-top: 0 !important; }
#page-content:has(.sw-hero)       { padding-top: 0 !important; }

/* Swiper fade effect sets all slides to position:absolute, so their height:auto
   collapses to content height — meaning .hero-slide-media { top:0; bottom:0 }
   only fills the content area, not the full slide.
   Fix: give .hero-swiper an explicit HEIGHT (not just min-height) so the
   height:100% chain (wrapper → slide → media) has a concrete value to resolve.
   min-height on the slide is a safety net in case content is taller than the clamp. */
.hero-swiper {
  width: 100%;
  height: calc(clamp(560px, 78vh, 820px) + var(--hero-pad-bottom, 0px));
}
.hero-swiper .swiper-wrapper {
  height: 100%;
}

/* Each slide derives ONE effective wave height (--wave-h-eff) from the editor
   value (--wave-h). Both the wave and the content's bottom padding use it, so
   text always clears the ribbon, and everything scales down on small screens. */
.hero-slide {
  position: relative;
  height: 100%;                /* fills the swiper container's explicit height */
  min-height: clamp(560px, 78vh, 820px); /* safety: never shorter than the clamp */
  display: flex;
  align-items: center;
  overflow: hidden;            /* clip the media to the slide */
}

/*
 * Stacking:
 *   - Inside each slide: .hero-slide-media (photo + overlay) at the base,
 *     .hero-content (text/button) above it.
 *   - .hero-wave is a SECTION-level sibling at z-index:2 — it paints above the
 *     swiper (so it covers the photo) and spans the full-bleed hero width. The
 *     content clears it via padding-bottom, so it never overlaps the text.
 *   - Pagination at section level, z-index:20.
 */
.hero-swiper.swiper { z-index: auto; }
.hero-swiper .swiper-slide { z-index: auto !important; }

/* ── Slide media (real image, proportions preserved) ── */
.hero-slide-media {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  height: 100%;
  z-index: 1;
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
}
/* Side images: anchor to the correct edge so the partial width sits flush */
.hero-slide-media--right { right: 0; left: auto; }
.hero-slide-media--left  { left: 0;  right: auto; }
.hero-slide-media--full  { left: 0;  right: 0; width: 100%; }


/* ── Image overlay ── fades the photo into the slide colour behind the text.
   Lives on the media box, so it ONLY covers the image. The colour is
   --hero-bg-rgb (set from the widget's Overlay Colour control) so it works
   over ANY photo and decouples from the section background colour.
   --hold : stays 100% solid up to here
   --mid  : opacity at the midpoint
   --end  : where the fade reaches --min
   --min  : floor opacity after --end (0 = fully transparent) */
.hero-slide-media--overlay::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  --c:    var(--hero-bg-rgb, 254,253,241);
  --hold: 20%;
  --mid:  0.6;
  --end:  74%;
  --min:  0;
}
.hero-slide-media--ov-light::after { --hold: 6%;  --mid: 0.35; --end: 45%;  --min: 0;    }
.hero-slide-media--ov-heavy::after { --hold: 40%; --mid: 0.80; --end: 100%; --min: 0.35; }

/* FULL-BLEED: gradient left → right (text is on the left) */
.hero-slide-media--overlay.hero-slide-media--full::after {
  background: linear-gradient(to right,
    rgba(var(--c), 1)             0%,
    rgba(var(--c), 1)             var(--hold),
    rgba(var(--c), var(--mid))    calc((var(--hold) + var(--end)) / 2),
    rgba(var(--c), var(--min))    var(--end),
    rgba(var(--c), var(--min))    100%);
}

/* SIDE IMAGES: gradient from the inner (text) edge into the photo.
   Right image → fade from LEFT. Left image → fade from RIGHT. */
.hero-slide-media--overlay.hero-slide-media--right::after {
  background: linear-gradient(to right,
    rgba(var(--c), 1)             0%,
    rgba(var(--c), 1)             var(--hold),
    rgba(var(--c), var(--mid))    calc((var(--hold) + var(--end)) / 2),
    rgba(var(--c), var(--min))    var(--end),
    rgba(var(--c), 0)             100%);
}
.hero-slide-media--overlay.hero-slide-media--left::after {
  background: linear-gradient(to left,
    rgba(var(--c), 1)             0%,
    rgba(var(--c), 1)             var(--hold),
    rgba(var(--c), var(--mid))    calc((var(--hold) + var(--end)) / 2),
    rgba(var(--c), var(--min))    var(--end),
    rgba(var(--c), 0)             100%);
}

/* ── Page Hero overlay — uses --hero-overlay-color (full hex, live-updatable via
   Elementor selectors). color-mix() replaces the rgba(RGB,alpha) approach so no
   PHP hex→RGB conversion is needed. Scoped to .page-hero to avoid touching the
   hero slider which still uses the legacy --hero-bg-rgb / --c approach. ── */
.page-hero .hero-slide-media--overlay.hero-slide-media--full::after {
  background: linear-gradient(to right,
    var(--hero-overlay-color)                                                                  0%,
    var(--hero-overlay-color)                                                                  var(--hold),
    color-mix(in srgb, var(--hero-overlay-color) calc(var(--mid) * 100%), transparent)        calc((var(--hold) + var(--end)) / 2),
    color-mix(in srgb, var(--hero-overlay-color) calc(var(--min) * 100%), transparent)        var(--end),
    color-mix(in srgb, var(--hero-overlay-color) calc(var(--min) * 100%), transparent)        100%);
}
.page-hero .hero-slide-media--overlay.hero-slide-media--right::after {
  background: linear-gradient(to right,
    var(--hero-overlay-color)                                                                  0%,
    var(--hero-overlay-color)                                                                  var(--hold),
    color-mix(in srgb, var(--hero-overlay-color) calc(var(--mid) * 100%), transparent)        calc((var(--hold) + var(--end)) / 2),
    color-mix(in srgb, var(--hero-overlay-color) calc(var(--min) * 100%), transparent)        var(--end),
    transparent                                                                                100%);
}
.page-hero .hero-slide-media--overlay.hero-slide-media--left::after {
  background: linear-gradient(to left,
    var(--hero-overlay-color)                                                                  0%,
    var(--hero-overlay-color)                                                                  var(--hold),
    color-mix(in srgb, var(--hero-overlay-color) calc(var(--mid) * 100%), transparent)        calc((var(--hold) + var(--end)) / 2),
    color-mix(in srgb, var(--hero-overlay-color) calc(var(--min) * 100%), transparent)        var(--end),
    transparent                                                                                100%);
}

/* ── Shape divider ── section-level, so it spans the full-bleed hero width and
   is NEVER clipped by a Swiper slide. A small symmetric overhang covers any
   sub-pixel / scrollbar gap; the section's overflow:hidden trims the rest. */
.hero-wave {
  position: absolute;
  bottom: -14px;
  left: -45px;
  right: -20px;
  width: calc(100% + 95px);
  height: var(--wave-h-eff, 300px);
  z-index: 5;
  line-height: 0;
  pointer-events: none;
}
/* Simple coloured shapes (Wave / Tilt / Curve / Triangle) use an inline SVG */
.hero-wave--simple { overflow: hidden; }
.hero-wave--simple svg { display: block; width: 100%; height: 100%; }
.hero-wave--flip.hero-wave--simple svg { transform: scaleX(-1); }
/* The Nexus ribbon = the exact approved design, drawn as a self-contained
   SVG data-URI background — lives entirely in CSS, toggleable + responsive. */
/* The Nexus ribbon is drawn in two CSS layers so the photo never shows below it:
   ::before = a solid "skirt" in the slide colour, masked to the ribbon’s exact
   BOTTOM contour so the colour fills only below the yellow (never peeks above it),
   then down to the slide bottom — hiding the image below the wave;
   ::after  = the exact approved ribbon (gradients + soft blur) painted on top. */
.hero-wave--nexus { background: none; }
.hero-wave--nexus::before,
.hero-wave--nexus::after { content: ""; position: absolute; inset: 0; }
.hero-wave--nexus::before {
  background-color: var(--hero-wave-base, #fff);
  -webkit-mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='-22%20687%201497%20352'%20preserveAspectRatio='none'%3E%3Cpath%20d='M-22.0%20722.0L-2.0%20722.0L18.0%20723.0L38.0%20723.0L58.0%20724.0L78.0%20726.0L98.0%20727.0L118.0%20729.0L138.0%20731.0L158.0%20733.0L178.0%20735.0L198.0%20738.0L218.0%20740.0L238.0%20743.0L258.0%20746.0L278.0%20750.0L298.0%20753.0L318.0%20757.0L338.0%20761.0L358.0%20766.0L378.0%20770.0L398.0%20775.0L418.0%20781.0L438.0%20786.0L458.0%20792.0L478.0%20799.0L498.0%20805.0L518.0%20813.0L538.0%20820.0L558.0%20829.0L578.0%20836.0L598.0%20844.0L618.0%20851.0L638.0%20859.0L658.0%20865.0L678.0%20872.0L698.0%20879.0L718.0%20885.0L738.0%20890.0L758.0%20896.0L778.0%20901.0L798.0%20907.0L818.0%20911.0L838.0%20916.0L858.0%20920.0L878.0%20924.0L898.0%20927.0L918.0%20930.0L938.0%20933.0L958.0%20936.0L978.0%20938.0L998.0%20940.0L1018.0%20941.0L1038.0%20942.0L1058.0%20942.0L1078.0%20943.0L1098.0%20942.0L1118.0%20941.0L1138.0%20940.0L1158.0%20938.0L1178.0%20936.0L1198.0%20933.0L1218.0%20929.0L1238.0%20925.0L1258.0%20920.0L1278.0%20914.0L1298.0%20908.0L1318.0%20900.0L1338.0%20892.0L1358.0%20883.0L1378.0%20873.0L1398.0%20861.0L1418.0%20849.0L1438.0%20835.0L1475.0%20835.0L1475%201041L-22%201041Z'%20fill='%23fff'/%3E%3C/svg%3E") bottom center / 100% 100% no-repeat;
          mask: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='-22%20687%201497%20352'%20preserveAspectRatio='none'%3E%3Cpath%20d='M-22.0%20722.0L-2.0%20722.0L18.0%20723.0L38.0%20723.0L58.0%20724.0L78.0%20726.0L98.0%20727.0L118.0%20729.0L138.0%20731.0L158.0%20733.0L178.0%20735.0L198.0%20738.0L218.0%20740.0L238.0%20743.0L258.0%20746.0L278.0%20750.0L298.0%20753.0L318.0%20757.0L338.0%20761.0L358.0%20766.0L378.0%20770.0L398.0%20775.0L418.0%20781.0L438.0%20786.0L458.0%20792.0L478.0%20799.0L498.0%20805.0L518.0%20813.0L538.0%20820.0L558.0%20829.0L578.0%20836.0L598.0%20844.0L618.0%20851.0L638.0%20859.0L658.0%20865.0L678.0%20872.0L698.0%20879.0L718.0%20885.0L738.0%20890.0L758.0%20896.0L778.0%20901.0L798.0%20907.0L818.0%20911.0L838.0%20916.0L858.0%20920.0L878.0%20924.0L898.0%20927.0L918.0%20930.0L938.0%20933.0L958.0%20936.0L978.0%20938.0L998.0%20940.0L1018.0%20941.0L1038.0%20942.0L1058.0%20942.0L1078.0%20943.0L1098.0%20942.0L1118.0%20941.0L1138.0%20940.0L1158.0%20938.0L1178.0%20936.0L1198.0%20933.0L1218.0%20929.0L1238.0%20925.0L1258.0%20920.0L1278.0%20914.0L1298.0%20908.0L1318.0%20900.0L1338.0%20892.0L1358.0%20883.0L1378.0%20873.0L1398.0%20861.0L1418.0%20849.0L1438.0%20835.0L1475.0%20835.0L1475%201041L-22%201041Z'%20fill='%23fff'/%3E%3C/svg%3E") bottom center / 100% 100% no-repeat;
}
.hero-wave--nexus::after {
  background: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='-22%20687%201497%20352'%20preserveAspectRatio='none'%3E%3Cdefs%3E%3CradialGradient%20id='g9'%20cx='0'%20cy='0'%20r='1'%20gradientUnits='userSpaceOnUse'%20gradientTransform='translate(372.778%20970.155)%20scale(314.974%2058.5282)'%3E%3Cstop%20stop-color='%23FDF200'/%3E%3Cstop%20offset='.784874'%20stop-color='%23FFFF00'%20stop-opacity='.5'/%3E%3C/radialGradient%3E%3ClinearGradient%20id='g10'%20x1='808.146'%20y1='924.911'%20x2='817.627'%20y2='1145.34'%20gradientUnits='userSpaceOnUse'%3E%3Cstop%20stop-color='%23FDE704'/%3E%3Cstop%20offset='1'%20stop-color='%23FFFEDF'/%3E%3C/linearGradient%3E%3ClinearGradient%20id='g11'%20x1='183.872'%20y1='740.907'%20x2='834.938'%20y2='1288.82'%20gradientUnits='userSpaceOnUse'%3E%3Cstop%20offset='.218722'%20stop-color='%23FEF8E4'/%3E%3Cstop%20offset='.919298'%20stop-color='%23FCE605'/%3E%3C/linearGradient%3E%3ClinearGradient%20id='g12'%20x1='-21.9717'%20y1='932.102'%20x2='1465.16'%20y2='932.102'%20gradientUnits='userSpaceOnUse'%3E%3Cstop%20stop-color='%23FDEAAE'/%3E%3Cstop%20offset='1'%20stop-color='%23FDFC00'/%3E%3C/linearGradient%3E%3Cfilter%20id='gf'%20x='-15.2'%20y='794.243'%20width='1479.29'%20height='226.137'%20filterUnits='userSpaceOnUse'%3E%3CfeGaussianBlur%20stdDeviation='7.6'/%3E%3C/filter%3E%3Cmask%20id='gm'%20maskUnits='userSpaceOnUse'%20x='-22'%20y='722'%20width='1497'%20height='292'%3E%3Cpath%20d='M540.801%20821.876C344.093%20741.47%2083.6575%20721.952%20-21.9717%20722.243V866.746C284.493%20825.107%20474.557%20899.407%20666.827%20967.713C963.347%201073.06%201332.3%20968.264%201474.09%20919.805L1455.71%20821.876C1174.29%201048.74%20737.51%20902.283%20540.801%20821.876Z'%20fill='url(%23g10)'/%3E%3C/mask%3E%3C/defs%3E%3Cpath%20d='M-2.50324%201038.49V962.962L49.9916%20930.593L361.09%20901.821L740.522%20943.181V999.636C464.31%20916.197%20127.571%20991.734%20-2.50324%201038.49Z'%20fill='none'/%3E%3Cg%20mask='url(%23gm)'%3E%3Crect%20x='-2.50342'%20y='687.884'%20width='1450.7'%20height='303.756'%20fill='url(%23g11)'/%3E%3Cg%20opacity='.5'%20filter='url(%23gf)'%3E%3Cpath%20d='M612.789%20924.793C382.816%20831.124%20106.339%20808.872%20-0.000141787%20809.454V839.163L25.588%20872.366L428.741%20924.793L744.251%20985.957L1154.42%201005.18L1448.89%20902.075V839.163C1189.47%201040.48%20783.398%20980.132%20612.789%20924.793Z'%20fill='%23EFDF10'/%3E%3C/g%3E%3C/g%3E%3Cpath%20d='M537.442%20920.477C341.908%20840.07%2083.0269%20820.552%20-21.9717%20820.844V965.346C282.663%20923.707%20486.933%20897.788%20669.659%20976.115C957.421%201099.47%201324.22%201024.57%201465.16%20976.115V827.148C1185.42%201054.01%20732.976%201000.88%20537.442%20920.477Z'%20fill='url(%23g12)'/%3E%3C/svg%3E") bottom center / 100% 100% no-repeat;
}
.hero-wave--flip.hero-wave--nexus { transform: scaleX(-1); }

/* ── Content ── */
.hero-content {
  position: relative;
  z-index: 3; /* above wave (z-index:2), below nothing */
  width: 100%;
  max-width: 1400px;
  margin: 0 auto;
  padding: calc(var(--nexus-nav-h, 143px) + 90px) var(--hero-pad-x, 50px) 40px;
  /* Bottom padding tracks the wave so the text/button always clear the ribbon */
  padding-bottom: calc(var(--wave-h-eff, 300px) + 50px);
}

.hero-text { max-width: var(--hero-text-w, 560px); }

.hero-headline {
  font-size: clamp(30px, 4vw, 54px);
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: -0.5px;
  color: #111;  /* default — overridden by Elementor headline_color control */
  margin-bottom: 20px;
}

.hero-body {
  font-size: 18px;
  font-weight: 400;
  line-height: 1.6;
  color: #444;  /* default — overridden by Elementor body_color control */
  margin-bottom: 32px;
  max-width: 480px;
}

.hero-btn { margin-top: 32px; }

.hero-section:not(.page-hero) .hero-btn {
    margin-top: 0;
}

/* ── Dot pagination ─────────────────────────────────────────── */
.hero-section .swiper-pagination {
    bottom: calc(var(--wave-h-eff, 300px) - 60px);
    left: 0;
    width: 100%;
    position: absolute;
    z-index: 20;
}
button.hero-dot {
    padding: 10px;
}
.hero-dot {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: rgba(255,255,255,0.70);
  border: none;
  box-shadow: 0 1px 4px rgba(0,0,0,0.30);
  cursor: pointer;
  padding: 0;
  margin: 0 4px;
  vertical-align: middle;
  transition: background .25s, width .25s, border-radius .25s;
}
.hero-dot--active {
    background: #FED906;
    width: 20px;
    border-radius: 6px;
    transform: none;
}


/* ================================================================
   TRUSTED VENDORS MARQUEE
================================================================= */
.vendors-section {
  padding: 50px 0 50px 100px;
  overflow: hidden;
}
.vendors-inner {
  max-width: 100%;
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center;
  gap: 0;
}

/* Fixed label + divider */
.vendors-label-fixed {
  display: flex;
  align-items: center;
  flex-shrink: 0;
}
.vendors-label {
  font-size: 28px;
  font-weight: 700;
  line-height: 1.4;
  white-space: nowrap;
  flex-shrink: 0;
}
.vendors-divider {
  width: 1px;
  height: 46px;
  background: #000;
  opacity: .25;
  margin: 0 30px;
  flex-shrink: 0;
}

/* Marquee wrapper — clips the scrolling track */
.vendors-marquee-wrap {
  flex: 1;
  overflow: hidden;
  min-width: 0;
  -webkit-mask-image: linear-gradient(to right, transparent 0%, black 5%, black 95%, transparent 100%);
          mask-image: linear-gradient(to right, transparent 0%, black 5%, black 95%, transparent 100%);
}

/* Scrolling track */
.vendors-marquee-track {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: nowrap !important;
  align-items: center;
  gap: var(--marquee-gap, 60px);
  width: max-content;
  will-change: transform;
  animation: vendors-scroll var(--marquee-duration, 30s) linear infinite;
}
.vendors-marquee-track--pauseable:hover {
  animation-play-state: paused;
}

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

.vendors-logo-item {
  display: inline-flex !important;
  align-items: center;
  flex-shrink: 0;
}
.vendors-logo-item img {
  height: var(--logo-height, 60px) !important;
  width: auto !important;
  max-width: none !important;
  object-fit: contain;
  display: block !important;
  flex-shrink: 0;
}
.vendors-logo-item a {
  display: inline-flex;
  align-items: center;
}
.vendors-logo-item a:hover { opacity: .75; }

/* ================================================================
   STATS SECTION
================================================================= */
.stats-section {
  background: #FEFDF3;
  padding: 80px 60px;
  position: relative; /* anchors the border pseudo-elements */
}
/* Top/bottom border lines — width-controllable via --stats-border-extent.
   Default 0px so they're invisible until the widget switcher activates them. */
.stats-section::before,
.stats-section::after {
  content: '';
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  width: var(--stats-border-extent, 0px);
  height: var(--stats-border-thick, 2px);
  background: #000000;
}
.stats-section::before { top: 0; }
.stats-section::after  { bottom: 0; }
.stats-grid {
  display: grid;
  /* --stat-col-w: set by the "Column Width" slider in the widget (per device).
     Falls back to max-content so items truly shrink to content width and
     never stretch to fill the container the way 1fr / auto would. */
  grid-template-columns: repeat(4, var(--stat-col-w, max-content));
  justify-content: center;
  gap: 0;
  max-width: var(--nexus-content-w);
  margin: 0 auto;
  text-align: center;
}
.stat-number {
  font-size: clamp(40px, 5vw, 64px);
  font-weight: 900;
  color: #111;
  line-height: 1;
  opacity: 0;
  transform: translateY(16px);
  transition: opacity .6s, transform .6s;
}
.stat-number.stat-animated { opacity: 1; transform: translateY(0); }
/* Show numbers immediately inside the Elementor editor (IntersectionObserver doesn't fire there) */
.elementor-editor-active .stat-number { opacity: 1; transform: translateY(0); }
.stat-label {
  font-size: 16px;
  font-weight: 600;
  color: #555;
  margin-top: 8px;
  letter-spacing: 0.3px;
}

/* ================================================================
   COMMON SECTION HEADER
================================================================= */
.section-header { text-align: center; margin-bottom: 48px; }

.section-eyebrow {
  display: block;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #999;
  margin-bottom: 10px;
}

.section-headline {
  font-size: clamp(26px, 3.5vw, 42px);
  font-weight: 900;
  color: #111;
  line-height: 1.1;
  letter-spacing: -0.3px;
  margin-bottom: 12px;
}

.section-body {
  font-size: 18px;
  color: #555;
  max-width: 640px;
  line-height: 1.6;
  margin: 0 auto;
}

/* ── Stats additions ───────────────────────────────────────────── */
.stats-divider-rule {
  width: 100%;
  max-width: var(--nexus-content-w);
  margin: 75px auto;
  height: 2px;
  background: #000000;
}
.stat-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 0 var(--stat-pad, 40px); /* horizontal space — Item Side Padding slider */
  min-width: 0;                     /* allow shrinking inside a fixed-width track */
  overflow-wrap: break-word;        /* wrap long labels if column is narrower than text */
}
/* Thin vertical separator between adjacent stat items */
.stat-item + .stat-item {
  border-left: 1px solid rgba(0, 0, 0, 0.15);
}

/* ── Stats Bar — heading + button (below the divider) ───────────── */
.stats-cta-heading {
  font-size: clamp(30px, 4.5vw, 54px);
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: -0.5px;
  text-align: center;
  max-width: 760px;
  margin: 0 auto;
  color: inherit;
}
.stats-cta-btn-wrap {
  text-align: center;
  margin-top: 32px;
}
.stats-cta-btn-wrap .btn svg { display: block; }

/* ================================================================
   SERVICES SECTION
================================================================= */
.services-section {
  background: #fff;
  padding: 80px 60px;
}
.services-section-header {
  max-width: var(--nexus-content-w);
  margin-left: auto;
  margin-right: auto;
}
.services-heading {
  font-size: clamp(26px, 3.5vw, 42px);
  font-weight: 900;
  color: #111;
  line-height: 1.1;
  letter-spacing: -0.3px;
  margin-bottom: 12px;
}
.services-body-text {
  font-size: 16px;
  color: #555;
  line-height: 1.6;
  max-width: 640px;
  margin: 0;
}

/* 6-column grid: gradient cards span 2 cols (3/row), image cards span 3 cols (2/row) */
.services-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 20px;
  max-width: var(--nexus-content-w);
  margin: 0 auto;
}

.service-card {
  grid-column: span 2;
  border-radius: 20px;
  padding: 32px 28px;
  display: flex;
  flex-direction: column;
  min-height: 280px;
  position: relative;
  overflow: hidden;
  transition: transform .25s, box-shadow .25s;
}
.service-card:hover { transform: translateY(-4px); box-shadow: 0 14px 36px rgba(0,0,0,0.11); }

.service-card--wide { grid-column: span 3; min-height: 320px; }

.service-card--gradient {
  background: linear-gradient(145deg, #fdeaa9 0%, #fef3cd 100%);
}

.service-card--image {
  background-size: cover;
  background-position: center;
}
.service-card--image::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, rgba(0,0,0,0.28) 0%, rgba(0,0,0,0.72) 100%);
  border-radius: 20px;
  z-index: 0;
}

.service-card__content {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 14px;
  height: 100%;
}

.service-card__icon {
  width: 52px;
  height: 52px;
  background: rgba(0,0,0,0.82);
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.service-card__icon img {
  width: 28px;
  height: 28px;
  object-fit: contain;
  filter: brightness(0) invert(1);
}

.service-card__title {
  font-size: 22px;
  font-weight: 700;
  color: #111;
  line-height: 1.2;
}
.service-card--image .service-card__title { color: #fff; }

.service-card__body {
  font-size: 17px;
  color: #555;
  line-height: 1.55;
  flex: 1;
}
.service-card--image .service-card__body { color: rgba(255,255,255,0.80); }

.service-card__link {
  margin-top: auto;
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 17px;
  font-weight: 600;
  color: #111;
  transition: gap .2s;
}
.service-card__link:hover { gap: 12px; }
.service-card--image .service-card__link { color: #FED906; }

/* Solid colour card — text stays dark, inherits link colour from base */
.service-card--solid .service-card__title { color: #111; }
.service-card--solid .service-card__body  { color: #444; }

/* ================================================================
   SOLUTIONS SECTION
================================================================= */
.solutions-section {
  position: relative;
  padding: 80px 60px;
  overflow: hidden;
}
.solutions-bg-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(0,0,0,0.52) 0%, rgba(10,10,25,0.78) 100%);
  z-index: 0;
}
.solutions-section-header {
  position: relative;
  z-index: 1;
  margin-bottom: 48px;
}
.solutions-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 16px;
  max-width: var(--nexus-content-w);
  margin: 0 auto 40px;
}
.solution-card {
  background: rgba(255,255,255,0.10);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 16px;
  padding: 28px 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
  text-align: center;
  transition: background .2s, transform .2s;
  text-decoration: none;
}
a.solution-card:hover {
  background: rgba(255,255,255,0.18);
  transform: translateY(-4px);
}
.solution-card__logo {
  height: 52px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.solution-card__logo img {
  max-height: 52px;
  width: auto;
  object-fit: contain;
}
.solution-card--glass .solution-card__logo img {
  filter: brightness(0) invert(1);
}
.solution-card__title {
  font-size: 17px;
  font-weight: 600;
  color: #fff;
  line-height: 1.3;
}
.solutions-cta {
  position: relative;
  z-index: 1;
  text-align: center;
}

/* ── Solutions widget additions ────────────────────────────────── */

/* Constrained inner wrapper (keeps header + grid off the edge) */
.solutions-inner {
  position: relative;
  z-index: 1;
  max-width: calc(var(--nexus-content-w, 1320px) + 120px); /* +120 = 2×60px padding; prevents double-indent at >1320px viewports */
  margin: 0 auto;
  padding: 0 60px;
}

/* Split header: heading+body left, button right, vertically centred */
.solutions-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 40px;
  margin-bottom: 48px;
}
.solutions-header__text { flex: 1; min-width: 0; }
.solutions-header__cta  { flex-shrink: 0; }

.solutions-heading {
  font-size: clamp(26px, 3.5vw, 42px);
  font-weight: 900;
  color: #fff;
  line-height: 1.1;
  letter-spacing: -0.3px;
  margin-bottom: 12px;
}
.solutions-body {
  font-size: 16px;
  color: rgba(255,255,255,0.78);
  line-height: 1.6;
  max-width: 560px;
  margin: 0;
}

/* Explicit-column grid modifiers (override auto-fill) */
.solutions-grid--cols-2 { grid-template-columns: repeat(2, 1fr); }
.solutions-grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
.solutions-grid--cols-4 { grid-template-columns: repeat(4, 1fr); }

/* White solid card */
.solution-card--white {
  background: #ffffff;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  border: none;
  align-items: stretch;
  text-align: left;
}
/* Logo centred inside the full-width logo container */
.solution-card--white .solution-card__logo {
  width: 100%;
  justify-content: center;
}
.solution-card--white:hover {
  background: #ffffff;
  transform: translateY(-4px);
  box-shadow: 0 8px 28px rgba(0,0,0,0.14);
}
.solution-card--white .solution-card__title { color: #111; }

/* Description text (shown on white cards) */
.solution-card__desc {
  font-size: 14px;
  color: #555;
  line-height: 1.6;
  margin: 0;
}
.solution-card--glass .solution-card__desc { color: rgba(255,255,255,0.82); }

/* Glass card keeps original filter */
.solution-card--glass { /* inherits base .solution-card glass styles */ }

/* ================================================================
   TESTIMONIALS SECTION
================================================================= */
.testimonials-section {
  background: #f5f4f2;
  padding: 80px 0;
  overflow: hidden;
}

/* Section heading + sub-text */
.testimonials-heading {
  font-size: clamp(26px, 3.5vw, 42px);
  font-weight: 900;
  color: #111;
  line-height: 1.1;
  letter-spacing: -0.3px;
  margin-bottom: 12px;
}
.testimonials-body-text {
  font-size: 16px;
  color: #555;
  line-height: 1.6;
  margin: 0;
}
/* Inner wrapper — centres content and holds the side padding so the header,
   carousel and nav all align to the same edge as other sections. */
.testimonials-inner {
  max-width: var(--nexus-content-w);
  margin: 0 auto;
  padding: 0 60px;
}
.testimonials-section-header {
  margin-bottom: 40px;
}

/* Viewport clips the off-screen slides at the exact card edges. The cards are
   flat (border + fill, no shadow), so no horizontal bleed is needed. */
.testimonials-viewport {
  overflow: hidden;
}

/* The swiper itself has NO horizontal padding, so Swiper sizes each slide from
   the "Cards Per View" setting and a whole number of cards fills the row with
   none cut off. overflow:visible lets the card shadows spill into the viewport
   bleed; the viewport above does the actual clipping. */
.testimonials-swiper.swiper {
  overflow: visible;
}
.testimonials-swiper .swiper-slide { height: auto; }

.testimonial-card {
  width: 100%;            /* fill the slide width Swiper computes */
  height: 420px;          /* fixed, uniform height for every card */
  background: #F8F9F7;
  border: 1px solid #E7E8E3;
  border-radius: 20px;
  padding: 28px 24px;
  box-shadow: none;       /* flat card per Figma — border + fill, no shadow */
  display: flex;
  flex-direction: column;
  gap: 16px;
  overflow: hidden;       /* guard: clip any unusually long quote */
}
.testimonial-stars { display: flex; gap: 3px; }
.testimonial-quote {
  font-size: 17px;
  line-height: 1.65;
  color: #444;
  flex: 1;
  min-height: 0;     /* allow the quote to shrink within the fixed-height card */
  overflow: hidden;  /* keep long quotes from overlapping the author footer */
  quotes: none;
}
.testimonial-author {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-top: 12px;
  border-top: 1px solid #f0f0f0;
  margin-top: auto;
}
.testimonial-avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
}
.testimonial-avatar-placeholder {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #FED906;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 17px;
  font-weight: 700;
  color: #111;
  flex-shrink: 0;
}
.testimonial-name   { font-size: 17px; font-weight: 700; color: #111; line-height: 1.2; }
.testimonial-company { font-size: 12px; color: #999; line-height: 1.3; margin-top: 2px; }

.testimonials-nav {
  display: flex;
  justify-content: center;
  gap: 12px;
  margin-top: 8px;
}
.testimonials-btn {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: 2px solid #ddd;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: #333;
  transition: border-color .2s, background .2s, color .2s;
  flex-shrink: 0;
}
.testimonials-btn:hover,
.testimonials-btn:focus-visible {
  border-color: #111;
  background: #111;
  color: #fff;
  outline: none;
}
.testimonials-btn svg { pointer-events: none; display: block; }
.testimonials-btn.swiper-button-disabled { opacity: 0.35; cursor: default; pointer-events: none; }

/* Next button is dark by default (primary action) */
.testimonials-btn--next {
  background: #111;
  border-color: #111;
  color: #fff;
}
.testimonials-btn--next:hover,
.testimonials-btn--next:focus-visible {
  background: #333;
  border-color: #333;
}
.testimonials-btn--next.swiper-button-disabled {
  background: #fff;
  border-color: #ddd;
  color: #333;
}

/* Nav alignment modifiers */
.testimonials-nav--left   { justify-content: flex-start; }
.testimonials-nav--center { justify-content: center; }
.testimonials-nav--right  { justify-content: flex-end; }

/* Slides are flex so the card stretches to the fixed card height below,
   keeping every testimonial card the exact same height. Slide WIDTH is left to
   Swiper (computed from "Cards Per View") so cards fill the row with no cut-off. */
.testimonials-swiper .swiper-wrapper { align-items: stretch; }
.testimonials-swiper .swiper-slide {
  height: auto;
  display: flex;
}
.testimonial-card { width: 100%; }

/* ── Figma card layout: avatar + badge header ── */
.testimonial-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 20px;
}

.testimonial-card-header--no-avatar { justify-content: center; }

/* Avatar in card header */
.testimonial-card .testimonial-avatar,
.testimonial-card .testimonial-avatar-placeholder {
  width: 52px;
  height: 52px;
  flex-shrink: 0;
}

/* Company badge */
.testimonial-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 6px 14px;
  border-radius: 8px;
  min-width: 72px;
  height: 72px;
  flex-shrink: 0;
  /* Fallback background in case the inline colour isn't set */
  background: #C41230;
}
.testimonial-badge img {
  max-height: 44px;
  max-width: 200px;
  width: auto;
  object-fit: contain;
  /* No forced inversion — logos render in their original brand colours */
  display: block;
}
.testimonial-badge__text {
  font-size: 13px;
  font-weight: 700;
  color: #fff;
  white-space: nowrap;
  letter-spacing: 0.2px;
}

/* Author footer (name + title, no avatar — avatar is in header) */
.testimonial-footer {
  margin-top: auto;
  padding-top: 14px;
}

/* ================================================================
   WAVE DIVIDER — standalone section-transition widget
   Two independently-coloured halves (above / below) with the Nexus
   ribbon floating across the boundary. Reuses .hero-wave--nexus for
   the SVG pseudo-elements — no duplication of the data-URIs.
================================================================= */
/* Outer wrapper: position + stacking so negative-margin overlap clears the
   section above. z-index 10 keeps the ribbon above the hero image/overlay. */
.elementor-widget-nexus_wave_divider {
  position: relative;
  z-index: 10;
}
.elementor-widget-nexus_wave_divider > .elementor-widget-container {
  overflow: visible;
  padding: 0 !important;
  margin: 0 !important;
}

/* Wrapper background = color_above for the ENTIRE element.
   The hero-wave ::before skirt handles filling everything BELOW the ribbon
   contour with --hero-wave-base (= --wdiv-below). No gradient needed —
   a gradient bleeds color_below upward through the SVG's transparent areas. */
.wave-divider-wrap {
  position: relative;
  height: var(--wdiv-h, 160px);
  overflow: hidden;
  background: var(--wdiv-above, #FEFDF3);
}

/* Ribbon sits absolutely over the gradient, overflows left/right to
   prevent edge gaps on wide viewports. */
.wave-divider__ribbon {
  position: absolute;
  top: 0;
  left: -60px;
  right: -60px;
  width: calc(100% + 120px);
  height: 100%;
  pointer-events: none;
}

/* Alias: bridge --wdiv-below (inherited from .wave-divider-wrap)
   into --hero-wave-base so the skirt pseudo-element (::before of
   .hero-wave--nexus) fills with the correct "below" colour. */
.wave-divider__ribbon.hero-wave--nexus {
  --hero-wave-base: var(--wdiv-below, #ffffff);
}

/* ================================================================
   CTA WAVE SECTION
================================================================= */
.cta-wave-section {
  position: relative;
  text-align: center;
}

.cta-wave-content {
  position: relative;
  max-width: 720px;
  margin: 0 auto;
}

.cta-wave__heading {
  font-size: clamp(26px, 3.5vw, 46px);
  font-weight: 900;
  color: #111;
  line-height: 1.1;
  letter-spacing: -0.4px;
  margin-bottom: 16px;
}
.cta-wave__body {
  font-size: 17px;
  color: #555;
  line-height: 1.65;
  max-width: 640px;
  margin: 0 auto 32px;
}

/* ================================================================
   CTA BAND
================================================================= */
.cta-band {
  text-align: center;
  padding: 100px 60px;
}
.cta-band__eyebrow {
  display: block;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  margin-bottom: 16px;
}
.cta-band__headline {
  font-size: clamp(26px, 3.5vw, 50px);
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: -0.3px;
  margin-bottom: 16px;
  max-width: 900px;
  margin-left: auto;
  margin-right: auto;
}
.cta-band__body {
  font-size: 18px;
  max-width: 600px;
  margin: 0 auto 36px;
  line-height: 1.6;
}

/* ================================================================
   TEXT BLOCK WIDGET
================================================================= */
.ntb-wrap {
  width: 100%;
}
.ntb-inner {
  margin-left: auto;
  margin-right: auto;
}
.ntb-eyebrow {
  display: block;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 2px;
  text-transform: uppercase;
  margin-bottom: 14px;
}
.ntb-headline {
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: -0.3px;
  margin: 0 0 16px;
}
.ntb-subheadline {
  font-size: clamp(17px, 2vw, 21px);
  font-weight: 500;
  line-height: 1.4;
  margin: 0 0 20px;
}
.ntb-body {
  font-size: 17px;
  line-height: 1.7;
}
.ntb-body p { margin: 0 0 1em; }
.ntb-body p:last-child { margin-bottom: 0; }
.ntb-cta {
  margin-top: 32px;
}

/* ================================================================
   GALLERY WIDGET
================================================================= */
.ngal-section {
  width: 100%;
}
.ngal-wrap {
  display: flex;
}
.ngal-grid {
  display: grid;
  /* grid-template-columns and gap are driven by Elementor responsive selectors */
}
.ngal-cell {
  /* width/height set by Elementor size selector — always square */
  overflow: hidden;
  flex-shrink: 0;
}
.ngal-cell img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.35s ease, opacity 0.3s ease;
}

/* Hover: zoom */
.ngal-grid--hover-zoom .ngal-cell:hover img {
  transform: scale(1.07);
}

/* Hover: dim */
.ngal-grid--hover-dim .ngal-cell:hover img {
  opacity: 0.72;
}

/* Hover: lift */
.ngal-grid--hover-lift .ngal-cell {
  transition: box-shadow 0.25s ease, transform 0.25s ease;
}
.ngal-grid--hover-lift .ngal-cell:hover {
  transform: translateY(-3px);
  box-shadow: 0 12px 32px rgba(0,0,0,0.18);
}

/* ================================================================
   GROUP LOGOS SECTION
================================================================= */
.group-logos-section { padding: 60px; }
.group-logos-header  { margin-bottom: 40px; }
.group-logos-grid {
  --logo-h: 60px;
  display: flex;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: center;
  gap: 32px 56px;
  max-width: var(--nexus-content-w);
  margin: 0 auto;
  overflow: hidden;
}
.group-logo-item {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 1 auto;
  min-width: 0;
}
.group-logo-item img {
  display: block;
  height: var(--logo-h, 60px) !important;
  width: auto !important;
  max-width: none;
  object-fit: contain;
}
.group-logo-item--gs img {
  filter: grayscale(1);
  opacity: 0.55;
  transition: filter .25s, opacity .25s;
}
.group-logo-item--gs img:hover {
  filter: grayscale(0);
  opacity: 1;
}

/* ================================================================
   FOOTER
================================================================= */
.site-footer {
  background: #373737;
  color: #fff;
}

.footer-inner {
  display: flex;
  justify-content: space-between;
  gap: 40px;
  padding: 60px 103px 40px;
  align-items: flex-start;
}

.footer-brand {
  flex: 0 0 260px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.footer-logo img {
  width: var(--footer-logo-w, 240px);
  max-width: 100%;
  height: auto;
}

.footer-social {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}
.footer-social a {
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: .8;
  transition: opacity .2s, transform .2s;
}
.footer-social a:hover { opacity: 1; transform: translateY(-2px); }

.footer-nav {
  display: grid;
  grid-template-columns: repeat(4, auto);
  gap: clamp(24px, 4vw, 72px);
  justify-content: end;
}
.footer-nav-heading {
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.5px;
  margin-bottom: 16px;
  color: #fff;
  text-transform: uppercase;
  white-space: nowrap;
}
.footer-nav ul { list-style: none; padding: 0; margin: 0; }
.footer-nav ul li { margin-bottom: 10px; }
.footer-nav ul li a {
  font-size: 15px;
  color: rgba(255,255,255,0.7);
  transition: color .2s;
  white-space: nowrap;
}
.footer-nav ul li a:hover { color: #FED906; }

.footer-bottom {
  border-top: 1px solid rgba(255,255,255,0.15);
  padding: 16px 103px;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.67;
  letter-spacing: 0.5px;
  color: #fff;
  text-align: center;
}

/* ================================================================
   PAGE CONTENT WRAPPER
================================================================= */
#page-content {
  min-height: 50vh;
  overflow-x: clip;   /* contain the full-bleed hero breakout (no sideways scroll) */
  /* padding-top is set in the nav section above via --nexus-nav-h */
}

/* ================================================================
   RESPONSIVE
================================================================= */
@media (max-width: 1400px) {
  .site-header { padding: 20px 80px; }
  .site-header.scrolled { padding: 12px 80px; }
  #page-content { padding-top: var(--nexus-nav-h); }
}

@media (max-width: 1200px) {
  .site-header { padding: 16px 40px; }
  .site-header.scrolled { padding: 10px 40px; }
}

@media (max-width: 1280px) {
  .footer-inner  { padding: 48px 48px 32px; }
  .footer-bottom { padding: 16px 48px; }
}

@media (max-width: 1024px) {
  .site-header { padding: 12px 24px; }
  .site-header.scrolled { padding: 8px 24px; }
  .nav-inner { gap: 8px; padding: 0; }
  .nav-item > a { padding: 6px 14px; font-size: 16px; }
  .nav-item > a::after { left: 14px; right: 14px; }
  .footer-inner { padding: 48px 40px 32px; gap: 32px; }
  .footer-nav { grid-template-columns: repeat(2, auto); gap: 32px; }
  .footer-bottom { padding: 16px 40px; }
  /* keep the var-based padding-bottom (tracks the wave) — only adjust top/sides */
  .hero-content { padding-top: calc(var(--nexus-nav-h, 143px) + 40px); padding-left: 40px; padding-right: 40px; }

  /* Services */
  .services-section { padding: 60px 40px; }
  .services-grid { grid-template-columns: repeat(4, 1fr); }
  .service-card { grid-column: span 2; }
  .service-card--wide { grid-column: span 2; }

  /* Solutions */
  .solutions-section { padding: 60px 0; }
  .solutions-inner { padding: 0 40px; }
  .solutions-grid { grid-template-columns: repeat(2, 1fr); }
  .solutions-grid--cols-3,
  .solutions-grid--cols-4 { grid-template-columns: repeat(2, 1fr); }

  /* Testimonials */
  .testimonials-inner          { padding: 0 40px; }

  /* CTA Band */
  .cta-band { padding: 80px 40px; }

  /* Group Logos */
  .group-logos-section { padding: 48px 40px; }
  .group-logos-grid    { gap: 24px 36px; }
}

@media (max-width: 768px) {
  .site-header { padding: 10px 14px; }
  .site-header.scrolled { padding: 8px 14px; }

  /* Compact nav bar on phones */
  .nav-card { padding: 10px 14px; border-radius: 14px; }
  .nav-inner { padding: 0; gap: 8px; }
  .nav-logo img, .nav-logo .custom-logo { height: 38px; }

  /* Hide desktop nav — replaced by full-screen overlay */
  .nav-primary { display: none; }
  /* ID + !important so an Elementor/page Custom-CSS rule that hides
     .nav-mobile-toggle on the homepage can't win over this. */
  #site-header .nav-mobile-toggle { display: flex !important; width: 24px; height: 30px; }

  /* Keep Contact Us visible on mobile, compact */
  .nav-actions .btn-nav { font-size: 13px; padding: 7px 14px; }

  .mega-menu { left: 0; right: 0; border-radius: 0 0 20px 20px; padding: 20px 16px; }
  .mega-menu-inner { flex-direction: column; }

  .footer-inner { flex-direction: column; padding: 40px 24px 24px; }
  .footer-brand { flex: none; width: 100%; }
  .footer-nav { grid-template-columns: repeat(2, 1fr); gap: 24px; }
  .footer-bottom { padding: 16px 24px; }

  .vendors-section { padding: 32px 0 32px 20px; }
  .vendors-label { font-size: 18px; }
  .vendors-divider { height: 32px; margin: 0 16px; }

  .hero-content { padding-top: calc(var(--nexus-nav-h, 143px) + 24px); padding-left: 24px; padding-right: 24px; }
  .hero-headline { font-size: 30px; }

  /* Prevent body scroll when overlay is open */
  body.mobile-menu-active { overflow: hidden; }

  /* Services */
  .services-section { padding: 48px 20px; }
  .services-grid    { grid-template-columns: 1fr; }
  .service-card,
  .service-card--wide { grid-column: span 1; min-height: 220px; }

  /* Solutions */
  .solutions-section { padding: 48px 0; }
  .solutions-inner { padding: 0 24px; }
  .solutions-grid,
  .solutions-grid--cols-2,
  .solutions-grid--cols-3,
  .solutions-grid--cols-4 { grid-template-columns: repeat(2, 1fr); }
  .solutions-header { flex-direction: column; align-items: flex-start; gap: 20px; }

  /* Testimonials */
  .testimonials-inner          { padding: 0 20px; }
  .testimonial-card  { height: 460px; }

  /* CTA Band */
  .cta-band { padding: 60px 24px; }

  /* Group Logos */
  .group-logos-section { padding: 40px 20px; }
  .group-logos-grid    { flex-direction: column; flex-wrap: nowrap; gap: 28px 0; }

  /* Stats — 2 equal columns on tablet/mobile */
  .stats-section { padding: 60px 24px; }
  .stats-grid    { grid-template-columns: repeat(2, 1fr); gap: 32px 0; justify-content: center; }
  .stat-item     { padding: 0 var(--stat-pad, 24px); }
  .stat-item:nth-child(odd)  { border-left: none; }
  .stat-item:nth-child(even) { border-left: 1px solid rgba(0,0,0,0.15); }
}

@media (max-width: 480px) {
  .footer-nav { grid-template-columns: 1fr; }
  .hero-content { padding-top: calc(var(--nexus-nav-h, 143px) + 20px); padding-left: 20px; padding-right: 20px; }

  /* Solutions single column on small phones */
  .solutions-grid { grid-template-columns: 1fr; }

  /* Services — single column on mobile */
  .services-grid { grid-template-columns: 1fr; }
  .service-card, .service-card--wide { grid-column: span 1; min-height: 200px; }

  /* Stats — 1 column on mobile, stacked items, no separators */
  .stats-section { padding: 48px 24px; }
  .stats-grid    { grid-template-columns: 1fr; gap: 32px; justify-content: stretch; }
  .stat-item     { padding: 0 var(--stat-pad, 0px); width: 100%; border-left: none !important; border-bottom: none !important; }

  /* Solutions — 1 column on mobile */
  .solutions-section { padding: 40px 0; }
  .solutions-inner { padding: 0 20px; }
  .solutions-grid,
  .solutions-grid--cols-2,
  .solutions-grid--cols-3,
  .solutions-grid--cols-4 { grid-template-columns: 1fr; }
}

/* ================================================================
   NAV ACTIONS — responsive (search icon + Contact Us)
================================================================= */
@media (max-width: 1024px) {
  .nav-actions { gap: 10px; }
  .nav-search-toggle { width: 38px; height: 38px; }
}
@media (max-width: 768px) {
  /* Keep search + Contact visible alongside the burger.
     Only ONE auto margin in the row, otherwise two `margin-left:auto`
     items split the free space and centre the Contact Us group. The
     auto margin on .nav-actions pushes the whole right cluster
     (search · Contact Us · burger) to the far right. */
  .nav-actions { gap: 8px; margin-left: auto; }
  .nav-mobile-toggle { margin-left: 20px; }
  .nav-search-toggle { width: 36px; height: 36px; }
  .nav-search-toggle svg { width: 20px; height: 20px; }
  /* Anchor the panel to the whole nav card so it never overflows the viewport */
  .nav-search-panel {
    position: absolute;
    top: calc(100% + 12px);
    right: 0;
    left: auto;
    width: min(340px, 88vw);
  }
}
@media (max-width: 480px) {
  /* Extra-compact nav on small phones */
  .nav-card { padding: 9px 12px; border-radius: 12px; }
  .nav-logo img, .nav-logo .custom-logo { height: 32px; }
  .nav-actions { gap: 6px; }
  .nav-actions .btn-nav { font-size: 12px; padding: 6px 12px; }
  .nav-search-toggle { width: 32px; height: 32px; }
  .nav-search-toggle svg { width: 18px; height: 18px; }
  .nav-mobile-toggle { width: 24px; height: 30px; }
  .nav-search-panel { width: min(300px, 92vw); }
}

/* ================================================================
   HERO — responsive wave height, image + pagination
   --wave-h-eff scales the editor's wave height DOWN on smaller screens; the
   hero's bottom padding tracks it automatically (set in the base rules).
================================================================= */
/* Full-bleed at 1200px and below — covers large tablets (iPad Pro, 1055–1125px etc.).
   width/left/right use !important to beat any Elementor-cached ID-selector rule
   (e.g. #elementor-element-XXXXX .hero-slide-media { width: 65% }) that may still
   be served from the database until the user regenerates Elementor CSS files. */
@media (max-width: 1200px) {
  .hero-slide-media {
    --hero-media-w-override: 100%;
    width: 100% !important;
    left: 0 !important;
    right: 0 !important;
    -webkit-mask-image: none;
            mask-image: none;
  }
}

@media (max-width: 1024px) {
  /* (wave height now scales smoothly via the clamp on .hero-section) */
  /* Stronger veil from this breakpoint down, since text now sits over the image */
  .hero-slide-media--overlay::after {
    background: linear-gradient(90deg,
      rgba(var(--c), 0.96) 0%,
      rgba(var(--c), 0.84) 44%,
      rgba(var(--c), 0.58) 100%) !important;
  }
  /* Page Hero tablet+mobile: match home hero slider — solid full-bleed overlay
     across the entire section so text is always readable regardless of layout. */
  .page-hero .hero-slide-media--overlay::after,
  .page-hero .hero-slide-media--overlay.hero-slide-media--full::after,
  .page-hero .hero-slide-media--overlay.hero-slide-media--right::after,
  .page-hero .hero-slide-media--overlay.hero-slide-media--left::after {
    background: linear-gradient(90deg,
      color-mix(in srgb, var(--hero-overlay-color) 96%, transparent) 0%,
      color-mix(in srgb, var(--hero-overlay-color) 84%, transparent) 44%,
      color-mix(in srgb, var(--hero-overlay-color) 58%, transparent) 100%) !important;
  }
}

@media (max-width: 768px) {
  .hero-swiper { height: calc(540px + var(--hero-pad-bottom, 0px)); }
  .hero-slide  { height: calc(540px + var(--hero-pad-bottom, 0px)); min-height: calc(540px + var(--hero-pad-bottom, 0px)); }
  /* Force full-bleed on mobile — neutralise left/right side-image modifiers */
  .hero-slide-media,
  .hero-slide-media--right,
  .hero-slide-media--left {
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    background-size: cover !important;
    background-position: center !important;
  }
}
@media (max-width: 767px) {
  /* Mobile-only opt-out: 767px matches Elementor's mobile breakpoint so
     "Hide Image on Mobile" never fires on tablet (768px+). */
  .hero-slide-media--hide-mobile { display: none !important; }
  .hero-pagination--hide-mobile { display: none !important; }
  .hero-section .swiper-pagination { bottom: calc(var(--wave-h-eff, 120px) - 30px); }

}

@media (max-width: 480px) {
  .hero-swiper { height: calc(500px + var(--hero-pad-bottom, 0px)); }
  .hero-slide  { min-height: calc(500px + var(--hero-pad-bottom, 0px)); }
  .hero-section .swiper-pagination { bottom: calc(var(--wave-h-eff, 120px) - 30px); gap: 8px; }
  .hero-dot { width: 10px; height: 10px; }
  .hero-dot--active { width: 18px; }

}

/* ================================================================
   MOBILE MENU — full-screen overlay
================================================================= */
.mobile-menu-overlay {
  display: flex;
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: #fff;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  /* hidden state */
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .3s ease, visibility .3s ease;
}
.mobile-menu-overlay.is-open {
  opacity: 1;
  visibility: visible;
  pointer-events: all;
}

/* Close button — top-right corner */
.mobile-menu-close {
  position: absolute;
  top: 20px;
  right: 20px;
  width: 46px;
  height: 46px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;       /* no circular background — plain X */
  border: none;
  cursor: pointer;
  color: #111;
  transition: opacity .2s;
}
.mobile-menu-close:hover { opacity: .6; }

/* Nav links */
.mobile-menu-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 80px 32px 48px;
}
.mobile-menu-links {
  list-style: none;
  margin: 0;
  padding: 0;
  width: 100%;
  text-align: center;
}
.mobile-menu-links a {
  display: inline-block;
  padding: 20px 0;
  font-size: clamp(22px, 6vw, 32px);
  font-weight: 700;
  color: #111;
  text-decoration: none;
  text-underline-offset: 8px;
  text-decoration-thickness: 2px;
  transition: opacity .2s;
}
.mobile-menu-links a:hover { opacity: .65; }
/* Active link: underlined, keep the dark colour (no gold) */
.mobile-menu-links .active a {
  color: #111;
  text-decoration: underline;
}

/* CTA button below links */
.mobile-menu-actions {
  margin-top: 36px;
  width: 100%;
  display: flex;
  justify-content: center;
}

/* ── Mobile sub-menu (WordPress wp_nav_menu native) ─────── */
.mobile-menu-links .menu-item-has-children {
  position: relative;
}

/* Wrap the parent link + chevron toggle in a flex row */
.mobile-menu-links .menu-item-has-children .mobile-item-row {
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  width: 100%;
}

.mobile-submenu-toggle {
  background: none;
  border: none;
  padding: 8px;
  cursor: pointer;
  color: #111;
  line-height: 1;
  flex-shrink: 0;
  position: absolute;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
}
.mobile-submenu-toggle svg {
  display: block;
  transition: transform .22s ease;
}
.mobile-submenu-toggle.is-open svg { transform: rotate(180deg); }

/* Sub-menu hidden by default */
.mobile-menu-links .sub-menu {
  list-style: none;
  margin: 0 0 12px 0;
  padding: 0;
  display: none;
}
.mobile-menu-links .sub-menu.is-open { display: block; }

.mobile-menu-links .sub-menu li { margin: 0; }
.mobile-menu-links .sub-menu a {
  display: block;
  padding: 12px 0;
  font-size: clamp(16px, 4.5vw, 20px);
  font-weight: 500;
  color: #444;
  text-decoration: none;
  transition: color .15s;
}
.mobile-menu-links .sub-menu a:hover { color: #111; }

/* ================================================================
   PAGE HERO — static (no slider)
   Reuses all .hero-section, .hero-wave, .hero-content, .hero-slide-media
   CSS from the Hero Slider section above. Only new pieces below.
================================================================= */

/* Mirrors .hero-slide without the Swiper dependency */
.page-hero-slide {
  position: relative;
  /* min-height: controlled by the widget's Section Min Height control per device.
     max() ensures 0px (= "auto") falls back to the fluid clamp floor so the
     section never collapses. Elementor selectors set --page-hero-min-h per
     breakpoint; any value > 0 overrides the clamp. */
  min-height: max(var(--page-hero-min-h, 0px), clamp(480px, 65vh, 820px));
  height: auto;
  display: flex;
  align-items: center;
  overflow: hidden;
  /* CSS defaults — overridden by Elementor selectors when user changes bg_color
     or overlay_color in the widget panel. Higher-specificity selector wins. */
  background-color: #FEFDF1;
  --hero-overlay-color: #FEFDF1;
}

/* Elementor wrapper overrides — strip default padding same as hero slider.
   margin-bottom on the OUTER element intentionally has no !important so the
   overlap_below Elementor selector (higher specificity) can override it. */
.elementor-widget-nexus_page_hero {
  overflow: visible !important;
  padding: 0 !important;
  margin-top: 0 !important;
  margin-right: 0 !important;
  margin-left: 0 !important;
  margin-bottom: 0; /* no !important — allows overlap_below to work */
}
.elementor-widget-nexus_page_hero > .elementor-widget-container {
  overflow: visible !important;
  padding: 0 !important;
  margin: 0 !important;
}

/* ── PAGE HERO: wave-height cap + padding-bottom ───────────────────────────
   The base --wave-h-eff formula (21vw) grows too large on mid-range screens
   and creates a visible cream gap between the content and the ribbon. We
   re-pin it here with a tighter ceiling per breakpoint, then set padding-bottom
   to just clear the ribbon peak (~90% of wave height). No extra constant added.

   Formula derivation:
     ribbon peak from section bottom ≈ 0.90 × wave-h-eff
     → padding-bottom = wave-h-eff − 10px gives 1–20px breathing room safely.

   --wave-h-eff override uses min() to respect the user's Elementor wave_height
   setting but never lets it grow beyond the per-breakpoint ceiling. ────────── */

/* Desktop: use the Elementor slider value directly */
.page-hero {
  --wave-h-eff: var(--wave-h, 300px);
}
.page-hero .hero-content {
  padding-bottom: calc(var(--wave-h-eff) - 10px);
}

/* No built-in wave — zero the clearance, Wave Divider handles the gap */
.page-hero--no-wave .hero-content {
  padding-bottom: 32px;
}

/* Tablet ≤1024px: use the tablet slider value directly */
@media (max-width: 1024px) {
  .page-hero {
    --wave-h-eff: var(--wave-h, 200px);
  }
  .page-hero-slide {
    min-height: max(var(--page-hero-min-h, 0px), clamp(320px, 52vh, 520px));
  }
  .page-hero--no-wave .hero-content { padding-bottom: 24px; }
}

/* Mobile ≤768px: use the mobile slider value directly */
@media (max-width: 768px) {
  .page-hero {
    --wave-h-eff: var(--wave-h, 120px);
  }
  .page-hero-slide {
    min-height: max(var(--page-hero-min-h, 0px), clamp(280px, 50vh, 420px));
  }
  .page-hero .hero-content {
    padding-bottom: calc(var(--wave-h-eff) - 4px);
  }
  .page-hero--no-wave .hero-content { padding-bottom: 16px; }
}


/* Facts row — sits above the button in .hero-text */
.hero-facts {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0;
  margin-top: 36px;
}

.hero-fact {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 0 20px;
}
.hero-fact:first-child { padding-left: 0; }

.hero-fact-sep {
  width: 1px;
  height: 40px;
  background: rgba(0,0,0,0.18);
  flex-shrink: 0;
  align-self: center;
}

.hero-fact__label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: #777;
}

.hero-fact__value {
  font-size: 17px;
  font-weight: 700;
  color: #111;
  line-height: 1.2;
}

@media (max-width: 767px) {
  .hero-text { max-width: 100%; }
  /* Switch to CSS grid so display:none separators are excluded from layout,
     and the 2×2 pattern holds on every phone regardless of screen width. */
  .hero-facts {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px 0;
    margin-top: 28px;
  }
  .hero-fact-sep { display: none; }
  .hero-fact { padding: 0; }
  .hero-fact:first-child { padding-left: 0; }
  /* Right-column facts get a left hairline divider */
  .hero-fact:nth-child(2),
  .hero-fact:nth-child(4) {
    padding-left: 20px;
    border-left: 1px solid rgba(0,0,0,0.15);
  }
}

/* ================================================================
   SECTION INTRO — two-column heading / body layout
================================================================= */
.section-intro {
  padding: 80px 60px;
  background: #ffffff; /* default — overridden by Elementor section_bg selectors */
}

.section-intro__inner {
  display: flex;
  align-items: flex-start;
  gap: 60px;
  max-width: var(--nexus-content-w);
  margin: 0 auto;
}

/* Column split modifiers */
.section-intro--40-60 .section-intro__left  { flex: 0 0 38%; }
.section-intro--40-60 .section-intro__right { flex: 1; }
.section-intro--50-50 .section-intro__left  { flex: 0 0 48%; }
.section-intro--50-50 .section-intro__right { flex: 1; }
.section-intro--33-67 .section-intro__left  { flex: 0 0 30%; }
.section-intro--33-67 .section-intro__right { flex: 1; }

.section-intro__heading {
  font-size: clamp(26px, 3.5vw, 46px);
  font-weight: 900;
  color: #111;
  line-height: 1.1;
  letter-spacing: -0.3px;
  margin-top: 12px;
}

.section-intro__body p {
  font-size: 17px;
  color: #555;
  line-height: 1.7;
  margin-bottom: 20px;
}
.section-intro__body p:last-child { margin-bottom: 0; }

.section-intro__btn { margin-top: 28px; }

.section-intro__image-wrap { margin-top: 24px; width: 100%; }
.section-intro__image {
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
}
.section-intro__image--radius-less { border-radius: 12px !important; }
.section-intro__image--radius-more { border-radius: 24px !important; }

@media (max-width: 1024px) {
  .section-intro { padding: 64px 40px; }
  .section-intro__inner { gap: 40px; }
  .section-intro--40-60 .section-intro__left,
  .section-intro--50-50 .section-intro__left,
  .section-intro--33-67 .section-intro__left { flex: 0 0 42%; }
}
@media (max-width: 768px) {
  .section-intro { padding: 48px 20px; }
  .section-intro__inner { flex-direction: column; gap: 24px; }
  .section-intro--40-60 .section-intro__left,
  .section-intro--50-50 .section-intro__left,
  .section-intro--33-67 .section-intro__left { flex: none; width: 100%; }
}

/* ================================================================
   VALUE CARDS — Mission / Vision / Values icon-card grid
================================================================= */
.value-cards-section {
  padding: 80px 60px;
  background: #ffffff;
}

.value-cards-header {
  max-width: var(--nexus-content-w);
  margin: 0 auto 48px;
}

.value-cards-grid {
  display: grid;
  grid-template-columns: repeat( var(--vc-cols, 3), 1fr );
  gap: var(--vc-gap, 0px);
  max-width: var(--nexus-content-w);
  margin: 0 auto;
  border-radius: 20px;
  overflow: hidden;
}

.value-card {
  border-radius: 0;
  padding: 40px 36px;
  display: flex;
  flex-direction: column;
  gap: 16px;
  position: relative;
  transition: background .2s;
}

/* Vertical divider — 80% height, centred, between cards */
.value-card:not(:last-child)::after {
  content: '';
  position: absolute;
  right: 0;
  top: 10%;
  height: 80%;
  width: 1px;
  background: rgba(0,0,0,0.18);
}

.value-card__icon {
  width: 52px;
  height: 52px;
  flex-shrink: 0;
}
.value-card__icon img {
  width: 52px;
  height: 52px;
  object-fit: contain;
}

.value-card__title {
  font-size: 20px;
  font-weight: 700;
  line-height: 1.2;
}

.value-card__body {
  font-size: 16px;
  line-height: 1.65;
  opacity: 0.85;
  flex: 1;
}

@media (max-width: 1024px) {
  .value-cards-section { padding: 64px 40px; }
  /* Tablet: 3-col so cards don't go half-width and tall */
  .value-cards-grid { grid-template-columns: repeat( var(--vc-cols-tablet, 3), 1fr ); }
}
@media (max-width: 600px) {
  .value-cards-section { padding: 48px 20px; }
  /* Mobile: single column, stacked */
  .value-cards-grid { grid-template-columns: 1fr; }
  /* Hide dividers — nothing to separate in single column */
  .value-cards-grid .value-card:not(:last-child)::after { display: none; }
}

/* ================================================================
   FEATURE LIST — "What sets us apart" check-item layout
================================================================= */
.feature-list-section {
  padding: 80px 60px;
  background: #FEFDF3;
}

.feature-list-inner {
  display: flex;
  align-items: flex-start;
  gap: 60px;
  max-width: var(--nexus-content-w);
  margin: 0 auto;
}

/* Split: header ~40%, list ~60% */
.feature-list-section--split .feature-list-header { flex: 0 0 36%; }
.feature-list-section--split .feature-items        { flex: 1; }

/* Stacked: header full-width above list */
.feature-list-section--stacked .feature-list-inner { flex-direction: column; }

.feature-list__heading {
  font-size: clamp(24px, 3vw, 42px);
  font-weight: 900;
  color: #111;
  line-height: 1.1;
  letter-spacing: -0.3px;
  margin-top: 12px;
  margin-bottom: 16px;
}

.feature-list__intro {
  font-size: 16px;
  color: #555;
  line-height: 1.7;
}

/* Check-item list */
.feature-items {
  list-style: none;
  padding: 0;
  margin: 0;
}

.feature-items--cols-2 {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px 32px;
}
.feature-items--cols-1 { display: flex; flex-direction: column; gap: 20px; }

.feature-item {
  display: flex;
  align-items: flex-start;
  gap: 14px;
}

.feature-item__check { flex-shrink: 0; margin-top: 2px; }
.feature-item__check-icon { display: block; }

.feature-item__text {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.feature-item__title {
  font-size: 16px;
  font-weight: 700;
  color: #111;
  line-height: 1.3;
}

.feature-item__body {
  font-size: 17px;
  color: #555;
  line-height: 1.6;
}

@media (max-width: 1024px) {
  .feature-list-section { padding: 64px 40px; }
  .feature-list-inner { gap: 40px; }
  .feature-list-section--split .feature-list-header { flex: 0 0 40%; }
}
@media (max-width: 768px) {
  .feature-list-section { padding: 48px 20px; }
  .feature-list-inner { flex-direction: column; gap: 32px; }
  .feature-list-section--split .feature-list-header { flex: none; width: 100%; }
  .feature-items--cols-2 { grid-template-columns: 1fr; }
}

/* ================================================================
   AWARDS — featured card + services-style grid
================================================================= */
.awards-section {
  background: #ffffff;
  padding: 80px 60px;
}

.awards-inner {
  max-width: var(--nexus-content-w);
  margin: 0 auto;
}

/* Section header */
.awards-section-header { margin-bottom: 40px; }

/* CTA button: absolutely positioned top-right on desktop, hidden on mobile */
.awards-inner { position: relative; }
.awards-cta--desktop {
  position: absolute;
  top: 0;
  right: 0;
  display: flex;
  align-items: center;
  padding-top: 6px;
}
.awards-cta--mobile { display: none; }
.awards-heading {
  font-size: clamp(26px, 3.5vw, 42px);
  font-weight: 900;
  color: #111;
  line-height: 1.1;
  letter-spacing: -0.3px;
  margin-bottom: 12px;
}
.awards-body-text {
  font-size: 16px;
  color: #555;
  line-height: 1.6;
  max-width: 640px;
  margin: 0;
}

/* ── Featured Award ── */
.awards-featured {
  border-radius: 20px;
  padding: 48px 52px;
  position: relative;
  overflow: hidden;
  margin-bottom: 20px;
  transition: transform .25s, box-shadow .25s;
}
.awards-featured:hover { transform: translateY(-3px); box-shadow: 0 14px 36px rgba(0,0,0,0.11); }

.awards-featured--gradient {
  background: linear-gradient(145deg, #fdeaa9 0%, #fef3cd 100%);
}
.awards-featured--image {
  background-size: cover;
  background-position: center;
}
.awards-featured--image::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, rgba(0,0,0,0.28) 0%, rgba(0,0,0,0.68) 100%);
  border-radius: 20px;
  z-index: 0;
}
.awards-featured__content {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 14px;
  max-width: 680px;
}
.awards-featured__title {
  font-size: clamp(22px, 2.8vw, 36px);
  font-weight: 800;
  line-height: 1.15;
  margin: 0;
  color: #111;
}
.awards-featured--image .awards-featured__title,
.awards-featured--solid .awards-featured__title { color: #fff; }
.awards-featured__source {
  font-size: 14px;
  font-weight: 600;
  opacity: 0.65;
  letter-spacing: 0.3px;
  margin: 0;
  color: #111;
}
.awards-featured--image .awards-featured__source,
.awards-featured--solid .awards-featured__source { color: #fff; }
.awards-featured__body {
  font-size: 16px;
  line-height: 1.6;
  margin: 0;
  color: #444;
}
.awards-featured--image .awards-featured__body,
.awards-featured--solid .awards-featured__body { color: rgba(255,255,255,0.82); }

/* ── Awards grid (mirrors services-grid) ── */
.awards-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

/* Award card */
.award-card {
  border-radius: 20px;
  padding: 32px 28px;
  display: flex;
  flex-direction: column;
  position: relative;
  overflow: hidden;
  transition: transform .25s, box-shadow .25s;
}
.award-card:hover { transform: translateY(-4px); box-shadow: 0 14px 36px rgba(0,0,0,0.11); }

.award-card--gradient {
  background: linear-gradient(145deg, #fdeaa9 0%, #fef3cd 100%);
}
.award-card--image {
  background-size: cover;
  background-position: center;
}
.award-card--image::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(160deg, rgba(0,0,0,0.28) 0%, rgba(0,0,0,0.72) 100%);
  border-radius: 20px;
  z-index: 0;
}
.award-card__content {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  gap: 10px;
  height: 100%;
}

/* Year badge */
.award-year {
  display: inline-flex;
  align-items: center;
  padding: 4px 14px;
  border-radius: 100px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.5px;
  align-self: flex-start;
  flex-shrink: 0;
  background: rgba(0,0,0,0.10);
  color: #111;
}
.award-card--image .award-year,
.awards-featured--image .award-year { background: rgba(255,255,255,0.20); color: #fff; }
/* Solid dark cards get yellow badge */
.award-card--solid .award-year,
.awards-featured--solid .award-year { background: #FED906; color: #111; }

.award-card__title {
  font-size: 17px;
  font-weight: 700;
  line-height: 1.25;
  margin: 0;
  color: #111;
}
.award-card--image .award-card__title { color: #fff; }

.award-card__source {
  font-size: 13px;
  font-weight: 600;
  opacity: 0.60;
  letter-spacing: 0.3px;
  margin: 0;
  color: #111;
}
.award-card--image .award-card__source { color: rgba(255,255,255,0.75); opacity: 1; }

.award-card__body {
  font-size: 14px;
  line-height: 1.65;
  opacity: 0.78;
  flex: 1;
  margin: 0;
  color: #333;
}
.award-card--image .award-card__body { color: rgba(255,255,255,0.80); opacity: 1; }

.award-card__link {
  margin-top: auto;
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 15px;
  font-weight: 600;
  color: #111;
  transition: gap .2s;
  padding-top: 4px;
}
.award-card__link:hover { gap: 12px; }
.award-card--image .award-card__link,
.awards-featured--image .award-card__link { color: #FED906; }

/* Solid dark card — white text */
.award-card--solid .award-card__title,
.award-card--solid .award-card__source,
.award-card--solid .award-card__body { color: #fff; opacity: 1; }
.award-card--solid .award-card__link { color: #FED906; }

@media (max-width: 1024px) {
  .awards-section { padding: 64px 40px; }
}
@media (max-width: 768px) {
  .awards-section { padding: 48px 20px; }
  .awards-featured { padding: 32px 28px; }
  .awards-grid { grid-template-columns: 1fr; gap: 10px; }
  .award-card { padding: 16px 18px; gap: 6px; }
  .award-card .award-year { font-size: 11px; padding: 3px 10px; }
  .award-card__title { font-size: 14px; }
  .award-card__source { font-size: 12px; }
  .award-card__body { font-size: 13px; }
  .awards-cta--desktop { display: none; }
  .awards-cta--mobile { display: flex; margin-top: 24px; }
}

/* ================================================================
   FAQ ACCORDION — <details> / <summary> (CSS-only, no JS)
================================================================= */
.faq-section {
  padding: 80px 60px;
  background: #FEFDF3;
}

.faq-inner {
  margin: 0 auto;
}

/* Split layout: header left ~34%, items right */
.faq-section--split .faq-inner {
  display: flex;
  align-items: flex-start;
  gap: 60px;
}
.faq-section--split .faq-header { flex: 0 0 34%; }
.faq-section--split .faq-list   { flex: 1; }

/* Stacked: header above items */
.faq-section--stacked .faq-header { margin-bottom: 40px; }

.faq-heading {
  font-size: clamp(24px, 3vw, 42px);
  font-weight: 900;
  color: #111;
  line-height: 1.1;
  letter-spacing: -0.3px;
  margin-top: 12px;
  margin-bottom: 16px;
}

.faq-body-text {
  font-size: 16px;
  color: #555;
  line-height: 1.7;
  margin-bottom: 24px;
}

/* Individual accordion item — white card */
.faq-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.faq-item {
  background: #fff;
  border-radius: 12px;
  overflow: hidden;
}

/* Remove the default browser triangle */
.faq-item summary { list-style: none; }
.faq-item summary::-webkit-details-marker { display: none; }

.faq-question {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 20px 24px;
  cursor: pointer;
  user-select: none;
}

.faq-question__text {
  font-size: 17px;
  font-weight: 600;
  color: #111;
  line-height: 1.4;
}

/* Circle toggle button */
.faq-chevron {
  flex-shrink: 0;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #1a1a1a;
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .2s, color .2s, transform .25s;
}

/* Open state: yellow circle, dark icon, chevron rotates up */
.faq-item[open] .faq-chevron {
  background: #FED906;
  color: #111;
  transform: rotate(180deg);
}

.faq-answer {
  padding: 0 24px 24px;
  font-size: 16px;
  color: #444;
  line-height: 1.7;
}
.faq-answer p    { margin-bottom: 14px; }
.faq-answer p:last-child { margin-bottom: 0; }

.faq-footer__btn { margin-top: 28px; }

@media (max-width: 1024px) {
  .faq-section { padding: 64px 40px; }
  .faq-section--split .faq-inner { gap: 40px; }
}
@media (max-width: 768px) {
  .faq-section { padding: 48px 20px; }
  /* align-items: flex-start is correct for the desktop row layout (aligns items to
     the top). But when the inner becomes flex-direction:column on mobile, flex-start
     becomes the horizontal cross-axis — shrinking items to content width instead of
     filling the container. Switch to stretch so cards go full-width. */
  .faq-section--split .faq-inner { flex-direction: column; align-items: stretch; }
  .faq-section--split .faq-header { flex: none; width: 100%; }
  .faq-list { width: 100%; }
  .faq-question__text { font-size: 16px; }
  .faq-question { padding: 18px 20px; }
  .faq-answer { padding: 0 20px 20px; }
}

/* ================================================================
   AWARDS ARCHIVE — year-grouped accordion list
================================================================= */
.awards-archive-section {
  background: #fff;
  padding: 80px 60px;
}

.awards-archive-inner {
  margin: 0 auto;
  width: 100%;
}

.awards-archive-header {
  margin-bottom: 48px;
}
.awards-archive-heading {
  font-size: clamp(26px, 3.5vw, 42px);
  font-weight: 900;
  color: #111;
  line-height: 1.1;
  letter-spacing: -0.3px;
  margin-bottom: 12px;
}
.awards-archive-body-text {
  font-size: 16px;
  color: #555;
  line-height: 1.6;
  margin: 0;
}

/* Year accordion group */
.awards-archive-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.awards-archive-year {
  border-radius: 14px;
  overflow: hidden;
}

.awards-archive-year__header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 18px 24px;
  background: var(--aar-year-bg, #FEFDF1);
  color: var(--aar-year-color, #111);
  cursor: pointer;
  list-style: none;
  user-select: none;
  border-radius: 14px;
  transition: opacity .15s;
}
.awards-archive-year__header::-webkit-details-marker { display: none; }
.awards-archive-year__header:hover { opacity: 0.85; }

.awards-archive-year__label {
  font-size: 18px;
  font-weight: 800;
  letter-spacing: -0.2px;
  flex: 1;
}
.awards-archive-year__count {
  font-size: 13px;
  font-weight: 500;
  opacity: 0.55;
}
.awards-archive-chevron {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  transition: transform .25s ease;
  color: var(--aar-year-color, #111);
}
.awards-archive-year[open] > .awards-archive-year__header { border-radius: 14px 14px 0 0; }
.awards-archive-year[open] .awards-archive-chevron { transform: rotate(180deg); }

/* Award items list */
.awards-archive-items {
  list-style: none;
  margin: 0;
  padding: 0;
  background: #fff;
  border-radius: 0 0 14px 14px;
  border: 1px solid var(--aar-divider, #FEFDF1);
  border-top: none;
}

.awards-archive-item {
  padding: 18px 24px;
  border-bottom: 1px solid var(--aar-divider, #FEFDF1);
}
.awards-archive-item:last-child { border-bottom: none; }

.awards-archive-item__main {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.awards-archive-item__title {
  font-size: 16px;
  font-weight: 600;
  color: #111;
  margin: 0;
  line-height: 1.35;
}
.awards-archive-item__source {
  font-size: 13px;
  color: #888;
  font-weight: 500;
  margin: 0;
  white-space: nowrap;
}
.awards-archive-item__notes {
  font-size: 13px;
  color: #666;
  line-height: 1.55;
  margin: 6px 0 0;
}

@media (max-width: 1024px) {
  .awards-archive-section { padding: 64px 40px; }
}
@media (max-width: 768px) {
  .awards-archive-section { padding: 48px 20px; }
  .awards-archive-year__header { padding: 16px 18px; }
  .awards-archive-year__label { font-size: 16px; }
  .awards-archive-item { padding: 14px 18px; }
  .awards-archive-item__main { flex-direction: column; gap: 4px; }
  .awards-archive-item__source { white-space: normal; }
}

/* ================================================================
   BIG TESTIMONIAL — contained dark card on light section background
   Layout: large quote marks left | quote text + author right
================================================================= */

/* Outer section — light background (set by Elementor control) */
.big-testimonial-section {
  padding: 80px 60px;
  background: #f5f4f2;  /* overridden by section_bg selector */
}

/* The dark rounded card */
.big-testimonial__card {
  background: #2d2d2d;  /* overridden by card_bg selector */
  border-radius: 20px;  /* overridden by card_radius selector */
  padding: 48px 52px;
  margin: 0 auto;
  width: 100%;
}

/* Two-column flex: quote-marks column + text column */
.big-testimonial__layout {
  display: flex;
  align-items: flex-start;
  gap: 32px;
}

/* Left column: quote mark SVG */
.big-testimonial__marks {
  flex-shrink: 0;
  color: #FED906;  /* overridden by quote_mark_color selector */
  padding-top: 4px;  /* align mark visually with text cap-height */
  line-height: 1;
}

/* Right column: quote text + author */
.big-testimonial__body {
  flex: 1;
  min-width: 0;
}

.big-testimonial__quote {
  font-size: clamp(16px, 1.6vw, 18px);
  font-weight: 400;
  line-height: 1.75;
  color: #fff;  /* overridden by quote_text_color selector */
  margin: 0 0 36px;
}

/* Author row */
.big-testimonial__author {
  display: flex;
  align-items: center;
  gap: 14px;
}

.big-testimonial__avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
}

.big-testimonial__avatar-placeholder {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: #FED906;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 17px;
  font-weight: 700;
  color: #111;
  flex-shrink: 0;
}

.big-testimonial__name {
  font-size: 14px;
  font-weight: 700;
  color: #fff;  /* overridden by author_name_color selector */
  line-height: 1.2;
  margin: 0;
}

.big-testimonial__author-title {
  font-size: 13px;
  color: rgba(255,255,255,0.55);  /* overridden by author_title_color selector */
  line-height: 1.4;
  margin: 3px 0 0;
}

@media (max-width: 1024px) {
  .big-testimonial-section { padding: 64px 40px; }
  .big-testimonial__card   { padding: 40px 44px; }
}
@media (max-width: 768px) {
  .big-testimonial-section  { padding: 48px 20px; }
  .big-testimonial__card    { padding: 32px 28px; }
  .big-testimonial__layout  { gap: 20px; }
  .big-testimonial__marks svg { width: 40px; height: 32px; }
  .big-testimonial__quote   { font-size: 16px; margin-bottom: 28px; }
}
@media (max-width: 480px) {
  /* Stack marks above text on very small phones */
  .big-testimonial__layout { flex-direction: column; gap: 12px; }
  .big-testimonial__card   { padding: 28px 20px; }
}


/* ================================================================
   NEXUS ANIMATIONS
   Two layers:
   1) Hero (above-fold): CSS animation on page load — headline,
      body, button stagger in automatically.
   2) Scroll-triggered: .nx-animate elements start hidden; the
      IntersectionObserver in main.js adds .nx-visible to play
      the transition. --nx-i sets per-child stagger delay.
================================================================= */

/* ── Keyframes ────────────────────────────────────────────────── */
@keyframes nx-fade-up {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0);    }
}
@keyframes nx-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ── Hero: on-load animations ─────────────────────────────────── */
/* Respect reduced-motion preference */
@media (prefers-reduced-motion: no-preference) {
  .hero-headline {
    animation: nx-fade-up .65s cubic-bezier(.22,.61,.36,1) both;
    animation-delay: .1s;
  }
  .hero-body {
    animation: nx-fade-up .65s cubic-bezier(.22,.61,.36,1) both;
    animation-delay: .25s;
  }
  .hero-facts {
    animation: nx-fade-up .65s cubic-bezier(.22,.61,.36,1) both;
    animation-delay: .35s;
  }
  .hero-btn {
    animation: nx-fade-up .55s cubic-bezier(.22,.61,.36,1) both;
    animation-delay: .4s;
  }
  /* Hero image fades in a touch slower so text lands first */
  .hero-slide-media {
    animation: nx-fade-in .9s ease both;
    animation-delay: .05s;
  }

  /* Simple Hero: same on-load stagger pattern */
  .simple-hero__eyebrow {
    animation: nx-fade-up .6s  cubic-bezier(.22,.61,.36,1) both;
    animation-delay: .1s;
  }
  .simple-hero__headline {
    animation: nx-fade-up .65s cubic-bezier(.22,.61,.36,1) both;
    animation-delay: .22s;
  }
  .simple-hero__body {
    animation: nx-fade-up .65s cubic-bezier(.22,.61,.36,1) both;
    animation-delay: .34s;
  }
  .simple-hero__buttons {
    animation: nx-fade-up .55s cubic-bezier(.22,.61,.36,1) both;
    animation-delay: .44s;
  }

  /* Software Hero: same on-load stagger pattern */
  .sw-hero__eyebrow {
    animation: nx-fade-up .6s  cubic-bezier(.22,.61,.36,1) both;
    animation-delay: .1s;
  }
  .sw-hero__headline {
    animation: nx-fade-up .65s cubic-bezier(.22,.61,.36,1) both;
    animation-delay: .22s;
  }
  .sw-hero__body {
    animation: nx-fade-up .65s cubic-bezier(.22,.61,.36,1) both;
    animation-delay: .34s;
  }
  .sw-hero__buttons {
    animation: nx-fade-up .55s cubic-bezier(.22,.61,.36,1) both;
    animation-delay: .44s;
  }
}

/* ── Scroll-triggered base state ──────────────────────────────── */
.nx-animate {
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity  .55s cubic-bezier(.22,.61,.36,1) calc(var(--nx-i, 0) * 90ms),
    transform .55s cubic-bezier(.22,.61,.36,1) calc(var(--nx-i, 0) * 90ms);
  will-change: opacity, transform;
}
.nx-animate.nx-fade-only {
  transform: none;
  transition: opacity .55s ease calc(var(--nx-i, 0) * 90ms);
}
.nx-animate.nx-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Disable all animations when user prefers reduced motion */
@media (prefers-reduced-motion: reduce) {
  .nx-animate,
  .hero-headline,
  .hero-body,
  .hero-facts,
  .hero-btn,
  .hero-slide-media,
  .simple-hero__eyebrow,
  .simple-hero__headline,
  .simple-hero__body,
  .simple-hero__buttons,
  .sw-hero__eyebrow,
  .sw-hero__headline,
  .sw-hero__body,
  .sw-hero__buttons {
    animation: none !important;
    transition: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* =============================================================
   Simple Hero Widget  (.simple-hero-*)
   ============================================================= */

.simple-hero {
  position: relative;
  width: 100%;
  display: flex;
  align-items: center;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  overflow: hidden;
}
.simple-hero__overlay {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}
@media (max-width: 767px) {
  .simple-hero--no-bg-mobile {
    background-image: none !important;
  }
  .simple-hero--no-bg-mobile .simple-hero__overlay {
    display: none;
  }
}

/* Full-bleed breakout — same approach as hero-section */
.elementor-section:has(.simple-hero),
.elementor-container:has(.simple-hero),
.elementor-column:has(.simple-hero),
.elementor-widget-wrap:has(.simple-hero),
.e-con:has(.simple-hero),
.e-con-inner:has(.simple-hero),
.e-child:has(.simple-hero),
.elementor-element:has(.simple-hero) {
  padding: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.elementor-widget:has(> .elementor-widget-container > .simple-hero) {
  width: 100vw !important;
  max-width: 100vw !important;
  position: relative;
  left: 50%;
  transform: translateX(-50%);
}

.simple-hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: calc(var(--nexus-content-w, 1320px) + 120px);
  margin: 0 auto;
  padding-left: 60px;
  padding-right: 60px;
  box-sizing: border-box;
}

.simple-hero__content {
  /* max-width set inline via PHP */
}

.simple-hero--align-center .simple-hero__inner { display: flex; justify-content: center; }
.simple-hero--align-center .simple-hero__content { text-align: center; }
.simple-hero--align-right  .simple-hero__inner { display: flex; justify-content: flex-end; }
.simple-hero--align-right  .simple-hero__content { text-align: right; }

.simple-hero__eyebrow {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  margin: 0 0 14px;
  opacity: 0.75;
}

.simple-hero__headline {
  font-size: clamp(34px, 5vw, 70px);
  font-weight: 900;
  line-height: 1.05;
  letter-spacing: -0.5px;
  margin: 0 0 20px;
}

.simple-hero__body {
  font-size: clamp(16px, 1.5vw, 20px);
  line-height: 1.65;
  margin: 0 0 32px;
  opacity: 0.85;
}

.simple-hero__buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
}

.simple-hero--align-center .simple-hero__buttons { justify-content: center; }
.simple-hero--align-right  .simple-hero__buttons { justify-content: flex-end; }

/* Tablet */
@media (max-width: 1024px) {
  .simple-hero__inner { padding-left: 40px; padding-right: 40px; }
  .simple-hero__headline { font-size: clamp(26px, 4vw, 50px); }
}

/* Mobile */
@media (max-width: 767px) {
  .simple-hero__inner { padding-left: 24px; padding-right: 24px; }
  .simple-hero__headline { font-size: clamp(26px, 8vw, 42px); }
  .simple-hero__body { font-size: 16px; }
  .simple-hero--align-center .simple-hero__content,
  .simple-hero--align-right  .simple-hero__content { text-align: left; }
  .simple-hero--align-center .simple-hero__inner,
  .simple-hero--align-right  .simple-hero__inner { justify-content: flex-start; }
  .simple-hero--align-center .simple-hero__buttons,
  .simple-hero--align-right  .simple-hero__buttons { justify-content: flex-start; }
}

/* =============================================================
   Solution Buckets Widget  (.sol-buckets-*)
   ============================================================= */

.sol-buckets {
  position: relative;
  width: 100%;
}

/* Full-bleed breakout */
.elementor-section:has(.sol-buckets),
.elementor-container:has(.sol-buckets),
.elementor-column:has(.sol-buckets),
.elementor-widget-wrap:has(.sol-buckets),
.e-con:has(.sol-buckets),
.e-con-inner:has(.sol-buckets),
.e-child:has(.sol-buckets),
.elementor-element:has(.sol-buckets) {
  padding: 0 !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}

.elementor-widget:has(> .elementor-widget-container > .sol-buckets) {
  width: 100vw !important;
  max-width: 100vw !important;
  position: relative;
  left: 50%;
  transform: translateX(-50%);
}

.sol-buckets__inner {
  max-width: calc(var(--nexus-content-w, 1320px) + 120px);
  margin: 0 auto;
  padding: 0 60px;
  box-sizing: border-box;
}

/* Section header */
.sol-buckets__header {
  margin-bottom: 48px;
}

.sol-buckets__eyebrow {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  margin: 0 0 12px;
  opacity: 0.75;
}

.sol-buckets__heading {
  font-size: clamp(26px, 3vw, 42px);
  font-weight: 900;
  line-height: 1.1;
  letter-spacing: -0.3px;
  margin: 0 0 14px;
}

.sol-buckets__body {
  font-size: 16px;
  line-height: 1.65;
  margin: 0;
  max-width: 640px;
  opacity: 0.8;
}

/* Two-column card grid */
.sol-buckets__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px; /* overridden via inline PHP */
  align-items: stretch;
}

/* Individual card */
.sol-bucket-card {
  border-radius: 30px;
  padding: 56px 48px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  box-sizing: border-box;
  border: 1px solid rgba(0,0,0,0.10);
  height: 100%; /* fill the grid cell so both cards are always equal height */
}

.sol-bucket-card__title {
  font-size: clamp(20px, 2.2vw, 30px);
  font-weight: 900;
  line-height: 1.15;
  letter-spacing: -0.2px;
  margin: 0;
}

.sol-bucket-card__body {
  font-size: 15px;
  line-height: 1.65;
  margin: 0;
  opacity: 0.85;
}

/* Pill tags */
.sol-bucket-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.sol-bucket-tag {
  display: inline-block;
  padding: 8px 18px;
  border-radius: 18px;
  border: 1px solid;
  font-size: 13px;
  font-weight: 500;
  line-height: 1.4;
  /* bg, border-color, color injected via scoped CSS */
}

/* Text + arrow link at bottom of card */
.sol-bucket-card__link {
  margin-top: auto;
  align-self: flex-start;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 17px;
  font-weight: 600;
  text-decoration: none;
  transition: gap .2s;
  /* color injected via scoped CSS */
}
.sol-bucket-card__link:hover { gap: 12px; }

/* Tablet */
@media (max-width: 1024px) {
  .sol-buckets__inner { padding: 0 40px; }
  .sol-bucket-card { padding: 40px 36px; }
  .sol-bucket-card__title { font-size: clamp(20px, 2.5vw, 28px); }
}

/* Mobile — stack cards, always auto height so all content shows */
@media (max-width: 767px) {
  .sol-buckets__inner { padding: 0 24px; }
  .sol-buckets__grid { grid-template-columns: 1fr; }
  .sol-bucket-card {
    padding: 36px 28px;
    border-radius: 20px;
    height: auto;        /* each card sizes to its own content when stacked */
    min-height: 0 !important; /* override any editor-set min-height */
  }
}

/* =============================================================
   Software Hero Widget  (.sw-hero-*)
   Used on Solutions sub-pages (Software, Hardware, etc.)
   Extends Simple Hero with a featured partner box grid.
============================================================= */

.elementor-section:has(.sw-hero),
.elementor-container:has(.sw-hero),
.elementor-column:has(.sw-hero),
.elementor-widget-wrap:has(.sw-hero),
.e-con:has(.sw-hero),
.e-con-inner:has(.sw-hero),
.e-child:has(.sw-hero),
.elementor-element:has(.sw-hero) {
  padding: 0 !important;
  margin:  0 !important;
}

.elementor-widget:has(> .elementor-widget-container > .sw-hero) {
  width: 100% !important;
}

.sw-hero {
  position: relative;
  width: 100%;
  overflow: hidden;
}

.sw-hero__inner {
  max-width: 1280px;
  margin: 0 auto;
  padding-left: 80px;
  padding-right: 80px;
}

.sw-hero__content { width: 100%; }

.sw-hero--align-center .sw-hero__inner { display: flex; flex-direction: column; align-items: center; }
.sw-hero--align-center .sw-hero__content { text-align: center; }
.sw-hero--align-center .sw-hero__buttons { justify-content: center; }
.sw-hero--align-center .sw-stats { justify-content: center; }

.sw-hero--align-right  .sw-hero__inner { display: flex; flex-direction: column; align-items: flex-end; }
.sw-hero--align-right  .sw-hero__content { text-align: right; }
.sw-hero--align-right  .sw-hero__buttons { justify-content: flex-end; }
.sw-hero--align-right  .sw-stats { justify-content: flex-end; }

.sw-hero__eyebrow {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin: 0 0 12px;
}

.sw-hero__headline {
  font-size: clamp(30px, 5vw, 58px);
  font-weight: 900;
  line-height: 1.08;
  margin: 0 0 20px;
}

.sw-hero__body {
  font-size: 18px;
  line-height: 1.6;
  margin: 0 0 28px;
}

.sw-hero__buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 8px;
}

/* Key stats row */
.sw-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 0;
  margin-top: 48px;
  width: 100%;
}

.sw-stat {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 0 40px;
  text-align: center;
}

.sw-stat:first-child { padding-left: 0; }
.sw-stat:last-child  { padding-right: 0; }

.sw-stats--dividers .sw-stat + .sw-stat {
  border-left-width: 1px;
  border-left-style: solid;
}

.sw-stat__value {
  font-size: clamp(28px, 3.5vw, 40px);
  font-weight: 900;
  line-height: 1;
}

.sw-stat__label {
  font-size: 14px;
  font-weight: 600;
  line-height: 1.4;
}

@media (max-width: 1024px) {
  .sw-hero__inner { padding-left: 40px; padding-right: 40px; }
  .sw-hero__headline { font-size: clamp(26px, 4vw, 50px); }
  .sw-stat { padding: 0 28px; }
}

@media (max-width: 768px) {
  .sw-hero__inner { padding-left: 24px; padding-right: 24px; }
  .sw-hero__headline { font-size: clamp(26px, 8vw, 42px); }
  .sw-hero__body { font-size: 16px; }
  .sw-stats { flex-direction: column; align-items: center; gap: 24px; }
  .sw-stat { padding: 0; border-left: none !important; text-align: center; }
}

/* =============================================================
   Jump Navigation Widget  (.jump-nav-*)
============================================================= */

.jump-nav {
  width: 100%;
  border-top: 1px solid;
  z-index: 90;
}

.jump-nav__inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 16px 80px;
  display: flex;
  align-items: flex-start;
  gap: 16px;
  /* Remove fixed height + overflow so rows can wrap */
}

.jump-nav__prefix {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  white-space: nowrap;
  flex-shrink: 0;
  /* Align with the first row of pills */
  padding-top: 6px;
}

.jump-nav__arrow {
  display: inline-block;
  flex-shrink: 0;
  vertical-align: middle;
}

.jump-nav__list {
  display: flex;
  align-items: center;
  gap: 8px;
  list-style: none;
  margin: 0;
  padding: 0;
  flex-wrap: wrap; /* ← allow multiple rows */
}

.jump-nav__item { flex-shrink: 0; }

.jump-nav__link {
  display: inline-block;
  font-size: 14px;
  font-weight: 500;
  padding: 7px 18px;
  border-radius: 999px;
  border: 1px solid #DCDCDC;
  background: white;
  text-decoration: none;
  line-height: 1.4;
  transition: background-color .15s, color .15s, border-color .15s;
  white-space: nowrap;
}

.jump-nav__link:hover {
  background-color: #1A1A1A;
  border-color: #1A1A1A;
  color: #FFFFFF !important;
}

@media (max-width: 1024px) {
  .jump-nav__inner { padding: 16px 40px; }
}

@media (max-width: 768px) {
  .jump-nav__inner { padding: 12px 20px; gap: 10px; }
  .jump-nav__list  { gap: 6px; }
  .jump-nav__link  { font-size: 13px; padding: 6px 14px; }
}

/* =============================================================
   Partner Cards Widget  (.ptnr-*)
   Full-page section with 2-col intro header + partner card grid
   + optional CTA band.
============================================================= */

.elementor-section:has(.ptnr-section),
.elementor-container:has(.ptnr-section),
.elementor-column:has(.ptnr-section),
.elementor-widget-wrap:has(.ptnr-section),
.e-con:has(.ptnr-section),
.e-con-inner:has(.ptnr-section),
.e-child:has(.ptnr-section),
.elementor-element:has(.ptnr-section) {
  padding: 0 !important;
  margin:  0 !important;
}

.elementor-widget:has(> .elementor-widget-container > .ptnr-section) {
  width: 100% !important;
}

.ptnr-section {
  position: relative;
  width: 100%;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  overflow: hidden;
}
.ptnr-section__overlay {
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
}
@media (max-width: 767px) {
  .ptnr-section--no-bg-mobile {
    background-image: none !important;
  }
  .ptnr-section--no-bg-mobile .ptnr-section__overlay {
    display: none;
  }
}

.ptnr-inner {
  position: relative;
  z-index: 1;
  max-width: 1280px;
  margin: 0 auto;
  padding-left: 80px;
  padding-right: 80px;
}

/* ── Header ── */
.ptnr-hdr {
  margin-bottom: 48px;
}

.ptnr-hdr--split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  align-items: start;
}

.ptnr-hdr__heading {
  font-size: clamp(26px, 3.5vw, 42px);
  font-weight: 900;
  line-height: 1.1;
  margin: 0;
}

.ptnr-hdr--stacked .ptnr-hdr__heading {
  margin-bottom: 20px;
}

.ptnr-hdr__body {
  font-size: 16px;
  line-height: 1.7;
}
.ptnr-hdr__body p { margin: 0 0 12px; }
.ptnr-hdr__body p:last-child { margin-bottom: 0; }

/* ── Card grid ── */
.ptnr-grid {
  display: grid;
  gap: 20px;
}

.ptnr-grid--cols-2 { grid-template-columns: repeat(2, 1fr); }
.ptnr-grid--cols-3 { grid-template-columns: repeat(3, 1fr); }
.ptnr-grid--cols-4 { grid-template-columns: repeat(4, 1fr); }

.ptnr-card {
  display: flex;
  flex-direction: column;
  padding: 24px 24px 28px;
  text-decoration: none;
  color: inherit;
  border: 1px solid #E5E5E5;
  box-shadow: 0 1px 4px rgba(0,0,0,.04);
  transition: box-shadow .18s ease, transform .18s ease;
}

.ptnr-card__cta {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-top: auto;
  padding-top: 16px;
  font-size: 14px;
  font-weight: 600;
  color: #000;
  text-decoration: none;
  transition: gap .15s;
}
.ptnr-card__cta:hover { gap: 8px; }

.ptnr-card__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 18px;
}
.ptnr-card__top--no-badges {
  margin-bottom: 14px;
}

.ptnr-card__logo { line-height: 0; }
.ptnr-card__logo img {
  max-height: 40px;
  width: auto;
  object-fit: contain;
}

.ptnr-card__badges {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: flex-end;
}
.ptnr-card__badge {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  padding: 5px 12px;
  border-radius: 20px;
  white-space: nowrap;
  flex-shrink: 0;
}

.ptnr-card__title {
  font-size: 16px;
  font-weight: 700;
  margin: 0 0 8px;
}

.ptnr-card__desc {
  font-size: 14px;
  line-height: 1.6;
  margin: 0;
}

/* ── CTA band ── */
.ptnr-cta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 32px 40px;
  margin-top: 32px;
  flex-wrap: wrap;
  border: 1px solid #E5E5E5;
}

.ptnr-cta__text { flex: 1; min-width: 200px; }

.ptnr-cta__title {
  font-size: 16px;
  font-weight: 700;
  margin: 0 0 4px;
}

.ptnr-cta__desc {
  font-size: 14px;
  line-height: 1.5;
  margin: 0;
  opacity: .75;
}

/* ── Responsive ── */
@media (max-width: 1024px) {
  .ptnr-inner { padding-left: 40px; padding-right: 40px; }
  .ptnr-hdr--split { grid-template-columns: 1fr; gap: 24px; }
  .ptnr-grid--cols-4 { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 768px) {
  .ptnr-inner { padding-left: 24px; padding-right: 24px; }
  .ptnr-grid  { grid-template-columns: 1fr !important; }
  .ptnr-cta   { flex-direction: column; align-items: flex-start; padding: 28px 24px; }
}

/* =================================================================
   Contact Section Widget — nexus-contact-section.php
================================================================= */

/* Strip Elementor's widget-container padding/margin so the section
   and its child bands (map, hours) can sit edge-to-edge like the
   other full-width widgets. */
.elementor-widget-nexus_contact_section {
  overflow: visible !important;
  padding: 0 !important;
  margin-right: 0 !important;
  margin-left: 0 !important;
  margin-bottom: 0;
}
.elementor-widget-nexus_contact_section > .elementor-widget-container {
  overflow: visible !important;
  padding: 0 !important;
  margin: 0 !important;
}

/* ── Wrapper ── */
.nexus-contact {
  /* #page-content already adds padding-top: nav-h on non-home pages.
     The negative margin pulls the section background up behind the nav
     (cancels that push). padding-top then only needs the extra breathing
     room — NOT nav-h again — so content sits ~80px below the nav bottom,
     not 2× nav-h below it.
     The inline <style> block and Elementor responsive selectors override
     both values per widget instance. */
  margin-top: calc(-1 * var(--nexus-nav-h, 143px));
  padding-top: 80px;
  padding-bottom: 100px;
}

.nexus-contact__inner {
  max-width: var(--nexus-content-w);
  margin: 0 auto;
  padding: 0 48px;
}

/* ── Two-column layout ── */
.nexus-contact__layout {
  --contact-left-w: 44%;
  display: grid;
  grid-template-columns: var(--contact-left-w) 1fr;
  gap: 48px;
  align-items: start;
}

/* ── Left column ── */
.nexus-contact-eyebrow {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: #FED906;
  margin: 0 0 12px;
}

.nexus-contact-heading {
  font-size: clamp(26px, 3.5vw, 46px);
  font-weight: 900;
  line-height: 1.12;
  margin: 0 0 20px;
}

.nexus-contact-intro {
  font-size: 16px;
  line-height: 1.7;
  margin: 0 0 36px;
  opacity: .85;
}

/* ── Contact details list ── */
.nexus-contact-details {
  list-style: none;
  margin: 0 0 32px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.nexus-contact-details__item {
  display: flex;
  align-items: flex-start;
  gap: 14px;
}

.nexus-contact-details__icon {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(254,217,6,.15);
  border-radius: 10px;
  color: #000;
}

.nexus-contact-details__text {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.nexus-contact-details__label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  opacity: .55;
}

.nexus-contact-details__value {
  font-size: 15px;
  font-weight: 600;
  color: inherit;
  text-decoration: none;
  line-height: 1.45;
}

a.nexus-contact-details__value:hover { text-decoration: underline; }

/* ── Dark highlight card ── */
.nexus-contact-dark-card {
  border-radius: 16px;
  padding: 28px 32px;
  color: #fff;
}

.nexus-contact-dark-card__heading {
  font-size: 17px;
  font-weight: 700;
  margin: 0 0 8px;
}

.nexus-contact-dark-card__text {
  font-size: 14px;
  line-height: 1.6;
  margin: 0;
  opacity: .8;
}

/* ── Form card ── */
.nexus-contact-card {
  border: 1px solid #9B9B9B;
  border-radius: 30px;
  padding: 48px 48px 52px;
  background: #fff;
}

.nexus-contact-card__header { margin-bottom: 32px; }

.nexus-contact-card__heading {
  font-size: 22px;
  font-weight: 800;
  margin: 0 0 6px;
}

.nexus-contact-card__subtext {
  font-size: 14px;
  opacity: .65;
  margin: 0;
}

/* ── Native form grid ── */
.nexus-contact-form__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
  margin-bottom: 16px;
}

.nexus-contact-form__field { display: flex; flex-direction: column; gap: 6px; }
.nexus-contact-form__field--full { margin-bottom: 24px; }

.nexus-contact-form__label {
  font-size: 13px;
  font-weight: 600;
  color: #333;
}

.nexus-contact-form__label span { color: #e00; margin-left: 2px; }

/* ── Shared input styles (native + FluentForms / WPForms / CF7 overrides) ── */
.nexus-contact-card input[type="text"],
.nexus-contact-card input[type="email"],
.nexus-contact-card input[type="tel"],
.nexus-contact-card input[type="url"],
.nexus-contact-card input[type="number"],
.nexus-contact-card select,
.nexus-contact-card textarea,
.nexus-contact-form__input {
  width: 100%;
  height: 55px;
  padding: 0 16px;
  font-size: 15px;
  font-family: inherit;
  color: #222;
  background: #F7F8F6;
  border: 1px solid #9B9B9B;
  border-radius: 10px;
  transition: border-color .2s, box-shadow .2s;
  box-sizing: border-box;
  appearance: none;
}

.nexus-contact-card textarea,
.nexus-contact-form__textarea {
  height: auto !important;
  padding-top: 14px;
  padding-bottom: 14px;
  resize: vertical;
  min-height: 140px;
}

.nexus-contact-card input:focus,
.nexus-contact-card select:focus,
.nexus-contact-card textarea:focus,
.nexus-contact-form__input:focus {
  outline: none;
  border-color: #FED906;
  box-shadow: 0 0 0 3px rgba(254,217,6,.20);
}

/* ── FluentForms-specific overrides ── */
.nexus-contact-card .ff-el-group { margin-bottom: 16px; }
.nexus-contact-card .ff-el-form-control { margin-bottom: 0 !important; }
.nexus-contact-card .ff-el-group label { font-size: 13px; font-weight: 600; color: #333; margin-bottom: 6px; }
.nexus-contact-card .ff-btn-submit,
.nexus-contact-card .ff-btn {
  background: #FED906 !important;
  color: #000 !important;
  border: none !important;
  border-radius: 28px !important;
  padding: 16px 36px !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  cursor: pointer;
  transition: opacity .2s;
}
.nexus-contact-card .ff-btn-submit:hover { opacity: .85; }

/* ── WPForms overrides ── */
.nexus-contact-card .wpforms-submit-container { text-align: right; margin-top: 8px; }
.nexus-contact-card button[type="submit"].wpforms-submit {
  background: #FED906 !important;
  color: #000 !important;
  border: none !important;
  border-radius: 28px !important;
  padding: 16px 36px !important;
  font-size: 15px !important;
  font-weight: 700 !important;
}

/* ── CF7 overrides ── */
.nexus-contact-card .wpcf7-submit {
  background: #FED906 !important;
  color: #000 !important;
  border: none !important;
  border-radius: 28px !important;
  padding: 16px 36px !important;
  font-size: 15px !important;
  font-weight: 700 !important;
}

/* ── Submit button (native) ── */
.nexus-contact-form__footer { display: flex; justify-content: flex-end; }

.nexus-contact-submit {
  display: inline-flex;
  align-items: center;
  gap: 0;
  height: 56px;
  padding: 0 36px;
  border: none;
  border-radius: 28px;
  font-size: 15px;
  font-weight: 700;
  font-family: inherit;
  cursor: pointer;
  transition: opacity .2s, transform .15s;
}

.nexus-contact-submit:hover  { opacity: .88; transform: translateY(-1px); }
.nexus-contact-submit:active { transform: translateY(0); opacity: 1; }

.nexus-contact-submit--yellow { background: #FED906; color: #000; }
.nexus-contact-submit--dark   { background: #1A1A1A; color: #fff; }
.nexus-contact-submit--white  { background: #fff; color: #000; border: 2px solid #1A1A1A; }

/* Loading state */
.nexus-contact-submit .nexus-contact-submit__sending { display: none; }
.nexus-contact-submit.is-sending .nexus-contact-submit__label  { display: none; }
.nexus-contact-submit.is-sending .nexus-contact-submit__sending { display: inline; }
.nexus-contact-submit[disabled] { opacity: .6; cursor: not-allowed; }

/* ── Alert messages ── */
.nexus-contact-msg,
.nexus-contact-ajax-msg {
  border-radius: 10px;
  padding: 14px 18px;
  font-size: 14px;
  font-weight: 600;
  margin-bottom: 20px;
}

.nexus-contact-msg--success,
.nexus-contact-ajax-msg.is-success {
  background: #e6f9ef;
  color: #1a7a42;
  border: 1px solid #9de0bc;
}

.nexus-contact-msg--error,
.nexus-contact-ajax-msg.is-error {
  background: #fdecea;
  color: #a12d2d;
  border: 1px solid #f0b0aa;
}

.nexus-contact-ajax-msg:empty { display: none; }

/* ── Notice (editor placeholder) ── */
.nexus-contact-notice {
  font-size: 13px;
  background: #fffbe6;
  border: 1px dashed #FED906;
  border-radius: 8px;
  padding: 14px 16px;
  color: #555;
  margin: 0;
}

/* ── Map Block ── */
.nexus-contact-map { width: 100%; }

.nexus-contact-map__frame {
  position: relative;
  width: 100%;
  height: 360px;
  overflow: hidden;
}

.nexus-contact-map__frame iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

.nexus-contact-map--placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 160px;
  background: #f0f0f0;
  border: 2px dashed #ccc;
  color: #888;
  font-size: 13px;
  text-align: center;
  padding: 24px;
}

/* ── Office Hours Band ── */
.nexus-contact-hours {
  padding-top: 64px;
  padding-bottom: 64px;
}

.nexus-contact-hours__inner {
  max-width: var(--nexus-content-w);
  margin: 0 auto;
  padding: 0 48px;
  display: grid;
  grid-template-columns: 320px 1fr;
  gap: 48px;
  align-items: center;
}

.nexus-contact-hours__heading {
  font-size: clamp(20px, 2.5vw, 30px);
  font-weight: 800;
  margin: 0 0 12px;
  line-height: 1.2;
}

.nexus-contact-hours__desc {
  font-size: 15px;
  line-height: 1.65;
  margin: 0;
  opacity: .75;
}

.nexus-contact-hours__cols {
  display: flex;
  align-items: stretch;
}

.nexus-contact-hours__col {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 0 32px;
}

.nexus-contact-hours__col + .nexus-contact-hours__col {
  border-left: 1px solid currentColor;
  opacity-adjustment: 1; /* border uses currentColor at ~20% via the rule below */
}

/* Divider at reduced opacity without touching the text */
.nexus-contact-hours__col + .nexus-contact-hours__col {
  border-left-color: rgba(0,0,0,.18);
}

.nexus-contact-hours__col:first-child { padding-left: 0; }

.nexus-contact-hours__day {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  opacity: .6;
}

.nexus-contact-hours__time {
  font-size: clamp(17px, 1.8vw, 22px);
  font-weight: 700;
  line-height: 1.2;
}

.nexus-contact-hours__note {
  font-size: 14px;
  opacity: .7;
}

/* ── Responsive ── */
@media (max-width: 1024px) {
  /* Padding and gap are driven by Elementor responsive selectors.
     Only layout-shift rules that don't conflict with selectors go here. */
  .nexus-contact-card { padding: 40px 36px 44px; border-radius: 24px; }
  .nexus-contact-hours__inner { padding: 0 40px; grid-template-columns: 260px 1fr; gap: 36px; }
}

@media (max-width: 768px) {
  .nexus-contact__inner { padding: 0 24px; }
  .nexus-contact__layout { grid-template-columns: 1fr; }
  .nexus-contact-form__grid { grid-template-columns: 1fr; }
  .nexus-contact-card { padding: 32px 24px 36px; border-radius: 20px; }
  .nexus-contact-form__footer { justify-content: stretch; }
  .nexus-contact-submit { width: 100%; justify-content: center; }

  .nexus-contact-hours__inner {
    padding: 0 24px;
    grid-template-columns: 1fr;
    gap: 32px;
  }
  .nexus-contact-hours__cols { flex-direction: column; gap: 0; }
  .nexus-contact-hours__col { padding: 20px 0 0; border-left: none !important; }
  .nexus-contact-hours__col:first-child { padding-top: 0; }
  .nexus-contact-hours__col + .nexus-contact-hours__col {
    border-top: 1px solid rgba(0,0,0,.15);
  }
}

/* ── Hero Breadcrumbs (built into hero widgets) ─────────── */
.hero-breadcrumbs {
  margin-bottom: 14px;
}
.hero-breadcrumbs__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
}
.hero-breadcrumbs__item {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 13px;
}
.hero-breadcrumbs__link {
  color: var(--bc-color, #1A1A1A);
  text-decoration: none;
  opacity: 0.6;
  transition: opacity .15s;
}
.hero-breadcrumbs__link:hover { opacity: 1; }
.hero-breadcrumbs__current {
  color: var(--bc-color, #1A1A1A);
  font-weight: 600;
  opacity: 1;
}
.hero-breadcrumbs__sep {
  color: var(--bc-color, #1A1A1A);
  opacity: 0.35;
  user-select: none;
}
@media (max-width: 767px) {
  .hero-breadcrumbs__item { font-size: 11px; }
}

/* ── Breadcrumbs widget ──────────────────────────────────── */
.nx-breadcrumbs {
  width: 100%;
}
.nx-breadcrumbs__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}
.nx-breadcrumbs__item {
  display: flex;
  align-items: center;
  gap: 6px;
}
.nx-breadcrumbs__link {
  text-decoration: none;
  opacity: 0.65;
  transition: opacity .15s;
}
.nx-breadcrumbs__link:hover { opacity: 1; }
.nx-breadcrumbs__current {
  opacity: 1;
  font-weight: 600;
}
.nx-breadcrumbs__sep {
  opacity: 0.4;
  user-select: none;
}

/* ── Back to Top button ──────────────────────────────────── */
.back-to-top {
  position: fixed;
  bottom: 32px;
  right: 32px;
  z-index: 9000;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 20px;
  background: #000;
  border: none;
  border-radius: 100px;
  cursor: pointer;
  font-size: 14px;
  font-weight: 600;
  font-family: inherit;
  text-decoration: none;
  box-shadow: 0 4px 20px rgba(0,0,0,0.25);
  opacity: 0;
  transform: translateY(12px);
  transition: opacity .25s ease, transform .25s ease;
  pointer-events: none;
}
.back-to-top.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}
.back-to-top:hover {
  background: #1a1a1a;
  box-shadow: 0 6px 28px rgba(0,0,0,0.35);
}
@media (max-width: 767px) {
  .back-to-top {
    bottom: 20px;
    right: 16px;
    padding: 10px 16px;
    font-size: 13px;
  }
}
