/* ============================================================
   HIGH CONTRAST THEME — Palette claire (WCAG 2.1 AA/AAA)
   À charger après style.css
   Active : body.classList.add("is-high-contrast")
   Palette :
     Fond principal     #F9FAFB
     Fond secondaire    #F3F4F6
     Texte principal    #111827
     Texte secondaire   #4B5563
     Accent             #2563EB
     Accent Hover       #1E40AF
     Erreur             #DC2626
     Succès             #15803D
============================================================ */

/* ------------------------------
   0. Variables & base
------------------------------ */

body.is-high-contrast {
    --color-night: #f9fafb;
    --color-text: #111827;
    --color-muted: #4b5563;
    --color-border: #e5e7eb;
    --hc-surface: #f3f4f6;
    --hc-accent: #2563eb;
    --hc-accent-hover: #1e40af;
    --hc-border: #e5e7eb;
    --hc-error: #dc2626;
    --hc-success: #15803d;
  
    background: #f9fafb;
    color: var(--color-text);
  }
  
  body.is-high-contrast::before {
    opacity: 0.08;
  }

  body.is-high-contrast,
  body.is-high-contrast * {
    scrollbar-width: thin;
    scrollbar-color: rgba(17, 24, 39, 0.34) transparent;
  }

  body.is-high-contrast *::-webkit-scrollbar {
    width: 1.5px;
    height: 1.5px;
  }

  body.is-high-contrast *::-webkit-scrollbar-track {
    background: transparent;
  }

  body.is-high-contrast *::-webkit-scrollbar-thumb {
    background: rgba(17, 24, 39, 0.34);
    border-radius: 999px;
  }
  
  /* Sections principales (fond clair dégradé) */
  body.is-high-contrast .site-header,
  body.is-high-contrast .hero,
  body.is-high-contrast .manifesto,
  body.is-high-contrast .audience,
  body.is-high-contrast .coverflow,
  body.is-high-contrast .services,
  body.is-high-contrast .process,
  body.is-high-contrast .team.about,
  body.is-high-contrast .metrics,
  body.is-high-contrast .testimonials,
  body.is-high-contrast .image-carousel,
  body.is-high-contrast .contact {
    background: linear-gradient(180deg, #f9fafb 0%, #f3f4f6 100%);
  }

  /* Désactive les vidéos de fond et leurs voiles en mode contraste */
  body.is-high-contrast .hero__bg-video,
  body.is-high-contrast .manifesto__bg-video,
  body.is-high-contrast .process__bg-video,
  body.is-high-contrast .metrics__bg-video {
    display: none !important;
  }

  body.is-high-contrast .hero__background::after,
  body.is-high-contrast .manifesto__background::after,
  body.is-high-contrast .process__background::after,
  body.is-high-contrast .metrics__background::after {
    display: none !important;
  }

  body.is-high-contrast .hero__background,
  body.is-high-contrast .hero__light,
  body.is-high-contrast .hero__mist {
    display: none !important;
  }

  body.is-high-contrast .hero__title {
    color: var(--color-text);
    text-shadow: none;
  }

  body.is-high-contrast .hero__title-letter,
  body.is-high-contrast .hero__title-word {
    color: var(--color-text);
    text-shadow: none;
  }

  body.is-high-contrast .hero__eyebrow {
    color: var(--color-muted);
  }

  body.is-high-contrast .hero__lead {
    color: var(--color-text);
  }

  body.is-high-contrast .scroll-cue {
    color: var(--color-muted);
  }

  body.is-high-contrast .scroll-cue__circle {
    border-color: var(--hc-border);
    background: #fff;
  }

  body.is-high-contrast .scroll-cue__dot {
    background: var(--hc-accent);
  }

  body.is-high-contrast .manifesto__background,
  body.is-high-contrast .process__background,
  body.is-high-contrast .metrics__background {
    display: none !important;
  }

  body.is-high-contrast .letter-rain-text {
    color: var(--color-text);
    text-shadow: none;
  }

  body.is-high-contrast .letter-rain-text .t-gradient .letter-rain-text__char {
    background: none;
    -webkit-background-clip: initial;
    background-clip: initial;
    color: var(--color-text);
    text-shadow: none;
  }
  
  /* ------------------------------
     1. Header & navigation
  ------------------------------ */
  
  body.is-high-contrast .site-header {
    border-bottom: 1px solid var(--hc-border);
    backdrop-filter: blur(18px);
  }
  
body.is-high-contrast .site-logo,
body.is-high-contrast .site-logo__name,
body.is-high-contrast .site-nav a {
  color: var(--color-text);
}

/* Logos EOS : passer du blanc au noir en mode high-contrast */
body.is-high-contrast .logo-eos path {
  fill: none !important;
  stroke: var(--color-text) !important;
}

body.is-high-contrast .site-logo__img {
  filter: brightness(0) saturate(100%);
}
  
  body.is-high-contrast .site-nav a::after {
    background: var(--hc-accent);
  }
  
body.is-high-contrast .site-nav a:hover,
body.is-high-contrast .site-nav a:focus-visible {
  color: var(--hc-accent);
}

body.is-high-contrast .site-nav a.is-active {
  color: var(--hc-accent);
}

body.is-high-contrast .site-nav a.is-active::after {
  transform: scaleX(1);
  transform-origin: left;
}

body.is-high-contrast .nav-link {
  color: var(--color-text);
}

body.is-high-contrast .nav-link:hover,
body.is-high-contrast .nav-link:focus-visible,
body.is-high-contrast .nav-link.is-active {
  color: var(--hc-accent);
}

body.is-high-contrast .btn-contact {
  border-color: var(--hc-accent);
  color: var(--color-text);
  /* background: var(--hc-surface); */
}

body.is-high-contrast .btn-contact:hover,
body.is-high-contrast .btn-contact:focus-visible {
  color: var(--hc-accent);
  /* box-shadow: 0 12px 30px rgba(37, 99, 235, 0.18); */
}

body.is-high-contrast .mega-menu {
  background: rgba(255, 255, 255, 0.96);
  border: 1px solid var(--hc-border);
  box-shadow: 0 24px 60px rgba(15, 23, 42, 0.16);
}

body.is-high-contrast .mega-column h4 {
  color: var(--color-muted);
}

body.is-high-contrast .mega-column a {
  color: var(--color-text);
}

body.is-high-contrast .mega-column a:hover,
body.is-high-contrast .mega-column a:focus-visible {
  color: var(--hc-accent);
}

  body.is-high-contrast .site-nav.is-open {
    background: rgba(255, 255, 255, 0.92);
    border: 1px solid var(--hc-border);
    box-shadow: 0 20px 60px rgba(15, 23, 42, 0.16);
  }
  
  /* Toggle menu mobile */
  body.is-high-contrast .site-menu-toggle {
    border-color: var(--hc-border);
    background: var(--hc-surface);
    color: var(--color-text);
  }

  body.is-high-contrast .site-menu-toggle[aria-expanded="true"] {
    border-color: var(--hc-accent);
    color: var(--hc-accent);
    box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.18);
  }
  
  body.is-high-contrast .site-menu-toggle:hover,
  body.is-high-contrast .site-menu-toggle:focus-visible {
    border-color: var(--hc-accent);
    color: var(--hc-accent);
  }
  
  /* Icône du burger */
  body.is-high-contrast .site-menu-toggle__icon {
    border-color: var(--hc-border);
    color: var(--color-text);
  }
  
  /* Chips (eyebrows, tags header) */
  body.is-high-contrast .site-chip {
    border-color: var(--hc-border);
    color: var(--color-text);
    background: var(--hc-surface);
  }
  
  body.is-high-contrast .site-chip:hover,
  body.is-high-contrast .site-chip:focus-visible {
    border-color: var(--hc-accent);
    color: var(--hc-accent);
  }
  
  /* ------------------------------
     2. Boutons génériques
  ------------------------------ */
  
  body.is-high-contrast .btn {
    border-color: var(--hc-border);
    color: var(--color-text);
    background: var(--hc-surface);
    box-shadow: none;
  }
  
  body.is-high-contrast .btn:hover,
  body.is-high-contrast .btn:focus-visible {
    border-color: var(--hc-accent);
    color: var(--hc-accent);
    /* box-shadow: 0 18px 30px rgba(37, 99, 235, 0.15); */
  }
  
  /* CTA principal */
  body.is-high-contrast .btn--primary {
    color: #fff;
    background: linear-gradient(120deg, var(--hc-accent), var(--hc-accent-hover));
    border-color: transparent;
    /* box-shadow: 0 15px 30px rgba(37, 99, 235, 0.35); */
  }
  
  body.is-high-contrast .btn--primary:hover,
  body.is-high-contrast .btn--primary:focus-visible {
    color: #fff;
    border-color: transparent;
    /* box-shadow: 0 18px 38px rgba(30, 64, 175, 0.35); */
  }
  
  /* Bouton fantôme */
  body.is-high-contrast .btn--ghost {
    background: var(--hc-surface);
  }
  
  /* ------------------------------
     3. Focus visible (accessibilité)
  ------------------------------ */
  
  body.is-high-contrast *:focus-visible {
    outline: 3px solid var(--hc-accent);
    outline-offset: 4px;
  }
  
  /* On évite que les styles existants suppriment l’outline */
  body.is-high-contrast [class*="__btn"]:focus-visible,
  body.is-high-contrast a:focus-visible,
  body.is-high-contrast button:focus-visible {
    outline: 3px solid var(--hc-accent);
    outline-offset: 4px;
  }
  
  /* ------------------------------
     4. Cartes audience / sliders
  ------------------------------ */
  
  body.is-high-contrast .audience-slider__viewport {
    background: linear-gradient(180deg, var(--color-night), var(--hc-surface));
    border-color: var(--hc-border);
  }
  
  body.is-high-contrast .audience-card {
    background: var(--hc-surface);
    border-color: var(--hc-border);
    filter: none;
    /* box-shadow: 0 10px 40px rgba(15, 23, 42, 0.12); */
  }
  
  body.is-high-contrast .audience-card::before {
    background: linear-gradient(135deg, rgba(17, 24, 39, 0.04), rgba(17, 24, 39, 0.12));
    opacity: 1;
  }
  
  body.is-high-contrast .audience-card__media {
    opacity: 0.4;
  }
  
  body.is-high-contrast .audience-card__label, 
  body.is-high-contrast .timeline__step {
    color: rgba(17, 24, 39, 0.8);
    text-shadow: none;
  }
  
  body.is-high-contrast .audience-card__body {
    color: var(--color-text);
  }
  
  /* Tags des cartes audience */
  body.is-high-contrast .audience-card__tags li {
    border-color: var(--hc-border);
    background: rgba(229, 231, 235, 0.8);
    color: var(--color-text);
  }
  
  /* Carte active */
  body.is-high-contrast .audience-card[data-active="true"] {
    /* box-shadow: 0 25px 50px rgba(15, 23, 42, 0.18); */
  }
  
  body.is-high-contrast .audience-card[data-active="true"] .audience-card__label {
    color: rgba(17, 24, 39, 0.7);
  }
  
  /* CTA dans la carte audience */
  body.is-high-contrast .audience-card__cta {
    color: #fff;
    background: linear-gradient(120deg, var(--hc-accent), var(--hc-accent-hover));
  }
  
  /* Flèches slider */
  body.is-high-contrast .audience-slider__nav {
    background: var(--hc-surface);
    color: var(--color-text);
    border-color: var(--hc-border);
    box-shadow: none;
  }
  
  body.is-high-contrast .audience-slider__nav:hover:not([disabled]),
  body.is-high-contrast .audience-slider__nav:focus-visible {
    border-color: var(--hc-accent);
    color: var(--hc-accent);
  }
  
  /* Dots slider */
  body.is-high-contrast .audience-dot {
    background: rgba(17, 24, 39, 0.2);
  }
  
  body.is-high-contrast .audience-dot--active {
    background: var(--hc-accent);
  }
  
  /* ------------------------------
     5. Services, offres, team
  ------------------------------ */
  
  body.is-high-contrast .service-card,
  body.is-high-contrast .offer-card,
  body.is-high-contrast .team-card {
    background: var(--hc-surface);
    color: var(--color-text);
    border-color: var(--hc-border);
    /* box-shadow: 0 20px 60px rgba(15, 23, 42, 0.15); */
  }
  
  body.is-high-contrast .service-card__media::after {
    background: linear-gradient(180deg, rgba(249, 250, 251, 0.1), rgba(17, 24, 39, 0.72) 70%);
  }
  
  body.is-high-contrast .service-card__price,
  body.is-high-contrast .service-card__tags span,
  body.is-high-contrast .offer-card {
    color: var(--color-text);
  }

body.is-high-contrast .service-card__price {
    background: #ffffff !important;
    border: 1px solid var(--hc-border-strong) !important;
    color: #0f172a !important;
    padding: 0.35rem 0.9rem;
    border-radius: 999px;
    transition: none !important;
  }

  body.is-high-contrast .service-card:hover .service-card__price,
  body.is-high-contrast .service-card:focus-within .service-card__price {
    background: #dbeafe !important;
    border-color: #1d4ed8 !important;
    color: #1e3a8a !important;
  }
  
  /* CTA dans service-card */
  body.is-high-contrast .service-card__cta {
    border: 1px solid var(--hc-border);
    background: rgba(229, 231, 235, 0.8);
    color: var(--color-text);
  }
  
  body.is-high-contrast .service-card__cta:hover,
  body.is-high-contrast .service-card__cta:focus-visible {
    border-color: var(--hc-accent);
    background: rgba(37, 99, 235, 0.12);
    color: var(--hc-accent);
  }
  
  body.is-high-contrast .service-card__cta-icon {
    color: inherit;
  }

  body.is-high-contrast .service-card {
    box-shadow: none;
  }

  body.is-high-contrast .service-card__content {
    background: #ffffff;
    border: 1px solid var(--hc-border);
    border-radius: 18px;
  }

  body.is-high-contrast .service-card__meta {
    color: var(--color-muted);
  }

  body.is-high-contrast .service-card h4 {
    color: var(--color-text);
  }

  body.is-high-contrast .service-card p {
    color: var(--color-text);
  }

  body.is-high-contrast .team-card__studio {
    background: var(--hc-surface);
    border-color: var(--hc-border);
    box-shadow: none;
  }

  body.is-high-contrast .team-card__studio p {
    color: var(--color-text);
  }

  body.is-high-contrast .team-card__studio .team-card__eyebrow {
    color: var(--color-muted);
  }

  body.is-high-contrast .team-card--solo {
    background: linear-gradient(180deg, var(--hc-surface), #fff);
    border-color: var(--hc-border);
    box-shadow: 0 28px 80px rgba(15, 23, 42, 0.16);
  }

  body.is-high-contrast .team-card--solo::before {
    background: conic-gradient(
      from 0deg,
      rgba(37, 99, 235, 0.25),
      rgba(148, 163, 184, 0.1),
      rgba(37, 99, 235, 0.25)
    );
  }

  body.is-high-contrast .team-card--solo::after {
    background: linear-gradient(135deg, #fff, var(--hc-surface));
  }

  body.is-high-contrast .team-card__columns > div {
    background: rgba(255, 255, 255, 0.7);
    border-color: var(--hc-border);
    box-shadow: inset 0 0 20px rgba(15, 23, 42, 0.08);
  }

  body.is-high-contrast .team-card__columns > div::after {
    background: radial-gradient(circle at 0% 0%, rgba(37, 99, 235, 0.18), transparent 45%);
  }

  body.is-high-contrast .about__background {
    opacity: 0.2;
    filter: none;
  }

  body.is-high-contrast .about__panel {
    background: linear-gradient(180deg, #ffffff, #f3f4f6);
    border-color: var(--hc-border);
    box-shadow: none;
  }

  body.is-high-contrast .about__panel::before {
    background: radial-gradient(circle at 30% 20%, rgba(37, 99, 235, 0.12), transparent 45%), radial-gradient(circle at 80% 70%, rgba(37, 99, 235, 0.08), transparent 40%);
    opacity: 0.35;
  }

  body.is-high-contrast .about-chip {
    background: #ffffff;
    color: var(--color-text);
    border-color: var(--hc-border);
    box-shadow: none;
  }

  body.is-high-contrast .about__tags li,
  body.is-high-contrast .about__signature span,
  body.is-high-contrast .about__step,
  body.is-high-contrast .about__radar {
    background: #ffffff;
    border-color: var(--hc-border);
    box-shadow: none;
  }

  body.is-high-contrast .about__step-index {
    background: var(--hc-surface);
    border-color: var(--hc-border);
    color: var(--color-text);
  }

  body.is-high-contrast .about__radar::before,
  body.is-high-contrast .about__radar::after {
    border-color: var(--hc-border);
  }

  body.is-high-contrast .about__radar span {
    color: var(--color-muted);
  }

  body.is-high-contrast .about-card {
    background: linear-gradient(180deg, #ffffff, #f3f4f6);
    border-color: var(--hc-border);
    box-shadow: none;
  }

  body.is-high-contrast .about-card__media {
    border-color: var(--hc-border);
  }

  body.is-high-contrast .about-card__badge {
    background: rgba(255, 255, 255, 0.92);
    color: var(--color-text);
    border-color: var(--hc-border);
    box-shadow: none;
  }

  body.is-high-contrast .about-card__badge small {
    color: var(--color-text);
  }
  
  /* ------------------------------
     6. Formulaire & contact
  ------------------------------ */
  
  /* Champs de formulaire */
  body.is-high-contrast input,
  body.is-high-contrast textarea,
  body.is-high-contrast select {
    background: transparent;
    color: var(--color-text);
    border: none;
    border-bottom: 1px solid var(--hc-border);
    border-radius: 0;
    padding-left: 0;
    padding-right: 0;
  }
  
  body.is-high-contrast input::placeholder,
  body.is-high-contrast textarea::placeholder {
    color: var(--color-muted);
  }

  body.is-high-contrast input:focus,
  body.is-high-contrast textarea:focus,
  body.is-high-contrast select:focus {
    outline: none;
    box-shadow: none;
    border-bottom-color: var(--hc-accent);
  }
  
  /* Bouton envoyer */
  body.is-high-contrast .contact-form__submit {
    border-color: var(--hc-accent);
    color: var(--hc-accent);
    background: transparent;
  }
  
  body.is-high-contrast .contact-form__submit:hover,
  body.is-high-contrast .contact-form__submit:focus-visible {
    background: var(--hc-accent);
    color: #fff;
    border-color: var(--hc-accent-hover);
    /* box-shadow: 0 18px 35px rgba(37, 99, 235, 0.25); */
  }
  
  /* Messages de statut */
  body.is-high-contrast .contact__form-message {
    color: var(--color-muted);
  }
  
  body.is-high-contrast .contact__form-message.is-success {
    color: var(--hc-success);
  }
  
  body.is-high-contrast .contact__form-message.is-error {
    color: var(--hc-error);
  }
  
  body.is-high-contrast .contact-plan-select {
    border-color: var(--hc-border);
    background: #fff;
  }

  body.is-high-contrast .contact-plan-select select {
    border: none;
    border-bottom: none;
    padding-left: 0;
    padding-right: 0;
  }

  body.is-high-contrast .contact-plan-select span {
    color: var(--hc-accent);
  }
  
  body.is-high-contrast .contact-plan-select select {
    color: var(--color-text);
  }
  
  body.is-high-contrast .contact-plan-select select option {
    color: var(--color-text);
  }

  body.is-high-contrast .contact-plan-select::after {
    color: var(--hc-accent);
  }

  body.is-high-contrast .contact-plan-select:focus-within {
    border-color: var(--hc-accent);
    box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.18);
    background: #fff;
  }

  body.is-high-contrast .coverflow-nav__btn {
    background: #ffffff;
    border-color: var(--hc-border);
    color: var(--color-text);
    box-shadow: none;
  }

  body.is-high-contrast .coverflow-nav__btn:hover,
  body.is-high-contrast .coverflow-nav__btn:focus-visible,
  body.is-high-contrast .coverflow-nav__btn--active {
    border-color: var(--hc-accent);
    color: var(--hc-accent);
  }

  body.is-high-contrast .coverflow-nav__pulse {
    background: rgba(37, 99, 235, 0.12);
  }

  body.is-high-contrast .testimonial-nav__btn {
    background: #ffffff;
    border-color: var(--hc-border);
    color: var(--color-text);
    box-shadow: none;
  }

  body.is-high-contrast .testimonial-nav__btn:hover,
  body.is-high-contrast .testimonial-nav__btn:focus-visible,
  body.is-high-contrast .testimonial-nav__btn--active {
    border-color: var(--hc-accent);
    color: var(--hc-accent);
  }

  body.is-high-contrast .testimonial-nav__pulse {
    background: rgba(37, 99, 235, 0.12);
  }
  
  body.is-high-contrast .contact-plan-banner {
    background: var(--hc-surface);
    border-color: var(--hc-border);
    color: var(--color-text);
  }
  
  body.is-high-contrast .contact-plan-banner__icon {
    background: rgba(37, 99, 235, 0.12);
    border-color: var(--hc-accent);
    color: var(--hc-accent);
  }
  
  body.is-high-contrast .contact-plan-banner__label {
    color: var(--color-muted);
  }
  
  body.is-high-contrast .contact-plan-banner__value {
    color: var(--color-text);
  }
  
  body.is-high-contrast .contact-plan-banner__action {
    border-color: var(--hc-accent);
    color: var(--hc-accent);
  }
  /* Contact experience panel (High Contrast) */
body.is-high-contrast .contact__experience {
    position: relative;
    max-width: 640px;
    width: 100%;
    justify-self: end;
    border-radius: 32px;
    padding: clamp(1.8rem, 3vw, 2.6rem);
    background: #ffffff;
    border: 1px solid var(--hc-border);
    /* box-shadow: 0 24px 70px rgba(15, 23, 42, 0.18); */
  }
  
  body.is-high-contrast .contact__experience-inner {
    position: relative;
    z-index: 1;
    display: grid;
    gap: clamp(1.6rem, 2.4vw, 2.1rem);
  }
  
  body.is-high-contrast .contact__heading {
    margin: 0;
    text-align: right;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: var(--color-text);
  }
  
  body.is-high-contrast .contact__heading span {
    color: var(--color-muted);
  }
  
  body.is-high-contrast .contact__form {
    margin-top: 0;
    padding-top: clamp(1.8rem, 2.6vw, 2.2rem);
    border-top: 1px solid var(--hc-border);
  }
  /* ------------------------------
     7. Cookie banner
  ------------------------------ */
  
  body.is-high-contrast .cookie-banner {
    background: var(--hc-surface);
    color: var(--color-text);
    border-color: var(--hc-border);
  }
  
  body.is-high-contrast .cookie-banner__actions button,
  body.is-high-contrast .cookie-banner__preferences button {
    border-color: var(--hc-border);
    color: var(--color-text);
  }
  
  body.is-high-contrast .cookie-banner__actions button:last-child {
    background: var(--hc-accent);
    border-color: var(--hc-accent);
    color: #fff;
  }
  
body.is-high-contrast .cookie-banner__preferences {
  border-top-color: var(--hc-border);
}

/* Footer */
body.is-high-contrast .site-footer {
  background: #fff;
  border-top: 1px solid var(--hc-border);
}

body.is-high-contrast .site-footer__inner {
  color: #111827;
}

body.is-high-contrast .site-footer__links a,
body.is-high-contrast .site-footer__link-btn {
  color: #1f2937;
}

body.is-high-contrast .site-footer__links a:hover,
body.is-high-contrast .site-footer__links a:focus-visible,
body.is-high-contrast .site-footer__link-btn:hover,
body.is-high-contrast .site-footer__link-btn:focus-visible {
  color: var(--hc-accent);
}

  /* ------------------------------
     8. Page d’erreur (error-page)
  ------------------------------ */
  
  body.is-high-contrast.error-page {
    background: var(--color-night);
    color: var(--color-text);
  }
  
  body.is-high-contrast.error-page .error-background {
    background: linear-gradient(140deg, rgba(229, 231, 235, 0.9), rgba(243, 244, 246, 0.65));
    opacity: 0.5;
    mix-blend-mode: normal;
  }
  
  body.is-high-contrast.error-page .error-logo,
  body.is-high-contrast.error-page .error-eyebrow,
  body.is-high-contrast.error-page .error-footer {
    color: var(--color-text);
  }
  
  body.is-high-contrast.error-page .error-hints {
    color: var(--color-muted);
  }
  
  /* ------------------------------
     9. Texte trop clair → forcer lisibilité
  ------------------------------ */
  
  body.is-high-contrast [class*="__subtitle"],
  body.is-high-contrast [class*="__eyebrow"],
  body.is-high-contrast [class*="__label"],
  body.is-high-contrast [class*="__lead"],
  body.is-high-contrast p {
    color: var(--color-text);
  }
  
  /* ------------------------------
     10. Divers
  ------------------------------ */
  
  /* Sélection de texte lisible */
  body.is-high-contrast ::selection{
    background: rgba(37, 99, 235, 0.3);
    color: #111827;
  }
  /* ------------------------------
     11. Metrics & metric-card
  ------------------------------ */

  body.is-high-contrast .metrics {
    background: linear-gradient(180deg, #f9fafb 0%, #f3f4f6 100%);
  }

  body.is-high-contrast .metrics::before {
    background: radial-gradient(circle at 20% 20%, rgba(148, 163, 184, 0.5), transparent 55%),
      radial-gradient(circle at 80% 50%, rgba(148, 163, 184, 0.35), transparent 55%);
    opacity: 0.4;
    filter: blur(120px);
  }

  body.is-high-contrast .metric-card {
    border: 1px solid var(--hc-border);
    border-radius: 32px;
    padding: clamp(1.4rem, 2.5vw, 2rem);
    background: var(--hc-surface);
    /* box-shadow: 0 24px 60px rgba(15, 23, 42, 0.16); */
    color: var(--color-text);
  }

  body.is-high-contrast .metric-card__label {
    color: var(--color-muted);
  }

  body.is-high-contrast .metric-card__value {
    color: var(--color-text);
  }

  body.is-high-contrast .metric-card p {
    color: var(--color-text);
  }

/* ------------------------------
   12. Testimonial-card
------------------------------ */

body.is-high-contrast .testimonial-card {
  background: var(--hc-surface);
  border: 1px solid var(--hc-border);
  /* box-shadow: 0 20px 50px rgba(15, 23, 42, 0.15); */
  color: var(--color-text);
}

body.is-high-contrast .testimonial-card__text {
  color: var(--color-text);
}

body.is-high-contrast .testimonial-card__author {
  color: var(--color-text);
}

body.is-high-contrast .testimonial-card__role {
  color: var(--color-muted);
}

body.is-high-contrast .testimonial-card__media {
  opacity: 0.5;
}

/* ------------------------------
   14. Service-card
------------------------------ */

body.is-high-contrast .service-card {
  background: var(--hc-surface);
  border: 1px solid var(--hc-border);
  /* box-shadow: 0 24px 60px rgba(15, 23, 42, 0.18); */
  color: var(--color-text);
}

body.is-high-contrast .service-card__content {
  color: var(--color-text);
}

body.is-high-contrast .service-card__meta {
  color: var(--color-muted);
}

body.is-high-contrast .service-card h4 {
  color: var(--color-text);
}

body.is-high-contrast .service-card p {
  color: var(--color-text);
}

/* ============================================================
   11. TYPOGRAPHIE ACCESSIBLE (H1 H2 H3 H4…)
   Surcharge complète pour mode High Contrast
============================================================ */

/* Titres */
body.is-high-contrast h1,
body.is-high-contrast .h1 {
  color: var(--color-text);
  text-shadow: none !important;
}

body.is-high-contrast h2,
body.is-high-contrast .h2 {
  color: var(--color-text);
  text-shadow: none !important;
}

body.is-high-contrast h3,
body.is-high-contrast .h3 {
  color: var(--color-text);
  text-shadow: none !important;
}

body.is-high-contrast h4,
body.is-high-contrast .h4 {
  color: var(--color-text);
  text-shadow: none !important;
}

body.is-high-contrast h5,
body.is-high-contrast h6 {
  color: var(--color-text);
}

/* Liens */
body.is-high-contrast a {
  color: var(--hc-accent);
  text-decoration: none;
}

body.is-high-contrast a:hover,
body.is-high-contrast a:focus-visible {
  color: var(--hc-accent-hover);
  text-decoration-color: var(--hc-accent-hover);
}

/* Listes */
body.is-high-contrast ul li,
body.is-high-contrast ol li {
  color: var(--color-text);
}

body.is-high-contrast ul li::marker {
  color: var(--hc-accent);
}

body.is-high-contrast ol li::marker {
  color: var(--hc-accent);
  font-weight: bold;
}

/* Paragraphes généraux */
body.is-high-contrast p {
  color: var(--color-text);
}

/* Éléments quotidiens : blockquote, hr, code */
body.is-high-contrast blockquote {
  border-left: 4px solid var(--hc-accent);
  background: var(--hc-surface);
  padding: 1rem 1.5rem;
  color: var(--color-text);
}

body.is-high-contrast hr {
  border: none;
  border-top: 2px solid var(--hc-border);
  margin: 2rem 0;
}

body.is-high-contrast code,
body.is-high-contrast pre {
  background: #fff;
  border: 1px solid var(--hc-border);
  color: var(--color-text);
}

/* Tableaux (si nécessaire) */
body.is-high-contrast table {
  width: 100%;
  border-collapse: collapse;
  background: var(--hc-surface);
  color: var(--color-text);
}

body.is-high-contrast th,
body.is-high-contrast td {
  border: 1px solid var(--hc-border);
  padding: 0.75rem;
}

body.is-high-contrast th {
  background: var(--hc-accent);
  color: #fff;
  font-weight: bold;
}  body.is-high-contrast .contact__heading span {
    color: var(--color-muted);
  }
  
  body.is-high-contrast .contact__form {
    margin-top: 0;
    padding-top: clamp(1.8rem, 2.6vw, 2.2rem);
    border-top: 1px solid var(--hc-border);
  }
  /* ------------------------------
     7. Cookie banner
  ------------------------------ */
  
  body.is-high-contrast .cookie-banner {
    background: var(--hc-surface);
    color: var(--color-text);
    border-color: var(--hc-border);
  }
  
  body.is-high-contrast .cookie-banner__actions button,
  body.is-high-contrast .cookie-banner__preferences button {
    border-color: var(--hc-border);
    color: var(--color-text);
  }
  
  body.is-high-contrast .cookie-banner__actions button:last-child {
    background: var(--hc-accent);
    border-color: var(--hc-accent);
    color: #fff;
  }
  
  body.is-high-contrast .cookie-banner__preferences {
    border-top-color: var(--hc-border);
  }
  
  /* ------------------------------
     8. Page d’erreur (error-page)
  ------------------------------ */
  
  body.is-high-contrast.error-page {
    background: var(--color-night);
    color: var(--color-text);
  }
  
  body.is-high-contrast.error-page .error-background {
    background: linear-gradient(140deg, rgba(229, 231, 235, 0.9), rgba(243, 244, 246, 0.65));
    opacity: 0.5;
    mix-blend-mode: normal;
  }
  
  body.is-high-contrast.error-page .error-logo,
  body.is-high-contrast.error-page .error-eyebrow,
  body.is-high-contrast.error-page .error-footer {
    color: var(--color-text);
  }
  
  body.is-high-contrast.error-page .error-hints {
    color: var(--color-muted);
  }
  
  /* ------------------------------
     9. Texte trop clair → forcer lisibilité
  ------------------------------ */
  
  body.is-high-contrast [class*="__subtitle"],
  body.is-high-contrast [class*="__eyebrow"],
  body.is-high-contrast [class*="__label"],
  body.is-high-contrast [class*="__lead"],
  body.is-high-contrast p {
    color: var(--color-text);
  }
  
  /* ------------------------------
     10. Divers
  ------------------------------ */
  
  /* Sélection de texte lisible */
  body.is-high-contrast ::selection {
    background: rgba(37, 99, 235, 0.3);
    color: #111827;
  }
  
  /* ------------------------------
     11. Metrics & metric-card
  ------------------------------ */
  
  body.is-high-contrast .metrics {
    background: linear-gradient(180deg, #f9fafb 0%, #f3f4f6 100%);
  }
  
  body.is-high-contrast .metrics::before {
    background: radial-gradient(circle at 20% 20%, rgba(148, 163, 184, 0.5), transparent 55%),
      radial-gradient(circle at 80% 50%, rgba(148, 163, 184, 0.35), transparent 55%);
    opacity: 0.4;
    filter: blur(120px);
  }
  
  body.is-high-contrast .metric-card {
    border: 1px solid var(--hc-border);
    border-radius: 32px;
    padding: clamp(1.4rem, 2.5vw, 2rem);
    background: var(--hc-surface);
    /* box-shadow: 0 24px 60px rgba(15, 23, 42, 0.16); */
    color: var(--color-text);
  }
  
  body.is-high-contrast .metric-card__label {
    color: var(--color-muted);
  }
  
  body.is-high-contrast .metric-card__value {
    color: var(--color-text);
  }
  
  body.is-high-contrast .metric-card p {
    color: var(--color-text);
  }

/* ------------------------------
   12. Testimonial-card
------------------------------ */

body.is-high-contrast .testimonial-card {
  background: var(--hc-surface);
  border: 1px solid var(--hc-border);
  /* box-shadow: 0 20px 50px rgba(15, 23, 42, 0.15); */
  color: var(--color-text);
}

body.is-high-contrast .testimonial-card__text {
  color: var(--color-text);
}

body.is-high-contrast .testimonial-card__author {
  color: var(--color-text);
}

body.is-high-contrast .testimonial-card__role {
  color: var(--color-muted);
}

body.is-high-contrast .testimonial-card__media {
  opacity: 0.5;
}

/* ------------------------------
   14. Service-card
  ------------------------------ */

body.is-high-contrast .service-card {
  background: var(--hc-surface);
  border: 1px solid var(--hc-border);
  /* box-shadow: 0 24px 60px rgba(15, 23, 42, 0.18); */
  color: var(--color-text);
}

body.is-high-contrast .service-card__content {
  color: var(--color-text);
}

body.is-high-contrast .service-card__meta {
  color: var(--color-muted);
}

body.is-high-contrast .service-card h4 {
  color: var(--color-text);
}

body.is-high-contrast .service-card p {
  color: var(--color-text);
}

/* ============================================================
   11. TYPOGRAPHIE ACCESSIBLE (H1 H2 H3 H4…)
   Surcharge complète pour mode High Contrast
============================================================ */

/* Titres */
body.is-high-contrast h1,
body.is-high-contrast .h1 {
  color: var(--color-text);
  text-shadow: none !important;
}

body.is-high-contrast h2,
body.is-high-contrast .h2 {
  color: var(--color-text);
  text-shadow: none !important;
}

body.is-high-contrast h3,
body.is-high-contrast .h3 {
  color: var(--color-text);
  text-shadow: none !important;
}

body.is-high-contrast h4,
body.is-high-contrast .h4 {
  color: var(--color-text);
  text-shadow: none !important;
}

body.is-high-contrast h5,
body.is-high-contrast h6 {
  color: var(--color-text);
}

/* Liens */
body.is-high-contrast a {
  color: var(--hc-accent);
  text-decoration: none;
}

body.is-high-contrast a:hover,
body.is-high-contrast a:focus-visible {
  color: var(--hc-accent-hover);
  text-decoration-color: var(--hc-accent-hover);
}

/* Listes */
body.is-high-contrast ul li,
body.is-high-contrast ol li {
  color: var(--color-text);
}

body.is-high-contrast ul li::marker {
  color: var(--hc-accent);
}

body.is-high-contrast ol li::marker {
  color: var(--hc-accent);
  font-weight: bold;
}

/* Paragraphes généraux */
body.is-high-contrast p {
  color: var(--color-text);
}

/* Éléments quotidiens : blockquote, hr, code */
body.is-high-contrast blockquote {
  border-left: 4px solid var(--hc-accent);
  background: var(--hc-surface);
  padding: 1rem 1.5rem;
  color: var(--color-text);
}

body.is-high-contrast hr {
  border: none;
  border-top: 2px solid var(--hc-border);
  margin: 2rem 0;
}

body.is-high-contrast code,
body.is-high-contrast pre {
  background: #fff;
  border: 1px solid var(--hc-border);
  color: var(--color-text);
}

/* Tableaux (si nécessaire) */
body.is-high-contrast table {
  width: 100%;
  border-collapse: collapse;
  background: var(--hc-surface);
  color: var(--color-text);
}

body.is-high-contrast th,
body.is-high-contrast td {
  border: 1px solid var(--hc-border);
  padding: 0.75rem;
}

body.is-high-contrast th {
  background: var(--hc-accent);
  color: #fff;
  font-weight: bold;
}

/* ------------------------------------------------------------
   Hardening final: couverture cohérente contraste + focus
------------------------------------------------------------ */
body.is-high-contrast {
  --hc-text-strong: #0f172a;
  --hc-text-muted: #334155;
  --hc-surface-strong: #ffffff;
  --hc-link: #1d4ed8;
  --hc-link-hover-strong: #1e3a8a;
  --hc-link-visited: #4338ca;
  --hc-border-strong: #cbd5e1;
}

body.is-high-contrast :where(
  .desktop-drawer,
  .site-nav.is-open,
  .mobile-sections-panel,
  .cookie-banner,
  .card-overlay__panel,
  .eos-questionnaire__dialog,
  .contact__experience,
  .service-card,
  .offer-card,
  .audience-card,
  .about-card,
  .metric-card,
  .testimonial-card,
  .contact-plan-select
) {
  background: var(--hc-surface-strong);
  color: var(--hc-text-strong);
  border-color: var(--hc-border-strong);
}

body.is-high-contrast :where(
  .eos-questionnaire__label,
  .eos-questionnaire__title,
  .eos-questionnaire__intro,
  .eos-questionnaire__step-indicator,
  .eos-questionnaire__step-hint,
  .contact-field__label,
  .about__note,
  .ui-hint,
  .section-subhead,
  .service-card__price
) {
  color: var(--hc-text-muted);
}

body.is-high-contrast :where(
  p,
  li,
  h1,
  h2,
  h3,
  h4,
  h5,
  h6,
  label,
  span,
  strong
) {
  color: inherit;
}

body.is-high-contrast :where(a) {
  color: var(--hc-link);
  text-decoration-color: currentColor;
}

body.is-high-contrast :where(a:visited) {
  color: var(--hc-link-visited);
}

body.is-high-contrast :where(a:hover, a:focus-visible) {
  color: var(--hc-link-hover-strong);
  text-decoration-color: currentColor;
}

body.is-high-contrast :where(input, textarea, select)::placeholder {
  color: #475569;
  opacity: 1;
}

body.is-high-contrast :where(button, [role="button"], input, textarea, select, a):focus-visible {
  outline: 3px solid #1d4ed8 !important;
  outline-offset: 3px !important;
  box-shadow: none !important;
}

body.is-high-contrast :where(button:disabled, [aria-disabled="true"], input:disabled, textarea:disabled, select:disabled) {
  opacity: 0.65;
  filter: none;
}

body.is-high-contrast :where(svg) {
  color: currentColor;
}

body.is-high-contrast :where(svg [stroke]:not([stroke="none"])) {
  stroke: currentColor;
}

body.is-high-contrast :where(svg [fill]:not([fill="none"])) {
  fill: currentColor;
}

body.is-high-contrast .btn.btn--primary,
body.is-high-contrast .contact-form__submit {
  color: #ffffff;
  background-color: var(--hc-link);
  background-image: linear-gradient(120deg, #1d4ed8, #1e40af);
  border-color: #1e3a8a;
}

body.is-high-contrast .btn.btn--primary:hover,
body.is-high-contrast .btn.btn--primary:focus-visible,
body.is-high-contrast .contact-form__submit:hover,
body.is-high-contrast .contact-form__submit:focus-visible {
  color: #ffffff;
  background-color: #1e3a8a;
  background-image: linear-gradient(120deg, #1e40af, #1e3a8a);
  border-color: #1e3a8a;
}

body.is-high-contrast .site-footer {
  background: #ffffff;
  border-top: 1px solid var(--hc-border-strong);
}

body.is-high-contrast .site-footer__inner {
  color: var(--hc-text-strong);
}

body.is-high-contrast .site-footer__links a,
body.is-high-contrast .site-footer__link-btn {
  color: #14245f !important;
}

body.is-high-contrast .site-footer__links a:visited {
  color: #14245f !important;
}

body.is-high-contrast .site-footer__links a:hover,
body.is-high-contrast .site-footer__links a:focus-visible,
body.is-high-contrast .site-footer__link-btn:hover,
body.is-high-contrast .site-footer__link-btn:focus-visible {
  color: #1e3a8a !important;
}

body.is-high-contrast .skip-link {
  color: #0f172a;
  background: #ffffff;
  border-color: #1d4ed8;
}

body.is-high-contrast .skip-link:focus-visible,
body.is-high-contrast .skip-link:hover {
  color: #ffffff;
  background: #1d4ed8;
}

/* Studio team hardening */
body.is-high-contrast #studio-team {
  background: linear-gradient(180deg, #f9fafb 0%, #f3f4f6 100%);
}

body.is-high-contrast #studio-team .about__background {
  opacity: 0.2;
}

body.is-high-contrast #studio-team .about-card,
body.is-high-contrast #studio-team .about-card__body {
  background: #ffffff;
  border-color: var(--hc-border-strong);
  color: var(--hc-text-strong);
}

body.is-high-contrast #studio-team .about__manifesto-title,
body.is-high-contrast #studio-team .about__lede,
body.is-high-contrast #studio-team .about__eyebrow,
body.is-high-contrast #studio-team .about__list li,
body.is-high-contrast #studio-team .about__note {
  color: var(--hc-text-strong);
}

body.is-high-contrast #studio-team .about__headline,
body.is-high-contrast #studio-team .about-title__text {
  color: var(--hc-text-strong);
  text-shadow: none;
}

body.is-high-contrast #studio-team .about-chip {
  background: #ffffff;
  color: var(--hc-text-strong);
  border-color: var(--hc-border-strong);
}

body.is-high-contrast #studio-team .about__more-btn {
  background: #ffffff;
  color: #1d4ed8;
  border-color: #1d4ed8;
  transition: none !important;
}

body.is-high-contrast #studio-team .about__more-btn:hover,
body.is-high-contrast #studio-team .about__more-btn:focus-visible {
  background: #1d4ed8;
  color: #ffffff;
  border-color: #1d4ed8;
}

/* Services scene hardening */
body.is-high-contrast #services {
  --accent-rgb: 29, 78, 216;
  --accent-glow: rgba(29, 78, 216, 0.22);
  --accent-soft: rgba(29, 78, 216, 0.16);
  --accent-outline: rgba(29, 78, 216, 0.92);
}

body.is-high-contrast #services::before,
body.is-high-contrast #services::after {
  opacity: 0.18;
}

body.is-high-contrast .services-scene__selector-wrap {
  background: #ffffff;
  border-color: var(--hc-border-strong);
  box-shadow: none;
}

body.is-high-contrast .services-scene,
body.is-high-contrast .services-scene__detail,
body.is-high-contrast .services-plan-btn {
  background: #ffffff;
  border-color: var(--hc-border-strong);
  color: var(--hc-text-strong);
  box-shadow: none;
}

body.is-high-contrast .services-scene::before {
  opacity: 0.14;
  filter: blur(30px);
}

body.is-high-contrast .services-scene__detail::before {
  opacity: 0.2;
}

body.is-high-contrast .services-scene__detail::after {
  opacity: 0;
}

body.is-high-contrast .services-plan-btn__eyebrow,
body.is-high-contrast .services-scene__detail-kicker,
body.is-high-contrast .services-scene__column-title,
body.is-high-contrast .services-scene__detail-price > :first-child {
  color: var(--hc-text-muted);
}

body.is-high-contrast .services-plan-btn__title,
body.is-high-contrast .services-plan-btn__name,
body.is-high-contrast .services-plan-btn__target,
body.is-high-contrast .services-plan-btn__price,
body.is-high-contrast .services-scene__detail-title,
body.is-high-contrast .services-scene__detail-subtitle,
body.is-high-contrast .services-scene__target,
body.is-high-contrast .services-scene__list li,
body.is-high-contrast .services-scene__summary li,
body.is-high-contrast .services-scene__tags li,
body.is-high-contrast .services-scene__compare-item dd {
  color: var(--hc-text-strong);
}

body.is-high-contrast .services-plan-btn__price,
body.is-high-contrast [data-services-detail-price] {
  background: #f8fafc;
  border-color: #93c5fd;
}

body.is-high-contrast .services-plan-btn:hover,
body.is-high-contrast .services-plan-btn:focus-visible,
body.is-high-contrast .services-plan-btn[aria-pressed="true"] {
  border-color: #1d4ed8;
  box-shadow: 0 0 0 2px rgba(29, 78, 216, 0.12);
  color: #0f172a;
}

body.is-high-contrast .services-plan-btn[aria-pressed="true"] {
  background: #eff6ff;
  transform: scale(1.01);
}

body.is-high-contrast .services-plan-btn[aria-pressed="true"] .services-plan-btn__price {
  color: #0f172a;
  background: #dbeafe;
  border-color: #1d4ed8;
}

body.is-high-contrast .services-plan-btn:focus-visible,
body.is-high-contrast .services-scene__cta:focus-visible {
  outline: 3px solid #1d4ed8;
  outline-offset: 3px;
}

body.is-high-contrast .services-scene__column {
  background: #ffffff;
  border-color: var(--hc-border-strong);
}

body.is-high-contrast .services-scene__snapshot,
body.is-high-contrast .services-scene__compare,
body.is-high-contrast .services-scene__compare-item {
  background: #ffffff;
  border-color: var(--hc-border-strong);
}

body.is-high-contrast .services-scene__column--muted {
  background: #f8fafc;
  opacity: 1;
}

body.is-high-contrast .services-scene__list li::before {
  background: #dbeafe;
  border-color: #1d4ed8;
  box-shadow: none;
}

body.is-high-contrast .services-scene__list li::after {
  border-right-color: #1d4ed8;
  border-bottom-color: #1d4ed8;
}

body.is-high-contrast .services-scene__list--non li::before {
  background: #64748b;
}

body.is-high-contrast .services-scene__list--non li::after {
  background: #ffffff;
}

body.is-high-contrast .services-scene__summary li::before {
  background: #1d4ed8;
  box-shadow: none;
}

body.is-high-contrast .services-scene__compare-item dt {
  color: var(--hc-text-muted);
}

body.is-high-contrast .services-scene__cta {
  background: #eff6ff;
  color: #1e3a8a;
  border-color: #1d4ed8;
  box-shadow: none;
}

body.is-high-contrast .services-scene__cta:hover,
body.is-high-contrast .services-scene__cta:focus-visible {
  background: #1d4ed8;
  color: #ffffff;
  border-color: #1d4ed8;
}

body.is-high-contrast .section-links {
  color: var(--hc-text-strong);
}

body.is-high-contrast .section-links a {
  color: #1d4ed8;
  text-decoration-color: #1d4ed8;
}
