/* ==========================================================================
   Accueil 2027 — maquette Figma « Defs27_Webdesign_Home_v3 » (2033:2, 1440 × 5230)
   Unité --u : 1 px de maquette à 1440 px, proportionnelle en dessous, plafonnée à 1 px au-delà.
   ========================================================================== */

.dfl {
  --u: min(1px, calc(100vw / 1440));
  --bleu: #1825d2;
  --jaune: #fff734;
  --rose: #ff2e92;
  --blanc: #fff;
  --display: 'dirtystains', 'Inter', Impact, sans-serif;
  --texte: 'Inter', Helvetica, Arial, sans-serif;
  --conteneur: calc(1146 * var(--u));

  position: relative;
  overflow-x: clip;
  background: var(--blanc);
  color: var(--bleu);
  font-family: var(--texte);
  font-size: 16px;
  line-height: 1.25;
  -webkit-font-smoothing: antialiased;
}

/* En-tête 2027 posé sur les pages Divi (entete-global.php) : conteneur sans hauteur ni fond, au-dessus du contenu Divi
 * (sections, modules sticky) ; l'en-tête y reste en position absolue sur la première section bleue. */
.dfl.dfl-global { position: relative; z-index: 99990; height: 0; overflow: visible; background: none; }
.dfl-entete-bande .dfl.dfl-global { height: auto; }
.dfl-entete-bande .dfl-global .dfl-entete:not(.is-collant):not(.is-ouvert) {
  position: relative;
  padding-bottom: calc(30 * var(--u));
  background: var(--bleu) url('texture-bleue.webp') center / cover no-repeat;
}

/* Remise à zéro des styles Divi hérités (p, h*, a, ul).
   Le CSS personnalisé Divi force h1/h2/h3 en !important : taille des titres via --fs. */
.dfl h1, .dfl h2, .dfl h3 { font-size: var(--fs, 1em) !important; font-weight: 400 !important; padding-bottom: 0 !important; }
.dfl *, .dfl *::before, .dfl *::after { box-sizing: border-box; }
/* :where() : la remise à zéro pèse une seule classe, les marges posées par classe plus bas l'emportent. */
.dfl :where(p, h1, h2, h3, ul, li, figure) { margin: 0; padding: 0; }
.dfl :where(h1, h2, h3) { color: inherit; }
.dfl :where(ul) { list-style: none; }
.dfl :where(a) { color: inherit; text-decoration: none; }
.dfl :where(img) { display: block; max-width: 100%; height: auto; }
.dfl :where(button) { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
.dfl [hidden] { display: none !important; }
.dfl .screen-reader-text {
  position: absolute !important; width: 1px; height: 1px; overflow: hidden;
  clip: rect(1px, 1px, 1px, 1px); white-space: nowrap;
}
.dfl svg { display: block; }

.dfl-conteneur { position: relative; width: var(--conteneur); margin-inline: auto; }

.dfl-display {
  font-family: var(--display);
  font-weight: 400;
  text-transform: uppercase;
  line-height: 1.1;
}

.dfl-surtitre {
  font-weight: 900;
  font-size: calc(16 * var(--u));
  letter-spacing: 0.05em;
  text-transform: uppercase;
  line-height: calc(19 * var(--u));
}

.dfl-titre-section { --fs: calc(50 * var(--u)); margin-top: calc(11 * var(--u)); line-height: calc(55 * var(--u)); }

.dfl-fond-bleu {
  position: relative;
  background: var(--bleu) url('texture-bleue.webp') center / cover no-repeat;
  color: var(--blanc);
}

/* Bloc titre de section + chapô aligné à droite (souvenirs). */
.dfl-entete-section {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: calc(40 * var(--u));
}
.dfl-entete-section__chapo {
  max-width: calc(368 * var(--u));
  margin-bottom: calc(16 * var(--u));
  font-weight: 700;
  font-size: calc(16 * var(--u));
  line-height: calc(19 * var(--u));
  text-align: right;
}

/* ---------------------------------------------------------------- Boutons (pilules, texte Dirty Stains 12 px) */
.dfl-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: calc(188 * var(--u));
  height: calc(56 * var(--u));
  padding: 0 calc(28 * var(--u));
  border-radius: 60px;
  font-family: var(--display);
  font-weight: 400;
  font-size: calc(12 * var(--u));
  line-height: 1;
  text-transform: uppercase;
  white-space: nowrap;
  transition: background-color .2s, color .2s, box-shadow .2s;
}
.dfl .dfl-btn--jaune { background: var(--jaune); color: var(--bleu); }
.dfl .dfl-btn--jaune:hover, .dfl .dfl-btn--jaune:focus-visible { background: var(--bleu); color: var(--jaune); box-shadow: inset 0 0 0 2px var(--jaune); }

/* ---------------------------------------------------------------- En-tête */
.dfl-entete {
  position: absolute;
  inset: 0 0 auto;
  z-index: 30;
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: start;
  padding: calc(56 * var(--u)) calc(49 * var(--u)) 0 calc(50 * var(--u));
  color: var(--blanc);
}
.dfl .dfl-menu-toggle {
  justify-self: start;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: calc(15 * var(--u));
  /* « Menu » garde la largeur de la maquette (174) ; « Fermer », plus long, élargit la pilule : même écart à gauche et à droite. */
  min-width: calc(174 * var(--u));
  height: calc(56 * var(--u));
  padding: 0 calc(23 * var(--u));
  border-radius: 60px;
  background: var(--bleu);
  color: var(--blanc);
  transition: background-color .2s, color .2s;
}
.dfl-menu-toggle__icone { position: relative; flex: 0 0 auto; width: calc(39 * var(--u)); height: calc(27 * var(--u)); color: var(--jaune); }
.dfl-menu-toggle__icone svg { width: 100%; height: 100%; transition: opacity .2s; }
.dfl-menu-toggle__icone > span {
  position: absolute; left: calc(3 * var(--u)); right: calc(3 * var(--u)); top: 50%;
  height: calc(6 * var(--u)); margin-top: calc(-3 * var(--u));
  border-radius: 3px; background: currentColor; opacity: 0; transition: transform .25s, opacity .2s;
}
.dfl-menu-toggle[aria-expanded="true"] .dfl-menu-toggle__icone svg { opacity: 0; }
.dfl-menu-toggle[aria-expanded="true"] .dfl-menu-toggle__icone > span { opacity: 1; transform: rotate(45deg); }
.dfl-menu-toggle[aria-expanded="true"] .dfl-menu-toggle__icone > span + span { transform: rotate(-45deg); }
.dfl-menu-toggle__texte { font-family: var(--display); font-size: calc(12 * var(--u)); line-height: 1; text-transform: uppercase; }
.dfl .dfl-menu-toggle:hover, .dfl .dfl-menu-toggle:focus-visible { background: var(--jaune); color: var(--bleu); }
.dfl .dfl-menu-toggle:hover .dfl-menu-toggle__icone, .dfl .dfl-menu-toggle:focus-visible .dfl-menu-toggle__icone { color: var(--bleu); }

.dfl-entete__marque { display: flex; align-items: flex-start; gap: calc(20 * var(--u)); margin-top: calc(-20 * var(--u)); }
.dfl-entete__logo { display: block; width: calc(264 * var(--u)); }
.dfl-entete__logo img, .dfl-entete__logo svg { width: 100%; height: auto; }
/* Une ligne par saisie (« 9. 10. 11 Juillet » ne se coupe plus depuis les espaces après les points) ; 158 px au moins, comme la maquette. */
.dfl-entete__date { min-width: calc(158 * var(--u)); white-space: nowrap; margin-top: calc(37 * var(--u)); font-family: var(--display); font-size: calc(12 * var(--u)); line-height: calc(16 * var(--u)); text-transform: uppercase; }
.dfl-entete__actions { justify-self: end; display: flex; }
.dfl .dfl-entete__billetterie { min-width: calc(188 * var(--u)); padding: 0 calc(24 * var(--u)); }

/* Collant au défilement (barre bleue) */
.dfl-entete.is-collant { position: fixed; top: var(--wp-admin--admin-bar--height, 0px); align-items: center; padding-top: calc(19 * var(--u)); padding-bottom: calc(19 * var(--u)); }
.dfl-entete.is-collant::before { content: ''; position: absolute; inset: 0; z-index: -1; background: var(--bleu); box-shadow: 0 2px 18px rgba(0, 0, 0, .12); }
.dfl-entete.is-collant .dfl-entete__marque { align-items: center; margin-top: 0; }
.dfl-entete.is-collant .dfl-entete__logo { width: calc(160 * var(--u)); }
.dfl-entete.is-collant .dfl-entete__date { margin-top: 0; }
.dfl-entete.is-collant .dfl-menu-toggle { background: var(--jaune); color: var(--bleu); }
.dfl-entete.is-collant .dfl-menu-toggle__icone { color: var(--bleu); }
.dfl-entete.is-ouvert { position: fixed; top: var(--wp-admin--admin-bar--height, 0px); }

/* Panneau du menu : plein écran, à toutes les tailles */
.dfl-panneau {
  position: fixed;
  inset: 0;
  z-index: 29;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 44px;
  padding: 140px 24px 48px;
  background: var(--bleu) url('texture-bleue.webp') center / cover no-repeat;
  color: var(--blanc);
  text-align: center;
  overflow-y: auto;
}
.dfl-panneau ul { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; } /* colonne bornée à l'écran : un mot trop long ne l'élargit pas */
/* Dirty Stains est très large (« BILLETTERIE » ≈ 11,7 × le corps) : le corps suit la largeur de l'écran pour que le mot le
 * plus long du menu tienne entre les marges de 24 px (12,5 = 11,7 + marge). Un mot plus long ajouté par le client est
 * réduit par accueil.js (ajuster), jamais coupé. */
.dfl-panneau nav { width: 100%; }
.dfl-panneau nav a { display: inline-block; max-width: 100%; font-family: var(--display); font-size: min(clamp(28px, 3.4vw, 50px), calc((100vw - 48px) / 12.5)); line-height: 1.15; text-transform: uppercase; transition: color .2s; }
.dfl-panneau nav a:hover, .dfl-panneau nav a:focus-visible { color: var(--jaune); }
html.dfl-scroll-bloque, html.dfl-scroll-bloque body { overflow: hidden; }

/* ---------------------------------------------------------------- Hero */
/* Le bas du hero suit la pente du ruban (-1.55°) : la jonction avec la section suivante reste cachée sous le ruban
   d'un bord à l'autre, à toutes les largeurs. --pente = demi-largeur × tan(angle).
   La section suivante remonte d'une pente sous le hero : le triangle découpé à droite montre son fond, jamais la page. */
.dfl { --pente: calc(50vw * 0.02706); }
/* (le bandeau fait 0 px de haut : deux marges négatives fusionneraient, d'où tout le recouvrement porté par le hero) */
.dfl-hero + .dfl-bandeau { top: var(--pente); }
.dfl-hero + .dfl-bandeau + .dfl-artistes { padding-top: calc(var(--pad-haut, 0px) + var(--pente)) !important; }
.dfl-hero {
  /* Au moins la hauteur de l'écran : l'intro se centre sur la fenêtre, ses dates ne doivent jamais tomber sur le ruban. */
  --hauteur: max(calc(900 * var(--u)), 100vh);
  --hauteur: max(calc(900 * var(--u)), 100svh);
  position: relative;
  z-index: 3;
  height: calc(var(--hauteur) + var(--pente));
  min-height: calc(560px + var(--pente));
  margin-bottom: calc(-2 * var(--pente));
  clip-path: polygon(0 0, 100% 0, 100% calc(100% - 2 * var(--pente)), 0 100%);
  color: var(--blanc);
  background: var(--bleu);
}
.dfl-hero__fond { position: absolute; inset: 0; overflow: hidden; }
.dfl-hero__fond img, .dfl-hero__video { width: 100%; height: 100%; max-width: none; object-fit: cover; object-position: center; }
.dfl-hero__video { position: absolute; inset: 0; display: block; opacity: 0; transition: opacity .6s ease; }
.dfl-hero__video.is-lue { opacity: 1; }
/* Ciel clair en haut de la vidéo : un voile bleu nuit garde lisibles les dates blanches de l'en-tête. */
.dfl-hero__fond::after { content: ''; position: absolute; inset: 0 0 auto; height: calc(300 * var(--u)); min-height: 180px; pointer-events: none; background: linear-gradient(180deg, rgba(8, 12, 90, .55) 0%, rgba(8, 12, 90, .25) 45%, rgba(8, 12, 90, 0) 100%); }
.dfl-hero__scroll {
  position: absolute;
  right: calc(49 * var(--u));
  bottom: calc(113 * var(--u) + var(--pente));
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: calc(9 * var(--u));
  font-weight: 500;
  font-size: calc(12 * var(--u));
  line-height: calc(15 * var(--u));
  letter-spacing: .1em;
  text-transform: uppercase;
}
.dfl-hero__scroll span { display: block; width: 1px; height: calc(39 * var(--u)); background: currentColor; transform-origin: top; animation: dfl-scroll 2s ease-in-out infinite; }
@keyframes dfl-scroll { 0%, 100% { transform: scaleY(1); } 50% { transform: scaleY(.4); } }

/* ---------------------------------------------------------------- Ruban défilant (bas du hero) */
.dfl-bandeau { position: relative; z-index: 6; height: 0; }
.dfl-bandeau__ruban {
  position: absolute;
  /* Très large : incliné, le ruban doit déborder des deux bords à toutes les largeurs (1920, 2560…). */
  left: calc(-20 * var(--u) - 15vw);
  right: calc(-20 * var(--u) - 15vw);
  top: calc(-19 * var(--u));
  height: calc(42 * var(--u));
  display: flex;
  align-items: center;
  overflow: hidden;
  background: var(--jaune);
  transform: rotate(-1.55deg);
}
.dfl-bandeau__piste { display: flex; width: max-content; animation: dfl-defile 70s linear infinite; }
.dfl-bandeau__serie { display: flex; align-items: center; }
.dfl-bandeau__texte {
  display: inline-flex;
  align-items: center;
  padding: 0 calc(16 * var(--u));
  color: var(--bleu);
  font-weight: 900;
  font-size: calc(24 * var(--u));
  line-height: 1;
  text-transform: uppercase;
  white-space: nowrap;
}
/* Même blanc qu'autour des points (17,5 px d'encre de chaque côté à 1440, mesuré) : le cœur est centré entre ses mots. */
.dfl-bandeau__coeur { display: inline-block; width: calc(31 * var(--u)); margin: 0 calc(16 * var(--u)); }
.dfl-bandeau__coeur svg { width: 100%; height: auto; }
.dfl-bandeau__point { flex: 0 0 auto; width: calc(8 * var(--u)); height: calc(8 * var(--u)); border-radius: 50%; background: var(--rose); }
@keyframes dfl-defile { to { transform: translateX(-50%); } }
.dfl-bandeau__deco { position: absolute; inset: 0; pointer-events: none; }
.dfl-bandeau__peche { position: absolute; left: calc(69 * var(--u)); top: calc(-152 * var(--u)); width: calc(419 * var(--u)); max-width: none; height: auto; }
.dfl-bandeau__papillon { position: absolute; left: calc(257 * var(--u)); top: calc(-277 * var(--u)); width: calc(289 * var(--u)); max-width: none; height: auto; }
.dfl-bandeau__papillon { transition: opacity .4s ease, visibility 0s; }
.dfl-bandeau__papillon.is-parti { opacity: 0; visibility: hidden; transition: opacity .4s ease, visibility 0s .4s; }

/* ---------------------------------------------------------------- Artistes (« Premier arrivage ») */
.dfl-artistes { --pad-haut: calc(136 * var(--u)); z-index: 2; padding: calc(136 * var(--u)) 0 calc(128 * var(--u)); text-align: center; }
.dfl-artistes__titre { color: var(--jaune); line-height: calc(46 * var(--u)); }
.dfl-artistes__chapo {
  width: calc(368 * var(--u));
  margin: calc(37 * var(--u)) auto 0;
  font-weight: 700;
  font-size: calc(16 * var(--u));
  line-height: calc(19 * var(--u));
  text-align: right;
}
.dfl-artistes__scene { position: relative; margin-top: calc(65 * var(--u)); }
.dfl-artistes__photos { position: absolute; inset: 0; z-index: 2; pointer-events: none; }
.dfl-artistes__photo {
  position: absolute;
  left: calc(50% + 334 * var(--u));
  top: calc(-234 * var(--u));
  width: calc(234 * var(--u));
  height: calc(263 * var(--u));
  border-radius: calc(10 * var(--u));
  overflow: hidden;
  background: rgba(255, 255, 255, .12);
  opacity: 0;
  transform: rotate(4.92deg) scale(.92);
  transition: opacity .35s ease, transform .45s cubic-bezier(.2, .9, .3, 1.3);
}
.dfl-artistes__photo.is-actif { opacity: 1; transform: rotate(4.92deg); }
/* Le papillon se pose avec la photo : rien n'est affiché tant qu'aucun nom n'est survolé. */
/* Nom à gauche (accueil.js, placer()) : la photo penche dans l'autre sens, le papillon passe en miroir. */
.dfl-artistes__photo.is-gauche { transform: rotate(-4.92deg) scale(.92); }
.dfl-artistes__photo.is-gauche.is-actif { transform: rotate(-4.92deg); }
.dfl-artistes__papillon.is-gauche { transform: rotate(37.65deg) scaleX(-1); }
.dfl-artistes__photos .dfl-artistes__papillon { opacity: 0; transition: opacity .3s ease .12s; }
.dfl-artistes__photos .dfl-artistes__papillon.is-visible { opacity: 1; }
/* Écrans sans survol (tactile) : pas de photo, donc pas d'espace réservé au-dessus de la liste. */
@media (hover: none) {
  .dfl-artistes__photos { display: none; }
  .dfl-artistes__scene { padding-top: 0 !important; }
}
.dfl-artistes__photo img { width: 100%; height: 100%; max-width: none; object-fit: cover; }
.dfl-artistes__papillon {
  position: absolute;
  left: calc(50% + 521 * var(--u));
  top: calc(-193 * var(--u));
  width: calc(97 * var(--u));
  max-width: none;
  transform: rotate(-37.65deg);
}
/* Calques : la photo passe au-dessus des autres noms (zone en z-index 2, liste sans contexte d'empilement),
   seul le nom survolé reste devant elle (z-index 3). */
.dfl-artistes__liste {
  position: relative;
  font-size: calc(50 * var(--u));
  line-height: calc(60 * var(--u));
  text-align: center;
}
.dfl-artistes__item { display: inline; white-space: nowrap; }
.dfl-artistes__item:not(:last-child)::after { content: '•'; color: var(--jaune); }
.dfl-artistes__item.is-retour:not(:last-child)::after { content: '\A'; white-space: pre; }
.dfl-artistes__item.is-actif .dfl-artistes__nom { position: relative; z-index: 3; }
.dfl-artistes__nom {
  --contour: calc(10 * var(--u));
  color: var(--blanc);
  transition: color .2s, text-shadow .2s;
}
.dfl-artistes__item.is-actif .dfl-artistes__nom,
.dfl a.dfl-artistes__nom:hover,
.dfl a.dfl-artistes__nom:focus-visible { color: var(--bleu); text-shadow: calc(1.0 * var(--contour)) calc(0.0 * var(--contour)) 0 var(--jaune), calc(0.966 * var(--contour)) calc(0.259 * var(--contour)) 0 var(--jaune), calc(0.866 * var(--contour)) calc(0.5 * var(--contour)) 0 var(--jaune), calc(0.707 * var(--contour)) calc(0.707 * var(--contour)) 0 var(--jaune), calc(0.5 * var(--contour)) calc(0.866 * var(--contour)) 0 var(--jaune), calc(0.259 * var(--contour)) calc(0.966 * var(--contour)) 0 var(--jaune), calc(0.0 * var(--contour)) calc(1.0 * var(--contour)) 0 var(--jaune), calc(-0.259 * var(--contour)) calc(0.966 * var(--contour)) 0 var(--jaune), calc(-0.5 * var(--contour)) calc(0.866 * var(--contour)) 0 var(--jaune), calc(-0.707 * var(--contour)) calc(0.707 * var(--contour)) 0 var(--jaune), calc(-0.866 * var(--contour)) calc(0.5 * var(--contour)) 0 var(--jaune), calc(-0.966 * var(--contour)) calc(0.259 * var(--contour)) 0 var(--jaune), calc(-1.0 * var(--contour)) calc(0.0 * var(--contour)) 0 var(--jaune), calc(-0.966 * var(--contour)) calc(-0.259 * var(--contour)) 0 var(--jaune), calc(-0.866 * var(--contour)) calc(-0.5 * var(--contour)) 0 var(--jaune), calc(-0.707 * var(--contour)) calc(-0.707 * var(--contour)) 0 var(--jaune), calc(-0.5 * var(--contour)) calc(-0.866 * var(--contour)) 0 var(--jaune), calc(-0.259 * var(--contour)) calc(-0.966 * var(--contour)) 0 var(--jaune), calc(-0.0 * var(--contour)) calc(-1.0 * var(--contour)) 0 var(--jaune), calc(0.259 * var(--contour)) calc(-0.966 * var(--contour)) 0 var(--jaune), calc(0.5 * var(--contour)) calc(-0.866 * var(--contour)) 0 var(--jaune), calc(0.707 * var(--contour)) calc(-0.707 * var(--contour)) 0 var(--jaune), calc(0.866 * var(--contour)) calc(-0.5 * var(--contour)) 0 var(--jaune), calc(0.966 * var(--contour)) calc(-0.259 * var(--contour)) 0 var(--jaune), calc(0.55 * var(--contour)) calc(0.0 * var(--contour)) 0 var(--jaune), calc(0.476 * var(--contour)) calc(0.275 * var(--contour)) 0 var(--jaune), calc(0.275 * var(--contour)) calc(0.476 * var(--contour)) 0 var(--jaune), calc(0.0 * var(--contour)) calc(0.55 * var(--contour)) 0 var(--jaune), calc(-0.275 * var(--contour)) calc(0.476 * var(--contour)) 0 var(--jaune), calc(-0.476 * var(--contour)) calc(0.275 * var(--contour)) 0 var(--jaune), calc(-0.55 * var(--contour)) calc(0.0 * var(--contour)) 0 var(--jaune), calc(-0.476 * var(--contour)) calc(-0.275 * var(--contour)) 0 var(--jaune), calc(-0.275 * var(--contour)) calc(-0.476 * var(--contour)) 0 var(--jaune), calc(-0.0 * var(--contour)) calc(-0.55 * var(--contour)) 0 var(--jaune), calc(0.275 * var(--contour)) calc(-0.476 * var(--contour)) 0 var(--jaune), calc(0.476 * var(--contour)) calc(-0.275 * var(--contour)) 0 var(--jaune); }
.dfl a.dfl-artistes__nom:focus-visible { outline: 2px dashed var(--jaune); outline-offset: 6px; }
.dfl-artistes__suite { margin-top: calc(29 * var(--u)); font-weight: 700; font-size: calc(16 * var(--u)); line-height: calc(19 * var(--u)); }
.dfl-artistes__pied { margin-top: calc(48 * var(--u)); }
.dfl .dfl-artistes__bouton { min-width: calc(314 * var(--u)); }

/* ---------------------------------------------------------------- Souvenirs */
.dfl-souvenirs { position: relative; z-index: 3; }
.dfl-souvenirs__bandeau { position: relative; background: var(--jaune); padding: calc(58 * var(--u)) 0 calc(95 * var(--u)); }
.dfl-souvenirs .dfl-entete-section__chapo { position: relative; z-index: 1; margin-bottom: 0; }
/* Maquette 2033:12 : interligne « normal » de Dirty Stains (46 px pour 50 px), pas 55. */
.dfl-souvenirs .dfl-titre-section { line-height: 0.92em; }
.dfl-souvenirs__papillon {
  position: absolute;
  left: calc(50% + 116 * var(--u));
  top: calc(-69 * var(--u));
  width: calc(353 * var(--u));
  max-width: none;
  transform: rotate(-3.65deg);
  pointer-events: none;
  z-index: 2; /* devant la mosaïque : ses photos (clip-path, transform animés) passaient par-dessus */
}

.dfl-mosaique__haut { display: grid; grid-template-columns: 516fr 388fr 536fr; aspect-ratio: 1440 / 728; }
.dfl-mosaique__colonne { display: grid; min-height: 0; }
.dfl-mosaique__colonne--1 { grid-template-rows: 472fr 256fr; }
.dfl-mosaique__colonne--2 { grid-template-rows: 194fr 534fr; }
.dfl-mosaique__colonne--3 { grid-template-rows: 337fr 391fr; }
.dfl-mosaique__bas { display: grid; grid-template-columns: 730fr 326fr 384fr; aspect-ratio: 1440 / 391; }
.dfl-mosaique__bas--2 { grid-template-columns: 1056fr 384fr; }
.dfl-mosaique__bas--1 { grid-template-columns: 1fr; }
.dfl-mosaique__item { position: relative; min-height: 0; overflow: hidden; background: #222; }
.dfl-mosaique__item img {
  position: absolute; inset: 0;
  width: 100%; height: 100%; max-width: none;
  object-fit: cover;
  filter: grayscale(1);
  transition: filter .5s ease;
}
.dfl-mosaique__item:hover img { filter: grayscale(0); transform: scale(1.03); transition: filter .5s ease, transform .8s ease; }

/* ---------------------------------------------------------------- La boutique (carrousel centré) */
.dfl-merch {
  --carte: calc(345 * var(--u));
  position: relative;
  z-index: 4;
  padding: calc(95 * var(--u)) 0 calc(144 * var(--u));
  background: var(--rose) url('texture-rose.webp') center / cover no-repeat;
  color: var(--blanc);
  text-align: center;
}
.dfl-merch__surtitre { color: var(--jaune); }
.dfl-merch .dfl-feuille {
  position: absolute;
  z-index: 3;
  left: calc(-82 * var(--u));
  top: calc(-163 * var(--u));
  width: calc(569 * var(--u));
  max-width: none;
  pointer-events: none;
  transform-origin: 30% 10%;
}
.dfl-merch__peche {
  position: absolute;
  z-index: 3;
  left: calc(50% + 381 * var(--u));
  top: calc(100% - 171 * var(--u));
  width: calc(293 * var(--u));
  max-width: none;
  transform: rotate(22.55deg);
  pointer-events: none;
}
.dfl-merch__entete { position: relative; z-index: 4; }
.dfl-merch__carrousel { position: relative; z-index: 2; margin-top: calc(71 * var(--u)); }
.dfl-merch__slider { overflow: hidden; }
.dfl-merch__liste { display: flex; align-items: center; }
/* Bouton sous le carrousel, au-dessus de la tranche de pêche. */
.dfl-merch__pied { position: relative; z-index: 3; margin-top: calc(56 * var(--u)); }
.dfl .dfl-merch__bouton { min-width: calc(314 * var(--u)); }
.dfl .dfl-merch__slider .swiper-slide.dfl-produit {
  flex: 0 0 var(--carte);
  width: var(--carte);
  height: auto;
  aspect-ratio: 345 / 460;
  border-radius: calc(10 * var(--u));
  /* Voisines : plus petites (248 × 376 à 1440), rapprochées du centre, voilées de bleu. */
  opacity: 0;
  visibility: hidden;
  transform: scale(.817);
  clip-path: inset(0 6% round calc(12 * var(--u)));
  transition: transform .6s cubic-bezier(.3, .8, .3, 1), opacity .4s, clip-path .6s, visibility 0s .6s;
}
.dfl .dfl-merch__slider .swiper-slide-prev.dfl-produit { opacity: .6; visibility: visible; transform: translateX(calc(var(--carte) * .193)) scale(.817); transition-delay: 0s; }
.dfl .dfl-merch__slider .swiper-slide-next.dfl-produit { opacity: .6; visibility: visible; transform: translateX(calc(var(--carte) * -.193)) scale(.817); transition-delay: 0s; }
.dfl .dfl-merch__slider .swiper-slide-active.dfl-produit { z-index: 2; opacity: 1; visibility: visible; transform: none; clip-path: inset(0 0 round calc(10 * var(--u))); transition-delay: 0s; }
/* Sans Swiper (JS absent) : les cartes restent lisibles, côte à côte. */
.dfl-merch__slider:not(.swiper-initialized) .dfl-merch__liste { justify-content: center; gap: calc(20 * var(--u)); }
.dfl .dfl-merch__slider:not(.swiper-initialized) .swiper-slide.dfl-produit { opacity: 1; visibility: visible; transform: none; clip-path: none; }
.dfl .dfl-merch__slider:not(.swiper-initialized) .dfl-produit:nth-child(n+4) { display: none; }
.dfl .dfl-produit__lien { position: relative; display: block; height: 100%; color: var(--blanc); }
.dfl-produit img { width: 100%; height: 100%; max-width: none; object-fit: cover; }
.dfl-produit__lien::after {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(-90deg, var(--bleu) 7.46%, rgba(24, 37, 210, 0) 100%);
  opacity: 0; transition: opacity .4s;
}
.swiper-slide-next .dfl-produit__lien::after { background: linear-gradient(90deg, var(--bleu) 0%, rgba(24, 37, 210, 0) 100%); }
.swiper-slide-prev .dfl-produit__lien::after, .swiper-slide-next .dfl-produit__lien::after { opacity: 1; }
.dfl-produit__infos {
  position: absolute; inset: auto 0 0; z-index: 1;
  display: flex; align-items: flex-end; justify-content: space-between; gap: 12px;
  padding: calc(60 * var(--u)) calc(18 * var(--u)) calc(16 * var(--u));
  background: linear-gradient(0deg, rgba(24, 37, 210, .85), rgba(24, 37, 210, 0));
  text-align: left;
  opacity: 0; transform: translateY(10px); transition: opacity .3s, transform .3s;
}
.swiper-slide-active .dfl-produit__lien:hover .dfl-produit__infos,
.swiper-slide-active .dfl-produit__lien:focus-visible .dfl-produit__infos { opacity: 1; transform: none; }
.dfl-produit__nom { font-weight: 900; font-size: calc(16 * var(--u)); line-height: 1.2; text-transform: uppercase; }
.dfl-produit__prix { display: flex; flex-direction: column; align-items: flex-end; color: var(--jaune); white-space: nowrap; }
.dfl-produit__prix del { font-weight: 500; font-size: calc(14 * var(--u)); }
.dfl-produit__prix ins { text-decoration: none; font-weight: 900; font-size: calc(28 * var(--u)); line-height: 1.1; }

.dfl-fleche { width: calc(55 * var(--u)); height: calc(55 * var(--u)); color: var(--blanc); border-radius: 50%; transition: transform .2s; }
.dfl-fleche svg { width: 100%; height: 100%; }
.dfl-fleche--prev svg { transform: rotate(180deg); } /* même icône que « suivant », tournée comme dans la maquette */
.dfl-fleche svg path { transition: fill .2s; }
.dfl-fleche:hover, .dfl-fleche:focus-visible { transform: scale(1.08); }
.dfl-fleche:hover svg path, .dfl-fleche:focus-visible svg path { fill: var(--jaune); }
.dfl-merch__carrousel .dfl-fleche { position: absolute; z-index: 3; top: 50%; margin-top: calc(-27.5 * var(--u)); }
.dfl-merch__carrousel .dfl-fleche--prev { left: calc(50% - 432 * var(--u)); }
.dfl-merch__carrousel .dfl-fleche--next { left: calc(50% + 377 * var(--u)); }

/* ---------------------------------------------------------------- Compte à rebours + pied (même fond bleu) */
/* Une seule échelle de texture pour les deux sections (pas de « cover », qui recadre chacune à sa taille) ;
   le compte s'ancre en bas, le pied reprend la même image retournée : le motif se raccorde en miroir à la jonction. */
.dfl-compte, .dfl-pied { --texture-taille: 100% auto; position: relative; color: var(--blanc); }
.dfl-compte { background: var(--bleu) url('texture-bleue.webp') center bottom / var(--texture-taille) repeat-y; }
/* Pied : bleu plus foncé, le grain de l'ancien pied du site (retour client du 11/11), sans les volutes du compte. */
.dfl-pied { background: #1e24d2 url('fond-pied.webp') center / cover no-repeat; }
.dfl-compte { z-index: 1; padding: calc(88 * var(--u)) 0 calc(95 * var(--u)); text-align: center; }
.dfl-compte__surtitre { color: var(--jaune); }
.dfl-compte__titre { margin-top: calc(42 * var(--u)); --fs: calc(50 * var(--u)); line-height: calc(43 * var(--u)); }
.dfl-compte__grille {
  display: grid;
  grid-template-columns: 340fr 295fr 289fr 262fr;
  margin: calc(44 * var(--u)) calc(-20 * var(--u)) 0;
  border-top: 2px solid var(--blanc);
  border-bottom: 2px solid var(--blanc);
}
.dfl-compte__case { display: flex; flex-direction: column; align-items: center; padding: calc(39 * var(--u)) var(--case-pd, 0px) calc(23 * var(--u)) var(--case-pg, 0px); }
/* Maquette : chiffres et libellés pas centrés dans leur case (axes x 276.5 / 609.5 / 903.5 / 1197.5). */
.dfl-compte__case:nth-child(1) { --case-pd: calc(41 * var(--u)); }
.dfl-compte__case:nth-child(2) { --case-pd: calc(9 * var(--u)); }
.dfl-compte__case:nth-child(3) { --case-pd: calc(7 * var(--u)); }
.dfl-compte__case:nth-child(4) { --case-pg: calc(32 * var(--u)); }
.dfl-compte__case + .dfl-compte__case { border-left: 2px solid var(--blanc); }
.dfl-compte__nombre { color: var(--jaune); font-size: calc(80 * var(--u)); line-height: calc(77 * var(--u)); font-variant-numeric: tabular-nums; }
.dfl-compte__label { margin-top: calc(10 * var(--u)); font-weight: 900; font-size: calc(12 * var(--u)); letter-spacing: .05em; line-height: calc(15 * var(--u)); text-transform: uppercase; }
.dfl-compte__fin { margin-top: calc(27 * var(--u)); color: var(--jaune); font-size: calc(80 * var(--u)); }
.dfl-compte__texte { margin-top: calc(36 * var(--u)); font-weight: 700; font-size: calc(16 * var(--u)); line-height: calc(19 * var(--u)); }

.dfl-pied { padding-bottom: calc(48 * var(--u)); text-align: center; }
.dfl-pied__logo { display: block; width: calc(326 * var(--u)); margin: 0 auto; }
.dfl-pied__logo img, .dfl-pied__logo svg { width: 100%; height: auto; }
.dfl-pied__colonnes {
  display: grid;
  grid-template-columns: repeat(3, calc(447 * var(--u)));
  justify-content: center;
  margin-top: calc(67 * var(--u));
}
.dfl-pied__colonne { display: flex; flex-direction: column; align-items: center; }
.dfl-pied__titre { font-size: calc(20 * var(--u)); line-height: calc(25 * var(--u)); }
.dfl-pied__colonne > .dfl-pied__titre { min-height: calc(50 * var(--u)); }

/* Newsletter : formulaire Gravity Forms restylé (pilule jaune, bouton rond, case de consentement).
   Préfixe « body #dfl-newsletter » : l'extension de styles Gravity Forms cible « body #gform_wrapper_N », un id qui battrait nos classes. */
body #dfl-newsletter { width: calc(390 * var(--u)); margin-top: calc(27 * var(--u)); text-align: left; }
body #dfl-newsletter .gform_wrapper, body #dfl-newsletter form { margin: 0 !important; padding: 0 !important; }
body #dfl-newsletter .gform_heading, body #dfl-newsletter .gform_required_legend, body #dfl-newsletter .gfield_label:not(.gform-field-label--type-inline) { display: none !important; }
body #dfl-newsletter form { position: relative; }
body #dfl-newsletter .gform_fields { display: block !important; grid-template-columns: none !important; }
body #dfl-newsletter .gfield { margin: 0 !important; padding: 0 !important; border: 0 !important; }
body #dfl-newsletter .ginput_container { margin-top: 0 !important; }
body #dfl-newsletter .gfield--type-email input,
body #dfl-newsletter input[type="email"] {
  width: 100% !important;
  height: calc(56 * var(--u)) !important;
  margin: 0 !important;
  padding: 0 calc(64 * var(--u)) 0 calc(31 * var(--u)) !important;
  border: 0 !important;
  border-radius: 60px !important;
  background: var(--jaune) !important;
  box-shadow: none !important;
  color: var(--bleu) !important;
  font: 400 calc(20 * var(--u)) / 1 var(--texte) !important;
  outline-offset: 3px;
}
body #dfl-newsletter input[type="email"]::placeholder { color: var(--bleu) !important; opacity: 1 !important; }
body #dfl-newsletter .gfield--type-checkbox { margin-top: calc(14 * var(--u)) !important; padding-left: calc(33 * var(--u)) !important; }
body #dfl-newsletter .gchoice { display: flex !important; align-items: flex-start; gap: calc(6 * var(--u)); margin: 0 !important; }
body #dfl-newsletter .gchoice input[type="checkbox"] {
  appearance: none; -webkit-appearance: none;
  flex: 0 0 auto;
  width: calc(14 * var(--u)) !important; height: calc(14 * var(--u)) !important;
  margin: calc(2 * var(--u)) 0 0 calc(3 * var(--u)) !important;
  border: 2px solid var(--jaune) !important; border-radius: 2px !important;
  background: transparent !important; box-shadow: none !important; cursor: pointer;
}
body #dfl-newsletter .gchoice input[type="checkbox"]::before { content: none !important; }
body #dfl-newsletter .gchoice input[type="checkbox"]:checked {
  background: var(--jaune) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10'%3E%3Cpath d='M2 5.2l2 2 4-4.2' fill='none' stroke='%231825d2' stroke-width='1.8'/%3E%3C/svg%3E") center / 100% no-repeat !important;
}
body #dfl-newsletter .gchoice label {
  max-width: calc(316 * var(--u)) !important;
  margin: 0 !important;
  color: var(--blanc) !important;
  font: 400 calc(10 * var(--u)) / 1.2 var(--texte) !important;
  cursor: pointer;
}
body #dfl-newsletter .gform_footer, body #dfl-newsletter .gform-footer {
  position: absolute !important;
  top: calc(4 * var(--u)) !important; right: calc(5 * var(--u)) !important; left: auto !important; bottom: auto !important;
  width: auto !important; margin: 0 !important; padding: 0 !important;
}
body #dfl-newsletter .gform_footer .gform_button,
body #dfl-newsletter .gform_footer button[type="submit"],
body #dfl-newsletter .gform_footer input[type="submit"] {
  display: block !important;
  width: calc(48 * var(--u)) !important; height: calc(48 * var(--u)) !important; min-height: 0 !important;
  margin: 0 !important; padding: 0 !important;
  border: 0 !important; border-radius: 50% !important;
  background: var(--bleu) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.62.15c.3.21.42.5.37.85l-3.43 20.58c-.05.26-.19.46-.43.6a.82.82 0 0 1-.42.11c-.1 0-.2-.02-.32-.07l-6.07-2.47-3.24 3.95a.78.78 0 0 1-.66.3.74.74 0 0 1-.3-.05.8.8 0 0 1-.54-.78v-4.67L20.18 3.43 5.3 16.3l-4.76-1.95A.82.82 0 0 1 0 13.6c-.02-.34.12-.6.43-.77L22.71.12c.13-.08.28-.12.43-.12.17 0 .33.05.48.15Z' fill='%23fff'/%3E%3C/svg%3E") center / calc(24 * var(--u)) no-repeat !important;
  box-shadow: none !important;
  color: transparent !important; font-size: 0 !important; text-indent: -999px; overflow: hidden;
  cursor: pointer; transition: background-color .2s, transform .2s;
}
body #dfl-newsletter .gform_footer .gform_button:hover,
body #dfl-newsletter .gform_footer .gform_button:focus-visible { background-color: var(--rose) !important; transform: scale(1.06); }
body #dfl-newsletter .gform_validation_errors, body #dfl-newsletter .validation_message, body #dfl-newsletter .gfield_validation_message {
  margin: calc(8 * var(--u)) 0 0 !important; padding: 0 !important; border: 0 !important; background: none !important; box-shadow: none !important;
  color: var(--jaune) !important; font: 700 calc(12 * var(--u)) / 1.3 var(--texte) !important;
}
body #dfl-newsletter .gform_validation_errors h2 { font: inherit !important; color: inherit !important; }
body #dfl-newsletter .gform_validation_errors .gform-icon { display: none !important; }
body #dfl-newsletter .gform_confirmation_message { color: var(--jaune); font-weight: 700; font-size: calc(16 * var(--u)); text-align: center; }
body #dfl-newsletter .gform_ajax_spinner { position: absolute; right: calc(-30 * var(--u)); top: calc(16 * var(--u)); }

.dfl-pied__applis { display: flex; gap: calc(10 * var(--u)); margin-top: calc(27 * var(--u)); }
.dfl .dfl-appli {
  display: flex; align-items: center; gap: calc(12 * var(--u));
  width: calc(213 * var(--u)); height: calc(56 * var(--u));
  padding-left: calc(30 * var(--u));
  border-radius: 60px; background: rgba(255, 255, 255, .3);
  color: var(--jaune); text-align: left;
  transition: background-color .2s, color .2s;
}
.dfl-appli svg { flex: 0 0 auto; width: calc(32 * var(--u)); height: auto; }
.dfl-appli > span { display: flex; flex-direction: column; color: var(--blanc); }
.dfl-appli__sur { font-weight: 700; font-size: calc(12 * var(--u)); line-height: calc(15 * var(--u)); }
.dfl-appli__store { font-size: calc(10 * var(--u)); line-height: calc(14 * var(--u)); }
.dfl .dfl-appli:hover, .dfl .dfl-appli:focus-visible { background: var(--jaune); color: var(--bleu); }
.dfl .dfl-appli:hover > span, .dfl .dfl-appli:focus-visible > span { color: var(--bleu); }
.dfl-pied__applis li + li .dfl-appli { padding-left: calc(22 * var(--u)); }
.dfl-pied__applis li + li .dfl-appli svg { width: calc(28 * var(--u)); }

.dfl-pied__reseaux { display: flex; gap: calc(10 * var(--u)); margin-top: calc(31 * var(--u)); }
.dfl .dfl-pied__reseaux a {
  display: flex; align-items: center; justify-content: center;
  width: calc(48 * var(--u)); height: calc(48 * var(--u));
  border-radius: 50%; background: rgba(255, 255, 255, .3); color: var(--jaune);
  font-weight: 900; font-size: calc(16 * var(--u));
  transition: background-color .2s, color .2s;
}
.dfl-pied__reseaux svg { width: calc(24 * var(--u)); height: calc(24 * var(--u)); }
.dfl .dfl-pied__reseaux a[aria-label="Facebook"] svg { width: calc(9 * var(--u)); height: calc(18 * var(--u)); }
.dfl .dfl-pied__reseaux a:hover, .dfl .dfl-pied__reseaux a:focus-visible { background: var(--jaune); color: var(--bleu); }

.dfl-pied__bas {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 20px;
  margin-top: calc(62 * var(--u));
  padding: 0 calc(133 * var(--u)) 0 calc(76 * var(--u));
  font-weight: 700; font-size: calc(12 * var(--u)); line-height: calc(15 * var(--u));
}
.dfl-pied__copyright { margin-bottom: calc(16 * var(--u)); text-align: right; }
.dfl-pied__bas a { background: linear-gradient(var(--jaune), var(--jaune)) 0 100% / 0 1px no-repeat; transition: background-size .2s, color .2s; }
.dfl-pied__bas a:hover, .dfl-pied__bas a:focus-visible { color: var(--jaune); background-size: 100% 1px; }

/* ---------------------------------------------------------------- Intro au chargement (maquette v3 « Screen_Home ») */
/* La page est déjà affichée ; seules la pêche et le papillon, en grand au centre, rejoignent leur place. */
.dfl-intro-ecran {
  --k: min(1px, calc(100vw / 1440), calc(100vh / 900));
  display: none; position: fixed; inset: 0; z-index: 100000; overflow: hidden; pointer-events: auto; cursor: pointer;
}
html.dfl-intro .dfl-intro-ecran { display: block; }
/* Pendant l'intro, l'en-tête passe au-dessus de son écran : « Menu » et « Billetterie » répondent dès le premier clic
 * (le geste termine l'intro, voir accueil.js). */
html.dfl-intro .dfl-entete { z-index: 100001; }
html.dfl-intro .dfl-entete__marque,
html.dfl-intro .dfl-bandeau__peche,
html.dfl-intro .dfl-bandeau__papillon { visibility: hidden; }
.dfl-intro-ecran__compo { position: absolute; left: calc(50% - 268.5 * var(--k)); top: calc(50% - 385 * var(--k)); width: calc(537 * var(--k)); height: calc(659 * var(--k)); }
.dfl-intro-ecran__peche { position: absolute; left: 0; top: calc(141 * var(--k)); width: calc(472 * var(--k)); max-width: none; height: auto; }
.dfl-intro-ecran__papillon { position: absolute; left: calc(212 * var(--k)); top: 0; width: calc(325 * var(--k)); max-width: none; height: auto; }
/* Masque des mots de l'intro (accueil.js, masquer()) : marges larges, la police déborde de sa ligne. */
.dfl-mot { display: inline-block; overflow: hidden; vertical-align: top; padding: .12em .08em .16em; margin: -.12em -.08em -.16em; }
.dfl-mot > span { display: inline-block; }
/* Interligne 37/30 : l'accent de « Barcarès » ne touche plus « Juillet » (retour client). */
.dfl-intro-ecran__date { position: absolute; left: -50%; right: -50%; top: calc(599 * var(--k)); color: var(--blanc); font-size: calc(30 * var(--k)); line-height: calc(37 * var(--k)); text-align: center; }

/* ---------------------------------------------------------------- Page Billetterie (modèle Billetterie 2027) */
/* Pas de hero : la section bleue commence sous l'en-tête (posé en absolu, 56 + 98 px de logo). */
.dfl-billetterie { padding: calc(230 * var(--u)) 0 calc(128 * var(--u)); text-align: center; }
.dfl-billetterie__titre { color: var(--jaune); }
.dfl-billetterie__chapo { max-width: calc(560 * var(--u)); margin: calc(18 * var(--u)) auto 0; font-size: calc(16 * var(--u)); line-height: calc(22 * var(--u)); }
/* Précision sous le chapô, en plus petit (retour client du 12/11 : « Pass 1 Jour… »). Plancher à 12 px pour rester lisible. */
.dfl-billetterie__precision { max-width: calc(520 * var(--u)); margin: calc(10 * var(--u)) auto 0; font-size: max(12px, calc(13 * var(--u))); line-height: 1.4; opacity: .85; }
.dfl-billetterie__chapo p, .dfl-billetterie__precision p { margin: 0; }
.dfl-billetterie__chapo p + p, .dfl-billetterie__precision p + p { margin-top: .5em; }
.dfl-billetterie__widget {
  max-width: calc(760 * var(--u));
  margin: calc(56 * var(--u)) auto 0;
  padding: calc(24 * var(--u));
  border-radius: calc(10 * var(--u));
  background: var(--blanc);
  color: var(--bleu);
}
.dfl-billetterie__widget iframe { display: block; width: 100% !important; max-width: 100%; border: 0; }
.dfl-billetterie__widget > a { font-weight: 700; text-decoration: underline; } /* avant weez.js, ou sans JS */
.dfl-billetterie__pied { margin-top: calc(48 * var(--u)); }
.dfl .dfl-billetterie__bouton { min-width: calc(314 * var(--u)); }

/* ---------------------------------------------------------------- Mouvement réduit */
@media (prefers-reduced-motion: reduce) {
  .dfl-bandeau__piste, .dfl-hero__scroll span { animation: none; }
  html.dfl-intro .dfl-intro-ecran { display: none; }
  html.dfl-intro .dfl-entete__marque, html.dfl-intro .dfl-bandeau__peche, html.dfl-intro .dfl-bandeau__papillon { visibility: visible; }
}

/* ==========================================================================
   Tablette : sous 1024 px, l'unité suit la largeur 1024
   ========================================================================== */
@media (max-width: 1023px) {
  .dfl { --u: calc(100vw / 1024); }
  .dfl-entete { padding: 24px 24px 0; }
  .dfl-entete__marque { margin-top: -8px; }
  .dfl-hero__scroll { display: none; }
}

/* ==========================================================================
   Mobile : sous 768 px, tout est centré
   ========================================================================== */
@media (max-width: 767px) {
  .dfl { --u: 1px; --conteneur: calc(100% - 40px); text-align: center; }

  .dfl-entete { grid-template-columns: auto 1fr auto; align-items: center; gap: 10px; padding: 16px 16px 0; }
  .dfl .dfl-menu-toggle { width: 48px; min-width: 0; height: 48px; padding: 0; justify-content: center; }
  .dfl-menu-toggle__icone { width: 26px; height: 18px; }
  .dfl-menu-toggle__icone > span { height: 4px; margin-top: -2px; }
  .dfl-menu-toggle__texte { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); }
  .dfl-entete__marque { justify-self: center; margin-top: 0; }
  .dfl-entete__logo { width: 132px; }
  .dfl-entete__date { display: none; }
  .dfl .dfl-btn.dfl-entete__billetterie { min-width: 0; height: 40px; padding: 0 14px; font-size: 10px; }
  .dfl-entete.is-collant { padding: 10px 16px; }
  .dfl-entete.is-collant .dfl-entete__logo { width: 110px; }
  .dfl-panneau { padding-top: 110px; }

  .dfl { --pente: calc(50vw * 0.0524); }
  .dfl-hero { --hauteur: min(max(100svh, 600px), 820px); min-height: 0; }
  .dfl-bandeau__ruban { height: 32px; top: -16px; transform: rotate(-3deg); }
  .dfl-bandeau__texte { font-size: 16px; padding: 0 14px; }
  .dfl-bandeau__coeur { width: 22px; margin: 0 6px; }
  .dfl-bandeau__point { width: 6px; height: 6px; }
  .dfl-bandeau__peche { width: 200px; left: 4px; top: -96px; }
  .dfl-bandeau__papillon { width: 138px; left: 94px; top: -168px; }

  .dfl-titre-section { --fs: 32px; line-height: 36px; }
  .dfl-surtitre { font-size: 14px; line-height: 18px; }
  .dfl-entete-section { flex-direction: column; align-items: center; gap: 14px; }
  .dfl-entete-section__chapo { text-align: center; margin: 0; max-width: none; font-size: 16px; line-height: 20px; }
  .dfl .dfl-btn { height: 52px; font-size: 12px; }

  .dfl-artistes { --pad-haut: 150px; padding: 150px 0 80px; }
  .dfl-artistes__chapo { width: auto; max-width: 340px; margin-top: 18px; text-align: center; font-size: 16px; line-height: 20px; }
  .dfl-artistes__scene { margin-top: 32px; padding-top: 232px; }
  .dfl-artistes__photo { left: calc(50% - 85px); top: 4px; width: 170px; height: 191px; border-radius: 10px; }
  .dfl-artistes__papillon { left: calc(50% + 62px); top: 0; width: 70px; }
  /* Proportionnel à l'écran : le nom le plus long (« FREQUENCIES », un seul mot) doit tenir dès 360 px. */
  .dfl-artistes__liste { font-size: min(30px, 6.5vw); line-height: min(40px, 8.7vw); }
  .dfl-artistes__item.is-retour:not(:last-child)::after { content: '•'; white-space: normal; }
  .dfl-artistes__nom { white-space: normal; }
  .dfl-artistes__nom { --contour: 7px; }
  .dfl-artistes__suite { margin-top: 24px; font-size: 16px; }
  .dfl-artistes__pied { margin-top: 28px; }
  .dfl .dfl-artistes__bouton { min-width: 260px; }

  /* Retour client du 12/11 : plus de grand vide jaune sous le titre, et le papillon passe devant les photos. */
  .dfl-souvenirs__bandeau { padding: 60px 0 80px; }
  .dfl-souvenirs__papillon { width: 170px; left: 50%; top: auto; bottom: -95px; transform: translateX(-50%) rotate(-3.65deg); }
  .dfl-mosaique__haut, .dfl-mosaique__bas { grid-template-columns: 1fr 1fr; grid-auto-rows: 44vw; aspect-ratio: auto; }
  .dfl-mosaique__colonne { display: contents; }
  .dfl-mosaique__colonne--1 .dfl-mosaique__item:first-child, .dfl-mosaique__colonne--2 .dfl-mosaique__item:last-child { grid-row: span 2; }
  .dfl-mosaique__bas .dfl-mosaique__item:first-child { grid-column: 1 / -1; }

  .dfl-merch { --carte: 64vw; padding: 110px 0 120px; }
  .dfl-merch .dfl-feuille { width: 230px; left: -70px; top: -90px; }
  .dfl-merch__peche { width: 150px; left: auto; right: -30px; top: calc(100% - 90px); }
  .dfl-merch__carrousel { margin-top: 32px; }
  .dfl-merch__pied { margin-top: 32px; }
  .dfl-billetterie { padding: 130px 0 80px; }
  .dfl-billetterie__chapo { max-width: 340px; }
  .dfl-billetterie__precision { max-width: 320px; }
  .dfl-billetterie__widget { margin-top: 32px; padding: 12px; }
  .dfl-billetterie__pied { margin-top: 28px; }
  .dfl .dfl-billetterie__bouton { min-width: 260px; }
  .dfl .dfl-merch__bouton { min-width: 260px; }
  .dfl-merch__carrousel .dfl-fleche { width: 44px; height: 44px; margin-top: -22px; }
  .dfl-merch__carrousel .dfl-fleche--prev { left: 8px; }
  .dfl-merch__carrousel .dfl-fleche--next { left: auto; right: 8px; }
  .dfl-produit__nom { font-size: 14px; }
  .dfl-produit__prix ins { font-size: 22px; }

  .dfl-compte { padding: 80px 0 70px; }
  .dfl-compte__titre { --fs: 30px; line-height: 34px; margin-top: 18px; }
  .dfl-compte__grille { grid-template-columns: repeat(2, 1fr); margin: 27px 0 0; }
  .dfl-compte__case { padding: 22px 0 18px; }
  .dfl-compte__case:nth-child(3) { border-left: 0; }
  .dfl-compte__case:nth-child(n+3) { border-top: 2px solid var(--blanc); }
  .dfl-compte__nombre { font-size: 46px; line-height: 50px; }
  .dfl-compte__texte { margin-top: 28px; font-size: 16px; }

  .dfl-compte, .dfl-pied { --texture-taille: 1100px auto; }
  .dfl-pied { padding-bottom: 36px; }
  .dfl-pied__logo { width: 220px; }
  .dfl-pied__colonnes { grid-template-columns: minmax(0, 1fr); gap: 44px; margin-top: 44px; padding: 0 20px; }
  .dfl-pied__titre { font-size: 18px; line-height: 23px; }
  .dfl-pied__colonne > .dfl-pied__titre { min-height: 0; }
  body #dfl-newsletter { width: 100%; max-width: 390px; margin-top: 18px; }
  body #dfl-newsletter input[type="email"] { height: 56px !important; padding: 0 64px 0 24px !important; font-size: 18px !important; }
  body #dfl-newsletter .gform_footer { top: 4px !important; right: 5px !important; }
  body #dfl-newsletter .gform_footer .gform_button { width: 48px !important; height: 48px !important; background-size: 22px !important; }
  body #dfl-newsletter .gfield--type-checkbox { padding-left: 10px !important; margin-top: 12px !important; }
  body #dfl-newsletter .gchoice input[type="checkbox"] { width: 16px !important; height: 16px !important; margin: 1px 6px 0 0 !important; }
  body #dfl-newsletter .gchoice label { max-width: none !important; font-size: 11px !important; }
  .dfl-pied__applis { flex-wrap: wrap; justify-content: center; margin-top: 18px; }
  .dfl .dfl-appli, .dfl .dfl-pied__applis li + li .dfl-appli { width: 170px; height: 52px; gap: 10px; padding-left: 18px; }
  .dfl-appli svg, .dfl-pied__applis li + li .dfl-appli svg { width: 26px; }
  .dfl-appli__sur { font-size: 11px; line-height: 14px; }
  .dfl-appli__store { font-size: 10px; }
  .dfl-pied__reseaux { margin-top: 18px; gap: 10px; }
  .dfl .dfl-pied__reseaux a { width: 46px; height: 46px; }
  .dfl-pied__reseaux svg { width: 22px; height: 22px; }
  .dfl .dfl-pied__reseaux a[aria-label="Facebook"] svg { width: 9px; height: 18px; }
  .dfl-pied__bas { flex-direction: column-reverse; align-items: center; gap: 10px; margin-top: 48px; padding: 0 20px; font-size: 12px; line-height: 16px; }
  .dfl-pied__copyright { margin: 0; text-align: center; }

  .dfl-intro-ecran { --k: min(calc(100vw / 600), calc(100vh / 1000)); }
}

/* Barre d'admin : sous 600 px elle défile avec la page, l'en-tête fixe se colle donc tout en haut. */
@media (max-width: 600px) {
  .dfl-entete.is-collant, .dfl-entete.is-ouvert { top: 0; }
}
