/*
Theme Name:     Le Codex des Gourmands — Child
Theme URI:      https://codexdesgourmands.com
Description:    Thème enfant Kadence pour Le Codex des Gourmands — la pâtisserie qui rate d'abord et réussit ensuite. Palette Encre / Bordeaux / Or, code signature Framboise = ratage / Menthe = réussite. Serif Cormorant Garamond auto-hébergé.
Author:         Chatnuere
Author URI:     https://codexdesgourmands.com
Template:       kadence
Version:        0.7.8
Text Domain:    la-deuxime-fournee
*/

/* ==========================================================================
   0. Police de marque auto-hébergée
   Cormorant Garamond — celle du sceau. Servie depuis le thème, donc aucun
   appel à Google : rien à voir avec OMGF, et rien ne peut la substituer.
   Variable sur l'axe wght (300→700), sous-ensemblée au latin (26 Ko).
   ========================================================================== */
@font-face {
  font-family: 'Cormorant Garamond';
  src: url('assets/fonts/cormorant-garamond-latin.woff2') format('woff2');
  font-weight: 300 700;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Cormorant Garamond';
  src: url('assets/fonts/cormorant-garamond-latin-italic.woff2') format('woff2');
  font-weight: 300 700;
  font-style: italic;
  font-display: swap;
}

/* ==========================================================================
   1. Variables — système « Le Codex des Gourmands » (design v13)
   Palette encre / bordeaux / or. Les noms --df-caramel et --df-rasp sont
   conservés (des dizaines d'usages en dépendent) mais portent désormais
   les teintes bordeaux et framboise profonde de la v13.
   ========================================================================== */
:root {
  /* Surfaces neutres */
  --df-cream:    #F4F1EA;  /* fond principal */
  --df-cream-2:  #EAE4D8;  /* surface secondaire */
  --df-paper:    #FFFFFF;
  --df-ink:      #22201C;  /* encre — texte */
  --df-ink-2:    #615D55;  /* texte secondaire */
  --df-ink-3:    #928C81;  /* tertiaire / captions */
  --df-line:     #DED7C8;
  --df-line-2:   #C6BDA9;

  /* Accent principal — bordeaux */
  --df-caramel:      #7C2D2D;
  --df-caramel-deep: #5A1F1F;
  --df-caramel-bg:   #F1E7E4;

  /* Or — nouveau en v13 (sceau sur fond sombre, accents discrets) */
  --df-or:     #A98A44;
  --df-or-bg:  #F3EDDD;

  /* Code signature : Menthe = réussite, Framboise = ratage */
  --df-mint:      #2E7D5B;
  --df-mint-deep: #1B5540;
  --df-mint-bg:   #E4EFE7;

  --df-rasp:      #9B3B57;
  --df-rasp-deep: #6E2740;
  --df-rasp-bg:   #F3E6EA;

  /* Typographies — Cormorant Garamond remplace Fraunces sur tout le serif */
  --df-serif: 'Cormorant Garamond', Garamond, Georgia, serif;
  --df-sans:  'Work Sans', system-ui, -apple-system, sans-serif;
  --df-brand: var(--df-serif);

  /* Rayons — nettement resserrés en v13 */
  --df-r-sm: 5px;
  --df-r-md: 9px;
  --df-r-lg: 13px;
  --df-r-xl: 17px;

  /* Ombres */
  --df-shadow-sm:  0 1px 2px rgba(34,32,28,.05), 0 2px 8px rgba(34,32,28,.04);
  --df-shadow-md:  0 2px 6px rgba(34,32,28,.06), 0 10px 28px rgba(34,32,28,.09);
  --df-shadow-pop: 0 8px 30px rgba(124,45,45,.16);
}

/* ==========================================================================
   1.b Accessibilité — skip-link & focus visible
   ========================================================================== */

/* Lien « Aller au contenu » : masqué visuellement, révélé au focus clavier */
.df-skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 9999;
  background: var(--df-ink);
  color: var(--df-cream);
  font-family: var(--df-sans);
  font-size: 14px;
  font-weight: 600;
  padding: 10px 16px;
  border-radius: 0 0 var(--df-r-sm) 0;
  text-decoration: none;
}
.df-skip-link:focus {
  left: 0;
  color: var(--df-cream);
  outline: 3px solid var(--df-caramel);
  outline-offset: -3px;
}

/* Focus visible cohérent sur tous les éléments interactifs.
   :focus-visible n'est appliqué qu'au focus clavier (pas au clic souris). */
*:focus-visible {
  outline: 3px solid var(--df-caramel);
  outline-offset: 2px;
  border-radius: 2px;
}
/* Les boutons/liens à bord arrondi gardent le radius parent. */
a.df-button:focus-visible,
button:focus-visible,
.df-chip:focus-visible,
.df-search button:focus-visible {
  outline-offset: 3px;
}

/* ==========================================================================
   2. Typographie globale
   ========================================================================== */
body {
  font-family: var(--df-sans);
  color: var(--df-ink);
  background: var(--df-cream);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, .ff {
  font-family: var(--df-serif);
  font-optical-sizing: auto;
  font-weight: 500;
  letter-spacing: -.2px;
}

/* Cormorant n'a pas les axes SOFT/WONK de Fraunces : la v13 obtient
   le même effet « adouci » par l'italique. */
.ff-soft {
  font-family: var(--df-serif);
  font-style: italic;
}

::selection {
  background: var(--df-caramel);
  color: #fff;
}

/* ==========================================================================
   3. Header
   ========================================================================== */
.df-header-brand {
  display: inline-flex;
  align-items: center;
  gap: 11px;
  text-decoration: none;
  color: var(--df-ink);
}
.df-header-brand .df-wordmark {
  font-family: var(--df-serif);
  font-weight: 500;
  font-size: 19px;
  letter-spacing: .2px;
}

/* ==========================================================================
   4. Liens / micro-interactions
   ========================================================================== */
a {
  color: var(--df-caramel-deep);
  text-decoration-color: var(--df-caramel);
  text-underline-offset: 3px;
  transition: color .15s ease;
}
a:hover { color: var(--df-caramel); }

.df-arrow {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-weight: 600;
  color: var(--df-caramel-deep);
  text-decoration: none;
}
.df-arrow svg { transition: transform .18s ease; }
.df-arrow:hover svg { transform: translateX(4px); }

.df-lift {
  transition: transform .2s cubic-bezier(.2,.7,.3,1), box-shadow .25s ease;
}
.df-lift:hover {
  transform: translateY(-5px);
  box-shadow: var(--df-shadow-md);
}

/* ── Reset des soulignements sur les cartes cliquables ────────
 * Toutes les classes ci-dessous enveloppent une carte avec un <a>.
 * Le navigateur applique text-decoration:underline par défaut sur tous
 * les <a>, ce qui surligne le titre, le texte, etc. à l'intérieur — pas
 * souhaité ici. On reset une bonne fois pour toutes. */
a.df-recipe-card,
a.df-niveau-card,
a.df-sos-row,
a.df-science-card,
a.df-lex-archive__item-link,
a.df-lex__confuse-link,
.df-lex__usage-list a,
.df-hero__popular a,
.df-recipe-card *,
.df-niveau-card *,
.df-science-card *,
.df-lex-archive__item-link *,
.df-lex__confuse-link * {
  text-decoration: none;
}
a.df-recipe-card,
a.df-niveau-card,
a.df-sos-row,
a.df-science-card,
a.df-lex-archive__item-link,
a.df-lex__confuse-link {
  color: inherit;
}

/* ==========================================================================
   5. Prose article — voir la section « Le journal » en fin de feuille :
   les Articles WP ont leur template (single.php) et leur typographie
   (.df-article__content). Les anciennes règles .single-post .entry-content
   gagnaient en spécificité contre elles, d'où leur retrait.
   ========================================================================== */

/* ==========================================================================
   6. Ornements signature (squiggle, stamp, drop cap, placeholder hachuré)
   ========================================================================== */

/* Souligné ondulé caramel sous un mot (à la main) */
.df-squiggle {
  position: relative;
  white-space: nowrap;
}
.df-squiggle::after {
  content: '';
  position: absolute;
  left: -2%;
  right: -2%;
  bottom: -.34em;
  height: .42em;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'><path d='M0 6 Q 8 1 16 6 T 32 6 T 48 6 T 64 6 T 80 6 T 100 6' fill='none' stroke='%237C2D2D' stroke-width='2.4' stroke-linecap='round'/></svg>");
  background-repeat: no-repeat;
  background-size: 100% 100%;
}
.df-squiggle.is-mint::after {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'><path d='M0 6 Q 8 1 16 6 T 32 6 T 48 6 T 64 6 T 80 6 T 100 6' fill='none' stroke='%232E7D5B' stroke-width='2.4' stroke-linecap='round'/></svg>");
}

/* Tampon de verdict (cadre pointillé + légère rotation) */
.df-stamp {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-family: var(--df-sans);
  font-weight: 600;
  font-size: 11px;
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 7px;
  border: 1.5px dashed currentColor;
  transform: rotate(-3deg);
}
.df-stamp--rate   { color: var(--df-rasp-deep);    background: var(--df-rasp-bg); }
.df-stamp--reussi { color: var(--df-mint-deep);    background: var(--df-mint-bg); }
.df-stamp--mitige { color: var(--df-caramel-deep); background: var(--df-caramel-bg); }

/* Drop cap éditorial */
.is-style-df-dropcap::first-letter {
  font-family: var(--df-serif);
  font-weight: 600;
  font-size: 4.6em;
  float: left;
  line-height: .85;
  margin: .05em .12em 0 -.05em;
  color: var(--df-caramel);
}

/* Lede (chapeau) */
.is-style-df-lede {
  font-family: var(--df-serif);
  font-size: 21px;
  line-height: 1.55;
  color: var(--df-ink);
  padding-left: 20px;
  border-left: 4px solid var(--df-caramel);
}

/* Placeholder hachuré caramel (en attendant les vraies photos) */
.df-ph {
  position: relative;
  overflow: hidden;
  background-color: #EDE5DB;
  background-image: repeating-linear-gradient(
    135deg,
    rgba(216,90,48,.10) 0 8px,
    transparent 8px 18px
  );
  border-radius: var(--df-r-md);
  min-height: 160px;
}
.df-ph-label {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: ui-monospace, 'SF Mono', Menlo, monospace;
  font-size: 11px;
  letter-spacing: .02em;
  color: var(--df-caramel-deep);
  opacity: .72;
  text-align: center;
  padding: 0 12px;
}

/* Galère-mètre (4 points caramel) */
.df-galere {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}
.df-galere-dots {
  display: inline-flex;
  gap: 3px;
}
.df-galere-dots span {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: transparent;
  border: 1.5px solid var(--df-line-2);
}
.df-galere-dots span.on {
  background: var(--df-caramel);
  border-color: var(--df-caramel);
}
.df-galere-label {
  font-size: 12px;
  font-weight: 600;
  color: var(--df-caramel-deep);
}

/* Pills colorés */
.df-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  font-weight: 600;
  padding: 4px 11px;
  border-radius: 999px;
  white-space: nowrap;
  background: #EDEAE1;
  color: var(--df-ink-2);
}
.df-pill--caramel { background: var(--df-caramel-bg); color: var(--df-caramel-deep); }
.df-pill--mint    { background: var(--df-mint-bg);    color: var(--df-mint-deep); }
.df-pill--rasp    { background: var(--df-rasp-bg);    color: var(--df-rasp-deep); }

/* ==========================================================================
   7. Barre de progression de lecture (à brancher plus tard, single posts)
   ========================================================================== */
#df-reading-progress {
  position: fixed;
  top: 0;
  left: 0;
  height: 3px;
  width: 0;
  background: var(--df-caramel);
  z-index: 9999;
  transition: width .12s linear;
}

/* ==========================================================================
   8. Composants patterns (hero, recipe-card, search, button, section-head)
   ========================================================================== */

/* Boutons */
.df-button {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: none;
  cursor: pointer;
  font-family: var(--df-sans);
  font-weight: 600;
  font-size: 15px;
  padding: 13px 22px;
  border-radius: 999px;
  text-decoration: none;
  transition: transform .15s ease, box-shadow .2s ease, background .2s ease;
}
.df-button--primary {
  background: var(--df-caramel);
  color: #fff;
}
.df-button--primary:hover {
  background: var(--df-caramel-deep);
  color: #fff;
  transform: translateY(-2px);
  box-shadow: var(--df-shadow-pop);
}
.df-button--dark {
  background: var(--df-ink);
  color: var(--df-cream);
}
.df-button--dark:hover {
  background: #000;
  color: var(--df-cream);
}

/* Champ de recherche éditorial */
.df-search {
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--df-paper);
  border-radius: 999px;
  padding: 8px 8px 8px 24px;
  box-shadow: var(--df-shadow-md);
  max-width: 520px;
}
.df-search input {
  flex: 1;
  border: none;
  outline: none;
  background: none;
  font-family: var(--df-sans);
  font-size: 17px;
  color: var(--df-ink);
}
.df-search input::placeholder { color: var(--df-ink-3); }
.df-search button {
  flex-shrink: 0;
  border: none;
  cursor: pointer;
  background: var(--df-caramel);
  color: #fff;
  width: 48px;
  height: 48px;
  border-radius: 999px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.df-search button:hover { background: var(--df-caramel-deep); }

/* En-tête de section (kicker + titre + sous-titre) */
.df-section-head { margin-bottom: 30px; }
.df-section-head .df-kicker {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--df-caramel);
  margin-bottom: 9px;
}
.df-section-head h2 {
  font-family: var(--df-serif);
  font-size: 40px;
  font-weight: 500;
  line-height: 1.05;
  letter-spacing: -.5px;
  margin: 0;
}
.df-section-head .df-sub {
  margin: 12px 0 0;
  font-size: 16px;
  color: var(--df-ink-2);
  line-height: 1.5;
  max-width: 52ch;
}

/* Carte recette (variante éditoriale, par défaut) */
.df-recipe-card {
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  overflow: hidden;
  box-shadow: var(--df-shadow-sm);
  display: flex;
  flex-direction: column;
}
/* --- Cadres photo des cartes : recadrage uniforme ---------------------
   Chaque cadre porte déjà un aspect-ratio, mais rien ne contraignait
   l'image à l'intérieur : elle s'affichait à sa hauteur naturelle et
   débordait, désalignant les cartes d'une même grille.
   L'image remplit désormais le cadre et se fait rogner au centre.
   Le placeholder, lui, reçoit une hauteur en ligne depuis
   ldf_photo_or_ph() — d'où le !important, seul moyen de la neutraliser. */
.df-recipe-card__media .df-card__img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.df-recipe-card__media .df-ph {
  height: 100% !important;
}

.df-recipe-card__media {
  overflow: hidden;
  position: relative;
  aspect-ratio: 16 / 11;
  background: var(--df-cream-2);
}
.df-recipe-card__media .df-stamp {
  position: absolute;
  top: 14px;
  right: 14px;
}
.df-recipe-card__body {
  padding: 18px 20px 20px;
  flex: 1;
  display: flex;
  flex-direction: column;
}
.df-recipe-card__title {
  font-family: var(--df-serif);
  font-size: 23px;
  font-weight: 500;
  line-height: 1.12;
  margin: 0 0 8px;
  color: var(--df-ink);
}
.df-recipe-card__blurb {
  margin: 0 0 16px;
  font-size: 14.5px;
  color: var(--df-ink-2);
  line-height: 1.5;
  flex: 1;
}
.df-recipe-card__meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.df-recipe-card__rate {
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--df-line);
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 13.5px;
  color: var(--df-ink-2);
}
.df-recipe-card__rate strong { font-weight: 600; }

/* Hero d'accueil */
.df-hero {
  padding: 64px 0 72px;
}
.df-hero__pills {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 9px;
  margin: 0 0 24px;
}
/* Reset des marges <p> que WP/Kadence ajoutent par défaut, sinon les deux
   pills ne sont plus sur la même ligne de base. */
.df-hero__pills > p,
.df-hero__pills > .wp-block-paragraph {
  margin: 0;
}
.df-hero h1 {
  font-family: var(--df-serif);
  font-size: 68px;
  font-weight: 500;
  line-height: 1.0;
  letter-spacing: -1.5px;
  margin: 0 0 26px;
}
.df-hero h1 em {
  font-style: italic;
  font-weight: 500;
}
.df-hero h1 em.is-rasp { color: var(--df-rasp); }
.df-hero h1 em.is-mint { color: var(--df-mint); }
.df-hero__lede {
  margin: 0 0 30px;
  font-size: 19px;
  color: var(--df-ink-2);
  line-height: 1.55;
  max-width: 42ch;
}
.df-hero__popular {
  display: flex;
  gap: 9px;
  margin-top: 18px;
  align-items: center;
  flex-wrap: wrap;
  font-size: 13.5px;
  color: var(--df-ink-3);
}
.df-hero__popular a {
  font-family: var(--df-sans);
  font-size: 13.5px;
  font-weight: 600;
  padding: 8px 15px;
  border-radius: 999px;
  background: var(--df-cream-2);
  color: var(--df-caramel-deep);
  text-decoration: none;
}
.df-hero__popular a:hover {
  background: var(--df-caramel);
  color: #fff;
}

/* Icône SVG inline (helper ldf_icon) — alignement et taille cohérents */
.df-icon {
  display: inline-block;
  vertical-align: -.125em;
  flex-shrink: 0;
}

/* Utilitaires de grille (3, 4, 2 colonnes) */
.df-grid { display: grid; gap: 26px; }
.df-grid--4 { grid-template-columns: repeat(4, 1fr); gap: 18px; }
.df-grid--3 { grid-template-columns: repeat(3, 1fr); }
.df-grid--2 { grid-template-columns: repeat(2, 1fr); gap: 22px; }

/* Bloc « rien à afficher » (cohérent partout) */
.df-empty {
  grid-column: 1 / -1;
  text-align: center;
  padding: 32px 24px;
  font-size: 15px;
  color: var(--df-ink-2);
  background: var(--df-paper);
  border: 1px dashed var(--df-line-2);
  border-radius: var(--df-r-lg);
}

/* ── Carte niveau (taxonomie niveau-galere) ─────────────────── */
.df-niveau-card {
  display: flex;
  flex-direction: column;
  gap: 16px;
  text-decoration: none;
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  padding: 24px 22px;
  box-shadow: var(--df-shadow-sm);
  color: var(--df-ink);
}
.df-niveau-card__title {
  font-family: var(--df-serif);
  font-size: 24px;
  font-weight: 500;
  line-height: 1.1;
}
.df-niveau-card__count {
  font-size: 14px;
  color: var(--df-ink-3);
}

/* ── Bandeau SOS (rose framboise) ───────────────────────────── */
.df-sos-band {
  background: var(--df-rasp-bg);
  border-radius: var(--df-r-xl);
  padding: 52px 56px;
}
.df-sos-band__title {
  font-family: var(--df-serif);
  font-size: 40px;
  font-weight: 500;
  color: var(--df-rasp-deep);
  line-height: 1.06;
  letter-spacing: -.5px;
  margin: 18px 0 12px;
}
.df-sos-band__lede {
  margin: 0 0 24px;
  font-size: 17px;
  color: var(--df-rasp-deep);
  opacity: .85;
  line-height: 1.55;
  max-width: 34ch;
}
.df-sos-list {
  display: flex;
  flex-direction: column;
  gap: 11px;
}
.df-sos-row {
  display: flex;
  align-items: center;
  gap: 13px;
  text-decoration: none;
  background: var(--df-paper);
  border-radius: var(--df-r-md);
  padding: 15px 18px;
  color: var(--df-ink);
}
.df-sos-row__icon {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--df-rasp-bg);
  color: var(--df-rasp);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  flex-shrink: 0;
}
.df-sos-row__main { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.df-sos-row__title {
  font-family: var(--df-serif);
  font-size: 16.5px;
  font-weight: 500;
  line-height: 1.2;
}
.df-sos-row__fam { font-size: 12.5px; color: var(--df-ink-3); }
.df-sos-row__chevron { color: var(--df-ink-3); font-size: 22px; line-height: 1; }

/* ── Carte science ──────────────────────────────────────────── */
.df-science-card {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  padding: 26px 24px;
  box-shadow: var(--df-shadow-sm);
  color: var(--df-ink);
}
.df-science-card .df-pill { align-self: flex-start; }
.df-science-card__title {
  font-family: var(--df-serif);
  font-size: 23px;
  font-weight: 500;
  line-height: 1.15;
  margin: 16px 0 10px;
}
.df-science-card__excerpt {
  margin: 0;
  font-size: 15px;
  color: var(--df-ink-2);
  line-height: 1.5;
}

/* ── Bandeau newsletter foncé ──────────────────────────────── */
.df-newsletter-band {
  background: var(--df-ink);
  color: var(--df-cream);
  border-radius: var(--df-r-xl);
  padding: 56px 60px;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 40px;
  align-items: center;
}
/* Force tout le texte du bandeau en crème (sinon Kadence / theme.json
   réimpose leur couleur sombre sur les headings et les <p>). */
.df-newsletter-band,
.df-newsletter-band h1,
.df-newsletter-band h2,
.df-newsletter-band h3,
.df-newsletter-band h4,
.df-newsletter-band p,
.df-newsletter-band a {
  color: var(--df-cream);
}
.df-newsletter-band__kicker {
  font-family: var(--df-serif);
  font-size: 15px;
  opacity: .7;
  margin: 0 0 14px;
}
.df-newsletter-band__title {
  font-family: var(--df-serif);
  font-size: 38px;
  font-weight: 500;
  line-height: 1.08;
  letter-spacing: -.4px;
  margin: 0 0 14px;
}
.df-newsletter-band__lede {
  margin: 0;
  font-size: 16.5px;
  opacity: .72;
  line-height: 1.55;
  max-width: 46ch;
}
.df-newsletter-band__form {
  display: flex;
  gap: 10px;
}
.df-newsletter-band__form input[type="email"] {
  flex: 1;
  min-width: 0;
  border: none;
  outline: none;
  border-radius: 999px;
  padding: 16px 22px;
  font-size: 16px;
  background: rgba(255,255,255,.10);
  color: #fff;
  font-family: var(--df-sans);
}
.df-newsletter-band__form input[type="email"]::placeholder { color: rgba(255,255,255,.5); }
.df-newsletter-band__form button {
  border: none;
  cursor: pointer;
  background: var(--df-caramel);
  color: #fff;
  font-weight: 600;
  font-size: 16px;
  padding: 16px 26px;
  border-radius: 999px;
  flex-shrink: 0;
  font-family: var(--df-sans);
}
.df-newsletter-band__form button:hover { background: var(--df-caramel-deep); }
.df-newsletter-band__legal {
  margin: 14px 2px 0;
  font-size: 13px;
  opacity: .5;
}

/* ── Single recette (template single-recette.php) ───────────── */
.df-recette {
  background: var(--df-cream);
  padding: 30px 0 60px;
}
.df-recette__wrap {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 40px;
}
.df-recette__back {
  display: inline-flex;
  margin-bottom: 20px;
}
.df-recette__hero {
  position: relative;
  margin-bottom: 36px;
  border-radius: var(--df-r-xl);
  overflow: hidden;
}
.df-recette__img {
  display: block;
  width: 100%;
  height: 380px;
  object-fit: cover;
  border-radius: var(--df-r-xl);
}
.df-recette__ph {
  height: 380px;
  border-radius: var(--df-r-xl);
}
.df-recette__stamp {
  position: absolute;
  top: 22px;
  right: 22px;
  transform: scale(1.1);
}
.df-recette__grid {
  display: grid;
  grid-template-columns: 1.55fr 1fr;
  gap: 56px;
  align-items: start;
}
.df-recette__title {
  font-family: var(--df-serif);
  font-size: 46px;
  font-weight: 500;
  line-height: 1.04;
  letter-spacing: -.8px;
  margin: 0 0 16px;
}
.df-recette__intro {
  font-family: var(--df-serif);
  font-size: 21px;
  line-height: 1.55;
  color: var(--df-ink);
  margin: 0 0 36px;
  padding-left: 20px;
  border-left: 4px solid var(--df-caramel);
}
.df-recette__content {
  font-size: 17px;
  line-height: 1.65;
}
.df-recette__content h2,
.df-recette__content h3 {
  font-family: var(--df-serif);
  font-weight: 500;
}
.df-recette__content h2 { font-size: 28px; margin: 1.8em 0 .6em; }
.df-recette__content h3 { font-size: 22px; margin: 1.6em 0 .8em; }

/* Liste ordonnée des étapes — numéros chocolat */
.df-recette__content ol {
  list-style: none;
  padding-left: 0;
  margin: 0 0 1.5em;
  counter-reset: df-step;
}
.df-recette__content ol > li {
  counter-increment: df-step;
  display: grid;
  grid-template-columns: 36px 1fr;
  gap: 16px;
  margin-bottom: 20px;
  padding: 0;
  font-size: 16.5px;
  line-height: 1.55;
}
.df-recette__content ol > li::before {
  content: counter(df-step);
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: var(--df-ink);
  color: var(--df-cream);
  font-family: var(--df-serif);
  font-weight: 600;
  font-size: 17px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: -2px;
}

/* Liste non-ordonnée : puces caramel */
.df-recette__content ul {
  list-style: none;
  padding-left: 0;
  margin: 0 0 1em;
}
.df-recette__content ul > li {
  position: relative;
  padding-left: 22px;
  margin-bottom: .5em;
}
.df-recette__content ul > li::before {
  content: '';
  position: absolute;
  left: 4px;
  top: .7em;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--df-caramel);
}

/* Images/vidéos entre les étapes — radius doux + ombre légère */
.df-recette__content .wp-block-image img,
.df-recette__content .wp-block-video video,
.df-recette__content .wp-block-embed iframe {
  border-radius: var(--df-r-md);
  box-shadow: var(--df-shadow-sm);
  max-width: 100%;
  height: auto;
}
.df-recette__content .wp-block-image,
.df-recette__content .wp-block-video,
.df-recette__content .wp-block-embed {
  margin: 1.2em 0 1.8em;
}

/* Style « Point critique » sur paragraphe — pour un warning court sur 1-2 lignes */
.df-recette__content .is-style-df-point-critique,
.is-style-df-point-critique {
  background: var(--df-rasp-bg);
  border-radius: var(--df-r-md);
  padding: 14px 18px 14px 50px;
  color: var(--df-rasp-deep);
  font-size: 15.5px;
  position: relative;
}
.is-style-df-point-critique::before {
  content: '';
  position: absolute;
  left: 18px;
  top: 16px;
  width: 18px;
  height: 18px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D4537E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 9v4'/><path d='M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z'/><path d='M12 16h.01'/></svg>");
  background-size: contain;
  background-repeat: no-repeat;
}

/* Style « Point critique » sur Group block — pour un warning structuré (titre + liste/plusieurs paragraphes) */
.wp-block-group.is-style-df-point-critique,
.df-recette__content .wp-block-group.is-style-df-point-critique {
  background: var(--df-rasp-bg);
  border-radius: var(--df-r-md);
  padding: 20px 22px 18px 58px;
  position: relative;
  margin: 1.4em 0;
  color: var(--df-rasp-deep);
}
.wp-block-group.is-style-df-point-critique::before {
  content: '';
  position: absolute;
  left: 22px;
  top: 22px;
  width: 20px;
  height: 20px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23D4537E' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 9v4'/><path d='M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z'/><path d='M12 16h.01'/></svg>");
  background-size: contain;
  background-repeat: no-repeat;
}
.wp-block-group.is-style-df-point-critique > *,
.wp-block-group.is-style-df-point-critique p,
.wp-block-group.is-style-df-point-critique li,
.wp-block-group.is-style-df-point-critique h2,
.wp-block-group.is-style-df-point-critique h3,
.wp-block-group.is-style-df-point-critique h4 {
  color: var(--df-rasp-deep);
}
.wp-block-group.is-style-df-point-critique h2,
.wp-block-group.is-style-df-point-critique h3,
.wp-block-group.is-style-df-point-critique h4 {
  font-family: var(--df-serif);
  font-weight: 600;
  font-size: 17px;
  line-height: 1.2;
  margin: 0 0 10px;
}
.wp-block-group.is-style-df-point-critique p {
  font-size: 15.5px;
  line-height: 1.55;
  margin: 0 0 8px;
}
.wp-block-group.is-style-df-point-critique p:last-child { margin-bottom: 0; }
.wp-block-group.is-style-df-point-critique ul {
  margin: 6px 0 0;
  padding-left: 0;
  list-style: none;
}
.wp-block-group.is-style-df-point-critique ul > li {
  position: relative;
  padding-left: 16px;
  margin-bottom: 5px;
  font-size: 15px;
  line-height: 1.5;
}
.wp-block-group.is-style-df-point-critique ul > li::before {
  content: '';
  position: absolute;
  left: 0;
  top: .65em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--df-rasp);
}

/* Style « Étape de recette » sur Group block — compteur continu (front + éditeur) */
.df-recette__content,
.editor-styles-wrapper,
.wp-block-post-content {
  counter-reset: df-step;
}
.wp-block-group.is-style-df-step {
  counter-increment: df-step;
  position: relative;
  /* Les étapes sont ancrées (#etape-3) et référencées par HowToStep.url :
     de l'air au-dessus quand on arrive dessus depuis un lien externe. */
  scroll-margin-top: 90px;
  padding: 0 0 0 54px;
  margin: 0 0 28px;
  background: transparent;
  min-height: 36px;
}
.wp-block-group.is-style-df-step::before {
  content: counter(df-step);
  position: absolute;
  left: 0;
  top: 0;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  background: var(--df-ink);
  color: var(--df-cream);
  font-family: var(--df-serif);
  font-weight: 600;
  font-size: 17px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.wp-block-group.is-style-df-step > *:first-child { margin-top: 0; }
.wp-block-group.is-style-df-step > *:last-child { margin-bottom: 0; }
.wp-block-group.is-style-df-step p:first-of-type {
  font-size: 16.5px;
  line-height: 1.55;
}

/* Les étapes sont rendues en <li> dans un <ol class="df-steps"> (ldf_render_step_blocks) :
   huit divs anonymes devenaient huit divs anonymes pour un moteur comme pour un
   lecteur d'écran, alors que le numéro n'existait que dans un compteur CSS.

   Il faut donc neutraliser ici le style des listes ordonnées rédigées à la main
   (« .df-recette__content ol » plus haut) : sans ça chaque étape hériterait de sa
   grille 36px + 1fr, qui renverrait le Media & Text de l'étape à la ligne suivante.
   La pastille numérotée, elle, continue de venir de .is-style-df-step, plus
   spécifique — l'apparence ne bouge pas. */
.df-recette__content ol.df-steps,
.df-tour-de-main__content ol.df-steps {
  list-style: none;
  padding-left: 0;
  margin: 0;
  counter-reset: none;
}
.df-recette__content ol.df-steps > li,
.df-tour-de-main__content ol.df-steps > li {
  display: block;
  grid-template-columns: none;
  gap: 0;
  font-size: inherit;
  line-height: inherit;
}
.df-recette__content ol.df-steps > li::before,
.df-tour-de-main__content ol.df-steps > li::before {
  margin-top: 0;
}

/* CTA SOS « Quelque chose a raté ? » — shortcode [df_sos_cta], posé dans
   l'éditeur (sous le tableau « Problèmes fréquents » en général). */
.df-recette__sos {
  display: flex;
  align-items: center;
  gap: 14px;
  text-decoration: none;
  margin: 32px 0;
  background: var(--df-rasp-bg);
  border-radius: var(--df-r-lg);
  padding: 20px 24px;
  color: var(--df-rasp-deep);
}
.df-recette__sos-body { flex: 1; }
.df-recette__sos-title { font-weight: 600; font-size: 17px; }
.df-recette__sos-sub { font-size: 14.5px; opacity: .8; }

/* ── Questions fréquentes ──
 * Accordéon en <details> natif : ouvrable sans JS, et l'attribut `name`
 * n'en laisse qu'un ouvert là où le navigateur le gère (sinon, plusieurs
 * ouverts — ça reste lisible).
 */
.df-recette__faq {
  margin: 40px 0 0;
}
.df-recette__faq-head {
  display: flex;
  align-items: center;
  gap: 11px;
  margin-bottom: 18px;
}
.df-recette__faq-icon {
  display: inline-flex;
  color: var(--df-caramel);
}
.df-recette__faq-title {
  font-family: var(--df-serif);
  font-size: 30px;
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -.3px;
  color: var(--df-ink);
  margin: 0;
}
.df-recette__faq-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.df-recette__faq-item {
  background: var(--df-paper);
  border-radius: var(--df-r-md);
  box-shadow: var(--df-shadow-sm);
  overflow: hidden;
}
.df-recette__faq-q {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 18px 22px;
  cursor: pointer;
  list-style: none;
  font-size: 18px;
  font-weight: 600;
  line-height: 1.35;
  color: var(--df-ink);
}
/* Le triangle par défaut de <summary> (WebKit a besoin du pseudo-élément). */
.df-recette__faq-q::-webkit-details-marker { display: none; }
.df-recette__faq-q-text { flex: 1; }
.df-recette__faq-sign {
  display: inline-flex;
  flex-shrink: 0;
  color: var(--df-caramel);
}
.df-recette__faq-item[open] .df-recette__faq-sign--closed,
.df-recette__faq-sign--open { display: none; }
.df-recette__faq-item[open] .df-recette__faq-sign--open { display: inline-flex; }
.df-recette__faq-a {
  padding: 0 22px 20px;
  font-size: 15.5px;
  line-height: 1.6;
  color: var(--df-ink-2);
}
.df-recette__faq-a p { margin: 0 0 .6em; }
.df-recette__faq-a p:last-child { margin-bottom: 0; }

@media (max-width: 600px) {
  .df-recette__faq-title { font-size: 26px; }
  .df-recette__faq-q { font-size: 16px; padding: 15px 16px; }
  .df-recette__faq-a { padding: 0 16px 16px; font-size: 14px; }
}

/* Sidebar collante */
.df-recette__aside {
  position: sticky;
  top: 96px;
  display: flex;
  flex-direction: column;
  gap: 18px;
  /* Une colonne plus haute que l'écran restait épinglée par le haut : son bas
     sortait du champ sans aucun moyen d'y accéder (une recette à deux pâtes,
     c'est vingt lignes d'ingrédients). Elle reçoit donc sa propre zone de
     défilement, haute comme la fenêtre moins le header collant. */
  max-height: calc(100vh - 120px);
  overflow-y: auto;
  /* overflow-y déclenche un overflow-x implicite, qui rognerait les ombres
     portées des cartes : la marge négative rend la place que le padding reprend.
     12px tiennent largement dans les 40px de padding de .df-recette__wrap. */
  margin: -12px;
  padding: 12px;
  scrollbar-width: thin;
  scrollbar-color: var(--df-line-2) transparent;
}
.df-recette__aside::-webkit-scrollbar { width: 7px; }
.df-recette__aside::-webkit-scrollbar-track { background: transparent; }
.df-recette__aside::-webkit-scrollbar-thumb {
  background: var(--df-line-2);
  border-radius: 4px;
}
.df-recette__stats {
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  padding: 22px 24px;
  box-shadow: var(--df-shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.df-recette__stats-rate {
  display: flex;
  align-items: center;
  gap: 14px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--df-line);
  margin-bottom: 6px;
}
.df-recette__ring {
  position: relative;
  width: 54px;
  height: 54px;
  flex-shrink: 0;
}
.df-recette__ring-num {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 700;
}
.df-recette__stats-title { font-size: 16px; font-weight: 600; }
.df-recette__stats-sub { font-size: 13.5px; color: var(--df-ink-2); }
.df-recette__stats-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 14px;
  color: var(--df-ink-2);
}

/* Pills de temps (déprécié — gardé pour compat) */
.df-recette__times {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 0 0 26px;
}
.df-recette__time-pill {
  display: inline-flex;
  flex-direction: column;
  gap: 2px;
  background: var(--df-paper);
  border-radius: var(--df-r-md);
  padding: 10px 16px;
  box-shadow: var(--df-shadow-sm);
  min-width: 88px;
}
.df-recette__time-key {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--df-ink-3);
}
.df-recette__time-val {
  font-family: var(--df-serif);
  font-size: 19px;
  font-weight: 500;
  color: var(--df-ink);
  line-height: 1.1;
}
.df-recette__time-pill--rest .df-recette__time-key { color: var(--df-caramel); }

/* Barre horizontale de stats sous le hero (96% / niveau / prep / cuisson / total).
   La marge négative est plus grande que le margin-bottom du hero (36px), de manière
   à créer un vrai chevauchement (~45px) avec l'image. */
.df-recette__statbar {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  row-gap: 16px;
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  box-shadow: var(--df-shadow-md);
  padding: 22px 28px;
  margin: -82px auto 40px;
  position: relative;
  z-index: 2;
  width: calc(100% - 60px);
  max-width: 100%;
}
.df-recette__statbar-cell {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 0 22px;
  border-left: 1px solid var(--df-line);
  /* Chaque cellule prend la place de son contenu et jamais moins : une valeur
     coupée sur trois lignes (« 1 h / 30 ») ne se lit plus. Si la ligne est trop
     courte, la barre passe à deux rangées plutôt que d'écraser les cellules. */
  flex: 1 1 auto;
  white-space: nowrap;
}
.df-recette__statbar-cell:first-child {
  border-left: none;
  padding-left: 0;
}
.df-recette__statbar-cell--rate { flex-grow: 1.4; }

.df-recette__statbar-textblock { display: flex; flex-direction: column; }
.df-recette__statbar-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--df-ink);
  line-height: 1.2;
}
.df-recette__statbar-sub {
  font-size: 12.5px;
  color: var(--df-ink-2);
  line-height: 1.3;
  margin-top: 2px;
}

.df-recette__statbar-key {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--df-ink-3);
  margin-bottom: 5px;
}
.df-recette__statbar-val {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.df-recette__statbar-time {
  font-family: var(--df-serif);
  font-size: 21px;
  font-weight: 500;
  color: var(--df-ink);
  line-height: 1.05;
}
.df-recette__statbar-cell--total .df-recette__statbar-key {
  color: var(--df-caramel);
}
.df-recette__statbar-cell--total .df-recette__statbar-time {
  color: var(--df-caramel-deep);
}

/* Les deux groupes n'existent que pour le mobile, où la barre se scinde en deux
   cartes (le taux d'un côté, les temps de l'autre). Sur desktop ils s'effacent :
   les cellules redeviennent les enfants directs de la grille. */
.df-recette__statbar-group { display: contents; }
/* :first-child désigne maintenant la première cellule de CHAQUE groupe : on rend
   son filet à la première cellule des temps quand elle suit le taux de réussite. */
.df-recette__statbar-group--rate + .df-recette__statbar-group--times .df-recette__statbar-cell:first-child {
  border-left: 1px solid var(--df-line);
  padding-left: 22px;
}
/* Sur mobile le total devient une ligne à part, en bas de la carte des temps :
   il y gagne l'horloge et son libellé long. Dans la barre, la place manque. */
.df-recette__statbar-key-icon,
.df-recette__statbar-key-long { display: none; }

/* Niveau + temps total sous le titre : la barre de stats les porte sur desktop,
   cette ligne prend le relais sur mobile (voir la section responsive). */
.df-recette__meta { display: none; }

/* Note : on retire le z-index sur le hero pour que la barre puisse remonter dessus */
.df-recette__hero { position: relative; z-index: 1; }

/* ── Encart « Une fois que c'est prêt » ──
 * Regroupe conservation (durée + contexte + comment) + astuce du chef
 * dans un seul bloc caramel/rose, à la place des deux callouts séparés.
 */
.df-recette__aftercare {
  margin: 40px 0 0;
}
.df-recette__aftercare-title {
  font-family: var(--df-serif);
  font-size: 30px;
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -.3px;
  color: var(--df-ink);
  margin: 0 0 18px;
}
.df-recette__aftercare-card {
  background: var(--df-caramel-bg);
  border-radius: var(--df-r-lg);
  overflow: hidden;
}
.df-recette__aftercare-head {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 22px 24px 14px;
}
.df-recette__aftercare-head-icon {
  color: var(--df-caramel);
  display: inline-flex;
}
.df-recette__aftercare-heading {
  font-family: var(--df-serif);
  font-size: 22px;
  font-weight: 500;
  line-height: 1.2;
  margin: 0;
  color: var(--df-ink);
}
.df-recette__aftercare-body {
  padding: 4px 24px 22px;
}
.df-recette__aftercare-row {
  display: flex;
  align-items: baseline;
  gap: 16px;
  flex-wrap: wrap;
  padding: 12px 0;
}
.df-recette__aftercare-block {
  padding: 12px 0 6px;
  border-top: 1px dashed rgba(216, 90, 48, .25);
}
.df-recette__aftercare-label {
  font-family: var(--df-sans);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--df-ink-3);
  flex-shrink: 0;
}
.df-recette__aftercare-value {
  margin-left: auto;
  font-size: 16px;
  color: var(--df-ink-2);
  text-align: right;
}
.df-recette__aftercare-duration {
  font-family: var(--df-serif);
  font-style: italic;
  font-weight: 600;
  font-size: 24px;
  color: var(--df-caramel-deep);
  line-height: 1;
  margin-right: 4px;
}
.df-recette__aftercare-context {
  font-size: 15px;
  color: var(--df-ink-2);
}
.df-recette__aftercare-text {
  margin-top: 8px;
  font-size: 15.5px;
  line-height: 1.6;
  color: var(--df-ink);
}
.df-recette__aftercare-text p { margin: 0 0 .5em; }
.df-recette__aftercare-text p:last-child { margin-bottom: 0; }

/* Bloc « L'astuce du chef » — fond blanc, séparé par une barre orange */
.df-recette__aftercare-chef {
  display: flex;
  gap: 14px;
  align-items: flex-start;
  background: var(--df-paper);
  padding: 22px 24px 24px;
  border-top: 3px solid var(--df-caramel);
}
.df-recette__aftercare-chef-icon {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--df-caramel-bg);
  color: var(--df-caramel);
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.df-recette__aftercare-chef-body { flex: 1; min-width: 0; }
.df-recette__aftercare-chef-label {
  font-family: var(--df-sans);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--df-caramel);
  margin-bottom: 4px;
}
.df-recette__aftercare-chef-text {
  font-size: 15.5px;
  line-height: 1.55;
  color: var(--df-ink);
}
.df-recette__aftercare-chef-text p { margin: 0 0 .5em; }
.df-recette__aftercare-chef-text p:last-child { margin-bottom: 0; }

/* Mobile : la valeur passe sous le label */
@media (max-width: 600px) {
  .df-recette__aftercare-row { flex-direction: column; align-items: flex-start; gap: 4px; }
  .df-recette__aftercare-value { margin-left: 0; text-align: left; }
  .df-recette__aftercare-title { font-size: 26px; }
  .df-recette__aftercare-heading { font-size: 19px; }
  .df-recette__aftercare-head,
  .df-recette__aftercare-body,
  .df-recette__aftercare-chef { padding-left: 18px; padding-right: 18px; }
}

/* ── Galerie « Mes essais » ──
 * Les fournées successives d'une même recette, en scroll horizontal avec
 * accroche. Pas de librairie : scroll natif + scroll-snap, les puces ne sont
 * qu'un raccourci (la galerie reste utilisable sans JS).
 */
.df-recette__essais {
  margin: 40px 0 0;
}
.df-recette__essais-title {
  font-family: var(--df-serif);
  font-size: 30px;
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -.3px;
  color: var(--df-ink);
  margin: 0 0 18px;
}
.df-recette__essais-track {
  display: flex;
  gap: 10px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
@media (prefers-reduced-motion: reduce) {
  .df-recette__essais-track { scroll-behavior: auto; }
}
.df-recette__essais-track::-webkit-scrollbar { display: none; }
.df-recette__essais-item {
  flex: 0 0 82%;
  scroll-snap-align: center;
  aspect-ratio: 4 / 3;
  margin: 0;
  border-radius: var(--df-r-lg);
  overflow: hidden;
  background: var(--df-cream-2);
}
.df-recette__essais-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.df-recette__essais-dots {
  display: flex;
  justify-content: center;
  gap: 7px;
  margin-top: 12px;
}
.df-recette__essais-dot {
  width: 7px;
  height: 7px;
  padding: 0;
  border: none;
  border-radius: 999px;
  background: var(--df-line-2);
  cursor: pointer;
  transition: width .2s ease, background .2s ease;
}
.df-recette__essais-dot.is-active {
  width: 18px;
  background: var(--df-caramel);
}

@media (max-width: 600px) {
  .df-recette__essais-title { font-size: 26px; }
}

/* Sélecteur de portions */
.df-portion {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--df-line);
  flex-wrap: wrap;
}
.df-portion__main {
  font-family: var(--df-serif);
  font-size: 24px;
  font-weight: 500;
  line-height: 1.15;
  color: var(--df-ink);
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  flex: 1;
  min-width: 0;
}
.df-portion__label,
.df-portion__base-count,
.df-portion__unit {
  font-family: var(--df-serif);
  font-weight: 500;
  color: var(--df-ink);
}
.df-portion__base-count { font-variant-numeric: tabular-nums; }
.df-portion__counter {
  display: inline-flex;
  align-items: center;
  background: var(--df-caramel-bg);
  border-radius: 999px;
  padding: 4px 6px;
  gap: 2px;
  flex-shrink: 0;
  box-sizing: border-box;
}
/* Reset agressif : Kadence stylise tous les <button> par défaut. */
.df-portion .df-portion__btn,
.df-portion__btn {
  border: 0 !important;
  background: transparent !important;
  background-image: none !important;
  color: var(--df-caramel-deep) !important;
  width: 32px;
  height: 32px;
  min-height: 0;
  padding: 0;
  border-radius: 999px;
  font-family: var(--df-sans);
  font-size: 20px;
  font-weight: 500;
  line-height: 1;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: none !important;
  text-shadow: none;
  transition: background .15s ease;
  letter-spacing: 0;
}
.df-portion__btn:hover,
.df-portion__btn:focus-visible {
  background: rgba(216, 90, 48, .18) !important;
  color: var(--df-caramel-deep) !important;
  outline: none;
  box-shadow: none !important;
}
/* Input compteur : reset le style visuel WordPress/Kadence des <input> */
.df-portion .df-portion__input,
.df-portion__input {
  border: 0 !important;
  background: transparent !important;
  background-image: none !important;
  box-shadow: none !important;
  outline: none !important;
  min-width: 0;
  min-height: 0;
  padding: 0 4px;
  width: 3ch; /* accommode 1-3 chiffres */
  text-align: center;
  font-family: var(--df-serif);
  font-size: 20px;
  font-weight: 600;
  color: var(--df-caramel-deep);
  -moz-appearance: textfield;
  appearance: textfield;
  font-variant-numeric: tabular-nums;
}
.df-portion__input::-webkit-outer-spin-button,
.df-portion__input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.df-portion__input:focus { outline: none !important; box-shadow: none !important; }

/* Note portion optionnelle (« ≈ 30 coques ») */
.df-portion__note {
  font-family: var(--df-sans);
  font-size: 14px;
  color: var(--df-ink-3);
  margin: 6px 0 16px;
}
.df-portion + .df-recette__ing-list {
  margin-top: 16px;
}

/* Ingrédients */
.df-recette__ingredients {
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  padding: 22px 24px;
  box-shadow: var(--df-shadow-sm);
}
.df-recette__ingredients-title {
  font-family: var(--df-serif);
  font-size: 21px;
  font-weight: 500;
  margin: 0 0 14px;
}
.df-recette__ing-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.df-recette__ing {
  border-bottom: 1px solid var(--df-line);
}
.df-recette__ing:last-child { border-bottom: none; }

/* Sous-titre de section (ex. « DÉTREMPE ») */
.df-recette__ing-section {
  font-family: var(--df-sans);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--df-ink-3);
  padding: 20px 0 8px;
  border-bottom: none;
  list-style: none;
}
.df-recette__ing-section:first-child { padding-top: 4px; }
/* Une section ne doit pas hériter du border-bottom des .df-recette__ing */
.df-recette__ing-list > .df-recette__ing-section + .df-recette__ing { /* juste après une section : pas de padding-top exagéré */ }
.df-recette__ing-label {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 12px 4px 12px 2px;
  font-size: 15.5px;
  cursor: pointer;
  transition: color .15s ease;
  user-select: none;
}
.df-recette__ing-label:hover { color: var(--df-ink); }

/* Custom checkbox */
.df-recette__ing-check {
  appearance: none;
  -webkit-appearance: none;
  margin: 0;
  width: 22px;
  height: 22px;
  border: 1.5px solid var(--df-line-2);
  border-radius: 6px;
  background: var(--df-paper);
  cursor: pointer;
  flex-shrink: 0;
  position: relative;
  transition: border-color .15s ease, background .15s ease;
}
.df-recette__ing-check:hover { border-color: var(--df-ink-3); }
.df-recette__ing-check:focus-visible {
  outline: 2px solid var(--df-caramel);
  outline-offset: 2px;
}
.df-recette__ing-check:checked {
  background: var(--df-caramel);
  border-color: var(--df-caramel);
}
.df-recette__ing-check:checked::after {
  content: "";
  position: absolute;
  left: 6px;
  top: 2px;
  width: 6px;
  height: 11px;
  border: solid #FFFFFF;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

.df-recette__ing-name {
  flex: 1;
  color: var(--df-ink);
  transition: color .15s ease, text-decoration-color .15s ease;
}
.df-recette__ing-qty {
  color: var(--df-ink-2);
  font-weight: 600;
  flex-shrink: 0;
  white-space: nowrap;
  display: inline-flex;
  gap: 4px;
  align-items: baseline;
  transition: color .15s ease;
}
.df-recette__ing-num {
  font-variant-numeric: tabular-nums;
  transition: color .2s ease;
}
.df-recette__ing-num.is-updated { color: var(--df-caramel); }
.df-recette__ing-unit { color: var(--df-ink-3); font-weight: 500; }

/* État coché : barre l'ingrédient + le grise */
.df-recette__ing-check:checked ~ .df-recette__ing-name {
  color: var(--df-ink-3);
  text-decoration: line-through;
  text-decoration-color: var(--df-ink-3);
  text-decoration-thickness: 1.5px;
}
.df-recette__ing-check:checked ~ .df-recette__ing-qty,
.df-recette__ing-check:checked ~ .df-recette__ing-qty .df-recette__ing-num,
.df-recette__ing-check:checked ~ .df-recette__ing-qty .df-recette__ing-unit {
  color: var(--df-ink-3);
  text-decoration: line-through;
  text-decoration-color: var(--df-ink-3);
}

/* Note du journal (mini block crème chaud) */
.df-recette__note {
  background: var(--df-cream-2);
  border-radius: var(--df-r-lg);
  padding: 20px 22px;
  display: flex;
  gap: 13px;
}
.df-recette__note-mark {
  position: relative;
  width: 34px;
  height: 34px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.df-recette__note-cherry {
  position: absolute;
  top: 1px;
  right: 2px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--df-rasp);
}
.df-recette__note-kicker {
  font-size: 12.5px;
  color: var(--df-ink-3);
  font-weight: 600;
  margin-bottom: 3px;
}
.df-recette__note-text {
  font-family: var(--df-serif);
  font-style: italic;
  font-size: 16px;
  line-height: 1.4;
  color: var(--df-ink);
}

/* ── Encart Anti-gaspi (sous la liste des ingrédients) ───────
 * Fond menthe pâle, cards blanches imbriquées, lien vers l'archive.
 */
.df-recette__antigaspi {
  margin-top: 20px;
  padding: 22px 22px 18px;
  background: var(--df-mint-bg);
  border-radius: var(--df-r-lg);
  color: var(--df-ink);
}
.df-recette__antigaspi-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
}
.df-recette__antigaspi-icon {
  color: var(--df-mint-deep);
  display: inline-flex;
}
.df-recette__antigaspi-kicker {
  font-family: var(--df-sans);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--df-mint-deep);
}
.df-recette__antigaspi-intro {
  font-size: 15px;
  line-height: 1.5;
  color: var(--df-ink);
  margin-bottom: 14px;
}
.df-recette__antigaspi-intro p { margin: 0 0 .4em; }
.df-recette__antigaspi-intro p:last-child { margin-bottom: 0; }
.df-recette__antigaspi-intro strong { color: var(--df-mint-deep); font-weight: 600; }

.df-recette__antigaspi-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.df-recette__antigaspi-row {
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--df-paper);
  border-radius: var(--df-r-md);
  padding: 14px 16px;
  text-decoration: none;
  color: var(--df-ink);
  transition: transform .15s ease, box-shadow .15s ease;
}
.df-recette__antigaspi-row:hover,
.df-recette__antigaspi-row:focus-visible {
  transform: translateY(-1px);
  box-shadow: var(--df-shadow-sm);
  text-decoration: none;
}
.df-recette__antigaspi-row-body { flex: 1; min-width: 0; }
.df-recette__antigaspi-row-title {
  font-family: var(--df-serif);
  font-size: 17px;
  font-weight: 500;
  line-height: 1.2;
  color: var(--df-ink);
  margin-bottom: 3px;
}
.df-recette__antigaspi-row-blurb {
  font-size: 13.5px;
  line-height: 1.4;
  color: var(--df-ink-2);
}
.df-recette__antigaspi-row-chevron {
  color: var(--df-mint-deep);
  flex-shrink: 0;
  transition: transform .15s ease;
}
.df-recette__antigaspi-row:hover .df-recette__antigaspi-row-chevron,
.df-recette__antigaspi-row:focus-visible .df-recette__antigaspi-row-chevron {
  transform: translateX(2px);
}

@media (max-width: 600px) {
  .df-recette__antigaspi { padding: 18px 16px 16px; }
  .df-recette__antigaspi-row { padding: 12px 14px; gap: 10px; }
  .df-recette__antigaspi-row-title { font-size: 15.5px; }
}

/* ── Archive SOS Rattrapage ─────────────────────────────────── */
.df-sos-archive {
  background: var(--df-cream);
  padding: 52px 0 64px;
  min-height: 60vh;
}
.df-sos-archive__wrap {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 40px;
}
.df-sos-archive__kicker {
  color: var(--df-rasp);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: 10px;
}
.df-sos-archive__title {
  font-family: var(--df-serif);
  font-size: 52px;
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -1px;
  margin: 0 0 14px;
  color: var(--df-ink);
}
.df-sos-archive__lede {
  font-size: 18px;
  color: var(--df-ink-2);
  line-height: 1.5;
  max-width: 58ch;
  margin: 0 0 34px;
}

/* Recherche + chips de famille : même mécanique que l'archive des recettes,
   mais les chips sont blanches et cerclées (design de l'index). */
.df-sos-archive__lede { margin-bottom: 28px; }
.df-sos-archive__controls {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 16px;
  align-items: center;
  margin: 0 0 26px;
}
.df-sos-archive__search {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--df-paper);
  border-radius: 999px;
  padding: 6px 6px 6px 18px;
  box-shadow: var(--df-shadow-sm);
  min-width: 320px;
  flex: 1 1 320px;
  max-width: 440px;
}
.df-sos-archive__search svg:first-child { color: var(--df-ink-3); flex-shrink: 0; }
/* Sélecteur avec l'attribut : global.min.css de Kadence, chargé après cette
   feuille, borde les input[type="search"] à spécificité égale. */
.df-sos-archive__search input[type="search"] {
  flex: 1;
  min-width: 0;
  border: none;
  outline: none;
  background: none;
  box-shadow: none;
  border-radius: 0;
  -webkit-appearance: none;
  appearance: none;
  font-family: var(--df-sans);
  font-size: 15.5px;
  color: var(--df-ink);
  padding: 8px 0;
}
.df-sos-archive__search input::placeholder { color: var(--df-ink-3); }
.df-sos-archive__search-clear {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 999px;
  color: var(--df-ink-3);
  text-decoration: none;
  flex-shrink: 0;
}
.df-sos-archive__search-clear:hover { background: var(--df-cream-2); color: var(--df-ink); }
.df-sos-archive__search-submit {
  flex-shrink: 0;
  border: none;
  cursor: pointer;
  background: var(--df-caramel);
  color: #fff;
  width: 38px;
  height: 38px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background .15s ease;
}
.df-sos-archive__search-submit:hover { background: var(--df-caramel-deep); }
.df-sos-archive__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
/* Sélecteur doublé : .df-chip est déclaré plus bas dans la feuille et
   reprendrait la main à spécificité égale. */
.df-chip.df-chip--outline {
  background: var(--df-paper);
  color: var(--df-ink-2);
  box-shadow: inset 0 0 0 1px var(--df-line);
}
.df-chip.df-chip--outline:hover { background: var(--df-caramel); color: #fff; box-shadow: none; }
.df-chip.df-chip--outline.is-active { background: var(--df-ink); color: var(--df-cream); box-shadow: none; }
.df-sos-archive__count {
  font-size: 14px;
  color: var(--df-ink-3);
  margin: -12px 0 22px;
}
.df-sos-archive__count a { color: var(--df-caramel); }

/* Liste de cards cliquables (nouvelle version — plus d'accordéons). */
.df-sos-archive__list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
  align-items: start;
}
.df-sos-archive__row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px 20px;
  background: var(--df-paper);
  border-radius: var(--df-r-md);
  box-shadow: var(--df-shadow-sm);
  color: var(--df-ink);
  text-decoration: none;
  transition: transform .15s ease, box-shadow .15s ease;
}
.df-sos-archive__row:hover,
.df-sos-archive__row:focus-visible {
  transform: translateY(-1px);
  box-shadow: var(--df-shadow-md);
  text-decoration: none;
}
.df-sos-archive__row-icon {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: var(--df-rasp-bg);
  color: var(--df-rasp);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.df-sos-archive__row-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.df-sos-archive__row-title {
  font-family: var(--df-serif);
  font-size: 19px;
  font-weight: 500;
  line-height: 1.15;
  color: var(--df-ink);
}
.df-sos-archive__row-fam {
  font-size: 13px;
  color: var(--df-ink-3);
}
.df-sos-archive__row-chevron {
  color: var(--df-ink-3);
  flex-shrink: 0;
  transition: transform .15s ease, color .15s ease;
}
.df-sos-archive__row:hover .df-sos-archive__row-chevron,
.df-sos-archive__row:focus-visible .df-sos-archive__row-chevron {
  color: var(--df-rasp);
  transform: translateX(2px);
}

/* Cartes illustrées : fiches qui ont une image mise en avant, au-dessus des lignes simples. */
.df-sos-archive__list--cards { margin-bottom: 14px; }
.df-sos-archive__card {
  display: flex;
  flex-direction: column;
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  box-shadow: var(--df-shadow-sm);
  overflow: hidden;
  color: var(--df-ink);
  text-decoration: none;
  transition: transform .15s ease, box-shadow .15s ease;
}
.df-sos-archive__card:hover,
.df-sos-archive__card:focus-visible {
  transform: translateY(-1px);
  box-shadow: var(--df-shadow-md);
  text-decoration: none;
}
.df-sos-archive__card-media {
  position: relative;
  display: block;
  aspect-ratio: 16 / 5;
  overflow: hidden;
  background: var(--df-cream-2);
}
/* En absolu : sinon la hauteur réelle de la photo l'emporte sur le format du cadre. */
.df-sos-archive__card-media img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
}
.df-sos-archive__card-badge {
  position: absolute;
  top: 14px;
  left: 14px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: var(--df-paper);
  border-radius: 999px;
  box-shadow: var(--df-shadow-sm);
  font-size: 13px;
  font-weight: 600;
  color: var(--df-rasp);
}
.df-sos-archive__card-foot {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 18px 20px;
}
.df-sos-archive__card-title {
  flex: 1;
  font-family: var(--df-serif);
  font-size: 22px;
  font-weight: 500;
  line-height: 1.15;
}
.df-sos-archive__card:hover .df-sos-archive__row-chevron,
.df-sos-archive__card:focus-visible .df-sos-archive__row-chevron {
  color: var(--df-rasp);
  transform: translateX(2px);
}

@media (max-width: 900px) {
  .df-sos-archive__list { grid-template-columns: 1fr; }
  .df-sos-archive__card-media { aspect-ratio: 16 / 7; }
  .df-sos-archive__card-title { font-size: 19px; }
}

/* ═══════ Single SOS (fiche individuelle) ═══════
   Colonne de lecture, sans cartes pleines : trois sections numérotées,
   séparées par des filets, chacune ouverte par un bandeau teinté
   (Pourquoi = crème, Le rattrapage = menthe, La prochaine fois = framboise).
   Le tableau des ratages vient de l'éditeur (style de bloc df-problemes). */
.df-sos {
  background: var(--df-cream);
  padding: 0 0 64px;
  font-size: 17px;
  line-height: 1.62;
  color: var(--df-ink);
}
.df-sos__wrap {
  max-width: 720px;
  margin: 0 auto;
  padding: 0 24px;
}
.df-sos__back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 34px 0 26px;
  font-size: 14px;
  font-weight: 500;
  color: var(--df-ink-3);
  text-decoration: none;
  transition: color .15s ease;
}
.df-sos__back:hover { color: var(--df-caramel); }

.df-sos__hero { margin: 0; }
.df-sos__kicker {
  color: var(--df-rasp);
  margin-bottom: 14px;
}
.df-sos__title {
  font-family: var(--df-serif);
  font-size: clamp(34px, 6vw, 52px);
  font-weight: 500;
  line-height: 1.04;
  letter-spacing: -.5px;
  color: var(--df-ink);
  margin: 0 0 18px;
}
.df-sos__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-bottom: 30px;
}
.df-sos__badge {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  background: var(--df-rasp-bg);
  color: var(--df-rasp-deep);
  font-size: 13px;
  font-weight: 600;
  padding: 6px 13px;
  border-radius: 999px;
}
.df-sos__lede {
  font-family: var(--df-serif);
  font-style: italic;
  font-size: clamp(20px, 3.4vw, 24px);
  line-height: 1.45;
  color: var(--df-ink);
  margin: 0;
  padding-bottom: 34px;
  border-bottom: 1px solid var(--df-line);
}

/* ── Le diagnostic rapide ── */
.df-sos__diag {
  display: flex;
  align-items: flex-start;
  gap: 18px;
  background: var(--df-mint-bg);
  border-radius: 14px;
  padding: 24px 26px;
  margin: 32px 0 0;
}
.df-sos__diag-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--df-paper);
  color: var(--df-mint-deep);
  flex-shrink: 0;
}
.df-sos__diag-body { min-width: 0; }
.df-sos__diag-title {
  font-family: var(--df-sans);
  font-size: 17px;
  font-weight: 700;
  color: var(--df-ink);
  margin: 10px 0 8px;
}
.df-sos__diag-text {
  font-size: 16px;
  line-height: 1.6;
  color: var(--df-ink);
  margin: 0;
}

/* ── Sommaire ── */
.df-sos__toc {
  background: var(--df-paper);
  border: 1px solid var(--df-line);
  border-radius: 14px;
  padding: 22px 24px 24px;
  margin: 32px 0 6px;
}
.df-sos__toc-title {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .13em;
  text-transform: uppercase;
  color: var(--df-ink-3);
  margin: 0 0 18px;
}
.df-sos__toc-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 26px;
}
.df-sos__toc-head {
  display: flex;
  align-items: center;
  gap: 9px;
  font-family: var(--df-serif);
  font-size: 17px;
  font-weight: 600;
  color: var(--df-ink);
  text-decoration: none;
  margin-bottom: 11px;
}
.df-sos__toc-head::before {
  content: '';
  width: 9px;
  height: 9px;
  border-radius: 3px;
  flex: 0 0 auto;
}
.df-sos__toc-col--why  .df-sos__toc-head::before { background: var(--df-ink-3); }
.df-sos__toc-col--fix  .df-sos__toc-head::before { background: var(--df-mint); }
.df-sos__toc-col--next .df-sos__toc-head::before { background: var(--df-rasp); }
.df-sos__toc-head:hover { color: var(--df-caramel); }
.df-sos__toc-list {
  list-style: none;
  margin: 0;
  padding: 0 0 0 18px;
}
.df-sos__toc-list li { margin: 0 0 8px; }
.df-sos__toc-list a {
  font-size: 14.5px;
  font-weight: 500;
  line-height: 1.4;
  color: var(--df-ink-2);
  text-decoration: none;
}
.df-sos__toc-list a:hover { color: var(--df-caramel); }

/* ── Sections ── */
.df-sos__body { display: block; }
.df-sos__section {
  padding: 38px 0;
  border-bottom: 1px solid var(--df-line);
  scroll-margin-top: 20px;
}
.df-sos__section-head {
  display: flex;
  align-items: center;
  gap: 13px;
  margin-bottom: 26px;
  padding: 13px 18px;
  border-radius: 12px;
}
.df-sos__section-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--df-paper);
  flex-shrink: 0;
}
.df-sos__section-title {
  font-family: var(--df-sans);
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .13em;
  text-transform: uppercase;
  margin: 0;
}
.df-sos__section-num {
  margin-left: auto;
  font-family: var(--df-serif);
  font-size: 34px;
  font-weight: 600;
  line-height: 1;
  opacity: .28;
}
.df-sos__section--why  .df-sos__section-head { background: var(--df-cream-2); }
.df-sos__section--why  .df-sos__section-icon,
.df-sos__section--why  .df-sos__section-title,
.df-sos__section--why  .df-sos__section-num { color: var(--df-ink-2); }
.df-sos__section--fix  .df-sos__section-head { background: var(--df-mint-bg); }
.df-sos__section--fix  .df-sos__section-icon,
.df-sos__section--fix  .df-sos__section-title,
.df-sos__section--fix  .df-sos__section-num { color: var(--df-mint-deep); }
.df-sos__section--next .df-sos__section-head { background: var(--df-rasp-bg); }
.df-sos__section--next .df-sos__section-icon,
.df-sos__section--next .df-sos__section-title,
.df-sos__section--next .df-sos__section-num { color: var(--df-rasp-deep); }

/* Le texte des sections, tel qu'il sort de l'éditeur riche. */
.df-sos__section-text p { margin: 0 0 15px; }
.df-sos__section-text > :last-child { margin-bottom: 0; }
.df-sos__section-text a { color: var(--df-caramel); text-decoration: none; text-underline-offset: 3px; }
.df-sos__section-text a:hover { color: var(--df-caramel-deep); text-decoration: underline; }
.df-sos__section-text h3 {
  font-family: var(--df-serif);
  font-size: 22px;
  font-weight: 500;
  line-height: 1.2;
  color: var(--df-ink);
  margin: 26px 0 8px;
  scroll-margin-top: 20px;
}
.df-sos__section-text h3:first-child { margin-top: 0; }
.df-sos__section-text h4 {
  font-family: var(--df-serif);
  font-size: 18px;
  font-weight: 500;
  margin: 18px 0 6px;
  color: var(--df-ink);
}
.df-sos__section-text ul,
.df-sos__section-text ol { margin: 0 0 15px 22px; padding: 0; }
.df-sos__section-text li { margin: 0 0 9px; }

/* Le rattrapage : les étapes numérotées dans une pastille menthe. */
.df-sos__section--fix .df-sos__section-text ol {
  list-style: none;
  margin-left: 0;
  counter-reset: df-sos-step;
}
.df-sos__section--fix .df-sos__section-text ol > li {
  counter-increment: df-sos-step;
  position: relative;
  padding-left: 34px;
}
.df-sos__section--fix .df-sos__section-text ol > li::before {
  content: counter(df-sos-step);
  position: absolute;
  left: 0;
  top: 2px;
  width: 23px;
  height: 23px;
  border-radius: 999px;
  background: var(--df-mint-bg);
  color: var(--df-mint-deep);
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
}
/* La prochaine fois : la check-list, point framboise. */
.df-sos__section--next .df-sos__section-text ul {
  list-style: none;
  margin-left: 0;
}
.df-sos__section--next .df-sos__section-text ul > li {
  position: relative;
  padding-left: 26px;
}
.df-sos__section--next .df-sos__section-text ul > li::before {
  content: '';
  position: absolute;
  left: 2px;
  top: 11px;
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: var(--df-rasp);
}

/* [df_note] et [df_encadre] */
.df-sos__note {
  font-size: 14.5px;
  color: var(--df-ink-2);
  background: var(--df-cream-2);
  border-radius: 10px;
  padding: 13px 16px;
  margin: 6px 0 15px;
}
.df-sos__callout {
  border: 1px solid var(--df-line-2);
  border-radius: 12px;
  padding: 16px 18px;
  margin: 22px 0;
  background: var(--df-paper);
}
.df-sos__callout-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--df-caramel);
  margin: 0 0 7px !important;
}
.df-sos__callout p { margin: 0; font-size: 15px; color: var(--df-ink-2); line-height: 1.55; }

/* Médias (images / vidéos) insérés dans les sections. */
.df-sos__section-text img,
.df-sos__section-text video {
  display: block;
  max-width: 100%;
  height: auto;
  border-radius: 12px;
  margin: 24px 0;
}
.df-sos__section-text figure { margin: 24px 0; }
.df-sos__section-text figure img { margin: 0; }
.df-sos__section-text figcaption {
  font-size: 13.5px;
  font-style: italic;
  color: var(--df-ink-3);
  margin-top: 9px;
  text-align: left;
}
.df-sos__section-text iframe {
  max-width: 100%;
  border-radius: 12px;
  margin: 24px 0;
  aspect-ratio: 16 / 9;
  width: 100%;
  height: auto;
  border: 0;
}
.df-sos__section-text .wp-block-embed,
.df-sos__section-text .wp-embedded-content { margin: 24px 0; }

/* [df_tableau] ou <table> dans une section : même style de bloc que le
   pattern « Problèmes fréquents » (déclaré plus bas), avec de l'air autour. */
.df-sos__section-text .wp-block-table.is-style-df-problemes {
  margin: 24px 0;
  scroll-margin-top: 20px;
}
.df-sos__section-text .wp-block-table.is-style-df-problemes figcaption { font-style: normal; }
.df-sos__table-intro { color: var(--df-ink-2); }

/* ── Contenu de l'éditeur (tableau des ratages, texte libre) ── */
.df-sos__extra {
  margin-top: 38px;
  font-size: 16px;
  line-height: 1.6;
  color: var(--df-ink-2);
  scroll-margin-top: 20px;
}
.df-sos__extra p { margin: 0 0 20px; }
.df-sos__extra .wp-block-table.is-style-df-problemes { margin-bottom: 0; }

.df-sos__empty {
  padding: 40px 24px;
  text-align: center;
  color: var(--df-ink-3);
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
}
.df-sos__empty p { margin: 12px 0 0; }

/* ── CTA vers l'index ── */
.df-sos__cta {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-top: 34px;
  padding: 20px 22px;
  background: var(--df-rasp-bg);
  border-radius: 14px;
  color: inherit;
  text-decoration: none;
}
.df-sos__cta:hover,
.df-sos__cta:focus-visible { text-decoration: none; }
.df-sos__cta-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--df-paper);
  color: var(--df-rasp);
  flex-shrink: 0;
}
.df-sos__cta-body { display: flex; flex-direction: column; min-width: 0; }
.df-sos__cta-title { font-size: 15.5px; font-weight: 600; color: var(--df-rasp-deep); }
.df-sos__cta-sub { font-size: 13.5px; color: var(--df-rasp-deep); opacity: .8; }
.df-sos__cta-arrow { margin-left: auto; display: inline-flex; color: var(--df-rasp); }

.df-sos__faq { margin-top: 48px; }

@media (max-width: 640px) {
  .df-sos__toc-grid { grid-template-columns: 1fr; gap: 22px; }
}
@media (max-width: 600px) {
  .df-sos { padding-bottom: 48px; }
  .df-sos__diag { gap: 14px; padding: 18px 18px; margin-top: 24px; }
  .df-sos__diag-icon { width: 36px; height: 36px; }
  .df-sos__diag-title { margin-top: 6px; font-size: 16px; }
  .df-sos__diag-text { font-size: 15px; }
  .df-sos__back { margin: 24px 0 20px; }
  .df-sos__section { padding: 30px 0; }
  .df-sos__section-head { padding: 11px 14px; margin-bottom: 20px; }
  .df-sos__cta { padding: 16px 18px; }
  .df-sos-archive__row { padding: 16px 16px; gap: 12px; }
  .df-sos-archive__row-title { font-size: 17px; }
}

.df-sos-empty {
  text-align: center;
  padding: 70px 24px;
  background: var(--df-paper);
  border-radius: var(--df-r-xl);
  box-shadow: var(--df-shadow-sm);
  color: var(--df-ink-3);
}
.df-sos-empty h3 {
  font-family: var(--df-serif);
  font-size: 26px;
  font-weight: 500;
  margin: 14px 0 6px;
  color: var(--df-ink);
}
.df-sos-empty p {
  margin: 0;
  font-size: 16px;
  color: var(--df-ink-2);
}

/* ── Archive Science (« Pourquoi ça rate ») ────────────────── */
.df-science-archive {
  background: var(--df-cream);
  padding: 52px 0 64px;
  min-height: 60vh;
}
.df-science-archive__wrap {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 40px;
}
.df-science-archive__kicker {
  color: var(--df-caramel);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: 10px;
}
.df-science-archive__title {
  font-family: var(--df-serif);
  font-size: 52px;
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -1px;
  margin: 0 0 14px;
}
.df-science-archive__lede {
  font-size: 18px;
  color: var(--df-ink-2);
  line-height: 1.5;
  max-width: 58ch;
  margin: 0 0 40px;
}
.df-science-archive__lede strong { color: var(--df-ink); font-weight: 600; }

.df-science-archive__list {
  display: flex;
  flex-direction: column;
  gap: 28px;
}

/* Carte « wide » : image + texte côte à côte, alternance gauche/droite */
.df-science-wide {
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  background: var(--df-paper);
  border-radius: var(--df-r-xl);
  overflow: hidden;
  box-shadow: var(--df-shadow-sm);
  transition: box-shadow .25s ease;
}
.df-science-wide:hover { box-shadow: var(--df-shadow-md); }

/* Carte impaire : on inverse l'ordre via grid-template-columns + ordering. */
.df-science-wide.is-reverse {
  grid-template-columns: 1fr 1.1fr;
}
.df-science-wide.is-reverse .df-science-wide__media { order: 2; }
.df-science-wide.is-reverse .df-science-wide__body  { order: 1; }

.df-science-wide__media {
  position: relative;
  display: block;
  text-decoration: none;
  min-height: 300px;
  overflow: hidden;
}
.df-science-wide__media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.df-science-wide__ph {
  height: 100%;
  min-height: 300px;
  border-radius: 0;
}
.df-science-wide__chip {
  position: absolute;
  top: 18px;
  left: 18px;
}

.df-science-wide__body {
  padding: 40px 44px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.df-science-wide__title {
  font-family: var(--df-serif);
  font-size: 30px;
  font-weight: 500;
  line-height: 1.12;
  margin: 0 0 12px;
}
.df-science-wide__title a {
  color: var(--df-ink);
  text-decoration: none;
}
.df-science-wide__title a:hover { color: var(--df-caramel-deep); }

.df-science-wide__accroche {
  font-family: var(--df-serif);
  font-style: italic;
  font-size: 18px;
  color: var(--df-caramel-deep);
  line-height: 1.4;
  margin: 0 0 18px;
}
.df-science-wide__corps {
  margin: 0 0 18px;
  font-size: 16px;
  color: var(--df-ink-2);
  line-height: 1.65;
}
.df-science-wide__more {
  align-self: flex-start;
}

.df-science-archive__empty {
  text-align: center;
  padding: 70px 24px;
  background: var(--df-paper);
  border-radius: var(--df-r-xl);
  box-shadow: var(--df-shadow-sm);
  color: var(--df-ink-3);
}
.df-science-archive__empty h3 {
  font-family: var(--df-serif);
  font-size: 26px;
  font-weight: 500;
  margin: 14px 0 6px;
  color: var(--df-ink);
}
.df-science-archive__empty p { margin: 0; font-size: 16px; color: var(--df-ink-2); }

/* ── Single Science ────────────────────────────────────────── */
.df-science-single {
  background: var(--df-cream);
  padding: 30px 0 64px;
}
.df-science-single__wrap {
  max-width: 780px;
  margin: 0 auto;
  padding: 0 40px;
}
.df-science-single__back { display: inline-flex; margin-bottom: 24px; }
.df-science-single__chip { display: inline-flex; margin-bottom: 14px; }
.df-science-single__title {
  font-family: var(--df-serif);
  font-size: 52px;
  font-weight: 500;
  line-height: 1.04;
  letter-spacing: -.8px;
  margin: 0 0 18px;
}
.df-science-single__accroche {
  font-family: var(--df-serif);
  font-style: italic;
  font-size: 24px;
  line-height: 1.4;
  color: var(--df-caramel-deep);
  margin: 0 0 32px;
  padding-left: 20px;
  border-left: 4px solid var(--df-caramel);
}
.df-science-single__photo {
  margin: 0 0 32px;
  border-radius: var(--df-r-lg);
  overflow: hidden;
}
.df-science-single__photo img {
  display: block;
  width: 100%;
  height: auto;
}
.df-science-single__content {
  font-size: 17px;
  line-height: 1.7;
}
.df-science-single__content h2 {
  font-family: var(--df-serif);
  font-size: 26px;
  font-weight: 500;
  margin: 1.6em 0 .5em;
}
.df-science-single__content h3 {
  font-family: var(--df-serif);
  font-size: 21px;
  font-weight: 500;
  margin: 1.4em 0 .4em;
}

.df-science-single__more {
  margin-top: 56px;
  padding-top: 40px;
  border-top: 1px solid var(--df-line);
}
.df-science-single__more-title {
  font-family: var(--df-serif);
  font-size: 24px;
  font-weight: 500;
  margin: 0 0 20px;
}
.df-science-single__more .df-science-card {
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  padding: 22px 22px 20px;
  box-shadow: var(--df-shadow-sm);
  text-decoration: none;
}

/* ── Archive Recettes ──────────────────────────────────────── */
.df-recettes-archive {
  background: var(--df-cream);
  padding: 52px 0 64px;
  min-height: 60vh;
}
.df-recettes-archive__wrap {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 40px;
}
.df-recettes-archive__kicker {
  color: var(--df-caramel);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: 10px;
}
.df-recettes-archive__title {
  font-family: var(--df-serif);
  font-size: 52px;
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -1px;
  margin: 0 0 14px;
}
.df-recettes-archive__lede {
  font-size: 18px;
  color: var(--df-ink-2);
  line-height: 1.5;
  max-width: 58ch;
  margin: 0 0 28px;
}

.df-recettes-archive__controls {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  align-items: center;
  margin: 0 0 14px;
}

.df-recettes-archive__search {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--df-paper);
  border-radius: 999px;
  padding: 6px 6px 6px 18px;
  box-shadow: var(--df-shadow-sm);
  min-width: 320px;
  flex: 1 1 320px;
  max-width: 440px;
  position: relative;
}
.df-recettes-archive__search svg:first-child {
  color: var(--df-ink-3);
  flex-shrink: 0;
}
/* Sélecteur avec l'attribut : global.min.css de Kadence, chargé après cette
   feuille, borde les input[type="search"] à spécificité égale. */
.df-recettes-archive__search input[type="search"] {
  flex: 1;
  min-width: 0;
  border: none;
  outline: none;
  background: none;
  box-shadow: none;
  border-radius: 0;
  -webkit-appearance: none;
  appearance: none;
  font-family: var(--df-sans);
  font-size: 15.5px;
  color: var(--df-ink);
  padding: 8px 0;
}
.df-recettes-archive__search input::placeholder { color: var(--df-ink-3); }
.df-recettes-archive__search-clear {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 999px;
  color: var(--df-ink-3);
  text-decoration: none;
  flex-shrink: 0;
}
.df-recettes-archive__search-clear:hover {
  background: var(--df-cream-2);
  color: var(--df-ink);
}
.df-recettes-archive__search-submit {
  flex-shrink: 0;
  border: none;
  cursor: pointer;
  background: var(--df-caramel);
  color: #fff;
  width: 38px;
  height: 38px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background .15s ease;
}
.df-recettes-archive__search-submit:hover { background: var(--df-caramel-deep); }

.df-recettes-archive__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.df-chip {
  display: inline-flex;
  align-items: center;
  font-family: var(--df-sans);
  font-size: 13.5px;
  font-weight: 600;
  padding: 9px 16px;
  border-radius: 999px;
  background: var(--df-cream-2);
  color: var(--df-caramel-deep);
  text-decoration: none;
  white-space: nowrap;
  transition: background .15s ease, color .15s ease, transform .12s ease;
}
.df-chip:hover {
  background: var(--df-caramel);
  color: #fff;
  transform: translateY(-1px);
}
.df-chip.is-active {
  background: var(--df-ink);
  color: var(--df-cream);
}
.df-chip.is-active:hover { background: var(--df-ink); color: var(--df-cream); }

.df-recettes-archive__count {
  font-size: 14px;
  color: var(--df-ink-3);
  margin: 4px 0 26px;
}
.df-recettes-archive__count strong { color: var(--df-ink-2); font-weight: 600; }

.df-recettes-archive__empty {
  text-align: center;
  padding: 60px 24px;
  background: var(--df-paper);
  border-radius: var(--df-r-xl);
  box-shadow: var(--df-shadow-sm);
}
.df-recettes-archive__empty h3 {
  font-family: var(--df-serif);
  font-size: 28px;
  font-weight: 500;
  margin: 14px 0 6px;
}
.df-recettes-archive__empty p {
  margin: 0 0 22px;
  font-size: 16px;
  color: var(--df-ink-2);
}

/* ══════ La boîte à astuces ══════════════════════════════════════════
   Cartes (grille home + archive) + archive + single + maillage recette */

/* Carte astuce */
.df-tour-de-main-card {
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  overflow: hidden;
  box-shadow: var(--df-shadow-sm);
  display: flex;
  flex-direction: column;
}
.df-tour-de-main-card__media {
  position: relative;
  aspect-ratio: 16 / 10;
  /* Sans overflow caché, le cadre s'agrandit jusqu'à la hauteur naturelle
     de la photo (minimum automatique des boîtes à aspect-ratio) : une photo
     verticale donnait une carte deux fois plus haute que ses voisines. */
  overflow: hidden;
  background: var(--df-cream-2);
}
.df-tour-de-main-card__media .df-ph,
.df-tour-de-main-card__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100% !important; /* le placeholder reçoit une hauteur en ligne */
  display: block;
  object-fit: cover;
  object-position: center;
  border-radius: 0;
}
.df-tour-de-main-card__chip {
  position: absolute;
  top: 14px;
  left: 14px;
}
.df-tour-de-main-card__body {
  padding: 20px 22px 22px;
  display: flex;
  flex-direction: column;
  flex: 1;
}
.df-tour-de-main-card__title {
  font-family: var(--df-serif);
  font-size: 23px;
  font-weight: 500;
  line-height: 1.14;
  margin: 0 0 9px;
  color: var(--df-ink);
}
.df-tour-de-main-card__blurb {
  margin: 0 0 16px;
  font-size: 14.5px;
  color: var(--df-ink-2);
  line-height: 1.5;
  /* Quatre lignes maximum : un extrait long (ou absent, remplacé par le
     début du contenu) ne doit pas étirer la carte. */
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.df-tour-de-main-card__meta {
  margin-top: auto;
  padding-top: 14px;
  border-top: 1px solid var(--df-line);
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  align-items: center;
  font-size: 13px;
  color: var(--df-ink-3);
}
.df-tour-de-main-card__meta-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.df-tour-de-main-card__meta-item--right { margin-left: auto; color: var(--df-ink-2); }
.df-tour-de-main-card__meta-item svg { color: var(--df-caramel); }
.df-tour-de-main-card__meta-item--right svg { color: var(--df-ink-2); }

/* Reset des soulignements sur les cartes astuce (cliquables) */
a.df-tour-de-main-card,
a.df-tour-de-main-card * { text-decoration: none; }
a.df-tour-de-main-card { color: inherit; }

/* Archive Astuces */
.df-tour-de-main-archive {
  background: var(--df-cream);
  padding: 52px 0 64px;
  min-height: 60vh;
}
.df-tour-de-main-archive__wrap {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 40px;
}
.df-tour-de-main-archive__kicker {
  color: var(--df-caramel);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: 10px;
}
.df-tour-de-main-archive__title {
  font-family: var(--df-serif);
  font-size: 52px;
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -1px;
  margin: 0 0 14px;
}
.df-tour-de-main-archive__lede {
  font-size: 18px;
  color: var(--df-ink-2);
  line-height: 1.5;
  max-width: 60ch;
  margin: 0 0 28px;
}
.df-tour-de-main-archive__controls {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  align-items: center;
  margin: 0 0 14px;
}
.df-tour-de-main-archive__search {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--df-paper);
  border-radius: 999px;
  padding: 6px 6px 6px 18px;
  box-shadow: var(--df-shadow-sm);
  min-width: 300px;
  flex: 1 1 300px;
  max-width: 420px;
}
.df-tour-de-main-archive__search svg:first-child { color: var(--df-ink-3); flex-shrink: 0; }
.df-tour-de-main-archive__search input {
  flex: 1;
  min-width: 0;
  border: none;
  outline: none;
  background: none;
  font-family: var(--df-sans);
  font-size: 15.5px;
  color: var(--df-ink);
  padding: 8px 0;
}
.df-tour-de-main-archive__search input::placeholder { color: var(--df-ink-3); }
.df-tour-de-main-archive__search-clear {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  border-radius: 999px;
  color: var(--df-ink-3);
  text-decoration: none;
  flex-shrink: 0;
}
.df-tour-de-main-archive__search-submit {
  flex-shrink: 0;
  border: none;
  cursor: pointer;
  background: var(--df-caramel);
  color: #fff;
  width: 38px;
  height: 38px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.df-tour-de-main-archive__search-submit:hover { background: var(--df-caramel-deep); }
.df-tour-de-main-archive__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.df-tour-de-main-archive__count {
  font-size: 14px;
  color: var(--df-ink-3);
  margin: 4px 0 26px;
}
.df-tour-de-main-archive__count strong { color: var(--df-ink-2); font-weight: 600; }
.df-tour-de-main-archive__empty {
  text-align: center;
  padding: 60px 24px;
  background: var(--df-paper);
  border-radius: var(--df-r-xl);
  box-shadow: var(--df-shadow-sm);
}
.df-tour-de-main-archive__empty h3 {
  font-family: var(--df-serif);
  font-size: 28px;
  font-weight: 500;
  margin: 14px 0 6px;
}
.df-tour-de-main-archive__empty p { margin: 0 0 22px; font-size: 16px; color: var(--df-ink-2); }

/* Single Astuce */
.df-tour-de-main {
  background: var(--df-cream);
  padding: 30px 0 60px;
}
.df-tour-de-main__wrap {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 40px;
}
.df-tour-de-main__back { display: inline-flex; margin-bottom: 20px; }

.df-tour-de-main__hero {
  position: relative;
  margin-bottom: 36px;
  border-radius: var(--df-r-xl);
  overflow: hidden;
}
.df-tour-de-main__img {
  display: block;
  width: 100%;
  height: 360px;
  object-fit: cover;
  border-radius: var(--df-r-xl);
}
.df-tour-de-main__ph {
  height: 360px;
  border-radius: var(--df-r-xl);
}
.df-tour-de-main__chip {
  position: absolute;
  top: 22px;
  left: 22px;
}

.df-tour-de-main__grid {
  display: grid;
  grid-template-columns: 1.55fr 1fr;
  gap: 56px;
  align-items: start;
}

.df-tour-de-main__title {
  font-family: var(--df-serif);
  font-size: 46px;
  font-weight: 500;
  line-height: 1.04;
  letter-spacing: -.8px;
  margin: 0 0 10px;
}
.df-tour-de-main__accroche {
  font-family: var(--df-serif);
  font-style: italic;
  font-size: 21px;
  color: var(--df-caramel-deep);
  line-height: 1.4;
  margin: 0 0 24px;
}

/* Encadré « Le geste clé » */
.df-tour-de-main__cle {
  display: flex;
  gap: 15px;
  background: var(--df-caramel-bg);
  border-radius: var(--df-r-lg);
  padding: 22px 24px;
  border-left: 4px solid var(--df-caramel);
  margin: 0 0 40px;
}
.df-tour-de-main__cle-icon {
  flex-shrink: 0;
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--df-paper);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--df-caramel);
}
.df-tour-de-main__cle-body { flex: 1; min-width: 0; }
.df-tour-de-main__cle-kicker {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--df-caramel);
  margin-bottom: 5px;
}
.df-tour-de-main__cle-text {
  font-family: var(--df-serif);
  font-size: 18.5px;
  font-weight: 500;
  line-height: 1.4;
  color: var(--df-ink);
  margin: 0;
}

/* Contenu de l'astuce (étapes Gutenberg via Group is-style-df-step) */
.df-tour-de-main__content {
  font-size: 17px;
  line-height: 1.65;
}
.df-tour-de-main__content h2 {
  font-family: var(--df-serif);
  font-size: 28px;
  font-weight: 500;
  margin: 1.6em 0 .8em;
}
.df-tour-de-main__content h3 {
  font-family: var(--df-serif);
  font-size: 22px;
  font-weight: 500;
  margin: 1.5em 0 .6em;
}
/* Le compteur étapes fonctionne aussi ici grâce à la règle globale .wp-block-group.is-style-df-step */
.df-tour-de-main__content { counter-reset: df-step; }

/* CTA SOS au bas */
.df-tour-de-main__sos {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 34px;
  background: var(--df-rasp-bg);
  border-radius: var(--df-r-lg);
  padding: 20px 24px;
  color: var(--df-rasp-deep);
  text-decoration: none;
}
.df-tour-de-main__sos-body { flex: 1; }
.df-tour-de-main__sos-title { font-weight: 600; font-size: 17px; }
.df-tour-de-main__sos-sub { font-size: 14.5px; opacity: .8; }

/* Sidebar (recettes liées + manifesto) */
.df-tour-de-main__aside {
  position: sticky;
  top: 96px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.df-tour-de-main__recettes {
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  padding: 22px 24px;
  box-shadow: var(--df-shadow-sm);
}
.df-tour-de-main__recettes-title {
  font-family: var(--df-serif);
  font-size: 21px;
  font-weight: 500;
  margin: 0 0 6px;
}
.df-tour-de-main__recettes-lede {
  margin: 0 0 16px;
  font-size: 14px;
  color: var(--df-ink-2);
  line-height: 1.5;
}
.df-tour-de-main__recettes-list { display: flex; flex-direction: column; gap: 11px; }
.df-tour-de-main__rec {
  display: flex;
  align-items: center;
  gap: 13px;
  background: var(--df-cream-2);
  border-radius: var(--df-r-md);
  padding: 11px;
  text-decoration: none;
  color: var(--df-ink);
}
.df-tour-de-main__rec:hover { background: var(--df-cream); }
.df-tour-de-main__rec .df-ph,
.df-tour-de-main__rec img {
  width: 56px;
  height: 56px;
  flex-shrink: 0;
  border-radius: 10px;
  object-fit: cover;
}
.df-tour-de-main__rec-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.df-tour-de-main__rec-title {
  font-family: var(--df-serif);
  font-size: 16px;
  font-weight: 500;
  line-height: 1.15;
}
.df-tour-de-main__rec > svg:last-child { color: var(--df-ink-3); flex-shrink: 0; }

/* Manifesto crème chaud (« Pourquoi cette boîte ») */
.df-tour-de-main__manifesto {
  background: var(--df-cream-2);
  border-radius: var(--df-r-lg);
  padding: 20px 22px;
  display: flex;
  gap: 13px;
}
.df-tour-de-main__manifesto-mark {
  position: relative;
  width: 34px;
  height: 34px;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.df-tour-de-main__manifesto-cherry {
  position: absolute;
  top: 1px;
  right: 2px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--df-rasp);
}
.df-tour-de-main__manifesto-kicker {
  font-size: 12.5px;
  color: var(--df-ink-3);
  font-weight: 600;
  margin-bottom: 3px;
}
.df-tour-de-main__manifesto-text {
  font-family: var(--df-serif);
  font-style: italic;
  font-size: 16px;
  line-height: 1.4;
  color: var(--df-ink);
}

/* Section « Les tours de main à connaître » sur les fiches recettes */
.df-recette__tours-de-main {
  margin: 56px 0 0;
  padding-top: 40px;
  border-top: 1px solid var(--df-line);
}
.df-recette__tours-de-main-title {
  font-family: var(--df-serif);
  font-size: 28px;
  font-weight: 500;
  margin: 0 0 6px;
}
.df-recette__tours-de-main-lede {
  margin: 0 0 22px;
  font-size: 16px;
  color: var(--df-ink-2);
  line-height: 1.5;
}

/* ── Lexique : shortcode inline [lex] (lien dans le texte des recettes) ── */
.df-lex-link {
  text-decoration: none;
  color: inherit;
  border-bottom: 1.5px dotted var(--df-caramel);
  padding-bottom: 0;
  transition: color .15s ease, border-bottom-color .15s ease;
  cursor: help;
}
.df-lex-link dfn { font-style: normal; }
.df-lex-link:hover {
  color: var(--df-caramel-deep);
  border-bottom-style: solid;
}
.df-lex-link.is-pending {
  border-bottom-color: var(--df-line-2);
  cursor: default;
  color: inherit;
}

/* ── Single Lexique ────────────────────────────────────────── */
.df-lex {
  background: var(--df-cream);
  padding: 30px 0 64px;
}
.df-lex__wrap {
  max-width: 780px;
  margin: 0 auto;
  padding: 0 40px;
}
.df-lex__back { display: inline-flex; margin-bottom: 20px; }
.df-lex__kicker {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--df-caramel);
  margin-bottom: 10px;
}
.df-lex__title {
  font-family: var(--df-serif);
  font-size: 52px;
  font-weight: 500;
  line-height: 1.04;
  letter-spacing: -.8px;
  margin: 0 0 18px;
}
.df-lex__definition {
  font-family: var(--df-serif);
  font-size: 22px;
  line-height: 1.5;
  color: var(--df-ink);
  margin: 0 0 32px;
  padding-left: 20px;
  border-left: 4px solid var(--df-caramel);
}
.df-lex__photo {
  margin: 0 0 32px;
  border-radius: var(--df-r-lg);
  overflow: hidden;
}
.df-lex__photo img {
  display: block;
  width: 100%;
  height: auto;
}
.df-lex__content {
  font-size: 17px;
  line-height: 1.7;
}
.df-lex__content h2 {
  font-family: var(--df-serif);
  font-size: 26px;
  font-weight: 500;
  margin: 1.6em 0 .5em;
}
.df-lex__content h3 {
  font-family: var(--df-serif);
  font-size: 21px;
  font-weight: 500;
  margin: 1.4em 0 .4em;
}

.df-lex__synonyms {
  margin: 28px 0 0;
  padding: 14px 18px;
  background: var(--df-cream-2);
  border-radius: var(--df-r-md);
  font-size: 15px;
  color: var(--df-ink-2);
}
.df-lex__synonyms-label {
  font-weight: 600;
  color: var(--df-ink);
  margin-right: 4px;
}
.df-lex__synonyms em { font-style: italic; color: var(--df-caramel-deep); }

.df-lex__confuse {
  margin: 32px 0 0;
  padding: 22px 24px;
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  box-shadow: var(--df-shadow-sm);
}
.df-lex__confuse-title {
  font-family: var(--df-serif);
  font-size: 19px;
  font-weight: 500;
  margin: 0 0 10px;
}
.df-lex__confuse-list { list-style: none; padding: 0; margin: 0; }
.df-lex__confuse-list li {
  border-bottom: 1px solid var(--df-line);
}
.df-lex__confuse-list li:last-child { border-bottom: none; }
.df-lex__confuse-link {
  display: block;
  text-decoration: none;
  color: inherit;
  padding: 12px 0;
}
.df-lex__confuse-link:hover .df-lex__confuse-name { color: var(--df-caramel-deep); }
.df-lex__confuse-name {
  font-family: var(--df-serif);
  font-size: 17px;
  font-weight: 500;
  color: var(--df-ink);
  display: block;
  margin-bottom: 2px;
}
.df-lex__confuse-def {
  font-size: 14.5px;
  color: var(--df-ink-2);
  line-height: 1.45;
}

.df-lex__usage {
  margin: 28px 0 0;
  padding: 22px 24px;
  background: var(--df-cream-2);
  border-radius: var(--df-r-lg);
}
.df-lex__usage-title {
  font-family: var(--df-serif);
  font-size: 19px;
  font-weight: 500;
  margin: 0 0 10px;
}
.df-lex__usage-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.df-lex__usage-list a {
  display: inline-block;
  padding: 7px 14px;
  background: var(--df-paper);
  border-radius: 999px;
  font-size: 14.5px;
  font-weight: 500;
  color: var(--df-caramel-deep);
  text-decoration: none;
  box-shadow: var(--df-shadow-sm);
}
.df-lex__usage-list a:hover { background: var(--df-caramel); color: #fff; }

/* ── Archive Lexique (A-Z) ────────────────────────────────── */
.df-lex-archive {
  background: var(--df-cream);
  padding: 52px 0 64px;
  min-height: 60vh;
}
.df-lex-archive__wrap {
  max-width: 980px;
  margin: 0 auto;
  padding: 0 40px;
}
.df-lex-archive__kicker {
  color: var(--df-caramel);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: 10px;
}
.df-lex-archive__title {
  font-family: var(--df-serif);
  font-size: 52px;
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -1px;
  margin: 0 0 14px;
}
.df-lex-archive__lede {
  font-size: 18px;
  color: var(--df-ink-2);
  line-height: 1.5;
  max-width: 58ch;
  margin: 0 0 34px;
}

.df-lex-archive__alpha {
  position: sticky;
  top: 0;
  z-index: 10;
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0 -8px 26px;
  padding: 14px 8px;
  background: rgba(241, 239, 232, .92);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--df-line);
}
.df-lex-archive__alpha a {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border-radius: 999px;
  background: var(--df-paper);
  color: var(--df-caramel-deep);
  font-family: var(--df-serif);
  font-weight: 600;
  font-size: 15px;
  text-decoration: none;
  box-shadow: var(--df-shadow-sm);
  transition: background .15s ease, color .15s ease;
}
.df-lex-archive__alpha a:hover {
  background: var(--df-caramel);
  color: #fff;
}

.df-lex-archive__group {
  margin-bottom: 36px;
  scroll-margin-top: 80px;
}
.df-lex-archive__letter {
  font-family: var(--df-serif);
  font-size: 60px;
  font-weight: 500;
  line-height: 1;
  color: var(--df-caramel);
  margin: 0 0 16px;
  letter-spacing: -2px;
}

.df-lex-archive__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
}
.df-lex-archive__item {
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  box-shadow: var(--df-shadow-sm);
  overflow: hidden;
}
.df-lex-archive__item-link {
  display: block;
  padding: 18px 22px;
  text-decoration: none;
  color: inherit;
}
.df-lex-archive__item-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 4px;
}
.df-lex-archive__item-name {
  font-family: var(--df-serif);
  font-size: 19px;
  font-weight: 500;
  color: var(--df-ink);
}
.df-lex-archive__item-fam {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--df-caramel);
  flex-shrink: 0;
}
.df-lex-archive__item-def {
  margin: 0;
  font-size: 14.5px;
  color: var(--df-ink-2);
  line-height: 1.5;
}

.df-lex-archive__empty {
  text-align: center;
  padding: 70px 24px;
  background: var(--df-paper);
  border-radius: var(--df-r-xl);
  box-shadow: var(--df-shadow-sm);
  color: var(--df-ink-3);
}
.df-lex-archive__empty h3 {
  font-family: var(--df-serif);
  font-size: 26px;
  font-weight: 500;
  margin: 14px 0 6px;
  color: var(--df-ink);
}
.df-lex-archive__empty p { margin: 0; font-size: 16px; color: var(--df-ink-2); }

/* Masquage de la barre de titre Kadence sur la home + single-recette
   + archives CPTs (le hero du pattern ou de l'archive fait déjà office d'en-tête éditorial). */
.home .entry-hero,
.home .site-entry-header,
.home .entry-header,
.page-template-front-page .entry-hero,
.single-recette .entry-hero,
.single-recette .site-entry-header,
.single-recette .entry-header,
.post-type-archive-sos .entry-hero,
.post-type-archive-sos .site-entry-header,
.post-type-archive-sos .entry-header,
.post-type-archive-recette .entry-hero,
.post-type-archive-recette .site-entry-header,
.post-type-archive-recette .entry-header,
.post-type-archive-science .entry-hero,
.post-type-archive-science .site-entry-header,
.post-type-archive-science .entry-header,
.single-lexique .entry-hero,
.single-lexique .site-entry-header,
.single-lexique .entry-header,
.post-type-archive-lexique .entry-hero,
.post-type-archive-lexique .site-entry-header,
.post-type-archive-lexique .entry-header,
.single-science .entry-hero,
.single-science .site-entry-header,
.single-science .entry-header,
.single-astuce .entry-hero,
.single-astuce .site-entry-header,
.single-astuce .entry-header,
.post-type-archive-astuce .entry-hero,
.post-type-archive-astuce .site-entry-header,
.post-type-archive-astuce .entry-header {
  display: none !important;
}

/* ==========================================================================
   9. Footer
   ========================================================================== */
.df-footer-tag {
  font-family: var(--df-serif);
  font-style: italic;
  color: var(--df-ink-2);
}

/* ==========================================================================
   10. Responsive
   ========================================================================== */
@media (max-width: 1080px) {
  .df-grid--4 { grid-template-columns: repeat(2, 1fr); }
  .df-grid--3 { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 1024px) {
  .df-recette__statbar { padding: 20px 22px; }
  .df-recette__statbar-cell { padding: 0 14px; gap: 10px; }
  .df-recette__statbar-group--rate + .df-recette__statbar-group--times .df-recette__statbar-cell:first-child { padding-left: 14px; }
  .df-hero { padding: 48px 0 56px; }
  .df-hero h1 { font-size: 54px; letter-spacing: -1px; }
  .df-section-head h2 { font-size: 32px; }
  .df-sos-band { padding: 36px 28px; }
  .df-sos-band__title { font-size: 32px; }
  .df-newsletter-band {
    grid-template-columns: 1fr;
    padding: 40px 32px;
    gap: 28px;
  }
  .df-newsletter-band__title { font-size: 30px; }
}

/* Entre 600 et 900px la barre ne tient plus sur une ligne : deux colonnes,
   et le total descend seul en bas, pleine largeur, sous un filet — comme sur
   mobile. Les groupes sont en `display: contents`, donc :nth-child compte dans
   chaque groupe ; le groupe du taux n'a qu'une cellule, ça reste aligné. */
@media (max-width: 900px) {
  .df-recette__statbar {
    display: grid;
    grid-template-columns: 1fr 1fr;
    row-gap: 14px;
  }
  .df-recette__statbar-cell { border-left: none; padding-left: 0; }
  .df-recette__statbar-cell:nth-child(even) {
    border-left: 1px solid var(--df-line);
    padding-left: 14px;
  }
  .df-recette__statbar-cell--total {
    grid-column: 1 / -1;
    border-left: none;
    border-top: 1px solid var(--df-line);
    margin-top: 2px;
    padding: 14px 0 0;
  }
}

@media (max-width: 600px) {
  .df-hero { padding: 32px 0 40px; }
  .df-hero h1 { font-size: 40px; line-height: 1.05; letter-spacing: -.5px; }
  .df-hero__lede { font-size: 17px; }
  .df-section-head h2 { font-size: 26px; }
  .df-recipe-card__title { font-size: 20px; }
  .df-grid--4, .df-grid--3, .df-grid--2 { grid-template-columns: 1fr; }
  .df-newsletter-band__form { flex-direction: column; }
  /* ── Fiche recette : un seul empilement, dans l'ordre de lecture ──
   * Ordre voulu : titre, taux de réussite, temps, nutrition, intro, la recette
   * en bref, ingrédients, étapes. Les colonnes (grille, main, aside) et la barre
   * de stats s'effacent en `display: contents` pour que TOUT le contenu de la
   * fiche devienne enfant direct du même flex — sans quoi `order` ne pourrait
   * pas faire passer un élément de la colonne de droite avant un de la gauche.
   * L'espacement passe alors par le `gap` du conteneur, d'où les marges remises
   * à zéro juste en dessous. */
  .df-recette__wrap {
    padding: 0 20px;
    display: flex;
    flex-direction: column;
    gap: 28px;
  }
  .df-recette__grid,
  .df-recette__main,
  .df-recette__aside,
  .df-recette__statbar { display: contents; }

  /* Sélecteurs à deux classes : plusieurs de ces blocs sont stylés plus bas dans
     la feuille, et une règle à une seule classe leur passerait derrière. */
  .df-recette__wrap .df-recette__back,
  .df-recette__wrap .df-recette__hero,
  .df-recette__wrap .df-recette__statbar-group,
  .df-recette__wrap .df-recette__main > *,
  .df-recette__wrap .df-recette__aside > * { margin: 0; }
  .df-recette__back { align-self: flex-start; }

  .df-recette__main > *,
  .df-recette__aside > * { order: 30; }
  .df-recette__back { order: 1; }
  .df-recette__hero { order: 2; }
  .df-recette__title { order: 3; font-size: 32px; }
  .df-recette__meta { order: 4; }
  .df-recette__rating { order: 5; }
  .df-recette__statbar-group--rate { order: 6; }
  .df-recette__statbar-group--times { order: 7; }
  .df-recette__nutrition { order: 8; }
  .df-recette__intro { order: 9; }
  .df-recette__brief { order: 10; }
  .df-recette__ingredients { order: 11; }
  .df-recette__content { order: 12; }
  .df-recette__signature { order: 50; }
  .df-feedback { order: 51; }

  .df-recette__intro { font-size: 17px; padding-left: 14px; }
  .df-recette__img,
  .df-recette__ph { height: 240px; }

  /* Niveau + temps total, sous le titre. */
  .df-recette__meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    font-family: var(--df-sans);
    font-size: 15px;
    color: var(--df-ink);
  }
  .df-recette__meta-niveau,
  .df-recette__meta-time {
    display: inline-flex;
    align-items: center;
    gap: 8px;
  }
  .df-recette__meta-niveau-label {
    color: var(--df-caramel-deep);
    font-weight: 600;
  }
  .df-recette__meta-time { color: var(--df-caramel); }
  .df-recette__meta-sep { color: var(--df-line-2); }

  /* ── Barre de stats : deux cartes distinctes ──
   * Le taux de réussite d'un côté, les temps de l'autre — le niveau et le total
   * remontent sous le titre, il n'y a plus la place de tout tenir sur une ligne. */
  .df-recette__statbar-group {
    background: var(--df-paper);
    border-radius: var(--df-r-lg);
    box-shadow: var(--df-shadow-md);
    padding: 20px 22px;
  }
  .df-recette__statbar-group--rate { display: block; }
  .df-recette__statbar-group--rate .df-recette__statbar-cell { padding: 0; }

  .df-recette__statbar-group--times {
    display: flex;
    flex-wrap: wrap;
  }
  /* Le niveau est déjà annoncé sous le titre. */
  .df-recette__statbar-cell--niveau { display: none; }
  .df-recette__statbar-group--times .df-recette__statbar-cell {
    flex: 1 1 0;
    min-width: 0;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 6px;
    padding: 0 10px;
    border-left: 1px solid var(--df-line);
  }
  .df-recette__statbar-group--times .df-recette__statbar-cell:first-child,
  .df-recette__statbar-cell--niveau + .df-recette__statbar-cell {
    border-left: none;
    padding-left: 0;
  }
  .df-recette__statbar-key { margin-bottom: 0; }
  .df-recette__statbar-time { font-size: 19px; }

  /* Le total prend toute la largeur, sous un filet : c'est la ligne de bas de carte. */
  .df-recette__statbar-group--times .df-recette__statbar-cell--total {
    flex: 1 0 100%;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    text-align: left;
    border-left: none;
    border-top: 1px solid var(--df-line);
    margin-top: 16px;
    padding: 14px 0 0;
  }
  .df-recette__statbar-cell--total .df-recette__statbar-key {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--df-sans);
    font-size: 16px;
    font-weight: 500;
    letter-spacing: 0;
    text-transform: none;
    color: var(--df-ink);
  }
  .df-recette__statbar-key-icon {
    display: inline-flex;
    color: var(--df-caramel);
  }
  .df-recette__statbar-key-short { display: none; }
  .df-recette__statbar-key-long { display: inline; }

  .df-recette__callout { padding: 18px 20px; }
  .df-recette__callout-title { font-size: 18px; }

  .df-sos-archive__wrap { padding: 0 20px; }
  .df-sos-archive__title { font-size: 36px; }
  .df-sos-archive__search { min-width: 0; flex: 1 1 100%; max-width: none; }
  .df-sos-archive__chips { width: 100%; }
  .df-sos-archive .df-sos-list { grid-template-columns: 1fr; gap: 14px; }

  .df-lex__wrap, .df-lex-archive__wrap { padding: 0 20px; }
  .df-lex__title { font-size: 36px; }
  .df-lex__definition { font-size: 18px; padding-left: 14px; }
  .df-lex-archive__title { font-size: 36px; }
  .df-lex-archive__list { grid-template-columns: 1fr; }
  .df-lex-archive__letter { font-size: 44px; }

  .df-recettes-archive__wrap { padding: 0 20px; }
  .df-recettes-archive__title { font-size: 36px; }
  .df-recettes-archive__search { min-width: 0; flex: 1 1 100%; max-width: none; }
  .df-recettes-archive__chips { width: 100%; }

  .df-science-archive__wrap, .df-science-single__wrap { padding: 0 20px; }
  .df-science-archive__title, .df-science-single__title { font-size: 36px; }
  .df-science-wide,
  .df-science-wide.is-reverse { grid-template-columns: 1fr; }
  .df-science-wide.is-reverse .df-science-wide__media,
  .df-science-wide.is-reverse .df-science-wide__body { order: initial; }
  .df-science-wide__body { padding: 28px 24px; }
  .df-science-wide__media,
  .df-science-wide__ph { min-height: 200px; }
  .df-science-single__accroche { font-size: 20px; padding-left: 14px; }

  .df-tour-de-main-archive__wrap, .df-tour-de-main__wrap { padding: 0 20px; }
  .df-tour-de-main-archive__title, .df-tour-de-main__title { font-size: 36px; }
  .df-tour-de-main-archive__search { min-width: 0; flex: 1 1 100%; max-width: none; }
  .df-tour-de-main-archive__chips { width: 100%; }
  .df-tour-de-main__grid { grid-template-columns: 1fr; gap: 32px; }
  .df-tour-de-main__img,
  .df-tour-de-main__ph { height: 220px; }
  .df-tour-de-main__accroche { font-size: 18px; }
  .df-tour-de-main__aside { position: static; }
  .df-tour-de-main__cle { padding: 18px 20px; }
  .df-tour-de-main__cle-text { font-size: 16.5px; }
}

@media (max-width: 380px) {
  .df-hero h1 { font-size: 34px; }
}

/* =============================================================
   Logo du header — SVG inline « 2 + cerise » + nom du site
   ============================================================= */
.site-branding .brand {
  text-decoration: none;
  display: inline-flex;
  align-items: center;
}
/* Si Kadence affiche aussi le site-title texte, on le masque
   (notre .df-brand__text le remplace dans le logo). */
.site-branding .site-title-wrap { display: none; }

.df-brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: var(--df-ink);
  line-height: 1;
}
.df-brand__mark {
  display: inline-flex;
  width: 44px;
  height: 44px;
  flex-shrink: 0;
  color: var(--df-ink);
}
.df-brand__mark svg,
.df-brand__mark img {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}
.df-brand__cherry { fill: var(--df-rasp); }

.df-brand__text {
  font-family: var(--df-brand);
  font-weight: 600;
  font-size: 23.5px;
  letter-spacing: .35px;
  color: var(--df-ink);
  white-space: nowrap;
}

/* Sticky header : on rétrécit un poil le logo. */
.header-sticky .df-brand__mark { width: 38px; height: 38px; }
.header-sticky .df-brand__text { font-size: 21.5px; }

/* Mobile : on garde le mark, on masque le texte. */
@media (max-width: 768px) {
  .df-brand { gap: 0; }
  .df-brand__text { display: none; }
  .df-brand__mark { width: 38px; height: 38px; }
}

/* =============================================================
   Header — menu, recherche, bouton S'abonner
   ============================================================= */

/* --- Menu principal -------------------------------------------------- */
.main-navigation .menu > li > a {
  font-family: var(--df-sans);
  font-size: 16px;
  font-weight: 500;
  color: var(--df-ink);
  letter-spacing: .1px;
  padding: 10px 4px;
  margin: 0 14px;
  position: relative;
  transition: color .2s ease;
}
.main-navigation .menu > li > a:hover,
.main-navigation .menu > li > a:focus-visible {
  color: var(--df-caramel-deep);
}

/* Item actif : caramel + soulignement */
.main-navigation .menu > li.current-menu-item > a,
.main-navigation .menu > li.current_page_item > a,
.main-navigation .menu > li.current-menu-ancestor > a,
.main-navigation .menu > li.current-menu-parent > a {
  color: var(--df-caramel-deep);
}
.main-navigation .menu > li.current-menu-item > a::after,
.main-navigation .menu > li.current_page_item > a::after,
.main-navigation .menu > li.current-menu-ancestor > a::after,
.main-navigation .menu > li.current-menu-parent > a::after {
  content: "";
  position: absolute;
  left: 4px;
  right: 4px;
  bottom: 2px;
  height: 2px;
  background: var(--df-caramel);
  border-radius: 2px;
}

/* --- Bouton recherche Kadence (icône loupe → pill cream) ------------- */
.site-header-item .search-toggle-open {
  background: var(--df-paper);
  border: 1px solid var(--df-line);
  border-radius: 999px;
  width: 44px;
  height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--df-ink-2);
  transition: color .2s ease, border-color .2s ease, background .2s ease;
}
.site-header-item .search-toggle-open:hover,
.site-header-item .search-toggle-open:focus-visible {
  color: var(--df-caramel-deep);
  border-color: var(--df-caramel);
  background: var(--df-paper);
}
.site-header-item .search-toggle-open svg {
  width: 18px;
  height: 18px;
}

/* --- Bouton CTA « S'abonner » (Kadence Button 1) --------------------- */
.header-button.button {
  background: var(--df-ink);
  color: var(--df-paper);
  border: none;
  border-radius: 999px;
  font-family: var(--df-sans);
  font-weight: 600;
  font-size: 15px;
  letter-spacing: .2px;
  padding: 12px 22px;
  line-height: 1;
  transition: background .2s ease, transform .15s ease;
}
.header-button.button:hover,
.header-button.button:focus-visible {
  background: var(--df-caramel-deep);
  color: var(--df-paper);
  transform: translateY(-1px);
}

/* --- Drawer de recherche (modal qui s'ouvre) ------------------------- */
.search-drawer .search-form input[type="search"] {
  font-family: var(--df-serif);
  font-size: 28px;
  border-bottom: 2px solid var(--df-line-2);
  background: transparent;
  color: var(--df-ink);
}
.search-drawer .search-form input[type="search"]:focus {
  border-bottom-color: var(--df-caramel);
  outline: none;
}

/* --- Responsive : espacement plus serré sur tablet ------------------- */
@media (max-width: 1024px) {
  .main-navigation .menu > li > a {
    margin: 0 8px;
    font-size: 15px;
  }
  .header-button.button {
    padding: 10px 18px;
    font-size: 14px;
  }
}

/* ═══════════════════════════════════════════════════════════════
 * Bloc Gutenberg « Tour de main » — encart cliquable inline dans
 * les recettes, qui pointe vers une fiche de la boîte à astuces.
 * ═══════════════════════════════════════════════════════════════ */
.df-tour-de-main-callout {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 20px;
  margin: 24px 0;
  background: var(--df-caramel-bg);
  border-radius: var(--df-r-md);
  color: var(--df-ink);
  text-decoration: none;
  transition: background .15s ease, box-shadow .15s ease, transform .15s ease;
}
.df-tour-de-main-callout:hover,
.df-tour-de-main-callout:focus-visible {
  background: #F7DED2;
  box-shadow: var(--df-shadow-sm);
  transform: translateY(-1px);
  text-decoration: none;
}
.df-tour-de-main-callout__icon {
  color: var(--df-caramel);
  display: inline-flex;
  flex-shrink: 0;
}
.df-tour-de-main-callout__body {
  flex: 1;
  min-width: 0;
  font-size: 16px;
  line-height: 1.4;
}
.df-tour-de-main-callout__kicker {
  color: var(--df-caramel-deep);
  font-weight: 700;
  margin-right: 4px;
}
.df-tour-de-main-callout__title {
  color: var(--df-ink);
}
.df-tour-de-main-callout__chevron {
  color: var(--df-ink-3);
  display: inline-flex;
  flex-shrink: 0;
  transition: transform .15s ease, color .15s ease;
}
.df-tour-de-main-callout:hover .df-tour-de-main-callout__chevron,
.df-tour-de-main-callout:focus-visible .df-tour-de-main-callout__chevron {
  color: var(--df-caramel);
  transform: translateX(2px);
}
.df-tour-de-main-callout.is-placeholder {
  color: var(--df-ink-3);
  font-style: italic;
  justify-content: center;
  cursor: default;
}
@media (max-width: 600px) {
  .df-tour-de-main-callout { padding: 14px 16px; gap: 10px; }
  .df-tour-de-main-callout__body { font-size: 14.5px; }
}

/* ═══════════════════════════════════════════════════════════════
 * Barre de navigation mobile (bottom tab bar)
 * Remplace le burger de Kadence sous ~900px.
 * ═══════════════════════════════════════════════════════════════ */
.df-mobile-nav {
  display: none; /* caché sur desktop, révélé plus bas */
}

@media (max-width: 900px) {

  /* On révèle la barre et on cache le burger Kadence + son drawer déclencheur. */
  .df-mobile-nav {
    display: block;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 200;
    background: rgba(255, 255, 255, .96);
    backdrop-filter: saturate(150%) blur(12px);
    -webkit-backdrop-filter: saturate(150%) blur(12px);
    border-top: 1px solid var(--df-line);
    padding-bottom: env(safe-area-inset-bottom, 0);
    box-shadow: 0 -2px 12px rgba(44, 44, 42, .04);
  }
  .df-mobile-nav__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    align-items: stretch;
  }
  .df-mobile-nav__list > li { margin: 0; }
  .df-mobile-nav__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 10px 4px 8px;
    color: var(--df-ink-3);
    text-decoration: none;
    font-family: var(--df-sans);
    font-size: 11.5px;
    font-weight: 500;
    line-height: 1.15;
    letter-spacing: .01em;
    min-height: 58px;
    transition: color .15s ease;
    text-align: center;
  }
  .df-mobile-nav__item:hover,
  .df-mobile-nav__item:focus-visible {
    color: var(--df-ink);
    text-decoration: none;
  }
  .df-mobile-nav__item.is-active {
    color: var(--df-caramel);
    font-weight: 700;
  }
  .df-mobile-nav__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
  }
  .df-mobile-nav__icon svg { display: block; }
  .df-mobile-nav__label {
    display: block;
    white-space: nowrap;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /* Laisse un espace en bas de la page pour que le contenu ne passe pas
   * sous la barre. Le calcul reprend hauteur nav + safe-area iOS. */
  body {
    padding-bottom: calc(66px + env(safe-area-inset-bottom, 0));
  }

  /* Cache le burger Kadence + tout déclencheur de mobile drawer.
   * (Sélecteurs Kadence courants ; si l'un ne s'applique pas, le reste tient.) */
  .header-navigation-toggle-wrap,
  .drawer-toggle,
  button.menu-toggle,
  .mobile-toggle-open-container,
  .header-mobile-navigation-wrap,
  #mobile-drawer .drawer-content-wrap .drawer-header {
    display: none !important;
  }
}

/* Très petit mobile : encore un peu plus compact. */
@media (max-width: 380px) {
  .df-mobile-nav__item {
    font-size: 10.5px;
    padding: 8px 2px 6px;
  }
}


/* ==========================================================================
   11. Notation & retours de la communauté
   Étoiles en or (--df-or), verdicts au code signature menthe / framboise.
   ========================================================================== */

/* ── Étoiles en lecture seule ──────────────────────────────
   Deux couches superposées, celle du haut découpée à la largeur voulue :
   permet un remplissage continu (4,3/5) sans multiplier les chemins SVG. */
.df-stars {
  position: relative;
  display: inline-flex;
  line-height: 0;
  flex: none;
}
.df-stars__empty,
.df-stars__full {
  display: flex;
  gap: 1px;
}
.df-stars svg {
  flex: none;
  display: block;
}
.df-stars__empty svg { fill: var(--df-line-2); }
.df-stars__full {
  position: absolute;
  top: 0;
  left: 0;
  overflow: hidden;
  width: var(--df-stars-fill, 0%);
}
.df-stars__full svg { fill: var(--df-or); }

/* ── Note résumée sous le titre de la recette ──────────────── */
.df-recette__rating {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: -4px 0 14px;
  text-decoration: none;
  color: var(--df-ink-2);
  font-family: var(--df-sans);
  font-size: 13.5px;
}
.df-recette__rating:hover { color: var(--df-caramel); }
.df-recette__rating-avg {
  font-weight: 600;
  color: var(--df-ink);
}
.df-recette__rating-count {
  color: var(--df-ink-3);
  border-bottom: 1px solid var(--df-line);
}

/* ── Note sur la carte recette (archives, grilles) ─────────── */
.df-recipe-card__note {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-left: auto;
  padding-left: 8px;
}
.df-recipe-card__note-count {
  font-size: 11.5px;
  color: var(--df-ink-3);
}

/* ── La carte « Tu l'as testée ? » ─────────────────────────── */
.df-feedback {
  margin: 56px 0 0;
  padding-top: 40px;
  border-top: 1px solid var(--df-line);
  scroll-margin-top: 90px;
}

.df-feedback__head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px 20px;
  margin-bottom: 20px;
}
.df-feedback__title {
  font-family: var(--df-serif);
  font-size: clamp(26px, 3.4vw, 34px);
  font-weight: 600;
  color: var(--df-ink);
  margin: 0;
}
.df-feedback__score {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--df-sans);
  font-size: 14px;
}
.df-feedback__score-num {
  font-weight: 600;
  color: var(--df-ink);
}
.df-feedback__score-count { color: var(--df-ink-3); }

.df-feedback__notice {
  margin: 0 0 18px;
  padding: 11px 15px;
  border-radius: var(--df-r-md);
  font-family: var(--df-sans);
  font-size: 14px;
  border-left: 3px solid;
}
.df-feedback__notice.is-ok {
  background: var(--df-mint-bg);
  border-color: var(--df-mint);
  color: var(--df-mint-deep);
}
.df-feedback__notice.is-warn {
  background: var(--df-rasp-bg);
  border-color: var(--df-rasp);
  color: var(--df-rasp-deep);
}

.df-feedback__form {
  background: var(--df-paper);
  border: 1px solid var(--df-line);
  border-radius: var(--df-r-lg);
  padding: 24px;
  box-shadow: var(--df-shadow-sm);
}

/* Piège à robots : hors écran plutôt que display:none, que certains
   scripts détectent et contournent. */
.df-feedback__hp {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.df-feedback__rows {
  display: flex;
  flex-wrap: wrap;
  gap: 22px 44px;
  margin-bottom: 22px;
}
.df-feedback__row {
  border: 0;
  padding: 0;
  margin: 0;
  min-width: 0;
}
.df-feedback__label {
  display: block;
  padding: 0;
  margin: 0 0 9px;
  font-family: var(--df-sans);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--df-ink-2);
}
.df-feedback__optional {
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
  color: var(--df-ink-3);
}

/* ── Étoiles cliquables ────────────────────────────────────── */
.df-rate {
  display: inline-flex;
  align-items: center;
  gap: 2px;
}
.df-rate__star {
  cursor: pointer;
  line-height: 0;
  padding: 2px;
  border-radius: var(--df-r-sm);
}
.df-rate__star input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}
.df-rate__hit svg {
  display: block;
  fill: var(--df-line-2);
  transition: fill .12s ease, transform .12s ease;
}
.df-rate__star:hover .df-rate__hit svg { transform: scale(1.12); }
.df-rate__star input:focus-visible + .df-rate__hit {
  outline: 2px solid var(--df-caramel);
  outline-offset: 2px;
  border-radius: var(--df-r-sm);
}

/* Remplissage piloté par data-value, posé par ratings.js sur le conteneur :
   une seule écriture DOM au lieu de cinq. */
.df-rate[data-value="1"] .df-rate__star:nth-of-type(-n+1) .df-rate__hit svg,
.df-rate[data-value="2"] .df-rate__star:nth-of-type(-n+2) .df-rate__hit svg,
.df-rate[data-value="3"] .df-rate__star:nth-of-type(-n+3) .df-rate__hit svg,
.df-rate[data-value="4"] .df-rate__star:nth-of-type(-n+4) .df-rate__hit svg,
.df-rate[data-value="5"] .df-rate__star:nth-of-type(-n+5) .df-rate__hit svg {
  fill: var(--df-or);
}

/* Sans JS, :has() reproduit le remplissage cumulatif à partir de la radio
   cochée. Sur un navigateur sans :has(), seule l'étoile choisie se colore —
   dégradation acceptable, la valeur envoyée reste la bonne. */
.df-rate__star input:checked + .df-rate__hit svg { fill: var(--df-or); }

.df-rate:has(.df-rate__star:nth-of-type(1) input:checked) .df-rate__star:nth-of-type(-n+1) .df-rate__hit svg,
.df-rate:has(.df-rate__star:nth-of-type(2) input:checked) .df-rate__star:nth-of-type(-n+2) .df-rate__hit svg,
.df-rate:has(.df-rate__star:nth-of-type(3) input:checked) .df-rate__star:nth-of-type(-n+3) .df-rate__hit svg,
.df-rate:has(.df-rate__star:nth-of-type(4) input:checked) .df-rate__star:nth-of-type(-n+4) .df-rate__hit svg,
.df-rate:has(.df-rate__star:nth-of-type(5) input:checked) .df-rate__star:nth-of-type(-n+5) .df-rate__hit svg {
  fill: var(--df-or);
}

/* Le survol prime sur la sélection, sinon on ne voit pas ce qu'on s'apprête
   à choisir quand on veut baisser sa note. */
.df-rate.is-hovering .df-rate__hit svg { fill: var(--df-line-2); }
.df-rate.is-hovering[data-value="1"] .df-rate__star:nth-of-type(-n+1) .df-rate__hit svg,
.df-rate.is-hovering[data-value="2"] .df-rate__star:nth-of-type(-n+2) .df-rate__hit svg,
.df-rate.is-hovering[data-value="3"] .df-rate__star:nth-of-type(-n+3) .df-rate__hit svg,
.df-rate.is-hovering[data-value="4"] .df-rate__star:nth-of-type(-n+4) .df-rate__hit svg,
.df-rate.is-hovering[data-value="5"] .df-rate__star:nth-of-type(-n+5) .df-rate__hit svg {
  fill: var(--df-or);
}

.df-rate__caption {
  margin-left: 10px;
  font-family: var(--df-sans);
  font-size: 13px;
  font-style: italic;
  color: var(--df-ink-3);
  white-space: nowrap;
}

/* ── Réussi / raté ─────────────────────────────────────────── */
.df-success-toggle {
  display: inline-flex;
  gap: 8px;
  flex-wrap: wrap;
}
.df-success-toggle__opt {
  cursor: pointer;
}
.df-success-toggle__opt input {
  position: absolute;
  opacity: 0;
  width: 1px;
  height: 1px;
}
.df-success-toggle__opt span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border: 1px solid var(--df-line);
  border-radius: 999px;
  background: var(--df-cream);
  font-family: var(--df-sans);
  font-size: 13.5px;
  color: var(--df-ink-2);
  transition: all .14s ease;
}
.df-success-toggle__opt:hover span { border-color: var(--df-line-2); }

.df-success-toggle__opt--yes input:checked + span {
  background: var(--df-mint-bg);
  border-color: var(--df-mint);
  color: var(--df-mint-deep);
  font-weight: 600;
}
.df-success-toggle__opt--no input:checked + span {
  background: var(--df-rasp-bg);
  border-color: var(--df-rasp);
  color: var(--df-rasp-deep);
  font-weight: 600;
}
.df-success-toggle__opt input:focus-visible + span {
  outline: 2px solid var(--df-caramel);
  outline-offset: 2px;
}

/* ── Zone d'écriture ───────────────────────────────────────── */
.df-feedback__textarea,
.df-feedback__field input {
  width: 100%;
  padding: 11px 13px;
  border: 1px solid var(--df-line);
  border-radius: var(--df-r-md);
  background: var(--df-cream);
  font-family: var(--df-sans);
  font-size: 15px;
  color: var(--df-ink);
  transition: border-color .14s ease, background .14s ease;
}
.df-feedback__textarea { resize: vertical; min-height: 96px; }
.df-feedback__textarea:focus,
.df-feedback__field input:focus {
  outline: none;
  background: var(--df-paper);
  border-color: var(--df-caramel);
}
.df-feedback__textarea::placeholder { color: var(--df-ink-3); }

.df-feedback__identity {
  display: flex;
  gap: 14px;
  margin-top: 14px;
  flex-wrap: wrap;
}
.df-feedback__identity[hidden] { display: none; }
.df-feedback__field { flex: 1 1 200px; min-width: 0; }
.df-feedback__field label {
  display: block;
  margin-bottom: 5px;
  font-family: var(--df-sans);
  font-size: 12.5px;
  color: var(--df-ink-2);
}

.df-feedback__actions {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  margin-top: 20px;
}
.df-feedback__submit {
  padding: 12px 26px;
  border: 0;
  border-radius: 999px;
  background: var(--df-caramel);
  color: #fff;
  font-family: var(--df-sans);
  font-size: 14.5px;
  font-weight: 600;
  cursor: pointer;
  transition: background .14s ease, transform .14s ease;
}
.df-feedback__submit:hover:not(:disabled) {
  background: var(--df-caramel-deep);
  transform: translateY(-1px);
}
.df-feedback__submit:disabled { opacity: .6; cursor: default; }
.df-feedback__legal {
  flex: 1 1 240px;
  margin: 0;
  font-family: var(--df-sans);
  font-size: 12px;
  line-height: 1.5;
  color: var(--df-ink-3);
}

/* Formulaire renvoyé vide : on signale sans bloquer. */
.df-feedback__form.is-incomplete .df-rate {
  animation: df-nudge .3s ease;
}
@keyframes df-nudge {
  0%, 100% { transform: translateX(0); }
  25%      { transform: translateX(-5px); }
  75%      { transform: translateX(5px); }
}
@media (prefers-reduced-motion: reduce) {
  .df-feedback__form.is-incomplete .df-rate { animation: none; }
  .df-rate__star:hover .df-rate__hit svg { transform: none; }
}

/* ── Le fil des retours ────────────────────────────────────── */
.df-feedback__thread { margin-top: 40px; }
.df-feedback__thread-title {
  font-family: var(--df-serif);
  font-size: 22px;
  font-weight: 600;
  color: var(--df-ink);
  margin: 0 0 18px;
}

.df-comments {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.df-comments--replies {
  margin: 16px 0 0 26px;
  padding-left: 18px;
  border-left: 2px solid var(--df-line);
}

.df-comment__card {
  background: var(--df-paper);
  border: 1px solid var(--df-line);
  border-radius: var(--df-r-lg);
  padding: 18px 20px;
}
.df-comment.is-author > .df-comment__card {
  background: var(--df-caramel-bg);
  border-color: var(--df-line-2);
}

.df-comment__head {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.df-comment__avatar {
  flex: none;
  width: 36px;
  height: 36px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  background: var(--df-cream-2);
  color: var(--df-caramel-deep);
  font-family: var(--df-serif);
  font-size: 18px;
  font-weight: 600;
}
.df-comment__ident { flex: 1 1 auto; min-width: 0; }
.df-comment__author {
  display: flex;
  align-items: center;
  gap: 7px;
  font-family: var(--df-sans);
  font-size: 14.5px;
  font-weight: 600;
  color: var(--df-ink);
}
.df-comment__badge {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--df-caramel);
  color: #fff;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: .03em;
}
.df-comment__date {
  display: block;
  font-family: var(--df-sans);
  font-size: 12px;
  color: var(--df-ink-3);
}
.df-comment__marks {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.df-comment__verdict {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 9px;
  border-radius: 999px;
  font-family: var(--df-sans);
  font-size: 11.5px;
  font-weight: 600;
}
.df-comment__verdict--oui {
  background: var(--df-mint-bg);
  color: var(--df-mint-deep);
}
.df-comment__verdict--non {
  background: var(--df-rasp-bg);
  color: var(--df-rasp-deep);
}

.df-comment__body {
  font-family: var(--df-sans);
  font-size: 15px;
  line-height: 1.65;
  color: var(--df-ink-2);
}
.df-comment__body p { margin: 0 0 10px; }
.df-comment__body p:last-child { margin-bottom: 0; }

/* ── Responsive ────────────────────────────────────────────── */
@media (max-width: 720px) {
  .df-feedback__form { padding: 18px 16px; }
  .df-feedback__rows { gap: 20px; flex-direction: column; }
  .df-rate__caption {
    display: block;
    margin: 8px 0 0;
  }
  .df-rate { flex-wrap: wrap; }
  .df-comments--replies {
    margin-left: 12px;
    padding-left: 12px;
  }
  .df-comment__marks { width: 100%; }
}

/* ═══ La recette en bref ═════════════════════════════════════
   Carte récapitulative sous l'intro : les repères qu'on va chercher avant de
   se lancer (rendement, moule, températures). Chaque ligne est du texte libre,
   et seules les lignes renseignées sont rendues. */
.df-recette__brief {
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  box-shadow: var(--df-shadow-sm);
  padding: 30px 34px 26px;
  margin: 0 0 36px;
}
.df-recette__brief-head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 20px;
}
.df-recette__brief-icon {
  display: flex;
  color: var(--df-caramel);
}
.df-recette__brief-kicker {
  font-family: var(--df-sans);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--df-ink-2);
  margin: 0;
}
.df-recette__brief-list { margin: 0; }
.df-recette__brief-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 24px;
  padding: 15px 0;
  border-top: 1px solid var(--df-line);
}
.df-recette__brief-row:first-child { border-top: none; padding-top: 0; }
.df-recette__brief-row:last-child { padding-bottom: 0; }
.df-recette__brief-label {
  font-family: var(--df-sans);
  font-size: 17px;
  font-weight: 700;
  color: var(--df-ink);
}
.df-recette__brief-value {
  margin: 0;
  font-family: var(--df-sans);
  font-size: 17px;
  color: var(--df-ink-2);
  text-align: right;
}

@media (max-width: 600px) {
  /* Label au-dessus de la valeur : côte à côte, les deux se marchent dessus. */
  .df-recette__brief { padding: 24px 22px 20px; }
  .df-recette__brief-row {
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    padding: 12px 0;
  }
  .df-recette__brief-value { text-align: left; }
}

/* ═══ Valeurs nutritionnelles ════════════════════════════════
   Carte pleine largeur dans la colonne principale, sous « Une fois que
   c'est prêt ». Contrepartie visible du NutritionInformation du JSON-LD. */
.df-recette__nutrition {
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  padding: 26px 30px 24px;
  box-shadow: var(--df-shadow-sm);
  /* Même respiration que les autres sections de la fiche (aftercare, essais) :
     l'air se met au-dessus, pas en dessous — sinon il s'additionne au margin-top
     de la section suivante et la carte se colle à celle du dessus. */
  margin: 40px 0 0;
}
.df-recette__nutrition-head {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
}
.df-recette__nutrition-icon {
  display: flex;
  align-self: center;
  color: var(--df-caramel);
}
.df-recette__nutrition-kicker {
  font-family: var(--df-sans);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--df-ink-2);
  margin: 0;
}
.df-recette__nutrition-per {
  font-family: var(--df-serif);
  font-size: 20px;
  color: var(--df-ink);
  margin-left: 6px;
}
/* Les quatre valeurs restent sur une seule ligne à toutes les largeurs : c'est
   ce qui les rend lisibles d'un coup d'œil. Les cellules se partagent la place
   à égalité et la typo se resserre plus bas plutôt que de passer à la ligne. */
.df-recette__nutrition-figures {
  display: flex;
  flex-wrap: nowrap;
  margin: 20px 0 0;
}
.df-recette__nutrition-cell {
  flex: 1 1 0;
  min-width: 0;
  padding: 0 22px;
  border-left: 1px solid var(--df-line);
}
.df-recette__nutrition-cell:first-child {
  padding-left: 0;
  border-left: none;
}
.df-recette__nutrition-val {
  font-family: var(--df-serif);
  font-size: 34px;
  font-weight: 500;
  line-height: 1.1;
  color: var(--df-or);
  white-space: nowrap;
}
.df-recette__nutrition-unit {
  font-size: 14px;
  margin-left: 2px;
}
.df-recette__nutrition-label {
  font-family: var(--df-sans);
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--df-ink-2);
  margin-top: 6px;
}
.df-recette__nutrition-meta {
  margin: 22px 0 0;
  padding: 20px 0 0;
  border-top: 1px solid var(--df-line);
  font-family: var(--df-sans);
  font-size: 16px;
}
.df-recette__nutrition-metarow {
  display: flex;
  gap: 8px;
  margin-bottom: 6px;
}
.df-recette__nutrition-metarow:last-child { margin-bottom: 0; }
.df-recette__nutrition-meta dt { font-weight: 700; color: var(--df-ink); }
.df-recette__nutrition-meta dd { margin: 0; color: var(--df-ink-2); }

/* Dans la colonne de droite la carte fait deux fois moins large qu'en pleine
   page : les quatre valeurs passent en 2×2 au lieu d'une seule ligne. En dessous
   de 601px la colonne n'existe plus (voir Responsive), ces règles non plus. */
@media (min-width: 601px) {
  .df-recette__aside .df-recette__nutrition {
    margin: 0;
    padding: 24px 22px 22px;
  }
  .df-recette__aside .df-recette__nutrition-per { font-size: 16px; }
  .df-recette__aside .df-recette__nutrition-figures { margin-top: 18px; }
  .df-recette__aside .df-recette__nutrition-cell { padding: 0 11px; }
  .df-recette__aside .df-recette__nutrition-val { font-size: 24px; }
  .df-recette__aside .df-recette__nutrition-unit { font-size: 12px; }
  .df-recette__aside .df-recette__nutrition-label {
    font-size: 9.5px;
    letter-spacing: .05em;
  }
  .df-recette__aside .df-recette__nutrition-meta {
    margin-top: 18px;
    padding-top: 16px;
    font-size: 15px;
  }
}

@media (max-width: 600px) {
  /* « par madeleine » reste sur la ligne du kicker, poussé à droite. */
  .df-recette__nutrition-kicker { font-size: 11.5px; letter-spacing: .1em; }
  .df-recette__nutrition-per {
    margin-left: auto;
    font-size: 15px;
  }
}

@media (max-width: 400px) {
  /* Sous 400px la ligne ne tient plus qu'en resserrant encore le kicker. */
  .df-recette__nutrition-kicker { font-size: 10px; letter-spacing: .07em; }
  .df-recette__nutrition-per { font-size: 14px; }
}

/* ═══ Signature « tampon » ═══════════════════════════════════
   Partagée par la fiche recette et l'article du journal (inc/signature.php).
   Un cachet rond légèrement penché + un cartouche à bord pointillé, façon
   fiche de labo : AUTEUR / ESSAIS / MÀJ. Le cachet et le nom renvoient vers
   la page auteur. Sa règle mobile est juste dessous (déclarée après la
   section Responsive, elle doit rester ici). */
.df-recette__signature { padding: 52px 20px 40px; }

.df-signature {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 34px;
}
.df-signature__stamp {
  display: block;
  flex-shrink: 0;
  width: 116px;
  height: 116px;
  color: var(--df-caramel);
  opacity: .92;
  transform: rotate(-6deg);
  transition: opacity .2s ease, color .2s ease, transform .25s cubic-bezier(.2,.7,.3,1);
}
a.df-signature__stamp:hover,
a.df-signature__stamp:focus-visible {
  color: var(--df-caramel-deep);
  opacity: 1;
  transform: rotate(-2deg) scale(1.03);
}
.df-signature__stamp svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
}
.df-signature__ring {
  font-family: var(--df-sans);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 2.4px;
  fill: currentColor;
}
.df-signature__mono {
  font-family: var(--df-serif);
  font-size: 26px;
  font-weight: 600;
  fill: currentColor;
}
.df-signature__atelier {
  font-family: var(--df-sans);
  font-size: 9.5px;
  font-weight: 700;
  letter-spacing: 1.5px;
  fill: currentColor;
}
.df-signature__card {
  min-width: 250px;
  padding: 16px 22px;
  border: 1.5px dashed var(--df-caramel);
  border-radius: 6px;
  background: var(--df-caramel-bg);
  color: var(--df-caramel-deep);
  transform: rotate(1.5deg);
}
.df-signature__head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 9px;
  font-family: var(--df-sans);
  font-size: 12.5px;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.df-signature__rows {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 4px 12px;
  margin: 0;
  font-family: ui-monospace, 'SF Mono', Menlo, monospace;
  font-size: 13.5px;
  line-height: 1.35;
}
.df-signature__rows dt { margin: 0; opacity: .6; text-transform: uppercase; }
.df-signature__rows dd { margin: 0; font-weight: 700; }
.df-signature__rows dd a {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px dotted currentColor;
}
.df-signature__rows dd a:hover { color: var(--df-caramel); }

@media (max-width: 560px) {
  .df-recette__signature { padding: 36px 16px 28px; }
  .df-signature { gap: 22px; }
  .df-signature__stamp { width: 96px; height: 96px; }
  .df-signature__card { min-width: 210px; padding: 13px 18px; }
  .df-signature__head { font-size: 11.5px; }
  .df-signature__rows { font-size: 12px; }
}

@media (max-width: 560px) {
  .df-recette__nutrition { padding: 22px 18px; }
  /* Une seule ligne de quatre, comme sur desktop : la typo se resserre. */
  .df-recette__nutrition-figures { margin-top: 16px; }
  .df-recette__nutrition-cell { padding: 0 8px; }
  .df-recette__nutrition-val { font-size: 21px; }
  .df-recette__nutrition-unit { font-size: 11px; margin-left: 1px; }
  .df-recette__nutrition-label {
    font-size: 9px;
    letter-spacing: .04em;
    margin-top: 5px;
  }
}

/* ═══════════════════════════════════════════════════════════════
   Le journal — Articles WP (home.php, category.php, tag.php, single.php)
   Déclaré après la section Responsive : chaque bloc porte son propre
   @media juste en dessous, pour que le mobile gagne vraiment.
   ═══════════════════════════════════════════════════════════════ */

/* ── Index du journal ─────────────────────────────────────── */
.df-journal {
  padding: 52px 0 64px;
}
.df-journal__wrap {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 40px;
}
.df-journal__head {
  max-width: 780px;
  margin: 0 auto 32px;
  text-align: center;
}
.df-journal__kicker {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--df-caramel);
  margin-bottom: 10px;
}
.df-journal__title {
  font-family: var(--df-serif);
  font-size: 52px;
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -1px;
  margin: 0 0 14px;
  color: var(--df-ink);
}
.df-journal__lede {
  max-width: 52ch;
  margin: 0 auto;
  font-size: 18px;
  line-height: 1.5;
  color: var(--df-ink-2);
}
.df-journal__lede p { margin: 0; }
.df-journal__lede p + p { margin-top: .6em; }

/* Filtres par rubrique */
.df-journal__chips {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px;
  margin: 0 0 44px;
}

.df-journal__section-head {
  margin-bottom: 30px;
}
.df-journal__grid {
  gap: 26px;
}

/* Pagination */
.df-journal__pagination {
  margin: 44px 0 0;
}
.df-journal__pagination .nav-links {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
}
.df-journal__pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 40px;
  height: 40px;
  padding: 0 14px;
  border-radius: 999px;
  background: var(--df-cream-2);
  color: var(--df-caramel-deep);
  font-family: var(--df-sans);
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  justify-content: center;
  transition: background .15s ease, color .15s ease;
}
.df-journal__pagination a.page-numbers:hover { background: var(--df-caramel); color: #fff; }
.df-journal__pagination .page-numbers.current { background: var(--df-ink); color: var(--df-cream); }
.df-journal__pagination .page-numbers.dots { background: none; color: var(--df-ink-3); min-width: 0; padding: 0 4px; }
.df-journal__pagination .screen-reader-text { display: none; }

.df-journal__empty {
  text-align: center;
  padding: 48px 24px;
  color: var(--df-ink-2);
  background: var(--df-paper);
  border: 1px dashed var(--df-line-2);
  border-radius: var(--df-r-lg);
}
.df-journal__empty svg { color: var(--df-line-2); }
.df-journal__empty h3 {
  font-size: 26px;
  margin: 12px 0 6px;
}
.df-journal__empty p { margin: 0; font-size: 15px; }

@media (max-width: 900px) {
  .df-journal__grid { grid-template-columns: repeat(2, 1fr); gap: 18px; }
}
@media (max-width: 600px) {
  .df-journal { padding: 22px 0 40px; }
  .df-journal__wrap { padding: 0 18px; }
  .df-journal__head {
    text-align: left;
    margin-bottom: 22px;
  }
  .df-journal__kicker { font-size: 11.5px; letter-spacing: .1em; margin-bottom: 6px; }
  .df-journal__title { font-size: 32px; line-height: 1.05; letter-spacing: -.2px; margin-bottom: 8px; }
  .df-journal__lede { font-size: 14.5px; line-height: 1.55; margin: 0; }
  .df-journal__chips {
    justify-content: flex-start;
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    margin: 0 -18px 26px;
    padding: 2px 18px 6px;
  }
  .df-journal__chips::-webkit-scrollbar { display: none; }
  .df-journal__chips .df-chip { flex-shrink: 0; font-size: 13px; padding: 8px 14px; }
  .df-journal__section-head { margin-bottom: 14px; }
  .df-journal__section-head h2 { font-size: 22px; letter-spacing: -.2px; }
  .df-journal__section-head .df-kicker { display: none; }
  .df-journal__section-head .df-sub { font-size: 13.5px; margin-top: 4px; }
  .df-journal__grid { grid-template-columns: 1fr; gap: 14px; }
  .df-journal__pagination { margin-top: 28px; }
}

/* Placeholder « photo à venir » : un peu d'air entre l'icône et le texte */
.df-journal .df-ph-label,
.df-article .df-ph-label { gap: 6px; }

/* ── Carte d'article ──────────────────────────────────────── */
a.df-article-card,
a.df-article-card * { text-decoration: none; }
a.df-article-card { color: inherit; }

.df-article-card {
  display: flex;
  flex-direction: column;
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  overflow: hidden;
  box-shadow: var(--df-shadow-sm);
}
.df-article-card__media {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--df-cream-2);
}
.df-article-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.df-article-card__ph {
  position: absolute;
  inset: 0;
  border-radius: 0;
  min-height: 0;
}
.df-article-card__rubrique {
  position: absolute;
  top: 14px;
  left: 14px;
}
.df-article-card__body {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: 18px 20px 20px;
}
.df-article-card__title {
  font-family: var(--df-serif);
  font-size: 22px;
  font-weight: 500;
  line-height: 1.16;
  margin: 0 0 9px;
  color: var(--df-ink);
}
.df-article-card__dek {
  margin: 0 0 16px;
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--df-ink-2);
}
.df-article-card__meta {
  margin-top: auto;
  padding-top: 14px;
  border-top: 1px solid var(--df-line);
}

/* Ligne « date · temps de lecture », partagée carte / article */
.df-article-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 9px;
  font-size: 13px;
  color: var(--df-ink-3);
}
.df-article-meta__item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.df-article-meta__item svg { flex-shrink: 0; }
.df-article-meta__sep { color: var(--df-line-2); }

@media (max-width: 600px) {
  .df-article-card__media { aspect-ratio: 16 / 9; }
  .df-article-card__rubrique { top: 12px; left: 12px; }
  .df-article-card__body { padding: 14px 15px 15px; }
  .df-article-card__title { font-size: 19px; line-height: 1.15; margin-bottom: 7px; }
  .df-article-card__dek { font-size: 13.5px; margin-bottom: 12px; }
  .df-article-card__meta { padding-top: 11px; }
  .df-article-meta { font-size: 12.5px; gap: 8px; }
}

/* ── Article : squelette ──────────────────────────────────── */
.df-article {
  padding: 30px 0 20px;
}
.df-article__wrap {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 40px;
}
.df-article__top {
  display: flex;
  flex-direction: column;
}
.df-article__back {
  align-self: flex-start;
  margin-bottom: 22px;
  font-size: 15px;
}

/* En-tête */
.df-article__head {
  max-width: 62ch;
}
.df-article__rubrique {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 16px;
}
.df-article__rubrique a.df-pill { text-decoration: none; }
.df-article__rubrique a.df-pill:hover { background: var(--df-caramel); color: #fff; }
.df-article__ep {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--df-ink-3);
}
.df-article__title {
  font-family: var(--df-serif);
  font-size: 52px;
  font-weight: 500;
  line-height: 1.03;
  letter-spacing: -1px;
  margin: 0 0 18px;
  color: var(--df-ink);
}
.df-article__dek {
  margin: 0 0 24px;
  font-size: 20px;
  line-height: 1.5;
  color: var(--df-ink-2);
}

/* Méta : auteur · date · lecture · partage */
.df-article__meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;
  padding-bottom: 26px;
  border-bottom: 1px solid var(--df-line);
}
.df-article__author {
  display: inline-flex;
  align-items: center;
  gap: 11px;
}
.df-article__avatar {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: var(--df-caramel-bg);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.df-article__avatar img { width: 26px; height: 26px; display: block; }
.df-article__author-text {
  display: flex;
  flex-direction: column;
  line-height: 1.25;
}
.df-article__author-text strong {
  font-size: 15px;
  font-weight: 600;
  color: var(--df-ink);
}
.df-article__author-site {
  font-size: 13px;
  color: var(--df-ink-3);
}
.df-article__meta-sep {
  align-self: stretch;
  width: 1px;
  background: var(--df-line);
}
.df-article__meta-line {
  font-size: 14px;
  color: var(--df-ink-2);
  gap: 16px;
}
.df-article__meta-line .df-article-meta__item svg { color: var(--df-ink-3); }
.df-article__meta-line .df-article-meta__sep { display: none; }

.df-article__share {
  position: relative;
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 9px;
}
.df-article__share-label {
  font-size: 13px;
  color: var(--df-ink-3);
}
.df-article__share-btn {
  width: 36px;
  height: 36px;
  border-radius: 999px;
  border: none;
  padding: 0;
  cursor: pointer;
  background: var(--df-paper);
  box-shadow: inset 0 0 0 1px var(--df-line);
  color: var(--df-ink-2);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: transform .2s cubic-bezier(.2,.7,.3,1), box-shadow .25s ease, color .15s ease;
}
.df-article__share-btn:hover {
  transform: translateY(-2px);
  box-shadow: var(--df-shadow-md);
  color: var(--df-caramel-deep);
}
.df-article__share-btn svg { display: block; }
.df-article__share-icon { display: inline-flex; }
.df-article__share-icon--done { display: none; color: var(--df-mint-deep); }
.df-article__share-btn.is-done .df-article__share-icon { display: none; }
.df-article__share-btn.is-done .df-article__share-icon--done { display: inline-flex; }
.df-article__share-toast {
  position: absolute;
  right: 0;
  top: calc(100% + 8px);
  background: var(--df-ink);
  color: var(--df-cream);
  font-size: 12.5px;
  font-weight: 600;
  padding: 6px 11px;
  border-radius: var(--df-r-sm);
  white-space: nowrap;
  opacity: 0;
  transform: translateY(-4px);
  pointer-events: none;
  transition: opacity .15s ease, transform .15s ease;
}
.df-article__share-toast.is-on { opacity: 1; transform: none; }

/* Hero */
.df-article__hero {
  position: relative;
  margin: 28px 0 0;
}
.df-article__hero-img {
  width: 100%;
  aspect-ratio: 21 / 10;
  object-fit: cover;
  border-radius: var(--df-r-xl);
  display: block;
}
.df-article__hero-ph {
  aspect-ratio: 21 / 10;
  min-height: 0;
  border-radius: var(--df-r-xl);
}
.df-article__stamp {
  position: absolute;
  top: 22px;
  right: 22px;
  transform: scale(1.1);
  transform-origin: top right;
}
.df-article__hero-caption {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin: 12px 0 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--df-ink-3);
}
.df-article__hero-caption svg { flex-shrink: 0; margin-top: 2px; color: var(--df-line-2); }

/* Corps + sommaire */
.df-article__layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 264px;
  gap: 56px;
  align-items: start;
  margin-top: 40px;
}
.df-article__main { min-width: 0; }

/* ── Article : typographie du contenu ─────────────────────── */
.df-article__content {
  font-size: 18.5px;
  line-height: 1.75;
  color: var(--df-ink-2);
}
.df-article__content > * { margin: 0 0 22px; }
.df-article__content > *:last-child { margin-bottom: 0; }
.df-article__content strong { color: var(--df-ink); }
.df-article__content a { text-decoration: underline; }

.df-article__content h2 {
  font-family: var(--df-serif);
  font-size: 34px;
  font-weight: 500;
  line-height: 1.12;
  letter-spacing: -.4px;
  color: var(--df-ink);
  margin: 44px 0 18px;
  scroll-margin-top: 96px;
}
.df-article__content h2:first-child { margin-top: 0; }
.df-article__content h3 {
  font-family: var(--df-serif);
  font-size: 26px;
  font-weight: 500;
  line-height: 1.2;
  color: var(--df-ink);
  margin: 34px 0 12px;
}
.df-article__content h4 {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--df-ink-3);
  margin: 30px 0 10px;
}

/* Chapeau : le style de bloc « Chapeau (lede) » du thème, en plus grand ici. */
.df-article__content .is-style-df-lede {
  font-family: var(--df-serif);
  font-size: 24px;
  line-height: 1.5;
  color: var(--df-ink);
  padding-left: 22px;
  border-left: 4px solid var(--df-caramel);
  margin-bottom: 34px;
}

/* Listes : pastille numérotée encre, ou point bordeaux */
.df-article__content ul,
.df-article__content ol {
  list-style: none;
  padding: 0;
  margin: 0 0 24px;
  display: flex;
  flex-direction: column;
  gap: 13px;
}
.df-article__content ol { counter-reset: df-article-li; }
.df-article__content li {
  position: relative;
  padding-left: 45px;
  font-size: 18px;
  line-height: 1.6;
  margin: 0;
}
.df-article__content li::before {
  position: absolute;
  left: 0;
  top: 0;
  width: 30px;
  height: 30px;
  border-radius: 999px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--df-serif);
  font-size: 16px;
  font-weight: 600;
}
.df-article__content ol > li::before {
  counter-increment: df-article-li;
  content: counter(df-article-li);
  background: var(--df-ink);
  color: var(--df-cream);
}
.df-article__content ul > li::before {
  content: '·';
  background: var(--df-caramel-bg);
  color: var(--df-caramel-deep);
  font-size: 22px;
}
.df-article__content li ul,
.df-article__content li ol { margin: 10px 0 0; }
.df-article__content li li::before { width: 24px; height: 24px; font-size: 14px; }
.df-article__content li li { padding-left: 36px; font-size: 17px; }

/* Images & vidéos */
.df-article__content figure {
  margin: 0 0 30px;
}
.df-article__content .wp-block-image img,
.df-article__content .wp-block-video video {
  width: 100%;
  height: auto;
  display: block;
  border-radius: var(--df-r-lg);
}
.df-article__content .wp-block-video video { background: #000; }
.df-article__content figcaption {
  margin: 11px 0 0;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--df-ink-3);
  text-align: left;
}

/* Tableaux : carte blanche, en-tête crème en capitales */
.df-article__content .wp-block-table {
  margin: 0 0 30px;
}
.df-article__content .wp-block-table table {
  width: 100%;
  border-collapse: collapse;
  font-size: 15.5px;
  line-height: 1.5;
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  overflow: hidden;
  box-shadow: var(--df-shadow-sm);
  border: none;
}
.df-article__content .wp-block-table th,
.df-article__content .wp-block-table td {
  padding: 14px 18px;
  text-align: left;
  vertical-align: top;
  border: none;
  border-top: 1px solid var(--df-line);
}
.df-article__content .wp-block-table thead tr,
.df-article__content .wp-block-table tr:first-child th {
  background: var(--df-cream-2);
}
.df-article__content .wp-block-table th {
  font-family: var(--df-sans);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--df-ink-2);
  border-top: none;
}
.df-article__content .wp-block-table td:first-child {
  font-weight: 600;
  color: var(--df-ink);
}
.df-article__content .wp-block-table thead { border-bottom: none; }
.df-article__content .wp-block-table figcaption {
  margin-top: 11px;
  color: var(--df-ink-3);
  text-align: left;
}

/* Citation : centrée, serif italique, guillemet bordeaux */
.df-article__content blockquote,
.df-article__content .wp-block-quote {
  margin: 36px auto;
  padding: 0;
  border: none;
  text-align: center;
  font-family: var(--df-serif);
  font-style: italic;
  font-size: 29px;
  font-weight: 500;
  line-height: 1.3;
  color: var(--df-ink);
  max-width: 24ch;
}
.df-article__content blockquote::before {
  content: '';
  display: block;
  width: 30px;
  height: 30px;
  margin: 0 auto 10px;
  opacity: .5;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237C2D2D' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M10 11h-4a1 1 0 0 1 -1 -1v-3a1 1 0 0 1 1 -1h3a1 1 0 0 1 1 1v6c0 2.667 -1.333 4.333 -4 5'/><path d='M19 11h-4a1 1 0 0 1 -1 -1v-3a1 1 0 0 1 1 -1h3a1 1 0 0 1 1 1v6c0 2.667 -1.333 4.333 -4 5'/></svg>") center / contain no-repeat;
}
.df-article__content blockquote p {
  margin: 0 0 14px;
  font-size: inherit;
  line-height: inherit;
}
.df-article__content blockquote cite {
  display: block;
  font-family: var(--df-sans);
  font-style: normal;
  font-size: 13.5px;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--df-ink-3);
}

/* Encarts (styles de bloc Group) : bordeaux / menthe / framboise.
   Icône ronde à gauche, titre h3/h4 en capitales, texte encre. */
.wp-block-group.is-style-df-encart,
.wp-block-group.is-style-df-encart-mint,
.wp-block-group.is-style-df-encart-rasp {
  position: relative;
  border-radius: var(--df-r-lg);
  padding: 22px 24px 22px 84px;
  margin: 0 0 30px;
  color: var(--df-ink);
  font-size: 17px;
  line-height: 1.6;
}
.wp-block-group.is-style-df-encart       { background: var(--df-caramel-bg); --df-encart-c: var(--df-caramel-deep); }
.wp-block-group.is-style-df-encart-mint  { background: var(--df-mint-bg);    --df-encart-c: var(--df-mint-deep); }
.wp-block-group.is-style-df-encart-rasp  { background: var(--df-rasp-bg);    --df-encart-c: var(--df-rasp-deep); }
.wp-block-group.is-style-df-encart::before,
.wp-block-group.is-style-df-encart-mint::before,
.wp-block-group.is-style-df-encart-rasp::before {
  content: '';
  position: absolute;
  left: 24px;
  top: 22px;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background-color: var(--df-paper);
  background-size: 23px 23px;
  background-position: center;
  background-repeat: no-repeat;
}
/* bulb */
.wp-block-group.is-style-df-encart::before {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235A1F1F' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 12h1m8 -9v1m8 8h1m-15.4 -6.4l.7 .7m12.1 -.7l-.7 .7'/><path d='M9 16a5 5 0 1 1 6 0a3.5 3.5 0 0 0 -1 3a2 2 0 0 1 -4 0a3.5 3.5 0 0 0 -1 -3'/><path d='M9.7 17l4.6 0'/></svg>");
}
/* check */
.wp-block-group.is-style-df-encart-mint::before {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231B5540' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12l5 5l10 -10'/></svg>");
}
/* alert-triangle */
.wp-block-group.is-style-df-encart-rasp::before {
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236E2740' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M12 9v4'/><path d='M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z'/><path d='M12 16h.01'/></svg>");
}
.wp-block-group.is-style-df-encart > *,
.wp-block-group.is-style-df-encart-mint > *,
.wp-block-group.is-style-df-encart-rasp > * { margin: 0 0 8px; }
.wp-block-group.is-style-df-encart > *:last-child,
.wp-block-group.is-style-df-encart-mint > *:last-child,
.wp-block-group.is-style-df-encart-rasp > *:last-child { margin-bottom: 0; }
.wp-block-group.is-style-df-encart > h3,
.wp-block-group.is-style-df-encart > h4,
.wp-block-group.is-style-df-encart-mint > h3,
.wp-block-group.is-style-df-encart-mint > h4,
.wp-block-group.is-style-df-encart-rasp > h3,
.wp-block-group.is-style-df-encart-rasp > h4 {
  font-family: var(--df-sans);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--df-encart-c);
  margin: 0 0 6px;
  line-height: 1.3;
}
.wp-block-group.is-style-df-encart p,
.wp-block-group.is-style-df-encart-mint p,
.wp-block-group.is-style-df-encart-rasp p {
  font-size: 17px;
  line-height: 1.6;
  color: var(--df-ink);
}

/* Mots-clés */
.df-article__tags {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 9px;
  margin: 34px 0 8px;
  padding-top: 26px;
  border-top: 1px solid var(--df-line);
}
.df-article__tags-label {
  font-size: 12.5px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--df-ink-3);
  margin-right: 4px;
}
.df-article__tag {
  font-size: 13.5px;
  font-weight: 600;
  padding: 7px 14px;
  border-radius: 999px;
  background: var(--df-cream-2);
  color: var(--df-ink-2);
  text-decoration: none;
  transition: background .15s ease, color .15s ease;
}
.df-article__tag:hover { background: var(--df-caramel); color: #fff; }

/* FAQ : mêmes classes que la recette, on n'ajuste que l'espacement */
.df-article__faq { margin-top: 40px; }

/* Signature : le tampon partagé (voir « Signature « tampon » » plus haut). */
.df-article__signature { margin-top: 44px; }

/* Sommaire collant + devise */
.df-article__aside {
  position: sticky;
  top: 96px;
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.df-article__toc {
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  padding: 20px 22px;
  box-shadow: var(--df-shadow-sm);
}
.df-article__toc-label {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--df-ink-3);
  margin-bottom: 14px;
}
.df-article__toc-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 11px;
}
.df-article__toc-list li { margin: 0; }
.df-article__toc-list a {
  display: flex;
  gap: 11px;
  align-items: baseline;
  font-size: 14.5px;
  line-height: 1.35;
  color: var(--df-ink-2);
  text-decoration: none;
  transition: color .15s ease;
}
.df-article__toc-list a:hover { color: var(--df-caramel-deep); }
.df-article__toc-num {
  font-family: var(--df-serif);
  font-size: 14px;
  font-weight: 600;
  color: var(--df-line-2);
  flex-shrink: 0;
  width: 16px;
}
.df-article__motto {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  background: var(--df-cream-2);
  border-radius: var(--df-r-lg);
  padding: 18px 20px;
  font-family: var(--df-serif);
  font-style: italic;
  font-size: 15.5px;
  line-height: 1.4;
  color: var(--df-ink);
}
.df-article__motto img { flex-shrink: 0; width: 30px; height: 30px; }

/* À lire aussi */
.df-article__related {
  margin-top: 64px;
  padding-top: 44px;
  border-top: 1px solid var(--df-line);
}
.df-article__related-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 24px;
}
.df-article__related-all { font-size: 15px; white-space: nowrap; }

/* ── Article : mobile ─────────────────────────────────────── */
@media (max-width: 900px) {
  .df-article__layout {
    grid-template-columns: 1fr;
    gap: 0;
  }
  /* Le sommaire collant n'a plus de colonne : il disparaît, la devise aussi. */
  .df-article__aside { display: none; }
  .df-article__wrap { padding: 0 24px; }
  .df-article__title { font-size: 42px; }
}

@media (max-width: 600px) {
  .df-article { padding: 0 0 30px; }
  .df-article__wrap { padding: 0 18px; }

  /* Le hero passe en tête, à bords perdus, le bouton retour par-dessus. */
  .df-article__top { position: relative; }
  .df-article__hero {
    order: -1;
    margin: 0 -18px;
  }
  .df-article__hero-img,
  .df-article__hero-ph {
    aspect-ratio: 16 / 10;
    border-radius: 0;
  }
  .df-article__stamp {
    top: 16px;
    right: 16px;
    transform: none;
  }
  .df-article__back {
    position: absolute;
    top: 14px;
    left: 14px;
    z-index: 2;
    width: 40px;
    height: 40px;
    margin: 0;
    border-radius: 999px;
    background: rgba(255, 255, 255, .92);
    box-shadow: var(--df-shadow-sm);
    justify-content: center;
    color: var(--df-ink);
  }
  .df-article__back span { display: none; }
  .df-article__back:hover svg { transform: none; }

  .df-article__head { margin-top: 18px; }
  .df-article__rubrique { gap: 9px; margin-bottom: 12px; }
  .df-article__ep { font-size: 12.5px; }
  .df-article__title { font-size: 29px; line-height: 1.05; letter-spacing: -.3px; margin-bottom: 12px; }
  .df-article__dek { font-size: 16px; margin-bottom: 16px; }

  /* Deux lignes : auteur + partage à droite, puis date · lecture. */
  .df-article__meta {
    gap: 12px;
    padding-bottom: 18px;
  }
  .df-article__author { order: 0; }
  .df-article__share { order: 1; }
  .df-article__meta-line { order: 2; flex-basis: 100%; }
  .df-article__avatar { width: 32px; height: 32px; }
  .df-article__avatar img { width: 20px; height: 20px; }
  .df-article__author-text strong { font-size: 13px; }
  .df-article__author-site { display: none; }
  .df-article__meta-sep { display: none; }
  .df-article__meta-line { font-size: 13px; gap: 12px; }
  .df-article__share { margin-left: auto; gap: 7px; }
  .df-article__share-label { display: none; }
  .df-article__share-btn { width: 34px; height: 34px; }

  .df-article__hero-caption {
    font-size: 12.5px;
    font-style: italic;
    margin-top: 16px;
  }
  .df-article__hero-caption svg { display: none; }

  .df-article__layout { margin-top: 22px; }

  .df-article__content { font-size: 15.5px; line-height: 1.65; }
  .df-article__content > * { margin-bottom: 16px; }
  .df-article__content h2 { font-size: 24px; margin: 30px 0 12px; scroll-margin-top: 70px; }
  .df-article__content h3 { font-size: 21px; margin: 26px 0 10px; }
  .df-article__content .is-style-df-lede {
    font-size: 18px;
    line-height: 1.45;
    padding-left: 14px;
    border-left-width: 3px;
    margin-bottom: 22px;
  }
  .df-article__content ul,
  .df-article__content ol { gap: 11px; margin-bottom: 18px; }
  .df-article__content li { padding-left: 38px; font-size: 15px; line-height: 1.55; }
  .df-article__content li::before { width: 26px; height: 26px; font-size: 14px; }
  .df-article__content ul > li::before { font-size: 20px; }
  .df-article__content figure { margin-bottom: 20px; }
  .df-article__content .wp-block-image img,
  .df-article__content .wp-block-video video { border-radius: var(--df-r-md); }
  .df-article__content figcaption { font-size: 12.5px; margin-top: 9px; }
  .df-article__content .wp-block-table { margin-bottom: 20px; overflow-x: auto; }
  .df-article__content .wp-block-table table { font-size: 13px; border-radius: var(--df-r-md); }
  .df-article__content .wp-block-table th,
  .df-article__content .wp-block-table td { padding: 10px 11px; }
  .df-article__content .wp-block-table th { font-size: 10px; letter-spacing: .05em; }
  .df-article__content blockquote,
  .df-article__content .wp-block-quote { font-size: 21px; margin: 26px auto; }
  .df-article__content blockquote::before { width: 24px; height: 24px; margin-bottom: 8px; }
  .df-article__content blockquote cite { font-size: 11.5px; }

  .wp-block-group.is-style-df-encart,
  .wp-block-group.is-style-df-encart-mint,
  .wp-block-group.is-style-df-encart-rasp {
    padding: 15px 15px 15px 63px;
    margin-bottom: 20px;
    border-radius: var(--df-r-md);
  }
  .wp-block-group.is-style-df-encart::before,
  .wp-block-group.is-style-df-encart-mint::before,
  .wp-block-group.is-style-df-encart-rasp::before {
    left: 15px;
    top: 15px;
    width: 36px;
    height: 36px;
    background-size: 19px 19px;
  }
  .wp-block-group.is-style-df-encart > h3,
  .wp-block-group.is-style-df-encart > h4,
  .wp-block-group.is-style-df-encart-mint > h3,
  .wp-block-group.is-style-df-encart-mint > h4,
  .wp-block-group.is-style-df-encart-rasp > h3,
  .wp-block-group.is-style-df-encart-rasp > h4 { font-size: 10.5px; margin-bottom: 5px; }
  .wp-block-group.is-style-df-encart p,
  .wp-block-group.is-style-df-encart-mint p,
  .wp-block-group.is-style-df-encart-rasp p { font-size: 14.5px; line-height: 1.55; }

  .df-article__tags { margin: 24px 0 4px; padding-top: 18px; gap: 8px; }
  .df-article__tags-label { display: none; }
  .df-article__tag { font-size: 12.5px; padding: 6px 12px; }

  .df-article__faq { margin-top: 30px; }

  .df-article__signature { margin-top: 32px; }

  .df-article__related { margin-top: 32px; padding-top: 0; border-top: none; }
  .df-article__related-head { margin-bottom: 14px; }
  .df-article__related-head .df-kicker { font-size: 11.5px; letter-spacing: .1em; margin-bottom: 4px; }
  .df-article__related-head h2 { font-size: 22px; letter-spacing: -.2px; }
  .df-article__related-all { display: none; }
}

/* ==========================================================================
   Problèmes fréquents — style de bloc « df-problemes » sur le Tableau natif
   Trois colonnes réglées : le problème (framboise) / cause probable / la
   parade (menthe). C'est un style de bloc, donc disponible dans tous les
   éditeurs : recette, tour de main, SOS, journal… Il s'affiche là où on
   l'insère, sous le titre que la rédaction lui donne.
   Déclaré après la section Responsive : sa règle mobile est ici, en bas.
   ========================================================================== */
.wp-block-table.is-style-df-problemes {
  margin: 0 0 22px;
}
.wp-block-table.is-style-df-problemes table {
  width: 100%;
  border-collapse: separate; /* collapse casserait le border-radius */
  border-spacing: 0;
  table-layout: fixed;
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  overflow: hidden;
  box-shadow: var(--df-shadow-md);
  border: none;
  border-top: 3px solid var(--df-caramel);
  font-family: var(--df-sans);
}
.wp-block-table.is-style-df-problemes th,
.wp-block-table.is-style-df-problemes td {
  border: none;
  text-align: left;
  vertical-align: top;
}
.wp-block-table.is-style-df-problemes thead th {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--df-ink-2);
  background: var(--df-cream-2);
  vertical-align: bottom;
  padding: 14px 18px 13px;
}
/* Carrés de couleur devant « Le problème » et « La parade » : le code signature. */
.wp-block-table.is-style-df-problemes thead th:first-child::before,
.wp-block-table.is-style-df-problemes thead th:nth-child(3)::before {
  content: '';
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 2px;
  margin-right: 7px;
  vertical-align: middle;
  background: var(--df-rasp);
}
.wp-block-table.is-style-df-problemes thead th:nth-child(3)::before { background: var(--df-mint); }

.wp-block-table.is-style-df-problemes tbody td {
  padding: 16px 18px;
  font-size: 15px;
  line-height: 1.5;
  color: var(--df-ink-2);
  border-top: 1px solid var(--df-line);
}
.wp-block-table.is-style-df-problemes tbody tr:first-child td { border-top: none; }

/* Colonne 1 — le symptôme, encre, carré framboise en tête de ligne */
.wp-block-table.is-style-df-problemes tbody td:first-child {
  width: 27%;
  position: relative;
  padding-left: 34px;
  font-weight: 600;
  color: var(--df-ink);
}
.wp-block-table.is-style-df-problemes tbody td:first-child::before {
  content: '';
  position: absolute;
  left: 18px;
  top: 23px;
  width: 7px;
  height: 7px;
  border-radius: 2px;
  background: var(--df-rasp);
}
.wp-block-table.is-style-df-problemes tbody td:nth-child(2) { width: 36%; }

/* Colonne 3 — la parade, fond menthe, coche */
.wp-block-table.is-style-df-problemes tbody td:nth-child(3) {
  width: 37%;
  position: relative;
  padding-left: 43px;
  font-weight: 500;
  color: var(--df-mint-deep);
  background: var(--df-mint-bg);
}
.wp-block-table.is-style-df-problemes tbody td:nth-child(3)::before {
  content: '';
  position: absolute;
  left: 18px;
  top: 19px;
  width: 16px;
  height: 16px;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232E7D5B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M5 12l5 5l10 -10'/></svg>") center / 16px 16px no-repeat;
}

/* Légende : icône tableau beige + texte tertiaire */
.wp-block-table.is-style-df-problemes figcaption {
  position: relative;
  margin: 11px 0 0;
  padding-left: 23px;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--df-ink-3);
  text-align: left;
}
.wp-block-table.is-style-df-problemes figcaption::before {
  content: '';
  position: absolute;
  left: 0;
  top: 2px;
  width: 15px;
  height: 15px;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23C6BDA9' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z'/><path d='M3 10h18'/><path d='M10 3v18'/></svg>") center / 15px 15px no-repeat;
}

/* Mobile : trois colonnes ne tiennent pas en 360px. Chaque ligne devient une
   carte empilée — symptôme, cause, puis la parade sur son fond menthe. */
@media (max-width: 640px) {
  .wp-block-table.is-style-df-problemes thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
  }
  .wp-block-table.is-style-df-problemes table,
  .wp-block-table.is-style-df-problemes tbody,
  .wp-block-table.is-style-df-problemes tr,
  .wp-block-table.is-style-df-problemes tbody td { display: block; width: auto; }
  .wp-block-table.is-style-df-problemes tbody tr { padding: 14px 14px 12px; border-top: 1px solid var(--df-line); }
  .wp-block-table.is-style-df-problemes tbody tr:first-child { border-top: none; }
  .wp-block-table.is-style-df-problemes tbody td { padding: 0; border-top: none; font-size: 14px; }
  /* Les largeurs en % des colonnes (spécificité plus haute) doivent tomber ici. */
  .wp-block-table.is-style-df-problemes tbody td:first-child,
  .wp-block-table.is-style-df-problemes tbody td:nth-child(2),
  .wp-block-table.is-style-df-problemes tbody td:nth-child(3) { width: auto; }
  .wp-block-table.is-style-df-problemes tbody td:first-child { padding-left: 16px; font-size: 15px; }
  .wp-block-table.is-style-df-problemes tbody td:first-child::before { left: 0; top: 8px; }
  .wp-block-table.is-style-df-problemes tbody td:nth-child(2) { margin: 4px 0 0 16px; }
  .wp-block-table.is-style-df-problemes tbody td:nth-child(3) {
    margin-top: 10px;
    padding: 10px 12px 10px 36px;
    border-radius: var(--df-r-md);
  }
  .wp-block-table.is-style-df-problemes tbody td:nth-child(3)::before { left: 12px; top: 12px; }
}

/* ==========================================================================
   Tableau comparatif — style de bloc « df-comparatif » sur le Tableau natif
   (pattern « Tableau comparatif »). Filet bordeaux en tête, en-tête crème,
   première colonne caramel : le produit comparé se repère d'un coup d'œil.
   Nombre de colonnes libre. Déclaré après la section Responsive, comme le
   tableau des problèmes : sa règle mobile est ici, en bas.
   ========================================================================== */
/* Le kicker « Comparatif » du pattern : capitales caramel précédées d'un point. */
p.df-comparatif-kicker {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: var(--df-sans);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: .11em;
  text-transform: uppercase;
  color: var(--df-caramel);
  margin: 0 0 12px;
}
p.df-comparatif-kicker::before {
  content: '';
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: currentColor;
  flex-shrink: 0;
}
p.df-comparatif-kicker + h2 { margin-top: 0; }
.wp-block-table.is-style-df-comparatif {
  margin: 0 0 22px;
}
.wp-block-table.is-style-df-comparatif table {
  width: 100%;
  border-collapse: separate; /* collapse casserait le border-radius */
  border-spacing: 0;
  background: var(--df-paper);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: var(--df-shadow-md);
  border: none;
  border-top: 3px solid var(--df-caramel);
  font-family: var(--df-sans);
}
.wp-block-table.is-style-df-comparatif th,
.wp-block-table.is-style-df-comparatif td {
  border: none;
  text-align: left;
}
.wp-block-table.is-style-df-comparatif thead th {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--df-ink-2);
  background: var(--df-cream-2);
  vertical-align: bottom;
  padding: 15px 22px 13px;
}
.wp-block-table.is-style-df-comparatif thead th:first-child { color: var(--df-caramel); }
.wp-block-table.is-style-df-comparatif tbody td {
  padding: 17px 22px;
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--df-ink-2);
  vertical-align: top;
  border-top: 1px solid var(--df-line);
}
.wp-block-table.is-style-df-comparatif tbody tr:first-child td { border-top: none; }
/* Première colonne : le produit, en serif caramel sur fond caramel pâle. */
.wp-block-table.is-style-df-comparatif tbody td:first-child {
  background: var(--df-caramel-bg);
  font-family: var(--df-serif);
  font-weight: 600;
  font-size: 19px;
  line-height: 1.15;
  color: var(--df-caramel-deep);
  white-space: nowrap;
  border-top-color: var(--df-line-2);
}
.wp-block-table.is-style-df-comparatif tbody td strong { color: var(--df-ink); font-weight: 500; }
.wp-block-table.is-style-df-comparatif figcaption {
  margin: 11px 0 0;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--df-ink-3);
  text-align: left;
}

/* Mobile : le tableau garde ses colonnes mais respire moins, et défile
   horizontalement au-delà de trois colonnes plutôt que d'écraser le texte. */
@media (max-width: 680px) {
  .wp-block-table.is-style-df-comparatif { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .wp-block-table.is-style-df-comparatif table { min-width: 560px; }
  .wp-block-table.is-style-df-comparatif thead th,
  .wp-block-table.is-style-df-comparatif tbody td { padding: 13px 14px; font-size: 13.5px; }
  .wp-block-table.is-style-df-comparatif tbody td:first-child { font-size: 17px; white-space: normal; }
}

/* ==========================================================================
   12. Page auteur — « Sonia, derrière Le Codex des Gourmands »
   Template page-auteur.php + pattern patterns/page-auteur.php. Le hero
   occupe la largeur du site ; ensuite une colonne de lecture étroite
   (760 px) centrée, élargie section par section (is-w800 / is-w900 /
   is-w980). Le texte est en blocs natifs (paragraphes, titres, listes) :
   les groupes Gutenberg n'apportent aucun espacement, tout est réglé ici.
   Déclarée après la section Responsive : ses règles mobiles sont en bas.
   ========================================================================== */
.df-auteur {
  max-width: 1320px;
  margin: 0 auto;
  padding: 64px 40px 90px;
  font-family: var(--df-sans);
  color: var(--df-ink);
}
.df-auteur :where(.wp-block-group) > :where(*) { margin-block: 0; }

/* Sur-titres en capitales espacées, et les paragraphes « spéciaux ».
   Spécificité (0,2,1) pour passer devant les règles de section ci-dessous. */
.df-auteur p.df-auteur__kicker {
  margin: 0 0 10px;
  font-family: var(--df-sans);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--df-caramel);
}
.df-auteur p.df-auteur__kicker.is-or { margin-bottom: 12px; color: var(--df-or); }
.df-auteur p.df-auteur__lead {
  font-family: var(--df-serif);
  font-size: 21px;
  line-height: 1.6;
  color: var(--df-ink);
}
.df-auteur p.df-auteur__pull {
  margin: 26px 0 0;
  padding-left: 22px;
  border-left: 4px solid var(--df-caramel);
  font-family: var(--df-serif);
  font-size: 24px;
  font-style: italic;
  font-weight: 500;
  line-height: 1.4;
  color: var(--df-caramel-deep);
}
.df-auteur p.df-auteur__narrow {
  max-width: 760px;
  margin: 28px auto 0;
}
.df-auteur p.df-auteur__updated {
  margin: 40px 0 0;
  text-align: center;
  font-family: var(--df-serif);
  font-style: italic;
  font-size: 14.5px;
  color: var(--df-ink-3);
}

/* ── Hero : texte à gauche, portrait + badge à droite ─────────── */
.df-auteur__hero {
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  gap: 64px;
  align-items: center;
  padding-bottom: 8px;
}
.df-auteur__hero p.df-auteur__kicker { margin-bottom: 18px; letter-spacing: .14em; }
.df-auteur__title {
  margin: 0;
  font-family: var(--df-serif);
  font-size: 60px;
  font-weight: 500;
  line-height: 1.02;
  letter-spacing: -1.4px;
  color: var(--df-ink);
}
.df-auteur__title em { font-style: italic; color: var(--df-caramel-deep); }
.df-auteur__hero p.df-auteur__lead { margin: 28px 0 18px; max-width: 40ch; }
.df-auteur p.df-auteur__sub {
  margin: 0 0 30px;
  max-width: 46ch;
  font-size: 17.5px;
  line-height: 1.6;
  color: var(--df-ink-2);
}
.df-auteur__cta { gap: 10px; font-size: 16px; padding: 15px 26px; }
.df-auteur__hero-media { position: relative; }
.df-auteur__portrait { margin: 0; }
.df-auteur__portrait img {
  display: block;
  width: 100%;
  height: 440px;
  object-fit: cover;
  border-radius: var(--df-r-xl);
  box-shadow: var(--df-shadow-sm);
}
.df-auteur__badge {
  position: absolute;
  left: -22px;
  bottom: 26px;
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 16px 20px;
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  box-shadow: var(--df-shadow-md);
}
.df-auteur__badge-seal { display: block; width: 40px; height: 40px; }
.df-auteur__badge-title {
  font-family: var(--df-serif);
  font-size: 16px;
  font-weight: 600;
  line-height: 1.1;
  color: var(--df-ink);
}
.df-auteur__badge-sub { margin-top: 2px; font-size: 13px; color: var(--df-ink-2); }

/* ── Sections de lecture ──────────────────────────────────────── */
.df-auteur__section { max-width: 760px; margin: 76px auto 0; }
.df-auteur__section.is-w800 { max-width: 800px; }
.df-auteur__section.is-w900 { max-width: 900px; }
.df-auteur__section.is-w980 { max-width: 980px; }
.df-auteur__h2 {
  margin: 0 0 26px;
  font-family: var(--df-serif);
  font-size: 38px;
  font-weight: 500;
  line-height: 1.08;
  letter-spacing: -.5px;
  color: var(--df-ink);
}
.df-auteur__section p {
  margin: 0 0 20px;
  font-size: 18px;
  line-height: 1.7;
  color: var(--df-ink-2);
}

/* Pastille ronde devant une ligne (principes, cartes, tuiles, liens) */
.df-auteur__ico,
.df-auteur__card-ico,
.df-auteur__tile-ico,
.df-auteur__link-ico {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  border-radius: 50%;
}

/* La méthode : cinq principes, icône + phrase-titre en gras */
.df-auteur__principes { margin-top: 24px; border-bottom: 1px solid var(--df-line); }
.df-auteur__principe {
  display: flex;
  gap: 20px;
  padding: 24px 0;
  border-top: 1px solid var(--df-line);
}
.df-auteur__ico {
  width: 46px;
  height: 46px;
  background: var(--df-caramel-bg);
  color: var(--df-caramel-deep);
}
.df-auteur__principe p { margin: 0; font-size: 17.5px; line-height: 1.65; }
.df-auteur__principe strong { font-weight: 600; color: var(--df-ink); }

/* L'état des lieux : réussi (menthe) / rate encore (framboise) */
.df-auteur__bilan {
  display: grid;
  grid-template-columns: 1fr 1.25fr;
  gap: 24px;
  align-items: start;
  margin-top: 26px;
}
.df-auteur__card { padding: 28px 30px; border-radius: var(--df-r-lg); }
.df-auteur__card.is-mint { background: var(--df-mint-bg); color: var(--df-mint-deep); }
.df-auteur__card.is-rasp { background: var(--df-rasp-bg); color: var(--df-rasp-deep); }
.df-auteur__card-head { display: flex; align-items: center; gap: 10px; margin-bottom: 18px; }
.df-auteur__card-ico { width: 36px; height: 36px; background: var(--df-paper); }
.df-auteur__card h3 {
  margin: 0;
  font-family: var(--df-serif);
  font-size: 22px;
  font-weight: 600;
  line-height: 1.15;
  color: inherit;
}
.df-auteur__checks {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.df-auteur__checks li {
  position: relative;
  padding-left: 29px;
  font-size: 16.5px;
  line-height: 1.4;
  color: var(--df-ink);
}
.df-auteur__checks li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 2px;
  width: 18px;
  height: 18px;
  background: var(--df-mint);
  -webkit-mask: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5l10 -10'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5l10 -10'/%3E%3C/svg%3E") center / contain no-repeat;
}
.df-auteur__chantier + .df-auteur__chantier {
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid rgba(155,59,87,.2);
}
.df-auteur__chantier h4 {
  margin: 0 0 5px;
  font-family: var(--df-serif);
  font-size: 18.5px;
  font-weight: 600;
  color: var(--df-rasp-deep);
}
.df-auteur__chantier p {
  margin: 0;
  font-size: 16px;
  line-height: 1.6;
  color: var(--df-ink);
  opacity: .92;
}

/* Mise au point : le bloc encre */
.df-auteur__dark {
  padding: 48px 52px;
  background: var(--df-ink);
  color: var(--df-cream);
  border-radius: var(--df-r-xl);
}
.df-auteur__dark .df-auteur__h2 { margin-bottom: 24px; font-size: 36px; color: var(--df-cream); }
.df-auteur__dark p { margin: 0 0 18px; font-size: 18px; line-height: 1.7; color: var(--df-cream); opacity: .86; }
.df-auteur__dark p:last-child { margin-bottom: 0; }
.df-auteur__dark strong { font-weight: 600; color: #fff; }

/* Transparence : cinq tuiles */
.df-auteur__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 22px;
}
.df-auteur__tile {
  padding: 26px 28px;
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  box-shadow: var(--df-shadow-sm);
}
.df-auteur__tile-head { display: flex; align-items: center; gap: 11px; margin-bottom: 12px; }
.df-auteur__tile-ico {
  width: 34px;
  height: 34px;
  background: var(--df-or-bg);
  color: var(--df-or);
}
.df-auteur__tile h3 {
  margin: 0;
  font-family: var(--df-serif);
  font-size: 21px;
  font-weight: 600;
  color: var(--df-ink);
}
.df-auteur__tile p { margin: 0; font-size: 15.5px; line-height: 1.6; }
.df-auteur__tile a { color: var(--df-caramel-deep); }

/* Par où entrer : trois cartes-liens */
.df-auteur__links { display: flex; flex-direction: column; gap: 14px; }
a.df-auteur__link {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 20px 24px;
  background: var(--df-paper);
  border-radius: var(--df-r-lg);
  box-shadow: var(--df-shadow-sm);
  color: inherit;
  text-decoration: none;
}
.df-auteur__link-ico {
  width: 46px;
  height: 46px;
  background: var(--df-caramel-bg);
  color: var(--df-caramel-deep);
}
.df-auteur__link-text { flex: 1; min-width: 0; }
.df-auteur__link-title {
  display: block;
  font-family: var(--df-serif);
  font-size: 20px;
  font-weight: 600;
  line-height: 1.2;
  color: var(--df-ink);
}
.df-auteur__link-sub { display: block; margin-top: 3px; font-size: 14.5px; color: var(--df-ink-2); }
a.df-auteur__link > .df-icon { flex-shrink: 0; color: var(--df-caramel); }

@media (max-width: 1024px) {
  .df-auteur__hero { gap: 40px; }
  .df-auteur__title { font-size: 50px; letter-spacing: -1px; }
  .df-auteur__portrait img { height: 380px; }
}

@media (max-width: 860px) {
  .df-auteur { padding: 40px 20px 70px; }
  .df-auteur__hero { grid-template-columns: 1fr; gap: 36px; }
  .df-auteur__title { font-size: 42px; }
  .df-auteur__badge { left: 14px; bottom: 16px; padding: 12px 16px; }
  .df-auteur__section { margin-top: 56px; }
  .df-auteur__h2 { font-size: 32px; margin-bottom: 20px; }
  .df-auteur__bilan { grid-template-columns: 1fr; }
  .df-auteur__grid { grid-template-columns: 1fr; }
  .df-auteur__dark { padding: 32px 26px; }
  .df-auteur__dark .df-auteur__h2 { font-size: 30px; }
}

@media (max-width: 600px) {
  .df-auteur__title { font-size: 36px; }
  .df-auteur p.df-auteur__lead,
  .df-auteur__hero p.df-auteur__lead { font-size: 19px; }
  .df-auteur__portrait img { height: 300px; }
  .df-auteur__section p { font-size: 17px; }
  .df-auteur p.df-auteur__pull { font-size: 21px; padding-left: 16px; }
  .df-auteur__principe { gap: 14px; padding: 20px 0; }
  .df-auteur__ico { width: 40px; height: 40px; }
  .df-auteur__principe p { font-size: 16.5px; }
  .df-auteur__card { padding: 22px 20px; }
  .df-auteur__tile { padding: 22px 20px; }
  a.df-auteur__link { gap: 14px; padding: 16px 18px; }
  .df-auteur__link-ico { width: 40px; height: 40px; }
  .df-auteur__link-title { font-size: 18px; }
}

/* ═══════════════════════════════════════════════════════════
   Pied de page (inc/footer.php)
   Déclaré après la section responsive, volontairement : ses règles mobiles
   ne doivent pas pouvoir être annulées par un composant déclaré plus bas.
   ═══════════════════════════════════════════════════════════ */
.df-footer {
  border-top: 1px solid var(--df-line);
  /* Pas de marge : elle laisserait voir le fond gris de Kadence entre le
     dernier bloc et le filet. Chaque gabarit porte déjà son padding bas. */
  margin-top: 0;
  padding: 54px 0 48px;
  background: var(--df-cream);
  color: var(--df-ink-2);
  font-family: var(--df-sans);
}
.df-footer__wrap {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 40px;
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: 40px;
}
.df-footer__brand-link {
  display: inline-flex;
  align-items: center;
  gap: 11px;
  margin-bottom: 14px;
  color: var(--df-ink);
  text-decoration: none;
}
.df-footer__mark {
  display: inline-flex;
  width: 40px;
  height: 40px;
  flex-shrink: 0;
}
.df-footer__mark img { display: block; width: 100%; height: 100%; }
.df-footer__name {
  font-family: var(--df-brand);
  font-size: 23.5px;
  font-weight: 600;
  letter-spacing: .35px;
  line-height: 1;
}
.df-footer__tagline {
  font-family: var(--df-serif);
  font-style: italic;
  font-size: 18px;
  line-height: 1.5;
  color: var(--df-ink-2);
  max-width: 40ch;
  margin: 0;
}
.df-footer__col-title {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--df-ink-3);
  margin-bottom: 14px;
}
.df-footer__list,
.df-footer__legal {
  list-style: none;
  margin: 0;
  padding: 0;
}
.df-footer__list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: flex-start;
}
.df-footer__list > li,
.df-footer__legal > li { margin: 0; }
.df-footer__link {
  font-size: 15px;
  color: var(--df-ink-2);
  text-decoration: none;
  transition: color .15s;
}
.df-footer__link:hover,
.df-footer__link:focus-visible { color: var(--df-caramel-deep); }

.df-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: 10px 24px;
  margin-top: 42px;
  padding-top: 22px;
  font-size: 13px;
  color: var(--df-ink-3);
}
/* Le filet de la ligne de pied s'arrête aux marges du contenu, pas au bord de l'écran. */
.df-footer__bottom::before {
  content: '';
  grid-column: 1 / -1;
  flex-basis: 100%;
  border-top: 1px solid var(--df-line);
  margin: -22px 0 0;
}
.df-footer__legal {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
}
.df-footer__legal .df-footer__link { font-size: 13px; color: var(--df-ink-3); }

@media (max-width: 900px) {
  .df-footer__wrap { grid-template-columns: 1fr 1fr; gap: 32px; padding: 0 20px; }
  .df-footer__brand { grid-column: 1 / -1; }
}

/* Mobile : version compacte, centrée — la barre de navigation fixe en bas
   fait déjà le travail des colonnes. */
@media (max-width: 600px) {
  .df-footer { padding: 32px 0 20px; text-align: center; }
  .df-footer__wrap { display: flex; flex-direction: column; align-items: center; gap: 18px; }
  .df-footer__brand-link { margin-bottom: 10px; }
  .df-footer__name { font-size: 20px; }
  .df-footer__tagline { font-size: 16px; margin: 0 auto; }
  .df-footer__col-title { margin-bottom: 8px; }
  .df-footer__list { flex-direction: row; flex-wrap: wrap; justify-content: center; gap: 8px 16px; }
  .df-footer__link { font-size: 13.5px; font-weight: 500; }
  .df-footer__bottom { margin-top: 24px; padding-top: 16px; justify-content: center; font-size: 11.5px; }
  .df-footer__bottom::before { margin-top: -16px; }
}

/* ═══════════════════════════════════════════════════════════
   Page de résultats de recherche (search.php)
   Déclarée après la section Responsive : ses règles mobiles sont ici, en bas.
   ═══════════════════════════════════════════════════════════ */
.df-search-page {
  background: var(--df-cream);
  padding: 52px 0 64px;
  min-height: 60vh;
}
.df-search-page__wrap {
  max-width: 1180px;
  margin: 0 auto;
  padding: 0 40px;
}
.df-search-page__kicker {
  color: var(--df-caramel);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: 10px;
}
.df-search-page__title {
  font-family: var(--df-serif);
  font-size: 44px;
  font-weight: 500;
  line-height: 1.05;
  letter-spacing: -.5px;
  margin: 0 0 14px;
  overflow-wrap: anywhere;
}
.df-search-page__lede {
  font-size: 18px;
  color: var(--df-ink-2);
  line-height: 1.5;
  max-width: 58ch;
  margin: 0 0 24px;
}
.df-search-page .df-search { margin: 8px 0 28px; }

/* Résumé par rubrique : chips-ancres avec le compte */
.df-search-page__summary {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0 0 36px;
}
.df-search-page__summary a {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  border-radius: 999px;
  background: var(--df-paper);
  box-shadow: var(--df-shadow-sm);
  color: var(--df-ink);
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
}
.df-search-page__summary a:hover { color: var(--df-caramel-deep); }
.df-search-page__summary-n {
  font-size: 12px;
  font-weight: 700;
  color: var(--df-caramel);
  background: var(--df-cream);
  border-radius: 999px;
  padding: 2px 8px;
}

/* Un groupe = un type de contenu */
.df-search-page__group { margin: 0 0 44px; scroll-margin-top: 90px; }
.df-search-page__group-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px 14px;
  margin: 0 0 18px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--df-line);
}
.df-search-page__group-title {
  font-family: var(--df-serif);
  font-size: 28px;
  font-weight: 500;
  margin: 0;
}
.df-search-page__group-count { font-size: 14px; color: var(--df-ink-3); }
.df-search-page__group-more {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  font-weight: 600;
  color: var(--df-caramel);
  text-decoration: none;
}
.df-search-page__group-more:hover { color: var(--df-caramel-deep); }
.df-search-page__group-rest {
  margin: 14px 0 0;
  font-size: 14px;
  color: var(--df-ink-3);
}

/* Lignes compactes (SOS, lexique, science) — même dessin que l'index SOS */
.df-search-page__rows {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
  align-items: start;
}
.df-search-page__row {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 20px;
  background: var(--df-paper);
  border-radius: var(--df-r-md);
  box-shadow: var(--df-shadow-sm);
  color: var(--df-ink);
  text-decoration: none;
}
.df-search-page__row:hover,
.df-search-page__row:focus-visible { text-decoration: none; }
.df-search-page__row-icon {
  width: 38px;
  height: 38px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  background: var(--df-caramel-bg);
  color: var(--df-caramel);
}
.df-search-page__row--sos .df-search-page__row-icon {
  background: var(--df-rasp-bg);
  color: var(--df-rasp);
}
.df-search-page__row-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}
.df-search-page__row-title {
  font-family: var(--df-serif);
  font-size: 19px;
  font-weight: 500;
  line-height: 1.15;
}
.df-search-page__row-sub {
  font-size: 13.5px;
  line-height: 1.4;
  color: var(--df-ink-3);
}
.df-search-page__row-chevron {
  color: var(--df-ink-3);
  flex-shrink: 0;
  transition: transform .15s ease, color .15s ease;
}
.df-search-page__row:hover .df-search-page__row-chevron {
  color: var(--df-caramel);
  transform: translateX(2px);
}

/* Aucun résultat */
.df-search-page__empty {
  text-align: center;
  padding: 48px 20px;
  color: var(--df-ink-3);
}
.df-search-page__empty h3 {
  font-family: var(--df-serif);
  font-size: 26px;
  font-weight: 500;
  color: var(--df-ink);
  margin: 12px 0 8px;
}
.df-search-page__empty p { max-width: 52ch; margin: 0 auto; line-height: 1.5; }
.df-search-page__empty a { color: var(--df-caramel); }

@media (max-width: 900px) {
  .df-search-page__rows { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .df-search-page { padding: 36px 0 48px; }
  .df-search-page__wrap { padding: 0 16px; }
  .df-search-page__title { font-size: 32px; }
  .df-search-page__group-title { font-size: 24px; }
  .df-search-page__group-more { margin-left: 0; }
}
