/*
Theme Name: Overall Project — Direction Iridescente
Theme URI: https://overallproject.ca
Author: Nüflvr / Simple Créatif
Description: Thème custom bilingue pour Projet Universel (Overall Project), OBNL culturel de Gatineau. Direction Iridescente v1.0 — sombre uniquement, tokens dans tokens/tokens.css.
Version: 1.7.3
Requires PHP: 7.4
Text Domain: overall-project
*/

/* Toutes les décisions visuelles vivent dans tokens/tokens.css (règle d'or du design system).
   Ce fichier ne contient que les micro-ajustements propres à WordPress. */

.pu-prose > * + * { margin-top: 1em; }
.pu-prose h2, .pu-prose h3 { margin-top: 1.6em; }
.pu-prose ul, .pu-prose ol { padding-left: 1.2em; }
.pu-prose img { max-width: 100%; height: auto; }
.wp-block-gallery { margin: 0; }
img.pu-cover { width: 100%; height: 100%; object-fit: cover; display: block; }
.pu-form .wpforms-container { margin: 0; }

/* Halo coloré des séries — classe utilisée par le kit mais absente de tokens.css (correctif). */
.pu-serie-halo {
  position: relative;
  border-radius: var(--pu-radius-md, 12px);
  background:
    radial-gradient(60% 80% at 50% 50%, color-mix(in srgb, var(--pu-serie-default) 38%, transparent), transparent 75%),
    var(--pu-surface-1, rgba(255,255,255,.03));
}

/* Partenaire niveau Présentateur : mise en avant. */
.pu-partner--lead { grid-column: span 2; }
.pu-partner--lead img { max-height: 72px; }

/* ============================================================
   COUCHE LAYOUT v1.1.0 — proportions desktop uniformisées
   Corrige le « full-bleed » v1.0.2 qui explosait sur écrans larges
   (grilles 7-9 colonnes, cartes géantes, moitiés de page vides).
   ============================================================ */

/* 1. LARGEUR DE PAGE UNIQUE — constante sur toutes les sections et pages.
   Une seule variable règle l'alignement du contenu : sections, heros,
   nav et footer partagent exactement le même bord de texte.
   Contenu cappé à --pu-maxw (1280px, token du kit) et centré. */
:root { --pu-page-pad: max(var(--pu-gutter), calc((100% - var(--pu-maxw)) / 2)); }

.pu-container { max-width: none; padding-inline: var(--pu-page-pad); }
.pu-hero__inner,
.pu-nav,
.pu-menu__panel,
.pu-footer__cta,
.pu-footer__grid,
.pu-footer__legal { padding-inline: var(--pu-page-pad); }

/* 2. Grilles : auto-FILL (les cartes ne s'étirent plus quand il y a
   peu d'items) + minimums réalistes. Le conteneur borne les colonnes. */
.pu-grid-cards { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); }
.pu-grid-tiles { grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); }

/* Grille vidéos / vignettes 16:9 : min plus large pour des thumbnails lisibles. */
.pu-grid-videos { display: grid; gap: var(--pu-space-4); grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); }

/* 3. Heros : hauteurs fluides (évite les bandeaux écrasés ou démesurés). */
.pu-hero--home { min-height: clamp(520px, 62vh, 700px); }

/* 4. Colonne de lecture : les blocs de prose restent à une mesure lisible
   et le split contact garde des proportions saines dans le conteneur cappé. */
.pu-prose { max-width: 70ch; }

/* 5. Split « profil » (fiche artiste) : le portrait est la petite colonne,
   le contenu respire — l'inverse du split par défaut (contenu | aside). */
@media (min-width: 860px) {
  .pu-split--profile { grid-template-columns: minmax(280px, 400px) 1fr; }
}

/* ============================================================
   PASSE 1 — uniformisation du design system
   ============================================================ */

/* Rythme vertical : les titres de section ont une marge cohérente
   (remplace les margin-bottom inline disparates). */
.pu-section-sm > h2:first-child,
.pu-section > h2:first-child { margin-bottom: var(--pu-space-4); }

/* Empilements : gap par défaut aligné sur l'échelle (12px). */
.pu-stack { gap: var(--pu-space-3); }

/* États interactifs uniformes : toute carte-lien lève et colore sa bordure,
   le titre prend l'accent de série au survol. */
.pu-card--link:hover .pu-card__title { color: var(--pu-serie-default); }
.pu-card--link:hover { text-decoration: none; }
.pu-item:hover .pu-item__arrow, .pu-card--link:hover .pu-item__arrow { color: var(--pu-serie-default); transform: translateX(3px); }
.pu-item__arrow { transition: color var(--pu-dur-fast) var(--pu-ease), transform var(--pu-dur-fast) var(--pu-ease); }

/* Motion (docs/motion.md) : entrée douce des cartes, respect strict
   de prefers-reduced-motion (déjà géré globalement par tokens.css). */
@media (prefers-reduced-motion: no-preference) {
  .pu-card, .pu-item { will-change: transform; }
}

/* ============================================================
   v1.2.0 — MARQUE (vrai logo), HEADER & FOOTER
   ============================================================ */

/* Logo officiel (globe « THE OVERALL PROJECT · EST 2022 », blanc sur transparent). */
.pu-logo { display: block; height: auto; }
.pu-nav__brand:hover .pu-logo { animation: pu-logo-spin 9s linear infinite; }
@keyframes pu-logo-spin { to { transform: rotate(360deg); } }

/* Header : lien actif souligné à la signature holo. */
.pu-nav__links a { position: relative; }
.pu-nav__links a[aria-current="page"]::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: 4px; height: 2px;
  background: var(--pu-holo); background-size: var(--pu-holo-size);
  animation: pu-iri var(--pu-holo-anim) linear infinite; border-radius: 2px;
}

/* Footer : le bloc marque respire, liens à hauteur tactile. */
.pu-footer__col a { min-height: 34px; }

/* Signature Nüflvr (barre légale) : discrète, s'allume au survol. */
.pu-sig { display: inline-flex; align-items: center; gap: 8px; color: var(--pu-text-3); opacity: .6; transition: opacity var(--pu-dur-fast) var(--pu-ease); min-height: var(--pu-hit); }
.pu-sig:hover { opacity: 1; text-decoration: none; color: var(--pu-text-1); }
.pu-sig img { height: 14px; width: auto; display: block; }

/* ============================================================
   v1.3.0 — TOGGLE LANGUE (segmented control propre et proportionnel)
   ============================================================ */
.pu-lang {
  border: 1px solid var(--pu-border-strong);
  border-radius: var(--pu-radius-pill);
  padding: 3px; gap: 2px;
  background: rgba(255,255,255,.05);
  overflow: visible;
}
.pu-lang a {
  min-height: 0; height: 30px; min-width: 40px;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 0 10px; border-radius: var(--pu-radius-pill);
  font-family: var(--pu-font-mono); font-size: var(--pu-fs-xs); font-weight: 700;
  letter-spacing: .1em; color: var(--pu-text-3);
  transition: background var(--pu-dur-fast) var(--pu-ease), color var(--pu-dur-fast) var(--pu-ease);
}
.pu-lang a:hover { color: var(--pu-text-1); text-decoration: none; background: rgba(255,255,255,.08); }
.pu-lang a[aria-current="true"] { background: var(--pu-ink); color: var(--pu-text-inverse); }

/* Sous-navigation d'ancres (pages longues : À propos, etc.) */
.pu-anchor-nav { display: flex; flex-wrap: wrap; gap: var(--pu-space-2); margin-top: var(--pu-space-5); }
html { scroll-behavior: smooth; }
[id] { scroll-margin-top: calc(var(--pu-nav-h) + 16px); }

/* ============================================================
   v1.4.0 — PASSE 3.1 : responsive mobile fin
   ============================================================ */
@media (max-width: 720px) {
  .pu-hero--home { min-height: 78svh; }
  .pu-hero__inner { padding-block: var(--pu-space-6); }
  .pu-item { grid-template-columns: 52px 1fr auto; padding: var(--pu-space-3) var(--pu-space-4); }
  .pu-card--featured .pu-card__body { padding: var(--pu-space-5); }
  .pu-split { gap: var(--pu-space-5); }
  .pu-section { padding-block: var(--pu-space-7); }
  .pu-partner--lead { grid-column: auto; }
  .pu-partners__row { gap: var(--pu-space-5); }
  .pu-anchor-nav .pu-pill { min-height: 38px; }
  .pu-footer__cta { padding-block: var(--pu-space-6); }
}
/* Le CTA nav cède la place au burger sur petit écran (le menu mobile l'a déjà). */
@media (max-width: 560px) {
  .pu-nav__actions > .pu-btn--primary { display: none; }
}

/* PASSE 3.2 : états de filtres et feedback. */
.pu-pill[aria-current="true"] { pointer-events: auto; }
.pu-pills .pu-pill { transition: transform var(--pu-dur-fast) var(--pu-ease); }
.pu-pills .pu-pill:active { transform: scale(.97); }

/* ============================================================
   v1.5.0 — REDLINE #2 (analyse designer) + kit v2 (patch-live-v1)
   Le patch officiel est chargé séparément (tokens/patch-live-v1.css).
   Ici : les compléments propres au thème.
   ============================================================ */

/* 7. Carte « En vedette » équilibrée : l'image couvre la hauteur du texte. */
.pu-card--featured .pu-media { aspect-ratio: auto; height: 100%; min-height: 280px; }

/* Nits hero accueil : recadrage (tête du sujet) + scrim allégé à gauche. */
.pu-hero--home .pu-hero__img img { object-position: center 30%; }
.pu-hero--home .pu-hero__scrim { background: linear-gradient(to top, rgba(6,6,7,.92) 6%, rgba(6,6,7,.18) 58%, rgba(6,6,7,.32)); }

/* Nit nav : la marque respire (logo 48px, mot-symbole plus présent). */
.pu-nav .pu-logo { width: 48px; height: 48px; }
.pu-nav__wordmark { font-size: 1rem; letter-spacing: .04em; white-space: nowrap; }
@media (max-width: 560px) {
  .pu-nav .pu-logo { width: 38px; height: 38px; }
  .pu-nav__wordmark { font-size: .8rem; }
}

/* 5. Rangées d'événements : plus denses, méta à droite. */
.pu-item { padding: var(--pu-space-4) var(--pu-space-5); }
.pu-item__meta { text-align: right; }
.pu-item__meta .pu-mono { display: block; color: var(--pu-text-3); }

/* Cartes vidéos/artistes : titres blancs (pas « faux lien » teal). */
a.pu-card { color: var(--pu-text-1); }
a.pu-card .pu-card__title { color: var(--pu-text-1); }

/* ============================================================
   v1.5.7 — HERO ACCUEIL PLEINE HAUTEUR + overlay lisible
   ============================================================ */
.pu-hero--home {
  min-height: 100svh;                 /* expérience plein écran */
  display: flex; align-items: flex-end;
}
/* Voile de lisibilité renforcé : dégradé bas + vignette latérale + assombrissement doux. */
.pu-hero--home .pu-hero__scrim {
  background:
    linear-gradient(to top, rgba(6,6,7,.92) 0%, rgba(6,6,7,.40) 34%, rgba(6,6,7,0) 66%, rgba(6,6,7,.22) 100%),
    radial-gradient(130% 80% at 15% 92%, rgba(6,6,7,.5), transparent 62%);
}
/* Couche holo un peu plus présente sur le hero d'accueil (effet « cool » sans nuire au texte). */
.pu-hero--home .pu-hero__holo { opacity: .55; mix-blend-mode: screen; }
/* Le bloc texte respire en bas, ombres portées pour détacher du fond. */
.pu-hero--home .pu-hero__inner { padding-bottom: clamp(48px, 9vh, 110px); width: 100%; }
.pu-hero--home .pu-hero-title { text-shadow: 0 2px 30px rgba(0,0,0,.6), 0 1px 4px rgba(0,0,0,.5); }
.pu-hero--home .pu-lead { text-shadow: 0 1px 12px rgba(0,0,0,.7); }
/* Indice de défilement discret. */
.pu-hero--home::after {
  content: ''; position: absolute; left: 50%; bottom: 18px; width: 22px; height: 34px;
  transform: translateX(-50%); border: 2px solid rgba(255,255,255,.35); border-radius: 12px; opacity: .7;
}
.pu-hero--home::before {
  content: ''; position: absolute; left: 50%; bottom: 40px; width: 3px; height: 8px; z-index: 1;
  transform: translateX(-50%); background: rgba(255,255,255,.7); border-radius: 2px;
  animation: pu-scroll-hint 1.8s ease-in-out infinite;
}
@keyframes pu-scroll-hint { 0%,100% { opacity:0; transform: translate(-50%,0) } 50% { opacity:1; transform: translate(-50%,6px) } }
@media (max-width: 720px) { .pu-hero--home { min-height: 92svh; } .pu-hero--home::after, .pu-hero--home::before { display: none; } }
@media (prefers-reduced-motion: reduce) { .pu-hero--home::before { animation: none; } }

/* Bloc compteurs d'impact — mieux réparti (fix « squeeze à droite » signalé). */
.pu-impact { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); text-align: center; gap: var(--pu-space-5) var(--pu-space-6); }
.pu-impact > div { padding: var(--pu-space-2) 0; }
.pu-impact__num { white-space: nowrap; }   /* garde « +30 000 $ » sur une seule ligne */

/* ============================================================
   v1.6.0 — PASSE UX : décor photos live + responsive tablette
   ============================================================ */

/* EN-TÊTES DE PAGES décorés d'une photo live (très voilée, texte intact). */
.pu-pagehead { position: relative; overflow: hidden; }
.pu-pagehead__bg {
  position: absolute; inset: 0; z-index: 0; pointer-events: none;
  background-size: cover; background-position: center 30%;
  opacity: .5; filter: brightness(1.3);
  -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,.95) 20%, transparent 96%);
  mask-image: linear-gradient(to bottom, rgba(0,0,0,.95) 20%, transparent 96%);
}
.pu-pagehead__bg::after {
  content: ''; position: absolute; inset: 0;
  background: var(--pu-holo-soft); background-size: var(--pu-holo-size);
  mix-blend-mode: soft-light; opacity: .8;
}
.pu-pagehead > *:not(.pu-pagehead__bg) { position: relative; z-index: 1; }

/* Fallback des heros de série SANS visuel : photo live de la série, voilée. */
.pu-hero .pu-hero__img .pu-live-fallback {
  width: 100%; height: 100%; background-size: cover; background-position: center;
  filter: brightness(1.35) saturate(1.05);
}
/* Scrim allégé quand le hero repose sur une photo live de repli. */
.pu-hero__img:has(.pu-live-fallback) ~ .pu-hero__scrim { opacity: .72; }

/* États vides décorés : la carte .pu-empty peut porter une photo discrète. */
.pu-empty { position: relative; overflow: hidden; }
.pu-empty__bg { position: absolute; inset: 0; background-size: cover; background-position: center; opacity: .14; pointer-events: none; }
.pu-empty > *:not(.pu-empty__bg) { position: relative; }

/* RESPONSIVE TABLETTE (721–1080px) : densité intermédiaire. */
@media (min-width: 721px) and (max-width: 1080px) {
  .pu-grid-tiles { grid-template-columns: repeat(auto-fill, minmax(185px, 1fr)); }
  .pu-grid-videos { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
  .pu-section { padding-block: var(--pu-space-7); }
  .pu-card--featured .pu-card__body { padding: var(--pu-space-6); }
  .pu-hero--home { min-height: 88svh; }
}

/* Cartes séries (accueil) : logos CENTRÉS et entiers — jamais recadrés.
   v1.6.3 : centrage forcé (fix mobile — logos décalés dans leur carte). */
.pu-card--serie .pu-media,
.pu-card--serie .pu-serie-halo {
  display: flex !important; align-items: center !important; justify-content: center !important;
  text-align: center;
  /* v1.7.3 : la largeur du média découle de height+aspect-ratio → le bloc
     restait calé à gauche dans les cartes larges. On le centre. */
  margin-inline: auto !important;
}
.pu-card--serie .pu-media img {
  display: block; width: auto !important; height: auto !important;
  max-width: 82%; max-height: 82px; object-fit: contain; margin: 0 auto !important;
}

/* ============================================================
   v1.2.0 — VARIANTES OFFICIELLES DE CARTES (extension du système)
   Documentées dans le kit : à reporter dans guide-de-style.
   ============================================================ */

/* CARTE ARTISTE — portrait 1:1, nom en overlay au survol (photo à venir). */
.pu-card--artiste .pu-square { position: relative; }
.pu-card--artiste .pu-square::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(to top, color-mix(in srgb, var(--pu-serie-default) 55%, transparent), transparent 45%);
  opacity: 0; transition: opacity var(--pu-dur-base) var(--pu-ease);
}
.pu-card--artiste:hover .pu-square::after { opacity: .35; }

/* CARTE VIDÉO — bouton lecture discret qui s'affirme au survol. */
.pu-card--video .pu-play {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
}
.pu-card--video .pu-play > span {
  width: 52px; height: 52px; padding: 0; border-radius: 50%;
  transform: scale(.92); opacity: .85;
  transition: transform var(--pu-dur-base) var(--pu-ease-out), opacity var(--pu-dur-base) var(--pu-ease);
}
.pu-card--video:hover .pu-play > span { transform: scale(1.06); opacity: 1; }
.pu-card--video .pu-media img { transition: transform var(--pu-dur-slow) var(--pu-ease-out); }
.pu-card--video:hover .pu-media img { transform: scale(1.04); }

/* CARTE ÉVÉNEMENT-LISTE (.pu-item) — pastille date structurée. */
.pu-item__date b { display: block; font-size: 1.15rem; color: var(--pu-text-1); }

/* CARTE SÉRIE — liseré d'accent en pied de carte. */
.pu-card--serie { position: relative; }
.pu-card--serie::after {
  content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 3px;
  background: var(--pu-serie-default); opacity: .65;
  transition: opacity var(--pu-dur-fast) var(--pu-ease);
}
.pu-card--serie:hover::after { opacity: 1; }

/* CARTE CTA (panneau holo) — fond animé voilé, contenu centré. */
.pu-card--cta { position: relative; overflow: hidden; text-align: center; }
.pu-card--cta > .pu-hero__holo { opacity: .5; }

/* 1. Formulaires WPForms stylés aux tokens (rendu .pu-input / .pu-btn--primary). */
.pu-form input[type="text"],
.pu-form input[type="email"],
.pu-form input[type="tel"],
.pu-form textarea {
  width: 100%; min-height: var(--pu-hit);
  background: var(--pu-bg); border: 1px solid var(--pu-border-strong); border-radius: var(--pu-radius-md);
  padding: var(--pu-space-3) var(--pu-space-4); color: var(--pu-text-1); font-size: var(--pu-fs-sm);
  font-family: inherit;
}
.pu-form input:focus, .pu-form textarea:focus { outline: 2px solid var(--pu-focus); outline-offset: 2px; border-color: transparent; }
.pu-form textarea { min-height: 140px; resize: vertical; }
.pu-form .wpforms-field { margin-bottom: var(--pu-space-4); }
.pu-form .wpforms-field-label {
  display: block; margin-bottom: 6px; color: var(--pu-text-3);
  font-family: var(--pu-font-mono); font-size: var(--pu-fs-xs); letter-spacing: .08em; text-transform: uppercase;
}
.pu-form button[type="submit"] {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: var(--pu-hit); padding: var(--pu-space-3) var(--pu-space-6);
  border: 0; border-radius: var(--pu-radius-pill); cursor: pointer;
  font-family: var(--pu-font-display); font-weight: 700; font-size: var(--pu-fs-sm);
  background: var(--pu-holo); background-size: var(--pu-holo-size); color: var(--pu-text-inverse);
  animation: pu-iri var(--pu-holo-anim) linear infinite;
}
.pu-form .wpforms-error { color: var(--pu-danger, #ff8f8f); font-size: var(--pu-fs-xs); }
.pu-form .wpforms-confirmation-container-full { background: var(--pu-surface-1); border: 1px solid var(--pu-border); border-radius: var(--pu-radius-md); padding: var(--pu-space-4); color: var(--pu-text-1); }

/* Variables WPForms (leur CSS moderne gagne sur les sélecteurs — on surcharge à la source). */
.pu-form .wpforms-container,
.pu-form .wpforms-container .wpforms-form {
  --wpforms-field-background-color: var(--pu-bg);
  --wpforms-field-border-color: var(--pu-border-strong);
  --wpforms-field-border-radius: var(--pu-radius-md);
  --wpforms-field-text-color: var(--pu-text-1);
  --wpforms-label-color: var(--pu-text-3);
  --wpforms-label-sublabel-color: var(--pu-text-3);
  --wpforms-label-error-color: #ff8f8f;
  --wpforms-button-background-color: transparent;
  --wpforms-button-text-color: var(--pu-text-inverse);
}
.pu-form input[type="text"],
.pu-form input[type="email"],
.pu-form input[type="tel"],
.pu-form textarea {
  background: var(--pu-bg) !important;
  border: 1px solid var(--pu-border-strong) !important;
  color: var(--pu-text-1) !important;
  border-radius: var(--pu-radius-md) !important;
}



/* ============================================================
   v1.7.0 — POST-MIGRATION overallproject.ca
   1) Hero accueil : panneau verre pour lisibilité garantie
   2) Navigation : hamburger + sidebar à TOUTES les tailles
   3) Partenaires : logos blancs sur transparent, présence accrue
   ============================================================ */

/* --- 1. HERO : panneau verre (lisible sur photo claire OU sombre) --- */
.pu-hero__panel {
  position: relative;
  max-width: 660px;
  padding: clamp(22px, 3.6vw, 40px) clamp(22px, 3.2vw, 42px);
  border-radius: 24px;
  background: linear-gradient(165deg, rgba(8,8,10,.60), rgba(8,8,10,.34));
  -webkit-backdrop-filter: blur(16px) saturate(1.2);
  backdrop-filter: blur(16px) saturate(1.2);
  border: 1px solid rgba(255,255,255,.10);
  box-shadow: 0 30px 70px rgba(0,0,0,.38), inset 0 1px 0 rgba(255,255,255,.06);
}
/* Liseré holo discret sur l'arête supérieure du panneau. */
.pu-hero__panel::before {
  content: ''; position: absolute; left: 24px; right: 55%; top: 0; height: 2px;
  background: var(--pu-holo); background-size: var(--pu-holo-size);
  animation: pu-iri var(--pu-holo-anim) linear infinite;
  border-radius: 2px; opacity: .8;
}
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .pu-hero__panel { background: rgba(8,8,10,.82); }
}
/* Le scrim global peut rester doux : le panneau porte la lisibilité. */
.pu-hero--home .pu-hero__scrim {
  background:
    linear-gradient(to top, rgba(6,6,7,.88) 0%, rgba(6,6,7,.30) 38%, rgba(6,6,7,0) 68%, rgba(6,6,7,.26) 100%),
    radial-gradient(130% 80% at 15% 92%, rgba(6,6,7,.42), transparent 62%);
}
@media (max-width: 720px) {
  .pu-hero__panel { max-width: none; border-radius: 18px; }
}

/* --- 2. NAV : hamburger sidebar permanent (menu trop long en ligne) --- */
/* Le blur du header (containing block pour position:fixed) emprisonnait la
   sidebar : on déplace le backdrop-filter vers un pseudo sans descendants. */
.pu-nav { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
.pu-nav::before {
  content: ''; position: absolute; inset: 0; z-index: -1;
  -webkit-backdrop-filter: blur(14px) saturate(1.1); backdrop-filter: blur(14px) saturate(1.1);
}
.pu-nav__links { display: none; }          /* liens inline retirés à toutes les tailles */
.pu-burger { display: inline-flex; cursor: pointer; }
.pu-burger span { transition: transform .28s var(--pu-ease), opacity .2s var(--pu-ease); }
.pu-menu { position: relative; }
.pu-menu summary { list-style: none; }
.pu-menu summary::-webkit-details-marker { display: none; }
/* Burger -> X quand ouvert (au-dessus de l'overlay). */
.pu-menu[open] summary { position: relative; z-index: 120; }
.pu-menu[open] .pu-burger span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.pu-menu[open] .pu-burger span:nth-child(2) { opacity: 0; }
.pu-menu[open] .pu-burger span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
/* Overlay assombri derrière la sidebar. */
.pu-menu[open]::before {
  content: ''; position: fixed; inset: 0; z-index: 110;
  background: rgba(4,4,6,.55);
  -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px);
}
/* Panneau : sidebar fixe pleine hauteur, glisse depuis la droite. */
.pu-menu__panel {
  position: fixed; top: 0; right: 0; bottom: 0; left: auto; z-index: 115;
  width: min(390px, 92vw);
  margin: 0; border-radius: 0;
  padding: calc(var(--pu-nav-h, 72px) + 26px) 30px 34px !important;
  flex-direction: column; align-items: stretch; gap: 4px;
  overflow-y: auto; overscroll-behavior: contain;
  background: color-mix(in srgb, var(--pu-bg) 88%, transparent);
  -webkit-backdrop-filter: blur(20px) saturate(1.2); backdrop-filter: blur(20px) saturate(1.2);
  border-left: 1px solid var(--pu-border-strong);
  box-shadow: -40px 0 80px rgba(0,0,0,.45);
  animation: pu-slide-in .3s var(--pu-ease);
}
@supports not (background: color-mix(in srgb, red, blue)) {
  .pu-menu__panel { background: rgba(10,10,12,.94); }
}
@keyframes pu-slide-in { from { transform: translateX(40px); opacity: 0; } to { transform: none; opacity: 1; } }
@media (prefers-reduced-motion: reduce) { .pu-menu__panel { animation: none; } }
.pu-menu__panel a {
  font-size: 1.02rem; font-weight: 600;
  padding: 13px 16px; border-radius: 12px;
  color: var(--pu-text-2);
}
.pu-menu__panel a:hover { background: rgba(255,255,255,.06); color: var(--pu-text-1); }
.pu-menu__panel a[aria-current="page"] { color: var(--pu-text-1); }
.pu-menu__panel .pu-btn--primary { margin-top: auto !important; }

/* --- 3. PARTENAIRES : logos livrés blancs sur fond transparent --- */
.pu-partner img { filter: none; opacity: .85; transition: opacity var(--pu-dur-fast) var(--pu-ease), transform var(--pu-dur-fast) var(--pu-ease); }
.pu-partner:hover img { opacity: 1; transform: translateY(-2px); }

/* Version du thème : 1.7.0 */
