/* =========================================================================
   Pôle Sports France — Audacieuse
   Custom front-end CSS for block patterns.
   Tokens come from theme.json; this file handles the broadcast-style
   compositions that can't be expressed via tokens alone.
   ========================================================================= */

/* -----------------------------------------------------------------------
   Self-hosted fonts: déclarées une seule fois via theme.json
   (typography.fontFamilies[].fontFace), avec les bons fichiers par graisse
   et font-display: optional pour éviter tout reflow au chargement.
   Ne pas redéclarer les @font-face ici (évite le double téléchargement).
   ----------------------------------------------------------------------- */

/* -----------------------------------------------------------------------
   Base
   ----------------------------------------------------------------------- */
:root {
  --psf-radius: 0;
  --psf-edge: 64px;
}
html, body { background: var(--psf-ink); color: var(--psf-cream); }
body { font-family: 'Inter', system-ui, sans-serif; font-size: 15px; line-height: 1.55; }
img { max-width: 100%; height: auto; display: block; }
a { color: inherit; text-decoration: none; }
a:hover { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }

/* -----------------------------------------------------------------------
   Block styles — registered via register_block_style() in functions.php
   ----------------------------------------------------------------------- */
.is-style-mega-shout {
  font-family: 'Archivo', 'Antonio', system-ui, sans-serif !important;
  font-weight: 900;
  font-stretch: 75%;
  font-size: clamp(56px, 14vw, 220px);
  line-height: 0.82;
  letter-spacing: -0.02em;
  text-transform: uppercase;
  margin: 0;
}

.is-style-mega-number {
  font-family: 'Archivo', 'Antonio', system-ui, sans-serif !important;
  font-weight: 900;
  font-stretch: 75%;
  line-height: 0.85;
  letter-spacing: -0.025em;
  font-variant-numeric: tabular-nums;
}

.is-style-eyebrow {
  font-family: 'Antonio', sans-serif !important;
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--psf-copper);
  margin: 0;
}

.is-style-mono-meta {
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(244, 239, 229, 0.65);
  margin: 0;
}

.is-style-pill {
  display: inline-block;
  font-family: 'JetBrains Mono', ui-monospace, monospace !important;
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 5px 10px;
  border: 1px solid currentColor;
  border-radius: 999px;
  margin: 0;
  width: auto;
  align-self: flex-start;
}

/* Columns with filets between (Audacieuse signature) */
.is-style-divider-cols > .wp-block-column {
  border-left: 1px solid rgba(244, 239, 229, 0.12);
}
.is-style-divider-cols > .wp-block-column:first-child {
  border-left: none;
}
.is-style-divider-cols > .wp-block-column:last-child {
  border-right: 1px solid rgba(244, 239, 229, 0.12);
}

/* Broadcast buttons — strong tracking, no radius */
.is-style-broadcast .wp-block-button__link,
.is-style-broadcast.wp-block-button .wp-block-button__link {
  font-family: 'Antonio', sans-serif;
  font-weight: 600;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  border-radius: 0;
}
.is-style-broadcast .wp-block-button {
  margin: 0;
}

/* -----------------------------------------------------------------------
   Sections — shared
   ----------------------------------------------------------------------- */
.psf-section { position: relative; }
.psf-section-head { gap: 24px; align-items: flex-end; }

/* -----------------------------------------------------------------------
   Top bar
   ----------------------------------------------------------------------- */
.psf-topbar {
  height: 56px;
  align-items: center;
}
.psf-topbar .wp-block-navigation { gap: 32px; }

.psf-sub-header { align-items: center; row-gap: 12px; }

/* Utility nav (top bar) */
.psf-utility { align-items: center; }
.psf-utility-nav a { color: rgba(244, 239, 229, 0.7); font-family: 'Inter', system-ui, sans-serif; font-weight: 400; }
.psf-utility-nav a:hover { color: var(--psf-copper); }

/* Main navigation (sub-header) — dropdowns */
.psf-main-nav { row-gap: 8px; }
.psf-main-nav .wp-block-navigation-item__content { color: var(--psf-cream); font-family: 'Inter', system-ui, sans-serif; font-weight: 400; }
.psf-main-nav .wp-block-navigation-item__content:hover,
.psf-main-nav .current-menu-item > .wp-block-navigation-item__content { color: var(--psf-copper); }
.psf-main-nav .wp-block-navigation__submenu-icon { margin-left: 4px; }
.psf-main-nav .wp-block-navigation__submenu-container {
  background: var(--psf-ink-soft) !important;
  border: 1px solid #1f3568 !important;
  border-radius: 0 !important;
  padding: 8px 0;
  min-width: 250px;
  box-shadow: 0 24px 60px -20px rgba(0,0,0,0.55);
}
.psf-main-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  padding: 11px 22px !important;
  letter-spacing: 0.14em;
}
.psf-main-nav .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
  background: var(--psf-bordeaux);
  color: var(--psf-cream) !important;
}
.psf-brand-tagline { align-self: center; }

/* Text wordmark (fallback logo — always visible, no upload needed) */
.psf-wordmark {
  font-family: 'Archivo', sans-serif;
  font-weight: 800;
  font-stretch: 75%;
  font-size: 24px;
  text-transform: uppercase;
  letter-spacing: 0.02em;
  color: var(--psf-bordeaux);
  text-decoration: none;
  line-height: 1;
  white-space: nowrap;
}
.psf-wordmark span { color: var(--psf-cream); margin-left: 6px; letter-spacing: 0.32em; font-weight: 500; font-size: 16px; }
.psf-wordmark:hover { text-decoration: none; }
.psf-wordmark--footer { font-size: 26px; display: inline-block; }

/* -----------------------------------------------------------------------
   HERO
   ----------------------------------------------------------------------- */
.psf-hero {
  min-height: 760px;
  align-items: flex-end;
  border-bottom: 1px solid rgba(244, 239, 229, 0.08);
}
.psf-hero .wp-block-cover__background {
  background: linear-gradient(180deg, rgba(11, 30, 63, 0.5) 0%, rgba(11, 30, 63, 0.2) 40%, rgba(11, 30, 63, 0.95) 100%) !important;
  opacity: 1 !important;
}
/* Parallax — image agrandie pour absorber le déplacement au scroll, sans révéler
   de bord vide. La translation est pilotée par main.js (--psf-parallax). */
.psf-hero .wp-block-cover__image-background {
  height: 140%;
  top: -20%;
  transform: translate3d(0, var(--psf-parallax, 0px), 0);
  will-change: transform;
}
@media (prefers-reduced-motion: reduce) {
  .psf-hero .wp-block-cover__image-background {
    height: 100%;
    top: 0;
    transform: none;
  }
}
.psf-hero-bottom { width: 100%; align-self: flex-end; }
.psf-hero-title { color: var(--psf-cream); }
.psf-hero-eyebrows { align-items: baseline; }
.psf-hero-row .wp-block-column { align-self: flex-end; }
.psf-hero-event { border-left: 1px solid rgba(244, 239, 229, 0.25); padding-left: 24px; }
.psf-hero-cta .wp-block-button { width: 100%; }
.psf-hero-cta .wp-block-button__link {
  width: 100%;
  display: flex !important;
  justify-content: space-between;
  align-items: center;
  padding: 20px 26px;
  font-size: 16px;
}

/* TICKER — pure CSS marquee */
.psf-ticker {
  overflow: hidden;
  background: var(--psf-ink-soft);
  color: var(--psf-cream);
  font-family: 'Antonio', sans-serif;
  font-size: 13px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  padding: 10px 0;
  border-top: 1px solid rgba(244, 239, 229, 0.1);
  border-bottom: 1px solid rgba(244, 239, 229, 0.1);
}
.psf-ticker__track {
  display: inline-flex;
  white-space: nowrap;
  gap: 48px;
  padding-right: 48px;
  animation: psf-marquee 70s linear infinite;
  will-change: transform;
}
.psf-ticker__track > span { display: inline-flex; align-items: center; }
.psf-ticker__track::after {
  content: attr(data-clone);
}
/* Duplicate via JS on load — see main.js */
@keyframes psf-marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* -----------------------------------------------------------------------
   Mega numbers
   ----------------------------------------------------------------------- */
.psf-numbers-head { align-items: flex-end; }
.psf-num-cell {
  position: relative;
  display: flex;
  flex-direction: column;
}
.psf-num-cell .is-style-mega-number {
  font-size: clamp(72px, 12vw, 180px) !important;
}

/* -----------------------------------------------------------------------
   Actions (5 portes d'entrée)
   ----------------------------------------------------------------------- */
.psf-actions-head { align-items: baseline; }
.psf-actions-grid > .wp-block-column {
  min-height: 360px;
  display: flex;
  flex-direction: column;
  position: relative;
}
.psf-actions-grid .psf-action-meta {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
}
.psf-actions-grid .psf-action-title {
  font-family: 'Archivo', sans-serif !important;
  font-weight: 800;
  font-stretch: 75%;
  font-size: 38px;
  line-height: 0.95;
  text-transform: uppercase;
  letter-spacing: -0.005em;
  margin: 60px 0 0;
  color: inherit;
}
.psf-actions-grid .psf-action-body {
  font-size: 14px;
  opacity: 0.8;
  margin-top: 16px;
  margin-bottom: 0;
}
.psf-actions-grid .psf-action-link {
  margin-top: auto;
  padding-top: 18px;
  border-top: 1px solid currentColor;
  font-family: 'Antonio', sans-serif;
  font-size: 13px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
}

/* -----------------------------------------------------------------------
   Athletes grid
   ----------------------------------------------------------------------- */
.psf-athletes-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}
.psf-athlete {
  position: relative;
  overflow: hidden;
  background: var(--psf-ink-soft);
  margin: 0;
  aspect-ratio: 3 / 4;
}
.psf-athlete img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.psf-athlete::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(11, 30, 63, 0) 50%, rgba(11, 30, 63, 0.85) 100%);
  pointer-events: none;
}
.psf-athlete figcaption {
  position: absolute;
  inset: auto 20px 20px 20px;
  z-index: 2;
  color: var(--psf-cream);
  display: grid;
  gap: 6px;
}
.psf-athlete__rank {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.22em;
  color: var(--psf-copper);
}
.psf-athlete__name {
  font-family: 'Archivo', sans-serif;
  font-weight: 800;
  font-stretch: 75%;
  font-size: 34px;
  line-height: 1;
  letter-spacing: -0.005em;
}
.psf-athlete__discipline {
  font-family: 'Antonio', sans-serif;
  font-size: 13px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  opacity: 0.85;
}

/* -----------------------------------------------------------------------
   Calendar list
   ----------------------------------------------------------------------- */
.psf-calendar-list {
  list-style: none;
  margin: 0;
  padding: 0;
  border-top: 1px solid rgba(244, 239, 229, 0.15);
}
.psf-event {
  display: grid;
  grid-template-columns: 180px 130px 1fr 220px 200px 40px;
  gap: 32px;
  align-items: center;
  padding: 32px;
  border-bottom: 1px solid rgba(244, 239, 229, 0.1);
  transition: background 0.2s;
}
.psf-event:hover { background: var(--psf-ink-soft); }
.psf-event__poster {
  margin: 0;
  width: 130px;
  height: 184px;
  overflow: hidden;
  background: var(--psf-ink-soft);
  justify-self: start;
}
.psf-event__poster.is-empty { background: none; }
.psf-event__poster .psf-photowall-trigger { border-radius: 2px; }
.psf-event__poster img { width: 100%; height: 100%; object-fit: cover; }
.psf-event__date { display: flex; align-items: baseline; gap: 8px; }
.psf-event__day {
  font-family: 'Archivo', sans-serif;
  font-weight: 900;
  font-stretch: 75%;
  font-size: 72px;
  line-height: 0.9;
  letter-spacing: -0.02em;
}
.psf-event__month {
  font-family: 'Antonio', sans-serif;
  font-size: 16px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-event__title {
  font-family: 'Antonio', sans-serif;
  font-size: 32px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: -0.005em;
  line-height: 1;
  margin: 0;
  color: var(--psf-cream);
}
.psf-event__cat {
  margin: 8px 0 0;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.18em;
  color: rgba(244, 239, 229, 0.5);
  text-transform: uppercase;
}
.psf-event__loc {
  font-family: 'Antonio', sans-serif;
  font-size: 18px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
}
.psf-event__status {
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
}
.psf-event__cta {
  font-family: 'Antonio', sans-serif;
  font-size: 22px;
  color: var(--psf-cream);
}

/* -----------------------------------------------------------------------
   Stream split
   ----------------------------------------------------------------------- */
.psf-stream-cols {
  margin: 0 !important;
}
.psf-stream-media,
.psf-stream-media .wp-block-image {
  margin: 0 !important;
  padding: 0 !important;
  height: 100%;
}
.psf-stream-media .wp-block-image,
.psf-stream-media .wp-block-image figure,
.psf-stream-img,
.psf-stream-img img {
  height: 100% !important;
  width: 100%;
  min-height: 480px;
  object-fit: cover;
}

/* -----------------------------------------------------------------------
   Photo wall (marquee 3 rangées — voir styles plus bas)
   ----------------------------------------------------------------------- */
.psf-photowall-cell {
  margin: 0;
  height: var(--h, 320px);
  overflow: hidden;
  background: var(--psf-ink-soft);
}
.psf-photowall-cell img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.psf-photowall-trigger {
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  cursor: zoom-in;
  overflow: hidden;
}
.psf-photowall-trigger img {
  transition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.psf-photowall-trigger:hover img,
.psf-photowall-trigger:focus-visible img {
  transform: scale(1.06);
}
.psf-photowall-trigger:focus-visible {
  outline: 2px solid var(--wp--preset--color--cream, #fff);
  outline-offset: -3px;
}

/* Galerie : 3 rangées décalées en défilement auto doux (desktop + mobile) */
.psf-photowall-marquee {
  display: flex;
  flex-direction: column;
  gap: 14px;
  overflow: hidden;
  padding-bottom: 4px;
}
.psf-mq-row { overflow: hidden; }
.psf-mq-track {
  display: flex;
  gap: 14px;
  width: max-content;
  will-change: transform;
  animation: psf-mq-scroll linear infinite;
}
/* rangées décalées : sens et vitesses différents pour un effet vivant */
.psf-mq-row--0 .psf-mq-track { animation-duration: 90s; }
.psf-mq-row--1 .psf-mq-track { animation-duration: 74s; animation-direction: reverse; margin-left: -90px; }
.psf-mq-row--2 .psf-mq-track { animation-duration: 104s; margin-left: -45px; }
/* pause dès qu'on touche/survole le mur (fiable au tactile) → le clic vise juste */
.psf-photowall-marquee:hover .psf-mq-track,
.psf-photowall-marquee:active .psf-mq-track,
.psf-photowall-marquee:focus-within .psf-mq-track { animation-play-state: paused; }
.psf-photowall-marquee .psf-photowall-cell {
  flex: 0 0 auto;
  width: 360px;
  height: 240px;
  margin: 0;
}
/* accessibilité : pas d'auto-défilement si l'utilisateur le refuse */
@media (prefers-reduced-motion: reduce) {
  .psf-mq-track { animation: none; margin-left: 0; width: auto; }
  .psf-mq-row { overflow-x: auto; scrollbar-width: none; }
  .psf-mq-row::-webkit-scrollbar { display: none; }
}
@keyframes psf-mq-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* -----------------------------------------------------------------------
   Lightbox
   ----------------------------------------------------------------------- */
.psf-lightbox-lock { overflow: hidden; }
.psf-lightbox {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: none;
  align-items: center;
  justify-content: center;
  padding: clamp(16px, 5vw, 64px);
  background: rgba(10, 10, 12, 0.92);
  backdrop-filter: blur(6px);
}
.psf-lightbox.is-open {
  display: flex;
  animation: psf-lightbox-fade 0.25s ease both;
}
@keyframes psf-lightbox-fade {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.psf-lightbox__stage {
  margin: 0;
  max-width: 100%;
  max-height: 100%;
  display: flex;
}
.psf-lightbox__stage img {
  max-width: 100%;
  max-height: 86vh;
  object-fit: contain;
  box-shadow: 0 24px 80px rgba(0, 0, 0, 0.6);
}
.psf-lightbox__close,
.psf-lightbox__nav {
  position: absolute;
  border: 0;
  background: rgba(255, 255, 255, 0.08);
  color: #fff;
  cursor: pointer;
  line-height: 1;
  border-radius: 999px;
  transition: background 0.2s ease, transform 0.2s ease;
}
.psf-lightbox__close:hover,
.psf-lightbox__nav:hover {
  background: rgba(255, 255, 255, 0.2);
}
.psf-lightbox__close {
  top: 20px;
  right: 24px;
  width: 48px;
  height: 48px;
  font-size: 28px;
}
.psf-lightbox__nav {
  top: 50%;
  transform: translateY(-50%);
  width: 56px;
  height: 56px;
  font-size: 36px;
}
.psf-lightbox__nav:hover { transform: translateY(-50%) scale(1.08); }
.psf-lightbox__prev { left: 24px; }
.psf-lightbox__next { right: 24px; }
@media (max-width: 600px) {
  .psf-lightbox__nav { width: 44px; height: 44px; font-size: 28px; }
  .psf-lightbox__prev { left: 10px; }
  .psf-lightbox__next { right: 10px; }
}

/* -----------------------------------------------------------------------
   Journal cards
   ----------------------------------------------------------------------- */
.psf-journal-grid,
.psf-journal-query .wp-block-post-template {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  list-style: none;
  margin: 0;
  padding: 0;
}
.psf-journal-card { gap: 0; }
.psf-journal-card .psf-journal-card__media,
.psf-journal-card .wp-block-post-featured-image {
  height: 320px;
  background-color: var(--psf-ink-soft);
  background-size: cover;
  background-position: center;
  margin-bottom: 20px !important;
  overflow: hidden;
}
.psf-journal-card .wp-block-post-featured-image img {
  height: 100%;
  width: 100%;
  object-fit: cover;
}
.psf-journal-card__meta {
  display: flex;
  gap: 12px;
  align-items: center;
  margin-bottom: 12px;
}
.psf-journal-card__title,
.psf-journal-card .wp-block-post-title {
  font-family: 'Archivo', sans-serif !important;
  font-weight: 700;
  font-stretch: 75%;
  font-size: 30px;
  line-height: 1;
  text-transform: uppercase;
  margin: 0;
  letter-spacing: -0.005em;
  color: var(--psf-cream);
}
.psf-journal-card .wp-block-post-title a { color: inherit; }

/* -----------------------------------------------------------------------
   Comité directeur — carte vedette Présidente + grille 3 membres + commissions
   ----------------------------------------------------------------------- */

/* --- Featured card (Présidente) --- */
.psf-featured {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  border: 1px solid rgba(244, 239, 229, 0.12);
  margin-bottom: 1px;
}
.psf-featured__portrait {
  position: relative;
  background: var(--psf-bordeaux);
  color: var(--psf-cream);
  aspect-ratio: 4 / 5;
  display: grid;
  place-items: center;
  overflow: hidden;
}
.psf-featured__initials {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(160px, 22vw, 320px);
  line-height: 0.85; letter-spacing: -0.04em;
  opacity: 0.95; user-select: none;
}
.psf-featured__since {
  position: absolute; top: 24px; left: 24px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  opacity: 0.85;
}
.psf-featured__tag {
  position: absolute; top: 24px; right: 24px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  padding: 5px 10px;
  border: 1px solid currentColor; border-radius: 999px;
  opacity: 0.85;
}
.psf-featured__body {
  padding: 48px 56px;
  display: flex; flex-direction: column; gap: 20px;
  justify-content: center;
  background: var(--psf-ink-soft);
}
.psf-featured__role {
  margin: 0;
  font-family: 'Antonio', sans-serif; font-weight: 500;
  font-size: 12px; letter-spacing: 0.32em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-featured__name {
  margin: 0;
  font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%;
  font-size: clamp(56px, 7vw, 88px);
  line-height: 0.9; letter-spacing: -0.02em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-featured__bio {
  margin: 0;
  font-size: 16px; line-height: 1.6;
  color: rgba(244, 239, 229, 0.85);
  max-width: 540px;
}
.psf-featured__quote {
  margin: 0;
  font-family: 'Archivo', sans-serif; font-weight: 800; font-stretch: 75%;
  font-size: 22px; line-height: 1.2;
  color: var(--psf-copper);
  text-transform: uppercase; letter-spacing: -0.005em;
  border-left: 2px solid var(--psf-bordeaux);
  padding-left: 16px;
}

/* --- Main grid (3 cards) --- */
.psf-committee-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: rgba(244, 239, 229, 0.12);
  border: 1px solid rgba(244, 239, 229, 0.12);
  border-top: 0;
}
.psf-committee-card {
  position: relative;
  display: grid;
  grid-template-rows: auto 1fr;
  background: var(--psf-ink);
  min-height: 520px;
}
.psf-committee-card__portrait {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  display: grid;
  place-items: center;
}
.psf-committee-card__initials {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(96px, 14vw, 200px);
  line-height: 0.85; letter-spacing: -0.04em;
  opacity: 0.92; user-select: none;
}
.psf-committee-card__since {
  position: absolute; top: 16px; left: 16px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  opacity: 0.75;
}
.psf-committee-card__cumul {
  position: absolute; top: 16px; right: 16px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  padding: 4px 8px;
  border: 1px solid currentColor; border-radius: 999px;
  opacity: 0.85;
}
.psf-committee-card__body {
  padding: 24px 24px 28px;
  display: flex; flex-direction: column; gap: 8px;
  background: var(--psf-ink);
  color: var(--psf-cream);
}
.psf-committee-card__role {
  margin: 0;
  font-family: 'Antonio', sans-serif; font-weight: 500;
  font-size: 12px; letter-spacing: 0.32em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-committee-card__name {
  margin: 0;
  font-family: 'Archivo', sans-serif; font-weight: 800; font-stretch: 75%;
  font-size: 32px;
  line-height: 0.95; letter-spacing: -0.005em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-committee-card__bio {
  margin: 6px 0 0;
  font-size: 13.5px; line-height: 1.55;
  color: rgba(244, 239, 229, 0.7);
}

/* Portrait tone variants */
.psf-committee--bordeaux .psf-committee-card__portrait { background: var(--psf-bordeaux); color: var(--psf-cream); }
.psf-committee--ink-soft .psf-committee-card__portrait { background: var(--psf-ink-soft); color: var(--psf-cream); }
.psf-committee--copper   .psf-committee-card__portrait { background: var(--psf-copper);   color: var(--psf-ink); }
.psf-committee--cream    .psf-committee-card__portrait { background: var(--psf-cream);    color: var(--psf-ink); }

/* --- Commissions strip --- */
.psf-commissions-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: rgba(244, 239, 229, 0.12);
  border: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-commission {
  background: var(--psf-ink);
  padding: 36px 32px;
  display: flex; flex-direction: column; gap: 16px;
  min-height: 260px;
}
.psf-commission__n {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-commission__t {
  margin: 0;
  font-family: 'Archivo', sans-serif; font-weight: 800; font-stretch: 75%;
  font-size: 30px;
  line-height: 0.95; letter-spacing: -0.005em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-commission__contact {
  margin-top: auto;
  padding-top: 24px;
  border-top: 1px solid rgba(244, 239, 229, 0.12);
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px; letter-spacing: 0.1em; text-transform: lowercase;
  color: var(--psf-copper);
  word-break: break-all;
}
.psf-commission__contact:hover { color: var(--psf-cream); text-decoration: underline; }

@media (max-width: 1100px) {
  .psf-featured { grid-template-columns: 1fr; }
  .psf-featured__portrait { aspect-ratio: 5 / 3; }
  .psf-featured__body { padding: 32px; }
  .psf-committee-grid { grid-template-columns: repeat(2, 1fr); }
  .psf-commissions-grid { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .psf-committee-grid { grid-template-columns: 1fr; }
  .psf-committee-card { min-height: 420px; }
  .psf-committee-card__name { font-size: 26px; }
  .psf-featured__name { font-size: 48px !important; }
}

/* -----------------------------------------------------------------------
   Don (HelloAsso) + Contact (Contact Form 7)
   ----------------------------------------------------------------------- */
.psf-don-hero { display: grid; grid-template-columns: 1fr 1fr; border-bottom: 1px solid rgba(244,239,229,0.12); }
.psf-don-left { padding: 96px 56px; border-right: 1px solid rgba(244,239,229,0.12); }
.psf-don-title { font-size: clamp(56px,8vw,140px) !important; line-height: 0.82; margin: 16px 0 0; }
.psf-don-pitch { margin: 28px 0 0; font-size: 17px; line-height: 1.65; color: rgba(244,239,229,0.88); max-width: 480px; }
.psf-don-deduction { margin-top: 40px; border: 1px solid var(--psf-copper); padding: 28px; display: flex; align-items: center; gap: 24px; background: rgba(217,199,168,0.05); }
.psf-don-deduction__pct { font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: 88px; line-height: 0.85; color: var(--psf-copper); }
.psf-don-deduction__pct .s { font-size: 0.4em; }
.psf-don-deduction__txt .l { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--psf-copper); }
.psf-don-deduction__txt p { margin: 6px 0 0; font-size: 14px; line-height: 1.5; color: rgba(244,239,229,0.85); max-width: 280px; }
.psf-don-deduction__txt strong { color: var(--psf-cream); }
.psf-don-right { padding: 56px; background: var(--psf-ink-soft); display: flex; flex-direction: column; }
.psf-don-embed-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 20px; }
.psf-don-embed-head .t { font-family: 'Antonio', sans-serif; font-size: 13px; letter-spacing: 0.25em; text-transform: uppercase; color: var(--psf-cream); }
.psf-don-embed-head .tag { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--psf-copper); }
.psf-don-embed { flex: 1; min-height: 520px; border: 1px dashed rgba(244,239,229,0.3); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 20px; text-align: center; padding: 40px; background: var(--psf-ink); }
.psf-don-embed__logo { font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: 40px; color: var(--psf-cream); letter-spacing: -0.01em; }
.psf-don-embed__logo span { color: var(--psf-bordeaux); }
.psf-don-embed p { margin: 0; max-width: 340px; color: rgba(244,239,229,0.6); font-size: 13.5px; line-height: 1.55; }
.psf-don-embed__amounts { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; }
.psf-don-embed__amounts .amt { font-family: 'Archivo', sans-serif; font-weight: 800; font-stretch: 75%; font-size: 18px; padding: 12px 18px; border: 1px solid rgba(244,239,229,0.12); color: var(--psf-cream); }
.psf-don-embed__amounts .amt.hl { background: var(--psf-bordeaux); border-color: var(--psf-bordeaux); }
.psf-don-embed__btn { background: var(--psf-bordeaux); color: var(--psf-cream); font-family: 'Antonio', sans-serif; font-size: 14px; letter-spacing: 0.22em; text-transform: uppercase; padding: 18px 28px; font-weight: 600; }
.psf-don-impact-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: rgba(244,239,229,0.12); border: 1px solid rgba(244,239,229,0.12); }
.psf-don-impact-card { background: var(--psf-ink); padding: 40px 32px; }
.psf-don-impact-card .ico { font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: 56px; color: var(--psf-bordeaux); margin-bottom: 20px; }
.psf-don-impact-card h3 { font-family: 'Archivo', sans-serif; font-weight: 800; font-stretch: 75%; font-size: 26px; text-transform: uppercase; letter-spacing: -0.005em; margin: 0 0 10px; color: var(--psf-cream); }
.psf-don-impact-card p { margin: 0; font-size: 14px; line-height: 1.55; color: rgba(244,239,229,0.7); }

.psf-contact-layout { display: grid; grid-template-columns: 1fr 1.3fr; }
.psf-contact-info { padding: 64px 56px 64px 64px; border-right: 1px solid rgba(244,239,229,0.12); display: flex; flex-direction: column; }
.psf-contact-info__block { padding: 28px 0; border-bottom: 1px solid rgba(244,239,229,0.12); }
.psf-contact-info__block:first-child { padding-top: 0; }
.psf-contact-info__block .l { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--psf-copper); margin: 0 0 10px; }
.psf-contact-info__block .v { font-family: 'Antonio', sans-serif; font-size: 22px; letter-spacing: 0.02em; margin: 0; }
.psf-contact-info__block .v a { color: var(--psf-cream); }
.psf-contact-info__block .v a:hover { color: var(--psf-copper); }
.psf-contact-socials { display: flex; gap: 10px; margin-top: 8px; }
.psf-contact-socials a { width: 44px; height: 44px; border: 1px solid rgba(244,239,229,0.12); display: grid; place-items: center; font-family: 'Antonio', sans-serif; font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; }
.psf-contact-socials a:hover { border-color: var(--psf-copper); color: var(--psf-copper); }
.psf-contact-form-col { padding: 64px 64px 64px 56px; background: var(--psf-ink-soft); }
.psf-contact-form-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 28px; }
.psf-contact-form-head .t { font-family: 'Archivo', sans-serif; font-weight: 800; font-stretch: 75%; font-size: 32px; text-transform: uppercase; letter-spacing: -0.01em; color: var(--psf-cream); }
.psf-contact-form-head .tag { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--psf-copper); }
.psf-cf7 { display: flex; flex-direction: column; gap: 18px; }
.psf-cf7-field label { display: block; font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--psf-copper); margin-bottom: 8px; }
.psf-cf7-field input, .psf-cf7-field select, .psf-cf7-field textarea { width: 100%; background: var(--psf-ink); border: 1px solid rgba(244,239,229,0.12); color: var(--psf-cream); padding: 15px 16px; font-family: 'Inter', sans-serif; font-size: 15px; outline: 0; }
.psf-cf7-field input:focus, .psf-cf7-field select:focus, .psf-cf7-field textarea:focus { border-color: var(--psf-copper); }
.psf-cf7-field textarea { min-height: 140px; resize: vertical; }
.psf-cf7-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.psf-cf7-submit { background: var(--psf-bordeaux); color: var(--psf-cream); border: 0; font-family: 'Antonio', sans-serif; font-size: 15px; letter-spacing: 0.22em; text-transform: uppercase; padding: 20px; cursor: pointer; font-weight: 600; align-self: flex-start; }
.psf-cf7-submit:hover { background: var(--psf-cream); color: var(--psf-ink); }
.psf-cf7-note { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.1em; color: rgba(244,239,229,0.45); margin-top: 6px; }

/* Contact Form 7 — alignement du markup généré par le plugin sur le style PSF */
.psf-contact-form-col .wpcf7-form-control-wrap { display: block; }
.psf-contact-form-col .wpcf7 .wpcf7-spinner { margin: 0 0 0 16px; }
.psf-contact-form-col .wpcf7-not-valid-tip { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--psf-bordeaux); margin-top: 6px; }
.psf-contact-form-col .wpcf7-form-control.wpcf7-not-valid { border-color: var(--psf-bordeaux); }
.psf-contact-form-col .wpcf7-response-output { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.06em; color: var(--psf-cream); border: 1px solid rgba(244,239,229,0.18); padding: 14px 16px; margin: 18px 0 0; }
.psf-contact-form-col .wpcf7-form.invalid .wpcf7-response-output,
.psf-contact-form-col .wpcf7-form.unaccepted .wpcf7-response-output,
.psf-contact-form-col .wpcf7-form.payment-required .wpcf7-response-output { border-color: var(--psf-bordeaux); color: #F0B8C0; }
.psf-contact-form-col .wpcf7-form.sent .wpcf7-response-output { border-color: var(--psf-copper); color: var(--psf-copper); }

@media (max-width: 1100px) {
  .psf-don-hero { grid-template-columns: 1fr; }
  .psf-don-left { border-right: 0; border-bottom: 1px solid rgba(244,239,229,0.12); padding: 56px 32px; }
  .psf-don-right { padding: 40px 32px; }
  .psf-don-impact { padding-left: 32px; padding-right: 32px; }
  .psf-don-impact-grid { grid-template-columns: 1fr; }
  .psf-contact-layout { grid-template-columns: 1fr; }
  .psf-contact-info { border-right: 0; border-bottom: 1px solid rgba(244,239,229,0.12); padding: 48px 32px; }
  .psf-contact-form-col { padding: 48px 32px; }
}
@media (max-width: 600px) { .psf-cf7-row2 { grid-template-columns: 1fr; } }

/* -----------------------------------------------------------------------
   Calendrier des compétitions — filtres + liste broadcast
   ----------------------------------------------------------------------- */
.psf-cal-filter { position: sticky; top: 0; z-index: 50; background: var(--psf-ink-soft); border-bottom: 1px solid rgba(244,239,229,0.12); padding: 18px 64px; display: flex; gap: 16px; align-items: center; flex-wrap: wrap; }
.psf-cal-seg { display: flex; border: 1px solid rgba(244,239,229,0.12); }
.psf-cal-seg button { background: transparent; border: 0; border-right: 1px solid rgba(244,239,229,0.12); color: var(--psf-cream); font-family: 'Antonio', sans-serif; font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; padding: 12px 18px; cursor: pointer; }
.psf-cal-seg button:last-child { border-right: 0; }
.psf-cal-seg button.active { background: var(--psf-copper); color: var(--psf-ink); }
.psf-cal-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.psf-cal-chips button { background: transparent; border: 1px solid rgba(244,239,229,0.12); color: var(--psf-cream); padding: 8px 14px; font-family: 'Antonio', sans-serif; font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; cursor: pointer; border-radius: 999px; transition: all 0.2s; }
.psf-cal-chips button:hover { border-color: var(--psf-copper); color: var(--psf-copper); }
.psf-cal-chips button.active { background: var(--psf-bordeaux); color: var(--psf-cream); border-color: var(--psf-bordeaux); }
.psf-cal-count { margin-left: auto; font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--psf-copper); }

.psf-cal-section { padding: 48px 64px 96px; }
.psf-cal-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid rgba(244,239,229,0.12); }
.psf-cal-list .psf-event { display: grid; grid-template-columns: 180px 130px 1fr 230px 200px 140px; gap: 28px; align-items: center; padding: 28px 32px; border-bottom: 1px solid rgba(244,239,229,0.12); transition: background 0.2s; }
.psf-cal-list .psf-event__poster { margin: 0; width: 130px; height: 184px; overflow: hidden; background: var(--psf-ink-soft); justify-self: start; }
.psf-cal-list .psf-event__poster.is-empty { background: none; }
.psf-cal-list .psf-event__poster img { width: 100%; height: 100%; object-fit: cover; }
.psf-cal-list .psf-event:hover { background: var(--psf-ink-soft); }
.psf-cal-list .psf-event--closed { opacity: 0.55; }
.psf-cal-list .psf-event__date { display: flex; align-items: baseline; gap: 8px; }
.psf-cal-list .psf-event__day { font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: 64px; line-height: 0.9; letter-spacing: -0.02em; }
.psf-cal-list .psf-event__month { font-family: 'Antonio', sans-serif; font-size: 15px; letter-spacing: 0.2em; text-transform: uppercase; color: var(--psf-copper); }
.psf-cal-list .psf-event__title { font-family: 'Antonio', sans-serif; font-size: 30px; font-weight: 600; text-transform: uppercase; letter-spacing: -0.005em; line-height: 1; margin: 0; color: var(--psf-cream); }
.psf-cal-list .psf-event__cat { margin: 8px 0 0; font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.18em; color: rgba(244,239,229,0.5); text-transform: uppercase; }
.psf-cal-list .psf-event__loc { font-family: 'Antonio', sans-serif; font-size: 17px; letter-spacing: 0.18em; text-transform: uppercase; display: flex; flex-direction: column; gap: 4px; }
.psf-cal-list .psf-event__region { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.12em; color: var(--psf-copper); text-transform: none; }
.psf-cal-list .psf-event__status { display: flex; flex-direction: column; gap: 8px; align-items: flex-start; }
.psf-cal-list .psf-event__badge { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; padding: 5px 9px; }
.psf-cal-list .psf-event__badge.open { background: var(--psf-copper); color: var(--psf-ink); }
.psf-cal-list .psf-event__badge.soon { background: transparent; border: 1px solid var(--psf-copper); color: var(--psf-copper); }
.psf-cal-list .psf-event__badge.restricted { background: var(--psf-ink-soft); border: 1px solid rgba(244,239,229,0.3); color: rgba(244,239,229,0.7); }
.psf-cal-list .psf-event__badge.closed { background: transparent; border: 1px solid rgba(244,239,229,0.2); color: rgba(244,239,229,0.5); }
.psf-cal-list .psf-event__stream { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.14em; color: var(--psf-bordeaux); text-transform: uppercase; }
.psf-cal-list .psf-event__action { text-align: right; }
.psf-cal-list .psf-event__register { display: inline-block; background: var(--psf-bordeaux); color: var(--psf-cream); font-family: 'Antonio', sans-serif; font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; padding: 12px 16px; }
.psf-cal-list .psf-event__register:hover { background: var(--psf-cream); color: var(--psf-ink); }
.psf-cal-list .psf-event__results { font-family: 'Antonio', sans-serif; font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--psf-copper); }
.psf-cal-list .psf-event__cta-soon { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(244,239,229,0.45); }
.psf-cal-empty { text-align: center; padding: 80px 0; }
.psf-cal-empty h3 { font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: 40px; text-transform: uppercase; margin: 0 0 12px; }
.psf-cal-empty p { color: rgba(244,239,229,0.6); margin: 0; }

@media (max-width: 1100px) {
  .psf-cal-filter, .psf-cal-section { padding-left: 32px; padding-right: 32px; }
  .psf-cal-list .psf-event { grid-template-columns: 92px 1fr; grid-template-areas: "date title" "poster loc" "poster status" "action action"; gap: 14px 24px; padding-left: 16px; padding-right: 16px; }
  .psf-cal-list .psf-event__date { grid-area: date; flex-direction: column; align-items: flex-start; gap: 2px; }
  .psf-cal-list .psf-event__poster { grid-area: poster; width: 92px; height: 128px; align-self: start; }
  .psf-cal-list .psf-event__poster.is-empty { width: 0; height: 0; }
  .psf-cal-list .psf-event__body { grid-area: title; }
  .psf-cal-list .psf-event__loc { grid-area: loc; font-size: 14px; }
  .psf-cal-list .psf-event__status { grid-area: status; flex-direction: row; align-items: center; }
  .psf-cal-list .psf-event__action { grid-area: action; text-align: left; }
  .psf-cal-list .psf-event__day { font-size: 48px; }
  .psf-cal-list .psf-event__title { font-size: 22px; }
  .psf-cal-count { margin-left: 0; }
}

/* -----------------------------------------------------------------------
   Bénévole + Recrutement (missions, empty state, candidature)
   ----------------------------------------------------------------------- */
.psf-benevole-grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid rgba(244,239,229,0.12); border-left: 1px solid rgba(244,239,229,0.12);
}
.psf-benevole-mission {
  padding: 36px 28px; border-right: 1px solid rgba(244,239,229,0.12); border-bottom: 1px solid rgba(244,239,229,0.12);
  min-height: 240px; display: flex; flex-direction: column;
}
.psf-benevole-mission__n { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--psf-copper); }
.psf-benevole-mission__ico { font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: 48px; color: var(--psf-bordeaux); margin: 16px 0; }
.psf-benevole-mission h3 { font-family: 'Archivo', sans-serif; font-weight: 800; font-stretch: 75%; font-size: 24px; line-height: 1; letter-spacing: -0.005em; text-transform: uppercase; margin: 0 0 10px; color: var(--psf-cream); }
.psf-benevole-mission p { margin: 0; font-size: 13.5px; line-height: 1.55; color: rgba(244,239,229,0.72); }

.psf-recrut-empty { border: 1px dashed rgba(244,239,229,0.12); padding: 80px 40px; text-align: center; background: var(--psf-ink-soft); }
.psf-recrut-empty__big { font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: clamp(40px, 6vw, 80px); line-height: 0.9; text-transform: uppercase; letter-spacing: -0.02em; margin: 0 0 16px; color: var(--psf-cream); }
.psf-recrut-empty__p { margin: 0 auto; max-width: 520px; color: rgba(244,239,229,0.7); font-size: 16px; line-height: 1.6; }

@media (max-width: 1100px) {
  .psf-benevole-grid { grid-template-columns: 1fr 1fr; }
  .psf-benevole-mission:nth-child(2n) { border-right: 0; }
}
@media (max-width: 600px) {
  .psf-benevole-grid { grid-template-columns: 1fr; }
  .psf-benevole-mission { border-right: 0 !important; }
}

/* -----------------------------------------------------------------------
   Actualités (Journal) — featured + grille + filtres + newsletter
   Styles valables pour les Query Loop natifs ET le fallback démo.
   ----------------------------------------------------------------------- */
/* Wrappers natifs du Query Loop : ne doivent pas contraindre la mise en page.
   Sinon .wp-block-post devient une grille 2 colonnes avec un seul enfant
   (.psf-actu-featured), qui se cale à gauche et laisse la colonne droite vide. */
.psf-actu-featured-query .wp-block-post-template { display: block; margin: 0; padding: 0; list-style: none; }
.psf-actu-featured-query .wp-block-post { display: block; margin: 0; }

.psf-actu-featured {
  display: grid;
  grid-template-columns: 1.2fr 1fr;
  border: 1px solid rgba(244,239,229,0.12);
  border-bottom: 0;
  margin: 0;
}
.psf-actu-featured__media, .psf-actu-featured .wp-block-post-featured-image {
  position: relative; overflow: hidden; min-height: 440px; margin: 0;
  background: var(--psf-ink-soft); background-size: cover; background-position: center;
}
.psf-actu-featured__media img, .psf-actu-featured .wp-block-post-featured-image img {
  width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0;
}
.psf-actu-tag {
  position: absolute; top: 20px; left: 20px; z-index: 2;
  background: var(--psf-bordeaux); color: var(--psf-cream);
  font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.22em;
  text-transform: uppercase; padding: 6px 12px;
}
.psf-actu-featured__body {
  padding: 48px; display: flex; flex-direction: column; justify-content: center; gap: 24px;
  background: var(--psf-ink-soft);
}
.psf-actu-featured__meta {
  display: flex; gap: 14px; align-items: center; flex-wrap: wrap;
  font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--psf-copper);
}
.psf-actu-featured__meta a { color: var(--psf-copper); }
.psf-actu-featured__title, .psf-actu-featured__title a {
  margin: 0; font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%;
  font-size: clamp(32px, 4vw, 56px); line-height: 0.92; letter-spacing: -0.015em;
  text-transform: uppercase; color: var(--psf-cream); text-wrap: balance;
}
.psf-actu-featured__excerpt {
  margin: 0; font-size: 16px; line-height: 1.6; color: rgba(244,239,229,0.82); max-width: 520px;
}
.psf-actu-featured__excerpt .wp-block-post-excerpt__more-text { display: inline-block; margin-top: 12px; color: var(--psf-copper); font-family: 'Antonio', sans-serif; letter-spacing: 0.2em; text-transform: uppercase; font-size: 13px; }
.psf-actu-demo-note { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.1em; color: rgba(244,239,229,0.45); margin: 8px 0 0; }

/* Filter (categories) */
.psf-actu-filter { align-items: center; gap: 12px; }
.psf-actu-cats ul, ul.psf-actu-cats { list-style: none; margin: 0; padding: 0; display: flex; gap: 8px; flex-wrap: wrap; }
.psf-actu-cats li { margin: 0; }
.psf-actu-cats a {
  display: inline-block; background: transparent; border: 1px solid rgba(244,239,229,0.12);
  color: var(--psf-cream); padding: 8px 14px;
  font-family: 'Antonio', sans-serif; font-size: 12px; letter-spacing: 0.18em;
  text-transform: uppercase; border-radius: 999px; transition: all 0.2s;
}
.psf-actu-cats a:hover { border-color: var(--psf-copper); color: var(--psf-copper); }

/* Articles grid */
.psf-actu-grid, .psf-actu-query .wp-block-post-template {
  display: grid !important; grid-template-columns: repeat(3, 1fr); gap: 40px 32px;
  list-style: none; margin: 0; padding: 0;
}
.psf-actu-card, .psf-actu-query .wp-block-post { display: flex; flex-direction: column; margin: 0; }
.psf-actu-card__media, .psf-actu-card .wp-block-post-featured-image {
  position: relative; aspect-ratio: 3 / 2; overflow: hidden; background: var(--psf-ink-soft);
  margin: 0 0 20px; background-size: cover; background-position: center;
}
.psf-actu-card__media img, .psf-actu-card .wp-block-post-featured-image img {
  width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease;
}
.psf-actu-card:hover .psf-actu-card__media img { transform: scale(1.05); }
.psf-actu-pill {
  position: absolute; top: 14px; left: 14px; z-index: 2;
  font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.2em;
  text-transform: uppercase; padding: 5px 10px; color: var(--psf-cream);
}
.pill--competitions { background: var(--psf-bordeaux); }
.pill--portrait { background: var(--psf-bordeaux); }
.pill--equipe { background: var(--psf-copper); color: var(--psf-ink); }
.pill--federale { background: var(--psf-ink-soft); border: 1px solid var(--psf-copper); color: var(--psf-copper); }
.pill--tuto { background: var(--psf-cream); color: var(--psf-ink); }
.pill--reportage { background: var(--psf-ink-deep); border: 1px solid rgba(244,239,229,0.12); color: var(--psf-cream); }
.psf-actu-card__meta {
  font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.18em;
  text-transform: uppercase; color: rgba(244,239,229,0.5); margin-bottom: 10px;
  display: flex; gap: 12px; align-items: center; flex-wrap: wrap;
}
.psf-actu-card__meta a { color: var(--psf-copper); }
.psf-actu-card__title, .psf-actu-card__title a {
  font-family: 'Archivo', sans-serif; font-weight: 800; font-stretch: 75%;
  font-size: 26px; line-height: 1; letter-spacing: -0.005em; text-transform: uppercase;
  color: var(--psf-cream); margin: 0 0 12px; text-wrap: balance;
}
.psf-actu-card:hover .psf-actu-card__title, .psf-actu-card:hover .psf-actu-card__title a { color: var(--psf-copper); }
.psf-actu-card__excerpt { font-size: 14px; line-height: 1.55; color: rgba(244,239,229,0.7); margin: 0; }

/* Pagination */
.psf-actu-pagination { gap: 8px; }
.psf-actu-pagination .wp-block-query-pagination-numbers,
.psf-actu-pagination a, .psf-actu-pagination span {
  font-family: 'Archivo', sans-serif; font-weight: 800; font-stretch: 75%; font-size: 16px;
}
.psf-actu-pagination a, .psf-actu-pagination .current {
  min-width: 48px; height: 48px; display: inline-grid; place-items: center;
  border: 1px solid rgba(244,239,229,0.12); color: var(--psf-cream); text-decoration: none;
}
.psf-actu-pagination .current { background: var(--psf-bordeaux); border-color: var(--psf-bordeaux); }

@media (max-width: 1100px) {
  .psf-actu-featured { grid-template-columns: 1fr; }
  .psf-actu-featured__media, .psf-actu-featured .wp-block-post-featured-image { min-height: 300px; }
  .psf-actu-featured__body { padding: 32px; }
  .psf-actu-grid, .psf-actu-query .wp-block-post-template { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .psf-actu-grid, .psf-actu-query .wp-block-post-template { grid-template-columns: 1fr; }
}

/* -----------------------------------------------------------------------
   Single post (article) — en-tête éditorial + corps lisible + à lire aussi
   ----------------------------------------------------------------------- */
.psf-single { overflow-x: hidden; }

/* En-tête */
.psf-single-eyebrow-row { gap: 16px; align-items: center; }
.psf-single-cats {
  display: inline-flex; gap: 8px; flex-wrap: wrap;
  font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.22em;
  text-transform: uppercase; margin: 0;
}
.psf-single-cats a {
  display: inline-block; background: var(--psf-bordeaux); color: var(--psf-cream);
  padding: 5px 12px; text-decoration: none;
}
.psf-single-cats a:hover { background: var(--psf-copper); color: var(--psf-ink); text-decoration: none; }

.psf-single-title {
  font-family: 'Archivo', sans-serif !important; font-weight: 900; font-stretch: 75%;
  letter-spacing: -0.02em; text-transform: uppercase; color: var(--psf-cream);
  text-wrap: balance;
}

.psf-single-lede {
  font-family: 'Inter', system-ui, sans-serif; font-size: clamp(18px, 2.2vw, 24px);
  line-height: 1.5; color: rgba(244,239,229,0.85); max-width: 680px; margin: 0 0 32px;
}
.psf-single-lede .wp-block-post-excerpt__more-text { display: none; }

.psf-single-meta {
  gap: 16px; align-items: center;
  border-top: 1px solid rgba(244,239,229,0.12); padding-top: 20px;
}
.psf-single-meta .wp-block-post-author-name { color: var(--psf-copper); }
.psf-single-meta .wp-block-post-author-name::before { content: 'Par '; color: rgba(244,239,229,0.45); }
.psf-single-meta > *:not(:first-child)::before {
  content: '·'; color: rgba(244,239,229,0.35); margin-right: 16px;
}

/* Image à la une */
.psf-single-media-wrap { margin-top: 48px; }
.psf-single-featured { margin: 0; overflow: hidden; background: var(--psf-ink-soft); }
.psf-single-featured img {
  width: 100%; height: 560px; object-fit: cover; display: block;
}

/* Corps de l'article — typographie lisible */
.psf-single-content { font-size: 18px; line-height: 1.75; color: rgba(244,239,229,0.92); }
.psf-single-content > * { margin-top: 0; margin-bottom: 28px; }
.psf-single-content > *:last-child { margin-bottom: 0; }
.psf-single-content p { font-family: 'Inter', system-ui, sans-serif; }
.psf-single-content a { color: var(--psf-copper); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; text-decoration-color: rgba(217,199,168,0.4); }
.psf-single-content a:hover { color: var(--psf-cream); text-decoration-color: var(--psf-cream); }

.psf-single-content h2 {
  font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%;
  font-size: clamp(26px, 3vw, 36px); line-height: 1; letter-spacing: -0.01em;
  text-transform: uppercase; color: var(--psf-cream); margin-top: 56px;
}
.psf-single-content h3 {
  font-family: 'Archivo', sans-serif; font-weight: 800; font-stretch: 75%;
  font-size: clamp(22px, 2.4vw, 28px); line-height: 1.05; text-transform: uppercase;
  color: var(--psf-cream); margin-top: 44px;
}
.psf-single-content h4 {
  font-family: 'Antonio', sans-serif; font-weight: 600; font-size: 18px;
  letter-spacing: 0.04em; text-transform: uppercase; color: var(--psf-copper); margin-top: 36px;
}

.psf-single-content ul, .psf-single-content ol { padding-left: 1.4em; }
.psf-single-content li { margin-bottom: 10px; }
.psf-single-content ul li::marker { color: var(--psf-copper); }
.psf-single-content ol li::marker { color: var(--psf-copper); font-family: 'JetBrains Mono', monospace; }

.psf-single-content blockquote {
  margin: 40px 0; padding: 8px 0 8px 28px; border-left: 3px solid var(--psf-bordeaux);
  font-family: 'Archivo', sans-serif; font-weight: 700; font-stretch: 75%;
  font-size: clamp(22px, 2.6vw, 30px); line-height: 1.2; color: var(--psf-cream);
  text-wrap: balance;
}
.psf-single-content blockquote p { font-family: inherit !important; margin-bottom: 0; }
.psf-single-content blockquote cite {
  display: block; margin-top: 16px; font-family: 'JetBrains Mono', monospace;
  font-size: 12px; font-weight: 400; font-style: normal; letter-spacing: 0.18em;
  text-transform: uppercase; color: var(--psf-copper);
}

.psf-single-content img,
.psf-single-content .wp-block-image { border-radius: 0; }
.psf-single-content figure { margin: 40px 0; }
.psf-single-content figcaption {
  margin-top: 12px; font-family: 'JetBrains Mono', monospace; font-size: 11px;
  letter-spacing: 0.1em; color: rgba(244,239,229,0.5); text-align: center;
}

.psf-single-content pre {
  background: var(--psf-ink-soft); border: 1px solid rgba(244,239,229,0.12);
  padding: 24px; overflow-x: auto; font-family: 'JetBrains Mono', monospace;
  font-size: 14px; line-height: 1.6;
}
.psf-single-content code { font-family: 'JetBrains Mono', monospace; font-size: 0.9em; }
.psf-single-content hr {
  border: 0; border-top: 1px solid rgba(244,239,229,0.12); margin: 48px 0;
}

/* Pied d'article */
.psf-single-foot { gap: 20px; align-items: center; }
.psf-single-tags {
  display: inline-flex; gap: 10px; flex-wrap: wrap; margin: 0;
  font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.14em;
  text-transform: uppercase;
}
.psf-single-tags a {
  color: rgba(244,239,229,0.6); border: 1px solid rgba(244,239,229,0.14);
  padding: 6px 12px; text-decoration: none;
}
.psf-single-tags a:hover { color: var(--psf-copper); border-color: var(--psf-copper); text-decoration: none; }
.psf-single-back { margin: 0; }
.psf-single-back a {
  font-family: 'Antonio', sans-serif; font-size: 13px; letter-spacing: 0.2em;
  text-transform: uppercase; color: var(--psf-copper); text-decoration: none;
}
.psf-single-back a:hover { color: var(--psf-cream); text-decoration: none; }

/* À lire aussi — réutilise les cartes Actualités */
.psf-single-related .is-style-mega-shout { color: var(--psf-cream); }

@media (max-width: 1100px) {
  .psf-single-featured img { height: 420px; }
}
@media (max-width: 640px) {
  .psf-single-featured img { height: 280px; }
  .psf-single-foot { flex-direction: column; align-items: flex-start; }
}

/* -----------------------------------------------------------------------
   Annuaire des structures — carte France + liste synchronisées
   ----------------------------------------------------------------------- */
.psf-filter-bar { position: sticky; top: 0; z-index: 60; background: var(--psf-ink-soft); border-bottom: 1px solid rgba(244,239,229,0.12); padding: 20px 64px; display: flex; flex-direction: column; gap: 16px; }
.psf-filter-search { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.psf-filter-search__input { flex: 1; min-width: 280px; display: flex; align-items: center; gap: 12px; background: var(--psf-ink); border: 1px solid rgba(244,239,229,0.12); padding: 14px 18px; }
.psf-filter-search__input span { font-family: 'Archivo', sans-serif; font-weight: 900; color: var(--psf-copper); font-size: 18px; }
.psf-filter-search__input input { flex: 1; background: transparent; border: 0; outline: 0; color: var(--psf-cream); font-family: 'Antonio', sans-serif; font-size: 16px; letter-spacing: 0.05em; }
.psf-filter-search__input input::placeholder { color: rgba(244,239,229,0.4); text-transform: uppercase; letter-spacing: 0.18em; font-size: 13px; }
.psf-filter-count { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--psf-copper); white-space: nowrap; }
.psf-filter-affiliation { display: flex; gap: 0; border: 1px solid rgba(244,239,229,0.12); }
.psf-filter-affiliation button { background: transparent; border: 0; cursor: pointer; color: var(--psf-cream); font-family: 'Antonio', sans-serif; font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; padding: 14px 18px; border-right: 1px solid rgba(244,239,229,0.12); white-space: nowrap; }
.psf-filter-affiliation button:last-child { border-right: 0; }
.psf-filter-affiliation button.active { background: var(--psf-copper); color: var(--psf-ink); }
.psf-filter-chips { display: flex; gap: 8px; flex-wrap: wrap; }
.psf-filter-chips button { background: transparent; border: 1px solid rgba(244,239,229,0.12); color: var(--psf-cream); padding: 8px 14px; font-family: 'Antonio', sans-serif; font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; cursor: pointer; border-radius: 999px; transition: all 0.2s; }
.psf-filter-chips button:hover { border-color: var(--psf-copper); color: var(--psf-copper); }
.psf-filter-chips button.active { background: var(--psf-bordeaux); color: var(--psf-cream); border-color: var(--psf-bordeaux); }
.psf-view-toggle { display: none; }

.psf-annuaire-layout { display: grid; grid-template-columns: 1fr 1fr; align-items: start; }
.psf-map-col { position: sticky; top: 137px; align-self: start; border-right: 1px solid rgba(244,239,229,0.12); padding: 40px; background: var(--psf-ink-deep); height: calc(100vh - 137px); display: flex; flex-direction: column; }
.psf-map-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 16px; }
.psf-map-head h2 { margin: 0; font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: 28px; text-transform: uppercase; letter-spacing: -0.01em; }
.psf-map-count { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--psf-copper); }
.psf-map-wrap { flex: 1; display: grid; place-items: center; min-height: 0; }
.psf-france-map { width: 100%; height: 100%; max-height: 100%; }
.psf-france-outline { fill: var(--psf-ink-soft); stroke: rgba(244,239,229,0.12); stroke-width: 2; }
.psf-france-grid line { stroke: rgba(244,239,229,0.05); stroke-width: 1; }
.psf-pin { cursor: pointer; }
.psf-pin__halo { fill: var(--psf-bordeaux); opacity: 0.12; transform: scale(0.6); transform-origin: center; transition: opacity 0.2s, transform 0.2s; }
.psf-pin__dot { fill: var(--psf-bordeaux); stroke: var(--psf-cream); stroke-width: 2; }
.psf-pin.noaff .psf-pin__dot { fill: var(--psf-copper); }
.psf-pin.noaff .psf-pin__halo { fill: var(--psf-copper); }
.psf-pin__label { font-family: 'JetBrains Mono', monospace; font-size: 15px; letter-spacing: 0.08em; fill: var(--psf-cream); opacity: 0; transition: opacity 0.2s; text-transform: uppercase; }
.psf-pin:hover .psf-pin__halo, .psf-pin.is-active .psf-pin__halo { opacity: 0.3; transform: scale(1); }
.psf-pin.is-active .psf-pin__dot { fill: var(--psf-cream); }
.psf-pin:hover .psf-pin__label, .psf-pin.is-active .psf-pin__label { opacity: 1; }
.psf-map-legend { display: flex; gap: 20px; margin-top: 16px; flex-wrap: wrap; }
.psf-map-legend span { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.16em; text-transform: uppercase; color: rgba(244,239,229,0.6); display: inline-flex; align-items: center; gap: 7px; }
.psf-map-legend .d { width: 9px; height: 9px; border-radius: 50%; }
.psf-map-legend .d.aff { background: var(--psf-bordeaux); }
.psf-map-legend .d.noaff { background: var(--psf-copper); }

.psf-studios-grid { display: grid; grid-template-columns: 1fr; }
.psf-studio { background: var(--psf-ink); display: flex; flex-direction: column; border-bottom: 1px solid rgba(244,239,229,0.12); transition: background 0.2s; position: relative; margin: 0; }
.psf-studio:hover, .psf-studio.is-active { background: var(--psf-ink-soft); }
.psf-studio.is-active::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--psf-bordeaux); }
.psf-studio.flash { animation: psf-flash 0.9s ease; }
@keyframes psf-flash { 0%, 100% { background: var(--psf-ink-soft); } 30% { background: rgba(200,16,46,0.18); } }
.psf-studio__top { display: flex; align-items: stretch; }
.psf-studio__mono { width: 88px; min-width: 88px; display: grid; place-items: center; font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: 34px; letter-spacing: -0.04em; aspect-ratio: 1; }
.psf-studio__mono.c0 { background: var(--psf-bordeaux); color: var(--psf-cream); }
.psf-studio__mono.c1 { background: var(--psf-ink-soft); color: var(--psf-copper); }
.psf-studio__mono.c2 { background: var(--psf-copper); color: var(--psf-ink); }
.psf-studio__head { flex: 1; padding: 18px 24px; display: flex; flex-direction: column; justify-content: center; gap: 4px; border-bottom: 1px solid rgba(244,239,229,0.12); }
.psf-studio__num { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--psf-copper); }
.psf-studio__name { font-family: 'Archivo', sans-serif; font-weight: 800; font-stretch: 75%; font-size: 22px; line-height: 0.95; letter-spacing: -0.005em; text-transform: uppercase; color: var(--psf-cream); margin: 0; text-wrap: balance; }
.psf-studio__body { padding: 16px 24px 18px 112px; display: flex; flex-direction: column; gap: 12px; }
.psf-studio__loc { display: flex; align-items: center; gap: 8px; font-family: 'Antonio', sans-serif; font-size: 14px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--psf-cream); margin: 0; }
.psf-studio__loc.unknown { color: rgba(244,239,229,0.4); }
.psf-studio__loc .region { font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.16em; color: var(--psf-copper); text-transform: none; }
.psf-studio__disc { display: flex; gap: 6px; flex-wrap: wrap; }
.psf-studio__disc span { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.16em; text-transform: uppercase; padding: 4px 8px; border: 1px solid rgba(244,239,229,0.12); color: rgba(244,239,229,0.7); }
.psf-studio__foot { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding-top: 4px; }
.psf-studio__links { display: flex; gap: 14px; align-items: center; }
.psf-studio__links a { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.12em; color: var(--psf-copper); }
.psf-studio__links a:hover { color: var(--psf-cream); }
.psf-studio__links .disabled { color: rgba(244,239,229,0.25); }
.psf-studio__badge { font-family: 'JetBrains Mono', monospace; font-size: 9px; letter-spacing: 0.2em; text-transform: uppercase; padding: 4px 8px; white-space: nowrap; }
.psf-studio__badge.aff { background: rgba(217,199,168,0.12); color: var(--psf-copper); border: 1px solid var(--psf-copper); }
.psf-studio__badge.noaff { background: transparent; color: rgba(244,239,229,0.4); border: 1px solid rgba(244,239,229,0.2); }
.psf-no-results { padding: 80px 24px; text-align: center; }
.psf-no-results h3 { font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: 40px; text-transform: uppercase; margin: 0 0 12px; }
.psf-no-results p { color: rgba(244,239,229,0.6); margin: 0; }

.psf-api-note { margin: 56px 64px 0; border: 1px dashed var(--psf-copper); padding: 24px 28px; display: flex; gap: 20px; align-items: center; background: rgba(217,199,168,0.04); }
.psf-api-note__icon { font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: 40px; color: var(--psf-copper); line-height: 1; }
.psf-api-note p { margin: 0; font-size: 13.5px; color: rgba(244,239,229,0.8); }
.psf-api-note strong { color: var(--psf-cream); }

@media (max-width: 1100px) {
  .psf-filter-bar { padding-left: 32px; padding-right: 32px; }
  .psf-api-note { margin-left: 32px; margin-right: 32px; }
  .psf-view-toggle { display: flex; gap: 0; border: 1px solid rgba(244,239,229,0.12); }
  .psf-view-toggle button { flex: 1; background: transparent; border: 0; border-right: 1px solid rgba(244,239,229,0.12); color: var(--psf-cream); font-family: 'Antonio', sans-serif; font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase; padding: 12px; cursor: pointer; }
  .psf-view-toggle button:last-child { border-right: 0; }
  .psf-view-toggle button.active { background: var(--psf-bordeaux); color: var(--psf-cream); }
  .psf-annuaire-layout { grid-template-columns: 1fr; }
  .psf-annuaire-layout[data-view="list"] .psf-map-col { display: none; }
  .psf-annuaire-layout[data-view="map"] .psf-list-col { display: none; }
  .psf-map-col { position: relative; top: 0; height: 70vh; border-right: 0; border-bottom: 1px solid rgba(244,239,229,0.12); }
}
@media (max-width: 600px) {
  .psf-studio__body { padding-left: 24px; }
}

/* -----------------------------------------------------------------------
   Résultats des compétitions — year bar, podium, ranking, qualified
   ----------------------------------------------------------------------- */
:root {
  --psf-gold: #D4AF37;
  --psf-silver: #B8B8B8;
  --psf-bronze: #B87333;
}

/* Year selector (sticky) */
.psf-year-bar {
  position: sticky; top: 0; z-index: 50;
  background: var(--psf-ink-soft);
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  padding: 16px 64px;
  display: flex; gap: 0; overflow-x: auto;
}
.psf-year-btn {
  background: transparent;
  border: 0;
  color: var(--psf-cream);
  padding: 12px 24px;
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: 22px;
  letter-spacing: -0.005em;
  cursor: pointer;
  border-right: 1px solid rgba(244, 239, 229, 0.12);
  opacity: 0.5;
  white-space: nowrap;
  display: flex; flex-direction: column; align-items: flex-start; gap: 4px;
  transition: opacity 0.2s, color 0.2s;
  font-variant-numeric: tabular-nums;
}
.psf-year-btn:first-child { padding-left: 0; }
.psf-year-btn:hover { opacity: 0.85; }
.psf-year-btn.active { opacity: 1; color: var(--psf-copper); }
.psf-year-btn .status {
  font-family: 'JetBrains Mono', monospace;
  font-size: 9px; letter-spacing: 0.22em; text-transform: uppercase;
  opacity: 0.7;
  font-weight: 400;
}
.psf-year-btn .status::before { content: "● "; color: var(--psf-bordeaux); }
.psf-year-btn.upcoming .status::before { color: var(--psf-copper); }
.psf-year-btn.pending .status::before { color: rgba(244,239,229,0.3); }

/* Year header */
.psf-year-header {
  padding: 96px 64px 48px;
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  background: var(--psf-ink);
}
.psf-year-header__eyebrow {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--psf-copper); margin: 0;
}
.psf-year-header__big {
  margin: 16px 0 0;
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(140px, 22vw, 360px);
  line-height: 0.82; letter-spacing: -0.025em;
  font-variant-numeric: tabular-nums;
}
.psf-year-header__big .copper { color: var(--psf-copper); }
.psf-year-header__big .smaller {
  font-size: 0.35em;
  margin-left: 0.5em;
  color: var(--psf-cream);
  opacity: 0.7;
  text-transform: uppercase;
  letter-spacing: 0;
  vertical-align: middle;
}

.psf-year-stats {
  margin-top: 48px;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid rgba(244, 239, 229, 0.12);
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-year-stat {
  padding: 24px 24px;
  border-left: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-year-stat:first-child { border-left: 0; padding-left: 0; }
.psf-year-stat__n {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(48px, 5vw, 72px);
  line-height: 0.9; letter-spacing: -0.025em;
  font-variant-numeric: tabular-nums;
}
.psf-year-stat__l {
  margin-top: 8px;
  font-family: 'Antonio', sans-serif;
  font-size: 12px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}

/* Pending / upcoming states */
.psf-pending-state {
  padding: 120px 64px;
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  text-align: center;
}
.psf-pending-state h3 {
  margin: 0 0 16px;
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(40px, 5vw, 64px);
  text-transform: uppercase;
  color: var(--psf-cream);
  letter-spacing: -0.015em;
}
.psf-pending-state h3 .copper { color: var(--psf-copper); }
.psf-pending-state p {
  margin: 0 auto;
  max-width: 480px;
  color: rgba(244, 239, 229, 0.65);
}

/* Discipline filter */
.psf-discipline-bar {
  padding: 24px 64px;
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  background: var(--psf-ink);
  display: flex; gap: 8px; flex-wrap: wrap;
}
.psf-discipline-bar button {
  background: transparent;
  border: 1px solid rgba(244, 239, 229, 0.12);
  color: var(--psf-cream);
  padding: 8px 14px;
  font-family: 'Antonio', sans-serif;
  font-size: 12px; letter-spacing: 0.18em; text-transform: uppercase;
  cursor: pointer;
  border-radius: 999px;
  transition: all 0.2s;
}
.psf-discipline-bar button:hover { border-color: var(--psf-copper); color: var(--psf-copper); }
.psf-discipline-bar button.active {
  background: var(--psf-copper); color: var(--psf-ink); border-color: var(--psf-copper);
}

/* Discipline section */
.psf-discipline {
  padding: 96px 64px;
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-discipline:nth-of-type(even) { background: var(--psf-ink-soft); }
.psf-discipline-head {
  display: flex; justify-content: space-between; align-items: flex-end;
  gap: 32px; flex-wrap: wrap;
  margin-bottom: 56px;
}
.psf-discipline-head__n {
  margin: 0;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-discipline-head h2 {
  margin: 12px 0 0;
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(56px, 8vw, 128px);
  line-height: 0.85; letter-spacing: -0.025em; text-transform: uppercase;
}
.psf-discipline-head .meta {
  text-align: right;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: rgba(244,239,229,0.6);
}

/* Categories */
.psf-category {
  margin-bottom: 56px;
  border-top: 1px solid rgba(244, 239, 229, 0.12);
  padding-top: 32px;
}
.psf-category__head {
  display: flex; justify-content: space-between; align-items: baseline; gap: 24px;
  margin-bottom: 24px;
  flex-wrap: wrap;
}
.psf-category__title {
  margin: 0;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: clamp(24px, 3vw, 38px);
  line-height: 1; letter-spacing: -0.005em; text-transform: uppercase;
}
.psf-level-tag {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.22em;
  padding: 3px 8px;
  margin-right: 12px;
  vertical-align: middle;
  font-weight: 400;
}
.psf-level-tag.amateur { background: var(--psf-ink-soft); border: 1px solid var(--psf-copper); color: var(--psf-copper); }
.psf-level-tag.semi { background: var(--psf-copper); color: var(--psf-ink); }
.psf-level-tag.elite, .psf-level-tag.pro { background: var(--psf-bordeaux); color: var(--psf-cream); }
.psf-category__count {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: rgba(244,239,229,0.55);
}

/* Podium */
.psf-podium {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin-bottom: 12px;
}
.psf-podium--single { grid-template-columns: 1fr; max-width: 480px; }
.psf-podium--two { grid-template-columns: 1fr 1fr; max-width: 720px; }
.psf-medal {
  padding: 24px 24px 20px;
  background: var(--psf-ink);
  border: 1px solid rgba(244, 239, 229, 0.12);
  border-top-width: 3px;
  display: grid;
  grid-template-rows: auto auto auto;
  gap: 8px;
  position: relative;
}
.psf-medal--1 { border-top-color: var(--psf-gold); }
.psf-medal--2 { border-top-color: var(--psf-silver); }
.psf-medal--3 { border-top-color: var(--psf-bronze); }
.psf-medal__top { display: flex; justify-content: space-between; align-items: center; }
.psf-medal__rank {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(40px, 5vw, 64px);
  line-height: 0.85; letter-spacing: -0.025em;
  font-variant-numeric: tabular-nums;
}
.psf-medal--1 .psf-medal__rank { color: var(--psf-gold); }
.psf-medal--2 .psf-medal__rank { color: var(--psf-silver); }
.psf-medal--3 .psf-medal__rank { color: var(--psf-bronze); }
.psf-medal__grade { text-align: right; }
.psf-medal__grade .v {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: 28px; line-height: 1;
  font-variant-numeric: tabular-nums;
  color: var(--psf-cream);
}
.psf-medal__grade .l {
  font-family: 'JetBrains Mono', monospace;
  font-size: 9px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
  margin-top: 2px;
}
.psf-medal__athlete {
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: 18px; line-height: 1.1;
  text-transform: uppercase;
  letter-spacing: -0.005em;
  color: var(--psf-cream);
  text-wrap: balance;
}
.psf-medal__studio {
  margin-top: 4px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(244,239,229,0.55);
}

/* Ranking list (positions 4+) */
.psf-ranking { margin-top: 4px; }
.psf-ranking-row {
  display: grid;
  grid-template-columns: 56px 80px 1fr 2fr;
  gap: 16px;
  padding: 14px 16px;
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  align-items: baseline;
}
.psf-ranking-row:last-child { border-bottom: 0; }
.psf-ranking-row .r {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: 22px; line-height: 1;
  color: rgba(244,239,229,0.7);
  font-variant-numeric: tabular-nums;
}
.psf-ranking-row .g {
  font-family: 'JetBrains Mono', monospace;
  font-size: 13px;
  color: var(--psf-copper);
  font-variant-numeric: tabular-nums;
}
.psf-ranking-row .a {
  font-family: 'Antonio', sans-serif;
  font-weight: 600;
  font-size: 14px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-ranking-row .s {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(244,239,229,0.55);
}

/* Qualified for Worlds */
.psf-qualified {
  padding: 120px 64px;
  background: var(--psf-bordeaux);
  color: var(--psf-cream);
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-qualified-head {
  display: flex; justify-content: space-between; align-items: flex-end;
  margin-bottom: 56px;
  gap: 32px; flex-wrap: wrap;
}
.psf-qualified-head__eyebrow {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: rgba(244,239,229,0.85);
  margin: 0;
}
.psf-qualified-head h2 {
  margin: 14px 0 0;
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(56px, 9vw, 144px);
  line-height: 0.85; letter-spacing: -0.025em; text-transform: uppercase;
}
.psf-q-pill {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  padding: 5px 10px;
  border: 1px solid var(--psf-cream);
  color: var(--psf-cream); border-radius: 999px;
}
.psf-qualified-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  background: rgba(244,239,229,0.25);
  border: 1px solid rgba(244,239,229,0.25);
}
.psf-q-row {
  background: var(--psf-bordeaux);
  padding: 16px 20px;
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 16px;
  align-items: baseline;
}
.psf-q-row .athlete {
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: 18px; line-height: 1.1;
  text-transform: uppercase;
  letter-spacing: -0.005em;
}
.psf-q-row .detail {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase;
  margin-top: 4px;
  color: rgba(244,239,229,0.85);
}
.psf-q-row .status {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  padding: 3px 8px;
  background: var(--psf-cream);
  color: var(--psf-bordeaux);
  white-space: nowrap;
  align-self: start;
}
.psf-q-row .status.reserve {
  background: transparent;
  border: 1px solid var(--psf-cream);
  color: var(--psf-cream);
}

@media (max-width: 1100px) {
  .psf-year-bar, .psf-year-header, .psf-discipline-bar, .psf-discipline, .psf-qualified {
    padding-left: 32px; padding-right: 32px;
  }
  .psf-year-stats { grid-template-columns: repeat(2, 1fr); }
  .psf-year-stat:nth-child(3), .psf-year-stat:nth-child(4) { border-top: 1px solid rgba(244, 239, 229, 0.12); padding-top: 24px; }
  .psf-year-stat:nth-child(3) { border-left: 0; padding-left: 0; }
  .psf-podium { grid-template-columns: 1fr; }
  .psf-ranking-row { grid-template-columns: 40px 64px 1fr 1fr; font-size: 13px; gap: 12px; }
  .psf-qualified-grid { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .psf-year-stats { grid-template-columns: 1fr; }
  .psf-year-stat { padding: 16px 0 !important; border-left: 0 !important; border-top: 1px solid rgba(244, 239, 229, 0.12); }
  .psf-year-stat:first-child { border-top: 0; }
  .psf-ranking-row { grid-template-columns: 32px 56px 1fr; gap: 8px; padding: 12px 8px; }
  .psf-ranking-row .s { grid-column: 2 / -1; padding-left: 0; }
}

/* -----------------------------------------------------------------------
   Partenaires — stats, devenir sponsor, athlete sponsor, sponsors, bronze
   ----------------------------------------------------------------------- */

.psf-part-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  background: var(--psf-ink-soft);
}
.psf-part-stat {
  padding: 40px 32px;
  border-left: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-part-stat:first-child { border-left: 0; padding-left: 64px; }
.psf-part-stat:last-child { padding-right: 64px; }
.psf-part-stat__n {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(64px, 8vw, 112px);
  line-height: 0.85; letter-spacing: -0.025em;
  font-variant-numeric: tabular-nums;
  color: var(--psf-cream);
}
.psf-part-stat__l {
  margin-top: 12px;
  font-family: 'Antonio', sans-serif;
  font-size: 13px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-part-stat__s {
  margin-top: 4px;
  font-size: 12px;
  color: rgba(244, 239, 229, 0.55);
}

/* Devenir sponsor CTAs */
.psf-become-ctas { display: flex; flex-direction: column; gap: 14px; align-items: flex-end; }
.psf-become-btn {
  display: inline-flex; align-items: center; gap: 14px;
  background: var(--psf-cream); color: var(--psf-ink);
  padding: 22px 28px;
  font-family: 'Antonio', sans-serif; font-size: 14px;
  letter-spacing: 0.25em; text-transform: uppercase;
  font-weight: 600;
  white-space: nowrap;
}
.psf-become-btn:hover { background: var(--psf-ink); color: var(--psf-cream); }
.psf-become-btn--ghost { background: transparent; color: var(--psf-cream); border: 1.5px solid var(--psf-cream); }
.psf-become-btn--ghost:hover { background: var(--psf-cream); color: var(--psf-bordeaux); }
.psf-become-btn__pdf {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.22em;
  padding: 3px 7px;
  background: var(--psf-bordeaux); color: var(--psf-cream);
}

/* Athlete sponsor featured */
.psf-athlete-sponsor {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  border: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-athlete-sponsor__visual {
  background: var(--psf-bordeaux); color: var(--psf-cream);
  padding: 48px 40px;
  display: grid;
  grid-template-rows: auto 1fr auto;
  aspect-ratio: 4 / 5;
}
.psf-athlete-sponsor__tag {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  opacity: 0.85;
}
.psf-athlete-sponsor__name {
  align-self: end;
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(56px, 7vw, 96px);
  line-height: 0.85; letter-spacing: -0.025em; text-transform: uppercase;
  margin: 0;
  color: var(--psf-cream);
}
.psf-athlete-sponsor__city {
  margin: 12px 0 0;
  font-family: 'Antonio', sans-serif;
  font-size: 16px; letter-spacing: 0.32em; text-transform: uppercase;
  opacity: 0.85;
}
.psf-athlete-sponsor__body {
  padding: 48px 56px;
  background: var(--psf-ink-soft);
  display: flex; flex-direction: column; gap: 24px;
  justify-content: center;
}
.psf-athlete-sponsor__eyebrow {
  margin: 0;
  font-family: 'Antonio', sans-serif;
  font-size: 12px; font-weight: 500; letter-spacing: 0.32em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-athlete-sponsor__title {
  margin: 0;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: clamp(28px, 3.5vw, 44px);
  line-height: 1; letter-spacing: -0.005em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-athlete-sponsor__bio {
  margin: 0;
  font-size: 15.5px; line-height: 1.65;
  color: rgba(244, 239, 229, 0.85);
}
.psf-athlete-sponsor__meta {
  display: grid;
  grid-template-columns: repeat(3, auto);
  gap: 32px;
  padding-top: 24px;
  border-top: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-athlete-sponsor__k {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-athlete-sponsor__v {
  margin-top: 6px;
  font-family: 'Antonio', sans-serif;
  font-size: 14px; letter-spacing: 0.05em;
  color: var(--psf-cream);
}
.psf-athlete-sponsor__v a { color: var(--psf-cream); }

/* Sponsors cards */
.psf-sponsors-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: rgba(244, 239, 229, 0.12);
  border: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-sponsor {
  background: var(--psf-ink);
  padding: 40px 32px 32px;
  display: flex; flex-direction: column;
  min-height: 460px;
  margin: 0;
}
.psf-sponsor__brand {
  height: 80px;
  margin: 0 0 24px;
  background:
    repeating-linear-gradient(135deg, rgba(217,199,168,0.08) 0 12px, transparent 12px 24px),
    var(--psf-ink-soft);
  display: grid; place-items: center;
  border: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-sponsor__brand-name {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(28px, 3vw, 40px);
  line-height: 1; letter-spacing: -0.01em;
  color: var(--psf-cream);
  text-transform: uppercase;
}
.psf-sponsor__n {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-sponsor__t {
  margin: 12px 0 8px;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: 26px;
  line-height: 1; letter-spacing: -0.005em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-sponsor__tagline {
  font-family: 'Antonio', sans-serif;
  font-size: 12px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
  margin: 0 0 16px;
}
.psf-sponsor__bio {
  margin: 0 0 24px;
  font-size: 13.5px; line-height: 1.6;
  color: rgba(244, 239, 229, 0.78);
}
.psf-sponsor__cta {
  margin-top: auto;
  padding-top: 20px;
  border-top: 1px solid rgba(244, 239, 229, 0.12);
  display: flex; justify-content: space-between; align-items: center;
  font-family: 'JetBrains Mono', monospace;
  font-size: 12px; letter-spacing: 0.08em;
  color: var(--psf-copper);
  gap: 12px;
}
.psf-sponsor__arrow { font-family: 'Archivo', sans-serif; font-size: 20px; }

/* Bronze logo wall */
.psf-bronze-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 1px;
  background: rgba(244, 239, 229, 0.12);
  border: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-bronze {
  background: var(--psf-ink);
  aspect-ratio: 16 / 10;
  padding: 24px 20px;
  display: grid; place-items: center;
  text-align: center;
  transition: background 0.2s ease;
  text-decoration: none;
  color: var(--psf-cream);
  position: relative;
  overflow: hidden;
}
.psf-bronze:hover { background: var(--psf-ink-soft); color: var(--psf-cream); text-decoration: none; }
.psf-bronze__name {
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: clamp(16px, 1.6vw, 24px);
  line-height: 1; letter-spacing: -0.005em;
  text-transform: uppercase;
  text-wrap: balance;
}
.psf-bronze__cat {
  position: absolute;
  top: 12px; left: 12px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 9px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
  opacity: 0.7;
}

@media (max-width: 1100px) {
  .psf-part-stats { grid-template-columns: repeat(2, 1fr); }
  .psf-part-stat:nth-child(1) { padding-left: 32px; }
  .psf-part-stat:nth-child(2) { padding-right: 32px; }
  .psf-part-stat:nth-child(3) {
    padding-left: 32px;
    border-left: 0;
    border-top: 1px solid rgba(244, 239, 229, 0.12);
  }
  .psf-part-stat:nth-child(4) {
    padding-right: 32px;
    border-top: 1px solid rgba(244, 239, 229, 0.12);
  }
  .psf-become-ctas { align-items: flex-start; }
  .psf-athlete-sponsor { grid-template-columns: 1fr; }
  .psf-athlete-sponsor__visual { aspect-ratio: 5 / 3; }
  .psf-athlete-sponsor__body { padding: 32px; }
  .psf-sponsors-grid { grid-template-columns: 1fr; }
  .psf-bronze-grid { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 600px) {
  .psf-part-stats { grid-template-columns: 1fr; }
  .psf-part-stat {
    padding: 24px 32px !important;
    border-left: 0 !important;
    border-top: 1px solid rgba(244, 239, 229, 0.12);
  }
  .psf-part-stat:first-child { border-top: 0; }
  .psf-bronze-grid { grid-template-columns: repeat(2, 1fr); }
}

/* -----------------------------------------------------------------------
   Adhésion ASPTT Premium — price card, QA, 2026 warning, perks, impact
   ----------------------------------------------------------------------- */

/* Price card */
.psf-price-card {
  position: relative;
  border: 1px solid rgba(244, 239, 229, 0.12);
  padding: 32px 32px 28px;
  background: var(--psf-ink-soft);
  margin: 0;
}
.psf-price-card__tag {
  position: absolute; top: 0; right: 0;
  background: var(--psf-bordeaux); color: var(--psf-cream);
  padding: 6px 12px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
}
.psf-price-card__l {
  font-family: 'Antonio', sans-serif;
  font-size: 12px; letter-spacing: 0.32em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-price-card__amount {
  margin-top: 16px;
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(80px, 10vw, 140px);
  line-height: 0.85; letter-spacing: -0.025em;
  font-variant-numeric: tabular-nums;
  color: var(--psf-cream);
}
.psf-price-card__cur {
  color: var(--psf-copper);
  font-size: 0.4em;
  margin-left: 4px;
}
.psf-price-card__per {
  margin: 8px 0 0;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(244, 239, 229, 0.6);
}
.psf-price-card__note {
  margin: 16px 0 0;
  font-size: 13px; line-height: 1.55;
  color: rgba(244, 239, 229, 0.75);
}
.psf-price-card__note strong { color: var(--psf-cream); }

/* 3 questions */
.psf-qa-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: rgba(244, 239, 229, 0.12);
  border: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-qa {
  background: var(--psf-ink);
  padding: 40px 32px;
  display: flex; flex-direction: column;
  min-height: 360px;
}
.psf-qa__n {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: 72px; line-height: 0.85;
  letter-spacing: -0.025em;
  color: var(--psf-bordeaux);
  margin: 0 0 16px;
}
.psf-qa__q {
  margin: 0 0 16px;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: 26px;
  line-height: 1; letter-spacing: -0.005em; text-transform: uppercase;
  color: var(--psf-cream);
  text-wrap: balance;
}
.psf-qa__a {
  margin: 0;
  font-size: 14.5px; line-height: 1.6;
  color: rgba(244, 239, 229, 0.8);
}
.psf-qa__a + .psf-qa__a { margin-top: 12px; }
.psf-qa__a strong { color: var(--psf-cream); }

/* Warning 2026 */
.psf-warn-2026__year {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(160px, 22vw, 320px);
  line-height: 0.82; letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
  color: var(--psf-cream);
}

/* 4 perks */
.psf-perks-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: rgba(244, 239, 229, 0.12);
  border: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-perk {
  background: var(--psf-ink-soft);
  padding: 36px 28px;
  display: flex; flex-direction: column;
  min-height: 280px;
}
.psf-perk__icon {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: 56px; line-height: 0.85;
  color: var(--psf-copper);
  margin-bottom: 24px;
}
.psf-perk__n {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
  margin-bottom: 12px;
}
.psf-perk__t {
  margin: 0 0 12px;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: 24px;
  line-height: 1; letter-spacing: -0.005em; text-transform: uppercase;
  color: var(--psf-cream);
  text-wrap: balance;
}
.psf-perk__d {
  margin: 0;
  font-size: 13.5px; line-height: 1.55;
  color: rgba(244, 239, 229, 0.7);
}

/* 4 verbes impact */
.psf-impact-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border-top: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-impact-step {
  padding: 32px 24px;
  border-right: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-impact-step:last-child { border-right: 0; }
.psf-impact-step__n {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-impact-step__v {
  margin: 18px 0 16px;
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(56px, 6vw, 88px);
  line-height: 0.9; letter-spacing: -0.025em; text-transform: uppercase;
}
.psf-impact-step__v.bordeaux { color: var(--psf-bordeaux); }
.psf-impact-step__v.copper   { color: var(--psf-copper); }
.psf-impact-step__d {
  margin: 0;
  font-size: 14px; line-height: 1.55;
  color: rgba(244, 239, 229, 0.75);
}

.psf-impact-conclusion {
  margin-top: 64px;
  padding: 40px 48px;
  background: var(--psf-ink-soft);
  border-left: 4px solid var(--psf-bordeaux);
}
.psf-impact-conclusion p {
  margin: 0;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: clamp(20px, 2.2vw, 28px);
  line-height: 1.2; letter-spacing: -0.005em;
  color: var(--psf-cream);
  text-transform: uppercase;
  text-wrap: balance;
}
.psf-impact-conclusion p .copper { color: var(--psf-copper); }
.psf-impact-conclusion p .bordeaux { color: var(--psf-bordeaux); }

@media (max-width: 1100px) {
  .psf-qa-grid { grid-template-columns: 1fr; }
  .psf-perks-grid { grid-template-columns: repeat(2, 1fr); }
  .psf-impact-grid { grid-template-columns: repeat(2, 1fr); }
  .psf-impact-step:nth-child(2) { border-right: 0; }
  .psf-impact-step:nth-child(1),
  .psf-impact-step:nth-child(2) { border-bottom: 1px solid rgba(244, 239, 229, 0.12); }
}
@media (max-width: 600px) {
  .psf-perks-grid { grid-template-columns: 1fr; }
  .psf-impact-grid { grid-template-columns: 1fr; }
  .psf-impact-step { border-right: 0 !important; border-bottom: 1px solid rgba(244, 239, 229, 0.12); }
  .psf-impact-step:last-child { border-bottom: 0; }
}

/* -----------------------------------------------------------------------
   Affiliation hub — 3 portals + facts strip
   ----------------------------------------------------------------------- */

.psf-portals {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-portal {
  position: relative;
  padding: 56px 40px 48px;
  min-height: 520px;
  display: flex; flex-direction: column;
  overflow: hidden;
  text-decoration: none;
  transition: padding-bottom 0.25s ease;
}
.psf-portal:not(:last-child) { border-right: 1px solid rgba(244, 239, 229, 0.12); }
.psf-portal--bordeaux { background: var(--psf-bordeaux); color: var(--psf-cream); }
.psf-portal--ink      { background: var(--psf-ink-soft); color: var(--psf-cream); }
.psf-portal--copper   { background: var(--psf-copper); color: var(--psf-ink); }
.psf-portal:hover { text-decoration: none; color: inherit; }

.psf-portal__head {
  display: flex; justify-content: space-between; align-items: flex-start;
  margin-bottom: 8px;
  gap: 16px;
}
.psf-portal__n {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  opacity: 0.8;
}
.psf-portal__tag {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  padding: 4px 10px;
  border: 1px solid currentColor;
  border-radius: 999px;
  opacity: 0.85;
  white-space: nowrap;
}
.psf-portal__big {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(140px, 18vw, 280px);
  line-height: 0.82;
  letter-spacing: -0.04em;
  margin: 24px 0 16px;
  opacity: 0.22;
  user-select: none;
  transition: opacity 0.25s ease;
}
.psf-portal__eyebrow {
  margin: 0;
  font-family: 'Antonio', sans-serif;
  font-weight: 500;
  font-size: 12px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  opacity: 0.75;
}
.psf-portal__title {
  margin: 12px 0 16px;
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(40px, 4.5vw, 56px);
  line-height: 0.9;
  letter-spacing: -0.015em;
  text-transform: uppercase;
  text-wrap: balance;
}
.psf-portal__body {
  margin: 0;
  font-size: 15px;
  line-height: 1.6;
  opacity: 0.92;
  max-width: 340px;
}
.psf-portal__body strong { opacity: 1; font-weight: 600; }
.psf-portal__cta {
  margin-top: auto;
  padding-top: 32px;
  display: flex; justify-content: space-between; align-items: center;
  gap: 14px;
  font-family: 'Antonio', sans-serif;
  font-weight: 600;
  font-size: 14px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  border-top: 1px solid currentColor;
}
.psf-portal__arrow {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: 32px;
  line-height: 1;
  transition: transform 0.25s ease;
}
.psf-portal:hover .psf-portal__arrow { transform: translateX(8px); }
.psf-portal:hover .psf-portal__big { opacity: 0.4; }

/* Facts strip */
.psf-aff-facts {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  background: var(--psf-ink-soft);
}
.psf-aff-fact {
  padding: 40px 32px;
  border-left: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-aff-fact:first-child { border-left: 0; padding-left: 64px; }
.psf-aff-fact:last-child { padding-right: 64px; }
.psf-aff-fact__n {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(56px, 7vw, 88px);
  line-height: 0.9; letter-spacing: -0.025em;
  font-variant-numeric: tabular-nums;
}
.psf-aff-fact__l {
  margin-top: 12px;
  font-family: 'Antonio', sans-serif;
  font-size: 13px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-aff-fact__s {
  margin-top: 4px;
  font-size: 12px;
  color: rgba(244, 239, 229, 0.55);
}

@media (max-width: 1100px) {
  .psf-portals { grid-template-columns: 1fr; }
  .psf-portal { min-height: 380px; }
  .psf-portal:not(:last-child) {
    border-right: 0;
    border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  }
  .psf-aff-facts { grid-template-columns: repeat(2, 1fr); }
  .psf-aff-fact:nth-child(1) { padding-left: 32px; }
  .psf-aff-fact:nth-child(2) { padding-right: 32px; }
  .psf-aff-fact:nth-child(3) {
    padding-left: 32px;
    border-left: 0;
    border-top: 1px solid rgba(244, 239, 229, 0.12);
  }
  .psf-aff-fact:nth-child(4) {
    padding-right: 32px;
    border-top: 1px solid rgba(244, 239, 229, 0.12);
  }
}
@media (max-width: 600px) {
  .psf-aff-facts { grid-template-columns: 1fr; }
  .psf-aff-fact {
    padding: 24px 32px !important;
    border-left: 0 !important;
    border-top: 1px solid rgba(244, 239, 229, 0.12);
  }
  .psf-aff-fact:first-child { border-top: 0; }
}

/* -----------------------------------------------------------------------
   Licence athlète — comparateur + passeport + warning + comps + refund
   ----------------------------------------------------------------------- */

/* Comparator grid */
.psf-lic-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: rgba(244, 239, 229, 0.12);
  border: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-lic {
  background: var(--psf-ink);
  padding: 48px 40px;
  display: flex; flex-direction: column;
  position: relative;
  margin: 0;
}
.psf-lic--recommended {
  background: var(--psf-ink-soft);
  border-top: 4px solid var(--psf-bordeaux);
}
.psf-lic__badge {
  position: absolute; top: -1px; right: 0;
  padding: 8px 14px;
  background: var(--psf-bordeaux);
  color: var(--psf-cream);
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
}
.psf-lic__n {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-lic__title {
  margin: 12px 0 24px;
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(40px, 5vw, 64px);
  line-height: 0.9; letter-spacing: -0.015em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-lic__desc {
  margin: 0 0 32px;
  font-size: 15px; line-height: 1.65;
  color: rgba(244, 239, 229, 0.85);
}
.psf-lic__desc strong { color: var(--psf-cream); }

.psf-lic__prices {
  display: grid;
  grid-template-columns: 1fr 1fr;
  border-top: 1px solid rgba(244, 239, 229, 0.12);
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  margin-bottom: 32px;
}
.psf-lic__price {
  padding: 24px 0;
  text-align: center;
  border-right: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-lic__price:last-child { border-right: 0; }
.psf-lic__who {
  font-family: 'Antonio', sans-serif;
  font-size: 11px; letter-spacing: 0.32em; text-transform: uppercase;
  color: var(--psf-copper);
  margin-bottom: 8px;
}
.psf-lic__amount {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: 56px; line-height: 0.9;
  letter-spacing: -0.02em;
  color: var(--psf-cream);
  font-variant-numeric: tabular-nums;
}
.psf-lic__cur {
  font-size: 24px;
  margin-left: 2px;
  color: var(--psf-copper);
}
.psf-lic__per {
  margin-top: 6px;
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(244, 239, 229, 0.55);
}

.psf-lic__perks {
  margin: 0 0 32px;
  padding: 0;
  list-style: none;
}
.psf-lic__perks li {
  padding: 10px 0 10px 28px;
  position: relative;
  font-size: 14px; line-height: 1.5;
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  color: rgba(244, 239, 229, 0.85);
}
.psf-lic__perks li:last-child { border-bottom: 0; }
.psf-lic__perks li::before {
  content: "+"; position: absolute; left: 0; top: 8px;
  color: var(--psf-copper);
  font-family: 'Archivo', sans-serif; font-weight: 900;
  font-size: 18px; line-height: 1;
}
.psf-lic__perks li.minus::before { content: "−"; color: rgba(244, 239, 229, 0.4); }

.psf-lic__cta {
  margin-top: auto;
  display: inline-flex; align-items: center; gap: 14px;
  padding: 18px 24px;
  font-family: 'Antonio', sans-serif;
  font-size: 14px; letter-spacing: 0.25em; text-transform: uppercase;
  background: var(--psf-cream); color: var(--psf-ink);
  font-weight: 600;
  align-self: flex-start;
}
.psf-lic__cta:hover { background: var(--psf-bordeaux); color: var(--psf-cream); }
.psf-lic--recommended .psf-lic__cta { background: var(--psf-bordeaux); color: var(--psf-cream); }
.psf-lic--recommended .psf-lic__cta:hover { background: var(--psf-cream); color: var(--psf-ink); }

/* Passport visual */
.psf-passport-visual {
  position: relative;
  aspect-ratio: 1 / 1.4;
  background: var(--psf-bordeaux);
  color: var(--psf-cream);
  padding: 32px;
  display: grid;
  grid-template-rows: auto 1fr auto;
}
.psf-passport-visual__mono {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.32em; text-transform: uppercase;
  opacity: 0.85;
}
.psf-passport-visual__big {
  align-self: center;
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(80px, 12vw, 180px);
  line-height: 0.85;
  text-align: center;
  letter-spacing: -0.04em;
}
.psf-passport-visual__foot {
  display: flex; justify-content: space-between;
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
}

/* Warning access grid */
.psf-lic-access-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  margin-top: 48px;
  border-top: 1px solid rgba(244, 239, 229, 0.4);
}
.psf-lic-access {
  padding: 32px 0;
  border-bottom: 1px solid rgba(244, 239, 229, 0.4);
  padding-right: 32px;
}
.psf-lic-access:nth-child(2n) {
  padding-left: 32px;
  padding-right: 0;
  border-left: 1px solid rgba(244, 239, 229, 0.4);
}
.psf-lic-access__who {
  font-family: 'Antonio', sans-serif;
  font-size: 12px; letter-spacing: 0.32em; text-transform: uppercase;
  color: rgba(244, 239, 229, 0.85);
}
.psf-lic-access__what {
  margin: 12px 0 0;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: 28px;
  line-height: 1; letter-spacing: -0.005em; text-transform: uppercase;
}

/* Competitions grid */
.psf-comps-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: rgba(244, 239, 229, 0.12);
  border: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-comp {
  background: var(--psf-ink);
  padding: 32px 28px;
  display: flex; flex-direction: column;
  min-height: 320px;
}
.psf-comp__when {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-comp__name {
  margin: 16px 0 8px;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: 30px;
  line-height: 1; letter-spacing: -0.005em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-comp__loc {
  font-family: 'Antonio', sans-serif;
  font-size: 14px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-comp__note {
  margin: 16px 0 0;
  font-size: 13.5px; line-height: 1.55;
  color: rgba(244, 239, 229, 0.65);
}
.psf-comp__foot {
  margin-top: auto;
  padding-top: 24px;
  border-top: 1px solid rgba(244, 239, 229, 0.12);
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  display: flex; justify-content: space-between; gap: 12px;
}
.psf-comp__season { color: var(--psf-copper); }
.psf-comp__season.next { color: rgba(244, 239, 229, 0.55); }

/* Refund grid */
.psf-refund-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: rgba(244, 239, 229, 0.12);
  border: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-refund-card {
  background: var(--psf-ink-soft);
  padding: 36px 32px;
}
.psf-refund-card__symbol {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: 64px; line-height: 0.85;
  margin-bottom: 16px;
}
.psf-refund-card--yes .psf-refund-card__symbol { color: var(--psf-copper); }
.psf-refund-card--no .psf-refund-card__symbol { color: var(--psf-bordeaux); }
.psf-refund-card__label {
  margin: 0;
  font-family: 'Antonio', sans-serif;
  font-size: 12px; letter-spacing: 0.32em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-refund-card__title {
  margin: 8px 0 16px;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: 32px;
  line-height: 1; letter-spacing: -0.005em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-refund-card ul { margin: 0; padding: 0; list-style: none; }
.psf-refund-card ul li {
  padding: 10px 0 10px 24px;
  position: relative;
  font-size: 14px; line-height: 1.55;
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  color: rgba(244, 239, 229, 0.85);
}
.psf-refund-card ul li:last-child { border-bottom: 0; }
.psf-refund-card--yes ul li::before {
  content: "·"; position: absolute; left: 0; top: 4px;
  color: var(--psf-copper); font-weight: 900; font-size: 22px;
}
.psf-refund-card--no ul li::before {
  content: "×"; position: absolute; left: 0; top: 8px;
  color: var(--psf-bordeaux); font-weight: 800; font-size: 14px;
}

.psf-validity {
  margin-top: 48px;
  padding: 32px;
  border: 1px solid var(--psf-copper);
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 32px;
  align-items: center;
  background: rgba(217, 199, 168, 0.05);
}
.psf-validity__icon {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: 80px;
  color: var(--psf-copper);
  line-height: 1;
}
.psf-validity__label {
  margin: 0;
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-validity__title {
  margin: 6px 0 0;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: 24px;
  line-height: 1.1; text-transform: uppercase;
  color: var(--psf-cream);
}

@media (max-width: 1100px) {
  .psf-lic-grid { grid-template-columns: 1fr; }
  .psf-comps-grid { grid-template-columns: 1fr; }
  .psf-refund-grid { grid-template-columns: 1fr; }
  .psf-lic-access-grid { grid-template-columns: 1fr; }
  .psf-lic-access:nth-child(2n) { padding-left: 0; border-left: 0; }
}
@media (max-width: 600px) {
  .psf-lic__prices { grid-template-columns: 1fr; }
  .psf-lic__price { border-right: 0; border-bottom: 1px solid rgba(244, 239, 229, 0.12); }
  .psf-lic__price:last-child { border-bottom: 0; }
  .psf-validity { grid-template-columns: 1fr; gap: 16px; text-align: center; }
}

/* -----------------------------------------------------------------------
   Documents et politiques
   ----------------------------------------------------------------------- */

/* Stats strip */
.psf-docs-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-docs-stat {
  padding: 32px 24px;
  border-left: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-docs-stat:first-child { border-left: 0; padding-left: 64px; }
.psf-docs-stat:last-child { padding-right: 64px; }
.psf-docs-stat__n {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(56px, 7vw, 96px);
  line-height: 0.9; letter-spacing: -0.025em;
  font-variant-numeric: tabular-nums;
}
.psf-docs-stat__l {
  margin-top: 12px;
  font-family: 'Antonio', sans-serif;
  font-size: 14px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-docs-stat__s {
  margin-top: 4px;
  font-size: 12px;
  color: rgba(244, 239, 229, 0.55);
}

/* Doc grid */
.psf-doc-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: rgba(244, 239, 229, 0.12);
  border: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-doc-grid--3 { grid-template-columns: repeat(3, 1fr); }
.psf-doc-grid--1 { grid-template-columns: 1fr; }
.psf-doc {
  background: var(--psf-ink);
  padding: 32px 28px 28px;
  display: flex; flex-direction: column;
  min-height: 280px;
  position: relative;
  margin: 0;
}
.psf-docs-cat--alt .psf-doc { background: var(--psf-ink-soft); }
.psf-doc__head {
  display: flex; justify-content: space-between; align-items: flex-start;
  margin-bottom: 32px;
  gap: 16px;
}
.psf-doc__n {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-doc__fmt {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase;
  padding: 4px 8px;
  border: 1px solid var(--psf-copper);
  color: var(--psf-copper);
  background: transparent;
}
.psf-doc__fmt--web {
  color: var(--psf-bordeaux);
  border-color: var(--psf-bordeaux);
}
.psf-doc__title {
  margin: 0;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: 26px;
  line-height: 1; letter-spacing: -0.005em; text-transform: uppercase;
  color: var(--psf-cream);
  text-wrap: balance;
}
.psf-doc__meta {
  margin: 16px 0 0;
  font-size: 13px; line-height: 1.55;
  color: rgba(244, 239, 229, 0.6);
}
.psf-doc__foot {
  margin-top: auto;
  padding-top: 24px;
  border-top: 1px solid rgba(244, 239, 229, 0.12);
  display: flex; justify-content: space-between; align-items: center;
  gap: 12px;
}
.psf-doc__date {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.18em; text-transform: uppercase;
  color: rgba(244, 239, 229, 0.55);
}
.psf-doc__status {
  font-family: 'JetBrains Mono', monospace;
  font-size: 10px; letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--psf-copper);
  display: inline-flex; align-items: center; gap: 6px;
}
.psf-doc__status::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%;
  background: var(--psf-copper);
  box-shadow: 0 0 0 3px rgba(217, 199, 168, 0.18);
}

@media (max-width: 1100px) {
  .psf-docs-stats { grid-template-columns: repeat(2, 1fr); }
  .psf-docs-stat:nth-child(1) { padding-left: 32px; }
  .psf-docs-stat:nth-child(2) { padding-right: 32px; }
  .psf-docs-stat:nth-child(3) {
    padding-left: 32px;
    border-left: 0;
    border-top: 1px solid rgba(244, 239, 229, 0.12);
  }
  .psf-docs-stat:nth-child(4) {
    padding-right: 32px;
    border-top: 1px solid rgba(244, 239, 229, 0.12);
  }
  .psf-doc-grid,
  .psf-doc-grid--3 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 600px) {
  .psf-docs-stats { grid-template-columns: 1fr; }
  .psf-docs-stat {
    padding: 24px 32px !important;
    border-left: 0 !important;
    border-top: 1px solid rgba(244, 239, 229, 0.12);
  }
  .psf-docs-stat:first-child { border-top: 0; }
  .psf-doc-grid,
  .psf-doc-grid--3 { grid-template-columns: 1fr; }
}

/* -----------------------------------------------------------------------
   Anti-Doping page
   ----------------------------------------------------------------------- */

/* Hero strike effect */
.psf-strike { position: relative; display: inline-block; }
.psf-strike::after {
  content: ""; position: absolute; left: 0; right: 0; top: 52%;
  height: 18px; background: var(--psf-bordeaux);
  transform: skewY(-3deg); z-index: -1; opacity: 0.85;
}
.psf-antidoping-hero {
  background:
    linear-gradient(180deg, rgba(11,30,63,0.85) 0%, rgba(11,30,63,1) 100%),
    repeating-linear-gradient(135deg, rgba(200,16,46,0.08) 0 24px, transparent 24px 56px);
}
.psf-antidoping-title { font-size: clamp(72px, 14vw, 220px) !important; }

/* Timeline (4 dates clés) */
.psf-timeline-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
}
.psf-timeline-step {
  border-left: 1px solid rgba(244, 239, 229, 0.12);
  padding: 24px 24px;
}
.psf-timeline-step:last-child { border-right: 1px solid rgba(244, 239, 229, 0.12); }
.psf-timeline-step__n {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-timeline-step__year {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(80px, 9vw, 140px);
  line-height: 0.85; letter-spacing: -0.025em;
  margin-top: 16px;
  font-variant-numeric: tabular-nums;
}
.psf-timeline-step__label {
  margin-top: 18px;
  font-family: 'Antonio', sans-serif;
  font-size: 16px; letter-spacing: 0.22em; text-transform: uppercase;
}
.psf-timeline-step__desc {
  margin: 6px 0 0;
  font-size: 13.5px; line-height: 1.55;
  color: rgba(244, 239, 229, 0.6);
}

/* -----------------------------------------------------------------------
   Notre histoire — intro year, timeline verticale, chiffres
   ----------------------------------------------------------------------- */
.psf-hist-intro__year { font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: clamp(140px,20vw,300px); line-height: 0.8; letter-spacing: -0.03em; color: var(--psf-cream); font-variant-numeric: tabular-nums; }

.psf-tl { border-top: 1px solid rgba(244,239,229,0.12); }
.psf-tl-row { display: grid; grid-template-columns: 280px 1fr; gap: 48px; padding: 48px 0; border-bottom: 1px solid rgba(244,239,229,0.12); align-items: start; transition: background 0.2s; }
.psf-tl-row:hover { background: var(--psf-ink-soft); }
.psf-tl-year { font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: clamp(72px,9vw,140px); line-height: 0.82; letter-spacing: -0.03em; font-variant-numeric: tabular-nums; }
.psf-tl-row:nth-child(odd) .psf-tl-year { color: var(--psf-copper); }
.psf-tl-row:nth-child(even) .psf-tl-year { color: var(--psf-bordeaux); }
.psf-tl-body { padding-top: 12px; }
.psf-tl-tag { font-family: 'JetBrains Mono', monospace; font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--psf-copper); }
.psf-tl-body h3 { margin: 14px 0 12px; font-family: 'Archivo', sans-serif; font-weight: 800; font-stretch: 75%; font-size: clamp(24px,3vw,40px); line-height: 1; letter-spacing: -0.01em; text-transform: uppercase; color: var(--psf-cream); text-wrap: balance; }
.psf-tl-body p { margin: 0; font-size: 16px; line-height: 1.65; color: rgba(244,239,229,0.8); max-width: 680px; }
.psf-tl-body p strong { color: var(--psf-cream); }

.psf-hist-figures-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: rgba(244,239,229,0.12); border: 1px solid rgba(244,239,229,0.12); }
.psf-hist-figure { background: var(--psf-ink); padding: 40px 32px; min-height: 220px; display: flex; flex-direction: column; }
.psf-hist-figure .n { font-family: 'Archivo', sans-serif; font-weight: 900; font-stretch: 75%; font-size: clamp(48px,6vw,88px); line-height: 0.85; letter-spacing: -0.03em; font-variant-numeric: tabular-nums; }
.psf-hist-figure .n .s { font-size: 0.42em; color: var(--psf-copper); }
.psf-hist-figure .lbl { margin-top: 14px; font-family: 'Antonio', sans-serif; font-size: 14px; letter-spacing: 0.18em; text-transform: uppercase; color: var(--psf-cream); }
.psf-hist-figure .sub { margin-top: 6px; font-size: 13px; line-height: 1.5; color: rgba(244,239,229,0.6); }

@media (max-width: 1100px) {
  .psf-tl-row { grid-template-columns: 1fr; gap: 8px; padding: 36px 0; }
  .psf-tl-year { font-size: 64px; }
  .psf-hist-figures-grid { grid-template-columns: 1fr; }
}

/* Roles cards (Athletes / Coachs / Organisateurs) */
.psf-roles { display: flex; flex-direction: column; gap: 16px; margin-top: 32px; }
.psf-role {
  padding: 16px 20px;
  border-left: 3px solid var(--psf-bordeaux);
  background: rgba(11, 30, 63, 0.5);
}
.psf-role span {
  display: block; margin-bottom: 4px;
  font-family: 'Antonio', sans-serif; font-weight: 500;
  font-size: 11px; letter-spacing: 0.32em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-role p { margin: 0; font-size: 14.5px; line-height: 1.55; color: rgba(244, 239, 229, 0.85); }
.psf-role p strong { color: var(--psf-cream); }

/* 7 étapes du contrôle */
.psf-process-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  border-top: 1px solid rgba(244, 239, 229, 0.12);
  border-left: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-process-step {
  padding: 36px 28px 32px;
  border-right: 1px solid rgba(244, 239, 229, 0.12);
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  display: flex; flex-direction: column;
  min-height: 320px;
  background: var(--psf-ink);
}
.psf-process-step--wide { grid-column: span 3; }
.psf-process-step__n {
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: 96px; line-height: 0.85; letter-spacing: -0.025em;
  color: var(--psf-bordeaux);
  margin: 0 0 24px;
}
.psf-process-step__t {
  margin: 0 0 12px;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: 26px;
  line-height: 1; letter-spacing: -0.005em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-process-step ul {
  margin: 0; padding: 0; list-style: none;
  font-size: 13.5px; line-height: 1.55;
  color: rgba(244, 239, 229, 0.75);
}
.psf-process-step ul li {
  padding: 6px 0 6px 14px;
  position: relative;
}
.psf-process-step ul li::before {
  content: "·"; position: absolute; left: 0; top: 2px;
  color: var(--psf-copper); font-weight: 800; font-size: 16px;
}

/* Rights vs Responsibilities */
.psf-rights {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1px;
  background: rgba(244, 239, 229, 0.12);
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-rights-card {
  background: var(--psf-ink-soft);
  padding: 96px 64px;
  display: flex; flex-direction: column; gap: 24px;
}
.psf-rights-card__eyebrow {
  margin: 0;
  font-family: 'Antonio', sans-serif; font-weight: 500;
  font-size: 12px; letter-spacing: 0.32em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-rights-card__title {
  margin: 0;
  font-family: 'Archivo', sans-serif;
  font-weight: 900; font-stretch: 75%;
  font-size: clamp(40px, 5vw, 72px);
  line-height: 0.9; letter-spacing: -0.02em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-rights-card ul { margin: 0; padding: 0; list-style: none; }
.psf-rights-card ul li {
  padding: 14px 0;
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
  font-size: 15px; line-height: 1.55;
  color: rgba(244, 239, 229, 0.85);
  display: flex; gap: 12px;
}
.psf-rights-card ul li:last-child { border-bottom: 0; }
.psf-rights-card ul li::before {
  content: attr(data-n);
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.16em;
  color: var(--psf-copper);
  min-width: 32px; padding-top: 4px;
}

/* Sanctions warning */
.psf-sanctions { position: relative; overflow: hidden; }
.psf-strike-thick {
  text-decoration: line-through;
  text-decoration-thickness: 8px;
  text-decoration-color: var(--psf-cream);
}
.psf-sanctions-grid {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr 1fr;
  gap: 48px;
  margin-top: 56px;
}
.psf-sanctions-lead {
  margin: 0;
  font-size: 17px; line-height: 1.6;
  color: rgba(244, 239, 229, 0.92);
  max-width: 420px;
}
.psf-sanctions-lead strong { color: var(--psf-cream); }
.psf-sanctions-item {
  border-top: 1px solid rgba(244, 239, 229, 0.4);
  padding-top: 20px;
}
.psf-sanctions-item__n {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: rgba(244, 239, 229, 0.7);
}
.psf-sanctions-item h4 {
  margin: 12px 0 8px;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: 26px;
  line-height: 1; letter-spacing: -0.005em; text-transform: uppercase;
}
.psf-sanctions-item p {
  margin: 0;
  font-size: 13.5px; line-height: 1.55;
  color: rgba(244, 239, 229, 0.85);
}

/* Contact CTA */
.psf-contact-cta__right {
  display: flex; flex-direction: column; gap: 14px; align-items: flex-end;
}
.psf-contact-cta__mail {
  font-family: 'JetBrains Mono', monospace;
  font-size: 16px; letter-spacing: 0.1em;
  color: var(--psf-copper);
  border-bottom: 1px solid currentColor;
  padding-bottom: 4px;
}

@media (max-width: 1100px) {
  .psf-timeline-grid { grid-template-columns: repeat(2, 1fr); }
  .psf-timeline-step:nth-child(2) { border-right: 1px solid rgba(244, 239, 229, 0.12); }
  .psf-process-grid { grid-template-columns: repeat(2, 1fr); }
  .psf-process-step--wide { grid-column: span 2; }
  .psf-rights { grid-template-columns: 1fr; }
  .psf-rights-card { padding: 48px 32px; }
  .psf-sanctions-grid { grid-template-columns: 1fr 1fr; }
  .psf-contact-cta__right { align-items: flex-start; }
}
@media (max-width: 600px) {
  .psf-timeline-grid { grid-template-columns: 1fr; }
  .psf-process-grid { grid-template-columns: 1fr; }
  .psf-process-step--wide { grid-column: span 1; }
  .psf-sanctions-grid { grid-template-columns: 1fr; }
}

/* -----------------------------------------------------------------------
   Page hero (Comité, etc.)
   ----------------------------------------------------------------------- */
.psf-page-hero {
  border-bottom: 1px solid rgba(244, 239, 229, 0.08);
}
.psf-page-hero .wp-block-post-title {
  font-family: 'Archivo', sans-serif !important;
  font-weight: 900;
  font-stretch: 75%;
  text-transform: uppercase;
  letter-spacing: -0.02em;
}

/* -----------------------------------------------------------------------
   Donate
   ----------------------------------------------------------------------- */
.psf-donate { overflow: hidden; }
.psf-donate-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 56px;
}
.psf-donate-row.wp-block-columns > .wp-block-column { margin: 0; min-width: 0; }
.psf-donate-row.wp-block-columns > .wp-block-column:first-child { flex: 1 1 0% !important; }
.psf-donate-row.wp-block-columns > .wp-block-column:last-child { flex: 0 0 auto !important; width: max-content !important; }
.psf-donate .wp-block-button__link { white-space: nowrap; }

/* CTA rows (titre + colonne "auto" qui serre un bouton/badge).
   WordPress résout le flex-basis:auto de ces colonnes en pleine largeur de ligne,
   ce qui affame la colonne sœur (titre écrasé à 1 lettre/ligne). On force la
   colonne "auto" à se dimensionner sur son contenu — la colonne fluide voisine
   garde son flex:1 1 0 natif et remplit le reste.
   Couvre : donate, annuaire (join-cta), adhesion, membre-collectif, partenaires. */
.psf-section .wp-block-columns > .wp-block-column[style*="flex-basis:auto"] {
  flex-grow: 0 !important;
  flex-shrink: 0 !important;
  width: max-content !important;
  max-width: 100%;
}

/* -----------------------------------------------------------------------
   Footer
   ----------------------------------------------------------------------- */
.psf-footer h4 { margin: 0 0 20px; }
.psf-footer-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.psf-footer-list li a {
  font-family: 'Antonio', sans-serif;
  font-size: 14px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--psf-cream);
  opacity: 0.8;
}
.psf-footer-list li a:hover { opacity: 1; }
.psf-socials .wp-block-social-link {
  background: transparent !important;
  border: 1px solid rgba(244, 239, 229, 0.25);
  border-radius: 50%;
}

/* -----------------------------------------------------------------------
   Responsive — mobile-first overrides
   ----------------------------------------------------------------------- */
@media (max-width: 1100px) {
  :root { --psf-edge: 32px; }
  .psf-hero { min-height: 580px; }
  .psf-actions-grid > .wp-block-column { min-height: 280px; }
  .psf-actions-grid .psf-action-title { font-size: 28px; margin-top: 36px; }
  .psf-event {
    grid-template-columns: 96px auto 1fr;
    grid-template-areas:
      "date poster title"
      "date poster loc"
      "date poster status";
    gap: 14px 16px;
    align-items: start;
    padding-left: 16px;
    padding-right: 16px;
  }
  .psf-event__date { grid-area: date; flex-direction: column; align-items: flex-start; gap: 4px; }
  .psf-event__body { grid-area: title; }
  .psf-event__loc { grid-area: loc; font-size: 14px; }
  .psf-event__status { grid-area: status; }
  .psf-event__poster { grid-area: poster; align-self: center; width: 92px; height: 128px; }
  .psf-event__poster.is-empty { width: 0; }
  .psf-event__cta { display: none; }
  .psf-event__day { font-size: 48px; }
  .psf-event__title { font-size: 22px; }
  .psf-athletes-grid { grid-template-columns: repeat(2, 1fr); }
  .psf-journal-grid,
  .psf-journal-query .wp-block-post-template { grid-template-columns: 1fr; }
}

/* -----------------------------------------------------------------------
   Navigation mobile — overlay hamburger (≤980px)
   On force le bloc Navigation à passer en hamburger dès la tablette
   (WordPress ne bascule par défaut qu'à 600px), et on style proprement
   le bouton, l'overlay, les liens et les sous-menus.
   ----------------------------------------------------------------------- */
@media (max-width: 980px) {
  /* Barre utilitaire masquée sur mobile — ses liens passent dans l'overlay.
     !important pour battre la règle de layout flex générée par WordPress
     (.is-layout-flex { display:flex }) de même spécificité. */
  .psf-topbar { display: none !important; }

  /* La sous-barre reste une seule ligne : marque à gauche, hamburger à droite */
  .psf-sub-header {
    flex-wrap: nowrap;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
  }
  .psf-brand { flex: 1 1 auto; min-width: 0; }
  .psf-brand-tagline { display: none; }

  /* Force le hamburger et masque la liste inline tant que l'overlay est fermé */
  .psf-main-nav.wp-block-navigation .wp-block-navigation__responsive-container-open {
    display: flex !important;
    color: var(--psf-cream);
    padding: 8px;
    margin: 0;
  }
  .psf-main-nav.wp-block-navigation .wp-block-navigation__responsive-container-open svg {
    width: 30px; height: 30px; fill: currentColor;
  }
  .psf-main-nav.wp-block-navigation
    .wp-block-navigation__responsive-container:not(.is-menu-open) {
    display: none !important;
  }
}

/* Overlay ouvert — s'applique à toutes les largeurs où il est déclenché */
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open {
  padding: 24px clamp(20px, 6vw, 48px) 48px;
  background: var(--psf-ink) !important;
}
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-close {
  color: var(--psf-cream);
  top: 22px; right: 20px;
}
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-close svg {
  width: 30px; height: 30px; fill: currentColor;
}
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-dialog {
  margin-top: 8px;
}
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container {
  gap: 0;
}
/* Liens de premier niveau : grands, pleine largeur, séparés par un filet */
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__container > .wp-block-navigation-item {
  width: 100%;
  border-bottom: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation-item__content {
  display: block;
  width: 100%;
  padding: 15px 0 !important;
  font-size: 19px;
  letter-spacing: 0.12em;
}
/* Sous-menus : pas de boîte (on supprime les « carrés »), juste un retrait */
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container {
  position: static !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 0 12px !important;
  min-width: 0 !important;
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
}
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container > .wp-block-navigation-item {
  border-bottom: 0;
}
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  padding: 10px 0 10px 18px !important;
  font-size: 16px;
  letter-spacing: 0.1em;
  color: rgba(244, 239, 229, 0.72);
}
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
  background: transparent !important;
  color: var(--psf-copper) !important;
}
/* Icône de chevron du sous-menu, bien alignée à droite */
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-icon {
  margin-left: auto;
}

/* Liens « accès rapides » : repris de la barre utilitaire.
   Cachés partout par défaut, révélés uniquement dans l'overlay mobile. */
.psf-nav-mobile-extra { display: none !important; }
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .psf-nav-mobile-extra { display: block !important; }
/* Filet de séparation avant le premier accès rapide */
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .psf-nav-mobile-extra--first {
  margin-top: 22px;
  border-top: 1px solid rgba(244, 239, 229, 0.12);
}
/* Accès rapides plus petits que le menu principal, pour bien les distinguer */
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .psf-nav-mobile-extra .wp-block-navigation-item__content {
  padding: 10px 0 !important;
  font-size: 13px;
  letter-spacing: 0.16em;
  color: rgba(244, 239, 229, 0.7);
}
/* Met en avant le CTA Contact en couleur copper */
.psf-main-nav .wp-block-navigation__responsive-container.is-menu-open
  .psf-nav-mobile-extra--cta .wp-block-navigation-item__content {
  color: var(--psf-copper);
}

@media (max-width: 720px) {
  .psf-hero-row { flex-wrap: wrap; }
  .psf-hero-event { border-left: 0; padding-left: 0; }
  .psf-actions-grid,
  .psf-numbers-grid { flex-direction: column !important; }
  .psf-actions-grid > .wp-block-column,
  .psf-numbers-grid > .wp-block-column { width: 100% !important; flex-basis: 100% !important; }
  /* En colonne unique, le contenu détermine la hauteur : on supprime le vide */
  .psf-actions-grid > .wp-block-column { min-height: 0; }
  .psf-actions-grid .psf-action-title { margin-top: 18px; }
  /* Galerie : vignettes plus petites sur mobile (le reste vient du style de base) */
  .psf-photowall-marquee,
  .psf-mq-track { gap: 10px; }
  .psf-mq-row--1 .psf-mq-track { margin-left: -56px; }
  .psf-mq-row--2 .psf-mq-track { margin-left: -28px; }
  .psf-photowall-marquee .psf-photowall-cell {
    width: 46vw;
    max-width: 220px;
    height: 150px;
  }
  .psf-athletes-grid { grid-template-columns: 1fr; }
  .psf-stream-cols > .wp-block-column { flex-basis: 100% !important; width: 100% !important; }
  .psf-donate-row { flex-direction: column; align-items: flex-start; }
  .psf-donate-row.wp-block-columns > .wp-block-column,
  .psf-donate-row.wp-block-columns > .wp-block-column:first-child,
  .psf-donate-row.wp-block-columns > .wp-block-column:last-child { flex: 0 0 auto !important; width: 100% !important; }
}

/* -----------------------------------------------------------------------
   Hub de section — grille de cartes-liens vers les sous-pages
   (réutilisé par /federation et /competitions)
   ----------------------------------------------------------------------- */

.psf-hub-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1px;
  background: rgba(244, 239, 229, 0.12);
  border: 1px solid rgba(244, 239, 229, 0.12);
}
.psf-hub-card {
  position: relative;
  display: flex; flex-direction: column;
  background: var(--psf-ink);
  color: var(--psf-cream);
  padding: 48px 40px 40px;
  min-height: 280px;
  text-decoration: none;
  transition: background 0.2s, color 0.2s;
}
.psf-hub-card:hover { background: var(--psf-ink-soft); }
.psf-hub-card__n {
  font-family: 'JetBrains Mono', monospace;
  font-size: 11px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-hub-card__t {
  margin: 16px 0 0;
  font-family: 'Archivo', sans-serif;
  font-weight: 800; font-stretch: 75%;
  font-size: clamp(30px, 3.4vw, 44px);
  line-height: 0.95; letter-spacing: -0.01em; text-transform: uppercase;
  color: var(--psf-cream);
}
.psf-hub-card__desc {
  margin: 16px 0 0;
  font-size: 14.5px; line-height: 1.6;
  color: rgba(244, 239, 229, 0.7);
}
.psf-hub-card__arrow {
  margin-top: auto;
  padding-top: 28px;
  display: flex; justify-content: space-between; align-items: center;
  font-family: 'Antonio', sans-serif;
  font-size: 12px; letter-spacing: 0.22em; text-transform: uppercase;
  color: var(--psf-copper);
}
.psf-hub-card__arrow span:last-child {
  font-family: 'Archivo', sans-serif; font-size: 22px;
  transition: transform 0.2s;
}
.psf-hub-card:hover .psf-hub-card__arrow { color: var(--psf-cream); }
.psf-hub-card:hover .psf-hub-card__arrow span:last-child { transform: translateX(6px); }

@media (max-width: 700px) {
  .psf-hub-grid { grid-template-columns: 1fr; }
  .psf-hub-card { min-height: 0; padding: 36px 28px 32px; }
}
