@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Plus+Jakarta+Sans:wght@600;700;800&display=swap");

/* ==========================================================================
   ROYAL FIRST TRAVEL - Design system B2B
   Calque visuel partage. Charge APRES le <style> de chaque page.
   Ne modifie ni le HTML, ni le JS, ni les parcours : uniquement l'apparence.
   ========================================================================== */

/* ==========================================================================
   1. TOKENS
   ========================================================================== */
:root{
    /* Marque */
    --rft-navy-900:#031f42;
    --rft-navy-800:#04264c;
    --rft-navy-700:#052f5e;
    --rft-navy:#063970;
    --rft-navy-500:#1a5391;
    --rft-navy-400:#4a7bb0;
    --rft-navy-200:#b9cee6;
    --rft-navy-100:#dbe7f5;
    --rft-navy-50:#eff5fc;

    --rft-gold:#fccc1f;
    --rft-gold-700:#d9ab00;
    --rft-gold-600:#eab900;
    --rft-gold-100:#fff5cf;

    --rft-red:#d71920;
    --rft-green:#0b8b53;
    --rft-orange:#ff9800;

    /* Neutres */
    --rft-ink:#121c2b;
    --rft-body:#4d5b6e;
    --rft-muted:#8390a2;
    --rft-line:#e3e9f1;
    --rft-line-soft:#eef2f7;
    --rft-surface:#ffffff;
    --rft-bg:#f1f4f9;

    /* Rayons */
    --rft-r-xs:8px;
    --rft-r-sm:12px;
    --rft-r:16px;
    --rft-r-lg:20px;
    --rft-r-xl:26px;
    --rft-r-pill:999px;

    /* Ombres */
    --rft-sh-1:0 1px 2px rgba(9,30,66,.05), 0 4px 12px rgba(9,30,66,.05);
    --rft-sh-2:0 2px 6px rgba(9,30,66,.06), 0 14px 32px rgba(9,30,66,.09);
    --rft-sh-3:0 10px 30px rgba(9,30,66,.12), 0 30px 70px rgba(9,30,66,.14);
    --rft-sh-navy:0 8px 22px rgba(6,57,112,.28);
    --rft-sh-gold:0 8px 20px rgba(217,171,0,.32);

    /* Degrades */
    --rft-grad-navy:linear-gradient(135deg,#0a4a8f 0%,#063970 55%,#04264c 100%);
    --rft-grad-navy-soft:linear-gradient(135deg,#0d5aa8 0%,#063970 100%);
    --rft-grad-gold:linear-gradient(135deg,#ffd94a 0%,#fccc1f 50%,#eab900 100%);

    --rft-ease:cubic-bezier(.22,.61,.36,1);
}

/* ==========================================================================
   2. BASE
   ========================================================================== */
html{ scroll-behavior:smooth; }

body{
    font-family:"Inter","Segoe UI",Arial,sans-serif;
    font-size:15px;
    line-height:1.6;
    color:var(--rft-body);
    background-color:var(--rft-bg);
    -webkit-font-smoothing:antialiased;
    text-rendering:optimizeLegibility;
}

/* IMPORTANT : ce fichier ne declare JAMAIS de background-image sur body.
   Chaque page reste maitresse de son propre visuel de fond
   (ex. index.html : thalasso2.jpg). Ne pas reintroduire de degrade ici. */

h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-weight:800;
    letter-spacing:-.021em;
    color:var(--rft-ink);
}
h1,.h1{ font-size:clamp(1.9rem,3vw,2.6rem); line-height:1.15; }
h2,.h2{ font-size:clamp(1.5rem,2.3vw,2rem); line-height:1.2; color:var(--rft-navy); }
h3,.h3{ font-size:1.35rem; line-height:1.25; color:var(--rft-navy); }
h4,.h4{ font-size:1.15rem; color:var(--rft-navy); }
h5,.h5{ font-size:1rem; }
h6,.h6{ font-size:.9rem; }

/* Filet dore sous les titres de section (uniquement les titres de 1er niveau) */
main > h2::after,
main > .row > [class*="col-"] > h2::after,
main > .row > [class*="col-"] > h3::after,
body > .container > h2::after,
body > .container > .row > [class*="col-"] > h2::after,
body > .container > .row > [class*="col-"] > h3::after{
    content:"";
    display:block;
    width:56px;
    height:4px;
    margin-top:.65rem;
    border-radius:var(--rft-r-pill);
    background:var(--rft-grad-gold);
}

a{ color:var(--rft-navy); text-decoration:none; transition:color .2s var(--rft-ease); }
a:hover{ color:var(--rft-navy-500); }

hr{ border-color:var(--rft-line); opacity:1; }

/* Pas de couleur imposee : <strong> herite de son contexte
   (indispensable sur les fonds bleus et les affiches A4). */
strong,b{ font-weight:700; }

::selection{ background:var(--rft-gold); color:var(--rft-navy-900); }

::-webkit-scrollbar{ width:11px; height:11px; }
::-webkit-scrollbar-track{ background:var(--rft-line-soft); }
::-webkit-scrollbar-thumb{ background:var(--rft-navy-200); border-radius:var(--rft-r-pill); border:3px solid var(--rft-line-soft); }
::-webkit-scrollbar-thumb:hover{ background:var(--rft-navy-400); }

/* ==========================================================================
   3. HEADER / NAVBAR
   ========================================================================== */
header.sticky-top{ z-index:1035; }

header .navbar{
    padding:.55rem 0;
    background:rgba(255,255,255,.9) !important;
    backdrop-filter:saturate(180%) blur(14px);
    -webkit-backdrop-filter:saturate(180%) blur(14px);
    border-bottom:1px solid var(--rft-line);
    box-shadow:0 1px 0 rgba(9,30,66,.04), 0 10px 30px rgba(9,30,66,.06) !important;
}

.navbar-brand{ padding:.1rem 0; margin-right:1.75rem; }
.navbar-brand img{
    height:48px;
    width:auto;
    object-fit:contain;
    transition:transform .25s var(--rft-ease);
}
.navbar-brand:hover img{ transform:scale(1.03); }

.navbar-nav{ align-items:center; gap:.15rem; }

.navbar-nav .nav-link{
    position:relative;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.92rem;
    font-weight:600;
    color:var(--rft-navy-800);
    padding:.55rem .9rem;
    border-radius:var(--rft-r-pill);
    transition:color .2s var(--rft-ease), background .2s var(--rft-ease);
}
.navbar-nav .nav-link i{ color:var(--rft-navy-400); margin-right:.3rem; transition:color .2s var(--rft-ease); }

.navbar-nav a.nav-link::after{
    content:"";
    position:absolute;
    left:50%;
    bottom:.26rem;
    width:0;
    height:3px;
    border-radius:var(--rft-r-pill);
    background:var(--rft-grad-gold);
    transform:translateX(-50%);
    transition:width .25s var(--rft-ease);
}
.navbar-nav a.nav-link:hover{ color:var(--rft-navy); background:var(--rft-navy-50); }
.navbar-nav a.nav-link:hover i{ color:var(--rft-navy); }
.navbar-nav a.nav-link:hover::after,
.navbar-nav a.nav-link.active::after{ width:26px; }
.navbar-nav a.nav-link.active{ color:var(--rft-navy); }

/* Nom de l'agence : pastille */
.navbar-nav > .nav-item > span.nav-link{
    display:inline-flex;
    align-items:center;
    gap:.45rem;
    background:var(--rft-navy-50);
    border:1px solid var(--rft-navy-100);
    color:var(--rft-navy);
    font-weight:700;
    padding:.42rem .95rem;
    margin-left:.35rem;
}
.navbar-nav > .nav-item > span.nav-link i{ color:var(--rft-navy); margin:0; font-size:1.05rem; }

/* Deconnexion */
.navbar-nav a.nav-link.text-danger{
    color:var(--rft-red) !important;
    border:1px solid rgba(215,25,32,.22);
    margin-left:.4rem;
    padding:.42rem .9rem;
}
.navbar-nav a.nav-link.text-danger i{ color:var(--rft-red); }
.navbar-nav a.nav-link.text-danger:hover{
    background:var(--rft-red);
    color:#fff !important;
    border-color:var(--rft-red);
}
.navbar-nav a.nav-link.text-danger:hover i{ color:#fff; }
.navbar-nav a.nav-link.text-danger::after{ display:none; }

.navbar-toggler{
    border:1px solid var(--rft-line);
    border-radius:var(--rft-r-sm);
    padding:.45rem .6rem;
}
.navbar-toggler:focus{ box-shadow:0 0 0 4px rgba(6,57,112,.12); }

/* ==========================================================================
   4. FOOTER
   ========================================================================== */
footer{
    position:relative;
    background:linear-gradient(165deg,#063970 0%,#04264c 60%,#031f42 100%) !important;
    color:rgba(255,255,255,.78) !important;
    margin-top:70px !important;
    padding:56px 0 26px !important;
    overflow:hidden;
}
footer::before{
    content:"";
    position:absolute;
    inset:0 0 auto 0;
    height:4px;
    background:var(--rft-grad-gold);
}
footer::after{
    content:"";
    position:absolute;
    right:-140px;
    top:-140px;
    width:420px;
    height:420px;
    border-radius:50%;
    background:radial-gradient(circle, rgba(252,204,31,.14), transparent 68%);
    pointer-events:none;
}
footer .container{ position:relative; z-index:1; }

footer h5{
    font-size:.78rem;
    font-weight:800;
    letter-spacing:.13em;
    text-transform:uppercase;
    color:var(--rft-gold);
    margin-bottom:1.15rem;
    padding-bottom:.7rem;
    border-bottom:1px solid rgba(255,255,255,.12);
}

footer p{ color:rgba(255,255,255,.72); line-height:1.85; }
footer ul li{ margin-bottom:.5rem; }

footer a{
    display:inline-block;
    color:rgba(255,255,255,.74) !important;
    font-size:.93rem;
    transition:color .2s var(--rft-ease), transform .2s var(--rft-ease);
}
footer a:hover{
    color:#fff !important;
    text-decoration:none !important;
    transform:translateX(4px);
}

footer hr{
    border-color:rgba(255,255,255,.12) !important;
    margin:2.4rem 0 1.4rem;
}
footer > .text-center,
footer .container + .text-center{
    font-size:.85rem;
    color:rgba(255,255,255,.55);
    letter-spacing:.02em;
}

/* verify.php : footer en position fixe -> on garde un gabarit compact */
footer.fixed-bottom{
    margin-top:0 !important;
    padding:26px 0 16px !important;
    max-height:52vh;
    overflow:auto;
}
footer.fixed-bottom h5{ margin-bottom:.8rem; padding-bottom:.5rem; }
footer.fixed-bottom hr{ margin:1.2rem 0 .8rem; }

/* ==========================================================================
   5. BOUTONS
   ========================================================================== */
.btn{
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-weight:600;
    font-size:.94rem;
    line-height:1.35;
    padding:.68rem 1.4rem;
    border-radius:var(--rft-r-pill);
    border-width:1.5px;
    transition:transform .18s var(--rft-ease), box-shadow .22s var(--rft-ease),
               background .22s var(--rft-ease), color .22s var(--rft-ease),
               border-color .22s var(--rft-ease);
}
.btn:focus,
.btn:focus-visible{ box-shadow:0 0 0 4px rgba(6,57,112,.16); outline:none; }
.btn:active{ transform:translateY(1px); }
.btn i{ vertical-align:-.05em; }
.btn-sm{ padding:.45rem 1rem; font-size:.85rem; }
.btn-lg{ padding:.9rem 2rem; font-size:1.02rem; }

/* Bleu marque
   Pas de !important sur le fond : les boutons portant un style inline
   (ex. le bouton de validation OTP) conservent leur couleur voulue. */
.btn-primary,
.btn.bg-color-blue,
.btn-color-blue,
form button.btn-success,
.btn-success{
    background:var(--rft-grad-navy);
    border:0;
    color:#fff;
    box-shadow:var(--rft-sh-navy);
}
.btn-primary:hover,
.btn.bg-color-blue:hover,
.btn-color-blue:hover,
form button.btn-success:hover,
.btn-success:hover{
    background:linear-gradient(135deg,#0d5aa8 0%,#074281 55%,#052f5e 100%);
    color:#fff;
    transform:translateY(-2px);
    box-shadow:0 12px 28px rgba(6,57,112,.34);
}

/* Or marque : texte bleu nuit pour la lisibilite */
.btn-warning,
.btn-color-yellow,
.btn-product,
.btn-devis,
.btn-traveler{
    background:var(--rft-grad-gold) !important;
    border:0 !important;
    color:var(--rft-navy-900) !important;
    font-weight:700;
    box-shadow:var(--rft-sh-gold);
}
.btn-warning:hover,
.btn-color-yellow:hover,
.btn-product:hover,
.btn-devis:hover,
.btn-traveler:hover{
    background:linear-gradient(135deg,#ffe071 0%,#ffd333 50%,#f0c000 100%) !important;
    color:var(--rft-navy-900) !important;
    transform:translateY(-2px);
    box-shadow:0 12px 26px rgba(217,171,0,.4);
}

.btn-outline-primary{
    border-color:var(--rft-navy-200);
    color:var(--rft-navy);
    background:#fff;
}
.btn-outline-primary:hover{
    background:var(--rft-navy);
    border-color:var(--rft-navy);
    color:#fff;
}

.btn-outline-secondary{
    border-color:var(--rft-line);
    color:var(--rft-body);
    background:#fff;
}
.btn-outline-secondary:hover{
    background:var(--rft-navy-50);
    border-color:var(--rft-navy-200);
    color:var(--rft-navy);
}

.btn-light{
    background:#fff;
    border:0;
    color:var(--rft-navy);
    font-weight:700;
    box-shadow:0 6px 16px rgba(0,0,0,.14);
}
.btn-light:hover{ background:var(--rft-gold); color:var(--rft-navy-900); transform:translateY(-2px); }

.btn-danger{ background:var(--rft-red); border:0; box-shadow:0 8px 20px rgba(215,25,32,.26); }
.btn-danger:hover{ background:#b8151b; transform:translateY(-2px); }

.btn-link{ text-decoration:none; font-weight:600; }

/* ==========================================================================
   6. FORMULAIRES
   ========================================================================== */
.form-label,
form label{
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.83rem;
    font-weight:600;
    color:var(--rft-ink);
    margin-bottom:.42rem;
    letter-spacing:.005em;
}

.form-control,
.form-select{
    min-height:48px;
    padding:.62rem .95rem;
    font-size:.94rem;
    color:var(--rft-ink);
    background-color:#fff;
    border:1.5px solid var(--rft-line);
    border-radius:var(--rft-r-sm);
    box-shadow:none;
    transition:border-color .2s var(--rft-ease), box-shadow .2s var(--rft-ease), background .2s var(--rft-ease);
}
.form-control::placeholder{ color:var(--rft-muted); }
.form-control:hover,
.form-select:hover{ border-color:var(--rft-navy-200); }
.form-control:focus,
.form-select:focus{
    border-color:var(--rft-navy);
    box-shadow:0 0 0 4px rgba(6,57,112,.13);
    background-color:#fff;
}
.form-control:disabled,
.form-select:disabled{ background:var(--rft-line-soft); color:var(--rft-muted); }
textarea.form-control{ min-height:120px; }

.input-group-text{
    background:var(--rft-navy-50);
    border:1.5px solid var(--rft-line);
    color:var(--rft-navy);
    border-radius:var(--rft-r-sm);
}

.form-check{ margin-bottom:.42rem; }
.form-check-input{
    width:1.15em;
    height:1.15em;
    margin-top:.2em;
    border:1.5px solid var(--rft-navy-200);
    cursor:pointer;
    transition:background .2s var(--rft-ease), border-color .2s var(--rft-ease);
}
.form-check-input:checked{
    background-color:var(--rft-navy);
    border-color:var(--rft-navy);
}
.form-check-input:focus{ box-shadow:0 0 0 4px rgba(6,57,112,.14); border-color:var(--rft-navy); }
form .form-check-label,
.form-check .form-check-label,
.form-check-label{
    font-size:.92rem;
    font-weight:500;
    letter-spacing:0;
    text-transform:none;
    color:var(--rft-body);
    cursor:pointer;
    padding-left:.15rem;
    margin-bottom:0;
}
.form-check:hover .form-check-label{ color:var(--rft-navy); }

.form-switch .form-check-input:checked{ background-color:var(--rft-navy); }

/* --------------------------------------------------------------------------
   Select2 - listes deroulantes personnalisees
   La liste ouverte d'un <select> natif est dessinee par le systeme et ne peut
   pas etre stylee : Select2 la remplace par du HTML, que voici habille.
   -------------------------------------------------------------------------- */

/* --- Champ ferme --- */
.select2-container--default .select2-selection--single{
    display:flex;
    align-items:center;
    height:48px;
    padding:0 2.4rem 0 .95rem;
    background:#fff;
    border:1.5px solid var(--rft-line) !important;
    border-radius:var(--rft-r-sm) !important;
    outline:none;
    transition:border-color .2s var(--rft-ease), box-shadow .2s var(--rft-ease);
}
.select2-container--default .select2-selection--single:hover{
    border-color:var(--rft-navy-200) !important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered{
    padding:0 !important;
    line-height:1.4;
    font-size:.94rem;
    font-weight:500;
    color:var(--rft-ink);
}
.select2-container--default .select2-selection--single .select2-selection__placeholder{
    color:var(--rft-muted);
    font-weight:400;
}

/* Fleche : on remplace le triangle par defaut par un chevron */
.select2-container--default .select2-selection--single .select2-selection__arrow{
    top:0;
    right:.9rem;
    height:100%;
    width:14px;
    display:flex;
    align-items:center;
    justify-content:center;
}
.select2-container--default .select2-selection--single .select2-selection__arrow b{
    display:none;
}
.select2-container--default .select2-selection--single .select2-selection__arrow::after{
    content:"";
    width:8px;
    height:8px;
    border-right:2px solid var(--rft-navy-400);
    border-bottom:2px solid var(--rft-navy-400);
    transform:rotate(45deg) translate(-2px,-2px);
    transition:transform .2s var(--rft-ease), border-color .2s var(--rft-ease);
}
.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow::after{
    transform:rotate(-135deg) translate(-3px,-3px);
    border-color:var(--rft-navy);
}

/* Champ ouvert ou au focus */
.select2-container--default.select2-container--open .select2-selection--single,
.select2-container--default .select2-selection--single:focus{
    border-color:var(--rft-navy) !important;
    box-shadow:0 0 0 4px rgba(6,57,112,.13);
}

/* --- Liste deroulante --- */
/* Select2 accroche la liste au <body> : ces regles restent globales. */
.select2-dropdown{
    margin-top:6px;
    padding:.35rem;
    background:#fff;
    border:1px solid var(--rft-line) !important;
    border-radius:var(--rft-r) !important;
    box-shadow:var(--rft-sh-3) !important;
    overflow:hidden;
}
.select2-dropdown--above{ margin-top:-6px; }

.select2-container--default .select2-results > .select2-results__options{
    max-height:280px;
    padding:0;
}
.select2-container--default .select2-results__option{
    padding:.62rem .85rem;
    margin-bottom:2px;
    border-radius:var(--rft-r-xs);
    font-size:.94rem;
    color:var(--rft-body);
    transition:background .15s var(--rft-ease), color .15s var(--rft-ease);
}
.select2-container--default .select2-results__option:last-child{ margin-bottom:0; }

/* Survol / navigation au clavier */
.select2-container--default .select2-results__option--highlighted,
.select2-container--default .select2-results__option--highlighted[aria-selected]{
    background:var(--rft-navy-50) !important;
    color:var(--rft-navy) !important;
    font-weight:600;
}

/* Option deja choisie */
.select2-container--default .select2-results__option--selected,
.select2-container--default .select2-results__option[aria-selected=true]{
    position:relative;
    background:var(--rft-navy) !important;
    color:#fff !important;
    font-weight:600;
}
.select2-container--default .select2-results__option--selected.select2-results__option--highlighted,
.select2-container--default .select2-results__option[aria-selected=true].select2-results__option--highlighted{
    background:var(--rft-navy-700) !important;
    color:#fff !important;
}

/* Champ de recherche interne (listes longues) */
.select2-container--default .select2-search--dropdown{ padding:.15rem .15rem .45rem; }
.select2-container--default .select2-search--dropdown .select2-search__field{
    padding:.55rem .75rem;
    font-size:.92rem;
    border:1.5px solid var(--rft-line);
    border-radius:var(--rft-r-xs);
    outline:none;
}
.select2-container--default .select2-search--dropdown .select2-search__field:focus{
    border-color:var(--rft-navy);
    box-shadow:0 0 0 3px rgba(6,57,112,.12);
}
.select2-container--default .select2-results__message{
    padding:.7rem .85rem;
    color:var(--rft-muted);
    font-size:.9rem;
}

/* --- Dans le bloc de recherche bleu de la page d'accueil --- */
#search-box .select2-container--default .select2-selection--single{
    border-color:rgba(255,255,255,.28) !important;
    box-shadow:0 4px 14px rgba(0,0,0,.12);
}
#search-box .select2-container--default.select2-container--open .select2-selection--single{
    border-color:var(--rft-gold) !important;
    box-shadow:0 0 0 4px rgba(252,204,31,.32);
}

/* ==========================================================================
   7. SURFACES / CARTES
   ========================================================================== */
.box,
.filter-box,
.stepper,
.search-box,
.dashboard-card,
.card,
#tabContent{
    background:#fff;
    border:1px solid var(--rft-line);
    border-radius:var(--rft-r-lg) !important;
    box-shadow:var(--rft-sh-1) !important;
}

.box{ padding:26px !important; margin-bottom:24px; }

.box-title,
.filter-title{
    position:relative;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:1.12rem !important;
    font-weight:800 !important;
    letter-spacing:-.015em;
    color:var(--rft-navy) !important;
    margin-bottom:1.4rem !important;
    padding-bottom:.85rem !important;
    border-bottom:1px solid var(--rft-line) !important;
}
.box-title::after,
.filter-title::after{
    content:"";
    position:absolute;
    left:0;
    bottom:-1px;
    width:48px;
    height:3px;
    border-radius:var(--rft-r-pill);
    background:var(--rft-grad-gold);
}

.card{ overflow:hidden; }
.card-header{
    background:#fff;
    border-bottom:1px solid var(--rft-line);
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-weight:700;
    color:var(--rft-navy);
    padding:1rem 1.25rem;
}
.card-body{ padding:1.35rem; }
.card-header.bg-primary{
    background:var(--rft-grad-navy) !important;
    color:#fff !important;
    border-bottom:3px solid var(--rft-gold);
    font-size:.82rem;
    font-weight:800;
    letter-spacing:.09em;
    text-transform:uppercase;
}
.card-header.bg-primary i{ color:#fff !important; }
.badge.bg-primary{ background:var(--rft-navy) !important; }

/* ==========================================================================
   8. RECHERCHE (home)
   ========================================================================== */
.search-box,
#search-box{
    position:relative;
    isolation:isolate;
    /* Sans z-index, le carrousel qui suit se dessine par-dessus la liste
       deroulante des champs : elle apparait tronquee. */
    z-index:20;
    /* Pas de overflow:hidden : il rognerait la liste deroulante des champs.
       Le voile et le filet portent leur propre arrondi. */
    /* Compact en hauteur : le slider qui suit doit rester entierement
       visible sur un ecran de portable (nav + moteur + slider < 770 px). */
    padding:22px 28px 24px !important;
    border:0 !important;
    border-radius:var(--rft-r-xl) !important;
    background-size:cover !important;
    background-position:center !important;
    box-shadow:var(--rft-sh-3) !important;
    margin-top:18px !important;
    margin-bottom:22px !important;
}
#search-box::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:-1;
    border-radius:inherit;
    background:linear-gradient(112deg,
        rgba(3,31,66,.94) 0%,
        rgba(6,57,112,.86) 42%,
        rgba(6,57,112,.55) 100%);
}
#search-box::after{
    content:"";
    position:absolute;
    left:0;
    top:0;
    width:100%;
    height:5px;
    border-radius:var(--rft-r-xl) var(--rft-r-xl) 0 0;
    background:var(--rft-grad-gold);
}

#search-box h1{
    color:#fff !important;
    font-size:clamp(1.45rem,2.1vw,1.9rem) !important;
    font-weight:800;
    line-height:1.15;
    text-shadow:0 2px 18px rgba(0,0,0,.35);
    margin-bottom:0 !important;
}
#search-box h1::after{
    content:"";
    display:block;
    width:48px;
    height:3px;
    margin-top:.4rem;
    border-radius:var(--rft-r-pill);
    background:var(--rft-grad-gold);
}

/* Titre a gauche, selecteur "Je recherche" a droite, sur une seule ligne ;
   passe sur deux lignes quand la largeur manque. */
.search-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:.75rem 1.5rem;
    margin-bottom:1rem;
}
.search-head .search-type{ flex-shrink:0; }

#search-box label:not(.btn),
#search-box .form-label:not(.btn){
    color:#fff !important;
    font-size:.8rem;
    font-weight:600;
    letter-spacing:.045em;
    text-transform:uppercase;
    opacity:.92;
}

#search-box .form-control,
#search-box .form-select{
    border:1.5px solid rgba(255,255,255,.28);
    background:rgba(255,255,255,.97);
    box-shadow:0 4px 14px rgba(0,0,0,.12);
}
#search-box .form-control:focus,
#search-box .form-select:focus{
    border-color:var(--rft-gold);
    box-shadow:0 0 0 4px rgba(252,204,31,.32);
}

#search-box button[type="submit"]{
    min-height:48px;
    background:var(--rft-grad-gold) !important;
    color:var(--rft-navy-900) !important;
    font-weight:800 !important;
    letter-spacing:.01em;
    box-shadow:0 10px 26px rgba(0,0,0,.24) !important;
}
#search-box button[type="submit"]:hover{
    background:linear-gradient(135deg,#ffe071,#ffd333 50%,#f0c000) !important;
    transform:translateY(-2px);
}

/* Selecteur segmente "Je recherche" */
#search-box .btn-group,
.search-type .btn-group{
    border:0 !important;
    gap:.3rem;
    padding:.32rem;
    background:rgba(255,255,255,.14);
    border-radius:var(--rft-r-pill) !important;
    backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px);
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.2);
}
#search-box .btn-group > .btn,
#search-box .btn-check + .btn{
    border:0 !important;
    border-radius:var(--rft-r-pill) !important;
    background:transparent;
    color:rgba(255,255,255,.9);
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.92rem;
    font-weight:600;
    letter-spacing:0;
    text-transform:none;
    padding:.5rem 1.1rem;
    margin-bottom:0;
}
#search-box .btn-check + .btn i{ margin-right:.2rem; }
#search-box .btn-check + .btn:hover{ background:rgba(255,255,255,.16); color:#fff; }
#search-box .btn-check:checked + .btn,
.btn-check:checked + .btn{
    background:#fff !important;
    color:var(--rft-navy) !important;
    border:0 !important;
    font-weight:700;
    box-shadow:0 4px 14px rgba(0,0,0,.2) !important;
}

/* ==========================================================================
   8 bis. CHAMP DE RECHERCHE A LISTE DEROULANTE (assets/js/rft-combobox.js)
   Libelle a l'interieur, saisie au clavier, bouton d'effacement,
   liste detachee a pastilles.
   ========================================================================== */
.rft-combo{
    position:relative;
    width:100%;
}
/* Un champ ouvert doit couvrir les champs suivants de la meme ligne. */
.rft-combo.is-open{ z-index:30; }

/* Le <label> d'origine et le champ natif restent dans le DOM
   (soumission du formulaire) mais ne s'affichent plus. */
.rft-combo__label-source,
.rft-combo__natif{
    position:absolute !important;
    width:1px;
    height:1px;
    padding:0 !important;
    margin:-1px !important;
    overflow:hidden;
    clip:rect(0 0 0 0);
    white-space:nowrap;
    border:0 !important;
}

/* --- Le champ --- */
.rft-combo__field{
    position:relative;
    display:flex;
    flex-direction:column;
    justify-content:center;
    gap:.1rem;
    min-height:56px;
    padding:.5rem 2.5rem .5rem 1rem;
    background:#fff;
    border:1.5px solid var(--rft-line);
    border-radius:var(--rft-r-xl);
    cursor:text;
    transition:border-color .2s var(--rft-ease), box-shadow .2s var(--rft-ease);
}
.rft-combo__field:hover{ border-color:var(--rft-navy-200); }

.rft-combo.is-open .rft-combo__field,
.rft-combo__field:focus-within{
    border-color:var(--rft-navy);
    box-shadow:0 0 0 4px rgba(6,57,112,.13);
}

/* --- Libelle interieur --- */
.rft-combo__label{
    display:flex;
    align-items:center;
    gap:.32rem;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.6rem;
    font-weight:700;
    letter-spacing:.09em;
    text-transform:uppercase;
    color:var(--rft-navy-400);
    line-height:1.2;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    pointer-events:none;
    transition:color .2s var(--rft-ease);
}
.rft-combo__label i{ font-size:.75rem; }
.rft-combo.is-open .rft-combo__label,
.rft-combo__field:focus-within .rft-combo__label{ color:var(--rft-navy); }

/* --- Saisie --- */
.rft-combo__input{
    width:100%;
    padding:0;
    border:0;
    outline:none;
    background:transparent;
    font-family:"Inter",Arial,sans-serif;
    font-size:.88rem;
    font-weight:600;
    color:var(--rft-ink);
    line-height:1.35;
}
.rft-combo__input::placeholder{ color:var(--rft-muted); font-weight:400; }
.rft-combo__input::selection{ background:var(--rft-navy-100); color:var(--rft-navy-900); }
.rft-combo--date .rft-combo__input{ font-weight:600; }

/* --- Bouton d'effacement --- */
.rft-combo__clear{
    position:absolute;
    top:50%;
    right:.9rem;
    transform:translateY(-50%);
    display:none;
    align-items:center;
    justify-content:center;
    width:22px;
    height:22px;
    padding:0;
    border:0;
    border-radius:50%;
    background:var(--rft-line);
    color:var(--rft-body);
    font-size:.7rem;
    line-height:1;
    cursor:pointer;
    transition:background .18s var(--rft-ease), color .18s var(--rft-ease);
}
.rft-combo.has-value .rft-combo__clear{ display:flex; }
.rft-combo__clear:hover{ background:var(--rft-navy); color:#fff; }

/* --- Liste deroulante --- */
.rft-combo__menu{
    position:absolute;
    z-index:1200;
    top:calc(100% + 8px);
    left:0;
    display:none;
    /* Les champs font un sixieme de la ligne : trop etroits pour des
       libelles comme « TUNISIE - NABEUL_HAMMAMET ». La liste s'elargit
       au contenu au lieu d'imposer la largeur du champ. */
    min-width:100%;
    width:max-content;
    max-width:340px;
    max-height:264px;
    overflow-y:auto;
    padding:.5rem;
    background:#fff;
    border:1px solid var(--rft-line);
    border-radius:var(--rft-r-lg);
    box-shadow:var(--rft-sh-3);
}
/* Champs de droite : la liste deborderait de l'ecran, on l'aligne
   sur le bord droit du champ. Classe posee par rft-combobox.js. */
.rft-combo.is-right .rft-combo__menu{
    left:auto;
    right:0;
}
.rft-combo.is-open .rft-combo__menu{
    display:block;
    animation:rft-combo-open .16s var(--rft-ease);
}
@keyframes rft-combo-open{
    from{ opacity:0; transform:translateY(-6px); }
    to  { opacity:1; transform:translateY(0); }
}
@media (prefers-reduced-motion:reduce){
    .rft-combo.is-open .rft-combo__menu{ animation:none; }
}

.rft-combo__option{
    display:flex;
    align-items:center;
    gap:.75rem;
    padding:.5rem .6rem;
    border-radius:var(--rft-r-sm);
    font-size:.9rem;
    font-weight:500;
    color:var(--rft-navy);
    cursor:pointer;
    transition:background .15s var(--rft-ease);
}
.rft-combo__option + .rft-combo__option{ margin-top:2px; }

/* Un resultat tient sur une seule ligne. min-width:0 est indispensable :
   sans lui, un enfant de conteneur flex refuse de retrecir et les points
   de suspension ne s'affichent jamais. */
.rft-combo__text{
    flex:1 1 auto;
    min-width:0;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.rft-combo__option.is-active{ background:var(--rft-navy-50); }
.rft-combo__option.is-selected{ font-weight:700; }
/* La pastille reste claire : la selection est signalee par une coche. */
.rft-combo__check{
    margin-left:auto;
    display:inline-flex;
    align-items:center;
    color:var(--rft-navy);
    font-size:1rem;
}

/* Pastille ronde devant chaque resultat */
.rft-combo__badge{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 32px;
    width:32px;
    height:32px;
    border-radius:50%;
    background:var(--rft-navy-50);
    color:var(--rft-navy);
    font-size:.92rem;
    transition:background .15s var(--rft-ease), color .15s var(--rft-ease);
}

.rft-combo__empty{
    padding:.8rem .6rem;
    text-align:center;
    color:var(--rft-muted);
    font-size:.88rem;
}

/* --- Dans le bloc de recherche bleu de la page d'accueil --- */
#search-box .rft-combo__field{
    border-color:rgba(255,255,255,.3);
    box-shadow:0 4px 16px rgba(0,0,0,.14);
}
#search-box .rft-combo.is-open .rft-combo__field,
#search-box .rft-combo__field:focus-within{
    border-color:var(--rft-gold);
    box-shadow:0 0 0 4px rgba(252,204,31,.34);
}
/* Le libelle interieur remplace celui du dessus : il reste bleu sur blanc */
#search-box .rft-combo__label{ color:var(--rft-navy-400); }
#search-box .rft-combo.is-open .rft-combo__label,
#search-box .rft-combo__field:focus-within .rft-combo__label{ color:var(--rft-navy); }

/* Champs obligatoires du moteur (ville d'arrivee, date de depart) */
.rft-req{ color:var(--rft-gold); font-weight:800; margin-left:.1rem; }
.rft-combo.is-invalid .rft-combo__field,
#search-box .rft-combo.is-invalid .rft-combo__field{
    border-color:var(--rft-red);
    box-shadow:0 0 0 4px rgba(215,25,32,.22);
}
.rft-combo.is-invalid .rft-combo__label{ color:var(--rft-red); }
.search-erreur{
    display:flex;
    align-items:center;
    gap:.5rem;
    margin-top:.9rem;
    padding:.55rem .9rem;
    border-radius:var(--rft-r-md, 10px);
    background:rgba(215,25,32,.14);
    border:1px solid rgba(255,255,255,.25);
    color:#fff;
    font-size:.86rem;
    font-weight:600;
}
.search-erreur i{ color:var(--rft-gold); font-size:1rem; }
.search-erreur[hidden]{ display:none; }

@media (max-width:991.98px){
    .rft-combo__field{ min-height:54px; }
}

/* ==========================================================================
   9. CAROUSEL
   ========================================================================== */
.carousel-inner{ border-radius:var(--rft-r-lg); overflow:hidden; box-shadow:var(--rft-sh-2); }
.carousel img,
.carousel-item img{ border-radius:0 !important; }
/* Visuels 1600x500 : on fixe le ratio pour que la hauteur du slider soit
   previsible et qu il tienne sous le moteur de recherche. */
#carouselHome .carousel-item img{
    aspect-ratio:16 / 5;
    width:100%;
    height:auto;
    max-height:440px;
    object-fit:cover;
}
.carousel-control-prev,
.carousel-control-next{
    width:52px;
    height:52px;
    top:50%;
    transform:translateY(-50%);
    margin:0 1rem;
    border-radius:50%;
    background:rgba(255,255,255,.92);
    box-shadow:var(--rft-sh-2);
    opacity:1;
    transition:transform .2s var(--rft-ease), background .2s var(--rft-ease);
}
.carousel-control-prev:hover,
.carousel-control-next:hover{ background:#fff; transform:translateY(-50%) scale(1.07); }
.carousel-control-prev-icon,
.carousel-control-next-icon{
    width:18px;
    height:18px;
    filter:invert(17%) sepia(48%) saturate(2200%) hue-rotate(190deg) brightness(92%);
}
.carousel-indicators [data-bs-target]{
    width:9px; height:9px; border-radius:50%;
    background:#fff; opacity:.5; border:0;
}
.carousel-indicators .active{ background:var(--rft-gold); opacity:1; width:24px; border-radius:var(--rft-r-pill); }

/* ==========================================================================
   10. CARTES PRODUIT
   ========================================================================== */
.product-card{
    position:relative;
    background:#fff;
    border:1px solid var(--rft-line);
    border-radius:var(--rft-r-lg) !important;
    padding:18px !important;
    margin-bottom:20px;
    box-shadow:var(--rft-sh-1) !important;
    transition:transform .25s var(--rft-ease), box-shadow .25s var(--rft-ease), border-color .25s var(--rft-ease);
}
.product-card:hover{
    transform:translateY(-4px) !important;
    border-color:var(--rft-navy-100);
    box-shadow:var(--rft-sh-2) !important;
}

/* Liste produits (liste-produit.php) : transition FLIP quand un filtre
   change. Classes posees et retirees par le script de la page :
     is-leaving  carte retiree : s'estompe sur place avant de disparaitre
     is-arriving carte ajoutee : etat de depart (invisible, a sa place)
     is-fading   carte ajoutee : fondu vers l'etat normal
     is-moving   carte conservee : glisse de l'ancienne a la nouvelle position
   Mouvements courts, une seule courbe, aucun rebond. */
/* Transition fine : fondus seuls, courts, et un glissement discret des
   cartes conservees pour eviter tout saut. */
.product-card.is-leaving{
    opacity:0;
    transition:opacity .12s ease-out !important;
    pointer-events:none;
}
.product-card.is-arriving{
    opacity:0;
    transition:none !important;
}
.product-card.is-fading{
    transition:opacity .22s ease-out, box-shadow .25s var(--rft-ease), border-color .25s var(--rft-ease) !important;
}
.product-card.is-moving{
    transition:transform .24s cubic-bezier(.25,.6,.3,1), box-shadow .25s var(--rft-ease), border-color .25s var(--rft-ease) !important;
}

/* Vignette de la home : un <button> a remplace le lien, pour que les
   identifiants du produit partent en POST et non dans l'URL. Il faut
   donc neutraliser les valeurs par defaut du bouton. */
button.product-card{
    width:100%;
    text-align:left;
    font:inherit;
    color:inherit;
    cursor:pointer;
    -webkit-appearance:none;
    appearance:none;
}

/* Vignettes texte de la home */
.col-lg-8 .product-card:not(:has(.row)){
    display:flex;
    align-items:center;
    min-height:78px;
    padding:16px 18px 16px 22px !important;
    font-weight:600;
    color:var(--rft-navy);
    overflow:hidden;
}
.col-lg-8 .product-card:not(:has(.row))::before{
    content:"";
    position:absolute;
    left:0; top:0; bottom:0;
    width:5px;
    background:var(--rft-grad-gold);
    transform:scaleY(.35);
    transform-origin:center;
    transition:transform .25s var(--rft-ease);
}
.col-lg-8 .product-card:not(:has(.row)):hover::before{ transform:scaleY(1); }

.product-image{
    height:235px !important;
    border-radius:var(--rft-r) !important;
    box-shadow:0 6px 18px rgba(9,30,66,.12);
}

.hotel-name{
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:1.32rem !important;
    font-weight:800 !important;
    letter-spacing:-.018em;
    color:var(--rft-navy) !important;
    line-height:1.25;
    margin-bottom:.6rem;
}

.info-line{
    display:flex;
    align-items:center;
    gap:.5rem;
    margin-top:.4rem !important;
    font-size:.92rem;
    color:var(--rft-body);
}
.info-line i{ color:var(--rft-navy-400); font-size:1rem; }

.product-card .price-box{
    background:var(--rft-grad-navy) !important;
    color:#fff !important;
    padding:.6rem 1.25rem !important;
    border-radius:var(--rft-r-pill) !important;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:1.4rem !important;
    font-weight:800 !important;
    letter-spacing:-.02em;
    box-shadow:var(--rft-sh-navy);
}

.included{
    margin-top:1.1rem !important;
    padding-top:1rem;
    border-top:1px dashed var(--rft-line);
    font-size:.9rem;
    color:var(--rft-body);
}
.included strong{
    display:block;
    margin-bottom:.35rem;
    font-size:.72rem;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--rft-muted);
    font-weight:700;
}
.included i{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:28px;
    height:28px;
    border-radius:50%;
    background:var(--rft-navy-50);
    color:var(--rft-navy) !important;
    font-size:.92rem !important;
    margin-right:.35rem !important;
    vertical-align:middle;
}

.visual-card img{
    border-radius:var(--rft-r) !important;
    box-shadow:var(--rft-sh-1);
    transition:transform .3s var(--rft-ease), box-shadow .3s var(--rft-ease);
}
.visual-card:hover img{ transform:translateY(-4px); box-shadow:var(--rft-sh-2); }

/* ==========================================================================
   11. FILTRES (liste produit)
   ========================================================================== */
.filter-box{
    position:sticky;
    top:96px;
    padding:24px !important;
}
.filter-box form > label.fw-bold,
.filter-box label.fw-bold{
    display:block;
    margin-top:1.35rem;
    margin-bottom:.55rem;
    font-size:.72rem !important;
    font-weight:700 !important;
    letter-spacing:.11em;
    text-transform:uppercase;
    color:var(--rft-muted);
}
.filter-box .form-check{
    padding:.18rem .1rem .18rem 1.7rem;
    border-radius:var(--rft-r-xs);
    transition:background .18s var(--rft-ease);
}
.filter-box .form-check:hover{ background:var(--rft-navy-50); }

/* --------------------------------------------------------------------------
   Fenetres : voile blanc translucide plutot que le noir de Bootstrap.
   -------------------------------------------------------------------------- */
.modal-backdrop{ background:#f1f4f9; }
.modal-backdrop.show{ opacity:.78; }
@supports (backdrop-filter: blur(3px)) {
    .modal{ backdrop-filter:blur(3px); }
}
.modal.fade .modal-dialog{
    transform:translateY(12px) scale(.985);
    transition:transform .28s var(--rft-ease), opacity .28s var(--rft-ease);
}
.modal.show .modal-dialog{ transform:none; }

/* Champ brut du curseur : masque tant que bootstrap-slider ne l'a pas
   remplace (sinon une boite de saisie vide apparait sous la pastille). */
#priceSlider{ display:none; }
.filter-vide{
    margin:0 0 1rem;
    font-size:.82rem;
    color:var(--rft-muted);
}

.price-value{
    background:var(--rft-grad-navy) !important;
    border-radius:var(--rft-r-pill) !important;
    padding:.35rem 1.1rem !important;
    font-weight:700;
    box-shadow:var(--rft-sh-navy);
}

.slider.slider-horizontal .slider-track{ height:6px; background:var(--rft-line); border-radius:var(--rft-r-pill); }
.slider-selection{ background:var(--rft-grad-navy) !important; border-radius:var(--rft-r-pill); }
.slider-handle{
    width:22px;
    height:22px;
    margin-top:-2px;
    background:var(--rft-grad-gold) !important;
    border:3px solid #fff;
    box-shadow:0 3px 10px rgba(9,30,66,.28);
}

/* ==========================================================================
   12. PAGE PRODUIT
   ========================================================================== */
.product-title{
    font-size:clamp(1.6rem,2.4vw,2.15rem) !important;
    font-weight:800 !important;
    letter-spacing:-.022em;
    color:var(--rft-navy) !important;
}

.carousel img{ height:410px !important; }

.include-item{
    display:flex;
    align-items:center;
    gap:.6rem;
    margin-bottom:.6rem !important;
    color:var(--rft-body);
}
.include-item i{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:32px;
    height:32px;
    flex:0 0 32px;
    border-radius:50%;
    background:var(--rft-navy-50);
    color:var(--rft-navy) !important;
    font-size:.95rem !important;
}

/* --------------------------------------------------------------------------
   Fiche produit : colonne d'informations (destination, atouts, inclus, ref)
   -------------------------------------------------------------------------- */
.fiche-infos{
    display:flex;
    flex-direction:column;
    gap:.35rem;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
}
.fiche-infos__titre{
    display:flex;
    align-items:center;
    gap:.5rem;
    margin:0 0 .6rem;
    font-size:1.15rem;
    font-weight:800;
    letter-spacing:-.01em;
    text-transform:uppercase;
    color:var(--rft-navy);
}
.fiche-infos__titre i{ font-size:1rem; color:var(--rft-gold-700); }

.fiche-infos__label{
    margin:.7rem 0 .45rem;
    font-size:.68rem;
    font-weight:800;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--rft-muted);
}

/* Atouts : puces en coche verte */
.fiche-plus{
    list-style:none;
    margin:0;
    padding:0;
    display:flex;
    flex-direction:column;
    gap:.4rem;
}
.fiche-plus li{
    display:flex;
    align-items:flex-start;
    gap:.55rem;
    font-size:.9rem;
    line-height:1.4;
    color:var(--rft-body);
}
.fiche-plus li i{
    flex:0 0 auto;
    margin-top:.15rem;
    font-size:.9rem;
    color:var(--rft-green);
}
.fiche-infos__lien{
    align-self:flex-start;
    display:inline-flex;
    align-items:center;
    gap:.35rem;
    margin-top:.35rem;
    font-size:.82rem;
    font-weight:700;
    color:var(--rft-navy);
    text-decoration:none;
}
.fiche-infos__lien i{ transition:transform .18s var(--rft-ease); }
.fiche-infos__lien:hover{ color:var(--rft-navy-500); }
.fiche-infos__lien:hover i{ transform:translateX(3px); }

/* Prestations incluses : pastilles icone + libelle, sur plusieurs lignes */
.fiche-inclus{
    list-style:none;
    margin:0;
    padding:0;
    display:flex;
    flex-wrap:wrap;
    gap:.45rem;
}
.fiche-inclus li{
    display:inline-flex;
    align-items:center;
    gap:.45rem;
    padding:.3rem .75rem .3rem .35rem;
    border:1px solid var(--rft-line);
    border-radius:var(--rft-r-pill);
    background:#fff;
    font-size:.8rem;
    font-weight:600;
    color:var(--rft-navy-900);
    white-space:nowrap;
}
.fiche-inclus li i{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:26px;
    height:26px;
    border-radius:50%;
    background:var(--rft-navy-50);
    color:var(--rft-navy);
    font-size:.82rem;
}

/* Reference : filet au-dessus, code en capsule */
.fiche-ref{
    display:flex;
    align-items:center;
    gap:.6rem;
    margin-top:1rem;
    padding-top:.8rem;
    border-top:1px solid var(--rft-line-soft);
    font-size:.78rem;
    color:var(--rft-muted);
}
.fiche-ref strong{
    padding:.2rem .6rem;
    border-radius:var(--rft-r-xs);
    background:var(--rft-bg);
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    font-size:.8rem;
    font-weight:700;
    letter-spacing:.04em;
    color:var(--rft-navy);
}

/* Bloc prix lateral */
.col-lg-2 > .price-box,
.col-lg-3 > .price-box,
.col-lg-4 > .price-box{
    position:relative;
    overflow:hidden;
    background:var(--rft-grad-navy) !important;
    border-radius:var(--rft-r-lg) !important;
    padding:26px 20px !important;
    box-shadow:var(--rft-sh-navy) !important;
}
.col-lg-2 > .price-box::before,
.col-lg-3 > .price-box::before,
.col-lg-4 > .price-box::before{
    content:"";
    position:absolute;
    left:0; top:0;
    width:100%;
    height:4px;
    background:var(--rft-grad-gold);
}
.price{
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:2.6rem !important;
    font-weight:800 !important;
    letter-spacing:-.03em;
    line-height:1.05;
    margin:.35rem 0 .55rem;
}
.oldPrice,
.old-price,
strike.oldPrice{
    color:rgba(255,255,255,.6) !important;
    font-size:.95rem;
}
.discount{
    display:inline-block;
    background:var(--rft-grad-gold) !important;
    color:var(--rft-navy-900) !important;
    font-weight:800;
    font-size:.85rem;
    padding:.35rem 1rem !important;
    border-radius:var(--rft-r-pill) !important;
    box-shadow:0 4px 12px rgba(0,0,0,.2);
}
.price-box p,
.price-box .fs-6{ color:rgba(255,255,255,.78) !important; font-size:.84rem !important; line-height:1.6; }

/* Compteur voyageurs */
.counter{ display:inline-flex; align-items:center; gap:.4rem; }
.counter input,
.counter .form-control{
    min-height:38px !important;
    width:56px !important;
    padding:.3rem;
    border-radius:var(--rft-r-xs) !important;
    font-weight:700;
    color:var(--rft-navy);
}
.btn-traveler{
    width:38px;
    height:38px;
    padding:0 !important;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    border-radius:50% !important;
    font-size:1.15rem !important;
    line-height:1;
}

/* Onglets */
.nav-tabs{ border-bottom:1px solid var(--rft-line); gap:.25rem; }
.nav-tabs .nav-link{
    border:0 !important;
    border-radius:var(--rft-r-sm) var(--rft-r-sm) 0 0 !important;
    padding:.75rem 1.25rem;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-weight:600;
    color:var(--rft-body) !important;
    position:relative;
    transition:color .2s var(--rft-ease), background .2s var(--rft-ease);
}
.nav-tabs .nav-link:hover{ background:var(--rft-navy-50); color:var(--rft-navy) !important; }
.nav-tabs .nav-link.active{
    background:transparent !important;
    color:var(--rft-navy) !important;
    font-weight:800;
}
.nav-tabs .nav-link.active::after{
    content:"";
    position:absolute;
    left:1rem; right:1rem; bottom:-1px;
    height:3px;
    border-radius:var(--rft-r-pill);
    background:var(--rft-grad-gold);
}
#tabContent{
    box-shadow:var(--rft-sh-1) !important;
    border-top-left-radius:0 !important;
    padding:32px 28px !important;
    color:var(--rft-body);
}

/* --------------------------------------------------------------------------
   Calendrier des disponibilites (FullCalendar)
   Bandeau de mois avec prix d'appel, en-tete des jours en bandeau bleu,
   cases a filets, prix centre, tag « Meilleur prix », carte de survol
   ancree sur la case. Le bandeau est rempli par page-produit.php.

   Les accents (fleches, carte de survol, bouton Devis) partagent une
   seule couleur : changer --cal-accent suffit pour toute la palette.
   -------------------------------------------------------------------------- */
.cal-dispos{
    --cal-accent:var(--rft-gold-600);
    --cal-accent-ink:var(--rft-navy-900);
    --cal-tag:var(--rft-gold);
    --cal-head:var(--rft-navy);
    --cal-line:#d5dbe4;
    --cal-off:#e6eaf0;
    background:#fff;
}
#travelCalendar{ background:#fff; }

/* --- Bandeau des mois --- */
.cal-mois{
    display:grid;
    grid-template-columns:1fr 1fr auto minmax(150px,1.3fr) auto 1fr 1fr;
    align-items:center;
    gap:.25rem;
    padding:.4rem 0 1.1rem;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
}
.cal-mois__autre,
.cal-mois__courant{
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:3px;
    min-height:48px;
    padding:.35rem .25rem;
    border:0;
    border-radius:var(--rft-r-xs);
    background:transparent;
    text-align:center;
    line-height:1.15;
}
.cal-mois__autre{ cursor:pointer; transition:background .18s var(--rft-ease); }
.cal-mois__autre:hover{ background:var(--rft-navy-50); }
.cal-mois__autre.is-empty{ cursor:default; background:transparent; }

.cal-mois__nom{
    font-size:.8rem;
    font-weight:600;
    color:var(--rft-muted);
    white-space:nowrap;
}
.cal-mois__des{
    font-size:.78rem;
    font-weight:800;
    color:var(--rft-navy);
    white-space:nowrap;
    min-height:1em;
}
.cal-mois__courant .cal-mois__nom{
    font-size:1.05rem;
    font-weight:800;
    letter-spacing:.02em;
    text-transform:uppercase;
    color:var(--rft-navy-900);
    white-space:normal;
}
.cal-mois__courant .cal-mois__des{ font-size:.85rem; }

.cal-mois__nav{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:36px;
    height:36px;
    padding:0;
    border:0;
    border-radius:50%;
    background:transparent;
    color:var(--rft-navy);
    font-size:1.35rem;
    cursor:pointer;
    transition:background .18s var(--rft-ease), color .18s var(--rft-ease);
}
.cal-mois__nav i{ -webkit-text-stroke:1px currentColor; }
.cal-mois__nav:hover{ background:var(--rft-navy-50); color:var(--rft-navy-900); }
.cal-mois__nav:disabled{ opacity:.25; cursor:default; background:transparent; }

/* --- Voile de chargement des dispos --- */
.cal-dispos{ position:relative; }
.cal-dispos #travelCalendar{ transition:opacity .2s var(--rft-ease), filter .2s var(--rft-ease); }
.cal-dispos.is-loading #travelCalendar{ opacity:.45; filter:saturate(.6); pointer-events:none; }

.cal-loader{
    position:absolute;
    inset:0;
    z-index:5;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:.75rem;
    background:rgba(255,255,255,.55);
    opacity:0;
    visibility:hidden;
    pointer-events:none;
    transition:opacity .2s var(--rft-ease), visibility 0s linear .2s;
}
.cal-dispos.is-loading .cal-loader{
    opacity:1;
    visibility:visible;
    transition-delay:0s;
}
.cal-loader__spin{
    width:38px;
    height:38px;
    border-radius:50%;
    border:3px solid var(--rft-navy-100);
    border-top-color:var(--rft-navy);
    animation:cal-spin .8s linear infinite;
}
.cal-loader__text{
    padding:.35rem .8rem;
    border-radius:var(--rft-r-pill);
    background:#fff;
    box-shadow:var(--rft-sh-1);
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.74rem;
    font-weight:700;
    letter-spacing:.02em;
    color:var(--rft-navy);
}
@keyframes cal-spin{ to{ transform:rotate(360deg); } }

/* --- Barre FullCalendar (desactivee : headerToolbar:false) --- */
.fc .fc-toolbar.fc-header-toolbar{ display:none; }

/* --- En-tete des jours : bandeau bleu --- */
.fc .fc-col-header{ background:var(--cal-head); }
.fc .fc-col-header-cell{
    background:var(--cal-head);
    padding:.55rem 0;
    border:0;
}
.fc .fc-col-header-cell-cushion{
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.82rem;
    font-weight:700;
    text-transform:capitalize;
    color:#fff !important;
}
.fc-theme-standard .fc-scrollgrid > thead th{ border:0; }

/* --- Grille : filets gris moyens, cases carrees --- */
.fc-theme-standard td{ border-color:var(--cal-line); }
.fc-theme-standard .fc-scrollgrid{ border:1px solid var(--cal-line); border-top:0; }
.fc .fc-scrollgrid-section > td{ border:0; }
.fc .fc-scrollgrid-section-body > td{ border:0; }

.fc .fc-daygrid-day-frame{
    position:relative;
    display:flex;
    flex-direction:column;
    min-height:92px;
    padding:.25rem .4rem .35rem;
}
.fc .fc-daygrid-day-top{
    flex:0 0 auto;
    flex-direction:row-reverse;
    line-height:1;
}
.fc .fc-daygrid-day-number{
    padding:0;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.72rem;
    font-weight:500;
    color:var(--rft-muted) !important;
}
.fc .fc-daygrid-day-events{
    flex:1 1 auto;
    display:flex;
    align-items:center;
    justify-content:center;
    margin:0;
    min-height:0;
}
.fc .fc-daygrid-day-events .fc-daygrid-event-harness{ width:100%; }
.fc .fc-daygrid-day-bottom{ display:none; }

/* Jour du jour : numero en bleu, sans fond jaune. */
.fc .fc-day-today{ background:transparent !important; }
.fc .fc-day-today .fc-daygrid-day-number{
    color:var(--rft-navy) !important;
    font-weight:800;
}

/* Jours disponibles : le survol suggere le clic. */
.fc .fc-daygrid-day:has(.fc-daygrid-event-harness){ cursor:pointer; }
.fc .fc-daygrid-day:has(.fc-daygrid-event-harness):hover{
    background:var(--rft-navy-50);
}

/* --- Prix --- */
.fc-event,
.fc .fc-bg-event{
    background:transparent !important;
    border:0 !important;
    box-shadow:none !important;
}
/* Les evenements « background » vivent dans une couche absolue a part
   (.fc-daygrid-bg-harness), pas dans .fc-daygrid-day-events : c'est
   cette couche qu'il faut etirer et centrer pour que le prix tombe au
   milieu de la case. */
.fc .fc-daygrid-day-bg .fc-daygrid-bg-harness{
    top:0;
    right:0;
    bottom:0;
    left:0;
}
.fc .fc-bg-event{
    display:flex;
    align-items:center;
    justify-content:center;
    height:100%;
    padding:0;
    opacity:1 !important;
}

.price-event{
    display:flex;
    flex-direction:column;
    align-items:center;
    width:100%;
    margin:0;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    text-align:center;
    line-height:1.1;
}
.price-event .price-now{
    font-size:1.12rem;
    font-weight:800;
    letter-spacing:-.02em;
    color:var(--rft-navy-900);
    white-space:nowrap;
}
/* Le tag occupe toute la largeur de la case, colle en bas. */
.price-event .price-best{
    position:absolute;
    left:0;
    right:0;
    bottom:0;
    padding:3px 0;
    background:var(--cal-tag);
    font-size:.66rem;
    font-weight:700;
    color:var(--cal-accent-ink);
    text-align:center;
    white-space:nowrap;
}

/* --- Jours hors mois et jours passes : fond gris-bleu, numero pale --- */
.fc .fc-daygrid-day.fc-day-other,
.fc .fc-daygrid-day.fc-day-disabled,
.fc .fc-daygrid-day.fc-day-disabled:hover,
.fc .fc-daygrid-day.fc-day-other:hover{
    background:var(--cal-off);
    cursor:default;
}
.fc .fc-daygrid-day.fc-day-other .fc-daygrid-day-number,
.fc .fc-daygrid-day.fc-day-disabled .fc-daygrid-day-number{
    color:#aab3c0 !important;
    font-weight:500;
}
.fc .fc-day-other .fc-daygrid-day-events{ display:none; }

@media (max-width:767.98px){
    .cal-mois{ grid-template-columns:auto 1fr auto; }
    .cal-mois__autre{ display:none; }
    .fc .fc-daygrid-day-frame{ min-height:70px; padding:.2rem .25rem .3rem; }
    .price-event .price-now{ font-size:.85rem; }
    .price-event .price-best{ font-size:.55rem; }
    .fc .fc-col-header-cell-cushion{ font-size:.7rem; }
}

/* --------------------------------------------------------------------------
   Carte de survol : ancree sur la case (pointer-events:none, le clic va
   a la case). Prix, ancien prix, dates aller/retour, bouton Devis.
   -------------------------------------------------------------------------- */
.calendar-tooltip{
    position:absolute;
    z-index:9999;
    width:150px;
    padding:18px 10px 0 !important;
    text-align:center;
    background:#fff;
    border:2px solid var(--rft-gold-600) !important;
    border-radius:6px !important;
    box-shadow:var(--rft-sh-3) !important;
    overflow:hidden;
    pointer-events:none;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:12px;
}
.calendar-tooltip .tooltip-price{
    font-size:1.55rem !important;
    font-weight:800 !important;
    color:var(--rft-navy) !important;
    letter-spacing:-.025em;
    line-height:1;
    margin-bottom:.6rem;
}
.calendar-tooltip .tooltip-old{
    margin:-.4rem 0 .6rem;
    font-size:.78rem;
    font-weight:600;
    color:var(--rft-muted);
    text-decoration:line-through;
}
.calendar-tooltip .tooltip-date{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:5px;
    margin-bottom:4px;
    color:var(--rft-navy-900);
    font-size:.74rem;
    font-weight:700;
    white-space:nowrap;
}
.calendar-tooltip .tooltip-date i{ color:var(--rft-gold-700); font-size:.8rem; }

/* Le bouton deborde le rembourrage pour toucher les bords de la carte. */
.calendar-tooltip .btn-devis{
    display:block;
    width:calc(100% + 20px);
    margin:.8rem -10px 0;
    padding:.5rem 0;
    border-radius:0 !important;
    background:var(--rft-gold) !important;
    font-size:.78rem;
    font-weight:800;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--rft-navy-900) !important;
    box-shadow:none;
    transform:none;
}

.assurances{ border-radius:var(--rft-r-sm); }

/* ==========================================================================
   VISIONNEUSE D'IMAGES (clic sur une photo du carrousel produit)
   Le conteneur est cree par page-produit.php ; ici, tout le visuel.
   ========================================================================== */
#hotelCarousel .carousel-item img{ cursor:zoom-in; }

.rft-lightbox{
    position:fixed;
    inset:0;
    z-index:2000;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:56px 72px;
    background:rgba(3,31,66,.9);
    opacity:0;
    visibility:hidden;
    transition:opacity .22s var(--rft-ease), visibility 0s linear .22s;
}
.rft-lightbox.is-open{
    opacity:1;
    visibility:visible;
    transition-delay:0s;
}
body.rft-lightbox-open{ overflow:hidden; }

.rft-lightbox__cadre{
    display:flex;
    align-items:center;
    justify-content:center;
    width:100%;
    height:100%;
    margin:0;
}
.rft-lightbox__img{
    max-width:100%;
    max-height:100%;
    object-fit:contain;
    border-radius:var(--rft-r-sm);
    box-shadow:0 30px 80px rgba(0,0,0,.5);
    transform:scale(.96);
    transition:transform .25s var(--rft-ease);
}
.rft-lightbox.is-open .rft-lightbox__img{ transform:scale(1); }

/* Boutons : disques translucides, blancs au survol */
.rft-lightbox__fermer,
.rft-lightbox__nav{
    position:absolute;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    padding:0;
    border:1px solid rgba(255,255,255,.25);
    border-radius:50%;
    background:rgba(255,255,255,.12);
    color:#fff;
    cursor:pointer;
    transition:background .18s var(--rft-ease), transform .18s var(--rft-ease);
}
.rft-lightbox__fermer:hover,
.rft-lightbox__nav:hover{ background:rgba(255,255,255,.28); }
.rft-lightbox__fermer:focus-visible,
.rft-lightbox__nav:focus-visible{ outline:none; box-shadow:0 0 0 3px var(--rft-gold); }

.rft-lightbox__fermer{
    top:16px;
    right:16px;
    width:42px;
    height:42px;
    font-size:1.05rem;
}
.rft-lightbox__nav{
    top:50%;
    width:48px;
    height:48px;
    margin-top:-24px;
    font-size:1.5rem;
}
.rft-lightbox__nav i{ -webkit-text-stroke:1px currentColor; }
.rft-lightbox__nav--prev{ left:16px; }
.rft-lightbox__nav--next{ right:16px; }
.rft-lightbox__nav:hover{ transform:scale(1.06); }

.rft-lightbox__compteur{
    position:absolute;
    bottom:18px;
    left:50%;
    transform:translateX(-50%);
    padding:.3rem .8rem;
    border-radius:var(--rft-r-pill);
    background:rgba(255,255,255,.12);
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.74rem;
    font-weight:700;
    letter-spacing:.06em;
    color:#fff;
}
.rft-lightbox.is-seule .rft-lightbox__nav,
.rft-lightbox.is-seule .rft-lightbox__compteur{ display:none; }

@media (max-width:767.98px){
    .rft-lightbox{ padding:56px 12px 48px; }
    .rft-lightbox__nav{ width:40px; height:40px; margin-top:-20px; font-size:1.2rem; }
    .rft-lightbox__nav--prev{ left:8px; }
    .rft-lightbox__nav--next{ right:8px; }
    .rft-lightbox__img{ border-radius:var(--rft-r-xs); }
}

/* ==========================================================================
   13. STEPPER
   ========================================================================== */
.stepper{ padding:22px 26px !important; margin-bottom:26px; }
.step{ gap:.75rem !important; }
.step-number{
    width:40px !important;
    height:40px !important;
    flex:0 0 40px;
    background:var(--rft-line) !important;
    color:var(--rft-muted) !important;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.95rem;
    font-weight:800 !important;
    transition:all .25s var(--rft-ease);
}
.step.active .step-number{
    background:var(--rft-grad-navy) !important;
    color:#fff !important;
    box-shadow:0 0 0 5px rgba(6,57,112,.12), var(--rft-sh-navy);
}
.step > span,
.step > div{
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.92rem;
    font-weight:600;
    color:var(--rft-muted);
}
.step.active > span,
.step.active > div{ color:var(--rft-navy); font-weight:700; }
/* Etape franchie : coche verte */
.step.done .step-number{
    background:var(--rft-green) !important;
    color:#fff !important;
    display:inline-flex; align-items:center; justify-content:center;
}
.step.done > span,
.step.done > div{ color:var(--rft-green); }
.step-line{
    height:3px !important;
    border-radius:var(--rft-r-pill);
    background:linear-gradient(90deg,var(--rft-navy-100),var(--rft-line)) !important;
    margin:0 .5rem;
}

/* ==========================================================================
   14. RESERVATION / DEVIS
   ========================================================================== */
.traveler-card{
    border:1px solid var(--rft-line) !important;
    border-radius:var(--rft-r) !important;
    padding:18px !important;
    background:linear-gradient(180deg,#fff,#fbfcfe);
    transition:border-color .2s var(--rft-ease), box-shadow .2s var(--rft-ease);
}
.traveler-card:hover{ border-color:var(--rft-navy-100) !important; box-shadow:var(--rft-sh-1); }

.option-card{
    border:1.5px solid var(--rft-line) !important;
    border-radius:var(--rft-r-sm) !important;
    padding:14px 16px !important;
    background:#fff;
    transition:border-color .2s var(--rft-ease), background .2s var(--rft-ease), box-shadow .2s var(--rft-ease);
}
.option-card:hover{
    background:var(--rft-navy-50) !important;
    border-color:var(--rft-navy-200) !important;
}
.option-card:has(input:checked){
    border-color:var(--rft-navy) !important;
    background:var(--rft-navy-50) !important;
    box-shadow:0 0 0 3px rgba(6,57,112,.10);
}

/* Categorie sans repartition possible : proposee mais grisee */
.option-card--off,
.option-card--off:hover{
    background:var(--rft-bg) !important;
    border-style:dashed !important;
    border-color:var(--rft-line) !important;
    color:var(--rft-muted);
    cursor:not-allowed;
}
.option-card__note{
    display:inline-block;
    margin-left:.4rem;
    padding:.1rem .55rem;
    border-radius:var(--rft-r-pill);
    background:#fdecec;
    font-size:.7rem;
    font-weight:700;
    color:var(--rft-red);
    vertical-align:middle;
}

/* Prix et unite d'une option du devis */
.option-card__prix{
    float:right;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-weight:800;
    color:var(--rft-navy);
}
.option-card__unite{
    margin-left:.35rem;
    font-size:.72rem;
    color:var(--rft-muted);
}
.repartition-groupe{
    margin:.6rem 0 .3rem;
    font-size:.7rem;
    font-weight:800;
    letter-spacing:.12em;
    text-transform:uppercase;
    color:var(--rft-muted);
}

/* Vol aller / retour du devis */
.vol{
    display:grid;
    grid-template-columns:130px 1fr 2fr auto;
    align-items:center;
    gap:1rem;
    padding:.6rem .2rem;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
}
.vol-separateur{ margin:.3rem 0; opacity:.35; }
.vol__compagnie{ display:flex; align-items:center; gap:.5rem; min-width:0; }
.vol__compagnie img{ height:28px; width:auto; max-width:70px; object-fit:contain; }
.vol__compagnie span{ font-size:.78rem; font-weight:700; color:var(--rft-navy-900); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.vol__date{ font-size:.82rem; color:var(--rft-body); }
.vol__sens{
    display:inline-block;
    margin-right:.4rem;
    padding:.1rem .5rem;
    border-radius:var(--rft-r-pill);
    background:var(--rft-navy-50);
    font-size:.66rem;
    font-weight:800;
    letter-spacing:.08em;
    text-transform:uppercase;
    color:var(--rft-navy);
}
.vol__trajet{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:.6rem; }
.vol__etape{ display:flex; flex-direction:column; line-height:1.15; }
.vol__etape strong{ font-size:1rem; color:var(--rft-navy-900); }
.vol__aero{ font-size:.82rem; font-weight:700; color:var(--rft-navy); }
.vol__etape small{ font-size:.7rem; color:var(--rft-muted); }
.vol__etape:last-child{ text-align:right; }
.vol__fleche{ display:flex; flex-direction:column; align-items:center; color:var(--rft-navy-400); }
.vol__fleche i{ font-size:1rem; transform:rotate(90deg); }
.vol__fleche small{ font-size:.62rem; color:var(--rft-muted); white-space:nowrap; }
.vol__bagage{ display:flex; align-items:center; gap:.35rem; font-size:.74rem; font-weight:600; color:var(--rft-muted); white-space:nowrap; }
.vol__bagage.is-on{ color:var(--rft-green); }
@media (max-width:767.98px){
    .vol{ grid-template-columns:1fr 1fr; }
    .vol__trajet{ grid-column:1 / -1; }
}

/* Recapitulatif + devis : une seule carte, photo en tete, totaux en pied */
.recap-colonne{ top:110px; }
.recap{
    overflow:hidden;
    border:1px solid var(--rft-line);
    border-radius:var(--rft-r-lg);
    background:#fff;
    box-shadow:var(--rft-sh-2);
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
}
.recap__vide{
    padding:2rem 1.2rem;
    text-align:center;
    color:var(--rft-muted);
    font-size:.88rem;
}
.recap__vide i{ display:block; margin-bottom:.5rem; font-size:1.8rem; color:var(--rft-navy-200); }
.recap__vide p{ margin:0; }

/* --- Photo avec voile et titre --- */
.recap__photo{ position:relative; aspect-ratio:16 / 9; background:var(--rft-navy-900); }
.recap__photo img{ width:100%; height:100%; object-fit:cover; display:block; }
.recap__photo-voile{
    position:absolute;
    inset:0;
    display:flex;
    flex-direction:column;
    justify-content:flex-end;
    padding:1rem 1.1rem .9rem;
    background:linear-gradient(180deg, rgba(3,31,66,0) 30%, rgba(3,31,66,.85) 100%);
    color:#fff;
}
.recap__etiquette{
    align-self:flex-start;
    margin-bottom:.4rem;
    padding:.15rem .55rem;
    border-radius:var(--rft-r-pill);
    background:var(--rft-gold);
    font-size:.58rem;
    font-weight:800;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--rft-navy-900);
}
.recap__nom{
    margin:0;
    font-size:1.05rem;
    font-weight:800;
    letter-spacing:-.01em;
    line-height:1.2;
    color:#fff;
}
.recap__lieu{ margin:.2rem 0 0; font-size:.76rem; color:rgba(255,255,255,.85); }
.recap__lieu i{ color:var(--rft-gold); }

/* --- Informations cles --- */
.recap__infos{
    list-style:none;
    margin:0;
    padding:.35rem 1.1rem;
}
.recap__infos li{
    display:grid;
    grid-template-columns:22px 1fr auto;
    align-items:center;
    gap:.5rem;
    padding:.5rem 0;
    border-bottom:1px dashed var(--rft-line);
    font-size:.82rem;
}
.recap__infos li:last-child{ border-bottom:0; }
.recap__infos i{ font-size:.9rem; color:var(--rft-navy-400); text-align:center; }
.recap__ico-retour{ transform:rotate(180deg); }
.recap__cle{ color:var(--rft-muted); }
.recap__val{ font-weight:700; color:var(--rft-navy-900); text-align:right; }

/* --- Devis --- */
.recap__devis{ border-top:1px solid var(--rft-line); background:var(--rft-bg); }
.recap__devis-titre{
    display:flex;
    align-items:center;
    gap:.4rem;
    padding:.75rem 1.1rem 0;
    font-size:.68rem;
    font-weight:800;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--rft-navy);
}
.recap__devis-titre i{ font-size:.85rem; }
#tarification{ padding:.4rem 0 0; }
#tarification > .text-muted,
#tarification > .alert{ margin:.4rem 1.1rem 1rem !important; font-size:.82rem; }

/* Detail replie */
.tarif__detail{ margin:0 1.1rem; border-bottom:1px solid var(--rft-line); }
.tarif__detail summary{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:.55rem 0;
    list-style:none;
    cursor:pointer;
    font-size:.8rem;
    font-weight:700;
    color:var(--rft-navy);
}
.tarif__detail summary::-webkit-details-marker{ display:none; }
.tarif__detail summary small{ margin-left:.3rem; font-weight:600; color:var(--rft-muted); }
.tarif__chevron{ transition:transform .2s var(--rft-ease); }
.tarif__detail[open] .tarif__chevron{ transform:rotate(180deg); }
.tarif__section{ padding:.2rem 0 .5rem; }
.tarif__intitule{
    margin:.35rem 0 .1rem;
    font-size:.62rem;
    font-weight:800;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--rft-muted);
}
.tarif__ligne{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:.8rem;
    padding:.32rem 0;
    font-size:.8rem;
    color:var(--rft-body);
}
.tarif__lib{ display:flex; flex-direction:column; min-width:0; line-height:1.25; }
.tarif__lib small{ font-size:.68rem; color:var(--rft-muted); }
.tarif__montant{ flex:0 0 auto; font-weight:700; white-space:nowrap; color:var(--rft-ink); }
.tarif__montant.is-remise{ color:var(--rft-green); }

/* Totaux intermediaires */
.tarif__totaux{ padding:.45rem 1.1rem .6rem; }
.tarif__totaux .tarif__ligne{ padding:.28rem 0; }
.tarif__totaux .tarif__ligne:first-child .tarif__lib,
.tarif__totaux .tarif__ligne:first-child .tarif__montant{ font-weight:800; color:var(--rft-navy-900); }

/* Total : pied de carte bleu marine, pleine largeur */
.tarif__total{
    position:relative;
    padding:.9rem 1.1rem 1rem;
    background:var(--rft-grad-navy);
    color:#fff;
}
.tarif__total::before{
    content:"";
    position:absolute;
    left:0; top:0;
    width:100%;
    height:3px;
    background:var(--rft-grad-gold);
}
.tarif__total-client,
.tarif__total-agence{ display:flex; align-items:baseline; justify-content:space-between; gap:1rem; }
.tarif__total-client{ padding-bottom:.5rem; margin-bottom:.5rem; border-bottom:1px solid rgba(255,255,255,.18); font-size:.8rem; color:rgba(255,255,255,.78); }
.tarif__total-client strong{ font-weight:700; color:#fff; }
.tarif__total-agence span{
    font-size:.66rem;
    font-weight:800;
    letter-spacing:.12em;
    text-transform:uppercase;
    color:var(--rft-gold);
}
.tarif__total-agence strong{
    font-size:1.55rem;
    font-weight:800;
    letter-spacing:-.025em;
    line-height:1;
    white-space:nowrap;
}

@media (max-width:991.98px){
    .recap-colonne{ position:static; }
}

/* Alerte vols dans le bloc tarif */
.tarif__alerte{ margin:.5rem 1.1rem .4rem; padding:.6rem .8rem; font-size:.8rem; border-radius:var(--rft-r-xs); }

/* Net agence replie sous le montant client (pied bleu marine) */
.tarif__total-principal strong{ font-size:1.55rem; }
.tarif__net{ margin-top:.6rem; padding-top:.5rem; border-top:1px solid rgba(255,255,255,.18); }
.tarif__net summary{
    display:flex;
    align-items:center;
    gap:.4rem;
    list-style:none;
    cursor:pointer;
    font-size:.72rem;
    font-weight:700;
    letter-spacing:.04em;
    color:rgba(255,255,255,.8);
}
.tarif__net summary::-webkit-details-marker{ display:none; }
.tarif__net summary .tarif__chevron{ margin-left:auto; }
.tarif__net[open] summary .tarif__chevron{ transform:rotate(180deg); }
.tarif__net-lignes{ margin-top:.5rem; }
.tarif__net-ligne{
    display:flex;
    align-items:baseline;
    justify-content:space-between;
    gap:1rem;
    padding:.3rem 0;
    font-size:.8rem;
    color:rgba(255,255,255,.8);
}
.tarif__net-ligne strong{ font-weight:700; color:#fff; }
.tarif__net-ligne--total{ margin-top:.25rem; padding-top:.5rem; border-top:1px dashed rgba(255,255,255,.25); }
.tarif__net-ligne--total span{ font-size:.66rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; color:var(--rft-gold); }
.tarif__net-ligne--total strong{ font-size:1.15rem; font-weight:800; }

/* Cures : grille compacte de cartes cochables */
.cures-grille{
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:.55rem;
}
.cure-card{
    position:relative;
    display:flex;
    align-items:center;
    gap:.6rem;
    margin:0;
    padding:.55rem .7rem;
    border:1.5px solid var(--rft-line);
    border-radius:var(--rft-r-sm);
    background:#fff;
    cursor:pointer;
    transition:border-color .18s var(--rft-ease), background .18s var(--rft-ease), box-shadow .18s var(--rft-ease);
}
.cure-card:hover{ border-color:var(--rft-navy-200); background:var(--rft-navy-50); }
.cure-card input{ position:absolute; opacity:0; width:0; height:0; }
.cure-card__coche{
    flex:0 0 auto;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:20px;
    height:20px;
    border:1.5px solid var(--rft-line);
    border-radius:6px;
    background:#fff;
    color:#fff;
    font-size:.8rem;
    transition:background .15s var(--rft-ease), border-color .15s var(--rft-ease);
}
.cure-card__coche i{ opacity:0; transform:scale(.6); transition:opacity .15s var(--rft-ease), transform .15s var(--rft-ease); }
.cure-card:has(input:checked){
    border-color:var(--rft-navy);
    background:var(--rft-navy-50);
    box-shadow:0 0 0 3px rgba(6,57,112,.10);
}
.cure-card:has(input:checked) .cure-card__coche{ background:var(--rft-navy); border-color:var(--rft-navy); }
.cure-card:has(input:checked) .cure-card__coche i{ opacity:1; transform:scale(1); }
.cure-card:has(input:focus-visible){ box-shadow:0 0 0 3px rgba(6,57,112,.25); }
.cure-card.is-inclus{ cursor:default; }
.cure-card__texte{ display:flex; flex-direction:column; min-width:0; line-height:1.2; }
.cure-card__nom{
    font-size:.84rem;
    font-weight:700;
    color:var(--rft-navy-900);
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.cure-card__meta{ margin-top:2px; font-size:.7rem; color:var(--rft-muted); white-space:nowrap; }
.cure-card__meta i{ font-size:.66rem; margin-right:2px; }
.cure-card__prix{
    flex:0 0 auto;
    margin-left:auto;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.9rem;
    font-weight:800;
    letter-spacing:-.01em;
    color:var(--rft-navy);
    white-space:nowrap;
}
.cure-card .badge{ margin-left:auto; }
@media (max-width:575.98px){
    .cures-grille{ grid-template-columns:1fr; }
}

/* Etape voyageurs : une chambre = un bloc, un voyageur = une carte */
.chambre-bloc{ margin-bottom:1.1rem; }
.chambre-bloc:last-child{ margin-bottom:0; }
.chambre-bloc__titre{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    gap:.6rem;
    margin-bottom:.7rem;
    padding:.55rem .8rem;
    border-radius:var(--rft-r-xs);
    background:var(--rft-navy-50);
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
}
.chambre-bloc__num{ font-size:.9rem; font-weight:800; color:var(--rft-navy); }
.chambre-bloc__num i{ margin-right:.25rem; }
.chambre-bloc__type{ font-size:.82rem; font-weight:600; color:var(--rft-navy-900); }
.chambre-bloc__compo{ margin-left:auto; font-size:.74rem; color:var(--rft-muted); }

.voyageur-card{
    height:100%;
    padding:.85rem .9rem .9rem;
    border:1.5px solid var(--rft-line);
    border-radius:var(--rft-r-sm);
    background:#fff;
    transition:border-color .18s var(--rft-ease), box-shadow .18s var(--rft-ease);
}
.voyageur-card:focus-within{ border-color:var(--rft-navy-200); box-shadow:0 0 0 3px rgba(6,57,112,.08); }
.voyageur-card__entete{
    display:flex;
    align-items:center;
    gap:.5rem;
    margin-bottom:.7rem;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
}
.voyageur-card__entete strong{ font-size:.9rem; color:var(--rft-navy-900); }
.voyageur-card__entete small{ margin-left:auto; font-size:.7rem; font-weight:600; color:var(--rft-muted); }
.voyageur-card__badge{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:24px;
    height:24px;
    border-radius:50%;
    background:var(--rft-navy);
    color:#fff;
    font-size:.72rem;
    font-weight:800;
}
.voyageur-card--enfant .voyageur-card__badge{ background:var(--rft-navy-400); }
.voyageur-card--bebe .voyageur-card__badge{ background:var(--rft-gold-700); }
.voyageur-card .form-control,
.voyageur-card .form-select{ font-size:.86rem; }

.champ-date{ position:relative; }
.champ-date > i{
    position:absolute;
    left:.75rem;
    top:50%;
    transform:translateY(-50%);
    font-size:.85rem;
    color:var(--rft-muted);
    pointer-events:none;
}
.champ-date .form-control{ padding-left:2.1rem; }
.champ-date .form-control.is-invalid ~ .invalid-feedback{ display:block; }

/* --------------------------------------------------------------------------
   Etape voyageurs : titres numerotes, champs a icone, cartes voyageur,
   assurance, accords, pied de formulaire.
   -------------------------------------------------------------------------- */
.etape-titre{
    display:flex;
    align-items:center;
    gap:.8rem;
}
.etape-titre__num{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 34px;
    width:34px;
    height:34px;
    border-radius:50%;
    background:var(--rft-grad-navy);
    color:#fff;
    font-size:.9rem;
    font-weight:800;
    box-shadow:var(--rft-sh-navy);
}
.etape-titre__txt{ display:flex; flex-direction:column; line-height:1.15; }
.etape-titre__txt small{
    margin-top:2px;
    font-size:.72rem;
    font-weight:500;
    letter-spacing:0;
    color:var(--rft-muted);
}
.etape-titre__ico{ margin-left:auto; font-size:1.3rem; color:var(--rft-navy-200); }

/* Champ avec icone a gauche */
.champ-ico{ position:relative; }
.champ-ico > i{
    position:absolute;
    left:.85rem;
    top:50%;
    transform:translateY(-50%);
    font-size:.9rem;
    color:var(--rft-muted);
    pointer-events:none;
    transition:color .18s var(--rft-ease);
}
.champ-ico .form-control{ padding-left:2.3rem; }
.champ-ico:focus-within > i{ color:var(--rft-navy); }
#travelers .form-label{
    margin-bottom:.3rem;
    font-size:.74rem;
    font-weight:700;
    letter-spacing:.04em;
    text-transform:uppercase;
    color:var(--rft-muted);
}

/* Champs flottants des cartes voyageur */
.voyageur-card .form-floating > .form-control,
.voyageur-card .form-floating > .form-select{
    height:calc(3.1rem + 2px);
    padding-top:1.35rem;
    padding-bottom:.4rem;
    font-size:.88rem;
}
.voyageur-card .form-floating > label{
    padding:.85rem .9rem;
    font-size:.82rem;
    color:var(--rft-muted);
}
.voyageur-card .form-floating > .form-control:focus ~ label,
.voyageur-card .form-floating > .form-control:not(:placeholder-shown) ~ label{
    transform:scale(.78) translateY(-.55rem) translateX(.15rem);
    color:var(--rft-navy);
}
.voyageur-card .form-select-civ{
    height:calc(3.1rem + 2px);
    font-size:.88rem;
    font-weight:600;
    color:var(--rft-navy-900);
}
.champ-date.form-floating > i{
    left:auto;
    right:.9rem;
    color:var(--rft-navy-400);
}
.champ-date.form-floating .form-control{ padding-left:.9rem; padding-right:2.4rem; }
.champ-date.form-floating .form-control.is-invalid{ background-image:none; }
.voyageur-card .cure-select{
    font-size:.84rem;
    border-style:dashed;
    background-color:var(--rft-bg);
}

/* Assurance : deux cartes cochables cote a cote */
.assur-grille{
    display:grid;
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:.75rem;
}
.assur-card{
    position:relative;
    display:flex;
    align-items:flex-start;
    gap:.75rem;
    margin:0;
    padding:.95rem 1rem;
    border:1.5px solid var(--rft-line);
    border-radius:var(--rft-r-sm);
    background:#fff;
    cursor:pointer;
    transition:border-color .18s var(--rft-ease), background .18s var(--rft-ease), box-shadow .18s var(--rft-ease);
}
.assur-card:hover{ border-color:var(--rft-navy-200); background:var(--rft-navy-50); }
.assur-card input{ position:absolute; opacity:0; width:0; height:0; }
.assur-card__ico{ flex:0 0 auto; margin-top:.1rem; font-size:1.5rem; color:var(--rft-muted); }
.assur-card__ico--on{ color:var(--rft-green); }
.assur-card__txt{ display:flex; flex-direction:column; gap:.2rem; line-height:1.3; }
.assur-card__txt strong{ font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif; font-size:.92rem; color:var(--rft-navy-900); }
.assur-card__txt small{ font-size:.76rem; color:var(--rft-muted); }
.assur-card__coche{
    position:absolute;
    top:.7rem;
    right:.7rem;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:20px;
    height:20px;
    border:1.5px solid var(--rft-line);
    border-radius:50%;
    background:#fff;
    color:#fff;
    font-size:.75rem;
}
.assur-card__coche i{ opacity:0; transform:scale(.6); transition:opacity .15s var(--rft-ease), transform .15s var(--rft-ease); }
.assur-card:has(input:checked){
    border-color:var(--rft-navy);
    background:var(--rft-navy-50);
    box-shadow:0 0 0 3px rgba(6,57,112,.10);
}
.assur-card:has(input:checked) .assur-card__coche{ background:var(--rft-navy); border-color:var(--rft-navy); }
.assur-card:has(input:checked) .assur-card__coche i{ opacity:1; transform:scale(1); }
.assur-card:has(input:focus-visible){ box-shadow:0 0 0 3px rgba(6,57,112,.25); }

/* Accords (RGPD, CGV) : cartes a cocher */
.accord-card{
    position:relative;
    display:flex;
    align-items:flex-start;
    gap:.8rem;
    margin:0 0 .75rem;
    padding:.9rem 1rem;
    border:1.5px solid var(--rft-line);
    border-radius:var(--rft-r-sm);
    background:#fff;
    cursor:pointer;
    transition:border-color .18s var(--rft-ease), background .18s var(--rft-ease);
}
.accord-card:hover{ border-color:var(--rft-navy-200); }
.accord-card input{ position:absolute; opacity:0; width:0; height:0; }
.accord-card__coche{
    flex:0 0 auto;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:22px;
    height:22px;
    margin-top:.1rem;
    border:1.5px solid var(--rft-line);
    border-radius:6px;
    background:#fff;
    color:#fff;
    font-size:.8rem;
    transition:background .15s var(--rft-ease), border-color .15s var(--rft-ease);
}
.accord-card__coche i{ opacity:0; transform:scale(.6); transition:opacity .15s var(--rft-ease), transform .15s var(--rft-ease); }
.accord-card:has(input:checked){ border-color:var(--rft-navy); background:var(--rft-navy-50); }
.accord-card:has(input:checked) .accord-card__coche{ background:var(--rft-navy); border-color:var(--rft-navy); }
.accord-card:has(input:checked) .accord-card__coche i{ opacity:1; transform:scale(1); }
.was-validated .accord-card:has(input:invalid){ border-color:var(--rft-red); }
.accord-card__txt{ display:flex; flex-direction:column; gap:.25rem; line-height:1.35; }
.accord-card__txt strong{ font-size:.88rem; color:var(--rft-navy-900); }
.accord-card__txt small{ font-size:.76rem; color:var(--rft-muted); }

.finaliser-pied{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    margin-top:1.2rem;
    padding-top:1.1rem;
    border-top:1px solid var(--rft-line-soft);
}
.btn-valider{
    padding:.8rem 1.6rem !important;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.95rem;
    font-weight:800;
    letter-spacing:.01em;
    border-radius:var(--rft-r-pill) !important;
    background:var(--rft-grad-navy) !important;
    border:0 !important;
    box-shadow:var(--rft-sh-navy);
}
.btn-valider:hover{ transform:translateY(-2px); }

@media (max-width:575.98px){
    .assur-grille{ grid-template-columns:1fr; }
    .finaliser-pied{ flex-direction:column-reverse; align-items:stretch; }
    .etape-titre__ico{ display:none; }
}

/* --------------------------------------------------------------------------
   Page de confirmation : bandeau, tuiles d'information, documents, suivi
   -------------------------------------------------------------------------- */
.confirm-hero{
    position:relative;
    display:flex;
    align-items:center;
    gap:1.2rem;
    margin-bottom:24px;
    padding:1.6rem 1.8rem;
    border-radius:var(--rft-r-lg);
    background:var(--rft-grad-navy);
    color:#fff;
    box-shadow:var(--rft-sh-navy);
    overflow:hidden;
}
.confirm-hero::before{
    content:"";
    position:absolute;
    left:0; top:0;
    width:100%;
    height:4px;
    background:var(--rft-grad-gold);
}
.confirm-hero__icone{
    flex:0 0 64px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:64px;
    height:64px;
    border-radius:50%;
    background:var(--rft-green);
    color:#fff;
    font-size:2rem;
    box-shadow:0 0 0 8px rgba(11,139,83,.22);
}
.confirm-hero__texte{ flex:1 1 auto; min-width:0; font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif; }
.confirm-hero__sur{
    display:block;
    margin-bottom:.2rem;
    font-size:.68rem;
    font-weight:800;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--rft-gold);
}
.confirm-hero__titre{ margin:0; font-size:1.5rem; font-weight:800; letter-spacing:-.015em; color:#fff; }
.confirm-hero__sous{ margin:.35rem 0 0; font-size:.86rem; color:rgba(255,255,255,.8); }
.confirm-hero__sous strong{ color:#fff; }
.confirm-hero__dossier{
    flex:0 0 auto;
    display:flex;
    flex-direction:column;
    align-items:flex-end;
    padding:.6rem .9rem;
    border-radius:var(--rft-r-sm);
    background:rgba(255,255,255,.1);
    border:1px solid rgba(255,255,255,.18);
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
}
.confirm-hero__dossier span{ font-size:.62rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.7); }
.confirm-hero__dossier strong{ font-size:1.2rem; font-weight:800; white-space:nowrap; }

.confirm-grille{
    display:grid;
    grid-template-columns:repeat(3, minmax(0, 1fr));
    gap:.75rem;
}
.confirm-tuile{
    display:grid;
    grid-template-columns:auto 1fr;
    grid-template-rows:auto auto;
    column-gap:.6rem;
    align-items:center;
    padding:.8rem .9rem;
    border:1px solid var(--rft-line);
    border-radius:var(--rft-r-sm);
    background:var(--rft-bg);
}
.confirm-tuile > i{ grid-row:1 / span 2; font-size:1.2rem; color:var(--rft-navy-400); }
.confirm-tuile__cle{ font-size:.68rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--rft-muted); }
.confirm-tuile__val{ font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif; font-size:.95rem; font-weight:800; color:var(--rft-navy-900); }
.confirm-tuile--total{ background:var(--rft-navy-50); border-color:var(--rft-navy-200); }
.confirm-tuile--total .confirm-tuile__val{ font-size:1.1rem; color:var(--rft-navy); }
.confirm-tuile--total > i{ color:var(--rft-navy); }
.confirm-statut{
    display:inline-block;
    padding:.15rem .6rem;
    border-radius:var(--rft-r-pill);
    font-size:.72rem;
    font-weight:800;
    letter-spacing:.06em;
    text-transform:uppercase;
}
.confirm-statut--ok{ background:var(--rft-green); color:#fff; }
.confirm-statut--attente{ background:var(--rft-gold); color:var(--rft-navy-900); }

.confirm-table{ font-size:.84rem; }
.confirm-table thead th{
    font-size:.64rem;
    font-weight:800;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--rft-muted);
    border-bottom:2px solid var(--rft-line);
    white-space:nowrap;
}
.confirm-table td{ vertical-align:middle; border-color:var(--rft-line-soft); }
.confirm-table__chambre{ white-space:nowrap; }
.confirm-table__chambre strong{ display:block; color:var(--rft-navy); }
.confirm-table__chambre small{ display:block; font-size:.7rem; color:var(--rft-muted); }

.confirm-docs{ display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:.75rem; }
.confirm-doc{
    display:flex;
    align-items:center;
    gap:.8rem;
    padding:.9rem 1rem;
    border:1.5px solid var(--rft-line);
    border-radius:var(--rft-r-sm);
    background:#fff;
    color:var(--rft-navy-900);
    text-align:left;
    text-decoration:none;
    cursor:pointer;
    transition:border-color .18s var(--rft-ease), background .18s var(--rft-ease), transform .18s var(--rft-ease);
}
.confirm-doc:hover{ border-color:var(--rft-navy-200); background:var(--rft-navy-50); color:var(--rft-navy-900); transform:translateY(-2px); }
.confirm-doc:disabled{ opacity:.6; cursor:wait; transform:none; }
.confirm-doc > i:first-child{ font-size:1.5rem; color:var(--rft-navy); }
.confirm-doc > span{ display:flex; flex-direction:column; line-height:1.25; flex:1 1 auto; }
.confirm-doc > span strong{ font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif; font-size:.9rem; }
.confirm-doc > span small{ font-size:.74rem; color:var(--rft-muted); }
.confirm-doc__fleche{ color:var(--rft-navy-400); }

.confirm-suivi{ list-style:none; margin:0; padding:0 0 0 .2rem; }
.confirm-suivi li{
    position:relative;
    padding:0 0 1.1rem 1.7rem;
    font-size:.86rem;
    color:var(--rft-body);
}
.confirm-suivi li::before{
    content:"";
    position:absolute;
    left:.42rem;
    top:1.1rem;
    bottom:-.2rem;
    width:2px;
    background:var(--rft-line);
}
.confirm-suivi li:last-child::before{ display:none; }
.confirm-suivi li::after{
    content:"";
    position:absolute;
    left:0;
    top:.25rem;
    width:16px;
    height:16px;
    border-radius:50%;
    border:2px solid var(--rft-line);
    background:#fff;
}
.confirm-suivi li.is-done::after{ border-color:var(--rft-green); background:var(--rft-green); box-shadow:0 0 0 3px rgba(11,139,83,.18); }
.confirm-suivi li.is-done span{ font-weight:700; color:var(--rft-navy-900); }
.confirm-suivi li span{ display:block; }
.confirm-suivi li small{ font-size:.72rem; color:var(--rft-muted); }

.confirm-infos{ list-style:none; margin:0; padding:0; }
.confirm-infos li{
    display:flex;
    align-items:flex-start;
    gap:.6rem;
    padding:.5rem 0;
    border-bottom:1px dashed var(--rft-line);
    font-size:.86rem;
    color:var(--rft-body);
}
.confirm-infos li:last-child{ border-bottom:0; }
.confirm-infos li i{ flex:0 0 auto; margin-top:.15rem; color:var(--rft-navy-400); }
.confirm-infos li:first-child i{ color:var(--rft-green); }

@media (max-width:767.98px){
    .confirm-hero{ flex-wrap:wrap; }
    .confirm-hero__dossier{ width:100%; align-items:flex-start; }
    .confirm-grille{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
    .confirm-docs{ grid-template-columns:1fr; }
}
@media print{
    header, footer, .stepper, .confirm-docs, .rft-loader, .recap-colonne{ display:none !important; }
    .box, .confirm-hero{ box-shadow:none !important; }
}

/* Detail d'un dossier (detail-reservation.php) */
.confirm-hero__icone--dossier{ background:var(--rft-gold); color:var(--rft-navy-900); box-shadow:0 0 0 8px rgba(252,204,31,.22); font-size:1.7rem; }
.confirm-hero__dossier small{ margin-top:.15rem; font-size:.68rem; color:rgba(255,255,255,.7); white-space:nowrap; }
.detail-actions{ display:flex; flex-wrap:wrap; gap:.6rem; margin:-8px 0 24px; }
.detail-actions .btn-valider span strong{ font-weight:800; }
.detail-infos{ padding:0 !important; }
.detail-infos li{ grid-template-columns:22px auto 1fr; }
.detail-infos .recap__val{ text-align:right; overflow-wrap:anywhere; }
.detail-voyage{ display:grid; grid-template-columns:160px 1fr; gap:1rem; align-items:start; }
.detail-voyage img{ width:100%; aspect-ratio:4 / 3; object-fit:cover; border-radius:var(--rft-r-sm); }
.detail-total{ border-radius:var(--rft-r-sm); margin-top:.6rem; }
#detailResa .box-title .etape-titre__num{ font-size:1rem; }
@media (max-width:575.98px){ .detail-voyage{ grid-template-columns:1fr; } }
@media print{ .detail-actions{ display:none !important; } }

/* Boites du devis en cours de recalcul (AJAX) */
.box-corps{ transition:opacity .2s var(--rft-ease); }
.box-corps.is-loading{ opacity:.45; pointer-events:none; }

/* --------------------------------------------------------------------------
   Etape devis (page-devis.php) : colonne gauche raffinee.
   Le recapitulatif et le bloc devis (partials/devis-recap.php,
   partials/devis-tarif.php) ne sont pas concernes.
   -------------------------------------------------------------------------- */

/* Lien retour, au-dessus du stepper */
.btn-retour{
    display:inline-flex;
    align-items:center;
    gap:.4rem;
    margin-top:1.4rem;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.86rem;
    font-weight:700;
    color:var(--rft-muted);
    text-decoration:none;
    transition:color .2s var(--rft-ease), gap .2s var(--rft-ease);
}
.btn-retour i{ font-size:1rem; }
.btn-retour:hover{ color:var(--rft-navy); gap:.6rem; }

/* Compteurs voyageurs : un groupe arrondi par type, boutons integres */
#devisVoyage .voyageurs-grille .form-label{
    display:block;
    margin-bottom:.45rem;
    font-size:.82rem;
    font-weight:700;
    color:var(--rft-navy-900);
}
#devisVoyage .voyageurs-grille .form-label small{ font-weight:500; }
#devisVoyage .counter{
    display:inline-flex;
    align-items:center;
    gap:0;
    padding:4px;
    border:1.5px solid var(--rft-line);
    border-radius:var(--rft-r-pill);
    background:#fff;
    transition:border-color .2s var(--rft-ease), box-shadow .2s var(--rft-ease);
}
#devisVoyage .counter:hover{ border-color:var(--rft-navy-200); }
#devisVoyage .counter:focus-within{ border-color:var(--rft-navy); box-shadow:0 0 0 3px rgba(6,57,112,.12); }
#devisVoyage .counter .btn-traveler{
    width:34px;
    height:34px;
    border-radius:50% !important;
    background:var(--rft-navy-50) !important;
    color:var(--rft-navy) !important;
    box-shadow:none !important;
    font-size:1.2rem !important;
    font-weight:600;
    transform:none;
    transition:background .15s var(--rft-ease), color .15s var(--rft-ease);
}
#devisVoyage .counter .btn-traveler:hover{ background:var(--rft-navy) !important; color:#fff !important; transform:none; }
#devisVoyage .counter .btn-traveler:active{ background:var(--rft-navy-900) !important; }
#devisVoyage .counter .traveler-input{
    width:52px !important;
    min-height:34px !important;
    padding:0 !important;
    border:0 !important;
    border-radius:0 !important;
    background:transparent !important;
    box-shadow:none !important;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:1.05rem;
    font-weight:800;
    color:var(--rft-navy-900);
}

/* Dates de naissance des mineurs : separees des compteurs */
#childrenBirthdates:not(:empty){
    margin-top:1.1rem !important;
    padding-top:.9rem;
    border-top:1px dashed var(--rft-line);
}
#childrenBirthdates .form-label{ font-size:.8rem; font-weight:600; color:var(--rft-navy-900); }

/* Cases et boutons radio des cartes d'option */
#devisVoyage .option-card input[type="checkbox"],
#devisVoyage .option-card input[type="radio"]{
    width:1.05rem;
    height:1.05rem;
    margin-right:.6rem !important;
    vertical-align:-3px;
    accent-color:var(--rft-navy);
}
/* Prestation deja comprise dans la vente : carte neutre, pas cliquable */
#devisVoyage .option-card:has(input:disabled),
#devisVoyage .option-card:has(input:disabled):hover{
    cursor:default;
    background:var(--rft-bg) !important;
    border-color:var(--rft-line) !important;
    box-shadow:none;
}
/* Badge « inclus » : vert, pas rouge (ce n'est pas une alerte) */
#devisVoyage .option-card .badge.text-bg-danger,
#devisVoyage .cure-card .badge.text-bg-danger{
    margin-left:.5rem;
    padding:.28em .65em;
    background:#e6f6ec !important;
    color:var(--rft-green) !important;
    font-size:.66rem;
    font-weight:800;
    letter-spacing:.06em;
    text-transform:uppercase;
    vertical-align:middle;
}
#devisVoyage .option-card__prix{
    margin-left:.5rem;
    font-size:.92rem;
    letter-spacing:-.01em;
}

/* Code de reduction : champ a icone + bouton, sur une ligne */
.reduction{
    display:flex;
    align-items:stretch;
    gap:.6rem;
}
.reduction__champ{
    position:relative;
    flex:1 1 auto;
    max-width:360px;
}
.reduction__champ > i{
    position:absolute;
    left:.85rem;
    top:50%;
    transform:translateY(-50%);
    font-size:.95rem;
    color:var(--rft-navy-400);
    pointer-events:none;
}
.reduction__champ .form-control{
    padding-left:2.4rem;
    font-weight:700;
    letter-spacing:.06em;
    text-transform:uppercase;
}
.reduction__champ .form-control::placeholder{ font-weight:400; letter-spacing:0; text-transform:none; }
.reduction__btn{
    flex:0 0 auto;
    padding:.6rem 1.2rem !important;
    white-space:nowrap;
}
/* Le script remplace les classes de #messageReduction (alert alert-light…) */
#messageReduction:empty{ display:none; }
#messageReduction.alert{
    margin:.75rem 0 0 !important;
    padding:.6rem .9rem;
    border-radius:var(--rft-r-sm);
    font-size:.84rem;
}
#messageReduction.alert-light{
    background:#e6f6ec;
    border-color:#cdeedb;
    color:var(--rft-green);
}

/* Pied de l'etape : devis PDF a gauche, Suivant a droite */
.devis-pied{
    display:flex;
    align-items:center;
    justify-content:space-between;
    flex-wrap:wrap;
    gap:.9rem;
    margin:.2rem 0 28px;
}
.btn-pdf{
    padding:.7rem 1.2rem !important;
    font-weight:700;
}
.btn-pdf i{ margin-right:.2rem; color:var(--rft-red); }
.btn-pdf:hover i{ color:inherit; }
.btn-suivant{
    padding:.8rem 1.8rem !important;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.98rem;
    font-weight:800 !important;
    letter-spacing:.01em;
    border-radius:var(--rft-r-pill) !important;
    box-shadow:var(--rft-sh-navy) !important;
}
.btn-suivant i{ margin-left:.25rem; transition:transform .2s var(--rft-ease); }
.btn-suivant:hover i{ transform:translateX(3px); }
.btn-suivant:disabled{ opacity:.55; box-shadow:none !important; }

@media (max-width:575.98px){
    #devisVoyage .voyageurs-grille .col-md-4{ display:flex; align-items:center; justify-content:space-between; gap:1rem; }
    #devisVoyage .voyageurs-grille .form-label{ margin:0; }
    .reduction{ flex-direction:column; }
    .reduction__champ{ max-width:none; }
    .devis-pied{ flex-direction:column-reverse; align-items:stretch; }
    .devis-pied form{ display:contents; }
    .btn-suivant, .btn-pdf{ width:100%; }
}

.quote-option{
    border-radius:var(--rft-r-sm);
    transition:background .2s var(--rft-ease);
}

.civilite .btn-outline-primary{
    border-color:var(--rft-line) !important;
    border-radius:var(--rft-r-pill) !important;
    padding:.5rem 1.2rem;
}
.civilite input:checked + span{
    background:var(--rft-grad-navy) !important;
    border-radius:var(--rft-r-pill);
    padding:.25rem .75rem;
}

.hotel-img{
    height:190px !important;
    border-radius:var(--rft-r) !important;
    box-shadow:0 6px 18px rgba(9,30,66,.12);
}

.price-line{
    padding:.6rem 0 !important;
    border-bottom:1px dashed var(--rft-line);
    font-size:.94rem;
    color:var(--rft-body);
}
.price-line:last-of-type{ border-bottom:0; }
.price-line span:last-child,
.price-line > :last-child{ font-weight:700; color:var(--rft-ink); }

.total{
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:1.75rem !important;
    font-weight:800 !important;
    letter-spacing:-.025em;
    color:var(--rft-navy) !important;
}

.rgpd{ color:var(--rft-muted); font-size:.83rem !important; }

.radio-middle{ gap:.6rem !important; }

/* ==========================================================================
   15. ESPACE PRO / DASHBOARD
   ========================================================================== */
.sidebar{
    background:#fff !important;
    border:1px solid var(--rft-line);
    border-radius:var(--rft-r-lg);
    overflow:hidden;
    box-shadow:var(--rft-sh-1) !important;
    padding-bottom:1.25rem !important;
}
.sidebar-title{
    background:var(--rft-grad-navy) !important;
    color:#fff !important;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:.78rem !important;
    font-weight:800 !important;
    letter-spacing:.12em;
    text-transform:uppercase;
    padding:1rem 1.15rem !important;
    margin-bottom:1.25rem !important;
    border-bottom:3px solid var(--rft-gold);
}
.sidebar h6{
    position:relative;
    margin:1.6rem 0 .6rem !important;
    padding-left:1.15rem !important;
    font-size:.7rem !important;
    font-weight:700 !important;
    letter-spacing:.12em;
    color:var(--rft-muted) !important;
}
.sidebar h6::before{
    content:"";
    position:absolute;
    left:0;
    top:50%;
    transform:translateY(-50%);
    width:4px;
    height:13px;
    border-radius:var(--rft-r-pill);
    background:var(--rft-grad-gold);
}
.sidebar a{
    margin:0 .65rem;
    padding:.5rem .7rem !important;
    font-size:.92rem;
    font-weight:500;
    color:var(--rft-body) !important;
    border-radius:var(--rft-r-xs) !important;
    transition:background .18s var(--rft-ease), color .18s var(--rft-ease), transform .18s var(--rft-ease);
}
.sidebar a:hover{
    background:var(--rft-navy-50) !important;
    color:var(--rft-navy) !important;
    transform:translateX(3px);
}

.dashboard{ padding:32px 0 !important; }
.dashboard-card{ transition:transform .25s var(--rft-ease), box-shadow .25s var(--rft-ease); }
.dashboard-card:hover{ transform:translateY(-3px); box-shadow:var(--rft-sh-2) !important; }
.dashboard-card .card-header{
    background:var(--rft-navy-50) !important;
    color:var(--rft-navy) !important;
    font-size:.78rem !important;
    font-weight:800 !important;
    letter-spacing:.1em;
    text-transform:uppercase;
    border-bottom:1px solid var(--rft-line);
}

.folder-item,
.hotel-item,
.stat-item,
.document-item{
    padding:.8rem .6rem !important;
    margin:0 -.6rem;
    border-radius:var(--rft-r-xs);
    border-bottom:1px dashed var(--rft-line) !important;
    font-size:.93rem;
    transition:background .18s var(--rft-ease);
}
.folder-item:hover,
.hotel-item:hover,
.stat-item:hover,
.document-item:hover{ background:var(--rft-navy-50); }
.folder-item:last-child,
.hotel-item:last-child,
.stat-item:last-child,
.document-item:last-child{ border-bottom:0 !important; }

/* Lien actif du menu lateral */
.sidebar a.active{
    background:var(--rft-navy) !important;
    color:#fff !important;
    font-weight:700;
}
.sidebar a.active:hover{ transform:none; }

/* Dernier dossier cliquable (formulaire POST vers le detail) */
.folder-item--lien{ padding:0 !important; }
.folder-item__btn{
    display:grid;
    grid-template-columns:auto 1fr auto auto;
    align-items:center;
    gap:.9rem;
    width:100%;
    padding:.75rem .6rem;
    border:0;
    background:transparent;
    text-align:left;
    font:inherit;
    color:inherit;
    cursor:pointer;
    border-radius:var(--rft-r-xs);
}
.folder-item__ref{
    padding:.2rem .55rem;
    border-radius:var(--rft-r-xs);
    background:var(--rft-bg);
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    font-size:.78rem;
    font-weight:700;
    color:var(--rft-navy);
}
.folder-item__txt{ display:flex; flex-direction:column; min-width:0; line-height:1.25; }
.folder-item__txt strong{ font-size:.9rem; color:var(--rft-navy-900); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.folder-item__txt small{ font-size:.72rem; color:var(--rft-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.folder-item__btn .badge{ font-size:.66rem; }
@media (max-width:575.98px){
    .folder-item__btn{ grid-template-columns:1fr auto; }
    .folder-item__ref, .folder-item__btn .badge{ display:none; }
}

.amount{
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-weight:800 !important;
    color:var(--rft-navy) !important;
    letter-spacing:-.015em;
}

/* ==========================================================================
   ESPACE PRO (tableau de bord)
   ========================================================================== */
.pro{ padding:32px 0 48px; font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif; }

/* --- Menu lateral --- */
.pro-menu{
    position:sticky;
    top:110px;
    overflow:hidden;
    border:1px solid var(--rft-line);
    border-radius:var(--rft-r-lg);
    background:#fff;
    box-shadow:var(--rft-sh-1);
}
.pro-menu__agence{
    position:relative;
    display:flex;
    flex-direction:column;
    align-items:center;
    gap:.25rem;
    padding:1.4rem 1rem 1.2rem;
    background:var(--rft-grad-navy);
    color:#fff;
    text-align:center;
}
.pro-menu__agence::before{ content:""; position:absolute; left:0; top:0; width:100%; height:4px; background:var(--rft-grad-gold); }
.pro-menu__avatar{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:56px;
    height:56px;
    margin-bottom:.35rem;
    border-radius:50%;
    background:var(--rft-gold);
    color:var(--rft-navy-900);
    font-size:1.2rem;
    font-weight:800;
    letter-spacing:.04em;
}
.pro-menu__nom{ font-size:.95rem; font-weight:800; line-height:1.2; }
.pro-menu__agence small{ font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; color:rgba(255,255,255,.7); }

.pro-menu__nav{ display:flex; flex-direction:column; padding:.8rem .7rem; }
.pro-menu__groupe{
    margin:.7rem .5rem .3rem;
    font-size:.62rem;
    font-weight:800;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--rft-muted);
}
.pro-menu__nav a{
    display:flex;
    align-items:center;
    gap:.6rem;
    padding:.55rem .7rem;
    border-radius:var(--rft-r-xs);
    font-size:.88rem;
    font-weight:600;
    color:var(--rft-body);
    text-decoration:none;
    transition:background .18s var(--rft-ease), color .18s var(--rft-ease);
}
.pro-menu__nav a i{ width:18px; text-align:center; font-size:1rem; color:var(--rft-navy-400); }
.pro-menu__nav a:hover{ background:var(--rft-navy-50); color:var(--rft-navy); }
.pro-menu__nav a.is-active{ background:var(--rft-navy); color:#fff; }
.pro-menu__nav a.is-active i{ color:var(--rft-gold); }
.pro-menu__nav a.is-off{ color:var(--rft-muted); }
.pro-menu__nav a.is-off i{ color:var(--rft-line); }
.pro-menu__compteur{
    margin-left:auto;
    padding:.1rem .5rem;
    border-radius:var(--rft-r-pill);
    background:var(--rft-navy-50);
    font-size:.7rem;
    font-weight:800;
    color:var(--rft-navy);
}
.pro-menu__nav a.is-active .pro-menu__compteur{ background:rgba(255,255,255,.18); color:#fff; }
.pro-menu__support{
    display:flex;
    align-items:center;
    gap:.7rem;
    margin:.4rem .7rem 1rem;
    padding:.75rem .8rem;
    border-radius:var(--rft-r-sm);
    background:var(--rft-bg);
    color:var(--rft-navy-900);
    text-decoration:none;
    transition:background .18s var(--rft-ease);
}
.pro-menu__support:hover{ background:var(--rft-navy-50); color:var(--rft-navy-900); }
.pro-menu__support > i{ font-size:1.3rem; color:var(--rft-navy); }
.pro-menu__support span{ display:flex; flex-direction:column; line-height:1.2; }
.pro-menu__support strong{ font-size:.84rem; }
.pro-menu__support small{ font-size:.7rem; color:var(--rft-muted); }

/* --- En-tete --- */
.pro-entete{
    display:flex;
    flex-wrap:wrap;
    align-items:flex-end;
    justify-content:space-between;
    gap:1rem;
    margin-bottom:1.4rem;
}
.pro-entete__sur{ display:block; font-size:.72rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--rft-muted); }
.pro-entete__titre{ margin:.1rem 0 0; font-size:1.7rem; font-weight:800; letter-spacing:-.02em; color:var(--rft-navy-900); }
.pro-entete__cta{ border-radius:var(--rft-r-pill) !important; padding:.6rem 1.2rem !important; }

/* --- Indicateurs --- */
.pro-kpis{
    display:grid;
    grid-template-columns:repeat(4, minmax(0, 1fr));
    gap:1rem;
    margin-bottom:1.5rem;
}
.pro-kpi{
    position:relative;
    display:flex;
    flex-direction:column;
    gap:.15rem;
    padding:1.1rem 1.1rem 1rem 1.2rem;
    border:1px solid var(--rft-line);
    border-radius:var(--rft-r);
    background:#fff;
    box-shadow:var(--rft-sh-1);
    overflow:hidden;
}
.pro-kpi::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--rft-navy); }
.pro-kpi > i{ position:absolute; right:.9rem; top:.8rem; font-size:1.5rem; color:var(--rft-navy-100); }
.pro-kpi__val{ font-size:1.6rem; font-weight:800; letter-spacing:-.025em; line-height:1.1; color:var(--rft-navy-900); }
.pro-kpi__cle{ font-size:.74rem; font-weight:600; color:var(--rft-muted); }
.pro-kpi--ok::before{ background:var(--rft-green); }
.pro-kpi--ok > i{ color:rgba(11,139,83,.25); }
.pro-kpi--attente::before{ background:var(--rft-gold); }
.pro-kpi--attente > i{ color:rgba(252,204,31,.55); }
.pro-kpi--ca{ background:var(--rft-grad-navy); border-color:transparent; }
.pro-kpi--ca::before{ background:var(--rft-gold); }
.pro-kpi--ca > i{ color:rgba(255,255,255,.25); }
.pro-kpi--ca .pro-kpi__val{ color:#fff; font-size:1.35rem; }
.pro-kpi--ca .pro-kpi__cle{ color:rgba(255,255,255,.75); }

/* --- Cartes --- */
.pro-carte{
    border:1px solid var(--rft-line);
    border-radius:var(--rft-r-lg);
    background:#fff;
    box-shadow:var(--rft-sh-1);
    overflow:hidden;
}
.pro-carte__entete{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    padding:.9rem 1.2rem;
    border-bottom:1px solid var(--rft-line);
}
.pro-carte__titre{ display:flex; align-items:center; gap:.5rem; font-size:.95rem; font-weight:800; color:var(--rft-navy-900); }
.pro-carte__titre i{ color:var(--rft-navy-400); }
.pro-carte__sous{ font-size:.74rem; color:var(--rft-muted); }
.pro-carte__lien{ font-size:.8rem; font-weight:700; color:var(--rft-navy); text-decoration:none; }
.pro-carte__lien:hover{ color:var(--rft-navy-500); }
.pro-vide{ padding:2.2rem 1rem; text-align:center; color:var(--rft-muted); font-size:.88rem; }
.pro-vide i{ display:block; margin-bottom:.4rem; font-size:1.8rem; color:var(--rft-navy-200); }
.pro-vide p{ margin:0 0 .8rem; }

/* Derniers dossiers */
.pro-dossiers form{ margin:0; }
.pro-dossier{
    display:grid;
    grid-template-columns:auto 1fr auto auto auto auto;
    align-items:center;
    gap:1rem;
    width:100%;
    padding:.8rem 1.2rem;
    border:0;
    border-bottom:1px solid var(--rft-line-soft);
    background:#fff;
    font:inherit;
    color:inherit;
    text-align:left;
    cursor:pointer;
    transition:background .15s var(--rft-ease);
}
.pro-dossiers form:last-child .pro-dossier{ border-bottom:0; }
.pro-dossier:hover{ background:var(--rft-navy-50); }
.pro-dossier__ref{
    padding:.2rem .55rem;
    border-radius:var(--rft-r-xs);
    background:var(--rft-bg);
    font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
    font-size:.76rem;
    font-weight:700;
    color:var(--rft-navy);
}
.pro-dossier__txt{ display:flex; flex-direction:column; min-width:0; line-height:1.25; }
.pro-dossier__txt strong{ font-size:.88rem; color:var(--rft-navy-900); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pro-dossier__txt small{ font-size:.72rem; color:var(--rft-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pro-dossier__date{ font-size:.76rem; color:var(--rft-muted); white-space:nowrap; }
.pro-dossier__montant{ font-size:.95rem; font-weight:800; color:var(--rft-navy); white-space:nowrap; }
.pro-dossier__chevron{ color:var(--rft-navy-200); }
.pro-statut{
    display:inline-block;
    padding:.18rem .55rem;
    border-radius:var(--rft-r-pill);
    font-size:.64rem;
    font-weight:800;
    letter-spacing:.06em;
    text-transform:uppercase;
    white-space:nowrap;
}
.pro-statut--confirmee{ background:#e3f5ec; color:var(--rft-green); }
.pro-statut--attente{ background:var(--rft-gold-100); color:#8a6d00; }
.pro-statut--annulee{ background:#fdecec; color:var(--rft-red); }
.pro-statut--autre{ background:var(--rft-bg); color:var(--rft-muted); }

/* Chiffre d'affaires */
.pro-ca{ padding:1.1rem 1.2rem 1rem; }
.pro-ca__graph{ position:relative; width:170px; height:170px; margin:0 auto .9rem; }
.pro-ca__centre{
    position:absolute;
    inset:0;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    pointer-events:none;
}
.pro-ca__centre strong{ font-size:1.4rem; font-weight:800; color:var(--rft-navy-900); line-height:1; }
.pro-ca__centre small{ font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; color:var(--rft-muted); }
.pro-ca__ligne{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:.5rem 0;
    border-bottom:1px dashed var(--rft-line);
    font-size:.84rem;
    color:var(--rft-body);
}
.pro-ca__ligne:last-child{ border-bottom:0; }
.pro-ca__ligne i{ font-size:.55rem; vertical-align:middle; margin-right:.2rem; }
.pro-ca__ligne strong{ font-weight:800; color:var(--rft-navy-900); }
.pro-ca__note{ margin:.6rem 0 0; font-size:.7rem; color:var(--rft-muted); }

/* Choix du mois / de l'annee du chiffre d'affaires */
.pro-ca__filtre{ display:flex; align-items:center; gap:.35rem; margin:0; flex-shrink:0; }
.pro-ca__select{
    appearance:none;
    -webkit-appearance:none;
    height:30px;
    padding:0 1.5rem 0 .6rem;
    border:1px solid var(--rft-line);
    border-radius:8px;
    background:#fff url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%234a7bb0' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right .55rem center;
    font-size:.78rem;
    font-weight:700;
    color:var(--rft-navy-900);
    cursor:pointer;
    transition:border-color .2s var(--rft-ease), box-shadow .2s var(--rft-ease);
}
.pro-ca__select:hover{ border-color:var(--rft-navy-400); }
.pro-ca__select:focus{ outline:0; border-color:var(--rft-navy-400); box-shadow:0 0 0 3px rgba(74,123,176,.18); }
.pro-ca__reset{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:30px;
    height:30px;
    border-radius:8px;
    color:var(--rft-navy-400);
    text-decoration:none;
    transition:background .2s var(--rft-ease), color .2s var(--rft-ease);
}
.pro-ca__reset:hover{ background:var(--rft-navy-50, #eef3f9); color:var(--rft-navy); }
.pro-ca__reset i{ font-size:.95rem; }
@media (max-width:420px){
    .pro-ca__filtre{ width:100%; }
    .pro-ca__select{ flex:1; min-width:0; }
}

/* Top hotels */
.pro-top{ display:grid; grid-template-columns:1.4fr 1fr; gap:1.2rem; padding:1.1rem 1.2rem 1.2rem; }
.pro-top__graph{ position:relative; min-height:240px; }
.pro-top__liste{ list-style:none; margin:0; padding:0; }
.pro-top__liste li{
    display:grid;
    grid-template-columns:auto 1fr auto;
    align-items:center;
    gap:.7rem;
    padding:.55rem 0;
    border-bottom:1px dashed var(--rft-line);
}
.pro-top__liste li:last-child{ border-bottom:0; }
.pro-top__rang{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:26px;
    height:26px;
    border-radius:50%;
    background:var(--rft-navy-50);
    font-size:.74rem;
    font-weight:800;
    color:var(--rft-navy);
}
.pro-top__rang.is-premier{ background:var(--rft-gold); color:var(--rft-navy-900); }
.pro-top__txt{ display:flex; flex-direction:column; min-width:0; line-height:1.2; }
.pro-top__txt strong{ font-size:.84rem; color:var(--rft-navy-900); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pro-top__txt small{ font-size:.7rem; color:var(--rft-muted); }
.pro-top__montant{ font-size:.86rem; font-weight:800; color:var(--rft-navy); white-space:nowrap; }

@media (max-width:1199.98px){
    .pro-kpis{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
    .pro-top{ grid-template-columns:1fr; }
}
@media (max-width:991.98px){
    .pro-menu{ position:static; }
}
@media (max-width:767.98px){
    .pro-dossier{ grid-template-columns:1fr auto; }
    .pro-dossier__ref, .pro-dossier__date, .pro-dossier__chevron, .pro-dossier .pro-statut{ display:none; }
}
@media (max-width:575.98px){
    .pro-kpis{ grid-template-columns:1fr; }
}

/* ==========================================================================
   16. MON COMPTE
   ========================================================================== */
.page-header{
    position:relative;
    overflow:hidden;
    background:var(--rft-grad-navy) !important;
    border-radius:var(--rft-r-xl) !important;
    padding:34px 36px !important;
    margin:32px 0 !important;
    box-shadow:var(--rft-sh-navy) !important;
}
.page-header::before{
    content:"";
    position:absolute;
    left:0; top:0;
    width:100%;
    height:4px;
    background:var(--rft-grad-gold);
}
.page-header::after{
    content:"";
    position:absolute;
    right:-90px;
    bottom:-120px;
    width:320px;
    height:320px;
    border-radius:50%;
    background:radial-gradient(circle, rgba(252,204,31,.16), transparent 70%);
}
.page-header > *{ position:relative; z-index:1; }
.page-header h2{
    color:#fff !important;
    font-size:clamp(1.5rem,2.2vw,1.95rem) !important;
    letter-spacing:-.022em;
}
.page-header small{ color:rgba(255,255,255,.72) !important; font-size:.92rem; }

.stat-card{
    position:relative;
    overflow:hidden;
    border-radius:var(--rft-r) !important;
    padding:22px !important;
    box-shadow:var(--rft-sh-1);
    transition:transform .25s var(--rft-ease), box-shadow .25s var(--rft-ease);
}
.stat-card:hover{ transform:translateY(-3px); box-shadow:var(--rft-sh-2); }
.stat-card h3{
    font-size:2.3rem !important;
    color:#fff !important;
    letter-spacing:-.03em;
}
.stat-card small{ color:rgba(255,255,255,.82) !important; font-size:.85rem !important; letter-spacing:.02em; }
.stat-card::after{
    content:"";
    position:absolute;
    right:-40px;
    top:-40px;
    width:130px;
    height:130px;
    border-radius:50%;
    background:rgba(255,255,255,.09);
}

.bg-blue{ background:var(--rft-grad-navy) !important; }
.bg-red{ background:linear-gradient(135deg,#e8353c,#d71920 60%,#a81217) !important; }
.bg-green{ background:linear-gradient(135deg,#12b46c,#0b8b53 60%,#076d40) !important; }
.bg-orange{ background:linear-gradient(135deg,#ffb443,#ff9800 60%,#e07c00) !important; }

.agency-logo{
    border-radius:var(--rft-r-lg) !important;
    border:1px solid var(--rft-line) !important;
    box-shadow:var(--rft-sh-1);
}
.agency-name{
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:1.4rem !important;
    letter-spacing:-.02em;
    color:var(--rft-navy) !important;
}
.agency-type{ color:var(--rft-muted) !important; font-size:.9rem; }

.subscription h3{ color:var(--rft-navy) !important; }
.subscription .badge{ border-radius:var(--rft-r-pill); letter-spacing:.02em; }

.upload-preview{
    border:2px dashed var(--rft-navy-200) !important;
    border-radius:var(--rft-r) !important;
    background:var(--rft-navy-50) !important;
    transition:border-color .2s var(--rft-ease), background .2s var(--rft-ease);
}
.upload-preview:hover{ border-color:var(--rft-navy) !important; background:#fff !important; }

.color-preview{
    border:2px solid var(--rft-line) !important;
    box-shadow:var(--rft-sh-1);
}

.support-box i{ color:var(--rft-navy) !important; }

.footer-actions{
    background:rgba(255,255,255,.92) !important;
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
    border-top:1px solid var(--rft-line) !important;
    box-shadow:0 -8px 26px rgba(9,30,66,.08) !important;
}

/* ==========================================================================
   17. AUTHENTIFICATION (index / verify)
   ========================================================================== */
/* Voile allege : la photo declaree sur le body doit rester lisible,
   on ne cherche qu'a faire ressortir la carte. */
.overlay{
    position:relative;
    background:linear-gradient(120deg, rgba(3,31,66,.52) 0%, rgba(6,57,112,.26) 55%, rgba(3,31,66,.46) 100%);
}

.auth-card{
    position:relative;
    overflow:hidden;
    max-width:520px !important;
    padding:44px 42px !important;
    border-radius:var(--rft-r-xl) !important;
    border:1px solid rgba(255,255,255,.6);
    background:rgba(255,255,255,.97) !important;
    box-shadow:0 24px 70px rgba(3,31,66,.42) !important;
}
.auth-card::before{
    content:"";
    position:absolute;
    left:0; top:0;
    width:100%;
    height:5px;
    background:var(--rft-grad-gold);
}
.auth-card h3{
    font-size:1.45rem !important;
    color:var(--rft-navy) !important;
    letter-spacing:-.022em;
}
.auth-card .logo{ max-width:210px !important; }
.auth-card a{ font-weight:600; }
.auth-card a:hover{ color:var(--rft-gold-700); }

.otp-container{ gap:.85rem !important; }
.otp-input{
    width:58px !important;
    height:66px;
    border:1.5px solid var(--rft-line) !important;
    border-radius:var(--rft-r) !important;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:1.6rem !important;
    font-weight:700;
    color:var(--rft-navy);
    background:#fff;
    transition:border-color .2s var(--rft-ease), box-shadow .2s var(--rft-ease), transform .15s var(--rft-ease);
}
.otp-input:focus{
    border-color:var(--rft-navy) !important;
    box-shadow:0 0 0 4px rgba(6,57,112,.15) !important;
    transform:translateY(-2px);
}

/* ==========================================================================
   18. PAGINATION / TABLEAUX / DIVERS
   ========================================================================== */
.pagination{ gap:.3rem; }
.pagination .page-link{
    min-width:42px;
    text-align:center;
    padding:.55rem .8rem;
    border:1px solid var(--rft-line) !important;
    border-radius:var(--rft-r-sm) !important;
    margin:0 !important;
    font-weight:600;
    color:var(--rft-navy) !important;
    background:#fff;
    transition:all .18s var(--rft-ease);
}
.pagination .page-link:hover{
    background:var(--rft-navy-50) !important;
    border-color:var(--rft-navy-200) !important;
    color:var(--rft-navy) !important;
}
.pagination .page-item.active .page-link{
    background:var(--rft-grad-navy) !important;
    border-color:transparent !important;
    color:#fff !important;
    box-shadow:var(--rft-sh-navy);
}
.pagination .page-item.disabled .page-link{ color:var(--rft-muted) !important; background:var(--rft-line-soft); }

.table{ --bs-table-hover-bg:var(--rft-navy-50); color:var(--rft-body); }
.table thead th{
    font-size:.72rem;
    font-weight:800;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--rft-muted);
    background:var(--rft-navy-50);
    border-bottom:1px solid var(--rft-line);
    padding:.85rem .9rem;
}
.table tbody td{ padding:.85rem .9rem; border-color:var(--rft-line-soft); vertical-align:middle; }

.badge{
    border-radius:var(--rft-r-pill);
    font-weight:700;
    letter-spacing:.015em;
    padding:.4em .85em;
}

.modal-content{
    border:0;
    border-radius:var(--rft-r-lg);
    box-shadow:var(--rft-sh-3);
    overflow:hidden;
}
.modal-header{ border-bottom:1px solid var(--rft-line); padding:1.15rem 1.4rem; }
.modal-title{ font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif; font-weight:800; color:var(--rft-navy); }
.modal-body{ padding:1.4rem; }
.modal-footer{ border-top:1px solid var(--rft-line); padding:1rem 1.4rem; }

.alert{ border:0; border-radius:var(--rft-r-sm); border-left:4px solid transparent; }
.alert-success{ background:#e8f7f0; border-left-color:var(--rft-green); color:#065f39; }
.alert-danger{ background:#fdecec; border-left-color:var(--rft-red); color:#96131a; }
.alert-warning{ background:var(--rft-gold-100); border-left-color:var(--rft-gold); color:#7a5c00; }
.alert-info{ background:var(--rft-navy-50); border-left-color:var(--rft-navy); color:var(--rft-navy-800); }

.accordion-item{ border:1px solid var(--rft-line); border-radius:var(--rft-r-sm) !important; margin-bottom:.6rem; overflow:hidden; }
.accordion-button{ font-weight:600; color:var(--rft-navy); }
.accordion-button:not(.collapsed){ background:var(--rft-navy-50); color:var(--rft-navy); box-shadow:none; }
.accordion-button:focus{ box-shadow:0 0 0 4px rgba(6,57,112,.12); }

.toolbar .btn{ min-width:190px; }

/* Utilitaires marque conserves */
.bg-color-blue:not(.btn){ background:var(--rft-grad-navy) !important; }
.text-color-blue{ color:var(--rft-navy) !important; }

/* ==========================================================================
   19. RESPONSIVE
   ========================================================================== */
@media (max-width:991.98px){
    .navbar-nav{ align-items:stretch; gap:.1rem; padding:.6rem 0; }
    .navbar-nav .nav-link{ padding:.6rem .75rem; }
    .navbar-nav a.nav-link::after{ display:none; }
    .navbar-nav > .nav-item > span.nav-link{ margin-left:0; justify-content:flex-start; }
    .navbar-nav a.nav-link.text-danger{ margin-left:0; text-align:left; }
    .filter-box{ position:static; }
    .search-box,
    #search-box{ padding:26px 20px !important; }
    .carousel img{ height:280px !important; }
    .page-header{ padding:26px 22px !important; text-align:center; }
}

@media (max-width:575.98px){
    .box{ padding:20px !important; }
    .auth-card{ padding:30px 22px !important; }
    .otp-input{ width:46px !important; height:56px; font-size:1.3rem !important; }
    .product-image{ height:190px !important; }
    .stepper{ padding:16px !important; }
    .step-number{ width:34px !important; height:34px !important; flex:0 0 34px; }
    .btn{ padding:.62rem 1.15rem; }
}

/* ==========================================================================
   19 bis. ECRAN DE CHARGEMENT
   Deux etats, geres par assets/js/rft-loader.js :
     - arrivee  : voile blanc + anneau fin (markup #rftLoader dans la page),
                  retire au window.load. L'animation de repli le fait
                  disparaitre a 5 s meme sans JavaScript.
     - depart   : .rft-loader--nav, cree par le script au clic sur un lien
                  ou a l'envoi d'un formulaire : barre de progression doree
                  en haut de l'ecran, page visible legerement estompee.
   ========================================================================== */
.rft-loader{
    position:fixed;
    inset:0;
    z-index:20000;
    display:flex;
    align-items:center;
    justify-content:center;
    background:#fff;
    opacity:1;
    visibility:visible;
    transition:opacity .3s var(--rft-ease), visibility .3s var(--rft-ease);
    animation:rft-loader-secours 0s linear 5s forwards;
}
.rft-loader.is-done{
    opacity:0;
    visibility:hidden;
    pointer-events:none;
}
@keyframes rft-loader-secours{
    to{ opacity:0; visibility:hidden; pointer-events:none; }
}

/* Anneau fin : piste gris clair, arc bleu marine */
.rft-loader__spin{
    width:38px;
    height:38px;
    border-radius:50%;
    border:3px solid var(--rft-navy-100);
    border-top-color:var(--rft-navy);
    animation:rft-loader-spin .8s linear infinite;
}
@keyframes rft-loader-spin{
    to{ transform:rotate(360deg); }
}

/* --- Voile de depart --- */
.rft-loader--nav{
    animation:none;
    background:rgba(255,255,255,.45);
    cursor:progress;
    align-items:flex-start;
    transition:opacity .2s var(--rft-ease), visibility .2s var(--rft-ease);
}
.rft-loader--nav.is-hidden{ opacity:0; visibility:hidden; }

/* Barre de progression indeterminee, collee en haut de l'ecran */
.rft-loader__bar{
    position:absolute;
    top:0;
    left:0;
    right:0;
    height:3px;
    background:rgba(6,57,112,.12);
    overflow:hidden;
}
.rft-loader__bar span{
    position:absolute;
    top:0;
    left:0;
    height:100%;
    width:40%;
    background:linear-gradient(90deg, var(--rft-navy) 0%, var(--rft-gold, #fccc1f) 100%);
    animation:rft-loader-slide 1.1s cubic-bezier(.4,0,.2,1) infinite;
}
@keyframes rft-loader-slide{
    0%  { transform:translateX(-100%); }
    100%{ transform:translateX(260%); }
}

/* Petit anneau en bas a droite, en rappel */
.rft-loader--nav .rft-loader__spin{
    position:absolute;
    right:1.25rem;
    bottom:1.25rem;
    width:26px;
    height:26px;
    border-width:2.5px;
    background:#fff;
    box-shadow:var(--rft-sh-1, 0 2px 8px rgba(6,57,112,.12));
}

/* Entree en fondu du contenu, une fois le voile d'arrivee retire
   (classe posee sur <html> par rft-loader.js ; sans JS rien ne change). */
.rft-page-ready body > :not(.rft-loader){
    animation:rft-page-in .5s var(--rft-ease) both;
}
@keyframes rft-page-in{
    from{ opacity:0; }
    to  { opacity:1; }
}

/* Respecte le reglage systeme "reduire les animations" */
@media (prefers-reduced-motion:reduce){
    .rft-loader__spin,
    .rft-loader__bar span{ animation-duration:1.6s; }
    .rft-loader{ transition:none; }
    .rft-page-ready body > :not(.rft-loader){ animation:none; }
}

/* ==========================================================================
   20. IMPRESSION
   ========================================================================== */
@media print{
    header, footer, .toolbar, .navbar, .rft-loader{ display:none !important; }
    body{ background:#fff !important; background-image:none !important; }
    .box, .product-card, .dashboard-card, .card{ box-shadow:none !important; border:1px solid #ddd !important; }
}

/* ==========================================================================
   21. GARDE-FOU AFFICHES A4 (#productPoster)
   Les affiches sont des gabarits d'impression calibres au millimetre :
   on les laisse strictement telles quelles.
   ========================================================================== */
#productPoster,
#productPoster *{
    font-family:Arial,Helvetica,sans-serif !important;
    letter-spacing:normal !important;
}
#productPoster h1, #productPoster h2, #productPoster h3,
#productPoster h4, #productPoster h5, #productPoster h6{
    font-weight:bold;
}
#productPoster .price-box{
    background:#063970 !important;
    border-radius:0 !important;
    border-top-left-radius:35px !important;
    box-shadow:none !important;
    font-size:inherit !important;
    font-weight:normal !important;
    padding:20px !important;
}
#productPoster .price{ font-size:inherit !important; font-weight:inherit !important; margin:0 !important; }
#productPoster .price-box p,
#productPoster .price-box .fs-6{ color:#fff !important; font-size:inherit !important; }
#productPoster .discount{ background:none !important; box-shadow:none !important; }
#productPoster .logo-box{ box-shadow:0 3px 10px rgba(0,0,0,.15); }
#productPoster .separator{ background:#FCCC1F; }
#productPoster .details,
#productPoster .poster-content,
#productPoster .poster-footer{ color:inherit; }

/* ==========================================================================
   Page « bientot disponible » (vols-bientot.php)
   ========================================================================== */
.bientot{
    max-width:640px;
    margin:56px auto 24px;
    padding:48px 36px 40px;
    text-align:center;
    background:#fff;
    border:1px solid var(--rft-line);
    border-radius:var(--rft-r-xl);
    box-shadow:var(--rft-sh-2);
}
.bientot__icone{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    width:84px;
    height:84px;
    margin-bottom:1.2rem;
    border-radius:50%;
    background:var(--rft-navy-50);
    color:var(--rft-navy);
    font-size:2.2rem;
}
.bientot__icone i{ transform:rotate(-20deg); }
.bientot__etiquette{
    display:inline-block;
    margin-bottom:.9rem;
    padding:.3rem .8rem;
    border-radius:var(--rft-r-pill);
    background:rgba(252,204,31,.22);
    color:var(--rft-navy-900);
    font-size:.72rem;
    font-weight:800;
    letter-spacing:.1em;
    text-transform:uppercase;
}
.bientot__titre{
    margin:0 0 .8rem;
    font-family:"Plus Jakarta Sans","Inter",Arial,sans-serif;
    font-size:clamp(1.45rem,2.4vw,1.9rem);
    font-weight:800;
    letter-spacing:-.015em;
    color:var(--rft-navy-900);
}
.bientot__texte{
    max-width:480px;
    margin:0 auto 1.6rem;
    color:var(--rft-body);
    font-size:.96rem;
    line-height:1.6;
}
.bientot__actions{
    display:flex;
    flex-wrap:wrap;
    justify-content:center;
    gap:.7rem;
}
.bientot__actions .btn{ padding:.7rem 1.3rem; font-weight:700; }
.bientot__actions .btn i{ margin-right:.3rem; }
@media (max-width:575.98px){
    .bientot{ margin-top:24px; padding:34px 20px 30px; }
    .bientot__actions{ flex-direction:column; }
}
