/* Éditorial de la passe luxe : grille asymétrique de 12 colonnes, échelle, filets, photo bord à bord, badge discret.
   Fichier NOUVEAU du socle (05-SPEC-systeme sections 1 et 2) : il AJOUTE des classes, il ne modifie aucune règle de
   base.css, composants.css ni entete.css. Seules les pages luxe le chargent (après composants.css, avant leur feuille).
   Valeurs : tokens.css seulement. Propriétés logiques seulement (RTL hébreu par la grille et par dir).
   Mise en colonnes d'un écran : dans @media (min-width: 900px) ; sous 900px tout passe à UNE colonne. */

/* ---- Page luxe : 12 colonnes, marges qui grandissent au-delà de 1440 ---- */
.ed {
  --ed-marge-eff: max(var(--marge-ed), calc((100vw - var(--largeur-ed)) / 2 + var(--marge-ed)));
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  column-gap: var(--gouttiere-ed);
  padding-inline: var(--ed-marge-eff);
  /* une photo bord à bord mesure 100vw : la barre de défilement classique ne crée pas de défilement horizontal
     (clip, pas hidden : hidden casserait tout position: sticky en dessous) */
  overflow-x: clip;
}

/* Un chapitre : bloc plein écran qui rouvre sa grille de 12 colonnes identique */
.rang {
  --ed-marge-eff: max(var(--marge-ed), calc((100vw - var(--largeur-ed)) / 2 + var(--marge-ed)));
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: minmax(0, 1fr);
  column-gap: var(--gouttiere-ed);
  margin-inline: calc(-1 * var(--ed-marge-eff));
  padding-inline: var(--ed-marge-eff);
}

@media (min-width: 900px) {
  .ed, .rang { grid-template-columns: repeat(12, minmax(0, 1fr)); }
}

/* Par défaut un enfant occupe toute la largeur ; l'écran le place dans ses colonnes (poids nul : sa règle gagne) */
:where(.ed, .rang) > * { grid-column: 1 / -1; }

/* ---- Photo bord à bord ---- */
.plein { grid-column: 1 / -1; margin-inline: calc(-1 * var(--ed-marge-eff)); }
.plein--debut { margin-inline-start: calc(-1 * var(--ed-marge-eff)); }
.plein--fin { margin-inline-end: calc(-1 * var(--ed-marge-eff)); }

/* Cadre de photo : le ratio réserve la place (aucun saut au chargement), pas de rayon ni d'ombre */
.cadre {
  --ratio: var(--ratio-paysage);
  position: relative;
  overflow: hidden;
  aspect-ratio: var(--ratio);
  border-radius: 0;
  box-shadow: none;
  background: var(--dominante-douce);
}
.cadre--large { --ratio: var(--ratio-large); }
.cadre--paysage { --ratio: var(--ratio-paysage); }
.cadre--chapitre { --ratio: var(--ratio-chapitre); }
.cadre--portrait { --ratio: var(--ratio-portrait); }
.cadre--salle { --ratio: var(--ratio-salle); }

/* La réserve de 10 % en haut et en bas borne la parallaxe : jamais de vide découvert */
.cadre > picture {
  position: absolute;
  inset-block: calc(-1 * var(--reserve-parallaxe));
  inset-inline: 0;
  display: block;
}
.cadre > picture > img,
.cadre > img {
  inline-size: 100%;
  block-size: 100%;
  max-inline-size: none;
  object-fit: cover;
}
.cadre > img { position: absolute; inset: 0; }
/* Photo sans parallaxe (la synagogue, ratio natif) : aucune réserve, aucun recadrage */
.cadre--salle > picture { inset-block: 0; }

/* ---- Échelle typographique : un rôle par taille ---- */
.affiche, .titre-ed, .nom-ed, .sous-titre-ed, .chiffre-ed {
  margin: 0;
  font-family: var(--police-titre);
  font-weight: 500;
  text-wrap: balance;
}
.affiche { font-size: var(--t-affiche); line-height: var(--lh-affiche); letter-spacing: var(--ls-affiche); }
.titre-ed { font-size: var(--t-titre); line-height: var(--lh-titre); letter-spacing: var(--ls-titre); max-inline-size: var(--mesure-titre); }
.nom-ed { font-size: var(--t-nom); line-height: var(--lh-titre); letter-spacing: var(--ls-titre); }
.sous-titre-ed { font-size: var(--t-sous-titre); line-height: var(--lh-sous-titre); }
.chiffre-ed { font-size: var(--t-chiffre); line-height: var(--lh-affiche); }
.intro-ed { font-size: var(--t-intro); line-height: var(--lh-intro); max-inline-size: var(--mesure-texte); }
.texte-ed { max-inline-size: var(--mesure-texte); }
/* Fraunces (sous-ensemble latin) n'a ni tnum ni lnum : ses chiffres sont lining proportionnels. Heures, prix et totaux qui
   doivent s'aligner prennent les chiffres tabulaires de Figtree (repli prévu par la spec). */
.tabulaire { font-family: var(--police-texte); font-variant-numeric: tabular-nums lining-nums; }

/* Surtitre : capitales de petit corps espacées, précédées d'un trait de 32 px (le repère visuel reste en hébreu) */
.surtitre {
  display: flex;
  align-items: center;
  gap: var(--e3);
  margin: 0;
  color: var(--dominante);
  font-family: var(--police-texte);
  font-size: var(--t-surtitre);
  font-weight: 600;
  line-height: var(--lh-corps);
  letter-spacing: var(--ls-surtitre);
  text-transform: uppercase;
}
.surtitre::before { content: ""; flex: none; inline-size: var(--e5); border-block-start: var(--filet-ed); }
.surtitre--fonce { color: var(--surface); }
.surtitre--fonce::before { border-block-start: var(--filet-sur-fonce); }
html[lang="he"] .surtitre { text-transform: none; }

/* ---- Filets et aplats : les séparations par l'espace remplacent les cartes ---- */
.filet {
  block-size: 0;
  border-block-start: var(--filet-ed);
  transform-origin: 0 50%;
}
html[dir="rtl"] .filet { transform-origin: 100% 50%; }
.filet--fonce { border-block-start: var(--filet-sur-fonce); }
.panneau { padding: var(--e6); background: var(--surface); border: 0; border-radius: 0; box-shadow: none; }

/* ---- Lien éditorial : remplace le bouton secondaire dans le contenu ---- */
.lien-ed {
  display: inline-flex;
  align-items: center;
  gap: var(--e2);
  min-block-size: var(--cible);
  padding-block: var(--e2);
  color: var(--dominante);
  font-size: var(--t-corps);
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: var(--trait);
  text-underline-offset: var(--e1);
}
.lien-ed::after {
  content: "";
  flex: none;
  inline-size: var(--e2);
  block-size: var(--e2);
  border-block-start: var(--trait-champ) solid currentColor;
  border-inline-end: var(--trait-champ) solid currentColor;
  transform: rotate(45deg);
}
html[dir="rtl"] .lien-ed::after { transform: rotate(-45deg); }
.lien-ed--fonce { color: var(--surface); }

/* ---- Picto nu : le masque d'oiseau seul, sans disque ni filet ---- */
.picto.picto--nu {
  inline-size: var(--taille-picto);
  block-size: var(--taille-picto);
  border: 0;
  border-radius: 0;
  background: none;
}

/* ---- Badge discret et suffixe « Exemple » : texte seul, soulignement pointillé, jamais caché ---- */
.badge.badge--discret,
.ed .exemple,
.exemple--ed {
  min-block-size: 0;
  padding: 0;
  background: none;
  border: 0;
  border-radius: 0;
  color: var(--attention);
  font-size: var(--t-micro);
  font-weight: 600;
  letter-spacing: var(--ls-surtitre);
  text-transform: uppercase;
  text-decoration: underline dotted;
  text-decoration-thickness: var(--trait);
  text-underline-offset: var(--e1);
}
.badge--discret .badge__icone { display: none; }
.ed .exemple, .exemple--ed { margin-inline-start: var(--e2); vertical-align: baseline; }
html[lang="he"] .badge.badge--discret, html[lang="he"] .ed .exemple, html[lang="he"] .exemple--ed { text-transform: none; }
/* Sur outremer, l'attention fait 1,5:1 : texte --surface, soulignement atténué */
.badge.badge--fond-sombre, .ed .exemple--fond-sombre {
  color: var(--surface);
  text-decoration-color: color-mix(in srgb, var(--surface) 35%, transparent);
}

/* ---- Pied d'une page luxe : sur la marge éditoriale des sections (crochet `body.page-luxe`, jamais une règle globale).
   Le hero et l'en-tête gardent leur conteneur de 1200 px ; réservation, séjour et cockpit n'ont pas le crochet. ---- */
.page-luxe .pied .conteneur {
  inline-size: auto;
  margin-inline: max(var(--marge-ed), calc((100vw - var(--largeur-ed)) / 2 + var(--marge-ed)));
}
