html {
  scroll-padding-top: 6rem;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}

body {
  width: 100%;
  overflow-x: hidden;
}

@supports (overflow: clip) {
  body {
    overflow-x: clip;
  }
}

img {
  max-width: 100%;
}

main,
main > section,
.header-inner,
.footer-inner,
.hero-inner,
.manifesto-inner,
.programmes-inner,
.moments-inner,
.network-inner,
.leadership-inner,
.recognition-inner,
.support-inner,
.about-hero-clean-inner,
.about-origin-inner,
.about-commitments-inner,
.about-purpose-inner,
.about-leader-inner,
.about-cta-inner,
.contact-hero-inner,
.contact-body-inner,
.contact-location-inner {
  min-width: 0;
}

a,
button,
input,
select,
textarea {
  touch-action: manipulation;
}

.site-header {
  width: 100%;
  background: rgba(255, 255, 255, 0.98);
}

.mobile-menu {
  overscroll-behavior: contain;
}

.hero-image,
.about-hero-image,
.network-image,
.moments-gallery figure,
.recognition-certificate {
  background: #dde4ed;
}

.hero-image img,
.about-hero-image img,
.network-image img,
.moments-gallery img,
.recognition-certificate img {
  filter: saturate(0.86) contrast(1.055);
}

.about-hero-image img,
.network-image img {
  object-position: 50% 46%;
}

.moments-gallery {
  align-items: start;
}

.moments-gallery figure {
  overflow: hidden;
}

.moments-gallery figcaption {
  background: var(--white);
}

.support {
  position: relative;
  overflow: hidden;
  border-top: 0.6rem solid var(--yellow);
}

.support::before {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(44rem, 46vw);
  content: "";
  background-image:
    linear-gradient(90deg, var(--blue) 0%, rgba(22, 83, 164, 0.62) 38%, rgba(8, 36, 84, 0.76) 100%),
    url("assets/conference-selfie.jpeg");
  background-position: center, 50% 38%;
  background-size: cover;
  filter: saturate(0.7) contrast(1.08);
}

.support-inner {
  position: relative;
  z-index: 1;
}

.about-purpose::before {
  display: block;
  width: 100%;
  max-width: 100rem;
  height: clamp(15rem, 25vw, 23rem);
  margin-inline: auto;
  border-top: 0.55rem solid var(--yellow);
  content: "";
  background-color: #8798ad;
  background-image:
    linear-gradient(90deg, rgba(8, 36, 84, 0.18), rgba(22, 83, 164, 0.06)),
    url("assets/hero-community.jpeg");
  background-position: center, 50% 27%;
  background-size: cover;
  background-blend-mode: multiply, normal;
}

.contact-intro-panel {
  min-height: 27rem;
}

.contact-direct {
  min-width: 0;
}

.contact-location {
  position: relative;
  overflow: hidden;
  background: var(--navy);
}

.contact-location::before {
  position: absolute;
  inset: 0;
  content: "";
  background-image:
    linear-gradient(90deg, rgba(8, 36, 84, 0.97) 0%, rgba(8, 36, 84, 0.88) 54%, rgba(8, 36, 84, 0.55) 100%),
    url("assets/conference-room.jpeg");
  background-position: center, 50% 48%;
  background-size: cover;
  filter: saturate(0.68) contrast(1.08);
}

.contact-location-inner {
  position: relative;
  z-index: 1;
}

.contact-fields input,
.contact-fields select,
.contact-fields textarea {
  min-width: 0;
  font-size: 1rem;
}

.contact-fields input:focus-visible,
.contact-fields select:focus-visible,
.contact-fields textarea:focus-visible {
  outline: 3px solid rgba(242, 185, 27, 0.7);
  outline-offset: 3px;
}

.footer-nav {
  grid-template-columns: repeat(2, minmax(0, auto));
}

.back-to-top {
  right: max(clamp(1rem, 2vw, 2rem), env(safe-area-inset-right));
  bottom: max(clamp(1rem, 2vw, 2rem), env(safe-area-inset-bottom));
}

@media (hover: hover) and (pointer: fine) {
  .about-hero-image img,
  .network-image img,
  .moments-gallery img {
    transition: transform 650ms cubic-bezier(0.2, 0.7, 0.2, 1), filter 300ms ease;
  }

  .about-hero-image:hover img,
  .network-image:hover img,
  .moments-gallery figure:hover img {
    transform: scale(1.018);
    filter: saturate(0.96) contrast(1.04);
  }
}

@media (pointer: coarse) {
  .hero-image:hover img,
  .about-hero-image:hover img,
  .network-image:hover img,
  .moments-gallery figure:hover img {
    transform: none;
  }

  .reveal-ready .reveal-item {
    opacity: 1;
    transform: none;
    transition: none;
  }
}

@media (max-width: 1050px) {
  .mobile-menu {
    max-height: calc(100svh - 5.9rem);
    overflow-y: auto;
  }

  .support::before {
    width: 52vw;
  }
}

@media (max-width: 900px) {
  .contact-body-inner {
    grid-template-columns: 1fr;
  }

  .contact-direct {
    min-height: 0;
  }

  .contact-direct dl {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 2rem;
  }

  .contact-placeholder-note {
    margin-top: 2rem;
  }
}

@media (max-width: 760px) {
  html {
    scroll-padding-top: 5.2rem;
  }

  .mobile-menu {
    max-height: calc(100svh - 5.2rem);
    padding-bottom: calc(1.25rem + env(safe-area-inset-bottom));
  }

  .mobile-menu a {
    min-width: 0;
    min-height: 3.9rem;
    overflow-wrap: anywhere;
  }

  .image-frame {
    height: auto;
    aspect-ratio: 4 / 5;
  }

  .image-frame img {
    object-position: 50% 29%;
  }

  .about-purpose::before {
    height: auto;
    aspect-ratio: 4 / 3;
    background-position: center, 50% 28%;
  }

  .support::before {
    width: 100%;
    opacity: 0.3;
    background-image:
      linear-gradient(180deg, rgba(22, 83, 164, 0.82), rgba(8, 36, 84, 0.96)),
      url("assets/conference-selfie.jpeg");
  }

  .contact-hero h1,
  html[lang="fr"] .contact-hero h1 {
    max-width: 11ch;
    font-size: clamp(3rem, 13.5vw, 4.6rem);
  }

  .contact-intro-panel {
    min-height: 0;
    gap: 3.25rem;
  }

  .contact-intro-panel p {
    margin: 0;
  }

  .contact-direct {
    min-height: 0;
  }

  .contact-direct dl {
    grid-template-columns: 1fr;
    margin-top: 2.75rem;
  }

  .contact-location::before {
    background-image:
      linear-gradient(180deg, rgba(8, 36, 84, 0.94), rgba(8, 36, 84, 0.78)),
      url("assets/conference-room.jpeg");
  }

  .footer-nav {
    width: 100%;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem 1.5rem;
  }

  .footer-nav a {
    overflow-wrap: anywhere;
  }

  .back-to-top {
    right: max(1rem, env(safe-area-inset-right));
    bottom: max(1rem, env(safe-area-inset-bottom));
  }
}

@media (max-width: 370px) {
  html[lang="fr"] .hero h1 {
    font-size: 2.55rem;
  }

  .contact-hero h1,
  html[lang="fr"] .contact-hero h1 {
    font-size: 2.85rem;
  }

  .language-switch [data-language-button] {
    min-width: 2.2rem;
  }

  .header-actions {
    gap: 0.45rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .hero-image img,
  .about-hero-image img,
  .network-image img,
  .moments-gallery img {
    transform: none !important;
    transition: none !important;
  }
}
