*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
/* `hidden` doit toujours l'emporter : la valeur par défaut du navigateur perd
   face à la moindre classe qui pose un `display` (.badge, .row, .card...).
   Vit ici, dans la couche de base chargée par les 86 pages — et non plus dans
   ux-polish.css, absente des pages d'administration, où un élément marqué
   `hidden` restait donc visible. */
[hidden] { display: none !important; }
html, body { height: 100%; }
body {
  font-family: var(--font-sans);
  background: var(--bg);
  color: var(--text);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  line-height: 1.5;
  overflow-wrap: break-word;
}
img, svg, video { display: block; max-width: 100%; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
a { color: inherit; text-decoration: none; }
input, select, textarea { font: inherit; color: inherit; }
h1,h2,h3,h4,h5 { font-family: var(--font-display); letter-spacing:-0.02em; line-height:1.15; font-weight:700;}
h1 { font-size: clamp(2rem, 4vw, 3.25rem); }
h2 { font-size: clamp(1.6rem, 2.6vw, 2.25rem); }
h3 { font-size: 1.25rem; }
p { color: var(--text-muted); }
:focus-visible { outline: 2px solid var(--electric-500); outline-offset: 2px; border-radius: 6px;}
::selection { background: var(--electric-100); color: var(--navy-800); }
