:root {
  /*
   * Variables globales du thème.
   *
   * Pour changer l'identité visuelle du site, commence ici :
   * - --brand-orange-* : couleurs principales ;
   * - --brand-amber-hover : couleur au survol ;
   * - --site-dark-bg : fond du thème sombre.
   *
   * Les variables qui commencent par --md-* sont celles de Material for MkDocs.
   * On les redéfinit pour que Material utilise nos couleurs.
   */
  --md-text-font: "Inter", system-ui, -apple-system, sans-serif;
  --md-code-font: "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;

  /* Palette SP.net */
  --brand-orange: #f77621;
  --brand-orange-light: #ff9248;
  --brand-orange-dark: #d85f12;
  --brand-orange-soft: #fff1e6;
  --brand-amber: #eecb7a;
  --brand-amber-hover: #f2d38b;
  --brand-gray: #5a5a5a;
  --site-dark-bg: #121212;
  --spnet-edge-rule-inset: max(0.8rem, 2.5vw);
  --spnet-header-clearance: 0.85rem;
  --spnet-toc-header-clearance: 1.35rem;
  --spnet-primary-sidebar-width: 12.8rem;
  --spnet-primary-drawer-width: min(98vw, 22rem);
  --spnet-primary-drawer-offset: max(-98vw, -22rem);
  --spnet-primary-sidebar-bg-dark: var(--site-dark-bg);
  --spnet-code-scrollbar-inset: 0.78rem;
}

html {
  scroll-behavior: auto !important;
}

*,
*::before,
*::after {
  animation: none !important;
  transition: none !important;
  scroll-behavior: auto !important;
}

/* ---------- Light mode ---------- */
[data-md-color-scheme="default"] {
  /* Thème clair : fond légèrement chaud, liens orange foncé. */
  --md-accent-fg-color: var(--brand-orange-dark);
  --md-accent-fg-color--transparent: rgba(247, 118, 33, 0.1);
  --md-typeset-a-color: var(--brand-orange-dark);
  --md-default-bg-color: #fafaf7;
  --md-footer-fg-color: var(--brand-gray);
  --md-footer-fg-color--light: rgba(90, 90, 90, 0.76);
  --md-footer-fg-color--lighter: rgba(90, 90, 90, 0.56);
  --md-footer-bg-color: var(--md-default-bg-color);
  --md-footer-bg-color--dark: var(--md-default-bg-color);
}

[data-md-color-scheme="default"][data-md-color-primary] {
  --md-typeset-a-color: var(--brand-orange-dark);
}

/* ---------- Dark mode ---------- */
[data-md-color-scheme="slate"] {
  /* Thème sombre : on force un noir doux uniforme et des liens orange clair. */
  --md-hue: 230;
  --md-default-bg-color: var(--site-dark-bg);
  --md-primary-fg-color: var(--site-dark-bg);
  --md-default-fg-color: hsla(225, 14%, 92%, 0.92);
  --md-accent-fg-color: var(--brand-orange-light);
  --md-accent-fg-color--transparent: rgba(255, 146, 72, 0.12);
  --md-typeset-a-color: var(--brand-orange-light);
  --md-footer-fg-color: rgba(238, 238, 238, 0.9);
  --md-footer-fg-color--light: rgba(238, 238, 238, 0.72);
  --md-footer-fg-color--lighter: rgba(238, 238, 238, 0.5);
  --md-footer-bg-color: var(--site-dark-bg);
  --md-footer-bg-color--dark: var(--site-dark-bg);
}

[data-md-color-scheme="slate"][data-md-color-primary] {
  --md-typeset-a-color: var(--brand-orange-light);
}

[data-md-color-scheme="slate"] :is(
  body,
  .md-header,
  .md-container,
  .md-main,
  .md-main__inner,
  .md-sidebar,
  .md-sidebar__scrollwrap,
  .md-sidebar__inner,
  .md-content
) {
  /* Material colore plusieurs conteneurs. Cette règle évite les bandes
   * grises parasites en thème sombre. */
  background-color: var(--site-dark-bg);
}

/* ---------- Header: clear logo, no redundant text, centered divider ---------- */
.md-header {
  /* Header volontairement plat : pas d'ombre, juste une ligne orange. */
  height: 3.55rem;
  background-color: var(--md-default-bg-color);
  box-shadow: none;
  border-bottom: 0;
}
.md-header::after {
  /* Ligne de séparation sous le header, alignée avec le repère de titre. */
  position: absolute;
  right: var(--spnet-edge-rule-inset);
  bottom: 0;
  left: var(--spnet-edge-rule-inset);
  height: 2px;
  content: "";
  background-color: rgba(247, 118, 33, 0.64);
  pointer-events: none;
}
.md-header--shadow {
  box-shadow: none;
}
.md-header__inner {
  min-height: 3.55rem;
}
.md-header__title {
  /* Le nom du site est déjà dans le logo ; on masque donc le texte généré
   * par Material pour éviter un doublon visuel. */
  color: transparent;
  font-size: 0;
  line-height: 0;
  overflow: hidden;
  pointer-events: none;
}
.md-header__title .md-header__topic {
  display: none;
}
.md-header__button.md-logo {
  /* Taille et zone cliquable du logo en haut à gauche. */
  display: flex;
  align-items: center;
  width: auto;
  min-width: 10rem;
  height: 100%;
  margin: 0 0.9rem 0 0;
  padding: 0.55rem 0.2rem;
}
.md-header__button.md-logo:hover,
.md-header__button.md-logo:focus,
.md-header__button.md-logo:focus-visible {
  /* Par défaut Material baisse parfois l'opacité des liens au survol.
   * On garde le logo parfaitement lisible. */
  opacity: 1;
}
.md-header__option .md-header__button,
.md-header__source .md-source {
  transition:
    color 150ms ease,
    opacity 150ms ease;
}
.md-header__option .md-header__button:hover,
.md-header__option .md-header__button:focus-visible,
.md-header__source .md-source:hover,
.md-header__source .md-source:focus-visible {
  /* Boutons du header : thème clair/sombre, repo GitHub. */
  color: var(--brand-amber-hover);
  opacity: 1;
}
.md-header__button.md-logo img,
.md-header__button.md-logo svg {
  display: block;
  width: auto;
  max-width: 10.5rem;
  max-height: 100%;
  height: 2.45rem;
  object-fit: contain;
  flex-shrink: 0;
  filter: none;
}
[data-md-color-scheme="default"] .md-header::after {
  background-color: rgba(216, 95, 18, 0.44);
}
.md-progress {
  /* Barre de progression Material masquée : elle n'apportait rien ici. */
  display: none !important;
}

@media screen and (min-width: 60em) {
  /* Sur écran large, la recherche reste visible dans le header. */
  .md-header > .md-header__inner > label[for="__search"] {
    display: none;
  }
  .md-search {
    display: block !important;
    padding: 0 0.45rem;
  }
  .md-search__inner {
    width: 12rem;
  }
  .md-search__form {
    height: 1.8rem;
    border: 1px solid rgba(90, 90, 90, 0.16);
    border-radius: 0.15rem;
    background-color: rgba(90, 90, 90, 0.1);
  }
  [data-md-color-scheme="slate"] .md-search__form {
    border-color: rgba(238, 238, 238, 0.1);
    background-color: rgba(238, 238, 238, 0.08);
  }
  .md-search__form:hover {
    background-color: rgba(242, 211, 139, 0.14);
  }
  .md-search__input::placeholder,
  .md-search__icon {
    color: var(--md-default-fg-color--light);
  }
}

/* ---------- Footer ---------- */
.md-footer {
  position: relative;
  background-color: var(--md-default-bg-color);
  color: var(--md-footer-fg-color--light);
}

.md-footer::before {
  position: absolute;
  top: 0;
  right: var(--spnet-edge-rule-inset);
  left: var(--spnet-edge-rule-inset);
  height: 2px;
  content: "";
  background-color: rgba(247, 118, 33, 0.64);
  pointer-events: none;
}

.md-footer-meta {
  background-color: transparent;
}

[data-md-color-scheme="default"] .md-footer::before {
  background-color: rgba(216, 95, 18, 0.44);
}

/* Hide redundant "spnet" title at top of sidebar nav */
.md-sidebar--primary .md-nav--primary > .md-nav__title,
.md-nav--primary > .md-nav__title[for="__drawer"] {
  /* Titre du drawer masqué : il doublonne avec le logo du header. */
  display: none !important;
}

.md-sidebar--primary .md-nav__source,
.md-nav--primary > .md-nav__source {
  /* Le dépôt GitHub reste dans le header, mais pas en tête du menu hamburger. */
  display: none !important;
}

/* Hide the home item in side navigation: the logo already links there. */
.md-sidebar--primary .md-nav--primary > .md-nav__list > .md-nav__item:first-child {
  /* Le premier item est Accueil. On le cache car le logo renvoie déjà
   * vers la page d'accueil. */
  display: none;
}

/* ---------- Navigation hierarchy ---------- */
.md-sidebar--primary .md-nav {
  /* Taille de base du menu de gauche sur desktop. */
  font-size: 0.72rem;
}

.md-sidebar--primary .md-nav__link {
  /* Lien standard du menu de gauche. On garde une hauteur stable pour que
   * les emojis et les libellés ne fassent pas sauter la mise en page. */
  display: flex;
  align-items: center;
  box-sizing: border-box;
  min-height: 1.45rem;
  margin-top: 0.22rem;
  padding-top: 0.18rem;
  padding-bottom: 0.18rem;
  line-height: 1.25;
  color: var(--md-default-fg-color--light);
  border-radius: 0.22rem;
  transition:
    background-color 150ms ease,
    color 150ms ease;
}

.md-sidebar--primary .md-nav__link,
.md-sidebar--primary .md-nav__container {
  min-width: 0;
}

.md-sidebar--primary .md-nav__link .md-ellipsis {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.md-sidebar--primary .md-nav__link:hover,
.md-sidebar--primary .md-nav__link:focus-visible {
  /* Survol commun : texte jaune, sans encadrer les pages cliquables. */
  color: var(--brand-amber-hover);
  background-color: transparent;
}

.md-sidebar--primary .md-nav__item--section > .md-nav__link,
.md-sidebar--primary .md-nav__item--section > .md-nav__container > .md-nav__link {
  /* Grandes sections du menu : Physique, Éducation Nationale, Coding. */
  color: var(--md-default-fg-color);
  font-size: 0.78rem;
  font-weight: 700;
}

.md-sidebar--primary .md-nav[data-md-level="1"] .md-nav__link {
  /* Niveau 1 dans une section. Exemple : Python sous Coding. */
  padding-left: 0.8rem;
}

.md-sidebar--primary .md-nav[data-md-level="2"] .md-nav__link {
  /* Niveau 2 dans une section. Exemple : Pour les sciences sous Python. */
  padding-left: 1.45rem;
  font-size: 0.66rem;
  color: var(--md-default-fg-color--light);
}

.md-sidebar--primary .md-nav[data-md-level="3"] .md-nav__link {
  padding-left: 2.1rem;
}

.md-sidebar--primary .md-nav__item--section.md-nav__item--nested > .md-nav__link[for] {
  color: var(--md-default-fg-color);
}

.md-sidebar--primary .md-nav[data-md-level="2"] .md-nav__link[href].md-nav__link--active {
  color: var(--brand-orange-light);
}

.md-sidebar--primary .md-nav__link:focus {
  outline: none;
}

.md-sidebar--primary .md-nav__link:focus-visible,
.md-sidebar--primary .md-nav__link.focus-visible {
  /* Anneau clavier : utile pour naviguer sans souris. */
  border-radius: 0.2rem;
  outline: none;
  box-shadow: inset 0 0 0 1px rgba(247, 118, 33, 0.66);
}

/* Mobile: keep header compact */
@media screen and (max-width: 76.234em) {
  /* Material bascule sur le header mobile sous ~1220 px. */
  .md-header {
    height: 3.15rem;
  }
  .md-header__inner {
    align-items: center;
    min-height: 3.15rem;
  }
  .md-header > .md-header__inner > label[for="__drawer"] {
    display: flex;
    align-items: center;
    justify-content: center;
    order: -2;
    width: 1.9rem;
    height: 3.15rem;
    margin: 0 0.08rem 0 0.45rem;
    padding: 0;
  }
  .md-header__button.md-logo {
    order: -1;
    min-width: 7.2rem;
    margin-right: 0.45rem;
    padding: 0.55rem 0;
  }
  .md-header__button.md-logo img,
  .md-header__button.md-logo svg {
    max-width: 8.7rem;
    max-height: 100%;
    height: 2rem;
  }
}

@media screen and (max-width: 30em) {
  /* Très petits écrans : logo encore un peu réduit pour garder la recherche. */
  .md-header__button.md-logo {
    min-width: 6.7rem;
    margin-right: 0.3rem;
  }
  .md-header__button.md-logo img,
  .md-header__button.md-logo svg {
    max-width: 6.9rem;
    height: 1.7rem;
  }
}

/* Active sidebar item */
.md-nav__link--active,
.md-nav__link.md-nav__link--active {
  /* Règle globale : le lien actif est orange, mais pas automatiquement gras. */
  color: var(--brand-orange-dark);
  font-weight: inherit;
}
[data-md-color-scheme="slate"] .md-nav__link--active {
  color: var(--brand-orange-light);
}

.md-sidebar--primary .md-nav__link[href].md-nav__link--active {
  /* Dans le menu de gauche, seule la page exacte est orange.
   * Les parents ouverts restent gris/blanc pour éviter de tout surligner. */
  color: var(--brand-orange-light) !important;
  font-weight: 400;
}

/* Mobile drawer: keep the full tree visible and finger-friendly. */
@media screen and (max-width: 76.234em) {
  /*
   * Material transforme normalement chaque sous-menu mobile en panneau séparé.
   * Ici l'arborescence reste inline, mais chaque sous-menu peut être rabattu.
   */
  .md-nav--primary {
    padding-top: 0.35rem;
    font-size: 0.86rem;
  }

  .md-sidebar--primary,
  .md-sidebar--primary .md-sidebar__scrollwrap,
  .md-sidebar--primary .md-sidebar__inner,
  .md-nav--primary,
  .md-nav--primary .md-nav,
  .md-nav--primary .md-nav__list,
  .md-nav--primary .md-nav__item,
  .md-nav--primary .md-nav__link,
  .md-nav--primary .md-nav__container {
    background-color: var(--md-default-bg-color) !important;
  }

  .md-nav--primary .md-nav__list {
    padding: 0.15rem 0;
  }

  .md-nav--primary .md-nav__title {
    display: none !important;
  }

  .md-nav--primary .md-nav__item {
    /* Séparateurs fins entre lignes : plus lisible au doigt. */
    border-top: 1px solid rgba(255, 255, 255, 0.06);
  }

  .md-nav--primary > .md-nav__list > .md-nav__item:first-child,
  .md-nav--primary .md-nav__item:first-child {
    border-top: 0;
  }

  .md-nav--primary .md-nav__link,
  .md-nav--primary .md-nav__container {
    /* Hauteur tactile confortable. */
    min-height: 2.35rem;
  }

  .md-nav--primary .md-nav__link {
    margin: 0;
    padding: 0.58rem 0.85rem;
    font-size: 0.86rem;
    line-height: 1.25;
  }

  .md-nav--primary .md-nav__link:hover,
  .md-nav--primary .md-nav__link:focus-visible {
    color: var(--brand-amber-hover);
    background-color: transparent;
  }

  .md-nav--primary .md-nav__link[href].md-nav__link--active {
    color: var(--brand-orange-light) !important;
    background-color: transparent;
    font-weight: 400;
  }

  .md-nav--primary .md-nav__item--active > .md-nav__link[for="__toc"] .md-nav__icon {
    display: none !important;
  }

  .md-nav--primary .md-nav__icon {
    display: inline-flex;
    margin-left: auto;
  }

  .md-nav--primary .md-nav__item--nested > .md-nav {
    position: static;
    display: block;
    width: auto;
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
    transform: none;
    visibility: hidden;
    transition: none;
  }

  .md-nav--primary .md-nav__item--nested > .md-nav > .md-nav__list {
    overflow: hidden;
  }

  .md-nav--primary .md-nav__item--nested > .md-nav__toggle:checked ~ .md-nav {
    max-height: 120rem;
    opacity: 1;
    pointer-events: auto;
    visibility: visible;
    transition: none;
  }

  .md-nav--primary .md-nav[data-md-level="1"],
  .md-nav--primary .md-nav[data-md-level="2"],
  .md-nav--primary .md-nav[data-md-level="3"] {
    padding-left: 0;
  }

  .md-nav--primary .md-nav[data-md-level="1"] .md-nav__link {
    /* Indentations mobiles. Elles sont volontairement plus fortes que desktop
     * pour que la hiérarchie reste claire dans le drawer. */
    padding-left: 2.25rem;
  }

  .md-nav--primary .md-nav[data-md-level="2"] .md-nav__link {
    padding-left: 3.85rem;
    font-size: 0.8rem;
  }

  .md-nav--primary .md-nav[data-md-level="3"] .md-nav__link {
    padding-left: 5.45rem;
    font-size: 0.76rem;
  }

  .md-nav--primary .md-nav__item--section > .md-nav__link,
  .md-nav--primary .md-nav__item--section > .md-nav__container > .md-nav__link,
  .md-nav--primary > .md-nav__list > .md-nav__item > .md-nav__link,
  .md-nav--primary > .md-nav__list > .md-nav__item > .md-nav__container > .md-nav__link {
    color: var(--md-default-fg-color);
    font-size: 0.92rem;
    font-weight: 700;
  }

  .md-nav--primary .md-nav__item--section > .md-nav__link:hover,
  .md-nav--primary .md-nav__item--section > .md-nav__container > .md-nav__link:hover,
  .md-nav--primary > .md-nav__list > .md-nav__item > .md-nav__link:hover,
  .md-nav--primary > .md-nav__list > .md-nav__item > .md-nav__container > .md-nav__link:hover {
    color: var(--brand-amber-hover);
  }
}

.md-sidebar--primary .md-nav__item--active > .md-nav__link:not(.md-nav__link--active),
.md-sidebar--primary .md-nav__item--active > .md-nav__container > .md-nav__link:not(.md-nav__link--active) {
  /* Material colore aussi les parents d'une page active. On neutralise ce
   * comportement : seul le lien de la page courante doit être orange. */
  color: var(--md-default-fg-color--light);
  background-color: transparent;
  font-weight: 400;
}

.md-sidebar--primary .md-nav__item--section.md-nav__item--active > .md-nav__link:not(.md-nav__link--active),
.md-sidebar--primary .md-nav__item--section.md-nav__item--active > .md-nav__container > .md-nav__link:not(.md-nav__link--active) {
  /* Les sections racines restent plus fortes visuellement, même si elles ne
   * doivent pas devenir orange quand une sous-page est ouverte. */
  color: var(--md-default-fg-color);
  font-weight: 700;
}

.md-sidebar--primary .md-nav__link[for].md-nav__link--active,
.md-sidebar--primary .md-nav__item--active > .md-nav__link[for],
.md-sidebar--primary .md-nav__item--active > .md-nav__container > .md-nav__link[for] {
  color: var(--md-default-fg-color--light) !important;
  background-color: transparent;
  font-weight: 400;
}

.md-sidebar--primary .md-nav__item--section > .md-nav__link[for].md-nav__link--active,
.md-sidebar--primary .md-nav__item--section.md-nav__item--active > .md-nav__link[for],
.md-sidebar--primary .md-nav__item--section.md-nav__item--active > .md-nav__container > .md-nav__link[for] {
  color: var(--md-default-fg-color) !important;
  font-weight: 700;
}

.md-sidebar--primary .md-nav__link[href]:not(.md-nav__link--active):hover,
.md-sidebar--primary .md-nav__link[href]:not(.md-nav__link--active):focus-visible {
  color: var(--brand-amber-hover) !important;
  background-color: transparent;
}

.md-sidebar--primary .md-nav__item--nested > .md-nav__link[for]:hover,
.md-sidebar--primary .md-nav__item--nested > .md-nav__link[for]:focus-visible,
.md-sidebar--primary .md-nav__item--nested > .md-nav__link[for].focus-visible {
  color: var(--brand-amber-hover) !important;
  background-color: transparent;
  box-shadow: none;
}

/* ---------- Table of contents ---------- */
.md-sidebar--secondary .md-nav__title {
  /* Le titre "Table des matières" généré par Material est masqué pour gagner
   * de la place : la liste de titres suffit. */
  display: none;
}

.md-sidebar--secondary .md-nav {
  /* Taille de base de la TOC de droite. */
  font-size: 0.72rem;
}

.md-sidebar--secondary .md-nav__link {
  /* Lien standard dans la TOC. */
  margin-top: 0.34rem;
  line-height: 1.35;
  color: var(--md-default-fg-color--light);
  transition: color 150ms ease;
}

.md-sidebar--secondary .md-nav--secondary > .md-nav__list > .md-nav__item > .md-nav__link {
  /* Premier niveau visible dans la TOC : un peu plus grand et lisible. */
  color: var(--md-default-fg-color);
  font-size: 0.72rem;
  font-weight: 500;
}

.md-sidebar--secondary .md-nav__link:hover {
  color: var(--brand-amber-hover);
}

.md-sidebar--secondary .md-nav .md-nav {
  /* Sous-niveaux de la TOC. L'indentation est faible pour éviter de perdre
   * trop de largeur sur les pages avec beaucoup de profondeur. */
  margin-top: 0.1rem;
  margin-left: 0.4rem;
  padding-left: 0.23rem;
  border-left: 1px solid rgba(255, 146, 72, 0.18);
}

.md-sidebar--secondary .md-nav .md-nav .md-nav__link,
.md-sidebar--secondary .md-nav[data-md-level="2"] .md-nav__link {
  /* Niveau 2 de la TOC. */
  margin-top: 0.22rem;
  font-size: 0.64rem;
  font-weight: 400;
  color: var(--md-default-fg-color--light);
}

.md-sidebar--secondary .md-nav .md-nav .md-nav__link:hover,
.md-sidebar--secondary .md-nav[data-md-level="2"] .md-nav__link:hover {
  color: var(--brand-amber-hover);
}

.md-sidebar--secondary .md-nav .md-nav .md-nav .md-nav__link,
.md-sidebar--secondary .md-nav[data-md-level="3"] .md-nav__link {
  /* Niveau 3 de la TOC : plus petit, mais pas trop indenté. */
  margin-top: 0.16rem;
  padding-left: 0.18rem;
  font-size: 0.58rem;
  color: var(--md-default-fg-color--lighter);
}

.md-sidebar--secondary .md-nav .md-nav .md-nav .md-nav__link:hover,
.md-sidebar--secondary .md-nav[data-md-level="3"] .md-nav__link:hover {
  color: var(--brand-amber-hover);
}

[data-md-color-scheme="slate"] .md-sidebar--secondary .md-nav__link:hover {
  color: var(--brand-amber-hover);
}

[data-md-color-scheme="slate"] .md-sidebar--secondary .md-nav .md-nav .md-nav__link:hover,
[data-md-color-scheme="slate"] .md-sidebar--secondary .md-nav[data-md-level="2"] .md-nav__link:hover,
[data-md-color-scheme="slate"] .md-sidebar--secondary .md-nav .md-nav .md-nav .md-nav__link:hover,
[data-md-color-scheme="slate"] .md-sidebar--secondary .md-nav[data-md-level="3"] .md-nav__link:hover {
  color: var(--brand-amber-hover);
}

.md-sidebar--secondary .md-nav__link--active {
  /* Fallback Material : si le JS custom ne tourne pas, le lien actif reste
   * quand même orange. */
  color: var(--brand-orange-light);
  font-weight: 600;
}

.md-sidebar--secondary .md-nav--secondary > .md-nav__list > .md-nav__item > .md-nav__link--active,
.md-sidebar--secondary .md-nav__link--active,
.md-sidebar--secondary .md-nav__item--active > .md-nav__link,
.md-sidebar--secondary .md-nav__item--active > .md-nav__container > .md-nav__link,
.md-sidebar--secondary .md-nav__link.spnet-toc-current,
.md-sidebar--secondary .md-nav__link.spnet-toc-current-path {
  color: var(--brand-orange-light) !important;
  opacity: 1;
}

.md-sidebar--secondary .md-nav__link.spnet-toc-current,
.md-sidebar--secondary .md-nav__link.spnet-toc-current-path {
  /* Classes ajoutées par toc-state.js :
   * - current = section lue actuellement ;
   * - current-path = parents de cette section.
   */
  font-weight: 600;
}

.md-sidebar--secondary .md-nav__link.spnet-toc-passed:not(.spnet-toc-current):not(.spnet-toc-current-path) {
  /* Les titres déjà lus deviennent discrets, mais avec une teinte chaude.
   * Cela les distingue des niveaux profonds, qui restent gris et plus effacés. */
  color: rgba(118, 84, 58, 0.72) !important;
}

[data-md-color-scheme="slate"] .md-sidebar--secondary .md-nav__link.spnet-toc-passed:not(.spnet-toc-current):not(.spnet-toc-current-path) {
  color: rgba(183, 134, 90, 0.48) !important;
}

.md-sidebar--secondary .md-nav__link.spnet-toc-passed:not(.spnet-toc-current):not(.spnet-toc-current-path):hover,
.md-sidebar--secondary .md-nav__link.spnet-toc-passed:not(.spnet-toc-current):not(.spnet-toc-current-path):focus-visible,
[data-md-color-scheme="slate"] .md-sidebar--secondary .md-nav__link.spnet-toc-passed:not(.spnet-toc-current):not(.spnet-toc-current-path):hover,
[data-md-color-scheme="slate"] .md-sidebar--secondary .md-nav__link.spnet-toc-passed:not(.spnet-toc-current):not(.spnet-toc-current-path):focus-visible {
  /* Le !important du style "déjà lu" ne doit pas bloquer le hover. */
  color: var(--brand-amber-hover) !important;
}

/* ---------- Sidebar: hide scrollbar (scroll still works) ---------- */
.md-sidebar__scrollwrap {
  /* Le scroll reste fonctionnel, mais sans barre visible dans les menus. */
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.md-sidebar__scrollwrap::-webkit-scrollbar {
  display: none;
  width: 0;
  height: 0;
}

/* ---------- Content scrollbars: slim, themed, no arrows ---------- */
.md-typeset pre,
.md-typeset pre > code,
.md-typeset .arithmatex,
.md-typeset .md-typeset__scrollwrap,
.md-typeset table,
.highlight {
  /* Barres de défilement fines pour code, équations longues et tableaux. */
  scrollbar-width: thin;
  scrollbar-color: var(--md-default-fg-color--lighter) transparent;
}
.md-typeset pre::-webkit-scrollbar,
.md-typeset pre > code::-webkit-scrollbar,
.md-typeset .arithmatex::-webkit-scrollbar,
.md-typeset .md-typeset__scrollwrap::-webkit-scrollbar,
.md-typeset table::-webkit-scrollbar,
.highlight::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
.md-typeset pre::-webkit-scrollbar-track,
.md-typeset pre > code::-webkit-scrollbar-track,
.highlight::-webkit-scrollbar-track {
  background: transparent;
}
.md-typeset pre > code::-webkit-scrollbar-track {
  margin-right: var(--spnet-code-scrollbar-inset);
  margin-left: var(--spnet-code-scrollbar-inset);
}
.md-typeset pre::-webkit-scrollbar-thumb,
.md-typeset pre > code::-webkit-scrollbar-thumb,
.md-typeset .arithmatex::-webkit-scrollbar-thumb,
.md-typeset .md-typeset__scrollwrap::-webkit-scrollbar-thumb,
.md-typeset table::-webkit-scrollbar-thumb,
.highlight::-webkit-scrollbar-thumb {
  background: var(--md-default-fg-color--lighter);
  border-radius: 4px;
}
.md-typeset pre::-webkit-scrollbar-thumb:hover,
.md-typeset pre > code::-webkit-scrollbar-thumb:hover,
.highlight::-webkit-scrollbar-thumb:hover {
  background: var(--md-default-fg-color--light);
}
.md-typeset pre::-webkit-scrollbar-button,
.md-typeset pre > code::-webkit-scrollbar-button,
.md-typeset .arithmatex::-webkit-scrollbar-button,
.md-typeset table::-webkit-scrollbar-button,
.highlight::-webkit-scrollbar-button {
  display: none;
  width: 0;
  height: 0;
}

/* ---------- Layout ---------- */
.md-grid {
  /* Largeur générale du site.
   * 94vw = petites marges latérales proportionnelles ;
   * 128rem = plafond pour éviter une ligne de texte infinie sur écran énorme.
   */
  width: min(94vw, 128rem);
  max-width: none;
}

.md-content {
  /* Important pour que les blocs de code/équations puissent rétrécir et
   * scroller au lieu de casser la mise en page. */
  min-width: 0;
}

.md-main__inner {
  /* Petite respiration sous le header sticky pendant le scroll. */
  margin-top: var(--spnet-header-clearance);
  align-items: flex-start;
}

.md-sidebar--primary {
  padding-top: var(--spnet-header-clearance);
}

.md-sidebar--secondary {
  padding-top: var(--spnet-toc-header-clearance);
}

[data-md-color-scheme="slate"] .md-sidebar--primary,
[data-md-color-scheme="slate"] .md-sidebar--primary .md-sidebar__scrollwrap,
[data-md-color-scheme="slate"] .md-sidebar--primary .md-sidebar__inner,
[data-md-color-scheme="slate"] .md-sidebar--primary .md-nav--primary {
  background-color: var(--spnet-primary-sidebar-bg-dark);
}

.md-sidebar--primary .md-sidebar__scrollwrap {
  margin-top: 0;
}

.md-sidebar--secondary .md-sidebar__scrollwrap {
  /* Petit alignement vertical de la TOC avec le contenu. */
  margin-top: 0;
  padding-top: 0;
}

.md-typeset :is(h1, h2, h3, h4, h5, h6)[id] {
  /* Quand on clique une ancre, le titre ne doit pas être caché sous le header. */
  scroll-margin-top: 5rem;
}

@media screen and (max-width: 76.234em) {
  .md-grid {
    width: 100%;
  }

  .md-main__inner {
    margin-top: 0.9rem;
  }

  .md-typeset :is(h1, h2, h3, h4, h5, h6)[id] {
    scroll-margin-top: 4.35rem;
  }

  [dir="ltr"] .md-typeset h1 {
    margin-left: max(0rem, calc(var(--spnet-edge-rule-inset) - 0.8rem));
  }

  [dir="rtl"] .md-typeset h1 {
    margin-right: max(0rem, calc(var(--spnet-edge-rule-inset) - 0.8rem));
  }

  .md-content__inner > .highlight {
    margin-right: max(0rem, calc(var(--spnet-edge-rule-inset) - 0.8rem));
    margin-left: max(0rem, calc(var(--spnet-edge-rule-inset) - 0.8rem));
    border-radius: 0.15rem;
  }

  .md-content__inner > .highlight > pre,
  .md-content__inner > .highlight > pre > code {
    border-radius: inherit;
  }
}

@media screen and (min-width: 76.25em) {
  .md-sidebar--primary,
  .md-sidebar--primary .md-sidebar__scrollwrap {
    width: var(--spnet-primary-sidebar-width);
  }
}

@media screen and (max-width: 76.234em) {
  .md-sidebar--primary {
    width: var(--spnet-primary-drawer-width);
  }

  [dir="ltr"] .md-sidebar--primary {
    left: var(--spnet-primary-drawer-offset);
  }

  [dir="rtl"] .md-sidebar--primary {
    right: var(--spnet-primary-drawer-offset);
  }

  [dir="ltr"] [data-md-toggle="drawer"]:checked ~ .md-container .md-sidebar--primary {
    transform: translateX(var(--spnet-primary-drawer-width));
  }

  [dir="rtl"] [data-md-toggle="drawer"]:checked ~ .md-container .md-sidebar--primary {
    transform: translateX(var(--spnet-primary-drawer-offset));
  }
}

/* ---------- Typography ---------- */
.md-typeset {
  /* Lisibilité générale du contenu. */
  font-feature-settings: "kern", "liga", "calt";
  line-height: 1.72;
}

.md-typeset h1 {
  /* Titre de page : règle orange horizontale, comme header et footer. */
  padding-bottom: 0.72rem;
  border-bottom: 2px solid rgba(247, 118, 33, 0.64);
  font-weight: 700;
  font-size: clamp(1.9rem, 2.3vw, 2.65rem);
  line-height: 1.12;
  letter-spacing: 0;
  margin-bottom: 1rem;
  color: var(--md-default-fg-color);
  text-wrap: balance;
}

[data-md-color-scheme="default"] .md-typeset h1 {
  border-bottom-color: rgba(216, 95, 18, 0.44);
}

.md-typeset h1 + p {
  margin-top: 0.9rem;
}

.md-typeset h2 {
  /* Les h2 n'ont plus de ligne horizontale : demandé pour alléger les pages. */
  font-weight: 600;
  letter-spacing: -0.01em;
  margin-top: 2.35rem;
  margin-bottom: 0.65rem;
  padding-bottom: 0;
  border-bottom: 0;
}

.md-typeset h3 {
  font-weight: 600;
  margin-top: 1.65rem;
  margin-bottom: 0.45rem;
}

.md-typeset h2#sources-et-autres-liens {
  padding-bottom: 0;
  border-bottom: 0;
}

.md-typeset hr {
  /* Les <hr> générés par certaines extensions sont masqués.
   * Exemple : séparation automatique avant les notes de bas de page. */
  display: none;
}

.md-typeset .footnote {
  margin-top: 0.85rem;
}

.md-typeset .footnote > hr {
  display: none;
}

.md-typeset a {
  /* Tous les liens de contenu sont orange, pas bleus. */
  color: var(--brand-orange-dark);
  text-decoration-color: rgba(216, 95, 18, 0.38);
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.16em;
}

.md-typeset a:hover {
  color: var(--brand-amber-hover);
  text-decoration-color: currentcolor;
}

.md-typeset .footnote a,
.md-typeset .footnote-ref,
.md-typeset .footnote-backref,
.md-typeset .footnote li:target .footnote-backref {
  /* Les notes de bas de page suivent la même couleur de liens. */
  color: var(--brand-orange-dark);
}

.md-typeset .footnote a:hover,
.md-typeset .footnote-ref:hover,
.md-typeset .footnote-backref:hover,
.md-typeset .footnote li:hover .footnote-backref:hover,
.md-typeset .footnote li:target .footnote-backref:hover {
  color: var(--brand-amber-hover);
}

[data-md-color-scheme="slate"] .md-typeset hr {
  display: none;
}

[data-md-color-scheme="slate"] .md-typeset a {
  color: var(--brand-orange-light);
  text-decoration-color: rgba(255, 146, 72, 0.4);
}

[data-md-color-scheme="slate"] .md-typeset a:hover {
  color: var(--brand-amber-hover);
  text-decoration-color: currentcolor;
}

[data-md-color-scheme="slate"] .md-typeset .footnote a,
[data-md-color-scheme="slate"] .md-typeset .footnote-ref,
[data-md-color-scheme="slate"] .md-typeset .footnote-backref,
[data-md-color-scheme="slate"] .md-typeset .footnote li:target .footnote-backref {
  color: var(--brand-orange-light);
}

[data-md-color-scheme="slate"] .md-typeset .footnote a:hover,
[data-md-color-scheme="slate"] .md-typeset .footnote-ref:hover,
[data-md-color-scheme="slate"] .md-typeset .footnote-backref:hover,
[data-md-color-scheme="slate"] .md-typeset .footnote li:hover .footnote-backref:hover,
[data-md-color-scheme="slate"] .md-typeset .footnote li:target .footnote-backref:hover {
  color: var(--brand-amber-hover);
}

/* ---------- Equations ---------- */
.md-typeset div.arithmatex {
  /* Les équations longues peuvent défiler horizontalement sur petit écran. */
  margin: 1.4rem 0;
  overflow-x: auto;
  font-size: 1.05rem;
}

.md-typeset mjx-container[jax="CHTML"][display="true"] {
  /* Léger agrandissement des équations centrées, sans toucher au texte. */
  font-size: 112% !important;
}

/* ---------- Code blocks ---------- */
.md-typeset .highlight {
  /* Espacement vertical autour des blocs de code. */
  position: relative;
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
}

.md-typeset .highlight + .highlight {
  /* Deux blocs de code consécutifs ont besoin de plus d'air entre eux. */
  margin-top: 0.75rem;
}

.md-typeset .highlight + p,
.md-typeset p + .highlight {
  margin-top: 0.55rem;
}

.md-typeset pre > code {
  /* Padding interne du snippet, compact mais avec la place du bouton copier. */
  padding: 0.36rem 2.45rem 0.4rem 0.78rem;
  font-size: 0.84rem;
  line-height: 1.42;
}

[data-md-color-scheme="slate"] {
  /* Couleurs de coloration syntaxique en thème sombre. */
  --md-code-bg-color: #1b1b1b;
  --md-code-fg-color: #d8d8d8;
  --md-code-hl-keyword-color: #f08a4b;
  --md-code-hl-string-color: #7fbf8f;
  --md-code-hl-number-color: #e2a46f;
  --md-code-hl-function-color: #d6bc6d;
  --md-code-hl-constant-color: #d8d8d8;
  --md-code-hl-special-color: #d98787;
  --md-code-hl-operator-color: #b8b8b8;
  --md-code-hl-punctuation-color: #b8b8b8;
  --md-code-hl-comment-color: #858585;
  --md-code-hl-generic-color: #b8b8b8;
  --md-code-hl-variable-color: #d8d8d8;
}

[data-md-color-scheme="slate"] .highlight,
[data-md-color-scheme="slate"] .highlight pre,
[data-md-color-scheme="slate"] .md-typeset pre > code {
  background-color: var(--md-code-bg-color);
}

[data-md-color-scheme="slate"] .highlight {
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 0.2rem;
}

.md-typeset .md-code__nav {
  /* Boutons Material situés dans les blocs de code : copie, sélection, etc. */
  top: 0.52rem;
  right: 0.72rem;
  gap: 0;
  padding: 0;
  overflow: hidden;
  border: 1px solid rgba(255, 146, 72, 0.2);
  border-radius: 0.16rem;
  background-color: #101010;
  box-shadow: 0 0.25rem 0.7rem rgba(0, 0, 0, 0.28);
  transition:
    background-color 150ms ease,
    border-color 150ms ease;
}

.md-typeset .md-code__nav:hover,
.md-typeset .md-code__nav:focus-within {
  border-color: rgba(242, 211, 139, 0.45);
  background-color: #151515;
}

.md-typeset .md-code__button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.9em;
  height: 1.9em;
  border-radius: inherit;
  color: var(--brand-orange-light);
}

.md-typeset .md-code__button:hover,
.md-typeset .md-code__button:focus-visible {
  background-color: transparent;
  color: var(--brand-amber-hover);
}

.md-typeset .md-code__button--active {
  color: var(--brand-amber-hover) !important;
}

.md-typeset .md-clipboard {
  /* Bouton "copier" quand Material utilise l'ancien bouton simple. */
  position: absolute;
  top: 0.52rem;
  right: 0.72rem;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 1.9em;
  height: 1.9em;
  border: 1px solid rgba(255, 146, 72, 0.2);
  border-radius: 0.16rem;
  background-color: #101010;
  color: var(--brand-orange-light);
  box-shadow: 0 0.25rem 0.7rem rgba(0, 0, 0, 0.28);
  transition:
    background-color 150ms ease,
    border-color 150ms ease,
    color 150ms ease;
}

.md-typeset .md-clipboard:hover,
.md-typeset .md-clipboard:focus-visible {
  border-color: rgba(242, 211, 139, 0.45);
  background-color: #151515;
  color: var(--brand-amber-hover);
}

[data-md-color-scheme="slate"] .highlight span.filename {
  background-color: #222;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--md-default-fg-color);
}

[data-md-color-scheme="slate"] .highlight .linenos,
[data-md-color-scheme="slate"] .highlight .linenodiv {
  color: #777;
}

[data-md-color-scheme="default"] .highlight pre,
[data-md-color-scheme="default"] .md-typeset pre > code {
  background-color: #fcf8f3;
}
[data-md-color-scheme="default"] .highlight {
  /* En thème clair, un léger bord orange suffit pour identifier le code. */
  border-left: 3px solid var(--brand-orange-light);
  border-radius: 0.2rem;
}

/* Inline code in orange tint */
[data-md-color-scheme="default"] .md-typeset code:not(pre code) {
  /* Code inline en thème clair : exemple `variable`. */
  background-color: var(--brand-orange-soft);
  color: var(--brand-orange-dark);
}

/* ---------- Admonitions: neutral blocks with restrained warm accents ---------- */
.md-typeset :is(.admonition, details) {
  /*
   * Blocs admonition : !!! note, !!! warning, !!! danger...
   *
   * Material donne normalement une couleur très différente à chaque type.
   * Ici on uniformise le rendu : blocs sombres/neutres, avec seulement une
   * bordure gauche colorée pour identifier le type.
   */
  --callout-accent: #a88f72;
  --callout-border: rgba(120, 103, 84, 0.24);
  --callout-title-bg: rgba(82, 68, 54, 0.08);

  border-color: var(--callout-border);
  border-left-color: var(--callout-accent);
  border-left-width: 0.16rem;
  box-shadow: none;
}

.md-typeset :is(.admonition-title, summary) {
  color: var(--md-default-fg-color);
  background-color: var(--callout-title-bg);
}

.md-typeset :is(.admonition-title, summary)::before {
  background-color: var(--callout-accent);
}

[data-md-color-scheme="slate"] .md-typeset :is(.admonition, details) {
  --callout-border: rgba(255, 255, 255, 0.1);
  --callout-title-bg: #1b1a18;

  background-color: #151515;
}

.md-typeset :is(.admonition.note, details.note, .admonition.info, details.info) {
  /* Note / info : accent doré. */
  --callout-accent: #d1963f;
}

.md-typeset :is(.admonition.abstract, details.abstract, .admonition.summary, details.summary, .admonition.tldr, details.tldr) {
  /* Résumé / abstract : accent brun clair. */
  --callout-accent: #b8794f;
}

.md-typeset :is(.admonition.tip, details.tip, .admonition.success, details.success) {
  /* Astuce / succès : accent jaune doux. */
  --callout-accent: #b99a4e;
}

.md-typeset :is(.admonition.example, details.example, .admonition.question, details.question) {
  --callout-accent: #a8876a;
}

.md-typeset :is(.admonition.warning, details.warning, .admonition.attention, details.attention, .admonition.caution, details.caution) {
  /* Avertissement : accent orange de la marque. */
  --callout-accent: var(--brand-orange);
}

.md-typeset :is(.admonition.failure, details.failure, .admonition.danger, details.danger, .admonition.bug, details.bug) {
  --callout-accent: #be6a55;
}

.md-typeset :is(.admonition.quote, details.quote) {
  --callout-accent: #8f8880;
}

.md-typeset :is(
  .admonition.note,
  details.note,
  .admonition.info,
  details.info,
  .admonition.abstract,
  details.abstract,
  .admonition.summary,
  details.summary,
  .admonition.tldr,
  details.tldr,
  .admonition.tip,
  details.tip,
  .admonition.success,
  details.success,
  .admonition.example,
  details.example,
  .admonition.question,
  details.question,
  .admonition.warning,
  details.warning,
  .admonition.attention,
  details.attention,
  .admonition.caution,
  details.caution,
  .admonition.failure,
  details.failure,
  .admonition.danger,
  details.danger,
  .admonition.bug,
  details.bug,
  .admonition.quote,
  details.quote
) {
  /* !important est utilisé ici pour prendre le dessus sur les couleurs
   * propres à Material pour chaque type d'admonition. */
  border-color: var(--callout-border) !important;
  border-left-color: var(--callout-accent) !important;
}

.md-typeset :is(
  .note,
  .info,
  .abstract,
  .summary,
  .tldr,
  .tip,
  .success,
  .example,
  .question,
  .warning,
  .attention,
  .caution,
  .failure,
  .danger,
  .bug,
  .quote
) > :is(.admonition-title, summary) {
  background-color: var(--callout-title-bg) !important;
}

.md-typeset :is(
  .note,
  .info,
  .abstract,
  .summary,
  .tldr,
  .tip,
  .success,
  .example,
  .question,
  .warning,
  .attention,
  .caution,
  .failure,
  .danger,
  .bug,
  .quote
) > :is(.admonition-title, summary)::before {
  background-color: var(--callout-accent) !important;
}

.md-typeset .admonition-title,
.md-typeset summary {
  font-weight: 600;
}

/* ---------- Hero on landing ---------- */
.hero {
  /* Ancien bloc d'accueil. Gardé au cas où la page d'accueil serait enrichie. */
  text-align: center;
  padding: 1.5rem 1rem 0.5rem;
}
.hero img.hero-logo {
  width: min(280px, 60%);
  height: auto;
  margin: 0 auto 1.2rem;
  display: block;
}
.hero .hero-tagline {
  font-size: 2rem;
  font-weight: 700;
  letter-spacing: 0;
  margin: 0.25rem 0 0.5rem;
  line-height: 1.15;
}
.hero .hero-tagline strong {
  color: var(--brand-orange);
  font-weight: 700;
}
.hero .hero-lead {
  font-size: 1.05rem;
  color: var(--md-default-fg-color--light);
  max-width: 38rem;
  margin: 0 auto 1.5rem;
  line-height: 1.55;
}

@media screen and (max-width: 30em) {
  .hero {
    padding: 1rem 0.5rem 0.25rem;
  }
  .hero img.hero-logo {
    width: min(220px, 70%);
    margin-bottom: 0.8rem;
  }
  .hero .hero-tagline {
    font-size: 1.5rem;
  }
  .hero .hero-lead {
    font-size: 1rem;
  }
}

/* ---------- Grid cards ---------- */
.md-typeset .grid.cards > ul > li,
.md-typeset .grid.cards > .card {
  /* Cartes Markdown éventuelles, générées par l'extension grid/cards. */
  border: 1px solid var(--md-default-fg-color--lightest);
  border-radius: 0.4rem;
  transition: border-color 200ms ease, transform 200ms ease, box-shadow 200ms ease;
}
.md-typeset .grid.cards > ul > li:hover {
  border-color: var(--brand-orange);
  transform: translateY(-2px);
  box-shadow: 0 6px 18px -8px rgba(247, 118, 33, 0.35);
}

.md-typeset .grid.cards .twemoji {
  height: 2rem;
  width: 2rem;
}

.md-typeset .grid.cards a {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
}

.md-typeset .grid.cards a .twemoji {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1rem;
  height: 1rem;
}

.md-typeset .grid.cards a .twemoji svg {
  width: 1rem;
  height: 1rem;
}

/* ---------- Tables ---------- */
.md-typeset table:not([class]) {
  /* Tableaux Markdown standards. `:not([class])` évite de toucher aux
   * tableaux internes générés par des extensions. */
  font-size: 0.78rem;
  border-collapse: separate;
  border-spacing: 0;
  border: 1px solid rgba(90, 90, 90, 0.18);
}
.md-typeset table:not([class]) th {
  /* En-tête gris clair/sombre avec texte orange. */
  background-color: #ece8e2;
  color: var(--brand-orange-dark);
  font-weight: 700;
  border-bottom: 1px solid rgba(216, 95, 18, 0.34);
}
.md-typeset table:not([class]) td {
  border-top-color: rgba(90, 90, 90, 0.14);
}
.md-typeset table:not([class]) a {
  /* Les liens dans les tableaux suivent la palette du site. */
  color: var(--brand-orange-dark);
  font-weight: 400;
  text-decoration-color: rgba(216, 95, 18, 0.38);
  text-decoration-thickness: 0.08em;
  text-underline-offset: 0.16em;
}
.md-typeset table:not([class]) a:hover {
  color: var(--brand-amber-hover);
  text-decoration-color: currentcolor;
}
[data-md-color-scheme="slate"] .md-typeset table:not([class]) th {
  background-color: #242424;
  color: var(--brand-orange-light);
  border-bottom-color: rgba(255, 146, 72, 0.34);
}
[data-md-color-scheme="slate"] .md-typeset table:not([class]) {
  border-color: rgba(255, 255, 255, 0.11);
}
[data-md-color-scheme="slate"] .md-typeset table:not([class]) td {
  border-top-color: rgba(255, 255, 255, 0.09);
}
[data-md-color-scheme="slate"] .md-typeset table:not([class]) tbody tr:hover {
  background-color: rgba(238, 203, 122, 0.045);
}
[data-md-color-scheme="slate"] .md-typeset table:not([class]) a {
  color: var(--brand-orange-light);
  font-weight: 400;
  text-decoration-color: rgba(255, 146, 72, 0.4);
}
[data-md-color-scheme="slate"] .md-typeset table:not([class]) a:hover {
  color: var(--brand-amber-hover);
  text-decoration-color: currentcolor;
}

/* ---------- Search highlight ---------- */
.md-search-result__teaser mark,
.md-search-result__title mark {
  /* Surlignage des mots trouvés dans la recherche. */
  background-color: var(--brand-orange-soft);
  color: var(--brand-orange-dark);
}

/* ---------- Inline highlights ---------- */
.md-typeset mark {
  /* Surlignage Markdown avec ==texte==.
   * Le gras rend le highlight lisible en thème sombre. */
  padding: 0.05em 0.18em;
  border-radius: 0.08rem;
  background-color: #f5d88a;
  color: #171615;
  font-weight: 700;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

[data-md-color-scheme="slate"] .md-typeset mark {
  background-color: #eecb7a;
  color: #171615;
}

/* ---------- Migrated Sphinx content ---------- */
.md-typeset .media-center {
  /* Classe ajoutée lors de la migration Sphinx -> MkDocs pour centrer médias. */
  display: flex;
  justify-content: center;
  margin-right: auto;
  margin-left: auto;
  text-align: center;
}

.md-typeset .vspace {
  /* Espace vertical standard autour des médias migrés. */
  margin-top: 1rem;
  margin-bottom: 1rem;
}

.md-typeset p.media-center img,
.md-typeset > p > img {
  height: auto;
  max-width: 100%;
}

.md-typeset .spnet-lightbox-target {
  /* Images rendues cliquables par lightbox.js. */
  cursor: zoom-in;
}

.md-typeset .spnet-lightbox-target:hover,
.md-typeset .spnet-lightbox-target:focus-visible {
  outline: 0;
}

body.spnet-lightbox-open {
  /* Quand une image est ouverte, la page derrière ne doit pas scroller. */
  overflow: hidden;
}

.spnet-lightbox {
  /* Calque plein écran qui assombrit la page et centre l'image agrandie. */
  position: fixed;
  z-index: 10000;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  padding: clamp(1rem, 3vw, 2.5rem);
  background: rgba(12, 12, 12, 0.88);
  opacity: 0;
  pointer-events: none;
  transition: opacity 180ms ease;
}

.spnet-lightbox.is-open {
  opacity: 1;
  pointer-events: auto;
}

.spnet-lightbox__image {
  /*
   * Fond damier sombre : utile pour les PNG transparents.
   * Sans ça, les images transparentes devenaient blanches en thème sombre.
   */
  width: auto;
  height: auto;
  max-width: 94vw;
  max-height: 84vh;
  object-fit: contain;
  background-color: #171615;
  background-image:
    linear-gradient(45deg, rgba(255, 255, 255, 0.04) 25%, transparent 25%),
    linear-gradient(-45deg, rgba(255, 255, 255, 0.04) 25%, transparent 25%),
    linear-gradient(45deg, transparent 75%, rgba(255, 255, 255, 0.04) 75%),
    linear-gradient(-45deg, transparent 75%, rgba(255, 255, 255, 0.04) 75%);
  background-position:
    0 0,
    0 0.35rem,
    0.35rem -0.35rem,
    -0.35rem 0;
  background-size: 0.7rem 0.7rem;
  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.55);
}

.spnet-lightbox__caption {
  max-width: min(94vw, 64rem);
  color: #ddd;
  font-size: 0.72rem;
  line-height: 1.45;
  text-align: center;
}

.spnet-lightbox__actions {
  /* Boutons télécharger/fermer placés en haut à droite de l'écran. */
  position: fixed;
  top: 0.8rem;
  right: 0.8rem;
  display: flex;
  gap: 0.45rem;
}

.spnet-lightbox__close,
.spnet-lightbox__download {
  /* Boutons ronds de la lightbox. */
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.2rem;
  height: 2.2rem;
  border: 1px solid rgba(255, 146, 72, 0.55);
  border-radius: 50%;
  background: rgba(23, 22, 21, 0.9);
  color: var(--brand-orange-light);
  font-size: 1.35rem;
  line-height: 1;
  text-decoration: none;
  cursor: pointer;
}

.spnet-lightbox__close:hover,
.spnet-lightbox__close:focus-visible,
.spnet-lightbox__download:hover,
.spnet-lightbox__download:focus-visible {
  background: rgba(35, 31, 27, 0.96);
  border-color: var(--brand-amber-hover);
  color: var(--brand-amber-hover);
  outline: 0;
}

.md-typeset iframe {
  /* Vidéos intégrées : centrées, sans bordure, largeur limitée au contenu. */
  display: block;
  max-width: 100%;
  margin: 1rem auto;
  border: 0;
}
