/* Optional display preferences. Not a conformance layer and not a medical filter. */

html.a11y-text-112 { font-size: 112%; }
html.a11y-text-125 { font-size: 125%; }
html.a11y-text-150 { font-size: 150%; }

html.a11y-lh-1 body,
html.a11y-lh-1 p,
html.a11y-lh-1 li { line-height: 1.7; }
html.a11y-lh-2 body,
html.a11y-lh-2 p,
html.a11y-lh-2 li { line-height: 1.9; }
html.a11y-lh-3 body,
html.a11y-lh-3 p,
html.a11y-lh-3 li { line-height: 2.1; }

html.a11y-ls-1 body { letter-spacing: 0.03em; }
html.a11y-ls-2 body { letter-spacing: 0.06em; }
html.a11y-ls-3 body { letter-spacing: 0.1em; }

html.a11y-font body,
html.a11y-font h1,
html.a11y-font h2,
html.a11y-font h3,
html.a11y-font button,
html.a11y-font input,
html.a11y-font select,
html.a11y-font .brand,
html.a11y-font .hero-brand,
html.a11y-font .blog-hero h1,
html.a11y-font .blog-card h2,
html.a11y-font .blog-post h2,
html.a11y-font .blog-post h3 {
  font-family: Verdana, "Segoe UI", system-ui, sans-serif !important;
}

html.a11y-links a {
  text-decoration-line: underline !important;
  text-underline-offset: 0.15em;
}

html.a11y-read:not(.a11y-text-112):not(.a11y-text-125):not(.a11y-text-150) {
  font-size: 112%;
}
html.a11y-read p,
html.a11y-read li {
  line-height: 1.75;
  margin-bottom: 0.85em;
}

html.a11y-motion,
html.a11y-motion *,
html.a11y-motion *::before,
html.a11y-motion *::after {
  animation-duration: 0.01ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: 0.01ms !important;
  scroll-behavior: auto !important;
}
html.a11y-motion .hero::before,
html.a11y-motion .nfc-ring,
html.a11y-motion .nfc-waves span,
html.a11y-motion .hero-content {
  animation: none !important;
}
html.a11y-motion .btn:hover,
html.a11y-motion .nav-cta:hover,
html.a11y-motion .feature:hover,
html.a11y-motion .blog-card:hover {
  transform: none;
}

html.a11y-focus :focus-visible {
  outline: 4px solid #ffbf47 !important;
  outline-offset: 4px !important;
  box-shadow: 0 0 0 7px #0c1210 !important;
}

html.a11y-gray .hero,
html.a11y-gray .features,
html.a11y-gray .how,
html.a11y-gray .pricing,
html.a11y-gray .faq,
html.a11y-gray header,
html.a11y-gray main,
html.a11y-gray .site-footer,
html.a11y-gray .blog-hero,
html.a11y-gray .blog-list,
html.a11y-gray .blog-post,
html.a11y-gray .sticky-cta,
html.a11y-gray .site-nav {
  filter: grayscale(1);
}

/* Mode clair: the extra. Default (no class) stays the current dark bands. */
html.a11y-light .hero,
html.a11y-light .pricing,
html.a11y-light .site-footer,
html.a11y-light .blog-hero,
html.a11y-light .site-nav,
html.a11y-light .site-nav.is-scrolled,
html.a11y-light .legal-nav,
html.a11y-light .blog-post .cta-box,
html.a11y-light .sticky-cta:not([hidden]) {
  background: #f4f7f4 !important;
  color: #0c1210 !important;
}
html.a11y-light .hero,
html.a11y-light .hero h1,
html.a11y-light .hero p,
html.a11y-light .hero li,
html.a11y-light .pricing,
html.a11y-light .pricing p,
html.a11y-light .pricing li,
html.a11y-light .pricing h2,
html.a11y-light .site-footer,
html.a11y-light .site-footer a,
html.a11y-light .site-footer .footer-cookie,
html.a11y-light .blog-hero,
html.a11y-light .blog-hero p,
html.a11y-light .blog-hero h1,
html.a11y-light .nav-links a,
html.a11y-light .brand,
html.a11y-light .lang-switch label,
html.a11y-light .blog-post .cta-box,
html.a11y-light .blog-post .cta-box p,
html.a11y-light .price-pill,
html.a11y-light .trust-strip,
html.a11y-light .sticky-cta,
html.a11y-light .sticky-cta__close {
  color: #0c1210 !important;
}
html.a11y-light .brand span,
html.a11y-light .hero-brand em,
html.a11y-light .pricing .section-label,
html.a11y-light .blog-hero .section-label {
  color: #0a4630 !important;
}
html.a11y-light .btn-ghost {
  color: #0c1210 !important;
  background: transparent !important;
  border-color: #0c1210 !important;
}
html.a11y-light .btn-primary,
html.a11y-light .nav-cta,
html.a11y-light .sticky-cta__btn {
  color: #fff !important;
  background: #0f5c3a !important;
}
html.a11y-light .hero::before {
  opacity: 0.35;
}

/* Contraste renforcé. Comes after mode clair so both can be on, contrast wins. */
html.a11y-contrast body {
  background: #fff;
  color: #000;
}
html.a11y-contrast .hero,
html.a11y-contrast .pricing,
html.a11y-contrast .site-footer,
html.a11y-contrast .blog-hero,
html.a11y-contrast .site-nav,
html.a11y-contrast .site-nav.is-scrolled,
html.a11y-contrast .legal-nav,
html.a11y-contrast .blog-post .cta-box,
html.a11y-contrast .sticky-cta:not([hidden]) {
  background: #000 !important;
  color: #fff !important;
}
html.a11y-contrast .hero,
html.a11y-contrast .hero h1,
html.a11y-contrast .hero p,
html.a11y-contrast .hero li,
html.a11y-contrast .pricing,
html.a11y-contrast .pricing p,
html.a11y-contrast .pricing li,
html.a11y-contrast .pricing h2,
html.a11y-contrast .site-footer,
html.a11y-contrast .site-footer a,
html.a11y-contrast .site-footer .footer-cookie,
html.a11y-contrast .blog-hero,
html.a11y-contrast .blog-hero p,
html.a11y-contrast .blog-hero h1,
html.a11y-contrast .nav-links a,
html.a11y-contrast .brand,
html.a11y-contrast .brand span,
html.a11y-contrast .lang-switch label,
html.a11y-contrast .blog-post .cta-box,
html.a11y-contrast .blog-post .cta-box p,
html.a11y-contrast .price-pill,
html.a11y-contrast .trust-strip,
html.a11y-contrast .sticky-cta,
html.a11y-contrast .sticky-cta__close {
  color: #fff !important;
}
html.a11y-contrast .features,
html.a11y-contrast .features p,
html.a11y-contrast .features h2,
html.a11y-contrast .features h3,
html.a11y-contrast .how,
html.a11y-contrast .how p,
html.a11y-contrast .how h2,
html.a11y-contrast .how h3,
html.a11y-contrast .faq,
html.a11y-contrast .faq p,
html.a11y-contrast .faq summary,
html.a11y-contrast .legal-page,
html.a11y-contrast .legal-page p,
html.a11y-contrast .legal-page li,
html.a11y-contrast .legal-page h1,
html.a11y-contrast .legal-page h2,
html.a11y-contrast .blog-post,
html.a11y-contrast .blog-post p,
html.a11y-contrast .blog-post li,
html.a11y-contrast .blog-post h1,
html.a11y-contrast .blog-post h2,
html.a11y-contrast .blog-list,
html.a11y-contrast .blog-card,
html.a11y-contrast .blog-card p,
html.a11y-contrast .blog-card h2 {
  color: #000 !important;
}
html.a11y-contrast .features,
html.a11y-contrast .how,
html.a11y-contrast .faq,
html.a11y-contrast .blog-list,
html.a11y-contrast .blog-post,
html.a11y-contrast .legal-page {
  background: #fff !important;
}
html.a11y-contrast .features a,
html.a11y-contrast .how a,
html.a11y-contrast .faq a,
html.a11y-contrast .legal-page a,
html.a11y-contrast .blog-list a,
html.a11y-contrast .blog-post a:not(.btn) {
  color: #053d28;
}
html.a11y-contrast .pricing .section-label,
html.a11y-contrast .blog-hero .section-label,
html.a11y-contrast .hero .section-label,
html.a11y-contrast .hero-brand em {
  color: #fff !important;
}
html.a11y-contrast .cookie-banner a,
html.a11y-contrast .cookie-modal a {
  color: #d9ffe9 !important;
}
html.a11y-contrast .hero a,
html.a11y-contrast .pricing a,
html.a11y-contrast .site-nav a,
html.a11y-contrast .blog-hero a,
html.a11y-contrast .site-footer a,
html.a11y-contrast .blog-post .cta-box a,
html.a11y-contrast .sticky-cta a {
  color: #fff;
}

html.a11y-contrast .btn-ghost {
  color: #fff !important;
  border-color: #fff !important;
  background: transparent !important;
}
html.a11y-contrast .btn-primary,
html.a11y-contrast .nav-cta,
html.a11y-contrast .sticky-cta__btn {
  color: #fff !important;
  background: #053d28 !important;
}

/* Admin page is a separate dark document. Light or contrast flips its chrome. */
html.a11y-light .card,
html.a11y-light .panel,
html.a11y-light form.login,
html.a11y-light .flash,
html.a11y-contrast .card,
html.a11y-contrast .panel,
html.a11y-contrast form.login,
html.a11y-contrast .flash {
  background: #fff;
  color: #0c1210;
  border-color: #0c1210;
}
html.a11y-light input,
html.a11y-contrast input,
html.a11y-light select,
html.a11y-contrast select {
  background: #fff;
  color: #0c1210;
  border-color: #0c1210;
}
html.a11y-light body,
html.a11y-contrast body {
  background-color: #fff;
}
html.a11y-contrast .muted,
html.a11y-light .muted,
html.a11y-contrast .compare,
html.a11y-light .compare,
html.a11y-contrast .empty,
html.a11y-light .empty {
  color: #1a1a1a;
}

.a11y-launcher {
  position: fixed;
  z-index: 85;
  inset-inline-start: max(0.75rem, env(safe-area-inset-left, 0px));
  bottom: max(0.75rem, env(safe-area-inset-bottom, 0px));
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  min-height: 44px;
  min-width: 44px;
  padding: 0.45rem 0.9rem;
  border-radius: 999px;
  border: 2px solid #0c1210;
  background: #f7faf7 !important;
  color: #0c1210 !important;
  font: 700 0.95rem/1.2 Verdana, "Segoe UI", system-ui, sans-serif;
  cursor: pointer;
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.28);
}
.a11y-launcher:hover {
  background: #fff !important;
}
@media (max-width: 700px) {
  body.has-sticky-cta .a11y-launcher {
    bottom: calc(5.15rem + env(safe-area-inset-bottom, 0px));
  }
}

.a11y-dialog {
  position: fixed;
  inset: 0;
  z-index: 90;
  display: grid;
  place-items: end center;
  padding: 1rem;
  background: rgba(6, 12, 10, 0.72);
}
.a11y-dialog[hidden] {
  display: none !important;
}
.a11y-dialog__panel {
  width: min(36rem, 100%);
  max-height: min(88dvh, 44rem);
  overflow: auto;
  background: #f7faf7;
  color: #0c1210;
  border: 2px solid #0c1210;
  border-radius: 16px;
  padding: 0.9rem 1rem 1.1rem;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.35);
}
.a11y-dialog__head {
  position: sticky;
  top: -0.9rem;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 0.75rem;
  margin: -0.9rem -1rem 0.75rem;
  padding: 0.9rem 1rem 0.6rem;
  background: #f7faf7;
  z-index: 1;
}
.a11y-dialog h2 {
  font-family: Verdana, "Segoe UI", system-ui, sans-serif;
  font-size: 1.15rem;
  line-height: 1.3;
  margin: 0;
  color: #0c1210;
}
.a11y-dialog h3 {
  font-family: Verdana, "Segoe UI", system-ui, sans-serif;
  font-size: 0.95rem;
  margin: 1rem 0 0.45rem;
  color: #0c1210;
}
.a11y-dialog p,
.a11y-hint {
  margin: 0 0 0.6rem;
  color: #1c2420;
  font-size: 0.92rem;
  line-height: 1.45;
}
.a11y-dialog a {
  color: #0a4630;
}
.a11y-close,
.a11y-dialog button {
  appearance: none;
  font: 650 0.95rem/1.2 Verdana, "Segoe UI", system-ui, sans-serif;
  min-height: 44px;
  min-width: 44px;
  padding: 0.5rem 0.85rem;
  border-radius: 999px;
  border: 2px solid #0c1210;
  background: #fff;
  color: #0c1210;
  cursor: pointer;
}
.a11y-close {
  flex: 0 0 auto;
  background: #0c1210;
  color: #f7faf7;
}
.a11y-dialog button[aria-pressed="true"] {
  background: #0f5c3a;
  color: #fff;
  border-color: #0a4630;
}
.a11y-dialog button:disabled {
  opacity: 0.45;
  cursor: not-allowed;
}
.a11y-row,
.a11y-step {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  align-items: center;
  margin: 0.35rem 0 0.55rem;
}
.a11y-step span[id],
.a11y-row > span {
  flex: 1 1 8rem;
  font-weight: 650;
}
.a11y-val {
  flex: 0 0 auto !important;
  min-width: 4.5rem;
  font-weight: 700;
}
.a11y-reset {
  margin-top: 0.8rem;
  width: 100%;
}
@media (max-width: 700px) {
  .a11y-dialog {
    padding: 0.5rem;
    place-items: end stretch;
  }
  .a11y-dialog__panel {
    max-height: min(78dvh, 44rem);
  }
}
