
  /* ---------- Header layout tokens ---------- */
  .ws-header {
    position: fixed; top: 0; left: 0; right: 0;
    z-index: 1000;
    font-family: Roboto, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    color: #fff;
    transition: background-color .25s ease, box-shadow .25s ease, backdrop-filter .25s ease;
    /* Scrim gradient: guarantees text contrast (WCAG 1.4.3) over any hero image
       while preserving the "transparent" look. Approximates a #072a4e wash at
       ~70% at the top, fading to 0% below the nav. */
    background:
      linear-gradient(
        180deg,
        rgba(7, 42, 78, .78) 0%,
        rgba(7, 42, 78, .55) 60%,
        rgba(7, 42, 78, 0) 100%
      );
  }
  .ws-header--scrolled {
    background: #072a4e;
    box-shadow: 0 2px 12px rgba(0,0,0,.18);
    backdrop-filter: saturate(150%) blur(6px);
    -webkit-backdrop-filter: saturate(150%) blur(6px);
  }

  /* Universal focus-visible style — WCAG 2.4.7 */
  .ws-header a:focus-visible,
  .ws-header button:focus-visible,
  .ws-drawer a:focus-visible,
  .ws-drawer button:focus-visible {
    outline: 2px solid #ffd700;
    outline-offset: 2px;
    border-radius: 6px;
  }

  /* ---------- Universal (top) bar ---------- */
  .ws-header__utility {
    background: rgba(7, 42, 78, .55);
    border-bottom: 1px solid rgba(255,255,255,.08);
    transition: background-color .25s ease;
  }
  .ws-header--scrolled .ws-header__utility {
    background: rgba(0,0,0,.15);
  }
  .ws-header__utility-inner {
    max-width: 1440px; margin: 0 auto;
    display: flex; align-items: center; justify-content: flex-end;
    padding: 0 30px; height: 36px; gap: 22px;
    font-size: 12px; letter-spacing: .02em;
  }
  .ws-header__utility a {
    color: #fff;
    text-decoration: none;
    padding: 4px 2px;
    border-bottom: 2px solid transparent;
    transition: color .15s ease, border-color .15s ease;
  }
  .ws-header__utility a:hover { color: #fff; text-decoration: underline; text-underline-offset: 4px; }
  .ws-header__utility a[aria-current="true"] {
    color: #fff; font-weight: 600;
    border-bottom-color: #DA1F33;
  }
  .ws-header__utility .sep { color: rgba(255,255,255,.55); }

  /* ---------- Primary bar ---------- */
  .ws-header__primary-inner {
    max-width: 1440px; margin: 0 auto;
    display: flex; align-items: center; justify-content: space-between;
    padding: 0 30px; height: 76px;
  }
  .ws-header--scrolled .ws-header__primary-inner { height: 64px; }

  .ws-header__logo { display: flex; align-items: center; }
  .ws-header__logo img {
    height: 42px; width: auto; display: block;
    transition: height .25s ease;
    filter: brightness(0) invert(1);
  }
  .ws-header--scrolled .ws-header__logo img { height: 36px; }

  /* ---------- Primary nav (desktop) ---------- */
  .ws-nav { display: flex; align-items: center; gap: 4px; }
  .ws-nav__list {
    list-style: none; margin: 0; padding: 0;
    display: flex; align-items: center; gap: 2px;
  }
  .ws-nav__item { position: relative; }
  .ws-nav__link {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 10px 16px;
    color: #fff; text-decoration: none;
    font-size: 15px; font-weight: 500; letter-spacing: .01em;
    border-radius: 6px;
    transition: background-color .15s ease, color .15s ease;
    background: transparent;
    white-space: nowrap;
  }
  .ws-nav__link:hover,
  .ws-nav__link:focus-visible { background: rgba(255,255,255,.12); }
  .ws-nav__link[aria-current="page"],
  .ws-nav__link[aria-current="true"] {
    color: #fff;
  }
  .ws-nav__link[aria-current="page"]::after {
    content: ""; position: absolute; left: 16px; right: 16px; bottom: 4px;
    height: 2px; background: #DA1F33; border-radius: 2px;
  }
  .ws-nav__link[aria-current="true"]::after {
    content: ""; position: absolute; left: 16px; right: 16px; bottom: 4px;
    height: 2px; background: rgba(218, 31, 51, .55); border-radius: 2px;
  }
  /* Drawer active states */
  .ws-drawer__link[aria-current="page"],
  .ws-drawer__link[aria-current="true"] {
    background: rgba(255,255,255,.06);
    box-shadow: inset 3px 0 0 #DA1F33;
  }
  .ws-drawer__sub a[aria-current="page"] {
    color: #fff;
    background: rgba(255,255,255,.08);
    border-left-color: #DA1F33;
  }
  .ws-drawer__sub a[aria-current="true"] {
    color: #fff;
    border-left-color: rgba(218, 31, 51, .55);
  }
  .ws-nav__caret {
    width: 10px; height: 10px; display: inline-block;
    border-right: 2px solid currentColor; border-bottom: 2px solid currentColor;
    transform: rotate(45deg) translateY(-2px);
    transition: transform .2s ease;
  }
  .ws-nav__item--open .ws-nav__caret { transform: rotate(-135deg) translateY(-2px); }

  /* Dropdown */
  .ws-nav__dropdown {
    position: absolute; top: calc(100% + 6px); left: 0;
    min-width: 260px;
    background: #fff; color: #072a4e;
    border-radius: 8px;
    box-shadow: 0 12px 32px rgba(0,0,0,.18);
    padding: 8px;
    opacity: 0; visibility: hidden; transform: translateY(-6px);
    transition: opacity .15s ease, transform .15s ease, visibility .15s ease;
    list-style: none; margin: 0;
  }
  .ws-nav__item--open > .ws-nav__dropdown {
    opacity: 1; visibility: visible; transform: translateY(0);
  }
  .ws-nav__dropdown a {
    display: block; padding: 10px 14px; border-radius: 6px;
    color: #072a4e; text-decoration: none;
    font-size: 14px; font-weight: 500;
    transition: background-color .12s ease, color .12s ease;
  }
  .ws-nav__dropdown a:hover,
  .ws-nav__dropdown a:focus-visible {
    background: #f2f5f8; color: #DA1F33;
  }

  /* Login item (icon + text) */
  .ws-nav__login {
    margin-left: 6px;
    padding: 8px 14px !important;
    border: 1.5px solid #fff;
    border-radius: 999px;
  }
  .ws-nav__login:hover,
  .ws-nav__login:focus-visible { background: rgba(255,255,255,.18); }
  .ws-nav__login svg { width: 16px; height: 16px; flex: 0 0 auto; }

  /* ---------- Hamburger (mobile trigger) ---------- */
  .ws-header__toggle {
    display: none;
    background: transparent; border: 0; color: #fff;
    width: 44px; height: 44px; padding: 0; cursor: pointer;
    align-items: center; justify-content: center;
    border-radius: 6px;
  }
  .ws-header__toggle:hover { background: rgba(255,255,255,.12); }
  .ws-header__toggle svg { width: 26px; height: 26px; }

  /* ---------- Mobile drawer ---------- */
  .ws-drawer {
    position: fixed; top: 0; right: 0; bottom: 0;
    width: min(86vw, 360px);
    background: linear-gradient(180deg, #0a3260 0%, #072a4e 100%);
    color: #fff;
    box-shadow: -12px 0 40px rgba(0,0,0,.45);
    transform: translateX(100%);
    transition: transform .3s cubic-bezier(.2,.8,.2,1);
    z-index: 1001;
    display: flex; flex-direction: column;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
  .ws-drawer--open { transform: translateX(0); }
  .ws-drawer__backdrop {
    position: fixed; inset: 0; background: rgba(4,18,36,.6);
    opacity: 0; visibility: hidden;
    transition: opacity .25s ease, visibility .25s ease;
    z-index: 1000;
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
  }
  .ws-drawer__backdrop--open { opacity: 1; visibility: visible; }

  .ws-drawer__head {
    position: sticky; top: 0; z-index: 2;
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 16px 14px 20px;
    background: rgba(7, 42, 78, .92);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    border-bottom: 1px solid rgba(255,255,255,.08);
  }
  .ws-drawer__head .ws-header__logo img {
    height: 30px; filter: brightness(0) invert(1);
  }
  .ws-drawer__close {
    background: transparent; border: 0; color: #fff;
    width: 40px; height: 40px; cursor: pointer; border-radius: 8px;
    display: inline-flex; align-items: center; justify-content: center;
    transition: background-color .15s ease;
  }
  .ws-drawer__close:hover,
  .ws-drawer__close:focus-visible { background: rgba(255,255,255,.12); }
  .ws-drawer__close svg { width: 20px; height: 20px; }

  .ws-drawer__utility {
    display: flex; flex-wrap: wrap;
    padding: 14px 20px 12px;
    gap: 6px 8px;
    border-bottom: 1px solid rgba(255,255,255,.08);
  }
  .ws-drawer__utility a {
    color: rgba(255,255,255,.7);
    text-decoration: none;
    font-size: 12px; font-weight: 500;
    letter-spacing: .04em; text-transform: uppercase;
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(255,255,255,.04);
    transition: background-color .15s ease, color .15s ease;
  }
  .ws-drawer__utility a:hover { color: #fff; background: rgba(255,255,255,.1); }
  .ws-drawer__utility a[aria-current="true"] {
    color: #fff;
    background: rgba(218, 31, 51, .18);
    box-shadow: inset 0 0 0 1px rgba(218, 31, 51, .5);
  }

  .ws-drawer__nav {
    padding: 12px 12px 8px; flex: 1;
    list-style: none; margin: 0;
  }
  .ws-drawer__nav > li { border-bottom: 1px solid rgba(255,255,255,.06); }
  .ws-drawer__nav > li:last-child { border-bottom: 0; }
  .ws-drawer__link,
  .ws-drawer__toggle-sub {
    display: flex; align-items: center; justify-content: space-between;
    width: 100%; padding: 15px 14px;
    color: #fff; text-decoration: none;
    background: transparent; border: 0; text-align: left;
    font-size: 16px; font-weight: 500; font-family: inherit;
    letter-spacing: .01em;
    cursor: pointer; border-radius: 8px;
    transition: background-color .15s ease, color .15s ease;
  }
  .ws-drawer__link:hover,
  .ws-drawer__link:focus-visible,
  .ws-drawer__toggle-sub:hover,
  .ws-drawer__toggle-sub:focus-visible { background: rgba(255,255,255,.08); }
  .ws-drawer__sub {
    list-style: none; margin: 0; padding: 0 8px 8px 14px;
    max-height: 0; overflow: hidden;
    transition: max-height .3s ease;
  }
  .ws-drawer__nav > li.open .ws-drawer__sub { max-height: 400px; }
  .ws-drawer__sub a {
    display: block; padding: 11px 14px;
    color: rgba(255,255,255,.75); text-decoration: none;
    font-size: 14px; font-weight: 500;
    border-left: 2px solid rgba(255,255,255,.12);
    border-radius: 0 6px 6px 0;
    transition: color .15s ease, background-color .15s ease, border-color .15s ease;
  }
  .ws-drawer__sub a:hover,
  .ws-drawer__sub a:focus-visible {
    background: rgba(255,255,255,.06);
    color: #fff;
    border-left-color: #DA1F33;
  }
  .ws-drawer__toggle-sub .ws-nav__caret { border-color: #fff; opacity: .8; }
  .ws-drawer__nav > li.open .ws-drawer__toggle-sub {
    background: rgba(255,255,255,.06); color: #fff;
  }
  .ws-drawer__nav > li.open .ws-drawer__toggle-sub .ws-nav__caret {
    transform: rotate(-135deg) translateY(-2px); opacity: 1;
  }

  .ws-drawer__footer {
    padding: 16px 20px 24px;
    border-top: 1px solid rgba(255,255,255,.08);
    display: flex; flex-direction: column; gap: 12px;
    background: rgba(0,0,0,.12);
  }
  .ws-drawer__login {
    display: inline-flex; align-items: center; justify-content: center;
    gap: 10px;
    padding: 14px 18px;
    background: #DA1F33;
    border: 0; border-radius: 999px;
    color: #fff; text-decoration: none;
    font-size: 15px; font-weight: 600; letter-spacing: .02em;
    box-shadow: 0 4px 14px rgba(218, 31, 51, .35);
    transition: background-color .15s ease, transform .1s ease;
  }
  .ws-drawer__login:hover,
  .ws-drawer__login:focus-visible { background: #c11a2c; }
  .ws-drawer__login:active { transform: translateY(1px); }
  .ws-drawer__login svg {
    width: 18px; height: 18px; flex: 0 0 auto;
  }
  .ws-drawer__contact-cta {
    text-align: center;
    color: rgba(255,255,255,.55);
    font-size: 12px;
  }
  .ws-drawer__contact-cta a { color: #fff; text-decoration: underline; }

  /* ---------- Responsive ---------- */
  @media (max-width: 1024px) {
    .ws-header__utility { display: none; }
    .ws-nav { display: none; }
    .ws-header__toggle { display: inline-flex; }
    .ws-header__primary-inner {
      height: 60px;
      padding: 0 16px 0 20px;
    }
    .ws-header--scrolled .ws-header__primary-inner { height: 56px; }
    .ws-header__logo img { height: 30px; }
    .ws-header--scrolled .ws-header__logo img { height: 28px; }
    .ws-header__toggle {
      width: 44px; height: 44px;
      margin-right: -8px;
    }
    .ws-header__toggle svg { width: 24px; height: 24px; }
  }
  @media (max-width: 480px) {
    .ws-header__primary-inner { padding: 0 12px 0 16px; }
    .ws-header__logo img { height: 26px; }
    .ws-header--scrolled .ws-header__logo img { height: 24px; }
  }

  /* Reduced motion: honor OS "Reduce motion" setting — WCAG 2.3.3 */
  @media (prefers-reduced-motion: reduce) {
    .ws-header,
    .ws-header__utility,
    .ws-header__primary-inner,
    .ws-header__logo img,
    .ws-drawer,
    .ws-drawer__backdrop,
    .ws-drawer__sub,
    .ws-nav__dropdown,
    .ws-nav__caret,
    .ws-nav__link,
    .ws-drawer__link,
    .ws-drawer__toggle-sub,
    .ws-drawer__login,
    .ws-drawer__close {
      transition: none !important;
    }
  }

  /* Windows High Contrast / forced-colors mode support */
  @media (forced-colors: active) {
    .ws-header,
    .ws-header--scrolled { background: Canvas; forced-color-adjust: none; }
    .ws-nav__link,
    .ws-header__utility a,
    .ws-drawer__link,
    .ws-drawer__toggle-sub { color: CanvasText; }
    .ws-nav__login,
    .ws-drawer__login { border-color: CanvasText; }
  }

  /* Body scroll lock when drawer open */
    body.ws-nav-open { overflow: hidden; }

  /* --------- Content spacing safeguard ---------
     Pages without a full-bleed hero at the top will collide with the fixed
     transparent nav. Uses :has() to detect the absence of any known hero
     marker and add top padding automatically. Browsers without :has() fall
     back to the original layout. */
  #block-abswavesight-content:not(:has(.hero-banner, .banner-container, .hero, .ns-hero-container, .ns-hero-banner, [class*="cpt_secondary_hero_banner"], .bg-abs-blue)) {
    padding-top: 120px;
  }
  @media (max-width: 1024px) {
    #block-abswavesight-content:not(:has(.hero-banner, .banner-container, .hero, .ns-hero-container, .ns-hero-banner, [class*="cpt_secondary_hero_banner"], .bg-abs-blue)) {
      padding-top: 88px;
    }
  }

  /* --------- Hero top-padding safeguard ---------
     Some hero blocks (Tier 2, Cohesion secondary, and ad-hoc heroes on
     sub-pages) don't reserve enough vertical space to clear the fixed
     transparent nav. Bump the top padding so the H1 sits below the nav. */
  #block-abswavesight-content .hero-banner,
  #block-abswavesight-content .banner-container,
  #block-abswavesight-content .hero,
  #block-abswavesight-content .ns-hero-container,
  #block-abswavesight-content .ns-hero-banner,
  #block-abswavesight-content [class*="cpt_secondary_hero_banner"] {
    padding-top: 120px;
  }
  @media (max-width: 1024px) {
    #block-abswavesight-content .hero-banner,
    #block-abswavesight-content .banner-container,
    #block-abswavesight-content .hero,
    #block-abswavesight-content .ns-hero-container,
    #block-abswavesight-content .ns-hero-banner,
    #block-abswavesight-content [class*="cpt_secondary_hero_banner"] {
      padding-top: 88px;
    }
  }

  /* --------- Force solid nav on non-hero pages ---------
     A tiny inline script below detects hero absence and adds .ws-header--solid
     to the header. This keeps the nav readable on white-background sub-pages. */
  /* :has()-based no-hero solid nav (first-paint, no JS flash).
     Modern browsers apply this instantly during initial paint.
     JS below is retained as fallback for legacy browsers. */
  body:has(#block-abswavesight-content):not(:has(.hero-banner, .banner-container, .hero, .ns-hero-container, .ns-hero-banner, [class*="cpt_secondary_hero_banner"], .bg-abs-blue)) .ws-header {
    background: #072a4e !important;
    box-shadow: 0 2px 12px rgba(0,0,0,.18) !important;
  }
  body:has(#block-abswavesight-content):not(:has(.hero-banner, .banner-container, .hero, .ns-hero-container, .ns-hero-banner, [class*="cpt_secondary_hero_banner"], .bg-abs-blue)) .ws-header__utility {
    background: rgba(0,0,0,.15) !important;
  }
  .ws-header.ws-header--solid,
  .ws-header--solid.ws-header--scrolled {
    background: #072a4e !important;
    box-shadow: 0 2px 12px rgba(0,0,0,.18) !important;
  }
  .ws-header--solid .ws-header__utility {
    background: rgba(0,0,0,.15) !important;
  }

