/* ----------------------------------------------------------------------------
 * CSS Reset — variante du Modern CSS Reset d'Andy Bell, ajustée v2.6
 * Source d'inspiration : https://piccalil.li/blog/a-modern-css-reset/
 * --------------------------------------------------------------------------*/

/* Box-sizing global */
*,
*::before,
*::after {
    box-sizing: border-box;
}

/* Reset des marges par défaut sur les blocs typographiques.
   On les redéfinit dans base.css avec une rythmique cohérente. */
body,
h1, h2, h3, h4, h5, h6,
p, blockquote,
figure, hr,
dl, dd,
ul, ol {
    margin: 0;
}

/* Base body : on coupe le scroll horizontal accidentel et on optimise le rendu texte. */
html {
    text-size-adjust: 100%;
    -webkit-text-size-adjust: 100%;
    -webkit-tap-highlight-color: transparent;
}
body {
    min-height: 100vh;
    min-height: 100dvh; /* Couvre les barres mobiles dynamiques */
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    line-height: var(--cn-leading-normal);
}

/* Listes : retirer puces et padding par défaut quand on les utilise pour navigation/cards.
   Pour le contenu rédactionnel (prose-content), on remettra le style au cas par cas. */
ul[role="list"],
ol[role="list"] {
    list-style: none;
    padding: 0;
}

/* Médias : par défaut block + max-width 100% pour responsive sain. */
img,
picture,
video,
canvas,
svg {
    display: block;
    max-width: 100%;
    height: auto;
}

/* SVG inline : hériter de la couleur du parent
 * 
 * Mais NE PAS écraser fill="none" ou stroke="none" explicitement défini
 * sur le SVG via attribut HTML. C'est pourquoi on cible uniquement les
 * <svg> qui n'ont pas d'attribut fill du tout. Évite le bug v0.8.x où
 * l'icône loupe (avec fill="none" stroke="currentColor") apparaissait
 * comme un disque plein parce que le CSS global remplissait le cercle. */
svg:not([fill]) {
    fill: currentColor;
}

/* Inputs : héritent de la typographie pour cohérence. */
input,
button,
textarea,
select {
    font: inherit;
    color: inherit;
}

button {
    background: none;
    border: 0;
    padding: 0;
    cursor: pointer;
}

/* Liens : on retire le soulignement par défaut, on le restaure dans base.css
   où on aura le contexte (prose vs nav). */
a {
    color: inherit;
    text-decoration: none;
}

/* Focus visible : on garantit qu'aucun navigateur ne masque le focus.
   Style fin dans base.css. */
:focus {
    outline: none;
}
:focus-visible {
    outline: var(--cn-border-medium) solid var(--cn-or);
    outline-offset: 2px;
    border-radius: var(--cn-radius-sm);
}

/* Texte sélectionné : couleur de marque pour identité visuelle. */
::selection {
    background-color: var(--cn-or-50);
    color: var(--cn-bleu-nuit);
}

/* Tableaux : reset propre pour rédiger en CSS plutôt qu'en attributs HTML. */
table {
    border-collapse: collapse;
    width: 100%;
}

/* Respect des préférences utilisateur sur l'animation (a11y).
   Si l'utilisateur a coché "reduce motion" dans son OS, on désactive tout. */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* hr : ligne de séparation discrète par défaut. */
hr {
    border: 0;
    border-top: var(--cn-border-thin) solid var(--cn-bleu-nuit-20);
    margin: var(--cn-space-8) 0;
}
