/* ==========================================================================
   Essaïon — vitrine (essaion-addon) : Aujourd'hui, À ne pas manquer, cartes, Et bientôt,
   Cette semaine, fiche spectacle. Couleurs et polices du thème essaion-tt5 (valeurs de repli sinon).
   ========================================================================== */

.essv-aujourdhui, .essv-une, .essv-bloc, .essv-fiche, .essv-festival {
	--essv-fond: var(--wp--preset--color--fond, #f7f5f2);
	--essv-pierre: var(--wp--preset--color--pierre, #ece6dc);
	--essv-trait: var(--wp--preset--color--trait, #d8cfc2);
	--essv-blanc: var(--wp--preset--color--blanc, #fff);
	--essv-nuit: var(--wp--preset--color--nuit, #1a1614);
	--essv-encre: var(--wp--preset--color--encre, #1f1b18);
	--essv-gris: var(--wp--preset--color--gris, #6a625b);
	--essv-rouge: var(--wp--preset--color--rouge, #b81c1a);
	--essv-titres: var(--wp--preset--font-family--titres, "Bricolage Grotesque", sans-serif);
	--essv-texte: var(--wp--preset--font-family--texte, Inter, system-ui, sans-serif);
	--essv-rayon: 10px;
	--essv-marge: clamp(16px, 4vw, 48px);
	box-sizing: border-box;
}
.essv-aujourdhui *, .essv-une *, .essv-bloc *, .essv-fiche *, .essv-festival * { box-sizing: border-box; }
.essv-aujourdhui h2, .essv-une h2, .essv-bloc h2, .essv-fiche h1, .essv-fiche h2, .essv-fiche h3 { margin: 0; }

/* Couleurs des catégories */
[data-cat="theatre"] { --c: var(--wp--preset--color--theatre, #6b3a5b); }
[data-cat="musical"] { --c: var(--wp--preset--color--musical, #2f6b7a); }
[data-cat="concert"] { --c: var(--wp--preset--color--concert, #8a6d2f); }
[data-cat="jeune"] { --c: var(--wp--preset--color--jeune, #3f7a5d); }
.essv-cat {
	display: inline-flex; align-items: center; gap: 6px;
	font: 600 .72rem/1 var(--essv-texte); letter-spacing: .06em; text-transform: uppercase; color: var(--c, var(--essv-gris));
}
.essv-cat::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--c, var(--essv-gris)); flex: none; }
.essv-pastille {
	display: inline-block; font: 650 .72rem/1 var(--essv-texte); letter-spacing: .06em; text-transform: uppercase;
	padding: .5em .75em; border-radius: 4px; background: var(--essv-rouge); color: #fff;
}
.essv-pastille.essv-premiere { background: var(--essv-encre); }
.essv-grande { font-size: .85rem; padding: .55em .85em; }
.essv-rangee { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
/* En-tête de bloc : plus d'air entre les groupes (À l'affiche | Prochainement · catégories · bouton) */
.essv-bloc-tete .essv-rangee { column-gap: 40px; }
.essv-relache, .essv-vide { color: var(--essv-gris); margin: 0; }

/* ---------- Aujourd'hui / Demain ---------- */
.essv-aujourdhui { background: var(--essv-nuit); color: #fff; padding: 36px var(--essv-marge) 44px; }
.essv-jour { display: grid; gap: 22px; }
.essv-jour[hidden] { display: none; }
.essv-auj-titre { font: 760 clamp(1.8rem, 3.6vw, 2.6rem)/1.05 var(--essv-titres); font-variation-settings: "wdth" 85; color: #fff; }
.essv-auj-titre span { color: #c9bfb6; font-weight: 500; }
.essv-seances {
	list-style: none; margin: 0; padding: 0; display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: repeat(var(--lignes, 5), auto);
	grid-auto-flow: column; column-gap: clamp(24px, 4vw, 56px);
}
.essv-seances li { display: grid; grid-template-columns: 3.6rem minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 12px 0; border-bottom: 1px solid rgba(255,255,255,.13); }
.essv-seances li[hidden] { display: none; }
.essv-heure { font: 700 1.25rem/1 var(--essv-titres); font-variant-numeric: tabular-nums; }
.essv-seance { font-weight: 600; line-height: 1.25; min-width: 0; }
.essv-seance a { color: #fff; text-decoration: none; }
.essv-seance a:hover { text-decoration: underline; }
.essv-seance small { display: flex; flex-wrap: wrap; gap: 2px 10px; align-items: center; font-weight: 400; color: #b8aea6; font-size: .82rem; margin-top: 4px; }
.essv-seance .essv-cat { font-size: .66rem; --c-clair: 1; }
.essv-aujourdhui [data-cat="theatre"] { --c: #c99ab9; }
.essv-aujourdhui [data-cat="musical"] { --c: #7fc0cf; }
.essv-aujourdhui [data-cat="concert"] { --c: #d9bb79; }
.essv-aujourdhui [data-cat="jeune"] { --c: #8fcaa9; }
.essv-aujourdhui .essv-relache { color: #c9bfb6; }

/* ---------- À ne pas manquer ---------- */
.essv-une { background: var(--essv-pierre); padding: 28px var(--essv-marge); }
.essv-une-tete { display: flex; flex-wrap: wrap; gap: 4px 16px; align-items: baseline; margin-bottom: 16px; }
.essv-une-tete h2 { font: 740 clamp(1.6rem, 3vw, 2.1rem)/1.05 var(--essv-titres); font-variation-settings: "wdth" 85; }
.essv-une-tete p { color: var(--essv-gris); font-size: .95rem; margin: 0; }
.essv-une-piste { display: grid; }
.essv-diapo {
	grid-area: 1 / 1; display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr);
	background: var(--essv-blanc); border-radius: var(--essv-rayon); overflow: hidden; text-decoration: none; color: var(--essv-encre);
	opacity: 0; visibility: hidden; transition: opacity .5s, visibility .5s; box-shadow: 0 1px 2px rgba(31,27,24,.06);
}
.essv-diapo.active { opacity: 1; visibility: visible; }
.essv-diapo img { width: 100%; height: 100%; aspect-ratio: 16 / 9; object-fit: cover; display: block; }
.essv-diapo-texte { padding: clamp(20px, 3vw, 40px); display: grid; gap: 14px; align-content: center; justify-items: start; }
.essv-diapo-titre { font: 760 clamp(1.7rem, 3.2vw, 2.6rem)/1.05 var(--essv-titres); font-variation-settings: "wdth" 85; }
.essv-lien { color: var(--essv-rouge); font-weight: 600; }
.essv-points { display: flex; gap: 8px; justify-content: center; margin-top: 14px; }
.essv-points button { width: 36px; height: 4px; border-radius: 2px; border: 0; background: var(--essv-trait); cursor: pointer; padding: 0; position: relative; overflow: hidden; }
.essv-points button i { position: absolute; inset: 0; width: 0; background: var(--essv-encre); }
.essv-points button[aria-current="true"] { background: #bfb5a8; }
.essv-points button[aria-current="true"] i { width: 100%; }
.essv-points button.court i { animation: essv-avance 6s linear forwards; }
@keyframes essv-avance { from { width: 0; } to { width: 100%; } }

/* ---------- Blocs et cartes ---------- */
.essv-bloc { padding: 56px var(--essv-marge); display: grid; gap: 26px; background: var(--essv-fond); }
.essv-bloc > * { min-width: 0; }
.essv-fond-pierre { background: var(--essv-pierre); }
.essv-fond-jeune { background: var(--wp--preset--color--jeune-fond, #e4ede7); }
.essv-bloc-tete { display: flex; flex-wrap: wrap; gap: 16px 32px; align-items: end; justify-content: space-between; }
.essv-bloc-tete h2 { font: 760 clamp(1.9rem, 3.6vw, 2.7rem)/1.05 var(--essv-titres); font-variation-settings: "wdth" 85; color: var(--essv-encre); }
.essv-filtres { display: flex; flex-wrap: wrap; gap: 8px; }
.essv-filtre {
	font: 600 .85rem/1 var(--essv-texte); padding: .62em 1em; border-radius: 999px;
	border: 1px solid var(--essv-trait); background: var(--essv-blanc); color: var(--essv-encre); cursor: pointer; text-decoration: none;
}
.essv-filtre[aria-pressed="true"], .essv-filtre[aria-current="page"] { background: var(--essv-encre); color: #fff; border-color: var(--essv-encre); }
.essv-btn-encre { color: var(--essv-encre) !important; border-color: var(--essv-encre) !important; }
.essv-btn-encre:hover { background: var(--essv-encre) !important; color: #fff !important; }

.essv-grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap: 22px; }
.essv-carte {
	background: var(--essv-blanc); border-radius: var(--essv-rayon); overflow: hidden; text-decoration: none; color: var(--essv-encre);
	display: grid; grid-template-rows: auto 1fr; border-top: 4px solid var(--c);
	box-shadow: 0 1px 2px rgba(31,27,24,.06); transition: transform .2s, box-shadow .2s;
}
.essv-carte:hover { transform: translateY(-3px); box-shadow: 0 10px 24px -12px rgba(31,27,24,.35); color: var(--essv-encre); }
.essv-carte[hidden] { display: none; }
.essv-visuel { position: relative; aspect-ratio: 3 / 2; background: var(--essv-pierre); display: block; }
.essv-visuel img { width: 100%; height: 100%; object-fit: cover; display: block; }
.essv-visuel .essv-pastille { position: absolute; left: 12px; top: 12px; }
.essv-sans-photo { position: absolute; inset: 0; display: grid; place-items: center; color: #c9bdae; }
.essv-sans-photo svg { width: 38%; }
.essv-infos { padding: 14px 16px 18px; display: grid; gap: 8px; align-content: start; }
.essv-titre { font: 680 1.22rem/1.12 var(--essv-titres); font-variation-settings: "wdth" 85; }
.essv-quand { font-size: .86rem; color: var(--essv-gris); font-variant-numeric: tabular-nums; }
.essv-quand b { color: var(--essv-encre); font-weight: 600; }

/* ---------- Et bientôt ---------- */
.essv-bande {
	display: grid; grid-auto-flow: column; grid-auto-columns: minmax(240px, 25%);
	overflow-x: auto; border-top: 1px solid var(--essv-trait); scroll-snap-type: x mandatory; scrollbar-width: none;
}
.essv-bande::-webkit-scrollbar { display: none; }
.essv-bande a { display: grid; gap: 7px; padding: 18px 22px 18px 0; text-decoration: none; color: var(--essv-encre); border-bottom: 1px solid var(--essv-trait); align-content: start; scroll-snap-align: start; }
.essv-bande a + a { padding-left: 22px; border-left: 1px solid var(--essv-trait); }
.essv-bande a:hover .essv-titre { color: var(--essv-rouge); }
.essv-date { font: 650 .8rem var(--essv-texte); letter-spacing: .05em; text-transform: uppercase; color: var(--essv-rouge); font-variant-numeric: tabular-nums; }
.essv-fleches { display: flex; gap: 10px; }

/* ---------- Cette semaine ---------- */
.essv-legende { display: flex; flex-wrap: wrap; gap: 6px 16px; margin: 10px 0 0; }
.essv-cal {
	display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 1px;
	background: var(--essv-trait); border: 1px solid var(--essv-trait); border-radius: var(--essv-rayon); overflow: hidden;
}
.essv-cal-jour { background: var(--essv-blanc); padding: 14px; display: grid; gap: 10px; align-content: start; min-height: 210px; }
.essv-cal-jour.essv-ajd { box-shadow: inset 0 3px 0 var(--essv-rouge); }
.essv-cal-jour h3 {
	font: 600 .78rem var(--essv-texte); letter-spacing: .08em; text-transform: uppercase; color: var(--essv-gris);
	display: flex; justify-content: space-between; align-items: baseline;
}
.essv-cal-jour h3 b { font: 760 1.8rem/1 var(--essv-titres); color: var(--essv-encre); letter-spacing: 0; }
.essv-cal-jour ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 7px; font-size: .8rem; line-height: 1.25; }
.essv-cal-jour li { display: grid; grid-template-columns: 2.8rem 1fr; gap: 4px; padding-left: 8px; border-left: 3px solid var(--c); }
.essv-cal-jour li time { font-weight: 700; font-variant-numeric: tabular-nums; }
.essv-cal-jour li a { color: var(--essv-encre); text-decoration: none; min-width: 0; }
.essv-cal-jour li a:hover { color: var(--essv-rouge); text-decoration: underline; }
.essv-fleches-semaine { display: none; }
@media (max-width: 1000px) {
	.essv-cal { grid-auto-columns: calc((100% - 2px) / 3); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
	.essv-cal::-webkit-scrollbar { display: none; }
	.essv-cal-jour { scroll-snap-align: start; }
	.essv-fleches-semaine { display: flex; }
	.essv-bande { grid-auto-columns: minmax(240px, 45%); }
}
@media (max-width: 760px) {
	.essv-seances { grid-template-columns: 1fr; grid-template-rows: none; grid-auto-flow: row; }
	.essv-diapo { grid-template-columns: 1fr; grid-template-rows: auto 1fr; align-content: start; }
	.essv-diapo img { height: auto; }
}
@media (max-width: 560px) {
	.essv-cal { grid-auto-columns: calc((100% - 1px) / 2); }
	.essv-bande { grid-auto-columns: 80%; }
}
@media (max-width: 480px) {
	.essv-seances li { grid-template-columns: 3.7rem minmax(0, 1fr) auto; gap: 10px; }
	.essv-heure { font-size: 1.1rem; }
}

/* ---------- Fiche spectacle ---------- */
.essv-fiche-tete { background: var(--essv-pierre); padding: 28px var(--essv-marge) 44px; }
.essv-fiche-haut { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: clamp(20px, 3vw, 36px); align-items: start; max-width: 1280px; margin: 0 auto; }
.essv-sans-photo-tete { grid-template-columns: minmax(0, 760px); justify-content: center; }
.essv-fiche-photo { margin: 0; position: relative; }
/* Photo au format fixe (3:2) : un long titre allonge la carte, jamais la photo */
.essv-fiche-photo img { width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; border-radius: var(--essv-rayon); display: block; }
.essv-fiche-photo figcaption { position: absolute; right: 12px; bottom: 10px; font-size: .72rem; color: #fff; text-shadow: 0 1px 3px rgba(0,0,0,.7); }
.essv-fiche-infos { background: var(--essv-blanc); border-radius: var(--essv-rayon); border-top: 4px solid var(--c); padding: clamp(20px, 2.6vw, 32px); display: grid; gap: 18px; align-content: start; }
.essv-fiche-infos h1 { font: 780 clamp(2.4rem, 5vw, 4rem)/1.02 var(--essv-titres); overflow-wrap: anywhere; font-variation-settings: "wdth" 82; letter-spacing: -.01em; }
.essv-credits { margin: 0; display: grid; gap: 6px; }
.essv-credits div { display: flex; flex-wrap: wrap; gap: 4px 8px; }
.essv-credits dt { color: var(--essv-gris); }
.essv-credits dd { margin: 0; font-weight: 600; }
.essv-faits { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: 1px solid var(--essv-trait); }
.essv-faits div { padding: 12px 0; border-bottom: 1px solid var(--essv-trait); display: grid; gap: 2px; }
.essv-faits div:nth-child(odd) { padding-right: 12px; }
.essv-faits div:nth-child(even) { padding-left: 14px; border-left: 1px solid var(--essv-trait); }
.essv-faits dt { font: 600 .7rem var(--essv-texte); letter-spacing: .1em; text-transform: uppercase; color: var(--essv-gris); }
.essv-faits dd { margin: 0; font: 650 1.05rem var(--essv-titres); }
.essv-reste { color: var(--essv-rouge); font-weight: 600; font-size: .92rem; margin: 0; }
.essv-lien-abonne { color: var(--essv-rouge); font-weight: 600; font-size: .92rem; text-underline-offset: 3px; }
.essv-ouverture { font-weight: 600; color: var(--essv-encre); }

.essv-fiche-corps { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: clamp(28px, 5vw, 64px); padding: 52px var(--essv-marge) 56px; align-items: start; max-width: calc(1280px + 2 * var(--essv-marge)); margin: 0 auto; }
.essv-fiche-texte { display: grid; gap: 18px; max-width: 68ch; font-size: 1.04rem; }
.essv-fiche-texte > h2 { font: 720 1.5rem/1.1 var(--essv-titres); font-variation-settings: "wdth" 85; margin-top: 22px; }
.essv-fiche-texte p { margin: 0 0 1em; }
.essv-texte > :last-child { margin-bottom: 0; }
.essv-chapo { font-size: 1.3rem; line-height: 1.4; font-weight: 600; margin: 0 !important; }
.essv-video { position: relative; display: block; width: 100%; padding: 0; border: 0; border-radius: var(--essv-rayon); overflow: hidden; cursor: pointer; background: var(--essv-nuit); aspect-ratio: 16 / 9; }
.essv-video img { width: 100%; height: 100%; object-fit: cover; opacity: .82; transition: opacity .2s; display: block; }
.essv-video:hover img { opacity: 1; }
.essv-video iframe { width: 100%; height: 100%; border: 0; display: block; }
.essv-lecture { position: absolute; left: 50%; top: 50%; width: 72px; height: 72px; margin: -36px 0 0 -36px; border-radius: 50%; background: var(--essv-rouge); color: #fff; display: grid; place-items: center; }
.essv-lecture svg { width: 30px; margin-left: 4px; }
.essv-video-legende { position: absolute; left: 16px; bottom: 14px; color: #fff; font-weight: 600; text-shadow: 0 1px 3px rgba(0,0,0,.6); }
.essv-galerie { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.essv-galerie img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border-radius: 8px; display: block; }
.essv-presse { display: grid; gap: 14px; }
.essv-presse blockquote { margin: 0; background: var(--essv-blanc); border-radius: 8px; padding: 16px 18px; display: grid; gap: 8px; border-left: 3px solid var(--c); }
.essv-presse blockquote p { margin: 0; }
.essv-presse cite { font: 600 .74rem var(--essv-texte); letter-spacing: .1em; text-transform: uppercase; font-style: normal; color: var(--essv-gris); }
.essv-presse cite a { color: inherit; }
.essv-distribution { margin: 0; display: grid; border-top: 1px solid var(--essv-trait); }
.essv-distribution div { display: grid; grid-template-columns: minmax(9rem, 13rem) minmax(0, 1fr); gap: 4px 16px; padding: 9px 0; border-bottom: 1px solid var(--essv-trait); }
.essv-distribution dt { color: var(--essv-gris); }
.essv-distribution dd { margin: 0; font-weight: 600; }
.essv-mentions { font-size: .86rem; color: var(--essv-gris); }
.essv-compagnie { display: flex; flex-wrap: wrap; gap: 14px 24px; align-items: center; margin-top: 8px; }
.essv-production { color: var(--essv-gris); font-size: .95rem; margin: 0 !important; }
.essv-production a { color: var(--essv-rouge); font-weight: 600; }
.essv-reseaux { display: flex; gap: 10px; }
.essv-reseaux a { width: 36px; height: 36px; border-radius: 50%; background: var(--essv-encre); color: #fff; display: grid; place-items: center; }
.essv-reseaux a:hover { background: var(--essv-rouge); }
.essv-reseaux svg { width: 17px; height: 17px; }

.essv-dates { background: var(--essv-blanc); border-radius: var(--essv-rayon); padding: 22px; display: grid; gap: 10px; position: sticky; top: 90px; }
.essv-dates h2 { font: 720 1.35rem/1.1 var(--essv-titres); font-variation-settings: "wdth" 85; }
.essv-dates h3 { font: 600 .72rem var(--essv-texte); letter-spacing: .12em; text-transform: uppercase; color: var(--essv-gris); margin: 0; }
.essv-horaires { background: var(--essv-fond); border-radius: 8px; padding: 12px 14px; display: grid; gap: 6px; }
.essv-horaires p { font-size: .9rem; line-height: 1.45; margin: 0; }
.essv-onglets { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 6px; }
.essv-onglet {
	font: 600 .82rem/1 var(--essv-texte); padding: .55em .62em; border-radius: 999px; border: 1px solid var(--essv-trait);
	background: var(--essv-blanc); color: var(--essv-encre); cursor: pointer; display: inline-flex; gap: 6px; align-items: center;
}
.essv-onglet span { font-size: .72rem; color: var(--essv-gris); font-variant-numeric: tabular-nums; }
.essv-onglet[aria-selected="true"] { background: var(--essv-encre); border-color: var(--essv-encre); color: #fff; }
.essv-onglet[aria-selected="true"] span { color: #c9bfb6; }
.essv-mois[hidden] { display: none; }
.essv-pastilles { list-style: none; margin: 4px 0 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.essv-pastilles li { display: flex; justify-content: space-between; gap: 6px; padding: 7px 9px; border-radius: 6px; background: var(--essv-fond); font-size: .84rem; font-variant-numeric: tabular-nums; }
.essv-pastilles li b { font-weight: 650; }
.essv-resa-bas { display: grid; gap: 8px; justify-items: center; margin-top: 8px; }
.essv-resa-bas .ess-btn { width: 100%; }
.essv-pratique { font-size: .84rem; color: var(--essv-gris); border-top: 1px solid var(--essv-pierre); padding-top: 12px; margin: 4px 0 0; }
.essv-pratique a { color: var(--essv-rouge); }
.essv-fiche-vide { padding: 80px var(--essv-marge); text-align: center; }

.essv-barre-resa {
	position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; background: var(--essv-nuit, #1a1614); color: #fff;
	padding: 12px var(--essv-marge, 24px); display: flex; align-items: center; justify-content: space-between; gap: 16px;
	transform: translateY(110%); transition: transform .25s; box-shadow: 0 -8px 24px -12px rgba(0,0,0,.5);
}
.essv-barre-resa.visible { transform: none; }
.essv-barre-texte { display: grid; line-height: 1.3; min-width: 0; }
.essv-barre-texte b { font: 700 1.1rem var(--essv-titres, sans-serif); }
.essv-barre-texte span { font-size: .84rem; color: #c9bfb6; }
.essv-barre-resa .essv-lien-abonne { color: #fff; }
body.essv-avec-barre .ess-pied { padding-bottom: 96px; }

@media (max-width: 1000px) {
	.essv-fiche-haut, .essv-fiche-corps { grid-template-columns: 1fr; }
	.essv-fiche-photo { position: relative; }
	.essv-dates { position: static; }
	.essv-pastilles { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 560px) {
	.essv-barre-texte span, .essv-barre-resa .essv-lien-abonne { display: none; }
	.essv-galerie { gap: 8px; }
}
@media (max-width: 480px) {
	.essv-pastilles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.essv-distribution div { grid-template-columns: 8.5rem minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
	.essv-diapo, .essv-carte, .essv-barre-resa { transition: none; }
}

/* ---------- Calendrier (page) : un mois, semaine par semaine ---------- */
.essv-mois-nav { display: flex; gap: 8px; }
.essv-mois-nav .ess-icone { text-decoration: none; }
.essv-mois-grille {
	display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 1px;
	background: var(--essv-trait); border: 1px solid var(--essv-trait); border-radius: var(--essv-rayon); overflow: hidden;
}
.essv-mois-entetes { display: contents; }
.essv-mois-entetes span { background: var(--essv-pierre); padding: 8px 12px; font: 600 .72rem var(--essv-texte); letter-spacing: .1em; text-transform: uppercase; color: var(--essv-gris); }
.essv-mois-grille .essv-cal-jour { min-height: 150px; }
.essv-mois-grille .essv-cal-jour h3 b { font-size: 1.5rem; }
.essv-jour-court, .essv-jour-mois { display: none; }
.essv-jour-long { display: none; }
.essv-mois-grille .essv-cal-jour h3 { justify-content: flex-end; }
.essv-hors-mois { background: #faf8f5; }
.essv-hors-mois h3 b { color: var(--essv-gris); }
.essv-passe { opacity: .45; }
.essv-cal-jour li[hidden] { display: none; }
@media (max-width: 760px) {
	.essv-mois-grille { grid-template-columns: 1fr; background: transparent; border: 0; gap: 10px; overflow: visible; }
	.essv-mois-entetes { display: none; }
	.essv-mois-grille .essv-cal-jour { min-height: 0; border-radius: var(--essv-rayon); }
	.essv-mois-grille .essv-vide-jour, .essv-mois-grille .essv-passe, .essv-mois-grille .essv-cal-jour.essv-filtre-vide { display: none; }
	.essv-mois-grille .essv-cal-jour h3 { justify-content: flex-start; gap: 8px; }
	.essv-jour-long, .essv-jour-mois { display: inline; }
	.essv-mois-grille .essv-cal-jour h3 b { font-size: 1.3rem; order: 0; }
}

/* Titres longs (plus de 30 caractères) : taille réduite */
.essv-titre-long .essv-fiche-infos h1 { font-size: clamp(2rem, 3.4vw, 2.9rem); }
.essv-titre-tres-long .essv-fiche-infos h1 { font-size: clamp(1.8rem, 2.8vw, 2.4rem); }

/* ---------- Page de résultats de recherche ---------- */
.essv-recherche-page { display: flex; gap: 8px; max-width: 640px; }
.essv-recherche-page input { flex: 1; min-width: 0; width: 0; font: inherit; padding: .7em 1em; border: 1px solid var(--essv-trait); border-radius: 999px; background: var(--essv-blanc); }
.essv-nb-resultats { color: var(--essv-gris); margin: 0; }
.essv-resultats-titre { font: 740 1.5rem/1.1 var(--essv-titres) !important; font-variation-settings: "wdth" 85; margin-top: 12px !important; }
.essv-resultats { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 380px), 1fr)); gap: 12px; }
.essv-resultats a { display: grid; grid-template-columns: 96px minmax(0, 1fr); gap: 14px; align-items: center; background: var(--essv-blanc); border-radius: var(--essv-rayon); padding: 10px; text-decoration: none; color: var(--essv-encre); border-left: 4px solid var(--c, var(--essv-trait)); box-shadow: 0 1px 2px rgba(31,27,24,.06); }
.essv-resultats a:hover .essv-titre { color: var(--essv-rouge); }
.essv-resultats img, .essv-resultat-sans-photo { width: 96px; aspect-ratio: 3 / 2; object-fit: cover; border-radius: 6px; display: block; background: var(--essv-pierre); }
.essv-resultat-texte { display: grid; gap: 4px; min-width: 0; }
.essv-resultats .essv-titre { font-size: 1.08rem; }
.essv-personnes { font-size: .82rem; color: var(--essv-gris); }

/* ==========================================================================
   Avignon : affiches (Opus › Réglages › Vignettes : Affiches) et accueil du festival
   ========================================================================== */

/* Cartes en affiches : portrait 2:3, l'affiche entière (jamais recadrée sur le texte) */
.essv-grille-affiches { grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr)); gap: 22px 18px; }
.essv-grille-affiches .essv-visuel { aspect-ratio: 2 / 3; }
.essv-grille-affiches .essv-infos { padding: 12px 14px 16px; gap: 6px; }
.essv-grille-affiches .essv-titre { font-size: 1.08rem; }
@media (max-width: 480px) {
	.essv-grille-affiches { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 12px; }
	.essv-grille-affiches .essv-titre { font-size: .98rem; }
	.essv-grille-affiches .essv-quand { font-size: .78rem; }
}

/* Fiche : l'affiche à gauche, en portrait */
.essv-fiche-haut.essv-avec-affiche { grid-template-columns: minmax(0, 380px) minmax(0, 1fr); max-width: 1120px; }
.essv-avec-affiche .essv-fiche-photo img { aspect-ratio: 2 / 3; box-shadow: 0 14px 30px -18px rgba(31,27,24,.5); }
@media (max-width: 1000px) {
	.essv-fiche-haut.essv-avec-affiche { grid-template-columns: 1fr; }
	.essv-avec-affiche .essv-fiche-photo { max-width: 340px; margin-inline: auto; width: 100%; }
}

/* Bandeau d'ouverture du festival */
.essv-festival {
	--essv-nuit: var(--wp--preset--color--nuit, #1a1614);
	background: var(--essv-nuit); color: #fff; text-align: center;
	padding: clamp(48px, 8vw, 96px) var(--essv-marge); display: grid; justify-items: center; gap: 14px;
}
.essv-festival p { margin: 0; }
.essv-surtitre { font: 650 .8rem var(--wp--preset--font-family--texte, Inter, sans-serif); letter-spacing: .16em; text-transform: uppercase; color: #c9bfb6; }
.essv-festival-titre { margin: 0; font: 780 clamp(2.4rem, 6vw, 4.6rem)/1.02 var(--wp--preset--font-family--titres, sans-serif); font-variation-settings: "wdth" 82; letter-spacing: -.01em; color: #fff; }
.essv-festival-texte { color: #d9d0c7; max-width: 46ch; }
.essv-festival .ess-btn { margin-top: 10px; }
.essv-intro { margin: 8px 0 0; color: var(--essv-gris); }

/* ---------- Visionneuse noire (photos et bande-annonce de la fiche) ---------- */
html.essv-vis-ouverte { overflow: hidden; }
.essv-visionneuse {
	position: fixed; inset: 0; width: 100vw; height: 100dvh; max-width: none; max-height: none;
	margin: 0; padding: 0; border: 0; background: rgba(10, 8, 7, .96); color: #fff; overflow: hidden;
}
.essv-visionneuse::backdrop { background: rgba(10, 8, 7, .96); }
.essv-vis-scene { position: absolute; inset: 0; display: grid; place-items: center; padding: 64px clamp(12px, 7vw, 96px); box-sizing: border-box; }
.essv-vis-scene img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 6px; display: block; }
.essv-vis-video-cadre { width: min(100%, 1200px, calc((100dvh - 128px) * 16 / 9)); aspect-ratio: 16 / 9; background: #000; border-radius: 8px; overflow: hidden; }
.essv-vis-video-cadre iframe { width: 100%; height: 100%; border: 0; display: block; }
.essv-visionneuse button {
	position: absolute; width: 48px; height: 48px; border-radius: 50%; border: 1px solid rgba(255,255,255,.35);
	background: rgba(0,0,0,.35); color: #fff; display: grid; place-items: center; cursor: pointer; padding: 0;
}
.essv-visionneuse button:hover { background: var(--wp--preset--color--rouge-vif, #d42320); border-color: transparent; }
.essv-visionneuse button svg { width: 22px; height: 22px; }
.essv-vis-fermer { top: 14px; right: 14px; }
.essv-vis-prec { left: 14px; top: 50%; transform: translateY(-50%); }
.essv-vis-suiv { right: 14px; top: 50%; transform: translateY(-50%); }
.essv-vis-video .essv-vis-prec, .essv-vis-video .essv-vis-suiv, .essv-vis-seule .essv-vis-prec, .essv-vis-seule .essv-vis-suiv { display: none; }
.essv-vis-compte { position: absolute; left: 0; right: 0; bottom: 18px; margin: 0; text-align: center; font-size: .85rem; color: #c9bfb6; font-variant-numeric: tabular-nums; }
@media (max-width: 560px) {
	.essv-vis-scene { padding: 64px 8px; }
	.essv-vis-prec, .essv-vis-suiv { top: auto; bottom: 10px; transform: none; }
}
