/*
  CHARTE-VEGAN.md, section 7 (charte graphique) — implémentation.
  Valeurs chiffrées : voir CHARTE-VEGAN.md pour le détail et les
  contrastes mesurés. Ce fichier ne fait qu'appliquer ces chiffres.
*/

:root{
  color-scheme: light;

  /* --- palette claire (par défaut) --- */
  --fond: #faf8f4;
  --fond-carte: #ffffff;
  --texte: #1f2a1f;
  --texte-attenue: #3a3f36;
  --accent-vert: #2f6b2f;
  --accent-chaud: #8a4a1c;
  --bordure: #d8d2c4;
  --ombre: none;

  /* --- typographie (px) ---
     Corps agrandi (fondateur 15/09 : « police trop petite, ça fait mal aux
     yeux »). Base 20 px, hiérarchie de titres nettement plus haute. */
  --taille-base: 20px;
  --interligne-base: 1.65;
  --taille-petite: 16px;
  --interligne-petite: 1.5;
  --taille-h1: 44px;
  --interligne-h1: 1.2;
  --taille-h2: 32px;
  --interligne-h2: 1.3;
  --taille-h3: 24px;
  --interligne-h3: 1.35;

  /* --- gabarit ---
     Largeurs élargies (fondateur 15/09 : « utilise TOUTE la largeur, la colonne
     est trop étroite et trop centrée »). Contenu jusqu'à 1500 px, colonne de
     lecture portée à 88ch pour un confort de lecture sans désert latéral. */
  --rayon: 2px;
  --mesure-lecture: 88ch;
  --largeur-contenu: min(1500px, 94vw);
  --cible-tactile: 44px;
  --gouttiere: 28px;
  --espace-max-vide: 80px; /* aucune zone vide ne doit dépasser cette hauteur */
}

[data-theme="sombre"]{
  color-scheme: dark;
  --fond: #161a15;
  --fond-carte: #20261e;
  --texte: #eef0e8;
  --texte-attenue: #c7cdbf;
  --accent-vert: #9fd8a0;
  --accent-chaud: #c9a86b;
  --bordure: #33392f;
  --ombre: 0 1px 3px rgba(0,0,0,.6);
}

*{ box-sizing: border-box; }

html,body{ margin:0; padding:0; }

body{
  background: var(--fond);
  color: var(--texte);
  font-family: Georgia, "Liberation Serif", serif;
  font-size: var(--taille-base);
  line-height: var(--interligne-base);
  min-height: 100vh;
}

a{ color: var(--accent-vert); }
a:visited{ color: var(--accent-vert); }

h1,h2,h3{
  font-family: -apple-system, "Segoe UI", Roboto, sans-serif;
  font-weight: 700;
  color: var(--texte);
}
h1{ font-size: var(--taille-h1); line-height: var(--interligne-h1); margin: 0 0 .5em; }
h2{ font-size: var(--taille-h2); line-height: var(--interligne-h2); margin: 1.4em 0 .5em; }
h3{ font-size: var(--taille-h3); line-height: var(--interligne-h3); margin: 1.2em 0 .4em; }

p{ margin: 0 0 1em; }

/* --- ruban de travail (le canevas n'est pas en ligne) --- */
.ruban-brouillon{
  background: var(--accent-chaud);
  color: #fff;
  text-align: center;
  font-family: -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: var(--taille-petite);
  font-weight: 700;
  letter-spacing: .04em;
  padding: 10px var(--gouttiere);
  text-transform: uppercase;
}

/* --- en-tête : pleine largeur, jamais de désert lateral --- */
.entete{
  width: 100%;
  background: var(--fond-carte);
  border-bottom: 1px solid var(--bordure);
}
.entete-barre{
  max-width: var(--largeur-contenu);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: var(--gouttiere);
  padding: 16px var(--gouttiere);
}
.entete-titre{
  font-family: -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: 22px;
  font-weight: 700;
  color: var(--texte);
  text-decoration: none;
}
.entete-titre .place-a-decider{
  display: inline-block;
  font-size: var(--taille-petite);
  font-weight: 400;
  font-style: italic;
  color: var(--texte-attenue);
}
nav.entete-nav{ display:flex; flex-wrap: wrap; gap: 4px; }
nav.entete-nav a{
  display: inline-flex;
  align-items: center;
  min-height: var(--cible-tactile);
  padding: 0 14px;
  border-radius: var(--rayon);
  font-family: -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: var(--taille-petite);
  font-weight: 600;
  text-decoration: none;
  color: var(--texte);
}
nav.entete-nav a:hover, nav.entete-nav a[aria-current="page"]{
  background: var(--accent-vert);
  color: var(--fond-carte);
}
[data-theme="sombre"] nav.entete-nav a[aria-current="page"],
[data-theme="sombre"] nav.entete-nav a:hover{ color: #10140e; }

button.bouton-theme{
  min-height: var(--cible-tactile);
  min-width: var(--cible-tactile);
  border-radius: var(--rayon);
  border: 1px solid var(--bordure);
  background: var(--fond);
  color: var(--texte);
  font-size: var(--taille-petite);
  font-weight: 600;
  cursor: pointer;
  padding: 0 12px;
}

/* --- structure de page : occupe l'écran, colonne de lecture au centre --- */
.page{
  width: 100%;
  min-height: calc(100vh - 140px);
  background: var(--fond);
}
.contenu-large{
  max-width: var(--largeur-contenu);
  margin: 0 auto;
  padding: var(--gouttiere);
}
.colonne-lecture{
  max-width: min(var(--mesure-lecture), 94vw);
  margin: 0 auto;
  padding: calc(var(--gouttiere) * 1.5) var(--gouttiere) 60px;
}

/* --- pied de page --- */
.pied{
  width: 100%;
  border-top: 1px solid var(--bordure);
  background: var(--fond-carte);
  padding: 24px var(--gouttiere) 40px;
  font-size: var(--taille-petite);
  color: var(--texte-attenue);
}
.pied-barre{ max-width: var(--largeur-contenu); margin: 0 auto; }
.pied a{ color: var(--texte-attenue); text-decoration: underline; }

/* --- fil d'ariane chapitre précédent / suivant : remplit la largeur --- */
.nav-chapitres{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--gouttiere);
  margin: 40px 0 0;
}
.nav-chapitres a{
  display: block;
  min-height: calc(var(--cible-tactile) + 20px);
  border: 1px solid var(--bordure);
  border-radius: var(--rayon);
  padding: 12px 16px;
  text-decoration: none;
  color: var(--texte);
  background: var(--fond-carte);
}
.nav-chapitres .suivant{ text-align: right; }
.nav-chapitres .etiquette{
  display:block; font-size: 12px; text-transform: uppercase;
  letter-spacing: .05em; color: var(--texte-attenue); margin-bottom: 4px;
}

/* --- badges --- */
.badge{
  display:inline-block;
  font-family: -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: 13px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: var(--rayon);
  background: var(--accent-vert);
  color: var(--fond-carte);
}
[data-theme="sombre"] .badge{ color: #10140e; }
.badge.gratuit{ background: var(--accent-vert); }
.badge.ferme{ background: var(--accent-chaud); }
.badge.type-cru{ background: var(--accent-vert); }
.badge.type-cuit{ background: var(--accent-chaud); }
.badge.type-mixte{ background: var(--texte-attenue); color: var(--fond-carte); }

/* ==================================================================
   BIBLIOTHÈQUE D'ENCARTS — chacun sa forme, jamais un fourre-tout
   ================================================================== */

.encart{
  border-radius: var(--rayon);
  border: 1px solid var(--bordure);
  background: var(--fond-carte);
  box-shadow: var(--ombre);
  margin: 2em 0;
  padding: var(--gouttiere);
}

/* 1. Encart de source — pied de chapitre, modèle du chapitre 27 ancien */
.encart-source{
  border-left: 4px solid var(--accent-vert);
}
.encart-source h2{
  font-size: var(--taille-h3);
  margin-top: 0;
}
.encart-source ul{ margin: 0; padding-left: 1.2em; }
.encart-source li{ margin-bottom: .7em; font-size: var(--taille-petite); line-height: var(--interligne-petite); color: var(--texte-attenue); }
.encart-source .aucune-source{ font-style: italic; color: var(--texte-attenue); font-size: var(--taille-petite); }

/* 2. Encart de citation — passage détaché */
.encart-citation{
  border: none;
  border-left: 4px solid var(--accent-vert);
  background: transparent;
  padding: 8px var(--gouttiere) 8px calc(var(--gouttiere) - 4px);
  font-family: Georgia, "Liberation Serif", serif;
}
.encart-citation p{
  font-size: 24px;
  line-height: 1.4;
  font-style: italic;
  color: var(--texte);
  margin: 0;
}
.encart-citation footer{
  margin-top: 10px;
  font-size: var(--taille-petite);
  font-family: -apple-system, "Segoe UI", Roboto, sans-serif;
  color: var(--texte-attenue);
}

/* 3. Encart de mise en garde — ton neutre, jamais anxiogène (A103) */
.encart-mise-en-garde{
  border: 1px solid var(--accent-chaud);
  border-left: 4px solid var(--accent-chaud);
  background: var(--fond-carte);
}
.encart-mise-en-garde .titre-encart{
  display:flex; align-items:center; gap:8px;
  font-family: -apple-system, "Segoe UI", Roboto, sans-serif;
  font-weight: 700;
  color: var(--accent-chaud);
  font-size: var(--taille-h3);
  margin-bottom: .5em;
}
.encart-mise-en-garde .titre-encart .puce{
  display:inline-flex; align-items:center; justify-content:center;
  width: 22px; height:22px; border-radius: 999px;
  background: var(--accent-chaud); color: var(--fond-carte);
  font-size: 13px; font-weight:700;
}
.encart-mise-en-garde p{ font-size: var(--taille-petite); color: var(--texte); margin-bottom: .6em; }
.encart-mise-en-garde p:last-child{ margin-bottom: 0; }

/* 4. Encart de recette */
.encart-recette h2{ margin-top:0; }
.encart-recette .meta-recette{
  display:flex; gap:10px; flex-wrap:wrap; align-items:center;
  font-size: var(--taille-petite); color: var(--texte-attenue);
  margin-bottom: 1em;
}
.encart-recette h3{ font-size: var(--taille-h3); }
.encart-recette ul, .encart-recette ol{ padding-left: 1.3em; }
.encart-recette li{ margin-bottom: .5em; }
.encart-recette .source-recette{
  margin-top: 1.4em; padding-top: 1em; border-top: 1px solid var(--bordure);
  font-size: var(--taille-petite); color: var(--texte-attenue);
}

/* 5. Encart d'illustration — image + credit + licence, toujours visibles */
.encart-illustration{ padding: 0; overflow:hidden; margin-left:auto; margin-right:auto; }
.encart-illustration img{
  width: 100%; height: auto; display:block;
  background: var(--fond);
}
.encart-illustration figcaption{
  padding: 10px var(--gouttiere) var(--gouttiere);
}
.encart-illustration .titre-image{ font-weight:700; display:block; margin-bottom:2px; }
.encart-illustration .credit-image{
  font-size: var(--taille-petite); color: var(--texte-attenue); display:block;
}
.encart-illustration .credit-image a{ color: var(--texte-attenue); }

/* 6. Encart de coupure — fin de l'extrait gratuit, la suite est dans le PDF */
.encart-coupure{
  border: 2px solid var(--accent-vert);
  text-align: center;
  padding: calc(var(--gouttiere) * 1.4);
}
.encart-coupure h2{ margin-top:0; }
.encart-coupure p{ max-width: 52ch; margin-left:auto; margin-right:auto; }
.encart-coupure .bouton-suite{
  display:inline-flex; align-items:center; justify-content:center;
  min-height: var(--cible-tactile); padding: 0 22px;
  border-radius: var(--rayon);
  background: var(--accent-vert); color: var(--fond-carte);
  font-family: -apple-system, "Segoe UI", Roboto, sans-serif;
  font-weight: 700; text-decoration:none; margin-top: 10px;
}
[data-theme="sombre"] .encart-coupure .bouton-suite{ color:#10140e; }

/* --- grilles (recettes, illustrations, sommaire) : remplissent la largeur --- */
.grille{
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: var(--gouttiere);
}
.carte{
  border: 1px solid var(--bordure);
  border-radius: var(--rayon);
  background: var(--fond-carte);
  padding: var(--gouttiere);
  display:flex; flex-direction:column; gap:8px;
}
.carte h3{ margin: 0; }
.carte a.lien-carte{ text-decoration:none; color: var(--texte); }
.carte p{ margin:0; font-size: var(--taille-petite); color: var(--texte-attenue); }

/* --- projets (pistes de revenu) : jamais une offre disponible (A068) --- */
.encart-projet{
  border: 1px dashed var(--bordure);
}
.encart-projet .badge{ background: var(--texte-attenue); }

@media (max-width: 480px){
  :root{ --taille-base: 18px; --taille-h1: 32px; --taille-h2: 24px; --taille-h3: 21px; --gouttiere: 18px; }
  .nav-chapitres{ grid-template-columns: 1fr; }
}
