/*
 * Breakpoints (desktop-first, approche max-width) :
 *   991px  - tablettes et petits laptops (bascule des layouts a 2 colonnes en 1 colonne)
 *   767px  - mobile large / tablette portrait (empilement des blocs, typographie reduite)
 *   479px  - petit smartphone (ajustements fins : grilles serrees, paddings reduits)
 * CSS pur n'autorise pas de variable dans une condition @media : ces 3 valeurs
 * sont la reference a reutiliser telles quelles, sans en introduire de nouvelles.
 */

*{
    box-sizing:border-box;
}

:root{
    --color-page:#f5f7fa;
    --color-surface:#ffffff;
    --color-surface-soft:#f8fafc;
    --color-border:#d9e2ec;
    --color-border-strong:#bcccdc;
    --color-text:#1f2933;
    --color-heading:#102a43;
    --color-muted:#627d98;
    --color-link:var(--theme-primary,#34495b);
    --color-accent:#0f766e;
    --color-badge-count:var(--theme-accent,#8A9A4E);
    --shadow-soft:0 10px 28px rgba(16,42,67,.08);
    --radius:4px;
    --site-width:1180px;
}

body{
    background:var(--color-page);
    color:var(--color-text);
    font-family:Arial,sans-serif;
    line-height:1.62;
    margin:0;
}

a{
    color:var(--color-link);
    text-decoration:none;
}

a:hover{
    text-decoration:underline;
}

.site-header{
    background:var(--color-surface);
    border-bottom:1px solid var(--color-border);
    position:sticky;
    top:0;
    z-index:1100;
}

.site-header-inner{
    align-items:center;
    display:flex;
    gap:24px;
    justify-content:space-between;
    margin:0 auto;
    max-width:var(--site-width);
    padding:14px 20px;
}

.site-name{
    color:var(--color-heading);
    flex:0 0 auto;
    font-size:21px;
    font-weight:bold;
    text-decoration:none;
}


.site-menu-toggle{
    align-items:center;
    background:#fff;
    border:1px solid var(--color-border-strong);
    border-radius:var(--radius);
    color:var(--color-heading);
    cursor:pointer;
    display:none;
    font:inherit;
    gap:8px;
    padding:8px 10px;
}

.site-menu-toggle-icon{
    display:grid;
    gap:4px;
    width:18px;
}

.site-menu-toggle-icon span{
    background:currentColor;
    display:block;
    height:2px;
    transition:opacity .16s ease, transform .16s ease;
    width:18px;
}

.site-menu-toggle[aria-expanded="true"] .site-menu-toggle-icon span:nth-child(1){
    transform:translateY(6px) rotate(45deg);
}

.site-menu-toggle[aria-expanded="true"] .site-menu-toggle-icon span:nth-child(2){
    opacity:0;
}

.site-menu-toggle[aria-expanded="true"] .site-menu-toggle-icon span:nth-child(3){
    transform:translateY(-6px) rotate(-45deg);
}
.site-nav{
    align-items:center;
    display:flex;
    flex:1 1 auto;
    justify-content:flex-end;
}

.site-menu,
.site-submenu{
    list-style:none;
    margin:0;
    padding:0;
}

.site-menu{
    align-items:center;
    display:flex;
    flex-wrap:wrap;
    gap:2px;
    justify-content:flex-end;
}

.site-menu-item{
    position:relative;
}

/* Entree de menu reservee au mobile (ex. "Cartes interactives"),
   pilotee par le css_class "menu-item-mobile-only" en base. */
.site-menu-item.menu-item-mobile-only{
    display:none;
}

.site-menu-link{
    border-radius:var(--radius);
    color:#334e68;
    display:block;
    font-size:14px;
    padding:9px 11px;
    text-decoration:none;
}

.site-menu-link:hover,
.site-menu-item:hover > .site-menu-link,
.site-menu-item:focus-within > .site-menu-link{
    background:#eef2f7;
    color:var(--color-heading);
    text-decoration:none;
}

.site-menu-item.has-children > .site-menu-link::after{
    content:"";
    border-left:4px solid transparent;
    border-right:4px solid transparent;
    border-top:5px solid #829ab1;
    display:inline-block;
    margin-left:7px;
    vertical-align:middle;
}

.site-submenu{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    box-shadow:var(--shadow-soft);
    display:none;
    left:0;
    min-width:220px;
    position:absolute;
    top:100%;
    z-index:30;
}

.site-menu-item:hover > .site-submenu,
.site-menu-item:focus-within > .site-submenu{
    display:block;
}

.site-submenu .site-menu-link{
    border-radius:0;
    padding:10px 12px;
    white-space:nowrap;
}

/* Intitule de regroupement dans un sous-menu (ex. "Archipels grecs") :
   simple etiquette, sans lien, suivie des entrees qu'elle regroupe. */
.site-menu-group-label{
    border-top:1px solid var(--color-border);
    color:var(--color-muted);
    display:block;
    font-size:12px;
    font-weight:bold;
    letter-spacing:.03em;
    margin-top:4px;
    padding:10px 12px 4px;
    text-transform:uppercase;
    white-space:nowrap;
}

.site-submenu .site-menu-item-grouped .site-menu-link{
    padding-left:22px;
}

.container{
    margin:0 auto;
    max-width:var(--site-width);
    padding:26px 20px;
}

.page-meta-bar{
    align-items:flex-start;
    display:grid;
    gap:24px;
    grid-template-columns:minmax(0,1fr) 320px;
    margin:0 0 20px;
}

.page-meta-left{
    align-items:flex-start;
    display:flex;
    flex-wrap:nowrap;
    gap:18px;
    justify-content:space-between;
    min-width:0;
}

.breadcrumbs{
    color:var(--color-muted);
    flex:1 1 auto;
    font-size:14px;
    margin:0;
    min-width:0;
}

.breadcrumbs ol{
    display:flex;
    flex-wrap:nowrap;
    gap:6px;
    list-style:none;
    margin:0;
    overflow:hidden;
    padding:0;
}

/* Le fil d'Ariane ne revient jamais a la ligne : le dernier terme (page en
   cours) absorbe le retrecissement en priorite (flex-shrink eleve), jusqu'a
   un plancher de 15 caracteres. Seulement si ça ne suffit toujours pas, les
   termes precedents commencent a leur tour a se tronquer (flex-shrink:1)
   jusqu'a leur propre plancher, plus petit. C'est le comportement natif de
   l'algorithme flexbox une fois qu'un item touche son min-width : l'espace
   restant est redistribue aux items suivants, sans JS necessaire. */
.breadcrumbs li{
    align-items:baseline;
    display:flex;
    flex-shrink:1;
    min-width:3ch;
    overflow:hidden;
}

.breadcrumbs li:last-child{
    flex-shrink:1000;
    min-width:15ch;
}

.breadcrumbs li > a,
.breadcrumbs li > span{
    min-width:0;
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}

.breadcrumbs li > a{
    color:var(--theme-accent);
}

.breadcrumbs li > a:hover{
    color:color-mix(in srgb, var(--theme-accent) 80%, black);
}

.breadcrumbs li:not(:last-child)::after{
    color:#9fb3c8;
    content:"/";
    flex-shrink:0;
    margin-left:6px;
}

.page-taxonomy-links{
    display:flex;
    flex:0 1 auto;
    flex-wrap:wrap;
    gap:7px;
    justify-content:flex-end;
    max-width:48%;
}

.page-meta-left .entity-badges{
    display:flex;
    flex:0 0 auto;
    flex-wrap:wrap;
    gap:7px;
    justify-content:flex-end;
}

.page-meta-left .entity-badge{
    background:#ffffff;
    border:1px solid var(--color-border);
    border-radius:999px;
    color:var(--color-muted);
    display:inline-flex;
    font-size:12px;
    font-weight:bold;
    letter-spacing:0;
    padding:5px 9px;
    text-decoration:none;
    white-space:nowrap;
}

.page-meta-left a.entity-badge:hover{
    background:#eef2f7;
    text-decoration:none;
}

.page-meta-left .entity-badge-primary{
    background:var(--theme-primary-tint);
    border-color:var(--theme-primary-border);
    color:var(--theme-primary);
}

.page-meta-left a.entity-badge-primary:hover{
    background:var(--theme-primary-tint-strong);
}

.page-meta-social{
    display:flex;
    flex:0 0 auto;
    gap:8px;
}

.page-meta-social-link{
    align-items:center;
    background-color:transparent;
    border:1.5px solid #1877f2;
    border-radius:50%;
    display:flex;
    height:30px;
    justify-content:center;
    transition:background-color .15s ease;
    width:30px;
}

.page-meta-social-link:hover{
    background-color:rgba(24,119,242,.1);
}

.page-meta-social-link svg{
    height:16px;
    width:10px;
}

.page-meta-social-link-facebook svg path{
    fill:#1877f2;
}

/* Widget compact "Preparer son voyage" (memes liens/icones que le widget
   "Preparer le sejour" de la sidebar, presentation differente : 3 colonnes
   egales sur une seule ligne basse, liseré de couleur en tete). Deux
   exemplaires dans le DOM, un seul visible a la fois sous 767px :
   - ".mobile-travel-widget-inline" sous la recherche, visible au chargement ;
   - ".mobile-travel-widget-sticky" dans l'en-tete fixe, masque au chargement
     et affiche par JS (travel-tools.js) uniquement une fois que le scroll
     fait disparaitre la version inline sous l'en-tete. */
.mobile-travel-widget{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:8px;
    border-top:3px solid var(--theme-primary, var(--color-link));
    display:none;
    margin:0 0 20px;
    overflow:hidden;
}

.site-header .mobile-travel-widget{
    margin:10px 20px 12px;
}

.mobile-travel-widget-link{
    align-items:center;
    color:var(--color-heading);
    display:flex;
    flex:1 1 0;
    flex-direction:column;
    gap:5px;
    justify-content:center;
    padding:12px 6px;
    text-decoration:none;
}

.mobile-travel-widget-link:not(:last-child){
    border-right:1px solid var(--color-border);
}

.mobile-travel-widget-link span{
    font-size:12.5px;
    line-height:1.25;
    text-align:center;
    white-space:normal;
}

.mobile-travel-widget-link svg{
    fill:none;
    flex-shrink:0;
    height:18px;
    stroke:var(--theme-primary, var(--color-link));
    stroke-linecap:round;
    stroke-linejoin:round;
    stroke-width:1.8;
    width:18px;
}

.page-taxonomy-link{
    background:#ffffff;
    border:1px solid var(--color-border);
    border-radius:999px;
    color:#486581;
    font-size:12px;
    font-weight:bold;
    line-height:1.2;
    padding:5px 9px;
    text-decoration:none;
    white-space:nowrap;
}

.page-taxonomy-link:hover{
    background:#eef7f5;
    border-color:#aacfc8;
    color:var(--color-accent);
    text-decoration:none;
}

.page-taxonomy-link-tag{
    background:#f8fafc;
    color:#5d7180;
}

.hero{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    margin-bottom:24px;
    overflow:hidden;
    padding:24px;
    position:relative;
}

.hero::before{
    background-image:var(--hero-bg-image, none);
    background-position:center;
    background-size:cover;
    content:'';
    filter:grayscale(1) contrast(1.05);
    inset:0;
    opacity:.1;
    position:absolute;
}

.hero > *{
    position:relative;
    z-index:1;
}

.hero > .hero-bg{
    inset:0;
    position:absolute;
    z-index:0;
}

.hero-bg-slide{
    background-position:center;
    background-size:cover;
    filter:grayscale(1) contrast(1.05);
}

.hero .hero-bg-slide.is-active{
    opacity:.1;
}

.hero-image{
    display:block;
    height:auto;
    margin:-24px -24px 22px;
    max-height:520px;
    object-fit:cover;
    width:calc(100% + 48px);
}

.hero-actions{
    align-items:center;
    display:flex;
    gap:10px;
    position:absolute;
    right:24px;
    top:24px;
    z-index:2;
}

.hero-search-form{
    align-items:center;
    display:flex;
    gap:4px;
}

.hero-search-form input[type="search"]{
    background:var(--color-surface);
    border:0;
    border-bottom:1px solid var(--color-border);
    border-radius:4px 4px 0 0;
    color:var(--color-heading);
    font:inherit;
    font-size:14px;
    padding:5px 8px;
    width:160px;
}

.hero-search-form input[type="search"]:focus{
    border-bottom-color:var(--theme-primary, var(--color-link));
    outline:none;
}

.hero-search-form button{
    align-items:center;
    background:none;
    border:0;
    color:var(--color-muted);
    cursor:pointer;
    display:flex;
    padding:2px;
}

.hero-search-form button:hover{
    color:var(--theme-primary, var(--color-link));
}

.hero-search-form button svg{
    fill:none;
    height:16px;
    stroke:currentColor;
    stroke-linecap:round;
    stroke-linejoin:round;
    stroke-width:2;
    width:16px;
}

.hero-social-link{
    align-items:center;
    background-color:transparent;
    border:1.5px solid #1877f2;
    border-radius:50%;
    display:flex;
    flex:0 0 auto;
    height:30px;
    justify-content:center;
    transition:background-color .15s ease;
    width:30px;
}

.hero-social-link:hover{
    background-color:rgba(24,119,242,.1);
}

.hero-social-link svg{
    height:16px;
    width:10px;
}

.hero-social-link-facebook svg path{
    fill:#1877f2;
}

.hero-actions + .kicker + h1{
    margin-top:24px;
}

/* Sur l'accueil, la recherche/Facebook vivent dans le hero (".hero-actions")
   a partir de 767px ; en dessous, c'est cette barre (identique aux autres
   pages) qui les affiche a la place, au-dessus du hero. */
.page-meta-bar-home{
    display:none;
}

.kicker{
    color:var(--color-muted);
    font-size:14px;
    font-weight:bold;
    letter-spacing:.03em;
    text-transform:uppercase;
}

h1{
    color:var(--color-heading);
    font-size:clamp(32px,5vw,48px);
    line-height:1.08;
    margin:8px 0 12px;
}

h2{
    color:var(--color-heading);
    font-size:24px;
    margin-top:34px;
}

.summary{
    color:#486581;
    font-size:19px;
    margin:0;
    max-width:780px;
}

.summary p{
    margin:0 0 12px;
}

.summary p:last-child{
    margin-bottom:0;
}

.entity-layout{
    align-items:start;
    display:grid;
    gap:24px;
    grid-template-columns:minmax(0,1fr) 320px;
}

.entity-main{
    min-width:0;
}

.entity-layout-single{
    grid-template-columns:minmax(0,1fr);
}

.entity-sidebar{
    display:grid;
    gap:16px;
    min-width:0;
    position:sticky;
    top:86px;
}

.content,
.sidebar-card,
.taxonomy-links{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    padding:22px;
}

.content img{
    height:auto;
    max-width:100%;
}

.content figure{
    margin:24px 0;
}

.content figcaption{
    color:var(--color-muted);
    font-size:14px;
    margin-top:6px;
    text-align:center;
}

.content figcaption p{
    margin:0 0 4px;
}

.content figcaption p:last-child{
    margin-bottom:0;
}

.content table{
    border-collapse:collapse;
    display:block;
    max-width:100%;
    overflow-x:auto;
}

.content td,
.content th{
    border:1px solid var(--color-border);
    padding:8px;
    text-align:left;
}

.content blockquote{
    border-left:4px solid var(--color-border-strong);
    color:#486581;
    margin:22px 0;
    padding-left:16px;
}

.sidebar-card h2,
.sidebar-card h3{
    font-size:18px;
    margin:0 0 10px;
}

.visually-hidden{
    border:0 !important;
    clip:rect(0 0 0 0) !important;
    clip-path:inset(50%) !important;
    height:1px !important;
    margin:-1px !important;
    overflow:hidden !important;
    padding:0 !important;
    position:absolute !important;
    white-space:nowrap !important;
    width:1px !important;
}

.page-meta-actions{
    align-items:center;
    display:flex;
    gap:14px;
    width:100%;
}

.page-meta-search-form{
    align-items:center;
    display:flex;
    flex:1 1 auto;
    gap:4px;
    min-width:0;
}

.page-meta-search-form input[type="search"]{
    background:var(--color-surface);
    border:0;
    border-bottom:1px solid var(--color-border);
    border-radius:4px 4px 0 0;
    color:var(--color-heading);
    flex:1 1 auto;
    font:inherit;
    font-size:14px;
    min-width:0;
    padding:5px 8px;
    width:auto;
}

.page-meta-search-form input[type="search"]:focus{
    border-bottom-color:var(--theme-primary, var(--color-link));
    outline:none;
}

.page-meta-search-form button{
    align-items:center;
    background:none;
    border:0;
    color:var(--color-muted);
    cursor:pointer;
    display:flex;
    padding:2px;
}

.page-meta-search-form button:hover{
    color:var(--theme-primary, var(--color-link));
}

.page-meta-search-form button svg{
    fill:none;
    height:16px;
    stroke:currentColor;
    stroke-linecap:round;
    stroke-linejoin:round;
    stroke-width:2;
    width:16px;
}

.search-form{
    display:flex;
    gap:8px;
    margin-top:14px;
    max-width:480px;
}

.search-form input[type="search"]{
    border:1px solid var(--color-border);
    border-radius:var(--radius);
    flex:1 1 auto;
    font:inherit;
    padding:9px 12px;
}

.search-form button{
    background:var(--color-link);
    border:0;
    border-radius:var(--radius);
    color:#fff;
    cursor:pointer;
    font:inherit;
    padding:9px 18px;
}

.search-results-count{
    color:var(--color-muted);
    margin:0 0 16px;
}

.sidebar-card p{
    margin:8px 0;
}

.sidebar-note{
    color:var(--color-muted);
    font-size:14px;
}

.sidebar-actions{
    display:grid;
    gap:8px;
}

.sidebar-action{
    background:#e6f4f1;
    border:1px solid #99d6cd;
    border-radius:var(--radius);
    color:#064e45;
    display:block;
    font-weight:normal;
    padding:9px 10px;
    text-decoration:none;
}

.sidebar-action:hover{
    background:#d3eee8;
    text-decoration:none;
}

.map-frame{
    aspect-ratio:4/3;
    background:var(--color-surface-soft);
    border:1px solid var(--color-border);
    display:block;
    overflow:hidden;
    width:100%;
}

.map-link{
    display:inline-block;
    font-size:14px;
    margin-top:8px;
}

.taxonomy-links{
    margin:0 0 24px;
}

.taxonomy-links p{
    margin:8px 0;
}

.cards{
    display:grid;
    gap:16px;
    grid-template-columns:repeat(auto-fill,minmax(240px,1fr));
    margin-bottom:28px;
}

@media (max-width:767px){
    .cards{
        gap:10px;
    }
}

.card{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    display:block;
    min-height:100%;
    padding:16px;
}

.card-main{
    color:inherit;
    display:block;
    text-decoration:none;
}

.card-main:hover{
    text-decoration:none;
}
.card:hover{
    box-shadow:var(--shadow-soft);
    text-decoration:none;
}

.card img{
    display:block;
    height:140px;
    margin:-16px -16px 12px;
    object-fit:cover;
    width:calc(100% + 32px);
}

.card-prepare .card-title{
    align-items:center;
    display:flex;
    gap:10px;
}

.card-prepare-icon{
    align-items:center;
    background:var(--theme-primary-tint);
    border-radius:50%;
    display:flex;
    flex-shrink:0;
    height:36px;
    justify-content:center;
    width:36px;
}

.card-prepare-icon svg{
    fill:none;
    height:18px;
    stroke:var(--theme-primary);
    stroke-linecap:round;
    stroke-linejoin:round;
    stroke-width:1.7;
    width:18px;
}

.card-head{
    align-items:center;
    display:flex;
    gap:8px;
    justify-content:space-between;
}

.card-type{
    color:var(--color-muted);
    font-size:13px;
    font-weight:bold;
    text-transform:uppercase;
}

@media (max-width:767px){
    .card{
        position:relative;
    }

    .card-type{
        background:var(--color-page);
        border-radius:5px;
        box-shadow:0 2px 6px rgba(16,42,67,.22);
        color:var(--color-heading);
        font-size:11px;
        padding:3px 8px;
        position:absolute;
        right:10px;
        top:10px;
        z-index:1;
    }
}

.card-rating{
    color:#e0a530;
    flex:0 0 auto;
    font-size:13px;
    letter-spacing:1px;
    line-height:1;
}

.card-title{
    color:var(--color-heading);
    font-size:19px;
    font-weight:bold;
    margin:4px 0;
}

.card-summary{
    color:#486581;
    margin:0;
}

@media (max-width:767px){
    .card-summary{
        -webkit-box-orient:vertical;
        -webkit-line-clamp:3;
        display:-webkit-box;
        overflow:hidden;
    }

    .card-summary p{
        -webkit-box-orient:vertical;
        -webkit-line-clamp:3;
        display:-webkit-box;
        overflow:hidden;
    }
}

.card-summary p{
    margin:0 0 6px;
}

.card-summary p:last-child{
    margin-bottom:0;
}


.listing-filters{
    align-items:end;
    background:var(--color-surface);
    border:1px solid var(--color-border);
    display:grid;
    gap:14px;
    grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
    margin:0 0 18px;
    padding:16px;
}

.listing-filters label{
    color:var(--color-heading);
    display:block;
    font-size:13px;
    font-weight:bold;
    margin-bottom:5px;
}

.listing-filters select{
    border:1px solid var(--color-border-strong);
    border-radius:var(--radius);
    font:inherit;
    padding:8px;
    width:100%;
}

.listing-filter-actions{
    align-items:center;
    display:flex;
    gap:10px;
}

.listing-filter-actions button{
    background:var(--color-link);
    border:0;
    border-radius:var(--radius);
    color:#fff;
    cursor:pointer;
    font:inherit;
    font-weight:bold;
    padding:9px 12px;
}

.button-link{
    color:var(--color-muted);
    font-size:14px;
}

.listing-meta{
    color:var(--color-muted);
    font-size:14px;
    margin:0 0 18px;
}

.card-meta{
    color:var(--color-muted);
    font-size:14px;
    margin:4px 0 8px;
}

.card-meta-light-edition{
    font-size:13px;
    font-style:italic;
    margin-top:-4px;
}

.card-editions{
    border-top:1px solid var(--color-border);
    display:flex;
    flex-wrap:wrap;
    gap:6px 10px;
    margin-top:10px;
    padding-top:10px;
}

.card-editions a{
    font-size:13px;
}

.card-editions-all{
    font-weight:bold;
}

.card-taxonomy{
    display:flex;
    flex-wrap:wrap;
    gap:6px;
    margin-top:12px;
}

.card-taxonomy a,
.card-taxonomy span{
    background:#eef2f7;
    border-radius:var(--radius);
    color:#486581;
    font-size:12px;
    padding:3px 6px;
    text-decoration:none;
}

.card-taxonomy a:hover{
    background:#dbe4ee;
}

.pagination{
    align-items:center;
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-top:10px;
}

.pagination a{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:var(--radius);
    color:#334e68;
    min-width:36px;
    padding:7px 10px;
    text-align:center;
    text-decoration:none;
}

.pagination a.active,
.pagination a:hover{
    background:#eef2f7;
    color:var(--color-heading);
}
.term-list{
    display:grid;
    gap:12px;
    grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
    margin-bottom:28px;
}

.term-card{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    display:flex;
    gap:12px;
    justify-content:space-between;
    padding:14px 16px;
}

.term-count{
    color:var(--color-muted);
    font-size:14px;
    white-space:nowrap;
}

.term-children-filter{
    align-items:center;
    display:flex;
    flex-wrap:wrap;
    gap:8px 10px;
    margin:0 0 28px;
}

.term-children-filter-label{
    color:var(--color-muted);
    font-size:14px;
}

.term-children-filter-link{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:20px;
    color:var(--color-heading);
    font-size:14px;
    padding:6px 14px;
    text-decoration:none;
}

.term-children-filter-link:hover{
    border-color:var(--theme-primary);
    color:var(--theme-primary);
}

.term-children-filter-link .term-count{
    font-size:13px;
}

.site-footer{
    color:var(--color-muted);
    font-size:14px;
    padding:24px 20px;
    text-align:center;
}

@media (max-width:991px){
    .site-header-inner{
        align-items:flex-start;
        flex-direction:column;
    }

    .site-nav,
    .site-menu{
        justify-content:flex-start;
        width:100%;
    }

    .site-menu{
        align-items:stretch;
        display:grid;
        gap:4px;
    }

    .site-submenu{
        border:0;
        box-shadow:none;
        display:block;
        margin-left:14px;
        position:static;
    }

    .entity-layout{
        grid-template-columns:1fr;
    }

    .entity-sidebar{
        position:static;
    }

    .page-meta-bar{
        grid-template-columns:1fr;
    }
}

@media (max-width:767px){
    .page-meta-bar{
        gap:10px;
    }

    .page-meta-bar-home{
        display:grid;
    }

    .mobile-travel-widget-inline{
        display:flex;
    }

    .site-header[data-show-travel-widget="true"] .mobile-travel-widget-sticky{
        display:flex;
    }

    .site-menu-item.menu-item-mobile-only{
        display:list-item;
    }

    .page-meta-left{
        flex-wrap:wrap;
    }

    .page-taxonomy-links{
        justify-content:flex-start;
        max-width:none;
        width:100%;
    }

    .page-meta-left .entity-badges{
        justify-content:flex-start;
        width:100%;
    }

    .page-meta-social{
        justify-content:flex-start;
    }

    .page-meta-actions{
        justify-content:space-between;
        width:100%;
    }

    .page-meta-search-form input[type="search"]{
        width:100%;
    }

    .page-meta-search-form{
        flex:1 1 auto;
    }

    .container{
        padding:18px;
    }

    .hero,
    .content,
    .sidebar-card,
    .taxonomy-links{
        padding:18px;
    }

    .hero-image{
        margin:-18px -18px 18px;
        width:calc(100% + 36px);
    }

    /* Sous 767px, la recherche et Facebook sortent du hero : c'est
       ".page-meta-bar-home" (au-dessus, pleine largeur, meme presentation
       que sur les autres pages) qui prend le relais. */
    .hero-actions{
        display:none;
    }
}
.cms-gallery{
    display:grid;
    gap:14px;
    grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
    margin:26px 0;
}

.content .cms-gallery figure{
    margin:0;
}

.cms-gallery img{
    background:#edf2f7;
    display:block;
    height:auto;
    width:100%;
}

.button,
.button-light{
    background:var(--color-link);
    border:0;
    border-radius:var(--radius);
    color:#fff;
    cursor:pointer;
    display:inline-block;
    font:inherit;
    padding:8px 12px;
    text-decoration:none;
}

.button:hover,
.button-light:hover{
    text-decoration:none;
}

.button-light{
    background:#e2e8f0;
    color:#1f2933;
}

.button-light.is-active{
    background:var(--color-accent, #2c7a7b);
    color:#fff;
}
.travel-quick-link{
    align-items:center;
    background:#eef2f7;
    border:1px solid var(--color-border);
    border-radius:var(--radius);
    color:var(--color-heading);
    display:inline-flex;
    flex:0 0 auto;
    font-size:14px;
    gap:7px;
    padding:8px 10px;
    text-decoration:none;
}

.travel-quick-link:hover{
    background:#e2e8f0;
    text-decoration:none;
}

.travel-quick-link span{
    background:var(--color-accent);
    border-radius:999px;
    color:#fff;
    font-size:12px;
    line-height:1;
    min-width:20px;
    padding:4px 6px;
    text-align:center;
}

.entity-title-row{
    align-items:flex-start;
    display:flex;
    gap:14px;
    justify-content:space-between;
}

.entity-title-row h1{
    min-width:0;
}

.entity-actions{
    display:flex;
    flex:0 0 auto;
    gap:8px;
    padding-top:10px;
}

.entity-action-button{
    align-items:center;
    background:#fff;
    border:1px solid var(--color-border-strong);
    border-radius:999px;
    color:#334e68;
    cursor:pointer;
    display:inline-flex;
    font:inherit;
    height:38px;
    justify-content:center;
    line-height:1;
    padding:0;
    width:38px;
}

.entity-action-button:hover,
.entity-action-button.is-active{
    background:#e6fffa;
    border-color:var(--color-accent);
    color:var(--color-accent);
}

.itinerary-layout{
    align-items:start;
    display:grid;
    gap:24px;
    grid-template-columns:minmax(0,1fr) 420px;
}

.itinerary-main{
    display:grid;
    gap:24px;
    min-width:0;
}

.itinerary-map-block{
    display:flex;
    gap:14px;
    position:relative;
}

.itinerary-map-hint{
    color:var(--color-muted);
    font-size:13px;
    margin:10px 0 0;
}

.itinerary-map-actions{
    align-items:center;
    display:flex;
    gap:14px;
    margin-top:12px;
}

.itinerary-route-profile-toggle{
    display:flex;
    gap:8px;
    margin-top:10px;
}

.button-small{
    font-size:12px;
    padding:5px 10px;
}


.itinerary-side{
    display:grid;
    gap:24px;
}

.itinerary-assistant h2,
.itinerary-share-section h2{
    margin:0 0 16px;
}

.itinerary-share-section .itinerary-share-panel{
    margin-bottom:0;
    margin-top:16px;
}

.itinerary-share-section-actions{
    display:flex;
    gap:10px;
}

.itinerary-share-section-actions .button-light{
    transition:background-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.itinerary-share-section-actions .button-light:hover{
    background:#c9d5e3;
    transform:translateY(-1px);
}

.itinerary-share-section-actions .button-light.is-active{
    box-shadow:0 0 0 2px var(--color-accent, #2c7a7b);
}

.itinerary-share-panel h3{
    margin:0 0 8px;
}

.itinerary-import-paste-error{
    color:#c94b4b;
    font-weight:600;
    margin:8px 0 0;
}

.itinerary-import-banner[hidden]{
    display:none;
}

.itinerary-import-banner{
    background:var(--color-surface);
    border-left:3px solid var(--color-accent);
    display:flex;
    align-items:center;
    flex-wrap:wrap;
    gap:12px;
    justify-content:space-between;
    margin-bottom:18px;
    padding:14px 18px;
}

.itinerary-import-banner p{
    margin:0;
}

.itinerary-import-banner-actions{
    display:flex;
    flex-shrink:0;
    gap:10px;
}

.itinerary-share-panel{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    margin-bottom:18px;
    padding:18px;
}

.itinerary-share-body{
    align-items:flex-start;
    display:flex;
    flex-wrap:wrap;
    gap:20px;
    margin-top:12px;
}

.itinerary-share-link-block{
    flex:1 1 260px;
    min-width:0;
}

.itinerary-share-link-block label{
    display:block;
    font-weight:600;
    margin-bottom:6px;
}

.itinerary-share-link-row{
    display:flex;
    gap:8px;
}

.itinerary-share-link-row input{
    border:1px solid var(--color-border);
    flex:1 1 auto;
    min-width:0;
    padding:8px 10px;
}

.itinerary-share-copied{
    color:var(--color-accent);
    font-weight:600;
    margin:8px 0 0;
}

.itinerary-share-qr{
    background:#fff;
    border:1px solid var(--color-border);
    flex:0 0 auto;
    line-height:0;
    padding:8px;
}

.itinerary-clear-all{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:999px;
    color:var(--color-muted);
    cursor:pointer;
    flex:0 0 auto;
    font-size:11px;
    padding:5px 10px;
    position:absolute;
    left:4px;
    top:4px;
    z-index:2;
}

.itinerary-toolbar .itinerary-clear-all{
    left:auto;
    position:static;
    top:auto;
}

.itinerary-assistant h3{
    color:var(--color-heading);
    font-size:16px;
    margin:16px 0 10px;
}

.itinerary-assistant-empty{
    color:#486581;
}

.itinerary-route-detail-empty{
    color:#486581;
}

.itinerary-route-steps{
    display:grid;
    gap:10px;
    list-style:none;
    margin:0;
    max-height:420px;
    overflow-y:auto;
    padding:0 12px 0 0;
}

.itinerary-route-steps li{
    border-bottom:1px solid var(--color-border);
    display:flex;
    gap:10px;
    justify-content:space-between;
    padding-bottom:10px;
}

.itinerary-route-steps li:last-child{
    border-bottom:0;
    padding-bottom:0;
}

.itinerary-route-step-text{
    color:var(--color-heading);
    font-size:13px;
}

.itinerary-route-step-distance{
    color:var(--color-muted);
    flex:0 0 auto;
    font-size:12px;
    white-space:nowrap;
}

.assistant-metrics{
    display:grid;
    gap:10px;
    grid-template-columns:repeat(3,minmax(0,1fr));
}

.assistant-metrics div{
    background:var(--color-surface-soft);
    border:1px solid var(--color-border);
    padding:10px;
}

.assistant-metrics strong{
    color:var(--color-heading);
    display:block;
    font-size:20px;
    line-height:1.1;
}

.assistant-metrics span{
    color:var(--color-muted);
    display:block;
    font-size:12px;
    margin-top:4px;
}

.assistant-advice{
    display:grid;
    gap:8px;
    list-style:none;
    margin:16px 0 0;
    padding:0;
}

.assistant-advice li{
    border-left:3px solid var(--color-accent);
    color:#334e68;
    padding-left:10px;
}

.assistant-zones{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
}

.assistant-zones span{
    background:#eef2f7;
    border:1px solid var(--color-border);
    border-radius:999px;
    color:#334e68;
    font-size:13px;
    padding:5px 9px;
}

.assistant-zones strong{
    color:var(--color-heading);
}

.itinerary-meta{
    clear:right;
    color:var(--color-muted);
    font-size:13px;
    margin:0 0 8px;
}
.itinerary-duration-missing{
    color:#e0a530;
    cursor:help;
    font-weight:600;
}
.itinerary-panel{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    padding:22px;
}

.itinerary-map-panel{
    padding-left:11px;
    padding-right:11px;
}

.itinerary-toolbar{
    align-items:center;
    display:flex;
    gap:16px;
    justify-content:space-between;
}

.itinerary-toolbar h2,
.itinerary-map-panel h2{
    margin:0 0 16px;
}

.itinerary-list{
    display:grid;
    gap:14px;
    list-style:none;
    margin:0;
    padding:0;
}

.itinerary-item{
    border:1px solid var(--color-border);
    cursor:grab;
    display:grid;
    gap:14px;
    grid-template-columns:132px minmax(0,1fr);
    padding:12px;
    touch-action:none;
    -webkit-user-select:none;
    user-select:none;
}

.itinerary-item a,
.itinerary-item button{
    touch-action:auto;
    -webkit-user-select:auto;
    user-select:auto;
}

.itinerary-item.is-dragging{
    cursor:grabbing;
    opacity:.4;
}

.itinerary-item img{
    aspect-ratio:4/3;
    background:#edf2f7;
    height:auto;
    object-fit:cover;
    width:100%;
}

.itinerary-item-body{
    grid-column:2;
    min-width:0;
    position:relative;
}

.itinerary-item-top-actions{
    align-items:center;
    display:flex;
    float:right;
    gap:6px;
    margin:0 0 6px 10px;
}

.itinerary-step{
    align-items:center;
    background:var(--color-badge-count);
    border-radius:999px;
    color:#fff;
    display:inline-flex;
    flex:0 0 auto;
    font-size:13px;
    font-weight:bold;
    height:26px;
    justify-content:center;
    width:26px;
}

.itinerary-item h3{
    font-size:20px;
    margin:0 0 6px;
}

.itinerary-item p{
    color:#486581;
    margin:0 0 8px;
}

.itinerary-hours{
    color:var(--color-muted);
    display:block;
    font-size:13px;
    margin:0 0 8px;
}

.text-button{
    background:transparent;
    border:0;
    color:var(--color-link);
    cursor:pointer;
    font:inherit;
    padding:0;
}

.itinerary-remove-button{
    background:#e2e8f0;
    border:0;
    border-radius:var(--radius);
    color:#1f2933;
    cursor:pointer;
    flex:0 0 auto;
    font:inherit;
    font-size:12px;
    padding:5px 10px;
}

.itinerary-remove-button:hover{
    background:#d6dde5;
}

.itinerary-item.is-excluded{
    opacity:.55;
}

.itinerary-excluded-note{
    color:var(--color-muted);
    font-size:12px;
    font-style:italic;
    margin:0 0 6px;
}

.itinerary-empty{
    color:#486581;
}

.itinerary-map{
    background:#eef2f7;
    border:1px solid var(--color-border);
    flex:1 1 0%;
    height:420px;
    min-width:0;
    overflow:hidden;
    position:relative;
}

.itinerary-map-empty{
    background:rgba(255,255,255,.92);
    border:1px solid var(--color-border);
    left:50%;
    padding:12px 14px;
    position:absolute;
    text-align:center;
    top:50%;
    transform:translate(-50%,-50%);
    width:min(280px,80%);
    z-index:1;
}

.itinerary-pin-badge{
    align-items:center;
    background:var(--color-badge-count);
    border:2px solid #fff;
    border-radius:999px;
    box-shadow:0 8px 18px rgba(16,42,67,.25);
    color:#fff;
    display:flex;
    font-size:13px;
    font-weight:bold;
    height:30px;
    justify-content:center;
    width:30px;
}

.itinerary-order-rail-wrap{
    flex:0 0 190px;
    position:relative;
    width:190px;
}

.itinerary-order-rail{
    display:flex;
    flex-direction:column;
    gap:6px;
    list-style:none;
    margin:0;
    max-height:420px;
    overflow-y:auto;
    padding:34px 0 0;
    width:100%;
}

.itinerary-order-item{
    align-items:center;
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:6px;
    cursor:grab;
    display:flex;
    gap:5px;
    padding:6px 5px;
    touch-action:none;
    -webkit-user-select:none;
    user-select:none;
}

.itinerary-order-item.is-dragging{
    cursor:grabbing;
    opacity:.4;
}

.itinerary-drag-ghost{
    background:var(--color-badge-count);
    border-radius:999px;
    box-shadow:0 4px 12px rgba(0,0,0,.25);
    color:#fff;
    font-size:13px;
    font-weight:bold;
    max-width:180px;
    overflow:hidden;
    padding:6px 12px;
    pointer-events:none;
    position:fixed;
    text-overflow:ellipsis;
    top:0;
    left:0;
    transform:translate(-50%,-130%);
    white-space:nowrap;
    z-index:1000;
}

.itinerary-order-step{
    align-items:center;
    background:var(--color-badge-count);
    border-radius:999px;
    color:#fff;
    display:inline-flex;
    flex:0 0 auto;
    font-size:12px;
    font-weight:bold;
    height:22px;
    justify-content:center;
    width:22px;
}

.itinerary-order-title{
    color:var(--color-heading);
    flex:1 1 auto;
    font-size:13px;
    min-width:0;
    overflow:hidden;
    text-decoration:none;
    text-overflow:ellipsis;
    white-space:nowrap;
}

.itinerary-order-item.no-coords{
    opacity:.65;
}

.itinerary-trash{
    align-items:center;
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:999px;
    cursor:default;
    display:flex;
    font-size:15px;
    height:26px;
    justify-content:center;
    position:absolute;
    right:4px;
    top:4px;
    width:26px;
    z-index:2;
}

.itinerary-all-places-marker{
    background-image:var(--pin-image);
    background-position:center;
    background-repeat:no-repeat;
    background-size:contain;
    display:block;
    filter:grayscale(1) opacity(.65);
    height:40px;
    width:29px;
}

.itinerary-trash.is-drop-target{
    background:#fbe4e4;
    border-color:#c94b4b;
    color:#c94b4b;
    transform:scale(1.15);
}

.itinerary-order-item.is-excluded{
    opacity:.5;
}

.itinerary-order-include{
    flex:0 0 auto;
    line-height:0;
    margin-left:auto;
    touch-action:manipulation;
}

.itinerary-order-include input{
    cursor:pointer;
    height:16px;
    margin:0;
    width:16px;
}

@media (max-width:767px){
    .itinerary-map-block{
        flex-direction:column;
    }

    .itinerary-order-rail-wrap{
        width:100%;
    }

    .itinerary-order-rail{
        flex-direction:row;
        flex-wrap:wrap;
        max-height:none;
        width:100%;
    }

    .itinerary-order-item{
        flex:0 0 auto;
    }
}


.map-link-wrap{
    margin-bottom:0;
}

@media (max-width:991px){
    .site-header-inner{
        display:grid;
        gap:10px;
        grid-template-columns:minmax(0,1fr) auto auto;
    }

    .site-name{
        align-self:center;
        grid-row:1;
        min-width:0;
    }

    .site-menu-toggle{
        align-self:center;
        grid-column:2;
        grid-row:1;
    }

    .site-header[data-nav-ready="true"] .site-menu-toggle{
        display:inline-flex;
    }

    .travel-quick-link{
        align-self:center;
        grid-column:3;
        grid-row:1;
        white-space:nowrap;
    }

    .site-nav{
        grid-column:1 / -1;
        grid-row:2;
        justify-content:flex-start;
        width:100%;
    }

    .site-header[data-nav-ready="true"] .site-nav{
        display:none;
    }

    .site-header[data-nav-open="true"] .site-nav{
        display:block;
    }

    .site-menu{
        align-items:stretch;
        border-top:1px solid var(--color-border);
        display:grid;
        gap:0;
        justify-content:stretch;
        padding-top:8px;
        width:100%;
    }

    .site-menu-link{
        border-radius:0;
        padding:12px 4px;
    }

    .site-menu-item.has-children > .site-menu-link::after{
        margin-left:8px;
    }

    .site-submenu{
        background:var(--color-surface-soft);
        border:0;
        border-left:3px solid var(--color-border);
        box-shadow:none;
        display:block;
        min-width:0;
        position:static;
    }

    .site-submenu .site-menu-link{
        padding-left:18px;
        white-space:normal;
    }

    .entity-title-row,
    .itinerary-toolbar{
        align-items:flex-start;
        flex-direction:column;
    }

    .itinerary-layout{
        grid-template-columns:minmax(0,1fr);
    }

    .itinerary-item{
        grid-template-columns:92px minmax(0,1fr);
    }
}
.back-to-top-layer{
    bottom:0;
    display:none;
    left:0;
    margin:0 auto;
    max-width:var(--site-width);
    pointer-events:none;
    position:fixed;
    right:0;
    top:0;
    z-index:40;
}

@media (min-width:1360px){
    .back-to-top-layer{
        display:block;
    }
}

@media (max-width:767px){
    .back-to-top-layer{
        display:block;
    }
}

.back-to-top{
    align-items:center;
    background:var(--entity-paper);
    border:1px solid var(--entity-line);
    border-radius:50%;
    bottom:24px;
    box-shadow:var(--shadow-soft);
    color:var(--theme-primary);
    cursor:pointer;
    display:flex;
    height:44px;
    justify-content:center;
    left:-60px;
    opacity:0;
    pointer-events:none;
    position:absolute;
    transform:translateY(8px);
    transition:opacity .2s,transform .2s;
    visibility:hidden;
    width:44px;
}

.back-to-top svg{
    height:20px;
    width:20px;
}

.back-to-top.is-visible{
    opacity:1;
    pointer-events:auto;
    transform:translateY(0);
    visibility:visible;
}

.back-to-top:hover{
    background:var(--entity-soft);
}

/* Sous 767px, le bouton n'a plus de marge laterale ou se loger (le
   positionnement "left:-60px" est pense pour la marge d'un ecran large) :
   il redevient un bouton flottant classique, ancre en bas a droite. */
@media (max-width:767px){
    .back-to-top{
        bottom:16px;
        left:auto;
        right:16px;
    }
}

/* Modele A - pages standards : articles, lieux, evenements */
.entity-page{
    --entity-paper:#fffefa;
    --entity-soft:#f4f7f4;
    --entity-line:#d8e1dd;
    --entity-ink:#1f3035;
    --entity-heading:#12323a;
    --entity-muted:#64757c;
    --entity-lagoon:#0f766e;
    --entity-brick:#a84f3d;
    --entity-gold:#c9963f;
}

.entity-page > .entity-hero{
    background:transparent;
    border:0;
    border-bottom:1px solid var(--entity-line);
    margin:0 0 28px;
    padding:0 0 26px;
}

.entity-page .hero-image{
    aspect-ratio:16/7;
    border:1px solid var(--entity-line);
    border-radius:8px;
    display:block;
    margin:0 0 22px;
    max-height:460px;
    object-fit:cover;
    width:100%;
}

.entity-page .kicker{
    color:var(--entity-brick);
    font-size:13px;
    letter-spacing:0;
    margin-bottom:8px;
    text-transform:uppercase;
}

.entity-page .entity-title-main{
    min-width:0;
}

.entity-page .entity-badges{
    display:flex;
    flex-wrap:wrap;
    gap:7px;
}

.entity-page .entity-badge{
    background:#f4f7f4;
    border:1px solid var(--entity-line);
    border-radius:999px;
    color:#40545b;
    display:inline-flex;
    font-size:12px;
    font-weight:bold;
    letter-spacing:0;
    line-height:1.2;
    padding:6px 10px;
    text-transform:uppercase;
}

.entity-page .entity-badge-primary{
    background:#eaf6f3;
    border-color:#a8d5cd;
    color:var(--entity-lagoon);
}
.entity-page h1{
    color:var(--entity-heading);
    font-size:44px;
    letter-spacing:0;
    line-height:1.08;
    margin:0 0 12px;
    max-width:880px;
}

.entity-page .summary{
    color:#425c64;
    font-size:19px;
    line-height:1.55;
    max-width:820px;
}

.entity-page .entity-layout{
    gap:24px;
    grid-template-columns:minmax(0,1fr) 320px;
}

.entity-page .entity-main{
    display:grid;
    gap:22px;
    min-width:0;
}

.entity-page .content{
    background:var(--entity-paper);
    border:1px solid var(--entity-line);
    border-bottom:0;
    border-radius:8px 8px 0 0;
}


.entity-page .content{
    color:var(--entity-ink);
    font-size:17px;
    line-height:1.75;
    min-width:0;
    padding:30px;
}

.entity-page .content > *:first-child{
    margin-top:0;
}

.entity-page .content > *:last-child{
    margin-bottom:0;
}

.entity-page .content p,
.entity-page .content ul,
.entity-page .content ol{
    max-width:760px;
}

.entity-main [id]{
    scroll-margin-top:96px;
}

.entity-page .content h2{
    border-top:1px solid var(--entity-line);
    clear:both;
    color:var(--entity-heading);
    font-size:26px;
    letter-spacing:0;
    line-height:1.2;
    margin:34px 0 14px;
    padding-top:24px;
}

.entity-page .content h2:first-child{
    border-top:0;
    margin-top:0;
    padding-top:0;
}

.entity-page .content h3{
    clear:both;
    color:var(--entity-heading);
    font-size:20px;
    letter-spacing:0;
    line-height:1.25;
    margin:28px 0 10px;
}

.entity-page .content a{
    color:#0b6b64;
    font-weight:bold;
    text-decoration-thickness:1px;
    text-underline-offset:3px;
}

.entity-page .content ul,
.entity-page .content ol{
    padding-left:24px;
}

.entity-page .content li + li{
    margin-top:6px;
}

.entity-page .content blockquote{
    background:#f5f7f1;
    border-left:4px solid var(--entity-gold);
    color:#42525a;
    margin:28px 0;
    max-width:760px;
    padding:16px 18px;
}

.entity-page .content figure{
    margin:30px 0;
    max-width:880px;
}

.entity-page .content img{
    border-radius:8px;
}

.entity-page .content figcaption{
    color:var(--entity-muted);
    font-size:14px;
    line-height:1.45;
    margin-top:8px;
    text-align:center;
}

.entity-page .content figcaption p{
    margin:0 0 4px;
}

.entity-page .content figcaption p:last-child{
    margin-bottom:0;
}

.entity-page .content figure > a{
    cursor:pointer;
    display:block;
    text-decoration:none;
}

.entity-page .content figure.cms-image-float-left,
.static-page-content figure.cms-image-float-left{
    clear:none;
    float:left;
    margin:6px 22px 16px 0;
    max-width:min(50%,420px);
}

.entity-page .content figure.cms-image-float-right,
.static-page-content figure.cms-image-float-right{
    clear:none;
    float:right;
    margin:6px 0 16px 22px;
    max-width:min(50%,420px);
}

.entity-page .content figure.cms-image-float-left.cms-image-portrait,
.entity-page .content figure.cms-image-float-right.cms-image-portrait,
.static-page-content figure.cms-image-float-left.cms-image-portrait,
.static-page-content figure.cms-image-float-right.cms-image-portrait{
    max-width:min(33%,300px);
}

@media (max-width:767px){
    .entity-page .content figure.cms-image-float-left,
    .entity-page .content figure.cms-image-float-right,
    .static-page-content figure.cms-image-float-left,
    .static-page-content figure.cms-image-float-right{
        float:none;
        margin:20px 0;
        max-width:none;
        width:auto;
    }
}

.entity-page .content table{
    background:#fff;
    border:1px solid var(--entity-line);
    border-radius:8px;
    margin:24px 0;
}

.entity-page .content th{
    background:#edf4f2;
    color:var(--entity-heading);
}

.entity-page .entity-sidebar{
    box-sizing:border-box;
    max-height:calc(100vh - 88px - 24px);
    overflow-x:hidden;
    overflow-y:auto;
    scrollbar-width:none;
    scrollbar-color:var(--color-border-strong) transparent;
    top:88px;
    width:calc(100% + 14px);
}

/*
 * L'ascenseur (masque par defaut, visible au survol) est rendu par le
 * navigateur en retirant sa largeur du contenu de .entity-sidebar : sans
 * precaution, les cartes se "compriment" au survol. On isole donc les
 * cartes dans .entity-sidebar-inner, a largeur fixe (== la largeur normale
 * de la colonne), insensible au retrecissement du conteneur qui scrolle ;
 * la marge de 14px ajoutee a .entity-sidebar sert uniquement a ce que ce
 * retrecissement ne fasse jamais passer sa largeur sous celle de l'inner
 * (ce qui tronquerait son bord droit). Meme principe applique a
 * .listing-sidebar plus bas (classe partagee sur le meme <aside>).
 */
.entity-sidebar-inner{
    display:grid;
    gap:16px;
    width:320px;
}

.entity-page .entity-sidebar-inner{
    gap:14px;
}

.entity-page .entity-sidebar:hover{
    scrollbar-width:thin;
}

.entity-page .entity-sidebar::-webkit-scrollbar{
    width:0;
}

.entity-page .entity-sidebar:hover::-webkit-scrollbar{
    width:6px;
}

.entity-page .entity-sidebar::-webkit-scrollbar-track{
    background:transparent;
}

.entity-page .entity-sidebar::-webkit-scrollbar-thumb{
    background-color:var(--color-border-strong);
    border-radius:3px;
}

.entity-page .sidebar-card{
    background:#ffffff;
    border:1px solid var(--entity-line);
    border-radius:8px;
    box-shadow:0 12px 26px rgba(25,48,55,.07);
    min-width:0;
    padding:18px;
}

.entity-page .sidebar-card:first-child{
    border-top:4px solid var(--entity-lagoon);
}

/* Contenu injecte par un script tiers (widget GetYourGuide ou pave AdSense) :
   largeur imprevisible tant que le script n'a pas charge, donc on contraint
   dans tous les cas au conteneur pour eviter tout debordement de la colonne. */
.sidebar-card-tours-promo{
    overflow:hidden;
}

.sidebar-card-tours-promo ins.adsbygoogle{
    max-width:100%;
}

.entity-page .sidebar-card h2,
.entity-page .sidebar-card h3{
    color:var(--entity-heading);
    font-size:18px;
    letter-spacing:0;
    margin:0 0 12px;
}

.entity-page .sidebar-card p{
    border-top:1px solid #edf2ef;
    color:#40545b;
    font-size:15px;
    line-height:1.5;
    margin:0;
    padding:10px 0;
}

.entity-page .sidebar-card p:first-of-type{
    border-top:0;
    padding-top:0;
}

.entity-page .sidebar-card-practical p{
    font-size:13px;
    line-height:1.4;
    padding:8px 0;
}

.entity-page .sidebar-access-info{
    font-size:13px;
    line-height:1.4;
    padding:8px 0;
}

.entity-page .sidebar-access-info p{
    margin:4px 0 0;
    padding:0;
}

.entity-page .sidebar-access-info p:first-child{
    margin-top:0;
}

.entity-page .sidebar-access-info ul,
.entity-page .sidebar-access-info ol{
    margin:4px 0 0;
    padding-left:18px;
}

.entity-page .sidebar-card strong{
    color:var(--entity-heading);
}

.entity-page .sidebar-note{
    color:var(--entity-muted);
    font-size:13px;
}

.entity-page .sidebar-actions{
    gap:6px;
}

.entity-page .sidebar-action{
    align-items:center;
    background:#eaf6f3;
    border:1px solid #a9d7ce;
    border-radius:6px;
    color:#0a4d47;
    display:flex;
    font-size:14px;
    font-weight:normal;
    justify-content:space-between;
    padding:6px 10px;
}

.entity-page .sidebar-action::after{
    content:">";
    color:var(--entity-lagoon);
    font-weight:bold;
}

.entity-page .sidebar-practical-map{
    border-top:1px solid #edf2ef;
    margin-top:10px;
    padding-top:10px;
}

.entity-page .sidebar-practical-map .map-frame{
    margin-bottom:8px;
}

.entity-page .map-frame{
    aspect-ratio:4/3;
    border-radius:6px;
    overflow:hidden;
}

.entity-page .map-link{
    color:var(--entity-lagoon);
    font-weight:bold;
}

.entity-page .sidebar-static-map-link{
    border-radius:6px;
    display:block;
    margin-bottom:8px;
    overflow:hidden;
}

.sidebar-card-social{
    padding:10px 14px !important;
}

.language-switcher{
    margin-top:12px;
}

.language-switcher-select{
    background:var(--color-surface);
    border:1px solid var(--color-border-strong);
    border-radius:var(--radius);
    color:inherit;
    font:inherit;
    font-size:13px;
    padding:6px 10px;
    width:100%;
}

.language-switcher-noscript{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    list-style:none;
    margin:0;
    padding:0;
}

.language-switcher-noscript a,
.language-switcher-current{
    border:1px solid var(--color-border);
    border-radius:999px;
    display:inline-block;
    font-size:12px;
    padding:4px 10px;
}

.language-switcher-noscript a{
    color:inherit;
    opacity:.75;
    text-decoration:none;
}

.language-switcher-noscript a:hover{
    opacity:1;
    text-decoration:underline;
}

.language-switcher-current{
    font-weight:bold;
    opacity:1;
}

.sidebar-social-link{
    align-items:center;
    color:#1877f2;
    display:flex;
    font-size:13px;
    font-weight:bold;
    gap:8px;
    text-decoration:none;
}

.sidebar-social-link:hover{
    text-decoration:underline;
}

.sidebar-social-link svg{
    fill:#1877f2;
    flex:0 0 auto;
    height:18px;
    width:18px;
}

.entity-page .sidebar-static-map-image{
    aspect-ratio:4/3;
    display:block;
    height:auto;
    object-fit:cover;
    width:100%;
}

.entity-page .entity-actions{
    padding-top:4px;
}

.entity-page .entity-action-button{
    background:#ffffff;
    border-color:#c8d5d1;
    box-shadow:0 4px 12px rgba(25,48,55,.08);
    color:var(--entity-heading);
}

.entity-page .entity-action-button:hover,
.entity-page .entity-action-button.is-active{
    background:#e9f7f4;
    border-color:var(--entity-lagoon);
    color:var(--entity-lagoon);
}

.entity-page .entity-main > h2{
    color:var(--entity-heading);
    font-size:24px;
    letter-spacing:0;
    margin:12px 0 -6px;
}

.entity-page .entity-main > .cards{
    margin-bottom:0;
}

.entity-page .card{
    border-color:var(--entity-line);
    border-radius:8px;
    overflow:hidden;
    padding:16px;
    transition:box-shadow .16s ease, transform .16s ease;
}

.entity-page .card:hover{
    box-shadow:0 12px 26px rgba(25,48,55,.09);
    transform:translateY(-1px);
}

.entity-page .card img{
    border-radius:0;
}

.entity-page .card-head{
    align-items:center;
    display:flex;
    gap:8px;
    justify-content:space-between;
}

.entity-page .card-type{
    color:var(--entity-brick);
    letter-spacing:0;
}

.entity-page .card-rating{
    color:#e0a530;
    flex:0 0 auto;
    font-size:13px;
    letter-spacing:1px;
    line-height:1;
}

.entity-page .card-title{
    color:var(--entity-heading);
}

.entity-page .card-event-date{
    color:var(--entity-muted);
    font-size:13px;
    margin-top:4px;
}

.entity-page .cms-gallery{
    max-width:920px;
}

.entity-page .cms-gallery figure{
    margin:0;
}

.entity-page .cms-gallery figure > a{
    background:var(--entity-soft);
    border-radius:6px;
    display:block;
    overflow:hidden;
    position:relative;
}

.entity-page .cms-gallery figure > a::after{
    background:rgba(18,50,58,.55);
    color:#fff;
    content:"+";
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:20px;
    height:32px;
    width:32px;
    border-radius:999px;
    opacity:0;
    position:absolute;
    right:8px;
    bottom:8px;
    transition:opacity .15s ease;
}

.entity-page .cms-gallery figure > a:hover::after,
.entity-page .cms-gallery figure > a:focus-visible::after{
    opacity:1;
}

.entity-page .cms-gallery img{
    aspect-ratio:4/3;
    border:1px solid var(--entity-line);
    display:block;
    height:auto;
    object-fit:cover;
    transition:transform .2s ease;
    width:100%;
}

.entity-page .cms-gallery figure > a:hover img,
.entity-page .cms-gallery figure > a:focus-visible img{
    transform:scale(1.03);
}

.entity-page .cms-gallery figcaption{
    color:var(--entity-muted);
    font-size:13px;
    line-height:1.4;
    margin-top:6px;
}

.entity-page .cms-gallery figcaption p{
    margin:0 0 4px;
}

.entity-page .cms-gallery figcaption p:last-child{
    margin-bottom:0;
}

@media (max-width:479px){
    .entity-page .cms-gallery{
        gap:10px;
        grid-template-columns:repeat(auto-fit,minmax(130px,1fr));
    }
}

body.gallery-lightbox-locked{
    overflow:hidden;
}

.gallery-lightbox{
    align-items:center;
    background:rgba(10,20,24,.92);
    display:none;
    flex-direction:column;
    inset:0;
    justify-content:center;
    padding:24px;
    position:fixed;
    z-index:1200;
}

.gallery-lightbox.is-open{
    display:flex;
}

.gallery-lightbox-figure{
    display:flex;
    flex-direction:column;
    max-height:100%;
    max-width:min(92vw,1200px);
}

.gallery-lightbox-image-wrap{
    align-items:center;
    display:flex;
    justify-content:center;
    min-height:0;
}

.gallery-lightbox-image{
    border-radius:4px;
    max-height:78vh;
    max-width:100%;
    object-fit:contain;
}

.gallery-lightbox-caption{
    color:#f2f5f4;
    font-size:14px;
    line-height:1.5;
    margin:0;
    padding:14px 4px 0;
    text-align:center;
}

.gallery-lightbox-counter{
    color:rgba(242,245,244,.65);
    font-size:12px;
    margin-top:4px;
    text-align:center;
}

.gallery-lightbox-close,
.gallery-lightbox-prev,
.gallery-lightbox-next{
    align-items:center;
    background:rgba(255,255,255,.12);
    border:0;
    border-radius:999px;
    color:#fff;
    cursor:pointer;
    display:flex;
    font-size:22px;
    height:44px;
    justify-content:center;
    line-height:1;
    width:44px;
}

.gallery-lightbox-close:hover,
.gallery-lightbox-prev:hover,
.gallery-lightbox-next:hover,
.gallery-lightbox-close:focus-visible,
.gallery-lightbox-prev:focus-visible,
.gallery-lightbox-next:focus-visible{
    background:var(--entity-lagoon);
}

.gallery-lightbox-close{
    position:absolute;
    right:20px;
    top:20px;
}

.gallery-lightbox-prev,
.gallery-lightbox-next{
    position:absolute;
    top:50%;
    transform:translateY(-50%);
}

.gallery-lightbox-prev{
    left:12px;
}

.gallery-lightbox-next{
    right:12px;
}

@media (max-width:767px){
    .gallery-lightbox{
        padding:12px;
    }

    .gallery-lightbox-close{
        right:8px;
        top:8px;
    }

    .gallery-lightbox-prev{
        left:4px;
    }

    .gallery-lightbox-next{
        right:4px;
    }
}

@media (max-width:991px){
    .entity-page .entity-layout{
        grid-template-columns:1fr;
    }

    .entity-page .entity-sidebar{
        max-height:none;
        overflow-y:visible;
        position:static;
        width:auto;
    }

    .entity-page .entity-sidebar-inner{
        width:auto;
    }
}

@media (max-width:767px){
    .entity-page > .entity-hero{
        margin-bottom:20px;
        padding-bottom:20px;
    }

    .entity-page .hero-image{
        aspect-ratio:4/3;
        margin-bottom:18px;
    }

    .entity-page h1{
        font-size:32px;
    }

    .entity-page .summary{
        font-size:17px;
    }

    .entity-page .entity-layout{
        gap:20px;
    }

    .entity-page .content,
    .entity-page .sidebar-card{
        padding:18px;
    }

    .entity-page .content{
        font-size:16px;
        line-height:1.68;
    }

    .entity-page .content h2{
        font-size:23px;
    }

    .entity-page .entity-title-row{
        gap:10px;
    }
}
/* Ajustements modele A - fiche lieu guide pratique */
.entity-page > .entity-hero{
    padding-bottom:30px;
}

.entity-page .entity-title-row{
    align-items:flex-start;
    display:grid;
    gap:18px;
    grid-template-columns:minmax(0,1fr) auto;
}

.entity-page .entity-title-tools{
    align-items:flex-end;
    display:flex;
    flex-direction:column;
    gap:10px;
    max-width:340px;
}

.entity-page .entity-badges{
    justify-content:flex-end;
}

.entity-page .entity-badge{
    background:#ffffff;
    border-color:#cfdad7;
    color:#4d6066;
    font-size:12px;
    letter-spacing:0;
    padding:5px 9px;
    text-transform:none;
}

.entity-page .entity-badge-primary{
    background:#f5f8f6;
    border-color:#cfdad7;
    color:#4d6066;
}

.entity-page h1{
    margin-bottom:0;
}

.entity-page .entity-summary{
    border-left:3px solid var(--entity-lagoon);
    color:#3f555c;
    font-size:18px;
    line-height:1.62;
    margin:18px 0 22px;
    max-width:780px;
    padding-left:16px;
}

.entity-page .hero-image{
    aspect-ratio:16/7;
    margin:0;
    max-height:430px;
}

.entity-page .sidebar-card-booking{
    border-top:4px solid var(--theme-accent,#8A9A4E);
}

.entity-page .sidebar-card-practical{
    border-top:4px solid var(--entity-lagoon);
}

.entity-page .sidebar-card-booking + .sidebar-card-practical{
    margin-top:2px;
}

.entity-page .sidebar-card-toc{
    border-top:4px solid var(--entity-lagoon);
}

.entity-page .sidebar-card-map{
    border-top:4px solid var(--entity-lagoon);
}

.entity-page .entity-toc ol{
    counter-reset:entity-toc-counter;
    display:flex;
    flex-direction:column;
    gap:5px;
    list-style:none;
    margin:0;
    padding:0;
}

.entity-page .entity-toc li{
    counter-increment:entity-toc-counter;
}

.entity-page .entity-toc a{
    align-items:flex-start;
    color:#40545b;
    display:flex;
    font-size:12.5px;
    gap:7px;
    line-height:1.25;
    min-width:0;
    text-decoration:none;
}

.entity-page .entity-toc a::before{
    align-items:center;
    background:var(--color-badge-count);
    border-radius:999px;
    color:#fff;
    content:counter(entity-toc-counter);
    display:inline-flex;
    flex:0 0 auto;
    font-size:9px;
    font-weight:bold;
    height:16px;
    justify-content:center;
    margin-top:1px;
    width:16px;
}

.entity-page .entity-toc-text{
    flex:1 1 auto;
    min-width:0;
    overflow:hidden;
    padding-top:0;
    text-overflow:ellipsis;
    white-space:nowrap;
}

.entity-page .entity-toc a:hover,
.entity-page .entity-toc a:focus-visible{
    color:var(--theme-primary);
}

.entity-page .entity-toc a:hover .entity-toc-text,
.entity-page .entity-toc a:focus-visible .entity-toc-text{
    text-decoration:underline;
}

.entity-page .entity-toc a:hover::before,
.entity-page .entity-toc a:focus-visible::before{
    background:var(--theme-primary);
}

@media (max-width:991px){
    .entity-page .entity-title-row{
        grid-template-columns:1fr;
    }

    .entity-page .entity-title-tools{
        align-items:flex-start;
        max-width:none;
    }

    .entity-page .entity-badges{
        justify-content:flex-start;
    }
}

@media (max-width:767px){
    .entity-page .entity-summary{
        font-size:17px;
        margin:14px 0 18px;
    }
}
/* Ajustements modele A - header resserre et tags en fin d'article */
.entity-page .entity-layout{
    /* gap et grid-template-columns deja definis plus haut (ligne ~2018) ;
       les redeclarer ici, apres le bloc @media(max-width:991px), empechait
       silencieusement le passage en 1 colonne sur tablette/mobile. */
    align-items:start;
}

.entity-page .entity-main{
    display:grid;
    gap:22px;
    min-width:0;
}

.entity-page .entity-hero{
    background:transparent;
    border:0;
    border-bottom:1px solid var(--entity-line);
    margin:0;
    padding:0 0 24px;
}

.entity-page .entity-hero .entity-badges{
    justify-content:flex-start;
    margin:0 0 12px;
}

.entity-page .entity-title-row{
    align-items:flex-start;
    display:flex;
    gap:16px;
    justify-content:space-between;
}

.entity-page .entity-title-main{
    align-items:baseline;
    display:flex;
    flex-wrap:wrap;
    gap:10px;
    min-width:0;
}

.entity-page h1{
    margin:0;
}

.entity-page .entity-rating{
    display:inline-flex;
    gap:2px;
}

.entity-page .entity-rating-star{
    color:#d7dde0;
    font-size:30px;
    line-height:1;
}

.entity-page .entity-rating-star.is-filled{
    color:#e0a530;
}

.entity-page .entity-actions{
    flex:0 0 auto;
    padding-top:4px;
}

.entity-page .entity-summary{
    border-left:3px solid var(--entity-lagoon);
    color:#3f555c;
    font-size:18px;
    line-height:1.62;
    margin:18px 0 22px;
    max-width:760px;
    padding-left:16px;
}

.entity-page .entity-summary-html p:first-child{
    margin-top:0;
}

.entity-page .entity-summary-html p:last-child{
    margin-bottom:0;
}

.entity-page .hero-image{
    aspect-ratio:16/7;
    border:1px solid var(--entity-line);
    border-radius:8px;
    display:block;
    margin:0;
    max-height:390px;
    object-fit:cover;
    width:100%;
}

.entity-page .entity-badge{
    background:#ffffff;
    border-color:#cfdad7;
    color:#4d6066;
    font-size:12px;
    letter-spacing:0;
    padding:5px 9px;
    text-transform:none;
}

.entity-page .entity-badge-primary{
    background:#f5f8f6;
    border-color:#cfdad7;
    color:#4d6066;
}

.entity-page .entity-tags{
    align-items:center;
    background:var(--entity-paper);
    border:1px solid var(--entity-line);
    border-radius:0 0 8px 8px;
    border-top:1px solid var(--entity-line);
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-top:-22px;
    padding:20px 30px 30px;
}

.entity-page .entity-tags-title{
    color:var(--entity-muted);
    font-size:13px;
    font-weight:bold;
    margin-right:4px;
}

.entity-page .entity-tags-title-secondary{
    margin-left:10px;
}

.entity-page .entity-tags a{
    background:#f4f7f4;
    border:1px solid #d7e1dd;
    border-radius:999px;
    color:#4d6066;
    font-size:13px;
    padding:4px 9px;
    text-decoration:none;
}

.entity-page .entity-tag-link-category{
    background:var(--theme-primary-tint);
    border-color:var(--theme-primary-border);
    color:var(--theme-primary);
}

.entity-page .entity-tags a:hover{
    background:#eaf6f3;
    color:var(--entity-lagoon);
    text-decoration:none;
}

.entity-page .sidebar-card-booking{
    border-top:4px solid var(--theme-accent,#8A9A4E);
}

.entity-page .sidebar-card-practical{
    border-top:4px solid var(--entity-lagoon);
}

.entity-mobile-bar{
    display:none;
}

@media (max-width:767px){
    .entity-page .entity-title-row{
        flex-direction:column;
        gap:10px;
    }

    .entity-page .hero-image{
        aspect-ratio:4/3;
    }

    .entity-page .entity-summary{
        font-size:17px;
        margin:14px 0 18px;
    }

    /* Sous 767px : badges retires de la barre du haut (fil d'Ariane) et
       boutons favoris/itineraire "desktop" masques, tous deux remplaces
       par ".entity-mobile-bar" sous le titre (voir entity.php). */
    .page-meta-left .entity-badges{
        display:none;
    }

    .entity-page .entity-title-row .entity-actions-desktop{
        display:none;
    }

    .entity-mobile-bar{
        align-items:flex-end;
        display:flex;
        gap:10px;
        justify-content:space-between;
        margin:10px 0 0;
    }

    .entity-mobile-bar-right{
        align-items:center;
        display:flex;
        flex-wrap:wrap;
        gap:8px;
        justify-content:flex-end;
    }

    .entity-mobile-bar .entity-badges-mobile{
        display:flex;
        flex-wrap:wrap;
        gap:6px;
        justify-content:flex-end;
    }

    .entity-mobile-bar .entity-actions-mobile{
        display:flex;
        flex:0 0 auto;
        gap:8px;
    }

    .entity-mobile-toc-toggle{
        align-items:center;
        background:#fff;
        border:1px solid var(--color-border-strong);
        border-radius:999px;
        color:#334e68;
        cursor:pointer;
        display:inline-flex;
        flex:0 1 auto;
        font:inherit;
        font-size:13px;
        font-weight:bold;
        gap:8px;
        min-width:0;
        padding:8px 14px;
        white-space:nowrap;
        overflow:hidden;
        text-overflow:ellipsis;
    }

    .entity-mobile-toc-toggle:hover,
    .entity-mobile-toc-toggle[aria-expanded="true"]{
        border-color:var(--theme-primary, var(--color-link));
        color:var(--theme-primary, var(--color-link));
    }

    .entity-mobile-toc-icon{
        display:grid;
        flex:0 0 auto;
        gap:3px;
    }

    .entity-mobile-toc-icon span{
        background:currentColor;
        border-radius:1px;
        display:block;
        height:2px;
        width:15px;
    }

    .entity-mobile-toc{
        background:#fff;
        border:1px solid var(--color-border);
        border-radius:8px;
        margin-top:8px;
        padding:12px 14px;
    }

    .entity-mobile-toc[hidden]{
        display:none;
    }

    .entity-mobile-toc ol{
        counter-reset:entity-mobile-toc-counter;
        display:flex;
        flex-direction:column;
        gap:9px;
        list-style:none;
        margin:0;
        padding:0;
    }

    .entity-mobile-toc li{
        counter-increment:entity-mobile-toc-counter;
    }

    .entity-mobile-toc a{
        align-items:flex-start;
        color:#334e68;
        display:flex;
        font-size:14px;
        gap:8px;
        line-height:1.3;
        text-decoration:none;
    }

    .entity-mobile-toc a::before{
        align-items:center;
        background:var(--color-badge-count);
        border-radius:999px;
        color:#fff;
        content:counter(entity-mobile-toc-counter);
        display:inline-flex;
        flex:0 0 auto;
        font-size:10px;
        font-weight:bold;
        height:18px;
        justify-content:center;
        margin-top:1px;
        width:18px;
    }
}

/* Mini-carte de quartier integree aux infos pratiques */
.entity-page .sidebar-card-practical::after{
    clear:both;
    content:"";
    display:block;
}

.entity-page .district-mini-map-link{
    background:#f8faf8;
    border:1px solid var(--entity-line);
    border-radius:6px;
    display:block;
    float:right;
    margin:0 0 10px 14px;
    padding:6px;
    width:112px;
}

.entity-page .district-mini-map-link:hover{
    background:#eef6f3;
    border-color:#a8d5cd;
    text-decoration:none;
}

.entity-page .district-mini-map{
    display:block;
    height:auto;
    image-rendering:auto;
    width:100%;
}

@media (max-width:767px){
    .entity-page .district-mini-map-link{
        float:none;
        margin:0 0 12px;
        width:132px;
    }
}
/* Mini-carte interactive des quartiers */
.entity-page .district-mini-map-box{
    background:#f8faf8;
    border:1px solid var(--entity-line);
    border-radius:7px;
    box-shadow:0 8px 18px rgba(25,48,55,.06);
    float:right;
    margin:0 0 10px 14px;
    padding:7px;
    width:min(50%,158px);
}

.entity-page .district-mini-map{
    display:block;
    height:auto;
    width:100%;
}

.entity-page .district-mini-map-water{
    fill:#dcefeb;
}

.entity-page .district-mini-map-zone{
    cursor:pointer;
    fill:#fffdf4;
    stroke:#8aa6a0;
    stroke-linejoin:round;
    stroke-width:2;
    transition:fill .16s ease, stroke .16s ease, filter .16s ease;
}

.entity-page .district-mini-map-area:hover .district-mini-map-zone,
.entity-page .district-mini-map-area:focus .district-mini-map-zone,
.entity-page .district-mini-map-zone.is-active{
    fill:#d97745;
    filter:drop-shadow(0 2px 2px rgba(25,48,55,.18));
    stroke:#8f3c26;
}

.entity-page .district-mini-map-canal{
    fill:none;
    pointer-events:none;
    stroke:#71a8b0;
    stroke-linecap:round;
    stroke-width:4;
}

.entity-page .district-mini-map-pin{
    fill:#12323a;
    pointer-events:none;
    stroke:#fff;
    stroke-width:2;
}

.entity-page .district-mini-map-caption{
    color:var(--entity-heading);
    display:block;
    line-height:1.2;
    margin-top:5px;
    text-align:center;
    text-decoration:none;
}

.entity-page .district-mini-map-caption span{
    color:var(--entity-muted);
    display:block;
    font-size:11px;
}

.entity-page .district-mini-map-caption strong{
    display:block;
    font-size:13px;
}

.entity-page .district-mini-map-box:hover .district-mini-map-caption strong{
    color:var(--entity-brick);
}

@media (max-width:767px){
    .entity-page .district-mini-map-box{
        float:none;
        margin:0 0 12px;
        width:min(190px,100%);
    }
}
/* Mini-carte basee sur le plan historique */
.entity-page .district-mini-map-box{
    width:min(50%,220px);
}

.entity-page .district-mini-map-stage{
    aspect-ratio:1448/1086;
    position:relative;
}

.entity-page .district-mini-map-image{
    border-radius:4px;
    display:block;
    height:auto;
    width:100%;
}

.entity-page .district-mini-map-hotspots{
    inset:0;
    position:absolute;
    width:100%;
    height:100%;
}

.entity-page .district-mini-map-hotspot{
    cursor:pointer;
    fill:transparent;
    pointer-events:auto;
    stroke:transparent;
    stroke-width:2;
}

.entity-page .district-mini-map-area:hover .district-mini-map-hotspot,
.entity-page .district-mini-map-area:focus .district-mini-map-hotspot{
    fill:rgba(217,119,69,.12);
    stroke:rgba(143,60,38,.55);
}

.entity-page .district-mini-map-area:focus{
    outline:none;
}

@media (max-width:767px){
    .entity-page .district-mini-map-box{
        width:min(220px,100%);
    }
}
/* Contours solides sur la mini-carte historique */
.entity-page .district-mini-map-hotspots{
    pointer-events:none;
}

.entity-page .district-mini-map-area{
    pointer-events:auto;
}

.entity-page .district-mini-map-hotspot{
    cursor:pointer;
    fill:rgba(255,255,255,.01);
    pointer-events:all;
    stroke:rgba(54,43,36,.82);
    stroke-linejoin:round;
    stroke-width:1.35;
    transition:fill .14s ease, stroke .14s ease, stroke-width .14s ease;
    vector-effect:non-scaling-stroke;
}

.entity-page .district-mini-map-area:hover .district-mini-map-hotspot,
.entity-page .district-mini-map-area:focus .district-mini-map-hotspot,
.entity-page .district-mini-map-hotspot.is-active{
    fill:rgba(217,119,69,.16);
    stroke:#8f3c26;
    stroke-width:1.8;
}
.entity-page .district-mini-map-hotspots{
    pointer-events:auto;
}
/* Nouvelle carte propre : remplissage discret, sans traits ajoutes */
.entity-page .district-mini-map-hotspot{
    fill:rgba(11,76,130,.01);
    filter:none;
    stroke:transparent;
    stroke-width:0;
}

.entity-page .district-mini-map-area:hover .district-mini-map-hotspot,
.entity-page .district-mini-map-area:focus .district-mini-map-hotspot,
.entity-page .district-mini-map-hotspot.is-active{
    fill:rgba(11,76,130,.18);
    stroke:transparent;
    stroke-width:0;
}
/* Header marque : palette parametrable bordeaux / bleu */
.site-header{
    background:linear-gradient(180deg,var(--theme-header-bg),var(--theme-header-soft));
    border-bottom:1px solid rgba(0,0,0,.14);
    box-shadow:0 6px 18px rgba(31,39,48,.05);
}

.site-header-inner{
    gap:20px;
    padding:8px 20px;
}

.site-brand{
    align-items:center;
    color:#1f2730;
    display:inline-flex;
    flex:0 0 auto;
    gap:11px;
    min-width:220px;
    text-decoration:none;
}

.site-brand:hover{
    text-decoration:none;
}

.site-logo-mark{
    align-items:center;
    background:radial-gradient(circle at 35% 28%,#ffffff 0,#f5f7fa 28%,var(--theme-primary) 72%);
    border:1px solid rgba(0,0,0,.22);
    border-radius:50%;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.8),0 6px 14px rgba(0,0,0,.14);
    color:#ffffff;
    display:inline-flex;
    flex:0 0 auto;
    font-family:Georgia,serif;
    font-size:25px;
    font-weight:bold;
    height:42px;
    justify-content:center;
    line-height:1;
    text-shadow:0 1px 1px rgba(0,0,0,.35);
    width:42px;
}

.site-brand-copy{
    display:grid;
    gap:2px;
    min-width:0;
}

.site-brand-line{
    align-items:baseline;
    display:flex;
    line-height:1;
    min-width:0;
    white-space:nowrap;
}

.site-brand-name{
    color:var(--theme-primary);
    font-family:Georgia,serif;
    font-size:25px;
    font-weight:bold;
    letter-spacing:0;
}

.site-brand-domain{
    color:var(--theme-secondary);
    font-family:Georgia,serif;
    font-size:17px;
    font-weight:bold;
    margin-left:2px;
}

.site-brand-tagline{
    color:#607080;
    font-size:12px;
    line-height:1.2;
    white-space:nowrap;
}

.site-menu-link{
    color:#34495b;
    font-weight:bold;
}

.site-menu-link:hover,
.site-menu-item:hover > .site-menu-link,
.site-menu-item:focus-within > .site-menu-link{
    background:rgba(0,0,0,.06);
    color:var(--theme-primary);
}

/* Items de premier niveau : places directement sur le bandeau colore
   (fond sombre). Etat par defaut en teinte claire sourde (secondary), item
   actif en blanc + soulignement accent, survol en accent plutot que primary
   (invisible sur un fond de la meme teinte que theme-primary). */
.site-menu > .site-menu-item > .site-menu-link{
    border-bottom:2px solid transparent;
    border-bottom-left-radius:0;
    border-bottom-right-radius:0;
    color:var(--theme-secondary);
    padding-bottom:7px;
}

.site-menu > .site-menu-item.has-children > .site-menu-link::after{
    border-top-color:var(--theme-secondary);
}

.site-menu > .site-menu-item:hover > .site-menu-link,
.site-menu > .site-menu-item:focus-within > .site-menu-link,
.site-menu > .site-menu-item > .site-menu-link:hover{
    background:rgba(255,255,255,.16);
    color:var(--theme-accent);
}

.site-menu > .site-menu-item:hover > .site-menu-link::after,
.site-menu > .site-menu-item > .site-menu-link:hover::after{
    border-top-color:var(--theme-accent);
}

.site-menu > .site-menu-item.is-current-section > .site-menu-link{
    border-bottom-color:var(--theme-accent);
    color:#ffffff;
}

.site-menu > .site-menu-item.is-current-section.has-children > .site-menu-link::after{
    border-top-color:#ffffff;
}

.site-submenu{
    border-color:rgba(0,0,0,.14);
}

.travel-quick-link{
    background:#f3f7fa;
    border-color:rgba(0,0,0,.16);
    color:var(--theme-primary);
    font-weight:bold;
}

.travel-quick-link:hover{
    background:#e8f1f6;
    color:var(--theme-secondary);
}

.travel-quick-link span{
    background:var(--theme-primary);
}

.site-menu-toggle{
    border-color:rgba(0,0,0,.2);
    color:var(--theme-primary);
}

@media (max-width:991px){
    .site-brand{
        min-width:0;
    }

    .site-logo-mark{
        height:38px;
        width:38px;
    }

    .site-brand-name{
        font-size:22px;
    }

    .site-brand-domain{
        font-size:15px;
    }

    .site-brand-tagline{
        display:none;
    }
}

@media (max-width:479px){
    .site-header-inner{
        grid-template-columns:minmax(0,1fr) auto;
    }

    .travel-quick-link{
        grid-column:1 / -1;
        grid-row:2;
        justify-content:center;
        width:100%;
    }

    .site-nav{
        grid-row:3;
    }
}
/* Header sans logo : retour au titre simple avec palette actuelle */
.site-name{
    color:var(--theme-primary);
    flex:0 0 auto;
    font-family:Georgia,serif;
    font-size:25px;
    font-weight:bold;
    letter-spacing:0;
    min-width:190px;
    text-decoration:none;
}

.site-name:hover{
    color:var(--theme-secondary);
    text-decoration:none;
}

@media (max-width:991px){
    .site-name{
        font-size:22px;
        min-width:0;
    }
}
/* Header titre enrichi sans monogramme */
.site-brand-text{
    align-items:center;
    color:#1f2730;
    display:inline-flex;
    flex:0 0 auto;
    min-width:230px;
    text-decoration:none;
}

.site-brand-text:hover{
    text-decoration:none;
}

.site-brand-text .site-brand-name{
    color:#ffffff;
    font-family:Georgia,serif;
    font-size:31px;
    font-weight:bold;
    letter-spacing:0;
}

.site-brand-text .site-brand-domain{
    color:var(--theme-secondary);
    font-family:Georgia,serif;
    font-size:19px;
    font-weight:bold;
    margin-left:2px;
}

.site-brand-text .site-brand-tagline{
    color:#d5deec;
    display:block;
    font-size:12px;
    line-height:1.25;
    margin-top:3px;
    white-space:nowrap;
}

@media (max-width:991px){
    .site-brand-text{
        min-width:0;
    }

    .site-brand-text .site-brand-name{
        font-size:25px;
    }

    .site-brand-text .site-brand-domain{
        font-size:16px;
    }

    .site-brand-text .site-brand-tagline{
        display:none;
    }
}
/* Palette Grece-Bleue : lagon en dore, brique en olive (a la place du bleu
   fonce et du bordeaux herites de l'harmonisation Venise). */
.entity-page{
    --entity-soft:var(--theme-primary-tint);
    --entity-line:var(--theme-primary-border);
    --entity-lagoon:var(--entity-gold);
    --entity-brick:var(--theme-accent);
}

.page-taxonomy-link:hover{
    background:var(--theme-primary-tint);
    border-color:var(--theme-primary-border);
    color:var(--theme-primary);
}

.sidebar-action,
.entity-page .sidebar-action{
    background:var(--theme-primary-tint);
    border-color:var(--theme-primary-border);
    color:var(--theme-primary);
}

.sidebar-action:hover,
.entity-page .sidebar-action:hover{
    background:var(--theme-primary-tint-strong);
    color:var(--theme-primary);
}

/* "Preparer le sejour" (booking) : palette dediee, plus chaude que le bleu
   generique ci-dessus, derivee du dore (--entity-gold, deja utilise pour
   l'accent haut de cette carte) - bascule sur le dore (--entity-gold)
   au survol, pour faire dialoguer les deux couleurs chaudes de la palette. */
.sidebar-card-booking .sidebar-action,
.entity-page .sidebar-card-booking .sidebar-action{
    background:color-mix(in srgb, var(--theme-accent,#8A9A4E) 12%, white);
    border-color:color-mix(in srgb, var(--theme-accent,#8A9A4E) 45%, white);
    color:color-mix(in srgb, var(--theme-accent,#8A9A4E) 70%, black);
}

.sidebar-card-booking .sidebar-action:hover,
.entity-page .sidebar-card-booking .sidebar-action:hover{
    background:var(--entity-gold,#c9963f);
    border-color:var(--entity-gold,#c9963f);
    color:#fff;
}

.sidebar-card-booking .sidebar-action::after,
.entity-page .sidebar-card-booking .sidebar-action::after,
.listing-sidebar .sidebar-card-booking .sidebar-action::after{
    content:"";
    display:inline-block;
    width:15px;
    height:15px;
    flex-shrink:0;
    background-color:var(--theme-accent,#8A9A4E);
    -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6l-6 6'/%3E%3C/svg%3E");
    mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 6l6 6l-6 6'/%3E%3C/svg%3E");
    -webkit-mask-size:contain;
    mask-size:contain;
    -webkit-mask-repeat:no-repeat;
    mask-repeat:no-repeat;
    -webkit-mask-position:center;
    mask-position:center;
}

.sidebar-card-booking .sidebar-action:hover::after,
.entity-page .sidebar-card-booking .sidebar-action:hover::after,
.listing-sidebar .sidebar-card-booking .sidebar-action:hover::after{
    background-color:#fff;
}

.sidebar-action-icon{
    align-items:center;
    background:var(--theme-accent,#8A9A4E);
    border-radius:50%;
    display:flex;
    flex-shrink:0;
    height:30px;
    justify-content:center;
    width:30px;
}

.sidebar-card-booking .sidebar-action-icon svg{
    stroke:#fff;
}

.sidebar-card-booking .sidebar-action:hover .sidebar-action-icon{
    background:rgba(255,255,255,.28);
}

.entity-action-button:hover,
.entity-action-button.is-active,
.entity-page .entity-action-button:hover,
.entity-page .entity-action-button.is-active{
    background:var(--theme-primary-tint);
    border-color:var(--theme-primary);
    color:var(--theme-primary);
}

.entity-page .entity-badge-primary,
.entity-page .entity-tags a:hover{
    background:var(--theme-primary-tint);
    border-color:var(--theme-primary-border);
    color:var(--theme-primary);
}

.entity-page .entity-badge,
.entity-page .entity-tags a{
    background:var(--theme-primary-tint);
    border-color:var(--theme-primary-border);
}

.entity-page .content a,
.entity-page .map-link{
    color:var(--theme-primary);
}

.entity-page .content th{
    background:var(--theme-primary-tint);
}

.entity-page .sidebar-card:first-child,
.entity-page .sidebar-card-practical{
    border-top-color:var(--theme-primary);
}

.entity-page .entity-summary{
    border-left-color:var(--theme-primary);
}

.entity-page .sidebar-action::after{
    color:var(--theme-primary);
}
/* Header titre : typographie alignee sur le site */
.site-brand-text .site-brand-name,
.site-brand-text .site-brand-domain{
    font-family:Arial,sans-serif;
    letter-spacing:0;
}

.site-brand-text .site-brand-name{
    font-size:29px;
    font-weight:500;
}

.site-brand-text .site-brand-domain{
    font-size:17px;
    font-weight:500;
}

.site-brand-text .site-brand-tagline{
    font-family:Arial,sans-serif;
    font-size:12px;
    font-weight:normal;
}

@media (max-width:991px){
    .site-brand-text .site-brand-name{
        font-size:24px;
    }

    .site-brand-text .site-brand-domain{
        font-size:15px;
    }
}
/* Logo image Venise Voyage et action itineraire dans le widget voyage */
.site-brand-text{
    gap:4px;
}

.site-brand-text .site-logo-mark{
    background:#fff;
    border:1px solid var(--theme-primary-border);
    border-radius:50%;
    box-shadow:0 3px 10px rgba(31,39,48,.08);
    height:58px;
    overflow:hidden;
    padding:0;
    text-shadow:none;
    width:58px;
}

.site-brand-text .site-logo-mark img{
    display:block;
    height:112%;
    object-fit:contain;
    transform:none;
    width:112%;
}

.sidebar-action-internal{
    align-items:center;
    display:flex;
    justify-content:space-between;
}

.sidebar-action-internal [data-travel-count]{
    align-items:center;
    background:var(--color-badge-count);
    border-radius:999px;
    color:#fff;
    display:inline-flex;
    font-size:12px;
    height:20px;
    justify-content:center;
    line-height:1;
    min-width:20px;
    padding:0 5px;
    text-align:center;
}

.sidebar-action-content{
    align-items:center;
    display:flex;
    flex:1 1 auto;
    gap:8px;
    min-width:0;
}

.sidebar-action-label{
    flex:1 1 auto;
    min-width:0;
}

.sidebar-action-internal [data-travel-count]{
    flex:0 0 auto;
    margin-right:8px;
}

.sidebar-action-content svg{
    fill:none;
    flex-shrink:0;
    height:16px;
    stroke:currentColor;
    stroke-linecap:round;
    stroke-linejoin:round;
    stroke-width:1.8;
    width:16px;
}

@media (max-width:991px){
    .site-brand-text .site-logo-mark{
        height:42px;
        width:42px;
    }
}

/* Mini-carte XCF : fond stable + calques de survol exacts */
.entity-page .district-mini-map-stage{
    background:#fff;
    border-radius:4px;
    cursor:default;
    overflow:hidden;
    position:relative;
}

.entity-page .district-mini-map-stage.has-district-hover{
    cursor:pointer;
}

.entity-page .district-mini-map-stage:focus-visible{
    outline:2px solid var(--entity-brick);
    outline-offset:3px;
}

.entity-page .district-mini-map-overlay{
    display:block;
    height:100%;
    inset:0;
    object-fit:contain;
    opacity:0;
    pointer-events:none;
    position:absolute;
    transition:opacity .14s ease;
    width:100%;
}

.entity-page .district-mini-map-overlay.is-visible{
    opacity:1;
}

.entity-page .district-mini-map-links{
    height:1px;
    margin:-1px;
    overflow:hidden;
    position:absolute;
    white-space:nowrap;
    width:1px;
    clip:rect(0 0 0 0);
    clip-path:inset(50%);
}
.entity-page .entity-tag-link-type{
    background:var(--theme-primary-tint);
    border-color:var(--theme-primary-border);
    color:var(--theme-primary);
}

.entity-page .entity-tag-link-district{
    background:#edf7fa;
    border-color:#bddce6;
    color:var(--theme-secondary);
}

.listing-filter-locked{
    color:var(--color-muted);
    font-size:14px;
    margin:0;
}
.entity-page .nearby-section{
    border-top:1px solid var(--entity-line);
    margin-top:24px;
    padding-top:20px;
}

.entity-page .event-editions-section{
    border-top:1px solid var(--entity-line);
    margin-top:24px;
    padding-top:20px;
}

.entity-page .event-editions-section h2{
    color:var(--entity-heading);
    font-size:22px;
    margin:0 0 12px;
}

.entity-page .event-editions-featured{
    display:grid;
    gap:16px;
    grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
    margin-bottom:16px;
}

.entity-page .event-edition-feature{
    background:#fff;
    border:1px solid var(--entity-line);
    border-radius:8px;
    color:var(--entity-heading);
    display:block;
    padding:16px;
    text-decoration:none;
}

.entity-page a.event-edition-feature:hover{
    border-color:var(--theme-primary);
}

.entity-page .event-edition-feature img{
    border-radius:6px;
    display:block;
    height:140px;
    margin:8px 0;
    object-fit:cover;
    width:100%;
}

.entity-page .event-edition-feature-label{
    color:var(--theme-primary);
    font-size:12px;
    font-weight:bold;
    letter-spacing:.04em;
    text-transform:uppercase;
}

.entity-page .event-edition-feature-title{
    display:block;
    font-size:18px;
    margin:6px 0 2px;
}

.entity-page .event-edition-feature-date{
    color:var(--entity-muted);
    display:block;
    font-size:14px;
    margin-bottom:6px;
}

.entity-page .event-edition-feature-summary{
    color:var(--entity-muted);
    display:block;
    font-size:14px;
}

.entity-page .nearby-section h2{
    color:var(--entity-heading);
    font-size:22px;
    margin:0 0 12px;
}

.entity-page .nearby-cards{
    display:grid;
    gap:10px;
    grid-template-columns:repeat(2,minmax(0,1fr));
}

.entity-page .nearby-cards-with-district{
    margin-bottom:26px;
}

.entity-page .nearby-subheading{
    color:var(--entity-heading);
    font-size:16px;
    margin:0 0 12px;
}

.entity-page .entity-route-section{
    border-top:1px solid var(--entity-line);
    margin-top:24px;
    padding-top:20px;
}

.entity-page .entity-stay-section{
    border-top:1px solid var(--entity-line);
    margin-top:24px;
    padding-top:20px;
}

.entity-page .entity-stay-section h2{
    color:var(--entity-heading);
    font-size:22px;
    margin:0 0 12px;
}

.entity-stay-map-frame{
    border:1px solid var(--entity-line, var(--color-border));
    border-radius:8px;
    overflow:hidden;
}

.entity-stay-map-frame iframe{
    display:block;
    width:100%;
}

.entity-page .content .entity-stay-map-frame-full{
    margin-left:-30px;
    margin-right:-30px;
    width:calc(100% + 60px);
}

.entity-page .content .entity-stay-map-frame-full:first-child{
    margin-top:-30px;
}

.entity-page .entity-route-section h2{
    color:var(--entity-heading);
    font-size:22px;
    margin:0 0 12px;
}

.entity-page .entity-route-map{
    aspect-ratio:16/9;
    border-radius:8px;
    overflow:hidden;
}

.entity-page .entity-route-actions{
    display:grid;
    gap:8px;
    margin-top:12px;
}

.entity-page .entity-route-controls{
    align-items:center;
    display:flex;
    flex-wrap:wrap;
    gap:10px;
}

.entity-page .entity-route-start{
    background:#fff;
    border:1px solid var(--entity-line);
    border-radius:6px;
    color:var(--entity-ink);
    flex:1 1 220px;
    font:inherit;
    font-size:14px;
    min-width:0;
    padding:8px 10px;
}

.entity-page .entity-route-locate:disabled,
.entity-page .entity-route-go:disabled{
    cursor:progress;
    opacity:.6;
}

.entity-page .entity-route-go[data-route-profile="car"],
.entity-page [data-city-route-go][data-route-profile="car"]{
    background:var(--theme-accent);
    color:#fff;
}

.entity-page .entity-route-go[data-route-profile="car"]:hover,
.entity-page [data-city-route-go][data-route-profile="car"]:hover{
    background:color-mix(in srgb, var(--theme-accent) 85%, black);
}

.entity-city-map-frame{
    margin:24px 0;
}

.entity-city-map{
    border:1px solid var(--entity-line, var(--color-border));
    border-radius:8px;
    height:480px;
    overflow:hidden;
}

.entity-city-map-frame .entity-route-actions{
    display:grid;
    gap:8px;
    margin-top:12px;
}

.entity-city-map-frame .entity-route-actions[hidden]{
    display:none;
}

.entity-route-controls-dual{
    display:flex;
    flex-wrap:wrap;
    gap:10px;
}

.entity-route-field{
    align-items:center;
    display:flex;
    flex:1 1 100%;
    flex-wrap:wrap;
    gap:6px 10px;
}

.entity-route-field label{
    color:var(--entity-muted, var(--color-muted));
    flex:0 0 auto;
    font-size:13px;
    font-weight:bold;
    min-width:56px;
}

.entity-route-field .entity-route-start{
    background:#fff;
    border:1px solid var(--entity-line, var(--color-border));
    border-radius:6px;
    color:var(--entity-ink, var(--color-text));
    flex:1 1 160px;
    font:inherit;
    font-size:14px;
    height:36px;
    line-height:1.3;
    min-width:0;
    padding:0 10px;
}

.entity-route-field [data-city-locate],
.entity-route-field [data-map-pick]{
    align-items:center;
    border:1px solid transparent;
    display:inline-flex;
    flex:0 0 auto;
    font-size:14px;
    height:36px;
    justify-content:center;
    line-height:1.3;
    padding:0 10px;
    white-space:nowrap;
}

.entity-route-controls-dual [data-city-route-go]{
    flex:1 1 auto;
}

.entity-route-controls-dual [data-city-route-clear]{
    flex:0 0 auto;
    white-space:nowrap;
}

.entity-page .entity-city-map-frame .entity-route-status{
    background:#f8edf1;
    border-left:4px solid var(--theme-primary);
    border-radius:6px;
    color:var(--entity-ink, #1f2933);
    font-size:16px;
    font-weight:bold;
    margin:4px 0 0;
    padding:10px 14px;
}

.entity-route-itinerary .leaflet-routing-container{
    background:transparent;
    border:0;
    border-radius:0;
    box-shadow:none;
    margin:12px 0 0;
    max-height:none;
    padding:0;
    width:100%;
}

.entity-route-itinerary .leaflet-routing-alt{
    background:var(--entity-paper, #fff);
    border:1px solid var(--entity-line, var(--color-border));
    border-radius:8px;
    max-height:none;
    padding:12px 14px;
}

.entity-route-itinerary .leaflet-routing-alt h2,
.entity-route-itinerary .leaflet-routing-alt h3{
    color:var(--entity-heading, #102a43);
}

.city-map-popup{
    display:flex;
    flex-direction:column;
    gap:4px;
    max-width:220px;
    padding:10px 12px;
}

.city-map-popup-summary{
    color:var(--entity-muted, var(--color-muted));
    font-size:13px;
}

.city-map-popup-actions{
    display:flex;
    gap:6px;
    margin:4px 0;
}

.city-map-popup-actions button{
    font-size:12px;
    padding:5px 8px;
}

.city-map-popup-actions .itinerary-popup-add{
    flex:0 0 auto;
    font-size:16px;
    height:34px;
    margin-left:auto;
    padding:0;
    width:34px;
}

.entity-page .entity-route-status{
    color:var(--entity-muted);
    font-size:14px;
    margin:0;
}

.entity-user-marker{
    background:#2563eb;
    border:3px solid #fff;
    border-radius:999px;
    box-shadow:0 0 0 4px rgba(37,99,235,.3),0 2px 6px rgba(0,0,0,.35);
    display:block;
    height:16px;
    width:16px;
}

.entity-page .entity-map-controls a{
    align-items:center;
    display:flex;
    justify-content:center;
}

.entity-page .entity-map-controls a:hover{
    background:#f4f4f4;
}

.entity-page .entity-map-controls svg{
    height:16px;
    width:16px;
}

.entity-page .entity-map-control-locate svg{
    fill:none;
    stroke:#333;
    stroke-linecap:round;
    stroke-linejoin:round;
    stroke-width:1.8;
}

.entity-page .entity-map-control-center svg{
    fill:#333;
    stroke:none;
}

.entity-page .nearby-card{
    align-items:center;
    background:#ffffff;
    border:1px solid var(--entity-line);
    border-radius:8px;
    color:var(--entity-heading);
    display:grid;
    gap:12px;
    grid-template-columns:86px minmax(0,1fr);
    min-height:82px;
    overflow:hidden;
    padding:8px;
    position:relative;
    text-decoration:none;
    transition:border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

.entity-page .nearby-card:hover{
    border-color:var(--theme-primary-border);
    box-shadow:0 10px 22px rgba(25,48,55,.08);
    text-decoration:none;
    transform:translateY(-1px);
}

/* Image de repli (logo du site) affichee sur les cartes dont le contenu n'a
   pas d'image "en avant" - object-fit:contain (plutot que cover, herite des
   regles de la carte concernee) pour ne jamais recadrer le logo, avec un
   fond et un espacement pour qu'il reste lisible dans une case pensee pour
   une photo. !important necessaire pour l'emporter sur les regles
   d'object-fit/height propres a chaque type de carte (.card img,
   .district-place-card img, etc.), plus specifiques.
*/
img.card-fallback-image{
    background:var(--theme-primary-tint) !important;
    object-fit:contain !important;
    padding:18% !important;
}

.entity-page .nearby-card img,
.entity-page .nearby-card-placeholder{
    aspect-ratio:4/3;
    background:var(--theme-primary-tint);
    border:1px solid #ead4dc;
    border-radius:6px;
    display:block;
    height:auto;
    object-fit:cover;
    width:86px;
}

.entity-page .nearby-card-placeholder{
    align-items:center;
    color:var(--theme-primary);
    display:flex;
    justify-content:center;
}

.entity-page .nearby-card-placeholder svg{
    fill:none;
    height:30px;
    stroke:currentColor;
    stroke-linecap:round;
    stroke-linejoin:round;
    stroke-width:1.8;
    width:30px;
}

.entity-page .nearby-card-media{
    display:block;
    position:relative;
}

.entity-page .nearby-card-rating{
    align-items:center;
    color:#e0a530;
    display:flex;
    font-size:11px;
    justify-content:center;
    letter-spacing:1px;
    line-height:1;
    position:absolute;
    right:10px;
    top:8px;
    white-space:nowrap;
}

.entity-page .nearby-card-body{
    display:block;
    min-width:0;
}

.entity-page .nearby-card-type,
.entity-page .nearby-card-distance{
    color:var(--entity-muted);
    display:block;
    font-size:12px;
    line-height:1.25;
}

.entity-page .nearby-card strong{
    color:var(--entity-heading);
    display:block;
    font-size:15px;
    line-height:1.25;
    margin:2px 0 4px;
}

.entity-page .entity-tags{
    align-items:flex-start;
    gap:10px 14px;
}

.entity-page .entity-tags-group{
    align-items:center;
    display:flex;
    flex-wrap:wrap;
    gap:7px;
}

.entity-page .entity-tags-title{
    align-items:center;
    display:inline-flex;
    gap:5px;
    margin-right:0;
}

.entity-page .entity-tags-title svg{
    fill:none;
    height:15px;
    stroke:currentColor;
    stroke-linecap:round;
    stroke-linejoin:round;
    stroke-width:1.9;
    width:15px;
}

@media (max-width:767px){
    .entity-page .nearby-cards{
        grid-template-columns:1fr;
    }

    .entity-page .nearby-card{
        grid-template-columns:78px minmax(0,1fr);
    }

    .entity-page .nearby-card img,
    .entity-page .nearby-card-placeholder{
        width:78px;
    }

    .entity-page .entity-tags-group{
        width:100%;
    }
}
.listing-intro{
    background:#ffffff;
    border:1px solid var(--color-border);
    border-radius:8px;
    margin:-8px 0 22px;
    max-width:960px;
    padding:18px 22px;
}

.listing-intro h2:first-child,
.listing-intro h3:first-child{
    margin-top:0;
}
/* Pages quartiers : carte et encards des lieux rattaches */
.entity-page .district-places-section{
    background:#ffffff;
    border:1px solid var(--entity-line);
    border-radius:8px;
    display:grid;
    gap:16px;
    padding:18px;
}

/* Espace au-dessus (avec l'entete "X lieux et Y zones...") et en dessous
   (avec la liste des lieux) de la carte/du panneau itineraire : la marge
   generique de .entity-city-map-frame (24px, partagee avec les cartes "plan
   de ville" de Venise) est ici reduite de moitie des deux cotes, et encore
   davantage en bas quand le panneau itineraire est masque (route-panel-open
   bascule au clic sur "Ouvrir itineraire", voir initRoutePanelToggles()) -
   sinon l'espace restant sous la seule carte (sans les champs) semblait trop
   grand avant la liste. */
.entity-page .district-places-section .entity-city-map-frame{
    margin:4px 0 0;
}

.entity-page .district-places-section .entity-city-map-frame.route-panel-open{
    margin-bottom:4px;
}

@media (max-width:767px){
    /* Sous 767px, "Lieux dans [Quartier]" (carte + liste) remonte juste
       apres l'intro, avant le contenu principal. .entity-main est deja en
       grid (source plus haut) : on reordonne juste le hero et cette
       section, tout le reste garde sa position relative (order:0 par
       defaut, non modifie). */
    .entity-page-district .entity-hero{
        order:-2;
    }

    .entity-page-district .district-places-section{
        order:-1;
    }
}

.entity-page .district-places-header{
    align-items:flex-start;
    display:flex;
    gap:16px;
    justify-content:space-between;
}

.entity-page .district-places-header h2{
    font-size:22px;
    margin:0 0 4px;
}

.entity-page .district-places-header p{
    color:var(--entity-muted);
    margin:0;
}

.entity-page .district-places-header-actions{
    align-items:center;
    display:flex;
    flex:0 0 auto;
    gap:8px;
}

.entity-page .district-places-header-actions .entity-route-toggle{
    background:var(--theme-primary-tint);
    border:1px solid var(--theme-primary-border);
    border-radius:999px;
    color:var(--theme-primary);
    font-size:13px;
    font-weight:bold;
    padding:6px 10px;
}

.entity-page .district-places-header-actions .entity-route-toggle:hover{
    background:var(--theme-primary-tint-strong);
}

.entity-page .district-places-header-actions .entity-route-toggle.is-active{
    background:var(--theme-accent);
    border-color:var(--theme-accent);
    color:#fff;
}

.entity-page .district-places-all-link{
    background:var(--theme-primary-tint);
    border:1px solid var(--theme-primary-border);
    border-radius:999px;
    color:var(--theme-primary);
    flex:0 0 auto;
    font-size:13px;
    font-weight:bold;
    padding:6px 10px;
    text-decoration:none;
}

.entity-page .nearby-district-all-link{
    align-items:center;
    color:var(--theme-primary);
    display:inline-flex;
    font-size:16px;
    font-weight:bold;
    gap:8px;
    margin-top:16px;
    text-decoration:none;
}

.entity-page .nearby-district-all-link:hover{
    text-decoration:underline;
}

.entity-page .nearby-district-all-link-arrow{
    transition:transform .15s ease;
}

.entity-page .nearby-district-all-link:hover .nearby-district-all-link-arrow{
    transform:translateX(3px);
}

.entity-page .district-places-all-link:hover{
    background:var(--theme-primary-tint-strong);
    text-decoration:none;
}

.entity-page .district-places-map-wrap{
    aspect-ratio:16/8;
    background:#edf7fa;
    border:1px solid var(--entity-line);
    border-radius:8px;
    min-height:300px;
    overflow:hidden;
    position:relative;
}

.entity-page .district-places-map{
    height:100%;
    min-height:300px;
    width:100%;
}

.entity-page .district-places-map.is-picking-point{
    cursor:crosshair;
}

.entity-page [data-map-pick].is-picking{
    background:var(--theme-accent);
    color:#fff;
}

.entity-page .district-place-leaflet-marker{
    background-image:var(--pin-image);
    background-position:center;
    background-repeat:no-repeat;
    background-size:contain;
    color:#8a0831;
    display:block;
    height:40px;
    position:relative;
    width:29px;
}

.entity-page .district-place-leaflet-marker-number{
    align-items:center;
    background:#fff;
    border:2px solid currentColor;
    border-radius:999px;
    color:var(--entity-heading,#102a43);
    display:flex;
    font-size:11px;
    font-weight:bold;
    height:18px;
    justify-content:center;
    line-height:1;
    min-width:18px;
    padding:0 3px;
    position:absolute;
    right:-5px;
    top:24px;
}

.entity-page .district-place-leaflet-marker-other{
    filter:grayscale(1) opacity(.65);
}

/* Zones (district_type "area") agrandies de 27% par rapport aux autres pins
   (29x40 -> 37x51, voir DISTRICT_MARKER_SIZE_ZONE dans travel-tools.js) pour
   rester reperables meme grisees en pin "cousin", ou le filtre grayscale()
   ci-dessus efface deja la distinction de teinte avec Ville/Village. */
.entity-page .district-place-leaflet-marker.district-place-marker-type-zone-area{
    height:51px;
    width:37px;
}

.entity-page .district-place-leaflet-marker.district-place-marker-type-zone-area .district-place-leaflet-marker-number{
    right:-6px;
    top:30px;
}

.entity-page .district-place-leaflet-marker-rating{
    align-items:center;
    background:#fff;
    border:1px solid #d7dde0;
    border-radius:999px;
    box-shadow:0 2px 5px rgba(21,45,52,.22);
    color:#e0a530;
    display:flex;
    font-size:9.5px;
    justify-content:center;
    left:50%;
    letter-spacing:1px;
    line-height:1;
    padding:1px 4px;
    position:absolute;
    top:-13px;
    transform:translateX(-50%);
    white-space:nowrap;
}

.entity-page .leaflet-popup-content{
    color:var(--entity-heading,#102a43);
    font-family:inherit;
    font-size:14px;
    line-height:1.35;
    margin:0;
    width:280px !important;
}

.entity-page .leaflet-popup-content-wrapper{
    padding:0;
    overflow:hidden;
}

.entity-page .district-place-popup{
    color:inherit;
    display:block;
    text-decoration:none;
}

.entity-page .district-place-popup-image{
    display:block;
    height:120px;
    object-fit:cover;
    width:100%;
}

.entity-page .district-place-popup-body{
    display:block;
    padding:10px 12px;
}

.entity-page .district-place-popup-body strong{
    color:var(--theme-primary,#34495b);
    display:block;
    font-weight:bold;
}

.entity-page .district-place-popup-rating{
    color:#e0a530;
    display:block;
    font-size:12px;
    letter-spacing:1px;
    margin-top:3px;
}

.entity-page .district-place-popup-summary{
    color:var(--entity-muted,#64757c);
    display:block;
    font-size:13px;
    line-height:1.4;
    margin-top:4px;
}

.entity-page .district-places-map-link{
    margin-top:-8px;
}

.entity-page .district-place-cards{
    display:grid;
    gap:12px;
    grid-template-columns:repeat(2,minmax(0,1fr));
}

.entity-page .district-place-card{
    align-items:start;
    background:#fff;
    border:1px solid var(--entity-line);
    border-radius:8px;
    color:var(--entity-heading);
    display:grid;
    gap:12px;
    grid-template-columns:96px minmax(0,1fr);
    min-height:102px;
    overflow:hidden;
    padding:10px;
    position:relative;
    text-decoration:none;
    transition:border-color .16s ease, box-shadow .16s ease, transform .16s ease;
}

.entity-page .district-place-card-rating{
    background:rgba(255,255,255,.92);
    border-radius:10px;
    color:#e0a530;
    font-size:12px;
    letter-spacing:1px;
    line-height:1;
    padding:3px 6px;
    position:absolute;
    right:8px;
    top:8px;
    z-index:1;
}

.entity-page .district-place-card:hover{
    border-color:var(--theme-primary-border);
    box-shadow:0 10px 22px rgba(25,48,55,.08);
    text-decoration:none;
    transform:translateY(-1px);
}

.entity-page .district-place-card img,
.entity-page .district-place-card-placeholder{
    aspect-ratio:4/3;
    background:var(--theme-primary-tint);
    border:1px solid #ead4dc;
    border-radius:6px;
    display:block;
    object-fit:cover;
    width:96px;
}

.entity-page .district-place-card-placeholder::before{
    color:var(--theme-primary);
    content:"";
    display:block;
    height:100%;
    width:100%;
}

.entity-page .district-place-card-body{
    display:block;
    min-width:0;
    position:relative;
}

.entity-page .district-place-card-number{
    align-items:center;
    background:var(--theme-primary);
    border-radius:999px;
    color:#fff;
    display:inline-flex;
    font-size:11px;
    font-weight:bold;
    height:22px;
    justify-content:center;
    margin:0 6px 5px 0;
    width:22px;
}

.entity-page .district-place-card-type{
    color:var(--entity-muted);
    font-size:12px;
    line-height:1.2;
}

.entity-page .district-place-card strong{
    color:var(--entity-heading);
    display:block;
    font-size:16px;
    line-height:1.25;
    margin:1px 0 5px;
}

.entity-page .district-place-card-summary{
    color:#486581;
    display:block;
    font-size:13px;
    line-height:1.35;
}

@media (max-width:767px){
    .entity-page .district-places-header{
        display:grid;
    }

    .entity-page .district-places-all-link{
        justify-self:start;
    }

    .entity-page .district-places-map-wrap{
        aspect-ratio:4/3;
        min-height:240px;
    }

    .entity-page .district-place-cards{
        grid-template-columns:1fr;
    }

    .entity-page .district-place-card{
        grid-template-columns:82px minmax(0,1fr);
    }

    .entity-page .district-place-card img,
    .entity-page .district-place-card-placeholder{
        width:82px;
    }
}
/* Encarts editoriaux inserables depuis TinyMCE. Couleurs alignees avec la
   version TinyMCE (admin-editor.js) : generique = dore/cuivre, info = bleu
   (theme-primary), histoire = vert olive (theme-accent). Fonds et bordures
   fines derives de la couleur d'accent (color-mix), plutot que des teintes
   figees issues de l'ancienne palette bordeaux. */
.entity-page .content .cms-callout,
.listing-intro .cms-callout{
    background:color-mix(in srgb, #C9963F 10%, white);
    border:1px solid color-mix(in srgb, #C9963F 35%, white);
    border-left:5px solid #C9963F;
    border-radius:6px;
    clear:both;
    color:var(--entity-ink,#1f2933);
    margin:24px 0;
    padding:15px 17px;
}

.entity-page .content .cms-callout > strong:first-child,
.listing-intro .cms-callout > strong:first-child{
    color:color-mix(in srgb, #C9963F 75%, black);
    display:block;
    font-weight:bold;
    margin:0 0 6px;
}

.entity-page .content .cms-callout p,
.listing-intro .cms-callout p{
    margin:0;
}

.entity-page .content .cms-callout p + p,
.listing-intro .cms-callout p + p{
    margin-top:8px;
}

.entity-page .content .cms-callout-float,
.listing-intro .cms-callout-float{
    clear:none;
    float:right;
    margin:6px 0 16px 22px;
    width:min(50%,360px);
}

.entity-page .content .cms-callout-info,
.listing-intro .cms-callout-info{
    background:color-mix(in srgb, var(--theme-primary) 8%, white);
    border-color:color-mix(in srgb, var(--theme-primary) 35%, white);
    border-left-color:var(--theme-primary);
}

.entity-page .content .cms-callout-info > strong:first-child,
.listing-intro .cms-callout-info > strong:first-child{
    color:color-mix(in srgb, var(--theme-primary) 75%, black);
}

.entity-page .content .cms-callout-story,
.listing-intro .cms-callout-story{
    background:color-mix(in srgb, var(--theme-accent) 12%, white);
    border-color:color-mix(in srgb, var(--theme-accent) 35%, white);
    border-left-color:var(--theme-accent);
}

.entity-page .content .cms-callout-story > strong:first-child,
.listing-intro .cms-callout-story > strong:first-child{
    color:color-mix(in srgb, var(--theme-accent) 75%, black);
}

@media (max-width:767px){
    .entity-page .content .cms-callout-float,
    .listing-intro .cms-callout-float{
        float:none;
        margin:20px 0;
        width:auto;
    }
}
/* Pages d'atterrissage : colonne principale + sidebar pratique */
.listing-layout{
    align-items:start;
    display:grid;
    gap:24px;
    grid-template-columns:minmax(0,1fr) 320px;
}

.listing-main{
    min-width:0;
}

.listing-sidebar{
    box-sizing:border-box;
    max-height:calc(100vh - 86px - 24px);
    min-width:0;
    overflow-x:hidden;
    overflow-y:auto;
    position:sticky;
    scrollbar-color:var(--color-border-strong) transparent;
    scrollbar-width:none;
    top:86px;
    width:calc(100% + 14px);
}

.listing-sidebar:hover{
    scrollbar-width:thin;
}

.listing-sidebar::-webkit-scrollbar{
    width:0;
}

.listing-sidebar:hover::-webkit-scrollbar{
    width:6px;
}

.listing-sidebar::-webkit-scrollbar-track{
    background:transparent;
}

.listing-sidebar::-webkit-scrollbar-thumb{
    background-color:var(--color-border-strong);
    border-radius:3px;
}

.listing-sidebar .sidebar-card-district-map h2{
    margin-bottom:12px;
}

.listing-sidebar .district-mini-map-box{
    float:none;
    margin:0;
    width:100%;
}

.listing-sidebar .district-mini-map-stage{
    aspect-ratio:1448/1086;
    background:#fff;
    border:1px solid var(--color-border);
    border-radius:4px;
    cursor:default;
    overflow:hidden;
    position:relative;
}

.listing-sidebar .district-mini-map-stage.has-district-hover{
    cursor:pointer;
}

.listing-sidebar .district-mini-map-stage:focus-visible{
    outline:2px solid var(--theme-primary);
    outline-offset:3px;
}

.listing-sidebar .district-mini-map-image,
.listing-sidebar .district-mini-map-overlay{
    display:block;
    height:100%;
    inset:0;
    object-fit:contain;
    position:absolute;
    width:100%;
}

.listing-sidebar .district-mini-map-image{
    position:relative;
}

.listing-sidebar .district-mini-map-overlay{
    opacity:0;
    pointer-events:none;
    transition:opacity .14s ease;
}

.listing-sidebar .district-mini-map-overlay.is-visible{
    opacity:1;
}

.listing-sidebar .district-mini-map-links{
    height:1px;
    margin:-1px;
    overflow:hidden;
    position:absolute;
    white-space:nowrap;
    width:1px;
    clip:rect(0 0 0 0);
    clip-path:inset(50%);
}

.listing-sidebar .district-mini-map-caption{
    color:var(--color-heading);
    display:block;
    line-height:1.2;
    margin-top:8px;
    text-align:center;
    text-decoration:none;
}

.listing-sidebar .district-mini-map-caption span{
    color:var(--color-muted);
    display:block;
    font-size:11px;
}

.listing-sidebar .district-mini-map-caption strong{
    display:block;
    font-size:14px;
}

.listing-sidebar .district-mini-map-caption:hover strong{
    color:var(--theme-primary);
}

/* Carte interactive des quartiers en pleine largeur, sous le contenu
   principal (au lieu de la colonne laterale etroite) sur /quartiers/. */
.listing-map-section{
    margin:0 0 36px;
}

.listing-map-section .district-mini-map-box{
    float:none;
    margin:0 auto;
    max-width:520px;
    width:100%;
}

.listing-map-section .district-mini-map-stage{
    background:#fff;
    border:1px solid var(--color-border);
    border-radius:4px;
    cursor:default;
    overflow:hidden;
    position:relative;
}

.listing-map-section .district-mini-map-stage.has-district-hover{
    cursor:pointer;
}

.listing-map-section .district-mini-map-stage:focus-visible{
    outline:2px solid var(--theme-primary);
    outline-offset:3px;
}

.listing-map-section .district-mini-map-image,
.listing-map-section .district-mini-map-overlay{
    display:block;
    height:100%;
    inset:0;
    object-fit:contain;
    position:absolute;
    width:100%;
}

.listing-map-section .district-mini-map-image{
    position:relative;
}

.listing-map-section .district-mini-map-overlay{
    opacity:0;
    pointer-events:none;
    transition:opacity .14s ease;
}

.listing-map-section .district-mini-map-overlay.is-visible{
    opacity:1;
}

.listing-map-section .district-mini-map-links{
    height:1px;
    margin:-1px;
    overflow:hidden;
    position:absolute;
    white-space:nowrap;
    width:1px;
    clip:rect(0 0 0 0);
    clip-path:inset(50%);
}

.listing-map-section .district-mini-map-caption{
    color:var(--color-heading);
    display:block;
    line-height:1.2;
    margin-top:8px;
    text-align:center;
    text-decoration:none;
}

.listing-map-section .district-mini-map-caption span{
    color:var(--color-muted);
    display:block;
    font-size:11px;
}

.listing-map-section .district-mini-map-caption strong{
    display:block;
    font-size:14px;
}

.listing-map-section .district-mini-map-caption:hover strong{
    color:var(--theme-primary);
}

@media (max-width:991px){
    .listing-layout{
        grid-template-columns:1fr;
    }

    .listing-sidebar{
        max-height:none;
        overflow-y:visible;
        position:static;
        width:auto;
    }

    .entity-sidebar-inner{
        width:auto;
    }
}

/* Sur /quartiers/ en mobile : fil d'Ariane puis barre "Preparer son
   voyage" avant le titre, pour laisser le widget des 3 liens tout en
   haut. Le titre (.listing-hero) redescend donc apres eux. */
@media (max-width:767px){
    .container-quartiers{
        display:flex;
        flex-direction:column;
    }

    .container-quartiers .page-meta-bar{
        order:-3;
    }

    .container-quartiers .mobile-travel-widget-inline{
        order:-2;
    }

    .container-quartiers .listing-hero{
        order:-1;
    }
}

/* La carte des quartiers reste dans la colonne de droite (.sidebar-card-
   district-map) au-dessus de 767px, comme le reste de la sidebar. En
   dessous, la sidebar entiere repasse sous le contenu principal (regle
   991px plus haut) : trop loin pour rester utile telle quelle, donc on la
   masque ici et on affiche a la place .listing-map-section--mobile,
   intercalee DANS la colonne principale (entre le contenu editorial et le
   formulaire de filtre) - une position plus profonde dans le DOM que la
   sidebar, donc dupliquee plutot que deplacee par un simple CSS "order". */
.listing-map-section--mobile{
    display:none;
}

@media (max-width:767px){
    .sidebar-card-district-map{
        display:none;
    }

    .listing-map-section--mobile{
        display:block;
    }
}

/* En-tete plus compact sur les pages d'atterrissage : fait remonter la colonne de droite. */
.listing-hero{
    padding:18px 24px;
}

.listing-hero h1{
    font-size:clamp(28px,4vw,36px);
    margin:6px 0 8px;
}

.listing-hero .summary{
    font-size:17px;
}

/* Widgets de la colonne de droite : meme habillage que les fiches lieux (cartes blanches, ombre, accent en tete). */
.listing-sidebar .sidebar-card{
    background:#ffffff;
    border:1px solid var(--entity-line,#d8e1dd);
    border-radius:8px;
    box-shadow:0 12px 26px rgba(25,48,55,.07);
    min-width:0;
    padding:18px;
}

.listing-sidebar .sidebar-card:first-child{
    border-top:4px solid var(--theme-primary);
}

.listing-sidebar .sidebar-card-booking{
    border-top:4px solid var(--theme-accent,#8A9A4E);
}

.listing-sidebar .sidebar-card-map{
    border-top:4px solid var(--entity-lagoon,#c9963f);
}

.listing-sidebar .sidebar-static-map-link{
    border-radius:6px;
    display:block;
    margin-bottom:8px;
    overflow:hidden;
}

.listing-sidebar .sidebar-static-map-image{
    aspect-ratio:4/3;
    display:block;
    height:auto;
    object-fit:cover;
    width:100%;
}

.listing-sidebar .map-link{
    color:var(--entity-lagoon,#c9963f);
    font-weight:bold;
}

.listing-sidebar .sidebar-card h2{
    color:var(--entity-heading,#12323a);
    font-size:18px;
    letter-spacing:0;
    margin:0 0 12px;
}

.listing-sidebar .sidebar-actions{
    gap:9px;
}

.listing-sidebar .sidebar-action{
    align-items:center;
    border-radius:6px;
    display:flex;
    font-size:14px;
    font-weight:normal;
    justify-content:space-between;
    padding:6px 10px;
}

.listing-sidebar .sidebar-action::after{
    content:">";
    color:var(--theme-primary);
    font-weight:bold;
}
/* Filtres des pages d'atterrissage : ligne compacte et alignement propre */
.listing-filters{
    align-items:end;
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:0;
    display:flex;
    flex-wrap:wrap;
    gap:14px;
    grid-template-columns:none;
    margin:0 0 22px;
    padding:18px 20px;
}

.listing-filters > div{
    flex:1 1 320px;
    min-width:240px;
}

.listing-filter-actions{
    align-items:end;
    display:flex;
    flex:0 0 auto;
    gap:10px;
}

.listing-filters label{
    color:var(--color-heading);
    display:block;
    font-size:14px;
    font-weight:bold;
    line-height:1.2;
    margin:0 0 8px;
}

.listing-filters select{
    appearance:none;
    background:
        linear-gradient(45deg,transparent 50%,var(--theme-primary) 50%) right 18px center / 6px 6px no-repeat,
        linear-gradient(135deg,var(--theme-primary) 50%,transparent 50%) right 12px center / 6px 6px no-repeat,
        linear-gradient(180deg,#fbfcfd,#f1f4f8);
    border:1px solid #b9c7d8;
    border-radius:5px;
    color:var(--color-heading);
    font:inherit;
    height:46px;
    padding:0 42px 0 13px;
    width:100%;
}

.listing-filter-actions button{
    align-items:center;
    background:var(--theme-primary);
    border:1px solid var(--theme-primary);
    border-radius:5px;
    color:#fff;
    cursor:pointer;
    display:inline-flex;
    font:inherit;
    font-weight:bold;
    height:46px;
    justify-content:center;
    padding:0 19px;
    white-space:nowrap;
}

.listing-filter-actions button:hover{
    background:#5b1730;
    border-color:#5b1730;
}

.listing-filter-actions .button-link{
    align-items:center;
    display:inline-flex;
    height:46px;
}

@media (max-width:479px){
    .listing-filters{
        display:grid;
    }

    .listing-filters > div{
        min-width:0;
    }

    .listing-filter-actions,
    .listing-filter-actions button{
        width:100%;
    }
}
.entity-sidebar .sidebar-card-district-map .district-mini-map-box{
    float:none;
    margin:0;
    width:100%;
}
.entity-page .sidebar-note{
    color:var(--entity-muted);
    font-size:13px;
}

.sidebar-editions-list{
    list-style:none;
    margin:0;
    padding:0;
}

.sidebar-editions-list li{
    padding:6px 0;
    border-bottom:1px solid var(--entity-line, #e4e9ef);
}

.sidebar-editions-list li:last-child{
    border-bottom:none;
}

.entity-page .sidebar-official-link{
    color:var(--entity-muted);
    font-size:13px;
}

.entity-page .sidebar-note-verified{
    font-size:12px;
    margin-top:14px;
    text-align:right;
}

.entity-page .entity-updated-date{
    color:var(--entity-muted);
    flex:1 0 100%;
    font-size:12px;
    margin:0 0 8px;
    text-align:center;
}

/* Pages statiques (contact, confidentialite, mentions legales) */
.static-page{
    margin:0 auto;
    max-width:820px;
    padding:32px 20px 60px;
}

.static-page-content{
    color:#334e68;
    font-size:16px;
    line-height:1.65;
}

.static-page-content h2{
    color:var(--color-heading);
    font-size:20px;
    margin:32px 0 12px;
}

.static-page-content h2:first-child{
    margin-top:0;
}

.static-page-content p,
.static-page-content ul{
    margin:0 0 14px;
}

.static-page-content .muted{
    color:var(--color-muted);
    font-size:14px;
}

.flash-success,
.flash-error{
    border-radius:6px;
    font-size:15px;
    padding:12px 16px;
}

.flash-success{
    background:#eaf6f3;
    border:1px solid #a8d5cd;
    color:#0a4d47;
}

.flash-error{
    background:var(--theme-primary-tint);
    border:1px solid var(--theme-primary-border);
    color:var(--theme-primary, #34495b);
}

.contact-form{
    margin-top:24px;
    max-width:520px;
}

.contact-form label{
    display:block;
    font-weight:bold;
    margin-bottom:6px;
}

.contact-form input[type="text"],
.contact-form input[type="email"],
.contact-form textarea{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:6px;
    box-sizing:border-box;
    font:inherit;
    padding:10px 12px;
    width:100%;
}

.contact-form textarea{
    resize:vertical;
}

.contact-form-captcha label{
    align-items:center;
    display:flex;
    flex-wrap:wrap;
    font-weight:normal;
    gap:8px;
}

.contact-captcha-digit{
    background:#fff;
    border:1px solid var(--color-border);
    border-radius:4px;
    display:inline-block;
    vertical-align:middle;
}

.contact-captcha-answer{
    max-width:100px;
}

.error-page-links{
    display:flex;
    flex-wrap:wrap;
    gap:10px;
    list-style:none;
    padding:0;
    margin:0 0 20px;
}

.error-page-links li{
    margin:0;
}

.error-page-links a{
    display:inline-block;
    padding:8px 16px;
    border:1px solid var(--color-border, #d9e2ec);
    border-radius:999px;
    color:var(--color-heading);
    text-decoration:none;
    font-size:14px;
}

.error-page-links a:hover{
    background:#f0f4f8;
}

.cookie-policy-table{
    border-collapse:collapse;
    margin:0 0 20px;
    width:100%;
}

.cookie-policy-table th,
.cookie-policy-table td{
    border:1px solid var(--color-border);
    font-size:14px;
    padding:8px 10px;
    text-align:left;
    vertical-align:top;
}

.cookie-policy-table th{
    background:var(--color-surface-soft);
}

/* Consentement cookies */
.consent-embed-placeholder{
    align-items:center;
    background:#f4f6f8;
    border:1px dashed #d9e2ec;
    border-radius:6px;
    display:flex;
    flex-direction:column;
    gap:10px;
    justify-content:center;
    min-height:180px;
    padding:24px;
    text-align:center;
}

.consent-embed-placeholder p{
    color:#486581;
    font-size:14px;
    margin:0;
}

.consent-embed-placeholder-actions{
    align-items:center;
    display:flex;
    flex-wrap:wrap;
    gap:14px;
    justify-content:center;
}

.consent-embed-placeholder-actions .text-button{
    font-size:13px;
    text-decoration:underline;
}

.cookie-consent-banner{
    background:#12232c;
    bottom:0;
    box-shadow:0 -8px 24px rgba(0,0,0,.25);
    color:#f0f4f7;
    left:0;
    padding:16px 20px;
    position:fixed;
    right:0;
    z-index:2000;
}

.cookie-consent-inner{
    margin:0 auto;
    max-width:1100px;
}

.cookie-consent-text p{
    margin:0 0 6px;
}

.cookie-consent-text{
    font-size:14px;
}

.cookie-consent-text a{
    color:#8ecae6;
}

.cookie-consent-actions{
    display:flex;
    flex-wrap:wrap;
    gap:10px;
    margin-top:12px;
}

.cookie-consent-actions .button,
.cookie-consent-actions .button-light{
    font-size:13px;
    padding:8px 14px;
}

.cookie-consent-customize{
    background:rgba(255,255,255,.06);
    border-radius:8px;
    display:grid;
    gap:10px;
    margin-top:14px;
    padding:14px;
}

.cookie-consent-option{
    align-items:flex-start;
    display:flex;
    font-size:13px;
    gap:8px;
}

.cookie-consent-option input{
    margin-top:3px;
}

.cookie-consent-option-locked{
    opacity:.7;
}

body.has-cookie-banner{
    padding-bottom:0;
}

.site-footer-inner{
    align-items:center;
    display:flex;
    flex-wrap:wrap;
    gap:14px;
    justify-content:space-between;
    margin:0 auto;
    max-width:1100px;
}

.site-footer-brand{
    align-items:center;
    display:flex;
    gap:10px;
    text-align:left;
}

.site-footer-icon{
    display:block;
    flex:0 0 auto;
    height:28px;
    width:28px;
}

.site-footer-nav{
    align-items:center;
    display:flex;
    flex-wrap:wrap;
    gap:16px;
}

.site-footer-nav a,
.site-footer-nav .text-button{
    color:inherit;
    font-size:13px;
    opacity:.85;
}

.site-footer-nav a:hover,
.site-footer-nav .text-button:hover{
    opacity:1;
    text-decoration:underline;
}

.site-footer .language-switcher{
    margin-top:0;
}

.site-footer .language-switcher-select{
    width:auto;
}

@media (max-width:767px){
    .cookie-consent-actions{
        flex-direction:column;
    }

    .cookie-consent-actions .button,
    .cookie-consent-actions .button-light{
        width:100%;
    }
}

.home-hero-cta{
    display:inline-block;
    margin-top:8px;
}

.home-intro{
    margin:0 auto 32px;
    max-width:720px;
}

.home-intro-with-image{
    display:flow-root;
    margin:0 0 32px;
    max-width:none;
}

.home-intro-text{
    font-size:18px;
}

.home-intro-image{
    aspect-ratio:3/2;
    border-radius:8px;
    float:right;
    margin:0 0 20px 28px;
    overflow:hidden;
    position:relative;
    width:50%;
}

.home-intro-slide{
    height:100%;
    inset:0;
    margin:0;
    opacity:0;
    pointer-events:none;
    position:absolute;
    transition:opacity 1s ease;
    width:100%;
}

.home-intro-slide.is-active{
    opacity:1;
    pointer-events:auto;
}

.home-intro-slide img{
    display:block;
    height:100%;
    object-fit:cover;
    width:100%;
}

.home-intro-slide figcaption{
    background:linear-gradient(to top,rgba(0,0,0,.68),rgba(0,0,0,0));
    bottom:0;
    color:#fff;
    font-size:13px;
    left:0;
    padding:28px 14px 10px;
    position:absolute;
    right:0;
}

@media (max-width:767px){
    .home-intro-image{
        float:none;
        margin:0 0 20px;
        width:100%;
    }
}

@media (prefers-reduced-motion:reduce){
    .home-intro-slide{
        transition:none;
    }
}

.home-showcase-columns{
    display:grid;
    gap:16px;
    grid-template-columns:repeat(3,1fr);
    margin-bottom:28px;
}

@media (max-width:767px){
    .home-showcase-columns{
        gap:20px;
        grid-template-columns:1fr;
    }
}

.home-showcase-column h2{
    font-size:20px;
    margin:0 0 10px;
    text-align:center;
}

.home-section-prepare .cards{
    grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
}

.home-showcase-slides{
    height:280px;
    position:relative;
}

.home-showcase-slide{
    inset:0;
    margin:0;
    opacity:0;
    pointer-events:none;
    position:absolute;
    transition:opacity 1s ease;
}

.home-showcase-slide.is-active{
    opacity:1;
    pointer-events:auto;
}

.home-showcase-slide .card-summary{
    -webkit-box-orient:vertical;
    -webkit-line-clamp:3;
    display:-webkit-box;
    overflow:hidden;
}

@media (prefers-reduced-motion:reduce){
    .home-showcase-slide{
        transition:none;
    }
}

.home-section{
    margin-bottom:36px;
}

@media (max-width:767px){
    /* Selecteur d'enfant direct : ne vise que les sections avec un h2
       "nu" (pas de wrapper .home-section-header). Pour les sections avec
       bouton "Voir tout", le h2 est un item flex qui ne fait plus la
       largeur du conteneur ; la ligne doit alors se centrer sur
       .home-section-header (toujours pleine largeur), pas sur le h2. */
    .home-section > h2{
        padding-top:14px;
        position:relative;
    }

    .home-section > h2::before{
        background:var(--color-border);
        content:'';
        display:block;
        height:1px;
        left:50%;
        position:absolute;
        top:0;
        transform:translateX(-50%);
        width:66vw;
    }
}

.home-section-header{
    align-items:baseline;
    display:flex;
    gap:12px;
    justify-content:space-between;
}

@media (max-width:767px){
    .home-section-header{
        align-items:center;
        flex-wrap:wrap;
        gap:6px 12px;
        margin-bottom:20px;
        padding-top:14px;
        position:relative;
    }

    .home-section-header::before{
        background:var(--color-border);
        content:'';
        display:block;
        height:1px;
        left:50%;
        position:absolute;
        top:0;
        transform:translateX(-50%);
        width:66vw;
    }

    /* Les marges du h2 ne se fusionnent pas dans un conteneur flex : sans
       cette remise a zero, sa margin-box (bien plus haute que le texte
       visible) fausse le centrage vertical face au bouton "Voir tout".
       L'espace avant les cartes (auparavant fourni par cette marge) est
       repris ci-dessus par la marge du conteneur .home-section-header. */
    .home-section-header h2{
        margin:0;
    }

    /* Reste sur la ligne du titre quand il y a la place ; sinon repasse
       en dessous, mais toujours flottant a droite grace a margin-left:auto
       (fonctionne aussi bien partage sur la ligne du h2 que seul sur sa
       propre ligne, une fois le flex-wrap declenche). */
    .home-section-header-actions,
    .home-section-header > .home-section-more{
        margin-left:auto;
    }
}

.home-section-header-actions{
    align-items:center;
    display:flex;
    flex:0 0 auto;
    gap:8px;
}

.home-section-random-btn{
    background:var(--color-surface);
    border:1px solid var(--color-border);
    border-radius:999px;
    color:var(--color-muted);
    cursor:pointer;
    font:inherit;
    font-size:13px;
    font-weight:bold;
    padding:6px 12px;
    white-space:nowrap;
}

.home-section-random-btn:hover{
    border-color:var(--theme-primary, var(--color-link));
    color:var(--theme-primary, var(--color-link));
}

.home-section-random-btn[disabled]{
    cursor:progress;
    opacity:.6;
}

.home-section-more{
    align-items:center;
    background:var(--theme-accent);
    border:1px solid var(--theme-accent);
    border-radius:999px;
    color:#ffffff;
    display:inline-flex;
    flex:0 0 auto;
    font-size:13px;
    font-weight:bold;
    gap:6px;
    padding:6px 12px;
    text-decoration:none;
    white-space:nowrap;
}

.home-section-more:hover{
    background:color-mix(in srgb, var(--theme-accent) 82%, black);
    border-color:color-mix(in srgb, var(--theme-accent) 82%, black);
    text-decoration:none;
}

.home-section-more-arrow{
    transition:transform .15s ease;
}

.home-section-more:hover .home-section-more-arrow{
    transform:translateX(3px);
}

.home-maps-grid{
    display:grid;
    gap:16px;
    grid-template-columns:repeat(3,minmax(0,1fr));
}

@media (max-width:767px){
    .home-maps-grid{
        grid-template-columns:1fr;
        max-width:280px;
        margin:0 auto;
    }
}

.home-maps-grid .district-mini-map-box{
    float:none;
    margin:0;
    width:100%;
}

.home-maps-grid .district-mini-map-stage{
    background:#fff;
    border:1px solid var(--color-border);
    border-radius:4px;
    cursor:default;
    overflow:hidden;
    position:relative;
}

.home-maps-grid .district-mini-map-stage.has-district-hover{
    cursor:pointer;
}

.home-maps-grid .district-mini-map-stage:focus-visible{
    outline:2px solid var(--theme-primary);
    outline-offset:3px;
}

.home-maps-grid .district-mini-map-image,
.home-maps-grid .district-mini-map-overlay{
    display:block;
    height:100%;
    inset:0;
    object-fit:contain;
    position:absolute;
    width:100%;
}

.home-maps-grid .district-mini-map-image{
    position:relative;
}

.home-maps-grid .district-mini-map-overlay{
    opacity:0;
    pointer-events:none;
    transition:opacity .14s ease;
}

.home-maps-grid .district-mini-map-overlay.is-visible{
    opacity:1;
}

.home-maps-grid .district-mini-map-links{
    height:1px;
    margin:-1px;
    overflow:hidden;
    position:absolute;
    white-space:nowrap;
    width:1px;
    clip:rect(0 0 0 0);
    clip-path:inset(50%);
}

.home-maps-grid .district-mini-map-caption{
    color:var(--color-heading);
    display:block;
    line-height:1.2;
    margin-top:8px;
    text-align:center;
    text-decoration:none;
}

.home-maps-grid .district-mini-map-caption span{
    color:var(--color-muted);
    display:block;
    font-size:11px;
}

.home-maps-grid .district-mini-map-caption strong{
    display:block;
    font-size:14px;
}

.home-maps-grid .district-mini-map-caption:hover strong{
    color:var(--theme-primary);
}

.home-citymap-card{
    color:var(--color-heading);
    display:block;
    text-decoration:none;
}

.home-citymap-card img{
    aspect-ratio:1072/932;
    border:1px solid var(--color-border);
    border-radius:4px;
    display:block;
    height:auto;
    object-fit:cover;
    width:100%;
}

.home-citymap-card span{
    display:block;
    font-size:14px;
    font-weight:600;
    margin-top:8px;
    text-align:center;
}

.home-citymap-card:hover span{
    color:var(--theme-primary);
}
/* Mobile navigation: compact panel with foldable sections */
.site-submenu-toggle{
    display:none;
}

@media (max-width:991px){
    .site-header[data-nav-open="true"]{
        box-shadow:0 14px 30px rgba(21,36,46,.12);
    }

    .site-header[data-nav-open="true"] .site-header-inner{
        padding-bottom:12px;
    }

    .site-header[data-nav-open="true"] .site-nav{
        display:block;
    }

    .site-menu{
        align-items:stretch;
        background:#fff;
        border:1px solid rgba(0,0,0,.12);
        border-radius:8px;
        box-shadow:0 16px 34px rgba(31,39,48,.12);
        display:grid;
        gap:6px;
        justify-content:stretch;
        max-height:min(68vh,560px);
        overflow-y:auto;
        padding:8px;
        scrollbar-width:thin;
        width:100%;
    }

    .site-menu-item{
        border-radius:7px;
        min-width:0;
    }

    .site-menu > .site-menu-item.has-children{
        display:grid;
        grid-template-columns:minmax(0,1fr) 42px;
    }

    .site-menu-link{
        border-radius:7px;
        padding:12px 11px;
    }

    .site-menu > .site-menu-item > .site-menu-link{
        background:#f7f9f4;
        color:#283747;
    }

    .site-menu > .site-menu-item > .site-menu-link:hover,
    .site-menu > .site-menu-item > .site-menu-link:focus-visible{
        background:#eef1e2;
        color:var(--theme-primary);
    }

    .site-menu-item.has-children > .site-menu-link::after{
        content:none;
    }

    .site-submenu-toggle{
        align-items:center;
        align-self:stretch;
        background:#eef1e2;
        border:0;
        border-left:1px solid rgba(0,0,0,.1);
        border-radius:7px;
        color:var(--theme-primary);
        cursor:pointer;
        display:flex;
        justify-content:center;
        padding:0;
    }

    .site-submenu-toggle span{
        border-bottom:2px solid currentColor;
        border-right:2px solid currentColor;
        display:block;
        height:9px;
        transform:translateY(-2px) rotate(45deg);
        transition:transform .16s ease;
        width:9px;
    }

    .site-menu-item.is-submenu-open > .site-submenu-toggle span{
        transform:translateY(2px) rotate(225deg);
    }

    .site-menu-item.has-children > .site-submenu{
        background:#fff;
        border:0;
        border-left:3px solid var(--theme-accent);
        box-shadow:none;
        display:none;
        grid-column:1 / -1;
        margin:4px 0 2px 8px;
        min-width:0;
        padding:3px 0 3px 8px;
        position:static;
    }

    .site-menu-item.is-submenu-open > .site-submenu{
        display:grid;
        gap:3px;
    }

    .site-submenu .site-menu-link{
        background:transparent;
        color:#415466;
        font-size:13px;
        padding:8px 10px;
        white-space:normal;
    }
}

/* Compact cookie consent */
.cookie-consent-banner{
    background:rgba(18,35,44,.97);
    padding:12px 18px;
}

.cookie-consent-inner{
    align-items:center;
    display:grid;
    gap:12px 18px;
    grid-template-columns:minmax(0,1fr) auto;
    max-width:980px;
}

.cookie-consent-text p{
    margin:0;
}

.cookie-consent-text p + p{
    margin-top:3px;
}

.cookie-consent-actions{
    align-items:center;
    display:flex;
    gap:8px;
    justify-content:flex-end;
    margin-top:0;
}

.cookie-consent-actions .button,
.cookie-consent-actions .button-light{
    border-radius:7px;
    font-size:13px;
    line-height:1.2;
    padding:8px 12px;
    white-space:nowrap;
}

.cookie-consent-customize{
    grid-column:1 / -1;
    margin-top:0;
}

.cookie-consent-customize[hidden],
.cookie-consent-actions [hidden]{
    display:none !important;
}

@media (max-width:767px){
    .cookie-consent-banner{
        border-radius:12px 12px 0 0;
        padding:10px 12px 12px;
    }

    .cookie-consent-inner{
        gap:10px;
        grid-template-columns:1fr;
    }

    .cookie-consent-text{
        font-size:13px;
        line-height:1.35;
    }

    .cookie-consent-text p:first-child{
        font-size:14px;
    }

    .cookie-consent-actions{
        display:grid;
        gap:7px;
        grid-template-columns:repeat(3,minmax(0,1fr));
        width:100%;
    }

    .cookie-consent-actions .button,
    .cookie-consent-actions .button-light{
        font-size:12px;
        justify-content:center;
        min-width:0;
        padding:8px 7px;
        width:100%;
    }

    .cookie-consent-banner.is-customizing .cookie-consent-actions{
        grid-template-columns:1fr 1fr;
    }

    .cookie-consent-customize{
        gap:8px;
        max-height:42vh;
        overflow:auto;
        padding:10px;
    }

    .cookie-consent-option{
        font-size:12px;
        line-height:1.35;
    }
}
