/* =========================================================================
   GEM STATE CIVIC DESK (denneyforidaho.com) : systeme de design « registre
   civique du haut desert », prefixe gsd-. Rhabillage du squelette
   fiches-reference : deux colonnes asymetriques (marge de reperes + colonne
   de lecture bornee), filets fins, angles vifs, aucune ombre, entrees
   numerotees ; a quoi s'ajoutent les planches photographiques (heros en
   regard du titre, tuiles de section, lignes de registre a vignette).
   Vocabulaire : binder (en-tete), sheet (feuille = conteneur), tabs (index
   a onglets = navigation), trail (fil), frontis (frontispice = heros),
   tally (releve chiffre), folio (bande de section), tile (tuile), ledger /
   row (registre et sa ligne), board (tableau d'affichage), plan / margin /
   reading (plan de page, marge, lecture), opening (ouverture), plate
   (planche), body (corps editorial), para (paragraphe numerote), jalon
   (entree adjacente), box (encart de marge), docket (pied de page).
   Palette : sable, vert sauge, bleu d'encre. Une seule identite, claire.
   Polices systeme uniquement, aucune requete externe, aucun script.
   ========================================================================= */

:root {
  color-scheme: light;

  /* ---- 1. palette : le haut desert et le registre ------------------------ */
  --gsd-sand:        #f0e8d8;   /* papier                                    */
  --gsd-sand-deep:   #e3d8bf;   /* bandes en creux, encarts                  */
  --gsd-sand-light:  #f8f3e8;   /* survols, fiches                           */
  --gsd-ink:         #1c2b44;   /* encre : texte courant, titres             */
  --gsd-ink-pale:    #4d5b70;   /* mentions, legendes                        */
  --gsd-sage:        #5d7a5b;   /* sauge : aplats, grands chiffres, filets   */
  --gsd-sage-deep:   #3d5a3f;   /* sauge profonde : liens, cotes, etiquettes */
  --gsd-rule:        #cfc2a6;   /* filet fin                                 */
  --gsd-rule-strong: #a8987a;   /* filet structurant                         */
  --gsd-select:      #d5dfd0;
  /* La bande sombre du pied de page : tokens FIXES, jamais herites. */
  --gsd-night:       #182333;
  --gsd-night-text:  #e9e2d2;
  --gsd-night-pale:  #b9c0cc;
  --gsd-night-link:  #c7d6bf;
  --gsd-night-rule:  #34435a;

  /* ---- 2. caracteres : piles systeme, rien ne part chercher dehors ------- */
  --gsd-display: "Zilla Slab", "Rockwell Nova", Rockwell, "Roboto Slab", "American Typewriter", "DejaVu Serif", "Bitstream Vera Serif", Georgia, serif;
  --gsd-text: "Avenir Next", Avenir, "Segoe UI", "Helvetica Neue", Roboto, Arial, sans-serif;
  --gsd-mono: "SF Mono", Menlo, Consolas, "Roboto Mono", "DejaVu Sans Mono", monospace;

  /* ---- 3. rythme ---------------------------------------------------------- */
  --gsd-measure: 40rem;                      /* colonne de lecture             */
  --gsd-frame:   76rem;                      /* largeur maximale de la feuille */
  --gsd-margin:  13.5rem;                    /* colonne de reperes             */
  --gsd-gutter:  clamp(1.15rem, 3vw, 2.4rem);
  --gsd-gap:     clamp(1.6rem, 3.4vw, 3.2rem);
  --gsd-band:    clamp(2.2rem, 4.5vw, 3.6rem);
  --gsd-beat:    1.1rem;

  /* ---- 4. tailles --------------------------------------------------------- */
  --gsd-t-base:  1.02rem;
  --gsd-t-small: .9rem;
  --gsd-t-mono:  .74rem;
  --gsd-t-h1:    clamp(1.85rem, 1.2rem + 2.1vw, 2.8rem);
  --gsd-t-h2:    clamp(1.5rem, 1.2rem + 1.05vw, 2.1rem);
  --gsd-t-h3:    1.22rem;
}

/* =========================================================================
   BASE
   ========================================================================= */

*, *::before, *::after { box-sizing: border-box; }
html { font-size: 100%; -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
}
body {
  margin: 0;
  background: var(--gsd-sand);
  color: var(--gsd-ink);
  font-family: var(--gsd-text);
  font-size: var(--gsd-t-base);
  line-height: 1.62;
  overflow-wrap: break-word;
  font-kerning: normal;
  text-rendering: optimizeLegibility;
}
::selection { background: var(--gsd-select); color: var(--gsd-ink); }
img, svg, video { max-width: 100%; height: auto; display: block; }
picture { display: block; }
a { color: var(--gsd-sage-deep); text-underline-offset: .16em; text-decoration-thickness: 1px; }
a:hover { color: var(--gsd-ink); }
:focus-visible { outline: 2px solid var(--gsd-sage-deep); outline-offset: 3px; }
h1, h2, h3, h4 {
  font-family: var(--gsd-display);
  font-weight: 700;
  line-height: 1.14;
  margin: 0;
  color: var(--gsd-ink);
  letter-spacing: -.005em;
  text-wrap: balance;
}
h1 { font-size: var(--gsd-t-h1); }
h2 { font-size: var(--gsd-t-h2); }
h3 { font-size: var(--gsd-t-h3); }
p, ul, ol, figure, table, blockquote { margin: 0; }

/* Cotes : chiffres, dates et etiquettes en chasse tabulaire. */
.gsd-cote, .gsd-edition, .gsd-tally, .gsd-row__cote, .gsd-tile__no, .gsd-folio__no,
.gsd-para__no, .gsd-margin__title, .gsd-jalon__sense, .gsd-card__cote, .gsd-trail, .gsd-plate__caption {
  font-variant-numeric: tabular-nums;
}

/* =========================================================================
   OSSATURE
   ========================================================================= */

.gsd-skip {
  position: absolute; left: -9999px; top: 0;
  background: var(--gsd-ink); color: var(--gsd-sand);
  font-family: var(--gsd-display); padding: .6rem 1rem; z-index: 60;
}
.gsd-skip:focus { left: .5rem; top: .5rem; position: fixed; }

/* La feuille : unique conteneur de largeur. */
.gsd-sheet {
  width: 100%;
  max-width: var(--gsd-frame);
  margin-inline: auto;
  padding-inline: var(--gsd-gutter);
}

/* La ligne de marge du registre : un trait sauge a gauche de la feuille, sur
   ecran large seulement. */
@media (min-width: 62em) {
  main { position: relative; }
  main::before {
    content: "";
    position: absolute; top: 0; bottom: 0;
    left: calc((100% - min(100%, var(--gsd-frame))) / 2 + .55rem);
    width: 2px;
    background: var(--gsd-sage);
    opacity: .55;
    pointer-events: none;
  }
}

/* =========================================================================
   BINDER : l'en-tete, identique sur toutes les pages
   ========================================================================= */

.gsd-binder {
  background: var(--gsd-sand);
  border-bottom: 3px double var(--gsd-ink);
  position: relative;
}
.gsd-binder__row {
  display: flex; flex-wrap: wrap;
  align-items: center; justify-content: space-between;
  gap: .6rem 1.6rem;
  padding-block: .7rem .6rem;
}
.gsd-wordmark {
  display: inline-flex; align-items: center; gap: .8rem;
  text-decoration: none; color: var(--gsd-ink);
  min-width: 0;
}
.gsd-wordmark svg { width: 2.6rem; height: 2.6rem; flex: none; }
.gsd-wordmark__name {
  display: block;
  font-family: var(--gsd-display);
  font-weight: 700;
  font-size: clamp(1.2rem, 1rem + 1vw, 1.7rem);
  line-height: 1.05;
  letter-spacing: -.01em;
}
.gsd-wordmark__line {
  display: block;
  font-family: var(--gsd-mono);
  font-size: .66rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--gsd-ink-pale);
  margin-top: .3rem;
}
.gsd-wordmark:hover .gsd-wordmark__name { color: var(--gsd-sage-deep); }

.gsd-edition {
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  letter-spacing: .05em;
  color: var(--gsd-ink-pale);
  text-align: right;
  line-height: 1.5;
}
.gsd-edition span { display: block; }

/* Le menu : une case a cocher, aucun script. */
.gsd-tabs__toggle { position: absolute; opacity: 0; width: 1px; height: 1px; overflow: hidden; }
.gsd-tabs__handle {
  display: none;
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  letter-spacing: .1em;
  text-transform: uppercase;
  border: 1px solid var(--gsd-ink);
  padding: .55rem .9rem;
  min-height: 2.5rem;
  cursor: pointer;
  color: var(--gsd-ink);
  background: var(--gsd-sand-light);
}
.gsd-tabs__handle::after { content: "  +"; white-space: pre; }
.gsd-tabs__toggle:checked ~ .gsd-binder__row .gsd-tabs__handle::after { content: "  x"; }
.gsd-tabs__toggle:focus-visible ~ .gsd-binder__row .gsd-tabs__handle { outline: 2px solid var(--gsd-sage-deep); outline-offset: 2px; }

.gsd-tabs { border-top: 1px solid var(--gsd-rule); }
.gsd-tabs ul {
  list-style: none; margin: 0 auto; padding-block: .25rem .4rem;
  display: flex; flex-wrap: wrap; gap: .1rem 1.5rem;
}
.gsd-tabs a {
  font-family: var(--gsd-display);
  font-weight: 600;
  font-size: .96rem;
  letter-spacing: .01em;
  color: var(--gsd-ink);
  text-decoration: none;
  display: inline-block;
  padding: .3rem 0;
  border-bottom: 2px solid transparent;
}
.gsd-tabs a:hover { border-bottom-color: var(--gsd-sage); color: var(--gsd-sage-deep); }
.gsd-tabs a[aria-current] { border-bottom-color: var(--gsd-ink); }
.gsd-tabs a[aria-current="page"] { color: var(--gsd-sage-deep); border-bottom-color: var(--gsd-sage-deep); }

@media (max-width: 61.99em) {
  .gsd-edition { display: none; }
  .gsd-tabs__handle { display: inline-block; }
  .gsd-tabs { display: none; }
  .gsd-tabs__toggle:checked ~ .gsd-tabs { display: block; }
  .gsd-tabs ul { flex-direction: column; gap: 0; padding-block: .3rem .6rem; }
  .gsd-tabs li + li { border-top: 1px dotted var(--gsd-rule); }
  .gsd-tabs a { display: block; padding: .7rem 0; border-bottom: 0; }
  .gsd-tabs a[aria-current] { border-left: 3px solid var(--gsd-sage-deep); padding-left: .6rem; }
}

/* =========================================================================
   TRAIL : le fil de lecture
   ========================================================================= */

.gsd-trail {
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  letter-spacing: .05em;
  color: var(--gsd-ink-pale);
  padding: .95rem 0 0;
}
.gsd-trail ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .3rem .4rem; }
.gsd-trail li + li::before { content: "/"; margin-right: .4rem; color: var(--gsd-rule-strong); }
.gsd-trail a { color: var(--gsd-ink-pale); text-decoration: none; }
.gsd-trail a:hover { color: var(--gsd-sage-deep); text-decoration: underline; }
.gsd-trail [aria-current="page"] { color: var(--gsd-ink); }

/* =========================================================================
   FRONTIS : l'accueil, la photo en regard du titre
   ========================================================================= */

.gsd-frontis {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.4rem var(--gsd-gap);
  align-items: center;
  padding-block: clamp(1rem, 2.2vw, 1.4rem) clamp(.9rem, 2vw, 1.3rem);
  border-bottom: 1px solid var(--gsd-rule);
}
@media (min-width: 62em) {
  .gsd-frontis { grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr); }
}
.gsd-frontis__copy > * + * { margin-top: .8rem; }
.gsd-kicker {
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gsd-sage-deep);
}
.gsd-kicker::before {
  content: "";
  display: inline-block; width: 1.4rem; height: 2px;
  background: var(--gsd-sage); vertical-align: middle; margin-right: .55rem;
}
.gsd-frontis h1 { max-width: 18ch; }
.gsd-frontis__lead { font-size: 1.02rem; line-height: 1.5; max-width: 58ch; color: var(--gsd-ink); }
.gsd-frontis__acts { display: flex; flex-wrap: wrap; gap: .7rem; margin-top: 1.1rem; }
.gsd-frontis__refs {
  font-size: var(--gsd-t-small);
  color: var(--gsd-ink-pale);
  border-top: 1px dotted var(--gsd-rule-strong);
  padding-top: .65rem;
  margin-top: 1.1rem;
}
.gsd-frontis__refs a { white-space: nowrap; }

.gsd-button {
  display: inline-block;
  font-family: var(--gsd-display);
  font-weight: 700;
  font-size: .98rem;
  letter-spacing: .01em;
  color: var(--gsd-sand);
  background: var(--gsd-ink);
  border: 2px solid var(--gsd-ink);
  padding: .62rem 1.15rem;
  text-decoration: none;
  min-height: 2.75rem;
}
.gsd-button:hover { background: var(--gsd-sage-deep); border-color: var(--gsd-sage-deep); color: var(--gsd-sand-light); }
.gsd-button--hollow { background: transparent; color: var(--gsd-ink); }
.gsd-button--hollow:hover { background: var(--gsd-sand-deep); color: var(--gsd-ink); border-color: var(--gsd-ink); }

.gsd-frontis__plate { margin: 0; min-width: 0; }
.gsd-frontis__plate img {
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 17.5rem;
  object-fit: cover;
  border: 1px solid var(--gsd-rule-strong);
  background: var(--gsd-sand-deep);
}
.gsd-frontis__plate figcaption,
.gsd-plate__caption {
  font-family: var(--gsd-mono);
  font-size: .7rem;
  letter-spacing: .03em;
  line-height: 1.5;
  color: var(--gsd-ink-pale);
  padding-top: .45rem;
}

/* Le releve : trois chiffres sous la photo. */
.gsd-tally {
  list-style: none; margin: .7rem 0 0; padding: .55rem 0 0;
  display: flex; flex-wrap: wrap; gap: .3rem 1.6rem;
  border-top: 2px solid var(--gsd-ink);
}
.gsd-tally li { font-family: var(--gsd-mono); font-size: var(--gsd-t-mono); letter-spacing: .06em; text-transform: uppercase; color: var(--gsd-ink-pale); display: flex; align-items: baseline; gap: .45rem; }
.gsd-tally b { font-family: var(--gsd-display); font-size: 1.25rem; font-weight: 700; letter-spacing: 0; text-transform: none; color: var(--gsd-ink); line-height: 1.1; }

/* =========================================================================
   FOLIO : une bande de section
   ========================================================================= */

.gsd-folio { padding-block: var(--gsd-band); }
.gsd-folio--first { padding-top: clamp(1.3rem, 2.6vw, 1.9rem); }
.gsd-folio + .gsd-folio { border-top: 1px solid var(--gsd-rule); }
.gsd-folio--recess { background: var(--gsd-sand-deep); border-top: 1px solid var(--gsd-rule-strong); border-bottom: 1px solid var(--gsd-rule-strong); }
.gsd-folio--recess + .gsd-folio { border-top: 0; }

.gsd-folio__head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-areas: "no title" "note note" "more more";
  column-gap: 1rem;
  row-gap: .35rem;
  align-items: baseline;
  margin-bottom: 1.3rem;
  padding-bottom: .7rem;
  border-bottom: 2px solid var(--gsd-ink);
}
@media (min-width: 46em) {
  .gsd-folio__head { grid-template-areas: "no title more" "no note note"; grid-template-columns: auto minmax(0, 1fr) auto; }
}
.gsd-folio__no {
  grid-area: no;
  font-family: var(--gsd-display);
  font-weight: 700;
  font-size: clamp(1.9rem, 1.4rem + 1.8vw, 2.9rem);
  line-height: .9;
  color: var(--gsd-sage);
  letter-spacing: -.02em;
}
.gsd-folio__head h2 { grid-area: title; }
.gsd-folio__note { grid-area: note; font-size: var(--gsd-t-small); color: var(--gsd-ink-pale); max-width: 72ch; }
.gsd-more {
  grid-area: more;
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--gsd-sage-deep);
  text-decoration: none;
  border-bottom: 1px solid var(--gsd-sage);
  padding-bottom: .15rem;
  justify-self: start;
  white-space: nowrap;
}
.gsd-more:hover { color: var(--gsd-ink); border-bottom-color: var(--gsd-ink); }

/* --- Tuiles : les sections, numerotees, avec leur photo -------------------- */
.gsd-tiles {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.6rem var(--gsd-gap);
}
@media (min-width: 40em) { .gsd-tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 62em) { .gsd-tiles { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.gsd-tile { min-width: 0; display: flex; flex-direction: column; }
.gsd-tile__plate { margin: 0; position: relative; }
.gsd-tile__plate img {
  width: 100%;
  aspect-ratio: 16 / 10;
  object-fit: cover;
  border: 1px solid var(--gsd-rule-strong);
  background: var(--gsd-sand-deep);
}
.gsd-tile__no {
  position: absolute; top: 0; left: 0;
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gsd-sand-light);
  background: var(--gsd-sage-deep);
  padding: .3rem .6rem;
}
.gsd-tile__body { padding-top: .8rem; display: flex; flex-direction: column; gap: .4rem; }
.gsd-tile h3 { font-size: 1.32rem; }
.gsd-tile h3 a { color: var(--gsd-ink); text-decoration: none; }
.gsd-tile h3 a:hover { color: var(--gsd-sage-deep); text-decoration: underline; }
.gsd-tile p { font-size: var(--gsd-t-small); color: var(--gsd-ink-pale); }
.gsd-tile__count {
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--gsd-sage-deep);
}

/* --- Registre : une ligne par entree, vignette a gauche (>= 27 % de ligne) - */
.gsd-ledger { list-style: none; margin: 0; padding: 0; border-top: 2px solid var(--gsd-ink); }
.gsd-row {
  display: grid;
  grid-template-columns: minmax(7.5rem, 28%) minmax(0, 1fr);
  gap: .2rem 1.3rem;
  padding: 1.05rem 0;
  border-bottom: 1px solid var(--gsd-rule);
  align-items: start;
}
.gsd-row:hover { background: var(--gsd-sand-light); }
.gsd-folio--recess .gsd-row:hover { background: var(--gsd-sand); }
.gsd-row__plate { margin: 0; grid-row: 1 / span 3; }
.gsd-row__plate img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border: 1px solid var(--gsd-rule-strong);
  background: var(--gsd-sand-deep);
}
.gsd-row__cote {
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--gsd-sage-deep);
}
.gsd-row h3 { font-size: 1.28rem; margin-top: .15rem; }
.gsd-row h3 a { color: var(--gsd-ink); text-decoration: none; }
.gsd-row h3 a:hover { color: var(--gsd-sage-deep); text-decoration: underline; }
.gsd-row p { font-size: var(--gsd-t-small); color: var(--gsd-ink-pale); margin-top: .35rem; max-width: 60ch; }
@media (min-width: 62em) {
  .gsd-row { grid-template-columns: minmax(10rem, 27%) minmax(0, 1fr); gap: .2rem 1.8rem; }
}

/* --- Tableau d'affichage : cinq fiches ------------------------------------ */
.gsd-board {
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.5rem var(--gsd-gap);
}
@media (min-width: 40em) { .gsd-board { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 62em) { .gsd-board { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1.2rem; } }
.gsd-card { min-width: 0; border-top: 1px solid var(--gsd-rule-strong); padding-top: .8rem; }
.gsd-card figure { margin: 0 0 .7rem; }
.gsd-card img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border: 1px solid var(--gsd-rule-strong); background: var(--gsd-sand-deep); }
.gsd-card__cote {
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--gsd-sage-deep);
}
.gsd-card h3 { font-size: 1.08rem; margin-top: .3rem; line-height: 1.22; }
.gsd-card h3 a { color: var(--gsd-ink); text-decoration: none; }
.gsd-card h3 a:hover { color: var(--gsd-sage-deep); text-decoration: underline; }
.gsd-card p { font-size: .84rem; color: var(--gsd-ink-pale); margin-top: .4rem; }

/* --- Le bloc de methode (bas d'accueil) ----------------------------------- */
.gsd-method {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.4rem var(--gsd-gap);
  border-top: 2px solid var(--gsd-ink);
  padding-top: 1.6rem;
}
@media (min-width: 62em) { .gsd-method { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); } }
.gsd-method > div > * + * { margin-top: .8rem; }
.gsd-method p { max-width: 58ch; }
.gsd-method ul { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--gsd-rule-strong); }
.gsd-method li { border-bottom: 1px solid var(--gsd-rule); }
.gsd-method li a {
  display: flex; justify-content: space-between; gap: 1rem;
  padding: .75rem 0;
  font-family: var(--gsd-display); font-weight: 600;
  color: var(--gsd-ink); text-decoration: none;
}
.gsd-method li a::after { content: "\2192"; color: var(--gsd-sage); }
.gsd-method li a:hover { color: var(--gsd-sage-deep); }

/* --- Rainure : separateur ornemental --------------------------------------- */
.gsd-rule { display: flex; justify-content: center; color: var(--gsd-rule-strong); padding: .2rem 0; }

/* =========================================================================
   PLAN DE PAGE : marge de reperes + colonne de lecture
   ========================================================================= */

.gsd-plan {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2rem var(--gsd-gap);
  padding: 1.4rem 0 2.6rem;
  align-items: start;
}
.gsd-margin { order: 2; }
.gsd-reading { order: 1; min-width: 0; }
@media (min-width: 62em) {
  .gsd-plan { grid-template-columns: var(--gsd-margin) minmax(0, 1fr); gap: 2rem var(--gsd-gap); }
  .gsd-plan > .gsd-margin { grid-column: 1; grid-row: 1; order: 0; }
  .gsd-plan > .gsd-reading { grid-column: 2; grid-row: 1; order: 0; }
  .gsd-plan--inverse { grid-template-columns: minmax(0, 46rem) var(--gsd-margin); }
  .gsd-plan--inverse > .gsd-margin { grid-column: 2; }
  .gsd-plan--inverse > .gsd-reading { grid-column: 1; }
}
.gsd-margin { font-size: var(--gsd-t-small); color: var(--gsd-ink-pale); border-top: 2px solid var(--gsd-ink); padding-top: .2rem; }
.gsd-box { padding: .8rem 0 .9rem; border-bottom: 1px solid var(--gsd-rule); }
.gsd-box--tint { background: var(--gsd-sand-deep); padding: .9rem .9rem 1rem; border-bottom: 0; margin-top: .9rem; }
.gsd-margin__title {
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gsd-ink);
  margin: 0 0 .45rem;
}
.gsd-box ul, .gsd-box ol { list-style: none; margin: 0; padding: 0; }
.gsd-box ol { counter-reset: gsd-item; }
.gsd-box li { border-top: 1px dotted var(--gsd-rule); }
.gsd-box li:first-child { border-top: 0; }
.gsd-box li a { display: block; padding: .32rem 0; color: var(--gsd-ink); text-decoration: none; line-height: 1.4; }
.gsd-box ol li a::before { counter-increment: gsd-item; content: counter(gsd-item, decimal-leading-zero) "  "; font-family: var(--gsd-mono); font-size: var(--gsd-t-mono); color: var(--gsd-sage-deep); white-space: pre; }
.gsd-box li a:hover { color: var(--gsd-sage-deep); }
.gsd-box li a[aria-current="page"] { color: var(--gsd-sage-deep); font-weight: 600; }
.gsd-box p { line-height: 1.5; }
.gsd-box p + p { margin-top: .5rem; }
.gsd-box a[href^="mailto:"] { font-family: var(--gsd-mono); font-size: .78rem; letter-spacing: .02em; overflow-wrap: anywhere; }

/* --- Ouverture : cote, titre, chapo, mentions ----------------------------- */
.gsd-opening { padding: 1.1rem 0 1.4rem; max-width: 52rem; }
.gsd-opening > * + * { margin-top: .75rem; }
.gsd-cote {
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gsd-sage-deep);
}
.gsd-cote a { color: inherit; text-decoration: none; }
.gsd-cote a:hover { text-decoration: underline; }
.gsd-opening h1 { max-width: 22ch; }
.gsd-standfirst { font-size: 1.14rem; line-height: 1.5; color: var(--gsd-ink); max-width: 56ch; }
.gsd-meta {
  list-style: none; margin: 0; padding: .7rem 0 0;
  display: flex; flex-wrap: wrap; gap: .3rem 1.4rem;
  font-family: var(--gsd-mono); font-size: var(--gsd-t-mono); letter-spacing: .05em;
  color: var(--gsd-ink-pale);
  border-top: 1px solid var(--gsd-rule);
}

/* --- Planche : la photo de la page ---------------------------------------- */
.gsd-plate { margin: 0 0 1.4rem; }
.gsd-plate img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border: 1px solid var(--gsd-rule-strong); background: var(--gsd-sand-deep); }
.gsd-plate--wide img { aspect-ratio: 21 / 9; max-height: 30rem; }

/* --- Corps editorial ------------------------------------------------------- */
.gsd-reading .gsd-body { max-width: var(--gsd-measure); }
.gsd-body { font-size: 1.05rem; line-height: 1.68; }
.gsd-body > * + *, .gsd-para > * + * { margin-top: var(--gsd-beat); }
.gsd-body p { max-width: var(--gsd-measure); }
.gsd-body ul, .gsd-body ol { padding-left: 1.2rem; }
.gsd-body li + li { margin-top: .35rem; }
.gsd-body a { text-decoration-thickness: 1px; }
.gsd-body strong { font-weight: 700; color: var(--gsd-ink); }
.gsd-para { border-top: 1px solid var(--gsd-rule); padding-top: 1.3rem; margin-top: 1.7rem; }
.gsd-para h2 { font-size: clamp(1.32rem, 1.15rem + .6vw, 1.62rem); line-height: 1.2; scroll-margin-top: 1rem; }
.gsd-para__no {
  display: block;
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  font-weight: 400;
  letter-spacing: .12em;
  color: var(--gsd-sage-deep);
  margin-bottom: .4rem;
}
.gsd-body h3 { font-size: 1.12rem; margin-top: 1.3rem; }

/* --- Jalons : entree precedente / suivante --------------------------------- */
.gsd-jalons {
  display: grid; grid-template-columns: minmax(0, 1fr); gap: .6rem;
  border-top: 2px solid var(--gsd-ink);
  margin-top: 2rem; padding-top: .9rem;
  max-width: var(--gsd-measure);
}
@media (min-width: 46em) { .gsd-jalons { grid-template-columns: 1fr 1fr; } }
.gsd-jalon { text-decoration: none; color: var(--gsd-ink); display: block; padding: .3rem 0; }
.gsd-jalon:hover .gsd-jalon__name { color: var(--gsd-sage-deep); text-decoration: underline; }
.gsd-jalon__sense { display: block; font-family: var(--gsd-mono); font-size: var(--gsd-t-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--gsd-ink-pale); }
.gsd-jalon__name { font-family: var(--gsd-display); font-weight: 600; font-size: 1.05rem; line-height: 1.3; }
.gsd-jalon--next { text-align: left; }
@media (min-width: 46em) { .gsd-jalon--next { text-align: right; } }

/* --- Bande de fin de page (suite de lecture) ------------------------------- */
.gsd-folio--tail { border-top: 1px solid var(--gsd-rule-strong); }

/* --- Page 404 ------------------------------------------------------------- */
.gsd-closed { padding: 2.4rem 0 3.6rem; max-width: 46rem; }
.gsd-closed > * + * { margin-top: 1rem; }

/* =========================================================================
   DOCKET : le pied de page, bande sombre a tokens fixes
   ========================================================================= */

.gsd-docket {
  background: var(--gsd-night);
  color: var(--gsd-night-text);
  border-top: 4px solid var(--gsd-sage);
  margin-top: var(--gsd-band);
  padding: 2.4rem 0 1.6rem;
  font-size: var(--gsd-t-small);
}
.gsd-docket__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 1.6rem var(--gsd-gap);
}
@media (min-width: 46em) { .gsd-docket__grid { grid-template-columns: 1.5fr 1fr 1fr; } }
.gsd-docket .gsd-wordmark { color: var(--gsd-night-text); }
.gsd-docket .gsd-wordmark__line { color: var(--gsd-night-pale); }
.gsd-docket .gsd-wordmark:hover .gsd-wordmark__name { color: var(--gsd-night-link); }
.gsd-docket p { color: var(--gsd-night-pale); max-width: 44ch; margin-top: .9rem; line-height: 1.55; }
.gsd-docket h2 {
  font-family: var(--gsd-mono);
  font-size: var(--gsd-t-mono);
  font-weight: 400;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gsd-night-pale);
  margin-bottom: .6rem;
}
.gsd-docket ul { list-style: none; margin: 0; padding: 0; }
.gsd-docket li { padding: .2rem 0; }
.gsd-docket a { color: var(--gsd-night-link); }
.gsd-docket a:hover { color: var(--gsd-night-text); }
.gsd-docket__sign { color: var(--gsd-night-text); font-family: var(--gsd-display); font-size: 1rem; }
.gsd-docket__sign a { font-family: var(--gsd-mono); font-size: .8rem; letter-spacing: .04em; }
.gsd-docket__line {
  border-top: 1px solid var(--gsd-night-rule);
  margin-top: 1.8rem; padding-top: .9rem;
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: .3rem 1.2rem;
  font-family: var(--gsd-mono); font-size: var(--gsd-t-mono); letter-spacing: .05em;
  color: var(--gsd-night-pale);
}

/* =========================================================================
   IMPRESSION
   ========================================================================= */

@media print {
  :root { --gsd-sand: #fff; --gsd-sand-deep: #fff; --gsd-sand-light: #fff; }
  .gsd-tabs, .gsd-tabs__handle, .gsd-margin, .gsd-jalons, .gsd-skip, .gsd-folio--tail, .gsd-docket { display: none; }
  .gsd-plan { grid-template-columns: minmax(0, 1fr); }
  main::before { display: none; }
  a { color: inherit; text-decoration: none; }
}
