/* ==========================================================================
   Aéroport Rodez Aveyron — retouches v2 (navigation, lisibilité, correctifs)
   Chargé après style-2026-10-21.min.css. Garde l'identité : couleurs et Geist.
   ========================================================================== */
:root {
  --v2-navy: #030d30;
  --v2-peche: #b3cde0; /* 10/11 : le Deep Peach (#e9b3a6) n’est pas validé par la cliente ; la variable pointe sur le bleu clair de la charte */
  --v2-blue: #0064a7;
  --v2-brume: #cfe0ec; /* 12/11 : bleu brume de la charte (jeton nommé pour le design system) */
  --v2-grey: #f5f5f5;
  --v2-line: #e4e5e7;
  --v2-muted: #5b6275;
}

/* --- 1. Menu : panneau opaque et lisible ---------------------------------- */
.c-nav-container {
  background: rgba(255, 255, 255, .97) !important;
  box-shadow: 0 10px 30px rgba(3, 13, 48, .10);
}

/* Les sous-rubriques (Nos destinations, Compagnies) sont toujours dépliées :
   les villes sont visibles dès l'ouverture de la rubrique. */
.c-nav-submenu-item--branch > [toggle-content] { grid-template-rows: 1fr !important; }
.c-nav-submenu-item--branch > [toggle-content] > div { opacity: 1 !important; }
.c-nav-submenu-item--branch > .c-nav-submenu-trigger {
  pointer-events: none;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--v2-blue);
}
.c-nav-submenu-item--branch > .c-nav-submenu-trigger svg { display: none; }
.c-nav-submenu-item--branch > .c-nav-submenu-trigger a { pointer-events: auto; color: inherit; }
.c-nav-submenu-item--branch > a.c-nav-submenu-trigger { pointer-events: auto; display: block; text-decoration: none; }
.c-nav-submenu-item--branch > p.c-nav-submenu-trigger { margin: 0; }
.c-nav-submenu-list--nested { padding-left: 0 !important; margin-top: 14px !important; }
.c-nav-submenu-list--nested > .c-nav-submenu-title { display: none; }
.c-nav-submenu-item--branch .c-nav-submenu-item { opacity: 1 !important; transform: none !important; }

.c-nav-submenu-item a { transition: color .2s ease; }
.c-nav-submenu-item a:hover,
.c-nav-submenu-item a:focus-visible { color: var(--v2-blue); }
.c-nav-submenu-item a:focus-visible,
.c-nav-primary-trigger:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 3px; border-radius: 4px; }

@media (min-width: 1221px) {
  /* Rubrique « Vols et destinations » : destinations et compagnies côte à côte */
  .c-nav-panels .c-nav-submenu > .c-nav-submenu-list:has(> .c-nav-submenu-item--branch) {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
    gap: 24px 64px;
    align-items: start;
  }
  .c-nav-panels .c-nav-submenu-item--level-2 > a,
  .c-nav-panels .c-nav-submenu-item--level-3 > a { font-size: 20px; font-weight: 500; }
  .c-nav-panels .c-nav-submenu-list--nested { gap: 14px 40px !important; }
  .c-nav-primary-trigger { font-size: 15px; font-weight: 500; }
}

/* Raccourcis permanents : Vols du jour, Parking, Contact */
.v2-raccourcis { display: flex; gap: 8px; align-items: center; margin-right: 12px; }
.v2-raccourcis a {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 14px; border-radius: 999px;
  font-size: 14px; font-weight: 500; line-height: 1; white-space: nowrap;
  color: var(--v2-navy); background: var(--v2-grey);
  transition: background .2s ease, color .2s ease;
}
.v2-raccourcis a:hover, .v2-raccourcis a:focus-visible { background: var(--v2-blue); color: #fff; }
.v2-raccourcis a.v2-raccourci--vols { background: var(--v2-navy); color: #fff; }
.v2-raccourcis a.v2-raccourci--vols:hover { background: var(--v2-blue); }
.c-nav:not(.active) .v2-raccourcis--mobile { display: none; }
@media (max-width: 1220px) {
  .v2-raccourcis--mobile { flex-wrap: wrap; margin: 0 0 20px; }
  .v2-raccourcis--mobile a { font-size: 15px; padding: 10px 16px; }
}

/* --- 2. Carte des destinations : l'encart ne s'ouvre plus vide ------------ */
/* L'image a une taille connue avant son chargement : Leaflet mesure l'encart juste. */
.map-popup { width: 200px; }
.map-popup img {
  display: block; width: 100%; height: auto;
  aspect-ratio: 3 / 2; object-fit: cover;
  border-radius: 8px; background: var(--v2-grey);
}
.map-popup > div { margin-top: 10px; }
.leaflet-popup-content { margin: 12px !important; }

/* --- 3. Lisibilité générale ----------------------------------------------- */
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
.content-text p, .simple-text p, .text-double p, .faq-item-text p, .tableau-desc p { line-height: 1.6; }
.content-text, .simple-text, .text-double { color: var(--v2-navy); }


/* Tableaux de tarifs : lignes plus aérées */
.c-table td, .c-table th { padding-top: 14px; padding-bottom: 14px; }
.c-table tr:nth-child(even) td { background: rgba(3, 13, 48, .03); }

/* Liste STAP / PCL : puces bleues (aussi quand la classe n'est pas posée) */
.content-text ol li::marker,
.content-text ul li::marker { color: var(--v2-blue); }

/* Blocs contact : deux contacts sur la même ligne dès la tablette */
@media (min-width: 760px) {
  .contact-blocks-items { flex-wrap: wrap; }
  .contact-blocks-item { flex: 1 1 calc(50% - 16px); }
}
.contact-blocks-item { border-radius: 16px; }

/* Boutons : zone de clic confortable */
.u-button, [class^="u-button--"] { min-height: 44px; }

/* --- 4. Composant « vignettes » (infos pratiques Parking, Tous les services) -- */
.v2-vignettes .faq-items {
  display: grid; gap: 16px;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}
.v2-vignettes .faq-item {
  background: #fff; border: 0 !important; border-radius: 16px;
  box-shadow: 0 1px 2px rgba(3, 13, 48, .06), 0 8px 24px rgba(3, 13, 48, .05);
  padding: 24px; opacity: 1 !important; transform: none !important;
}
.v2-vignettes .faq-item-title {
  display: flex; flex-direction: column; align-items: flex-start; gap: 14px;
  cursor: default; padding: 0 !important; font-size: 18px;
}
.v2-vignettes .faq-item-title > svg { display: none; }
.v2-vignettes .faq-item-text { grid-template-rows: 1fr !important; }
.v2-vignettes .faq-item-text > div { opacity: 1 !important; padding-top: 10px; }
.v2-picto {
  display: inline-flex; align-items: center; justify-content: center;
  width: 48px; height: 48px; border-radius: 12px;
  background: rgba(0, 100, 167, .08); color: var(--v2-blue);
}
.v2-picto svg { width: 26px; height: 26px; }

/* --- 5. Partenaires (Rodez & l'Aveyron) : les blocs contact sur la même ligne -- */
@media (min-width: 760px) {
  .tourism-partners-category:only-child { grid-column: 2 / span 10 !important; padding: 0 !important; }
  .tourism-partners-category {
    display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px !important;
  }
  .tourism-partners-category-title { grid-column: 1 / -1; }
  .tourism-partners-item { background: #fff !important; border-radius: 16px; padding: 28px; height: 100%; box-shadow: 0 1px 2px rgba(3, 13, 48, .06), 0 8px 24px rgba(3, 13, 48, .05); }
}

/* --- 6. Fiche contact des compagnies : carte lisible --------------------- */
.compagnie-contacts .grid > * { min-width: 0; }
.compagnie-contacts [class*="item"] { border-radius: 16px; }

/* --- 7. Rythme vertical : moins de vides entre les blocs ------------------ */
@media (min-width: 1000px) {
  #main-content > section + section:not([data-contact-layout=photo-overlap]) { margin-top: 0; }
  #main-content > section:not([data-contact-layout=photo-overlap]) { padding-top: clamp(40px, 4.5vw, 72px); padding-bottom: clamp(40px, 4.5vw, 72px); }
  #main-content > section.content:has(+ .contact-blocks[data-contact-layout=photo-overlap]) { padding-bottom: 0; }
}

/* --- 8. Blocs « deux colonnes » (PHMR, Accès…) : deux cartes distinctes --- */
.text-double .grid { row-gap: 0 !important; }
.text-double .text-double-title,
.text-double .text-double-title-2,
.text-double .text-double-text,
.text-double .text-double-text-2 { background: #fff; padding-left: 32px; padding-right: 32px; }
.text-double .text-double-title,
.text-double .text-double-title-2 { border-radius: 16px 16px 0 0; padding-top: 32px; padding-bottom: 16px; margin: 0; }
.text-double .text-double-text,
.text-double .text-double-text-2 { border-radius: 0 0 16px 16px; padding-bottom: 32px; }
@media (max-width: 999px) {
  .text-double .text-double-text { margin-bottom: 24px; }
  .text-double .text-double-title,
  .text-double .text-double-title-2,
  .text-double .text-double-text,
  .text-double .text-double-text-2 { padding-left: 24px; padding-right: 24px; }
}

/* ==========================================================================
   9. Ergonomie « grand aéroport »
   ========================================================================== */

/* Accès rapides (accueil) : six tuiles à picto juste sous la recherche de vol */
.v2-acces { padding: 24px 20px 8px; }
.v2-acces ul {
  list-style: none; margin: 0 auto; padding: 0; max-width: 1240px;
  display: grid; gap: 12px; grid-template-columns: repeat(2, minmax(0, 1fr));
}
.v2-acces a {
  display: flex; align-items: center; gap: 14px; height: 100%;
  padding: 16px; border-radius: 16px; background: #fff; color: var(--v2-navy);
  box-shadow: 0 1px 2px rgba(3, 13, 48, .06), 0 8px 24px rgba(3, 13, 48, .05);
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}
.v2-acces a:hover, .v2-acces a:focus-visible {
  transform: translateY(-2px);
  box-shadow: 0 2px 4px rgba(3, 13, 48, .08), 0 14px 32px rgba(3, 13, 48, .10);
}
.v2-acces a:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 3px; }
.v2-acces .v2-picto { flex: none; }
.v2-acces li:first-child a { background: var(--v2-navy); color: #fff; }
.v2-acces li:first-child .v2-picto { background: rgba(255, 255, 255, .12); color: #fff; }
.v2-acces-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.v2-acces-txt strong { font-size: 17px; font-weight: 600; line-height: 1.2; }
.v2-acces-txt small { font-size: 14px; line-height: 1.3; opacity: .7; }
@media (min-width: 760px) { .v2-acces ul { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1221px) {
  .v2-acces { padding: 32px 32px 16px; }
  .v2-acces ul { grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 16px; }
  .v2-acces a { flex-direction: column; align-items: flex-start; padding: 22px; gap: 18px; }
}

/* Vols du jour : remontés en tête, emblème réduit, tableau façon panneau d'affichage */
.v2-acces + section.flights { padding-top: 32px !important; }
.v2-acces + section.flights .flights-icon { display: none; }
.flights-array table { font-variant-numeric: tabular-nums; }
.flights-array tbody td { padding-top: 16px; padding-bottom: 16px; vertical-align: middle; }
.flights-array tbody td:nth-child(2) { font-weight: 600; font-size: 1.1em; }
.flights-array tbody td:nth-child(3) { font-weight: 600; letter-spacing: .02em; }
.flights-array tbody tr { transition: background .15s ease; }
.flights-array tbody tr:hover td { background: rgba(0, 100, 167, .05); }
.v2-statut {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 5px 12px; border-radius: 999px; font-size: 13px; font-weight: 600; white-space: nowrap;
  background: #cfe0ec; color: var(--v2-navy);
}
.v2-statut::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.v2-statut[data-etat="termine"] { background: #eef0f3; color: var(--v2-muted); }
.v2-statut[data-etat="embarquement"] { background: rgba(0, 100, 167, .10); color: var(--v2-blue); }
.v2-statut[data-etat="retard"] { background: var(--v2-blue); color: #fff; }
.v2-statut[data-etat="annule"] { background: var(--v2-navy); color: #fff; }

/* Pages intérieures : en-tête moins haut, le contenu arrive plus vite */
@media (min-width: 1000px) {
  .v2-interieure .c-header,
  .v2-interieure .c-header .grid { height: 72vh !important; max-height: 72dvh !important; }
  .v2-interieure .c-header .grid { padding-bottom: 72px !important; }
  .v2-interieure .c-header-title { margin-bottom: 0 !important; }
  .v2-interieure .c-header-background { bottom: 20px !important; height: auto !important; }
  .v2-interieure .c-header-title { font-size: clamp(56px, 6vw, 88px); }
}

/* Fil d'Ariane */
.v2-fil { position: relative; z-index: 2; padding: 20px 20px 0; }
.v2-fil ol {
  list-style: none; margin: 0 auto; padding: 0; max-width: 1240px;
  display: flex; flex-wrap: wrap; gap: 6px 10px; font-size: 14px; color: var(--v2-muted);
}
.v2-fil li { display: inline-flex; align-items: center; gap: 10px; }
.v2-fil li + li::before { content: "›"; color: #a3a8b5; }
.v2-fil a { color: var(--v2-blue); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: rgba(0, 100, 167, .3); }
.v2-fil a:hover { text-decoration-color: currentColor; }
.v2-fil [aria-current] { color: var(--v2-navy); font-weight: 500; }
@media (min-width: 1221px) { .v2-fil { padding: 28px 32px 0; } }
.v2-fil + section { padding-top: clamp(32px, 4vw, 64px) !important; }

/* Bouton « haut de page » */
.v2-haut {
  position: fixed; right: 20px; bottom: 20px; z-index: 50;
  width: 48px; height: 48px; border: 0; border-radius: 50%; cursor: pointer;
  display: grid; place-items: center; background: var(--v2-navy); color: #fff;
  box-shadow: 0 8px 24px rgba(3, 13, 48, .25);
  opacity: 0; transform: translateY(12px); pointer-events: none;
  transition: opacity .25s ease, transform .25s ease, background .2s ease;
}
.v2-haut.visible { opacity: 1; transform: none; pointer-events: auto; }
.v2-haut:hover, .v2-haut:focus-visible { background: var(--v2-blue); }
.v2-haut svg { width: 22px; height: 22px; }

/* Liens dans les textes : repérables sans dépendre de la couleur seule */
.content-text a:not([class]), .simple-text a:not([class]), .text-double a:not([class]), .faq-item-text a:not([class]) {
  color: var(--v2-blue); text-decoration: underline; text-underline-offset: 3px;
}

/* Respect du réglage « réduire les animations » */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; scroll-behavior: auto !important; }
}

/* Parking : la carte de visite chevauche la photo (demande cliente), sans masquer le texte voisin */
@media (min-width: 1000px) {
  .contact-blocks[data-contact-layout=photo-overlap] .contact-blocks-items { grid-column: 3 / span 4 !important; }
}
.contact-blocks-item-description { color: var(--v2-muted) !important; }
@media (max-width: 759px) {
  .v2-acces { padding: 20px 16px 4px; }
  .v2-acces ul { gap: 10px; }
  .v2-acces a { flex-direction: column; align-items: flex-start; gap: 10px; padding: 14px; }
  .v2-acces .v2-picto { width: 40px; height: 40px; border-radius: 10px; }
  .v2-acces .v2-picto svg { width: 22px; height: 22px; }
  .v2-acces-txt strong { font-size: 16px; }
  .v2-acces-txt small { font-size: 13px; }
  .v2-haut { right: 16px; bottom: 16px; width: 44px; height: 44px; }
}

/* ==========================================================================
   10. Finitions « haut de gamme »
   ========================================================================== */

/* Logos partenaires : monochromes et alignés, couleur au survol */
.partners { padding-top: 48px !important; padding-bottom: 48px !important; }
.partners-logos { align-items: center; gap: 40px 56px !important; }
.partner-logo img {
  filter: grayscale(1); opacity: .65; max-height: 44px; width: auto;
  transition: filter .25s ease, opacity .25s ease;
}
.partner-logo:hover img, .partner-logo a:focus-visible img { filter: none; opacity: 1; }
/* Emblème : taille d'origine (pleine colonne), centré sur les logos */
.partners-icon { align-self: center; }

/* Carte Leaflet : commandes de zoom arrondies, cohérentes avec le site */
.leaflet-touch .leaflet-bar { border: 0 !important; border-radius: 12px !important; overflow: hidden; box-shadow: 0 4px 14px rgba(3, 13, 48, .14) !important; }
.leaflet-touch .leaflet-bar a {
  width: 38px !important; height: 38px !important; line-height: 38px !important;
  color: var(--v2-navy) !important; font-weight: 400; border-bottom-color: var(--v2-line) !important;
}
.leaflet-touch .leaflet-bar a:hover { background: var(--v2-grey) !important; color: var(--v2-blue) !important; }
.leaflet-control-attribution { font-size: 10px !important; background: rgba(255, 255, 255, .7) !important; border-radius: 6px 0 0 0; }

/* Tableau des vols : en-tête plus sobre, onglets Départs / Arrivées plus nets */
.flights-array thead th { font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; padding-top: 14px; padding-bottom: 14px; }

/* Bandeau cookies : deux choix de même poids (Accepter / Refuser) */
.c-cookies-content-buttons { display: flex; gap: 8px; flex-wrap: wrap; }
.v2-refuser {
  min-height: 40px; padding: 0 18px; border-radius: 999px; cursor: pointer;
  background: transparent; color: var(--v2-navy); border: 1.5px solid var(--v2-navy);
  font: inherit; font-weight: 600;
}
.v2-refuser:hover { background: var(--v2-navy); color: #fff; }

/* Images : coins et transitions cohérents, pas de saut au chargement */
.content-img img, .slider-image img, .catchy img { border-radius: 20px; }
img { image-rendering: auto; }

/* Pied de page : liens plus lisibles, survol net */
.p-footer-nav-item-links a, .p-footer-nav-subgroup a { opacity: .82; transition: opacity .2s ease; }
.p-footer-nav-item-links a:hover, .p-footer-nav-subgroup a:hover { opacity: 1; text-decoration: underline; text-underline-offset: 3px; }
.p-footer-nav-item-title { letter-spacing: .02em; }

/* Sélection de texte aux couleurs de la marque */
::selection { background: rgba(0, 100, 167, .18); color: var(--v2-navy); }

/* ==========================================================================
   11. Menu latéral d'accès rapides (ordinateur) — remplace les tuiles sous l'en-tête
   ========================================================================== */
.v2-rail { display: none; }
@media (min-width: 1221px) {
  .v2-acces { display: none; }
  .v2-acces + section.flights { padding-top: 24px !important; }
  /* Le contenu laisse la place au menu latéral (sinon la dernière colonne passe dessous) */
  #main-content .grid, .p-footer .grid { padding-right: 104px; }
  .v2-rail {
    display: block; position: fixed; right: 20px; top: 50%; transform: translateY(-50%); z-index: 60;
  }
  .v2-rail ul {
    list-style: none; margin: 0; padding: 8px; display: flex; flex-direction: column; gap: 4px;
    background: rgba(255, 255, 255, .97); border-radius: 20px;
    box-shadow: 0 1px 2px rgba(3, 13, 48, .08), 0 12px 32px rgba(3, 13, 48, .14);
  }
  .v2-rail a {
    position: relative; display: grid; place-items: center; width: 48px; height: 48px; border-radius: 14px;
    color: var(--v2-navy); transition: background .2s ease, color .2s ease;
  }
  .v2-rail li:first-child a { background: var(--v2-navy); color: #fff; }
  .v2-rail a:hover, .v2-rail a:focus-visible { background: rgba(0, 100, 167, .10); color: var(--v2-blue); }
  .v2-rail li:first-child a:hover, .v2-rail li:first-child a:focus-visible { background: var(--v2-blue); color: #fff; }
  .v2-rail a[aria-current="page"] { background: rgba(0, 100, 167, .12); color: var(--v2-blue); }
  .v2-rail a[aria-current="page"]::after {
    content: ""; position: absolute; right: -8px; top: 12px; bottom: 12px; width: 3px; border-radius: 3px; background: var(--v2-blue);
  }
  .v2-rail a:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 2px; }
  .v2-rail-picto svg { width: 24px; height: 24px; display: block; }
  /* Libellé en bulle à gauche, au survol ou au clavier */
  .v2-rail-txt {
    position: absolute; right: calc(100% + 14px); top: 50%; transform: translate(6px, -50%);
    display: flex; flex-direction: column; gap: 2px; white-space: nowrap;
    padding: 10px 14px; border-radius: 12px; background: var(--v2-navy); color: #fff;
    box-shadow: 0 8px 24px rgba(3, 13, 48, .25);
    opacity: 0; pointer-events: none; transition: opacity .18s ease, transform .18s ease;
  }
  .v2-rail-txt strong { font-size: 15px; font-weight: 600; line-height: 1.2; }
  .v2-rail-txt small { font-size: 13px; opacity: .75; }
  .v2-rail a:hover .v2-rail-txt, .v2-rail a:focus-visible .v2-rail-txt { opacity: 1; transform: translate(0, -50%); }
  /* Le bouton « haut de page » se cale sous le rail */
  .v2-haut { right: 32px; }
}

/* ==========================================================================
   12. Accueil ambitieux : tableau de bord « en direct » dans l'en-tête
   ========================================================================== */
/* (carte remplacée le 10/11 par la bande « en direct » de la recherche : section 25) */

/* ==========================================================================
   13. Destinations : cartes éditoriales (grand nom de ville, vol direct, zoom)
   ========================================================================== */
.slider-destinations-carousel-slide { position: relative; overflow: hidden; isolation: isolate; }
.slider-destinations-carousel-slide img { transition: transform .7s cubic-bezier(.2, .7, .2, 1); }
.slider-destinations-carousel-slide:hover img,
.slider-destinations-carousel-slide:focus-visible img { transform: scale(1.06); }
.slider-destinations-carousel-slide::after {
  content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; border-radius: inherit;
  background: linear-gradient(to top, rgba(3, 13, 48, .82) 0%, rgba(3, 13, 48, .35) 32%, rgba(3, 13, 48, 0) 58%);
}
.slider-destinations-carousel-slide-buttons { z-index: 2; flex-wrap: wrap; align-items: center; row-gap: 10px; }
/* Nom de la ville : grand, blanc, sur sa propre ligne */
.slider-destinations-carousel-slide-buttons-item:first-child {
  flex: 1 0 100%; justify-content: flex-start; padding: 0 !important; height: auto !important;
  background: none !important; box-shadow: none !important; color: #fff !important; border: 0 !important;
  -webkit-backdrop-filter: none !important; backdrop-filter: none !important; /* 10/11 : aucun effet verre sous le nom de la ville */
  font-size: clamp(24px, 2.2vw, 32px); font-weight: 600; letter-spacing: -.02em; line-height: 1.1;
}
.slider-destinations-carousel-slide-buttons-item:first-child svg { display: none; }
.slider-destinations-carousel-slide-buttons-item:first-child::before, .slider-destinations-carousel-slide-buttons-item:first-child::after { content: none !important; display: none !important; }
.slider-destinations-carousel-slide-buttons-item:last-child { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
/* Durée : « Vol direct · 01:15 » en texte simple sous le nom de la ville (pas d'effet verre) */
.slider-destinations-carousel-slide-buttons-item:nth-child(2) {
  background: none !important; color: rgba(255, 255, 255, .88) !important; border: 0 !important; box-shadow: none !important;
  -webkit-backdrop-filter: none !important; backdrop-filter: none !important; padding: 0 !important; height: auto !important;
  font-size: 15px; font-weight: 500;
}
.slider-destinations-carousel-slide-buttons-item:nth-child(2) svg { display: none; }
.slider-destinations-carousel-slide-buttons-item:nth-child(2)::before { content: none; display: inline !important; position: static !important; width: auto !important; height: auto !important; background: none !important; white-space: pre; opacity: .85; }
/* 12/11 (RGAA 10.2) : « Vol direct » est maintenant écrit dans la page (views/components/slider-destinations.php) */
/* Flèche : pastille blanche, bleue au survol */
.slider-destinations-carousel-slide-buttons-item:last-child { margin-left: auto; background: #fff !important; color: var(--v2-navy) !important; transition: background .2s ease, color .2s ease; }
.slider-destinations-carousel-slide:hover .slider-destinations-carousel-slide-buttons-item:last-child { background: var(--v2-blue) !important; color: #fff !important; }

/* ==========================================================================
   14. FAQ : affichages choisis dans le back-office (Accordéon / Vignettes / Étapes)
   ========================================================================== */
.faq-picto { display: inline-flex; align-items: center; justify-content: center; flex: none; }
.faq-picto svg { width: 26px; height: 26px; }
.faq-picto svg path, .faq-picto svg circle, .faq-picto svg rect { fill: currentColor !important; }

/* Vignettes : cartes à picto, tout le texte visible */
.faq-vignettes {
  grid-column: span 12; list-style: none; margin: 0; padding: 0;
  display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
}
.faq-vignettes[data-count="4"] { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
@media (min-width: 760px) { .faq-vignettes { grid-column: 2 / span 10; } .faq-vignettes[data-count="2"], .faq-vignettes[data-count="4"] { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .faq-vignettes[data-count="3"], .faq-vignettes[data-count="5"], .faq-vignettes[data-count="6"] { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1220px) { .faq-vignettes { grid-column: 5 / span 8; } }
.faq-vignette {
  background: #fff; border-radius: 20px; padding: 24px; display: flex; flex-direction: column; gap: 10px;
  border: 1px solid var(--v2-line); transition: transform .35s cubic-bezier(.16, 1, .3, 1), box-shadow .35s ease, border-color .35s ease;
}
.faq-vignette:hover { transform: translateY(-4px); box-shadow: 0 18px 40px -18px rgba(3, 13, 48, .25); border-color: transparent; }
.faq-vignette .faq-picto {
  width: 52px; height: 52px; border-radius: 16px; background: rgba(0, 100, 167, .08); color: var(--v2-blue);
  transition: background .35s ease, color .35s ease, transform .5s cubic-bezier(.34, 1.56, .64, 1);
}
.faq-vignette:hover .faq-picto { background: var(--v2-blue); color: #fff; transform: rotate(-6deg) scale(1.06); }
.faq-vignette-title { margin: 6px 0 0; font-size: 19px; font-weight: 600; line-height: 1.25; color: var(--v2-navy); }
.faq-vignette-text { color: var(--v2-muted); font-size: 15px; line-height: 1.55; }
.faq-vignette-text p { margin: 0 0 .5em; }
.faq-vignette-text p:last-child { margin-bottom: 0; }
.faq-vignette .u-button { margin-top: auto; align-self: flex-start; }

/* Étapes : parcours voyageur en onglets numérotés, un avion avance sur le rail */
.faq-etapes { grid-column: span 12; display: grid; gap: 20px; }
@media (min-width: 760px) { .faq-etapes { grid-column: 2 / span 10; } }
@media (min-width: 1220px) { .faq-etapes { grid-column: 5 / span 8; } }
.faq-etapes-nav { position: relative; display: grid; grid-template-columns: repeat(var(--etapes), minmax(0, 1fr)); gap: 8px; }
.faq-etapes-rail { position: absolute; left: calc(50% / var(--etapes)); right: calc(50% / var(--etapes)); top: 31px; height: 2px; background: var(--v2-line); pointer-events: none; }
.faq-etapes-rail::before { content: ""; position: absolute; inset: 0; background: var(--v2-blue); transform-origin: left; transform: scaleX(var(--avance, 0)); transition: transform .6s cubic-bezier(.16, 1, .3, 1); }
.faq-etapes-avion {
  position: absolute; top: -11px; width: 24px; height: 24px; margin-left: -12px;
  left: min(100%, calc(var(--avance, 0) * 100% + 50% / (var(--etapes) - 1))); /* en vol vers l'étape suivante */
  transition: left .6s cubic-bezier(.16, 1, .3, 1);
  background: var(--v2-blue);
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath transform='rotate(90 10 10)' d='M5,20v-2.5l3-2.1v-3.6L0,15v-3L8,6.4V2c0-.53,.21-1.04,.59-1.41,.78-.78,2.04-.78,2.82,0,.38,.37,.59,.88,.59,1.41V6.4l8,5.6v3l-8-3.2v3.6l3,2.1v2.5l-5-1.5-5,1.5Z'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath transform='rotate(90 10 10)' d='M5,20v-2.5l3-2.1v-3.6L0,15v-3L8,6.4V2c0-.53,.21-1.04,.59-1.41,.78-.78,2.04-.78,2.82,0,.38,.37,.59,.88,.59,1.41V6.4l8,5.6v3l-8-3.2v3.6l3,2.1v2.5l-5-1.5-5,1.5Z'/%3E%3C/svg%3E") center / contain no-repeat;
  opacity: 0; 
}
.faq-etapes.actif .faq-etapes-avion { opacity: 1; }
.faq-etapes-tab {
  position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: 8px; text-align: center;
  background: none; border: 0; padding: 0 2px 4px; cursor: pointer; color: var(--v2-muted); font: inherit;
}
.faq-etapes-tab .faq-picto {
  order: -1; width: 62px; height: 62px; border-radius: 50%; background: #fff; border: 2px solid var(--v2-line); color: var(--v2-navy);
  transition: border-color .3s ease, background .3s ease, color .3s ease, transform .45s cubic-bezier(.34, 1.56, .64, 1);
}
.faq-etapes-num { font-size: 12px; font-weight: 600; letter-spacing: .08em; color: var(--v2-blue); }
.faq-etapes-label { font-size: 14px; font-weight: 500; line-height: 1.3; color: var(--v2-navy); }
.faq-etapes-tab:hover .faq-picto { transform: translateY(-3px); border-color: var(--v2-blue); }
.faq-etapes-tab.passe .faq-picto { border-color: var(--v2-blue); color: var(--v2-blue); }
.faq-etapes-tab[aria-selected="true"] .faq-picto { background: var(--v2-navy); border-color: var(--v2-navy); color: #fff; transform: scale(1.08); box-shadow: 0 10px 24px -10px rgba(3, 13, 48, .5); }
.faq-etapes-tab[aria-selected="true"] .faq-etapes-label { font-weight: 600; }
.faq-etapes-tab:focus-visible { outline: none; }
.faq-etapes-tab:focus-visible .faq-picto { outline: 3px solid var(--v2-blue); outline-offset: 3px; }
.faq-etapes-panel { background: #fff; border-radius: 20px; padding: 28px; border: 1px solid var(--v2-line); }
.faq-etapes.actif .faq-etapes-panel:not([hidden]) { animation: v2-panneau .5s cubic-bezier(.16, 1, .3, 1); }
@keyframes v2-panneau { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.faq-etapes-kicker { margin: 0 0 6px; font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--v2-blue); }
.faq-etapes-title { margin: 0 0 12px; font-size: clamp(20px, 1.6vw, 26px); font-weight: 600; line-height: 1.2; color: var(--v2-navy); }
.faq-etapes-text { line-height: 1.6; }
.faq-etapes-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin-top: 20px; }
.faq-etapes-next { background: none; border: 0; padding: 10px 0; font: inherit; font-weight: 600; color: var(--v2-blue); cursor: pointer; }
.faq-etapes-next span { display: inline-block; transition: transform .25s ease; }
.faq-etapes-next:hover span { transform: translateX(4px); }
/* Sans JS : toutes les étapes restent lisibles */
.faq-etapes:not(.actif) .faq-etapes-nav { display: none; }
.faq-etapes:not(.actif) .faq-etapes-panel + .faq-etapes-panel { margin-top: 0; }
@media (max-width: 759px) {
  .faq-etapes-nav { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; margin: 0 -16px; padding: 4px 16px 8px; scrollbar-width: none; }
  .faq-etapes-nav::-webkit-scrollbar { display: none; }
  .faq-etapes-tab { flex: 0 0 96px; scroll-snap-align: center; }
  .faq-etapes-rail { display: none; }
  .faq-etapes-panel { padding: 22px; }
}

/* ==========================================================================
   15. Fiches agences (location de voitures…) : photo, ouvert / fermé en direct, horaires
   ========================================================================== */
.agences-title, .agences-intro { grid-column: span 12; }
@media (min-width: 760px) { .agences-title, .agences-intro { grid-column: 2 / span 10; } }
.agences-title { margin: 0 0 8px; font-size: clamp(28px, 2.6vw, 44px); font-weight: 600; line-height: 1.1; letter-spacing: -.02em; color: var(--v2-navy); }
.agences-list { grid-column: span 12; display: grid; gap: 20px; margin-top: 24px; }
@media (min-width: 760px) { .agences-list { grid-column: 2 / span 10; } }
@media (min-width: 1000px) { .agences-list[data-count="2"], .agences-list[data-count="4"] { grid-template-columns: 1fr 1fr; } .agences-list[data-count="3"] { grid-template-columns: repeat(3, 1fr); } }
.agence { background: #fff; border-radius: 24px; overflow: hidden; border: 1px solid var(--v2-line); display: flex; flex-direction: column; transition: transform .4s cubic-bezier(.16, 1, .3, 1), box-shadow .4s ease; }
.agence:hover { transform: translateY(-4px); box-shadow: 0 24px 50px -24px rgba(3, 13, 48, .3); }
.agence-img { position: relative; aspect-ratio: 16 / 9; overflow: hidden; background: var(--v2-grey); }
.agence-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.agence:hover .agence-img img { transform: scale(1.05); }
.agence-etat {
  position: absolute; top: 16px; left: 16px; display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px;
  background: rgba(255, 255, 255, .92); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
  font-size: 13px; font-weight: 600; color: var(--v2-navy);
}
.agence-etat::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: #a3a8b5; }
.agence-etat[data-etat="ouvert"]::before { background: var(--v2-blue); box-shadow: 0 0 0 0 rgba(0, 100, 167, .5); animation: v2-pouls 2s infinite; }
@keyframes v2-pouls { 70% { box-shadow: 0 0 0 8px rgba(0, 100, 167, 0); } 100% { box-shadow: 0 0 0 0 rgba(0, 100, 167, 0); } }
.agence-body { padding: 24px; display: flex; flex-direction: column; gap: 18px; flex: 1; }
@media (min-width: 1220px) { .agence-body { padding: 32px; } }
.agence-name { margin: 0; font-size: clamp(26px, 2.2vw, 36px); font-weight: 600; letter-spacing: -.02em; color: var(--v2-navy); }
.agence-text { color: var(--v2-muted); line-height: 1.6; }
.agence-text p { margin: 0; }
.agence-infos { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 0; }
.agence-infos > div { background: var(--v2-grey); border-radius: 14px; padding: 12px 14px; }
.agence-infos dt { font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--v2-blue); }
.agence-infos dd { margin: 4px 0 0; font-weight: 600; color: var(--v2-navy); }
.agence-horaires-title { margin: 0 0 6px; font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--v2-blue); }
.agence-horaires table { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.agence-horaires th, .agence-horaires td { padding: 9px 10px; border-bottom: 1px solid var(--v2-line); text-align: left; font-weight: 400; color: var(--v2-navy); }
.agence-horaires td { text-align: right; }
.agence-horaires tr.aujourdhui th, .agence-horaires tr.aujourdhui td { background: rgba(0, 100, 167, .07); font-weight: 600; }
.agence-horaires tr.aujourdhui th { border-radius: 10px 0 0 10px; }
.agence-horaires tr.aujourdhui td { border-radius: 0 10px 10px 0; }
.agence-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: auto; }
.agence-tel { border: 1px solid var(--v2-line) !important; }
.agence-tel svg { width: 18px; height: 18px; }
.agence-tel svg path { fill: currentColor !important; }

/* ==========================================================================
   16. Sliders : flèches, progression, compteur, carte active ; pictos vivants
   ========================================================================== */
.v2-slider-ui { grid-column: span 12; display: flex; align-items: center; gap: 12px; margin-top: 20px; }
.v2-slider-ui[hidden] { display: none; }
@media (min-width: 760px) { .v2-slider-ui { grid-column: 2 / span 10; } }
@media (min-width: 1220px) { section.slider .v2-slider-ui { grid-column: 6 / span 7; } }
.v2-slider-count { font-size: 14px; font-variant-numeric: tabular-nums; color: var(--v2-muted); min-width: 56px; }
.v2-slider-count strong { color: var(--v2-navy); font-weight: 600; }
.v2-slider-bar { flex: 1; height: 2px; background: var(--v2-line); border-radius: 2px; overflow: hidden; }
.v2-slider-bar span { display: block; height: 100%; background: var(--v2-navy); transform-origin: left; transform: scaleX(.08); transition: transform .2s linear; }
.v2-slider-btn {
  width: 48px; height: 48px; border-radius: 50%; border: 1px solid var(--v2-line); background: #fff; color: var(--v2-navy);
  display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
  transition: background .25s ease, color .25s ease, border-color .25s ease, transform .25s ease;
}
.v2-slider-btn svg { width: 20px; height: 20px; }
.v2-slider-btn svg path { fill: currentColor !important; }
.v2-slider-btn.prev svg { transform: rotate(180deg); }
.v2-slider-btn:hover:not(:disabled) { background: var(--v2-navy); border-color: var(--v2-navy); color: #fff; }
.v2-slider-btn:active:not(:disabled) { transform: scale(.94); }
.v2-slider-btn:disabled { opacity: .35; cursor: default; }
[js-carousel_track]:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 4px; border-radius: 20px; }
@media (min-width: 1000px) { [js-carousel_track] { cursor: grab; } [js-carousel_track]:active { cursor: grabbing; } }
/* Cartes de slider : se soulèvent, le picto s'anime, la carte active est pleinement opaque */
.slider-slide { transition: transform .45s cubic-bezier(.16, 1, .3, 1), box-shadow .45s ease, opacity .45s ease, background-color .3s ease !important; }
.slider-slide:hover { transform: translateY(-6px); box-shadow: 0 24px 48px -24px rgba(3, 13, 48, .45) !important; }
.slider-slide-picto { width: 64px; height: 64px; border-radius: 18px; display: inline-flex; align-items: center; justify-content: center; background: rgba(255, 255, 255, .1); transition: transform .5s cubic-bezier(.34, 1.56, .64, 1), background .3s ease; }
.flights + .slider .slider-slide-picto { background: rgba(3, 13, 48, .06); }
.slider-slide-picto svg { width: 34px !important; height: 34px !important; min-width: 0 !important; min-height: 0 !important; }
.slider-slide:hover .slider-slide-picto { transform: rotate(-8deg) scale(1.08); background: var(--v2-blue); }
.flights + .slider .slider-slide:hover .slider-slide-picto svg path { fill: #fff !important; }
@media (min-width: 1000px) {
  section.slider .slider-slide:not(.v2-actif) { opacity: .78; }
  section.slider .slider-slide:hover { opacity: 1; }
}

/* ==========================================================================
   17. Tableaux de tarifs : carte arrondie, en-tête marine, lignes aérées
   ========================================================================== */
.c-table table { border-collapse: separate; border-spacing: 0; border: 1px solid var(--v2-line); border-radius: 20px; overflow: hidden; font-variant-numeric: tabular-nums; }
.c-table table.v2-compact { min-width: 0; }
.c-table td, .c-table th { border: 0; border-bottom: 1px solid var(--v2-line); text-align: left; padding: 16px 20px !important; }
.c-table tbody tr:last-child td, .c-table tbody tr:last-child th { border-bottom: 0; }
.c-table thead th { background: var(--v2-navy); color: #fff; font-weight: 600; font-size: .9em; letter-spacing: .01em; transition: background .2s ease; }
.c-table thead th.v2-col { background: var(--v2-blue); }
.c-table thead th strong { font-weight: 600; }
.c-table tbody td:first-child { color: var(--v2-navy); font-weight: 600; }
.c-table tr:nth-child(even) td { background: transparent; }
.c-table tbody tr { transition: background .2s ease; }
.c-table tbody tr:hover { background: rgba(0, 100, 167, .05); }
.c-table td[rowspan] { background: var(--v2-grey) !important; vertical-align: top; }
.c-table tr.v2-note td { background: var(--v2-grey) !important; font-weight: 400 !important; font-size: .85em; color: var(--v2-muted) !important; }
.v2-gratuit { display: inline-block; padding: 4px 12px; border-radius: 999px; background: #cfe0ec; color: var(--v2-navy); font-weight: 600; font-size: .9em; }
@media (max-width: 759px) {
  .c-table-scroll { background: none !important; padding: 0 16px !important; }
  .c-table td, .c-table th { padding: 12px 14px !important; }
}

/* ==========================================================================
   18. Apparition douce au défilement (une seule fois) — désactivée si « réduire les animations »
   ========================================================================== */
.v2-apparait { opacity: 0; translate: 0 18px; transition: opacity .6s ease var(--v2-delai, 0ms), translate .8s cubic-bezier(.16, 1, .3, 1) var(--v2-delai, 0ms); }
.v2-apparait.v2-vu { opacity: 1; translate: 0 0; }
@media (prefers-reduced-motion: reduce) {
  .v2-apparait { opacity: 1 !important; translate: none !important; }
  .faq-etapes-avion, .faq-etapes-rail::before, .faq-vignette, .agence, .slider-slide { transition: none !important; animation: none !important; }
  .agence-etat::before { animation: none !important; }
}

/* ==========================================================================
   19. Fiches agences : alignement ligne à ligne (subgrid), planificateur, encadré pratique
   ========================================================================== */
@supports (grid-template-rows: subgrid) {
  .agences-list { column-gap: 20px; row-gap: 0; }
  .agence { display: grid; grid-row: span 6; grid-template-rows: subgrid; row-gap: 0; }
  .agence-body { display: contents; }
  .agence-body > * { margin-left: 24px; margin-right: 24px; }
  .agence-name { margin-top: 24px !important; }
  .agence-body > * + * { margin-top: 18px; }
  .agence-actions { margin-bottom: 24px; align-self: end; }
  .agence-infos, .agence-horaires { align-self: start; }
  .agence + .agence { margin-top: 0; }
  @media (max-width: 999px) { .agence + .agence { margin-top: 20px; } }
  @media (min-width: 1220px) {
    .agence-body > * { margin-left: 32px; margin-right: 32px; }
    .agence-name { margin-top: 32px !important; }
    .agence-actions { margin-bottom: 32px; }
  }
}
.agence-horaires th { white-space: nowrap; vertical-align: top; }
.agence-horaires td { white-space: nowrap; line-height: 1.5; }

.agences-arrivee {
  grid-column: span 12; margin-top: 28px; padding: 24px; border-radius: 24px; background: var(--v2-navy); color: #fff;
  display: grid; gap: 20px;
}
@media (min-width: 760px) { .agences-arrivee { grid-column: 2 / span 10; } }
@media (min-width: 1000px) { .agences-arrivee { grid-template-columns: 1.1fr 1fr; align-items: center; padding: 32px; } }
.agences-arrivee-title { margin: 0 0 6px; font-size: clamp(22px, 1.8vw, 28px); font-weight: 600; letter-spacing: -.01em; }
.agences-arrivee-text { margin: 0; color: rgba(255, 255, 255, .75); line-height: 1.5; }
.agences-arrivee-form { display: flex; gap: 12px; flex-wrap: wrap; }
.u-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.agences-arrivee-jours { border: 0; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; flex: 1 1 100%; }
.agences-arrivee-jours legend { width: 100%; margin-bottom: 6px; font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: rgba(255, 255, 255, .7); }
.agences-arrivee-jours label { position: relative; cursor: pointer; }
.agences-arrivee-jours input { position: absolute; opacity: 0; inset: 0; margin: 0; cursor: pointer; }
.agences-arrivee-jours span[aria-hidden] {
  display: inline-flex; align-items: center; justify-content: center; width: 46px; height: 46px; border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, .25); font-weight: 600; font-size: 16px; transition: background .2s ease, color .2s ease, transform .3s cubic-bezier(.34, 1.56, .64, 1);
}
.agences-arrivee-jours label:hover span[aria-hidden] { border-color: #fff; }
.agences-arrivee-jours input:checked + span { background: #fff; color: var(--v2-navy); transform: scale(1.08); }
.agences-arrivee-jours input:focus-visible + span { outline: 2px solid #fff; outline-offset: 3px; }
.agences-arrivee-form > label { display: flex; flex-direction: column; gap: 6px; flex: 1 1 140px; font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: rgba(255, 255, 255, .7); }
.agences-arrivee-form select, .agences-arrivee-form input {
  appearance: none; -webkit-appearance: none; height: 52px; padding: 0 16px; border-radius: 14px; border: 1px solid rgba(255, 255, 255, .2);
  background: rgba(255, 255, 255, .08); color: #fff; font: inherit; font-size: 17px; font-weight: 600; letter-spacing: 0; text-transform: none;
}
.agences-arrivee-form select { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; background-size: 22px; padding-right: 40px; }
.agences-arrivee-form select option { color: var(--v2-navy); }
.agences-arrivee-form input::-webkit-calendar-picker-indicator { filter: invert(1); }
.agences-arrivee-form select:focus-visible, .agences-arrivee-form input:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.agences-arrivee-result { grid-column: 1 / -1; list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
@media (min-width: 760px) { .agences-arrivee-result { grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); } }
.agences-arrivee-result li { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; border-radius: 16px; background: rgba(255, 255, 255, .08); animation: v2-panneau .4s cubic-bezier(.16, 1, .3, 1); }
.agences-arrivee-result strong { display: block; font-size: 17px; }
.agences-arrivee-result small { display: block; margin-top: 2px; color: rgba(255, 255, 255, .75); font-size: 14px; line-height: 1.4; }
.agences-arrivee-result .pastille { flex: none; width: 12px; height: 12px; margin-top: 6px; border-radius: 50%; background: #a3a8b5; }
.agences-arrivee-result li[data-etat="ouvert"] .pastille { background: var(--v2-blue); }

.agences-pratique {
  grid-column: span 12; margin-top: 20px; padding: 24px; border-radius: 24px; background: #fff; border: 1px solid var(--v2-line);
  display: grid; gap: 16px; align-items: center;
}
@media (min-width: 760px) { .agences-pratique { grid-column: 2 / span 10; grid-template-columns: auto 1fr auto; gap: 24px; padding: 28px 32px; } }
.agences-pratique-picto { width: 64px; height: 64px; border-radius: 20px; background: rgba(0, 100, 167, .08); color: var(--v2-blue); display: inline-flex; align-items: center; justify-content: center; }
.agences-pratique-picto svg { width: 30px; height: 30px; }
.agences-pratique-picto svg path { fill: currentColor !important; }
.agences-pratique-title { margin: 0 0 6px; font-size: clamp(20px, 1.6vw, 24px); font-weight: 600; color: var(--v2-navy); }
.agences-pratique-text { color: var(--v2-muted); line-height: 1.55; }
.agences-pratique-text p { margin: 0 0 .4em; }
.agences-pratique-text p:last-child { margin: 0; }
.agences-pratique-text strong { color: var(--v2-navy); }
.agences-pratique-btn { border: 1px solid var(--v2-line) !important; white-space: nowrap; }

/* ==========================================================================
   20. Infos par compagnie : thèmes, logo, badge de statut
   ========================================================================== */
.infos-compagnies-head { grid-column: span 12; }
@media (min-width: 760px) { .infos-compagnies-head { grid-column: 2 / span 10; } }
@media (min-width: 1220px) { .infos-compagnies-head { grid-column: 2 / span 3; align-self: start; position: sticky; top: 20vh; } }
.infos-compagnies-title { margin: 0 0 12px; font-size: clamp(28px, 2.4vw, 40px); font-weight: 600; line-height: 1.1; letter-spacing: -.02em; color: var(--v2-navy); }
.infos-compagnies-intro { color: var(--v2-muted); line-height: 1.55; }
.infos-compagnies-intro p { margin: 0; }
.infos-compagnies-themes { grid-column: span 12; display: grid; gap: 32px; margin-top: 24px; }
@media (min-width: 760px) { .infos-compagnies-themes { grid-column: 2 / span 10; } }
@media (min-width: 1220px) { .infos-compagnies-themes { grid-column: 5 / span 8; margin-top: 0; } }
.infos-theme-title { display: flex; align-items: center; gap: 12px; margin: 0 0 14px; font-size: 20px; font-weight: 600; color: var(--v2-navy); }
.infos-theme-title .faq-picto { width: 44px; height: 44px; border-radius: 14px; background: var(--v2-navy); color: #fff; }
.infos-theme-title .faq-picto svg { width: 22px; height: 22px; }
.infos-theme-cards { display: grid; gap: 16px; }
@media (min-width: 760px) { .infos-theme-cards[data-count="2"], .infos-theme-cards[data-count="4"] { grid-template-columns: 1fr 1fr; } .infos-theme-cards[data-count="3"] { grid-template-columns: repeat(3, 1fr); } }
.info-compagnie { --c: var(--v2-blue); --bg: rgba(0, 100, 167, .08);
  background: #fff; border: 1px solid var(--v2-line); border-radius: 20px; padding: 22px; display: flex; flex-direction: column; gap: 12px;
  border-top: 4px solid var(--c); transition: transform .35s cubic-bezier(.16, 1, .3, 1), box-shadow .35s ease; }
.info-compagnie:hover { transform: translateY(-3px); box-shadow: 0 18px 40px -20px rgba(3, 13, 48, .25); }
.info-compagnie[data-statut="oui"] { --c: var(--v2-blue); --bg: #e5eff7; }
.info-compagnie[data-statut="conditions"] { --c: var(--v2-navy); --bg: #cfe0ec; }
.info-compagnie[data-statut="non"] { --c: #5b6275; --bg: #eef0f3; }
.info-compagnie-top { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 36px; }
.info-compagnie-logo { height: 28px; width: auto; max-width: 130px; object-fit: contain; }
.info-compagnie-toutes { font-weight: 600; color: var(--v2-navy); }
.info-compagnie-statut { padding: 5px 12px; border-radius: 999px; background: var(--bg); color: var(--c); font-size: 13px; font-weight: 600; white-space: nowrap; }
.info-compagnie-resume { margin: 0; font-size: 18px; font-weight: 600; line-height: 1.3; color: var(--v2-navy); }
.info-compagnie-text { color: var(--v2-muted); font-size: 15px; line-height: 1.55; }
.info-compagnie-text p { margin: 0; }
.info-compagnie-lien { margin-top: auto; display: inline-flex; align-items: center; gap: 8px; font-weight: 600; color: var(--v2-blue); text-decoration: none; }
.info-compagnie-lien svg { width: 16px; height: 16px; }
.info-compagnie-lien svg path { fill: currentColor !important; }
.info-compagnie-lien:hover { text-decoration: underline; }

/* 21. En-tête : le cadre arrondi défile avec la page, la recherche est à cheval entre la photo et la suite */
.c-header-background { position: absolute !important; }
@media (min-width: 1000px) {
  header.c-header + aside.p-searchbar {
    margin-top: -120px !important; margin-bottom: 0 !important;
    background: #fff !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
    color: #030d30; border: 1px solid rgba(3, 13, 48, .06);
    box-shadow: 0 30px 60px -28px rgba(3, 13, 48, .45);
  }
  header.c-header + aside.p-searchbar .p-searchbar-title { font-size: 30px !important; padding: 24px 32px 8px !important; }
  header.c-header + aside.p-searchbar .p-searchbar-title .hidden-sm--max { font-size: inherit !important; }
  header.c-header + aside.p-searchbar *:not(input):not(.u-button):not(.u-button *):not(.dropdown-list):not(.dropdown-list *) { color: #030d30 !important; border-color: rgba(3, 13, 48, .25); }
  header.c-header + aside.p-searchbar svg path { fill: #030d30 !important; }
  header.c-header + aside.p-searchbar .u-button svg path { fill: #fff !important; }
  header.c-header + aside.p-searchbar input { background: #f2f4f8 !important; border-color: transparent !important; }
  /* Accueil : le bandeau bleu des vols remonte sous la moitié basse de la recherche, sans zone blanche */
  header.c-header + aside.p-searchbar + #main-content { padding-top: 0 !important; }
  header.c-header + aside.p-searchbar + #main-content > .v2-acces + section.flights { padding-top: 0 !important; }
  header.c-header + aside.p-searchbar + #main-content > .v2-acces + section.flights .flights-wrapper { margin-top: -110px; padding-top: calc(110px + 4.5rem) !important; }
  /* Pages destination : la recherche chevauche la photo et l'introduction */
  header.c-header + aside.p-searchbar + #main-content.destination { padding-top: 64px !important; }
}

/* 22. Gabarit plus léger : titres de section, titre d'accueil, vignettes « Explorez nos destinations » */
@media (min-width: 1000px) {
  .actus-subtitle, .c-article-head-title, .c-hero-subtitle, .compagnie-contacts-title, .compagnie-infos .faq-title, .compagnie-intro-title,
  .compagnie-links-title, .contact-blocks-title, .contact-form-title, .contact-phones-title, .content-title, .cta-title, .destination-intro-title,
  .flights-title, .interactive-map-title, .links-block-title, .search-results-title, .simple-text-title, .slider-destinations-title,
  .slider-image-title, .slider-title, .text-carousel-title, .tourism-partners-title, .faq-title, .agences-title, .infos-compagnies-title {
    font-size: clamp(28px, calc(1vw + 20px), 36px) !important;
  }
  .c-header-title { font-size: clamp(48px, 4.4vw, 72px) !important; }
}
@media (min-width: 1220px) {
  .slider-destinations-carousel-slide { flex-basis: calc((100vw - 240px) / 12 * 2.4 + 24px) !important; aspect-ratio: 4 / 5 !important; }
}

/* ==========================================================================
   23. Verre clair commun : menu du haut, rail latéral, carte « en direct », recherche
   ========================================================================== */
:root {
  --v2-verre: rgba(255, 255, 255, .64);
  --v2-verre-fort: rgba(255, 255, 255, .86);
  --v2-verre-flou: blur(22px) saturate(180%);
  --v2-verre-bord: 1px solid rgba(255, 255, 255, .6);
  --v2-verre-ombre: 0 12px 40px -14px rgba(3, 13, 48, .32), inset 0 1px 0 rgba(255, 255, 255, .7);
}
.c-nav-container.hidden-lg--max {
  background: var(--v2-verre) !important; -webkit-backdrop-filter: var(--v2-verre-flou) !important; backdrop-filter: var(--v2-verre-flou) !important;
  border: var(--v2-verre-bord); box-shadow: var(--v2-verre-ombre) !important;
  transition: background .3s ease;
}
.c-nav-container.hidden-lg--max:has(.c-nav-panel.active) { background: var(--v2-verre-fort) !important; }
@media (min-width: 1221px) {
  .v2-rail ul { background: var(--v2-verre) !important; -webkit-backdrop-filter: var(--v2-verre-flou); backdrop-filter: var(--v2-verre-flou); border: var(--v2-verre-bord); box-shadow: var(--v2-verre-ombre) !important; }
}
@media (min-width: 1000px) {
  header.c-header + aside.p-searchbar {
    background: var(--v2-verre-fort) !important; -webkit-backdrop-filter: var(--v2-verre-flou) !important; backdrop-filter: var(--v2-verre-flou) !important;
    border: var(--v2-verre-bord) !important; box-shadow: 0 30px 60px -28px rgba(3, 13, 48, .45), inset 0 1px 0 rgba(255, 255, 255, .7) !important;
  }
  header.c-header + aside.p-searchbar .p-searchbar-title { font-size: 26px !important; padding: 20px 28px 4px !important; }
}

/* Menu du haut : pictos devant les rubriques (champ « Picto » du back-office) */
.c-nav-primary-trigger { display: inline-flex !important; align-items: center; gap: 8px; }
.c-nav-picto { display: inline-flex; width: 18px; height: 18px; flex: none; }
.c-nav-picto svg, .v2-onglet-picto svg { width: 100% !important; height: 100% !important; transform: none !important; }
.c-nav-picto svg path, .c-nav-picto svg circle, .c-nav-picto svg rect { fill: currentColor !important; }
.c-nav-primary-trigger .c-nav-picto { color: var(--v2-blue); transition: transform .3s cubic-bezier(.34, 1.56, .64, 1); }
.c-nav-primary-trigger:hover .c-nav-picto, .c-nav-primary-trigger.active .c-nav-picto { transform: translateY(-1px) rotate(-6deg) scale(1.1); }

/* Méga-menu (ordinateur), sans pictos : grande liste + aperçu photo, ou destinations en photo */
.v2-mega { padding: 0 !important; margin: 0 !important; }
.v2-mega-grille { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 48px; padding: 32px 36px 32px; color: var(--v2-navy); } /* 10/11 : marges intérieures, le texte et la photo ne touchent plus le bord */
.v2-mega-grille--apercu { grid-template-columns: 240px minmax(0, 1fr) minmax(260px, 340px); }
.v2-mega-intro { display: flex; flex-direction: column; gap: 8px; }
.v2-mega-titre { margin: 0; font-size: 26px; font-weight: 600; line-height: 1.15; letter-spacing: -.01em; }
.v2-mega-sous { margin: 0; font-size: 15px; color: var(--v2-muted); }
.v2-mega-corps { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr); gap: 40px; }
.v2-mega-groupe-titre { margin: 0 0 12px; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--v2-blue); }
.v2-mega ul, .v2-mega ol { list-style: none; margin: 0; padding: 0; }
/* Liste en grande typographie */
.v2-mega-liste { display: flex; flex-direction: column; counter-reset: none; }
.v2-mega-liste li + li { border-top: 1px solid rgba(3, 13, 48, .08); }
.v2-mega-lien {
  display: flex; align-items: baseline; gap: 18px; padding: 14px 4px;
  color: var(--v2-navy) !important; text-decoration: none; transition: color .2s ease, padding .35s cubic-bezier(.16, 1, .3, 1);
}
.v2-mega-num { font-size: 13px; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--v2-muted); min-width: 22px; }
.v2-mega-lien-txt { font-size: 24px; font-weight: 500; line-height: 1.15; letter-spacing: -.01em; }
.v2-mega-fleche { margin-left: auto; font-size: 20px; color: var(--v2-blue); opacity: 0; transform: translateX(-8px); transition: opacity .2s ease, transform .3s cubic-bezier(.16, 1, .3, 1); }
.v2-mega-liste .v2-mega-lien:hover, .v2-mega-liste .v2-mega-lien:focus-visible, .v2-mega-liste .v2-mega-lien.v2-actif { color: var(--v2-blue) !important; padding-left: 12px; }
.v2-mega-liste .v2-mega-lien:hover .v2-mega-num, .v2-mega-liste .v2-mega-lien.v2-actif .v2-mega-num { color: var(--v2-blue); }
.v2-mega-liste .v2-mega-lien:hover .v2-mega-fleche, .v2-mega-liste .v2-mega-lien:focus-visible .v2-mega-fleche, .v2-mega-liste .v2-mega-lien.v2-actif .v2-mega-fleche { opacity: 1; transform: none; }
.v2-mega-groupe .v2-mega-lien-txt { font-size: 18px; }
/* Aperçu photo de la page survolée */
.v2-mega-apercu { position: relative; margin: 0; align-self: center; justify-self: center; width: 100%; max-height: 260px; aspect-ratio: 4 / 3; border-radius: 18px; overflow: hidden; background: var(--v2-navy); }
.v2-mega-apercu img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; transition: opacity .25s ease, transform .6s cubic-bezier(.16, 1, .3, 1); }
.v2-mega-apercu img.v2-change { opacity: 0; transform: scale(1.04); }
.v2-mega-apercu figcaption {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 40px 18px 14px; font-size: 15px; font-weight: 600; color: #fff;
  background: linear-gradient(180deg, rgba(3, 13, 48, 0), rgba(3, 13, 48, .75));
}
/* Destinations en photo */
.v2-mega-destinations { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; }
.v2-mega-destination {
  position: relative; display: flex; flex-direction: column; justify-content: flex-end; gap: 2px;
  aspect-ratio: 4 / 3; padding: 12px; border-radius: 14px; overflow: hidden; isolation: isolate;
  background: var(--v2-navy); color: #fff !important; text-decoration: none;
}
.v2-mega-destination img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; transition: transform .6s cubic-bezier(.16, 1, .3, 1); }
.v2-mega-destination::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(3, 13, 48, 0) 35%, rgba(3, 13, 48, .82)); }
.v2-mega-destination:hover img, .v2-mega-destination:focus-visible img { transform: scale(1.07); }
.v2-mega-destination-nom { font-size: 17px; font-weight: 600; line-height: 1.1; }
.v2-mega-destination-info { font-size: 12px; opacity: .85; }
/* Compagnies */
.v2-mega-compagnies { display: flex; flex-direction: column; gap: 8px; }
.v2-mega-compagnie {
  display: flex; align-items: center; gap: 14px; padding: 10px 12px; border-radius: 14px;
  background: rgba(3, 13, 48, .04); color: var(--v2-navy) !important; font-weight: 500; text-decoration: none; transition: background .2s ease, transform .2s ease;
}
.v2-mega-compagnie img { width: 72px; height: 40px; object-fit: contain; padding: 6px 8px; background: #fff; border-radius: 10px; }
.v2-mega-compagnie:hover, .v2-mega-compagnie:focus-visible { background: rgba(0, 100, 167, .1); transform: translateX(3px); }
.v2-mega-tout { display: inline-flex; gap: 6px; margin-top: 12px; font-size: 14px; font-weight: 600; color: var(--v2-blue) !important; }
.v2-mega a:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 2px; }
@media (prefers-reduced-motion: reduce) { .v2-mega-lien, .v2-mega-fleche, .v2-mega-apercu img { transition: none; } }

/* ==========================================================================
   24. Mobile et tablette : barre d'onglets façon application
   ========================================================================== */
.v2-onglets { display: none; }
@media (max-width: 1220px) {
  .v2-onglets {
    display: block; position: fixed; z-index: 1000; left: 12px; right: 12px; bottom: calc(10px + env(safe-area-inset-bottom));
    border-radius: 24px; padding: 6px;
    background: var(--v2-verre-fort); -webkit-backdrop-filter: var(--v2-verre-flou); backdrop-filter: var(--v2-verre-flou);
    border: var(--v2-verre-bord); box-shadow: 0 16px 40px -12px rgba(3, 13, 48, .4), inset 0 1px 0 rgba(255, 255, 255, .7);
  }
  .v2-onglets ul { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 2px; }
  .v2-onglet {
    position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
    width: 100%; min-height: 56px; padding: 6px 2px; border: 0; border-radius: 18px; background: none;
    color: var(--v2-navy) !important; font: inherit; font-size: 11.5px; font-weight: 500; line-height: 1.1; text-decoration: none; cursor: pointer;
    -webkit-tap-highlight-color: transparent; transition: background .2s ease, transform .15s ease;
  }
  .v2-onglet:active { transform: scale(.94); }
  .v2-onglet-picto { display: inline-flex; width: 24px; height: 24px; }
  .v2-onglet-picto svg { width: 100% !important; height: 100% !important; }
  .v2-onglet-picto svg path, .v2-onglet-picto svg circle, .v2-onglet-picto svg rect { fill: currentColor !important; }
  .v2-onglet[aria-current="page"], .v2-onglet--menu[aria-expanded="true"] { background: var(--v2-navy); color: #fff !important; }
  .v2-onglet:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 1px; }
  /* Le bouton « Menu » de la barre remplace le burger ; on laisse la place à la barre en bas de page */
  .c-nav [data-action="open_nav"] { display: none !important; }
  body { padding-bottom: calc(84px + env(safe-area-inset-bottom)); }
  .v2-haut { bottom: calc(96px + env(safe-area-inset-bottom)) !important; }
  .c-cookies { bottom: calc(90px + env(safe-area-inset-bottom)) !important; }
  /* Menu ouvert : rubriques avec picto, en cartes */
  .c-nav-container.hidden-lg--min .c-nav-primary-trigger { font-size: 18px; font-weight: 600; gap: 12px; }
  .c-nav-container.hidden-lg--min .c-nav-primary-trigger .c-nav-picto {
    width: 38px; height: 38px; padding: 9px; border-radius: 12px; background: rgba(0, 100, 167, .1); box-sizing: border-box;
  }
  html.v2-menu-ouvert .c-nav-primary { padding-bottom: calc(96px + env(safe-area-inset-bottom)); }
}
@media (max-width: 1220px) and (prefers-reduced-motion: reduce) { .v2-onglet { transition: none; } }

/* ==========================================================================
   25. En-tête allégé : bande « en direct » dans la recherche, recherche compacte,
       titre en bas de la photo, rail latéral discret tant que l'en-tête est visible
   ========================================================================== */
.v2-direct { display: none; }
@media (min-width: 1000px) {
  header.c-header + aside.p-searchbar form { position: relative; }
  .v2-direct {
    display: flex; align-items: center; gap: 28px; flex-wrap: wrap;
    padding: 12px 28px; border-bottom: 1px solid rgba(3, 13, 48, .08);
    font-size: 14px; color: var(--v2-navy);
  }
  .v2-direct p { margin: 0; }
  .v2-direct-item { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
  .v2-direct-lib { color: var(--v2-muted); }
  .v2-direct-heure { font-size: 16px; font-weight: 600; font-variant-numeric: tabular-nums; }
  .v2-direct-ville { font-weight: 500; }
  .v2-direct-item .v2-statut { font-size: 12px; padding: 2px 9px; }
  .v2-direct-vide { color: var(--v2-muted); }
  .v2-direct-lien { margin-left: auto; display: inline-flex; gap: 6px; font-weight: 600; color: var(--v2-blue) !important; white-space: nowrap; }
  .v2-direct-lien:hover, .v2-direct-lien:focus-visible { text-decoration: underline; }

  /* Recherche compacte : « Aller simple » sur la ligne du titre, moins de vide */
  header.c-header + aside.p-searchbar .p-searchbar-title { font-size: 22px !important; padding: 18px 28px 6px !important; }
  header.c-header + aside.p-searchbar .p-searchbar-form-line:first-child { position: absolute !important; top: 16px !important; right: 28px !important; left: auto !important; width: max-content !important; min-width: 0 !important; margin: 0 !important; padding: 0 !important; z-index: 3; }
  header.c-header + aside.p-searchbar .p-searchbar-form-line:first-child > * { width: max-content !important; }
  header.c-header + aside.p-searchbar .p-searchbar-form .dropdown-button { font-size: 16px !important; }
  header.c-header + aside.p-searchbar .p-searchbar-form-line + .p-searchbar-form-line { padding-top: 6px !important; padding-bottom: 20px !important; margin-top: 0 !important; }

  /* Titre en bas à gauche de la photo, au-dessus de la recherche ; le haut de la photo reste dégagé */
  header.c-header:has(+ aside.p-searchbar) .grid { padding-bottom: 170px !important; }
  header.c-header:has(+ aside.p-searchbar) .c-header-title { grid-column: 1 / -1 !important; font-size: clamp(40px, 3.8vw, 64px) !important; }
}
@media (min-width: 1221px) {
  .v2-rail { transition: opacity .35s ease, transform .45s cubic-bezier(.16, 1, .3, 1); }
  body.v2-rail-discret .v2-rail { opacity: 0; transform: translate(24px, -50%); pointer-events: none; }
  body.v2-rail-discret .v2-rail:focus-within { opacity: 1; transform: translateY(-50%); pointer-events: auto; }
}
@media (prefers-reduced-motion: reduce) { .v2-rail { transition: none; } }

/* --- 26. Revue des pages (10/11) ------------------------------------------ */
/* En-têtes à photo : titre en casse normale, calé sur la colonne du contenu, voile en bas pour la lisibilité */
.c-header-title { text-transform: none !important; letter-spacing: -.02em; line-height: 1.04 !important; color: #fff !important; text-shadow: 0 2px 28px rgba(3, 13, 48, .35) !important; text-wrap: balance; }
.c-header-background::after { content: ""; position: absolute; inset: 0; z-index: 2; border-radius: inherit; pointer-events: none; background: linear-gradient(180deg, rgba(3, 13, 48, 0) 45%, rgba(3, 13, 48, .55) 100%); }
@media (min-width: 1000px) {
  .v2-interieure .c-header-title { grid-column: 1 / -1 !important; padding-left: max(0px, calc((100vw - 1240px) / 2 - 32px)) !important; padding-right: 0 !important; max-width: none; }
}

/* En-têtes sans photo (mentions légales, page introuvable) : bandeau bleu nuit plutôt que gris */
.c-hero { background: linear-gradient(135deg, var(--v2-navy) 0%, #0b2f6e 100%) !important; height: auto !important; min-height: 0 !important; padding: 160px 0 72px; }
.c-hero .grid { position: relative !important; top: auto !important; bottom: auto !important; height: auto !important; min-height: 0 !important; max-height: none !important; padding-top: 0 !important; padding-bottom: 0 !important; }
.c-hero-title { color: #fff !important; text-transform: none !important; font-size: clamp(40px, 5vw, 72px) !important; line-height: 1.05 !important; letter-spacing: -.02em; gap: 14px; }
.c-hero-subtitle { margin-top: 0 !important; font-size: clamp(17px, 1.4vw, 20px); font-weight: 400; letter-spacing: 0; color: rgba(255, 255, 255, .78); }
.v2-404 { padding: 56px 20px 96px; }
.v2-404 .grid { display: flex !important; flex-direction: column; align-items: center; gap: 24px; text-align: center; }
.v2-404-texte { margin: 0; font-size: 18px; color: var(--v2-muted); }
.v2-404-liens { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }

/* Cartes bleues (composant « slider ») : titre lisible + texte, plus de débordement */
section.slider .slider-slide { aspect-ratio: auto !important; min-height: 280px; }
section.slider .slider-slide-title { font-size: clamp(20px, 1.6vw, 24px) !important; line-height: 1.22 !important; letter-spacing: -.01em; margin: 0; }
.slider-slide-text { margin: -8px 0 0; font-size: 15px; line-height: 1.55; color: rgba(255, 255, 255, .78); }
.flights + .slider .slider-slide-text { color: var(--v2-muted); }
section.slider .slider-slide > .u-button { margin-top: auto; }

/* Cartes photo (temps de trajet, incontournables, destinations) : voile dégradé au lieu du verre illisible */
.slider-image-slide { border-radius: 20px; }
.slider-image-slide::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(180deg, rgba(3, 13, 48, 0) 28%, rgba(3, 13, 48, .6) 62%, rgba(3, 13, 48, .92) 100%); }
.slider-image-slide-content { background: none !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; box-shadow: none !important; padding: 0 !important; gap: 8px !important; width: 100%; }
.slider-image-slide-content-title { font-size: clamp(20px, 1.7vw, 26px) !important; line-height: 1.15 !important; color: #fff !important; margin: 0; }
.slider-image-slide-content-text { margin: 0; font-size: 15px !important; line-height: 1.5; color: rgba(255, 255, 255, .86) !important; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }

/* Partenaires touristiques : cartes sur toute la largeur, plus jamais écrasées */
@media (min-width: 760px) {
  .tourism-partners-category { grid-column: 2 / span 10 !important; padding: 0 !important; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)) !important; }
  .tourism-partners-item-title { font-size: 20px; line-height: 1.2; }
}

/* Barre d'onglets : libellés toujours sur une ligne */
@media (max-width: 1220px) { .v2-onglet > span:not(.v2-onglet-picto) { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; } }

/* Mobile et tablette : en-tête des pages intérieures moins haut, titre visible au-dessus de la barre d'onglets */
@media (max-width: 999px) {
  .v2-interieure .c-header,
  .v2-interieure .c-header .grid { height: 60svh !important; min-height: 380px !important; max-height: 560px !important; }
  .v2-interieure .c-header .grid { padding-bottom: 32px !important; }
  .v2-interieure .c-header-title { font-size: clamp(32px, 8.5vw, 48px) !important; padding: 0 20px !important; margin-bottom: 0 !important; }
  .c-header:not(.v2-interieure .c-header) .grid { padding-bottom: 110px !important; }
}

/* --- 27. Destinations (10/11) ---------------------------------------------- */
/* Fiche pratique : vol direct (+ jours), compagnie, décalage, monnaie */
.v2-fiche { margin: 28px 0 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.v2-fiche-item { margin: 0; padding: 18px 20px; border-radius: 18px; background: #fff; box-shadow: 0 1px 2px rgba(3, 13, 48, .06), 0 8px 24px rgba(3, 13, 48, .05); display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.v2-fiche dt { display: flex; align-items: center; gap: 8px; margin: 0; font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--v2-blue); }
.v2-fiche dt svg { width: 18px !important; height: 18px !important; flex: none; }
.v2-fiche dt svg path { fill: currentColor; }
.v2-fiche dd { margin: 0; display: flex; flex-direction: column; gap: 2px; }
.v2-fiche dd strong { font-size: 22px; font-weight: 600; line-height: 1.2; color: var(--v2-navy); }
.v2-fiche dd span { font-size: 14px; color: var(--v2-muted); }
.v2-fiche-compagnie { display: inline-flex; align-items: center; gap: 10px; min-height: 27px; color: inherit; text-decoration: none; }
.v2-fiche-compagnie img { display: block; height: 24px; width: auto; max-width: 130px; object-fit: contain; }
a.v2-fiche-compagnie:hover, a.v2-fiche-compagnie:focus-visible { opacity: .75; }
@media (max-width: 420px) { .v2-fiche dd strong { font-size: 19px; } .v2-fiche-item { padding: 16px; } }

/* Aucun vol programmé (ligne saisonnière) : carte explicative au lieu d'un tableau vide */
.v2-sans-vol { padding: clamp(40px, 4.5vw, 72px) 20px; }
.v2-sans-vol .grid { display: block !important; }
.v2-sans-vol-carte { max-width: 1240px; margin: 0 auto; display: flex; flex-wrap: wrap; align-items: center; gap: 20px 28px; padding: 32px 36px; border-radius: 24px; background: var(--v2-navy); color: #fff; }
.v2-sans-vol-carte > div { flex: 1 1 360px; min-width: 0; }
.v2-sans-vol-picto { flex: none; width: 56px; height: 56px; border-radius: 16px; background: rgba(255, 255, 255, .1); display: inline-flex; align-items: center; justify-content: center; }
.v2-sans-vol-picto svg { width: 28px !important; height: 28px !important; }
.v2-sans-vol-picto svg path { fill: #fff !important; }
.v2-sans-vol-titre { margin: 0 0 6px; font-size: clamp(20px, 1.8vw, 26px) !important; line-height: 1.2; color: #fff !important; }
.v2-sans-vol-texte { margin: 0; font-size: 16px; line-height: 1.55; color: rgba(255, 255, 255, .8); }
@media (max-width: 759px) { .v2-sans-vol-carte { padding: 24px; } }

/* Incontournables : cartes photo de même format, voile dégradé, texte limité à 4 lignes */
section.v2-incontournables .slider-slide { aspect-ratio: 4 / 5 !important; min-height: 0 !important; padding: 24px !important; justify-content: flex-end !important; flex-wrap: nowrap !important; border-radius: 20px; overflow: hidden; background: var(--v2-navy) !important; }
.v2-incontournables .slider-slide > img { position: absolute; inset: 0; z-index: 0; width: 100%; height: 100%; object-fit: cover; border-radius: 0 !important; transition: transform .7s cubic-bezier(.2, .7, .2, 1); }
.v2-incontournables .slider-slide:hover > img { transform: scale(1.05); }
section.v2-incontournables .slider-slide::after { content: ""; display: block; position: absolute; inset: 0; z-index: 1; pointer-events: none; background: linear-gradient(180deg, rgba(3, 13, 48, 0) 22%, rgba(3, 13, 48, .72) 52%, rgba(3, 13, 48, .95) 100%); }
.v2-incontournables .slider-slide-content { position: relative !important; z-index: 2 !important; margin-top: auto !important; width: 100%; background: none !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; box-shadow: none !important; padding: 0 !important; gap: 8px !important; }
.v2-incontournables .slider-slide-content-title { margin: 0; font-size: clamp(20px, 1.6vw, 24px) !important; line-height: 1.2 !important; color: #fff !important; }
.v2-incontournables .slider-slide-content-text, .v2-incontournables .slider-slide-content-text p { margin: 0; font-size: 15px !important; line-height: 1.5 !important; color: rgba(255, 255, 255, .86) !important; }
.v2-incontournables .slider-slide-content-text { display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }

/* --- 28. Accès : temps de trajet sur carte, plan de l'aéroport à plat (10/11) --- */
.v2-trajets-tete, .v2-plan-tete, .v2-trajets-corps, .v2-plan-corps, .v2-trajets-sans { grid-column: span 12; }
@media (min-width: 1000px) { .v2-trajets-tete, .v2-plan-tete { grid-column: 2 / span 8; } .v2-trajets-corps, .v2-plan-corps, .v2-trajets-sans { grid-column: 2 / span 10; } }
.v2-trajets-titre, .v2-plan-titre { margin: 0 0 10px; font-size: clamp(28px, 2.6vw, 44px); font-weight: 600; line-height: 1.1; letter-spacing: -.02em; color: var(--v2-navy); }
.v2-trajets-intro, .v2-plan-intro { color: var(--v2-muted); font-size: 17px; line-height: 1.6; }
.v2-trajets-intro p, .v2-plan-intro p { margin: 0 0 8px; }

/* Temps de trajet */
.v2-trajets-corps { margin-top: 28px; display: grid; gap: 20px; }
@media (min-width: 1000px) { .v2-trajets-corps { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); align-items: stretch; } }
.v2-trajets-panneau { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.v2-trajets-question { margin: 0; font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--v2-blue); }
.v2-trajets-villes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.v2-trajets-ville { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 16px; border: 1px solid var(--v2-line); border-radius: 14px; background: #fff; color: var(--v2-navy); font: inherit; font-size: 15px; font-weight: 600; text-align: left; cursor: pointer; transition: background .2s, border-color .2s, color .2s, transform .2s; }
@media (hover: hover) { .v2-trajets-ville:hover { border-color: var(--v2-blue); transform: translateY(-1px); } }
.v2-trajets-ville:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 2px; }
.v2-trajets-ville-nom { min-width: 0; overflow-wrap: normal; hyphens: manual; }
.v2-trajets-ville-duree { flex: none; padding: 3px 9px; border-radius: 999px; background: var(--v2-grey); font-size: 13px; font-weight: 600; color: var(--v2-blue); white-space: nowrap; }
.v2-trajets-ville[aria-pressed="true"] { background: var(--v2-navy); border-color: var(--v2-navy); color: #fff; }
.v2-trajets-ville[aria-pressed="true"] .v2-trajets-ville-duree { background: rgba(255, 255, 255, .14); color: #fff; }
.v2-trajets-fiche { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 18px; padding: 18px; border-radius: 20px; background: #fff; box-shadow: 0 1px 2px rgba(3, 13, 48, .06), 0 10px 30px rgba(3, 13, 48, .06); animation: v2-trajets-in .35s cubic-bezier(.16, 1, .3, 1); }
.v2-trajets-fiche:not(:has(.v2-trajets-fiche-img)) { grid-template-columns: minmax(0, 1fr); }
.v2-trajets-fiche[hidden] { display: none; }
@keyframes v2-trajets-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.v2-trajets-fiche-img { width: 112px; height: 100%; min-height: 112px; object-fit: cover; border-radius: 14px; }
.v2-trajets-fiche-corps { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.v2-trajets-fiche-depuis { margin: 0; font-size: 13px; font-weight: 600; color: var(--v2-muted); }
.v2-trajets-fiche-temps { margin: 0; display: flex; align-items: center; gap: 8px; font-size: 15px; color: var(--v2-muted); }
.v2-trajets-fiche-temps svg { width: 22px !important; height: 22px !important; flex: none; }
.v2-trajets-fiche-temps svg path { fill: var(--v2-blue); }
.v2-trajets-fiche-temps strong { font-size: 30px; font-weight: 600; letter-spacing: -.02em; color: var(--v2-navy); }
.v2-trajets-fiche-route { margin: 0; font-size: 15px; line-height: 1.55; color: var(--v2-navy); }
.v2-trajets-fiche-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.v2-trajets-fiche-actions .u-button { font-size: 14px; }
.v2-trajets-fiche-actions svg { width: 14px !important; height: 14px !important; }
@media (max-width: 520px) { .v2-trajets-fiche { grid-template-columns: minmax(0, 1fr); } .v2-trajets-fiche-img { width: 100%; height: 140px; min-height: 0; } }

.v2-trajets-carte { position: relative; min-height: 420px; border-radius: 24px; overflow: hidden; background: #e4e5e7; isolation: isolate; }
@media (max-width: 999px) {
  /* 11/11, retour mobile : la liste des villes d'abord, puis la carte, puis la fiche de la ville choisie */
  .v2-trajets-panneau { display: contents; }
  .v2-trajets-question { order: 1; } .v2-trajets-villes { order: 2; } .v2-trajets-carte { order: 3; min-height: 340px; } .v2-trajets-fiches { order: 4; }
  .v2-trajets-corps { gap: 14px; margin-top: 22px; }
}
.v2-trajets-carte-canvas { position: absolute; inset: 0; z-index: 0; }
.v2-trajets-carte .leaflet-container { font: inherit; background: #e4e5e7; }
.v2-trajets-carte .leaflet-tile-pane { filter: grayscale(.85) brightness(1.04) contrast(.92); }
.v2-trajets-position { position: absolute; left: 14px; bottom: 14px; z-index: 500; display: inline-flex; align-items: center; gap: 8px; padding: 10px 14px; border-radius: 999px; background: #fff; color: var(--v2-navy); font-size: 14px; font-weight: 600; text-decoration: none; box-shadow: 0 6px 20px rgba(3, 13, 48, .18); }
.v2-trajets-position svg { width: 16px !important; height: 16px !important; }
.v2-trajets-position svg path { fill: var(--v2-blue); }
.v2-trajets-position:hover, .v2-trajets-position:focus-visible { background: var(--v2-navy); color: #fff; }
.v2-trajets-position:hover svg path, .v2-trajets-position:focus-visible svg path { fill: #fff; }
/* Marqueurs Leaflet (divIcon) */
.v2-carte-ville { background: none; border: 0; }
.v2-carte-ville i { position: absolute; left: -7px; top: -7px; width: 14px; height: 14px; border-radius: 50%; background: #fff; border: 3px solid var(--v2-navy); box-sizing: border-box; cursor: pointer; }
.v2-carte-ville.actif i { background: var(--v2-blue); border-color: #fff; box-shadow: 0 0 0 4px rgba(0, 100, 167, .25); }
.v2-carte-ville span { position: absolute; left: 0; top: 0; transform: translate(14px, -50%); transition: background .2s, color .2s !important; display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 999px; background: #fff; color: var(--v2-navy); font-size: 13px; font-weight: 600; white-space: nowrap; box-shadow: 0 4px 14px rgba(3, 13, 48, .2); cursor: pointer; transition: background .2s, color .2s, transform .2s; }
.v2-carte-ville span b { font-weight: 600; color: var(--v2-blue); }
.v2-carte-ville em { font-style: normal; }
.v2-carte-etroite .v2-carte-ville span { padding: 4px 9px; font-size: 12px; gap: 0 4px; flex-wrap: wrap; white-space: normal; width: max-content; max-width: 150px; border-radius: 12px; line-height: 1.25; } /* 11/11 : nom et durée aussi sur mobile */
.v2-carte-ville--gauche span { transform: translate(calc(-100% - 14px), -50%); }
/* Côté de l'étiquette choisi par js/v2.js pour éviter les chevauchements */
.v2-carte-ville[data-nom="droite"] span { transform: translate(12px, -50%); }
.v2-carte-ville[data-nom="gauche"] span { transform: translate(calc(-100% - 12px), -50%); }
.v2-carte-ville[data-nom="haut"] span { transform: translate(-50%, calc(-100% - 11px)); }
.v2-carte-ville[data-nom="bas"] span { transform: translate(-50%, 11px); }
.v2-carte-ville.actif span { background: var(--v2-navy); color: #fff; }
.v2-carte-ville.actif span b { color: rgba(255, 255, 255, .75); }
.v2-carte-aeroport { background: none; border: 0; }
.v2-carte-aeroport span { position: absolute; left: 0; top: 0; transform: translate(-50%, -50%); width: 44px; height: 44px; border-radius: 50%; background: var(--v2-blue); color: #fff; display: flex; align-items: center; justify-content: center; box-shadow: 0 0 0 8px rgba(0, 100, 167, .18), 0 6px 18px rgba(3, 13, 48, .3); }
.v2-carte-aeroport svg { width: 22px !important; height: 22px !important; }
.v2-carte-aeroport svg path { fill: #fff; }
.v2-carte-trait { stroke: var(--v2-navy); stroke-width: 2.5; stroke-dasharray: 2 7; stroke-linecap: round; opacity: .5; fill: none; transition: opacity .3s; }
.v2-carte-trait.actif { stroke: var(--v2-blue); stroke-width: 4; stroke-dasharray: 10 8; opacity: 1; animation: v2-carte-trait 1s linear infinite; }
@keyframes v2-carte-trait { to { stroke-dashoffset: -18; } }
@media (prefers-reduced-motion: reduce) { .v2-carte-trait.actif { animation: none; } .v2-trajets-fiche { animation: none; } }

.v2-trajets-sans { margin-top: 20px; margin-bottom: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; padding: 24px 28px; border-radius: 20px; background: var(--v2-navy); color: rgba(255, 255, 255, .86); }
.v2-trajets-sans > div { flex: 1 1 360px; min-width: 0; }
.v2-trajets-sans p { margin: 0; line-height: 1.55; }
.v2-trajets-sans-titre { margin: 0 0 4px; font-size: 20px; font-weight: 600; color: #fff; }
.v2-trajets-sans-picto { flex: none; width: 48px; height: 48px; border-radius: 14px; background: rgba(255, 255, 255, .1); display: inline-flex; align-items: center; justify-content: center; }
.v2-trajets-sans-picto svg { width: 24px !important; height: 24px !important; }
.v2-trajets-sans-picto svg path { fill: #fff; }

/* Plan de l'aéroport à plat */
.v2-plan-corps { margin-top: 28px; display: grid; gap: 20px; }
@media (min-width: 1100px) { .v2-plan-corps { grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); align-items: start; } }
.v2-plan-dessin { position: relative; border-radius: 24px; background: #fff; box-shadow: 0 1px 2px rgba(3, 13, 48, .06), 0 10px 30px rgba(3, 13, 48, .06); overflow: hidden; }
.v2-trajets { padding-bottom: clamp(56px, 7vw, 96px); } /* 11/11 : « Sans voiture » collait au titre du plan */
.v2-plan { padding-bottom: clamp(48px, 6vw, 88px); }
.v2-plan-svg { display: block; width: 100%; height: auto; }
.v2-plan-glisser { display: none; }
/* 11/11, retour mobile : plus de défilement horizontal. Le plan entier tient dans l'écran (cadré par js/v2.js),
   les noms sont remplacés par les pastilles numérotées, agrandies, que la légende juste dessous explique. */
.v2-plan-num { transform: scale(var(--pastille, 1)); transform-box: fill-box; transform-origin: center; }

.v2-plan-fond { fill: #f5f5f5; } /* couleurs de la charte uniquement : bleu nuit, bleu, gris, blanc */
.v2-plan-route { fill: none; stroke: #e4e5e7; stroke-width: 26; stroke-linecap: round; }
.v2-plan-route--fine { stroke-width: 16; }
.v2-plan-rondpoint { fill: none; stroke: #e4e5e7; stroke-width: 26; }
.v2-plan-rondpoint--petit { stroke-width: 16; }
.v2-plan-ilot { fill: #fff; }
.v2-plan-vert { fill: #fff; }
.v2-plan-arbres circle { fill: #e4e5e7; }
.v2-plan-pietons { fill: none; stroke: var(--v2-blue); stroke-width: 2; stroke-dasharray: 3 5; stroke-linecap: round; opacity: .6; }
.v2-plan-places { stroke: #fff; stroke-width: 2; opacity: .55; }
.v2-plan-motif { pointer-events: none; }
.v2-plan-txt { font-family: inherit; font-size: 13px; font-weight: 600; fill: var(--v2-navy); text-anchor: middle; pointer-events: none; }
.v2-plan-txt--gros { font-size: 18px; }
.v2-plan-txt--petit { font-size: 11px; }
.v2-plan-txt--clair { fill: #fff; }
.v2-plan-txt--route { font-size: 12px; fill: #a8abb3; letter-spacing: .04em; }
.v2-plan-txt--direction { font-size: 14px; fill: var(--v2-blue); text-anchor: start; }
.v2-plan-txt--vertical { font-size: 11px; }
.v2-plan-detail { fill: none; stroke: rgba(255, 255, 255, .35); stroke-width: 2; }
.v2-plan-entree { fill: #fff; stroke: var(--v2-navy); stroke-width: 2; }
/* Couleurs des zones (dessin et légende) */
.v2-plan-zone--p2 .v2-plan-forme { fill: #b3cde0; }
.v2-plan-zone--loueurs .v2-plan-forme { fill: #e4e5e7; }
.v2-plan-zone--p1 .v2-plan-forme { fill: #cfe0ec; }
.v2-plan-zone--bus .v2-plan-forme { fill: var(--v2-peche); }
.v2-plan-zone--taxis .v2-plan-forme { fill: var(--v2-peche); }
.v2-plan-zone--depose .v2-plan-forme { fill: var(--v2-peche); }
.v2-plan-zone--douanes .v2-plan-forme { fill: #e4e5e7; }
.v2-plan-zone--services .v2-plan-forme { fill: #e4e5e7; }
.v2-plan-zone--aerogare .v2-plan-forme { fill: var(--v2-navy); }
.v2-plan-zone--bus .v2-plan-txt, .v2-plan-zone--taxis .v2-plan-txt, .v2-plan-zone--depose .v2-plan-txt { fill: var(--v2-navy); }
.v2-plan-entree + .v2-plan-txt { fill: var(--v2-navy); }
.v2-plan-c--p2 { --zone: #b3cde0; } .v2-plan-c--loueurs { --zone: #e4e5e7; } .v2-plan-c--p1 { --zone: #cfe0ec; }
.v2-plan-c--bus, .v2-plan-c--taxis, .v2-plan-c--depose { --zone: var(--v2-peche); --zone-txt: var(--v2-navy); } .v2-plan-c--douanes { --zone: #e4e5e7; }
.v2-plan-c--services { --zone: #e4e5e7; } .v2-plan-c--aerogare { --zone: var(--v2-navy); --zone-txt: #fff; }
/* Interaction */
.v2-plan-zone--active { cursor: pointer; outline: none; }
.v2-plan-zone .v2-plan-forme { transition: opacity .25s, filter .25s; }
.v2-plan-svg.a-choix .v2-plan-zone:not(.actif) .v2-plan-forme { opacity: .42; }
.v2-plan-svg.a-choix .v2-plan-zone--aerogare:not(.actif) .v2-plan-forme { opacity: .6; }
.v2-plan-zone--active:hover .v2-plan-forme, .v2-plan-zone--active:focus-visible .v2-plan-forme { opacity: 1 !important; filter: saturate(1.4) brightness(.97); }
.v2-plan-zone.actif .v2-plan-forme { opacity: 1; stroke: var(--v2-navy); stroke-width: 3; }
.v2-plan-zone--aerogare.actif .v2-plan-forme { stroke: var(--v2-blue); }
.v2-plan-zone--active:focus-visible .v2-plan-forme { stroke: var(--v2-blue); stroke-width: 3; }
.v2-plan-num circle { fill: var(--v2-navy); stroke: #fff; stroke-width: 3; }
.v2-plan-num text { font-size: 13px; font-weight: 700; fill: #fff; text-anchor: middle; }
.v2-plan-zone.actif .v2-plan-num circle { fill: var(--v2-blue); }
.v2-plan-zone.actif .v2-plan-num { animation: v2-plan-pulse 1.6s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
@keyframes v2-plan-pulse { 50% { transform: scale(calc(var(--pastille, 1) * 1.18)); } }
@media (prefers-reduced-motion: reduce) { .v2-plan-zone.actif .v2-plan-num { animation: none; } }
/* Légende et fiche */
.v2-plan-panneau { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.v2-plan-legende { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 6px; }
@media (min-width: 1100px) { .v2-plan-legende { grid-template-columns: minmax(0, 1fr); } }
.v2-plan-legende-btn { width: 100%; display: flex; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid transparent; border-radius: 12px; background: transparent; color: var(--v2-navy); font: inherit; font-size: 15px; font-weight: 500; text-align: left; cursor: pointer; transition: background .2s, border-color .2s; }
@media (hover: hover) { .v2-plan-legende-btn:hover { background: #fff; } } /* 11/11 : pas de survol « collé » après un tap sur mobile */
.v2-plan-legende-btn:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 2px; }
.v2-plan-legende-btn[aria-pressed="true"] { background: #fff; border-color: var(--v2-line); font-weight: 600; box-shadow: 0 4px 16px rgba(3, 13, 48, .06); }
.v2-plan-legende-num { flex: none; width: 28px; height: 28px; border-radius: 50%; background: var(--zone, var(--v2-grey)); color: var(--zone-txt, var(--v2-navy)); font-size: 13px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.v2-plan-legende-btn[aria-pressed="true"] .v2-plan-legende-num { background: var(--v2-navy); color: #fff; }
.v2-plan-info-fiche { padding: 22px; border-radius: 20px; background: #fff; border-top: 6px solid var(--zone, var(--v2-blue)); box-shadow: 0 1px 2px rgba(3, 13, 48, .06), 0 10px 30px rgba(3, 13, 48, .06); animation: v2-trajets-in .35s cubic-bezier(.16, 1, .3, 1); }
.v2-plan-info-fiche[hidden] { display: none; }
.v2-plan-info-titre { margin: 0 0 8px; font-size: 20px; font-weight: 600; color: var(--v2-navy); }
.v2-plan-info-texte { color: var(--v2-muted); font-size: 15px; line-height: 1.55; }
.v2-plan-info-texte p { margin: 0 0 8px; }
.v2-plan-info-fiche .u-button { margin-top: 8px; }
@media (min-width: 1100px) { .v2-plan-info { order: -1; } } /* la fiche de la zone choisie en haut, la légende dessous */
@media (max-width: 759px) {
  .v2-plan-svg { --pastille: 2.1; }
  .v2-plan-txt, .v2-plan-entree, .v2-plan-arbres { display: none; }
  .v2-plan-dessin { border-radius: 18px; }
  .v2-plan-corps { margin-top: 22px; gap: 14px; }
  .v2-plan-info { order: -1; }
  .v2-plan-legende { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 6px; }
  .v2-plan-legende-btn { padding: 8px 8px; gap: 8px; font-size: 14px; line-height: 1.25; }
  .v2-plan-legende-num { width: 26px; height: 26px; }
  .v2-plan-info-fiche { padding: 18px; }
}
@media (max-width: 520px) {
  .v2-trajets-ville { flex-direction: column; align-items: flex-start; gap: 6px; padding: 12px 14px; }
}

/* --- 29. FAQ : introduction et affichage « choix » (le visiteur choisit sa situation) (10/11) --- */
.faq-intro, .faq-choix { grid-column: span 12; }
@media (min-width: 760px) { .faq-intro, .faq-choix { grid-column: 2 / span 10; } }
@media (min-width: 1220px) { .faq-intro, .faq-choix { grid-column: 5 / span 8; } section.faq .faq-title:has(+ .faq-intro) { grid-row: span 2; align-self: start; } .faq-intro + .faq-choix { margin-top: -8px; } } /* même colonne que les autres affichages : le titre collant reste à gauche */
@media (min-width: 1220px) { .faq-intro { grid-column: 5 / span 8; } }
.faq-intro { margin: -8px 0 24px; color: var(--v2-muted); font-size: 17px; line-height: 1.6; }
.faq-intro p { margin: 0 0 8px; }
.faq-choix { display: grid; gap: 20px; align-items: start; }
@media (min-width: 1000px) { .faq-choix { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); } }
.faq-choix-options { display: grid; gap: 8px; }
.faq-choix-option {
  width: 100%; display: flex; align-items: center; gap: 14px; padding: 14px 18px; border: 1px solid var(--v2-line); border-radius: 16px;
  background: #fff; color: var(--v2-navy); font: inherit; font-size: 16px; font-weight: 500; line-height: 1.3; text-align: left; cursor: pointer;
  transition: background .2s, border-color .2s, color .2s, transform .25s cubic-bezier(.16, 1, .3, 1);
}
.faq-choix-option:hover { border-color: var(--v2-blue); transform: translateX(4px); }
.faq-choix-option:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 2px; }
.faq-choix-option .faq-picto { width: 40px; height: 40px; border-radius: 12px; background: rgba(0, 100, 167, .08); color: var(--v2-blue); }
.faq-choix-option .faq-picto svg { width: 22px; height: 22px; }
.faq-choix-option[aria-pressed="true"] { background: var(--v2-navy); border-color: var(--v2-navy); color: #fff; transform: none; }
.faq-choix-option[aria-pressed="true"] .faq-picto { background: rgba(255, 255, 255, .12); color: #fff; }
.faq-choix-reponse { position: relative; min-height: 220px; padding: 28px; border-radius: 24px; background: #fff; box-shadow: 0 1px 2px rgba(3, 13, 48, .06), 0 12px 32px rgba(3, 13, 48, .07); }
@media (min-width: 1000px) { .faq-choix-reponse { position: sticky; top: 110px; } }
.faq-choix-invite { margin: 0; display: flex; align-items: center; gap: 10px; min-height: 164px; justify-content: center; text-align: center; color: var(--v2-muted); font-size: 16px; }
@media (max-width: 999px) { .faq-choix-invite span { display: inline-block; transform: rotate(90deg); } .faq-choix-reponse { min-height: 0; } .faq-choix-invite { min-height: 80px; } }
.faq-choix-carte { animation: v2-trajets-in .35s cubic-bezier(.16, 1, .3, 1); }
.faq-choix-carte[hidden], .faq-choix-invite[hidden] { display: none; }
.faq-choix-titre { margin: 0 0 14px; font-size: clamp(20px, 1.6vw, 24px); font-weight: 600; line-height: 1.2; color: var(--v2-navy); }
.faq-choix-texte { color: var(--v2-muted); font-size: 16px; line-height: 1.6; }
.faq-choix-texte p { margin: 0 0 10px; }
.faq-choix-texte p:first-child strong { display: inline-flex; align-items: center; gap: 10px; padding: 8px 16px; border-radius: 12px; background: var(--v2-navy); color: #fff; font-size: 15px; font-weight: 600; letter-spacing: .04em; }
.faq-choix-carte .u-button { margin-top: 8px; }
@media (max-width: 999px) { .faq-choix-reponse { padding: 22px; } }
@media (prefers-reduced-motion: reduce) { .faq-choix-carte { animation: none; } }

/* ==========================================================================
   30. Offres et séjours organisés (composant offres-sejours)
   ========================================================================== */
.v2-offres { padding: 72px 0; }
.v2-offres-tete, .v2-offres-liste, .v2-offres-vide { grid-column: span 12; }
@media (min-width: 760px) { .v2-offres-tete, .v2-offres-liste, .v2-offres-vide { grid-column: 2 / span 10; } }
.v2-offres-tete { margin-bottom: 32px; max-width: 760px; }
.v2-offres-titre { margin: 0 0 12px; font-size: clamp(26px, 2.6vw, 38px); font-weight: 600; line-height: 1.15; color: var(--v2-navy); }
.v2-offres-intro { color: var(--v2-muted); font-size: 17px; line-height: 1.6; }
.v2-offres-liste { display: grid; gap: 24px; }
.v2-offre { display: grid; overflow: hidden; border-radius: 24px; background: #fff; box-shadow: 0 1px 2px rgba(3, 13, 48, .06), 0 12px 32px rgba(3, 13, 48, .07); }
@media (min-width: 900px) { .v2-offre { grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); } }
.v2-offre-visuel { position: relative; min-height: 240px; background: var(--v2-navy); }
.v2-offre-visuel img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.v2-offre-depart { position: absolute; left: 16px; top: 16px; display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px; background: var(--v2-navy); color: #fff; font-size: 14px; font-weight: 600; }
.v2-offre-depart svg { width: 16px; height: 16px; fill: currentColor; }
.v2-offre-corps { padding: 28px; display: flex; flex-direction: column; align-items: flex-start; gap: 4px; }
.v2-offre-type { margin: 0; padding: 4px 12px; border-radius: 999px; background: var(--v2-peche); color: var(--v2-navy); font-size: 13px; font-weight: 600; }
.v2-offre-destination { margin: 10px 0 14px; font-size: clamp(24px, 2.2vw, 32px); font-weight: 600; line-height: 1.1; color: var(--v2-navy); }
.v2-offre-infos { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 12px; width: 100%; margin: 0 0 16px; }
.v2-offre-infos > div { padding: 12px 14px; border-radius: 14px; background: var(--v2-grey); }
.v2-offre-infos dt { margin: 0 0 2px; color: var(--v2-muted); font-size: 13px; }
.v2-offre-infos dd { margin: 0; color: var(--v2-navy); font-size: 15px; font-weight: 600; }
.v2-offre-prix dd strong { font-size: 22px; color: var(--v2-blue); }
.v2-offre-prix dd span { color: var(--v2-muted); font-size: 13px; font-weight: 400; }
.v2-offre-texte { color: var(--v2-muted); font-size: 16px; line-height: 1.6; }
.v2-offre-agences-titre { margin: 8px 0 6px; color: var(--v2-navy); font-size: 14px; font-weight: 600; }
.v2-offre-agences { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 16px; padding: 0; list-style: none; }
.v2-offre-agences li { padding: 6px 12px; border-radius: 10px; background: var(--v2-navy); color: #fff; font-size: 14px; font-weight: 600; }
.v2-offres-vide { display: grid; gap: 20px; align-items: center; padding: 32px; border-radius: 24px; background: var(--v2-navy); color: #fff; }
@media (min-width: 900px) { .v2-offres-vide { grid-template-columns: auto 1fr auto; padding: 40px 44px; } }
.v2-offres-vide-picto { width: 64px; height: 64px; border-radius: 18px; display: inline-flex; align-items: center; justify-content: center; background: rgba(255, 255, 255, .1); }
.v2-offres-vide-picto svg { width: 30px; height: 30px; fill: #fff; }
.v2-offres-vide-titre { margin: 0 0 8px; font-size: clamp(22px, 2vw, 28px); font-weight: 600; line-height: 1.2; color: #fff; }
.v2-offres-vide p { margin: 0; color: rgba(255, 255, 255, .78); font-size: 16px; line-height: 1.6; }
/* Textes saisis dans le BO : paragraphes espacés, adresses e-mail coupables (elles débordaient des vignettes) */
.content-text p + p { margin-top: .9em; }
.content-text a, .faq-vignette-text a, .faq-choix-texte a { overflow-wrap: anywhere; }

/* --- 31. Méga-menu mixte, recherche en verre, statuts de vol dans la charte (10/11) --- */
/* Rubrique mixte : destinations | compagnies | carte « À ne pas manquer » sur la même ligne */
.v2-mega-corps--vedettes { grid-template-columns: minmax(0, 2.2fr) minmax(0, 1fr) minmax(200px, .9fr); gap: 32px; }
.v2-mega-vedettes { display: flex; flex-direction: column; gap: 10px; }
.v2-mega-corps--vedettes .v2-mega-destinations { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.v2-mega-corps--vedettes .v2-mega-destination-info { font-size: 11px; }
.v2-mega-vedette {
  position: relative; display: flex; flex-direction: column; justify-content: flex-end; gap: 4px;
  min-height: 256px; padding: 18px; border-radius: 18px; overflow: hidden; isolation: isolate;
  background: var(--v2-navy); color: #fff !important; text-decoration: none;
}
.v2-mega-vedettes li:not(:only-child) .v2-mega-vedette { min-height: 123px; }
.v2-mega-vedette img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; transition: transform .8s cubic-bezier(.16, 1, .3, 1); }
.v2-mega-vedette::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(3, 13, 48, 0) 30%, rgba(3, 13, 48, .85)); }
.v2-mega-vedette-nom { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; font-size: 20px; font-weight: 600; line-height: 1.15; }
.v2-mega-vedette-nom span { transition: transform .35s cubic-bezier(.16, 1, .3, 1); }
.v2-mega-vedette-info { font-size: 13px; opacity: .85; }
.v2-mega-vedette:hover img, .v2-mega-vedette:focus-visible img { transform: scale(1.06); }
.v2-mega-vedette:hover .v2-mega-vedette-nom span, .v2-mega-vedette:focus-visible .v2-mega-vedette-nom span { transform: translateX(4px); }

/* Statuts de vol : « à l'heure » en bleu de la charte (plus de vert), embarquement plein, retard en Deep Peach */
.v2-statut { background: rgba(0, 100, 167, .08); color: var(--v2-navy); }
.v2-statut::before { background: var(--v2-blue); }
.v2-statut[data-etat="embarquement"] { background: var(--v2-blue); color: #fff; }
.v2-statut[data-etat="embarquement"]::before { background: #fff; }
.v2-statut[data-etat="retard"] { background: var(--v2-blue); color: #fff; }
.v2-statut[data-etat="retard"]::before { background: #fff; }
.v2-statut[data-etat="termine"]::before { background: currentColor; }

/* Recherche de l'accueil et des destinations : verre « liquid glass » fumé, posé sur la photo et le bandeau bleu */
@media (min-width: 1000px) {
  header.c-header + aside.p-searchbar.p-searchbar {
    isolation: isolate;
    background: linear-gradient(155deg, rgba(255, 255, 255, .26) 0%, rgba(255, 255, 255, .1) 42%, rgba(207, 224, 236, .16) 100%) !important;
    -webkit-backdrop-filter: blur(26px) saturate(185%) brightness(1.04) !important; backdrop-filter: blur(26px) saturate(185%) brightness(1.04) !important;
    border: 0 !important;
    box-shadow: 0 34px 70px -30px rgba(3, 13, 48, .7), inset 0 1px 0 rgba(255, 255, 255, .55), inset 0 -1px 0 rgba(255, 255, 255, .12) !important;
  }
  /* Reflet en haut à gauche et liseré lumineux qui suit l'arrondi */
  header.c-header + aside.p-searchbar.p-searchbar::before,
  header.c-header + aside.p-searchbar.p-searchbar::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: -1; }
  header.c-header + aside.p-searchbar.p-searchbar::before {
    background: radial-gradient(90% 140% at 8% -30%, rgba(255, 255, 255, .34), transparent 55%), radial-gradient(60% 120% at 100% 130%, rgba(0, 100, 167, .28), transparent 60%);
  }
  header.c-header + aside.p-searchbar.p-searchbar::after {
    padding: 1px; background: linear-gradient(135deg, rgba(255, 255, 255, .85), rgba(255, 255, 255, .12) 38%, rgba(255, 255, 255, .06) 62%, rgba(255, 255, 255, .5));
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
  }
  /* Textes en blanc sur le verre ; les champs restent des pastilles blanches au texte bleu nuit */
  header.c-header + aside.p-searchbar.p-searchbar.p-searchbar :is(.v2-direct, .v2-direct-item, .v2-direct-lib, .v2-direct-heure, .v2-direct-ville, .v2-direct-vide, .v2-direct-lien, .v2-direct-lien span, .p-searchbar-title, .p-searchbar-title span, .p-searchbar-form-city, .p-searchbar-form-date, .p-searchbar-form-select .dropdown-button, .p-searchbar-form-select .dropdown-button span) { color: #fff !important; }
  header.c-header + aside.p-searchbar.p-searchbar.p-searchbar :is(.v2-direct-lib, .v2-direct-vide) { color: rgba(255, 255, 255, .72) !important; }
  header.c-header + aside.p-searchbar.p-searchbar.p-searchbar .p-searchbar-form-select .dropdown-button svg path { fill: #fff !important; }
  header.c-header + aside.p-searchbar .v2-direct { border-bottom-color: rgba(255, 255, 255, .16); }
  header.c-header + aside.p-searchbar .v2-direct-lien { color: #fff !important; }
  header.c-header + aside.p-searchbar.p-searchbar.p-searchbar .v2-statut { background: rgba(255, 255, 255, .16); color: #fff !important; }
  header.c-header + aside.p-searchbar.p-searchbar.p-searchbar .v2-statut::before { background: #fff; }
  header.c-header + aside.p-searchbar.p-searchbar.p-searchbar .v2-statut[data-etat="retard"] { background: var(--v2-peche); color: var(--v2-navy) !important; }
  header.c-header + aside.p-searchbar.p-searchbar.p-searchbar .v2-statut[data-etat="retard"]::before { background: var(--v2-navy); }
  header.c-header + aside.p-searchbar .p-searchbar-form-city .dropdown-button,
  header.c-header + aside.p-searchbar input { background: rgba(255, 255, 255, .94) !important; box-shadow: 0 6px 18px -10px rgba(3, 13, 48, .55); transition: background .25s ease, box-shadow .25s ease; }
  header.c-header + aside.p-searchbar .p-searchbar-form-city .dropdown-button:hover,
  header.c-header + aside.p-searchbar input:hover, header.c-header + aside.p-searchbar input:focus { background: #fff !important; box-shadow: 0 10px 24px -10px rgba(3, 13, 48, .6); }
  header.c-header + aside.p-searchbar .p-searchbar-form-button .u-button { background: var(--v2-blue) !important; border-color: var(--v2-blue) !important; color: #fff !important; box-shadow: 0 12px 26px -12px rgba(0, 100, 167, .9); transition: transform .35s cubic-bezier(.16, 1, .3, 1), box-shadow .35s ease; }
  header.c-header + aside.p-searchbar .p-searchbar-form-button .u-button:hover { transform: translateY(-2px); box-shadow: 0 18px 30px -12px rgba(0, 100, 167, .95); }
}

/* --- 32. Mouvement : apparitions, cartes qui flottent, parallaxe, transitions de pages (10/11) ---
   Tout est désactivé si le visiteur a demandé de réduire les animations. */
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
  /* Apparition : montée souple, légère mise au point (remplace l'effet simple de la section 18) */
  .v2-apparait { opacity: 0; translate: 0 34px; scale: .985; transition: opacity .8s ease var(--v2-delai, 0ms), translate 1.1s cubic-bezier(.22, 1, .36, 1) var(--v2-delai, 0ms), scale 1.1s cubic-bezier(.22, 1, .36, 1) var(--v2-delai, 0ms); }
  .v2-apparait.v2-vu { opacity: 1; translate: 0 0; scale: 1; }
  /* Parallaxe : cadres à bords masqués, photo légèrement agrandie pour glisser sans laisser de vide */
  .v2-mouvement .c-header-background { overflow: hidden; }
  .v2-mouvement .c-header-background img { scale: 1.08; will-change: translate; }
  .v2-mouvement .v2-cadre-flottant { overflow: hidden; }
  .v2-mouvement .v2-cadre-flottant img { scale: 1.14; will-change: translate; }
  /* Cartes qui flottent au survol */
  .v2-mouvement :is(.faq-vignette, .agence, .v2-offre, .info-compagnie, .documents-list-list > *, .actus-news-item, .slider-destinations-carousel-slide, .v2-raccourci) {
    transition: translate .6s cubic-bezier(.22, 1, .36, 1), box-shadow .6s cubic-bezier(.22, 1, .36, 1);
  }
  .v2-mouvement :is(.faq-vignette, .agence, .v2-offre, .info-compagnie, .documents-list-list > *, .actus-news-item, .slider-destinations-carousel-slide, .v2-raccourci):hover {
    translate: 0 -6px; box-shadow: 0 28px 48px -28px rgba(3, 13, 48, .38);
  }
  /* Changement de page en fondu : le menu reste en place, le contenu glisse */
  @view-transition { navigation: auto; }
  nav.c-nav { view-transition-name: v2-nav; }
  .v2-onglets { view-transition-name: v2-onglets; }
  .v2-rail { view-transition-name: v2-rail; }
  ::view-transition-old(root) { animation: v2-page-sortie .28s cubic-bezier(.4, 0, 1, 1) both; }
  ::view-transition-new(root) { animation: v2-page-entree .6s cubic-bezier(.22, 1, .36, 1) both; }
}
@keyframes v2-page-sortie { to { opacity: 0; transform: translateY(-12px); } }
@keyframes v2-page-entree { from { opacity: 0; transform: translateY(22px); } }

/* --- 33. Bloc « Texte simple » (introductions de page) : mise en page éditoriale (10/11) ---
   Titre à gauche sous un trait Deep Peach, texte à droite en chapô ; même rendu sur tout le site. */
#main-content section.simple-text { padding-top: clamp(48px, 6vw, 88px); padding-bottom: clamp(32px, 4vw, 56px); }
#main-content section.simple-text .simple-text-title {
  position: relative; margin: 0; padding-top: 22px;
  font-size: clamp(28px, 3.1vw, 46px); font-weight: 600; line-height: 1.1; letter-spacing: -.02em; color: var(--v2-navy); text-wrap: balance;
}
#main-content section.simple-text .simple-text-title::before { content: ""; position: absolute; top: 0; left: 0; width: 44px; height: 4px; border-radius: 4px; background: var(--v2-peche); }
#main-content section.simple-text .simple-text-content { margin-top: 20px; font-size: 17px; line-height: 1.65; color: rgba(3, 13, 48, .82); text-wrap: pretty; }
#main-content section.simple-text .simple-text-content > p:first-child { font-size: clamp(18px, 1.5vw, 21px); line-height: 1.55; color: var(--v2-navy); }
#main-content section.simple-text .simple-text-content > p:first-child > br:first-child { display: none; }
#main-content section.simple-text .simple-text-content p { margin: 0; }
#main-content section.simple-text .simple-text-content p + p, #main-content section.simple-text .simple-text-content p + ul, #main-content section.simple-text .simple-text-content ul + p { margin-top: .85em; }
#main-content section.simple-text .simple-text-content p:empty, #main-content section.simple-text .simple-text-content p:has(> br:only-child) { display: none; }
#main-content section.simple-text .simple-text-content ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
#main-content section.simple-text .simple-text-content li { position: relative; padding-left: 26px; }
#main-content section.simple-text .simple-text-content li::before { content: ""; position: absolute; left: 4px; top: .62em; width: 8px; height: 8px; border-radius: 50%; background: var(--v2-blue); box-shadow: 0 0 0 4px rgba(0, 100, 167, .12); }
@media (min-width: 1000px) {
  #main-content section.simple-text .grid { align-items: start; }
  #main-content section.simple-text .simple-text-title { grid-column: 1 / span 5 !important; }
  #main-content section.simple-text .simple-text-content { grid-column: 7 / span 6 !important; margin-top: 26px; }
}

/* ==========================================================================
   34. Accueil : en-tête plein (photo bord à bord, sans cadre ni marge blanche),
       recherche de vols en panneau de verre vertical à droite, dans la photo
   ========================================================================== */
@media (min-width: 1000px) {
  .v2-accueil header.c-header { height: max(680px, 100svh) !important; min-height: 0 !important; }
  .v2-accueil header.c-header .c-header-background { inset: 0 !important; width: auto !important; height: auto !important; border-radius: 0 !important; }
  .v2-accueil header.c-header .c-header-background::after {
    background:
      linear-gradient(90deg, rgba(3, 13, 48, .5) 0%, rgba(3, 13, 48, .12) 45%, rgba(3, 13, 48, 0) 60%, rgba(3, 13, 48, .22) 100%),
      linear-gradient(180deg, rgba(3, 13, 48, .35) 0%, rgba(3, 13, 48, 0) 22%, rgba(3, 13, 48, 0) 55%, rgba(3, 13, 48, .62) 100%) !important;
  }
  .v2-accueil header.c-header .grid { height: 100% !important; padding-bottom: clamp(56px, 9vh, 96px) !important; align-content: end !important; }
  .v2-accueil header.c-header .c-header-title {
    grid-column: 1 / span 6 !important; font-size: clamp(44px, 4.2vw, 72px) !important;
    padding-left: max(0px, calc((100vw - 1240px) / 2 - 32px)) !important;
  }

  /* Panneau de recherche : posé sur la photo, à droite, sous le menu */
  .v2-accueil header.c-header + aside.p-searchbar.p-searchbar {
    position: absolute !important; z-index: 6;
    top: clamp(132px, 19vh, 190px) !important; right: max(88px, calc((100vw - 1240px) / 2 + 32px)) !important; left: auto !important;
    width: clamp(380px, 29vw, 430px) !important; margin: 0 !important;
  }
  /* (10/11, soir : panneau vertical abandonné au profit d'une barre centrée en bas : section 41) */

  /* La suite démarre net sous la photo : plus de chevauchement */
  .v2-accueil header.c-header + aside.p-searchbar + #main-content > .v2-acces + section.flights .flights-wrapper { margin-top: 0 !important; padding-top: 4.5rem !important; }
}

/* ==========================================================================
   35. Cartes de contact : vraie carte de visite, actions cliquables en pastilles
   ========================================================================== */
.contact-blocks-item.contact-blocks-item {
  position: relative; display: flex; flex-direction: column; gap: 10px;
  background: #fff !important; border: 1px solid rgba(3, 13, 48, .08) !important; border-radius: 20px !important;
  padding: 26px 26px 24px !important; box-shadow: 0 18px 40px -30px rgba(3, 13, 48, .45);
  overflow: hidden; text-align: left !important; align-items: flex-start !important;
}
.contact-blocks-item.contact-blocks-item::before {
  content: ""; position: absolute; left: 26px; top: 0; width: 36px; height: 4px; border-radius: 0 0 4px 4px; background: var(--v2-blue);
}
.contact-blocks-item .contact-blocks-item-title { margin: 6px 0 0 !important; font-size: 20px !important; line-height: 1.25 !important; font-weight: 600 !important; color: var(--v2-navy) !important; letter-spacing: -.01em; text-transform: none !important; }
.contact-blocks-item .contact-blocks-item-description { margin: 0 !important; font-size: 15px !important; line-height: 1.55 !important; }
.contact-blocks-item-actions { list-style: none; margin: auto 0 0 !important; padding: 8px 0 0 !important; display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.contact-blocks-item-actions li { margin: 0 !important; padding: 0 !important; }
.contact-blocks-item-actions li::before { content: none !important; }
.contact-blocks-item-action {
  display: inline-flex; align-items: center; gap: 10px; max-width: 100%;
  padding: 6px 16px 6px 6px; border-radius: 999px; background: rgba(0, 100, 167, .07);
  color: var(--v2-navy) !important; font-weight: 600; font-size: 15px; text-decoration: none !important;
  transition: background .25s ease, color .25s ease, transform .25s ease;
}
.contact-blocks-item-action > span:last-child { overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.contact-blocks-item-picto { flex: none; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: var(--v2-blue); }
.contact-blocks-item-picto svg { width: 15px; height: 15px; }
.contact-blocks-item-picto svg path { fill: #fff !important; }
a.contact-blocks-item-action:hover, a.contact-blocks-item-action:focus-visible { background: var(--v2-blue); color: #fff !important; transform: translateY(-1px); }
a.contact-blocks-item-action:hover .contact-blocks-item-picto, a.contact-blocks-item-action:focus-visible .contact-blocks-item-picto { background: rgba(255, 255, 255, .2); }
.contact-blocks-item-action--fax { background: transparent; padding-left: 0; font-weight: 500; color: var(--v2-muted) !important; }
.contact-blocks-item-action--fax .contact-blocks-item-picto { background: rgba(3, 13, 48, .08); }
.contact-blocks-item-action--fax .contact-blocks-item-picto svg path { fill: var(--v2-navy) !important; }

/* Grille : 3 cartes par ligne sur grand écran quand il y en a beaucoup (taxis, aéroclubs) */
@media (min-width: 1000px) {
  .contact-blocks[data-contact-layout=standard] .contact-blocks-items,
  .contact-blocks:not([data-contact-layout]) .contact-blocks-items { display: grid !important; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px !important; }
  .contact-blocks[data-contact-layout=standard] .contact-blocks-item { flex: none !important; }
}

/* ==========================================================================
   36. Accueil : bento « prochains vols » détaché de la recherche (sous le titre,
       tuiles blanches pleines) ; compagnie en pastille sur les cartes destinations
   ========================================================================== */
@media (min-width: 1000px) {
  /* La colonne de droite empile deux bulles : la recherche (verre) puis les prochains vols (bleu nuit plein) */
  .v2-accueil header.c-header + aside.p-searchbar.p-searchbar {
    top: clamp(112px, 16vh, 170px) !important; display: flex; flex-direction: column; gap: 12px;
    background: none !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important;
    box-shadow: none !important; border: 0 !important; border-radius: 0 !important; overflow: visible !important; isolation: auto;
  }
  .v2-accueil header.c-header + aside.p-searchbar.p-searchbar::before,
  .v2-accueil header.c-header + aside.p-searchbar.p-searchbar::after { content: none !important; }
  .v2-accueil header.c-header + aside.p-searchbar form {
    position: relative; isolation: isolate; border-radius: 22px;
    background: linear-gradient(155deg, rgba(255, 255, 255, .26) 0%, rgba(255, 255, 255, .1) 42%, rgba(207, 224, 236, .16) 100%);
    -webkit-backdrop-filter: blur(26px) saturate(185%) brightness(1.04); backdrop-filter: blur(26px) saturate(185%) brightness(1.04);
    box-shadow: 0 34px 70px -30px rgba(3, 13, 48, .7), inset 0 1px 0 rgba(255, 255, 255, .55), inset 0 -1px 0 rgba(255, 255, 255, .12);
  }
  .v2-accueil header.c-header + aside.p-searchbar form::before,
  .v2-accueil header.c-header + aside.p-searchbar form::after { content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: -1; }
  .v2-accueil header.c-header + aside.p-searchbar form::before { background: radial-gradient(90% 140% at 8% -30%, rgba(255, 255, 255, .34), transparent 55%), radial-gradient(60% 120% at 100% 130%, rgba(0, 100, 167, .28), transparent 60%); }
  .v2-accueil header.c-header + aside.p-searchbar form::after {
    padding: 1px; background: linear-gradient(135deg, rgba(255, 255, 255, .85), rgba(255, 255, 255, .12) 38%, rgba(255, 255, 255, .06) 62%, rgba(255, 255, 255, .5));
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0);
  }

  /* Bulle « prochains vols » : une seule couleur, départ et arrivée côte à côte, lien en pied */
  .v2-direct.v2-direct--bento {
    display: grid; grid-template-columns: 1fr 1fr; align-items: stretch; gap: 0; margin: 0; padding: 0; border: 0;
    background: rgba(3, 13, 48, .9); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
    border-radius: 22px; box-shadow: 0 24px 50px -26px rgba(3, 13, 48, .8); overflow: hidden;
  }
  .v2-direct--bento .v2-direct-item { display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start; text-align: left; gap: 2px; margin: 0; padding: 15px 20px 13px; white-space: normal; }
  .v2-direct--bento .v2-direct-item + .v2-direct-item { border-left: 1px solid rgba(255, 255, 255, .12); }
  .v2-direct--bento .v2-direct-lib { display: inline-flex; align-items: center; gap: 7px; margin-bottom: 6px; font-size: 11px; font-weight: 600; letter-spacing: .07em; text-transform: uppercase; }
  .v2-direct--bento .v2-direct-lib svg { width: 16px; height: 16px; flex: none; }
  .v2-accueil header.c-header + aside.p-searchbar .v2-direct--bento .v2-direct-lib svg path { fill: #b3cde0 !important; }
  .v2-direct--bento .v2-direct-heure { font-size: 26px; line-height: 1; font-weight: 600; letter-spacing: -.02em; }
  .v2-direct--bento .v2-direct-ville { font-size: 15px; font-weight: 600; }
  .v2-accueil header.c-header + aside.p-searchbar.p-searchbar.p-searchbar .v2-direct--bento .v2-direct-cie { font-size: 12px; color: rgba(255, 255, 255, .62) !important; }
  .v2-direct--bento .v2-statut { margin-top: 6px; font-size: 11px; padding: 2px 9px; }
  .v2-accueil header.c-header + aside.p-searchbar.p-searchbar.p-searchbar .v2-direct--bento .v2-statut:not([data-etat="retard"]) { background: #cfe0ec; color: var(--v2-navy) !important; }
  .v2-accueil header.c-header + aside.p-searchbar.p-searchbar.p-searchbar .v2-direct--bento .v2-statut:not([data-etat="retard"])::before { background: var(--v2-blue); }
  .v2-direct--bento .v2-direct-vide { font-size: 14px; line-height: 1.35; }
  .v2-direct--bento .v2-direct-lien {
    grid-column: 1 / -1; margin: 0; display: flex; align-items: center; justify-content: space-between;
    padding: 11px 20px; border-top: 1px solid rgba(255, 255, 255, .12); font-size: 14px; font-weight: 600;
    transition: background .25s ease;
  }
  .v2-direct--bento .v2-direct-fleche { font-size: 18px; line-height: 1; transition: transform .25s ease; }
  .v2-direct--bento .v2-direct-lien:hover, .v2-direct--bento .v2-direct-lien:focus-visible { background: var(--v2-blue); text-decoration: none; }
  .v2-direct--bento .v2-direct-lien:hover .v2-direct-fleche { transform: translateX(4px); }
}
.v2-dest-cie {
  position: absolute; top: 12px; left: 12px; z-index: 3; display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 11px 5px 8px; border-radius: 999px; background: rgba(255, 255, 255, .9);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  font-size: 12px; font-weight: 600; letter-spacing: .02em; color: var(--v2-navy);
}
.v2-dest-cie svg { width: 14px; height: 14px; }
.v2-dest-cie svg path { fill: var(--v2-blue) !important; }

/* ==========================================================================
   37. Accueil, retouches du 10/11 : la photo se fond dans le bleu nuit des vols (plus de coupure),
       titre et colonne de droite calés sur les marges du menu et sur une même ligne de base
   ========================================================================== */
@media (min-width: 1000px) {
  .v2-accueil { --v2-bas-entete: clamp(56px, 8vh, 88px); --v2-droite-entete: 40px; }
  .v2-accueil header.c-header { height: max(760px, 100svh) !important; }
  .v2-accueil header.c-header .c-header-background::after {
    background:
      linear-gradient(90deg, rgba(3, 13, 48, .45) 0%, rgba(3, 13, 48, .1) 42%, rgba(3, 13, 48, 0) 58%, rgba(3, 13, 48, .18) 100%),
      linear-gradient(180deg, rgba(3, 13, 48, .32) 0%, rgba(3, 13, 48, 0) 20%, rgba(3, 13, 48, 0) 50%, rgba(3, 13, 48, .5) 76%, rgba(3, 13, 48, .86) 92%, #030d30 100%) !important;
  }
  .v2-accueil header.c-header:has(+ aside.p-searchbar) .grid { padding-bottom: var(--v2-bas-entete) !important; }
  .v2-accueil header.c-header .c-header-title {
    grid-column: 1 / -1 !important; padding-left: 12px !important; padding-right: 0 !important; margin-bottom: 0 !important;
    max-width: calc(100vw - clamp(380px, 29vw, 430px) - var(--v2-droite-entete) - 140px);
    font-size: clamp(44px, 4vw, 76px) !important;
  }
  /* La pile recherche + prochains vols s'aligne en bas sur le titre, à droite sur le menu */
  .v2-accueil header.c-header + aside.p-searchbar.p-searchbar {
    top: auto !important; bottom: calc(100% - max(760px, 100svh) + var(--v2-bas-entete)) !important;
    right: var(--v2-droite-entete) !important;
  }
}
/* À partir de 1221 px, le rail de raccourcis occupe le bord droit : la pile s'en écarte */
@media (min-width: 1221px) {
  .v2-accueil { --v2-droite-entete: 104px; }
}

/* ==========================================================================
   38. Rail de raccourcis plus discret : petits ronds collés au bord, sans panneau,
       le libellé n'apparaît qu'au survol (10/11)
   ========================================================================== */
@media (min-width: 1221px) {
  #main-content .grid, .p-footer .grid { padding-right: 64px; }
  .v2-accueil { --v2-droite-entete: 72px; }
  .v2-rail { right: 12px; }
  .v2-rail ul.v2-rail-liste, .v2-rail ul {
    padding: 0 !important; gap: 8px; background: none !important; border: 0 !important; box-shadow: none !important;
    -webkit-backdrop-filter: none !important; backdrop-filter: none !important; border-radius: 0;
  }
  .v2-rail a {
    width: 38px; height: 38px; border-radius: 50%;
    background: rgba(255, 255, 255, .82); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
    box-shadow: 0 4px 14px -6px rgba(3, 13, 48, .35); color: var(--v2-navy); opacity: .78;
    transition: opacity .2s ease, background .2s ease, color .2s ease, transform .2s ease;
  }
  .v2-rail li:first-child a { background: rgba(255, 255, 255, .82); color: var(--v2-navy); }
  .v2-rail a:hover, .v2-rail a:focus-visible,
  .v2-rail li:first-child a:hover, .v2-rail li:first-child a:focus-visible { opacity: 1; background: var(--v2-blue); color: #fff; transform: scale(1.08); }
  .v2-rail a[aria-current="page"] { opacity: 1; background: var(--v2-navy); color: #fff; }
  .v2-rail a[aria-current="page"]::after { content: none; }
  .v2-rail-picto svg { width: 18px; height: 18px; }
  .v2-rail-txt { right: calc(100% + 10px); }
  .v2-haut { right: 12px; }
}

/* ==========================================================================
   39. Accueil : zone « Accès rapides » (tuile bleu nuit + cartes photo en bento)
   ========================================================================== */
.acces-rapides { padding: clamp(56px, 7vw, 104px) 0; }
.acces-rapides .grid { row-gap: 14px; }
.acces-rapides-intro {
  grid-column: 1 / -1; position: relative; overflow: hidden; isolation: isolate;
  display: flex; flex-direction: column; gap: 18px; padding: clamp(28px, 3vw, 40px);
  border-radius: 24px; background: var(--v2-navy); color: #fff;
}
.acces-rapides-embleme { position: absolute; right: -90px; bottom: -110px; width: 340px; height: 340px; z-index: -1; opacity: .14; pointer-events: none; }
.acces-rapides-embleme svg { width: 100%; height: 100%; }
.acces-rapides-embleme svg path { fill: none !important; stroke: #cfe0ec; stroke-width: .6; }
.acces-rapides-intro::before { content: ""; width: 44px; height: 4px; border-radius: 4px; background: var(--v2-peche); }
.acces-rapides .acces-rapides-title { margin: 0 !important; color: #fff !important; font-size: clamp(28px, 2.6vw, 40px) !important; line-height: 1.1 !important; letter-spacing: -.02em; text-transform: none !important; }
.acces-rapides-texte, .acces-rapides-texte p { margin: 0; color: rgba(255, 255, 255, .78) !important; font-size: 16px; line-height: 1.6; }
.acces-rapides-texte p + p { margin-top: 10px; }
.acces-rapides-liens { list-style: none; margin: auto 0 0 !important; padding: 0 !important; border-top: 1px solid rgba(255, 255, 255, .14); }
.acces-rapides-liens li { margin: 0 !important; padding: 0 !important; border-bottom: 1px solid rgba(255, 255, 255, .14); }
.acces-rapides-liens li::before { content: none !important; }
.acces-rapides-liens a { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 2px; color: #fff !important; font-weight: 600; text-decoration: none !important; transition: color .2s ease, padding .25s ease; }
.acces-rapides-liens a svg { width: 16px; height: 16px; flex: none; transition: transform .25s ease; }
.acces-rapides-liens a svg path { fill: currentColor !important; }
.acces-rapides-liens a:hover, .acces-rapides-liens a:focus-visible { color: #cfe0ec !important; padding-left: 6px; }
.acces-rapides-liens a:hover svg { transform: translateX(4px); }

.acces-rapides-cartes { grid-column: 1 / -1; list-style: none; margin: 0 !important; padding: 0 !important; display: grid; grid-template-columns: 1fr; gap: 14px; }
.acces-rapides-carte { margin: 0 !important; padding: 0 !important; min-width: 0; }
.acces-rapides-carte::before { content: none !important; }
.acces-rapides-carte-lien {
  position: relative; isolation: isolate; display: flex; flex-direction: column; justify-content: space-between; height: 100%; min-height: 230px;
  padding: 18px; border-radius: 22px; overflow: hidden; background: var(--v2-blue); color: #fff !important; text-decoration: none !important;
  box-shadow: 0 20px 40px -30px rgba(3, 13, 48, .7);
}
.acces-rapides-carte-lien > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.acces-rapides-carte-lien::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(3, 13, 48, .1) 0%, rgba(3, 13, 48, .05) 35%, rgba(3, 13, 48, .82) 100%); }
a.acces-rapides-carte-lien:hover > img, a.acces-rapides-carte-lien:focus-visible > img { transform: scale(1.06); }
.acces-rapides-carte-haut { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.acces-rapides-carte-picto { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; background: rgba(255, 255, 255, .92); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.acces-rapides-carte-picto svg { width: 22px; height: 22px; }
.acces-rapides-carte-picto svg * { stroke: var(--v2-navy); }
.acces-rapides-carte-picto svg [fill]:not([fill="none"]) { fill: var(--v2-navy); }
.acces-rapides-carte-badge { padding: 6px 12px; border-radius: 999px; background: var(--v2-peche); color: var(--v2-navy); font-size: 13px; font-weight: 700; white-space: nowrap; }
.acces-rapides-carte-bas { display: flex; flex-direction: column; gap: 4px; padding-right: 44px; }
.acces-rapides .acces-rapides-carte-titre { margin: 0 !important; color: #fff !important; font-size: 21px !important; line-height: 1.2 !important; font-weight: 600 !important; text-transform: none !important; }
.acces-rapides-carte-texte { font-size: 14px; line-height: 1.45; color: rgba(255, 255, 255, .85); }
.acces-rapides-carte-fleche { position: absolute; right: 18px; bottom: 18px; display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; background: #fff; transition: background .25s ease, transform .25s ease; }
.acces-rapides-carte-fleche svg { width: 15px; height: 15px; }
.acces-rapides-carte-fleche svg path { fill: var(--v2-navy) !important; }
a.acces-rapides-carte-lien:hover .acces-rapides-carte-fleche, a.acces-rapides-carte-lien:focus-visible .acces-rapides-carte-fleche { background: var(--v2-peche); transform: translateX(3px); }

@media (min-width: 640px) and (max-width: 999px) {
  .acces-rapides-cartes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .acces-rapides-carte:first-child { grid-column: 1 / -1; }
}
@media (min-width: 1000px) {
  .acces-rapides .grid { column-gap: 14px; align-items: stretch; }
  .acces-rapides-intro { grid-column: 1 / span 4; }
  .acces-rapides-cartes { grid-column: 5 / -1; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: minmax(250px, 1fr); }
  .acces-rapides-cartes[data-nombre="5"] .acces-rapides-carte:first-child,
  .acces-rapides-cartes[data-nombre="2"] .acces-rapides-carte:first-child { grid-column: span 2; }
  .acces-rapides-carte:first-child .acces-rapides-carte-titre { font-size: 26px !important; }
}

/* 40. Accueil : phrase d'accroche sous le titre */
.c-header-accroche {
  grid-column: 1 / -1; position: relative; z-index: 5; margin: 14px 0 0; padding: 0 20px;
  color: rgba(255, 255, 255, .9); font-size: clamp(17px, 4.6vw, 20px); line-height: 1.4; font-weight: 500;
  text-shadow: 0 2px 18px rgba(3, 13, 48, .45); text-wrap: balance;
}
@media (min-width: 1000px) {
  .v2-accueil .c-header-accroche {
    padding-left: 12px; max-width: min(620px, calc(100vw - clamp(380px, 29vw, 430px) - var(--v2-droite-entete) - 140px));
    font-size: clamp(18px, 1.5vw, 23px);
  }
}

/* ==========================================================================
   41. Accueil, version finale du 10/11 : recherche centrée en bas de la photo (verre), bande bleu nuit
       des prochains vols juste en dessous ; titre et accroche au-dessus, à gauche
   ========================================================================== */
@media (min-width: 1000px) {
  .v2-accueil { --v2-pile: 282px; }
  .v2-accueil header.c-header + aside.p-searchbar.p-searchbar {
    left: 0 !important; right: 0 !important; margin: 0 auto !important;
    width: min(1240px, calc(100vw - 2 * var(--v2-droite-entete))) !important;
  }
  .v2-accueil header.c-header:has(+ aside.p-searchbar) .grid { padding-bottom: calc(var(--v2-bas-entete) + var(--v2-pile) + 40px) !important; }
  .v2-accueil header.c-header .c-header-title,
  .v2-accueil .c-header-accroche { max-width: none !important; }
  .v2-accueil header.c-header .grid > * { padding-left: max(12px, calc((100vw - 1240px) / 2 - 32px)) !important; }
  .v2-direct.v2-direct--bento { grid-template-columns: 1fr 1fr auto; align-items: center; }
  .v2-direct--bento .v2-direct-item { flex-direction: row; flex-wrap: wrap; align-items: baseline; column-gap: 12px; row-gap: 2px; padding: 16px 24px; }
  .v2-direct--bento .v2-direct-lib { flex-basis: 100%; margin-bottom: 2px; }
  .v2-direct--bento .v2-direct-heure { font-size: 24px; }
  .v2-direct--bento .v2-statut { margin-top: 0; align-self: center; }
  .v2-direct--bento .v2-direct-lien { grid-column: auto; align-self: stretch; gap: 14px; padding: 0 26px; border-top: 0; border-left: 1px solid rgba(255, 255, 255, .12); }
}

/* ==========================================================================
   42. Bloc « texte + image » : image en cadre arrondi, colonne de texte plus large,
       alternance gauche / droite quand plusieurs blocs se suivent
   ========================================================================== */
.content-img { position: relative; border-radius: 24px; overflow: hidden; box-shadow: 0 30px 60px -38px rgba(3, 13, 48, .6); }
.content-img img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 0 !important; aspect-ratio: 4 / 3; }
.content .content-title { position: relative; padding-top: 22px; }
.content .content-title::before { content: ""; position: absolute; left: 0; top: 0; width: 44px; height: 4px; border-radius: 4px; background: var(--v2-peche); }
.content-text { font-size: 17px; }
.content-texts .u-button { margin-top: 22px; }
@media (min-width: 1000px) {
  #main-content section.content .grid { align-items: center; row-gap: 0; }
  #main-content section.content .content-img { grid-column: 1 / span 6 !important; grid-row: 1; }
  #main-content section.content .content-texts { grid-column: 8 / span 5 !important; grid-row: 1; padding: 0 !important; max-width: 560px; }
  #main-content section.content + section.content .content-img { grid-column: 7 / span 6 !important; }
  #main-content section.content + section.content .content-texts { grid-column: 1 / span 5 !important; }
  #main-content section.content + section.content + section.content .content-img { grid-column: 1 / span 6 !important; }
  #main-content section.content + section.content + section.content .content-texts { grid-column: 8 / span 5 !important; }
  .content .content-title { font-size: clamp(28px, 2.4vw, 40px) !important; line-height: 1.12 !important; letter-spacing: -.02em; }
}

/* ==========================================================================
   43. Accueil (10/11, retour client) : la bulle de recherche perd son contour blanc ;
       l'accroche « L'Aveyron, point de départ… » passe en grand, le titre (h1, gardé pour le
       référencement) devient une petite ligne au-dessus, en gris bleuté
   ========================================================================== */
.v2-accueil header.c-header + aside.p-searchbar form::after { content: none !important; }
.v2-accueil header.c-header + aside.p-searchbar form { box-shadow: 0 34px 70px -30px rgba(3, 13, 48, .7) !important; }
.v2-accueil header.c-header .grid > .c-header-title.c-header-title {
  font-size: clamp(16px, 4.2vw, 19px) !important; line-height: 1.3 !important; font-weight: 500 !important;
  letter-spacing: .01em; color: #d3dae3 !important; text-shadow: 0 1px 14px rgba(3, 13, 48, .5) !important;
}
@media (max-width: 999px) { .v2-accueil header.c-header .grid > .c-header-title.c-header-title { padding-left: 20px !important; padding-right: 20px !important; } }
.v2-accueil header.c-header .grid > .c-header-accroche {
  margin-top: 10px; color: #fff; font-size: clamp(34px, 8.6vw, 46px); line-height: 1.06; font-weight: 600;
  letter-spacing: -.02em; text-shadow: 0 2px 28px rgba(3, 13, 48, .35);
}
@media (min-width: 1000px) {
  .v2-accueil header.c-header .grid > .c-header-title.c-header-title { font-size: clamp(18px, 1.45vw, 23px) !important; }
  .v2-accueil header.c-header .grid > .c-header-accroche { font-size: clamp(44px, 4vw, 72px); box-sizing: content-box; max-width: 16em !important; margin-top: 12px; }
}

/* 44. Pages intérieures, grands écrans : texte + image et texte simple alignés sur le même cadre que
       le fil d'Ariane, les cartes de contact et les tableaux (colonnes 2 à 12) */
@media (min-width: 1200px) {
  #main-content section.simple-text .simple-text-title { grid-column: 2 / span 4 !important; }
  #main-content section.simple-text .simple-text-content { grid-column: 7 / span 6 !important; }
  #main-content section.content .content-img { grid-column: 2 / span 6 !important; }
  #main-content section.content .content-texts { grid-column: 9 / span 4 !important; }
  #main-content section.content + section.content .content-img { grid-column: 7 / span 6 !important; }
  #main-content section.content + section.content .content-texts { grid-column: 2 / span 4 !important; }
  #main-content section.content + section.content + section.content .content-img { grid-column: 2 / span 6 !important; }
  #main-content section.content + section.content + section.content .content-texts { grid-column: 9 / span 4 !important; }
}

/* ==========================================================================
   45. Retours du 10/11 au soir : menu déplié plus opaque ; listes et calendrier de la recherche en verre,
       au-dessus de la bande des prochains vols ; FAQ en accordéon fin
   ========================================================================== */
.c-nav-container.hidden-lg--max:has(.c-nav-panel.active) { background: #fff !important; }

/* La recherche passe au-dessus de la bande des vols (listes et calendrier ouverts) */
aside.p-searchbar form { position: relative; z-index: 3; }
aside.p-searchbar .v2-direct { position: relative; z-index: 1; }

/* Listes déroulantes (aller simple / aller-retour, villes) */
aside.p-searchbar .dropdown-list {
  margin-top: 8px; padding: 6px !important; border-radius: 18px !important; overflow: hidden;
  background: linear-gradient(180deg, #fff, #f5f8fc) !important;
  border: 1px solid rgba(3, 13, 48, .06) !important;
  box-shadow: 0 26px 50px -22px rgba(3, 13, 48, .5), inset 0 1px 0 rgba(255, 255, 255, .9) !important;
}
aside.p-searchbar .dropdown-options { display: flex; flex-direction: column; gap: 2px; padding: 0 !important; }
aside.p-searchbar.p-searchbar .dropdown-options button {
  width: 100%; margin: 0 !important; padding: 10px 14px !important; border: 0 !important; border-radius: 12px !important;
  background: transparent !important; color: var(--v2-navy) !important; font-size: 15px !important; font-weight: 500; text-align: left;
  transition: background .15s ease, color .15s ease;
}
aside.p-searchbar.p-searchbar .dropdown-options button:hover,
aside.p-searchbar.p-searchbar .dropdown-options button:focus-visible { background: rgba(0, 100, 167, .1) !important; color: var(--v2-blue) !important; outline: none; }

/* Calendrier maison (ordinateur) */
.v2-cal-champ { position: relative; }
.v2-cal-declencheur { position: absolute; inset: 0; z-index: 2; width: 100%; padding: 0; border: 0; border-radius: 12px; background: transparent; cursor: pointer; }
.v2-cal-declencheur:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 2px; }
.v2-cal {
  position: absolute; z-index: 30; top: calc(100% + 8px); left: 0; width: 304px; padding: 14px 14px 12px; border-radius: 22px;
  background: linear-gradient(180deg, #fff, #f5f8fc);
  border: 1px solid rgba(3, 13, 48, .06);
  box-shadow: 0 30px 60px -24px rgba(3, 13, 48, .55), inset 0 1px 0 rgba(255, 255, 255, .9);
  color: var(--v2-navy); animation: v2-cal-entree .22s cubic-bezier(.16, 1, .3, 1);
}
@keyframes v2-cal-entree { from { opacity: 0; transform: translateY(-6px) scale(.98); } }
.v2-cal-tete { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.v2-cal-mois { font-size: 15px; font-weight: 600; color: var(--v2-navy); }
.v2-cal-nav {
  display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; padding: 0 0 2px;
  border: 0; border-radius: 50%; background: rgba(3, 13, 48, .06); color: var(--v2-navy); font: inherit; font-size: 20px; line-height: 1; cursor: pointer;
  transition: background .15s ease, color .15s ease;
}
.v2-cal-nav:hover:not(:disabled) { background: rgba(0, 100, 167, .12); color: var(--v2-blue); }
.v2-cal-nav:disabled { opacity: .3; cursor: default; }
.v2-cal-grille { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
.v2-cal-jsem { padding: 4px 0 6px; text-align: center; font-size: 11px; font-weight: 600; letter-spacing: .04em; color: rgba(3, 13, 48, .45); }
.v2-cal-jour {
  aspect-ratio: 1; display: flex; align-items: center; justify-content: center; padding: 0; border: 0; border-radius: 50%;
  background: transparent; color: var(--v2-navy); font: inherit; font-size: 14px; cursor: pointer; transition: background .15s ease, color .15s ease;
}
.v2-cal-jour:hover:not(:disabled), .v2-cal-jour:focus-visible { background: rgba(0, 100, 167, .12); color: var(--v2-blue); outline: none; }
.v2-cal-jour.est-aujourdhui { box-shadow: inset 0 0 0 1.5px var(--v2-blue); }
.v2-cal-jour.est-choisi, .v2-cal-jour.est-choisi:hover { background: var(--v2-blue); color: #fff; font-weight: 600; }
.v2-cal-jour:disabled { color: rgba(3, 13, 48, .22); cursor: default; }

/* FAQ : accordéon fin (filets, questions plus légères, picto dans un rond) ; les vignettes et étapes ne changent pas */
section.faq:not(.v2-vignettes) .faq-title { font-size: clamp(26px, 2.2vw, 34px) !important; font-weight: 600; line-height: 1.15; letter-spacing: -.01em; }
section.faq:not(.v2-vignettes) .faq-items { gap: 0 !important; border-top: 1px solid rgba(3, 13, 48, .12); }
section.faq:not(.v2-vignettes) .faq-item {
  padding: 0 !important; margin: 0 !important; border: 0 !important; border-bottom: 1px solid rgba(3, 13, 48, .12) !important;
  border-radius: 0 !important; background: transparent !important; box-shadow: none !important;
}
section.faq:not(.v2-vignettes) .faq-item-title {
  justify-content: space-between; align-items: center; gap: 24px !important; margin: 0 !important; padding: 20px 4px !important;
  font-size: clamp(16px, 1.2vw, 18px) !important; font-weight: 500 !important; line-height: 1.4 !important; cursor: pointer; transition: color .2s ease;
}
section.faq:not(.v2-vignettes) .faq-item-title:hover,
section.faq:not(.v2-vignettes) .faq-item.active .faq-item-title { color: var(--v2-blue) !important; }
section.faq:not(.v2-vignettes) .faq-item-title > svg {
  flex: none; width: 30px !important; height: 30px !important; padding: 8px; border: 1px solid rgba(3, 13, 48, .16); border-radius: 50%;
  transition: transform .3s ease, background .2s ease, border-color .2s ease;
}
section.faq:not(.v2-vignettes) .faq-item.active .faq-item-title > svg { transform: rotate(90deg); background: var(--v2-blue); border-color: var(--v2-blue); }
section.faq:not(.v2-vignettes) .faq-item.active .faq-item-title > svg path { fill: #fff !important; }
section.faq:not(.v2-vignettes) .faq-item-text > div { padding: 0 64px 0 4px !important; font-size: 15.5px; color: var(--v2-muted, #4a5470); }
section.faq:not(.v2-vignettes) .faq-item.active .faq-item-text > div { padding-bottom: 22px !important; }
@media (max-width: 759px) { section.faq:not(.v2-vignettes) .faq-item-text > div { padding-right: 4px !important; } }
aside.p-searchbar .dropdown:not(.open) .dropdown-list { padding: 0 !important; margin-top: 0; border-width: 0 !important; box-shadow: none !important; }
/* Couleurs du calendrier : plus fortes que la règle générale « tout en bleu nuit » de la recherche d'en-tête */
html body aside.p-searchbar.p-searchbar.p-searchbar.p-searchbar .v2-cal .v2-cal-jour.est-choisi { color: #fff !important; }
html body aside.p-searchbar.p-searchbar.p-searchbar.p-searchbar .v2-cal .v2-cal-jour:disabled { color: rgba(3, 13, 48, .25) !important; }
html body aside.p-searchbar.p-searchbar.p-searchbar.p-searchbar .v2-cal .v2-cal-jsem { color: rgba(3, 13, 48, .45) !important; }
html body aside.p-searchbar.p-searchbar.p-searchbar.p-searchbar .v2-cal :is(.v2-cal-jour:not(:disabled):not(.est-choisi):hover, .v2-cal-nav:not(:disabled):hover) { color: var(--v2-blue) !important; }
.v2-cal.v2-cal--haut { top: auto; bottom: calc(100% + 8px); animation-name: v2-cal-entree-haut; }
@keyframes v2-cal-entree-haut { from { opacity: 0; transform: translateY(6px) scale(.98); } }
aside.p-searchbar .dropdown.v2-liste-haut .dropdown-list { top: auto !important; bottom: calc(100% + 8px) !important; margin-top: 0; }

/* ==========================================================================
   46. Ergonomie (10/11) : cloche des informations avec pastille, menu calé sur la largeur du contenu,
       footer plus lisible, focus clavier visible partout
   ========================================================================== */
/* Cloche : la pastille du thème existait mais restait invisible ; affichée dès qu'il y a une information.
   Rouge demandé (convention des notifications) : seule couleur hors charte du site, réservée à ce signal. */
.c-nav-tools [data-notifications-button] { position: relative; }
.c-nav-tools [data-notifications-button] svg { width: 18px !important; height: 18px !important; }
.c-nav-tools [data-notifications-button].v2-non-lu:not([data-notifications-number="0"])::after {
  opacity: 1 !important; top: -4px !important; right: -4px !important; width: 19px !important; height: 19px !important;
  background: #e0312b !important; color: #fff !important; font-size: 11px !important; font-weight: 700; line-height: 1;
  box-shadow: 0 0 0 2px #fff; animation: v2-pastille 2.4s ease-out 1s 2;
}
.c-nav-tools [data-notifications-button][data-notifications-number="0"]::after { content: none !important; }
@keyframes v2-pastille { 0% { box-shadow: 0 0 0 2px #fff, 0 0 0 2px rgba(224, 49, 43, .5); } 70% { box-shadow: 0 0 0 2px #fff, 0 0 0 10px rgba(224, 49, 43, 0); } 100% { box-shadow: 0 0 0 2px #fff; } }

/* Menu : sur grand écran, la barre ne dépasse plus la largeur du contenu (1240 px + marges intérieures) */
@media (min-width: 1400px) {
  .c-nav-container.hidden-lg--max { width: min(100%, 1320px) !important; justify-self: center; margin-left: auto !important; margin-right: auto !important; }
}

/* Footer */
.p-footer-nav-item-title { margin-bottom: 14px !important; opacity: 1 !important; color: #b3cde0 !important; font-size: 12.5px !important; font-weight: 600 !important; letter-spacing: .09em !important; text-transform: uppercase; }
.p-footer-nav-subgroup-title { opacity: 1 !important; color: rgba(179, 205, 224, .85) !important; font-size: 12.5px !important; margin-bottom: 4px !important; }
.p-footer-nav-item-links a, .p-footer-nav-subgroup a { opacity: 1 !important; color: rgba(245, 245, 245, .86) !important; font-size: 15px !important; padding: 4px 0; text-decoration: none; transition: color .2s ease; }
.p-footer-nav-item-links a:hover, .p-footer-nav-subgroup a:hover { color: #fff !important; text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
.p-footer-nav-subgroup .p-footer-nav-item-links { display: grid !important; grid-template-columns: repeat(2, max-content); column-gap: 22px; row-gap: 0; border: 0 !important; padding-left: 0 !important; margin-left: 0 !important; }
.p-footer-nav-subgroup + .p-footer-nav-subgroup { margin-top: 12px; }
.p-footer-contact-item p { font-size: 14.5px; line-height: 1.5; color: rgba(245, 245, 245, .8); }
.p-footer-contact-item a { color: #fff !important; font-size: 17px; }
.p-footer-socials a { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; border: 1px solid rgba(179, 205, 224, .3); transition: background .2s ease, border-color .2s ease; }
.p-footer-socials a:hover { background: rgba(179, 205, 224, .14); border-color: rgba(179, 205, 224, .6); }
.p-footer-socials a svg { width: 17px; height: 17px; }
.p-footer-bas {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 24px;
  margin: 8px auto 0; padding: 22px 32px calc(22px + env(safe-area-inset-bottom)); max-width: 1304px;
  border-top: 1px solid rgba(179, 205, 224, .16); color: rgba(245, 245, 245, .66); font-size: 13.5px;
}
.p-footer-bas p { margin: 0; }
.p-footer-bas-cookies { padding: 6px 0; border: 0; background: none; color: rgba(245, 245, 245, .8); font: inherit; cursor: pointer; text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1px; }
.p-footer-bas-cookies:hover { color: #fff; }
@media (max-width: 1220px) { .p-footer-bas { padding-bottom: calc(110px + env(safe-area-inset-bottom)); } }

/* Focus clavier : toujours visible (WCAG 2.4.7), bleu sur fond clair, bleu clair sur fond bleu nuit */
a:focus-visible, button:focus-visible, [tabindex]:focus-visible, summary:focus-visible { outline: 2px solid var(--v2-blue) !important; outline-offset: 3px; }
.p-footer :is(a, button):focus-visible, header.c-header :is(a, button):focus-visible, .v2-direct :is(a, button):focus-visible { outline-color: #b3cde0 !important; }
/* La cloche ne reste pas « enfoncée » : l'état non lu est porté par la pastille seule */
.c-nav-tools [data-notifications-button].active { background: #fff !important; color: var(--v2-navy) !important; }
.c-nav-tools [data-notifications-button].active svg path { fill: var(--v2-navy) !important; }

/* Panneau « Flash info » : carte claire arrondie, lisible, sur voile bleu nuit flouté */
.front-alerts { background: rgba(3, 13, 48, .55) !important; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.front-alerts-wrapper { max-width: 560px !important; border-radius: 26px !important; box-shadow: 0 40px 80px -30px rgba(3, 13, 48, .7) !important; }
.front-alerts-head { display: flex; align-items: center; gap: 10px; padding: 22px 26px !important; font-size: 20px !important; border-bottom: 1px solid rgba(3, 13, 48, .08); }
.front-alerts-head > svg { width: 20px; height: 20px; }
.front-alerts-head button { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border: 0; border-radius: 999px; background: rgba(3, 13, 48, .06); font-size: 14px; font-weight: 600; cursor: pointer; }
.front-alerts-head button:hover { background: rgba(0, 100, 167, .12); color: var(--v2-blue); }
.front-alerts-head button svg { width: 12px; height: 12px; }
.front-alerts-items { padding: 8px 26px 24px !important; }
.front-alerts-item { display: flex; gap: 14px; align-items: flex-start; padding: 16px 0 !important; }
.front-alerts-item + .front-alerts-item { border-top: 1px solid rgba(3, 13, 48, .08); }
.front-alerts-item > svg { flex: none; width: 36px; height: 36px; padding: 9px; border-radius: 50%; background: rgba(0, 100, 167, .1); }
.front-alerts-item > svg path { fill: var(--v2-blue) !important; }
.front-alerts-push-text p { margin: 0 0 .4em; line-height: 1.55; }
.front-alerts-push-text p:last-child { margin-bottom: 0; }

/* 47. Menu d'ordinateur : libellés toujours sur une ligne, espacement régulier entre rubriques
       (avec un zoom navigateur ou un écran moyen, « Vols et destinations » passait sur 2 lignes) */
@media (min-width: 1221px) {
  .c-nav-primary-list.hidden-lg--max { justify-content: flex-end; gap: clamp(6px, 1.4vw, 24px) !important; }
  .c-nav-primary-item { flex: none !important; }
  .c-nav-primary-item .c-nav-primary-trigger { white-space: nowrap !important; }
}
@media (min-width: 1221px) and (max-width: 1399px) {
  .c-nav-primary-item .c-nav-primary-trigger { font-size: 14px !important; gap: 6px !important; }
  .c-nav-primary { padding-right: 20px !important; }
}

/* 48. Sans pêche (non validé) : filets des titres sur fond clair en Lapis ; statut « retard » en Lapis plein */
#main-content section.simple-text .simple-text-title::before, .content .content-title::before { background: var(--v2-blue) !important; }
header.c-header + aside.p-searchbar.p-searchbar.p-searchbar .v2-statut[data-etat="retard"] { background: var(--v2-blue) !important; color: #fff !important; }

/* 49. Bandeau cookies : petite carte en verre en bas à gauche, dans le style du menu ; Refuser et Accepter
       de même taille (exigence CNIL : refuser aussi simple qu'accepter) */
.c-cookies .c-cookies-box {
  left: 20px !important; right: auto !important; bottom: 20px !important; width: min(380px, calc(100vw - 40px)) !important; max-width: none !important;
  padding: 16px 18px !important; border-radius: 20px !important;
  background: var(--v2-verre-fort) !important; -webkit-backdrop-filter: var(--v2-verre-flou); backdrop-filter: var(--v2-verre-flou);
  border: var(--v2-verre-bord) !important; box-shadow: 0 18px 40px -16px rgba(3, 13, 48, .35), inset 0 1px 0 rgba(255, 255, 255, .7) !important;
  color: var(--v2-navy);
}
.c-cookies .c-cookies-content { display: flex !important; flex-direction: column; align-items: stretch !important; gap: 12px !important; padding: 0 !important; }
.c-cookies .c-cookies-content-text { margin: 0 !important; font-size: 13.5px !important; line-height: 1.5 !important; color: var(--v2-navy) !important; text-align: left !important; }
.c-cookies .c-cookies-content-text a { color: var(--v2-blue) !important; text-underline-offset: 3px; }
.c-cookies .c-cookies-content-buttons { display: grid !important; grid-template-columns: 1fr 1fr; gap: 8px !important; margin: 0 !important; }
.c-cookies .c-cookies-content-buttons :is(.v2-refuser, .c-cookies-close) {
  display: inline-flex !important; align-items: center; justify-content: center; height: 40px; margin: 0 !important; padding: 0 16px !important;
  border-radius: 999px !important; font: inherit; font-size: 14px !important; font-weight: 600 !important; cursor: pointer; transition: background .2s ease, color .2s ease, border-color .2s ease;
}
.c-cookies .v2-refuser { background: transparent !important; color: var(--v2-navy) !important; border: 1.5px solid rgba(3, 13, 48, .2) !important; }
.c-cookies .v2-refuser:hover { border-color: var(--v2-navy) !important; }
.c-cookies .c-cookies-close { background: var(--v2-blue) !important; color: #fff !important; border: 1.5px solid var(--v2-blue) !important; }
.c-cookies .c-cookies-close:hover { background: var(--v2-navy) !important; border-color: var(--v2-navy) !important; }
.c-cookies .c-cookies-close span { color: inherit !important; }
@media (max-width: 1220px) {
  .c-cookies .c-cookies-box { left: 12px !important; bottom: calc(92px + env(safe-area-inset-bottom)) !important; width: calc(100vw - 24px) !important; }
}

/* 50. Pictos de contenu redessinés au trait fin (jeu Lucide, licence ISC, 10/11) : les anciennes règles
       « fill » des pictos pleins ne doivent pas remplir les tracés */
html body svg.lucide.lucide.lucide, html body svg.lucide.lucide.lucide * { fill: none !important; stroke: currentColor !important; }
html body svg.lucide.lucide.lucide { stroke-width: 1.75; }
.flights + .slider .slider-slide:hover .slider-slide-picto { color: #fff; }
.acces-rapides-carte-picto { color: var(--v2-navy); }

/* ==========================================================================
   51. Actualités de l'accueil : mise en page d'origine (3 encarts) mais plus fine, sans photos
   ========================================================================== */
.v2-masque { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.actus--fin .grid { row-gap: 16px; }
.actus--fin :is(.actus-news, .actus-social, .actus-newsletter) { background: #eceef1; padding: 24px 26px; border-radius: 20px; }
@media (min-width: 1000px) { .actus--fin :is(.actus-news, .actus-social, .actus-newsletter) { padding: 28px 32px; } }
.actus--fin .actus-subtitle { margin: 0 0 14px !important; font-size: clamp(19px, 1.5vw, 23px) !important; line-height: 1.25 !important; letter-spacing: -.005em; color: var(--v2-navy); }
.actus--fin .actus-tete { display: flex; align-items: baseline; justify-content: space-between; gap: 8px 16px; flex-wrap: wrap; margin-bottom: 6px; }
.actus--fin .actus-tete .actus-subtitle { margin: 0 !important; }
.actus--fin .actus-tout { display: inline-flex; align-items: center; gap: 6px; min-height: 24px; color: var(--v2-blue); font-size: 14px; font-weight: 600; text-decoration: none; }
.actus--fin .actus-tout:hover { text-decoration: underline; text-underline-offset: 4px; }
.actus--fin .actus-tout svg { width: 12px; height: 12px; }
.actus--fin .actus-tout svg path { fill: currentColor !important; }
.actus--fin .actus-news-items { list-style: none; margin: auto 0 0; padding: 0; }
.actus--fin .actus-news-item { position: relative; padding: 16px 0 !important; border-bottom: 1px solid rgba(3, 13, 48, .12); gap: 16px; }
.actus--fin .actus-news-item:last-child { border-bottom: 0; padding-bottom: 0 !important; }
.actus--fin .actus-news-item-texts { gap: 4px; }
.actus--fin .actus-news-item-date { font-size: 13px; font-weight: 500; color: var(--v2-muted, #5b6275); }
.actus--fin .actus-news-item-title { margin: 0; font-size: clamp(16px, 1.1vw, 17px) !important; line-height: 1.35 !important; }
.actus--fin .actus-news-item-title a { color: var(--v2-navy); text-decoration: none; transition: color .2s ease; }
.actus--fin .actus-news-item-title a::after { content: ""; position: absolute; inset: 0; }
.actus--fin .actus-news-item:hover .actus-news-item-title a { color: var(--v2-blue); }
.actus--fin .actus-news-item-title a:focus-visible { outline: none; }
.actus--fin .actus-news-item:has(a:focus-visible) { outline: 2px solid var(--v2-blue); outline-offset: 4px; border-radius: 8px; }
.actus--fin .actus-news-item-fleche { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%; background: #fff; color: var(--v2-navy); transition: background .2s ease, color .2s ease, transform .2s ease; }
.actus--fin .actus-news-item-fleche svg { width: 12px; height: 12px; }
.actus--fin .actus-news-item-fleche svg path { fill: currentColor !important; }
.actus--fin .actus-news-item:hover .actus-news-item-fleche { background: var(--v2-blue); color: #fff; transform: translateX(2px); }
.actus--fin .actus-social-items { list-style: none; margin: 0; padding: 0; display: flex; gap: 8px; flex-wrap: wrap; }
.actus--fin .actus-social-lien { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; background: #fff; color: var(--v2-navy); transition: background .2s ease, color .2s ease, transform .2s ease; }
.actus--fin .actus-social-lien:hover { background: var(--v2-blue); color: #fff; transform: translateY(-2px); }
.actus--fin .actus-social-lien svg { width: 17px; height: 17px; }
.actus--fin .actus-social-lien svg path { fill: currentColor !important; }
.actus--fin .actus-newsletter-form { gap: 10px; align-items: stretch !important; }
.actus--fin .actus-newsletter-form-wrapper { height: 48px; }
.actus--fin .actus-newsletter-form-wrapper input { padding: 0 140px 0 18px !important; font-size: 15px !important; color: var(--v2-navy) !important; border: 1px solid rgba(3, 13, 48, .1); }
.actus--fin .actus-newsletter-form-wrapper input::placeholder { color: #6b7080; }
.actus--fin .actus-newsletter-form-wrapper .u-button { right: 5px; height: 38px; padding: 0 16px !important; font-size: 14px !important; white-space: nowrap; }
.actus--fin .actus-newsletter-consent { margin: 0; font-size: 12.5px !important; line-height: 1.45; color: var(--v2-muted, #5b6275); }
.actus--fin .actus-newsletter-form-wrapper { display: block !important; position: relative; }
@media (max-width: 599px) {
  .actus--fin .actus-newsletter-form-wrapper { height: auto !important; display: flex !important; flex-direction: column; align-items: stretch; gap: 8px; }
  .actus--fin .actus-newsletter-form-wrapper input { height: 46px !important; padding: 0 18px !important; }
  .actus--fin .actus-newsletter-form-wrapper .u-button { position: static !important; transform: none !important; margin: 0 !important; height: 44px; width: 100%; justify-content: center; }
}
@media (min-width: 1000px) {
  .actus--fin .actus-news { grid-column: 1 / span 7 !important; grid-row: 1 / span 2 !important; }
  .actus--fin :is(.actus-social, .actus-newsletter) { grid-column: 8 / span 5 !important; }
}
@media (min-width: 1200px) {
  .actus--fin .actus-news { grid-column: 2 / span 6 !important; }
  .actus--fin :is(.actus-social, .actus-newsletter) { grid-column: 8 / span 4 !important; }
}

/* ==========================================================================
   52. Menu déplié : fond blanc plein (le flou saturé faisait transparaître le titre de la photo)
   ========================================================================== */
html body .c-nav-container:has(.c-nav-panel.active), html body .c-nav-container.hidden-lg--max:has(.c-nav-panel.active) { background: #fff !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; box-shadow: 0 18px 50px rgba(3, 13, 48, .18) !important; }
html.v2-menu-ouvert body .c-nav.active .c-nav-container.hidden-lg--min { background: #fff !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; box-shadow: 0 18px 50px rgba(3, 13, 48, .18) !important; }

/* ==========================================================================
   53. Vols du jour (accueil) : en-tête fin, onglets en sélecteur, tableau aéré, repères Lapis
   ========================================================================== */
section.flights .flights-table-head { flex-direction: row !important; align-items: center !important; justify-content: space-between; flex-wrap: wrap; gap: 12px 24px !important; margin-bottom: 4px; }
section.flights .flights-table-title { margin: 0 !important; padding: 0 !important; background: none !important; border-radius: 0 !important; text-transform: none !important; color: var(--v2-navy) !important; font-size: clamp(20px, 1.6vw, 24px) !important; font-weight: 600; letter-spacing: -.005em; }
section.flights .flights-table-buttons { width: auto !important; gap: 4px; padding: 4px; border-radius: 999px; background: rgba(255, 255, 255, .75); box-shadow: inset 0 0 0 1px rgba(3, 13, 48, .08); }
section.flights .flights-table-button { gap: 8px !important; min-height: 40px; padding: 0 18px; border-radius: 999px; font-size: 15px !important; font-weight: 600; line-height: 1; color: var(--v2-navy) !important; background: transparent; transition: background .2s ease, color .2s ease; cursor: pointer; }
section.flights .flights-table-button svg { width: 18px !important; height: 18px !important; min-width: 18px !important; min-height: 18px !important; }
section.flights .flights-table-button svg :is(path, circle, rect, polygon) { fill: currentColor !important; }
section.flights .flights-table-button:hover { background: rgba(0, 100, 167, .08); }
section.flights .flights-table-button.active { background: var(--v2-navy); color: #fff !important; }
section.flights .flights-table-button:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 2px; }

section.flights .flights-array .u-table { border-collapse: separate; border-spacing: 0; background: #fff; border-radius: 18px; overflow: hidden; box-shadow: 0 1px 0 rgba(3, 13, 48, .04), 0 10px 30px rgba(3, 13, 48, .06); }
section.flights .flights-array thead th { background: transparent !important; color: var(--v2-muted, #5b6275) !important; font-size: 11.5px !important; font-weight: 600; letter-spacing: .08em; padding: 14px 12px !important; border-radius: 0 !important; border-bottom: 1px solid rgba(3, 13, 48, .08); text-align: left; }
section.flights .flights-array tbody td { background: transparent !important; border-radius: 0 !important; padding: 14px 12px !important; font-size: 14.5px !important; text-align: left; border-bottom: 1px solid rgba(3, 13, 48, .06); }
section.flights .flights-array tbody tr:last-child td { border-bottom: 0; }
section.flights .flights-array :is(th, td):first-child { padding-left: 22px !important; }
section.flights .flights-array :is(th, td):last-child { padding-right: 22px !important; text-align: right; }
section.flights .flights-array tbody td:nth-child(1) { color: var(--v2-muted, #5b6275); font-size: 13.5px !important; }
section.flights .flights-array tbody td:nth-child(2) { font-size: 18px !important; font-weight: 700; color: var(--v2-navy); }
section.flights .flights-array tbody td:nth-child(3) { font-weight: 600; letter-spacing: .02em; color: var(--v2-navy); }
section.flights .flights-array tbody td:nth-child(4) { color: var(--v2-muted, #5b6275); font-size: 13.5px !important; }
section.flights .flights-array tbody tr:hover td { background: rgba(0, 100, 167, .04) !important; }

section.flights .flights-map .u-tag { background: #fff !important; color: var(--v2-navy) !important; font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; box-shadow: 0 4px 14px rgba(3, 13, 48, .12); }
section.flights .leaflet-marker-icon.v2-repere { filter: drop-shadow(0 3px 5px rgba(3, 13, 48, .25)); transition: transform .2s ease; }
@media (min-width: 1000px) {
  section.flights .flights-container > :is(.flights-map, .flights-table) { min-height: 400px; }
  section.flights .flights-map-canvas { height: 100% !important; min-height: 400px; }
}
@media (max-width: 999px) {
  section.flights .flights-carousel-slide { padding: 18px 20px !important; border-radius: 18px !important; }
  section.flights .flights-carousel-slide-line { padding: 10px 0 !important; border-bottom: 1px solid rgba(3, 13, 48, .08) !important; gap: 12px; }
  section.flights .flights-carousel-slide-line:last-child { border-bottom: 0 !important; padding-bottom: 0 !important; }
  section.flights .flights-carousel-slide :is(.flights-carousel-slide-item, .fligths-carousel-slide-item) { font-size: 12px; font-weight: 500; letter-spacing: .04em; color: var(--v2-muted, #5b6275); }
  section.flights .flights-carousel-slide-subtitle { margin-top: 2px !important; font-size: 16px !important; font-weight: 600 !important; letter-spacing: 0; color: var(--v2-navy); }
  section.flights .flights-carousel-slide-line:first-child .flights-carousel-slide-subtitle { font-size: 18px !important; }
  section.flights .flights-carousel-slide strong { font-size: 14px; font-weight: 600; color: var(--v2-navy); }
}

/* ==========================================================================
   54. Mobile cohérent avec le bureau : recherche en verre bleu (texte blanc lisible), champs en pastilles blanches
   ========================================================================== */
@media (max-width: 999px) {
  html body header.c-header + aside.p-searchbar.p-searchbar {
    position: relative; isolation: isolate; border-radius: 22px !important; overflow: visible;
    background: linear-gradient(160deg, rgba(20, 44, 104, .82) 0%, rgba(0, 100, 167, .70) 100%) !important;
    -webkit-backdrop-filter: blur(24px) saturate(180%) !important; backdrop-filter: blur(24px) saturate(180%) !important;
    border: 1px solid rgba(255, 255, 255, .22);
    box-shadow: 0 26px 50px -26px rgba(3, 13, 48, .75), inset 0 1px 0 rgba(255, 255, 255, .35) !important;
  }
  html body header.c-header + aside.p-searchbar.p-searchbar :is(.p-searchbar-title, .p-searchbar-title span, .p-searchbar-form-city, .p-searchbar-form-date, .p-searchbar-form-select .dropdown-button, .p-searchbar-form-select .dropdown-button-text, .v2-direct, .v2-direct-heure, .v2-direct-ville, .v2-direct-lien, .v2-direct-lien span) { color: #fff !important; }
  html body header.c-header + aside.p-searchbar.p-searchbar :is(.v2-direct-lib, .v2-direct-vide) { color: rgba(255, 255, 255, .75) !important; }
  html body header.c-header + aside.p-searchbar.p-searchbar :is(.p-searchbar-title, .p-searchbar-form-select .dropdown-button) svg :is(path, polygon, circle) { fill: #fff !important; }
  html body header.c-header + aside.p-searchbar.p-searchbar .p-searchbar-form-select .dropdown-button { background: rgba(255, 255, 255, .14) !important; border-radius: 999px; padding: 6px 14px !important; }
  html body header.c-header + aside.p-searchbar.p-searchbar .p-searchbar-form-city .dropdown-button,
  html body header.c-header + aside.p-searchbar.p-searchbar input { background: rgba(255, 255, 255, .96) !important; color: var(--v2-navy) !important; border-color: transparent !important; box-shadow: 0 6px 18px -10px rgba(3, 13, 48, .55); }
  html body header.c-header + aside.p-searchbar.p-searchbar .p-searchbar-form-city .dropdown-button .dropdown-button-text { color: var(--v2-navy) !important; }
  html body header.c-header + aside.p-searchbar.p-searchbar .p-searchbar-form-city .dropdown-button svg path { fill: var(--v2-navy) !important; }
  html body header.c-header + aside.p-searchbar.p-searchbar .p-searchbar-form-button .u-button { background: #fff !important; border-color: #fff !important; color: var(--v2-navy) !important; }
  html body header.c-header + aside.p-searchbar.p-searchbar .p-searchbar-form-button .u-button svg path { fill: var(--v2-navy) !important; }
  html body header.c-header + aside.p-searchbar.p-searchbar .v2-statut { background: rgba(255, 255, 255, .16) !important; color: #fff !important; }
}
/* Mobile : vols du jour en verre sur le bleu nuit (comme le bandeau « en direct » du bureau) */
@media (max-width: 999px) {
  section.flights .flights-table-title { color: #fff !important; }
  section.flights .flights-table-buttons { background: rgba(255, 255, 255, .12); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .2); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); }
  section.flights .flights-table-button { color: #fff !important; }
  section.flights .flights-table-button:hover { background: rgba(255, 255, 255, .1); }
  section.flights .flights-table-button.active { background: #fff; color: var(--v2-navy) !important; }
  html body section.flights .flights-carousel-slide {
    background: linear-gradient(160deg, rgba(255, 255, 255, .16), rgba(255, 255, 255, .06)) !important;
    -webkit-backdrop-filter: blur(18px) saturate(160%); backdrop-filter: blur(18px) saturate(160%);
    border: 1px solid rgba(255, 255, 255, .2); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .28), 0 20px 40px -24px rgba(0, 0, 0, .6);
  }
  html body section.flights .flights-carousel-slide-line { border-bottom-color: rgba(255, 255, 255, .14) !important; }
  html body section.flights .flights-carousel-slide :is(.flights-carousel-slide-item, .fligths-carousel-slide-item) { color: rgba(255, 255, 255, .72) !important; }
  html body section.flights .flights-carousel-slide :is(.flights-carousel-slide-subtitle, strong) { color: #fff !important; }
  /* Le bouton « haut de page » masquait les flèches des cartes : la barre d'onglets du bas suffit sur mobile */
  .v2-haut { display: none !important; }
}

/* ==========================================================================
   55. Partenaires en « cartes de visite » (pages Partenaires touristiques et Rodez-Aveyron)
   ========================================================================== */
.v2-partenaires .grid { row-gap: 0 !important; }
.v2-partenaires .grid > * { grid-column: 1 / -1; }
@media (min-width: 1200px) { .v2-partenaires .grid > * { grid-column: 2 / span 10; } }
.v2-partenaires-tete { max-width: 760px; margin-bottom: clamp(24px, 3vw, 40px); }
.v2-partenaires-titre { margin: 0 0 12px; font-size: clamp(26px, 2.6vw, 40px); font-weight: 600; line-height: 1.15; letter-spacing: -.01em; color: var(--v2-navy); }
.v2-partenaires-titre::before { content: ""; display: block; width: 40px; height: 3px; border-radius: 3px; background: var(--v2-blue); margin-bottom: 18px; }
.v2-partenaires-intro { margin: 0; font-size: clamp(16px, 1.2vw, 18px); line-height: 1.6; color: var(--v2-muted, #5b6275); }
.v2-partenaires-groupe + .v2-partenaires-groupe { margin-top: clamp(40px, 5vw, 64px); }
.v2-partenaires-groupe-titre { display: flex; align-items: center; gap: 12px; margin: 0 0 20px; padding-bottom: 14px; border-bottom: 1px solid rgba(3, 13, 48, .1); font-size: clamp(20px, 1.7vw, 26px); font-weight: 600; color: var(--v2-navy); }
.v2-partenaires-nombre { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; height: 28px; padding: 0 8px; border-radius: 999px; background: #e5eff7; color: var(--v2-blue); font-size: 13px; font-weight: 700; }
.v2-partenaires-cartes { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; grid-template-columns: 1fr; }
@media (min-width: 700px) { .v2-partenaires-cartes { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .v2-partenaires-cartes:not([data-nombre="2"]):not([data-nombre="4"]) { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.v2-partenaires-cartes > li { display: flex; }
.v2-partenaire {
  position: relative; display: flex; flex-direction: column; width: 100%; padding: 26px 26px 22px; border-radius: 20px;
  background: #fff; border: 1px solid rgba(3, 13, 48, .06); box-shadow: 0 1px 2px rgba(3, 13, 48, .04), 0 12px 32px -18px rgba(3, 13, 48, .18);
  transition: transform .3s cubic-bezier(.16, 1, .3, 1), box-shadow .3s ease;
}
.v2-partenaire::before { content: ""; position: absolute; left: 26px; top: 0; width: 32px; height: 3px; border-radius: 0 0 3px 3px; background: var(--v2-blue); }
.v2-partenaire:hover { transform: translateY(-3px); box-shadow: 0 1px 2px rgba(3, 13, 48, .04), 0 22px 44px -20px rgba(3, 13, 48, .28); }
.v2-partenaire-nom { margin: 0; font-size: clamp(18px, 1.35vw, 20px) !important; font-weight: 600; line-height: 1.25; color: var(--v2-navy); letter-spacing: -.005em; }
.v2-partenaire-sous { margin: 6px 0 0; font-size: 14.5px; line-height: 1.45; color: var(--v2-blue); font-weight: 500; }
.v2-partenaire-infos, .v2-partenaire-contacts { list-style: none; margin: 18px 0 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.v2-partenaire-contacts { margin-top: 14px; padding-top: 14px; border-top: 1px solid rgba(3, 13, 48, .08); }
.v2-partenaire-infos li, .v2-partenaire-contacts li { display: flex; align-items: flex-start; gap: 10px; font-size: 15px; line-height: 1.45; color: var(--v2-navy); }
.v2-partenaire-infos address { font-style: normal; }
.v2-partenaire-picto { flex: none; width: 18px; height: 18px; margin-top: 1px; color: var(--v2-blue); }
.v2-partenaire :is(.v2-partenaire-infos, .v2-partenaire-contacts) a { color: var(--v2-navy); text-decoration: underline; text-decoration-color: rgba(0, 100, 167, .35); text-underline-offset: 3px; overflow-wrap: anywhere; }
.v2-partenaire :is(.v2-partenaire-infos, .v2-partenaire-contacts) a:hover { color: var(--v2-blue); text-decoration-color: currentColor; }
.v2-partenaire-site { display: inline-flex; align-items: center; gap: 6px; align-self: flex-start; margin-top: auto; padding-top: 18px; min-height: 44px; color: var(--v2-blue); font-weight: 600; font-size: 15px; text-decoration: none; }
.v2-partenaire-site .v2-partenaire-picto { width: 16px; height: 16px; margin: 0; transition: transform .2s ease; }
.v2-partenaire-site:hover { text-decoration: underline; text-underline-offset: 4px; }
.v2-partenaire-site:hover .v2-partenaire-picto { transform: translate(2px, -2px); }
.v2-partenaires-pied { margin: 28px 0 0; }

/* ==========================================================================
   56. Compagnies : « bloc / image / carte de visite » (11/11, retour client)
   ========================================================================== */
.v2-carte-compagnie {
  position: relative; display: flex; flex-direction: column; gap: 18px; padding: 26px 26px 22px; border-radius: 20px;
  background: #fff; border: 1px solid rgba(3, 13, 48, .06); box-shadow: 0 1px 2px rgba(3, 13, 48, .04), 0 12px 32px -18px rgba(3, 13, 48, .18);
}
.v2-carte-compagnie::before { content: ""; position: absolute; left: 26px; top: 0; width: 32px; height: 3px; border-radius: 0 0 3px 3px; background: var(--v2-blue); }
.v2-carte-compagnie-tete { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }
.v2-carte-compagnie-logo { display: block; width: 140px; height: auto; max-height: 80px; object-fit: contain; object-position: left center; }
.v2-carte-compagnie-titre { margin: 0 !important; font-size: clamp(19px, 1.45vw, 22px) !important; font-weight: 600 !important; line-height: 1.25 !important; color: var(--v2-navy); }
.v2-carte-compagnie-contacts { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.v2-carte-compagnie-contacts > li { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; padding: 14px 0; border-top: 1px solid rgba(3, 13, 48, .08); }
.v2-carte-compagnie-contacts > li:last-child { padding-bottom: 0; }
.v2-carte-compagnie-objet { margin: 0 0 2px !important; font-size: 13px !important; font-weight: 600 !important; line-height: 1.4 !important; letter-spacing: .04em; text-transform: uppercase; color: var(--v2-muted, #5b6275); }
.v2-carte-compagnie-lien { display: inline-flex; align-items: center; gap: 10px; min-height: 32px; font-size: 16px; font-weight: 600; color: var(--v2-navy); text-decoration: underline; text-decoration-color: rgba(0, 100, 167, .35); text-underline-offset: 3px; overflow-wrap: anywhere; }
.v2-carte-compagnie-lien:hover { color: var(--v2-blue); text-decoration-color: currentColor; }
.v2-carte-compagnie-lien svg { flex: none; width: 18px; height: 18px; color: var(--v2-blue); }
.v2-carte-compagnie-lien svg :is(path, circle, rect, line, polyline) { stroke-width: 1.75; }
.v2-carte-compagnie-note { font-size: 14px; line-height: 1.55; color: var(--v2-muted, #5b6275); }
.v2-carte-compagnie-note p { margin: 0; }
.v2-carte-compagnie-fiche { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; min-height: 44px; color: var(--v2-blue); font-weight: 600; font-size: 15px; text-decoration: none; }
.v2-carte-compagnie-fiche svg { width: 16px; height: 16px; transition: transform .2s ease; }
.v2-carte-compagnie-fiche:hover { text-decoration: underline; text-underline-offset: 4px; }
.v2-carte-compagnie-fiche:hover svg { transform: translateX(3px); }

/* Bloc compagnie de la page « Compagnies aériennes » */
.v2-compagnie-bloc { padding: clamp(48px, 6vw, 96px) 0 clamp(24px, 3vw, 40px); }
.v2-compagnie-bloc .grid { row-gap: 24px; align-items: start; }
.v2-compagnie-bloc .grid > * { grid-column: 1 / -1; }
.v2-compagnie-bloc-img img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 20px; box-shadow: 0 24px 48px -28px rgba(3, 13, 48, .45); }
.v2-compagnie-bloc-titre { margin: 0 0 18px; font-size: clamp(28px, calc(1vw + 20px), 36px); font-weight: 600; line-height: 1.15; color: var(--v2-navy); }
.v2-compagnie-bloc-texte { font-size: 16px; line-height: 1.65; color: var(--v2-navy); }
.v2-compagnie-bloc-texte p { margin: 0 0 12px; }
.v2-compagnie-bloc-texte span[style] { font-size: inherit !important; }
.v2-compagnie-bloc-bouton { margin: 22px 0 0; }
@media (min-width: 1000px) {
  .v2-compagnie-bloc .grid { row-gap: 28px; }
  .v2-compagnie-bloc-img { grid-column: 1 / span 6 !important; grid-row: 1 / span 2; position: sticky; top: 120px; }
  .v2-compagnie-bloc-textes { grid-column: 8 / span 5 !important; grid-row: 1; }
  .v2-compagnie-bloc .v2-carte-compagnie { grid-column: 8 / span 5 !important; grid-row: 2; }
}
@media (min-width: 1200px) {
  .v2-compagnie-bloc-img { grid-column: 2 / span 5 !important; }
  .v2-compagnie-bloc-textes, .v2-compagnie-bloc .v2-carte-compagnie { grid-column: 8 / span 4 !important; }
}

/* Fiche compagnie : présentation à gauche, carte de contact à droite */
.v2-compagnie-intro .grid { row-gap: 32px; align-items: start; }
.v2-compagnie-intro .grid > * { grid-column: 1 / -1; }
.v2-compagnie-intro-texte > * { grid-column: auto !important; }
.v2-compagnie-intro .compagnie-intro-logo { margin: 0 0 28px !important; }
.v2-compagnie-intro .compagnie-intro-logo img { display: block; width: auto !important; max-width: 220px !important; max-height: 72px; height: auto !important; object-fit: contain; object-position: left center; }
.v2-compagnie-intro .compagnie-intro-title { margin: 0 0 16px !important; }
.v2-compagnie-intro .compagnie-intro-text { font-size: 16px; line-height: 1.65; }
.v2-carte-compagnie-note + .v2-carte-compagnie-lien { margin-top: 2px; }
@media (min-width: 1000px) {
  .v2-compagnie-intro-texte { grid-column: 1 / span 7 !important; }
  .v2-compagnie-intro .v2-carte-compagnie { grid-column: 9 / span 4 !important; position: sticky; top: 120px; }
}
@media (min-width: 1200px) {
  .v2-compagnie-intro-texte { grid-column: 2 / span 5 !important; }
  .v2-compagnie-intro .v2-carte-compagnie { grid-column: 8 / span 4 !important; }
}

/* 11/11 (RGAA, cible ≥ 24 px) : liens téléphone et e-mail des cartes partenaires */
.v2-partenaire :is(.v2-partenaire-infos, .v2-partenaire-contacts) a { display: inline-block; min-height: 24px; line-height: 24px; }
:is(.carousel-big-track, .slider-image-items-track, .text-carousel-track)[tabindex="0"]:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 4px; border-radius: 12px; }

/* ==========================================================================
   57. Accueil : carte « réseau » interactive (11/11) — Rodez au centre, trajectoires animées, avions, fiche
   ========================================================================== */
section.flights .flights-container > .flights-table { flex: 1 1 100%; width: 100%; min-height: 0 !important; }
/* 12/11 : sur grand écran, le titre et le module des vols du jour dépassaient à droite (12 puis 11 colonnes).
   Même largeur que la carte « réseau » et le carrousel des destinations en dessous, et moins de marge autour du tableau. */
@media (min-width: 1220px) {
  section.flights :is(.flights-title, .flights-container) { grid-column: 2 / span 10; }
  section.flights .flights-container { padding: clamp(28px, 2.6vw, 44px); }
}
.v2-reseau { grid-column: 1 / -1; position: relative; isolation: isolate; margin-top: 56px; border-radius: 28px; overflow: hidden; background: #030D30; color: #fff; border: 1px solid rgba(255, 255, 255, .12); box-shadow: 0 30px 60px -30px rgba(0, 0, 0, .6); }
.v2-reseau-carte { position: relative; z-index: 0; height: 640px; background: #030D30; }
.v2-reseau .leaflet-container { background: #030D30; font: inherit; outline: 0; }
.v2-reseau .leaflet-tile-pane { filter: grayscale(1) invert(1) brightness(.78) contrast(1.15) sepia(.4) hue-rotate(178deg) saturate(2.2); opacity: .85; }
.v2-reseau-carte::after { content: ""; position: absolute; inset: 0; z-index: 400; pointer-events: none;
  background: radial-gradient(ellipse at 60% 50%, transparent 40%, rgba(3, 13, 48, .65) 100%),
    repeating-linear-gradient(0deg, rgba(179, 205, 224, .05) 0 1px, transparent 1px 48px), repeating-linear-gradient(90deg, rgba(179, 205, 224, .05) 0 1px, transparent 1px 48px); }
.v2-reseau-arc { fill: none; stroke: #b3cde0; stroke-opacity: .6; stroke-dasharray: 3 7; stroke-linecap: round; animation: v2-flux 1.4s linear infinite; transition: stroke-opacity .3s ease, stroke-width .3s ease; }
.v2-reseau-arc.est-actif { stroke: #fff; stroke-opacity: 1; stroke-width: 3px; stroke-dasharray: 8 6; filter: drop-shadow(0 0 6px rgba(179, 205, 224, .9)); }
.v2-reseau-arc.est-estompe { stroke-opacity: .14; }
@keyframes v2-flux { to { stroke-dashoffset: -20; } }
.v2-reseau-hub, .v2-reseau-ville { background: none; border: 0; }
.v2-reseau-point { position: absolute; inset: 0; border-radius: 50%; background: #b3cde0; box-shadow: 0 0 0 3px rgba(179, 205, 224, .25), 0 0 14px rgba(179, 205, 224, .6); transition: transform .25s ease, background .25s ease; }
.v2-reseau-hub .v2-reseau-point { background: #fff; box-shadow: 0 0 0 4px #0064A7, 0 0 22px rgba(255, 255, 255, .8); }
.v2-reseau-onde { position: absolute; inset: 0; border-radius: 50%; border: 2px solid #b3cde0; animation: v2-onde 2.6s ease-out infinite; }
.v2-reseau-onde + .v2-reseau-onde { animation-delay: 1.3s; }
@keyframes v2-onde { from { transform: scale(1); opacity: .9; } to { transform: scale(5); opacity: 0; } }
.v2-reseau-nom { position: absolute; left: calc(100% + 8px); top: 50%; transform: translateY(-50%); white-space: nowrap; font-size: 13px; font-weight: 600; letter-spacing: .01em; color: #fff; text-shadow: 0 1px 3px rgba(3, 13, 48, .9), 0 0 10px rgba(3, 13, 48, .8); pointer-events: none; transition: opacity .25s ease; }
.v2-reseau-hub .v2-reseau-nom { left: 50%; top: auto; bottom: calc(100% + 10px); transform: translateX(-50%); padding: 4px 10px; border-radius: 999px; background: #fff; color: #030D30; font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; text-shadow: none; box-shadow: 0 6px 16px rgba(0, 0, 0, .35); }
.v2-reseau-ville { cursor: pointer; }
.v2-reseau-ville:hover .v2-reseau-point, .v2-reseau-ville.est-actif .v2-reseau-point { transform: scale(1.5); background: #fff; }
.v2-reseau-ville.est-actif .v2-reseau-nom { font-size: 15px; }
.v2-reseau-ville.est-estompe { opacity: .35; }
.v2-reseau-avion { background: none; border: 0; color: #fff; filter: drop-shadow(0 2px 6px rgba(0, 100, 167, .9)); transition: opacity .3s ease; pointer-events: none; }
.v2-reseau-avion > span { display: block; width: 22px; height: 22px; transform-origin: 50% 50%; }
.v2-reseau-avion svg { display: block; }

.v2-reseau-panneau { position: absolute; z-index: 500; top: 24px; left: 24px; bottom: 24px; width: 372px; display: flex; flex-direction: column; gap: 16px; padding: 26px 24px; overflow: auto; border-radius: 22px;
  background: linear-gradient(160deg, rgba(3, 13, 48, .86), rgba(3, 13, 48, .72)); -webkit-backdrop-filter: blur(18px) saturate(160%); backdrop-filter: blur(18px) saturate(160%);
  border: 1px solid rgba(255, 255, 255, .14); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .12), 0 20px 40px -20px rgba(0, 0, 0, .6); scrollbar-width: thin; }
.v2-reseau-titre { margin: 0; font-size: clamp(22px, 1.8vw, 28px); font-weight: 600; line-height: 1.15; letter-spacing: -.01em; color: #fff; }
.v2-reseau-intro { margin: -6px 0 0; font-size: 15px; line-height: 1.5; color: rgba(255, 255, 255, .78); }
.v2-reseau-chiffres { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; list-style: none; }
.v2-reseau-chiffres li { padding: 6px 12px; border-radius: 999px; background: rgba(179, 205, 224, .12); border: 1px solid rgba(179, 205, 224, .22); font-size: 13px; color: rgba(255, 255, 255, .85); }
.v2-reseau-chiffres strong { font-size: 15px; font-weight: 700; color: #fff; font-variant-numeric: tabular-nums; }
.v2-reseau-liste { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 0; padding: 0; list-style: none; }
.v2-reseau-dest { width: 100%; min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 10px 14px; border-radius: 14px; border: 1px solid rgba(255, 255, 255, .16); background: rgba(255, 255, 255, .06); color: #fff; font: inherit; text-align: left; cursor: pointer; transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s ease; }
.v2-reseau-dest:hover { background: rgba(255, 255, 255, .14); transform: translateY(-1px); }
.v2-reseau-dest:focus-visible, .v2-reseau-action:focus-visible, .v2-reseau-fiche-lien:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.v2-reseau-dest[aria-pressed="true"] { background: #fff; color: #030D30; border-color: #fff; }
.v2-reseau-dest-nom { font-size: 15px; font-weight: 600; }
.v2-reseau-dest-info { font-size: 12.5px; font-variant-numeric: tabular-nums; opacity: .75; }
.v2-reseau-fiche { border-radius: 18px; overflow: hidden; background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .14); animation: v2-fiche .35s ease; }
@keyframes v2-fiche { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.v2-reseau-fiche-img { display: block; width: 100%; aspect-ratio: 16 / 7; object-fit: cover; }
.v2-reseau-fiche-corps { padding: 16px 18px 18px; }
.v2-reseau-fiche-ville { margin: 0 0 10px; font-size: 22px; font-weight: 600; color: #fff; }
.v2-reseau-fiche-infos { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; margin: 0 0 16px; padding: 0; list-style: none; }
.v2-reseau-fiche-infos li { display: flex; flex-direction: column; gap: 2px; }
.v2-reseau-fiche-infos span { font-size: 11.5px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: rgba(255, 255, 255, .7); }
.v2-reseau-fiche-infos strong { font-size: 16px; font-weight: 600; color: #fff; font-variant-numeric: tabular-nums; }
.v2-reseau-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; }
.v2-reseau-action { min-height: 36px; padding: 0 14px; border-radius: 999px; border: 1px solid rgba(255, 255, 255, .28); background: transparent; color: #fff; font: inherit; font-size: 13.5px; font-weight: 500; cursor: pointer; transition: background .2s ease; }
.v2-reseau-action:hover { background: rgba(255, 255, 255, .12); }
.v2-reseau-aide { position: absolute; z-index: 500; right: 16px; bottom: 12px; max-width: 420px; margin: 0; padding: 6px 12px; border-radius: 10px; background: rgba(3, 13, 48, .72); font-size: 11.5px; line-height: 1.4; color: rgba(255, 255, 255, .8); text-align: right; }
.v2-reseau-aide a { color: #fff; text-decoration: underline; }
.v2-reseau.est-en-pause :is(.v2-reseau-arc, .v2-reseau-onde), .v2-reseau.est-calme :is(.v2-reseau-arc, .v2-reseau-onde, .v2-reseau-fiche) { animation: none; }
.v2-reseau.est-calme .v2-reseau-onde { display: none; }
@media (min-width: 1000px) {
  .v2-reseau { grid-column: 2 / span 10; }
  .v2-reseau-carte { height: 680px; }
  .v2-reseau-panneau > * { flex-shrink: 0; }
  .v2-reseau.a-une-selection :is(.v2-reseau-intro, .v2-reseau-chiffres) { display: none; }
  .v2-reseau-fiche-img { aspect-ratio: 16 / 6; }
}
@media (prefers-reduced-motion: reduce) { .v2-reseau :is(.v2-reseau-arc, .v2-reseau-onde, .v2-reseau-fiche) { animation: none !important; } .v2-reseau-onde { display: none; } }
@media (max-width: 999px) {
  .v2-reseau { display: flex; flex-direction: column; margin-top: 32px; border-radius: 22px; }
  .v2-reseau-carte { order: 1; height: 360px; }
  .v2-reseau-panneau { order: 2; position: static; width: auto; padding: 22px 18px; border-radius: 0; border: 0; border-top: 1px solid rgba(255, 255, 255, .12); background: #030D30; -webkit-backdrop-filter: none; backdrop-filter: none; box-shadow: none; overflow: visible; }
  .v2-reseau-liste { display: flex; gap: 8px; overflow-x: auto; margin: 0 -18px; padding: 2px 18px 6px; scroll-snap-type: x mandatory; scroll-padding-inline: 18px; scrollbar-width: none; }
  .v2-reseau-liste::-webkit-scrollbar { display: none; }
  .v2-reseau-liste li { flex: 0 0 auto; scroll-snap-align: start; }
  .v2-reseau-dest { width: auto; flex-direction: column; align-items: flex-start; gap: 0; padding: 8px 14px; }
  .v2-reseau-aide { order: 3; position: static; max-width: none; padding: 0 18px 18px; border-radius: 0; background: #030D30; text-align: left; }
  .v2-reseau-nom { font-size: 12px; }
}
/* 11/11 (axe, mobile) : « Choisir une ville » de la recherche de vol (page Réserver) trop pâle sur blanc (2,3:1) */
aside.p-searchbar .p-searchbar-form-city .dropdown:not(.is_set) .dropdown-button-text { color: #5b6275; }
aside.p-searchbar .p-searchbar-form-city .dropdown.is_set .dropdown-button-text { color: #030D30; }

/* ==========================================================================
   58. Fiche compagnie « aéroport » (11/11, retour client : « plus robuste, plus aéroport ») :
   billet d'embarquement, tableau des départs / arrivées façon panneau, démarches, jour du vol
   ========================================================================== */
.v2-cie-picto { display: inline-flex; flex-shrink: 0; }
.v2-cie-picto svg { width: 100%; height: 100%; }
.v2-cie-billet-section { padding: 48px 0 0; }
.v2-cie-billet-section .grid > *, .v2-cie-tableau-section .grid > *, .v2-cie-jour .grid > *, .v2-cie-demarches .grid > * { grid-column: 1 / -1; }
.v2-cie-billet {
  position: relative; display: grid; grid-template-columns: 1fr; border-radius: 24px; overflow: hidden;
  background: #030D30; color: #fff; box-shadow: 0 30px 60px -34px rgba(3, 13, 48, .55);
}
.v2-cie-billet > * { padding: 22px 24px; }
.v2-cie-billet-souche { display: flex; align-items: center; gap: 18px; background: #fff; color: #030D30; position: relative; }
.v2-cie-billet-logo { margin: 0; display: flex; align-items: center; justify-content: center; width: 148px; height: 64px; flex-shrink: 0; }
.v2-cie-billet-logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.v2-cie-billet-sur { margin: 0; font-size: 13px; line-height: 1.4; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: #3d4560; }
.v2-cie-billet-etiquette { display: block; font-size: 12px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: #b3cde0; margin-bottom: 6px; }
.v2-cie-billet-trajet { display: grid; grid-template-columns: auto 1fr; gap: 14px 22px; align-items: start; }
.v2-cie-billet-trajet > .v2-cie-billet-point:last-child { grid-column: 1 / -1; }
.v2-cie-billet-code { display: block; font-size: 52px; line-height: 1; font-weight: 600; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.v2-cie-billet-ville { display: block; margin-top: 6px; font-size: 14px; color: #cfe0ec; }
.v2-cie-billet-ligne { position: relative; align-self: center; height: 28px; display: flex; align-items: center; justify-content: center; color: #fff; }
.v2-cie-billet-ligne::before { content: ""; position: absolute; left: 0; right: 0; top: 50%; border-top: 2px dashed rgba(179, 205, 224, .45); }
.v2-cie-billet-ligne .v2-cie-picto { position: relative; width: 26px; height: 26px; padding: 0 8px; box-sizing: content-box; background: #030D30; transform: rotate(45deg); }
.v2-cie-billet-villes { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.v2-cie-billet-villes a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px; border-radius: 999px; border: 1px solid rgba(179, 205, 224, .35); color: #fff; font-size: 15px; font-weight: 500; text-decoration: none; transition: background .2s, border-color .2s; }
.v2-cie-billet-villes a:hover, .v2-cie-billet-villes a:focus-visible { background: #0064A7; border-color: #0064A7; }
.v2-cie-billet-chiffres { list-style: none; margin: 0; display: flex; flex-direction: column; gap: 10px; border-top: 2px dashed rgba(179, 205, 224, .3); font-size: 15px; color: #cfe0ec; }
.v2-cie-billet-chiffres strong { color: #fff; font-weight: 600; font-variant-numeric: tabular-nums; }
.v2-cie-billet-prochain { background: #0064A7; }
.v2-cie-billet-prochain .v2-cie-billet-etiquette { color: #fff; opacity: .85; }
.v2-cie-billet-prochain a, .v2-cie-billet-prochain > span:last-child { display: flex; flex-direction: column; gap: 2px; color: #fff; text-decoration: none; }
.v2-cie-billet-prochain strong { font-size: 24px; font-weight: 600; line-height: 1.2; }
.v2-cie-billet-prochain a:hover strong { text-decoration: underline; text-underline-offset: 4px; }
.v2-cie-billet-prochain a span { font-variant-numeric: tabular-nums; }
@media (min-width: 1000px) {
  .v2-cie-billet-section .grid > *, .v2-cie-tableau-section .grid > *, .v2-cie-jour .grid > *, .v2-cie-demarches .grid > * { grid-column: 2 / span 10; }
  .v2-cie-billet { grid-template-columns: 210px 1fr 230px; grid-template-rows: auto auto; }
  .v2-cie-billet > * { padding: 28px 30px; }
  .v2-cie-billet-souche { grid-row: 1 / span 2; flex-direction: column; align-items: flex-start; justify-content: space-between; }
  /* perforations du billet */
  .v2-cie-billet-souche::after { content: ""; position: absolute; right: -1px; top: 14px; bottom: 14px; border-right: 2px dashed rgba(3, 13, 48, .18); }
  .v2-cie-billet-trajet { grid-template-columns: auto minmax(60px, 1fr) minmax(0, 1.6fr); }
  .v2-cie-billet-trajet > .v2-cie-billet-point:last-child { grid-column: auto; }
  .v2-cie-billet-chiffres { grid-column: 2; flex-direction: row; flex-wrap: wrap; gap: 8px 28px; }
  .v2-cie-billet-prochain { grid-column: 3; grid-row: 1 / span 2; display: flex; flex-direction: column; justify-content: center; }
}

/* Tableau des départs façon panneau d'aéroport */
.v2-cie-tableau-section { padding: 24px 0 72px; }
.v2-cie-tableau { border-radius: 24px; background: #030D30; color: #fff; padding: 26px 18px 18px; box-shadow: 0 30px 60px -34px rgba(3, 13, 48, .55);
  background-image: repeating-linear-gradient(0deg, rgba(179, 205, 224, .035) 0 1px, transparent 1px 4px); }
.v2-cie-tableau-tete { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 14px 24px; padding: 0 6px 20px; }
.v2-cie-tableau-titre { margin: 0 0 6px !important; color: #fff !important; font-size: clamp(26px, 2.4vw, 36px) !important; }
.v2-cie-tableau-intro { margin: 0; font-size: 14px; color: #cfe0ec; }
.v2-cie-horloge { margin: 0; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: #b3cde0; }
.v2-cie-horloge time { font-size: 30px; line-height: 1; letter-spacing: .04em; color: #fff; font-variant-numeric: tabular-nums; font-weight: 500; }
.v2-cie-onglets { display: flex; flex-wrap: wrap; gap: 8px; padding: 0 6px 16px; }
.v2-cie-onglet { display: inline-flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 18px; border-radius: 999px; border: 1px solid rgba(179, 205, 224, .35); background: transparent; color: #fff; font: inherit; font-size: 15px; font-weight: 500; cursor: pointer; transition: background .2s, border-color .2s; }
.v2-cie-onglet .v2-cie-picto { width: 20px; height: 20px; }
.v2-cie-onglet[data-cie-onglet="inbound"] .v2-cie-picto { transform: rotate(90deg); }
.v2-cie-onglet[aria-pressed="true"] { background: #fff; border-color: #fff; color: #030D30; }
.v2-cie-onglet:not([aria-pressed="true"]):hover { border-color: #fff; }
.v2-cie-onglet:focus-visible, .v2-cie-tableau a:focus-visible, .v2-cie-billet a:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
.v2-cie-panneau[hidden] { display: none; }
.v2-cie-table { width: 100%; border-collapse: separate; border-spacing: 0 6px; font-variant-numeric: tabular-nums; }
.v2-cie-table caption { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.v2-cie-table thead th { padding: 0 14px 6px; text-align: left; font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: #b3cde0; }
.v2-cie-table tbody th, .v2-cie-table tbody td { padding: 14px; background: rgba(255, 255, 255, .055); text-align: left; vertical-align: middle; font-weight: 400; }
.v2-cie-table tbody tr > :first-child { border-radius: 12px 0 0 12px; }
.v2-cie-table tbody tr > :last-child { border-radius: 0 12px 12px 0; }
.v2-cie-table tbody tr:hover > * { background: rgba(255, 255, 255, .09); }
.v2-cie-ville a { color: #fff; text-decoration: none; font-size: 19px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.v2-cie-ville a:hover { text-decoration: underline; text-underline-offset: 5px; }
.v2-cie-duree { display: block; margin-top: 2px; font-size: 13px; letter-spacing: 0; text-transform: none; color: #b3cde0; }
.v2-cie-volet { display: inline-block; white-space: nowrap; }
.v2-cie-heure { font-size: 22px; font-weight: 500; color: #fff; }
.v2-cie-jours { display: inline-flex; gap: 4px; }
.v2-cie-jours > span { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 28px; border-radius: 5px; font-size: 12px; font-weight: 600; background: rgba(255, 255, 255, .06); color: rgba(207, 224, 236, .55); }
.v2-cie-jours > span.est-actif { background: #b3cde0; color: #030D30; }
.v2-cie-statut { display: inline-flex; align-items: center; gap: 8px; font-size: 15px; color: #fff; white-space: nowrap; }
.v2-cie-statut::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: #b3cde0; }
.v2-cie-statut.est-aujourdhui::before { background: #fff; box-shadow: 0 0 0 0 rgba(255, 255, 255, .6); animation: v2-cie-pulse 1.8s infinite; }
.v2-cie-statut.est-attente { color: #cfe0ec; }
.v2-cie-statut.est-attente::before { background: transparent; border: 1px solid #b3cde0; }
@keyframes v2-cie-pulse { 0% { box-shadow: 0 0 0 0 rgba(255, 255, 255, .6); } 70% { box-shadow: 0 0 0 8px rgba(255, 255, 255, 0); } 100% { box-shadow: 0 0 0 0 rgba(255, 255, 255, 0); } }
.v2-cie-periode { font-size: 14px; color: #cfe0ec; }
.v2-cie-saison { display: flex; align-items: flex-start; gap: 12px; margin: 8px 0 0; padding: 14px; border-radius: 12px; border: 1px dashed rgba(179, 205, 224, .35); font-size: 15px; line-height: 1.5; color: #cfe0ec; }
.v2-cie-saison .v2-cie-picto { width: 22px; height: 22px; color: #b3cde0; margin-top: 1px; }
.v2-cie-saison a { color: #fff; font-weight: 600; }
/* Volet à palettes : lettres qui défilent à l'apparition (purement visuel, texte réel inchangé) */
.v2-cie-volet.est-anime { color: #b3cde0; }
@media (max-width: 999px) {
  .v2-cie-table, .v2-cie-table tbody, .v2-cie-table tr, .v2-cie-table th, .v2-cie-table td { display: block; }
  .v2-cie-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .v2-cie-table tbody tr { display: grid; grid-template-columns: 1fr 1fr; margin-bottom: 10px; border-radius: 14px; overflow: hidden; background: rgba(255, 255, 255, .055); }
  .v2-cie-table tbody tr > * { background: none !important; border-radius: 0 !important; padding: 10px 14px; }
  .v2-cie-table tbody th { grid-column: 1 / -1; padding-top: 16px; border-bottom: 1px solid rgba(179, 205, 224, .15); }
  .v2-cie-table td[data-label]::before { content: attr(data-label); display: block; margin-bottom: 2px; font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: #b3cde0; }
  .v2-cie-jours-cell, .v2-cie-periode { grid-column: 1 / -1; }
  .v2-cie-periode { padding-bottom: 16px !important; }
  .v2-cie-tableau { padding: 22px 12px 12px; border-radius: 20px; }
  .v2-cie-horloge { align-items: flex-start; }
}

/* Démarches en ligne */
.v2-cie-demarches-liste { list-style: none; margin: 28px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }
.v2-cie-demarche { display: flex; flex-direction: column; gap: 12px; padding: 22px; border-radius: 18px; background: #fff; border: 1px solid rgba(3, 13, 48, .08); }
.v2-cie-demarche-titre { margin: 0 !important; font-size: 17px !important; line-height: 1.35 !important; font-weight: 600 !important; color: #030D30; }
.v2-cie-demarche-texte { font-size: 15px; color: #3d4560; }
.v2-cie-demarche-lien { margin-top: auto; display: inline-flex; align-items: center; gap: 8px; min-height: 24px; color: #0064A7; font-weight: 600; text-decoration: underline; text-underline-offset: 4px; }
.v2-cie-demarche-lien svg { width: 16px; height: 16px; flex-shrink: 0; }

/* Le jour du vol */
.v2-cie-jour { padding: 72px 0; }
.v2-cie-jour-tete h2 { margin: 0 0 10px !important; }
.v2-cie-jour-tete p { margin: 0; max-width: 60ch; color: #3d4560; }
.v2-cie-jour-etapes { list-style: none; margin: 28px 0 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 12px; counter-reset: none; }
.v2-cie-jour-etape a { position: relative; display: flex; flex-direction: column; gap: 14px; height: 100%; padding: 20px 20px 22px; border-radius: 18px; background: #fff; border: 1px solid rgba(3, 13, 48, .08); color: #030D30; text-decoration: none; transition: transform .2s, box-shadow .2s, border-color .2s; box-sizing: border-box; }
.v2-cie-jour-etape a:hover { transform: translateY(-3px); border-color: #0064A7; box-shadow: 0 18px 34px -22px rgba(3, 13, 48, .4); }
.v2-cie-jour-etape a:focus-visible { outline: 3px solid #0064A7; outline-offset: 3px; }
.v2-cie-jour-num { font-size: 12px; font-weight: 600; letter-spacing: .12em; color: #0064A7; font-variant-numeric: tabular-nums; }
.v2-cie-jour-etape .v2-cie-picto { width: 30px; height: 30px; color: #0064A7; }
.v2-cie-jour-titre { font-size: 17px; font-weight: 600; line-height: 1.3; padding-right: 26px; }
.v2-cie-jour-etape a > svg:last-child { position: absolute; right: 18px; bottom: 22px; width: 18px; height: 18px; color: #0064A7; }
@media (prefers-reduced-motion: reduce) {
  .v2-cie-statut.est-aujourdhui::before { animation: none; }
  .v2-cie-jour-etape a { transition: none; }
  .v2-cie-jour-etape a:hover { transform: none; }
}
.v2-cie .v2-compagnie-intro { padding-top: 56px; }
@media (min-width: 1000px) { .v2-cie .v2-compagnie-intro { padding-top: 72px; } }

/* ==========================================================================
   59. Rodez et l'Aveyron, page « office de tourisme » (11/11) : ouverture éditoriale avec vidéo, récit avec carte
   ========================================================================== */
.v2-ouverture { padding: 56px 0 24px; }
.v2-ouverture .grid { row-gap: 40px; align-items: center; }
.v2-ouverture .grid > * { grid-column: 1 / -1; }
.v2-ouverture-surtitre, .v2-recit-surtitre { margin: 0 0 14px; font-size: 13px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; color: #0064A7; }
.v2-ouverture-titre { margin: 0 0 22px !important; font-size: clamp(40px, 5.6vw, 80px) !important; line-height: 1 !important; letter-spacing: -.03em; font-weight: 600 !important; color: #030D30; text-wrap: balance; }
.v2-ouverture-chapo { font-size: clamp(19px, 1.6vw, 23px); line-height: 1.55; color: #030D30; max-width: 34em; }
.v2-ouverture-chapo p { margin: 0 0 .6em; }
.v2-ouverture-corps { margin-top: 14px; font-size: 16px; line-height: 1.7; color: #3d4560; max-width: 38em; }
.v2-ouverture-chiffres { list-style: none; margin: 34px 0 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; border-top: 1px solid rgba(3, 13, 48, .12); }
.v2-ouverture-chiffres li { display: flex; flex-direction: column; gap: 4px; padding: 18px 16px 18px 0; border-bottom: 1px solid rgba(3, 13, 48, .12); }
.v2-ouverture-chiffres li:nth-child(odd) { border-right: 1px solid rgba(3, 13, 48, .12); }
.v2-ouverture-chiffres li:nth-child(even) { padding-left: 18px; }
.v2-ouverture-chiffres strong { font-size: clamp(30px, 3vw, 44px); line-height: 1; font-weight: 600; letter-spacing: -.02em; color: #0064A7; font-variant-numeric: tabular-nums; }
.v2-ouverture-chiffres span { font-size: 14px; line-height: 1.4; color: #3d4560; }
.v2-ouverture-bouton { margin: 28px 0 0; }
.v2-ouverture-media { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 12px; }
.v2-ouverture-cadre { position: relative; width: min(100%, 340px); aspect-ratio: 9 / 16; border-radius: 28px; overflow: hidden; background: #030D30; box-shadow: 0 40px 70px -40px rgba(3, 13, 48, .7), 0 0 0 8px #fff, 0 0 0 9px rgba(3, 13, 48, .08); }
.v2-ouverture-video, .v2-ouverture-cadre img { display: block; width: 100%; height: 100%; object-fit: cover; }
.v2-ouverture-lecture { position: absolute; left: 14px; bottom: 14px; z-index: 2; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; border: 0; background: rgba(3, 13, 48, .72); color: #fff; cursor: pointer; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.v2-ouverture-lecture:hover { background: #0064A7; }
.v2-ouverture-lecture:focus-visible { outline: 3px solid #fff; outline-offset: 2px; box-shadow: 0 0 0 6px #0064A7; }
.v2-ouverture-lecture .est-pause { display: none; }
.v2-ouverture-lecture.est-en-lecture .est-pause { display: block; }
.v2-ouverture-lecture.est-en-lecture .est-lecture { display: none; }
.v2-ouverture-legende { font-size: 13px; letter-spacing: .04em; color: #3d4560; text-align: center; }
@media (min-width: 1000px) {
  .v2-ouverture { padding: 88px 0 40px; }
  .v2-ouverture-texte { grid-column: 2 / span 6 !important; }
  .v2-ouverture-media { grid-column: 9 / span 3 !important; }
  .v2-ouverture-chiffres { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .v2-ouverture-chiffres li { padding: 20px 16px !important; border-right: 1px solid rgba(3, 13, 48, .12); }
  .v2-ouverture-chiffres li:first-child { padding-left: 0 !important; }
  .v2-ouverture-chiffres li:last-child { border-right: 0; }
}

.v2-recit { padding: 64px 0 40px; }
.v2-recit .grid > * { grid-column: 1 / -1; }
.v2-recit-tete { max-width: 46em; margin-bottom: 40px; }
.v2-recit-titre { margin: 0 0 14px !important; font-size: clamp(32px, 3.6vw, 52px) !important; line-height: 1.05 !important; letter-spacing: -.02em; color: #030D30; }
.v2-recit-intro { font-size: 18px; line-height: 1.6; color: #3d4560; }
.v2-recit-intro p { margin: 0; }
.v2-recit-corps { position: relative; display: flex; flex-direction: column; }
.v2-recit-escales { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 56px; order: 2; }
.v2-recit-escale article { display: grid; grid-template-columns: 1fr; gap: 22px; }
.v2-recit-photo { position: relative; aspect-ratio: 4 / 5; max-width: 460px; border-radius: 22px; overflow: hidden; background: #cfe0ec; }
.v2-recit-photo img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.v2-recit-escale.est-actif .v2-recit-photo img { transform: scale(1.03); }
.v2-recit-num { position: absolute; left: 16px; top: 14px; font-size: 44px; line-height: 1; font-weight: 600; letter-spacing: -.03em; color: #fff; text-shadow: 0 2px 18px rgba(3, 13, 48, .55); font-variant-numeric: tabular-nums; }
.v2-recit-lieu { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 0 0 10px; font-size: 14px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: #0064A7; }
.v2-recit-lieu svg { flex-shrink: 0; }
.v2-recit-distance { font-weight: 500; letter-spacing: 0; text-transform: none; color: #3d4560; padding-left: 10px; border-left: 1px solid rgba(3, 13, 48, .2); }
.v2-recit-escale-titre { margin: 0 0 14px !important; font-size: clamp(26px, 2.4vw, 34px) !important; line-height: 1.1 !important; letter-spacing: -.015em; color: #030D30; }
.v2-recit-escale-texte { font-size: 16px; line-height: 1.75; color: #3d4560; }
.v2-recit-escale-texte p { margin: 0 0 .8em; }
.v2-recit-lien { margin: 18px 0 0; }
/* Carte : bandeau collant en haut sur mobile, colonne collante sur ordinateur */
.v2-recit-carte-zone { order: 1; position: sticky; top: 92px; z-index: 5; margin: 0 0 28px; }
.v2-recit-carte { position: relative; height: 190px; border-radius: 18px; overflow: hidden; background: #cfe0ec; box-shadow: 0 18px 40px -26px rgba(3, 13, 48, .55); border: 1px solid rgba(3, 13, 48, .08); }
.v2-recit-carte-canvas { position: absolute; inset: 0; }
.v2-recit .leaflet-container { background: #e6eef5; font: inherit; }
.v2-recit .leaflet-tile-pane { filter: grayscale(1) sepia(.25) hue-rotate(175deg) saturate(1.6) brightness(1.04) contrast(.95); }
.v2-recit-carte-etiquette { position: absolute; left: 12px; bottom: 12px; z-index: 500; margin: 0; padding: 6px 12px; border-radius: 999px; background: #030D30; color: #fff; font-size: 13px; font-weight: 600; pointer-events: none; }
.v2-recit-carte-etiquette:empty { display: none; }
.v2-recit-carte-credit { margin: 6px 0 0; font-size: 11px; color: #5b6275; text-align: right; }
.v2-recit-pin { display: flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: #fff; color: #030D30; border: 2px solid #030D30; font-size: 12px; font-weight: 600; box-shadow: 0 4px 10px rgba(3, 13, 48, .3); transition: transform .3s, background .3s, color .3s; cursor: pointer; font-family: inherit; }
.v2-recit-pin.est-actif { background: #0064A7; border-color: #fff; color: #fff; transform: scale(1.3); }
.v2-recit-aeroport { display: flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 50%; background: #030D30; color: #fff; box-shadow: 0 0 0 4px rgba(0, 100, 167, .3); }
.v2-recit-aeroport svg { width: 16px; height: 16px; }
.v2-recit-trait { stroke: #0064A7; stroke-width: 2.5; stroke-dasharray: 6 7; fill: none; animation: v2-flux 1.2s linear infinite; }
@media (min-width: 760px) {
  .v2-recit-escale article { grid-template-columns: minmax(0, 300px) minmax(0, 1fr); gap: 32px; align-items: center; }
}
@media (min-width: 1000px) {
  .v2-recit { padding: 96px 0 64px; }
  .v2-recit .grid > * { grid-column: 2 / span 10; }
  .v2-recit-corps { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 380px); gap: 56px; align-items: start; }
  .v2-recit-escales { order: 0; gap: 18vh; padding: 6vh 0 12vh; }
  .v2-recit-escale { opacity: .45; transition: opacity .5s; }
  .v2-recit-escale.est-actif, .v2-recit:not(.est-pret) .v2-recit-escale { opacity: 1; }
  .v2-recit-escale article { grid-template-columns: minmax(0, 320px) minmax(0, 1fr); gap: 40px; }
  .v2-recit-carte-zone { order: 0; top: 110px; margin: 0; }
  .v2-recit-carte { height: min(70vh, 620px); border-radius: 24px; }
}
@media (prefers-reduced-motion: reduce) {
  .v2-recit-photo img, .v2-recit-escale, .v2-recit-pin { transition: none !important; }
  .v2-recit-escale.est-actif .v2-recit-photo img { transform: none; }
  .v2-recit-trait { animation: none; }
}
/* « Nos incontournables » (et autres sliders photo) : texte toujours lisible, même sur une photo claire */
.slider-image-slide-content { position: relative; z-index: 2; }
.slider-image-slide::after { background: linear-gradient(180deg, rgba(3, 13, 48, 0) 22%, rgba(3, 13, 48, .7) 58%, rgba(3, 13, 48, .95) 100%) !important; }
.slider-image-slide-content-title, .slider-image-slide-content-text { text-shadow: 0 1px 12px rgba(3, 13, 48, .6); }
/* 11/11 (retour mobile) : boutons et liens réactifs au toucher, sans délai de double-tap */
a, button, [role="button"], input, select, label, summary { touch-action: manipulation; }
.v2-ouverture-titre { line-height: 1.04 !important; margin-bottom: 30px !important; }
.v2-ouverture-chiffres strong { white-space: nowrap; }
@media (min-width: 1000px) { .v2-ouverture-chiffres strong { font-size: clamp(28px, 2.4vw, 38px); } }
.v2-recit .leaflet-tile-pane { filter: grayscale(.9) sepia(.2) hue-rotate(170deg) saturate(1.3) contrast(1.08) brightness(.98) !important; }

/* 11/11 (retour mobile) : sur l'accueil, « Recherchez un vol » passait sous la barre d'onglets du bas.
   Le titre de l'en-tête remonte et la recherche se place au-dessus de la barre dès l'arrivée. */
@media (max-width: 999px) {
  body.v2-accueil header.c-header:has(+ aside.p-searchbar) .grid { padding-bottom: 196px !important; }
  body.v2-accueil header.c-header + aside.p-searchbar { margin-top: -176px !important; }
}

/* 11/11 (retour mobile) : carte réseau — fond CARTO sombre sans noms, teinté bleu nuit ; étiquettes placées sans chevauchement */
.v2-reseau .leaflet-tile-pane { filter: sepia(.35) hue-rotate(180deg) saturate(2.2) brightness(1.25) contrast(1.05) !important; opacity: 1 !important; }
.v2-reseau-ville[data-nom="gauche"] .v2-reseau-nom { left: auto; right: calc(100% + 8px); }
.v2-reseau-ville[data-nom="haut"] .v2-reseau-nom { left: 50%; top: auto; bottom: calc(100% + 6px); transform: translateX(-50%); }
.v2-reseau-ville[data-nom="bas"] .v2-reseau-nom { left: 50%; top: calc(100% + 6px); transform: translateX(-50%); }
.v2-reseau .leaflet-container, .v2-reseau-carte { background: #030D30 !important; }

/* --- 60. Location de salles : intro + réservation, vue d'ensemble, fiches par salle (11/11) --- */
.v2-salles { padding: clamp(40px, 6vw, 80px) 0 clamp(56px, 7vw, 96px); }
.v2-salles-intro, .v2-salles-apercu, .v2-salles-fiches, .v2-salles-pratique { grid-column: span 12; min-width: 0; }
@media (min-width: 1200px) { .v2-salles-intro, .v2-salles-apercu, .v2-salles-fiches, .v2-salles-pratique { grid-column: 2 / span 10; } }
.v2-salles-intro { display: grid; gap: 28px; align-items: start; }
@media (min-width: 1000px) { .v2-salles-intro { grid-template-columns: minmax(0, 1fr) minmax(300px, 380px); gap: 56px; } }
.v2-salles-surtitre, .v2-salle-usage { margin: 0 0 10px; font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--v2-blue); }
.v2-salles-titre { margin: 0 0 16px; font-size: clamp(30px, 3.4vw, 52px); font-weight: 600; line-height: 1.06; letter-spacing: -.025em; color: var(--v2-navy); }
.v2-salles-chapo { font-size: clamp(17px, 1.3vw, 19px); line-height: 1.6; color: var(--v2-muted); max-width: 62ch; }
.v2-salles-chapo p { margin: 0 0 10px; }
.v2-salles-chiffres { list-style: none; margin: 20px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.v2-salles-chiffres li { padding: 8px 14px; border-radius: 999px; background: #fff; border: 1px solid var(--v2-line); font-size: 15px; color: var(--v2-navy); }
.v2-salles-chiffres strong { font-weight: 700; }
.v2-salles-inclus { margin-top: 24px; padding-top: 22px; border-top: 1px solid var(--v2-line); }
.v2-salles-inclus-titre { margin: 0 0 10px; font-size: 15px; font-weight: 600; color: var(--v2-navy); }
.v2-salles-inclus ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
@media (min-width: 640px) { .v2-salles-inclus ul { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.v2-salles-inclus li { display: flex; align-items: flex-start; gap: 10px; font-size: 16px; line-height: 1.45; color: var(--v2-navy); }
.v2-salles-inclus svg { flex: none; width: 20px !important; height: 20px !important; margin-top: 1px; }
.v2-salles-inclus svg path { fill: var(--v2-blue); }
/* Carte de réservation */
.v2-salles-contact { padding: 26px; border-radius: 24px; background: var(--v2-navy); color: rgba(255, 255, 255, .82); }
@media (min-width: 1000px) { .v2-salles-contact { position: sticky; top: 110px; } }
.v2-salles-contact-titre { margin: 0 0 8px; font-size: 22px; font-weight: 600; color: #fff; }
.v2-salles-contact-texte { font-size: 15px; line-height: 1.55; }
.v2-salles-contact-texte p { margin: 0 0 8px; }
.v2-salles-contact-actions { display: grid; gap: 8px; margin-top: 16px; }
.v2-salles-contact-lien { display: flex; align-items: center; gap: 12px; min-height: 52px; padding: 8px 14px 8px 8px; border-radius: 14px; background: rgba(255, 255, 255, .08); color: #fff; font-size: 16px; font-weight: 600; text-decoration: none; overflow-wrap: anywhere; transition: background .2s; }
.v2-salles-contact-lien:hover, .v2-salles-contact-lien:focus-visible { background: rgba(255, 255, 255, .16); }
.v2-salles-contact-lien:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.v2-salles-contact-picto { flex: none; width: 38px; height: 38px; border-radius: 10px; background: #fff; display: inline-flex; align-items: center; justify-content: center; }
.v2-salles-contact-picto svg { width: 18px !important; height: 18px !important; }
.v2-salles-contact-picto svg path { fill: var(--v2-blue); }
/* Vue d'ensemble */
.v2-salles-apercu { margin-top: clamp(48px, 6vw, 80px); }
.v2-salles-h2 { margin: 0 0 20px; font-size: clamp(24px, 2.2vw, 34px); font-weight: 600; letter-spacing: -.02em; color: var(--v2-navy); }
.v2-salles-cartes { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
@media (min-width: 700px) { .v2-salles-cartes { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } }
@media (min-width: 1200px) { .v2-salles-cartes { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.v2-salles-carte-lien { position: relative; height: 100%; display: flex; flex-direction: column; border-radius: 20px; background: #fff; color: var(--v2-navy); text-decoration: none; overflow: hidden; box-shadow: 0 1px 2px rgba(3, 13, 48, .06), 0 10px 30px rgba(3, 13, 48, .06); transition: transform .25s cubic-bezier(.16, 1, .3, 1), box-shadow .25s; }
@media (hover: hover) { .v2-salles-carte-lien:hover { transform: translateY(-3px); box-shadow: 0 2px 4px rgba(3, 13, 48, .06), 0 18px 40px rgba(3, 13, 48, .12); } }
.v2-salles-carte-lien:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 3px; }
.v2-salles-carte-img { display: block; width: 100%; aspect-ratio: 16 / 10; object-fit: cover; }
.v2-salles-carte-corps { display: flex; flex-direction: column; gap: 6px; padding: 16px 18px 18px; flex: 1; }
.v2-salles-carte-nom { font-size: 19px; font-weight: 600; }
.v2-salles-carte-usage { font-size: 14px; line-height: 1.4; color: var(--v2-muted); }
.v2-salles-carte-infos { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.v2-salles-carte-infos span { padding: 3px 10px; border-radius: 999px; background: var(--v2-grey); font-size: 13px; font-weight: 600; }
.v2-salles-carte-prix { margin-top: auto; padding-top: 10px; font-size: 14px; color: var(--v2-muted); }
.v2-salles-carte-prix strong { font-size: 17px; color: var(--v2-navy); }
.v2-salles-carte-fleche { position: absolute; right: 14px; bottom: 14px; width: 34px; height: 34px; border-radius: 50%; background: var(--v2-grey); display: inline-flex; align-items: center; justify-content: center; }
.v2-salles-carte-fleche svg { width: 14px !important; height: 14px !important; }
.v2-salles-carte-fleche svg path { fill: var(--v2-navy); }
@media (max-width: 699px) { /* mobile : cartes compactes, photo à gauche, pour voir les 4 salles d'un coup */
  .v2-salles-carte-lien { flex-direction: row; align-items: stretch; }
  .v2-salles-carte-img { width: 108px; aspect-ratio: auto; height: auto; min-height: 100%; flex: none; }
  .v2-salles-carte-corps { padding: 12px 44px 12px 14px; gap: 4px; }
  .v2-salles-carte-nom { font-size: 17px; }
  .v2-salles-carte-usage { font-size: 13px; }
  .v2-salles-carte-infos span { font-size: 12px; padding: 2px 8px; }
  .v2-salles-carte-prix { padding-top: 4px; }
  .v2-salles-carte-fleche { top: 50%; bottom: auto; transform: translateY(-50%); right: 10px; width: 28px; height: 28px; }
}
/* Fiches */
.v2-salles-fiches { margin-top: clamp(48px, 6vw, 88px); display: grid; gap: clamp(48px, 6vw, 96px); }
.v2-salle { display: grid; gap: 24px; align-items: start; scroll-margin-top: 110px; }
@media (min-width: 1000px) { .v2-salle { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 48px; } .v2-salle--inverse { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } .v2-salle--inverse .v2-salle-photos { order: 2; justify-self: end; } }
.v2-salle-photos { display: grid; gap: 8px; grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: 680px; }
.v2-salle-photos img { display: block; width: 100%; height: 100%; object-fit: cover; border-radius: 14px; aspect-ratio: 4 / 3; background: var(--v2-grey); }
.v2-salle-photos img:first-child { grid-column: span 2; aspect-ratio: 16 / 9; border-radius: 20px; }
.v2-salle-photos--2 img:nth-child(2) { grid-column: span 2; aspect-ratio: 21 / 9; }
@media (min-width: 1000px) { .v2-salle { align-items: center; } }
.v2-salle-nom { margin: 0 0 16px; font-size: clamp(28px, 2.6vw, 40px); font-weight: 600; letter-spacing: -.02em; line-height: 1.1; color: var(--v2-navy); }
.v2-salle-chiffres { margin: 0 0 18px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.v2-salle-chiffres > div { padding: 12px 14px; border-radius: 14px; background: #fff; border: 1px solid var(--v2-line); }
.v2-salle-chiffres dt { font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--v2-muted); }
.v2-salle-chiffres dd { margin: 4px 0 0; font-size: 17px; font-weight: 600; line-height: 1.25; color: var(--v2-navy); }
.v2-salle-desc { font-size: 16px; line-height: 1.6; color: var(--v2-muted); }
.v2-salle-desc p { margin: 0 0 10px; }
.v2-salle-liste { margin-top: 14px; }
.v2-salle-liste-titre { margin: 0 0 8px; font-size: 14px; font-weight: 600; color: var(--v2-navy); }
.v2-salle-liste ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.v2-salle-liste li { padding: 5px 12px; border-radius: 999px; background: #cfe0ec; font-size: 14px; color: var(--v2-navy); }
.v2-salle-tarifs { margin-top: 20px; border-radius: 16px; background: #fff; border: 1px solid var(--v2-line); overflow: hidden; }
.v2-salle-tarifs table { width: 100%; border-collapse: collapse; font-size: 15px; }
.v2-salle-tarifs caption { padding: 12px 16px 0; text-align: left; font-size: 14px; font-weight: 600; color: var(--v2-navy); }
.v2-salle-tarifs thead th { padding: 8px 16px; font-size: 12px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--v2-muted); text-align: left; border-bottom: 1px solid var(--v2-line); }
.v2-salle-tarifs thead th:last-child, .v2-salle-tarifs td { text-align: right; }
.v2-salle-tarifs tbody th, .v2-salle-tarifs td { padding: 11px 16px; border-top: 1px solid var(--v2-line); font-weight: 500; color: var(--v2-navy); text-align: left; }
.v2-salle-tarifs tbody tr:first-child th, .v2-salle-tarifs tbody tr:first-child td { border-top: 0; }
.v2-salle-tarifs td { text-align: right; font-weight: 700; white-space: nowrap; }
.v2-salle-tarifs-note { margin: 0; padding: 10px 16px; background: var(--v2-grey); font-size: 13px; color: var(--v2-muted); }
.v2-salle-action { margin: 20px 0 0; }
@media (max-width: 999px) { .v2-salle-action .u-button { width: 100%; justify-content: center; } }
/* Restauration et conditions */
.v2-salles-pratique { margin-top: clamp(48px, 6vw, 88px); display: grid; gap: 16px; }
@media (min-width: 1000px) { .v2-salles-pratique { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); } }
.v2-salles-traiteur, .v2-salles-conditions { display: flex; align-items: flex-start; gap: 18px; padding: 22px; border-radius: 20px; background: #fff; box-shadow: 0 1px 2px rgba(3, 13, 48, .06), 0 10px 30px rgba(3, 13, 48, .06); color: var(--v2-muted); font-size: 15px; line-height: 1.55; }
.v2-salles-traiteur img { flex: none; width: 112px; height: 112px; object-fit: cover; border-radius: 16px; }
.v2-salles-traiteur p, .v2-salles-conditions p { margin: 0 0 8px; }
.v2-salles-traiteur-titre { margin: 0 0 6px; font-size: 19px; font-weight: 600; color: var(--v2-navy); }
.v2-salles-conditions { background: var(--v2-grey); box-shadow: none; }
.v2-salles-conditions-picto svg { width: 22px !important; height: 22px !important; }
.v2-salles-conditions-picto svg path { fill: var(--v2-blue); }
@media (max-width: 520px) { .v2-salles-traiteur { flex-direction: column; } .v2-salles-traiteur img { width: 100%; height: 160px; } .v2-salle-chiffres dd { font-size: 15px; } }

/* --- 61. Incontournables en mosaïque + menu blanc au survol (11/11) ---
   Retour client : « mal présenté » (titre seul à gauche, cartes coupées à droite). Le slider d'images a un champ
   « Affichage » : en mosaïque, l'en-tête passe au-dessus et toutes les cartes sont visibles (1 large + 2 étroites,
   puis 2 étroites + 1 large sur grand écran ; 2 colonnes sur tablette ; une colonne sur mobile). */
.slider-image--mosaique { overflow: visible; padding: 64px 0 24px; }
.slider-image--mosaique .grid { row-gap: 28px; }
.slider-image--mosaique .grid > * { grid-column: 1 / -1 !important; }
.slider-image--mosaique .slider-image-titles { display: grid !important; gap: 12px !important; position: static !important; }
.slider-image--mosaique .slider-image-title { margin: 0; }
.slider-image--mosaique .slider-image-text, .slider-image--mosaique .slider-image-text p { margin: 0; max-width: 34em; font-size: 17px; line-height: 1.6; color: rgba(3, 13, 48, .78); }
.slider-image-mosaique { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; }
.slider-image-mosaique > li { min-width: 0; margin: 0; padding: 0; }
.slider-image-mosaique > li::before { content: none; }
.slider-image-mosaique .slider-image-slide { flex: none !important; width: 100%; height: 100%; min-height: 0; aspect-ratio: 16 / 11; padding: 20px !important; border-radius: 20px; background: var(--v2-navy); display: flex; flex-direction: column; justify-content: flex-end; }
.slider-image-mosaique .slider-image-slide > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; border-radius: 0 !important; transition: transform .7s cubic-bezier(.2, .7, .2, 1); }
.slider-image-mosaique .slider-image-slide-content { max-width: 34em; }
/* Le dégradé sous les textes des cartes était masqué par la feuille d'origine (display: none) : on l'affiche. */
.slider-image-slide::after { display: block !important; }
.slider-image-mosaique .slider-image-slide::after { background: linear-gradient(180deg, rgba(3, 13, 48, 0) 20%, rgba(3, 13, 48, .62) 48%, rgba(3, 13, 48, .95) 100%) !important; }
.slider-image-mosaique .slider-image-slide-content-text { -webkit-line-clamp: 4 !important; }
@media (hover: hover) { .slider-image-mosaique .slider-image-slide:hover > img { transform: scale(1.04); } }
@media (prefers-reduced-motion: reduce) { .slider-image-mosaique .slider-image-slide > img { transition: none; } }
@media (min-width: 760px) {
  .slider-image-mosaique { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: clamp(300px, 40vw, 380px); gap: 16px; }
  .slider-image-mosaique .slider-image-slide { aspect-ratio: auto; padding: 26px !important; }
  .slider-image-mosaique[data-cartes="6"] > li:nth-child(1), .slider-image-mosaique[data-cartes="6"] > li:nth-child(6),
  .slider-image-mosaique[data-cartes="3"] > li:nth-child(1), .slider-image-mosaique[data-cartes="5"] > li:nth-child(1) { grid-column: span 2; }
}
@media (min-width: 1000px) {
  .slider-image--mosaique { padding: 96px 0 32px; }
  .slider-image--mosaique .grid > * { grid-column: 2 / span 10 !important; }
  .slider-image--mosaique .slider-image-titles { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: end; column-gap: 48px; }
  .slider-image-mosaique { grid-template-columns: repeat(12, minmax(0, 1fr)); grid-auto-rows: clamp(320px, 27vw, 420px); }
  .slider-image-mosaique > li { grid-column: span 4 !important; }
  .slider-image-mosaique[data-cartes="6"] > li:nth-child(1), .slider-image-mosaique[data-cartes="6"] > li:nth-child(6) { grid-column: span 6 !important; }
  .slider-image-mosaique[data-cartes="6"] > li:nth-child(n+2):nth-child(-n+5) { grid-column: span 3 !important; }
  .slider-image-mosaique .slider-image-slide { padding: 30px !important; }
  .slider-image-mosaique[data-cartes="6"] > li:nth-child(n+2):nth-child(-n+5) .slider-image-slide-content-title { font-size: 21px !important; }
  .slider-image-mosaique[data-cartes="6"] > li:nth-child(n+2):nth-child(-n+5) .slider-image-slide-content-text { font-size: 14.5px !important; }
}

/* Menu : au survol (ou au clavier), le bandeau devient blanc plein, sans transparence. */
@media (hover: hover) {
  .c-nav-container.hidden-lg--max:hover { background: #fff !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
}
.c-nav-container.hidden-lg--max:focus-within { background: #fff !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }

/* ==========================================================================
   58. Accessibilité (12/11) : lien d'évitement, lecture audio « Écouter la page » (js/accessibilite.js),
       page « Accessibilité du site » (views/static/accessibilite.php)
   ========================================================================== */
/* Lien d'évitement : premier élément de la page, visible seulement au clavier */
.v2-evitement {
  position: fixed; left: 16px; top: 16px; z-index: 100000; padding: 12px 20px; border-radius: 999px;
  background: #fff; color: var(--v2-navy); font-size: 15px; font-weight: 600; text-decoration: none;
  box-shadow: 0 8px 24px rgba(3, 13, 48, .3); transform: translateY(-300%);
}
.v2-evitement:focus { transform: none; outline: 3px solid var(--v2-blue); outline-offset: 2px; }
#main-content:focus { outline: 0; }

/* Navigateur sans synthèse vocale : aucun bouton d'écoute */
html.la-indisponible :is([data-ecouter], a[href$="#ecouter"], a[href$="#listen"]) { display: none !important; }

/* Déclencheurs */
.v2-rail a[aria-pressed="true"] { opacity: 1; background: var(--v2-blue); color: #fff; }
.v2-fil-ecoute { display: none; }
@media (max-width: 1220px) {
  .v2-fil { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 16px; }
  .v2-fil ol { margin: 0; flex: 1 1 auto; min-width: 0; }
  .v2-fil-ecoute {
    display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 14px; cursor: pointer;
    border: 1px solid rgba(3, 13, 48, .16); border-radius: 999px; background: #fff; color: var(--v2-navy);
    font: inherit; font-size: 14px; font-weight: 600; line-height: 1;
  }
  .v2-fil-ecoute:hover, .v2-fil-ecoute[aria-pressed="true"] { background: var(--v2-navy); border-color: var(--v2-navy); color: #fff; }
  .v2-fil-ecoute:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 2px; }
  .v2-fil-ecoute svg { width: 18px; height: 18px; }
}
.p-footer-bas-ecoute { display: inline-flex; align-items: center; gap: 8px; margin-left: auto; }
.p-footer-bas-ecoute svg { width: 18px; height: 18px; }
.p-footer-bas :is(.p-footer-bas-cookies, .p-footer-bas-ecoute):focus-visible { outline: 2px solid #fff; outline-offset: 3px; border-radius: 4px; }

/* Passage en cours de lecture */
.la-lu { outline: 3px solid var(--v2-blue) !important; outline-offset: 5px; border-radius: 6px; box-shadow: 0 0 0 5px rgba(179, 205, 224, .5); scroll-margin: 120px 0 170px; }

/* Barre de lecture */
.la-barre {
  position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 90; overflow: hidden;
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 8px 18px;
  max-width: calc(100vw - 24px); padding: 10px 12px 12px 22px; border-radius: 999px;
  background: var(--v2-navy); color: #fff; font-size: 14.5px; line-height: 1.2;
  box-shadow: 0 18px 40px -12px rgba(3, 13, 48, .6), inset 0 0 0 1px rgba(255, 255, 255, .16);
}
.la-barre[hidden] { display: none; }
.la-barre-etat { margin: 0; display: inline-flex; align-items: center; gap: 10px; color: #fff; font-size: 14.5px; font-weight: 600; white-space: nowrap; }
.la-onde { display: inline-flex; align-items: flex-end; gap: 3px; height: 16px; }
.la-onde i { display: block; width: 3px; height: 6px; border-radius: 2px; background: #b3cde0; animation: la-onde 1s ease-in-out infinite; }
.la-onde i:nth-child(2) { animation-delay: .2s; }
.la-onde i:nth-child(3) { animation-delay: .4s; }
@keyframes la-onde { 0%, 100% { height: 5px; } 50% { height: 16px; } }
.la-barre.est-en-pause .la-onde i { animation: none; height: 6px; }
.la-barre-boutons { display: inline-flex; align-items: center; gap: 4px; }
.la-barre button {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-width: 40px; height: 40px; padding: 0 10px;
  border: 0; border-radius: 999px; background: rgba(255, 255, 255, .12); color: #fff; cursor: pointer;
  font: inherit; font-size: 14.5px; font-weight: 600; line-height: 1;
}
.la-barre button:hover { background: rgba(255, 255, 255, .24); }
.la-barre button:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }
.la-barre .la-barre-principal { padding: 0 16px 0 12px; background: #fff; color: var(--v2-navy); }
.la-barre .la-barre-principal:hover { background: #cfe0ec; }
.la-barre-debit { min-width: 56px; font-variant-numeric: tabular-nums; }
.la-barre-avance { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: rgba(255, 255, 255, .14); }
.la-barre-avance i { display: block; width: 0; height: 100%; background: #b3cde0; transition: width .3s ease; }
.la-barre--message { padding: 14px 22px; }
.la-barre--message :is(.la-barre-boutons, .la-onde, .la-barre-avance) { display: none; }
.la-barre--message .la-barre-etat { white-space: normal; }
@media (max-width: 1220px) { .la-barre { bottom: calc(104px + env(safe-area-inset-bottom)); } }
@media (max-width: 520px) {
  .la-barre { width: calc(100vw - 24px); padding: 12px 12px 14px; border-radius: 22px; }
  .la-barre-etat { width: 100%; justify-content: center; }
}
@media (prefers-reduced-motion: reduce) { .la-onde i { animation: none; height: 8px; } .la-barre-avance i { transition: none; } }

/* Page « Accessibilité du site » */
.v2-a11y { padding: clamp(40px, 5vw, 72px) 0 clamp(64px, 7vw, 110px); color: var(--v2-navy); }
.v2-a11y-corps { grid-column: 1 / -1; font-size: 17px; line-height: 1.65; }
@media (min-width: 1000px) { .v2-a11y-corps { grid-column: 2 / span 8; } }
.v2-a11y-corps p { margin: 0 0 16px; font-size: inherit; line-height: inherit; color: inherit; }
.v2-a11y-corps .v2-a11y-chapeau { font-size: clamp(19px, 1.5vw, 22px); line-height: 1.5; }
.v2-a11y-corps .v2-a11y-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 24px; margin: 24px 0 0; }
.v2-a11y-bouton {
  display: inline-flex; align-items: center; gap: 10px; min-height: 48px; padding: 0 22px; cursor: pointer;
  border: 0; border-radius: 999px; background: var(--v2-navy); color: #fff; font: inherit; font-size: 16px; font-weight: 600; line-height: 1;
}
.v2-a11y-bouton:hover, .v2-a11y-bouton[aria-pressed="true"] { background: var(--v2-blue); }
.v2-a11y-corps a { color: var(--v2-blue); text-decoration: underline; text-underline-offset: 3px; text-decoration-thickness: 1px; }
.v2-a11y-corps a:hover { text-decoration-thickness: 2px; }
.v2-a11y-corps :is(a, button):focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 3px; border-radius: 4px; }
.v2-a11y-corps .v2-a11y-lien { display: inline-block; min-height: 24px; font-weight: 600; }
.v2-a11y-titre { margin: clamp(40px, 4vw, 56px) 0 16px; font-size: clamp(24px, 2.2vw, 32px); font-weight: 600; line-height: 1.2; letter-spacing: -.01em; color: var(--v2-navy); }
.v2-a11y-titre::before { content: ""; display: block; width: 40px; height: 3px; margin-bottom: 16px; border-radius: 3px; background: var(--v2-blue); }
.v2-a11y-liste { margin: 0 0 16px; padding: 0 0 0 22px; list-style: disc; }
.v2-a11y-liste li { margin: 0 0 8px; padding-left: 4px; list-style: disc; }
.v2-a11y-liste li::marker { color: var(--v2-blue); }
.v2-a11y-normes { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.v2-a11y-normes li { margin: 0; padding: 20px 22px; border-radius: 18px; background: rgba(207, 224, 236, .5); list-style: none; }
.v2-a11y-normes strong { display: block; margin-bottom: 6px; font-size: 18px; font-weight: 600; }
.v2-a11y-normes span { display: block; font-size: 15.5px; line-height: 1.5; }
.v2-a11y-corps .v2-a11y-date { margin: 40px 0 0; font-size: 14.5px; color: var(--v2-muted); }

/* ==========================================================================
   59. Audit RGAA 4.1.2 du 12/11 : corrections de présentation
   ========================================================================== */
/* Texte réservé aux lecteurs d'écran (messages d'erreur reliés aux champs) */
.v2-sr { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); clip-path: inset(50%); white-space: nowrap; border: 0; }
/* 11.10 : mention des champs obligatoires en tête de formulaire */
.v2-form-note { grid-column: 1 / -1; margin: 0 0 20px; font-size: 14.5px; line-height: 1.5; color: var(--v2-muted); }
/* 7.3 : le titre repliable de la recherche de vol est un bouton (téléphone) */
.v2-repli-bouton { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; margin: 0; padding: 0; border: 0; background: none; color: inherit; font: inherit; letter-spacing: inherit; text-align: inherit; text-transform: inherit; cursor: inherit; }
.v2-repli-bouton:focus-visible { outline: 2px solid currentColor; outline-offset: 4px; border-radius: 6px; }
/* 10.1 : dimensions du cadre de réservation en CSS */
.booking-iframe iframe { display: block; width: 100%; height: 330px; border: 0; }
/* 10.11, 10.12 : aucun texte tronqué sur petit écran ou quand l'espacement du texte est augmenté */
.slider-image-slide-content-text, .v2-incontournables .slider-slide-content-text, .slider-image-mosaique .slider-image-slide-content-text { display: block !important; -webkit-line-clamp: unset !important; overflow: visible !important; }
.v2-a11y-corps { overflow-wrap: anywhere; }
@media (max-width: 400px) {
  .c-form-field-choice label { min-width: 0; }
  .c-form-field-choice-item { padding: 14px 10px; overflow-wrap: anywhere; -webkit-hyphens: auto; hyphens: auto; }
}
/* 13.8 : les animations décoratives s'arrêtent d'elles-mêmes en moins de 5 secondes
   (la carte « réseau » et la lecture audio ont leur bouton de pause) */
.agence-etat[data-etat="ouvert"]::before { animation-iteration-count: 2; }
.v2-carte-trait.actif { animation-iteration-count: 4; }
.v2-plan-zone.actif .v2-plan-num { animation-iteration-count: 3; }
.v2-cie-statut.est-aujourdhui::before { animation-iteration-count: 2; }
.v2-recit-trait { animation-iteration-count: 4; }
/* Plan du site */
.v2-plan-site ul { list-style: none; margin: 0 0 8px; padding: 0; }
.v2-plan-site li { margin: 0; padding: 0; list-style: none; }
.v2-plan-site li > a, .v2-plan-site .v2-plan-site-rubrique { display: inline-block; min-height: 24px; padding: 5px 0; }
.v2-plan-site .v2-plan-site-rubrique { font-weight: 600; }
.v2-plan-site ul ul { margin: 0 0 6px; padding-left: 20px; border-left: 2px solid var(--v2-brume); }
.v2-plan-site-colonnes { display: grid; gap: 8px 40px; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.v2-plan-site-colonnes .v2-a11y-titre { margin-top: 32px; font-size: clamp(20px, 1.6vw, 24px); }

/* 9.2 : l’en-tête du site enveloppe le menu (fixe) : aucune place prise dans la page */
.v2-entete { display: block; margin: 0; padding: 0; }

/* 7.5, 13.1 : résultat d'un envoi de formulaire, affiché durablement sous le formulaire */
.v2-form-resultat { margin: 20px 0 0; padding: 14px 18px; border-radius: 14px; background: #e5eff7; color: var(--v2-navy); font-size: 16px; font-weight: 600; line-height: 1.5; }
.v2-form-resultat:empty { display: none; }
/* 10.13 : libellés du rail refermés avec Échap */
.v2-rail.v2-sans-bulle .v2-rail-txt { opacity: 0 !important; visibility: hidden !important; }

/* ==========================================================================
   60. Versions texte des documents PDF (RGAA 13.3) : views/static/doc-*.php
   ========================================================================== */
.v2-doc .v2-a11y-corps { grid-column: 1 / -1; }
@media (min-width: 1000px) { .v2-doc .v2-a11y-corps { grid-column: 2 / span 10; } }
.v2-doc-note { padding: 16px 20px; border-radius: 14px; background: rgba(207, 224, 236, .5); }
.v2-doc-sommaire ul { list-style: none; margin: 24px 0 0; padding: 0; display: grid; gap: 4px 32px; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }
.v2-doc-sommaire li { margin: 0; padding: 0; list-style: none; }
.v2-doc-sommaire a { display: inline-block; min-height: 24px; padding: 4px 0; }
.v2-doc-sous-titre { margin: 32px 0 12px; font-size: clamp(19px, 1.5vw, 22px); font-weight: 600; line-height: 1.3; color: var(--v2-navy); }
.v2-doc-inter { margin: 22px 0 8px; font-size: 17px; font-weight: 600; line-height: 1.3; color: var(--v2-navy); }
.v2-doc-defile { margin: 0 0 20px; overflow-x: auto; }
.v2-doc table { width: 100%; border-collapse: collapse; font-size: 15.5px; line-height: 1.45; font-variant-numeric: tabular-nums; background: #fff; }
.v2-doc caption { padding: 0 0 10px; text-align: left; font-weight: 600; color: var(--v2-navy); caption-side: top; }
.v2-doc :is(th, td) { padding: 9px 12px; border: 1px solid rgba(3, 13, 48, .18); text-align: left; vertical-align: top; overflow-wrap: normal; }
.v2-doc thead th { background: var(--v2-navy); color: #fff; font-weight: 600; }
.v2-doc tbody th { font-weight: 600; background: rgba(207, 224, 236, .35); }
.document-accessible { display: inline-block; min-height: 24px; margin-top: 12px; font-size: 15px; font-weight: 600; color: var(--v2-blue); text-decoration: underline; text-underline-offset: 3px; }
.document-accessible:focus-visible { outline: 2px solid var(--v2-blue); outline-offset: 3px; border-radius: 4px; }

/* Ancres internes : la cible s'arrête sous la barre de navigation fixe. */
#vols, [id][tabindex="-1"] { scroll-margin-top: 110px; }
[id][tabindex="-1"]:focus:not(:focus-visible) { outline: none; }

/* Recherche de l'accueil : liste des villes et calendrier ouverts passent devant le contenu (#main-content, z-index 10),
   sinon ils sont coupés au bas de la photo quand la page est un peu défilée (retour du 12/11). Reste sous la navigation (100). */
aside.p-searchbar:has(.dropdown.open, .v2-cal) { z-index: 20 !important; }

/* Offre sans photo : dégradé navy → lapis et nom de la ville en grand (le titre de la carte reste la source pour les lecteurs d'écran). */
.v2-offre-visuel:has(.v2-offre-visuel-nom) { display: flex; align-items: flex-end; background: radial-gradient(120% 90% at 85% 10%, rgba(179, 205, 224, .35), transparent 55%), linear-gradient(150deg, var(--v2-navy) 0%, #0064a7 100%); }
.v2-offre-visuel-nom { padding: 72px 28px 28px; color: #fff; font-size: clamp(40px, 6vw, 72px); font-weight: 600; line-height: 1; letter-spacing: -.03em; }
