/* ============================================================
   CSS personnalisé du site AVSR — fichier UNIQUE de référence.
   Servi par le snippet 43 (wp_enqueue_style, version = filemtime).
   NE PLUS éditer le CSS dans le Customizer : éditer CE fichier
   (local puis déploiement prod), le cache navigateur se renouvelle seul.
   ============================================================ */


/* Mini-icônes dans le menu de navigation */
.elementor-element-337eec6 h2 a.e-heading-link-base {top:-2px;
	position:relative;}
.elementor-element-337eec6 h2 a.e-heading-link-base::after {content: "";
  display: block;
	height: 3px !important;
	margin-bottom: -5px;}
.elementor-element-337eec6 h2 a.e-heading-link-base:hover::after, .page-id-7 .elementor-element-337eec6 h2 a.e-heading-link-base::after {content: "";
  display: block;
  width: 100%;
  height: 4px !important;
  background-color: #d8d4ce !important;
position:relative;
	    bottom: -11px;}
/* AVSR - minilogo */
.menu-item-52 > a.elementor-item {padding-left: 26px !important;
  background-image: url('/wp-content/uploads/2026/06/minilogo_avsr.png');
  background-repeat: no-repeat;
  background-size: 18px auto;
  background-position: left center;}
/* Open Harmony - minilogo */
.menu-item-51 > a.elementor-item {padding-left: 26px !important;
  background-image: url('/wp-content/uploads/2026/06/minilogo_open.png');
  background-repeat: no-repeat;
  background-size: 18px auto;
  background-position: left center;}
/* Policorali - minilogo */
.menu-item-50 > a.elementor-item {padding-left: 32px !important;
  background-image: url('/wp-content/uploads/2026/06/minilogo_poli.png');
  background-repeat: no-repeat;
  background-size: 24px auto;
  background-position: left center;}
.menu-item-52 > a:hover, .menu-item-52.current-menu-item > a {color:#e0318a !important;
  background-image:url("/wp-content/uploads/2026/07/logo-avsr.png") !important;}
.menu-item-51 > a:hover, .menu-item-51.current-menu-item > a {color:#f2e61a !important;
  background-image:url("/wp-content/uploads/2026/07/logo-open.png") !important;}
.menu-item-50 > a:hover, .menu-item-50.current-menu-item > a {color:#89ccca !important;
  background-image:url("/wp-content/uploads/2026/07/logo-couleur-policorli.png") !important;}
.avsr-c-grid .avsr-c-card--hasimg {margin-top: 320px;}
.avsr-c-grid .avsr-c-card__photo {margin: -50% auto 0 auto;}
/* Correctif espacement menu - eviter le debordement a droite */
/* Menu sur une seule ligne, sans marge a gauche */
.elementor-42 .elementor-element-39f807f .elementor-nav-menu {flex-wrap: nowrap !important;}
.elementor-42 .elementor-element-39f807f .elementor-nav-menu > li {flex-shrink: 0 !important;}
.elementor-42 .elementor-element-cf736ca {flex-grow: 1 !important; min-width: 0 !important;}
.elementor-42 .elementor-element-39f807f .elementor-item {padding-left: 8px !important; padding-right: 8px !important; margin: 0 !important;}
.menu-item-52 > a.elementor-item, .menu-item-51 > a.elementor-item {padding-left: 20px !important;}
.menu-item-50 > a.elementor-item {padding-left: 22px !important;}
/* Aligner le menu a gauche, colle au logo (supprime l'espace a gauche) */
.elementor-42 .elementor-element-cf736ca {justify-content: flex-start !important;}
.elementor-42 .elementor-element-39f807f {justify-content: flex-start !important;}
.elementor-42 .elementor-element-39f807f .elementor-nav-menu {justify-content: flex-start !important;}
.menu-item-52 > a.elementor-item, .menu-item-51 > a.elementor-item {padding-left: 22px !important;}
.menu-item-50 > a.elementor-item {padding-left: 24px !important;}
/* Mini-logos : marge a gauche + espace avec le texte */
.elementor-42 .elementor-element-39f807f .menu-item-52 > a.elementor-item, .elementor-42 .elementor-element-39f807f .menu-item-51 > a.elementor-item {margin-left: 14px !important; padding-left: 26px !important; background-position: left center !important;}
.elementor-42 .elementor-element-39f807f .menu-item-50 > a.elementor-item {margin-left: 14px !important; padding-left: 32px !important; background-position: left center !important;}
/* Par défaut : logo blanc visible, logo couleur masqué */
#logo-oh-jaune, #logo-avsr-couleur, #logo-policorali-couleur {display: none;}
#logo-oh-blanc, #logo-avsr-blanc, #logo-policorali-blanc {display: block;}
/* Quand il y a une image à la une : on montre le logo couleur, on cache le blanc */
body.a-la-une #logo-oh-jaune, body.a-la-une #logo-avsr-couleur, body.a-la-une #logo-policorali-couleur {display: block;}
body.a-la-une #logo-oh-blanc, body.a-la-une #logo-avsr-blanc, body.a-la-une #logo-policorali-blanc {display: none;}
/* Alignement du logo sur la ligne de base du menu */
.elementor-element-337eec6 img, .elementor-element-337eec6 .e-image-base {transform: translateY(-1.56px) !important;}
/* AVSR - Concerts : rapprocher la vidéo/image de 20% vers la droite et la faire passer au-dessus du cadre bordé */
@media (min-width: 768px) {
.avsr-c-row__media {transform: translateX(calc(20% - 40px));
    z-index: 2;}
.avsr-c-row__body {z-index: 1;}
}
/* AVSR - Concerts : logique média (vidéo prime sur l'image, pas de doublon) */
.avsr-c-row__media:has(.avsr-media--wide) .avsr-media--narrow {display: none !important;}
/* Concert sans média (ni image ni vidéo) : le corps ne dépasse pas 1140px */
.avsr-c-row:not(:has(.avsr-c-row__media)) .avsr-c-row__body {max-width: 1140px; margin: 0 auto !important; padding-left: 44px !important;}
/* En-tête : logo + menu contraints à 1140px maximum */
.elementor-location-header .e-con-inner {max-width: 1140px;
    margin-left: auto;
    margin-right: auto;}
.elementor-location-header .elementor-nav-menu {flex-wrap: nowrap;}
/* Menu en-tête : ajustements padding/margin/taille */
.elementor-location-header .elementor-nav-menu > li > a.elementor-item {padding-right: 0 !important;
    font-size: 17px !important;}
.elementor-location-header .elementor-element-39f807f .elementor-nav-menu .menu-item-52 > a.elementor-item, .elementor-location-header .elementor-element-39f807f .elementor-nav-menu .menu-item-51 > a.elementor-item, .elementor-location-header .elementor-element-39f807f .elementor-nav-menu .menu-item-50 > a.elementor-item {padding-left: 22px !important;
    margin-left: -8px !important;}
/* Sous-menu : suppression bordures roses et coins arrondis */
.elementor-element.elementor-element-b9437d3 .elementor-nav-menu--dropdown {border-top-width: 0 !important; border-top-color: transparent !important; border-radius: 0 !important;}
.elementor-element.elementor-element-b9437d3 .elementor-nav-menu--dropdown .elementor-item, .elementor-element.elementor-element-b9437d3 .elementor-nav-menu--dropdown .elementor-sub-item {border-left-width: 0 !important; border-left-color: transparent !important; border-radius: 0 !important;}
/* Boucles .avsr-grid : 3 colonnes (desktop) via CSS Grid */
.avsr-grid {column-count: unset !important;
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 26px !important;
  align-items: start !important;}
.avsr-grid .avsr-card {width: auto !important;
  display: block !important;
  break-inside: avoid;}
/* Page Actualités (page-id-27) : conserver le masonry (column-count) */
.page-id-27 .avsr-grid {display: block !important;
  column-count: 3 !important;
  column-gap: 26px !important;
  grid-template-columns: none !important;}
.page-id-27 .avsr-grid .avsr-card {display: inline-block !important;
  width: 100% !important;
  margin-bottom: 26px;
  break-inside: avoid;
  -webkit-column-break-inside: avoid;}
/* Responsive : 2 colonnes sur tablette */
@media (max-width: 1024px) {
.avsr-grid {grid-template-columns: repeat(2, 1fr) !important;}
.page-id-27 .avsr-grid {column-count: 2 !important;}
}
/* Responsive : 1 colonne sur smartphone */
@media (max-width: 767px) {
.avsr-grid {grid-template-columns: repeat(2, 1fr) !important;}
.page-id-27 .avsr-grid {column-count: 2 !important;}
}
/* Sous-menu au survol : supprimer la barre rose à gauche (box-shadow inset) */
.elementor-element.elementor-element-b9437d3 .elementor-nav-menu--dropdown a, .elementor-element.elementor-element-b9437d3 .elementor-nav-menu--dropdown a:hover, .elementor-element.elementor-element-b9437d3 .elementor-nav-menu--dropdown a:focus, .elementor-element.elementor-element-b9437d3 .elementor-nav-menu--dropdown a:active, .elementor-element.elementor-element-b9437d3 .elementor-nav-menu--dropdown a.elementor-item-active, .elementor-element.elementor-element-b9437d3 .elementor-nav-menu--dropdown a.highlighted {box-shadow: none !important;
  border-left-width: 0 !important;
  border-left-color: transparent !important;}
/* Prochains concerts : suppression des bulles de navigation + flèches en haut à droite */
.avsr-cc__dots {display:none !important;}
.avsr-cc__nav {top: 160px !important;
    bottom: auto !important;
    left: auto !important;
    right: 80px !important;}
/* Prochains concerts : style du titre */
.avsr-cc .avsr-nc__title, .avsr-nc__title {font-family: roboto !important;
  font-size: 50px !important;
  line-height: 1.04 !important;
  font-weight: 400 !important;
  letter-spacing: -.01em !important;
  text-transform: uppercase !important;
  margin: 0 0 14px !important;}
/* #######################################################################
   CSS CONSOLIDÉ DEPUIS LES SNIPPETS (version complète — 2026-07-05)
   Extrait via l'API depuis les snippets actifs. Blocs statiques uniquement.
   NB: les formes décoratives (dynamiques/PHP) restent dans leur snippet.
   ####################################################################### */
/* ===== SOURCE: snippet #10 "Prochain concert dynamique (shortcode)" — bloc 1 ===== */
.avsr-nc {--nc-color:#e0318a;max-width:1100px;margin:0 auto;padding:0 40px 60px;}
.avsr-nc__heading {font-size:34px;font-weight:800;letter-spacing:.01em;text-transform:uppercase;color:#111;margin:0 0 26px;}
.avsr-nc__card {background:var(--nc-color);padding-top:150px;padding-bottom:38px;position:relative;display:flow-root;}
.avsr-nc__figwrap {position:absolute;top:-240px;left:0;right:0;height:360px;padding:0 40px;}
.avsr-nc__title {font-size:44px;line-height:1.02;font-weight:800;letter-spacing:-.01em;text-transform:uppercase;margin:0 0 14px;}
.avsr-nc__sub {font-size:14px;line-height:1.5;margin:0 0 22px;max-width:640px;}
.avsr-nc__card.is-nofig .avsr-nc__figwrap {display:none;}
@media(max-width:700px) {
.avsr-nc {padding:0 18px 40px;}
.avsr-nc__card {padding-top:220px;}
.avsr-nc__figwrap {height:260px;padding:0 18px;}
.avsr-nc__body {padding:0 22px;}
.avsr-nc__title {font-size:30px;}
.avsr-nc__logo {left:30px;}
}
/* ===== SOURCE: snippet #12 "Carousel concerts a venir (shortcode)" — bloc 1 ===== */
.avsr-cc {max-width:1180px;margin:0 auto;padding:50px 40px 60px;position:relative;z-index:5;}
.avsr-cc__heading {font-size:34px;font-weight:800;letter-spacing:.01em;text-transform:uppercase;color:#111;margin:0 0 26px;}
.avsr-cc__stage {position:relative;}
.avsr-cc__slide {position:absolute;top:0;left:0;width:100%;opacity:0;visibility:hidden;transition:opacity 1.2s ease;pointer-events:none;}
.avsr-cc__slide.is-active {position:relative;opacity:1;visibility:visible;pointer-events:auto;z-index:1;}
.avsr-nc__card {background:var(--nc-color);padding-top:120px;padding-bottom:38px;position:relative;display:flow-root;box-sizing:border-box;}
.avsr-nc__figwrap {position:absolute;top:-200px;left:0;right:0;height:300px;padding:0 40px;z-index:3;}
.avsr-nc__fig {position:relative;width:100%;height:100%;overflow:hidden;}
.avsr-nc__fig img {width:100%;height:100%;object-fit:cover;object-position:center;display:block;}
.avsr-nc__logo {position:absolute;top:16px;left:56px;width:60px;height:auto;z-index:2;}
.avsr-nc__body {padding:0 40px;color:#111;}
.avsr-nc__meta {font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;margin:0 0 6px;line-height:1.5;}
.avsr-nc__cat {font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin:0 0 14px;}
.avsr-nc__title {font-size:34px;line-height:1.04;font-weight:800;letter-spacing:-.01em;text-transform:uppercase;margin:0 0 14px;}
.avsr-nc__sub {font-size:14px;line-height:1.5;margin:0 0 22px;}
.avsr-nc__links a {font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;color:#111;border-bottom:1px solid #111;padding-bottom:2px;margin-right:26px;display:inline-block;}
/* Concert sans image : le bloc se compacte, pas d espace reserve en haut */
.avsr-nc__card.is-nofig {padding-top:40px;}
.avsr-nc__card.is-nofig .avsr-nc__logo {position:static;display:block;margin:0 0 16px;left:auto;top:auto;}
.avsr-cc__nav {position:absolute;top:0;right:40px;display:flex;gap:8px;z-index:6;}
.avsr-cc__btn {width:40px;height:40px;border:1px solid #111;background:#fff;color:#111;font-size:18px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s;}
.avsr-cc__btn:hover {background:#111;color:#fff;}
.avsr-cc__dots {display:flex;gap:8px;justify-content:center;margin-top:22px;}
.avsr-cc__dot {width:9px;height:9px;border-radius:50%;background:#ccc;border:0;padding:0;cursor:pointer;transition:.2s;}
.avsr-cc__dot.is-active {background:#111;}
@media(max-width:700px) {
.avsr-cc {padding:0 18px 40px;}
.avsr-cc__nav {right:18px;}
.avsr-nc__figwrap {height:220px;top:-140px;padding:0 18px;}
.avsr-nc__card {padding-top:100px;}
.avsr-nc__body {padding:0 22px;}
.avsr-nc__title {font-size:28px;}
}
/* ===== SOURCE: snippet #13 "Actus - Filtres sous l'actu mise en avant" — bloc 1 ===== */
/* ===== SOURCE: snippet #14 "AVSR - Boucles dynamiques (shortcodes)" — bloc 1 ===== */
/* ====== AVSR – Actualités dynamiques (masonry + filtres + pagination) ====== */
.avsr-news {--yellow:#f2e61a;--pink:#e0318a;--cyan:#89ccca;--grey:#8a8a8a;--ink:#111;font-family:"Roboto",sans-serif;color:#111;max-width:1180px;margin:0 auto;padding:10px 20px 70px;}
.avsr-news * {box-sizing:border-box;}
/* Filtres */
.avsr-filters {display:flex;flex-wrap:wrap;align-items:center;row-gap:10px;column-gap:26px;margin:0 0 6px;}
.avsr-filter {font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:none;border:0;border-bottom:1px solid transparent;color:#111;padding:0 0 2px;cursor:pointer;transition:.15s;border-radius:0;line-height:1.4;}
.avsr-filter:hover {background:none;color:#111;border-bottom-color:#111;}
.avsr-filter.is-active {background:none;color:#111;border-bottom-color:#111;}
.avsr-filter[data-cat="avsr"].is-active {background:none;color:#111;border-bottom-color:var(--pink);}
.avsr-filter[data-cat="open-harmony"].is-active {background:none;color:#111;border-bottom-color:var(--yellow);}
.avsr-filter[data-cat="policorali"].is-active {background:none;color:#111;border-bottom-color:#89ccca;}
/* Hero highlight card */
.avsr-hero {background:var(--yellow);padding:0 0 34px;margin-bottom:46px;}
#avsrHero {padding-top:0;}
.avsr-hero {display:flow-root;}
.avsr-hero__img {width:90%;height:auto;object-fit:cover;display:block;margin:0 auto 26px;position:relative;}
.avsr-hero__nofig {padding-top:34px;}
.avsr-hero__body {padding:0 40px;}
.avsr-hero__cat {font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin:0 0 14px;}
.avsr-hero__title {font-size:44px;line-height:1.02;font-weight:800;letter-spacing:-.01em;text-transform:uppercase;margin:0 0 16px;}
.avsr-hero__desc {font-size:15px;line-height:1.5;margin:0 0 20px;max-width:640px;}
.avsr-hero__links a {font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;color:#111;border-bottom:1px solid #111;padding-bottom:2px;margin-right:26px;}
/* Masonry via CSS columns */
.avsr-grid {column-count:3;column-gap:26px;padding-top:60px;}
@media(max-width:900px) {
.avsr-grid {column-count:2;}
}
@media(max-width:600px) {
.avsr-grid {column-count:1;}
.avsr-hero__title {font-size:32px;}
.avsr-hero__body {padding:0 22px;}
}
.avsr-card {break-inside:avoid;-webkit-column-break-inside:avoid;page-break-inside:avoid;display:inline-block;width:100%;margin:0 0 26px;border:1px solid #e7e7e7;padding:24px;background:#fff;vertical-align:top;overflow:visible;transition:background-color .25s ease, border-color .25s ease, color .25s ease;}
.avsr-card--hasimg {/*reserved via padding*/}
.avsr-card__photo {display:block;width:85%;aspect-ratio:296 / 316;height:auto;object-fit:cover;margin:0 auto 22px auto;box-shadow:0 8px 22px rgba(0,0,0,.14);position:relative;}
.avsr-card__logo {width:34px;height:34px;margin-bottom:16px;transition:color .25s ease;}
.avsr-card__cat {font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin:0 0 10px;}
.avsr-card__title {font-family:Roboto,sans-serif;font-size:36px;line-height:42px;font-weight:400;letter-spacing:-.01em;text-transform:uppercase;margin:0 0 14px;}
.avsr-card__title a {color:inherit;text-decoration:none;}
.avsr-card__desc {font-size:14px;line-height:1.5;margin:0 0 16px;}
.avsr-card__desc em {font-style:italic;}
.avsr-card__link {font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;color:var(--pink);border-bottom:1px solid var(--pink);padding-bottom:2px;transition:color .25s ease, border-color .25s ease;}
/* Marques */
.mark-c {color:var(--pink);}
.mark-h {color:var(--yellow);}
.mark-sun {color:#89ccca;}
/* ==== Bordures colorées par catégorie ==== */
.avsr-card[data-cat="avsr"] {border-color:var(--pink);}
.avsr-card[data-cat="open-harmony"] {border-color:var(--yellow);}
.avsr-card[data-cat="policorali"] {border-color:#89ccca;}
.avsr-card.is-grey {border-color:var(--grey);}
/* ==== Fond plein coloré AU SURVOL (hover) ==== */
.avsr-card[data-cat="policorali"]:hover {background:var(--cyan);border-color:var(--cyan);}
.avsr-card[data-cat="policorali"]:hover .avsr-card__logo {color:#0b6b63;}
.avsr-card[data-cat="policorali"]:hover .avsr-card__link {color:#0b6b63;border-color:#0b6b63;}
.avsr-card[data-cat="avsr"]:hover {background:var(--pink);border-color:var(--pink);color:#fff;}
.avsr-card[data-cat="avsr"]:hover .avsr-card__logo {color:#fff;}
.avsr-card[data-cat="avsr"]:hover .avsr-card__title a {color:#fff;}
.avsr-card[data-cat="avsr"]:hover .avsr-card__link {color:#fff;border-color:#fff;}
.avsr-card[data-cat="open-harmony"]:hover {background:var(--yellow);border-color:var(--yellow);color:#111;}
.avsr-card[data-cat="open-harmony"]:hover .avsr-card__logo {color:#111;}
.avsr-card[data-cat="open-harmony"]:hover .avsr-card__title a {color:#111;}
.avsr-card[data-cat="open-harmony"]:hover .avsr-card__link {color:#111;border-color:#111;}
/* ==== Variante GRISE ==== */
.avsr-card.is-grey .avsr-card__logo {color:var(--grey);}
.avsr-card.is-grey .avsr-card__link {color:var(--grey);border-color:var(--grey);}
.avsr-card.is-grey:hover {background:var(--grey);border-color:var(--grey);color:#fff;}
.avsr-card.is-grey:hover .avsr-card__logo {color:#fff;}
.avsr-card.is-grey:hover .avsr-card__title a {color:#fff;}
.avsr-card.is-grey:hover .avsr-card__link {color:#fff;border-color:#fff;}
/* ==== PAGINATION ==== */
.avsr-pagination {display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:20px;margin:44px 0 0;}
.avsr-page {min-width:0;height:auto;padding:0 0 2px;font-size:13px;font-weight:700;letter-spacing:.05em;background:none;border:0;border-bottom:1px solid transparent;color:#111;cursor:pointer;transition:.15s;}
.avsr-page:hover {background:none;color:#111;border-bottom-color:#111;}
.avsr-page.is-current {background:none;color:#111;border-bottom-color:#111;cursor:default;}
.avsr-page[disabled] {opacity:.3;cursor:default;}
.avsr-page[disabled]:hover {background:none;color:#111;border-bottom-color:transparent;}
.avsr-empty {padding:40px 0;font-size:15px;color:#666;}
.avsr-loading {padding:40px 0;font-size:14px;color: #6b6b6b;text-transform:uppercase;letter-spacing:.1em;}
.avsr-filters--type {margin-top:0;margin-bottom:34px;column-gap:20px;flex-wrap:nowrap;}
.avsr-filter--type {background:none;color:#111;white-space:nowrap;}
.avsr-filter--type:hover {background:none;color:#111;border-bottom-color:#111;}
.avsr-filter--type.is-active {background:none;color:#111;border-bottom-color:#111;}
.avsr-filters--type .avsr-filter {font-size:11px;}
/* ==== Système logo couleur/blanc (repris des concerts passés) ==== */
.avsr-card:not(.is-grey) .avsr-card__logo {width:40px;height:40px;margin-bottom:16px;background-repeat:no-repeat;background-position:left center;background-size:contain;transition:background-image .25s ease;}
.avsr-card:not(.is-grey) .avsr-card__logo svg, .avsr-card:not(.is-grey) .avsr-card__logo img {display:none!important;}
.avsr-card:not(.is-grey)[data-cat="avsr"] .avsr-card__logo {background-image:url(/wp-content/themes/hello-elementor/img/avsr_couleur.png);}
.avsr-card:not(.is-grey)[data-cat="avsr"]:hover .avsr-card__logo {background-image:url(/wp-content/themes/hello-elementor/img/avsr_blanc.png);}
.avsr-card:not(.is-grey)[data-cat="open-harmony"] .avsr-card__logo {background-image:url(/wp-content/themes/hello-elementor/img/open_couleur.png);}
.avsr-card:not(.is-grey)[data-cat="open-harmony"]:hover .avsr-card__logo {background-image:url(/wp-content/themes/hello-elementor/img/open_blanc.png);}
.avsr-card:not(.is-grey)[data-cat="policorali"] .avsr-card__logo {background-image:url(/wp-content/themes/hello-elementor/img/poli_couleur.png);}
.avsr-card:not(.is-grey)[data-cat="policorali"]:hover .avsr-card__logo {background-image:url(/wp-content/themes/hello-elementor/img/poli_blanc.png);}
/* ==== Cartes grises : logo AVSR gris (PNG) ==== */
.avsr-card.is-grey .avsr-card__logo {width:40px;height:40px;margin-bottom:16px;background-repeat:no-repeat;background-position:left center;background-size:contain;background-image:url(/wp-content/themes/hello-elementor/img/avsr_gris.png);transition:background-image .25s ease;}
.avsr-card.is-grey .avsr-card__logo svg, .avsr-card.is-grey .avsr-card__logo img {display:none!important;}
.avsr-card.is-grey:hover .avsr-card__logo {background-image:url(/wp-content/themes/hello-elementor/img/avsr_blanc.png);}
/* ==== Couleur des liens par ensemble (= couleur logo/fond) ==== */
.avsr-card[data-cat="open-harmony"]:not(.is-grey) .avsr-card__link {color:var(--yellow);border-color:var(--yellow);}
.avsr-card[data-cat="policorali"]:not(.is-grey) .avsr-card__link {color:var(--cyan);border-color:var(--cyan);}
/* ===== AVSR-RESPONSIVE actus ===== */
/* spacing tweaks */
@media(max-width:760px) {
.avsr-grid {padding-top:34px !important;}
.avsr-filters--type {margin-bottom:22px !important;}
}
@media(max-width:600px) {
.avsr-grid {padding-top:26px !important;}
}
/* Tablet */
@media(max-width:1024px) {
.avsr-hero__title {font-size:38px;}
.avsr-hero__body {padding:0 32px;}
#avsrHero {padding-top:240px;}
.avsr-hero__img {margin:-240px auto 24px;width:92%;}
}
/* Type filters: allow wrapping / horizontal scroll instead of overflowing */
@media(max-width:900px) {
.avsr-filters--type {flex-wrap:wrap !important;column-gap:16px;row-gap:8px;margin-bottom:26px;}
.avsr-filters {column-gap:18px;}
}
/* Small tablet / large phone */
@media(max-width:760px) {
.avsr-hero__title {font-size:32px;}
.avsr-hero__body {padding:0 24px;}
#avsrHero {padding-top:0;}
.avsr-hero__img {margin:24px auto 24px;width:100%;}
.avsr-hero__nofig {padding-top:28px;}
.avsr-grid {column-count:2;}
.avsr-voirtout {margin:6px 4px 0;}
}
/* Phone */
@media(max-width:600px) {
.avsr-grid {column-count:1;}
.avsr-hero__title {font-size:27px;line-height:1.06;}
.avsr-hero__body {padding:0 18px;}
.avsr-hero__desc {font-size:14px;}
.avsr-card {padding:20px;}
.avsr-filters--type {column-gap:14px;}
.avsr-filter {font-size:11px;}
}
/* video embeds (YouTube/Vimeo iframes) */
.avsr-hero__img.avsr-embed {aspect-ratio:16 / 9;height:auto;}
.avsr-card__photo.avsr-embed {aspect-ratio:296 / 316;height:auto;}

/* concerts loops: give the embed container a shape so iframe can cover it */
.avsr-c-row__img.avsr-embed {width:100%;height:100%;min-height:280px;}
.avsr-c-card__photo.avsr-embed {width:90%;aspect-ratio:4/3;height:auto;margin:-70% auto 0 auto;}
.avsr-hero__img video, .avsr-card__photo video {width:100%;height:100%;object-fit:cover;display:block;}
/* media sticks OUT above the card (per maquette); card reserves external space so nothing overlaps */
.avsr-card.avsr-card--hasimg {margin-top:260px !important;overflow:visible;}
.avsr-card--hasimg .avsr-card__media {position:relative;width:100%;margin:-285px 0 18px 0;overflow:visible;}
.avsr-card__media .avsr-card__photo {width:100%;margin:0;display:block;box-shadow:0 8px 22px rgba(0,0,0,.14);}
.avsr-card__media .avsr-card__photo.avsr-embed {width:100%;}
/* hero framed in the yellow band */
.avsr-hero__media {position:relative;overflow:visible;margin:0 0 26px;}
.avsr-hero__media .avsr-hero__img {width:90%;margin:0 auto;display:block;}
/* avsr media precedence */
.avsr-media--narrow {display:none;}
.avsr-media--wide {display:block;}
@media(max-width:600px) {
.avsr-media--wide {display:none;}
.avsr-media--narrow {display:block;}
}
/* mode hero seul */
.avsr-news--heroonly .avsr-filters {display:none !important;}
.avsr-news--heroonly .avsr-grid {display:none !important;}
.avsr-news--heroonly .avsr-pagination {display:none !important;}
.avsr-news--heroonly .avsr-actus-link, .avsr-news--heroonly .avsr-voir-tout {display:none !important;}
.avsr-news--heroonly {padding-bottom:0 !important;}
/* ===== SOURCE: snippet #14 "AVSR - Boucles dynamiques (shortcodes)" — bloc 2 ===== */
/* ===== SOURCE: snippet #14 "AVSR - Boucles dynamiques (shortcodes)" — bloc 3 ===== */
.avsr-news--compact .avsr-filters, .avsr-news--compact .avsr-pagination {display:none !important;}
/* ===== SOURCE: snippet #14 "AVSR - Boucles dynamiques (shortcodes)" — bloc 4 ===== */
/* ====== AVSR - Concerts a venir (liste 1 colonne) ====== */
.avsr-c-filters {display:flex;flex-wrap:wrap;align-items:center;row-gap:10px;column-gap:26px;margin:0 0 6px;}
.avsr-c-list {padding-top:40px;}
.avsr-c-row {display:flex;gap:44px;align-items:stretch;}
.avsr-c-row + .avsr-c-row {border-top:2px solid #111;margin-top:48px;padding-top:48px;}
.avsr-c-row__img {width:100%;height:100%;min-height:280px;object-fit:cover;display:block;background:#eee;}
.avsr-c-row__badge {position:absolute;top:14px;left:14px;width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;color:#fff;background:var(--pink);}
.avsr-c-row[data-ensemble="open-harmony"] .avsr-c-row__badge {background:var(--yellow);color:#111;}
.avsr-c-row__body {flex:1;border:1px solid var(--pink);padding:30px 34px;}
.avsr-c-row[data-ensemble="open-harmony"] .avsr-c-row__body {border-color:var(--yellow);}
.avsr-c-row[data-ensemble="policorali"] .avsr-c-row__body {border-color:var(--cyan);}
.avsr-c-row[data-ensemble="avsr"] .avsr-c-row__body {border-color:var(--pink);}
.avsr-c-row__meta {font-size:13px;color:#222;line-height:1.4;margin:0 0 16px;}
.avsr-c-row__meta span {display:block;}
.avsr-c-row__title {font-size:36px;line-height:1.08;font-weight:700;text-transform:uppercase;margin:0 0 16px;}
.avsr-c-row__title a {color:inherit;text-decoration:none;}
.avsr-c-row__desc {font-size:15px;line-height:1.6;color:#222;margin:0 0 18px;}
.avsr-c-row__links {display:flex;flex-wrap:wrap;column-gap:26px;row-gap:8px;}
.avsr-c-row__link {font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;text-decoration:none;color:var(--pink);border-bottom:2px solid var(--pink);padding-bottom:2px;}
.avsr-c-row[data-ensemble="open-harmony"] .avsr-c-row__link {color:var(--yellow);border-bottom-color:var(--yellow);}
.avsr-c-row[data-ensemble="policorali"] .avsr-c-row__link {color:var(--cyan);border-bottom-color:var(--cyan);}
@media(max-width:760px) {
.avsr-c-row {flex-direction:column;gap:20px;}
.avsr-c-row__media {max-width:100%;}
.avsr-c-row__img {min-height:220px;}
.avsr-c-row__title {font-size:28px;}
}
.avsr-c-page {min-width:0;height:auto;padding:0 2px;font-size:13px;font-weight:700;letter-spacing:.05em;background:none;border:0;border-bottom:1px solid transparent;color:#111;cursor:pointer;transition:.15s;}
.avsr-c-loading {padding:40px 0;font-size:14px;color: #6b6b6b;}
/* ===== Ajustements precision maquette (overrides) ===== */
.avsr-c-row {align-items:flex-start;}
.avsr-c-row__media {position:relative;flex:0 0 42%;max-width:42%;}
.avsr-c-row[data-ensemble="open-harmony"] .avsr-c-row__badge {background:var(--yellow);}
.avsr-c-row[data-ensemble="policorali"] .avsr-c-row__badge {background:var(--cyan);color:#111;}
.avsr-c-row__body {position:relative;flex:1 1 auto;
  margin-left:-56px;margin-top:-30px;margin-bottom:-56px;
  padding:40px 44px 44px 100px;box-sizing:border-box;}
.avsr-c-row__body p:first-child {font-size:14px;color:#333;margin:0 0 16px;line-height:1.5;}
.avsr-c-row__title {font-size:38px;font-weight:500;line-height:1.15;
  letter-spacing:.005em;text-transform:uppercase;
  margin:0 0 20px;}
.avsr-c-row__desc {font-size:16px;line-height:1.65;margin:0 0 24px;max-width:44ch;}
.avsr-c-row__links {display:flex;flex-wrap:wrap;gap:32px;align-items:center;}
.avsr-c-row__links a {font-size:13px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;}
@media (max-width:760px) {
.avsr-c-row__media {flex:0 0 100%;max-width:100%;}
.avsr-c-row__badge {width:44px;height:44px;font-size:20px;top:12px;left:12px;}
.avsr-c-row__body {margin-left:0;margin-top:0;margin-bottom:0;padding:28px 24px;}
.avsr-c-row__title {font-size:26px;}
}
/* fix: avoid body overlapping divider */
.avsr-c-row {padding-bottom:20px;}
.avsr-c-row__body {margin-bottom:-20px;}
/* ===== Logos ensembles a la place des badges lettres ===== */
.avsr-c-row__badge {background:transparent;
  border-radius:0;
  font-size:0;
  color:transparent;
  width:38px;height:38px;
  background-repeat:no-repeat;
  background-position:center;
  background-size:contain;
  transition:none;}
.avsr-c-row[data-ensemble="avsr"] .avsr-c-row__badge {background:url('/wp-content/themes/hello-elementor/img/avsr_couleur.png') center/contain no-repeat;}
.avsr-c-row[data-ensemble="avsr"]:hover .avsr-c-row__badge {background-image:url('/wp-content/themes/hello-elementor/img/avsr_blanc.png');}
.avsr-c-row[data-ensemble="open-harmony"] .avsr-c-row__badge {background:url('/wp-content/themes/hello-elementor/img/open_couleur.png') center/contain no-repeat;}
.avsr-c-row[data-ensemble="open-harmony"]:hover .avsr-c-row__badge {background-image:url('/wp-content/themes/hello-elementor/img/open_blanc.png');}
.avsr-c-row[data-ensemble="policorali"] .avsr-c-row__badge {background:url('/wp-content/themes/hello-elementor/img/poli_couleur.png') center/contain no-repeat;}
.avsr-c-row[data-ensemble="policorali"]:hover .avsr-c-row__badge {background-image:url('/wp-content/themes/hello-elementor/img/poli_blanc.png');}
/* ===== Fond couleur au survol (comme les actualites) ===== */
.avsr-c-row__body {transition:background-color .25s ease,border-color .2s ease,color .2s ease;}
.avsr-c-row__title a, .avsr-c-row__link, .avsr-c-row__meta span, .avsr-c-row__desc {transition:color .2s ease,border-color .2s ease;}
.avsr-c-row[data-ensemble="avsr"]:hover .avsr-c-row__body {background:var(--pink);border-color:var(--pink);}
.avsr-c-row[data-ensemble="policorali"]:hover .avsr-c-row__body {background:var(--cyan);border-color:var(--cyan);}
.avsr-c-row[data-ensemble="open-harmony"]:hover .avsr-c-row__body {background:var(--yellow);border-color:var(--yellow);}
.avsr-c-row:hover .avsr-c-row__title a, .avsr-c-row:hover .avsr-c-row__meta span, .avsr-c-row:hover .avsr-c-row__desc, .avsr-c-row:hover .avsr-c-row__link {color:#fff;}
.avsr-c-row:hover .avsr-c-row__link {border-bottom-color:#fff;}
/* avsr embed cover (no black bars) */

/* ===== SOURCE: snippet #14 "AVSR - Boucles dynamiques (shortcodes)" — bloc 5 ===== */
/* ====== AVSR – Concerts passés masonry ====== */
.avsr-concerts {--yellow:#f2e61a;--pink:#e0318a;--cyan:#89ccca;--grey:#8a8a8a;--ink:#111;font-family:"Roboto",sans-serif;color:#111;max-width:1180px;margin:0 auto;padding:10px 20px 70px;}
.avsr-concerts * {box-sizing:border-box;}
/* Filtres années */
.avsr-c-filters {display: flex;
    flex-wrap: wrap;
    align-items: center;
    row-gap: 10px;
    column-gap: 26px;
    margin: 0 0 6px;}
.avsr-c-filter {font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;background:none;border:0;border-bottom:1px solid transparent;color:#111;padding:0 0 2px;line-height:1.4;cursor:pointer;transition:.15s;border-radius:0;}
.avsr-c-filter:hover {background:none;color:#111;border-bottom-color:#111;}
.avsr-c-filter.is-active {background:none;color:#111;border-bottom-color:#111;}
/* Masonry grid */
.avsr-c-grid {column-count:2;column-gap:26px;padding-top:40px;}
@media(max-width:900px) {
.avsr-c-grid {column-count:2;}
}
@media(max-width:600px) {
.avsr-c-grid {column-count:1;}
}
/* Cards */
.avsr-c-card {break-inside:avoid;-webkit-column-break-inside:avoid;page-break-inside:avoid;display:inline-block;width:100%;margin:0 0 26px;border:1px solid #e7e7e7;background:#fff;vertical-align:top;overflow:visible;transition:background-color .25s ease,border-color .25s ease,color .25s ease;}
.avsr-c-card--hasimg {margin-top:220px;}
.avsr-c-card__photo {display:block;width:90%;aspect-ratio:4/3;height:auto;object-fit:cover;margin:-70% auto 0 auto;position:relative;box-shadow:0 8px 22px rgba(0,0,0,.14);}
.avsr-c-card__body {padding:20px 24px 24px;}
.avsr-c-card__meta {font-size:12px;color:#555;margin:16px 0 8px;line-height:1.4;}
.avsr-c-card__date {display:block;font-size:12px;color:#555;}
.avsr-c-card__lieu {display:block;font-size:12px;color:#555;}
.avsr-c-card__title {font-size:28px;line-height:1.05;font-weight:800;letter-spacing:-.01em;text-transform:uppercase;margin:0 0 14px;}
.avsr-c-card__title a {color:inherit;text-decoration:none;}
.avsr-c-card__desc {font-size:14px;line-height:1.5;margin:0 0 16px;color:#444;}
.avsr-c-card__link {font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;color:var(--pink);border-bottom:1px solid var(--pink);padding-bottom:2px;}
.avsr-c-card[data-ens="open-harmony"] .avsr-c-card__link {color:var(--yellow);border-bottom-color:var(--yellow);}
.avsr-c-card[data-ens="policorali"] .avsr-c-card__link {color:var(--cyan);border-bottom-color:var(--cyan);}
/* Hover */
.avsr-c-card:hover {background:#f7f7f7;}
/* Pagination */
.avsr-c-pagination {display:flex;flex-wrap:wrap;justify-content:center;align-items:center;column-gap:20px;row-gap:20px;margin:44px 0 0;}
.avsr-c-page {min-width:0;height:auto;padding:0 0 2px;font-size:13px;font-weight:700;letter-spacing:.05em;background:none;border:0;border-bottom:1px solid transparent;color:#111;cursor:pointer;transition:.15s;}
.avsr-c-page:hover {background:none;color:#111;border-bottom-color:#111;}
.avsr-c-page.is-current {background:none;color:#111;border-bottom-color:#111;cursor:default;}
.avsr-c-page[disabled] {opacity:.3;cursor:default;}
.avsr-c-page[disabled]:hover {background:none;color:#111;border-bottom-color:transparent;}
.avsr-c-empty {padding:40px 0;font-size:15px;color:#666;}
.avsr-c-loading {padding:40px 0;font-size:14px;color: #6b6b6b;text-transform:uppercase;letter-spacing:.1em;}
.avsr-c-filters--ensemble {margin:0 0 6px;}
.avsr-c-filter[data-ens="avsr"].is-active {border-bottom-color:var(--pink);}
.avsr-c-filter[data-ens="open-harmony"].is-active {border-bottom-color:var(--yellow);}
.avsr-c-filter[data-ens="policorali"].is-active {border-bottom-color:#89ccca;}
.avsr-c-card[data-ens="avsr"] {border-color:var(--pink);}
.avsr-c-card[data-ens="open-harmony"] {border-color:var(--yellow);}
.avsr-c-card[data-ens="policorali"] {border-color:#89ccca;}
.avsr-c-card[data-ens="avsr"]:hover {background:var(--pink);border-color:var(--pink);}
.avsr-c-card[data-ens="avsr"]:hover .avsr-c-card__meta, .avsr-c-card[data-ens="avsr"]:hover .avsr-c-card__date, .avsr-c-card[data-ens="avsr"]:hover .avsr-c-card__lieu, .avsr-c-card[data-ens="avsr"]:hover .avsr-c-card__desc, .avsr-c-card[data-ens="avsr"]:hover .avsr-c-card__title a {color:#fff;}
.avsr-c-card[data-ens="avsr"]:hover .avsr-c-card__link {color:#fff;border-color:#fff;}
.avsr-c-card[data-ens="open-harmony"]:hover {background:var(--yellow);border-color:var(--yellow);}
.avsr-c-card[data-ens="policorali"]:hover {background:var(--cyan);border-color:var(--cyan);}
.avsr-c-card[data-ens="policorali"]:hover .avsr-c-card__link {color:#0b6b63;border-color:#0b6b63;}
/* ===== Logos ensembles en haut de chaque carte (passes) ===== */
.avsr-c-card[data-ens="avsr"] .avsr-c-card__body::before, .avsr-c-card[data-ens="open-harmony"] .avsr-c-card__body::before, .avsr-c-card[data-ens="policorali"] .avsr-c-card__body::before {content:"";display:block;width:40px;height:40px;margin:0 0 14px;
  background-repeat:no-repeat;background-position:left center;background-size:contain;}
.avsr-c-card[data-ens="avsr"] .avsr-c-card__body::before {background-image:url('/wp-content/themes/hello-elementor/img/avsr_couleur.png');}
.avsr-c-card[data-ens="avsr"]:hover .avsr-c-card__body::before {background-image:url('/wp-content/themes/hello-elementor/img/avsr_blanc.png');}
.avsr-c-card[data-ens="open-harmony"] .avsr-c-card__body::before {background-image:url('/wp-content/themes/hello-elementor/img/open_couleur.png');}
.avsr-c-card[data-ens="open-harmony"]:hover .avsr-c-card__body::before {background-image:url('/wp-content/themes/hello-elementor/img/open_blanc.png');}
.avsr-c-card[data-ens="policorali"] .avsr-c-card__body::before {background-image:url('/wp-content/themes/hello-elementor/img/poli_couleur.png');}
.avsr-c-card[data-ens="policorali"]:hover .avsr-c-card__body::before {background-image:url('/wp-content/themes/hello-elementor/img/poli_blanc.png');}
/* avsr embed cover (no black bars) */
.avsr-embed {position:relative;overflow:hidden;}
.avsr-embed iframe {position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;height:100%;border:0;display:block;}
@supports(aspect-ratio:16/9) {
.avsr-embed iframe {width:auto;height:auto;min-width:100%;min-height:100%;aspect-ratio:16/9;}
}
.avsr-embed video {width:100%;height:100%;object-fit:cover;display:block;}
/* ===== SOURCE: snippet #14 "AVSR - Boucles dynamiques (shortcodes)" — bloc 6 ===== */
.avsr-am {max-width:1180px;margin:0 auto;width:100%;flex:1 0 100%;align-self:stretch;}
.avsr-am {box-sizing:border-box;}
@media(max-width:1240px) {
.avsr-am {padding-left:24px;padding-right:24px;}
.avsr-anav {padding-left:24px;padding-right:24px;box-sizing:border-box;}
}
@media(max-width:600px) {
.avsr-am {padding-left:18px;padding-right:18px;}
.avsr-anav {padding-left:18px;padding-right:18px;}
}
.avsr-am__media {position:relative;width:100%;height:0;padding-bottom:56.25%;overflow:hidden;background:#111 center/cover no-repeat;} /* 16:9 (Stéphane 10/07 : la vidéo YouTube remplit sans bandes noires ; testé par Léonard desktop+mobile+lecture) */
.avsr-am__media img {position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;}
.avsr-am__media iframe, .avsr-am__media video {position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:cover;border:0;}
.avsr-embed--facade {cursor:pointer;background-size:cover;background-position:center;}
.avsr-embed--facade .avsr-play {position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:68px;height:68px;border:0;border-radius:50%;background:rgba(0,0,0,.55);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .2s,transform .2s;padding:0;}
.avsr-embed--facade:hover .avsr-play {background:#e0318a;transform:translate(-50%,-50%) scale(1.06);}
.avsr-embed--facade .avsr-play__tri {display:block;width:0;height:0;border-style:solid;border-width:11px 0 11px 18px;border-color:transparent transparent transparent #fff;margin-left:4px;}
.avsr-embed--facade::after {content:"";position:absolute;inset:0;background:rgba(0,0,0,.12);}
.avsr-embed--playing::after {display:none;}
@media(max-width:600px) {
.avsr-am__media {padding-bottom:56.25%;}
}
/* ===== SOURCE: snippet #14 "AVSR - Boucles dynamiques (shortcodes)" — bloc 7 ===== */
.avsr-anav {max-width:1180px;margin:40px auto 0;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;font-family:"Roboto",sans-serif;}
.avsr-anav a, .avsr-anav span {font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;text-decoration:none;color:#111;border-bottom:1px solid #111;padding-bottom:3px;transition:color .15s,border-color .15s;}
.avsr-anav a:hover {color:#e0318a;border-color:#e0318a;}
.avsr-anav--open-harmony a:hover {color:#f2e61a;border-color:#f2e61a;}
.avsr-anav--policorali a:hover {color:#0b6b63;border-color:#0b6b63;}
.avsr-anav--avsr a:hover {color:#e0318a;border-color:#e0318a;}
.avsr-anav__all {margin:0 auto;}
.avsr-anav__off {opacity:.3;border-color:#ccc;cursor:default;}
@media(max-width:600px) {
/* Responsive : prev à gauche + next à droite (1re ligne), toutes les actus centré en dessous (2e ligne).
   Typo réduite pour que prev+next tiennent côte à côte sur petit écran. */
.avsr-anav {flex-direction:row;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px;row-gap:22px;}
.avsr-anav a, .avsr-anav span {font-size:10px;letter-spacing:.04em;padding-bottom:2px;}
.avsr-anav__prev {order:1;white-space:nowrap;}
.avsr-anav__next {order:2;white-space:nowrap;text-align:right;}
.avsr-anav__all {order:3;flex-basis:100%;margin:0;text-align:center;border-bottom:0;text-decoration:underline;text-underline-offset:4px;white-space:nowrap;}
}
/* ===== SOURCE: snippet #15 "Menu - Responsive & style mobile" — bloc 1 ===== */
/* ===== AVSR menu responsive polish ===== */
/* Burger toggle */
.elementor-menu-toggle {color:#111 !important;border:none !important;background:transparent !important;padding:6px !important;transition:transform .2s ease;}
.elementor-menu-toggle:hover {color:#e0318a !important;}
.elementor-menu-toggle svg {width:30px;height:30px;}
/* ===== Mobile / tablet dropdown - polished panel ===== */
@media(max-width:1024px) {
/* The open menu behaves as an elegant full-width panel */
.elementor-nav-menu--dropdown {background:#ffffff !important;
    box-shadow:0 18px 50px rgba(0,0,0,.16) !important;
    border-top:3px solid #e0318a !important;
    padding:8px 0 14px !important;
    border-radius:0;
    overflow:hidden;}
/* Smooth reveal when the toggle opens the menu */
.elementor-menu-toggle.elementor-active + .elementor-nav-menu--dropdown, .elementor-nav-menu--dropdown[aria-hidden="false"], nav.elementor-nav-menu--dropdown {animation:avsrMenuIn .32s cubic-bezier(.22,.61,.36,1) both;}
@keyframes avsrMenuIn {from{opacity:0;transform:translateY(-10px);}
to {opacity:1;transform:translateY(0);}
}

  /* Items: left-aligned, generous, grouped with their icon */
  .elementor-nav-menu--dropdown .elementor-nav-menu{padding:0 10px !important;}
  .elementor-nav-menu--dropdown .menu-item{margin:2px 0;}
  .elementor-nav-menu--dropdown .elementor-item{
    color:#14161a !important;
    font-family:'Roboto',sans-serif !important;
    font-size:15px !important;
    font-weight:600 !important;
    letter-spacing:.08em !important;
    text-transform:uppercase !important;
    text-align:left !important;
    padding:17px 18px 17px 44px !important;
    line-height:1.15 !important;
    border-bottom:none !important;
    border-radius:0;
    position:relative;
    background-position:16px 50% !important;
    transition:background-color .2s ease,color .2s ease,transform .2s ease,box-shadow .2s ease;
  }
  /* Items without a logo icon: align text with the iconed ones */
  .elementor-nav-menu--dropdown .menu-item-type-post_type .elementor-item[style*="background-image"],
  .elementor-nav-menu--dropdown .elementor-item{padding-left:44px !important;}

  /* Hover / focus: soft pink pill + slide */
  .elementor-nav-menu--dropdown .elementor-item:hover,
  .elementor-nav-menu--dropdown .elementor-item:focus{
    background-color:#fdeef6 !important;
    color:#e0318a !important;
    transform:translateX(4px);
  }
  /* Active / current page: pink pill with accent bar */
  .elementor-nav-menu--dropdown .elementor-item.elementor-item-active,
  .elementor-nav-menu--dropdown .current-menu-item > .elementor-item{
    background-color:#fdeef6 !important;
    color:#e0318a !important;
    box-shadow:inset 4px 0 0 #e0318a;
  }
  /* Parent dont le sous-menu est OUVERT (SmartMenus pose la classe .highlighted /
     aria-expanded) : même pilule rose — sinon Elementor applique un FOND NOIR par défaut
     qui « colle » quand on ouvre un autre sous-menu (bug du carré noir en mobile). */
  .elementor-nav-menu--dropdown .elementor-item.highlighted,
  .elementor-nav-menu--dropdown li[aria-expanded="true"] > .elementor-item{
    background-color:#fdeef6 !important;
    color:#e0318a !important;
  }
  /* Aucun contour/surlignage noir au tap ou au focus : le fond rose sert d'indicateur. */
  .elementor-nav-menu--dropdown .elementor-item,
  .elementor-nav-menu--dropdown .elementor-sub-item{
    outline:none !important;
    -webkit-tap-highlight-color:transparent !important;
  }
  /* Sub-menu (Concerts) */
  .elementor-nav-menu--dropdown .sub-menu{
    background:#fafafa !important;
    border-radius:0;
    margin:2px 6px 6px !important;
    padding:4px 0 !important;
  }
  .elementor-nav-menu--dropdown .elementor-sub-item{
    color:#555 !important;
    font-family:'Roboto',sans-serif !important;
    font-size:12.5px !important;
    font-weight:500 !important;
    letter-spacing:.03em;
    text-transform:none !important;
    text-align:left !important;
    padding:13px 18px 13px 44px !important;
    border-radius:0;
    background:transparent !important;
    transition:color .18s ease,background-color .18s ease,transform .18s ease;
  }
  .elementor-nav-menu--dropdown .elementor-sub-item:hover,
  .elementor-nav-menu--dropdown .elementor-sub-item:focus{
    color:#e0318a !important;background:#f4e6ef !important;transform:translateX(3px);
  }
  /* Dropdown toggle arrow for Concerts */
  .elementor-nav-menu--dropdown .elementor-item .sub-arrow{margin-left:auto;color: #6b6b6b;transition:transform .2s ease;}
  .elementor-nav-menu--dropdown .elementor-item.highlighted .sub-arrow{color:#e0318a;}
}
/* Page banner headings (Elementor) responsive scaling - AVSR/OH/Policorali/Actus */
@media(max-width:768px) {
.elementor-element-a5002b6 .elementor-heading-title, .elementor-element-7f65c83 .elementor-heading-title, .elementor-element-6e9a8f9 .elementor-heading-title, .elementor-element-807b0ff .elementor-heading-title {font-size:56px !important;line-height:1.05 !important;word-break:normal;}
}
@media(max-width:480px) {
.elementor-element-a5002b6 .elementor-heading-title, .elementor-element-7f65c83 .elementor-heading-title, .elementor-element-6e9a8f9 .elementor-heading-title, .elementor-element-807b0ff .elementor-heading-title {font-size:40px !important;}
}
/* Elementor container side margins & horizontal-overflow guard.
   Ensemble intro sections (AVSR/OH/Policorali) use fixed 80px gutters via
   Elementor CSS variables. Override the VARIABLES so it works across all
   tablet/mobile widths, and add a global overflow-x guard. */
@media(max-width:1024px) {
.elementor-element-cb364f4, .elementor-element-90a9a51, .elementor-element-5a742b4 {--margin-left:40px !important;
    --margin-right:40px !important;
    margin-left:40px !important;
    margin-right:40px !important;}
}
@media(max-width:768px) {
.elementor-element-cb364f4, .elementor-element-90a9a51, .elementor-element-5a742b4 {--margin-left:20px !important;
    --margin-right:20px !important;
    margin-left:20px !important;
    margin-right:20px !important;}
}
@media(max-width:480px) {
.elementor-element-cb364f4, .elementor-element-90a9a51, .elementor-element-5a742b4 {--margin-left:16px !important;
    --margin-right:16px !important;
    margin-left:16px !important;
    margin-right:16px !important;}
}
/* intro container width fix: let the box respect its side margins */
@media(max-width:1024px) {
.elementor-element-cb364f4, .elementor-element-90a9a51, .elementor-element-5a742b4 {width:auto !important;--width:auto !important;max-width:none !important;}
}
/* Global horizontal-overflow guard (prevents the stray white margin/scroll on the right) */
@media(max-width:1024px) {
html, body {max-width:100%;overflow-x:hidden;}
}
/* Burger position & size (right-aligned on the logo row, larger) */
@media(max-width:1024px) {
.elementor-element-c003812 > .e-con-inner {flex-direction:row !important;
    flex-wrap:nowrap !important;
    align-items:center !important;
    justify-content:space-between !important;}
.elementor-element-cf736ca {width:auto !important;
    flex:0 0 auto !important;
    margin-left:auto !important;
    align-items:center !important;
    justify-content:center !important;
    --justify-content:center !important;
    align-self:center !important;
    height:auto !important;
    min-height:0 !important;}
/* Force the nav-menu widget itself to the right edge of its container */
.elementor-element-39f807f {width:auto !important;
    flex:0 0 auto !important;
    align-self:center !important;
    margin-top:auto !important;
    margin-bottom:auto !important;
    height:auto !important;
    min-height:0 !important;}
.elementor-element-39f807f .elementor-menu-toggle {width:48px !important;
    height:48px !important;
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    border-radius:0;
    padding:0 !important;}
.elementor-element-39f807f .elementor-menu-toggle svg {width:30px !important;
    height:30px !important;}
}
/* ===== Desktop menu alignment & hover border polish (>1024px) ===== */
@media(min-width:1025px) {
/* Put every top-level item on the same centered row */
.elementor-nav-menu--main {align-items:center !important;}
.elementor-nav-menu--main > .elementor-nav-menu {align-items:center !important;}
.elementor-nav-menu--main > .elementor-nav-menu > li {display:flex !important;align-items:center !important;}
/* Consistent item box: same vertical padding, even spacing, icon centered */
.elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item {display:flex !important;
    align-items:center !important;
    padding-top:8px !important;
    padding-bottom:8px !important;
    padding-right:0 !important;
    margin-right:34px !important;
    line-height:1 !important;
    position:relative;
    background-position:left center !important;
    background-size:auto 20px !important;}
.elementor-nav-menu--main > .elementor-nav-menu > li:last-child > a.elementor-item {margin-right:0 !important;}
/* Desktop dropdown lisibilite (Medias / Concerts) */
.elementor-nav-menu--main .elementor-nav-menu--dropdown {min-width:210px !important;
    background:#ffffff !important;
    border:1px solid #ececec !important;
    border-top:2px solid #e0318a !important;
    border-radius:0;
    box-shadow:0 10px 28px rgba(0,0,0,.12) !important;
    padding:6px 0 !important;
    margin-top:6px !important;}
.elementor-nav-menu--main .elementor-nav-menu--dropdown .elementor-sub-item {color:#111 !important;
    font-family:'Roboto',sans-serif !important;
    font-size:12px !important;
    font-weight:700 !important;
    letter-spacing:.06em !important;
    text-transform:uppercase !important;
    line-height:1.2 !important;
    padding:12px 22px !important;
    border-bottom:1px solid #f2f2f2 !important;
    transition:color .15s ease,background-color .15s ease !important;}
.elementor-nav-menu--main .elementor-nav-menu--dropdown li:last-child .elementor-sub-item {border-bottom:0 !important;}
.elementor-nav-menu--main .elementor-nav-menu--dropdown .elementor-sub-item:hover, .elementor-nav-menu--main .elementor-nav-menu--dropdown .elementor-sub-item:focus, .elementor-nav-menu--main .elementor-nav-menu--dropdown .elementor-sub-item.elementor-item-active {color:#e0318a !important;
    background:#fdeef6 !important;
    box-shadow:inset 3px 0 0 #e0318a !important;}
}
/* ===== Accueil : slider hero responsive + header au-dessus ===== */
/* Le header reste toujours au-dessus du slider (evite que le menu passe dessous) */
.elementor-location-header {position:relative;z-index:1000;}
.elementor-location-header .elementor-element-297a7cb {position:relative;z-index:1000;background:#fff;}
/* Le texte du slider (widget Slides) devient trop grand sur petits ecrans :
   on reduit progressivement le titre et le sous-titre pour eviter le debordement. */
@media(max-width:1024px) {
.elementor-slide-heading {font-size:60px !important;line-height:1.1 !important;}
.elementor-slide-description {font-size:30px !important;line-height:1.2 !important;}
}
@media(max-width:768px) {
.elementor-slide-heading {font-size:42px !important;line-height:1.12 !important;}
.elementor-slide-description {font-size:22px !important;line-height:1.25 !important;}
}
@media(max-width:480px) {
.elementor-slide-heading {font-size:32px !important;line-height:1.15 !important;word-break:normal;}
.elementor-slide-description {font-size:18px !important;line-height:1.3 !important;}
}
/* Slider accueil desktop : titre 65px / devise 35px (demande Stéphane 2026-07-08) */
@media(min-width:1025px) {
.elementor-slide-heading {font-size:65px !important;line-height:1.1 !important;}
.elementor-slide-description {font-size:35px !important;line-height:1.2 !important;}
}
/* AVSR-FIX-2026-07 */
/* --- Desktop menu: progressive shrink so it never overflows (>=1025px) --- */
@media (min-width:1301px) and (max-width:1520px) {
.elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item {font-size:16px !important; margin-right:14px !important;}
.elementor-nav-menu--main > .elementor-nav-menu .menu-item-52 > a.elementor-item, .elementor-nav-menu--main > .elementor-nav-menu .menu-item-51 > a.elementor-item {padding-left:22px !important; margin-left:8px !important;}
.elementor-nav-menu--main > .elementor-nav-menu .menu-item-50 > a.elementor-item {padding-left:26px !important; margin-left:8px !important;}
}
@media (min-width:1025px) and (max-width:1300px) {
.elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item {font-size:14px !important; margin-right:8px !important; letter-spacing:0 !important;}
.elementor-nav-menu--main > .elementor-nav-menu .menu-item-52 > a.elementor-item, .elementor-nav-menu--main > .elementor-nav-menu .menu-item-51 > a.elementor-item {padding-left:20px !important; margin-left:4px !important; background-size:14px auto !important;}
.elementor-nav-menu--main > .elementor-nav-menu .menu-item-50 > a.elementor-item {padding-left:22px !important; margin-left:4px !important; background-size:16px auto !important;}
}
@media (min-width:1025px) and (max-width:1360px) {
.elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item {font-size:17px !important; margin-right:18px !important; padding-left:5px !important;}
}
@media (min-width:1025px) and (max-width:1240px) {
.elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item {font-size:16px !important; margin-right:15px !important; padding-left:5px !important;}
}
@media (min-width:1025px) and (max-width:1120px) {
.elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item {font-size:14px !important; margin-right:9px !important; padding-left:4px !important; letter-spacing:0 !important;}
}
@media (min-width:1025px) and (max-width:1060px) {
.elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item {font-size:13px !important; margin-right:6px !important; padding-left:3px !important;}
}
/* --- Hamburger fully to the right --- */
@media (max-width:1024px) {
.elementor-widget-nav-menu {margin-left:auto !important; width:100% !important;}
.elementor-widget-nav-menu .elementor-nav-menu__align-end, .elementor-widget-nav-menu > .elementor-widget-container {width:100% !important; margin-left:auto !important;}
.elementor-widget-nav-menu .elementor-nav-menu__align-end {display:flex !important; justify-content:flex-end !important;}
.elementor-widget-nav-menu .elementor-menu-toggle {margin-left:auto !important; margin-right:0 !important;}
/* Logo pas collé au bord gauche en responsive (Stéphane 09/07 « trop collé à gauche, marges responsive
   cohérence »). La rangée est à 12px des bords mais le bouton ☰ est ~32px du bord droit et les titres de
   contenu ~35px → le logo (12px) était le plus collé. On lui ajoute 20px → logo à ~32px, symétrique avec le
   bouton. Mobile+tablette (≤1024). */
.elementor-location-header .elementor-element-337eec6 { margin-left: 20px !important; }
}
/* En-tête DESKTOP : rapprocher le menu du logo. Le menu était calé à droite (ul justify-content:flex-end +
   margin-left:auto ≈ 90px) → grand vide entre le logo et « AVSR » (~118px). Stéphane 09/07 « le logo doit
   être proche du menu, même distance que les éléments entre eux ». On aligne les items À GAUCHE dans leur
   cellule : le logo reste dans son coin gauche, le menu se colle à lui (écart ≈ 28px ≈ inter-items), le vide
   passe à droite. Mobile inchangé (menu = dropdown, non ciblé par --main). */
@media (min-width:1025px){
  .elementor-location-header .elementor-nav-menu--main .elementor-nav-menu {
    justify-content: flex-start !important;
    margin-left: 0 !important;
  }
}
/* --- Closed responsive dropdown: collapse the leaking strip (pink border + padding) --- */
.elementor-nav-menu__container.elementor-nav-menu--dropdown[aria-hidden="true"] {border:0 !important; padding-top:0 !important; padding-bottom:0 !important; max-height:0 !important; overflow:hidden !important;}
/* AVSR-SUBMENU-CENTER */
/* Menu responsive ouvert : centrer aussi les items avec sous-menu (Concerts, Medias) */
@media (max-width:1024px) {
.elementor-nav-menu--dropdown a.has-submenu, .elementor-nav-menu--dropdown .elementor-item.elementor-item-anchor.has-submenu {position:relative !important;
    justify-content:center !important;
    text-align:center !important;}
.elementor-nav-menu--dropdown a.has-submenu .sub-arrow, .elementor-nav-menu--dropdown a.has-submenu .elementor-nav-menu--dropdown-icon, .elementor-nav-menu--dropdown .has-submenu > .sub-arrow {position:absolute !important;
    right:16px !important;
    top:50% !important;
    transform:translateY(-50%) !important;
    margin-left:0 !important;}
}
/* AVSR-HOME-FOOTER-RESP */
/* ===== Page d'accueil : typographie responsive (evite textes trop gros & chevauchements) ===== */
@media (max-width:1024px) {
/* Grands titres de section (Prochains concerts / Direction artistique / Discographie) */
.elementor-page-7 .elementor-element-2d35588 .elementor-heading-title, .elementor-page-7 .elementor-element-8882b69 .elementor-heading-title, .elementor-page-7 .elementor-element-97d8726 .elementor-heading-title {font-size:44px !important; line-height:1.1 !important;}
/* Texte d'introduction */
.elementor-page-7 .elementor-element-23f1e94, .elementor-page-7 .elementor-element-23f1e94 p {font-size:24px !important; line-height:1.5 !important;}
}
@media (max-width:767px) {
.elementor-page-7 .elementor-element-2d35588 .elementor-heading-title, .elementor-page-7 .elementor-element-8882b69 .elementor-heading-title, .elementor-page-7 .elementor-element-97d8726 .elementor-heading-title {font-size:34px !important; line-height:1.12 !important;}
.elementor-page-7 .elementor-element-2d35588, .elementor-page-7 .elementor-element-8882b69, .elementor-page-7 .elementor-element-97d8726 {margin-bottom:22px !important;}
/* « Prochains concerts » précède un CARROUSEL dont l'image DÉCROCHE vers le haut et venait chevaucher le
   titre (Stéphane 09/07 « donne 50px de marge »). Marge basse portée à 108px → l'image décrochée dégage
   ~50px sous le titre, même sur la diapo à l'image la plus haute (« Selva morale »). Les 2 autres titres
   accueil restent à 22px. */
.elementor-page-7 .elementor-element-2d35588 {margin-bottom:108px !important;}
.elementor-page-7 .elementor-element-23f1e94, .elementor-page-7 .elementor-element-23f1e94 p {font-size:19px !important; line-height:1.5 !important;}
}
@media (max-width:480px) {
.elementor-page-7 .elementor-element-2d35588 .elementor-heading-title, .elementor-page-7 .elementor-element-8882b69 .elementor-heading-title, .elementor-page-7 .elementor-element-97d8726 .elementor-heading-title {font-size:30px !important;}
}
/* ===== Footer responsive : colonnes bien reparties sur tablette ===== */
@media (min-width:600px) and (max-width:1024px) {
.elementor-element-292435d {flex-direction:row !important; flex-wrap:wrap !important; justify-content:space-between !important; row-gap:40px !important; column-gap:24px !important;}
.elementor-element-292435d > .e-con, .elementor-element-292435d > .elementor-element {flex:1 1 260px !important; max-width:340px !important; min-width:230px !important; width:auto !important;}
}
/* AVSR-HEADER-BOX-1140 : cadre du header limite a 1140px (logo + menu compris) */
.elementor-element-297a7cb {background:transparent !important; box-shadow:none !important;}
.elementor-element-297a7cb > .e-con-inner {background:#fff !important; box-shadow:none !important; max-width:1140px !important; width:100% !important; margin-left:auto !important; margin-right:auto !important;}
@media (max-width:1200px) {
.elementor-element-297a7cb > .e-con-inner {max-width:calc(100% - 32px) !important;}
}
/* ===== SOURCE: snippet #16 "Galerie médias (shortcode)" — bloc 1 ===== */
/* ===== SOURCE: snippet #18 "AVSR - Medias videos/audios/presse (shortcodes)" — bloc 1 ===== */
/* ===== SOURCE: snippet #18 "AVSR - Medias videos/audios/presse (shortcodes)" — bloc 2 ===== */
/* ===== SOURCE: snippet #18 "AVSR - Medias videos/audios/presse (shortcodes)" — bloc 3 ===== */
/* ===== SOURCE: snippet #18 "AVSR - Medias videos/audios/presse (shortcodes)" — bloc 4 ===== */
/* ===== SOURCE: snippet #18 "AVSR - Medias videos/audios/presse (shortcodes)" — bloc 5 ===== */
.avsr-hv {--pink:#e0318a;--ink:#111;font-family:"Roboto",sans-serif;color:var(--ink);max-width:760px;margin:60px auto;padding:0 20px;}
.avsr-hv * {box-sizing:border-box;}
.avsr-hv__title {font-size:30px;font-weight:700;letter-spacing:.01em;text-transform:uppercase;margin:0 0 26px;}
.avsr-hv__facade {position:relative;width:100%;padding-bottom:56.25%;background-size:cover;background-position:center;background-color:#111;cursor:pointer;overflow:hidden;}
.avsr-hv__facade .avsr-play {position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:88px;height:88px;border:0;border-radius:50%;background:rgba(255,255,255,.55);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.2s;padding:0;}
.avsr-hv__facade:hover .avsr-play {background:var(--pink);}
.avsr-hv__facade .avsr-play__tri {width:0;height:0;border-style:solid;border-width:14px 0 14px 24px;border-color:transparent transparent transparent #fff;margin-left:5px;}
.avsr-hv__facade iframe, .avsr-hv__facade video {position:absolute;top:0;left:0;width:100%;height:100%;border:0;}
.avsr-hv__links {display:flex;gap:26px;flex-wrap:wrap;margin-top:14px;}
.avsr-hv__link {display:inline-block;margin-top:20px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;color:var(--pink);border-bottom:1px solid var(--pink);padding-bottom:3px;transition:.15s;}
.avsr-hv__link:hover {color:var(--ink);border-bottom-color:var(--ink);}
@media(max-width:700px) {
.avsr-hv__title {font-size:24px;}
}
/* ===== SOURCE: snippet #24 "AVSR - Grille Videos (grid + filtre)" — bloc 1 ===== */
.avsr-vgrid__filters {display:flex;justify-content:center;flex-wrap:wrap;gap:26px;margin:0 0 34px;}
.avsr-vgrid__filter {background:none;border:0;padding:4px 2px;font-size:15px;color: #6b6b6b;cursor:pointer;font-family:'Roboto',sans-serif;transition:color .2s;}
.avsr-vgrid__filter:hover {color:#111;}
.avsr-vgrid__filter.is-active {color:#111;font-weight:600;}
.avsr-vgrid__album {margin:0 0 44px;}
.avsr-vgrid__head {margin:0 0 14px;}
.avsr-vgrid__head .avsr-vcard__cap {display:none;}
.avsr-vgrid__cells {display:grid;grid-template-columns:repeat(2,1fr);gap:34px 40px;}
@media(max-width:767px) {
.avsr-vgrid__cells {grid-template-columns:1fr;}
}
/* ===== SOURCE: snippet #26 "AVSR - Audios : CPT + ACF + grille" — bloc 1 ===== */
.avsr-agrid__filters {display:flex;justify-content:center;flex-wrap:wrap;gap:26px;margin:0 0 34px;}
.avsr-agrid__filter {background:none!important;border:0!important;box-shadow:none!important;padding:4px 2px!important;margin:0!important;font-size:15px;color: #6b6b6b!important;cursor:pointer;font-family:'Roboto',sans-serif;font-weight:400;text-transform:none;transition:color .2s;border-radius:0!important;}
.avsr-agrid__filter:hover, .avsr-agrid__filter:focus {color:#111!important;background:none!important;outline:none;}
.avsr-agrid__filter.is-active {color:#111!important;font-weight:600;background:none!important;}
.avsr-agrid__album {margin:0 0 40px;}
.avsr-agrid__head {margin:0 0 14px;}
.avsr-agrid__meta {font-size:14px;color:#111;margin:0 0 4px;}
.avsr-agrid__title {font-size:17px;font-weight:700;margin:0;color:#111;}
.avsr-agrid__list {list-style:none;margin:0;padding:0;}
.avsr-agrid__item {display:flex;align-items:center;gap:16px;padding:12px 0;border-bottom:1px solid #eee;}
.avsr-agrid__cover {width:56px;height:56px;flex:0 0 56px;background:#e9e9e9 center/cover no-repeat;border-radius:4px;}
.avsr-agrid__info {flex:1 1 auto;display:flex;flex-direction:column;}
.avsr-agrid__track {font-size:15px;color:#111;font-weight:600;}
.avsr-agrid__dur {font-size:13px;color: #6b6b6b;margin-top:2px;}
.avsr-agrid__player {height:36px;max-width:260px;}
.avsr-agrid__soon {font-size:13px;color:#b00;font-style:italic;}
@media(max-width:600px) {
.avsr-agrid__player {max-width:150px;}
}
/* ===== SOURCE: snippet #30 "AVSR - Galerie : CPT + ACF + grille" — bloc 1 ===== */
.avsr-pgrid__filters {display:flex;justify-content:center;flex-wrap:wrap;gap:26px;margin:0 0 34px;}
.avsr-pgrid__filter {background:none!important;border:0!important;box-shadow:none!important;padding:4px 2px!important;margin:0!important;font-size:15px;color: #6b6b6b!important;cursor:pointer;font-family:'Roboto',sans-serif;font-weight:400;text-transform:none;transition:color .2s;border-radius:0!important;}
.avsr-pgrid__filter:hover, .avsr-pgrid__filter:focus {color:#111!important;background:none!important;outline:none;}
.avsr-pgrid__filter.is-active {color:#111!important;font-weight:600;background:none!important;}
.avsr-pgrid__album {margin:0 0 44px;}
.avsr-pgrid__head {margin:0 0 14px;}
.avsr-pgrid__meta {font-size:14px;color:#111;margin:0 0 4px;}
.avsr-pgrid__title {font-size:17px;font-weight:700;margin:0;color:#111;}
.avsr-pgrid__grid {display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.avsr-pgrid__cell {display:block;overflow:hidden;aspect-ratio:16/9;background:#eee;}
.avsr-pgrid__cell img {width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s;}
.avsr-pgrid__cell:hover img {transform:scale(1.04);}
.avsr-pgrid__cell--wide {grid-column:span 3;aspect-ratio:auto;max-height:360px;}
@media(max-width:767px) {
.avsr-pgrid__grid {grid-template-columns:repeat(2,1fr);}
.avsr-pgrid__cell--wide {grid-column:span 2;}
}
/* ===== SOURCE: snippet #33 "AVSR - On en parle : CPT + ACF + grille + migration" — bloc 1 ===== */
.avsr-prgrid__grid {display:grid;grid-template-columns:repeat(2,1fr);gap:26px;}
.avsr-prgrid__card {border:1px solid #e6e6e6;padding:26px 28px;background:#fff;display:flex;flex-direction:column;}
.avsr-prgrid__top {display:flex;justify-content:space-between;align-items:baseline;margin:0 0 10px;gap:12px;}
.avsr-prgrid__source {font-size:14px;font-weight:700;color:#111;text-transform:uppercase;letter-spacing:.04em;}
.avsr-prgrid__date {font-size:13px;color: #6b6b6b;}
.avsr-prgrid__title {font-size:19px;font-weight:700;margin:0 0 12px;color:#111;line-height:1.3;}
.avsr-prgrid__quote {font-size:15px;color:#444;font-style:italic;line-height:1.6;margin:0;}
.avsr-prgrid__link {margin-top:14px;font-size:14px;color:#c2185b;text-decoration:none;font-weight:600;}
.avsr-prgrid__link:hover {text-decoration:underline;}
@media(max-width:767px) {
.avsr-prgrid__grid {grid-template-columns:1fr;}
}
/* ===== SOURCE: snippet #35 "AVSR - Kit presse (CPT ACF rendu migration)" — bloc 1 ===== */
.avsr-kgrid__sec {margin:0 0 48px;}
.avsr-kgrid__h {font-size:22px;font-weight:700;color:#111;margin:0 0 22px;}
.avsr-kgrid__bios {display:grid;grid-template-columns:repeat(3,1fr);gap:28px;}
.avsr-kgrid__bt {font-size:18px;font-weight:700;color:#111;margin:0 0 8px;}
.avsr-kgrid__bx {font-size:15px;color:#444;line-height:1.6;margin:0;}
.avsr-kgrid__grid {display:grid;grid-template-columns:repeat(2,1fr);gap:18px;}
.avsr-kgrid__res {display:flex;align-items:center;gap:16px;border:1px solid #e6e6e6;padding:16px;text-decoration:none;color:inherit;transition:box-shadow .2s;}
.avsr-kgrid__res[href]:hover {box-shadow:0 4px 16px rgba(0,0,0,.08);}
.avsr-kgrid__thumb {width:80px;height:56px;flex:0 0 80px;background:#e9e9e9 center/cover no-repeat;border-radius:3px;}
.avsr-kgrid__meta {flex:1 1 auto;display:flex;flex-direction:column;}
.avsr-kgrid__rt {font-size:15px;font-weight:600;color:#111;}
.avsr-kgrid__rd {font-size:13px;color: #6b6b6b;margin-top:2px;}
.avsr-kgrid__dl {font-size:13px;font-weight:600;color:#c2185b;white-space:nowrap;}
.avsr-kgrid__note {font-size:14px;color:#666;margin:22px 0 0;}
.avsr-kgrid__note a {color:#c2185b;}
@media(max-width:767px) {
.avsr-kgrid__bios, .avsr-kgrid__grid {grid-template-columns:1fr;}
}
/* Fix hover actualités: define --pink on .avsr-news scope so hover background renders (avoids white-on-white) */
.avsr-news {--pink:#e0318a;--cyan:#89ccca;--yellow:#f2e61a;--grey:#8a8a8a;}
/* Formes decoratives (ACF) - CSS statique migre depuis snippet 19 ; les URLs d'images sont injectees en inline via --forme-droite/--forme-gauche */
.avsr-formes-deco {position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.avsr-formes-deco span {position:absolute;display:block;background-repeat:no-repeat;background-size:contain}
.avsr-forme-droite {width:300px;height:300px;top:30%;left:100%;right:auto;margin-left:15px;background-image:var(--forme-droite)}
.avsr-forme-gauche {width:360px;height:206px;top:85%;bottom:auto;right:100%;left:auto;margin-right:15px;background-image:var(--forme-gauche)}
@media (max-width:767px) {
.avsr-forme-droite {width:170px;height:170px}
.avsr-forme-gauche {width:200px;height:115px}
}
/* Rapprocher le bloc actualites du titre ACTUALITES (-100px) */
body .elementor-element-6a0db94.elementor-element-6a0db94 {margin-top:-50px !important}
/* Menu responsive : fond du survol sur 100% de la largeur */
/* Les liens restent centrés (largeur du texte) ; c'est la ligne (li) qui porte le fond. */
@media (max-width: 1024px) {
.elementor-nav-menu--dropdown .menu-item {transition: background-color 0.2s;}
.elementor-nav-menu--dropdown .menu-item:hover, .elementor-nav-menu--dropdown .menu-item:focus-within {background-color: #fceef5;}
/* Page courante : même bande pleine largeur que le survol */
.elementor-nav-menu--dropdown .menu-item.current-menu-item, .elementor-nav-menu--dropdown .menu-item.current-menu-ancestor {background-color: #fceef5;}
}
/* (2026-07-06) Hack page-id-7 supprimé : l'accueil utilise désormais [avsr_actus] avec le wrapper .avsr-card__media standard. */
/* Cartes actus : couleurs des liens, normal + hover.
   Bug d'origine : les couleurs normales des liens (déclarées ligne ~483 après les
   règles :hover) écrasaient les couleurs de survol à spécificité égale →
   jaune sur jaune / cyan sur cyan = lien invisible au survol.
   Règle de lisibilité au survol : fond clair (jaune, cyan) → texte noir ;
   fond saturé/foncé (rose, gris) → texte blanc (inchangé). */
/* 1. Policorali : le lien reprend le teal de la bordure/logo (au lieu du cyan clair) */
.avsr-card[data-cat="policorali"]:not(.is-grey) .avsr-card__link {color: #89ccca;
  border-color: #89ccca;}
/* 2. Survol : redéclaré APRÈS les couleurs normales pour rétablir la priorité.
   Noir sur fond jaune (15.9:1) et sur fond cyan (11.2:1). */
.avsr-card[data-cat="open-harmony"]:not(.is-grey):hover .avsr-card__link {color: #111;
  border-color: #111;}
.avsr-card[data-cat="policorali"]:not(.is-grey):hover .avsr-card__link {color: #111;
  border-color: #111;}
/* 3. Policorali : titre au survol (règle absente à l'origine, le titre restait gris) */
.avsr-card[data-cat="policorali"]:not(.is-grey):hover .avsr-card__title a {color: #111;}
/* 4. Logos au survol : les variantes blanches sont illisibles sur jaune et cyan → noir */
.avsr-card:not(.is-grey)[data-cat="open-harmony"]:hover .avsr-card__logo, .avsr-card:not(.is-grey)[data-cat="policorali"]:hover .avsr-card__logo {filter: brightness(0);}
/* Hover noir ou blanc (jamais bleu) : concerts et navigation d'article */
/* Cartes concerts passés — lien normal : teal de la bordure ; hover : noir (le bleu
   #0b6b63 est remplacé, et le lien jaune restait jaune sur fond jaune = invisible) */
.avsr-c-card[data-ens="policorali"] .avsr-c-card__link {color: #89ccca;
  border-bottom-color: #89ccca;}
.avsr-c-card[data-ens="policorali"]:hover .avsr-c-card__link, .avsr-c-card[data-ens="open-harmony"]:hover .avsr-c-card__link {color: #111;
  border-color: #111;}
/* Logos blancs illisibles sur jaune/cyan au survol → noir */
.avsr-c-card[data-ens="open-harmony"]:hover .avsr-c-card__body::before, .avsr-c-card[data-ens="policorali"]:hover .avsr-c-card__body::before {filter: brightness(0);}
/* Lignes concerts à venir — le blanc générique était illisible sur jaune et cyan → noir */
.avsr-c-row[data-ensemble="open-harmony"]:hover .avsr-c-row__title a, .avsr-c-row[data-ensemble="open-harmony"]:hover .avsr-c-row__meta span, .avsr-c-row[data-ensemble="open-harmony"]:hover .avsr-c-row__desc, .avsr-c-row[data-ensemble="open-harmony"]:hover .avsr-c-row__link, .avsr-c-row[data-ensemble="policorali"]:hover .avsr-c-row__title a, .avsr-c-row[data-ensemble="policorali"]:hover .avsr-c-row__meta span, .avsr-c-row[data-ensemble="policorali"]:hover .avsr-c-row__desc, .avsr-c-row[data-ensemble="policorali"]:hover .avsr-c-row__link {color: #111;}
.avsr-c-row[data-ensemble="open-harmony"]:hover .avsr-c-row__link, .avsr-c-row[data-ensemble="policorali"]:hover .avsr-c-row__link {border-bottom-color: #111;}
/* Badges posés sur les photos : contraste AUTOMATIQUE au survol — logo blanc + difference
   (blanc sur zone sombre, noir sur zone claire ; fiable car photos du site en N&B) */
.avsr-c-row:hover .avsr-c-row__badge {mix-blend-mode: difference;}
/* Navigation article — texte noir au survol (le jaune sur blanc était invisible,
   le bleu remplacé) ; l'ensemble reste identifié par la couleur du soulignement */
.avsr-anav--open-harmony a:hover {color: #111;
  border-color: #f2e61a;}
.avsr-anav--policorali a:hover {color: #111;
  border-color: #89ccca;}

/* Bande blanche à droite : débordement horizontal */
/* Conteneurs vides (spacers) avec margin-left 80px sur les pages Policorali / Open Harmony
   qui élargissaient la page de 80px. */
.elementor-element-5a742b4,
.elementor-element-cb364f4 {
  margin-left: 0 !important;
  margin-right: 0 !important;
  margin-inline-start: 0 !important;
  margin-inline-end: 0 !important;
}
/* Filet de sécurité : la page ne doit jamais défiler horizontalement
   (les formes décoratives qui débordent sont volontairement rognées au bord). */
html, body {
  overflow-x: clip;
}

/* Articles : remontée de la carte sans média */
.avsr-am:empty { display: none; }
/* Sans image/vidéo à la une, la carte blanche remonte aux 3/4 de la bande de couleur (250px) */
.avsr-article-card:has(.avsr-am:empty) { margin-top: 62px !important; }
/* ... et le texte descend 50px sous le logo (logo : 24px + ~58px de haut) pour laisser respirer */
.avsr-article-card:has(.avsr-am:empty) .elementor-widget-post-info { margin-top: 112px !important; }


/* Média article à ras bords */
.avsr-article-media { width: calc(100% + 20px) !important; max-width: none !important; }
.avsr-article-media .avsr-am { max-width: none; }


/* Encart sans média : marges latérales du texte */
.avsr-article-card:has(.avsr-am:empty) .elementor-widget-post-info,
.avsr-article-card:has(.avsr-am:empty) .elementor-widget-theme-post-title,
.avsr-article-card:has(.avsr-am:empty) .elementor-widget-theme-post-content,
.avsr-article-card:has(.avsr-am:empty) .elementor-widget-shortcode {
  padding-left: 30px;
  padding-right: 30px;
}


/* ================================================================
   RESPONSIVE 2026-07-06 — passage tablette/mobile complet
   ================================================================ */

/* ---------- MOBILE (≤ 767px) ---------- */
@media (max-width: 767px) {

  /* Titres de pages géants (72px) : Contact, Concerts à venir/passés */
  .elementor-element-79ff211 .elementor-heading-title,
  .elementor-element-6cdac68 .elementor-heading-title {
    font-size: clamp(30px, 10vw, 40px) !important;
    line-height: 1.1 !important;
  }
  /* Titre du concert (56px) */
  .elementor-element-127ef3cc .elementor-heading-title {
    font-size: clamp(28px, 8.5vw, 34px) !important;
    line-height: 1.12 !important;
  }
  /* Accueil « Actualités » (60px) — il débordait de l'écran */
  .elementor-element-b7ae3e5 .elementor-heading-title {
    font-size: 34px !important;
    line-height: 1.1 !important;
  }
  /* Page actualités (40px) */
  .elementor-element-a5002b6 .elementor-heading-title {
    font-size: 32px !important;
  }
  /* Bandeau « actualités » des templates d'article (64px) */
  [data-elementor-id="360"] .elementor-widget-heading .elementor-heading-title,
  [data-elementor-id="363"] .elementor-widget-heading .elementor-heading-title,
  [data-elementor-id="366"] .elementor-widget-heading .elementor-heading-title,
  [data-elementor-id="1378"] .elementor-widget-heading .elementor-heading-title,
  [data-elementor-id="1382"] .elementor-widget-heading .elementor-heading-title {
    font-size: 36px !important;
    line-height: 1.1 !important;
  }

  /* Cartes d'actualités : titres 42px -> 26px */
  .avsr-card__title { font-size: 26px; line-height: 30px; }
  .avsr-hero__title { font-size: 30px; line-height: 1.15; }
  /* Prochain concert / slides du carrousel : 50px -> 30px (le style de base est en !important) */
  .avsr-cc .avsr-nc__title, .avsr-nc__title { font-size: 30px !important; line-height: 1.12 !important; }
  /* Cartes concerts passés */
  .avsr-c-card__title { font-size: 22px; }

  /* Article : bande de couleur et carte adaptées au petit écran */
  .avsr-article-band::before { height: 200px !important; }
  .avsr-article-card { margin-top: 80px !important; }
  .avsr-article-card:has(.avsr-am:empty) { margin-top: 50px !important; }

  /* Article : média réellement à ras bords (annule le padding responsive de .avsr-am) */
  .avsr-article-media .avsr-am { padding-left: 0 !important; padding-right: 0 !important; }

  /* Article : gouttière de lecture confortable pour le texte */
  .avsr-article-card .elementor-widget-post-info,
  .avsr-article-card .elementor-widget-theme-post-title,
  .avsr-article-card .elementor-widget-theme-post-content,
  .avsr-article-card .elementor-widget-shortcode:not(.avsr-article-media) {
    padding-left: 14px;
    padding-right: 14px;
  }
  /* Article : corps de texte 22px -> 18px */
  .avsr-article-card .elementor-widget-theme-post-content { font-size: 18px; line-height: 1.65; }

  /* Carrousel : les flèches (positionnées desktop en !important) chevauchaient le titre */
  .avsr-cc__nav { top: 12px !important; right: 12px !important; }
  /* Titre Actualités de l accueil : collé au bord gauche */
  .elementor-element-b7ae3e5 .elementor-heading-title { padding-left: 20px; padding-right: 20px; }

  /* Concerts à venir : un média vide occupait 280px de vide en colonne */
  .avsr-c-row__media { flex: 0 0 100%; width: 100%; }
  .avsr-c-row__media:not(:has(img, iframe, video, .avsr-embed--facade)) { display: none; }
}

/* ---------- TABLETTE (768px – 1024px) ---------- */
@media (min-width: 768px) and (max-width: 1024px) {

  /* Titres de pages géants : palier intermédiaire */
  .elementor-element-79ff211 .elementor-heading-title,
  .elementor-element-6cdac68 .elementor-heading-title {
    font-size: 56px !important;
  }
  .elementor-element-127ef3cc .elementor-heading-title { font-size: 44px !important; }
  .elementor-element-b7ae3e5 .elementor-heading-title { font-size: 44px !important; }
  [data-elementor-id="360"] .elementor-widget-heading .elementor-heading-title,
  [data-elementor-id="363"] .elementor-widget-heading .elementor-heading-title,
  [data-elementor-id="366"] .elementor-widget-heading .elementor-heading-title,
  [data-elementor-id="1378"] .elementor-widget-heading .elementor-heading-title,
  [data-elementor-id="1382"] .elementor-widget-heading .elementor-heading-title {
    font-size: 48px !important;
  }

  .avsr-card__title { font-size: 32px; line-height: 36px; }
  .avsr-cc .avsr-nc__title, .avsr-nc__title { font-size: 38px !important; }

  /* Article : corps de texte légèrement réduit */
  .avsr-article-card .elementor-widget-theme-post-content { font-size: 20px; }
}


/* ================================================================
   LECTEURS AUDIO COMMUTABLES (page Audios) — 3 habillages au choix
   du visiteur : A pilule (mejs stylé), B minimal, C pochette.
   ================================================================ */
/* Sélecteur (3 petits boutons en haut de page) */
.avsr-skin-switch { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 4px 0 14px; }
.avsr-skin-switch__label { font: 700 11px/1 Roboto, sans-serif; letter-spacing: .08em; text-transform: uppercase; color: #555; }
.avsr-skin-switch button {
  font: 700 11px/1.4 Roboto, sans-serif; letter-spacing: .08em; text-transform: uppercase;
  background: none; border: 0; border-bottom: 1px solid transparent; border-radius: 0;
  color: #111; padding: 0 0 2px; cursor: pointer; transition: border-color .15s;
}
.avsr-skin-switch button:hover { border-bottom-color: #111; }
.avsr-skin-switch button.is-active { border-bottom-color: #111; }
.avsr-skin-switch button:hover, .avsr-skin-switch button:focus, .avsr-skin-switch button:active { background: none !important; color: #111 !important; outline: none; box-shadow: none; border-bottom-color: #111; }
.avsr-skin-switch button:focus-visible { outline: none; }

/* Composant sur-mesure (caché par défaut : sans JS, lecteur natif intact) */
.avsr-ap { display: none; align-items: center; gap: 18px; padding: 4px 0; }
.avsr-ap__btn {
  width: 54px; height: 54px; border-radius: 50%; border: 0; cursor: pointer; flex: 0 0 54px;
  background: var(--acc, #e0318a); position: relative; transition: transform .15s; padding: 0;
}
.avsr-ap__btn:hover { transform: scale(1.06); }
.avsr-ap__btn::after {
  content: ''; position: absolute; left: 21px; top: 16px;
  border-style: solid; border-width: 11px 0 11px 17px; border-color: transparent transparent transparent #fff;
}
.avsr-ap.is-playing .avsr-ap__btn::after {
  left: 19px; top: 16px; border: 0; width: 5px; height: 22px; background: #fff; box-shadow: 11px 0 0 #fff;
}
.avsr-ap__body { flex: 1; min-width: 0; }
/* Oscilloscope : onde temps réel du morceau (Web Audio) au-dessus de la barre de progression */
.avsr-ap__wave { display: block; width: 100%; height: 30px; margin: 0 0 7px; }
.avsr-ap__line { position: relative; height: 3px; background: #e6e2db; cursor: pointer; }
.avsr-ap__prog { position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: var(--acc, #e0318a); }
.avsr-ap__prog::after {
  content: ''; position: absolute; right: -6px; top: 50%; transform: translateY(-50%);
  width: 10px; height: 10px; border-radius: 0; background: var(--acc, #e0318a);
}
.avsr-ap__times { display: flex; justify-content: space-between; margin-top: 8px; font: 700 12px/1 Roboto, sans-serif; letter-spacing: .05em; }
.avsr-ap__times .avsr-ap__dur { color: #6b6b6b; }
/* Pochette (skin C) */
.avsr-ap__cover { position: relative; width: 170px; height: 170px; flex: 0 0 170px; overflow: hidden; display: none; cursor: pointer; }
.avsr-ap__cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.avsr-ap__cover::before { content: ''; position: absolute; inset: 0; background: rgba(0,0,0,.15); z-index: 1; }
.avsr-ap__cover-play {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); z-index: 2;
  width: 58px; height: 58px; border-radius: 50%; border: 0; cursor: pointer;
  background: rgba(255,255,255,.7); transition: background .2s; padding: 0;
}
.avsr-ap__cover:hover .avsr-ap__cover-play { background: var(--acc, #e0318a); }
.avsr-ap__cover-play::after { content: ''; position: absolute; left: 23px; top: 17px;
  border-style: solid; border-width: 12px 0 12px 18px; border-color: transparent transparent transparent #111; }
.avsr-ap__cover:hover .avsr-ap__cover-play::after { border-left-color: #fff; }
.avsr-ap.is-playing .avsr-ap__cover-play::after {
  left: 21px; top: 17px; border: 0; width: 5px; height: 24px; background: #111; box-shadow: 11px 0 0 #111;
}
.avsr-ap.is-playing .avsr-ap__cover:hover .avsr-ap__cover-play::after { background: #fff; box-shadow: 11px 0 0 #fff; }

/* --- Skin B : minimal (mejs caché, composant sans pochette) --- */
.avsr-skin-b .avsr-ap { display: flex; }
.avsr-skin-b .mejs-container { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }

/* --- Skin C : pochette (idem B + pochette-bouton, image de piste masquée) --- */
.avsr-skin-c .avsr-ap { display: flex; }
.avsr-skin-c .mejs-container { position: absolute !important; left: -9999px !important; width: 1px !important; height: 1px !important; overflow: hidden !important; }
.avsr-skin-c .avsr-ap--hascover .avsr-ap__cover { display: block; }
.avsr-skin-c .avsr-ap--hascover .avsr-ap__btn { display: none; }
.avsr-skin-c .e-con:has(> .elementor-widget-image):has(+ .e-con .avsr-ap--hascover) { display: none; }

/* --- Skin A : pilule (mejs visible et habillé) --- */
.avsr-skin-a .mejs-container { background: transparent !important; height: 52px !important; }
.avsr-skin-a .mejs-inner .mejs-controls {
  background: #faf9f7 !important; border: 1px solid #e6e2db; border-radius: 0;
  height: 52px !important; padding: 0 18px 0 8px;
}
.avsr-skin-a .mejs-playpause-button > button {
  background: #e0318a !important; border-radius: 50%; width: 36px !important; height: 36px !important;
  margin: 0 !important; position: relative; background-image: none !important;
}
.avsr-skin-a .mejs-play > button::after {
  content: ''; position: absolute; left: 14px; top: 10px;
  border-style: solid; border-width: 8px 0 8px 12px; border-color: transparent transparent transparent #fff;
}
.avsr-skin-a .mejs-pause > button::after {
  content: ''; position: absolute; left: 12px; top: 11px; width: 4px; height: 14px;
  background: #fff; box-shadow: 8px 0 0 #fff;
}
.avsr-skin-a .mejs-time { color: #111 !important; font-family: Roboto, sans-serif !important; font-weight: 700; font-size: 12px !important; }
.avsr-skin-a .mejs-time-total { background: #e6e2db !important; height: 4px !important; border-radius: 0; margin-top: 8px; }
.avsr-skin-a .mejs-time-loaded { background: #d8d4ce !important; height: 4px !important; border-radius: 0; }
.avsr-skin-a .mejs-time-current { background: #e0318a !important; height: 4px !important; border-radius: 0; }
.avsr-skin-a .mejs-horizontal-volume-total { background: #e6e2db !important; height: 4px !important; margin-top: 12px; }
.avsr-skin-a .mejs-horizontal-volume-current { background: #111 !important; height: 4px !important; }

/* Mobile */
@media (max-width: 767px) {
  .avsr-ap { gap: 14px; }
  .avsr-ap__btn { width: 46px; height: 46px; flex-basis: 46px; }
  .avsr-ap__btn::after { left: 18px; top: 13px; border-width: 10px 0 10px 15px; }
  .avsr-ap__cover { width: 120px; height: 120px; flex-basis: 120px; }
}


/* En-tête rétractable au défilement (comme le sommaire du tutoriel) */
.elementor-location-header > .elementor > .e-con,
.elementor-location-header .elementor-element-fe1d56a {
  transition: transform .35s ease;
}
body.avsr-header-hide .elementor-location-header > .elementor > .e-con,
body.avsr-header-hide .elementor-location-header .elementor-element-fe1d56a {
  transform: translateY(-110%) !important;
}


/* Galerie : noir et blanc, couleur au survol (maquette) */
.elementor-widget-gallery .e-gallery-image {filter: grayscale(1); transition: filter .35s ease;}
.elementor-widget-gallery .e-gallery-item:hover .e-gallery-image {filter: grayscale(0);}


/* ================================================================
   THÈME & FORMES — FEUILLE OPAQUE (2026-07-07)
   La page est une feuille opaque avec 15px de gouttière : les formes
   décoratives vivent au niveau du body, TOUJOURS sous le contenu,
   visibles uniquement dans les marges.
   ================================================================ */
body { position: relative; }
/* Fond blanc dans les zones extérieures (1 et 2), partout */
body { background-color: #ffffff !important; }
/* Ceinture-bretelles : les formes sous TOUT, les blocs de contenu au-dessus */
.avsr-formes-deco, .avsr-formes-deco span { z-index: 0 !important; }
.avsr-news, .avsr-concerts, .avsr-am, .avsr-anav, .e-gallery-grid { position: relative; z-index: 2; }

body > div.elementor { position: relative; z-index: 1; background: #ffffff; max-width: 1140px; margin-left: auto; margin-right: auto; }
@media (max-width: 1170px) { body > div.elementor { margin-left: 15px; margin-right: 15px; } }
/* les formes épousent la feuille : conteneur centré 1140px, les formes dépassent dans les marges */
.avsr-formes-deco { max-width: 1140px; margin-left: auto; margin-right: auto; overflow: visible !important; }
/* footer : respiration au-dessus */
.elementor-location-footer { margin-top: 100px; }
.elementor-location-header, .elementor-location-footer { position: relative; z-index: 2; }
.avsr-formes-deco { z-index: 0 !important; }


/* ===== FORMULAIRE CONTACT (maquette p15) ===== */
.elementor-form .elementor-field-group { padding-bottom: 12px; }
.elementor-form .elementor-field-group > label { font-weight: 700; font-size: 14px; color: #111111; }
.elementor-widget-form .elementor-field-group .elementor-field.elementor-field-textual { font-size: 15px; color: #111111; background: #ffffff; border: 1px solid #111111; border-radius: 0; }
.elementor-widget-form .elementor-field-group .elementor-field.elementor-field-textual:focus { outline: none; border-color: #000000; box-shadow: none; }
.elementor-form .elementor-field-type-radio { display: flex; flex-wrap: wrap; align-items: center; column-gap: 24px; row-gap: 6px; padding-bottom: 24px; }
.elementor-form .elementor-field-type-radio > label { margin: 0; }
.elementor-form .elementor-field-subgroup.elementor-subgroup-inline { display: flex; flex-wrap: wrap; column-gap: 22px; row-gap: 6px; }
.elementor-form-fields-wrapper.elementor-labels-above .elementor-field-type-radio .elementor-field-subgroup { flex-basis: auto; width: auto; }
.elementor-form .elementor-field-subgroup label { font-weight: 700; font-size: 14px; }
.elementor-form .elementor-field-subgroup input[type=radio] { accent-color: #111111; }
.elementor-form .elementor-field-type-submit { justify-content: flex-start; padding-top: 10px; }
.elementor-form .elementor-button { width: auto; flex: 0 0 auto; background: transparent !important; color: #111111 !important; border: 0; border-radius: 0; padding: 0; font-size: 13px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; text-decoration: underline; text-underline-offset: 6px; }
.elementor-form .elementor-button:hover { text-decoration-thickness: 2px; }
.avsr-contact-direct a { color: #111111; }
.avsr-contact-direct a:hover { text-decoration: underline; }

/* ===== LIENS DOSSIER / PHOTOS PRESSE (maquette p6-8) ===== */
.avsr-doclinks a { color: #111111; font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; text-decoration: underline; text-underline-offset: 5px; margin-right: 28px; }
.avsr-doclinks a:hover { text-decoration-thickness: 2px; }
body.avsr-theme-avsr .avsr-doclinks a { color: #e0318a; }
body.avsr-theme-policorali .avsr-doclinks a { color: #89ccca; }

/* ===== CONCERT DÉTAIL (maquette p12) ===== */
.avsr-cmeta { border-bottom: 1px solid #111111; padding-bottom: 6px; font-size: 14px; line-height: 1.35; }
.avsr-cmeta p { margin: 0; }
.avsr-cmeta::before { display: block; font-weight: 700; font-size: 13px; margin-bottom: 0; }
.avsr-cmeta--date::before { content: "date"; }
.avsr-cmeta--lieu::before { content: "lieu"; }
.avsr-cmeta--tarif::before { content: "tarif"; }
.avsr-cmeta--avec::before { content: "avec"; }
.avsr-cmeta--direction::before { content: "direction"; }
.avsr-cmeta--lien::before { content: "lien"; }
.avsr-cmeta--dossier::before { content: "dossier"; }
.avsr-dossier-lien { color: #111111; text-decoration: underline; text-underline-offset: 4px; }
.avsr-dossier-lien:hover { text-decoration-thickness: 2px; }
.avsr-concert-logo { width: 64px; height: auto; display: block; margin-bottom: 4px; }
.avsr-csec { border-top: 1px solid #111111; padding-top: 12px; margin-top: 30px; }
.avsr-csec .elementor-heading-title { font-size: 14px; font-weight: 700; letter-spacing: .02em; }
body.avsr-theme-avsr .avsr-chero { border-bottom: 8px solid #e0318a; }
body.avsr-theme-open-harmony .avsr-chero { border-bottom: 8px solid #f2e61a; }
body.avsr-theme-policorali .avsr-chero { border-bottom: 8px solid #89ccca; }
body.avsr-theme-gris .avsr-chero { border-bottom: 8px solid #d8d4ce; }
.avsr-chero .elementor-heading-title { text-shadow: 0 1px 14px rgba(0,0,0,.35); }

.avsr-prog-comp { font-weight: 700; }
.avsr-prog-comp p { margin-bottom: 4px; }
/* libellés de section orphelins (champ vide) */
.avsr-csec:last-child { display: none; }
.avsr-csec:has(+ .avsr-csec) { display: none; }

/* ===== FILTRE GALERIE PHOTOS ===== */
.avsr-galfilter { display: flex; flex-wrap: wrap; align-items: center; row-gap: 10px; column-gap: 26px; margin: 6px 0 34px; }
.avsr-galfilter__btn { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; background: none; border: 0; border-bottom: 1px solid transparent; color: #111111; padding: 0 0 2px; line-height: 1.4; cursor: pointer; transition: .15s; border-radius: 0; font-family: "Roboto", sans-serif; }
.avsr-galfilter__btn:hover { background: none; color: #111111; border-bottom-color: #111111; }
.avsr-galfilter__btn.is-active { border-bottom-color: #111111; }

/* ===== CONCERTS PASSÉS — média inséré dans la carte, filtres jamais recouverts ===== */
.avsr-c-filters { position: relative; z-index: 3; }
.avsr-c-card__photo, .avsr-c-card__photo.avsr-embed, .avsr-c-grid .avsr-c-card__photo { margin: -45% auto 0 auto; }
.avsr-c-card--hasimg, .avsr-c-grid .avsr-c-card--hasimg { margin-top: 300px; }
@media (min-width: 768px) and (max-width: 1024px) { .avsr-c-card--hasimg, .avsr-c-grid .avsr-c-card--hasimg { margin-top: 26vw; } }
@media (max-width: 767px) { .avsr-c-card--hasimg, .avsr-c-grid .avsr-c-card--hasimg { margin-top: 46vw; } }
/* ===== VIGNETTES PRESSE (On en parle) ===== */
.avsr-clip img { border: 1px solid #dddddd; box-shadow: 3px 4px 14px rgba(0,0,0,.16); transition: transform .2s ease, box-shadow .2s ease; }
.avsr-clip a:hover img { transform: scale(1.03); box-shadow: 4px 6px 18px rgba(0,0,0,.22); }
.avsr-clip .widget-image-caption { font-size: 11px; color: #6b6b6b888; margin-top: 6px; display: block; }
.elementor-widget-shortcode .wp-audio-shortcode { max-width: 420px; }

/* ===== KIT PRESSE ===== */
.avsr-kp-meta { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #6b6b6b; }
.avsr-kp-photo img { filter: grayscale(1); transition: filter .35s ease; width: 100%; aspect-ratio: 4/3; object-fit: cover; }
.avsr-kp-photo:hover img { filter: grayscale(0); }
.avsr-kp-hero { background-blend-mode: luminosity; }

/* l’en-tête passe au-dessus des boucles (z-index 2) */
.elementor-location-header { z-index: 20; }

/* ===== BLOC ACTU VEDETTE — texte aligné sur le bord gauche de l’image (maquette p9) ===== */
.avsr-hero { --hero-pad: 5%; }
@media (max-width: 767px) { .avsr-hero { --hero-pad: 18px; } }
.avsr-hero__body { padding: 0 var(--hero-pad); }
.avsr-hero__img, .avsr-hero__media .avsr-hero__img { width: calc(100% - 2 * var(--hero-pad)); margin-left: var(--hero-pad); margin-right: var(--hero-pad); }
/* cadre standard 1140 pour widgets posés dans des conteneurs pleine largeur */
.avsr-frame { width: 100%; max-width: 1140px !important; margin-left: auto !important; margin-right: auto !important; }
@media (max-width: 1170px) { .avsr-frame { padding-left: 15px; padding-right: 15px; } }
/* skin A : centrage vertical du bouton play dans la barre */
.avsr-skin-a .mejs-controls { align-items: center; }
.avsr-skin-a .mejs-playpause-button { display: flex; align-items: center; justify-content: center; height: 100% !important; width: 44px !important; margin: 0 !important; }
.avsr-skin-a .mejs-playpause-button > button { top: auto !important; }

/* ===== NORMALISATION FOCUS DES FILTRES (le kit stylait button:focus en rose) ===== */
.avsr-filter:focus, .avsr-filter:active, .avsr-filter--type:focus, .avsr-filter--type:active,
.avsr-c-filter:focus, .avsr-c-filter:active,
.avsr-galfilter__btn:focus, .avsr-galfilter__btn:active,
.avsr-vgrid__filter:focus, .avsr-vgrid__filter:active,
.avsr-agrid__filter:focus, .avsr-agrid__filter:active,
.avsr-pgrid__filter:focus, .avsr-pgrid__filter:active {
  background: none !important; color: #111111 !important; outline: none; box-shadow: none;
}
.avsr-filter:focus, .avsr-c-filter:focus, .avsr-galfilter__btn:focus { border-bottom-color: #111111; }
/* formes déco : invisibles jusqu’au chargement complet (anti-flash), puis fondu */
.avsr-formes-deco { opacity: 0; transition: opacity .5s ease .1s; }
body.avsr-formes-pretes .avsr-formes-deco { opacity: 1; }

/* ===== FILETS PERMANENTS DU MENU (maquette) — géométrie unique, couleur par lien =====
   Toujours visibles (pas seulement au survol) : gris par défaut, couleur de l'ensemble
   pour AVSR / Open Harmony / Policorali, noir pour l'item générique courant ou survolé. */
.elementor-nav-menu--main .elementor-item { position: relative !important; }
.elementor-nav-menu--main .elementor-item::before { display: none !important; }
.elementor-nav-menu--main .elementor-item::after {
  content: "" !important; position: absolute !important; left: 0 !important; right: 0 !important;
  bottom: 0 !important; top: auto !important; width: 100% !important; height: 3px !important;
  margin: 0 !important; transform: none !important; opacity: 1 !important; transition: background-color .15s ease !important;
  background-color: #d8d4ce !important;
}
.elementor-nav-menu--main li > a[href$="/avsr/"]::after { background-color: #e0318a !important; }
.elementor-nav-menu--main li > a[href$="/open-harmony/"]::after { background-color: #f2e61a !important; }
.elementor-nav-menu--main li > a[href$="/policorali/"]::after { background-color: #89ccca !important; }
/* Item générique (hors ensembles) : filet noir quand il est survolé ou correspond à la page courante */
.elementor-nav-menu--main li:hover > a.elementor-item:not([href$="/avsr/"]):not([href$="/open-harmony/"]):not([href$="/policorali/"])::after,
.elementor-nav-menu--main li.current-menu-item > a.elementor-item:not([href$="/avsr/"]):not([href$="/open-harmony/"]):not([href$="/policorali/"])::after,
.elementor-nav-menu--main li.current-menu-ancestor > a.elementor-item:not([href$="/avsr/"]):not([href$="/open-harmony/"]):not([href$="/policorali/"])::after { background-color: #111111 !important; }


/* ===== FILETS DU SLIDER ACCUEIL — une couleur par slide ===== */
.elementor-element-ada8a7b .swiper-slide::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 6px; z-index: 3; }
.elementor-element-ada8a7b .elementor-repeater-item-d066ac4::after { background: #e0318a; }
.elementor-element-ada8a7b .elementor-repeater-item-8a38d13::after { background: #f2e61a; }
.elementor-element-ada8a7b .elementor-repeater-item-f21bfb6::after { background: #89ccca; }
.elementor-element-ada8a7b .elementor-repeater-item-654dc7f::after { background: #d8d4ce; }

/* ===== SOUS-MENU DU LOGOTYPE (Présentation / Direction artistique) ===== */
.elementor-element-337eec6 { position: relative !important; }
.avsr-logomenu { position: absolute; top: 100%; left: 0; min-width: 230px; background: #ffffff; border: 1px solid #ececec; box-shadow: 0 6px 18px rgba(0,0,0,.08); padding: 6px 0; opacity: 0; visibility: hidden; transition: opacity .15s ease; z-index: 40; }
.elementor-element-337eec6:hover .avsr-logomenu, .avsr-logomenu:hover { opacity: 1; visibility: visible; }
.avsr-logomenu a { display: block; padding: 9px 18px; font: 700 12px/1.4 Roboto, sans-serif; letter-spacing: .06em; text-transform: uppercase; color: #111111; text-decoration: none; }
.avsr-logomenu a:hover { background: #fceef5; color: #111111; }
@media (max-width: 1024px) { .avsr-logomenu { display: none; } }

/* ===== MÉDIAS DES RANGÉES CONCERTS PLUS HAUTS (demande Stéphane) ===== */
@media (min-width: 768px) {
  .avsr-c-row__media { align-self: stretch; display: flex; }
  .avsr-c-row__img, .avsr-c-row__img.avsr-embed { min-height: 380px; }
}

/* ===== RESPONSIVE 2e PASSE (2026-07-07) ===== */
/* pied de page : respiration haut/bas (toutes tailles) */
.elementor-location-footer .e-con-inner, .elementor-location-footer > .elementor > .e-con { padding-top: 46px; padding-bottom: 46px; }
@media (max-width: 767px) {
  /* accueil : media du prochain concert rapproché du titre */
  /* accueil : discographie séparée de la section précédente */
  .elementor-element-7d3c39d { margin-top: 40px; }
  /* CD moins grands */
  .elementor-element-7d3c39d .elementor-widget-image img { max-width: 230px; margin-left: auto; margin-right: auto; display: block; }
  /* listes actus : media rapproché du titre */
  .avsr-news { margin-top: -14px; }
  /* articles : photo à la une plus petite (marges généreuses + hauteur plafonnée) */
  .avsr-am { width: calc(100% - 48px); margin-left: 24px; margin-right: 24px; }
  .avsr-am img, .avsr-am .avsr-embed, .avsr-am iframe, .avsr-am video { max-height: 220px; object-fit: cover; }
}

/* ===== MASQUAGE DESKTOP DES PAGES ACADÉMIE (visibles dans le menu mobile) ===== */
@media (min-width: 1025px) {
  .elementor-nav-menu--main li:has(> a[href$="/presentation/"]),
  .elementor-nav-menu--main li:has(> a[href$="/direction-artistique/"]),
  .elementor-nav-menu--main li.avsr-menu-academie { display: none !important; }
}

/* ===== SÉPARATEURS COMPACTS MOBILE + CENTRAGE RANGÉES CONCERTS ===== */
@media (max-width: 767px) {
  .elementor-widget-divider { padding-top: 14px !important; padding-bottom: 14px !important; }
}
/* l’encadré couleur des rangées concerts se centre sur le média */
.avsr-c-row { align-items: center; }


/* ===== ACTUS COMPACTES (accueil + pages ensembles) ===== */
/* Sections « 3 actus » (accueil + pages ensembles) : MÊMES cartes que la page Actualités
   (design complet), juste sans filtres/pagination/héros et limitées à 3.
   On ne garde que la neutralisation du décalage héros — plus de rétrécissement. */
.avsr-news--compact .avsr-card, .avsr-news--compact .avsr-card__media { margin-top: 0 !important; }
.avsr-news--compact .avsr-hero, .avsr-news--compact #avsrHero, .avsr-news--compact [id^="avsrHero"] { display: none !important; }


/* ===== SLIDER ACCUEIL SANS BANDES GRISES (le fond du conteneur affleurait selon la résolution) ===== */
.elementor-element-4e7d7e9 { background-color: transparent !important; }
.elementor-element-4e7d7e9 > .e-con-inner { padding-top: 0 !important; padding-bottom: 0 !important; }
.elementor-element-4e7d7e9 [data-id="ada8a7b"] { margin-top: 0 !important; margin-bottom: 0 !important; }

/* ===== SECTIONS ACCUEIL AUX MARGES (mobile) ===== */
@media (max-width: 767px) {
  .elementor-element-067f90a, .elementor-element-2b3cce0, .elementor-element-7d3c39d { padding-left: 15px !important; padding-right: 15px !important; }
}

/* ===== CARROUSEL EN IMAGES : flèches (carré noir, chevron blanc, survol couleur d'ensemble) ===== */
.avsr-imgslider .elementor-swiper-button { color: #ffffff; background: #111111; border: 0; border-radius: 0; width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; opacity: .92; transition: background-color .2s ease, opacity .2s ease; }
body .avsr-imgslider .elementor-swiper-button svg { fill: #ffffff !important; width: 15px !important; height: 15px !important; transition: fill .2s ease; }
.avsr-imgslider .elementor-swiper-button:hover, .avsr-imgslider .elementor-swiper-button:focus-visible { opacity: 1; }
body.avsr-theme-avsr .avsr-imgslider .elementor-swiper-button:hover { background: #e0318a; }
body.avsr-theme-open-harmony .avsr-imgslider .elementor-swiper-button:hover { background: #f2e61a; }
body.avsr-theme-open-harmony .avsr-imgslider .elementor-swiper-button:hover svg { fill: #111111 !important; }
body.avsr-theme-policorali .avsr-imgslider .elementor-swiper-button:hover { background: #89ccca; }
body.avsr-theme-policorali .avsr-imgslider .elementor-swiper-button:hover svg { fill: #111111 !important; }
.avsr-imgslider .elementor-swiper-button:focus-visible { outline: 2px solid #111111; outline-offset: 3px; }
@media (max-width: 767px) { .avsr-imgslider .elementor-swiper-button { width: 40px; height: 40px; } }
.avsr-imgslider .swiper-slide img { width: 100%; aspect-ratio: 4/3; object-fit: cover; }

/* carrousel/carte concert : logo au-dessus du média */
.avsr-nc__logo { z-index: 5 !important; }

/* ===== CONCERT BANNIÈRE PLEINE LARGEUR + DIVERS RESPONSIVE (2026-07-07 soir) ===== */
.e-con.avsr-chero, .avsr-chero { width: 100vw !important; max-width: none !important; margin-left: calc(50% - 50vw) !important; }
body.single-concert { overflow-x: clip; }
/* formes décoratives : réservées aux écrans avec gouttières (>1170px) —
   en dessous, leurs ancres en % de la hauteur créaient un grand blanc sous le pied de page */
@media (max-width: 1169px) { .avsr-formes-deco { display: none !important; } }
/* menu collant : pas d’ombre portée en petit écran */
@media (max-width: 1024px) { .elementor-location-header .e-con, .elementor-location-header .elementor-sticky--active { box-shadow: none !important; } }
/* ===== LIEU DU CONCERT (section ancrée + carte) ===== */
#lieu { scroll-margin-top: 130px; }
.avsr-lieu { border-top: 1px solid #111111; padding-top: 12px; margin-top: 30px; }
.avsr-lieu__titre { font-size: 14px; font-weight: 700; letter-spacing: .02em; margin: 0 0 14px; }
.avsr-lieu__item { margin: 0 0 22px; }
.avsr-lieu__item:last-child { margin-bottom: 0; }
.avsr-lieu__nom { margin: 0 0 10px; }
.avsr-lieu__nom a { color: #111111; text-decoration: underline; text-underline-offset: 3px; }
.avsr-lieu__carte iframe { display: block; width: 100%; height: 300px; border: 0; filter: grayscale(1); transition: filter .35s ease; }
.avsr-lieu__carte:hover iframe { filter: none; }
.avsr-csec:has(+ .elementor-widget-shortcode) { display: none; }
@media (max-width: 767px) { .avsr-lieu__carte iframe { height: 220px; } }
/* ===== DISCOGRAPHIE (page) ===== */
.avsr-disco-cover img { aspect-ratio: 1 / 1; object-fit: cover; width: 100%; }
.avsr-disco-titre .elementor-heading-title { font-size: 18px; font-weight: 700; margin-top: 14px; }
.avsr-disco-meta { font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: #666666; margin: 6px 0 8px; }
.avsr-disco-desc { font-size: 14px; line-height: 1.65; margin: 0 0 10px; }
.avsr-disco-lien { font-family: var(--e-global-typography-secondary-font-family, "Roboto"), sans-serif; font-size: 16px; font-weight: 800; text-transform: uppercase; letter-spacing: .02em; color: #111111; margin: 2px 0 10px; }
.avsr-disco-lien a { color: inherit; border: 0; text-decoration: none; }
.avsr-disco-commande { font-size: 15px; border-top: 1px solid #111111; padding-top: 18px; }
/* --- Discographie : lecteurs mp3 STRICTEMENT noir & blanc (retrait du bordeaux #cc3366 au survol + du bleu #0073aa) --- */
body.page-id-1457 .mejs-container button:hover,
body.page-id-1457 .mejs-container button:focus,
body.page-id-1457 .mejs-container button:active { background-color: transparent !important; box-shadow: none !important; outline: none !important; }
body.page-id-1457 .mejs-time-current { background: #ffffff !important; }
body.page-id-1457 .mejs-time-loaded { background: #6b6b6b !important; }
body.page-id-1457 .mejs-horizontal-volume-current { background: #ffffff !important; }
/* --- Discographie : « Écouter un extrait » + lecteur alignés EN BAS de chaque carte (fin de l'effet escalier) --- */
body.page-id-1457 .elementor-widget-text-editor:has(.avsr-disco-meta) { flex-grow: 1; display: flex; flex-direction: column; }
body.page-id-1457 .elementor-widget-text-editor:has(.avsr-disco-meta) > .elementor-widget-container { display: flex; flex-direction: column; height: 100%; }
body.page-id-1457 .avsr-disco-lien { margin-top: auto; }
/* ===== CARROUSEL DE PHOTOS (bloc AVSR) ===== */
.avsr-pcar { position: relative; padding: 0 52px; }
.avsr-pcar__viewport { overflow: hidden; }
.avsr-pcar__track { display: flex; gap: 12px; transition: transform .45s ease; will-change: transform; }
.avsr-pcar__slide { flex: 0 0 calc((100% - 24px) / 3); margin: 0; }
.avsr-pcar__slide img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.avsr-pcar__btn { position: absolute; top: 50%; transform: translateY(-50%); width: 40px; height: 40px; border: 1px solid #111; background: #fff; color: #111; font-size: 22px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: .15s; z-index: 2; padding: 0; }
.avsr-pcar__btn:hover, .avsr-pcar__btn:active { background: #111; color: #fff; }
.avsr-pcar__btn:focus-visible { outline: 2px solid #111; outline-offset: 2px; }
.avsr-pcar__prev { left: 0; }
.avsr-pcar__next { right: 0; }
.avsr-pcar-empty { color: #666; font-style: italic; }
@media (max-width: 900px) { .avsr-pcar__slide { flex-basis: calc((100% - 12px) / 2); } }
@media (max-width: 600px) { .avsr-pcar { padding: 0 44px; } .avsr-pcar__slide { flex-basis: 100%; } }

/* ===== ACCESSIBILITE (audit 2026-07-07) ===== */
:is(.avsr-filter, .avsr-c-filter, .avsr-galfilter__btn, .avsr-vgrid__filter, .avsr-agrid__filter, .avsr-pgrid__filter, button[data-skin], .avsr-c-page):focus-visible { outline: 2px solid #111111; outline-offset: 3px; border-radius: 1px; }
a:focus-visible, .elementor-field-textual:focus-visible { outline: 2px solid #111111; outline-offset: 2px; }
@media (max-width: 767px) {
	.avsr-filter, .avsr-c-filter, .avsr-galfilter__btn, .avsr-vgrid__filter, .avsr-agrid__filter, .avsr-pgrid__filter { padding-top: 12px; padding-bottom: 12px; margin-top: -8px; margin-bottom: -8px; }
	.avsr-c-page { min-width: 42px; min-height: 42px; }
}
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
.avsr-404-liens a { color: #111111; font-weight: 700; text-decoration: underline; text-underline-offset: 4px; }

/* ===== EN-TÊTE COMPACT AU DÉFILEMENT (2026-07-07) ===== */
@media (min-width: 768px) {
	.elementor-location-header .e-con-inner,
	.elementor-location-header .elementor-element-5e3ab7f,
	.elementor-location-header .elementor-element-337eec6 img { transition: margin .25s ease, padding .25s ease, height .25s ease; }
	body.avsr-header-compact .elementor-location-header .elementor-element-fe1d56a { --min-height: 0px !important; min-height: 0 !important; }
	body.avsr-header-compact .elementor-location-header .e-con-inner { padding-top: 4px !important; padding-bottom: 4px !important; }
	body.avsr-header-compact .elementor-location-header .elementor-element-5e3ab7f { margin-top: 6px !important; margin-bottom: 6px !important; }
	body.avsr-header-compact .elementor-location-header .elementor-element-337eec6 img { height: 24px !important; width: auto !important; }
}

/* ===== LPD FOOTER (lot 36→37) — lien « Loi sur la protection des données (LPD) », à la taille du reste du footer ===== */
.avsr-lpd { margin: 20px 0 0 !important; }
.avsr-lpd a {
  font-size: 18px;
  color: inherit;
  text-decoration: none;
  white-space: nowrap;
  transition: opacity .2s ease;
}
.avsr-lpd a:hover,
.avsr-lpd a:focus-visible { text-decoration: underline; }

/* ===== (ex-lot 38, RETIRÉ 11/07) Recolorisation du bouton CookieYes supprimée — CookieYes désactivé
   sur prod (remplacé par FreeCookie). Valeur d'origine si besoin : .cky-btn-revisit-wrapper
   { background:#e0318a !important; background-color:#e0318a !important; } ===== */

/* ===== FILET GRIS SOUS LE LOGO — aligné sur les filets du menu (lot 39) ===== */
/* Le logo se termine 7px plus haut que les items de menu ; on descend son filet
   pour qu'il tombe exactement sur la même ligne (Y des filets colorés du menu). */
.elementor-location-header .elementor-element-337eec6 { position: relative !important; }
.elementor-location-header .elementor-element-337eec6::after {
  content: "";
  position: absolute;
  left: 0; right: 0;
  /* !important indispensable : Elementor génère `.elementor-42 .elementor-element.elementor-element-337eec6::after{bottom:-5px}`
     (spécificité 0,3,1) qui battait notre règle — d'où l'échec répété de l'alignement. */
  bottom: -7px !important;   /* Stéphane 09/07 : remonté de 1px (était -8px) */
  height: 3px;
  background-color: #d8d4ce !important;
  opacity: 1 !important;
  pointer-events: none;
}
/* En-tête compact (au défilement) : le logo rétrécit ; on garde le filet visible et on
   ajuste sa position pour qu'il reste collé sous le logo réduit. */
/* !important requis pour battre la règle normale (-8px !important) en mode compact ; aligne le filet sur les filets du menu quand l'en-tête est réduit. */
body.avsr-header-compact .elementor-location-header .elementor-element-337eec6::after { display: block; bottom: -3px !important; }
/* Filet qui DÉPASSAIT à droite en compact (Stéphane 09/07 « le logo sticky est bizarre, il a changé »).
   Cause : le conteneur du logo (337eec6) reste à 222px (largeur du logo NORMAL, figée) alors que le logo
   rétrécit à ~122px en compact (règle l.1611 : height 24px). Le filet (::after left:0/right:0) suivait donc
   les 222px du conteneur → 100px de dépassement à droite du logotype réduit. On fait épouser le conteneur à
   son contenu visible en compact → le filet colle pile sous le logo. (.avsr-logomenu du survol est en
   position:absolute, il ne réélargit pas le conteneur ; le menu flottant reste aligné au bord gauche du logo.)
   ⚠️ SCOPÉ min-width:768px : le rapetissement du logo compact (l.1611 height:24px) est lui aussi min-width:768.
   Sans ce scope, en compact MOBILE (<768) le logo n'est pas rapetissé et fit-content épousait l'image PLEINE
   taille → logo géant + hamburger dessous (Stéphane 09/07 « en responsive le header a changé »). Corrigé. */
@media (min-width:768px){
  body.avsr-header-compact .elementor-location-header .elementor-element-337eec6 { width: fit-content !important; }
}

/* ===== LOT 42 — TITRES EN STYLE PRINCIPAL (2026-07-08, rév.) =====
   Demande de Stéphane : tous les titres de contenu = style « Principal » (Roboto 60px / 400 / MAJ),
   SAUF :
     - héros (bannières médias + concert) → remis comme avant (Roboto 44px MAJ, centré) ;
     - boucles actus (cartes d'articles), boucles concerts (cartes/rangées/prochain concert)
       et vignettes médias → laissées comme avant : ce sont des classes .avsr-*__title, hors de
       la règle ci-dessous (qui ne vise que les titres Elementor), donc rien à faire pour elles.
   Exclut l'accueil (page 7). Ne touche ni texte, ni filtres, ni boutons.
   Famille = variable globale « Principal » (Roboto), pilotable depuis le panneau. */

/* Titres Elementor de niveau page/section (h1–h3) → Principal (Roboto 60px), alignés à gauche */
body:not(.page-id-7) .elementor-widget-heading .elementor-heading-title {
	font-family: var(--e-global-typography-primary-font-family, "Roboto"), sans-serif !important;
	font-size: 60px !important;
	font-weight: 400 !important;
	line-height: 70px !important;
	text-transform: uppercase !important;
	text-align: left !important;
}
/* Titres de piste / sous-titres (h4–h6) : taille intermédiaire, PAS le 60px des sections */
body:not(.page-id-7) .elementor-widget-heading h4.elementor-heading-title,
body:not(.page-id-7) .elementor-widget-heading h5.elementor-heading-title,
body:not(.page-id-7) .elementor-widget-heading h6.elementor-heading-title {
	font-size: 26px !important;
	line-height: 1.2 !important;
}

/* Héros → comme avant (la règle large ci-dessus les toucherait, on les restaure).
   Bannières médias : Roboto 44px MAJ, centré. */
body:not(.page-id-7) .avsr-kp-hero .elementor-heading-title {
	font-size: 60px !important;   /* Stéphane 09/07 : bandeaux médias au titre principal 60px comme les autres */
	font-weight: 400 !important;
	line-height: normal !important;
	text-align: center !important;
}
/* Bannière concert : titre 44px, sous-titre 14px (ne pas les gonfler à 60px). */
body:not(.page-id-7) .avsr-chero .elementor-element-4dad557 .elementor-heading-title {
	font-size: 60px !important;   /* Stéphane 09/07 : bandeau concert au titre principal 60px */
	font-weight: 400 !important;
	line-height: normal !important;
}
body:not(.page-id-7) .avsr-chero .elementor-element-54e175c .elementor-heading-title {
	font-size: 14px !important;
	font-weight: 400 !important;
	line-height: normal !important;
}
/* Mobile : réduire les titres (les 60px déborderaient) */
@media (max-width: 767px) {
	body:not(.page-id-7) .elementor-widget-heading .elementor-heading-title { font-size: 34px !important; line-height: 40px !important; }
	body:not(.page-id-7) .avsr-kp-hero .elementor-heading-title,
	body:not(.page-id-7) .avsr-chero .elementor-element-4dad557 .elementor-heading-title { font-size: 30px !important; }
}
/* (Les héros restent centrés comme avant — plus de mise en pleine largeur.) */

/* ===== ACCUEIL — bloc « Prochains concerts » : image 400px + picto en haut à gauche (2026-07-08) ===== */
body.page-id-7 .avsr-nc__card { padding-top: 156px !important; margin-top: 23px !important; }
body.page-id-7 .avsr-nc__figwrap { height: 400px !important; top: -264px !important; }
body.page-id-7 .avsr-nc__logo { top: -248px !important; left: 52px !important; }

/* ===== FLÈCHES CARROUSEL « Prochains concerts » : survol/actif TOUJOURS noir & blanc (2026-07-08) ===== */
.avsr-cc__btn:hover, .avsr-cc__btn:active {
	background: #111 !important; color: #fff !important; border-color: #111 !important; box-shadow: none !important;
}
.avsr-cc__btn:hover svg, .avsr-cc__btn:active svg { fill: #fff !important; }
.avsr-cc__btn { -webkit-tap-highlight-color: transparent !important; }
/* focus clavier : liséré noir discret (accessibilité), pas de bleu système */
.avsr-cc__btn:focus-visible { outline: 2px solid #111 !important; outline-offset: 2px !important; }
.avsr-cc__btn:focus:not(:focus-visible) { outline: none !important; }

/* ===== BOUTON LECTURE DU LECTEUR : bague de focus = couleur du thème, pas de bleu système (2026-07-08) ===== */
.avsr-ap__btn:focus { outline: none !important; }
.avsr-ap__btn:focus-visible { outline: 3px solid var(--acc, #e0318a) !important; outline-offset: 3px !important; }
.avsr-ap__btn { -webkit-tap-highlight-color: transparent; }

/* ===== Bloc « EN IMAGES » : logo de l'ensemble en haut à gauche, couleur du thème (2026-07-08)
   Couvre les DEUX structures : carrousel photos (.avsr-imgslider, cas local/ensembles)
   ET vidéo facade (.avsr-hv__facade, cas prod/accueil). ===== */
.avsr-imgslider, .avsr-hv__facade { position: relative; }
.avsr-imgslider::before, .avsr-hv__facade::before {
	content: ""; position: absolute; top: 18px; left: 18px; z-index: 6;
	width: 58px; height: 58px; background-repeat: no-repeat; background-position: left top; background-size: contain;
	pointer-events: none;
	background-image: url("/wp-content/themes/hello-elementor/img/avsr_couleur.png");
}
body.avsr-theme-open-harmony .avsr-imgslider::before, body.avsr-theme-open-harmony .avsr-hv__facade::before { background-image: url("/wp-content/themes/hello-elementor/img/open_couleur.png"); }
body.avsr-theme-policorali .avsr-imgslider::before, body.avsr-theme-policorali .avsr-hv__facade::before { background-image: url("/wp-content/themes/hello-elementor/img/poli_couleur.png"); }
body.avsr-theme-avsr .avsr-imgslider::before, body.avsr-theme-avsr .avsr-hv__facade::before { background-image: url("/wp-content/themes/hello-elementor/img/avsr_couleur.png"); }
/* Accueil (thème gris) : sa vidéo « Policorali en images » → logo Policorali forcé */
body.page-id-7 .avsr-hv__facade::before { background-image: url("/wp-content/themes/hello-elementor/img/poli_couleur.png"); }
/* Logo « en images » (position 2) : effet de survol proche du badge des cartes concert (position 1).
   Le mix-blend-mode:difference de position 1 est INOPÉRANT ici (le carrousel Swiper isole ses
   images → rien à mélanger), donc on désature le logo au survol (rendu proche : le logo pâlit). */
.avsr-imgslider::before, .avsr-hv__facade::before { transition: filter .25s ease; }
.avsr-imgslider:hover::before { filter: grayscale(1) brightness(1.35); }
.avsr-hv__facade:hover::before { mix-blend-mode: difference; }

/* ===== TITRES DE BANNIÈRE (haut de page) : CENTRÉS (demande Stéphane 2026-07-08) =====
   Les héros médias (.avsr-kp-hero) sont déjà centrés ; ici on re-centre les titres de page
   (ensembles, actualités, contact, concerts, académie) + le héros concert + le titre d'article.
   Les titres de SECTION dans le contenu restent à gauche. */
body:not(.page-id-7) .avsr-chero .elementor-heading-title,
body:not(.page-id-7) .elementor-widget-theme-post-title .elementor-heading-title,
body:not(.page-id-7) .elementor-element-7f65c83 .elementor-heading-title,
body:not(.page-id-7) .elementor-element-6e9a8f9 .elementor-heading-title,
body:not(.page-id-7) .elementor-element-807b0ff .elementor-heading-title,
body:not(.page-id-7) .elementor-element-a5002b6 .elementor-heading-title,
body:not(.page-id-7) .elementor-element-79ff211 .elementor-heading-title,
body:not(.page-id-7) .elementor-element-6cdac68 .elementor-heading-title,
body:not(.page-id-7) .elementor-element-725ab48 .elementor-heading-title,
body:not(.page-id-7) .elementor-element-6ef3a20 .elementor-heading-title {
	text-align: center !important;
}

/* ===== On en parle / Kit presse / Discographie : titres de SECTION (h2/h3) en Secondaire (PT Serif)
   au lieu de Principal (Roboto) — demande Stéphane 2026-07-08. Le grand titre h1 (héros) reste Principal. ===== */
body.page-id-1095 .elementor-widget-heading h2.elementor-heading-title,
body.page-id-1095 .elementor-widget-heading h3.elementor-heading-title,
body.page-id-1097 .elementor-widget-heading h2.elementor-heading-title,
body.page-id-1097 .elementor-widget-heading h3.elementor-heading-title,
body.page-id-1499 .elementor-widget-heading h2.elementor-heading-title,
body.page-id-1499 .elementor-widget-heading h3.elementor-heading-title,
body.page-id-1457 .elementor-widget-heading h2.elementor-heading-title,
body.page-id-1457 .elementor-widget-heading h3.elementor-heading-title {
	font-family: var(--e-global-typography-secondary-font-family, "Roboto"), sans-serif !important;
	font-size: var(--e-global-typography-secondary-font-size, 16px) !important;
	font-weight: var(--e-global-typography-secondary-font-weight, 800) !important;
	text-transform: uppercase !important;
}
/* Discographie : titres de CD lisibles à 33px + interligne propre (demande Stéphane 2026-07-08).
   Plus spécifique que la règle Secondaire ci-dessus → l'emporte. */
body.page-id-1457 .elementor-widget-heading.avsr-disco-titre h3.elementor-heading-title,
body.page-id-1499 .elementor-widget-heading.avsr-disco-titre h3.elementor-heading-title {
	font-size: 33px !important;
	line-height: 1.1 !important;
}

/* ===== HERO « ACTU À LA UNE » : couleur + logo par ensemble, titre 400, image décrochée (2026-07-08) ===== */
.avsr-hero--avsr { background: var(--pink, #e0318a) !important; }
.avsr-hero--open-harmony { background: var(--yellow, #f2e61a) !important; }
.avsr-hero--policorali { background: var(--cyan, #89ccca) !important; }
.avsr-hero__title { font-weight: 400 !important; }
/* image qui décroche vers le haut du cadre coloré */
.avsr-hero { margin-top: 220px; }
.avsr-hero__media { margin-top: -200px !important; position: relative; overflow: visible; }
/* logo de l'ensemble, en haut-gauche de l'image */
.avsr-hero__media::before { content: ""; position: absolute; z-index: 3; top: 16px; left: calc(var(--hero-pad, 5%) + 16px); width: 54px; height: 54px; background-repeat: no-repeat; background-position: left top; background-size: contain; pointer-events: none; }
.avsr-hero--avsr .avsr-hero__media::before { background-image: url("/wp-content/themes/hello-elementor/img/avsr_couleur.png"); }
.avsr-hero--open-harmony .avsr-hero__media::before { background-image: url("/wp-content/themes/hello-elementor/img/open_couleur.png"); }
.avsr-hero--policorali .avsr-hero__media::before { background-image: url("/wp-content/themes/hello-elementor/img/poli_couleur.png"); }

/* ===== ACCUEIL : 3 textes façon maquette — devise + titre intro en casse normale (serif italique) 2026-07-08 ===== */
body.page-id-7 .elementor-slide-description { text-transform: none !important; }
body.page-id-7 .elementor-element-79a3961 .elementor-heading-title { text-transform: none !important; font-size: 36px !important; line-height: 1.15 !important; }

/* ===== BANDEAUX FULLSCREEN — toutes les pages 2026-07-08 ===== */
/* Bandeaux-titres (conteneurs par page) + héros médias (.avsr-kp-hero)
   + bandes couleur article à la une (.avsr-hero) : étirés bord à bord.
   Technique full-bleed : width 100vw + margin latérale calc(50% - 50vw)
   (fonctionne dans la feuille 1140px centrée, sans débordement grâce à overflow-x:hidden). */
body.page-id-27 .elementor-element-6fc8ee4,   /* Actualités */
body.page-id-21 .elementor-element-3e4334e,   /* AVSR */
body.page-id-23 .elementor-element-d2beec9,   /* Open Harmony */
body.page-id-25 .elementor-element-886a4c8,   /* Policorali */
body.page-id-33 .elementor-element-6ab3552,   /* Contact */
body.page-id-733 .elementor-element-9321c4e,  /* Concerts à venir */
body.page-id-560 .elementor-element-9321c4e,  /* Concerts passés */
.avsr-kp-hero,                                 /* héros pages Médias */
.avsr-hero {                                   /* bande couleur article à la une */
  width: 100vw !important;
  max-width: 100vw !important;
  margin-left: calc(50% - 50vw) !important;
  margin-right: calc(50% - 50vw) !important;
}
/* le CONTENU de la bande couleur reste boxé/centré (seul le fond va bord à bord) */
.avsr-hero__media,
.avsr-hero__body {
  max-width: 1140px;
  margin-left: auto;
  margin-right: auto;
}

/* ===== BANNIÈRES À 500px DE HAUTEUR — toutes les pages (demande Stéphane 2026-07-08) ===== */
/* Uniformise la hauteur de toutes les bannières de page à 500px. Même ensemble de
   sélecteurs que le bloc BANDEAUX FULLSCREEN (largeur), MAIS sans .avsr-hero (bande
   couleur de l'article à la une, gérée à part). min-height => le titre reste centré. */
body.page-id-27 .elementor-element-6fc8ee4,   /* Actualités */
body.page-id-21 .elementor-element-3e4334e,   /* AVSR */
body.page-id-23 .elementor-element-d2beec9,   /* Open Harmony */
body.page-id-25 .elementor-element-886a4c8,   /* Policorali */
body.page-id-33 .elementor-element-6ab3552,   /* Contact */
body.page-id-733 .elementor-element-9321c4e,  /* Concerts à venir */
body.page-id-560 .elementor-element-9321c4e,  /* Concerts passés */
.avsr-kp-hero {                                /* héros pages Médias */
  min-height: 500px !important;
}
/* Sur mobile, on réduit pour éviter une bande démesurée sur petit écran */
@media (max-width: 768px) {
  body.page-id-27 .elementor-element-6fc8ee4,
  body.page-id-21 .elementor-element-3e4334e,
  body.page-id-23 .elementor-element-d2beec9,
  body.page-id-25 .elementor-element-886a4c8,
  body.page-id-33 .elementor-element-6ab3552,
  body.page-id-733 .elementor-element-9321c4e,
  body.page-id-560 .elementor-element-9321c4e,
  .avsr-kp-hero {
    min-height: 340px !important;
  }
}

/* ===== FILTRES : espacement uniforme 50px au-dessus et en dessous — toutes pages (Stéphane 2026-07-08) ===== */
/* Toute barre de filtres reçoit 50px d'air au-dessus (sous la bannière) et 50px en dessous
   (avant le contenu) : une "marche" identique en haut et en bas sur chaque page à filtres. */
.avsr-filters,
.avsr-c-filters,
.avsr-vgrid__filters,
.avsr-agrid__filters,
.avsr-pgrid__filters,
.avsr-skin-switch {
  margin-top: 50px !important;
  margin-bottom: 72px !important;
}
/* Deux rangées de filtres qui se suivent (années+ensembles, catégories+types) :
   petit écart ENTRE elles, 50px seulement autour du groupe. */
.avsr-c-filters + .avsr-c-filters,
.avsr-filters + .avsr-filters {
  margin-top: 10px !important;
}
.avsr-c-filters:has(+ .avsr-c-filters),
.avsr-filters:has(+ .avsr-filters) {
  margin-bottom: 10px !important;
}
/* Concerts à venir (733) + passés (560) : marge SOUS le groupe de filtres ramenée à 50px
   (comme Actualités), au lieu du 72px global — Stéphane 09/07. Le dernier rang passe à 50px ;
   le 1er rang (années) garde 10px via :has pour rester collé au 2e (ensembles). */
body.page-id-733 .avsr-c-filters,
body.page-id-560 .avsr-c-filters {
  margin-bottom: 50px !important;
}
body.page-id-733 .avsr-c-filters:has(+ .avsr-c-filters),
body.page-id-560 .avsr-c-filters:has(+ .avsr-c-filters) {
  margin-bottom: 10px !important;
}
/* La liste de concerts (.avsr-c-list) ajoutait 40px de padding-top qui s'additionnait à la
   marge des filtres (50+40=90). Pas de décrochement d'image sur desktop → on neutralise ce
   padding pour que l'écart filtres→1re carte soit pile 50px. */
body.page-id-733 .avsr-c-list,
body.page-id-560 .avsr-c-list {
  padding-top: 0 !important;
}

/* ===== AVSR : titres d'ensembles (Présentation 1442) en style Secondaire — Stéphane 2026-07-08 ===== */
/* Exception à LOT 42 (qui force tous les titres en Principal) : ces 3 titres de cartes
   suivent le style global « Secondaire » (Roboto 16px/800/MAJ). Spécificité > Lot 42, placé après. */
body.page-id-1442 .elementor-element-055c72a .elementor-heading-title,
body.page-id-1442 .elementor-element-de414d7 .elementor-heading-title,
body.page-id-1442 .elementor-element-14ef09c .elementor-heading-title {
  font-family: var(--e-global-typography-secondary-font-family, "Roboto"), sans-serif !important;
  font-size: var(--e-global-typography-secondary-font-size, 16px) !important;
  font-weight: var(--e-global-typography-secondary-font-weight, 800) !important;
  text-transform: var(--e-global-typography-secondary-text-transform, uppercase) !important;
  line-height: var(--e-global-typography-secondary-line-height, 1.3) !important;
  letter-spacing: var(--e-global-typography-secondary-letter-spacing, 0) !important;
}
/* Le conteneur qui COMMENCE par une barre de filtres ne doit pas ajouter son propre
   padding en haut : sinon l'écart au-dessus des filtres dépasse le 50px de la marge. */
*:has(> .avsr-filters:first-child),
*:has(> .avsr-c-filters:first-child),
*:has(> .avsr-vgrid__filters:first-child),
*:has(> .avsr-agrid__filters:first-child),
*:has(> .avsr-pgrid__filters:first-child),
*:has(> .avsr-skin-switch:first-child) {
  padding-top: 0 !important;
}
/* Concerts : le conteneur de contenu Elementor ajoute 10px en haut ; on remonte la
   zone concerts d'autant pour que l'écart bannière→filtres soit pile 50px. */
.avsr-concerts { margin-top: -10px !important; }
/* ===== Présentation (1442) : aligner les 3 liens « Découvrir » sur la même ligne =====
   Les cartes AVSR/OH/Policorali sont en flex-colonne et de même hauteur ; on pousse
   chaque lien « Découvrir » en bas de sa carte pour qu'ils s'alignent (textes de longueurs différentes). */
body.page-id-1442 .elementor-element-27f09ac,
body.page-id-1442 .elementor-element-7e6cfc2,
body.page-id-1442 .elementor-element-0aa585a {
  margin-top: auto !important;
}

/* ===== RYTHME VERTICAL — marge haut/bas cohérente autour du contenu (Stéphane 2026-07-08) =====
   Valeur issue de la maquette (site aéré) ramenée au web : 60px. TÉMOIN = fiche concert.
   À étendre aux autres gabarits une fois validé. */
body.single-concert .elementor-element-aede2ff {
  padding-top: 60px !important;
  padding-bottom: 60px !important;
}
/* ===== GALERIE : survol = image en couleur SANS voile sombre (Stéphane 2026-07-08) =====
   L'overlay Elementor passait à rgba(0,0,0,.5) au survol ; on le garde transparent.
   Le passage N&B -> couleur (grayscale) reste actif. */
.elementor-widget-gallery .elementor-gallery-item__overlay,
.e-gallery-item:hover .elementor-gallery-item__overlay,
.e-gallery-item:focus .elementor-gallery-item__overlay {
  background-color: transparent !important;
}
/* ===== SURVOL DU MENU : fond couleur — MOBILE (dropdown) UNIQUEMENT.
   Desktop = filets colorés seuls (lignes 1442+). Stéphane 09/07 a RETIRÉ le fond au survol du
   menu principal (« il y a un background en hover, j'ai pas demandé ça »). ===== */
.elementor-nav-menu--dropdown .menu-item { transition: background-color .2s ease; }
.elementor-nav-menu--dropdown .menu-item > a { transition: color .2s ease; }
/* Fond de survol / page COURANTE posé sur le <li> (pleine largeur) → le <a> reste CENTRÉ (margin:auto).
   Stéphane 09/07 : l'item actif était collé à gauche (le <a> avait width:100%). TOUS les états centrés.
   défaut = gris ; par ensemble = couleur. */
.elementor-nav-menu--dropdown .menu-item:hover,
.elementor-nav-menu--dropdown .menu-item:focus-within,
.elementor-nav-menu--dropdown .menu-item.current-menu-item,
.elementor-nav-menu--dropdown .menu-item.current-menu-ancestor { background-color: #ebe9e4 !important; }
.elementor-nav-menu--dropdown .menu-item-52:hover,
.elementor-nav-menu--dropdown .menu-item-52:focus-within,
.elementor-nav-menu--dropdown .menu-item-52.current-menu-item,
.elementor-nav-menu--dropdown .menu-item-52.current-menu-ancestor { background-color: #f7d9e8 !important; }
.elementor-nav-menu--dropdown .menu-item-51:hover,
.elementor-nav-menu--dropdown .menu-item-51:focus-within,
.elementor-nav-menu--dropdown .menu-item-51.current-menu-item,
.elementor-nav-menu--dropdown .menu-item-51.current-menu-ancestor { background-color: #f8f2a6 !important; }
.elementor-nav-menu--dropdown .menu-item-50:hover,
.elementor-nav-menu--dropdown .menu-item-50:focus-within,
.elementor-nav-menu--dropdown .menu-item-50.current-menu-item,
.elementor-nav-menu--dropdown .menu-item-50.current-menu-ancestor { background-color: #d2ecea !important; }
/* le <a> reste transparent (la bande est sur le <li>) + texte noir lisible ; il garde son margin:auto (centré).
   ⚠️ background-COLOR (pas le raccourci `background`) : le raccourci effaçait le background-image = le mini-logo
   d'ensemble (AVSR/OH/Poli), qui DISPARAISSAIT au survol/actif. Stéphane 09/07 « en hover le logo doit rester ». */
.elementor-nav-menu--dropdown .menu-item:hover > a,
.elementor-nav-menu--dropdown .menu-item:focus-within > a,
.elementor-nav-menu--dropdown .menu-item.current-menu-item > a,
.elementor-nav-menu--dropdown .menu-item.current-menu-ancestor > a { background-color: transparent !important; color: #111 !important; }
/* ===== Cartes concert (mobile) : image décrochée ~66% dehors / 33% dedans le cadre coloré (Stéphane 2026-07-08) ===== */
/* 2026-07-10 (Stéphane, capture /avsr/ mobile) : le -37% en marge ne sortait pas assez le média, et les
   marges en % se mesurent en LARGEUR alors que la hauteur du média varie selon son type (img min-220px,
   vidéo min-280px) → proportion jamais tenue. Hauteur FIXE 240px (même logique que l'accueil) +
   chevauchement fixe 80px = 66% dehors / 33% dedans pour TOUS les médias.
   + cadre fin autour du média qui dépasse, à la couleur de l'ensemble. */
@media(max-width:600px){
  /* média à 90% de largeur, centré, hauteur fixe, décroché du cadre coloré */
  .avsr-c-row__media { position: relative; z-index: 2; align-self: center; width: 90%; flex: 0 0 240px; height: 240px; margin-bottom: -100px; /* 100px - gap 20px du conteneur = 80px DANS le cadre (33% de 240) */ border: 1px solid var(--pink); background: #fff; box-sizing: border-box; }
  .avsr-c-row__media .avsr-c-row__img,
  .avsr-c-row__media iframe,
  .avsr-c-row__media video { width: 100%; height: 100% !important; min-height: 0 !important; object-fit: cover; display: block; }
  .avsr-c-row[data-ensemble="open-harmony"] .avsr-c-row__media { border-color: var(--yellow); }
  .avsr-c-row[data-ensemble="policorali"] .avsr-c-row__media { border-color: var(--cyan); }
  /* le cadre coloré remonte derrière le média ; on décale le CONTENU sous le média pour ne pas le masquer */
  .avsr-c-row__body { position: relative; z-index: 1; padding-top: 104px; }
}

/* ===== Liens carte concert (prochain concert) sur UNE ligne — Stéphane 2026-07-08 ===== */
/* Les 3 liens (En savoir plus / Billetterie / lieu) tiennent sur une seule ligne,
   quitte à réduire la taille, au lieu de passer à la ligne. */
.avsr-c-row__links { flex-wrap: nowrap !important; column-gap: 18px !important; gap: 18px !important; }
.avsr-c-row__link, .avsr-c-row__links a { font-size: 10px !important; letter-spacing: .03em !important; white-space: nowrap; }
.avsr-nc__links { display: flex !important; flex-wrap: nowrap !important; gap: 18px !important; }
.avsr-nc__links a { font-size: 10px !important; letter-spacing: .03em !important; white-space: nowrap; margin-right: 0 !important; }

/* ===== Fiche concert : colonne contenu (logo+titre+texte) en 1er sur mobile — Stéphane 2026-07-08 ===== */
@media (max-width: 767px) {
  body.single-concert .e-con:has(> .elementor-element-aede2ff) { flex-direction: column !important; }
  body.single-concert .elementor-element-aede2ff { order: -1 !important; }
}

/* ===== Cohérence gap bannière→contenu — aligné sur AVSR ~50px (Stéphane 2026-07-08) ===== */
/* Sections de contenu des pages ensembles/contact : margin-top ramené à 40px (gap ~50 avec paddings). */
.elementor-element-cb364f4, .elementor-element-5a742b4 { margin-top: 40px !important; }
.elementor-element-4njkr60 { margin-top: 30px !important; }

/* ===== Fiche concert : blocs date/lieu/tarif supplémentaires (2 & 3) au style du bloc 1 — Stéphane 2026-07-08 ===== */
.elementor-element-00c84db .elementor-widget-text-editor:not(.avsr-cmeta) {
  border-bottom: 1px solid #111111 !important;
  padding-bottom: 6px;
  font-size: 14px;
  line-height: 1.35;
}
.elementor-element-00c84db .elementor-widget-text-editor:not(.avsr-cmeta) p { margin: 0; }
.elementor-element-00c84db .elementor-widget-text-editor:not(.avsr-cmeta),
.elementor-element-00c84db .elementor-widget-text-editor:not(.avsr-cmeta) a,
.elementor-element-00c84db .elementor-widget-text-editor:not(.avsr-cmeta) span { color: #111111 !important; }
.elementor-element-00c84db .concert-bloc-lieu a, .elementor-element-00c84db .concert-bloc-lieu a:visited { color: #111111 !important; text-decoration: none; }
/* ===== Médias/Audios : normaliser l'écart bannière→sélecteur LECTEUR (~54px, cohérence Médias) 2026-07-08 ===== */
body.page-id-1093 .avsr-skin-switch { margin-top: 14px !important; }
/* ===== Accueil (page 7) : variante MOBILE du décrochement prochain concert (le !important desktop
   forçait -200px sur mobile et recouvrait le titre « Prochains concerts ») 2026-07-08 ===== */
@media(max-width:700px){
  /* Décrochement 66% (172/260) + clearance titre restaurée via margin-top carte — Stéphane 2026-07-09 */
  body.page-id-7 .avsr-nc__card { margin-top: 90px !important; }
  body.page-id-7 .avsr-nc__figwrap { top: -172px !important; height: 260px !important; }
  body.page-id-7 .avsr-nc__logo { top: -156px !important; }
}

/* ===== Cohérence gap bannière→contenu — pages Médias sans filtre (Stéphane 2026-07-09) ===== */
/* Galerie : section vide résiduelle (ancien titre retiré) collapsée */
body.page-id-959 .elementor-element-avsrpsec1, body.page-id-959 .elementor-element-avsrpsec1 > .e-con-inner { min-height: 34px !important; padding-top: 0 !important; padding-bottom: 0 !important; }
/* Vidéos / On en parle : padding-top de la 1re section contenu réduit */
body.page-id-1091 .elementor-element-cfa87b2 { padding-top: 8px !important; }
body.page-id-1095 .elementor-element-6c38679, body.page-id-1095 .elementor-element-33bfedb { padding-top: 8px !important; }
/* ===== Cartes Actualités (mobile) : titre -30% (26->18 / 30->21) — Stéphane 2026-07-08 =====
   (Le décrochement image 66% des cartes actu compactes est géré côté grille par l'autre session,
   pour ne pas désaligner la grille 2 colonnes.) */
@media(max-width:600px){
  .avsr-card__title { font-size: 18px !important; line-height: 21px !important; }
}

/* ===== Menu mobile : fond couleur d'ensemble PLEINE LARGEUR sur la page courante (li) — Stéphane 2026-07-09 ===== */
.elementor-nav-menu--dropdown .menu-item-52.current-menu-item, .elementor-nav-menu--dropdown .menu-item-52.current-menu-ancestor { background-color: #f7d9e8 !important; }
.elementor-nav-menu--dropdown .menu-item-51.current-menu-item, .elementor-nav-menu--dropdown .menu-item-51.current-menu-ancestor { background-color: #f8f2a6 !important; }
.elementor-nav-menu--dropdown .menu-item-50.current-menu-item, .elementor-nav-menu--dropdown .menu-item-50.current-menu-ancestor { background-color: #d2ecea !important; }
/* le <a> reste transparent pour laisser voir le fond pleine largeur du li */
.elementor-nav-menu--dropdown .menu-item-52.current-menu-item > a, .elementor-nav-menu--dropdown .menu-item-51.current-menu-item > a, .elementor-nav-menu--dropdown .menu-item-50.current-menu-item > a,
.elementor-nav-menu--dropdown .menu-item-52.current-menu-ancestor > a, .elementor-nav-menu--dropdown .menu-item-51.current-menu-ancestor > a, .elementor-nav-menu--dropdown .menu-item-50.current-menu-ancestor > a { background-color: transparent !important; width:fit-content !important; }

/* ===== Cartes Actualités (mobile) : image décrochée ~66% dehors, comme les cartes concert — Stéphane 2026-07-09 ===== */
/* Masonry column-count:2 (page 27) : colonnes indépendantes → décrochement par carte, en % (responsive),
   sans désaligner (les cartes sans image ne bougent pas, mais chaque colonne est autonome). */
@media(max-width:600px){
  /* Masonry 2-col : carte 155px / média ~113px → marges % de largeurs différentes. Empirique pour ~66% de la hauteur média. */
  .page-id-27 .avsr-card.avsr-card--hasimg { margin-top: 51% !important; overflow: visible !important; }
  .page-id-27 .avsr-card--hasimg .avsr-card__media { margin-top: -88% !important; overflow: visible !important; }
  .page-id-27 .avsr-card__media .avsr-card__photo { width: 100% !important; }
}
/* ===== Cartes Actualités (accueil/ensembles compact) : image/vidéo décrochée ~66% hors du cadre — Stéphane 2026-07-09 =====
   Décrochement à TOUTES les largeurs (desktop inclus, comme la page Actualités). Clearance identique sur toutes
   les cartes (corps alignés) ; seule l'image protrude. Écart -50% entre cartes seulement en responsive (≤1024). */
.avsr-news--compact .avsr-card { margin-top: 79% !important; }
.avsr-news--compact .avsr-card--hasimg .avsr-card__media { margin-top: -79% !important; position: relative; z-index: 3; }
@media(max-width:1024px){
  .avsr-news--compact .avsr-grid { column-gap: 13px !important; }
  .avsr-news--compact .avsr-card { margin-top: 78% !important; }
  .avsr-news--compact .avsr-card--hasimg .avsr-card__media { margin-top: -78% !important; }
}

/* Actualités (page 27) : la LISTE visible est la section .avsr-news (PAS --heroonly, qui est
   le hero vedette avec filtres/grille cachés). On cible donc la liste régulière. */
/* Décrochement image/vidéo desktop ramené à ~66% (au lieu de ~81%) pour matcher les concerts.
   Mobile garde son propre réglage. */
@media(min-width:601px){
  .page-id-27 .avsr-news:not(.avsr-news--heroonly) .avsr-card.avsr-card--hasimg { margin-top: 211px !important; }
  .page-id-27 .avsr-news:not(.avsr-news--heroonly) .avsr-card--hasimg .avsr-card__media { margin-top: -236px !important; }
}
/* (Marges autour des filtres Actualités : gérées par la session A à 50px — voir _coordination-sessions.md, découverte heroonly) */
/* Lien « toutes les actualités » (loop actus) : couleur thématique selon l'ensemble de la page — cohérence (Stéphane 2026-07-09) */
/* Couleur VIVE de la marque (choix Stéphane 09/07, « couleur thématique pour ce lien ») — exactement les
   teintes du menu/logos, même si le jaune OH est peu lisible sur blanc (assumé). Avant : versions foncées lisibles. */
body.avsr-theme-avsr         .avsr-allnews-link { color:#e0318a !important; border-color:#e0318a !important; text-decoration-color:#e0318a !important; }
body.avsr-theme-policorali   .avsr-allnews-link { color:#89ccca !important; border-color:#89ccca !important; text-decoration-color:#89ccca !important; }
body.avsr-theme-open-harmony .avsr-allnews-link { color:#f2e61a !important; border-color:#f2e61a !important; text-decoration-color:#f2e61a !important; }
/* AVSR : rose #e0318a par défaut, inchangé */
/* ===== Menu déroulant (mobile) : items CENTRÉS + hover PLEINE LARGEUR par ensemble (Stéphane 2026-07-09) ===== */
/* centrer le lien (logo+texte) dans le li — y compris l'item courant qui était collé à gauche */
.elementor-nav-menu--dropdown .menu-item > a.elementor-item,
.elementor-nav-menu--dropdown .menu-item.current-menu-item > a.elementor-item,
.elementor-nav-menu--dropdown .menu-item.current-menu-ancestor > a.elementor-item { margin-left: auto !important; margin-right: auto !important; }
/* hover/actif : fond PLEINE LARGEUR sur le <li> (couleur d'ensemble, gris sinon) */
.elementor-nav-menu--dropdown .menu-item:hover,
.elementor-nav-menu--dropdown .menu-item:focus-within { background-color: #ebe9e4 !important; }
.elementor-nav-menu--dropdown .menu-item-52:hover, .elementor-nav-menu--dropdown .menu-item-52:focus-within { background-color: #f7d9e8 !important; }
.elementor-nav-menu--dropdown .menu-item-51:hover, .elementor-nav-menu--dropdown .menu-item-51:focus-within { background-color: #f8f2a6 !important; }
.elementor-nav-menu--dropdown .menu-item-50:hover, .elementor-nav-menu--dropdown .menu-item-50:focus-within { background-color: #d2ecea !important; }
/* plus de fond partiel sur le <a> (ancien réglage) */
.elementor-nav-menu--dropdown .menu-item:hover > a,
.elementor-nav-menu--dropdown .menu-item:focus-within > a { background-color: transparent !important; }
/* Logos d'ensemble = mini PNG à FOND BLANC opaque (0% transparence). Sur le menu blanc par défaut c'est
   invisible, mais sur la bande de survol/actif colorée le carré blanc apparaît. mix-blend-mode:multiply
   fait que le blanc prend la couleur de la bande (blanc×couleur=couleur) et le logo sombre reste net.
   Neutre sur fond blanc (blanc×blanc=blanc), donc on peut l'appliquer en permanence. (Stéphane 09/07) */
.elementor-nav-menu--dropdown .menu-item-52 > a.elementor-item,
.elementor-nav-menu--dropdown .menu-item-51 > a.elementor-item,
.elementor-nav-menu--dropdown .menu-item-50 > a.elementor-item { mix-blend-mode: multiply; }
/* ===== Filtres page Actualités (27) : 50px au-dessus ET en dessous du groupe — Stéphane 09/07 (tâche #1) =====
   Cible la LISTE VISIBLE .avsr-news:not(--heroonly) (le hero vedette --heroonly a filtres/grille cachés). */
.page-id-27 .avsr-news--heroonly .avsr-hero { margin-bottom: 15px !important; }
.page-id-27 .avsr-news:not(.avsr-news--heroonly) .avsr-filters { margin-top: 15px !important; }
.page-id-27 .avsr-news:not(.avsr-news--heroonly) .avsr-filters--type { margin-bottom: 25px !important; }
.page-id-27 .avsr-news:not(.avsr-news--heroonly) .avsr-grid { padding-top: 25px !important; }

/* (Switcher « ↕ Barre » retiré le 09/07 — Stéphane « supprime le snippet admin bar ». Le snippet 53 est
   supprimé → la barre d'admin revient EN HAUT (défaut WordPress) ; la position se choisira via le plugin
   « Admin Bar Position Switcher » (session C). Le CSS thématique #avsr-abar-switch était du code mort → retiré.
   Si le plugin est activé et qu'on veut recolorer son bouton par ensemble, repointer sur #abps-switch.) */

/* ===== Page Actualités (27) : MASQUER le bandeau (bannière photo « ACTUALITÉS ») en responsive — Stéphane 09/07 =====
   Sur mobile/tablette le bandeau mange tout l'écran ; on le retire (≤768px) et le contenu (vedette + liste) remonte.
   Desktop inchangé. Les articles single n'ont pas de bandeau pleine largeur (rien à masquer). */
@media (max-width: 768px) {
  body.page-id-27 .elementor-element-6fc8ee4 { display: none !important; }
  /* le conteneur de contenu (c3b50fe) a 100px de marge haute = l'espace qui était SOUS le bandeau.
     Sans le bandeau, ça laisse un grand vide → on la réduit à un petit air sous l'en-tête. */
  body.page-id-27 .elementor-element-c3b50fe { margin-top: 24px !important; }
}

/* ===== Templates ARTICLES actualités (AVSR/OH/Poli) — desktop : bandeau 500px + pleine largeur, bande colorée pleine largeur =====
   Stéphane 2026-07-09. Bandeaux ciblés par ID (1f85daa=AVSR/360, fe846d1=OH/363, ca69f9d=Poli/366).
   Bande = .avsr-article-band::before (classe commune aux 3 templates). Articles actu = toujours catégorie
   AVSR/OH/Poli, donc ces 3 couvrent tout (le template « gris » sert aux autres contenus). */
@media (min-width:1025px){
  .elementor-location-single .elementor-element-1f85daa,
  .elementor-location-single .elementor-element-fe846d1,
  .elementor-location-single .elementor-element-ca69f9d {
    min-height: 500px !important;
    width: 100vw !important; max-width: 100vw !important;
    margin-left: calc(50% - 50vw) !important; margin-right: calc(50% - 50vw) !important;
  }
  .avsr-article-band::before {
    width: 100vw !important; left: calc(50% - 50vw) !important;
  }
}
/* Templates ARTICLES (AVSR/OH/Poli) : MASQUER le bandeau photo « ACTUALITÉS » en RESPONSIVE (≤1024px) — Stéphane 09/07.
   Complément du bloc desktop ci-dessus (≥1025px = bandeau 500px pleine largeur). Sur mobile/tablette le bandeau
   photo est retiré ; l'article démarre sur son propre contenu (image + titre). Mêmes IDs (360/363/366). */
@media (max-width: 1024px) {
  .elementor-location-single .elementor-element-1f85daa,
  .elementor-location-single .elementor-element-fe846d1,
  .elementor-location-single .elementor-element-ca69f9d { display: none !important; }
}

/* (Uniformisation des titres de bandeau à 60px : gérée à la source lignes ~1680/1687 —
   les seuls bandeaux qui restaient à 44px étaient les médias .avsr-kp-hero et le concert .avsr-chero.) */

/* ===== Concert MOBILE (design Tassilo, 2026-07-09) : le titre + sous-titre du BANDEAU sont masqués
   (le titre noir + logo d'ensemble sont déjà affichés sous le bandeau via la colonne contenu).
   Desktop inchangé (titre blanc sur le bandeau conservé). ===== */
@media (max-width:767px){
  .avsr-chero .elementor-element-4dad557,
  .avsr-chero .elementor-element-54e175c { display: none !important; }
}

/* ===== Page CONTACT (page-id-33) : titres de CONTENU → taille « Secondaire » du kit (16px). Stéphane 2026-07-09.
   Bat le blanket 60px (l.1661) via +1 classe de spécificité. La bannière « CONTACT » (79ff211) reste 60px (#19). ===== */
body.page-id-33 .elementor-widget-heading.elementor-element-85bnzqn .elementor-heading-title,   /* AVSR */
body.page-id-33 .elementor-widget-heading.elementor-element-hj9usex .elementor-heading-title,   /* Open Harmony */
body.page-id-33 .elementor-widget-heading.elementor-element-c3k0zcm .elementor-heading-title,   /* Policorali */
body.page-id-33 .elementor-widget-heading.elementor-element-5662d75 .elementor-heading-title {  /* Nous contacter */
  font-size: 16px !important;
  line-height: 1.3 !important;
}

/* ===== Direction artistique (1443) : aligner les liens .avsr-doclinks EN BAS de chaque colonne directeur — Stéphane 09/07 =====
   Les 2 colonnes (Renaud/Dominique) sont à hauteur égale (flex stretch) mais les bios ont des longueurs
   différentes → les liens étaient décalés verticalement. margin-top:auto colle les liens au bas de chaque
   colonne (desktop, 2 colonnes côte à côte). Mobile (colonnes empilées) : marge normale conservée. */
@media (min-width: 769px) {
  body.page-id-1443 .avsr-doclinks { margin-top: auto !important; }
}

/* ===== Fiche concert (DESKTOP) — Stéphane 09/07 =====
   1) Masquer le titre BLANC du bandeau AUSSI en desktop (déjà masqué ≤767px par le bloc concert-mobile de B).
      Le titre noir sous le logo suffit → bandeau = image + bande couleur, sans titre.
   2) Descendre la colonne méta (.avsr-cmeta) de 50px pour aligner son haut sur le HAUT du logo d'ensemble. */
@media (min-width: 768px) {
  .avsr-chero .elementor-element-4dad557,
  .avsr-chero .elementor-element-54e175c { display: none !important; }
  .avsr-cmeta { margin-top: 50px !important; }
}

/* ===== Fiche concert (desktop) : 50px au-dessus ET en dessous de l'image/vidéo + 50px au-dessus de PROGRAMME — Stéphane 2026-07-09 ===== */
@media (min-width:768px){
  .elementor-element-8d15d7a, .elementor-element-9b72db3 { margin-top: 40px !important; margin-bottom: 40px !important; }
  body.single-concert .elementor-element-ee38c4d { margin-top: 40px !important; } /* PROGRAMME : gap au-dessus 30→50px (40 + 10 de gap flex) */
}

/* ===== Compact (accueil/ensembles) mobile : décrochement 66% comme la liste actu (mêmes dims carte 155/média 113). Stéphane 2026-07-09 ===== */
@media (max-width:600px){
  .avsr-news--compact .avsr-card.avsr-card--hasimg { margin-top: 51% !important; }
  .avsr-news--compact .avsr-card--hasimg .avsr-card__media { margin-top: -88% !important; }
}

/* ===== Pages ensembles (AVSR / OH / Policorali) : le titre de section « Actualités » et les
   liens « Dossier de présentation / Plus de photos » étaient collés au bord gauche en responsive
   (widgets pleine largeur hors gouttière). On rétablit la gouttière (20px = alignement des cartes). Stéphane 2026-07-09 ===== */
@media (max-width:1024px){
  body.page-id-21 .elementor-element-dfd4d3e,   /* AVSR      : titre « Actualités »   */
  body.page-id-23 .elementor-element-b71df35,   /* Oh Happy  : titre « Actualités »   */
  body.page-id-25 .elementor-element-b8a36e9,   /* Policorali: titre « Actualités »   */
  body.page-id-21 .avsr-doclinks,
  body.page-id-23 .avsr-doclinks,
  body.page-id-25 .avsr-doclinks { padding-left: 20px !important; padding-right: 20px !important; }
}

/* ===== PASSE RESPONSIVE « anti-débordement gouttière » (Stéphane 09/07 : « parcours chaque page, corrige les soucis comme celui-ci »)
   Symptôme : à ≤1024px des titres de section (et qq textes) sont en conteneur pleine largeur SANS padding
   (`.e-con-inner` padL=0 + feuille sans marge) → texte collé au bord gauche (mesuré textLeft=0, Chrome headless).
   Fix : on rend la gouttière au widget lui-même (ID Elementor = unique). Valeur = gouttière réelle de CHAQUE page.
   Détecté par scan automatique @1000px sur les 22 URLs du site. ===== */
@media (max-width:1024px){
  /* --- gouttière 20px (accueil, ensembles AVSR/OH/Poli, contact, audios) --- */
  .elementor-element-2d35588,   /* Accueil : « Prochains concerts » (était 10px) */
  .elementor-element-b7ae3e5,   /* Accueil : « Actualités »                       */
  .elementor-element-8882b69,   /* Accueil : « Direction artistique »             */
  .elementor-element-97d8726,   /* Accueil : « Discographie »                     */
  .elementor-element-df362b2,   /* AVSR     : « Prochains concerts »              */
  .elementor-element-b478604,   /* AVSR     : « L'AVSR en images »                */
  .elementor-element-67ecaea,   /* Open Harmony : « Prochains concerts »          */
  .elementor-element-06f1277,   /* Open Harmony : « Open Harmony en images »      */
  .elementor-element-9d16dde,   /* Policorali : « Prochains concerts »            */
  .elementor-element-f6da42b,   /* Policorali : « Policorali en images »          */
  .elementor-element-5662d75,   /* Contact  : « Nous contacter »                  */
  .elementor-element-1756048,   /* Contact  : formulaire entier (champs+bouton collés au bord) */
  .elementor-element-f4d6797,   /* Audios   : « AVSR — Musique sacrée »           */
  .elementor-element-6ab33ea,   /* Audios   : « Open Harmony — Extraits »         */
  .elementor-element-7108974,   /* Audios   : « Policorali — Musique sacrée »     */
  .elementor-element-56036cb,   /* Accueil  : intro « les directeurs artistiques… » */
  .elementor-element-25cb924 {  /* Direction artistique : intro « Deux directions… » */
    padding-left: 20px !important; padding-right: 20px !important;
  }
  /* --- gouttière 34px (Présentation : son contenu vit dans des conteneurs imbriqués padL 10+24) --- */
  .elementor-element-d4b9c33,   /* Présentation : titre « Trois ensembles »   */
  .elementor-element-97527da,   /* Présentation : titre « L'association »     */
  .elementor-element-a8d0638,   /* Présentation : bloc « Nous contacter »     */
  .elementor-element-49407fb,   /* Présentation : « Un pôle de compétence choral… » */
  .elementor-element-1aad202,   /* Présentation : « L'Académie Vocale… / Association… » */
  .elementor-element-96c7b18 {  /* Présentation : « Association à but non lucratif, l'AVSR… » */
    padding-left: 34px !important; padding-right: 34px !important;
  }
  /* --- textes d'intro des ensembles : à 10px (léger décalage vs le reste à 20px) → +10px pour aligner à 20 --- */
  .elementor-element-6a1fff0,   /* AVSR        : bio « L'Académie vocale de Suisse romande… » */
  .elementor-element-0efba91,   /* Open Harmony: bio « Open Harmony est constitué… »          */
  .elementor-element-578dec8 {  /* Policorali  : bio « Policorali est né de l'envie… »        */
    padding-left: 10px !important; padding-right: 10px !important;
  }
}

/* ===== ARTICLE ACTU façon Tassilo (Stéphane 09/07) — bloc 1 : label catégorie (remplace la date) + titre centré ===== */
/* Label catégorie centré, majuscules, gris, interlettrage (maquette Tassilo « OPENING NIGHT »). */
.avsr-post-cats{ text-align:center; text-transform:uppercase; letter-spacing:1.6px; font-size:13px; line-height:1.4; color:#8a8a8a; font-family:Roboto,sans-serif; margin:0 0 12px; }
.avsr-post-cats__item{ color:inherit; text-decoration:none; }
.avsr-post-cats__item:hover{ color:#1d2327; }
.avsr-post-cats__sep{ color:inherit; }
/* Titre d'article centré (maquette) — les actus sont les seuls post single. */
body.single-post .elementor-widget-theme-post-title .elementor-heading-title{ text-align:center !important; }

/* ===== Correctif (a) : titre du bandeau « ACTUALITÉS » des articles (desktop) — coupé à gauche.
   Les 3 titres sont réglés align=center dans Elementor mais le blanket `body:not(.page-id-7) …heading-title{text-align:left}`
   les forçait à gauche → collés/coupés (aggravé par le bandeau pleine largeur #18). On restaure le centrage voulu.
   (Bandeau masqué ≤1024, donc effet desktop uniquement.) Stéphane 09/07. ===== */
/* spécificité (0,4,1) pour battre le blanket (0,3,1) qui a text-align:left !important */
body:not(.page-id-7) .elementor-element-66ac25e.elementor-widget-heading .elementor-heading-title,   /* AVSR  (tpl 360) */
body:not(.page-id-7) .elementor-element-f393d82.elementor-widget-heading .elementor-heading-title,   /* OH    (tpl 363) */
body:not(.page-id-7) .elementor-element-a45b2ad.elementor-widget-heading .elementor-heading-title {  /* Poli  (tpl 366) */
  text-align: center !important;
}

/* ===== Pages ensembles : espace AU-DESSUS du titre « Actualités » = celui de « Prochains concerts »
   (Stéphane 10/07 « même espacement que prochains concerts »). Section Actualités = padding haut 40→30px
   (Prochains concerts est à 30). Bas inchangé (40). ===== */
.elementor-element-6e14933 > .e-con-inner,   /* AVSR (page 21) */
.elementor-element-3e204e9 > .e-con-inner,   /* Open Harmony (page 23) */
.elementor-element-74a8350 > .e-con-inner {  /* Policorali (page 25) */
  padding-top: 30px !important;
}

/* ===== Tâche #30 — Home : titre « Policorali en images » = même style que « Discographie »
   (Stéphane 10/07, annotation « idem discographie »). POURQUOI les correctifs précédents
   n'ont rien changé : la home (page 7) est EXCLUE de toutes mes règles génériques, qui
   commencent par `body:not(.page-id-7)`. On vise donc le titre par son ID, scopé page-id-7.
   On aligne le heading 392e086 (34px, centré) sur le heading Discographie 97d8726.
   Discographie a une RAMPE responsive (60/44/34/30 px, interlignes 70px/1.1/1.12) définie
   plus haut (lignes ~871-886, groupe 2d35588/8882b69/97d8726). On réplique EXACTEMENT cette
   rampe pour 392e086, en bloc auto-contenu (spécificité 0,4,1 + !important, ordre desktop→480
   pour que chaque palier batte le précédent). Le text-transform uppercase est déjà dans les
   réglages Elementor → « POLICORALI EN IMAGES ». Déployé par Léa dans la feuille partagée. ===== */
/* ⚠️ DEUX IDs : le heading « Policorali en images » n'a PAS le même id Elementor en local
   (`392e086`) et en prod (`3ef50fc`) — la home carrousel a été rebâtie sur prod par script,
   régénérant l'id. On cible les DEUX pour que ça marche des deux côtés (Discographie 97d8726
   partage le même id partout). Vérifié sur avsr.net (gate « ok ») : id prod = 3ef50fc. */
body.page-id-7 .elementor-element-392e086.elementor-widget-heading .elementor-heading-title,
body.page-id-7 .elementor-element-3ef50fc.elementor-widget-heading .elementor-heading-title {
  font-size: 60px !important;
  text-align: left !important;
  letter-spacing: 3px !important;
  line-height: 70px !important;
  color: #000 !important;
}
@media (max-width:1024px){
  body.page-id-7 .elementor-element-392e086.elementor-widget-heading .elementor-heading-title,
  body.page-id-7 .elementor-element-3ef50fc.elementor-widget-heading .elementor-heading-title { font-size:44px !important; line-height:1.1 !important; }
}
@media (max-width:767px){
  body.page-id-7 .elementor-element-392e086.elementor-widget-heading .elementor-heading-title,
  body.page-id-7 .elementor-element-3ef50fc.elementor-widget-heading .elementor-heading-title { font-size:34px !important; line-height:1.12 !important; }
  /* En mobile, le titre Discographie est en retrait de 35px (section 15 + padding widget 20)
     alors que Policorali n'est qu'à 10px. On aligne le titre (widget seul → le carrousel en
     dessous ne bouge pas) : +25px = même inset que Discographie. Desktop non concerné (déjà 63=63). */
  body.page-id-7 .elementor-element-392e086.elementor-widget-heading,
  body.page-id-7 .elementor-element-3ef50fc.elementor-widget-heading { padding-left: 25px !important; }
}
@media (max-width:480px){
  body.page-id-7 .elementor-element-392e086.elementor-widget-heading .elementor-heading-title,
  body.page-id-7 .elementor-element-3ef50fc.elementor-widget-heading .elementor-heading-title { font-size:30px !important; }
}

/* ===== (ex-tâche #31, RETIRÉE 11/07) Le filet « pastille CookieYes » a été supprimé : CookieYes
   (cookie-law-info) est DÉSACTIVÉ sur prod, remplacé par FreeCookie (vérifié front : 0 élément cky-,
   0 asset enfilé). La règle prévoyait elle-même ce retrait. Historique complet au ledger #31. ===== */

/* ===== Tâche #32 — ARTICLES DÉVELOPPÉS (single actu) : refonte en-tête. Stéphane 10/07.
   VALEURS DE DÉPART (v1), à affiner après validation visuelle (Léa sans navigateur) :
   1) bannière rose « ACTUALITÉS » retirée en single (1f85daa AVSR / fe846d1 OH / ca69f9d Poli) ;
   2) surtitre + titre + texte alignés à GAUCHE, bord = 15px à droite du logo
      (logo absolu left:24px width:50px → bord droit 74 + 15 = 89px) ;
   3) surtitre espacé du logo ; 4) article sans image → contenu descendu. ===== */
.elementor-location-single .elementor-element-1f85daa,
.elementor-location-single .elementor-element-fe846d1,
.elementor-location-single .elementor-element-ca69f9d { display: none !important; }

body.single-post .avsr-article-card .avsr-post-cats,
body.single-post .avsr-article-card .elementor-widget-theme-post-title .elementor-heading-title,
body.single-post .avsr-article-card .elementor-widget-theme-post-content { text-align: left !important; }

body.single-post .avsr-article-card .elementor-widget-theme-post-title,
body.single-post .avsr-article-card .elementor-widget-theme-post-content,
body.single-post .avsr-article-card .elementor-widget-shortcode:not(.avsr-article-media) {
  padding-left: 89px !important;
  padding-right: 24px !important;
}

/* surtitre « Répétition » CENTRÉ verticalement sur le logo — VALIDÉ AU NAVIGATEUR par B/Léonard
   (10/07, demande Stéphane « aligne Répétition au centre du logo »). ⚠️ @Léa : ta règle précédente
   `…shortcode:not(.avsr-article-media):first-of-type{margin-top:10px}` était INERTE — le média
   `.avsr-article-media` EST le 1er `.elementor-widget-shortcode`, donc `:first-of-type` ne matchait
   pas le surtitre (margin-top réel = 0). Mesuré : logo center 248 = surtitre center 248 à
   margin-top:20px (l'estimation « ~15px » de Stéphane laissait le surtitre 5px trop haut).
   SCOPÉ AUX ARTICLES SANS IMAGE (`:has(.avsr-am:empty)`, comme ta règle 96px) : avec image, le
   logo est superposé À l'image et le surtitre est SOUS l'image (loin du logo) → pas de centrage
   là-bas, on n'y touche pas. */
body.single-post .avsr-article-card:has(.avsr-am:empty) .avsr-post-cats { margin-top: 20px !important; }

/* Article SANS image → descendre le contenu (renforce le handling :has(.avsr-am:empty) existant) */
body.single-post .avsr-article-card:has(.avsr-am:empty) { margin-top: 96px !important; }

/* ===== Concerts (détail) — resserrer l'espacement entre les entrées de la colonne infos.
   Entrées = .avsr-cmeta (date/lieu/tarif/avec/direction/lien/dossier) dans le conteneur Elementor
   00c84db, dont le flex-gap valait 40px → trop d'air. Stéphane 10/07 « resserrer comme avant, partout ».
   @Léonard (tu as le navigateur) : 16px = valeur de départ, ajuste au besoin pour retrouver « comme avant ». ===== */
.elementor-element-00c84db { gap: 16px !important; }
/* @Léonard (navigateur, 10/07) : le flex-gap SEUL ne resserrait rien — chaque entrée a un
   `margin-top:50px` (réglage Elementor par widget) qui S'AJOUTE au gap → écart réel 66px, pas 16.
   On neutralise ce margin pour que le gap:16px gouverne enfin. Vérifié sur
   /concert/les-jeux-de-la-passion/ : rythme régulier 16px, colonne resserrée. 16px validé (rend bien). */
.elementor-element-00c84db > .elementor-element { margin-top: 0 !important; }

/* ===== Contact — nom d'ensemble (titre du bloc AVSR / Open Harmony / Policorali) → SECONDAIRE (gris atténué).
   Stéphane 10/07 « change le titre en secondaire ». Ciblé par RELATION avec .avsr-contact-direct
   (classe stable) et non par ID Elementor (régénérés en prod, cf. règle Stéphane « je travaille en prod »).
   Ne touche PAS aux titres « CONTACT » (h1) ni « Nous contacter » (h2) : eux n'ont pas de .avsr-contact-direct voisin.
   @Léonard : #8a8a8a + poids 400 = départ, ajuste au navigateur si besoin. ===== */
/* @Léonard : ta règle `.elementor-widget-heading:has(~ .avsr-contact-direct)` était INERTE — le nom
   d'ensemble n'est PAS frère précédent du .avsr-contact-direct (ils sont dans le même conteneur mais
   pas frères directs). Corrigé : le heading est DANS le conteneur du bloc qui a .avsr-contact-direct
   en enfant DIRECT (`> `). Chaque bloc n'a qu'1 heading (le nom) → cible pile les 3 noms, sans toucher
   « CONTACT » (h1) ni « Nous contacter » (h2). Vérifié au navigateur : AVSR/Open Harmony/Policorali = gris. */
.elementor-element:has(> .avsr-contact-direct) .elementor-heading-title {
  color: #8a8a8a !important;
  font-weight: 400 !important;
}

/* ===== Article MOBILE : titre + texte PLEINE LARGEUR sous le logo (Stéphane 10/07, capture responsive).
   En desktop, titre/texte sont indentés de 89px pour s'aligner à droite du logo. En mobile Stéphane
   veut qu'ils prennent toute la place SOUS le logo → on ramène leur padding-left à 14px (= aligné sur le
   BORD GAUCHE du logo). Le surtitre reste à côté du logo (89px, inchangé). Validé au navigateur @430px :
   titre/texte left=39 = logo left=39 ; surtitre left=114. B/Léonard. ===== */
@media (max-width:1024px){
  /* Stéphane 10/07 (2e passe, capture flèches) : titre + texte au BORD GAUCHE du contenu (pas juste
     alignés sur le logo). padding-left:0 → titre/texte au bord de carte (~25px, marge du site) ;
     surtitre reste à côté du logo. Élargi à ≤1024 pour couvrir aussi les tablettes. */
  body.single-post .avsr-article-card .elementor-widget-theme-post-title,
  body.single-post .avsr-article-card .elementor-widget-theme-post-content {
    padding-left: 0 !important;
  }
}

/* ===== Tâche #33 — Home « Prochains concerts » (carrousel .avsr-cc, mobile/tablette) :
   CADRE 100% + MÉDIA 90% (Stéphane 10/07 « média 66% dehors et à 90% de largeur, cadre largeur
   100%, prends exemple sur les actus »). Le décroché 66% existe DÉJÀ (l.1739 desktop 264/400 ;
   l.2070 mobile 172/260 = 66%) — vérifié identique sur la vraie prod. Manquaient :
   - CADRE : `.avsr-cc{padding:0 18px 40px}` (l.192, ≤700, snippet #12) → carte 364/400 = 91%.
     On retire les retraits latéraux (padding-bottom conservé pour les points du carrousel) → 100%.
   - MÉDIA : `.avsr-nc__figwrap{padding:0 18px}` (fixe) → 5% de chaque côté = média 90% du cadre
     à toute largeur. Flèches (.avsr-cc__nav right:18px) : inchangées, restent dans le cadre.
   Composant home-only (.avsr-cc n'existe sur aucune autre page — vérifié prod). Desktop >1024
   inchangé. B/Léonard, validé au navigateur 430+768. ===== */
@media (max-width:1024px){
  .avsr-cc { padding-left: 0 !important; padding-right: 0 !important; }
  .avsr-nc__figwrap { padding: 0 5% !important; }
}

/* ===== Concert (détail) : une entrée méta VIDE n'affiche RIEN — ni label, ni cadre, ni filet.
   Stéphane 10/07 (capture opening-night prod : encart vide dans la colonne infos) : « si acf
   vide n'affiche rien ». Une .avsr-cmeta au champ ACF vide rendait quand même son
   border-bottom (+ label ::before éventuel) → boîte vide.
   Couvre les deux formes de vide du text-editor Elementor :
   1) widget sans AUCUN élément rendu (tag dynamique ACF → chaîne vide) ;
   2) widget avec un unique <p> vide.
   ⚠️ L'entrée vide n'existe que sur la PROD (en local opening-night = 7/7 rempli) — @Léonard :
   contrôle sur la vraie prod (gate « ok ») ; si le vide est en fait un <p>&nbsp;</p> (indétectable
   en CSS), dis-le-moi et on bascule sur un filtre PHP. ===== */
.avsr-cmeta:not(:has(*)),
.avsr-cmeta:has(> p:only-child:empty) {
  display: none !important;
}

/* ===== Concert (détail) : « l'encart vide » élucidé (enquête Léonard sur les 8 concerts prod).
   Ce n'était PAS une .avsr-cmeta vide : le shortcode [concert_bloc] (widget 3e5ae9a, dates
   supplémentaires) imprime un FILET (div border-top, margin 22px 0) AVANT chaque champ — y
   compris avant le tout premier, alors que l'entrée .avsr-cmeta au-dessus (tarif) a déjà son
   border-bottom → deux lignes + marges = boîte vide encadrée (capture Stéphane, opening-night).
   Fix : masquer le 1er filet du bloc (redondant) ; les filets INTERNES entre date/lieu/tarifs
   restent. Ciblé par la colonne méta (00c84db) + l'id du widget (3e5ae9a, identique local/prod,
   vérifié) — double filet de sécurité. La règle .avsr-cmeta vide ci-dessus reste en ceinture-
   bretelles pour de futurs champs vides. ===== */
.elementor-element-00c84db .elementor-shortcode > div[style*="border-top"]:first-child,
.elementor-element-3e5ae9a .elementor-shortcode > div[style*="border-top"]:first-child {
  display: none !important;
}
