/* Press kit — built from the site's existing theme variables and navigation
   patterns.  No page-specific palette is introduced: the local tokens below
   only restate the three site modes so the day palette cannot leak into
   morning or night when a generic page token is unavailable. */

/* -------------------------------------------------------------------------
   1. Local surface contract
   ---------------------------------------------------------------------- */
body.index2-page.page-press {
  --press-base: #f4f7fd;
  --press-wash: #e9effc;
  --press-card: #fff;
  --press-line: rgb(20 42 85 / .13);
  --press-hero-kicker: #b9d0ff;
  --press-contact: #0b1424;
  --wash: var(--press-wash);
}
body.index2-page.page-press.theme-morning {
  --press-base: #fff6f2;
  --press-wash: #ffe7dd;
  --press-card: #fffdfb;
  --press-line: rgb(94 45 59 / .16);
  --press-hero-kicker: #ffd1c4;
  --press-contact: #482536;
}
body.index2-page.page-press.theme-night {
  --press-base: #060c17;
  --press-wash: #0c1626;
  --press-card: #101c2e;
  --press-line: rgb(223 233 255 / .17);
  --press-hero-kicker: #f7d87a;
  --press-contact: #02060d;
}

/* -------------------------------------------------------------------------
   2. Section rhythm
   Each section holds roughly one screen, as on the rest of the site, and its
   content is centred inside it so a short section reads as composed rather
   than as a block of text followed by a void.
   ---------------------------------------------------------------------- */
.page-press .press-main {
  overflow: clip;
  background: var(--press-base);
  color: var(--ink);
}
.page-press .press-section,
.page-press .press-journey {
  position: relative;
}
.page-press .press-section {
  display: grid;
  align-content: center;
  min-height: min(50rem, 92svh);
  padding: clamp(5.5rem, 9vw, 8rem) 0 clamp(7rem, 10vw, 9rem);
  background: var(--press-base);
}
/* Alternance stricte base/wash pour que deux sections voisines ne partagent
   jamais le même fond. Ordre réel : identity(wash), about(base), audience(wash),
   readers(base), subjects(wash), offerings(base), stories(wash), gallery(base),
   journey(wash, via .stage-journey), contact(fond dédié sombre). */
.page-press .press-identity,
.page-press .press-audience,
.page-press .press-subjects,
.page-press .press-stories { background: var(--press-wash); }

.page-press .press-section h2,
.page-press .press-journey-heading h2 {
  max-width: none;
  margin: 0;
  color: var(--ink);
  font-size: clamp(2.15rem, 3.7vw, 4.05rem);
  letter-spacing: -.045em;
  line-height: 1.01;
  text-wrap: balance;
}
.page-press .press-section h3 {
  margin: 0;
  color: var(--ink);
  font-size: clamp(1.2rem, 1.85vw, 1.6rem);
  letter-spacing: -.025em;
  line-height: 1.14;
}
.page-press .section-kicker {
  margin: 0 0 1.05rem;
  color: var(--accent);
  font-size: .74rem;
  font-weight: 800;
  letter-spacing: .13em;
  line-height: 1.25;
  text-transform: uppercase;
}
/* Titres de section : une seule colonne alignée à gauche qui prend toute la
   largeur de la page (le titre et le paragraphe d'intro ne sont plus confinés
   dans une colonne étroite). Uniformisé sur presse et MediaKit. */
.page-press .press-section-heading { max-width: none; margin-bottom: clamp(2.25rem, 4vw, 3.5rem); }
.page-press .press-section-heading--row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: clamp(1.5rem, 4vw, 4rem);
  max-width: none;
}
.page-press .press-section-heading--row > div { max-width: 42rem; }
.page-press .press-section-heading p:not(.section-kicker) {
  max-width: none;
  margin: 1rem 0 0;
  color: var(--ink-soft);
  font-size: clamp(.98rem, 1.2vw, 1.1rem);
  line-height: 1.6;
}
.page-press .press-section-heading--row > p:not(.section-kicker) { flex: 0 1 30rem; margin: 0; }
.page-press .press-text-link {
  flex: none;
  color: var(--accent);
  font-weight: 800;
  text-decoration: none;
  white-space: nowrap;
}
.page-press .press-text-link:hover { text-decoration: underline; text-underline-offset: .25em; }
.page-press .press-next-btn {
  position: absolute;
  z-index: 3;
  bottom: clamp(1.25rem, 3vw, 2.25rem);
  left: 50%;
  transform: translateX(-50%);
}
.page-press .press-next-btn:hover,
.page-press .press-next-btn:focus-visible { transform: translateX(-50%) translateY(1px); }

/* Shared card treatment. */
.page-press .press-fact,
.page-press .press-status-grid p,
.page-press .press-offering-grid article,
.page-press .press-subjects aside,
.page-press .press-story-card,
.page-press .press-gallery-item {
  border: 1px solid var(--press-line);
  background: var(--press-card);
}

/* -------------------------------------------------------------------------
   3. Hero
   ---------------------------------------------------------------------- */
.page-press .press-hero {
  position: relative;
  display: grid;
  min-height: 100svh;
  overflow: hidden;
  isolation: isolate;
  background: #091324;
}
.page-press .press-hero-media,
.page-press .press-hero-shade { position: absolute; inset: 0; margin: 0; }
.page-press .press-hero-media { z-index: -2; }
.page-press .press-hero-media picture,
.page-press .press-hero-media img { display: block; width: 100%; height: 100%; }
.page-press .press-hero-media img { object-fit: cover; object-position: center 45%; }
.page-press.page-media-kit .press-hero-media img { object-position: center 58%; }
.page-press:not(.page-media-kit) .press-hero-media img { object-position: center 60%; }
.page-press .press-hero-shade {
  z-index: -1;
  background:
    linear-gradient(90deg, rgb(4 12 29 / .88), rgb(4 12 29 / .56) 48%, rgb(4 12 29 / .14)),
    linear-gradient(0deg, rgb(4 12 29 / .58), transparent 56%);
}
.page-press .press-hero-back {
  position: absolute;
  z-index: 2;
  top: calc(var(--header-height) + clamp(.65rem, 1.3vw, 1rem));
  right: 0;
  left: 0;
  pointer-events: none;
}
.page-press .press-back-link {
  display: inline-flex;
  align-items: center;
  gap: .62rem;
  min-height: 2.75rem;
  padding: .38rem .9rem .38rem .42rem;
  border: 1px solid rgb(255 255 255 / .34);
  border-radius: 999px;
  color: rgb(255 255 255 / .92);
  background: rgb(6 15 31 / .34);
  box-shadow: 0 8px 24px rgb(2 8 20 / .12);
  backdrop-filter: blur(12px) saturate(125%);
  -webkit-backdrop-filter: blur(12px) saturate(125%);
  font-size: .74rem;
  font-weight: 750;
  letter-spacing: .055em;
  line-height: 1.2;
  text-decoration: none;
  text-transform: uppercase;
  pointer-events: auto;
  transition: color .18s ease, background-color .18s ease, border-color .18s ease, box-shadow .18s ease, transform .18s ease;
}
.page-press .press-back-link .template-arrow-circle {
  flex: 0 0 24px;
  border-color: rgb(255 255 255 / .38);
  color: #fff;
  background: rgb(255 255 255 / .12);
}
.page-press .press-back-link:hover,
.page-press .press-back-link:focus-visible {
  border-color: rgb(255 255 255 / .58);
  color: #fff;
  background: rgb(6 15 31 / .52);
  box-shadow: 0 12px 30px rgb(2 8 20 / .2);
  transform: translateY(-1px);
}
.page-press .press-back-link:hover .template-arrow-circle,
.page-press .press-back-link:focus-visible .template-arrow-circle {
  border-color: rgb(255 255 255 / .58);
  background: rgb(255 255 255 / .18);
}
.page-press .press-hero-content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  min-height: inherit;
  padding-top: clamp(8rem, 15vw, 12rem);
  padding-bottom: clamp(8rem, 14vw, 11rem);
}
.page-press .press-hero-kicker { margin: 0; color: var(--press-hero-kicker); font-size: .78rem; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.page-press .press-hero h1 {
  /* Reste le H1 sémantique de la page, mais à la même taille visuelle que les
     grands titres de sections (.press-section h2), pas plus gros. */
  max-width: 20ch;
  margin: 1rem 0 0;
  color: #fff;
  font-size: clamp(2.15rem, 3.7vw, 4.05rem);
  letter-spacing: -.045em;
  line-height: 1.03;
  text-wrap: balance;
}
.page-press .press-hero-lead {
  max-width: 42rem;
  margin: 1.4rem 0 0;
  color: rgb(255 255 255 / .9);
  font-size: clamp(1.02rem, 1.55vw, 1.24rem);
  line-height: 1.65;
}
.page-press .press-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }
.page-press .press-actions .btn { min-height: 2.9rem; border: 1px solid rgb(255 255 255 / .56); box-shadow: 0 12px 30px rgb(0 0 0 / .22); }
.page-press .press-actions .btn.ghost { border: 1px solid rgb(255 255 255 / .5); color: #fff; background: rgb(6 16 36 / .32); }

/* Three credentials, visible before the reader scrolls once. */
.page-press .press-hero-facts {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem clamp(1.5rem, 3vw, 2.75rem);
  margin: clamp(2rem, 3.5vw, 2.75rem) 0 0;
  padding: clamp(1rem, 1.6vw, 1.25rem) 0 0;
  border-top: 1px solid rgb(255 255 255 / .24);
  list-style: none;
}
.page-press .press-hero-facts li { display: grid; gap: .2rem; }
.page-press .press-hero-facts strong {
  color: #fff;
  font-size: clamp(1.25rem, 1.9vw, 1.6rem);
  font-weight: 850;
  letter-spacing: -.035em;
  line-height: 1;
}
.page-press .press-hero-facts span {
  color: rgb(255 255 255 / .68);
  font-size: .7rem;
  font-weight: 800;
  letter-spacing: .09em;
  text-transform: uppercase;
}

/* -------------------------------------------------------------------------
   4. Fact sheet
   ---------------------------------------------------------------------- */
.page-press .press-fact-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(.8rem, 1.5vw, 1.25rem);
  margin: 0;
}
.page-press .press-fact {
  display: grid;
  align-content: start;
  gap: .8rem;
  padding: clamp(1.25rem, 2vw, 1.75rem);
  border-radius: 1.25rem;
}
.page-press .press-fact dt {
  color: var(--accent);
  font-size: .7rem;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.page-press .press-fact dd {
  display: grid;
  gap: .5rem;
  margin: 0;
  color: var(--ink);
  font-size: clamp(1.05rem, 1.4vw, 1.35rem);
  font-weight: 800;
  letter-spacing: -.03em;
  line-height: 1.2;
}
.page-press .press-fact dd small {
  color: var(--ink-soft);
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1.35;
}

/* -------------------------------------------------------------------------
   4b. Who we are — a quick, warm introduction of the couple
   ---------------------------------------------------------------------- */
.page-press .press-about-grid {
  display: grid;
  /* La photo occupe un peu moins de la moitié : le texte respire à droite. */
  grid-template-columns: minmax(0, .94fr) minmax(0, 1.06fr);
  align-items: center;
  gap: clamp(2rem, 5vw, 4.5rem);
}
.page-press .press-about-media {
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--press-line);
  border-radius: 1.6rem;
  aspect-ratio: 3 / 2;
  max-height: none;
}
.page-press .press-about-media picture,
.page-press .press-about-media img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center 52%; }
.page-press .press-about-lead {
  margin: 1.15rem 0 0;
  color: var(--ink-soft);
  font-size: clamp(1.02rem, 1.4vw, 1.22rem);
  line-height: 1.65;
}
.page-press .press-about-portraits {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(1rem, 2vw, 1.6rem);
  margin-top: clamp(1.6rem, 2.6vw, 2.2rem);
}
.page-press .press-about-portrait {
  padding: clamp(1.1rem, 1.8vw, 1.5rem);
  border: 1px solid var(--press-line);
  border-radius: 1.1rem;
  background: var(--press-card);
}
.page-press .press-about-portrait h3 {
  margin: 0 0 .5rem;
  color: var(--accent);
  font-size: 1.05rem;
  letter-spacing: -.01em;
}
.page-press .press-about-portrait p {
  margin: 0;
  color: var(--ink-soft);
  font-size: .95rem;
  line-height: 1.55;
}

/* -------------------------------------------------------------------------
   5. Itinerary (reused from the home page, centred on this page)
   ---------------------------------------------------------------------- */
.page-press .press-journey {
  display: grid;
  /* Colonne pleine largeur (et non « auto ») : sans cela, l'en-tête et la carte
     du globe calculent leur largeur contre une colonne dimensionnée au contenu,
     ce qui décalait leurs marges latérales par rapport aux autres sections. */
  grid-template-columns: minmax(0, 1fr);
  align-content: center;
  min-height: min(58rem, 100svh);
  padding: clamp(5rem, 8vw, 7.5rem) 0 clamp(7rem, 10vw, 9rem);
}
.page-press .press-journey-heading { margin-bottom: clamp(2rem, 3.5vw, 3.25rem); }
.page-press .press-journey-heading p:not(.section-kicker) {
  max-width: 46rem;
  margin: 1.15rem 0 0;
  color: var(--ink-soft);
  font-size: clamp(1rem, 1.35vw, 1.14rem);
  line-height: 1.65;
}
/* Même dimensionnement que l'itinéraire de l'accueil : le globe occupe la
   large colonne de droite (jusqu'à 940 px), le panneau d'étape la colonne de
   gauche. Plus de globe « cintré ». */
.page-press .press-journey .journey-layout {
  /* Colonne gauche à largeur FIXE (26rem) : identique quel que soit le lieu ou la
     longueur du titre d'article, et assez large pour afficher « Aujourd'hui » en
     entier. Le globe garde sa largeur viewport (plus bas). Même gouttière que
     les autres sections : on utilise var(--shell), comme .shell, pour que « Le
     voyage en cours » ait exactement les mêmes marges latérales. */
  grid-template-columns: 26rem minmax(0, 1fr);
  align-items: center;
  gap: clamp(1.5rem, 3vw, 3rem);
  width: min(var(--shell), calc(100% - (var(--shell-pad) * 2)));
  margin: 0 auto;
}
@media (max-width: 1180px) {
  /* Sous le desktop, le globe passe SOUS le panneau (empilé) et prend toute la
     largeur : on ne serre jamais la carte et les libellés restent entiers. */
  .page-press .press-journey .journey-layout { grid-template-columns: 1fr; }
  .page-press .press-journey .journey-globe-wrap { justify-content: center; }
  .page-press .press-journey .map-card { width: min(940px, 100%); max-width: 43rem; margin-inline: auto; }
}
/* Hauteur réservée pour la carte d'étape : qu'un lieu ait un article (vignette +
   titre) ou non, la carte garde la même hauteur, donc le globe et les compteurs
   ne se décalent plus quand on navigue d'un lieu à l'autre. La vignette d'article
   ne peut pas non plus élargir la colonne. */
.page-press .press-journey-info .stop-card { min-height: 15.5rem; }
.page-press .press-journey-info .stop-card .stop-article-link { min-width: 0; max-width: 100%; }
.page-press .press-journey-info .stop-card .stop-article-link picture,
.page-press .press-journey-info .stop-card .stop-article-link img { max-width: 100%; }
@media (max-width: 900px) {
  .page-press .press-journey-info .stop-card { min-height: 0; }
}
.page-press .press-journey .journey-globe-wrap { justify-content: flex-end; min-width: 0; }
/* Largeur du globe basée sur le viewport (et non sur la colonne de grille) : le
   globe garde EXACTEMENT la même taille qu'un lieu ait un article ou non, donc
   il ne « grandit/rétrécit » plus quand on navigue. */
.page-press .press-journey .map-card { width: min(940px, 58vw); max-width: 940px; margin-left: auto; }
@media (max-width: 900px) {
  .page-press .press-journey .map-card { width: 100%; margin-left: 0; }
}
/* La colonne gauche ne doit pas s'élargir quand la carte d'étape contient un
   article au titre long : min-width 0 + passage à la ligne forcent le texte à
   se replier au lieu d'agrandir la colonne et de rétrécir le globe. */
.page-press .press-journey-info { align-items: stretch; min-width: 0; }
.page-press .press-journey-info .stop-card,
.page-press .press-journey-info .trip-panel { min-width: 0; max-width: 100%; }
.page-press .press-journey-info .stop-card,
.page-press .press-journey-info .stop-card * { min-width: 0; overflow-wrap: anywhere; }
.page-press .press-status-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem;
}
.page-press .press-status-grid p {
  display: grid;
  align-content: start;
  gap: .45rem;
  min-height: 7.3rem;
  margin: 0;
  padding: 1.1rem;
  border-radius: 1rem;
}
.page-press .press-status-grid strong {
  color: var(--accent);
  font-size: clamp(2.4rem, 3.8vw, 3.9rem);
  font-weight: 900;
  letter-spacing: -.075em;
  line-height: .88;
}
.page-press .press-status-grid span {
  color: var(--ink-soft);
  font-size: .69rem;
  font-weight: 800;
  letter-spacing: .07em;
  line-height: 1.25;
  text-transform: uppercase;
}
.page-press .press-journey .trip-panel { margin-top: .85rem; }

/* Audience : EXACTEMENT les quatre blocs réseaux de la page Collaborer (pas de
   total). Le visuel des cartes vient de .page-template ; on reproduit ici, pour
   .page-press, la MÊME grille auto-fit que Collaborer (les 4 réseaux sur une
   ligne en desktop). Sélecteur aligné sur la spécificité du thème
   (body.index2-page.page-template) pour l'emporter sur la grille 2 colonnes par
   défaut, puis repli automatique en dessous. */
body.index2-page.page-press.page-template .social-stats-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr));
  gap: 14px;
  margin-top: clamp(1.4rem, 3vw, 2.2rem);
}
.page-press .social-stat-card { min-height: 200px; }
body.index2-page.page-press.theme-night .social-stat-card { background: #090e18db; border-color: #f6d77a4d; }
body.index2-page.page-press.theme-night .social-stat-title { color: #f6d77a; }
body.index2-page.page-press.theme-night .social-stat-value { color: #fff; }
body.index2-page.page-press.theme-morning .social-stat-card { background: #ffffffe6; border-color: #e08e7f4d; }
body.index2-page.page-press.theme-morning .social-stat-title { color: #8f6175; }
body.index2-page.page-press.theme-morning .social-stat-value { color: #4a2840; }
@media (max-width: 560px) {
  .page-press .social-stat-card { min-height: 0; }
}

/* -------------------------------------------------------------------------
   6. Why our story matters
   ---------------------------------------------------------------------- */
.page-press .press-reader-list { border-top: 1px solid var(--press-line); }
.page-press .press-reader-list article {
  display: grid;
  grid-template-columns: minmax(13rem, .95fr) minmax(0, 1.05fr);
  gap: clamp(2rem, 6vw, 7rem);
  padding: clamp(1.6rem, 2.6vw, 2.4rem) 0;
  border-bottom: 1px solid var(--press-line);
}
.page-press .press-reader-list article > div { display: grid; align-content: start; gap: .75rem; }
.page-press .press-reader-index {
  color: var(--accent);
  font-size: .72rem;
  font-weight: 900;
  letter-spacing: .12em;
}
.page-press .press-reader-list p {
  max-width: 43rem;
  margin: 0;
  color: var(--ink-soft);
  font-size: clamp(1rem, 1.3vw, 1.14rem);
  line-height: 1.65;
}

/* -------------------------------------------------------------------------
   8. What we produce, and on what terms
   ---------------------------------------------------------------------- */
.page-press .press-offering-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(1rem, 1.9vw, 1.5rem);
}
.page-press .press-offering-grid article {
  display: flex;
  flex-direction: column;
  min-height: 19rem;
  padding: clamp(1.4rem, 2.3vw, 2rem);
  border-radius: 1.35rem;
}
.page-press .press-offering-grid article > span { color: var(--accent); font-size: 1.75rem; line-height: 1; }
.page-press .press-offering-grid h3 { margin-top: 1.35rem; }
.page-press .press-offering-grid p { margin: .9rem 0 0; color: var(--ink-soft); font-size: 1rem; line-height: 1.62; }
.page-press .press-offering-grid small {
  margin-top: auto;
  padding-top: 1.5rem;
  color: var(--ink-soft);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: .77rem;
  letter-spacing: .04em;
}
.page-press .press-terms {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(1rem, 2vw, 2rem);
  margin: clamp(2rem, 3.2vw, 3rem) 0 0;
  padding-top: clamp(1.5rem, 2.4vw, 2rem);
  border-top: 1px solid var(--press-line);
}
.page-press .press-terms dt {
  color: var(--accent);
  font-size: .7rem;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.page-press .press-terms dd {
  margin: .55rem 0 0;
  color: var(--ink-soft);
  font-size: .97rem;
  line-height: 1.5;
}

/* -------------------------------------------------------------------------
   9. Topics and the calendar they can be planned against
   ---------------------------------------------------------------------- */
.page-press .press-subjects-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(19rem, .9fr);
  align-items: center;
  gap: clamp(2rem, 6vw, 7rem);
}
.page-press .press-subjects-grid > div > ul {
  margin: clamp(1.6rem, 3vw, 2.4rem) 0 0;
  padding: 0;
  border-top: 1px solid var(--press-line);
  list-style: none;
}
.page-press .press-subjects-grid > div > ul li {
  position: relative;
  padding: 1.05rem 0 1.05rem 1.5rem;
  border-bottom: 1px solid var(--press-line);
  color: var(--ink-soft);
  font-size: clamp(.98rem, 1.25vw, 1.12rem);
  line-height: 1.45;
}
.page-press .press-subjects-grid > div > ul li::before {
  position: absolute;
  top: 1.42rem;
  left: .35rem;
  width: .5rem;
  height: .5rem;
  border-radius: 50%;
  background: var(--accent);
  content: '';
}
.page-press .press-subjects aside {
  padding: clamp(1.5rem, 2.6vw, 2.25rem);
  border-radius: 1.45rem;
}
.page-press .press-subjects aside ul { margin: 0; padding: 0; list-style: none; }
.page-press .press-subjects aside li {
  display: grid;
  grid-template-columns: 1.5rem minmax(0, 1fr) auto;
  align-items: baseline;
  gap: .3rem .65rem;
  padding: .72rem 0;
  border-bottom: 1px solid var(--press-line);
}
.page-press .press-subjects aside li:last-of-type { border-bottom: 0; }
.page-press .press-subjects aside strong { color: var(--ink); font-weight: 800; letter-spacing: -.02em; }
.page-press .press-subjects aside small { color: var(--ink-soft); font-size: .78rem; font-weight: 700; white-space: nowrap; }
.page-press .press-subjects aside > p:last-child {
  margin: 1.35rem 0 0;
  color: var(--ink-soft);
  font-size: .98rem;
  line-height: 1.55;
}

/* -------------------------------------------------------------------------
   10. Stories
   ---------------------------------------------------------------------- */
.page-press .press-story-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(.85rem, 1.55vw, 1.35rem);
}
.page-press .press-story-more {
  display: flex;
  justify-content: center;
  margin-top: clamp(2rem, 3.5vw, 3rem);
}
.page-press .press-story-more .btn { min-height: 3rem; padding-inline: 1.75rem; }
.page-press .press-story-card {
  display: flex;
  flex-direction: column;
  min-height: 29rem;
  overflow: hidden;
  border-radius: 1.35rem;
  color: inherit;
  text-decoration: none;
  transition: transform .2s ease, border-color .2s ease;
}
.page-press .press-story-card:hover,
.page-press .press-story-card:focus-visible { border-color: var(--accent); transform: translateY(-.2rem); }
.page-press .press-story-card figure { aspect-ratio: 4 / 3; margin: 0; overflow: hidden; }
.page-press .press-story-card figure > picture,
.page-press .press-story-card figure > picture > img,
.page-press .press-story-card img { display: block; width: 100%; height: 100%; object-fit: cover; }
.page-press .press-story-card > div {
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: flex-start;
  gap: .8rem;
  padding: clamp(1.1rem, 1.65vw, 1.45rem);
}
.page-press .press-story-card p {
  display: -webkit-box;
  margin: 0;
  overflow: hidden;
  color: var(--ink-soft);
  line-height: 1.5;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
}
/* Même pastille « lire » que les cartes articles du site. */
.page-press .press-story-card .latest-article-readmore { margin-top: auto; }

/* -------------------------------------------------------------------------
   11. Media library — twelve frames, one per story
   ---------------------------------------------------------------------- */
.page-press .press-gallery-note {
  max-width: 46rem;
  margin: .85rem 0 0;
  color: var(--ink-soft);
  font-size: .9rem;
  line-height: 1.55;
}
.page-press .press-gallery-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  grid-auto-rows: clamp(8rem, 11.5vw, 13rem);
  gap: clamp(.6rem, 1vw, .9rem);
}
.page-press .press-gallery-item {
  min-width: 0;
  padding: 0;
  overflow: hidden;
  border-radius: 1.15rem;
  cursor: zoom-in;
}
.page-press .press-gallery-item:nth-child(1) { grid-column: span 6; grid-row: span 2; }
.page-press .press-gallery-item:nth-child(2),
.page-press .press-gallery-item:nth-child(3),
.page-press .press-gallery-item:nth-child(4),
.page-press .press-gallery-item:nth-child(5) { grid-column: span 3; }
.page-press .press-gallery-item:nth-child(6),
.page-press .press-gallery-item:nth-child(7),
.page-press .press-gallery-item:nth-child(8) { grid-column: span 4; }
.page-press .press-gallery-item:nth-child(n + 9) { grid-column: span 3; }
.page-press .press-gallery-item img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .3s ease;
}
.page-press .press-gallery-item:hover img,
.page-press .press-gallery-item:focus-visible img { transform: scale(1.04); }
.page-press .press-gallery-item:focus-visible { outline: .2rem solid var(--accent); outline-offset: .18rem; }

/* Squelette de chargement de la galerie : un dégradé qui balaie doucement, sans
   aucune image, le temps que press-page.js charge les vraies vignettes. */
.page-press .press-gallery-item--skeleton {
  cursor: default;
  background-color: color-mix(in srgb, var(--text) 8%, transparent);
  background-image: linear-gradient(
    100deg,
    transparent 30%,
    color-mix(in srgb, var(--text) 6%, transparent) 50%,
    transparent 70%
  );
  background-size: 220% 100%;
  background-repeat: no-repeat;
  animation: press-gallery-shimmer 1.4s ease-in-out infinite;
}
@keyframes press-gallery-shimmer {
  0% { background-position: 180% 0; }
  100% { background-position: -80% 0; }
}
@media (prefers-reduced-motion: reduce) {
  .page-press .press-gallery-item--skeleton { animation: none; }
}

/* -------------------------------------------------------------------------
   12. Contact
   ---------------------------------------------------------------------- */
.page-press .press-contact {
  min-height: min(34rem, 62svh);
  background: var(--press-contact);
  color: #fff;
  scroll-margin-top: 3rem;
}
.page-press .press-contact .section-kicker { color: var(--press-hero-kicker); }
.page-press .press-contact h2 { color: #fff; }
/* Mêmes proportions et alignement que la section Sujets/Prochaines destinations,
   pour que le formulaire se cale au même niveau que ce bloc. */
.page-press .press-contact-inner {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(19rem, .9fr);
  align-items: start;
  gap: clamp(2rem, 6vw, 7rem);
}
.page-press .press-contact-intro > p:not(.section-kicker):not(.press-contact-note) {
  max-width: 40rem;
  margin: 1.15rem 0 0;
  color: rgb(255 255 255 / .74);
  font-size: clamp(1rem, 1.35vw, 1.16rem);
  line-height: 1.6;
}
/* Liste de possibilités (informative), pas des boutons : simple repère
   graphique + texte, grille 2x2 sur desktop, une colonne sur petit écran. Pas de
   fond, bordure, ombre, radius de bouton, effet hover ni curseur de lien. */
.page-press .press-contact-points {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: .7rem 1.6rem;
  margin: 1.6rem 0 0;
  padding: 0;
  list-style: none;
}
.page-press .press-contact-points li {
  display: flex;
  align-items: baseline;
  gap: .6rem;
  color: rgb(255 255 255 / .82);
  font-size: .95rem;
  font-weight: 500;
  line-height: 1.4;
}
.page-press .press-contact-points li::before {
  flex: 0 0 auto;
  width: .4rem;
  height: .4rem;
  margin-top: .1rem;
  border-radius: 50%;
  background: var(--accent);
  content: '';
}
@media (max-width: 760px) {
  .page-press .press-contact-points { grid-template-columns: 1fr; }
}
.page-press .press-contact-note {
  margin: 1.5rem 0 0;
  color: rgb(255 255 255 / .55);
  font-size: .85rem;
  line-height: 1.55;
}
.page-press .press-contact-download-row { margin-top: 1.5rem; }
.page-press .press-contact .document-pdf-download-button {
  border: 1px solid rgb(255 255 255 / .48);
  color: #fff;
  background: rgb(255 255 255 / .08);
}
.page-press .press-contact .document-pdf-download-button:hover {
  border-color: rgb(255 255 255 / .72);
  background: rgb(255 255 255 / .14);
}

/* Embedded form: no e-mail address exposed, submits through the site's own
   contact endpoint (wired by contact-page.js). */
.page-press .press-contact-form {
  display: grid;
  gap: 1rem;
  padding: clamp(1.4rem, 2.4vw, 2rem);
  border: 1px solid rgb(255 255 255 / .16);
  border-radius: 1.35rem;
  background: rgb(255 255 255 / .05);
}
.page-press .press-form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
.page-press .press-field { display: grid; gap: .4rem; }
.page-press .press-field label {
  color: rgb(255 255 255 / .82);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .02em;
}
.page-press .press-field input,
.page-press .press-field textarea {
  width: 100%;
  padding: .7rem .85rem;
  border: 1px solid rgb(255 255 255 / .22);
  border-radius: .7rem;
  color: #fff;
  background: rgb(255 255 255 / .06);
  font: inherit;
  transition: border-color .18s, background .18s;
}
.page-press .press-field textarea { resize: vertical; min-height: 6.5rem; }
.page-press .press-field input::placeholder,
.page-press .press-field textarea::placeholder { color: rgb(255 255 255 / .4); }
.page-press .press-field input:focus,
.page-press .press-field textarea:focus {
  outline: none;
  border-color: var(--press-hero-kicker);
  background: rgb(255 255 255 / .1);
}
.page-press .press-consent {
  display: grid;
  grid-template-columns: auto 1fr;
  align-items: start;
  gap: .6rem;
  color: rgb(255 255 255 / .72);
  font-size: .82rem;
  line-height: 1.45;
  cursor: pointer;
}
.page-press .press-consent input { margin-top: .15rem; accent-color: var(--accent); }
.page-press .press-contact-submit { justify-content: center; min-height: 3.1rem; }
.page-press .press-form-msg { margin: 0; font-size: .88rem; line-height: 1.5; }
.page-press .press-form-msg.error { color: #ffb4b4; }
.page-press .press-form-msg.success { color: #bff0c8; }

/* -------------------------------------------------------------------------
   13. Full-screen viewer, shared with articles and discoveries
   ---------------------------------------------------------------------- */
body.index2-page.page-press.article-gallery-lightbox-open { overflow: hidden; }
.page-press .article-gallery-lightbox { position: fixed; z-index: 5200; inset: 0; display: grid; place-items: center; padding: clamp(10px, 2vw, 24px); }
.page-press .article-gallery-lightbox[hidden] { display: none; }
.page-press .article-gallery-lightbox-backdrop { position: absolute; inset: 0; background: #090e18b3; -webkit-backdrop-filter: blur(18px) saturate(132%) brightness(.72); backdrop-filter: blur(18px) saturate(132%) brightness(.72); }
.page-press .article-gallery-lightbox-dialog { position: relative; display: block; isolation: isolate; width: min(1120px, calc(100vw - 24px)); height: min(760px, calc(100dvh - 48px)); max-height: calc(100dvh - 48px); overflow: hidden; border: 1px solid rgb(255 255 255 / .22); border-radius: 18px; background: #090e18f5; box-shadow: 0 30px 70px #090e1861; }
.page-press .article-gallery-lightbox-head { position: absolute; z-index: 6; top: 10px; right: 10px; display: block; width: 42px; height: 42px; }
.page-press .article-gallery-lightbox-title { display: none; }
.page-press .article-gallery-lightbox-close, .page-press .article-gallery-lightbox-photo-btn { display: inline-grid; width: 42px; height: 42px; padding: 0; place-items: center; border: 1px solid #ffffff55; border-radius: 999px; color: #fff; background: #090e18d9; box-shadow: 0 10px 24px #0003; cursor: pointer; font-size: 1.1rem; line-height: 1; }
.page-press .article-gallery-lightbox-image-wrap { position: absolute; inset: 0; overflow: hidden; background: #090e18; touch-action: pan-y; }
/* Comme les articles/découvertes : l'image remplit le cadre (pas de barres noires). */
.page-press .article-gallery-lightbox-image { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center center; }
.page-press .article-gallery-lightbox-photo-btn { position: absolute; z-index: 5; top: 50%; transform: translateY(-50%); }
.page-press .article-gallery-lightbox-photo-btn.prev { left: 12px; }
.page-press .article-gallery-lightbox-photo-btn.next { right: 12px; }
.page-press .article-gallery-lightbox-dots { position: absolute; z-index: 7; right: 0; bottom: 12px; left: 0; display: flex; justify-content: center; gap: 8px; }
.page-press .article-gallery-lightbox-dot { width: 14px; height: 14px; padding: 0; border: 0; background: transparent; cursor: pointer; }
.page-press .article-gallery-lightbox-dot::before { display: block; width: 8px; height: 8px; border: 1px solid #ffffff8c; border-radius: 50%; background: #ffffff8c; box-shadow: 0 1px 4px #00000040; content: ''; }
.page-press .article-gallery-lightbox-dot.is-active::before { border-color: #fff; background: var(--accent); }

/* -------------------------------------------------------------------------
   14. Responsive
   ---------------------------------------------------------------------- */
@media (max-width: 1180px) {
  .page-press .press-story-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-press .press-story-card { min-height: 26rem; }
  .page-press .press-terms { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1100px) {
  .page-press .press-fact-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-press .press-subjects-grid { grid-template-columns: 1fr; gap: 2.5rem; }
  .page-press .press-about-grid { grid-template-columns: 1fr; gap: 2.25rem; }
  .page-press .press-about-media { max-width: 30rem; aspect-ratio: 16 / 11; max-height: none; }
  /* En 16/11 (paysage) le portrait est très rogné : on remonte le cadrage pour
     garder les visages visibles plutôt que de n'afficher que les torses. */
  .page-press .press-about-media img { object-position: center 30%; }
}
@media (max-width: 980px) {
  .page-press .press-section { min-height: 0; }
  .page-press .press-offering-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-press .press-journey { min-height: 0; }
  .page-press .press-journey .journey-layout { grid-template-columns: 1fr; }
  .page-press .press-journey .journey-globe-wrap { justify-content: center; }
  .page-press .press-journey .map-card { max-width: 43rem; margin-inline: auto; }
  .page-press .press-reader-list article { grid-template-columns: 1fr; gap: 1rem; }
  .page-press .press-contact-inner { grid-template-columns: 1fr; align-items: start; }
}
@media (max-width: 760px) {
  .page-press .press-section { padding: 4.5rem 0 6rem; }
  .page-press .press-hero-shade { background: linear-gradient(0deg, rgb(4 12 29 / .92), rgb(4 12 29 / .38) 76%); }
  .page-press.page-media-kit .press-hero-media img { object-position: 86% center; }
  .page-press:not(.page-media-kit) .press-hero-media img { object-position: 78% center; }
  .page-press .press-hero-content { justify-content: flex-end; padding-top: 8rem; padding-bottom: 6.5rem; }
  /* Boutons à la largeur de leur texte (avec le padding du .btn), comme sur
     l'accueil, plutôt qu'étirés sur toute la largeur. */
  .page-press .press-actions .btn { flex: 0 0 auto; }
  .page-press .press-hero-facts { gap: .9rem 1.5rem; }
  .page-press .press-section-heading--row { align-items: flex-start; flex-direction: column; }
  .page-press .press-fact-grid { grid-template-columns: 1fr; }
  .page-press .press-about-portraits { grid-template-columns: 1fr; }
  .page-press .press-form-row { grid-template-columns: 1fr; }
  .page-press .press-journey-heading,
  .page-press .press-status-grid,
  .page-press .press-journey .trip-panel { width: min(var(--shell-max, 1440px), calc(100% - (var(--shell-pad) * 2))); margin-inline: auto; }
  .page-press .press-journey .journey-layout { width: 100%; }
  .page-press .press-offering-grid { grid-template-columns: 1fr; }
  .page-press .press-offering-grid article { min-height: 0; }
  .page-press .press-terms { grid-template-columns: 1fr; gap: 1.15rem; }
  .page-press .press-story-grid { grid-template-columns: 1fr; }
  .page-press .press-story-card { min-height: 0; }
  .page-press .press-story-card figure { aspect-ratio: 16 / 10; }
  .page-press .press-gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 8.5rem; }
  .page-press .press-gallery-item:nth-child(n) { grid-column: span 1; grid-row: span 1; }
  .page-press .press-gallery-item:nth-child(1) { grid-column: span 2; grid-row: span 2; }
  .page-press .article-gallery-lightbox { padding: 8px; }
  .page-press .article-gallery-lightbox-dialog { width: calc(100vw - 16px); height: calc(100dvh - 16px); max-height: calc(100dvh - 16px); border-radius: 14px; }
}
@media (max-width: 460px) {
  .page-press .press-subjects aside li { grid-template-columns: 1.5rem minmax(0, 1fr); }
  .page-press .press-subjects aside small { grid-column: 2; }
}
@media (prefers-reduced-motion: reduce) {
  .page-press .press-story-card,
  .page-press .press-audience-grid a,
  .page-press .press-gallery-item img { transition: none; }
}
