/* 00-tokens.css */
/* Design tokens extracted from the source site (Elementor global kit + widget styles). */
:root {
  --brand-yellow: #fdc400;
  --brand-yellow-hover: #ffed5d;
  --color-text: #7a7a7a;
  --color-dark: #000000;
  --color-ink: #202020;
  --color-muted: #545454;
  --color-meta: #adadad;
  --color-grey-bg: #f0f0f0;
  --color-topbar-bg: #f6f6f6;
  --color-hairline: #e6e6e6;
  --color-hairline-soft: #efefef;
  --color-hairline-footer: #ececec;

  --font-display: "Raleway", "Helvetica Neue", Arial, sans-serif;
  --font-body: "Poppins", "Helvetica Neue", Arial, sans-serif;
  --font-ui: "Roboto", "Helvetica Neue", Arial, sans-serif;
  --font-system: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
    "Helvetica Neue", Arial, "Noto Sans", sans-serif;

  --container: 1140px;
  --container-wide: 1240px;
  --gutter: 10px;

  --shadow-header: 35px 12px 28px -16px rgba(0, 0, 0, 0.23);
  --shadow-card: 0 0 10px 0 rgba(0, 0, 0, 0.15);

  --ease: cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

/* 10-base.css */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  -webkit-text-size-adjust: 100%;
  scroll-behavior: smooth;
}

body {
  margin: 0;
  background: #fff;
  color: var(--color-text);
  font-family: var(--font-ui);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

img,
svg,
video,
iframe {
  max-width: 100%;
}

img {
  height: auto;
  border: 0;
  vertical-align: middle;
}

a {
  color: inherit;
  text-decoration: none;
}

button {
  font: inherit;
  color: inherit;
}

h1,
h2,
h3,
h4,
h5,
h6 {
  margin: 0;
  font-family: var(--font-ui);
  font-weight: 600;
  line-height: 1.2;
}

/* WordPress/hello-elementor keep the trailing paragraph margin; the source
   rhythm depends on it, so we do the same. */
p {
  margin: 0 0 0.9rem;
}

ul,
ol {
  margin: 0;
  padding: 0;
}

/* Mirrors Elementor's boxed container: fixed max-width, no padding of its own.
   The 10px gutters live on the inner "column" wrappers, exactly like the source. */
.container {
  width: 100%;
  max-width: var(--container);
  margin: 0 auto;
}

.container--wide {
  max-width: var(--container-wide);
}

.col {
  padding: var(--gutter);
}

.ico {
  display: inline-block;
  width: 1em;
  height: 1em;
  fill: currentColor;
  vertical-align: -0.125em;
  flex: none;
}

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 999;
  padding: 12px 20px;
  background: var(--brand-yellow);
  color: #000;
  font-family: var(--font-display);
  font-weight: 600;
}

.skip-link:focus {
  left: 0;
}

.visually-hidden {
  position: absolute !important;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

:focus-visible {
  outline: 2px solid var(--brand-yellow);
  outline-offset: 3px;
}

/* Section title with the yellow left rule, reused across pages. */
.rule-title {
  margin: 0;
  padding-left: 20px;
  border-left: 5px solid var(--brand-yellow);
  font-family: var(--font-display);
  font-size: 50px;
  font-weight: 700;
  line-height: 1;
  color: var(--color-dark);
}

@media (max-width: 767px) {
  .rule-title {
    font-size: 35px;
  }
}

/* 20-header.css */
.site-header {
  position: relative;
  z-index: 20;
}

/* ---------- Top bar ---------- */
.topbar {
  background: var(--color-topbar-bg);
  padding: 4px 0;
}

.topbar__inner {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 20px;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 10px;
}

.topbar__contact,
.topbar__sites {
  display: flex;
  flex-wrap: wrap;
  list-style: none;
  color: #2d2d2d;
}

.topbar__contact li,
.topbar__sites li {
  display: flex;
  align-items: center;
  position: relative;
}

.topbar__contact li {
  margin: 0 15px;
  font-family: var(--font-display);
  font-size: 12px;
  font-weight: 400;
  line-height: 1;
}

.topbar__contact {
  margin: 0 -15px;
}

.topbar__contact .ico {
  width: 14px;
  height: 14px;
  margin-right: 8px;
  color: var(--brand-yellow);
}

.topbar__contact li:not(:last-child)::after,
.topbar__sites li:not(:last-child)::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  border-left: 1px solid #000;
}

.topbar__contact li:not(:last-child)::after {
  right: -15px;
}

.topbar__sites {
  margin: 0 -20px;
}

.topbar__sites li {
  margin: 0 20px;
}

.topbar__sites li:not(:last-child)::after {
  right: -20px;
  border-left-color: #dadada;
}

.topbar__sites a {
  font-family: var(--font-display);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 1px;
  text-transform: uppercase;
  transition: color 0.3s;
}

.topbar__contact a:hover,
.topbar__sites a:hover {
  color: var(--brand-yellow);
}

/* ---------- Masthead ---------- */
.masthead {
  position: relative;
  z-index: 10;
  background: #fff;
  box-shadow: var(--shadow-header);
}

.masthead__inner {
  display: flex;
  align-items: center;
  max-width: var(--container-wide);
  min-height: 110px;
  margin: 0 auto;
}

.brand {
  display: block;
  flex: 0 0 19.957%;
  max-width: 19.957%;
  padding-left: 10px;
}

.brand picture {
  display: block;
  width: 60%;
}

.brand img {
  display: block;
  width: 100%;
  height: auto;
}

.nav {
  flex: 0 0 64.369%;
  max-width: 64.369%;
  display: flex;
  justify-content: center;
}

.nav__list {
  display: flex;
  list-style: none;
}

.nav__link {
  position: relative;
  display: flex;
  align-items: center;
  padding: 25px 20px;
  font-family: var(--font-display);
  font-size: 14px;
  font-weight: 500;
  line-height: 20px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #000;
  transition: color 0.3s;
}

/* Elementor "underline / slide" pointer */
.nav__link::after {
  content: "";
  position: absolute;
  left: 20px;
  right: 20px;
  bottom: 25px;
  height: 3px;
  background: var(--brand-yellow);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.3s var(--ease);
}

.nav__link:hover {
  color: var(--brand-yellow);
}

.nav__link:hover::after,
.nav__link:focus-visible::after {
  transform: scaleX(1);
}

.nav__link.is-active {
  color: #000;
}

.nav__link.is-active::after {
  background: transparent;
}

.masthead__cta {
  flex: 0 0 14.954%;
  max-width: 14.954%;
  display: flex;
  justify-content: center;
}

.menu-toggle {
  display: none;
  align-items: center;
  justify-content: center;
  width: 78px;
  padding: 6.25px;
  margin-left: auto;
  background: #fff;
  border: 0;
  color: #000;
  font-size: 25px;
  line-height: 37.5px;
  cursor: pointer;
  transition: color 0.3s;
}

.menu-toggle svg {
  width: 25px;
  height: 25px;
  display: block;
}

.menu-toggle__close {
  display: none;
}

.menu-toggle[aria-expanded="true"] {
  color: var(--brand-yellow);
}

.menu-toggle[aria-expanded="true"] .menu-toggle__open {
  display: none;
}

.menu-toggle[aria-expanded="true"] .menu-toggle__close {
  display: block;
}

/* ---------- Mobile menu ---------- */
.mobile-menu {
  position: absolute;
  /* Anchored just below the burger, like the source dropdown. */
  top: 75px;
  left: 0;
  right: 0;
  z-index: 9997;
  background: #fff;
  box-shadow: 0 10px 24px -14px rgba(0, 0, 0, 0.3);
}

.mobile-menu[hidden] {
  display: none;
}

.mobile-menu__list {
  list-style: none;
}

.mobile-menu .nav__link {
  justify-content: center;
  padding: 10px 20px;
  height: 40px;
  color: #33373d;
}

.mobile-menu .nav__link::after {
  display: none;
}

.mobile-menu .nav__link.is-active {
  background: #3f444b;
  color: #fff;
}

@media (max-width: 1024px) {
  .topbar__contact li,
  .topbar__sites a {
    font-size: 13px;
  }
}

@media (max-width: 767px) {
  .topbar {
    display: none;
  }

  .masthead__inner {
    align-items: center;
  }

  .brand {
    flex: 0 0 80%;
    max-width: 80%;
    align-self: flex-start;
    padding-top: 8px;
  }

  /* Prod width: 40% of the 80% brand column (10px padding, border-box) = 121px at 390. */
  .brand picture {
    width: 40%;
  }

  .brand img {
    width: 100%;
  }

  .nav,
  .masthead__cta {
    display: none;
  }

  .menu-toggle {
    display: flex;
    align-self: flex-start;
    margin-top: 28px;
  }
}

/* 30-components.css */
/* ---------- Buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-family: var(--font-display);
  font-size: 14px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 2px;
  text-transform: uppercase;
  text-align: center;
  border: 0;
  cursor: pointer;
  transition: background-color 0.3s, color 0.3s, box-shadow 0.3s, transform 0.2s;
}

.btn .ico {
  width: 1em;
  height: 1em;
}

.btn--primary {
  padding: 15px 30px;
  border-radius: 10px;
  background-image: linear-gradient(160deg, var(--brand-yellow) 0%, #fdc400 100%);
  color: var(--color-ink);
}

.btn--primary:hover {
  box-shadow: 0 6px 18px -8px rgba(253, 196, 0, 0.9);
  transform: translateY(-1px);
}

.btn--white {
  padding: 15px 30px;
  border-radius: 10px;
  background-image: linear-gradient(160deg, #fff 0%, #fff 100%);
  color: var(--color-ink);
  font-family: var(--font-body);
  font-size: 16px;
}

.btn--white:hover {
  box-shadow: 0 8px 20px -10px rgba(0, 0, 0, 0.5);
  transform: translateY(-1px);
}

/* Underlined text link used for "En savoir plus" / "Voir toutes les actualités" */
.btn--underline {
  padding: 0 0 10px;
  background: #fff;
  border-bottom: 1px solid currentColor;
  border-radius: 0;
  color: #000;
  letter-spacing: normal;
  flex-direction: row-reverse;
}

.btn--underline:hover {
  color: var(--brand-yellow);
}

.btn--underline .ico {
  width: 0.65em;
  height: 0.65em;
}

/* ---------- Page hero (inner pages) ---------- */
.page-hero {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 50vh;
  background-position: center center;
  background-size: cover;
  color: #fff;
}

.page-hero__overlay {
  position: absolute;
  inset: 0;
  background: #000;
}

.page-hero .container {
  position: relative;
}

.page-hero__inner {
  padding-right: 30%;
}

.page-hero__eyebrow {
  margin: 0 0 20px;
  line-height: 1;
  font-family: var(--font-display);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 5px;
  text-transform: uppercase;
  color: #fff;
}

.page-hero__title {
  margin: 0;
  padding-top: 20px;
  font-family: var(--font-display);
  font-size: 45px;
  font-weight: 900;
  line-height: 1.2;
  color: #fff;
}

@media (max-width: 1024px) {
  .page-hero {
    min-height: 800px;
    padding: 0 25px;
  }

  .page-hero__inner {
    padding: 40px;
  }
}

/* The press-review hero uses a bigger title and a taller box than Le Groupe. */
.page-hero--lg .page-hero__title {
  font-size: 70px;
}

@media (max-width: 767px) {
  .page-hero {
    min-height: 500px;
    padding: 0 20px;
  }

  .page-hero--lg {
    min-height: 612px;
  }

  .page-hero__inner {
    padding: 0;
  }

  .page-hero__title {
    font-size: 30px;
  }

  .page-hero--lg .page-hero__title {
    font-size: 39px;
  }
}

/* ---------- Post cards grid ---------- */
.posts-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 35px 30px;
  list-style: none;
}

/* The archive grid on the source has no gutters: the cards sit edge to edge. */
.posts-grid--flush {
  gap: 0;
}

.post-card {
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 100%;
  overflow: hidden;
  border-radius: 10px;
  background: #fff;
  box-shadow: var(--shadow-card);
  transition: box-shadow 0.25s;
}

.post-card:hover {
  box-shadow: 0 8px 26px 0 rgba(0, 0, 0, 0.22);
}

.post-card__thumb-link {
  display: block;
  position: relative;
  width: 100%;
  margin-bottom: 20px;
}

.post-card__thumb {
  position: relative;
  width: 100%;
  padding-bottom: 66%;
  overflow: hidden;
}

.post-card__thumb img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: filter 0.3s, transform 0.4s;
}

.post-card:hover .post-card__thumb img {
  transform: scale(1.04);
}

.post-card__badge {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 1;
  margin: 20px;
  padding: 0.6em 1.2em;
  border-radius: 999px;
  background: #61ce70;
  color: #fff;
  font-family: var(--font-ui);
  font-size: 12px;
  font-weight: 500;
  line-height: 1;
  text-transform: uppercase;
}

/* Home "actualités" teaser uses the brand yellow square badge. */
.posts-grid--brand .post-card__badge {
  border-radius: 5px;
  background: var(--brand-yellow);
  color: #000;
}

.post-card__text {
  display: flex;
  flex-direction: column;
  flex-grow: 1;
  margin-top: 20px;
  padding: 0 30px;
}

.post-card__title {
  margin: 0 0 25px;
  font-family: var(--font-ui);
  font-size: 21px;
  font-weight: 600;
  line-height: 1.2;
  color: #000;
}

.post-card__title a {
  transition: color 0.3s;
}

.post-card__title a:hover {
  color: var(--brand-yellow);
}

.post-card__more {
  align-self: flex-start;
  margin-top: auto;
  margin-bottom: 20px;
  font-family: var(--font-ui);
  font-size: 12px;
  font-weight: 500;
  line-height: 1.5;
  text-transform: uppercase;
  color: #61ce70;
}

.posts-grid--brand .post-card__more {
  color: var(--brand-yellow);
}

.post-card__more:hover {
  text-decoration: underline;
}

.post-card__meta {
  margin-top: auto;
  padding: 15px 30px;
  border-top: 1px solid #eaeaea;
  font-family: var(--font-ui);
  font-size: 12px;
  font-weight: 400;
  line-height: 1.3;
  color: var(--color-meta);
}

@media (max-width: 1024px) {
  .posts-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 767px) {
  .posts-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .post-card__thumb {
    padding-bottom: 50%;
  }
}

/* ---------- Reveal animations ---------- */
.reveal {
  opacity: 0;
}

.reveal.is-visible {
  opacity: 1;
}

.reveal--slide-up.is-visible {
  animation: slideInUp 1.25s both;
}

.reveal--fade.is-visible {
  animation: fadeIn 1.25s both;
}

@keyframes slideInUp {
  from {
    transform: translate3d(0, 100%, 0);
    visibility: visible;
  }
  to {
    transform: translate3d(0, 0, 0);
  }
}

@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }

  .reveal {
    opacity: 1;
  }

  .reveal.is-visible {
    animation: none !important;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.001ms !important;
    transition-duration: 0.001ms !important;
  }
}

/* 40-home.css */
/* ---------- Hero ---------- */
.hero {
  position: relative;
  background-position: top center;
  background-size: cover;
  background-repeat: no-repeat;
}

.hero__overlay {
  position: absolute;
  inset: 0;
  background: #000;
  opacity: 0.2;
}

.hero__inner {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 90vh;
  padding-top: 50px;
}

.hero__content {
  padding: 10px;
}

.divider {
  display: flex;
  align-items: center;
  padding: 5px 0;
}

.divider::before,
.divider::after {
  content: "";
  display: block;
  flex-grow: 1;
  border-top: 3px solid var(--brand-yellow);
}

.divider__text {
  flex-shrink: 0;
  max-width: 95%;
  margin: 0 10px;
  font-family: var(--font-display);
  font-size: 15px;
  font-weight: 400;
  line-height: 1;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #fff;
}

.hero__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: 65px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 1px;
  text-align: center;
  text-transform: uppercase;
  text-shadow: 0 0 10px rgba(0, 0, 0, 0.3);
  color: #fff;
}

@media (min-width: 1025px) {
  .hero {
    background-attachment: fixed;
  }
}

@media (max-width: 767px) {
  .hero__inner {
    min-height: 65vh;
    padding-top: 130px;
  }

  .divider {
    padding: 0;
  }

  .divider__text {
    font-size: 14px;
  }

  .hero__title {
    font-size: 30px;
    line-height: 1;
  }
}

/* ---------- Intro / Le Groupe ---------- */
.intro {
  margin: 100px 0;
}

.intro__grid {
  display: flex;
  flex-wrap: wrap;
}

.intro__col {
  width: 50%;
}

.intro__text {
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  height: 100%;
  padding: 0 7% 0 0;
}

.intro__body {
  margin-top: 20px;
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 300;
  line-height: 1.5;
  text-align: justify;
  color: #000;
}

.intro__cta {
  margin: 20px 0;
}

.counters {
  display: flex;
  margin-top: 30px;
}

.counter {
  flex: 1 1 0;
  display: flex;
  flex-direction: column;
  padding: 10px;
}

.counter__value {
  display: flex;
  justify-content: center;
  font-family: var(--font-body);
  font-size: 50px;
  font-weight: 600;
  line-height: 1;
  color: var(--brand-yellow);
}

.counter__label {
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-body);
  font-size: 15px;
  font-weight: 400;
  line-height: 2.5;
  text-align: center;
  color: #54595f;
}

.intro__media img {
  display: block;
  width: 100%;
  height: 600px;
  object-fit: cover;
  object-position: center center;
  border-radius: 15px;
  will-change: transform;
}

@media (max-width: 1024px) {
  .intro__col {
    width: 100%;
  }

  .intro__text {
    padding: 0 0 0 5%;
  }

  .counters {
    margin-top: 0;
    margin-bottom: 30px;
  }

  .intro__media img {
    width: 100%;
  }
}

@media (max-width: 767px) {
  .intro {
    margin: 100px 0 50px;
    padding: 0 5%;
  }

  .intro__text {
    padding: 0;
  }

  .counters {
    margin: 20px 0;
  }

  .counter__value {
    font-size: 40px;
  }

  .counter__label {
    line-height: 1.2;
  }

  .intro__media img {
    height: 200px;
  }
}

/* ---------- Filiales ---------- */
.filiales {
  background: var(--color-grey-bg);
  padding-bottom: 100px;
}

.filiales__head {
  padding: 10px;
}

.filiales__title {
  margin: 50px 0;
}

.filiales__grid {
  display: flex;
  flex-wrap: wrap;
}

.filiale {
  display: flex;
  width: 50%;
  padding: 5px;
}

.filiale__card {
  position: relative;
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  overflow: hidden;
  border-radius: 25px;
  background-position: center center;
  background-size: cover;
  transition: background 0.3s, box-shadow 0.3s;
}

.filiale__overlay {
  position: absolute;
  inset: 0;
  background: #000;
  opacity: 0.3;
  transition: background 0.3s, opacity 0.3s;
}

.filiale__card:hover .filiale__overlay {
  background: var(--filiale-hover, #000);
  opacity: 0.5;
}

.filiale__logo {
  position: relative;
  display: flex;
  justify-content: center;
  align-items: center;
  box-sizing: border-box;
  height: 104px;
  margin: 0 0 12px;
  padding: 16px 16px 0;
  line-height: 0;
}

.filiale__logo a,
.filiale__logo picture {
  display: flex;
  align-items: center;
  justify-content: center;
  width: min(260px, 100%);
  height: 80px;
}

.filiale__logo img {
  display: block;
  width: 100%;
  height: 100%;
  max-width: 100%;
  object-fit: contain;
  object-position: center;
}

.filiale__body {
  position: relative;
  display: flex;
  align-items: center;
  margin-top: auto;
  padding: 200px 10px 10px;
}

.filiale__info {
  flex: 0 0 71.833%;
  max-width: 71.833%;
  min-width: 0;
  padding: 10px;
}

.filiale--wide .filiale__info {
  flex-basis: 84%;
  max-width: 84%;
}

.filiale__name {
  margin: 0 0 20px;
  font-family: var(--font-body);
  font-size: 24px;
  font-weight: 500;
  line-height: 1;
  color: #fff;
}

.filiale--upper .filiale__name {
  text-transform: uppercase;
}

.filiale__baseline {
  margin: 0;
  font-family: var(--font-body);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.5;
  color: #fff;
}

/* Some baselines are wrapped in <p> on the source and therefore carry the
   theme's trailing paragraph margin; others are bare text. Card heights differ
   accordingly, so the distinction is preserved. */
.filiale__baseline p {
  margin: 0 0 0.9rem;
}

.filiale__arrow {
  flex: 0 0 28.084%;
  max-width: 28.084%;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: 10px;
  color: #fff;
}

.filiale--wide .filiale__arrow {
  flex-basis: 15.917%;
  max-width: 15.917%;
}

.filiale__arrow svg {
  width: 35px;
  height: 35px;
  transition: transform 0.3s;
}

.filiale__arrow:hover svg,
.filiale__card:hover .filiale__arrow svg {
  transform: scale(1.1);
}

@media (max-width: 767px) {
  .filiale {
    width: 100%;
  }

  /* The inner columns of the card stack, so the arrow drops below the text. */
  .filiale__body {
    flex-wrap: wrap;
  }

  .filiale__info,
  .filiale--wide .filiale__info,
  .filiale__arrow,
  .filiale--wide .filiale__arrow {
    flex-basis: 100%;
    max-width: 100%;
  }
}

/* ---------- News ---------- */
.news__head {
  margin: 50px 0;
  padding: 10px;
}

.news__grid-wrap {
  margin-bottom: 100px;
  padding: 10px;
}

.news__cta {
  margin-top: 50px;
  text-align: center;
}

/* 50-pages.css */
/* ---------- Le Groupe ---------- */
.history {
  margin: 100px 0 50px;
}

.history__block + .history__block {
  margin-top: 20px;
}

.history__title {
  margin: 0;
  padding-left: 20px;
  border-left: 5px solid var(--brand-yellow);
  font-family: var(--font-display);
  font-size: 40px;
  font-weight: 700;
  line-height: 1;
  color: #000;
}

/* `columns: 1` is what the source uses; it also keeps the trailing paragraph
   margin inside the block, which the vertical rhythm depends on. */
.history__text {
  columns: 1;
  margin-top: 35px;
  font-family: var(--font-display);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.5;
  text-align: justify;
  color: #000;
}

.timeline {
  margin-bottom: 100px;
}

.timeline__grid {
  display: flex;
  align-items: stretch;
}

.timeline__visual {
  width: 50%;
  background-size: cover;
  background-position: center;
}

.timeline__figure {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 50%;
  padding: 10px;
}

.timeline__img {
  display: block;
  width: 100%;
  height: auto;
  margin-left: 125px;
}

@media (max-width: 1024px) {
  .history {
    padding: 0 50px;
  }

  .timeline__img {
    margin-left: 40px;
  }
}

@media (max-width: 767px) {
  .history {
    padding: 0 25px;
  }

  .history__title {
    font-size: 25px;
  }

  .timeline__grid {
    flex-wrap: wrap;
  }

  .timeline__visual {
    width: 100%;
    min-height: 300px;
  }

  .timeline__figure {
    width: 100%;
    padding: 0;
  }

  .timeline__img {
    margin-left: 0;
    margin-top: 50px;
    padding-left: 20px;
  }
}

/* ---------- Contact ---------- */
.contact-hero {
  min-height: 300px;
  background-position: center center;
  background-repeat: no-repeat;
  background-size: cover;
  position: relative;
}

.contact-hero__overlay {
  position: absolute;
  inset: 0;
  background-image: linear-gradient(180deg, #ffffff 0%, rgba(0, 0, 0, 0) 31%);
  opacity: 0.51;
}

.contact-section {
  padding: 60px 0;
}

.container--form {
  max-width: 700px;
}

.form {
  display: flex;
  flex-wrap: wrap;
  margin: 0 -5px -10px;
}

.form__group {
  width: 100%;
  padding: 0 5px;
  margin-bottom: 10px;
}

.form__group--half {
  width: 50%;
}

.form__field {
  width: 100%;
  min-height: 47px;
  padding: 6px 16px;
  border: 1px solid #69727d;
  border-radius: 4px;
  background: #fff;
  font-family: var(--font-ui);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.4;
  color: var(--color-text);
  transition: border-color 0.2s, box-shadow 0.2s;
}

.form__field::placeholder {
  color: var(--color-text);
}

.form__field:focus {
  border-color: var(--brand-yellow);
  box-shadow: 0 0 0 3px rgba(253, 196, 0, 0.18);
  outline: none;
}

textarea.form__field {
  height: 92px;
  resize: vertical;
}

.form__consent {
  display: block;
  font-family: var(--font-ui);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.5;
  color: var(--color-text);
}

.form__consent input {
  float: left;
  margin: 3px 8px 0 0;
}

/* The source form reserves this space for a reCAPTCHA field; the static build
   relies on the Netlify Forms honeypot instead but keeps the same rhythm. */
.form__group--submit {
  margin-top: 78px;
}

.form__submit {
  width: 100%;
  min-height: 47px;
  padding: 15px 30px;
  border: 0;
  border-radius: 4px;
  background: var(--brand-yellow);
  color: #fff;
  font-family: var(--font-body);
  font-size: 18px;
  font-weight: 500;
  line-height: 1;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color 0.3s;
}

.form__submit:hover {
  background: var(--brand-yellow-hover);
}

.form__honeypot {
  position: absolute !important;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.form__status {
  width: 100%;
  margin-top: 16px;
  padding: 14px 18px;
  border-radius: 3px;
  font-family: var(--font-ui);
  font-size: 14px;
}

.form__status[hidden] {
  display: none;
}

.form__status--ok {
  background: #f4fbef;
  border: 1px solid #b9e0a0;
  color: #2f6a18;
}

.form__status--error {
  background: #fdf2f2;
  border: 1px solid #f0c0c0;
  color: #a22b2b;
}

@media (max-width: 767px) {
  .form__group--half {
    width: 100%;
  }
}

/* ---------- Archive ---------- */
.archive {
  margin: 50px 0;
}

.archive__empty {
  font-family: var(--font-display);
  color: #000;
}

/* ---------- Single post ---------- */
.post {
  margin: 50px 0;
}

.post__inner {
  padding: 60px;
  background: #fff;
}

.post__title {
  margin: 0 0 50px;
  font-family: var(--font-display);
  font-size: 60px;
  font-weight: 700;
  line-height: 1;
  color: #000;
}

.post__meta {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 15px 0;
  border-top: 1px dotted #afafaf;
  border-bottom: 1px dotted #afafaf;
  font-family: var(--font-ui);
  font-size: 13px;
  font-weight: 300;
  color: #54595f;
}

.post__meta .ico {
  width: 13px;
  height: 13px;
}

.post__featured {
  margin: 20px 0;
}

.post__featured img {
  display: block;
  width: 100%;
  height: auto;
}

.post__body {
  font-family: var(--font-ui);
  font-size: 16px;
  /* em unit so descendants inherit the computed 33.6px, as on the source. */
  line-height: 2.1em;
  color: var(--color-text);
}

.post__body h2,
.post__body h3,
.post__body h4 {
  margin: 1.4em 0 0.6em;
  font-family: var(--font-display);
  color: #000;
  line-height: 1.3;
}

.post__body h2 {
  font-size: 30px;
}

.post__body h3 {
  font-size: 24px;
}

.post__body p {
  margin: 0 0 1.2em;
}

.post__body ul,
.post__body ol {
  margin: 0 0 1.2em;
  padding-left: 1.4em;
  list-style: revert;
}

.post__body a {
  color: var(--brand-yellow);
  text-decoration: underline;
}

.post__body figure {
  margin: 1.6em 0;
}

.post__body figure img {
  display: block;
  width: 100%;
  height: auto;
}

.post__body figcaption {
  margin-top: 8px;
  font-size: 13px;
  line-height: 1.5;
  color: #8c8c8c;
  text-align: center;
}

.post__body video,
.post__body iframe {
  display: block;
  width: 100%;
  border: 0;
}

.post__body .wp-block-gallery {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  padding: 0;
}

.post__body .wp-block-gallery figure {
  margin: 0;
}

.post__body .wp-block-gallery img {
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: 4px;
  transition: transform 0.35s var(--ease), box-shadow 0.35s;
}

.post__body .wp-block-gallery a:hover img {
  transform: scale(1.02);
  box-shadow: 0 10px 24px -12px rgba(0, 0, 0, 0.5);
}

.post__body .wp-block-file {
  margin: 0 0 1.2em;
  font-size: 0.8em;
}

.post__body .wp-block-file__embed {
  display: block;
  width: 100%;
  height: 1000px;
  margin-bottom: 1em;
  border: 0;
}

.post__body .wp-block-file__button {
  display: inline-block;
  margin-left: 0.75em;
  padding: calc(0.667em + 2px) calc(1.333em + 2px);
  border-radius: 9999px;
  background: #32373c;
  color: #fff;
  text-decoration: none;
  font-size: 1em;
  line-height: 1.5;
}

.post__body .wp-block-file__button:hover {
  background: var(--brand-yellow);
  color: #000;
}

.post__share {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 30px;
}

.share-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  width: 196px;
  max-width: 100%;
  height: 40px;
  padding: 0 14px;
  color: #fff;
  font-family: var(--font-ui);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.3px;
  text-transform: uppercase;
  transition: filter 0.2s;
}

.share-btn:hover {
  filter: brightness(1.12);
}

.share-btn svg {
  width: 1.2em;
  height: 1.2em;
}

.share-btn--facebook {
  background: #3b5998;
}

.share-btn--twitter {
  background: #1da1f2;
}

.share-btn--linkedin {
  background: #0077b5;
}

.post__rule {
  margin: 50px 0 30px;
  border: 0;
  border-top: 1px dotted #afafaf;
}

@media (max-width: 767px) {
  .post__inner {
    padding: 0;
  }

  .post__title {
    font-size: 33px;
  }

  .post__body .wp-block-gallery {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .post__body .wp-block-file__embed {
    height: 520px;
  }
}

/* ---------- Legal / simple content pages ----------
   These are rendered by the WordPress theme on the source, not by Elementor:
   they use the system font stack and the theme's default rhythm. */
.simple-page {
  padding: 8px 0 16px;
  font-family: var(--font-system);
}

.simple-page__header {
  margin-bottom: 16px;
}

.simple-page__title {
  margin: 0;
  font-family: var(--font-system);
  font-size: 40px;
  font-weight: 500;
  line-height: 1.2;
  color: #1f1f1f;
}

.simple-page__body {
  font-family: var(--font-system);
  font-size: 16px;
  line-height: 1.5;
  color: var(--color-text);
}

.simple-page__body h2 {
  margin: 1.6em 0 0.6em;
  font-family: var(--font-system);
  font-size: 27px;
  font-weight: 500;
  color: #1f1f1f;
}

.simple-page__body h3 {
  margin: 1.4em 0 0.6em;
  font-size: 22px;
  font-weight: 500;
  color: #1f1f1f;
}

.simple-page__body h4,
.simple-page__body h5 {
  margin: 1.2em 0 0.5em;
  font-size: 17px;
  font-weight: 600;
  color: #1f1f1f;
}

.simple-page__body p {
  margin: 0 0 0.9rem;
}

.simple-page__body ul,
.simple-page__body ol {
  margin: 0;
  padding-left: 40px;
  list-style: revert;
}

.simple-page__body a {
  color: var(--brand-yellow);
  text-decoration: underline;
}

.simple-page__body table {
  width: 100%;
  margin: 0 0 1.4em;
  border-collapse: collapse;
  font-size: 14px;
}

.simple-page__body td,
.simple-page__body th {
  padding: 8px 10px;
  border: 1px solid #e6e6e6;
  text-align: left;
  vertical-align: top;
}

.simple-page__body pre,
.simple-page__body .wp-block-code {
  margin: 16px 0;
  padding: 0;
  font-family: monospace;
  font-size: 16px;
  line-height: 1.5;
  white-space: pre-wrap;
  word-break: break-word;
  color: #333;
}

.simple-page__body a {
  color: #c36;
  text-decoration: underline;
}

.simple-page__body strong,
.simple-page__body b {
  font-weight: 700;
}

/* ---------- Cookie policy (Complianz document) ----------
   Compact re-implementation of the plugin's document stylesheet, limited to
   what this page actually renders. */
.cmplz-document {
  max-width: 800px;
  font-size: 14px;
  line-height: 1.5;
}

.cmplz-document h2 {
  margin: 15px 0 10px;
  font-size: 22px;
  font-weight: 500;
  line-height: 1.2;
}

.cmplz-document h3 {
  margin: 0;
  font-size: 18px;
  font-weight: 500;
  line-height: 1.2;
}

.cmplz-document h4 {
  margin: 5px 0;
  font-size: 15px;
  font-weight: 500;
  line-height: 1.2;
}

.cmplz-document h5 {
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.4;
}

.cmplz-document p {
  margin: 0 0 14.4px;
}

.cmplz-document ul {
  margin: 0 0 15px 15px;
  padding-left: 25px;
}

.cmplz-hidden,
.screen-reader-text {
  display: none !important;
}

.cmplz-dropdown {
  margin-bottom: 5px;
  border: 1px solid #f1f1f1;
  background: #fafafa;
}

.cmplz-dropdown summary {
  display: block;
  padding: 12px 15px;
  cursor: pointer;
  list-style: none;
}

.cmplz-dropdown summary::-webkit-details-marker {
  display: none;
}

.cmplz-dropdown summary > div {
  display: grid;
  grid-template-columns: 2fr auto 25px;
  grid-gap: 15px;
  align-items: center;
}

.cmplz-dropdown summary > div::after {
  content: "";
  width: 12px;
  height: 12px;
  margin-left: auto;
  border-right: 2px solid #555;
  border-bottom: 2px solid #555;
  transform: rotate(45deg) translate(-3px, -3px);
  transition: transform 0.2s;
}

.cmplz-dropdown[open] summary > div::after {
  transform: rotate(-135deg) translate(-3px, -3px);
}

.cmplz-dropdown summary > div p {
  margin: 0;
  text-align: right;
  color: #555;
}

.cmplz-service-description,
.cmplz-sharing-data {
  display: inline-block;
  width: calc(50% - 35px);
  padding: 0 15px 10px;
  vertical-align: top;
}

.cookies-per-purpose {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 4px 15px;
  padding: 10px 15px 15px;
}

.cookies-per-purpose .purpose {
  grid-column: 1 / -1;
}

.cookies-per-purpose .name,
.cookies-per-purpose .retention,
.cookies-per-purpose .function {
  overflow-wrap: anywhere;
}

.cmplz-manage-consent-container {
  margin: 10px 0 20px;
}

@media (max-width: 767px) {
  .cmplz-service-description,
  .cmplz-sharing-data {
    display: block;
    width: 100%;
  }

  .cookies-per-purpose {
    grid-template-columns: 1fr;
  }
}

/* ---------- 404 ---------- */
.notfound {
  padding: 120px 0;
  text-align: center;
}

.notfound__title {
  margin: 0 0 16px;
  font-family: var(--font-display);
  font-size: 50px;
  font-weight: 700;
  color: #000;
}

.notfound__text {
  margin: 0 0 30px;
  font-family: var(--font-body);
  font-size: 16px;
}

@media (max-width: 767px) {
  .notfound {
    padding: 70px 0;
  }

  .notfound__title {
    font-size: 32px;
  }

  .simple-page__title {
    font-size: 30px;
  }
}

/* ---------- Gallery lightbox ---------- */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 40px 60px 70px;
  background: rgba(0, 0, 0, 0.92);
}

.lightbox__img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.lightbox__close,
.lightbox__nav {
  position: absolute;
  border: 0;
  background: transparent;
  color: #fff;
  cursor: pointer;
  line-height: 1;
}

.lightbox__close {
  top: 16px;
  right: 24px;
  font-size: 40px;
}

.lightbox__nav {
  top: 50%;
  transform: translateY(-50%);
  padding: 20px;
  font-size: 28px;
}

.lightbox__nav--prev {
  left: 4px;
}

.lightbox__nav--next {
  right: 4px;
}

.lightbox__count {
  position: absolute;
  bottom: 24px;
  left: 0;
  right: 0;
  margin: 0;
  color: #fff;
  font-family: var(--font-ui);
  font-size: 13px;
  text-align: center;
}

@media (max-width: 767px) {
  .lightbox {
    padding: 50px 10px 60px;
  }
}

/* 60-footer.css */
.cta-band {
  position: relative;
  padding: 120px 0;
  background-color: var(--brand-yellow);
  background-position: center center;
  background-size: cover;
}

.cta-band__overlay {
  position: absolute;
  inset: 0;
  background: var(--brand-yellow);
  opacity: 0.8;
}

.cta-band__inner {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
}

.cta-band__title {
  margin: 0;
  font-family: var(--font-body);
  font-size: 40px;
  font-weight: 600;
  line-height: 1;
  text-align: center;
  color: #000;
}

@media (max-width: 767px) {
  .cta-band__title {
    font-size: 30px;
  }
}

.site-footer {
  border-top: 1px solid var(--color-hairline);
  background: #fff;
}

/* Shared footer: 1 col <768, 2 cols 768–1024, 4 cols >=1025.
   Order: logo + Suivez-nous, Contact, Horaires, Nos références. */
.footer-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 32px 28px;
  padding: 48px 0 40px;
}

.footer-col {
  min-width: 0;
  padding: 0 10px;
}

.footer-logo {
  display: inline-block;
  max-width: 100%;
  margin: 0 0 20px;
  line-height: 0;
}

.footer-logo picture {
  display: inline-block;
  max-width: 100%;
  line-height: 0;
}

.footer-logo img {
  display: block;
  width: auto;
  height: 56px;
  max-width: min(180px, 100%);
  object-fit: contain;
}

.footer-title {
  margin: 0 0 14px;
  font-family: var(--font-display);
  font-size: 18px;
  font-weight: 700;
  line-height: 1.3;
  color: #000;
}

.footer-text,
.ref-list,
.copyright,
.legal-links {
  font-family: var(--font-ui);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.6;
}

.footer-text {
  color: var(--color-muted);
}

.footer-text p {
  margin: 0 0 0.35em;
}

.footer-text p:last-child {
  margin-bottom: 0;
}

.footer-company strong {
  color: #000;
  font-weight: 700;
}

.footer-address,
.footer-email,
.footer-email a {
  overflow-wrap: anywhere;
}

.footer-text a {
  transition: color 0.3s;
}

.footer-text a:hover {
  color: var(--brand-yellow);
}

.socials {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  list-style: none;
}

.social {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #fdc400;
  color: #000;
  transition: transform 0.3s, background-color 0.3s, color 0.3s;
}

.social svg {
  width: 16px;
  height: 16px;
}

.social:hover {
  transform: translateY(-2px);
  background: #000;
  color: #fdc400;
}

.ref-list {
  list-style: none;
  color: var(--color-muted);
}

.ref-list li {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  padding: 8px 0;
  border-bottom: 1px solid var(--color-hairline-soft);
}

.ref-list li span {
  min-width: 0;
  overflow-wrap: break-word;
}

.ref-list .ico {
  width: 14px;
  height: 14px;
  margin-top: 0.28em;
  /* #FDC400 on white is ~1.6:1. This darker gold is ~4.4:1. */
  color: #9a7200;
}

.footer-bottom {
  border-top: 1px solid var(--color-hairline-footer);
}

.footer-bottom__inner {
  max-width: var(--container);
  margin: 0 auto;
  padding: 16px 16px 20px;
  text-align: center;
}

.copyright {
  margin: 0 0 0.35rem;
  text-align: center;
  color: var(--color-text);
}

.legal-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  margin: 0;
  list-style: none;
  color: var(--color-text);
}

.legal-links li {
  display: inline-flex;
  align-items: center;
}

.legal-links li:not(:last-child)::after {
  content: "·";
  margin: 0 0.45em;
}

.legal-links a {
  transition: color 0.3s;
}

.legal-links a:hover {
  color: var(--brand-yellow);
}

@media (max-width: 767px) {
  .footer-logo img {
    height: 44px;
  }
}

@media (min-width: 768px) {
  .footer-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* References stay a single column below 1025px and split in two from there.
   The references column is wider so those two columns can hold the existing lines. */
@media (min-width: 1025px) {
  .footer-grid {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr) minmax(0, 1.15fr) minmax(280px, 1.8fr);
  }

  .ref-list {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 28px;
    align-content: start;
  }
}
