
    :root { --aw-anim: .25s cubic-bezier(.2,.7,.3,1); }

    /* Socle commun : tout ce qui porte une icone devient animable. */
    html body .elementor-icon,
    html body .elementor-icon i,
    html body .elementor-icon svg,
    html body .elementor-social-icon,
    html body .elementor-icon-list-icon i,
    html body .elementor-icon-list-icon svg,
    html body .elementor-icon-box-icon .elementor-icon,
    html body .rs-contact-box i,
    html body .rs-contact-box svg,
    html body .rs-contact-box .icon,
    html body .address-item i,
    html body .address-item svg,
    html body .address-item .icon,
    html body .elementor-button-icon i,
    html body .elementor-button-icon svg,
    html body .elementor-button .elementor-align-icon i,
    html body .elementor-button .elementor-align-icon svg,
    html body footer .elementor-icon,
    html body footer .elementor-social-icon {
        transition: transform var(--aw-anim), color var(--aw-anim),
                    background-color var(--aw-anim), box-shadow var(--aw-anim),
                    filter var(--aw-anim) !important;
        will-change: transform;
    }

    /* Icone seule : elle grossit et se souleve. */
    html body .elementor-icon:hover,
    html body a:hover > .elementor-icon,
    html body .elementor-widget:hover > .elementor-widget-container > .elementor-icon-wrapper .elementor-icon {
        transform: translateY(-2px) scale(1.12);
    }

    /* Reseaux sociaux : grossissement plus net et petite bascule. */
    html body .elementor-social-icon:hover,
    html body .elementor-social-icon:focus-visible {
        transform: translateY(-3px) scale(1.14) rotate(-6deg);
        box-shadow: 0 6px 16px rgba(0, 0, 0, .18);
    }

    /* Boites a icone (services, atouts...) : l icone reagit au survol de
       la carte entiere, pas seulement de l icone. */
    html body .elementor-widget-icon-box:hover .elementor-icon,
    html body .elementor-widget-image-box:hover .elementor-icon,
    html body .elementor-icon-box-wrapper:hover .elementor-icon {
        transform: translateY(-3px) scale(1.14);
    }

    /* Coordonnees du pied de page : l icone pulse au survol du bloc. */
    html body .rs-contact-box:hover i,
    html body .rs-contact-box:hover svg,
    html body .address-item:hover i,
    html body .address-item:hover svg,
    html body .address-item:hover .icon {
        transform: translateY(-2px) scale(1.16);
    }

    /* Listes a puces : la puce avance legerement. */
    html body .elementor-icon-list-item:hover .elementor-icon-list-icon i,
    html body .elementor-icon-list-item:hover .elementor-icon-list-icon svg {
        transform: translateX(3px) scale(1.12);
    }

    /* Boutons : l icone glisse dans le sens de la lecture. */
    html body .elementor-button:hover .elementor-button-icon i,
    html body .elementor-button:hover .elementor-button-icon svg,
    html body .elementor-button:hover .elementor-align-icon-right i,
    html body .elementor-button:hover .elementor-align-icon-right svg {
        transform: translateX(4px);
    }
    html body .elementor-button:hover .elementor-align-icon-left i,
    html body .elementor-button:hover .elementor-align-icon-left svg {
        transform: translateX(-4px);
    }

    /* Fleche des questions frequentes. */
    html body .accordion-button::after,
    html body .accordion-button i,
    html body .accordion-button svg {
        transition: transform var(--aw-anim) !important;
    }
    html body .accordion-button:hover::after,
    html body .accordion-button:hover i,
    html body .accordion-button:hover svg {
        transform: scale(1.18);
    }

    /* Fleches des carrousels et des diaporamas. */
    html body .swiper-button-next,
    html body .swiper-button-prev,
    html body .elementor-swiper-button,
    html body .slick-arrow {
        transition: transform var(--aw-anim), background-color var(--aw-anim), box-shadow var(--aw-anim) !important;
    }
    html body .swiper-button-next:hover,
    html body .swiper-button-prev:hover,
    html body .elementor-swiper-button:hover,
    html body .slick-arrow:hover {
        transform: scale(1.14);
    }

    /* Ecrans tactiles : le retour se fait a l appui, puisqu il n y a pas de survol. */
    @media (hover: none) {
        html body .elementor-icon:active,
        html body .elementor-social-icon:active,
        html body .rs-contact-box:active i,
        html body .address-item:active i,
        html body .swiper-button-next:active,
        html body .swiper-button-prev:active,
        html body .elementor-swiper-button:active,
        html body .slick-arrow:active {
            transform: scale(.9) !important;
        }
    }

    /* Respect du reglage systeme "reduire les animations". */
    @media (prefers-reduced-motion: reduce) {
        html body .elementor-icon,
        html body .elementor-social-icon,
        html body .rs-contact-box i,
        html body .address-item i,
        html body .swiper-button-next,
        html body .swiper-button-prev,
        html body .elementor-swiper-button,
        html body .slick-arrow {
            transition: none !important;
            transform: none !important;
        }
    }
    

    /* ---------- Titre du formulaire ---------- */
    html body .awf-titre {
        font-family: "Poppins", sans-serif !important;
        font-size: 30px !important;
        font-weight: 800 !important;
        line-height: 1.2 !important;
        color: #00532A !important;
        letter-spacing: -.01em !important;
        margin: 0 0 4px !important;
        padding: 0 !important;
    }

    /* ---------- Bandeaux de section ----------
       Blanc sur vert Africana : contraste mesure 6,4:1, au-dessus du seuil AA.
       La mention entre parentheses devient une seconde ligne dans le bandeau,
       et non plus un encadre jaune independant deux fois plus haut que le titre. */
    html body .awf-bloc {
        display: block !important;
        background: linear-gradient(135deg, #00693A 0%, #3E9134 100%) !important;
        border-radius: 14px !important;
        padding: 14px 20px !important;
        margin: 30px 0 16px !important;
        box-shadow: 0 6px 18px rgba(0, 83, 42, .16) !important;
    }
    html body .awf-bloc .awf-bloc-t {
        display: block !important;
        font-family: "Poppins", sans-serif !important;
        font-size: 19px !important;
        font-weight: 700 !important;
        line-height: 1.3 !important;
        color: #FFFFFF !important;
    }
    html body .awf-bloc .awf-bloc-s {
        display: block !important;
        font-family: "Poppins", sans-serif !important;
        font-size: 13.5px !important;
        font-weight: 500 !important;
        line-height: 1.4 !important;
        color: rgba(255, 255, 255, .88) !important;
        margin-top: 4px !important;
    }

    /* ---------- Sous-titre "Nombre total de :" ---------- */
    html body .awf-sous {
        font-family: "Poppins", sans-serif !important;
        font-size: 15px !important;
        font-weight: 700 !important;
        color: #00532A !important;
        margin: 4px 0 2px !important;
        padding: 0 !important;
    }

    /* ---------- Etiquette NOTE ----------
       C est une etiquette, pas un bouton : hauteur ramenee de 80 px a 26 px. */
    html body .awf-note-badge {
        display: inline-block !important;
        background: #3E9134 !important;
        color: #FFFFFF !important;
        font-family: "Poppins", sans-serif !important;
        font-size: 11.5px !important;
        font-weight: 700 !important;
        line-height: 1 !important;
        letter-spacing: .10em !important;
        text-transform: uppercase !important;
        padding: 7px 15px !important;
        border-radius: 999px !important;
        margin: 6px 0 0 !important;
        width: auto !important;
        height: auto !important;
        box-shadow: none !important;
    }
    html body .awf-note {
        display: block !important;
        background: #FFFBEA !important;
        border: 1px solid #F0E2A0 !important;
        border-left: 4px solid #F5D90A !important;
        border-radius: 12px !important;
        padding: 14px 18px !important;
        margin: 8px 0 4px !important;
        font-family: "Poppins", sans-serif !important;
        font-size: 14.5px !important;
        font-weight: 500 !important;
        line-height: 1.55 !important;
        color: #4A3E0C !important;
    }

    /* ---------- Etiquettes de champ ---------- */
    html body .frm_form_field > label.frm_primary_label {
        font-family: "Poppins", sans-serif !important;
        font-size: 14px !important;
        font-weight: 600 !important;
        color: #10231A !important;
        margin-bottom: 6px !important;
    }
    html body .frm_required { color: #CE1126 !important; font-weight: 700 !important; }

    /* ---------- Bouton d envoi ----------
       MESURE : le bouton faisait 54 px de haut pour un libelle de 15 px, sans
       marge haute ; il touchait la note. Il etait de plus cale a gauche de sa
       colonne, et le libelle n etait pas centre verticalement : une hauteur fixe
       de 48 px avec line-height egal ne tient pas quand le texte passe sur deux
       lignes, ce qui arrive avec le libelle long "Envoyer mon formulaire de
       reservation" en dessous de 430 px.
       On centre donc le bouton dans sa colonne (flex sur .frm_submit) et le
       libelle dans le bouton (inline-flex + align-items/justify-content), avec
       une hauteur minimale plutot qu une hauteur figee. */
    html body .frm_submit {
        display: flex !important;
        align-items: center !important;
        justify-content: center !important;
        width: 100% !important;
        text-align: center !important;
        margin-top: 26px !important;
    }
    html body .frm_form_field .frm_button_submit,
    html body .frm_submit button,
    html body .frm_submit input[type="submit"] {
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        text-align: center !important;
        height: auto !important;
        min-height: 52px !important;
        padding: 14px 34px !important;
        border: 0 !important;
        border-radius: 999px !important;
        background: #3E9134 !important;
        color: #FFFFFF !important;
        font-family: "Poppins", sans-serif !important;
        font-size: 15px !important;
        font-weight: 700 !important;
        line-height: 1.25 !important;
        margin: 0 auto !important;
        float: none !important;
        /* Sans cette contrainte, le bouton est etire par le conteneur flex :
           il occupe toute la largeur et parait cale a gauche. Il doit se limiter
           a son contenu pour etre reellement centre. */
        width: auto !important;
        max-width: 100% !important;
        flex: 0 0 auto !important;
        align-self: center !important;
        box-shadow: 0 8px 20px rgba(0, 133, 63, .22) !important;
        transition: background .2s ease, transform .15s ease, box-shadow .2s ease !important;
    }
    html body .frm_submit button:hover,
    html body .frm_submit input[type="submit"]:hover {
        background: #00532A !important;
        transform: translateY(-1px) !important;
        box-shadow: 0 10px 24px rgba(0, 83, 42, .28) !important;
    }

    /* ---------- Tablette et telephone ---------- */
    @media (max-width: 1024px) {
        html body .awf-titre { font-size: 26px !important; }
        html body .awf-bloc { padding: 13px 17px !important; margin: 26px 0 14px !important; }
        html body .awf-bloc .awf-bloc-t { font-size: 17.5px !important; }
    }
    @media (max-width: 767px) {
        html body .awf-titre { font-size: 22px !important; }
        html body .awf-bloc { padding: 12px 15px !important; border-radius: 12px !important; margin: 22px 0 12px !important; }
        html body .awf-bloc .awf-bloc-t { font-size: 16px !important; }
        html body .awf-bloc .awf-bloc-s { font-size: 12.5px !important; }
        html body .awf-note { padding: 12px 14px !important; font-size: 14px !important; }
        html body .frm_submit button,
        html body .frm_submit input[type="submit"] {
            width: 100% !important;
            padding: 14px 18px !important;
            font-size: 14.5px !important;
        }
    }
    

    /* --- Formulaire a plat : la carte est celle du panneau d onglet --- */
    html body .e-n-tabs-content .frm_forms,
    html body .e-n-tabs-content .frm_forms.with_frm_style,
    html body .e-n-tabs-content .frm_forms .frm_form_fields,
    html body .e-n-tabs-content .frm_forms fieldset {
        background: transparent !important;
        border: 0 !important;
        border-radius: 0 !important;
        box-shadow: none !important;
        padding: 0 !important;
        margin: 0 !important;
    }

    /* Le panneau d onglet reste la seule carte. */
    html body .e-n-tabs-content {
        padding: 30px !important;
    }

    /* --- "Cher participant(e)," : espaces mesures avant correction ---
           titre : 49 px de haut
           conteneur du titre : 288 px de haut, soit 239 px de vide
           panneau d onglet : 50 px de marge interieure, EN PLUS des 30 px de
           la carte exterieure -> 80 px cumules en haut
           espace avant le bloc suivant : 126 px
       On supprime la marge du panneau interieur (la carte exterieure la porte
       deja) et on rend au conteneur du titre sa hauteur naturelle. */
    html body .e-n-tabs-content > .e-con,
    html body .e-n-tabs-content > .e-con > .e-con {
        padding-top: 0 !important;
        padding-bottom: 0 !important;
        padding-left: 0 !important;
        padding-right: 0 !important;
        row-gap: 14px !important;
    }
    /* CAUSE EXACTE mesuree : le conteneur du titre porte min-height: 288px,
       impose par Elementor, pour un titre de 49 px -- soit 239 px de vide, et
       142 px entre le titre et le bloc d instructions. L identifiant b57bd42
       est le meme sur les trois langues (les pages EN et ES sont des copies). */
    html body .elementor-element-b57bd42 {
        min-height: 0 !important;
        height: auto !important;
        justify-content: flex-start !important;
    }
    /* Le min-height est ecrit en style INLINE par un script au chargement
       (style="min-height: 288px; height: 288px"). Une regle de feuille de style
       marquee !important le neutralise, mais uniquement si le selecteur est
       ecrit seul : regroupe avec un autre selecteur, la regle entiere sautait. */
    html body .e-n-tabs-content .e-con.e-con[style*="min-height"] {
        min-height: 0 !important;
        height: auto !important;
    }
    html body .e-n-tabs-content h2.e-heading-base {
        margin: 0 0 10px !important;
        padding: 0 !important;
        line-height: 1.2 !important;
    }
    /* Le bloc d instructions suit immediatement le titre. */
    html body .e-n-tabs-content .awi { margin-top: 0 !important; }

    @media (max-width: 1024px) {
        html body .e-n-tabs-content { padding: 22px !important; }
    }
    @media (max-width: 767px) {
        html body .e-n-tabs-content { padding: 16px !important; border-radius: 16px !important; }
        html body .e-n-tabs-content h2.e-heading-base { font-size: 24px !important; margin-bottom: 10px !important; }
    }
    

    html body .nsl-container .nsl-container-buttons a,
    html body .nsl-container-buttons .nsl-button {
        height: 52px !important;
        min-height: 52px !important;
        border-radius: 999px !important;
        border: 1.5px solid #E2E8E4 !important;
        background: #FFFFFF !important;
        box-shadow: 0 2px 10px rgba(16, 24, 40, .06) !important;
        overflow: hidden !important;
        transition: border-color .2s ease, box-shadow .2s ease, transform .15s ease !important;
    }
    html body .nsl-container .nsl-container-buttons a:hover,
    html body .nsl-container-buttons .nsl-button:hover {
        border-color: #3E9134 !important;
        box-shadow: 0 8px 22px rgba(0, 133, 63, .16) !important;
        transform: translateY(-1px) !important;
    }
    /* Le libelle : typographie du site, et non la police par defaut du plugin. */
    html body .nsl-container .nsl-button-label-container {
        font-family: "Poppins", sans-serif !important;
        font-size: 15px !important;
        font-weight: 600 !important;
        color: #10231A !important;
        letter-spacing: 0 !important;
    }
    /* Le logo Google : sur fond blanc, sans le carre gris d origine. */
    html body .nsl-container .nsl-button-svg-container {
        background: transparent !important;
        padding: 0 14px !important;
        display: flex !important;
        align-items: center !important;
    }
    html body .nsl-container .nsl-button-svg-container svg {
        width: 20px !important;
        height: 20px !important;
    }
    /* Le separateur "Ou" au-dessus du bouton. */
    html body .nsl-container .nsl-separator {
        color: #7A8B82 !important;
        font-family: "Poppins", sans-serif !important;
        font-size: 13px !important;
        font-weight: 500 !important;
    }

    @media (max-width: 767px) {
        html body .nsl-container .nsl-container-buttons a,
        html body .nsl-container-buttons .nsl-button {
            height: 50px !important;
            min-height: 50px !important;
        }
        html body .nsl-container .nsl-button-label-container { font-size: 14.5px !important; }
    }
    

    #nsl-redirect-overlay {
        background-color: rgba(6, 26, 16, .55) !important;
        backdrop-filter: blur(3px) !important;
    }
    #nsl-redirect-overlay-container {
        background: #FFFFFF !important;
        border-radius: 22px !important;
        padding: 34px 40px !important;
        box-shadow: 0 18px 50px rgba(0, 0, 0, .22) !important;
        min-width: 260px !important;
    }
    /* L anneau devient le logo : on efface la bordure et on pose l image. */
    #nsl-redirect-overlay-spinner {
        border: 0 !important;
        box-shadow: none !important;
        border-radius: 0 !important;
        width: 82px !important;
        height: 82px !important;
        margin: 4px 0 18px !important;
        background-image: url('https://www.africanaweek.com/wp-content/uploads/2026/08/cropped-Africana-week-flavicon-e1785877342982-1-192x192.png') !important;
        background-size: contain !important;
        background-repeat: no-repeat !important;
        background-position: center !important;
        animation: aw-logo-pulse 1.5s ease-in-out infinite !important;
    }
    @keyframes aw-logo-pulse {
        0%, 100% { transform: scale(1);    opacity: 1; }
        50%      { transform: scale(.88);  opacity: .62; }
    }
    #nsl-redirect-overlay-title {
        font-family: "Poppins", sans-serif !important;
        font-size: 17px !important;
        font-weight: 700 !important;
        color: #00532A !important;
        margin: 0 0 6px !important;
    }
    #nsl-redirect-overlay-text {
        font-family: "Poppins", sans-serif !important;
        font-size: 14px !important;
        font-weight: 500 !important;
        color: #4A5A52 !important;
        margin: 0 !important;
    }
    /* Confort : on respecte le reglage systeme de reduction des animations. */
    @media (prefers-reduced-motion: reduce) {
        #nsl-redirect-overlay-spinner { animation: none !important; }
    }
    

    .aw-modale { position: fixed; inset: 0; z-index: 999999; display: none; }
    .aw-modale.aw-ouverte { display: flex; align-items: center; justify-content: center; padding: 20px; }
    .aw-modale-voile {
        position: absolute; inset: 0;
        background: rgba(6, 26, 16, .62);
        backdrop-filter: blur(3px);
        animation: aw-voile-entree .18s ease-out;
    }
    .aw-modale-carte {
        position: relative; width: 100%; max-width: 440px; box-sizing: border-box;
        background: #FFFFFF; border-radius: 22px; padding: 32px 30px 28px;
        box-shadow: 0 24px 60px rgba(0, 0, 0, .28);
        text-align: center; font-family: "Poppins", sans-serif;
        animation: aw-carte-entree .22s cubic-bezier(.2, .8, .3, 1);
    }
    @keyframes aw-voile-entree { from { opacity: 0; } to { opacity: 1; } }
    @keyframes aw-carte-entree { from { opacity: 0; transform: translateY(14px) scale(.97); } to { opacity: 1; transform: none; } }
    .aw-modale-pastille {
        display: inline-flex; align-items: center; justify-content: center;
        width: 54px; height: 54px; border-radius: 50%;
        background: #E8F4ED; color: #3E9134; margin-bottom: 16px;
    }
    .aw-modale-pastille svg { width: 26px; height: 26px; }
    .aw-modale-carte h2 {
        font-size: 22px; line-height: 1.25; font-weight: 800;
        color: #00532A; margin: 0 0 8px; padding: 0;
    }
    .aw-modale-carte p {
        font-size: 14.5px; line-height: 1.55; font-weight: 500;
        color: #4A5A52; margin: 0 0 24px;
    }
    .aw-modale-actions { display: flex; flex-direction: column; gap: 10px; }
    .aw-modale-btn {
        display: inline-flex; align-items: center; justify-content: center;
        min-height: 50px; padding: 13px 24px; box-sizing: border-box;
        border: 0; border-radius: 999px; cursor: pointer;
        font-family: "Poppins", sans-serif; font-size: 15px; font-weight: 700;
        line-height: 1.25; text-decoration: none !important;
        transition: background .2s ease, color .2s ease, transform .15s ease;
    }
    html body .aw-modale-btn-plein, html body a.aw-modale-btn-plein {
        background: #3E9134; color: #FFFFFF !important;
        box-shadow: 0 8px 20px rgba(0, 133, 63, .22);
    }
    html body .aw-modale-btn-plein:hover { background: #00532A; transform: translateY(-1px); }
    html body .aw-modale-btn-vide, html body a.aw-modale-btn-vide {
        background: transparent; color: #10231A !important;
        border: 1.5px solid #D9E3DC;
    }
    html body .aw-modale-btn-vide:hover { background: #F2F7F4; border-color: #3E9134; }
    /* Croix vectorielle : le &times; d origine etait un caractere typographique,
       fin et mal centre selon la police. Ici le trait est dessine, donc net et
       identique partout, dans une cible de 40 px au lieu de 34. */
    .aw-modale-fermer {
        position: absolute; top: 10px; right: 12px;
        width: 40px; height: 40px; border: 0; border-radius: 50%; padding: 0;
        background: transparent; color: #4A5A52; cursor: pointer;
        display: flex; align-items: center; justify-content: center;
        transition: background .18s ease, color .18s ease;
    }
    .aw-modale-fermer svg { width: 20px; height: 20px; display: block; }
    .aw-modale-fermer svg path {
        stroke: currentColor; stroke-width: 2.2; stroke-linecap: round; fill: none;
    }
    .aw-modale-fermer:hover { background: #EDF4F0; color: #10231A; }
    .aw-modale-fermer:focus-visible { outline: 2px solid #3E9134; outline-offset: 2px; }
    body.aw-modale-active { overflow: hidden; }
    @media (max-width: 767px) {
        .aw-modale-carte { padding: 26px 20px 22px; border-radius: 20px; }
        .aw-modale-carte h2 { font-size: 19.5px; }
        .aw-modale-carte p { font-size: 14px; margin-bottom: 20px; }
    }
    @media (prefers-reduced-motion: reduce) {
        .aw-modale-voile, .aw-modale-carte { animation: none; }
    }
    

    /* Voie CSS : masque l entree de deconnexion du menu "Account side menu". */
    html body .aw-menu-compte li:has(> a[href*="/logout"]) { display: none !important; }
    html body .aw-menu-compte a[href*="/logout"] { display: none !important; }
    