/* =====================================================================
   NEXA Forward — Thème Sphinx (surcharge du thème Read the Docs)
   Consomme exclusivement les tokens de nexa-tokens.css.
   Règles brand : élévation par ombre (jamais bordure gauche épaisse),
   radius <= 8px (jamais full), focus ring Gold, chiffres tabulaires.
   ===================================================================== */

/* ---- Typographie globale ---- */
body, .rst-content {
  font-family: var(--font-family-body);
  color: var(--text-primary);
  font-size: var(--font-size-base);
  line-height: var(--line-height-relaxed);
}
h1, h2, h3, h4,
.rst-content .toctree-wrapper p.caption,
.wy-nav-top {
  font-family: var(--font-family-title);
  color: var(--text-primary);
  font-weight: var(--font-weight-bold);
}
h1 { font-size: var(--font-size-4xl); line-height: var(--line-height-tight); }
h2 { font-size: var(--font-size-2xl); }
h3 { font-size: var(--font-size-xl); }

/* ---- En-tête de la sidebar (logo + recherche + version) ---- */
.wy-side-nav-search {
  background: var(--color-obsidian-900);
  padding: var(--spacing-4) var(--spacing-5) var(--spacing-3);
}
.wy-side-nav-search img.logo { max-width: 84%; margin: var(--spacing-2) auto var(--spacing-1); }
.wy-side-nav-search > a, .wy-side-nav-search > a:visited { color: #fff; }
.wy-side-nav-search input[type=text] {
  border: var(--border-width-thin) solid var(--color-obsidian-600);
  border-radius: var(--radius-lg);
  background: #11161f; color: #fff;
}
.wy-side-nav-search input[type=text]::placeholder { color: var(--color-obsidian-400); }
.wy-side-nav-search .wy-dropdown > a,
.wy-side-nav-search > div.version,
.wy-side-nav-search > div[role="search"] + div { color: var(--color-gold-600); font-weight: var(--font-weight-bold); }

/* ---- Sidebar de navigation ---- */
.wy-nav-side { background: var(--color-obsidian-900); }
.wy-menu-vertical a { color: var(--color-obsidian-100); font-size: 13.5px; }
.wy-menu-vertical a:hover { background: var(--color-obsidian-800); color: #fff; }
.wy-menu-vertical p.caption {
  color: var(--color-gold-600); font-weight: var(--font-weight-bold);
  letter-spacing: 1px; text-transform: uppercase; font-size: var(--font-size-xs);
}
.wy-menu-vertical li.current { background: var(--bg-surface); }
.wy-menu-vertical li.current > a {
  color: var(--text-primary); font-weight: var(--font-weight-semibold);
  /* accent par filet droit fin Gold — pas une bordure gauche épaisse */
  border-right: var(--border-width-medium) solid var(--color-gold-600);
}
.wy-menu-vertical li.toctree-l1.current > a { border-top: none; border-bottom: none; }
.wy-menu-vertical li.current a:hover { background: var(--bg-hover); }
.wy-menu-vertical li.toctree-l2 a, .wy-menu-vertical li.toctree-l3 a { color: var(--color-obsidian-300); }

/* ---- Zone de contenu ---- */
.wy-nav-content { max-width: var(--size-max-text-width); background: var(--bg-app); }
.wy-nav-content-wrap { background: var(--bg-surface); }

/* ---- Liens ---- */
a, a:visited { color: var(--text-secondary); }
a:hover { color: var(--color-gold-700); }
.rst-content .headerlink { color: var(--color-gold-600); }

/* ---- Cartes (grid-item-card de sphinx-design) : élévation par ombre ---- */
.sd-card {
  border: var(--border-width-thin) solid var(--border-subtle) !important;
  border-radius: var(--radius-xl) !important;
  box-shadow: var(--shadow-card);
  transition: box-shadow var(--duration-normal) var(--easing-default),
              transform var(--duration-fast) var(--easing-default);
}
.sd-card:hover { box-shadow: var(--shadow-card-hover); transform: translateY(-1px); }
.sd-card .sd-card-title { font-family: var(--font-family-title); color: var(--text-primary); }

/* ---- Boutons / next-prev ---- */
.btn, .btn-neutral {
  border-radius: var(--radius-md) !important;
  box-shadow: var(--shadow-sm); border: none;
}
.btn:focus, a:focus, button:focus, input:focus {
  outline: none;
  box-shadow: var(--shadow-focus-ring);
}

/* ---- Blocs de code ---- */
.rst-content div[class^="highlight"] {
  border: var(--border-width-thin) solid var(--border-subtle);
  border-radius: var(--radius-xl);
  background: var(--color-obsidian-900);
}
.rst-content div[class^="highlight"] pre {
  color: #e8ebf0; padding: var(--spacing-4) var(--spacing-5);
  font-family: var(--font-family-mono); font-size: 13px;
}
.highlight { background: var(--color-obsidian-900) !important; }
.rst-content code.literal, .rst-content tt.literal {
  color: var(--text-secondary); background: var(--color-ivory-200);
  border: var(--border-width-thin) solid var(--border-subtle);
  border-radius: var(--radius-sm); font-family: var(--font-family-mono);
}

/* ---- Bouton copier (sphinx-copybutton) — accent Gold ---- */
button.copybtn {
  background: var(--color-gold-600); border: none;
  border-radius: var(--radius-sm); opacity: 0.92;
}
button.copybtn:hover { background: var(--color-gold-500); opacity: 1; }
button.copybtn.success { background: var(--color-success-500); }

/* ---- Tableaux (chiffres tabulaires) ---- */
.rst-content table.docutils, .wy-table { border: none; }
.rst-content table.docutils thead th, .wy-table thead th {
  background: var(--color-obsidian-900); color: #fff; border: none;
  text-transform: uppercase; font-size: var(--font-size-xs);
  letter-spacing: 0.6px; padding: var(--spacing-2) var(--spacing-3);
  font-weight: var(--font-weight-bold);
}
.rst-content table.docutils td {
  border-color: var(--border-subtle); padding: var(--spacing-2) var(--spacing-3);
  font-variant-numeric: tabular-nums; font-feature-settings: var(--font-feature-tabular);
}
.rst-content table.docutils tr:nth-child(2n) { background: var(--color-ivory-100); }
.wy-table-responsive table td, .wy-table-responsive table th { white-space: normal; }

/* ---- Admonitions : pas de bordure gauche épaisse, élévation par fond + ombre légère ---- */
.rst-content .admonition {
  border-radius: var(--radius-lg); box-shadow: var(--shadow-sm);
  border: var(--border-width-thin) solid var(--border-subtle);
  border-left: var(--border-width-medium) solid var(--border-subtle);
}
.rst-content .admonition .admonition-title { font-weight: var(--font-weight-semibold); }
.rst-content .note { border-left-color: var(--color-info-500); }
.rst-content .note .admonition-title { background: var(--color-info-100); color: var(--color-info-700); }
.rst-content .tip { border-left-color: var(--color-success-500); }
.rst-content .tip .admonition-title { background: var(--color-success-100); color: var(--color-success-700); }
.rst-content .warning { border-left-color: var(--color-warning-500); }
.rst-content .warning .admonition-title { background: var(--color-warning-100); color: var(--color-warning-700); }
/* admonitions profils */
.rst-content .admonition.eng { border-left-color: var(--color-gold-600); }
.rst-content .admonition.eng .admonition-title { background: var(--color-gold-200); color: var(--color-gold-900); }
.rst-content .admonition.dig { border-left-color: var(--color-obsidian-600); }
.rst-content .admonition.dig .admonition-title { background: var(--color-obsidian-50); color: var(--color-obsidian-700); }

/* ---- Badges de profil inline ---- */
.ptag {
  display: inline-block; font-size: var(--font-size-xs); font-weight: var(--font-weight-bold);
  padding: 2px var(--spacing-2); border-radius: var(--radius-xl); margin: 0 var(--spacing-1) 2px 0;
}
.ptag-eng { background: var(--color-gold-200); color: var(--color-gold-900); border: var(--border-width-thin) solid var(--color-gold-600); }
.ptag-dig { background: var(--color-obsidian-50); color: var(--text-secondary); border: var(--border-width-thin) solid var(--color-obsidian-300); }

/* ---- Verbe HTTP ---- */
.http-verb {
  display: inline-block; font-weight: var(--font-weight-bold); font-size: var(--font-size-xs);
  letter-spacing: 1px; padding: 3px var(--spacing-2); border-radius: var(--radius-sm);
  color: #fff; background: var(--color-success-500); margin-right: var(--spacing-2);
}
.http-verb.post { background: var(--color-success-500); }
.http-verb.get { background: var(--color-info-500); }
.http-verb.patch { background: var(--color-warning-500); }
.http-verb.delete { background: var(--color-error-500); }

/* ---- Figures ---- */
.rst-content img { border: var(--border-width-thin) solid var(--border-subtle); border-radius: var(--radius-lg); }
.rst-content .figure p.caption, .rst-content figcaption {
  font-style: italic; color: var(--text-tertiary); font-size: var(--font-size-sm);
}

/* ---- Barre top mobile ---- */
.wy-nav-top { background: var(--color-obsidian-900); }
.wy-nav-top a { color: #fff; }
