/* ============================================================
   BLOG refonte V2.5 — LISTE + ARCHIVES CATÉGORIE
   fashioncurvyshop.com — 04/08/2026, refonte-code (2e intégrateur)

   Déployé dans : wp-content/themes/enfold-child/refonte-blog.css (STAGING)
   Source de vérité : maintenance-fcs/ux/refonte-blog.css
   Enfilé par functions.php (prio 999) UNIQUEMENT sur is_home() || is_category().
   Dépendances déclarées : fcs-refonte-socle, fcs-refonte-header.

   PÉRIMÈTRE DE CE LOT : la LISTE (/blog/, page 59113 = page_for_posts) et les
   ARCHIVES de catégorie (/category/<slug>/). Le gabarit ARTICLE (single) fera
   l'objet d'un lot séparé — ce fichier n'est volontairement PAS enfilé sur
   is_singular('post') aujourd'hui.

   0 SURCHARGE DE TEMPLATE. Le registre des surcharges WooCommerce reste vide.
   Le H1, le chapô et le filtre de catégories sont posés par le hook standard
   du thème parent `ava_after_main_title`, qui se déclenche à l'identique dans
   enfold/index.php (l.27), enfold/archive.php (l.26) et enfold/single.php
   (l.28) — un seul hook couvre les trois gabarits.

   AUCUNE VARIABLE CSS NOUVELLE. Toutes les couleurs, rayons et ombres
   proviennent de refonte-socle.css.

   ------------------------------------------------------------
   MARKUP NATIF SUR LEQUEL ON S'APPUIE (relevé au curl sur le staging,
   pas supposé) — Enfold « content slider » en mode GRILLE :

     .avia-content-slider.avia-content-grid-active
       > .avia-content-slider-inner
           > .slide-entry-wrap                (× 8, une par rangée de 3)
               > article.slide-entry
                   > a.slide-image > img
                   > .slide-content
                       > header.entry-content-header
                           > span.blog-categories.minor-meta > a[rel=tag]
                           > h3.slide-entry-title > a
                           > span.av-vertical-delimiter
                       > .slide-entry-excerpt.entry-content
                   > footer.entry-footer > .slide-meta > time.slide-meta-time
                   > span.hidden               (données structurées)

   ⚠️ Le mode est `avia-content-GRID-active`, pas `-slider-active` :
   shortcodes.js (l.205) n'attache `aviaSlider` qu'à `.avia-content-slider-active`.
   AUCUN JavaScript Enfold ne touche donc à la géométrie de ces cartes — la
   mise en grille CSS ci-dessous ne peut pas être défaite par un script.

   ------------------------------------------------------------
   RÈGLES ADVERSES, RELEVÉES DANS LE CSS RÉELLEMENT SERVI
   (avia-merged-styles-*.css téléchargé depuis le staging, PAS l'option en
   base — c'est cette version-là que le navigateur applique). Le Quick CSS
   Enfold y est fusionné et servi APRÈS nos refonte-*.css : seule la
   spécificité nous protège, jamais l'ordre.

   [A] .html_elegant-blog #top .post-entry .post-title,
       .html_elegant-blog .avia-content-slider .slide-entry-title {
         font-size:25px !important; font-family:'inclusivesans-regular',… !important;
         line-height:1.1em !important; text-align:center; text-transform:uppercase;
         padding:15px 0; letter-spacing:0; margin-bottom:10px }
       → <html> porte bien `html_elegant-blog` (vérifié). Cette règle frappe
         les titres de cartes. `!important` sur font-size / font-family /
         line-height : aucune spécificité ne les bat, `!important` de notre
         côté est ici la SEULE option — et il est légitime au sens de la
         convention (règle adverse elle-même `!important`, prouvée). Les
         autres déclarations sont en priorité normale : nos 3 ID suffisent.

   [B] #top #wrap_all .all_colors h1, .main-title .entry-title {
         font-size:35px !important }          ← SANS media query
       → plafonne TOUS les h1 du site à 35px. `!important` requis pour le H1
         du blog. Spécificité adverse 2 ID + 1 classe + 1 élément ; la nôtre
         (#top #wrap_all #main h1.fcs-blog-h1) est à 3 ID + 1 classe + 1 élém.

   [C] #top #wrap_all .all_colors h1 {
         font-size:80px; line-height:.7em;
         font-family:'birthstone-regular-ttf',… }
       → priorité NORMALE : nos 3 ID suffisent pour la police, et l'interligne
         passe par --fcs-hn-lh (règle socle à 3 ID).
       ⚠️ SIGNALEMENT PERF : cette règle applique la police Enfold « Custom
         Font » birthstone-regular-ttf (TTF ~376 Ko) aux h1. Notre H1 bascule
         sur la Birthstone woff2 auto-hébergée du socle ; la TTF reste
         déclarée par Enfold pour les autres h1 du site. Constat PRÉEXISTANT
         déjà signalé à l'étape 1, hors de ce lot — à trancher par
         refonte-perf, pas ici.

   [D] #top .pagination a, #top .fullsize .template-blog .pagination a {
         color:#f1919c !important; border:1px solid #f1919c !important;
         background:#fff !important; font-size:20px !important;
         height/width/line-height:50px !important; box-shadow:… !important }
       #top .pagination .current {
         background:#f1919c !important; color:#fff !important; … }
       → #f1919c sur blanc = **2,27:1** (calculé), très en dessous du seuil
         AA de 4,5:1. Même défaut que les étiquettes de catégorie. Corrigé
         ci-dessous en --fcs-framboise. `!important` obligatoire et prouvé.

   [E] .html_elegant-blog #top .main_color .blog-categories a {
         color: var(--enfold-main-color-primary) }   avec  --enfold-main-color-primary: #f1919c
       → C'EST LA SOURCE des étiquettes de catégorie à 2,27:1 signalées dans
         le brief. Priorité NORMALE, 1 ID + 3 classes → nos 3 ID la battent
         SANS `!important`.

   [F] .responsive #top #wrap_all .slide-entry { width:48%; margin-left:4% }
         @media (max-width:767px)
       .av_one_third { margin-left:6%; width:29.33% }
       .avia-content-slider .slide-entry-wrap { width:100%; float:left; margin-bottom:40px }
       → grille flottante native, priorité normale, battue par nos 3 ID.

   ------------------------------------------------------------
   ÉCART ASSUMÉ À LA MAQUETTE (documenté, pas subi)
   La maquette pose le fond de page à #fdfbfa et les cartes en blanc. #fdfbfa
   n'existe pas dans le socle et la consigne est de NE CRÉER AUCUNE VARIABLE.
   Les cartes restent donc blanches sur le fond du site, et leur détachement
   est porté par la bordure --fcs-bg-card + l'ombre --fcs-shadow-sm, toutes
   deux déjà au socle. Rendu équivalent, zéro valeur nouvelle introduite.
   ============================================================ */


/* ============================================================
   1. BANDEAU DE TÊTE — fil d'ariane natif + H1 + chapô
   ============================================================ */

/* Le fil d'ariane Enfold est déjà rendu dans .title_container, JUSTE
   AU-DESSUS du point d'injection de `ava_after_main_title`. On ne le
   redessine donc PAS (la maquette en dessine un : le recopier créerait un
   second BreadcrumbList dans les données structurées). On prolonge
   simplement le fond pour que fil + titre forment une seule bande, comme
   dans la frame.
   Dégradé VERTICAL et non 135° comme la maquette : la bande est coupée en
   deux éléments DOM distincts, un dégradé oblique y produirait une couture
   visible à la jointure. Départ et arrivée sont les couleurs de la maquette. */
#top.blog .title_container,
#top.category .title_container {
  background: var(--fcs-bg-soft);
  border-bottom: 0;
}
#top.blog .title_container .container,
#top.category .title_container .container {
  padding-top: 18px;
  padding-bottom: 0;
}
#top.blog .title_container .breadcrumb,
#top.category .title_container .breadcrumb {
  position: static;
  float: none;
  margin: 0;
  padding: 0;
  font-family: var(--fcs-font-text);
  font-size: 13px;
  color: var(--fcs-text-subtle);
}
#top.blog .title_container .breadcrumb a,
#top.category .title_container .breadcrumb a {
  color: var(--fcs-text-subtle);
  text-decoration: none;
}
#top.blog .title_container .breadcrumb a:hover,
#top.category .title_container .breadcrumb a:hover {
  color: var(--fcs-framboise);
  text-decoration: underline;
}
#top.blog .title_container .breadcrumb .trail-end,
#top.category .title_container .breadcrumb .trail-end {
  color: var(--fcs-framboise);
}

.fcs-blog-hero {
  background: linear-gradient(180deg, var(--fcs-bg-soft) 0%, var(--fcs-white) 100%);
  padding: 22px 0 34px;
}
.fcs-blog-hero > .container {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* H1 — Birthstone, comme la maquette (76px @1440 / 43px @390).
   `clamp()` en RÈGLE UNIQUE plutôt que deux règles jumelles desktop/mobile :
   c'est le défaut récurrent du projet (une correction appliquée à un seul
   affichage). Bornes : 43px atteint dès 813px et en dessous, 76px atteint à
   partir de 1440px, 5.28vw = 76/1440 entre les deux. */
#top #wrap_all #main h1.fcs-blog-h1 {
  font-family: var(--fcs-font-script);
  font-weight: 400;
  color: var(--fcs-prune);
  text-transform: none;
  letter-spacing: 0;
  margin: 0;
  padding: 0;
  /* [B] : #top #wrap_all .all_colors h1 { font-size:35px !important } — sans
     media query, relevé dans le CSS servi. Aucune spécificité ne bat un
     !important : celui-ci est obligatoire et prouvé. */
  font-size: clamp(43px, 5.28vw, 76px) !important;
}

/* Interligne du H1 Birthstone.
   Constante mesurée sur ce projet : la boîte de ligne Birthstone vaut
   1,354 × le corps. Un ratio de 1 (valeur de la maquette) ne tient QUE tant
   que le titre reste sur une seule ligne — dès qu'il boucle, les jambages se
   chevauchent. Le titre du blog fait 36 caractères : il boucle en mobile.
   La valeur passe donc par --fcs-hn-lh (règle socle à 3 ID), posée SUR LE
   TITRE et jamais sur un conteneur — une propriété personnalisée est
   héritée, la poser sur la bande repeindrait tous les titres qu'elle
   contient. Valeur de sécurité 1,4 > 1,354. */
#top #wrap_all #main h1.fcs-blog-h1 { --fcs-hn-lh: 1.4; }

.fcs-blog-chapo {
  font-family: var(--fcs-font-text);
  font-size: 16px;
  line-height: 1.6;
  color: var(--fcs-text-muted);
  max-width: 660px;
  margin: 0;
}


/* ============================================================
   2. FILTRE PAR CATÉGORIE — demande explicite de la gérante

   CRÉATION : n'existe ni en production ni dans la maquette. Conçu dans la
   charte, et volontairement SANS UNE LIGNE DE JAVASCRIPT : ce sont de vrais
   liens vers les archives `/category/<slug>/`, donc indexables, insensibles
   au cache pleine page, et immunisés au piège `defer_all_js = 1` (qui
   enferme tout script EN LIGNE contenant du jQuery dans un DOMContentLoaded
   et transforme une globale en variable locale).
   « Non classé » est exclue côté PHP (arbitrage manager du 04/08/2026).
   ============================================================ */

.fcs-blog-filtres {
  background: var(--fcs-white);
  padding: 20px 0 4px;
}
.fcs-blog-filtres-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.fcs-blog-filtres-list li { margin: 0; padding: 0; }
.fcs-blog-filtres-list li::marker { content: none; }

#top #wrap_all #main .fcs-blog-filtre {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  /* Cible tactile : 44px de haut minimum (exigence mobile du cahier des
     charges), obtenue par min-height ET padding, pas par line-height —
     le texte doit rester centré si le libellé passe sur deux mots longs. */
  min-height: 44px;
  padding: 0 18px;
  border: 1px solid var(--fcs-bg-card);
  border-radius: var(--fcs-radius-pill);
  background: var(--fcs-white);
  font-family: var(--fcs-font-text);
  font-size: 14px;
  font-weight: 500;
  line-height: 1.2;
  color: var(--fcs-text-secondary);
  text-decoration: none;
  transition: color .18s ease-out, background-color .18s ease-out, border-color .18s ease-out;
}
#top #wrap_all #main .fcs-blog-filtre:hover,
#top #wrap_all #main .fcs-blog-filtre:focus-visible {
  color: var(--fcs-framboise);
  background: var(--fcs-bg-soft);
  border-color: var(--fcs-border-light);
}
#top #wrap_all #main .fcs-blog-filtre:focus-visible {
  outline: 2px solid var(--fcs-framboise);
  outline-offset: 2px;
}
/* Catégorie active : contraste blanc sur --fcs-framboise (#b04d6b).
   5,10:1 mesuré — au-dessus du seuil AA de 4,5:1. */
#top #wrap_all #main .fcs-blog-filtre.is-current {
  background: var(--fcs-framboise);
  border-color: var(--fcs-framboise);
  color: var(--fcs-white);
}


/* ============================================================
   3. GRILLE DE CARTES — /blog/ ET /category/<slug>/
   ============================================================ */

/* La bande de contenu ne doit plus porter le fond de section Enfold : les
   cartes portent désormais le contraste. */
#top.blog .container_wrap_first,
#top.category .container_wrap_first { border-top: 0; }

#top #wrap_all #main .template-blog .avia-content-slider { margin: 0; }

/* Chaque .slide-entry-wrap est UNE RANGÉE de 3 articles (mesuré : 8 wraps
   pour 24 articles). On met donc la grille sur la rangée, pas sur le
   conteneur : les cartes d'une même rangée s'égalisent en hauteur
   (align stretch par défaut), ce qui donne les « cartes homogènes » de la
   maquette, sans recourir à display:contents sur ce niveau. */
#top #wrap_all #main .template-blog .slide-entry-wrap {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  float: none;
  width: auto;
  margin: 0 0 24px;
}

/* --- La carte ---------------------------------------------------------
   `display:contents` sur .slide-content et header.entry-content-header
   remonte leurs enfants au rang d'items de grille de l'article : c'est ce
   qui permet de placer l'ÉTIQUETTE DE CATÉGORIE et la DATE sur une même
   ligne alors que le DOM natif les sépare (la date vit dans
   footer.entry-footer, après l'extrait).
   PLACEMENT EXPLICITE (grid-row / grid-column), et non par auto-placement.
   Première version écrite en `order` + auto-placement : MESURÉE FAUSSE le
   04/08/2026. La grille produisait SIX lignes au lieu de cinq et l'étiquette
   de catégorie tombait hors de la ligne de la date (écart constant de 15px,
   indépendant du contenu). Le placement explicite supprime la classe entière
   de ces surprises : chaque élément est à une position nommée.

   L'objection qui avait fait préférer l'auto-placement — « un article sans
   image décalerait toutes les lignes » — ne tient pas : Enfold rend TOUJOURS
   un `a.slide-image`, y compris sans miniature (c'est le sens de sa propre
   règle `.avia-content-slider .fake-thumbnail .slide-image{min-height:70px}`).
   La ligne 1 existe donc dans tous les cas. Mesuré sur les 24+18 articles du
   jour : 42 `real-thumbnail`, 0 `fake-thumbnail`.
   `order` est conservé en second rideau : il fixe aussi l'ordre de parcours
   au clavier et l'ordre de peinture. */
#top #wrap_all #main .template-blog .slide-entry {
  display: grid;
  grid-template-columns: auto 1fr;
  /* 5 pistes explicites : image / bandeau catégorie+date / titre / extrait /
     « Lire l'article ». L'extrait est en `1fr` pour ABSORBER la hauteur
     excédentaire : les cartes d'une même rangée sont étirées à la même
     hauteur par la grille parente, et sans cette piste souple le lien de fin
     flotterait au milieu d'une carte dont le titre est court — ce qui casse
     la lecture en rangée que la maquette recherche. */
  grid-template-rows: auto auto auto 1fr auto;
  align-content: start;
  column-gap: 8px;
  row-gap: 13px;
  width: auto;
  margin: 0;
  float: none;
  padding: 28px;
  background: var(--fcs-white);
  border: 1px solid var(--fcs-bg-card);
  border-radius: 18px;
  box-shadow: var(--fcs-shadow-sm);
  overflow: hidden; /* fait mordre l'image sur le rayon de la carte */
  transition: box-shadow .22s ease-out, transform .22s ease-out;
}
#top #wrap_all #main .template-blog .slide-content,
#top #wrap_all #main .template-blog .entry-content-header { display: contents; }

/* Rien d'autre que transform/opacity en animation (règle motion du projet). */
#top #wrap_all #main .template-blog .slide-entry:hover {
  transform: translateY(-3px);
  box-shadow: var(--fcs-shadow-md);
}

/* Image — débord jusqu'aux bords de la carte, ratio 16/10 de la maquette.
   Le ratio est imposé en CSS dès le premier rendu (pas par JS) : aucun CLS.
   Les images natives sont servies en 495×400 (ratio 1,24) : object-fit
   recadre sans déformer. */
#top #wrap_all #main .template-blog .slide-entry .slide-image {
  order: 1;
  grid-row: 1;
  grid-column: 1 / -1;
  display: block;
  margin: -28px -28px 3px;
  /* SANS CECI, LE DÉBORD NE MARCHE QUE D'UN CÔTÉ. Un `max-width:100%` global
     (Enfold/WordPress) s'applique à ce lien : il plafonne la largeur à celle
     de la CELLULE de grille. Les marges négatives décalent alors l'image vers
     la gauche sans jamais l'élargir — mesuré à 375 comme à 1280 : cellule
     280,8px, image 280,75px au lieu des 316,75px attendus, d'où une bande
     blanche le long du bord droit de chaque carte. Le défaut se voyait mal en
     desktop, la zone débordante étant blanche elle aussi. */
  max-width: none;
  border-radius: 0;
  overflow: hidden;
  background: var(--fcs-bg-soft);
}
#top #wrap_all #main .template-blog .slide-entry .slide-image img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  border-radius: 0;
  margin: 0;
  transition: transform .35s ease-out;
}
#top #wrap_all #main .template-blog .slide-entry:hover .slide-image img {
  transform: scale(1.04);
}

/* Étiquette de catégorie — LE POINT SENSIBLE DE CE GABARIT.
   La maquette la dessine en <span> NON cliquable ; la production porte
   32 vrais <a rel="tag"> vers les 8 catégories. On CONSERVE les liens et on
   applique le STYLE du span : recopier la maquette détruirait 32 liens
   internes. (Dans la maquette la carte entière est un <a> — un lien ne peut
   pas en contenir un autre : le <span> y est une contrainte technique, pas
   un choix de design. En production la contrainte n'existe pas.) */
#top #wrap_all #main .template-blog .slide-entry .blog-categories {
  order: 2;
  grid-row: 2;
  grid-column: 1;
  min-width: 0;
  /* NEUTRALISATION MESURÉE, PAS PRÉVENTIVE.
     Enfold pose `.html_elegant-blog #top .post-entry .blog-categories
     { display:block; position:relative }` PUIS
     `.html_elegant-blog #top .avia-content-slider .blog-categories { top:15px }`.
     Ne pas déclarer `position` laissait donc l'étiquette décalée de 15px vers
     le bas — exactement 15px, mesuré sur les 24 cartes, ce qui l'empêchait de
     s'aligner avec la date. L'absence de déclaration n'est pas une
     neutralisation. `position:static` suffit : il rend `top:15px` inopérant,
     sans avoir à le redéclarer. */
  position: static;
  justify-self: start;
  /* Alignement en HAUT et non centré : si l'étiquette passe sur deux lignes
     (catégorie longue dans une carte étroite), c'est la PREMIÈRE ligne qui
     doit rester au niveau de la date. Un centrage ferait dériver les deux
     textes dès que l'un des deux boucle. */
  align-self: start;
  margin: 0;
  padding: 0;
  font-family: var(--fcs-font-text);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.2;
  /* ÉCART ASSUMÉ À LA MAQUETTE : .18em -> .14em.
     Mesuré le 04/08/2026 : la frame est dessinée à 1440px, où la carte offre
     371px de contenu ; à 1280px la nôtre n'en offre que 319. Avec les VRAIES
     données (« TRUCS ET ASTUCES » + « 22 SEPTEMBRE 2023 »), l'interlettrage
     de la maquette fait déborder la ligne et renvoie la date sur trois
     lignes. L'interlettrage est réduit juste assez pour que le cas le plus
     long tienne ; l'effet « petites capitales espacées » est conservé. */
  letter-spacing: .14em;
  text-transform: uppercase;
}
/* [E] Enfold pose ici #f1919c (2,27:1 sur blanc). --fcs-framboise -> 5,10:1.
   Priorité adverse NORMALE : aucun !important nécessaire. */
#top #wrap_all #main .template-blog .slide-entry .blog-categories a {
  color: var(--fcs-framboise);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color .18s ease-out;
}
#top #wrap_all #main .template-blog .slide-entry .blog-categories a:hover,
#top #wrap_all #main .template-blog .slide-entry .blog-categories a:focus-visible {
  border-bottom-color: currentColor;
}
#top #wrap_all #main .template-blog .slide-entry .blog-categories a:focus-visible {
  outline: 2px solid var(--fcs-framboise);
  outline-offset: 2px;
}

/* Date — remontée sur la ligne de l'étiquette, séparée par « · ».
   La TYPOGRAPHIE EST POSÉE SUR `.entry-footer` LUI-MÊME, et pas seulement
   sur le <time> : mesuré le 04/08/2026, styler le seul <time> laissait
   `.entry-footer` et `.slide-meta` à la taille héritée de la carte
   (16px / interligne 26,4px). La boîte de la date faisait alors 28px de haut
   contre 14px pour l'étiquette : deux items d'une même ligne de grille aux
   hauteurs inégales ne peuvent pas s'aligner, quelle que soit la valeur
   d'`align-self`. En unifiant la police sur tout le sous-arbre, les deux
   boîtes font la même hauteur et l'alignement devient une conséquence, pas
   un réglage. Le séparateur « · » est porté par `.entry-footer::before` :
   il hérite ainsi de la bonne taille au lieu de rouvrir une ligne à 16px. */
#top #wrap_all #main .template-blog .slide-entry .entry-footer {
  order: 3;
  grid-row: 2;
  grid-column: 2;
  justify-self: start;
  align-self: start;
  display: flex;
  align-items: center;
  gap: 8px;
  /* La date ne doit JAMAIS se couper : c'est une donnée d'un seul tenant, et
     la voir tomber sur trois lignes était le défaut mesuré avant correctif.
     La colonne 2 étant en `1fr` (donc plancher à min-content), c'est
     l'étiquette — colonne `auto` — qui cède la largeur si besoin. */
  white-space: nowrap;
  margin: 0;
  padding: 0;
  border: 0;
  font-family: var(--fcs-font-text);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--fcs-text-subtle);
}
#top #wrap_all #main .template-blog .slide-entry .entry-footer::before {
  content: "·";
  letter-spacing: 0;
}
#top #wrap_all #main .template-blog .slide-entry .slide-meta {
  position: static;
  display: flex;
  align-items: center;
  padding: 0;
  margin: 0;
  font: inherit;
  letter-spacing: inherit;
  color: inherit;
}
/* COMPTEUR DE COMMENTAIRES — masqué. Mesuré : 13 des 24 cartes de /blog/
   affichent « / 0 Commentaires » dans leur méta (anciens articles). La
   maquette ne pose que « CATÉGORIE · DATE », et cette mention, en plus
   d'être disgracieuse à zéro, gonflait la largeur minimale de la colonne de
   droite à ~295px : elle écrasait l'étiquette de catégorie jusqu'à la faire
   chevaucher par la date. Le lien retiré pointe vers `…/#respond`, c'est-à-
   dire l'ANCRE DE COMMENTAIRE DE L'ARTICLE LUI-MÊME — destination déjà
   couverte par le titre de la carte : aucun point d'accès n'est perdu.
   Réversible en supprimant ces deux lignes. */
#top #wrap_all #main .template-blog .slide-entry .slide-meta-del,
#top #wrap_all #main .template-blog .slide-entry .slide-meta-comments { display: none; }

/* Enfold impose `font-size:0.9em` au <time> (.avia-content-slider .slide-meta
   time) : sans reprise explicite, la date sortirait à 10,8px au lieu de 12. */
#top #wrap_all #main .template-blog .slide-entry .slide-meta-time {
  /* `display:block` et non l'`inline-block` d'Enfold : un inline-block est
     aligné sur la ligne de base et traîne l'espace des jambages sous lui —
     mesuré, cela ajoutait ~2px à la boîte de la date et l'empêchait de
     s'aligner sur l'étiquette. */
  display: block;
  font-family: var(--fcs-font-text);
  font-size: 12px;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--fcs-text-subtle);
}

/* Titre de carte — Marcellus 22px, aligné à gauche.
   [A] impose font-size / font-family / line-height en !important : c'est
   l'unique raison des trois !important ci-dessous, et elle est prouvée sur
   le CSS servi. Les autres déclarations (text-align, text-transform,
   padding, letter-spacing, margin) sont en priorité normale chez
   l'adversaire : nos 3 ID les battent sans !important.
   L'interligne NE PEUT PAS passer par --fcs-hn-lh ici : la variable est
   consommée par la règle socle, qui est en priorité normale et perdrait
   contre le `line-height:1.1em !important` de [A]. Déclarer la variable en
   plus reviendrait à écrire une valeur morte — du CSS qui ment. */
#top #wrap_all #main .template-blog h3.slide-entry-title {
  order: 4;
  grid-row: 3;
  grid-column: 1 / -1;
  margin: 0;
  padding: 0;
  text-align: left;
  text-transform: none;
  letter-spacing: 0;
  font-size: 22px !important;
  font-family: var(--fcs-font-title) !important;
  line-height: 1.3 !important;
  font-weight: 400;
}
#top #wrap_all #main .template-blog h3.slide-entry-title a {
  color: var(--fcs-prune);
  text-decoration: none;
}
#top #wrap_all #main .template-blog h3.slide-entry-title a:hover {
  color: var(--fcs-framboise);
}
#top #wrap_all #main .template-blog h3.slide-entry-title a:focus-visible {
  outline: 2px solid var(--fcs-framboise);
  outline-offset: 3px;
}

/* Extrait — borné à 3 lignes pour que les cartes d'une rangée restent
   homogènes quelle que soit la longueur du texte. Le clamp tient quel que
   soit le contenu ; réduire la police ne ferait que déplacer le seuil. */
#top #wrap_all #main .template-blog .slide-entry .slide-entry-excerpt {
  order: 5;
  grid-row: 4;
  grid-column: 1 / -1;
  margin: 0;
  padding: 0;
  font-family: var(--fcs-font-text);
  font-size: 14px;
  line-height: 1.6;
  color: var(--fcs-text-muted);
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

/* « Lire l'article → » : contenu généré, purement décoratif. Le lien réel
   est porté par le titre — on n'ajoute donc aucun lien fantôme, et rien
   n'est retiré au maillage. */
#top #wrap_all #main .template-blog .slide-entry::after {
  content: "Lire l’article →";
  order: 6;
  grid-row: 5;
  grid-column: 1 / -1;
  /* `article.slide-entry` porte aussi la classe `flex_column`, et Enfold s'en
     sert pour son CLEARFIX :
       .flex_column:before, .flex_column:after
         { content:'\0020'; display:block; overflow:hidden;
           visibility:hidden; width:0; height:0 }
     Redéfinir `content` ne suffit donc pas : sans ces trois reprises, le
     pseudo-élément restait invisible et de taille nulle (mesuré :
     visibility hidden, 0×0, piste de grille à 0px). Les trois déclarations
     ci-dessous sont celles dont l'effet a été CONSTATÉ ; `clear:both` n'est
     pas repris car `clear` ne s'applique pas à un item de grille (no-op
     garanti par la spécification), et `overflow` est sans effet à hauteur
     automatique. */
  visibility: visible;
  width: auto;
  height: auto;
  font-family: var(--fcs-font-text);
  font-size: 14px;
  line-height: 1.4;
  font-weight: 600;
  color: var(--fcs-framboise);
}

/* Éléments natifs sans emploi dans la maquette. `.hidden` porte les données
   structurées (schema.org) : il est DÉJÀ masqué par Enfold, on ne fait que
   le sortir du flux de grille — surtout pas le supprimer. */
#top #wrap_all #main .template-blog .slide-entry .av-vertical-delimiter { display: none; }
#top #wrap_all #main .template-blog .slide-entry > .hidden { display: none; }

/* Le `::before` du clearfix Enfold (`.flex_column:before`) est `display:block`
   avec `content:'\0020'` : c'est donc un ITEM DE GRILLE à part entière, même
   invisible et de taille nulle. Mesuré : il ouvrait une 6e piste et, avec
   elle, une gouttière morte de 13px au bas de chaque carte. Un clearfix n'a
   aucun sens sur un conteneur de grille — on le retire. */
#top #wrap_all #main .template-blog .slide-entry::before { display: none; }


/* ============================================================
   4. ARCHIVES DE CATÉGORIE — mise au même gabarit que /blog/

   La barre latérale de ces archives ne contient QU'UN séparateur vide
   (widget « block-3 » = <span class="seperator">, mesuré sur
   /category/idees-look/) : aucun contenu n'est perdu en la retirant, et la
   maquette n'en prévoit pas. Réversible en supprimant ce bloc.
   ============================================================ */
#top.category .container_wrap.sidebar_left .sidebar { display: none; }
#top.category .container_wrap.sidebar_left .content.av-content-small {
  width: 100%;
  margin: 0;
  padding-left: 0;
  padding-right: 0;
  border: 0;
}


/* ============================================================
   5. PAGINATION — [D] : accessibilité

   Le Quick CSS sert #f1919c sur blanc (**2,27:1**) pour les pages
   inactives, et blanc sur #f1919c pour la page courante (même ratio).
   Les deux échouent au seuil AA de 4,5:1. --fcs-framboise donne 5,10:1.
   Toutes les déclarations adverses sont `!important` (relevé sur le CSS
   servi) : le nôtre est obligatoire et borné à ce qu'il faut reprendre.
   ============================================================ */
#top #wrap_all #main .template-blog .pagination {
  line-height: normal;
  margin: 16px 0 0;
  padding-top: 8px;
}
#top #wrap_all #main .template-blog .pagination a,
#top #wrap_all #main .template-blog .pagination span.current {
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  float: none !important;
  width: 44px !important;
  height: 44px !important;
  line-height: 1 !important;
  margin-right: 8px !important;
  border-radius: var(--fcs-radius-pill) !important;
  box-shadow: none !important;
  font-family: var(--fcs-font-text);
  font-size: 15px !important;
  font-weight: 600;
  text-decoration: none;
}
#top #wrap_all #main .template-blog .pagination a {
  background: var(--fcs-white) !important;
  color: var(--fcs-framboise) !important;
  border: 1px solid var(--fcs-framboise) !important;
}
#top #wrap_all #main .template-blog .pagination a:hover,
#top #wrap_all #main .template-blog .pagination a:focus-visible {
  background: var(--fcs-framboise) !important;
  color: var(--fcs-white) !important;
}
#top #wrap_all #main .template-blog .pagination a:focus-visible {
  outline: 2px solid var(--fcs-prune) !important;
  outline-offset: 2px;
}
#top #wrap_all #main .template-blog .pagination span.current {
  background: var(--fcs-framboise) !important;
  color: var(--fcs-white) !important;
  border: 1px solid var(--fcs-framboise) !important;
}
#top #wrap_all #main .template-blog .pagination .pagination-meta {
  float: none;
  display: block;
  margin-bottom: 10px;
  font-family: var(--fcs-font-text);
  font-size: 13px;
  line-height: 1.4;
  color: var(--fcs-text-subtle);
}


/* ============================================================
   6. TABLETTE — 2 colonnes
   ============================================================ */
@media only screen and (max-width: 989px) {
  #top #wrap_all #main .template-blog .slide-entry-wrap {
    grid-template-columns: repeat(2, 1fr);
    gap: 18px;
    margin-bottom: 18px;
  }
}


/* ============================================================
   7. MOBILE (≤ 767px) — 1 colonne, carte compacte

   L'EXTRAIT EST MASQUÉ, conformément à la frame mobile de la maquette
   (arbitrage manager du 04/08/2026) : sur petit écran, le titre et
   « Lire l'article → » suffisent à décider, et 24 cartes à extrait
   produisent une page interminable. Le texte reste dans le DOM (il n'est
   pas retiré du HTML) et il ne s'agit que d'un extrait dérivé de
   l'article : aucun contenu propre n'est soustrait à l'indexation.
   ============================================================ */
@media only screen and (max-width: 767px) {
  #top.blog .title_container .container,
  #top.category .title_container .container { padding-top: 14px; }

  .fcs-blog-hero { padding: 14px 0 22px; }
  .fcs-blog-hero > .container { gap: 8px; }
  .fcs-blog-chapo { font-size: 13.5px; line-height: 1.55; }

  .fcs-blog-filtres { padding: 14px 0 2px; }
  .fcs-blog-filtres-list { gap: 6px; }
  #top #wrap_all #main .fcs-blog-filtre { font-size: 13px; padding: 0 14px; }

  #top #wrap_all #main .template-blog .slide-entry-wrap {
    grid-template-columns: 1fr;
    gap: 12px;
    margin-bottom: 12px;
  }
  #top #wrap_all #main .template-blog .slide-entry {
    padding: 18px;
    border-radius: 14px;
    row-gap: 8px;
    /* 4 pistes seulement en mobile : l'extrait est masqué et « Lire
       l'article » remonte en ligne 4. Sans cette reprise, la 5e piste `1fr`
       du desktop subsisterait à vide et creuserait un blanc en bas de carte.
       Aucune piste souple ici : les cartes sont sur une seule colonne, il n'y
       a donc aucune hauteur à égaliser. */
    grid-template-rows: auto auto auto auto;
  }
  #top #wrap_all #main .template-blog .slide-entry .slide-image {
    margin: -18px -18px 4px;
  }
  /* Les trois sélecteurs vont ENSEMBLE : `.entry-footer` porte la taille de
     la ligne (et donc du séparateur « · »), `.slide-meta-time` reprend la
     sienne face au `font-size:0.9em` d'Enfold. En omettre un remettrait les
     deux boîtes à des hauteurs différentes — le défaut corrigé en desktop. */
  #top #wrap_all #main .template-blog .slide-entry .blog-categories,
  #top #wrap_all #main .template-blog .slide-entry .entry-footer,
  #top #wrap_all #main .template-blog .slide-entry .slide-meta-time {
    font-size: 10.5px;
    letter-spacing: .16em;
  }
  #top #wrap_all #main .template-blog h3.slide-entry-title {
    font-size: 17px !important;
  }
  /* Extrait retiré en mobile — voir l'en-tête de section. */
  #top #wrap_all #main .template-blog .slide-entry .slide-entry-excerpt {
    display: none;
  }
  /* L'extrait etant masque ci-dessus, sa ligne 4 deviendrait une piste
     VIDE dont l'ecart de gouttiere subsisterait : on remonte donc
     « Lire l'article » en ligne 4. */
  #top #wrap_all #main .template-blog .slide-entry::after {
    grid-row: 4;
    font-size: 12.5px;
  }
  /* Pas d'élévation au survol sur tactile : il n'y a pas de survol, et
     l'état resterait « collé » après un tap. */
  #top #wrap_all #main .template-blog .slide-entry:hover {
    transform: none;
    box-shadow: var(--fcs-shadow-sm);
  }
  #top #wrap_all #main .template-blog .slide-entry:hover .slide-image img {
    transform: none;
  }
}


/* ============================================================
   8. ACCESSIBILITÉ — mouvement réduit
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
  #top #wrap_all #main .template-blog .slide-entry,
  #top #wrap_all #main .template-blog .slide-entry .slide-image img,
  #top #wrap_all #main .fcs-blog-filtre {
    transition: none;
  }
  #top #wrap_all #main .template-blog .slide-entry:hover {
    transform: none;
  }
  #top #wrap_all #main .template-blog .slide-entry:hover .slide-image img {
    transform: none;
  }
}

/* ============================================================
   9. ARTICLE SIMPLE — liens dans le corps de texte : accessibilité
   (étude 3, 06/08/2026, refonte-code)

   MÊME cause racine que [D] Pagination et [E] Étiquettes de catégorie
   ci-dessus : Enfold pose `.main_color a { color: #f1919c }` (2,27:1 sur
   blanc, échec AA), et rien dans nos fichiers ne le surchargeait pour le
   corps d'article — seule la grille (.blog-categories) et la pagination
   avaient été corrigées. Mesuré via curl sur un article réel
   (/affiner-silhouette-ronde/, .entry-content) : des dizaines de liens
   produit/catégorie insérés dans les paragraphes (« les fronces »,
   « décolleté en V »…) héritent donc le même défaut, article après
   article, sur tout le blog.
   Le soulignement (WCAG 1.4.1) est posé sitewide dans refonte-socle.css
   (.entry-content a) — ici, seule la couleur.
   Priorité adverse NORMALE (pas de !important sur .main_color a) : nos
   3 ID (#top #wrap_all #main) suffisent, même motif que [E] plus haut.
   ============================================================ */
/* RÈGLE DÉPLACÉE dans refonte-socle.css (revue compat du 06/08/2026) :
   refonte-blog.css n'est PAS enfilé sur les articles simples (functions.php
   l.2551 : « liste et archives de catégorie UNIQUEMENT ») — la règle posée
   ici ne s'appliquait donc jamais. Le socle, lui, est chargé partout. */
