.elementor-kit-13{--e-global-color-primary:#005886;--e-global-color-secondary:#54595F;--e-global-color-text:#7A7A7A;--e-global-color-accent:#61CE70;--e-global-color-3e0039a:#005886;--e-global-color-9bc1826:#E2B15A;--e-global-color-42d72c7:#F6F0E9;--e-global-color-e04c36f:#54595F;--e-global-typography-primary-font-family:"Atkinson Hyperlegible";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Atkinson Hyperlegible";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"Atkinson Hyperlegible";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Atkinson Hyperlegible";--e-global-typography-accent-font-weight:500;--e-global-typography-h1-font-family:"Fraunces";--e-global-typography-h1-font-size:32px;--e-global-typography-h1-font-weight:800;}.elementor-kit-13 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1140px;}.e-con{--container-max-width:1140px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* =========================================================
   LES HAUTS DE VALMEINIER — CSS PERSONNALISÉ (nettoyé)
   Doublons supprimés : les définitions redondantes ci-dessous
   ont été consolidées en une seule version — celle qui gagnait
   déjà visuellement (dernière déclaration du fichier d'origine).
   Aucun changement visuel : ce nettoyage retire du code mort,
   il ne modifie pas ce qui s'affiche actuellement.
   Mise à jour 23/09 : section 14 — le trait "DÉCOUVRIR" n'est
   plus coupé au bas du hero (overflow-x: clip + parents visibles),
   et il est bicolore : blanc sur la photo, noir sur le blanc.
   ========================================================= */

/* ---------------------------------------------------------
   1. VARIABLES & FONTES
   --------------------------------------------------------- */
:root {
    --alp-bleu: #005886;
    --alp-or: #E2B15A;
    --alp-beige: #F6F0E9;
    --font-titre: 'Fraunces', serif;
    --font-corps: 'Atkinson Hyperlegible', sans-serif;
}

/* ---------------------------------------------------------
   2. TEXTES PREMIUM
   --------------------------------------------------------- */
.lhv-text-premium {
    font-family: var(--font-corps) !important;
    font-size: 17px !important;
    line-height: 1.5 !important;
    color: #555 !important;
    text-align: justify !important;
    padding-left: 20px !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
    text-indent: 0 !important;
    display: block !important;
    margin-bottom: 25px !important;
    margin-top: 0 !important;
}
.lhv-text-premium strong {
    color: #333333 !important;
    font-weight: 700 !important;
}
.lhv-text-premium p,
p.lhv-text-premium {
    text-align-last: left !important;
}
.couleur-or { color: var(--alp-or); }

/* ---------------------------------------------------------
   3. SYSTÈME DE TITRES — barre dorée
   (classe réutilisable : "barre + sous-titre or + titre bleu")
   --------------------------------------------------------- */
.lhv-residence-assets-header {
    position: relative;
    padding-left: 20px;
    margin-bottom: 15px !important;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.lhv-residence-assets-header::before {
    content: '';
    position: absolute;
    left: 0; top: 3px; bottom: 5px;
    width: 4px;
    background-color: var(--alp-or);
    border-radius: 10px;
}
.lhv-assets-sub-title {
    color: var(--alp-or) !important;
    font-family: var(--font-corps);
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 0.15em;
    margin-bottom: 2px;
    display: block;
    line-height: 1.2;
}
.lhv-assets-main-title {
    color: var(--alp-bleu) !important;
    font-family: var(--font-titre);
    font-size: 32px;
    font-weight: 800;
    display: block;
    line-height: 1.1;
    margin: 0 !important;
}

/* Variante utilisée sur les modules appartements (mêmes rôles,
   marges différentes — à unifier avec la classe ci-dessus lors
   de la conversion en widgets Elementor). */
.lhv-apt-header-detail {
    position: relative;
    padding-left: 20px;
    margin-bottom: 25px !important;
}
.lhv-apt-header-detail::before {
    content: '';
    position: absolute;
    left: 0; top: 4px; bottom: 4px; width: 4px;
    background-color: var(--alp-or);
    border-radius: 10px;
}
.lhv-apt-header-detail .sub-gold {
    color: var(--alp-or) !important;
    font-family: var(--font-corps) !important;
    font-size: 13px !important;
    text-transform: uppercase;
    letter-spacing: 0.15em !important;
    margin-bottom: 2px !important;
    display: block;
}
.lhv-apt-header-detail .main-title {
    color: var(--alp-bleu) !important;
    font-family: var(--font-titre) !important;
    font-size: 32px !important;
    font-weight: 800 !important;
    margin: 0 !important;
}
.lhv-apt-specs-blue {
    color: var(--alp-bleu) !important;
    font-family: var(--font-corps) !important;
    font-size: 18px !important;
    font-weight: 700 !important;
    margin-bottom: 30px !important;
}

/* ---------------------------------------------------------
   4. DÉCORATION DES IMAGES — carrés
   --------------------------------------------------------- */
.sq-base { position: relative; z-index: 1; }
.sq-base img {
    display: block;
    width: 100%;
    height: auto;
}
.sq-base::after {
    content: '';
    position: absolute;
    width: 80px;
    height: 80px;
    z-index: -1;
    border-radius: 2px;
}
.sq-bleu::after { background-color: var(--alp-bleu); }
.sq-or::after { background-color: var(--alp-or); }
.sq-bl::after { bottom: -30px; left: -30px; }
.sq-br::after { bottom: -30px; right: -30px; }
/* Ajustement spécifique photo Hero Résidence (légèrement plus que les autres) */
.elementor-element-8db1ecb.sq-br::after { bottom: -40px; right: -40px; }

/* ---------------------------------------------------------
   5. BOUTONS
   --------------------------------------------------------- */
.btn-premium-lhv {
    background: var(--alp-or);
    color: #FFFFFF !important;
    display: inline-block;
    padding: 18px 45px;
    border-radius: 50px;
    text-decoration: none !important;
    font-family: var(--font-titre);
    font-weight: 800;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: all 0.3s ease-in-out;
    box-shadow: 0 8px 15px rgba(226, 177, 90, 0.2);
    border: none;
}
.btn-premium-lhv:hover {
    transform: translateY(-5px);
    box-shadow: 0 12px 25px rgba(226, 177, 90, 0.4);
    background-color: #d4a048;
}
.lhv-gallery-btn {
    position: absolute;
    top: 30px;
    left: 30px;
    z-index: 10;
    background-color: #FFFFFF;
    color: var(--alp-bleu);
    padding: 12px 25px;
    border-radius: 4px;
    font-family: var(--font-corps);
    font-weight: 800;
    font-size: 11px;
    letter-spacing: 0.15em;
    text-decoration: none;
    box-shadow: 0 5px 15px rgba(0,0,0,0.1);
    transition: all 0.3s ease;
}
.lhv-gallery-btn:hover {
    background-color: var(--alp-bleu);
    color: #FFFFFF;
    transform: translateY(-2px);
}

/* ---------------------------------------------------------
   6. LISTES, SLASHES ET PICTOS
   --------------------------------------------------------- */
.liste-slash ul { list-style: none !important; padding: 0 !important; }
.liste-slash li {
    position: relative;
    padding-left: 25px !important;
    margin-bottom: 12px;
}
.liste-slash li::before {
    content: '/';
    position: absolute;
    left: 0;
    color: var(--alp-or);
    font-weight: 900;
}
.lhv-amenities-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}
.lhv-amenity-item {
    display: flex;
    align-items: center;
    gap: 15px;
}
.lhv-amenity-item svg {
    width: 22px;
    height: 22px;
    color: var(--alp-or);
    flex-shrink: 0;
}
.lhv-apt-list-grid {
    display: grid !important;
    grid-template-columns: 1fr 1.2fr !important;
    gap: 12px 20px !important;
    margin-bottom: 40px !important;
    max-width: 550px;
}
.lhv-apt-list-item {
    font-family: var(--font-corps) !important;
    font-size: 15px !important;
    color: #555 !important;
    display: flex !important;
    align-items: flex-start !important;
}
.lhv-apt-list-item::before {
    content: '/' !important;
    color: var(--alp-or) !important;
    font-weight: 900 !important;
    margin-right: 12px !important;
}

/* ---------------------------------------------------------
   7. BANDEAU DE MARQUE (haut de page)
   --------------------------------------------------------- */
.lhv-top-ribbon {
    background: linear-gradient(135deg, #004d75 0%, #005886 50%, #004d75 100%) !important;
    box-shadow: inset 0 -2px 5px rgba(0,0,0,0.2), 0 4px 10px rgba(0,0,0,0.1) !important;
    padding: 15px 0 !important;
    text-align: center !important;
    border-bottom: 2px solid var(--alp-or) !important;
}
.lhv-top-ribbon span {
    color: #FFFFFF !important;
    font-family: var(--font-corps) !important;
    font-size: 14px !important;
    letter-spacing: 1.5px !important;
    text-transform: uppercase;
}
.lhv-top-ribbon .date-or {
    color: var(--alp-or) !important;
    font-weight: 800 !important;
}
.lhv-brand-identity {
    padding: 30px 20px !important;
    text-align: center !important;
    background: transparent !important;
}
.lhv-brand-title {
    color: var(--alp-bleu) !important;
    font-family: var(--font-titre) !important;
    font-size: 48px !important;
    font-weight: 800 !important;
    margin: 0 !important;
    line-height: 1.1 !important;
}
.lhv-brand-stars {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin: 15px 0 !important;
}
.lhv-brand-stars svg {
    width: 28px;
    height: 28px;
    fill: var(--alp-or) !important;
    filter: drop-shadow(0 2px 3px rgba(0,0,0,0.2));
}
.lhv-brand-slogan {
    color: var(--alp-or) !important;
    font-family: var(--font-titre) !important;
    font-size: 19px !important;
    font-style: italic;
    font-weight: 500 !important;
    letter-spacing: 0.5px;
    margin: 0 !important;
}

/* ---------------------------------------------------------
   8. MODULES APPARTEMENTS
   (doublons supprimés : .lhv-apt-module, .lhv-apt-square,
   .lhv-apt-container, .lhv-apt-image-wrapper (+ img, hover)
   étaient chacun redéfinis deux fois — une seule version gardée)
   --------------------------------------------------------- */
.lhv-apt-module {
    position: relative;
    z-index: 1;
    margin-bottom: 30px;
}
.lhv-apt-square {
    position: absolute;
    width: 120px;
    height: 120px;
    background-color: var(--alp-bleu);
    bottom: -25px;
    left: -20px;
    z-index: -1;
    border-radius: 2px;
}
.square-right .lhv-apt-square {
    left: auto !important;
    right: -20px !important;
}
.lhv-apt-container {
    position: relative;
    border-radius: 4px;
    overflow: hidden;
    box-shadow: 0 20px 50px rgba(0,0,0,0.15);
    background: #fff;
    z-index: 2;
}
.lhv-apt-image-wrapper {
    width: 100%;
    height: 500px;
    overflow: hidden;
}
.lhv-apt-image-wrapper img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 1.2s cubic-bezier(0.15, 0.45, 0.35, 1);
}
.lhv-apt-module:hover .lhv-apt-image-wrapper img {
    transform: scale(1.1);
}
.lhv-apt-content-side {
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.lhv-apt-content-side:not(.text-left-side) {
    padding-left: 50px !important;
}
.text-left-side {
    padding-right: 50px !important;
    padding-left: 0 !important;
}

/* ---------------------------------------------------------
   9. ÉQUIPEMENTS
   (doublons supprimés : .lhv-equip-icon svg et .lhv-equip-text
   étaient chacun définis deux fois dans le fichier d'origine —
   la deuxième version, sans !important, ne s'appliquait jamais ;
   seule la première (gagnante) est gardée ici)
   --------------------------------------------------------- */
.lhv-equip-content {
    padding-left: 50px !important;
}
.lhv-equip-grid {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 12px 30px !important;
    margin-top: 30px !important;
}
.lhv-equip-item {
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
}
.lhv-equip-icon {
    width: 24px !important;
    height: 24px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex-shrink: 0 !important;
}
.lhv-equip-icon svg {
    width: 18px !important;
    height: 18px !important;
    fill: var(--alp-or) !important;
}
.lhv-equip-text {
    font-family: var(--font-corps) !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    color: var(--alp-bleu) !important;
    text-transform: uppercase !important;
    letter-spacing: 0.5px !important;
    line-height: 1 !important;
}
@media (max-width: 767px) {
    .lhv-equip-grid { grid-template-columns: 1fr; }
}

/* ---------------------------------------------------------
   10. CARTES SERVICES INTERACTIVES
   (doublons supprimés : .lhv-service-card, .lhv-service-card img,
   .lhv-service-overlay, .lhv-service-text-content, h3, h3::after,
   .description étaient chacun redéfinis une seconde fois —
   seule la version finale, celle qui s'affichait déjà, est gardée)
   --------------------------------------------------------- */
.lhv-services-grid-wrapper {
    display: flex !important;
    flex-wrap: nowrap !important;
    gap: 30px !important;
    width: 100% !important;
    margin-top: 40px;
}
.lhv-service-card-container {
    flex: 1 !important;
    position: relative;
    z-index: 1;
}
.lhv-service-card-container .bg-or {
    background-color: var(--alp-or) !important;
}
.lhv-service-card {
    position: relative;
    border-radius: 4px;
    overflow: hidden;
    cursor: pointer;
    height: 400px;
}
.lhv-service-card img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.8s ease;
}
.lhv-service-card:hover img {
    transform: scale(1.1);
}
.lhv-service-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top,
        rgba(0, 0, 0, 0.85) 0%,
        rgba(0, 0, 0, 0.3) 50%,
        transparent 100%);
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 25px;
    transition: all 0.4s ease;
}
.lhv-service-text-content {
    transform: translateY(35px);
    transition: transform 0.4s ease;
}
.lhv-service-card:hover .lhv-service-text-content {
    transform: translateY(0);
}
.lhv-service-card h3 {
    color: #FFFFFF !important;
    font-family: var(--font-titre) !important;
    font-size: 22px !important;
    font-weight: 800 !important;
    margin-bottom: 8px !important;
    display: flex;
    align-items: center;
    gap: 8px;
}
.lhv-service-card h3::after {
    content: '→';
    color: var(--alp-or);
    font-size: 16px;
    transition: 0.3s;
}
.lhv-service-card:hover h3::after {
    transform: translateX(5px);
}
.lhv-service-card .description {
    color: rgba(255,255,255,0.9) !important;
    font-family: var(--font-corps) !important;
    font-size: 13px !important;
    font-style: italic;
    opacity: 0;
    transition: opacity 0.4s ease;
    border-top: 1px solid rgba(226, 177, 90, 0.3);
    padding-top: 8px;
}
.lhv-service-card:hover .description {
    opacity: 1;
}

/* ---------------------------------------------------------
   11. PANNEAUX SUPERPOSÉS (services inclus, présentation image)
   --------------------------------------------------------- */
.lhv-layered-section {
    position: relative !important;
    max-width: 1200px !important;
    margin: 60px auto !important;
    padding: 40px 20px !important;
}
.lhv-image-group-fixed {
    position: relative !important;
    width: 75% !important;
    height: 550px !important;
    z-index: 1 !important;
}
.lhv-layered-image-wrap {
    width: 100% !important;
    height: 100% !important;
    border-radius: 4px !important;
    overflow: hidden !important;
    box-shadow: 0 20px 50px rgba(0,0,0,0.15) !important;
    position: relative !important;
    z-index: 2 !important;
}
.lhv-layered-image-wrap img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
}
.lhv-layered-square-fixed {
    position: absolute !important;
    width: 120px !important;
    height: 120px !important;
    background-color: var(--alp-bleu) !important;
    bottom: -30px !important;
    left: -30px !important;
    z-index: -1 !important;
}
.lhv-layered-panel-frosted {
    position: absolute !important;
    top: 50% !important;
    right: 0 !important;
    transform: translateY(-50%) !important;
    width: 55% !important;
    z-index: 10 !important;
    background: rgba(255, 255, 255, 0.55) !important;
    backdrop-filter: blur(15px) !important;
    -webkit-backdrop-filter: blur(15px) !important;
    border: 1px solid rgba(255, 255, 255, 0.4) !important;
    border-left: 8px solid var(--alp-or) !important;
    padding: 50px 40px !important;
    box-shadow: 0 30px 60px rgba(0,0,0,0.12) !important;
    border-radius: 4px !important;
}
.lhv-inclus-grid {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 30px !important;
}
.lhv-inclus-item {
    display: flex !important;
    gap: 15px !important;
}
.lhv-inclus-text h4 {
    color: #FFFFFF !important;
    font-weight: 900 !important;
    text-shadow: 0 2px 4px rgba(0,0,0,0.5) !important;
    margin: 0 0 4px 0 !important;
    text-transform: uppercase !important;
    font-size: 11px !important;
    letter-spacing: 1.2px !important;
}
.lhv-inclus-text p {
    color: rgba(255, 255, 255, 0.9) !important;
    font-size: 10px !important;
    font-style: italic !important;
    text-shadow: 0 1px 2px rgba(0,0,0,0.5) !important;
    margin: 0 !important;
}
.lhv-inclus-icon svg {
    fill: var(--alp-or) !important;
    width: 20px !important;
    height: 20px !important;
    filter: drop-shadow(0 2px 3px rgba(0,0,0,0.2)) !important;
}
@media (max-width: 1024px) {
    .lhv-image-group-fixed { width: 100% !important; height: 400px !important; }
    .lhv-layered-panel-frosted {
        position: relative !important;
        width: 95% !important;
        margin: -80px auto 0 auto !important;
        transform: none !important;
        top: 0 !important;
    }
}

/* ---------------------------------------------------------
   12. PACK CONFORT & OPTIONS
   --------------------------------------------------------- */
.lhv-pack-card {
    background: #ffffff;
    border-radius: 4px;
    overflow: hidden;
    display: flex;
    box-shadow: 0 20px 60px rgba(0, 88, 134, 0.1);
    margin-bottom: 42px;
    border: 1px solid #f0f0f0;
}
.lhv-pack-image {
    width: 45%;
    position: relative;
}
.lhv-pack-image img {
    width: 100%; height: 100%; object-fit: cover;
}
.lhv-pack-content {
    width: 55%;
    padding: 50px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.lhv-options-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 40px;
}
.lhv-option-card {
    position: relative;
    background: #ffffff;
    height: 380px;
    border-radius: 4px;
    overflow: hidden;
    box-shadow: 0 10px 30px rgba(0,0,0,0.05);
    transition: all 0.4s ease;
}
.lhv-option-drawer {
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 100px;
    background: #ffffff;
    padding: 20px;
    transition: height 0.5s cubic-bezier(0.165, 0.84, 0.44, 1);
    display: flex;
    flex-direction: column;
    border-top: 1px solid #f0f0f0;
}
.lhv-option-card:hover .lhv-option-drawer {
    height: 180px;
}
.lhv-gold-tag {
    position: absolute;
    top: 20px;
    left: 20px;
    background: var(--alp-or);
    color: white;
    padding: 6px 15px;
    font-size: 9px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 2px;
    z-index: 5;
}
.lhv-option-title {
    color: var(--alp-bleu);
    font-family: var(--font-corps);
    font-weight: 800;
    text-transform: uppercase;
    font-size: 13px;
    letter-spacing: 1px;
    margin-bottom: 10px;
}
.lhv-option-details {
    opacity: 0;
    transition: opacity 0.3s ease;
    font-size: 12px;
    font-style: italic;
    color: #666;
}
.lhv-option-card:hover .lhv-option-details {
    opacity: 1;
}
.lhv-option-price {
    margin-top: auto;
    color: var(--alp-or);
    font-weight: 800;
    font-size: 16px;
}

/* ---------------------------------------------------------
   13. MODULE SKI & GAIN DE TEMPS
   --------------------------------------------------------- */
.lhv-ski-section {
    position: relative !important;
    max-width: 1200px !important;
    margin: 100px auto !important;
    padding: 0 20px !important;
}
.lhv-ski-image-group {
    position: relative !important;
    width: 85% !important;
    margin-left: auto !important;
    height: 600px !important;
    z-index: 1 !important;
}
.lhv-ski-image-wrap {
    width: 100% !important;
    height: 100% !important;
    border-radius: 4px !important;
    overflow: hidden !important;
    box-shadow: 0 20px 50px rgba(0,0,0,0.1) !important;
}
.lhv-tag-gold {
    position: absolute !important;
    top: 30px !important;
    right: 30px !important;
    background: var(--alp-or) !important;
    color: white !important;
    padding: 8px 18px !important;
    font-size: 10px !important;
    font-weight: 800 !important;
    text-transform: uppercase !important;
    letter-spacing: 2px !important;
    z-index: 5 !important;
    border-radius: 2px !important;
}
.lhv-ski-info-box {
    position: absolute !important;
    top: 50% !important;
    left: 0 !important;
    transform: translateY(-50%) !important;
    width: 50% !important;
    background: #FFFFFF !important;
    padding: 50px !important;
    z-index: 10 !important;
    box-shadow: 0 30px 60px rgba(0,0,0,0.08) !important;
    border-radius: 4px !important;
}
.lhv-ski-cta-box {
    position: absolute !important;
    bottom: -30px !important;
    right: 0 !important;
    width: 40% !important;
    background: var(--alp-bleu) !important;
    padding: 40px !important;
    z-index: 15 !important;
    box-shadow: 0 20px 40px rgba(0,88,134,0.3) !important;
    border-radius: 4px !important;
}
.lhv-ski-cta-box p {
    color: #FFFFFF !important;
    font-size: 13px !important;
    font-style: italic !important;
    line-height: 1.6 !important;
    margin-bottom: 25px !important;
}
.lhv-ski-cta-box strong {
    color: var(--alp-or) !important;
}
@media (max-width: 1024px) {
    .lhv-ski-image-group { width: 100% !important; height: 400px !important; }
    .lhv-ski-info-box { position: relative !important; width: 100% !important; transform: none !important; margin-top: -50px !important; top: 0 !important; }
    .lhv-ski-cta-box { position: relative !important; width: 100% !important; bottom: 0 !important; margin-top: 20px !important; }
}

/* ---------------------------------------------------------
   14. HERO HEADER UNIVERSEL
   (23/09 : overflow-x passe de "hidden" à "clip". Avec "hidden",
   le navigateur transformait overflow-y: visible en "auto", ce
   qui coupait le trait DÉCOUVRIR au bas de la photo. "clip" coupe
   toujours le débordement horizontal sans toucher à l'axe vertical.)
   --------------------------------------------------------- */
.lhv-hero-section {
    position: relative;
    height: 70vh;
    min-height: 500px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: #FFFFFF;
    overflow-x: clip;
    overflow-y: visible;
    background-color: #000;
}
/* Les conteneurs/widgets Elementor qui contiennent le trait
   doivent eux aussi le laisser dépasser (valable aussi pour le
   widget séparé de la page Résidence). */
.elementor-element:has(.lhv-hero-scroll),
.elementor-element:has(.lhv-hero-scroll) > .elementor-widget-container {
    overflow: visible !important;
}
.lhv-hero-scroll {
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translate(-50%, 35px);
    z-index: 8;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    pointer-events: none;
}
.lhv-hero-scroll span {
    font-family: var(--font-corps);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 2px;
    color: #FFFFFF;
}
/* Trait de 70px centré pile sur le bas de la photo (le bloc est
   décalé de 35px vers le bas) : moitié haute blanche sur la photo,
   moitié basse noire sur le fond blanc. Dégradé net plutôt que
   mix-blend-mode, qui ne fonctionnait pas ici (le z-index et le
   transform du bloc isolent le trait de ce qu'il y a derrière). */
.lhv-hero-scroll .lhv-hero-scroll-line {
    width: 1px;
    height: 70px;
    background: linear-gradient(to bottom, #FFFFFF 50%, #1a1a1a 50%);
}
.lhv-hero-bg {
    position: absolute;
    inset: 0;
    z-index: 1;
}
.lhv-hero-bg img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0.85;
}
.lhv-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to bottom, rgba(0,0,0,0.1), rgba(0,0,0,0.4));
    z-index: 2;
}
.lhv-hero-content {
    position: relative;
    z-index: 10;
    max-width: 900px;
    padding: 0 20px;
}
.lhv-hero-stars {
    color: var(--alp-or);
    font-size: 20px;
    letter-spacing: 5px;
    margin-bottom: 20px;
}
.lhv-hero-title {
    font-family: var(--font-titre) !important;
    font-style: italic;
    font-weight: 400;
    font-size: clamp(32px, 5vw, 60px);
    line-height: 1.1;
    margin-bottom: 10px !important;
}
.lhv-hero-subtitle {
    font-family: var(--font-corps) !important;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 4px;
    font-size: clamp(14px, 2vw, 24px);
    margin-bottom: 30px !important;
}
.lhv-hero-desc {
    font-family: var(--font-corps) !important;
    font-size: 14px;
    font-style: italic;
    max-width: 600px;
    margin: 0 auto !important;
    opacity: 0.9;
    line-height: 1.6;
}

/* ---------------------------------------------------------
   16. CARTES SUBTILES & TITRE BICOLORE (variante récente)
   (trouvées collées à l'identique en CSS personnalisé sur les
   pages Résidence, Appartements et Services — remontées ici
   pour n'exister qu'à un seul endroit. .btn-premium-lhv était
   déjà présent ci-dessus, à l'identique : pas remis en double.
   À noter pour la suite : c'est un 3e système de carré déco
   (après .sq-* et .lhv-apt-square) et un 3e système de titre
   bicolore (après .lhv-assets-main-title et .lhv-apt-header-detail)
   — à consolider en un seul lors de la conversion des pages.)
   --------------------------------------------------------- */
.lhv-card-wrapper::after {
    content: '';
    position: absolute;
    width: 70px;
    height: 70px;
    background-color: #E2B15A;
    bottom: -21px;
    right: -21px;
    z-index: -1;
    border-radius: 2px;
    transition: background-color 0.4s ease;
}
.lhv-card-wrapper:hover::after {
    background-color: #005886;
}
.lhv-card-main {
    background: #FFFFFF;
    border-radius: 4px;
    box-shadow: 0 12px 30px rgba(0,0,0,0.06);
    transition: transform 0.4s ease;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    height: 100%;
}
.lhv-card-wrapper:hover .lhv-card-main {
    transform: translateY(-10px);
}
.lhv-img-box { position: relative; height: 250px; overflow: hidden; }
.lhv-img-box img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s ease; }
.lhv-card-wrapper:hover .lhv-img-box img { transform: scale(1.1); }
.lhv-badge {
    position: absolute !important;
    top: 15px !important;
    left: 15px !important;
    background-color: #005886;
    color: #FFFFFF;
    padding: 7px 18px;
    font-family: 'Atkinson Hyperlegible', sans-serif;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    z-index: 5 !important;
    border-radius: 50px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.15);
}
.lhv-bloc-titre {
    line-height: 1.2;
    margin-bottom: 30px;
}
.lhv-bloc-titre .ligne-bleue {
    display: inline-block;
    color: #005886;
    font-family: 'Fraunces', serif;
    font-size: 40px;
    font-weight: 600;
    letter-spacing: -0.01em;
    text-transform: none;
}
.lhv-bloc-titre .ligne-or {
    display: inline-block;
    color: #E2B15A;
    font-family: 'Atkinson Hyperlegible', sans-serif;
    font-size: 25px;
    font-weight: 500;
    letter-spacing: 0em;
    text-transform: uppercase;
    margin-top: 5px;
}

/* ---------------------------------------------------------
   18. APERÇU PHOTOS AU SURVOL (œil + "Voir les photos")
   Remplace l'ancien bouton texte .lhv-gallery-btn sur les
   modules appartements — déclenche le même pop-up Elementor,
   juste présenté comme un aperçu discret au survol de la photo.
   --------------------------------------------------------- */
.lhv-photo-preview-link {
    display: block;
    position: relative;
    text-decoration: none;
    cursor: pointer;
}
.lhv-photo-preview-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0, 40, 60, 0);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    opacity: 0;
    transition: all 0.35s ease;
    color: #FFFFFF;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    font-size: 12px;
    font-weight: 700;
    font-family: var(--font-corps);
}
.lhv-photo-preview-link:hover .lhv-photo-preview-overlay {
    background: rgba(0, 40, 60, 0.55);
    opacity: 1;
}
.lhv-photo-preview-eye {
    width: 34px;
    height: 34px;
    transform: scale(0.8);
    transition: transform 0.35s ease;
}
.lhv-photo-preview-link:hover .lhv-photo-preview-eye {
    transform: scale(1);
}

/* ---------------------------------------------------------
   19. OPTIONS EN BANDE HORIZONTALE (compact, scrollable)
   Remplace les 4 grilles de 3 cartes empilées par une seule
   bande scrollable de petites cartes — moins lourd visuellement.
   --------------------------------------------------------- */
.lhv-options-scroll {
    display: flex;
    gap: 16px;
    overflow-x: auto;
    padding: 6px 4px 22px 4px;
    scroll-snap-type: x proximity;
    -webkit-overflow-scrolling: touch;
}
.lhv-options-scroll::-webkit-scrollbar { height: 6px; }
.lhv-options-scroll::-webkit-scrollbar-thumb { background: var(--alp-or); border-radius: 10px; }
.lhv-options-scroll::-webkit-scrollbar-track { background: #f0ece4; border-radius: 10px; }
.lhv-mini-option-card {
    flex: 0 0 220px;
    scroll-snap-align: start;
    position: relative;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 8px 20px rgba(0,0,0,0.07);
    background: #fff;
    transition: transform 0.3s ease;
}
.lhv-mini-option-card:hover { transform: translateY(-4px); }
.lhv-mini-option-card img { width: 100%; height: 140px; object-fit: cover; display: block; }
.lhv-mini-option-tag {
    position: absolute;
    top: 10px;
    left: 10px;
    background: rgba(255,255,255,0.92);
    color: var(--alp-bleu);
    font-family: var(--font-corps);
    font-size: 9px;
    font-weight: 800;
    letter-spacing: 1px;
    text-transform: uppercase;
    padding: 4px 10px;
    border-radius: 2px;
}
.lhv-mini-option-body { padding: 14px 14px 16px; }
.lhv-mini-option-title {
    display: block;
    font-family: var(--font-corps);
    font-weight: 800;
    font-size: 13px;
    color: var(--alp-bleu);
    margin-bottom: 4px;
}
.lhv-mini-option-desc {
    font-family: var(--font-corps);
    font-size: 11.5px;
    color: #777;
    line-height: 1.4;
    margin-bottom: 8px;
    display: block;
}
.lhv-mini-option-price {
    font-family: var(--font-corps);
    font-weight: 800;
    font-size: 13px;
    color: var(--alp-or);
}
.lhv-mini-option-price small {
    font-weight: 500;
    color: #999;
    font-size: 10px;
}

/* ---------------------------------------------------------
   20. ONGLETS (groupes de contenu cliquables)
   --------------------------------------------------------- */
.lhv-activity-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 34px;
    margin: 25px 0 0 20px;
    border-bottom: 1px solid #e5e0d8;
    padding-bottom: 0;
}
.lhv-tab-btn {
    background: none !important;
    border: none !important;
    border-bottom: 2px solid transparent !important;
    color: #999 !important;
    font-family: var(--font-corps);
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 1px;
    text-transform: uppercase;
    padding: 0 0 14px 0;
    cursor: pointer;
    transition: all 0.25s ease;
    outline: none !important;
}
.lhv-tab-btn:hover {
    color: var(--alp-bleu) !important;
}
.lhv-tab-btn.active {
    color: var(--alp-bleu) !important;
    border-bottom-color: var(--alp-or) !important;
}
.lhv-tab-panel {
    display: none;
    animation: lhv-fade-in 0.3s ease;
    max-width: 1140px;
    margin-left: 20px;
    padding-top: 30px;
}
.lhv-tab-panel.active {
    display: block;
}
.lhv-tab-banner-wrap {
    width: 100%;
    max-width: 1140px;
    height: 260px;
    border-radius: 4px;
    overflow: hidden;
    margin: 0 0 20px 0;
    box-shadow: 0 10px 25px rgba(0,0,0,0.08);
}
.lhv-tab-banner {
    width: 100% !important;
    height: 100% !important;
    max-width: none !important;
    object-fit: cover !important;
    display: block !important;
}
@keyframes lhv-fade-in {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: translateY(0); }
}

/* ---------------------------------------------------------
   21. BLOCS COMMERCES (3 colonnes)
   --------------------------------------------------------- */
.lhv-commerce-block {
    background: #FFFFFF;
    border-radius: 4px;
    box-shadow: 0 10px 25px rgba(0,0,0,0.05);
    border-top: 4px solid var(--alp-or);
    overflow: hidden;
}
.lhv-commerce-img {
    width: 100% !important;
    height: 160px !important;
    object-fit: cover !important;
    object-position: center !important;
    display: block !important;
}
.lhv-commerce-body {
    padding: 22px 24px 28px 24px;
}
.lhv-commerce-title {
    font-family: var(--font-titre);
    color: var(--alp-bleu);
    font-size: 18px;
    font-weight: 700;
    margin: 0 0 18px 0;
}
.lhv-commerce-title span {
    font-family: var(--font-corps);
    font-size: 12px;
    font-weight: 400;
    color: #999;
    display: block;
    margin-top: 2px;
}
.lhv-commerce-block .lhv-apt-list-item {
    margin-bottom: 10px;
}

/* ---------------------------------------------------------
   22. GRAND CARROUSEL "PILULE" (style CGH-résidences)
   --------------------------------------------------------- */
.lhv-slide-wrap {
    position: relative;
}
.lhv-slide-track {
    display: flex;
    gap: 20px;
    overflow-x: auto;
    scroll-behavior: smooth;
    -ms-overflow-style: none;
    scrollbar-width: none;
    padding: 4px 0 4px max(20px, calc((100vw - 1200px) / 2));
}
.lhv-slide-track::-webkit-scrollbar { display: none; }
.lhv-slide-item {
    flex: 0 0 22%;
    min-width: 220px;
}
.lhv-slide-item img {
    width: 100%;
    height: 340px;
    object-fit: cover;
    display: block;
}
.lhv-slide-body { padding-top: 16px; }
.lhv-slide-tag {
    display: block;
    font-family: var(--font-corps);
    font-size: 10px;
    font-weight: 800;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--alp-or);
    margin-bottom: 6px;
}
.lhv-slide-title {
    display: block;
    font-family: var(--font-titre);
    font-weight: 700;
    font-size: 19px;
    color: var(--alp-bleu);
    margin-bottom: 8px;
}
.lhv-slide-desc {
    display: block;
    font-family: var(--font-corps);
    font-size: 13px;
    color: #777;
    line-height: 1.5;
    margin-bottom: 10px;
}
.lhv-slide-price {
    display: block;
    font-family: var(--font-corps);
    font-weight: 800;
    font-size: 14px;
    color: var(--alp-bleu);
}
.lhv-slide-price small {
    font-weight: 500;
    color: #999;
    font-size: 11px;
}
.lhv-slide-pill {
    position: absolute;
    top: 150px;
    left: 50%;
    transform: translateX(-50%);
    background: #FFFFFF;
    border-radius: 50px;
    box-shadow: 0 10px 25px rgba(0,0,0,0.18);
    display: flex;
    align-items: center;
    z-index: 6;
    opacity: 0;
    transition: opacity 0.25s ease;
    pointer-events: none;
}
.lhv-slide-wrap:hover .lhv-slide-pill {
    opacity: 1;
    pointer-events: auto;
}
.lhv-slide-pill button {
    background: none !important;
    border: none !important;
    border-radius: 50% !important;
    width: 52px;
    height: 52px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--alp-bleu) !important;
    outline: none !important;
    appearance: none !important;
}
.lhv-slide-pill button:hover,
.lhv-slide-pill button:focus,
.lhv-slide-pill button:active {
    background: var(--alp-bleu) !important;
    color: #FFFFFF !important;
    border-radius: 50% !important;
}
.lhv-slide-pill button svg { width: 18px; height: 18px; }
.lhv-slide-pill .divider { width: 1px; height: 24px; background: #eee; }

.lhv-slide-track.inline {
    padding: 4px 0;
    gap: 16px;
}
.lhv-slide-track.inline .lhv-slide-item {
    flex: 0 0 230px;
    min-width: 0;
}
.lhv-slide-track.inline .lhv-slide-item img {
    height: 310px;
}
.lhv-slide-wrap.inline .lhv-slide-pill {
    top: 135px;
}

@media (max-width: 900px) {
    .lhv-slide-item { flex: 0 0 70%; }
}

/* ---------------------------------------------------------
   17. RESPONSIVE GÉNÉRAL
   --------------------------------------------------------- */
@media (max-width: 768px) {
    .lhv-intro-text, .lhv-presentation-block p, .lhv-atouts-intro {
        text-align: left !important;
        font-size: 16px !important;
    }
    .lhv-assets-main-title { font-size: 26px; }
    .lhv-amenities-grid { grid-template-columns: 1fr; }
}

/* ---------------------------------------------------------
   23. GALERIES SOURCES CACHÉES — visionneuse premium appartements
   Conteneur invisible (page Appartements) qui héberge les 3 widgets
   Gallery natifs (2P4 / 3P6 / 4P8) servant uniquement de réservoir
   de photos au Lightbox natif Elementor, déclenché directement par
   "VOIR LES PHOTOS" (bande de miniatures ajoutée par un script dédié
   dans ce même conteneur, sans toucher aux autres lightbox du site).
   --------------------------------------------------------- */
.lhv-gallery-sources,
#lhv-gallery-sources {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    left: -9999px !important;
    top: auto !important;
    opacity: 0.001 !important;
    pointer-events: none !important;
}

/* Légende (titre/description du média) masquée uniquement dans la
   visionneuse appartements. .lhv-lightbox-active est posée par le
   script du widget f2dc318 seulement quand la visionneuse est ouverte
   via [data-lhv-gallery] — aucune autre lightbox du site n'est touchée.
   Classes réelles vérifiées dans le code d'Elementor (assets/js/
   lightbox.*.bundle.js) : le footer ne contient que le titre et la
   description, jamais le compteur ni les flèches (qui sont dans le
   header, non touché ici). */
.elementor-lightbox.lhv-lightbox-active .elementor-slideshow__footer {
    display: none !important;
}

/* ---------------------------------------------------------
   24. APPARITIONS AU SCROLL — page Appartements (léger, premium)
   Système générique : .lhv-reveal part masqué + légèrement décalé
   (distance et délai réglés par variable CSS par élément), puis
   passe à .lhv-reveal-visible (ajoutée une seule fois, en JS, par
   IntersectionObserver ou au chargement pour le Hero). Durée et
   courbe reprises de .lhv-option-drawer (section 12) pour rester
   cohérent avec les transitions déjà utilisées sur le site.
   --------------------------------------------------------- */
.lhv-reveal {
    opacity: 0;
    transform: translate(var(--lhv-reveal-x, 0), var(--lhv-reveal-y, 0));
    transition: opacity 0.8s cubic-bezier(0.165, 0.84, 0.44, 1),
                transform 0.8s cubic-bezier(0.165, 0.84, 0.44, 1);
    transition-delay: var(--lhv-reveal-delay, 0s);
    will-change: opacity, transform;
}
.lhv-reveal.lhv-reveal-visible {
    opacity: 1;
    transform: translate(0, 0);
}
@media (prefers-reduced-motion: reduce) {
    .lhv-reveal {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}

/* ---------------------------------------------------------
   25. PRESTATIONS INCLUSES — photo panoramique + carte opaque
   (page Services). Remplace le glassmorphism de .lhv-layered-*
   pour cette section uniquement ; .lhv-layered-* reste inchangé
   et disponible ailleurs si besoin (non utilisé nulle part d'autre
   à ce jour, vérifié : uniquement des révisions de cette page).
   --------------------------------------------------------- */
.lhv-incl-section {
    position: relative;
    max-width: 1200px;
    margin: 85px auto 140px auto;
    padding: 0 20px;
}
.lhv-incl-visual {
    position: relative;
    overflow: visible;
}
.lhv-incl-photo-wrap {
    position: relative;
    width: 100%;
    border-radius: 8px;
    overflow: hidden;
    aspect-ratio: 2.6 / 1;
}
.lhv-incl-photo-wrap img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: cover;
    object-position: center 25%;
}
.lhv-incl-card {
    position: absolute;
    left: 4%;
    right: 4%;
    top: 100%;
    transform: translateY(-50%);
    background: var(--alp-beige);
    border-left: 4px solid var(--alp-or);
    border-radius: 4px;
    box-shadow: 0 25px 60px rgba(0,0,0,0.12);
    padding: 32px 30px;
    z-index: 5;
}
.lhv-incl-card-inner {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
}
.lhv-incl-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 0 16px;
    position: relative;
}
.lhv-incl-item:not(:last-child)::after {
    content: '';
    position: absolute;
    right: 0;
    top: 2px;
    bottom: 2px;
    width: 1px;
    background: rgba(0, 0, 0, 0.08);
}
.lhv-incl-icon svg {
    width: 28px;
    height: 28px;
    flex-shrink: 0;
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.lhv-incl-icon svg * {
    stroke: var(--alp-or);
    stroke-width: 1.6;
}
.lhv-incl-title {
    color: var(--alp-bleu);
    font-family: var(--font-corps);
    font-weight: 700;
    font-size: 13.5px;
    margin-bottom: 3px;
    line-height: 1.3;
}
.lhv-incl-desc {
    color: #888;
    font-family: var(--font-corps);
    font-size: 12px;
    line-height: 1.4;
}
@media (max-width: 1024px) {
    .lhv-incl-section { margin-bottom: 40px; }
    .lhv-incl-photo-wrap { aspect-ratio: 16 / 9; }
    .lhv-incl-card {
        position: static;
        left: auto;
        right: auto;
        bottom: auto;
        width: 94%;
        margin: -50px auto 0 auto;
    }
    .lhv-incl-card-inner {
        grid-template-columns: repeat(3, 1fr);
        row-gap: 22px;
    }
    .lhv-incl-item:not(:last-child)::after { display: none; }
    .lhv-incl-item {
        padding: 0 14px 16px 14px;
        border-bottom: 1px solid rgba(0, 0, 0, 0.08);
    }
}
@media (max-width: 767px) {
    .lhv-incl-photo-wrap { aspect-ratio: 4 / 3; }
    .lhv-incl-card {
        width: 92%;
        margin-top: -30px;
        padding: 24px 22px;
    }
    .lhv-incl-card-inner {
        grid-template-columns: 1fr;
        row-gap: 16px;
    }
    .lhv-incl-item {
        padding: 0 0 14px 0;
    }
}/* End custom CSS */