/* ==========================================================================
   Fiches de lieu (un temple par page) : /temples/<lieu>/ et /fr/temples/<lieu>/
   Chargée par ces pages seulement (clé assets de head()). Les couleurs et les
   polices sont celles du site (style.css) : rien de nouveau dans la palette.

   Un seul moment fort par page : la bande des âges, sur le vert Doi profond,
   où les dates sont la typographie. Tout le reste reste sur la brume et le
   blanc, au rythme des pages guide.
   ========================================================================== */

/* --- Ouverture -------------------------------------------------------------
   Le nom du lieu d'abord, en grand ; l'angle éditorial dessous, en italique et
   en or clair, sur la même ligne de base. C'est un seul H1 : le moteur lit
   « Wat Phra Singh, au-delà des dorures », le lecteur voit un nom et un angle. */
.hero--place { min-height: clamp(440px, 72vh, 760px); padding-block: var(--sp-9) var(--sp-7); }
.hero--place h1 { max-width: none; margin-block: var(--sp-3) var(--sp-4); }
.place-title__name {
  display: block;
  font-size: clamp(2.7rem, 8.4vw, 5.6rem);
  font-weight: 900;
  font-variation-settings: "opsz" 144;
  line-height: .98;
  letter-spacing: -.01em;
  /* Une ombre courte et une ombre large, toutes deux vert profond : le nom
     reste net là où il passe sur la partie claire du toit. */
  text-shadow: 0 1px 2px rgba(10,43,44,.35), 0 0 28px rgba(10,43,44,.35);
}
.place-title__tag {
  display: block;
  margin-top: var(--sp-2);
  font-size: clamp(1.45rem, 3.6vw, 2.5rem);
  font-weight: 500;
  font-style: italic;
  line-height: 1.1;
  color: var(--c-secondary-light);
  text-shadow: 0 1px 2px rgba(10,43,44,.6), 0 0 18px rgba(10,43,44,.45);
}
.hero--place .eyebrow { text-shadow: 0 1px 2px rgba(10,43,44,.9), 0 0 6px rgba(10,43,44,.85), 0 0 16px rgba(10,43,44,.65); }
.hero--place .hero__sub { max-width: 46ch; min-height: 0; }
/* Le voile des heros photo éteindrait l'or que le titre annonce : ici il ne
   couvre que le bas et le côté du texte, et laisse le pignon et la flèche du
   chedi dans leur lumière. */
@media (min-width: 768px) {
  .hero--place.hero--shot::after {
    background:
      linear-gradient(180deg, rgba(10,43,44,0) 0%, rgba(10,43,44,0) 45%, rgba(10,43,44,.72) 100%),
      linear-gradient(90deg, rgba(10,43,44,.8) 0%, rgba(10,43,44,.55) 40%, rgba(10,43,44,0) 64%);
  }
}
/* Sur téléphone, la photo garde son pignon doré dans le haut de l'écran : le
   texte tient dans le bas, sous un voile qui ne monte pas jusqu'au ciel. */
@media (max-width: 767px) {
  .hero--place { min-height: 78svh; padding-block: var(--sp-8) var(--sp-6); }
  .hero--place.hero--shot::after {
    background: linear-gradient(180deg, rgba(10,43,44,0) 0%, rgba(10,43,44,.18) 30%,
                rgba(10,43,44,.6) 46%, rgba(10,43,44,.82) 64%, rgba(10,43,44,.94) 100%);
  }
  .hero--place .hero__sub { font-size: 17px; }
}
/* Sur les téléphones les plus étroits, le titre passe sur deux lignes et le
   surtitre remonte sur l'arête dorée du toit (or sur or). Une ombre floue,
   à la taille du seul surtitre, le détache sans foncer la photo autour. */
@media (max-width: 359px) {
  .hero--place .eyebrow { position: relative; isolation: isolate; width: fit-content; }
  .hero--place .eyebrow::before {
    content: ""; position: absolute; z-index: -1; inset: -8px -4px -6px -10px;
    border-radius: 999px; background: rgba(10,43,44,.6); filter: blur(7px); pointer-events: none;
  }
}

/* --- L'essentiel ----------------------------------------------------------
   Deux colonnes en grand écran : l'avis à gauche, le registre des faits à
   droite. Un registre plutôt que des cartes : chaque ligne se lit d'un coup
   d'œil sur place, et sa note dit d'où vient le fait. */
.glance { background: var(--c-surface); border-bottom: 1px solid var(--c-border); padding-block: var(--sp-7) var(--sp-8); }
.glance__inner { display: grid; gap: var(--sp-6); }
/* En grand écran, les notes (le billet, la tenue dans les bâtiments) montent
   sous l'avis, à gauche, face au registre : la colonne de gauche ne finit plus
   400 px avant la droite. Sur téléphone, l'ordre reste celui du code : l'avis,
   le registre, puis les notes. */
@media (min-width: 1024px) {
  .glance__inner {
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
    grid-template-rows: auto 1fr;
    column-gap: var(--sp-8); row-gap: var(--sp-6); align-items: start;
  }
  .glance__facts { grid-column: 2; grid-row: 1 / span 2; }
  .glance__notes { grid-column: 1; grid-row: 2; }
}
.glance h2 { font-size: clamp(1.6rem, 2.6vw, 2.1rem); margin: 0 0 var(--sp-4); color: var(--c-primary); }
.glance__verdict { font-size: 18px; line-height: 1.6; margin: 0 0 var(--sp-5); max-width: 48ch; }
.glance__verdict strong { color: var(--c-primary); }
.glance__fit { display: grid; gap: var(--sp-3); margin: 0 0 var(--sp-5); font-size: 16px; }
.glance__fit div { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); gap: var(--sp-3); }
.glance__fit dt { font-weight: 700; color: var(--c-primary); }
.glance__fit-not dt { color: var(--c-muted); }
.glance__fit dd { margin: 0; }
.glance__jump { margin: 0; }
.glance__jump a {
  display: inline-flex; align-items: center; min-height: 44px;
  padding: 10px var(--sp-5); border-radius: var(--r-btn); line-height: 1.35;
  background: var(--c-primary); color: #fff; font-weight: 700; font-size: 15px;
  text-decoration: none;
}
.glance__jump a:hover { background: var(--c-primary-deep); }
.glance__ledger { margin: 0; border-top: 2px solid var(--c-primary); }
.glance__row {
  display: grid; grid-template-columns: 8.5rem minmax(0, 1fr); gap: var(--sp-4);
  padding-block: var(--sp-3); border-bottom: 1px solid var(--c-border);
}
.glance__row dt { font-size: 14px; font-weight: 700; color: var(--c-primary); padding-top: 2px; }
.glance__row dd { margin: 0; display: grid; gap: 2px; }
.glance__v { font-weight: 700; font-size: 16px; line-height: 1.45; }
.glance__n { font-size: 14px; line-height: 1.5; color: var(--c-muted); max-width: 30rem; }
.glance__notes { display: grid; gap: var(--sp-4); max-width: 34rem; }
.glance__more { font-size: 15px; line-height: 1.6; color: var(--c-muted); margin: 0; max-width: 31rem; }
/* Le billet et le panneau d'amende : la seule erreur qui coûte sur place.
   Un encadré clair, du texte courant et non grisé, l'intitulé en vert Doi. */
.glance__notice {
  margin: 0; padding: var(--sp-4) var(--sp-5);
  font-size: 16px; line-height: 1.6; color: var(--c-text);
  background: var(--c-primary-soft); border-radius: var(--r-btn);
}
.glance__notice strong { display: block; margin-bottom: var(--sp-1); color: var(--c-primary); }
.glance__checked { margin: var(--sp-3) 0 0; font-size: 13px; color: var(--c-muted); display: flex; align-items: center; gap: var(--sp-2); }
.glance__checked::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--c-secondary); flex: none; }
/* Sur téléphone, l'intitulé passe au-dessus de sa valeur : la valeur prend
   toute la largeur et le registre perd un tiers de sa hauteur. */
@media (max-width: 559px) {
  .glance { padding-block: var(--sp-6); }
  .glance__row { grid-template-columns: minmax(0, 1fr); gap: 2px; padding-block: var(--sp-3); }
  .glance__row dt { font-size: 13px; padding-top: 0; }
  .glance__fit div { grid-template-columns: minmax(0, 1fr); gap: 0; }
  .glance__verdict { font-size: 17px; }
  .glance__notice { padding: var(--sp-4); }
}

/* --- Les âges ---------------------------------------------------------------
   La seule bande sombre de la page. Trois photos dont la largeur décroît avec
   l'âge du bâtiment (1,5 / 1 / 0,8) : la plus ancienne est la plus grande. La
   date chevauche le bas de la photo, en Fraunces noire et or clair ; c'est la
   typographie qui porte la démonstration. */
.ages {
  background: var(--c-primary-deep);
  color: #DCE7E0;
  padding-block: var(--sp-9);
}
.ages__head { max-width: 62rem; margin-bottom: var(--sp-8); }
.ages__pre { margin: 0 0 var(--sp-3); font-size: 15px; font-weight: 700; color: var(--c-secondary-light); }
.ages h2 {
  margin: 0 0 var(--sp-5);
  color: #fff;
  font-size: clamp(2rem, 4.6vw, 3.6rem);
  line-height: 1.04;
  font-variation-settings: "opsz" 144;
  max-width: 20ch;
  text-wrap: balance;
}
.ages__lede { margin: 0; font-size: 18px; line-height: 1.65; max-width: 32rem; }
.ages__panels {
  list-style: none; margin: 0; padding: 0;
  display: grid; gap: var(--sp-6);
}
@media (min-width: 768px) {
  .ages__panels { grid-template-columns: 1.5fr 1fr .8fr; align-items: start; gap: var(--sp-5); }
}
.age { margin: 0; min-width: 0; }
.age__frame { position: relative; }
.age__shot img {
  display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover;
  border-radius: var(--r-card); background: #17514A;
}
.age__text { position: relative; padding-right: var(--sp-2); }
.age__date {
  margin: -.62em 0 var(--sp-1) var(--sp-3);
  font-family: var(--font-display);
  font-weight: 900;
  font-variation-settings: "opsz" 144;
  font-size: clamp(2.4rem, 5.6vw, 4.8rem);
  line-height: 1;
  color: var(--c-secondary-light);
  text-shadow: 0 2px 14px rgba(10,43,44,.85), 0 1px 2px rgba(10,43,44,.9);
  font-variant-numeric: lining-nums;
  position: relative;
}
.age__pre { display: block; font-size: clamp(13px, .32em, 1.2rem); font-weight: 700; font-style: italic; letter-spacing: 0; margin-bottom: .1em; }
.age__num { white-space: nowrap; }
.age:not(:first-child) .age__date { font-size: clamp(2rem, 3.6vw, 3.4rem); }
.age__years { margin: 0 0 var(--sp-3) var(--sp-3); font-size: 15px; font-weight: 700; color: #fff; }
.age__t { margin: 0 0 var(--sp-2); color: #fff; font-size: 1.25rem; }
.age__p { margin: 0 0 var(--sp-3); font-size: 16px; line-height: 1.6; }
.age__status { margin: 0; display: flex; align-items: center; gap: var(--sp-2); font-size: 13px; color: #B9CCC3; }
/* Le statut d'une date se lit dans la forme de sa marque autant que dans son
   libellé : plein (daté), cercle en pointillé (chronique), hachures (discuté).
   Ce sont les mêmes marques que sur la frise. */
.age__mark { width: 14px; height: 14px; border-radius: 50%; flex: none; }
.age--dated .age__mark { background: var(--c-secondary-light); }
.age--chronicle .age__mark { border: 2px dashed var(--c-secondary-light); }
.age--disputed .age__mark {
  border-radius: 3px;
  background: repeating-linear-gradient(45deg, var(--c-secondary-light) 0 2px, transparent 2px 5px);
  outline: 1px solid var(--c-secondary-light);
}
/* Sur téléphone : une rangée par bâtiment, la photo à gauche, la date en grand
   à droite. Les trois rangées gardent la même hauteur de photo : ce qui
   compte ici, c'est l'écart entre les dates. */
@media (max-width: 767px) {
  .age { display: grid; grid-template-columns: 38% minmax(0, 1fr); gap: var(--sp-4); align-items: start; }
  .age__shot img { aspect-ratio: 3 / 4; }
  .age__date { margin: 0 0 var(--sp-1); font-size: clamp(1.9rem, 9vw, 2.6rem); }
  .age__years { margin-left: 0; }
}
/* Sous 480 px, une colonne de texte à côté de la photo ne tiendrait que trois
   mots par ligne : la photo repasse au-dessus, en bandeau, la date à cheval. */
@media (max-width: 479px) {
  .age { display: block; }
  .age__shot img { aspect-ratio: 16 / 10; }
  .age__date { margin: -.55em 0 var(--sp-1) var(--sp-3); }
  .age__years { margin-left: var(--sp-3); }
}

/* La frise à l'échelle : de 1300 à aujourd'hui sur une seule ligne. */
.agescale { margin: var(--sp-8) 0 0; }
.agescale__cap { font-size: 14px; font-weight: 700; color: var(--c-secondary-light); margin-bottom: var(--sp-4); }
.agescale__track { position: relative; height: 128px; margin-inline: var(--sp-2); }
.agescale__line { position: absolute; left: 0; right: 0; top: 30px; height: 2px; background: rgba(220,231,224,.35); }
.agescale__tick { position: absolute; top: 24px; width: 1px; height: 14px; background: rgba(220,231,224,.45); }
.agescale__tick span {
  position: absolute; top: -24px; left: 0; transform: translateX(-50%);
  font-size: 12px; color: #B9CCC3; font-variant-numeric: tabular-nums; white-space: nowrap;
}
.agescale__mark { position: absolute; top: 24px; height: 14px; }
.agescale__dot { position: absolute; left: 0; top: 0; width: 14px; height: 14px; border-radius: 50%; transform: translateX(-50%); }
.agescale__mark--dated .agescale__dot { background: var(--c-secondary-light); }
.agescale__mark--chronicle .agescale__dot { background: var(--c-primary-deep); border: 2px dashed var(--c-secondary-light); }
.agescale__mark--disputed .agescale__dot {
  width: 100%; min-width: 10px; transform: none; border-radius: 3px;
  background: repeating-linear-gradient(45deg, var(--c-secondary-light) 0 2px, transparent 2px 5px);
  outline: 1px solid var(--c-secondary-light);
}
.agescale__mark--now .agescale__dot { background: #fff; width: 10px; height: 10px; top: 2px; border-radius: 2px; transform: translateX(-50%) rotate(45deg); }
.agescale__label {
  position: absolute; left: 0; top: 24px; transform: translateX(-50%);
  font-size: 13px; font-weight: 700; color: #fff; white-space: nowrap;
  /* Sur téléphone, le trait du Wihan Luang descend sous « Votre visite » :
     le libellé passe devant, sur le fond de la bande, et le trait reprend
     dessous. */
  padding-inline: 4px; background: var(--c-primary-deep);
}
.agescale__lane1 .agescale__label { top: 50px; }
.agescale__lane2 .agescale__label { top: 76px; }
.agescale__lane1::before {
  content: ""; position: absolute; left: 0; top: 14px; width: 1px; height: 34px; background: rgba(220,231,224,.45);
}
.agescale__mark--start .agescale__label { transform: none; left: -10px; }
.agescale__line + .agescale__tick span { transform: none; left: -2px; }
.agescale__mark--end .agescale__label { transform: none; left: auto; right: -4px; }
.agescale__lane2::before {
  content: ""; position: absolute; left: 0; top: 14px; width: 1px; height: 60px; background: rgba(220,231,224,.45);
}
.agescale__mark--end { width: 0; }
@media (max-width: 639px) {
  .agescale__tick--minor span { display: none; }
  .agescale__label { font-size: 12px; }
}
.ages__note {
  margin: var(--sp-5) 0 0; max-width: 32rem; font-size: 15px; line-height: 1.6; color: #B9CCC3;
  padding-left: var(--sp-4); border-left: 2px solid var(--c-secondary);
}

/* --- Le parcours ------------------------------------------------------------
   En grand écran, le plan reste collé à gauche pendant qu'on lit les étapes :
   on sait toujours où l'on est dans l'enceinte. Sur téléphone, il passe en
   tête, suivi d'une rangée de cinq numéros pour sauter d'une étape à l'autre. */
.route { padding-block: var(--sp-9) var(--sp-8); }
.route__head { max-width: 30rem; margin-bottom: var(--sp-7); }
.route__head h2 { font-size: clamp(1.8rem, 3vw, 2.6rem); margin: 0 0 var(--sp-4); color: var(--c-primary); }
.route__head p { margin: 0; }
.route__hint { margin-top: var(--sp-3) !important; font-size: 14px; color: var(--c-muted); }
.route__layout { display: grid; gap: var(--sp-7); }
@media (min-width: 1024px) {
  .route__layout { grid-template-columns: minmax(300px, 380px) minmax(0, 1fr); gap: var(--sp-8); align-items: start; }
  .route__plan { position: sticky; top: 96px; }
}
.plan { margin: 0; background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--r-card); padding: var(--sp-3); }
.plan__svg { display: block; width: 100%; height: auto; }
.plan__cap { font-size: 13px; color: var(--c-muted); margin: var(--sp-2) var(--sp-1) 0; }
.plan .pl-ground { fill: var(--c-bg); stroke: var(--c-border); stroke-width: 1.5; }
.plan .pl-hall { fill: var(--c-primary-soft); stroke: var(--c-primary); stroke-width: 1.5; }
.plan .pl-opt { fill: var(--c-surface); stroke: var(--c-muted); stroke-width: 1.5; stroke-dasharray: 4 3; }
.plan .pl-chedi { fill: var(--c-secondary-light); stroke: var(--c-secondary-ink); stroke-width: 1.5; }
.plan .pl-door { stroke: var(--c-secondary-ink); stroke-width: 4; stroke-linecap: round; }
.plan .pl-walk { fill: none; stroke: var(--c-secondary); stroke-width: 3; stroke-dasharray: 7 5; stroke-linecap: round; stroke-linejoin: round; }
.plan .pl-detour { fill: none; stroke: var(--c-muted); stroke-width: 1.5; stroke-dasharray: 2 4; stroke-linecap: round; }
.plan .pl-num { fill: var(--c-primary); }
.plan .pl-num-t { fill: #fff; font-family: var(--font-display); font-weight: 700; font-size: 21px; }
.plan .pl-letter { fill: var(--c-surface); stroke: var(--c-muted); stroke-width: 1.5; stroke-dasharray: 3 2; }
.plan .pl-letter-t { fill: var(--c-text); font-family: var(--font-body); font-weight: 700; font-size: 18px; }
.plan .pl-label { fill: var(--c-primary); font-family: var(--font-body); font-weight: 700; font-size: 18px; }
.plan .pl-gate { stroke: var(--c-primary); stroke-width: 5; stroke-linecap: round; }
.plan .pl-north path { fill: none; stroke: var(--c-muted); stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.plan .pl-north text { fill: var(--c-muted); font-family: var(--font-body); font-weight: 700; font-size: 18px; }
.plan__key { margin: var(--sp-2) 0 0; display: grid; gap: var(--sp-2); font-size: 14px; color: var(--c-muted); }
.plan__key div { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: var(--sp-2); align-items: center; }
.plan__key dd { margin: 0; }
.plan__letter {
  display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%;
  border: 1.5px dashed var(--c-muted); font-weight: 700; color: var(--c-text); font-size: 13px;
}
.plan__key dt { display: grid; place-items: center; }
/* La légende des numéros : le nom de chaque arrêt, et un lien vers son étape.
   Sur téléphone, c'est le sommaire du parcours ; en grand écran, il reste sous
   le plan collé, et on saute d'un bâtiment à l'autre sans remonter. */
.plan__stops ol {
  list-style: none; margin: var(--sp-3) 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 136px), 1fr)); gap: 0 var(--sp-2);
}
@media (min-width: 1024px) { .plan__stops ol { grid-template-columns: minmax(0, 1fr); } }
.plan__stops a {
  display: flex; align-items: center; gap: var(--sp-2); min-height: 44px; padding-inline: 4px var(--sp-2);
  border-radius: var(--r-btn); font-size: 15px; font-weight: 700; line-height: 1.25;
  color: var(--c-primary); text-decoration: none;
}
.plan__stops a:hover { background: var(--c-primary-soft); }
.plan__n {
  flex: none; display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%;
  background: var(--c-primary); color: var(--c-secondary-light);
  font-family: var(--font-display); font-weight: 900; font-size: 15px;
}
/* Sur téléphone, le plan prend toute la largeur ; de 640 à 1023 px, il garde
   la taille d'un plan qu'on consulte, pas d'une affiche. */
@media (max-width: 639px) { .plan { padding: var(--sp-1); } .plan__cap { margin-inline: var(--sp-2); } }
@media (min-width: 640px) and (max-width: 1023px) { .route__plan { max-width: 460px; } }

.stops { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-8); }
.stop { scroll-margin-top: 88px; max-width: 680px; }
.stop__head { display: flex; align-items: center; gap: var(--sp-4); margin-bottom: var(--sp-2); }
/* Chaque étape s'ouvre comme une entrée de carnet : après le titre, le
   pointillé or du chemin sur le plan reprend jusqu'au bord. Il relie les
   étapes au plan sans les cloisonner. */
.stop__head::after {
  content: ""; flex: 1 1 24px; min-width: 24px; align-self: center;
  border-top: 2px dashed var(--c-secondary); opacity: .55;
}
.stop__n {
  flex: none; display: grid; place-items: center; width: 44px; height: 44px; border-radius: 50%;
  background: var(--c-primary); color: var(--c-secondary-light);
  font-family: var(--font-display); font-weight: 900; font-size: 1.3rem;
}
.stop h3 { margin: 0; font-size: clamp(1.3rem, 2.2vw, 1.6rem); color: var(--c-primary); }
.stop__where { margin: 0 0 var(--sp-4) calc(44px + var(--sp-4)); max-width: 29rem; font-size: 15px; color: var(--c-muted); }
.stop__fig { margin: 0 0 var(--sp-4); }
.stop__fig--tall, .anno--tall { max-width: 440px; }
.stop__shot img { display: block; width: 100%; height: auto; border-radius: var(--r-card); background: var(--c-border); }
.stop__dl { margin: 0; display: grid; gap: var(--sp-3); max-width: 29rem; }
.stop__dl dt { font-size: 14px; font-weight: 700; color: var(--c-secondary-ink); }
.stop__dl dd { margin: 0; font-size: 16px; line-height: 1.65; }
/* « Pourquoi c'est intéressant » est la raison de s'arrêter : un cran au-dessus. */
.stop__dl div:last-child dd { font-size: 17px; }
.stop__inset { max-width: 31rem; margin: var(--sp-4) 0 0; display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: var(--sp-4); align-items: start; }
.stop__inset-shot img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 4; object-fit: cover; border-radius: 10px; }
.stop__inset figcaption { font-size: 14px; line-height: 1.55; color: var(--c-muted); }
.stop__detour {
  margin: var(--sp-5) 0 0; padding: var(--sp-4); max-width: 31rem; font-size: 15px; line-height: 1.6;
  border: 1.5px dashed var(--c-muted); border-radius: var(--r-btn); background: var(--c-surface);
}
@media (max-width: 479px) { .stop__where { margin-left: 0; } }

/* --- Photo annotée ----------------------------------------------------------
   Les repères sont des liens vers leur ligne de légende : sans script, un
   toucher descend à l'explication, et la ligne visée s'allume (:target). Avec
   place.js, le repère et sa ligne s'allument ensemble sans quitter la photo. */
.anno { margin: 0 0 var(--sp-4); }
.anno__frame { position: relative; }
.anno__shot img { display: block; width: 100%; height: auto; border-radius: var(--r-card); background: var(--c-border); }
.anno__pin {
  position: absolute; transform: translate(-50%, -50%);
  display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%;
  background: var(--c-primary); color: #fff; border: 2px solid var(--c-secondary-light);
  font-family: var(--font-display); font-weight: 700; font-size: 15px; text-decoration: none;
  box-shadow: 0 2px 8px rgba(10,43,44,.45);
}
/* La cible tactile fait 44 px, le disque visible en garde 32. */
.anno__pin::before { content: ""; position: absolute; inset: -7px; border-radius: 50%; }
.anno__pin:hover, .anno__pin.is-on { background: var(--c-secondary-light); color: var(--c-brun, #21160A); border-color: #fff; }
.anno__cap { margin-top: var(--sp-3); max-width: 31rem; }
.anno__h { margin: 0 0 var(--sp-2); font-size: 14px; font-weight: 700; color: var(--c-primary); }
.anno__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-1); }
.anno__list li {
  display: grid; grid-template-columns: 26px minmax(0, 1fr); gap: var(--sp-3);
  padding: var(--sp-2); border-radius: var(--r-btn); font-size: 15px; line-height: 1.55;
  scroll-margin-top: 96px;
}
.anno__list li:target, .anno__list li.is-on { background: var(--c-primary-soft); }
.anno__list li:focus { outline: none; }
.anno__num {
  display: grid; place-items: center; width: 26px; height: 26px; border-radius: 50%;
  background: var(--c-primary); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 13px;
}
.anno__list strong { color: var(--c-primary); }
@media (prefers-reduced-motion: no-preference) {
  .anno__pin { transition: background-color .18s, color .18s, transform .18s; }
  .anno__pin.is-on { transform: translate(-50%, -50%) scale(1.12); }
}

/* --- Trois choses à retrouver -------------------------------------------- */
.find {
  margin-top: var(--sp-8); padding: var(--sp-6); max-width: 680px;
  background: var(--c-surface); border: 1px solid var(--c-border); border-radius: var(--r-card);
}
@media (min-width: 1024px) { .find { margin-left: calc(min(380px, 30%) + var(--sp-8)); } }
.find h3 { margin: 0 0 var(--sp-2); color: var(--c-primary); font-size: 1.3rem; }
.find__intro { margin: 0 0 var(--sp-4); color: var(--c-muted); font-size: 15px; }
.find__list { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--sp-4); }
.find__list li { padding-left: var(--sp-6); position: relative; }
.find__list li::before {
  content: ""; position: absolute; left: 4px; top: .55em; width: 10px; height: 10px;
  background: var(--c-secondary); transform: rotate(45deg);
}
.find__t { margin: 0; font-weight: 700; font-size: 16px; }
.find details { margin-top: var(--sp-1); font-size: 15px; }
.find summary {
  cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: var(--sp-2);
  min-height: 44px; color: var(--c-primary); font-weight: 700;
}
.find summary::-webkit-details-marker { display: none; }
.find summary span { text-decoration: underline; text-underline-offset: 3px; }
/* Le chevron pivote à l'ouverture : on voit que la ligne se déplie. */
.find summary::before {
  content: ""; width: 7px; height: 7px; flex: none; margin-inline: 2px;
  border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(-45deg);
}
.find details[open] summary::before { transform: rotate(45deg); }
@media (prefers-reduced-motion: no-preference) { .find summary::before { transition: transform .18s; } }
.find details p { margin: 0 0 var(--sp-1); color: var(--c-muted); }
@media (max-width: 479px) {
  .find { padding: var(--sp-5) var(--sp-4); }
  .find__list li { padding-left: var(--sp-5); }
}

/* --- Prose de fin de page ----------------------------------------------- */
.place-prose { padding-top: var(--sp-8); border-top: 1px solid var(--c-border); }
