/* =============================================================================
   assets/css/guide-2027.css - turf.bzh
   -----------------------------------------------------------------------------
   Le guide turf.bzh (guide-tableau.php et les pages suivantes), 13/10/2026.

   S'ajoute à assets/css/institution-2027.css, qui doit être chargé avant :
   mêmes jetons (--ip-*), mêmes blocs (.ip-hero, .ip-cadre, .ip-sommaire,
   .ip-bloc, .ip-faits, .ip-encart, .ip-jeu, .ip-version). Ce fichier n'ajoute
   que ce que le guide a de propre, sous .ip-page.gd-page, classes en .gd- :
     - étapes numérotées (.gd-etape) avec leur capture (.gd-fig) ;
     - capture cliquable (.gd-zoom), agrandie par assets/js/guide-2027.js ;
     - encadrés « Le mot », « Attention », « À retenir » (.gd-box) ;
     - tableau « Les erreurs fréquentes » (.gd-tw), empilé sur téléphone ;
     - entrées du sommaire pour les chapitres et leurs étapes ;
     - formules à recopier (code en ligne et bloc), ajoutées le 13/10/2026 pour la partie 3 ;
     - dernier fait d'un chapitre sur toute la largeur quand le nombre de faits est impair (partie 6, 14/10/2026) ;
     - composants de lecture de la partie 4 (14/10/2026, v1.3.0) : classement à barres (.gd-rg), total décomposé (.gd-dec),
       échelle de points (.gd-ech), calcul en cartes (.gd-temps), explorateur de critères (.gd-expl) ; tableau des erreurs zébré.

   - maillage interne (15/10/2026, v1.4.0) : renvois du texte (.gd-ref), bandeau des 6 parties (.gd-parties),
     bloc « Voir aussi » en fin de chapitre (.gd-voir), partie précédente et suivante (.gd-suite).

   Aucune bordure gauche colorée : bordure complète et fond teinté, comme le
   reste du gabarit. Aucun !important.

   CONTRASTE (texte sur son fond, mesuré) : #1e40af sur #eff6ff 8,0:1 ;
   #92400e sur #fffbeb 6,8:1 ; #065f46 sur #ecfdf5 7,3:1 ; corps #334155 sur
   les 3 fonds teintés plus de 9:1. Icônes (#1d4ed8, #b45309, #047857 sur leur fond) : 6,2:1, 4,8:1, 5,2:1.

   @author Claude (2026-10-13), maillage interne le 2026-10-15
   @version 1.4.0
   ========================================================================== */

.ip-page.gd-page{
  --gd-info-ink: #1e40af;  --gd-info-bg: #eff6ff;  --gd-info-bd: #bfdbfe;  --gd-info-ic: #1d4ed8;
  --gd-warn-ink: #92400e;  --gd-warn-bg: #fffbeb;  --gd-warn-bd: #fcd9a0;  --gd-warn-ic: #b45309;
  --gd-ok-ink:   #065f46;  --gd-ok-bg:   #ecfdf5;  --gd-ok-bd:   #a7f3d0;  --gd-ok-ic:   #047857;
}

/* ------------------------------------------------------------- bandeau -- */
/* Le seul bouton du bandeau (Imprimer) reste masqué tant que window.print() n'est
   pas natif : sans lui, la rangée ne laisse aucun vide sous les pastilles. */
.ip-page.gd-page .ip-actions{ margin-top: 0; }
.ip-page.gd-page .ip-actions .ip-btn:not([hidden]){ margin-top: 1.15rem; }

/* ---------------------------------------------------------- sommaire -- */
.ip-page .gd-s-ch a{ font-weight: 800; color: var(--ip-ink); }
.ip-page .gd-s-ch:not(:first-child){ margin-top: .35rem; }
.ip-page .gd-s-et a{ padding-left: 1.4rem; font-size: .88rem; }
.ip-page .gd-s-et .ip-sn{ flex-basis: 1.1rem; }

/* ------------------------------------------------------------ chapitre -- */
.ip-page .gd-chap, .ip-page .gd-chap-t{ scroll-margin-top: var(--ip-haut); }
.ip-page .gd-chap-t{ align-items: flex-start; font-size: 1.28rem; line-height: 1.25; margin-bottom: .75rem; }
.ip-page .gd-chap-t .ip-num{ margin-top: -.05rem; }
@media (min-width: 48rem){ .ip-page .gd-chap-t{ font-size: 1.5rem; } }
.ip-page p.gd-objectif{ font-size: 1.05rem; color: var(--ip-ink2); margin-bottom: 1rem; }
.ip-page .gd-chap > .ip-encart{ margin: 0 0 1rem; }
.ip-page .gd-chap .ip-faits{ margin: 0 0 1.1rem; }
.ip-page .gd-chap .ip-faits > div:last-child:nth-child(odd){ grid-column: 1 / -1; }
.ip-page .gd-intro{ margin-bottom: .25rem; }

/* -------------------------------------------------------------- étape -- */
.ip-page .gd-etape{
  scroll-margin-top: var(--ip-haut);
  margin-top: 1.5rem; padding-top: 1.5rem; border-top: 1px solid var(--ip-bd);
}
.ip-page .gd-etape .gd-etape-t{
  display: flex; align-items: flex-start; gap: .7rem;
  font-size: 1.12rem; font-weight: 800; color: var(--ip-ink); margin: 0 0 .8rem;
}
@media (min-width: 48rem){ .ip-page .gd-etape .gd-etape-t{ font-size: 1.22rem; } }
.ip-page .gd-etape-t > span:last-child{ min-width: 0; }
.ip-page .gd-etape-t .ip-num{ margin-top: -.12rem; }
.ip-page .gd-etape-t > i{
  flex: 0 0 auto; width: 2rem; height: 2rem; border-radius: 999px; margin-top: -.12rem;
  display: inline-grid; place-items: center; font-size: .9rem;
  background: var(--gd-warn-bg); color: var(--gd-warn-ic); border: 1px solid var(--gd-warn-bd);
}
.ip-page .gd-etape ul{ margin-bottom: .9rem; }
.ip-page .gd-etape li strong{ color: var(--ip-ink); }

/* ------------------------------------------------------------ capture -- */
.ip-page .gd-fig{ margin: 1.1rem 0 1.2rem; }
.ip-page .gd-zoom{
  position: relative; display: block; line-height: 0; cursor: zoom-in;
  background: #fff; border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm);
  box-shadow: var(--ip-sh-sm); overflow: hidden; text-decoration: none;
}
.ip-page .gd-zoom img{ display: block; width: 100%; height: auto; }
.ip-page .gd-zoom:focus-visible{ outline-offset: 3px; }
.ip-page .gd-agrandir{
  position: absolute; right: .6rem; bottom: .6rem;
  display: inline-flex; align-items: center; gap: .4rem;
  font-size: .8rem; font-weight: 700; line-height: 1.2; letter-spacing: 0;
  background: rgba(15,23,42,.84); color: #fff; border-radius: var(--ip-pill); padding: .32rem .75rem;
  transition: background-color .15s var(--ip-ease);
}
.ip-page .gd-zoom:hover .gd-agrandir, .ip-page .gd-zoom:focus-visible .gd-agrandir{ background: var(--ip-acc-d); }
.ip-page .gd-fig figcaption{ margin-top: .5rem; font-size: .86rem; line-height: 1.5; color: var(--ip-mut); }

/* ---------------------------------------------------------- encadrés -- */
.ip-page .gd-box{
  display: grid; grid-template-columns: 1.4rem minmax(0,1fr); gap: 0 .75rem; align-items: start;
  margin: 1.1rem 0;
  background: var(--gd-bg); border: 1px solid var(--gd-bd); border-radius: var(--ip-r-sm);
  padding: .9rem 1rem; color: var(--ip-ink3);
}
.ip-page .gd-box > i{ color: var(--gd-ic); margin-top: .22rem; font-size: 1rem; text-align: center; }
.ip-page .gd-box > div{ min-width: 0; }
.ip-page .gd-box p, .ip-page .gd-box li{ color: var(--ip-ink3); font-size: .96rem; }
.ip-page .gd-box ul{ margin: .3rem 0 0; }
.ip-page .gd-box .gd-box-t{
  display: flex; flex-wrap: wrap; align-items: baseline; gap: .15rem .6rem;
  margin: 0 0 .3rem; font-size: .78rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--gd-ink);
}
.ip-page .gd-box .gd-box-terme{
  font-size: 1rem; letter-spacing: -.005em; text-transform: none; color: var(--ip-ink);
}
.ip-page .gd-box--mot{ --gd-bg: var(--gd-info-bg); --gd-bd: var(--gd-info-bd); --gd-ink: var(--gd-info-ink); --gd-ic: var(--gd-info-ic); }
.ip-page .gd-box--attention{ --gd-bg: var(--gd-warn-bg); --gd-bd: var(--gd-warn-bd); --gd-ink: var(--gd-warn-ink); --gd-ic: var(--gd-warn-ic); }
.ip-page .gd-box--retenir{ --gd-bg: var(--gd-ok-bg); --gd-bd: var(--gd-ok-bd); --gd-ink: var(--gd-ok-ink); --gd-ic: var(--gd-ok-ic); }

/* ------------------------------------------- erreurs fréquentes (table) -- */
.ip-page .gd-tw{ margin: .4rem 0 0; }
.ip-page .gd-tw table{
  width: 100%; border-collapse: separate; border-spacing: 0; font-size: .93rem; line-height: 1.5;
  border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm); overflow: hidden;
}
.ip-page .gd-tw th{
  text-align: left; vertical-align: bottom; padding: .65rem .85rem;
  background: var(--ip-acc-l2); color: var(--ip-ink2); font-size: .8rem; font-weight: 800;
  text-transform: uppercase; letter-spacing: .06em; border-bottom: 1px solid var(--ip-bd);
}
.ip-page .gd-tw td{ padding: .7rem .85rem; vertical-align: top; color: var(--ip-ink3); border-top: 1px solid var(--ip-bd); }
.ip-page .gd-tw tbody tr:first-child td{ border-top: 0; }
.ip-page .gd-tw td:first-child{ font-weight: 700; color: var(--ip-ink); }
@media screen and (min-width: 48rem){
  .ip-page .gd-tw th:nth-child(1), .ip-page .gd-tw td:nth-child(1){ width: 28%; }
  .ip-page .gd-tw th:nth-child(2), .ip-page .gd-tw td:nth-child(2){ width: 38%; }
}
@media screen and (max-width: 47.99rem){
  .ip-page .gd-tw table, .ip-page .gd-tw tbody, .ip-page .gd-tw tr, .ip-page .gd-tw td{ display: block; }
  .ip-page .gd-tw table{ border: 0; border-radius: 0; overflow: visible; background: none; }
  .ip-page .gd-tw thead{ position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .ip-page .gd-tw tr{
    margin: 0 0 .8rem; border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm); overflow: hidden; background: var(--ip-card);
  }
  .ip-page .gd-tw td, .ip-page .gd-tw tbody tr:first-child td{ border-top: 1px solid var(--ip-bd); padding: .6rem .85rem; }
  .ip-page .gd-tw td:first-child, .ip-page .gd-tw tbody tr:first-child td:first-child{ border-top: 0; background: var(--ip-acc-l2); }
  .ip-page .gd-tw td::before{
    content: attr(data-label); display: block; margin-bottom: .15rem;
    font-size: .72rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--ip-mut);
  }
}

/* ------------------------------------------------------------ formules -- */
/* Une formule MathBZH est du texte à recopier : police à chasse fixe, retour à la ligne autorisé
   (aucun défilement horizontal sur téléphone), un clic dans un bloc sélectionne toute la formule. */
.ip-page .gd-intro code, .ip-page .gd-etape code, .ip-page .gd-box code, .ip-page .gd-tw code{
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  font-size: .9em; color: var(--ip-ink);
  background: var(--ip-acc-l2); border: 1px solid var(--ip-bd); border-radius: 6px;
  padding: .06rem .36rem; overflow-wrap: anywhere;
}
.ip-page .gd-intro pre, .ip-page .gd-etape pre{
  margin: .9rem 0 1.1rem; padding: .8rem 1rem;
  background: var(--ip-acc-l2); border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm);
  white-space: pre-wrap; overflow-wrap: anywhere; line-height: 1.55;
}
.ip-page .gd-intro pre code, .ip-page .gd-etape pre code{
  display: block; padding: 0; border: 0; border-radius: 0; background: none;
  font-size: .95rem; user-select: all;
}

/* ----------------------------------------------------- capture agrandie -- */
/* Fenêtre en colonne : la zone de défilement prend la place restante, la légende
   reste dans le flux (jamais posée sur l'image). Pas de 100vh : sur téléphone il
   ignore la barre d'adresse ; inset: 0 suit la fenêtre réellement visible. */
.ip-page .gd-visio{
  position: fixed; inset: 0; margin: 0; padding: 0; border: 0;
  width: auto; height: auto; max-width: none; max-height: none;
  background: transparent; color: #fff;
}
.ip-page .gd-visio[open]{ display: flex; flex-direction: column; }
.ip-page .gd-visio::backdrop{ background: rgba(15,23,42,.9); }
.ip-page .gd-visio-in{
  position: relative; flex: 1 1 auto; min-height: 0; overflow: auto; overscroll-behavior: contain;
  padding: 3.6rem 1rem 1rem; display: flex; justify-content: center; align-items: flex-start;
}
.ip-page .gd-visio-in:focus-visible{ outline-offset: -4px; outline-color: #fff; }
.ip-page .gd-visio-in img{
  display: block; max-width: 100%; height: auto; flex: 0 0 auto;
  background: #fff; border-radius: 6px; cursor: zoom-in;
}
.ip-page .gd-visio-in img:focus-visible{ outline-color: #fff; outline-offset: 3px; }
.ip-page .gd-visio.gd-plein .gd-visio-in{ justify-content: flex-start; }
.ip-page .gd-visio.gd-plein .gd-visio-in img{ max-width: none; width: var(--gd-largeur, 2560px); cursor: zoom-out; }
.ip-page .gd-visio-x{
  position: absolute; top: .8rem; right: .8rem; z-index: 2; min-height: 2.5rem; padding: .4rem 1rem;
  background: #fff; color: var(--ip-ink); border: 0; border-radius: var(--ip-r-sm);
  font-size: .95rem; font-weight: 700; cursor: pointer;
}
.ip-page .gd-visio-x:hover{ background: var(--ip-acc-l); }
.ip-page .gd-visio-x:focus-visible{ outline: 2px solid transparent; box-shadow: 0 0 0 2px #0f172a, 0 0 0 5px #fff; }
.ip-page .gd-visio-leg{
  flex: 0 0 auto; max-height: 30vh; overflow: auto; padding: .6rem 1rem;
  background: rgba(15,23,42,.92); color: #fff; font-size: .86rem; text-align: center;
}
.ip-page .gd-visio-leg p{ margin: 0; color: #fff; }

/* ------------------------------------------------------------ impression -- */
@media print{
  .ip-page .gd-agrandir{ display: none; }
  .ip-page .gd-zoom{ border-color: #999; box-shadow: none; }
  .ip-page .gd-fig, .ip-page .gd-box, .ip-page .gd-tw tr, .ip-page .gd-etape pre{ break-inside: avoid; }
  .ip-page .gd-etape pre, .ip-page .gd-etape code{ background: none; border-color: #999; }
  .ip-page .gd-etape{ break-inside: auto; }
  .ip-page .gd-etape-t{ break-after: avoid; }
  .ip-page .gd-box{ background: none; border-color: #999; }
  .ip-page .gd-visio{ display: none; }
}

/* =============================================================================
   v1.3.0 (14/10/2026) : composants de lecture de la partie 4.
   Sans JavaScript, tout est visible ; seul l'explorateur reçoit des commandes de filtre.
   Les couleurs des segments (.gd-s1 à .gd-s6) sont doublées d'un libellé : jamais la couleur seule.
   Contraste du texte blanc sur chaque couleur : #0a7c91 5,0:1 ; #4338ca 8,6:1 ; #b45309 5,0:1 ;
   #047857 5,5:1 ; #7e22ce 7,2:1 ; #be123c 6,5:1.
   ========================================================================== */
.ip-page .gd-s1{ background: #0a7c91; }
.ip-page .gd-s2{ background: #4338ca; }
.ip-page .gd-s3{ background: #b45309; }
.ip-page .gd-s4{ background: #047857; }
.ip-page .gd-s5{ background: #7e22ce; }
.ip-page .gd-s6{ background: #be123c; }
.ip-page .gd-rg, .ip-page .gd-dec, .ip-page .gd-ech, .ip-page .gd-temps li, .ip-page .gd-crit{
  -webkit-print-color-adjust: exact; print-color-adjust: exact;
}

/* ------------------------------------------------- tableau des erreurs -- */
.ip-page .gd-tw tbody tr:nth-child(even) td{ background: var(--ip-acc-l2); }
@media screen and (max-width: 47.99rem){
  .ip-page .gd-tw tbody tr:nth-child(even) td:not(:first-child){ background: none; }
}

/* ---------------------------------------------------------- classement -- */
.ip-page .gd-rg{
  margin: 1.1rem 0 1.2rem; background: var(--ip-card);
  border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm); box-shadow: var(--ip-sh-sm); overflow: hidden;
}
.ip-page .gd-rg ol{ list-style: none; margin: 0; padding: 0; }
.ip-page .gd-rg-ent, .ip-page .gd-rg-l{
  display: grid; grid-template-columns: 3.4rem minmax(0,1fr) 5.6rem minmax(6.5rem,.8fr);
  align-items: center; column-gap: .7rem; padding: .42rem .9rem;
}
.ip-page .gd-rg-ent{
  background: var(--ip-acc-l2); border-bottom: 1px solid var(--ip-bd);
  font-size: .74rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--ip-ink2);
}
.ip-page .gd-rg-ent span:nth-child(3){ text-align: right; white-space: nowrap; }
.ip-page .gd-rg-l{ border-top: 1px solid var(--ip-bd-soft); font-size: .95rem; line-height: 1.35; min-height: 2.5rem; }
.ip-page .gd-rg ol > li:first-child{ border-top: 0; }
.ip-page .gd-rg-r{ font-weight: 800; color: var(--ip-mut); font-variant-numeric: tabular-nums; line-height: 1.15; }
.ip-page .gd-rg-r small{ display: block; font-size: .7rem; font-weight: 700; color: var(--gd-warn-ink); }
.ip-page .gd-rg-h{ display: flex; align-items: center; gap: .6rem; min-width: 0; }
.ip-page .gd-rg-n{
  flex: 0 0 auto; display: inline-grid; place-items: center; min-width: 2rem; height: 1.6rem; padding: 0 .3rem;
  border-radius: 6px; background: var(--ip-acc-l); color: var(--ip-acc-d); font-size: .85rem; font-weight: 800;
  font-variant-numeric: tabular-nums;
}
.ip-page .gd-rg-nom{ min-width: 0; overflow-wrap: anywhere; font-weight: 600; color: var(--ip-ink); }
.ip-page .gd-rg-v{ text-align: right; font-variant-numeric: tabular-nums; color: var(--ip-ink3); }
.ip-page .gd-rg-p{ display: flex; align-items: center; gap: .55rem; }
.ip-page .gd-rg-b{ flex: 1 1 auto; height: .7rem; border-radius: var(--ip-pill); background: var(--ip-soft); overflow: hidden; }
.ip-page .gd-rg-b i{ display: block; height: 100%; width: calc(var(--p) * 100%); background: var(--ip-acc); border-radius: var(--ip-pill); }
.ip-page .gd-rg-p b{ flex: 0 0 1.7rem; text-align: right; font-weight: 800; color: var(--ip-ink); font-variant-numeric: tabular-nums; }
.ip-page .gd-rg-ex{ background: var(--gd-warn-bg); }
.ip-page .gd-rg-ex .gd-rg-b{ background: #fff; }
.ip-page .gd-rg-ex .gd-rg-b i{ background: var(--gd-warn-ic); }
.ip-page .gd-rg-fort{ background: var(--ip-acc-l2); box-shadow: inset 0 0 0 2px var(--ip-acc); }
.ip-page .gd-rg-fort .gd-rg-n{ background: var(--ip-acc-d); color: #fff; }
.ip-page .gd-rg-fort .gd-rg-nom{ font-weight: 800; }
.ip-page .gd-rg-fort .gd-rg-b i{ background: var(--ip-acc-d); }
@media screen and (max-width: 39.99rem){
  .ip-page .gd-rg-ent, .ip-page .gd-rg-l{ grid-template-columns: 2.6rem minmax(0,1fr) auto; column-gap: .55rem; padding: .5rem .75rem; }
  .ip-page .gd-rg-ent span:nth-child(4){ display: none; }
  .ip-page .gd-rg-p{ grid-column: 2 / -1; }
  .ip-page .gd-rg-r small{ font-size: .62rem; }
}

/* -------------------------------------------------------- total décomposé -- */
.ip-page .gd-dec{
  margin: 1.1rem 0 1.2rem; padding: 1rem 1.1rem; background: var(--ip-card);
  border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm); box-shadow: var(--ip-sh-sm);
}
.ip-page .gd-dec + .gd-dec{ margin-top: -.3rem; }
.ip-page .gd-dec-tete{ display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .7rem; margin-bottom: .85rem; }
.ip-page .gd-dec-n{
  display: inline-grid; place-items: center; min-width: 2.2rem; height: 1.9rem; padding: 0 .4rem; border-radius: 7px;
  background: var(--ip-acc-d); color: #fff; font-weight: 800; font-variant-numeric: tabular-nums;
}
.ip-page .gd-dec-nom{ font-weight: 800; font-size: 1.05rem; color: var(--ip-ink); overflow-wrap: anywhere; }
.ip-page .gd-dec-tot{ margin-left: auto; font-size: .9rem; color: var(--ip-mut); }
.ip-page .gd-dec-tot b{ font-size: 1.35rem; color: var(--ip-ink); font-variant-numeric: tabular-nums; }
.ip-page .gd-dec-piste{
  display: flex; height: 2.2rem; border: 1px solid var(--ip-bd); border-radius: 8px; overflow: hidden;
  background: repeating-linear-gradient(135deg, var(--ip-soft) 0 6px, #fff 6px 12px);
}
.ip-page .gd-dec-s{
  display: grid; place-items: center; min-width: 0; overflow: hidden; color: #fff; font-weight: 800; font-size: .92rem;
  border-right: 2px solid #fff; font-variant-numeric: tabular-nums;
}
.ip-page .gd-dec-vide{ min-width: 0; }
.ip-page .gd-dec-ent{
  display: grid; grid-template-columns: .8rem minmax(0,1fr) 5.5rem 3rem 4.2rem; column-gap: .7rem; margin-top: .8rem; padding-bottom: .25rem;
  font-size: .72rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--ip-mut);
}
.ip-page .gd-dec-ent span:nth-child(1){ grid-column: 1 / 3; }
.ip-page .gd-dec-ent span:nth-child(n+2){ text-align: right; }
.ip-page .gd-dec-ent span:nth-child(2){ grid-column: 3; }
.ip-page .gd-dec-ent span:nth-child(3){ grid-column: 4; }
.ip-page .gd-dec-ent span:nth-child(4){ grid-column: 5; }
.ip-page .gd-dec-l{ list-style: none; margin: 0; padding: 0; }
.ip-page .gd-dec-l li{
  display: grid; grid-template-columns: .8rem minmax(0,1fr) 5.5rem 3rem 4.2rem; align-items: center; column-gap: .7rem;
  padding: .45rem 0; border-top: 1px solid var(--ip-bd-soft); font-size: .94rem;
}
.ip-page .gd-dec-l i{ width: .8rem; height: .8rem; border-radius: 3px; }
.ip-page .gd-dec-c{ font-weight: 700; color: var(--ip-ink); min-width: 0; overflow-wrap: anywhere; }
.ip-page .gd-dec-val, .ip-page .gd-dec-rg, .ip-page .gd-dec-pt{ text-align: right; font-variant-numeric: tabular-nums; color: var(--ip-ink3); }
.ip-page .gd-dec-pt b{ color: var(--ip-ink); font-weight: 800; }
@media screen and (max-width: 39.99rem){
  .ip-page .gd-dec-ent{ display: none; }
  .ip-page .gd-dec-l{ margin-top: .8rem; }
  .ip-page .gd-dec{ padding: .9rem; }
  .ip-page .gd-dec-tot{ margin-left: 0; flex-basis: 100%; }
  .ip-page .gd-dec-l li{
    grid-template-columns: .8rem minmax(0,1fr) auto; grid-template-areas: "d c p" ". v r"; row-gap: .1rem;
  }
  .ip-page .gd-dec-l li > i{ grid-area: d; }
  .ip-page .gd-dec-c{ grid-area: c; }
  .ip-page .gd-dec-pt{ grid-area: p; }
  .ip-page .gd-dec-val{ grid-area: v; text-align: left; font-size: .86rem; }
  .ip-page .gd-dec-rg{ grid-area: r; font-size: .86rem; }
}

/* ------------------------------------------------------ échelle de points -- */
.ip-page .gd-ech{
  margin: 1.1rem 0 1.2rem; padding: 1rem 1.1rem; background: var(--ip-card);
  border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm); box-shadow: var(--ip-sh-sm);
}
.ip-page .gd-ech-t{ margin: 0 0 .4rem; font-size: .86rem; line-height: 1.5; color: var(--ip-mut); }
.ip-page .gd-ech-l{ margin: .8rem 0 .35rem; font-weight: 800; font-size: .92rem; color: var(--ip-ink); }
.ip-page .gd-ech-l small{ margin-left: .6rem; font-size: .82rem; font-weight: 600; color: var(--ip-mut); }
.ip-page .gd-ech-g, .ip-page .gd-ech-axe{ display: grid; grid-template-columns: repeat(var(--n), minmax(0,1fr)); gap: 3px; }
.ip-page .gd-ech-g{ height: 5.6rem; align-items: stretch; }
.ip-page .gd-ech-c{ display: flex; flex-direction: column; justify-content: flex-end; min-width: 0; }
.ip-page .gd-ech-c b{ display: block; text-align: center; font-size: .66rem; line-height: 1.5; font-weight: 700; color: var(--ip-ink3); font-variant-numeric: tabular-nums; }
.ip-page .gd-ech-c i{ display: block; height: calc(var(--h) * (100% - 1rem)); min-height: 2px; background: var(--ip-acc); border-radius: 3px 3px 0 0; }
.ip-page .gd-ech-0 i{ height: 2px; background: var(--ip-bd-ctl); }
.ip-page .gd-ech-0 b{ color: var(--ip-mut); }
.ip-page .gd-ech-axe{ margin-top: .3rem; padding-top: .3rem; border-top: 1px solid var(--ip-bd); }
.ip-page .gd-ech-axe span{ text-align: center; font-size: .66rem; font-weight: 700; color: var(--ip-mut); font-variant-numeric: tabular-nums; }
.ip-page .gd-ech-pied{ margin: .15rem 0 0; text-align: center; font-size: .74rem; letter-spacing: .06em; text-transform: uppercase; font-weight: 800; color: var(--ip-mut); }

/* ------------------------------------------------------- calcul en cartes -- */
.ip-page .gd-temps{ list-style: none; margin: 1rem 0 1.2rem; padding: 0; display: grid; gap: .8rem; grid-template-columns: minmax(0,1fr); }
@media (min-width: 48rem){ .ip-page .gd-temps{ grid-template-columns: repeat(3, minmax(0,1fr)); } }
/* v1.3.1 (14/10/2026) : 2 ou 4 cartes en 2 colonnes, pas de carte orpheline (partie 5) */
@media (min-width: 48rem){
  .ip-page .gd-temps:has(> li:nth-child(2):last-child), .ip-page .gd-temps:has(> li:nth-child(4):last-child){ grid-template-columns: repeat(2, minmax(0,1fr)); }
}
.ip-page .gd-temps li{
  margin: 0; padding: 1rem 1.05rem; list-style: none; background: var(--ip-card);
  border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm); box-shadow: var(--ip-sh-sm);
}
.ip-page .gd-temps-n{
  display: inline-grid; place-items: center; width: 2.2rem; height: 2.2rem; margin-bottom: .55rem; border-radius: var(--ip-pill);
  background: var(--ip-acc-d); color: #fff; font-weight: 800; font-size: 1rem;
}
.ip-page .gd-temps-t{ display: block; margin-bottom: .25rem; font-size: 1.08rem; font-weight: 800; color: var(--ip-ink); }
.ip-page .gd-temps p{ margin: 0; font-size: .94rem; line-height: 1.55; color: var(--ip-ink3); }

/* ------------------------------------------------ explorateur de critères -- */
.ip-page .gd-expl{ margin: 1.1rem 0 1.3rem; }
.ip-page .gd-expl-stats{ display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: .6rem; }
@media (min-width: 48rem){ .ip-page .gd-expl-stats{ grid-template-columns: repeat(4, minmax(0,1fr)); } }
.ip-page .gd-expl-stat{ padding: .75rem .9rem; background: var(--ip-card); border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm); box-shadow: var(--ip-sh-sm); }
.ip-page .gd-expl-stat b{ display: block; font-size: 1.7rem; line-height: 1.1; font-weight: 800; color: var(--ip-acc-d); font-variant-numeric: tabular-nums; }
.ip-page .gd-expl-stat span{ display: block; margin-top: .2rem; font-size: .82rem; line-height: 1.35; color: var(--ip-mut); }

.ip-page .gd-expl-outils{
  margin-top: .9rem; padding: .95rem 1rem; background: var(--ip-acc-l2);
  border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm);
}
.ip-page .gd-expl-champ{ position: relative; }
.ip-page .gd-expl-champ label{ display: block; margin-bottom: .3rem; font-size: .8rem; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--ip-ink2); }
.ip-page .gd-expl-champ > div{ position: relative; }
.ip-page .gd-expl-champ .fa-search{ position: absolute; left: .85rem; top: 50%; transform: translateY(-50%); color: var(--ip-mut); pointer-events: none; }
.ip-page .gd-expl-champ input{
  display: block; width: 100%; box-sizing: border-box; min-height: 2.75rem; padding: .55rem .85rem .55rem 2.45rem;
  font: inherit; font-size: 1rem; color: var(--ip-ink); background: #fff;
  border: 1px solid var(--ip-bd-ctl); border-radius: var(--ip-r-sm);
}
.ip-page .gd-groupe{ margin-top: .85rem; }
.ip-page .gd-groupe-t{ margin: 0 0 .35rem; font-size: .76rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: var(--ip-mut); }
.ip-page .gd-chips{ display: flex; flex-wrap: wrap; gap: .4rem; }
.ip-page .gd-chip{
  display: inline-flex; align-items: center; gap: .4rem; min-height: 2.25rem; padding: .25rem .8rem;
  font: inherit; font-size: .86rem; font-weight: 700; line-height: 1.2; color: var(--ip-ink2); background: #fff; cursor: pointer;
  border: 1px solid var(--ip-bd-ctl); border-radius: var(--ip-pill);
  transition: background-color .15s var(--ip-ease), color .15s var(--ip-ease);
}
.ip-page .gd-chip small{ font-size: .76rem; font-weight: 700; color: var(--ip-mut); font-variant-numeric: tabular-nums; }
.ip-page .gd-chip:hover{ background: var(--ip-acc-l); }
.ip-page .gd-chip[aria-pressed="true"]{ background: var(--ip-acc-d); border-color: var(--ip-acc-d); color: #fff; }
.ip-page .gd-chip[aria-pressed="true"] small{ color: #fff; }
.ip-page .gd-expl-etat{ display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .4rem .8rem; margin-top: .9rem; }
.ip-page .gd-expl-compte{ margin: 0; font-size: .92rem; font-weight: 700; color: var(--ip-ink2); }
.ip-page .gd-expl-raz{ font: inherit; font-size: .88rem; font-weight: 700; color: var(--ip-acc-d); background: none; border: 0; padding: .3rem .2rem; cursor: pointer; text-decoration: underline; }
.ip-page .gd-expl-vide{ margin: 1rem 0 0; padding: 1rem; text-align: center; color: var(--ip-ink3); background: var(--ip-card); border: 1px dashed var(--ip-bd-ctl); border-radius: var(--ip-r-sm); }

.ip-page .gd-fam{ margin-top: 1.5rem; }
.ip-page .gd-fam[hidden], .ip-page .gd-crit[hidden], .ip-page .gd-expl-vide[hidden], .ip-page .gd-expl-raz[hidden]{ display: none; }
.ip-page .gd-fam-t{ display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .7rem; margin: 0 0 .25rem; font-size: 1.08rem; font-weight: 800; color: var(--ip-ink); }
.ip-page .gd-fam-n{ padding: .1rem .65rem; font-size: .78rem; font-weight: 700; color: var(--ip-mut); background: var(--ip-soft); border-radius: var(--ip-pill); }
.ip-page .gd-fam-d{ margin: 0 0 .75rem; font-size: .93rem; color: var(--ip-ink3); }
.ip-page .gd-crits{ list-style: none; margin: .6rem 0 0; padding: 0; display: grid; gap: .7rem; grid-template-columns: minmax(0,1fr); }
@media (min-width: 48rem){ .ip-page .gd-crits{ grid-template-columns: repeat(2, minmax(0,1fr)); } }
.ip-page .gd-crit{
  display: flex; flex-direction: column; gap: .3rem; margin: 0; padding: .7rem .85rem; list-style: none;
  background: var(--ip-card); border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm); box-shadow: var(--ip-sh-sm);
}
.ip-page .gd-crit-n{ font-size: 1rem; font-weight: 800; color: var(--ip-ink); }
.ip-page .gd-crit p{ flex: 1 1 auto; margin: 0; font-size: .92rem; line-height: 1.5; color: var(--ip-ink3); }
.ip-page .gd-crit-pied{ display: flex; flex-wrap: wrap; gap: .3rem; margin-top: .1rem; }
.ip-page .gd-pastille{
  display: inline-flex; align-items: flex-start; gap: .4rem; padding: .15rem .6rem; font-size: .76rem; font-weight: 700; line-height: 1.35;
  border: 1px solid; border-radius: var(--ip-pill);
}
.ip-page .gd-pastille i{ margin-top: .15rem; font-size: .72rem; }
.ip-page .gd-sens--haut{ background: var(--gd-info-bg); color: var(--gd-info-ink); border-color: var(--gd-info-bd); }
.ip-page .gd-sens--bas{ background: var(--gd-warn-bg); color: var(--gd-warn-ink); border-color: var(--gd-warn-bd); }
.ip-page .gd-abs--aucun{ background: #fff; color: var(--ip-ink3); border-color: var(--ip-bd-ctl); }
.ip-page .gd-abs--zero{ background: var(--ip-soft); color: var(--ip-ink3); border-color: var(--ip-bd-ctl); }
.ip-page .gd-abs--toujours{ background: var(--gd-ok-bg); color: var(--gd-ok-ink); border-color: var(--gd-ok-bd); }

@media print{
  .ip-page .gd-expl-outils, .ip-page .gd-expl-etat{ display: none; }
  .ip-page .gd-crit, .ip-page .gd-rg-l, .ip-page .gd-dec, .ip-page .gd-ech, .ip-page .gd-temps li{ break-inside: avoid; }
  .ip-page .gd-crit, .ip-page .gd-dec, .ip-page .gd-ech, .ip-page .gd-rg, .ip-page .gd-temps li, .ip-page .gd-expl-stat{ box-shadow: none; }
  .ip-page .gd-fam-t{ break-after: avoid; }
}

/* =============================================================================
   v1.4.0 (15/10/2026) : maillage interne entre les parties et les chapitres.
   Fonds clairs et bordures complètes. Les numéros de partie reprennent les couleurs .gd-s1 à .gd-s6
   (texte blanc, contrastes mesurés plus haut) et sont toujours écrits : jamais la couleur seule.
   Contraste : #075d6e sur #e0f2f6 7,0:1 ; #0f172a sur #ffffff 17:1 ; #475569 sur #ecf7fa 6,9:1.
   ========================================================================== */

/* ---------------------------------------------------- renvois dans le texte -- */
.ip-page a.gd-ref{ font-weight: 700; }

/* Fil d'Ariane à 3 niveaux : sur téléphone, le titre de la partie passe seul sur sa ligne, sans séparateur orphelin. */
@media (max-width: 29.99rem){
  .ip-page.gd-page .ip-fil li:last-child{ flex-basis: 100%; }
  .ip-page.gd-page .ip-fil li:last-child:not(:first-child)::before{ display: none; }
}

/* ----------------------------------------------------- bandeau des 6 parties -- */
.ip-page .gd-parties{
  margin: 0 0 1.25rem; padding: .85rem 1rem 1rem;
  background: var(--ip-card); border: 1px solid var(--ip-bd); border-radius: var(--ip-r-md); box-shadow: var(--ip-sh-sm);
}
.ip-page .gd-parties-tete{ display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .2rem 1rem; margin: 0 0 .7rem; }
.ip-page .gd-parties-t{ margin: 0; font-size: .76rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--ip-mut); }
.ip-page .gd-parties-tout{ font-size: .88rem; font-weight: 700; text-decoration: none; color: var(--ip-acc-d); }
.ip-page .gd-parties-tout:hover{ text-decoration: underline; }
.ip-page .gd-parties-tout i{ margin-left: .25rem; font-size: .78rem; }
.ip-page .gd-parties-l{ list-style: none; margin: 0; padding: 0; display: grid; gap: .5rem; grid-template-columns: minmax(0,1fr); }
@media (min-width: 21.25rem){ .ip-page .gd-parties-l{ grid-template-columns: repeat(2, minmax(0,1fr)); } }
@media (min-width: 44rem){ .ip-page .gd-parties-l{ grid-template-columns: repeat(3, minmax(0,1fr)); } }
@media (min-width: 64rem){ .ip-page .gd-parties-l{ grid-template-columns: repeat(6, minmax(0,1fr)); } }
.ip-page .gd-parties-l li{ margin: 0; min-width: 0; }
.ip-page .gd-parties-l a{
  display: flex; align-items: center; gap: .55rem; height: 100%; padding: .5rem .6rem;
  background: #fff; border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm);
  color: var(--ip-ink); text-decoration: none; font-size: .9rem; font-weight: 700; line-height: 1.25;
  transition: border-color .15s var(--ip-ease), background-color .15s var(--ip-ease);
}
.ip-page .gd-parties-l a:hover{ border-color: var(--ip-acc); background: var(--ip-acc-l2); }
.ip-page .gd-parties-l a[aria-current="page"]{ background: var(--ip-acc-l); border-color: var(--ip-acc); box-shadow: inset 0 0 0 1px var(--ip-acc); color: var(--ip-acc-d); }
.ip-page .gd-pa-n{
  flex: 0 0 auto; display: grid; place-items: center; width: 1.8rem; height: 1.8rem; border-radius: .5rem;
  color: #fff; font-size: 1rem; font-weight: 800; line-height: 1;
}
.ip-page .gd-pa-t{ min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 29.99rem){
  .ip-page .gd-parties{ padding: .8rem .75rem .85rem; }
  .ip-page .gd-parties-l a{ gap: .45rem; padding: .45rem .5rem; font-size: .86rem; }
  .ip-page .gd-pa-n{ width: 1.6rem; height: 1.6rem; font-size: .92rem; }
}

/* ------------------------------------------------------ « Voir aussi » -- */
.ip-page .gd-voir{
  margin: 1.8rem 0 0; padding: 1rem 1.1rem 1.1rem;
  background: var(--ip-acc-l2); border: 1px solid var(--ip-acc-bd); border-radius: var(--ip-r-md);
}
.ip-page .gd-voir-t{ display: flex; align-items: center; gap: .5rem; margin: 0 0 .75rem; font-size: 1.02rem; font-weight: 800; color: var(--ip-ink); }
.ip-page .gd-voir-t > i{ color: var(--ip-acc); font-size: .9rem; }
.ip-page .gd-voir-g{ display: grid; gap: 1rem 1.5rem; grid-template-columns: minmax(0,1fr); }
@media (min-width: 48rem){ .ip-page .gd-voir-g:not(.gd-voir-g--un){ grid-template-columns: minmax(0,3fr) minmax(0,2fr); } }
.ip-page .gd-voir-c{ min-width: 0; }
.ip-page .gd-voir-e{ margin: 0 0 .4rem; font-size: .74rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--ip-mut); }
.ip-page .gd-voir-c ul{ list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; }
.ip-page .gd-voir-c li{ margin: 0; }
.ip-page .gd-voir-c a{
  display: flex; align-items: flex-start; gap: .65rem; padding: .5rem .7rem;
  background: #fff; border: 1px solid var(--ip-bd); border-radius: var(--ip-r-sm);
  color: var(--ip-ink); text-decoration: none; font-size: .94rem; font-weight: 700; line-height: 1.35;
  transition: border-color .15s var(--ip-ease);
}
.ip-page .gd-voir-c a:hover{ border-color: var(--ip-acc); color: var(--ip-acc-d); }
.ip-page .gd-voir-c a:hover .gd-voir-l{ text-decoration: underline; }
.ip-page .gd-voir-r{
  flex: 0 0 auto; min-width: 2.6rem; margin-top: .02rem; padding: .08rem .4rem; border-radius: .45rem;
  color: #fff; font-size: .84rem; font-weight: 800; text-align: center; font-variant-numeric: tabular-nums;
}
.ip-page .gd-voir-i{ flex: 0 0 auto; display: grid; place-items: center; width: 2.6rem; margin-top: .1rem; color: var(--ip-acc); font-size: .85rem; }
.ip-page .gd-voir-l{ min-width: 0; overflow-wrap: anywhere; }

/* ----------------------------------------- partie précédente, partie suivante -- */
.ip-page .gd-suite{ display: grid; gap: .75rem; grid-template-columns: minmax(0,1fr); }
@media (min-width: 40rem){ .ip-page .gd-suite{ grid-template-columns: repeat(2, minmax(0,1fr)); } }
.ip-page .gd-suite-a{
  display: flex; align-items: center; gap: .9rem; min-width: 0; padding: .9rem 1.05rem;
  background: var(--ip-card); border: 1px solid var(--ip-bd); border-radius: var(--ip-r-md); box-shadow: var(--ip-sh-sm);
  color: var(--ip-ink); text-decoration: none;
  transition: border-color .15s var(--ip-ease), background-color .15s var(--ip-ease);
}
.ip-page .gd-suite-a:hover{ border-color: var(--ip-acc); background: var(--ip-acc-l2); }
.ip-page .gd-suite-a > i{ flex: 0 0 auto; color: var(--ip-acc); font-size: 1.1rem; }
.ip-page .gd-suite-a--suiv{ justify-content: space-between; }
.ip-page .gd-suite-x{ display: grid; gap: .1rem; min-width: 0; }
.ip-page .gd-suite-x small{ font-size: .74rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--ip-mut); }
.ip-page .gd-suite-x strong{ font-size: 1rem; font-weight: 800; line-height: 1.3; }
@media (min-width: 40rem){ .ip-page .gd-suite-a--suiv .gd-suite-x{ text-align: right; } }

@media print{
  .ip-page .gd-parties, .ip-page .gd-suite, .ip-page .gd-voir{ display: none; }
}
