/* Nouvelle Vague — Responsive overrides.
   Inline styles win over plain CSS specificity, so mobile rules use !important
   to override the desktop inline styles without touching desktop markup.

   Fluid headline sizes use clamp() so they scale smoothly with the viewport
   instead of jumping at a single breakpoint; the clamp max always matches the
   original desktop px value, so desktop rendering is untouched. */

/* ---------------- Fluid headlines (all viewports) ---------------- */
.nv-hero-h1 { font-size: clamp(30px, 9vw, 55px) !important; }
.nv-hero-h1-sub { font-size: clamp(22px, 6.2vw, 40px) !important; }
.nv-probleme-h2 { font-size: clamp(24px, 7.5vw, 38px) !important; }
.nv-h2 { font-size: clamp(24px, 7.2vw, 42px) !important; }
.nv-cta-h2 { font-size: clamp(26px, 7.8vw, 46px) !important; }

/* ---------------- Motion system ---------------- */
:root {
  --nv-press-dur: 100ms;
  --nv-menu-dur: 300ms;
  --nv-reveal-dur: 460ms;
  --nv-trajectory-dur: 800ms;
}

[id] { scroll-margin-top: 92px; }

.motion-ready [data-reveal],
.motion-ready [data-motion-hero],
.motion-ready [data-motion-page] {
  opacity: 0;
  transform: translateY(12px);
  transition: opacity var(--nv-reveal-dur) var(--ease-out), transform var(--nv-reveal-dur) var(--ease-out);
  will-change: opacity, transform;
}

.motion-ready [data-reveal].is-revealed,
.motion-ready [data-motion-hero].is-revealed,
.motion-ready [data-motion-page].is-revealed {
  opacity: 1;
  transform: translateY(0);
  will-change: auto;
}

.motion-ready .nv-reveal-stagger { transition-delay: calc(var(--reveal-order, 0) * 55ms); }
.motion-ready .nv-hero-eyebrow { transition-delay: 70ms; }
.motion-ready .nv-hero-h1 { transition-delay: 140ms; }
.motion-ready .nv-hero-cta-row { transition-delay: 210ms; }
.motion-ready .nv-motion-hero-wave { transform: translate(-68.5%, -30.2%) translate(8px, 8px); transition-duration: 700ms; transition-delay: 90ms; }
.motion-ready .nv-motion-hero-wave.is-revealed { transform: translate(-68.5%, -30.2%); }

.motion-ready .nv-reveal-list .nv-list-bullet { transform: scale(.75); transition: transform var(--dur) var(--ease-out); }
.motion-ready .nv-reveal-list.is-revealed .nv-list-bullet { transform: scale(1); }

.motion-ready [data-trajectory] svg > path {
  stroke-dasharray: var(--nv-trajectory-length, 1);
  stroke-dashoffset: var(--nv-trajectory-length, 0);
  transition: stroke-dashoffset var(--nv-trajectory-dur) var(--ease-out);
}
.motion-ready [data-trajectory] svg > g {
  opacity: 0;
  transform-box: fill-box;
  transform-origin: center;
  transform: scale(.8);
  transition: opacity 150ms var(--ease-out) 650ms, transform 150ms var(--ease-out) 650ms;
}
.motion-ready [data-trajectory].is-revealed svg > path { stroke-dashoffset: 0; }
.motion-ready [data-trajectory].is-revealed svg > g { opacity: 1; transform: scale(1); }

.motion-ready .nv-methode-grid:not(.is-revealed) .nv-method-step { opacity: 0; transform: translateY(10px); }
.motion-ready .nv-methode-grid.is-revealed .nv-method-step {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 420ms var(--ease-out), transform 420ms var(--ease-out);
  transition-delay: calc(var(--reveal-order, 0) * 55ms);
}
.motion-ready .nv-methode-grid .nv-method-divider { transform: scaleX(0); transform-origin: left; transition: transform 360ms var(--ease-out); }
.motion-ready .nv-methode-grid.is-revealed .nv-method-divider { transform: scaleX(1); }
.motion-ready .nv-aside.is-revealed .nv-badge-stagger { animation: nv-badge-reveal 180ms var(--ease-out) both; }
.motion-ready .nv-aside.is-revealed .nv-badge-stagger:nth-child(2) { animation-delay: 40ms; }
.motion-ready .nv-aside.is-revealed .nv-badge-stagger:nth-child(3) { animation-delay: 80ms; }

@keyframes nv-badge-reveal {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes nv-ceo-trajectory-draw {
  from { stroke-dasharray: 26 26; stroke-dashoffset: 26; }
  to { stroke-dasharray: 26 26; stroke-dashoffset: 0; }
}

@keyframes nv-ceo-trajectory-node {
  from { opacity: 0; transform: scale(.8); }
  to { opacity: 1; transform: scale(1); }
}

@keyframes nv-ceo-link-upper {
  0%, 100% { transform: translate(0); }
  45% { transform: translate(2px, -2px); }
}

@keyframes nv-ceo-link-lower {
  0%, 100% { transform: translate(0); }
  45% { transform: translate(-2px, 2px); }
}

@keyframes nv-ceo-pulse-draw {
  from { stroke-dasharray: 40 40; stroke-dashoffset: 40; }
  to { stroke-dasharray: 40 40; stroke-dashoffset: 0; }
}

/* ---------------- Reusable presentational primitives (static HTML rewrite) ---------------- */
.nv-eyebrow { display: inline-flex; align-items: center; gap: 10px; font-family: var(--font-body); font-size: 12px; font-weight: 600; letter-spacing: 0.22em; text-transform: uppercase; }
.nv-eyebrow::before { content: ""; width: 22px; height: 1.5px; background: var(--accent); display: inline-block; flex-shrink: 0; }
.nv-eyebrow--dark { color: var(--text-muted); }
.nv-eyebrow--light { color: var(--text-muted-ink); }

.nv-iconfeature { display: flex; flex-direction: column; gap: 14px; }
.nv-iconfeature-icon { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: var(--radius-md); background: rgba(255,107,91,0.10); border: 1px solid rgba(255,107,91,0.22); color: var(--accent); flex-shrink: 0; }
.nv-iconfeature-body { display: flex; flex-direction: column; gap: 6px; }
.nv-iconfeature-title { font-family: var(--font-body); font-size: 16px; font-weight: 600; color: var(--text-strong-ink); }
.nv-iconfeature-desc { font-family: var(--font-body); font-size: 14px; line-height: 1.55; color: var(--text-muted-ink); margin: 0; }

.nv-badge { display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-body); font-size: 12px; font-weight: 600; letter-spacing: 0.02em; padding: 5px 12px; border-radius: var(--radius-pill); white-space: nowrap; }
.nv-badge--coral { color: var(--nv-coral-500); background: rgba(255,107,91,0.14); border: 1px solid rgba(255,107,91,0.3); }
.nv-badge--outline { color: var(--text-body); background: transparent; border: 1px solid var(--border-dark-strong); }

/* Button primitive — replaces the JS Button component (variants + sizes match 1:1). */
.nv-btn { display: inline-flex; align-items: center; justify-content: center; font-family: var(--font-body); font-weight: 600; line-height: 1; letter-spacing: 0.01em; border: 1px solid transparent; cursor: pointer; text-decoration: none; white-space: nowrap; transition: background var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out), color var(--dur) var(--ease-out), transform var(--dur-fast) var(--ease-out); }
.nv-btn:active { transform: translateY(1px); }
.nv-btn--sm { padding: 8px 16px; font-size: 13px; border-radius: var(--radius-sm); gap: 6px; }
.nv-btn--md { padding: 12px 22px; font-size: 15px; border-radius: var(--radius-sm); gap: 8px; }
.nv-btn--lg { padding: 16px 30px; font-size: 17px; border-radius: var(--radius-md); gap: 10px; }
.nv-btn--primary { background: var(--accent); color: var(--accent-contrast); box-shadow: 0 6px 20px rgba(255,107,91,0.28); }
.nv-btn--secondary { background: transparent; color: var(--text-strong); border-color: var(--border-dark-strong); }
.nv-btn--tertiary { background: transparent; color: var(--accent); padding: 6px 2px; border-color: transparent; }
.nv-btn--ghost { background: rgba(255,255,255,0.04); color: var(--text-strong); border-color: var(--border-dark); }
.nv-btn[disabled] { cursor: not-allowed; opacity: 0.4; }
.nv-btn-icon { display: inline-flex; }

/* ---------------- Shared feedback ---------------- */
.nv-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 37px;
  padding: 10px 16px;
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  background: var(--accent);
  color: var(--accent-contrast);
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 600;
  line-height: 1;
  text-decoration: none;
  transition: color var(--dur-fast) var(--ease-out), background var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out), transform var(--nv-press-dur) cubic-bezier(.4, 0, 1, 1);
}

.nv-button:focus-visible,
.nv-btn:focus-visible,
.nv-navbar a:focus-visible,
.nv-navbar-toggle:focus-visible,
.nv-footer-link:focus-visible,
.nv-legal-back:focus-visible,
.nv-action-card a:focus-visible,
button:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 3px;
}

.nv-button:active { transform: translateY(1px); }

.nv-footer-link { position: relative; }
.nv-footer-link::after,
.nv-legal-back::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: -3px;
  left: 0;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 180ms var(--ease-out);
}

.nv-calendar-status { margin: 12px 0 0; color: var(--text-muted); font-family: var(--font-body); font-size: 13px; line-height: 1.5; }
.nv-calendar-status a { color: var(--accent); }

/* ---------------- Local navigation ---------------- */
.nv-navbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 22px 32px;
  border-bottom: 1px solid transparent;
  background: transparent;
  color: var(--text-strong);
  transition: padding var(--dur) var(--ease-out), background var(--dur) var(--ease-out), border-color var(--dur) var(--ease-out);
}
.nv-navbar.is-scrolled,
.nv-navbar.is-open,
.nv-navbar[data-solid="true"] { padding: 14px 32px; background: rgba(11, 15, 20, .96); border-bottom-color: var(--border-dark); }
.nv-navbar-logo { display: inline-flex; text-decoration: none; }
.nv-navbar-desktop { display: flex; align-items: center; gap: 36px; }
.nv-navbar-desktop ul { display: flex; align-items: center; gap: 32px; margin: 0; padding: 0; list-style: none; }
.nv-navbar a { color: var(--text-body); font-family: var(--font-body); font-size: 14px; font-weight: 500; text-decoration: none; }
.nv-navbar .nv-button { color: var(--accent-contrast); }
.nv-navbar-desktop ul a { position: relative; padding-bottom: 4px; transition: color var(--dur) var(--ease-out); }
.nv-navbar-desktop ul a::after { content: ""; position: absolute; right: 0; bottom: 0; left: 0; height: 1px; background: var(--accent); transform: scaleX(0); transform-origin: left; transition: transform var(--dur) var(--ease-out); }
.nv-navbar-desktop ul a.is-active { color: var(--text-strong); }
.nv-navbar-desktop ul a.is-active::after { transform: scaleX(1); }
.nv-nav-external span { display: inline-block; margin-left: 3px; opacity: .75; }
.nv-navbar-toggle { display: none; width: 40px; height: 40px; padding: 0; border: 1px solid var(--border-dark); border-radius: var(--radius-md); background: transparent; color: var(--text-strong); cursor: pointer; }
.nv-menu-icon { position: relative; display: block; width: 18px; height: 14px; margin: auto; }
.nv-menu-icon i { position: absolute; left: 0; display: block; width: 18px; height: 1.6px; border-radius: 2px; background: currentColor; transition: transform 180ms var(--ease-out), opacity 180ms var(--ease-out); }
.nv-menu-icon i:nth-child(1) { top: 0; }
.nv-menu-icon i:nth-child(2) { top: 6px; }
.nv-menu-icon i:nth-child(3) { top: 12px; }
.nv-navbar.is-open .nv-menu-icon i:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.nv-navbar.is-open .nv-menu-icon i:nth-child(2) { opacity: 0; }
.nv-navbar.is-open .nv-menu-icon i:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }
.nv-navbar-mobile-menu { position: absolute; top: 100%; right: 0; left: 0; display: flex; flex-direction: column; gap: 4px; padding: 8px 32px 28px; border-bottom: 1px solid var(--border-dark); background: rgba(11, 15, 20, .96); opacity: 0; pointer-events: none; transform: translateY(-8px); visibility: hidden; transition: opacity var(--nv-menu-dur) var(--ease-out), transform var(--nv-menu-dur) var(--ease-out), visibility 0s linear var(--nv-menu-dur); }
.nv-navbar-mobile-menu a:not(.nv-button) { padding: 14px 0; border-bottom: 1px solid var(--border-dark); color: var(--text-body); font-size: 16px; }
.nv-navbar-mobile-menu .nv-nav-cta { width: 100%; margin-top: 18px; }
.nv-navbar.is-open .nv-navbar-mobile-menu { visibility: visible; opacity: 1; pointer-events: auto; transform: translateY(0); transition-delay: 0s; }

@media (hover: hover) and (pointer: fine) {
  .nv-button:hover { background: var(--accent-hover); }
  .nv-btn--primary:hover { background: var(--accent-hover); }
  .nv-btn--secondary:hover { border-color: var(--accent); color: var(--accent); }
  .nv-btn--ghost:hover { background: rgba(255,255,255,0.09); }
  .nv-btn--tertiary:hover { opacity: 0.7; }
  .nv-btn-icon { transition: transform 180ms var(--ease-out); }
  .nv-btn:hover .nv-btn-icon { transform: translateX(3px); }
  .nv-navbar-desktop ul a:hover { color: var(--text-strong); }
  .nv-navbar-desktop ul a:hover::after { transform: scaleX(1); }
  .nv-footer-link:hover::after,
  .nv-legal-back:hover::after { transform: scaleX(1); }
  .nv-action-card { transition: transform 180ms var(--ease-out), border-color 180ms var(--ease-out); }
  .nv-action-card:hover,
  .nv-action-card:focus-within { transform: translateY(-3px); border-color: var(--accent) !important; box-shadow: var(--shadow-medium); }

  /* Les trois cartes CEO restent informatives : seul leur signe graphique répond au survol. */
  .nv-criteres-grid .nv-info-card:nth-child(1):hover svg path {
    animation: nv-ceo-trajectory-draw 460ms var(--ease-out) both;
  }
  .nv-criteres-grid .nv-info-card:nth-child(1):hover svg circle {
    transform-box: fill-box;
    transform-origin: center;
    animation: nv-ceo-trajectory-node 100ms var(--ease-out) 360ms both;
  }
  .nv-criteres-grid .nv-info-card:nth-child(2):hover svg path {
    transform-box: fill-box;
    transform-origin: center;
  }
  .nv-criteres-grid .nv-info-card:nth-child(2):hover svg path:first-child {
    animation: nv-ceo-link-upper 520ms var(--ease-in-out) both;
  }
  .nv-criteres-grid .nv-info-card:nth-child(2):hover svg path:last-child {
    animation: nv-ceo-link-lower 520ms var(--ease-in-out) both;
  }
  .nv-criteres-grid .nv-info-card:nth-child(3):hover svg path {
    animation: nv-ceo-pulse-draw 500ms var(--ease-out) both;
  }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 120ms !important; }
  .nv-navbar-mobile-menu { transform: none; transition: opacity 120ms linear, visibility 0s linear 120ms; }
  .nv-navbar.is-open .nv-navbar-mobile-menu { transform: none; }
  .nv-menu-icon i { transition: none; }
}

/* ---------------- Navbar ---------------- */
.nv-navbar > *:first-child { cursor: pointer; }

@media (max-width: 860px) {
  .nv-navbar-desktop { display: none !important; }
  .nv-navbar-toggle { display: inline-flex !important; }
}

/* ---------------- Tablet ---------------- */
@media (max-width: 960px) {
  .nv-wrap { padding-left: 28px !important; padding-right: 28px !important; }
  .nv-expertise-grid { grid-template-columns: repeat(3, 1fr) !important; }
  .nv-methode-grid { grid-template-columns: repeat(2, 1fr) !important; }
}

/* ---------------- Hero wave — tablet & small laptop ----------------
   Above ~1450px the wave is positioned as a % of the viewport, which scales
   nicely because the headline stays at a fixed size (font clamp maxes out
   well below that). Below 1450px that same scaling drags the curve across
   the headline, so it's repositioned in two calibrated bands (each a linear
   interpolation, in px, anchored to the dot at the top of the curve) that
   keep it clear of the headline text at every width down to 641px. */
@media (min-width: 641px) and (max-width: 960px) {
  .nv-hero-bg {
    left: calc(78.37vw + 37.65px) !important;
    top: calc(400.63px - 21.94vw) !important;
    width: calc(159.87vw - 254.7px) !important;
  }

  /* Headline was pinned at its desktop max size this whole range (the fluid
     clamp above already maxes out below 641px); scale it down a bit here so
     tablet portrait doesn't render it at full desktop size. Unitless
     line-height on the headline scales with it automatically. */
  .nv-hero-h1 { font-size: calc(3.45vw + 21.88px) !important; }
  .nv-hero-h1-sub { font-size: calc(2.508vw + 15.92px) !important; }
}

@media (min-width: 961px) and (max-width: 1450px) {
  .nv-hero-bg {
    left: calc(86.33vw + 11.23px) !important;
    top: calc(248.06px - 9.59vw) !important;
    width: calc(39.18vw + 923.87px) !important;
  }
}

/* Above ~1450px the desktop inline % positioning (left:88%, width:104%) is
   fine on its own, but on very wide screens it drifts the endpoint dot away
   from the nav (which hugs the right edge at a fixed offset), so the curve
   visibly detaches from the menu. Capping both values with min() leaves
   widths below ~1725px untouched (the min() picks the original % value)
   and freezes the dot at a fixed distance from the right edge beyond that. */
@media (min-width: 1451px) {
  .nv-hero-bg {
    left: max(88vw, calc(100vw - 207px)) !important;
    width: min(104vw, 1794px) !important;
  }
}

/* ---------------- RDV cards — tablet & below ---------------- */
@media (max-width: 900px) {
  .nv-rdv-grid { grid-template-columns: 1fr !important; gap: 18px !important; margin-top: 32px !important; }
}

@media (max-width: 640px) {
  .nv-rdv-founder { gap: 12px !important; }
  .nv-rdv-card { padding: 24px !important; }
  /* Section itself keeps its fixed-navbar clearance (72px) on top of the usual
     tighter mobile breathing room — unlike .nv-section-pad, whose generic mobile
     override would otherwise shrink this below what the fixed nav needs. */
  .nv-rdv-section { padding: 136px 0 64px !important; }
}

/* ---------------- Legal / privacy pages — content typography + fixed-navbar clearance ---------------- */
.nv-legal-body p { font-family: var(--font-body); font-size: 16px; line-height: 1.7; color: var(--text-body-ink); margin: 0 0 18px; }
.nv-legal-body p:last-child { margin-bottom: 0; }
.nv-legal-body strong { color: var(--text-strong-ink); font-weight: 600; }
.nv-legal-body h4 { font-family: var(--font-body); font-size: 15px; font-weight: 600; color: var(--text-strong-ink); margin: 28px 0 12px; }
.nv-legal-body h4:first-child { margin-top: 0; }
.nv-legal-body ul { list-style: none; margin: 0 0 18px; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.nv-legal-body li { display: flex; gap: 12px; align-items: flex-start; font-family: var(--font-body); font-size: 16px; line-height: 1.6; color: var(--text-body-ink); }
.nv-legal-body li::before { content: ""; margin-top: 9px; width: 6px; height: 6px; border-radius: 50%; background: var(--accent); flex-shrink: 0; }

@media (max-width: 640px) {
  .nv-legal-section { padding: 136px 0 64px !important; }
}

/* ---------------- LinkedIn / contact cards — tablet & below ---------------- */
@media (max-width: 768px) {
  .nv-linkedin-row { align-items: center !important; }
  .nv-linkedin-desc-desktop { display: none !important; }
  .nv-linkedin-desc-mobile { display: block !important; }
}

/* ---------------- Mobile ---------------- */
@media (max-width: 640px) {
  .nv-wrap { padding-left: 20px !important; padding-right: 20px !important; }
  .nv-section-pad { padding-top: 64px !important; padding-bottom: 64px !important; }

  /* Hero */
  .nv-hero-inner { padding: 0 20px 180px !important; }
  .nv-hero-content { padding-top: 128px !important; max-width: 100% !important; }
  .nv-hero-eyebrow { font-size: 9.5px !important; letter-spacing: 0.09em !important; gap: 6px !important; white-space: nowrap !important; }
  .nv-hero-eyebrow::before { width: 14px !important; }
  /* Keep "Vous avez une mission ?" on a single line down to the narrowest
     phones — the general fluid clamp above still wraps it below ~430px. */
  .nv-hero-h1 { font-size: clamp(22px, calc(9.9vw - 4.88px), 44px) !important; }
  .nv-hero-h1 em { white-space: nowrap !important; }
  .nv-hero-cta-row { gap: 18px !important; margin-top: 40px !important; flex-direction: column !important; align-items: center !important; text-align: center; }
  .nv-hero-cta { padding: 12px 20px !important; font-size: 14px !important; }
  .nv-hero-bg { opacity: 0.3; left: 50% !important; top: auto !important; bottom: 0 !important; width: 130% !important; transform: translate(-50%, 0) !important; }
  .motion-ready [data-reveal],
  .motion-ready [data-motion-hero],
  .motion-ready [data-motion-page] { transform: translateY(8px); }
  .motion-ready .nv-reveal-stagger { transition-delay: calc(var(--reveal-order, 0) * 35ms); }
  .motion-ready .nv-motion-hero-wave { transform: translate(-50%, 0) !important; transition-duration: 500ms; }
  .motion-ready .nv-motion-hero-wave.is-revealed { opacity: .3; transform: translate(-50%, 0) !important; }
  .motion-ready .nv-impact-logos [data-reveal] { transition-delay: 0ms; }
  .motion-ready .nv-methode-grid.is-revealed .nv-method-step { transition-delay: calc(var(--reveal-order, 0) * 45ms); }

  /* Impact band */
  .nv-impact-inner { flex-wrap: wrap !important; flex-direction: column !important; align-items: center !important; gap: 22px !important; padding: 32px 20px !important; }
  .nv-impact-quote { max-width: 100% !important; font-size: 20px !important; text-align: center !important; }
  .nv-impact-logos { flex-wrap: nowrap !important; justify-content: center !important; width: 100% !important; gap: 14px !important; }
  .nv-impact-logos img { max-height: 34px !important; width: auto !important; max-width: 30% !important; object-fit: contain !important; }

  /* Grids → single column */
  .nv-probleme-grid { grid-template-columns: 1fr !important; gap: 36px !important; }
  .nv-criteres-grid { grid-template-columns: 1fr !important; margin-top: 36px !important; }
  .nv-expertise-grid { grid-template-columns: 1fr 1fr !important; gap: 14px !important; margin-top: 32px !important; }
  .nv-piliers-grid { grid-template-columns: 1fr !important; }
  .nv-methode-grid { grid-template-columns: 1fr !important; }
  .nv-linkedin-grid { grid-template-columns: 1fr !important; }
  .nv-aside { padding: 28px !important; }

  /* Footer */
  .nv-footer-inner { flex-direction: column; align-items: flex-start !important; }
}

/* ---------------- Mobile L and below — avoid awkward line break ---------------- */
@media (max-width: 425px) {
  .nv-methode-break { display: none; }

  /* Impact band — larger label logos, still on one line */
  .nv-impact-logos { gap: 8px !important; }
  .nv-impact-logos img { max-height: 44px !important; max-width: 33% !important; }
}

@media (max-width: 400px) {
  .nv-hero-h1 { font-size: clamp(22px, 8.5vw, 30px) !important; }
  .nv-hero-h1 em { white-space: normal !important; }
}
