/* ============ TravFlow — Site public (vitrine + réservation) ============ */
:root {
    --brand: #15b6c9;
    --ink: #12303c;
    --ink-2: #4a6a76;
    --bg: #f6fafc;
    --card: #ffffff;
    --line: #e2edf1;
    --gold: #f4a53a;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body.site {
    margin: 0; background: var(--bg); color: var(--ink);
    font-family: 'Jost', 'Segoe UI', system-ui, -apple-system, sans-serif;
    font-size: 16px; line-height: 1.55; -webkit-font-smoothing: antialiased;
}
.s-wrap { max-width: 1120px; margin: 0 auto; padding: 0 18px; }
a { color: var(--brand); text-decoration: none; }
img { max-width: 100%; }

/* ---------- Boutons ---------- */
.s-btn { display: inline-block; border: 0; cursor: pointer; border-radius: 10px; padding: 10px 20px; font: 600 15px 'Jost', sans-serif; transition: filter .15s, transform .15s; }
.s-btn:active { transform: scale(.98); }
.s-btn-primary { background: var(--brand); color: #fff; box-shadow: 0 6px 16px rgba(20, 120, 135, .30); }
.s-btn-primary:hover { filter: brightness(1.06); }
.s-btn-ghost { background: transparent; color: var(--ink); border: 1.5px solid var(--line); }
.s-btn-ghost:hover { border-color: var(--brand); color: var(--brand); }
.s-btn-lg { padding: 14px 30px; font-size: 16px; border-radius: 12px; }
.s-btn-full { width: 100%; }

/* ---------- Entête ---------- */
.s-header { background: #fff; position: sticky; top: 0; z-index: 50; box-shadow: 0 1px 0 var(--line); }
/* Le header utilise toute la largeur disponible : logo + menu + boutons y tiennent sans se comprimer. */
.s-header .s-wrap { max-width: 1560px; }
.s-header-in { display: flex; align-items: center; gap: 26px; height: 68px; }
.s-logo { display: flex; align-items: center; gap: 10px; color: var(--ink); }
.s-logo img { height: 40px; width: auto; max-height: 90px; }
.s-logo-mark { width: 40px; height: 40px; display: grid; place-items: center; background: var(--brand); color: #fff; border-radius: 10px; font-size: 20px; }
.s-logo-txt { display: flex; flex-direction: column; line-height: 1.05; }
.s-logo-txt span { font-weight: 700; font-size: 19px; letter-spacing: .04em; text-transform: uppercase; }
.s-logo-txt small { font-family: 'Cairo', sans-serif; color: var(--brand); font-weight: 700; font-size: 13px; }
.s-nav { display: flex; gap: 22px; margin-inline: auto; }
/* Vrai centrage du menu au milieu de la page sur PC (≥1400px : l'espace est garanti,
   même avec un long nom d'agence et tous les onglets). En dessous, centrage flexible. */
@media (min-width: 1400px) {
    .s-header-in { position: relative; }
    .s-nav { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); margin: 0; }
    .s-nav a { white-space: nowrap; }
    .s-header-cta { margin-inline-start: auto; } /* le nav sort du flux : on repousse les boutons au bord */
}
.s-nav a { color: var(--ink); font-weight: 500; font-size: 15px; padding: 6px 2px; border-bottom: 2px solid transparent; }
.s-nav a:hover { color: var(--brand); border-color: var(--brand); }
.s-header-cta { display: flex; gap: 10px; align-items: center; }
.s-burger { display: none; background: none; border: 0; font-size: 24px; cursor: pointer; color: var(--ink); }

/* ---------- Héros ---------- */
.s-hero {
    position: relative; padding: 54px 0 90px; color: #fff; text-align: center;
    background: var(--brand); /* repli mobiles anciens */
    background: linear-gradient(160deg, var(--brand-dark) 0%, var(--brand) 45%, var(--brand-light) 100%);
    background:
        radial-gradient(1100px 380px at 85% -10%, rgba(255,255,255,.22), transparent 60%),
        linear-gradient(160deg, var(--brand-dark) 0%, var(--brand) 45%, var(--brand-light) 100%);
    overflow: hidden;
}
.s-hero > .s-wrap { position: relative; z-index: 3; }
.s-hero-ar { font-family: 'Cairo', sans-serif; font-size: var(--hero-fs-d, 38px); margin: 0 0 4px; font-weight: 700; text-shadow: 0 2px 10px rgba(0,0,0,.12); line-height: 1.35; }
.s-hero-fr { font-size: clamp(17px, 2.4vw, 24px); font-weight: 500; margin: 0 0 30px; opacity: .97; }
.s-hero-wave { position: absolute; left: 0; right: 0; bottom: -1px; width: 100%; height: 46px; display: block; }

/* Carte de recherche */
.s-search { background: #fff; border-radius: 16px; box-shadow: 0 20px 50px rgba(10, 60, 75, .22); max-width: 860px; margin: 0 auto; overflow: hidden; text-align: initial; }
.s-tabs { display: flex; border-bottom: 1px solid var(--line); overflow-x: auto; }
.s-tab {
    flex: 1; min-width: 120px; background: #f2f8fa; border: 0; cursor: pointer; padding: 13px 10px;
    font: 600 14.5px 'Jost', sans-serif; color: var(--ink-2); border-bottom: 3px solid transparent; white-space: nowrap;
}
.s-tab.active { background: #fff; color: var(--brand); border-bottom-color: var(--brand); }
.s-search-form { padding: 18px; }
.s-search-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
.s-search-row + .s-search-row { margin-top: 12px; }
.s-field { flex: 1; min-width: 150px; display: flex; flex-direction: column; gap: 4px; color: var(--ink); }
.s-field-sm { flex: 0 1 150px; }
.s-field span { font-size: 12.5px; font-weight: 600; color: var(--ink-2); }
.s-field input, .s-field select, .s-field textarea {
    border: 1.5px solid var(--line); border-radius: 10px; padding: 10px 12px; font: 500 15px 'Jost', sans-serif;
    color: var(--ink); background: #fff; width: 100%;
}
.s-field input:focus, .s-field select:focus, .s-field textarea:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand-shadow); }

/* ---------- Sections ---------- */
.s-section { padding: 48px 0; }
.s-section-alt { background: #eef6f8; }
.s-section-head { display: flex; justify-content: space-between; align-items: baseline; gap: 14px; flex-wrap: wrap; margin-bottom: 22px; }
.s-section-head h2 { margin: 0; font-size: 26px; font-weight: 700; }
.s-section-sub { color: var(--ink-2); font-size: 14.5px; }
.s-link { font-weight: 600; }
.s-empty { color: var(--ink-2); background: #fff; border: 1.5px dashed var(--line); border-radius: 12px; padding: 22px; text-align: center; }

/* Cartes d'offres */
.s-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 18px; }
.s-card { background: var(--card); border-radius: 14px; overflow: hidden; box-shadow: 0 4px 18px rgba(14, 55, 70, .08); color: var(--ink); display: flex; flex-direction: column; transition: transform .18s, box-shadow .18s; }
.s-card:hover { transform: translateY(-4px); box-shadow: 0 14px 30px rgba(14, 55, 70, .15); }
.s-card-img { position: relative; height: 150px; background: linear-gradient(135deg, var(--brand-soft), var(--brand-mid)); background-size: cover; background-position: center; }
.s-card-ico { position: absolute; inset: 0; display: grid; place-items: center; font-size: 42px; opacity: .8; }
.s-card-type { position: absolute; top: 10px; inset-inline-start: 10px; background: rgba(255,255,255,.94); color: var(--ink); font-size: 12px; font-weight: 600; border-radius: 999px; padding: 3px 10px; }
.s-card-promo { position: absolute; top: 10px; inset-inline-end: 10px; background: var(--gold); color: #fff; font-size: 12px; font-weight: 700; border-radius: 999px; padding: 3px 10px; }
.s-card-body { padding: 14px 15px 16px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.s-card-title { font-weight: 600; font-size: 16px; line-height: 1.3; }
.s-card-price { font-size: 14px; color: var(--ink-2); }
.s-card-price strong { color: var(--brand); font-size: 18px; }
.s-card-price s { margin-inline-start: 6px; color: #b3c5cc; font-size: 13px; }
.s-card-valid { font-size: 12.5px; color: var(--ink-2); }
.s-card-cta { margin-top: auto; font-weight: 600; color: var(--brand); font-size: 14.5px; }

/* Étapes */
.s-steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 18px; }
.s-step { background: #fff; border-radius: 14px; padding: 22px; box-shadow: 0 4px 18px rgba(14,55,70,.07); }
.s-step-n { display: inline-grid; place-items: center; width: 34px; height: 34px; border-radius: 999px; background: var(--brand-soft); color: var(--brand); font-weight: 700; margin-bottom: 8px; }
.s-step b { display: block; margin-bottom: 4px; }
.s-step p { margin: 0; color: var(--ink-2); font-size: 14.5px; }

/* ---------- Page réservation ---------- */
.s-page { padding: 36px 0 56px; }
.s-page-title { font-size: 26px; margin: 0 0 18px; }
.s-book { display: grid; grid-template-columns: 1fr 340px; gap: 26px; align-items: start; }
.s-form { background: #fff; border-radius: 16px; padding: 22px; box-shadow: 0 6px 24px rgba(14,55,70,.08); display: flex; flex-direction: column; gap: 20px; }
.s-form-sec { display: flex; flex-direction: column; gap: 12px; }
.s-form-h { font-weight: 700; font-size: 15px; color: var(--brand); letter-spacing: .02em; }
.s-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }
.s-hint { color: var(--ink-2); font-size: 13.5px; margin: 0; }
.s-center { text-align: center; }
.s-alert { background: #fdecec; border: 1.5px solid #f0c9c9; color: #7a1f1f; padding: 12px 14px; border-radius: 12px; margin-bottom: 14px; font-weight: 500; }
.s-hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }

/* Paiement */
.s-pay { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; }
.s-pay-opt { display: flex; gap: 10px; align-items: flex-start; border: 1.5px solid var(--line); border-radius: 12px; padding: 12px; cursor: pointer; background: #fbfeff; }
.s-pay-opt:has(input:checked) { border-color: var(--brand); background: var(--brand-pale); }
.s-pay-opt input { margin-top: 3px; accent-color: var(--brand); }
.s-pay-t b { display: block; font-size: 15px; }
.s-pay-t small { color: var(--ink-2); font-size: 12.5px; line-height: 1.35; display: block; }
.s-pay-details { display: flex; flex-direction: column; gap: 12px; }
.s-pay-box { border: 1.5px dashed var(--brand-border); background: var(--brand-pale); border-radius: 12px; padding: 12px 14px; }
.s-pay-box-h { font-weight: 700; font-size: 14px; margin-bottom: 6px; color: var(--brand); }
.s-pay-line { display: flex; justify-content: space-between; gap: 12px; font-size: 14.5px; padding: 2px 0; }
.s-pay-line b { letter-spacing: .04em; }

/* Encadré latéral */
.s-side-card { background: #fff; border-radius: 16px; overflow: hidden; box-shadow: 0 6px 24px rgba(14,55,70,.08); position: sticky; top: 86px; }
.s-side-img { height: 170px; }
.s-side-body { padding: 16px; display: flex; flex-direction: column; gap: 8px; }
.s-card-type-inline { font-size: 12.5px; font-weight: 700; color: var(--brand); text-transform: uppercase; letter-spacing: .05em; }
.s-side-title { font-weight: 700; font-size: 18px; line-height: 1.3; }
.s-side-desc { margin: 0; color: var(--ink-2); font-size: 14px; max-height: 160px; overflow: auto; }
.s-side-price { display: flex; align-items: baseline; gap: 8px; border-top: 1px solid var(--line); padding-top: 10px; }
.s-side-price span { color: var(--ink-2); font-size: 13.5px; }
.s-side-price b { color: var(--brand); font-size: 22px; }
.s-side-price s { color: #b3c5cc; font-size: 14px; }
.s-side-info { padding: 20px; }

/* ---------- Confirmation ---------- */
.s-success { display: grid; place-items: center; min-height: 46vh; }
.s-success-card { background: #fff; border-radius: 18px; padding: 38px 30px; text-align: center; box-shadow: 0 10px 34px rgba(14,55,70,.1); max-width: 520px; }
.s-success-ico { width: 62px; height: 62px; margin: 0 auto 12px; display: grid; place-items: center; border-radius: 999px; background: var(--brand-soft); color: var(--brand); font-size: 28px; font-weight: 700; }
.s-success-card h1 { margin: 0 0 6px; font-size: 24px; }
.s-success-ref { font-size: 24px; font-weight: 700; letter-spacing: .1em; color: var(--brand); background: var(--brand-pale); border: 1.5px dashed var(--brand-border); border-radius: 12px; padding: 10px 14px; margin: 10px 0 14px; display: inline-block; }
.s-success-actions { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 16px; }

/* ---------- Pied de page ---------- */
.s-footer { background: #10333f; background: var(--brand-deep); color: #eaf3f6; margin-top: 30px; }
.s-footer-grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr; gap: 26px; padding: 40px 18px 26px; }
.s-footer-brand { font-weight: 700; font-size: 19px; letter-spacing: .04em; text-transform: uppercase; color: #fff; }

.s-footer-h { font-weight: 700; color: #fff; margin-bottom: 8px; }
.s-footer-txt { margin: 4px 0; font-size: 14.5px; }
.s-footer-txt a { color: #eaf3f6; }
.s-footer-txt a:hover { color: #fff; }
.s-footer-bar { border-top: 1px solid rgba(255,255,255,.12); padding: 14px 0; font-size: 13.5px; }
.s-footer-bar a { color: #fff; text-decoration: underline; text-underline-offset: 3px; opacity: .92; }
.s-footer-bar a:hover { opacity: 1; }

/* ---------- Mobile ---------- */
@media (max-width: 900px) {
    .s-book { grid-template-columns: 1fr; }
    .s-side-card { position: static; order: -1; }
    .s-footer-grid { grid-template-columns: 1fr; }
}
/* En dessous de 1000 px, le menu passe en liste déroulante : avec plusieurs
   types de voyage, les liens ne tenaient plus à côté du logo et des boutons. */
@media (max-width: 1000px) {
    .s-nav {
        display: none; position: absolute; top: 68px; left: 0; right: 0;
        background: #fff; flex-direction: column; gap: 0;
        box-shadow: 0 14px 26px rgba(14,55,70,.14); z-index: 60;
    }
    .s-nav.open { display: flex; }
    .s-nav a { padding: 13px 20px; border-bottom: 1px solid var(--line); }
    .s-burger { display: block; }
    .s-header-cta { gap: 8px; flex-shrink: 0; }
    /* Anti-débordement : le logo se comprime, jamais la page qui défile de côté. */
    .s-header-in { gap: 12px; min-width: 0; }
    .s-logo { min-width: 0; flex: 1 1 auto; overflow: hidden; }
    .s-logo-txt { min-width: 0; }
    .s-logo-txt span { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; }
}
@media (max-width: 760px) {
    .s-hero-ar { font-size: var(--hero-fs-m, 26px); }
    .s-header-cta .s-btn-ghost { display: none; }
    .s-logo-txt span { font-size: 16px; }
    .s-logo img { max-height: 36px; height: auto !important; }
    .s-hero { padding: 38px 0 76px; }
    .s-search-form { padding: 14px; }
    .s-field, .s-field-sm { min-width: 100%; flex-basis: 100%; }
    .s-search-row .s-btn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
    * { transition: none !important; }
    html { scroll-behavior: auto; }
}

/* ---------- v4.3 : pages de sections, contact, filtre destination ---------- */
.s-page-hero { background: var(--brand-dark, #0e4a5c); background: linear-gradient(150deg, var(--brand-dark, #0e4a5c), var(--brand, #12a4c4)); color: #fff; padding: 34px 0 30px; }
.s-page-hero h1 { margin: 0 0 4px; font-size: clamp(24px, 3.4vw, 32px); }
.s-page-hero p { margin: 0; opacity: .96; font-size: 15.5px; max-width: 640px; }
.s-dest-filter { display: flex; gap: 12px; align-items: flex-end; margin-bottom: 22px; flex-wrap: wrap; }
.s-sent { background: #e8f8ef; border: 1.5px solid #bfe8cf; color: #175c34; padding: 12px 14px; border-radius: 12px; margin-bottom: 14px; font-weight: 600; }
.s-contact-line { margin: 8px 0; font-size: 15px; color: var(--ink); }
.s-contact-line a { font-weight: 600; }

/* ---------- v4.4 : galerie photos d'offre ---------- */
.s-gallery { background: #0e2a33; }
.s-gallery-main { display: block; width: 100%; height: 200px; object-fit: cover; }
.s-gallery-thumbs { display: flex; gap: 6px; padding: 8px; overflow-x: auto; background: #fff; border-bottom: 1px solid var(--line); }
.s-gallery-thumbs img { width: 56px; height: 44px; object-fit: cover; border-radius: 8px; cursor: pointer; border: 2px solid transparent; flex: 0 0 auto; opacity: .8; }
.s-gallery-thumbs img.active, .s-gallery-thumbs img:hover { border-color: var(--brand); opacity: 1; }

/* ---------- v4.6 : fonds du héros (média, superposition, animations) ---------- */
.s-hero-media { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background-size: cover; background-position: center; z-index: 0; }
.s-hero-overlay { position: absolute; inset: 0; background: linear-gradient(160deg, var(--brand-deep), #06222b); z-index: 1; }
.s-hero .s-hero-wave { z-index: 3; }

/* Dégradé animé */
.s-hero--gradient_anime {
    background: var(--brand);
    background: linear-gradient(120deg, var(--brand-dark), var(--brand), var(--brand-light), var(--brand), var(--brand-dark));
    background-size: 320% 320%;
    animation: sHeroShift 14s ease-in-out infinite;
}
@keyframes sHeroShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }

/* Vagues animées */
.s-hero-waves { position: absolute; inset: 0; overflow: hidden; z-index: 0; pointer-events: none; }
.s-hero-waves span {
    position: absolute; left: -60%; width: 220%; height: 46%; bottom: -14%;
    background: rgba(255,255,255,.10); border-radius: 42% 46% 40% 44%;
    animation: sWave 11s linear infinite;
}
.s-hero-waves span:nth-child(2) { bottom: -20%; height: 52%; animation-duration: 17s; background: rgba(255,255,255,.07); }
.s-hero-waves span:nth-child(3) { bottom: -26%; height: 58%; animation-duration: 23s; background: rgba(255,255,255,.05); }
@keyframes sWave { from { transform: rotate(0deg) translateX(-2%); } to { transform: rotate(360deg) translateX(2%); } }

@media (prefers-reduced-motion: reduce) {
    .s-hero--gradient_anime { animation: none; }
    .s-hero-waves span { animation: none; }
    .s-hero video.s-hero-media { display: none; }
}

/* ---------- v4.10 : ville de départ (wilaya) + sélection des dates ---------- */
.s-trip-route { font-weight: 700; font-size: 16px; color: var(--brand); background: var(--brand-pale); border-radius: 10px; padding: 10px 14px; margin-bottom: 12px; display: inline-block; }
.s-datepick { margin-top: 4px; }
.s-date-chips { display: flex; flex-wrap: wrap; gap: 10px; }
.s-date-chip { display: inline-flex; align-items: center; cursor: pointer; }
.s-date-chip input { position: absolute; opacity: 0; width: 0; height: 0; }
.s-date-chip span { display: inline-block; border: 1.5px solid var(--line); border-radius: 999px; padding: 9px 16px; font-size: 14.5px; font-weight: 600; color: var(--ink); background: #fff; transition: border-color .15s, background .15s; }
.s-date-chip input:checked + span { border-color: var(--brand); background: var(--brand-pale); color: var(--brand); }
.s-date-chip--other span { border-style: dashed; }

/* ---------- v4.11 : recherche par période, résultats et dates sur les cartes ---------- */
.s-refine { display: flex; gap: 12px; align-items: flex-end; flex-wrap: wrap; background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 16px; margin-bottom: 18px; box-shadow: 0 4px 16px rgba(14,55,70,.06); }
.s-refine .s-field { flex: 1 1 170px; min-width: 150px; }
.s-refine .s-btn { flex: 0 0 auto; }
.s-results-count { color: var(--ink-2); font-size: 15px; margin: 0 0 16px; }
.s-results-count strong { color: var(--brand); font-size: 17px; }
.s-card-dates { display: flex; flex-wrap: wrap; gap: 6px; margin: 2px 0; }
.s-card-date { font-size: 12.5px; font-weight: 600; color: var(--brand); background: var(--brand-pale); border: 1px solid var(--brand-border); border-radius: 999px; padding: 3px 9px; }
.s-card-date--more { background: #fff; color: var(--ink-2); border-color: var(--line); }
.s-card-flex { color: var(--ink-2); font-style: italic; }
@media (max-width: 760px) {
    .s-refine .s-field, .s-refine .s-btn { flex-basis: 100%; min-width: 100%; }
}

/* ---------- v4.12 : lien de navigation actif ---------- */
.s-nav a.active { color: var(--brand); border-color: var(--brand); font-weight: 600; }
@media (max-width: 760px) {
    .s-nav a.active { background: var(--brand-pale); border-bottom-color: var(--line); }
}

/* ============ v4.14 : sélecteur de langue, boutons flottants, RTL ============ */

/* ---------- Sélecteur de langue (identique au dashboard) ---------- */
.tf-lang { position: relative; }
.tf-lang-btn {
    display: inline-flex; align-items: center; gap: 6px; cursor: pointer;
    background: #fff; border: 1.5px solid var(--line); border-radius: 10px;
    padding: 8px 12px; font: 600 14px 'Jost', sans-serif; color: var(--ink);
    transition: border-color .15s, background .15s;
}
.tf-lang-btn:hover { border-color: var(--brand); color: var(--brand); }
.tf-lang-flag { font-size: 15px; line-height: 1; }
.tf-lang-caret { font-size: 10px; opacity: .65; transition: transform .18s; }
.tf-lang.open .tf-lang-caret { transform: rotate(180deg); }
.tf-lang-menu {
    position: absolute; top: calc(100% + 8px); inset-inline-end: 0; z-index: 80;
    margin: 0; padding: 6px; list-style: none; min-width: 168px;
    background: #fff; border: 1px solid var(--line); border-radius: 12px;
    box-shadow: 0 14px 34px rgba(14, 55, 70, .16);
    opacity: 0; visibility: hidden; transform: translateY(-6px); transition: opacity .16s, transform .16s, visibility .16s;
}
.tf-lang.open .tf-lang-menu { opacity: 1; visibility: visible; transform: translateY(0); }
.tf-lang-menu a {
    display: flex; align-items: center; gap: 9px; padding: 9px 11px; border-radius: 8px;
    color: var(--ink); font-size: 14.5px; font-weight: 500; white-space: nowrap;
}
.tf-lang-menu a:hover { background: var(--brand-pale); }
.tf-lang-menu a.on { color: var(--brand); font-weight: 700; }
.tf-lang-check { margin-inline-start: auto; color: var(--brand); font-weight: 700; }

/* ---------- Boutons flottants ---------- */
/* Positions physiques : « à droite » reste à droite, même en arabe (RTL). */
.s-float { position: fixed; bottom: 20px; z-index: 60; display: flex; flex-direction: column-reverse; gap: 12px; align-items: center; }
.s-float--right { right: 20px; left: auto; }
.s-float--left { left: 20px; right: auto; }
.s-float-btn {
    width: 54px; height: 54px; border: 0; border-radius: 999px; cursor: pointer;
    display: grid; place-items: center; color: #fff;
    box-shadow: 0 8px 22px rgba(10, 50, 62, .28);
    transition: transform .16s, box-shadow .16s, opacity .2s;
}
.s-float-btn:hover { transform: translateY(-3px); box-shadow: 0 12px 28px rgba(10, 50, 62, .34); }
.s-float-btn:active { transform: scale(.95); }
.s-float-wa { background: #25d366; }
.s-float-wa:hover { background: #1fbe5a; }
.s-float-top { background: var(--brand); opacity: 0; visibility: hidden; pointer-events: none; transform: translateY(10px); }
.s-float-top.visible { opacity: 1; visibility: visible; pointer-events: auto; transform: translateY(0); }
@media (max-width: 760px) {
    .s-float { bottom: 14px; gap: 10px; }
    .s-float--right { right: 14px; }
    .s-float--left { left: 14px; }
    .s-float-btn { width: 50px; height: 50px; }
    .s-hide-mobile { display: none !important; }
}

/* ---------- Arabe / RTL ---------- */
[dir="rtl"] body.site, body.site[dir="rtl"] { font-family: 'Cairo', 'Jost', sans-serif; }
[dir="rtl"] .s-nav { margin-inline-start: auto; }
[dir="rtl"] .s-card-cta, [dir="rtl"] .s-link { direction: rtl; }
[dir="rtl"] .s-hero-fr, [dir="rtl"] .s-hero-ar { direction: rtl; }
[dir="rtl"] .s-logo-txt span { letter-spacing: 0; }

/* ============================ ESPACE CLIENT ============================ */
.p-auth-wrap{max-width:460px;margin:0 auto;padding:40px 0}
.p-auth-card{background:#fff;border:1px solid var(--brand-border,#e2edf1);border-radius:16px;padding:32px;box-shadow:0 8px 30px rgba(0,0,0,.06)}
.p-auth-title{font-size:26px;margin:0 0 6px;color:var(--brand-deep,#0b3c4d)}
.p-auth-sub{color:#64748b;font-size:14.5px;margin:0 0 22px}
.p-form{display:flex;flex-direction:column;gap:14px}
.p-field{display:flex;flex-direction:column;gap:6px}
.p-field span{font-size:13px;font-weight:600;color:#334155}
.p-field small{font-weight:400;color:#94a3b8}
.p-field input{border:1px solid #dbe6ec;border-radius:9px;padding:11px 13px;font:inherit;font-size:15px}
.p-field input:focus{outline:none;border-color:var(--brand,#12a4c4);box-shadow:0 0 0 3px var(--brand-pale,#e6f7fb)}
.p-btn-full{width:100%;justify-content:center}
/* Séparateur « ou » entre connexion et création d'accès */
.p-sep{display:flex;align-items:center;gap:12px;margin:22px 0 16px;color:#94a3b8;font-size:12.5px}
.p-sep::before,.p-sep::after{content:'';flex:1;height:1px;background:#e2edf1}
.p-toggle{display:block;width:100%;background:none;border:1.5px solid var(--brand-border,#bfe6f0);border-radius:10px;
    padding:11px;color:var(--brand-deep,#0b3c4d);font:inherit;font-size:14.5px;font-weight:600;cursor:pointer;transition:all .15s}
.p-toggle:hover{background:var(--brand-pale,#e6f7fb);border-color:var(--brand,#12a4c4)}
/* Le formulaire de création respire : il ne colle plus au champ du dessus. */
.p-reg{margin-top:22px;padding-top:22px;border-top:1px dashed #dbe6ec}
.p-reg .s-btn{margin-top:6px}

/* Champ mot de passe : l'œil est posé À L'INTÉRIEUR du champ, qui garde
   exactement la même largeur que les autres champs du formulaire. */
.p-pass{position:relative;display:block;width:100%}
.p-pass input{width:100%;display:block;box-sizing:border-box;padding-inline-end:46px !important}
.p-eye{position:absolute;inset-inline-end:5px;top:50%;transform:translateY(-50%);
    width:34px;height:34px;display:grid;place-items:center;border:0;background:none;
    color:#94a3b8;cursor:pointer;border-radius:7px;transition:color .15s,background .15s;
    padding:0;z-index:2}
.p-eye:hover{color:var(--brand,#12a4c4);background:var(--brand-pale,#e6f7fb)}
.p-eye.is-on{color:var(--brand,#12a4c4)}
/* Concordance des deux mots de passe */
.p-match{display:block;font-style:normal;font-size:12.5px;margin-top:5px;min-height:16px}
.p-match.is-ok{color:#1f7a4d}
.p-match.is-err{color:#b3261e}
.p-hint{font-size:12.5px;color:#94a3b8;text-align:center;margin:2px 0 0}
.p-note{border-radius:9px;padding:11px 14px;font-size:14px;margin-bottom:14px;line-height:1.5}
.p-note-ok{background:#e7f7ee;border:1px solid #b7e0c9;color:#1f5c3d}
.p-note-err{background:#fdecec;border:1px solid #f2c4c4;color:#a33}
.p-note-info{background:var(--brand-pale,#e6f7fb);border:1px solid var(--brand-border,#bfe6f0);color:#0b3c4d}
.p-back{display:inline-block;margin-top:20px;color:#64748b;text-decoration:none;font-size:14px}
.p-back:hover{color:var(--brand,#12a4c4)}

/* Tableau de bord client */
.p-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:34px 0 10px}
.p-hello{font-size:27px;margin:0;color:var(--brand-deep,#0b3c4d)}
.p-hello-sub{color:#64748b;margin:4px 0 0;font-size:14px}
.p-section{font-size:19px;color:var(--brand-deep,#0b3c4d);margin:22px 0 14px;padding-bottom:9px;border-bottom:1px solid #e2edf1}
.p-empty{background:#fff;border:1px dashed #dbe6ec;border-radius:14px;padding:44px 20px;text-align:center}
.p-empty p{color:#64748b;margin:0 0 16px}
.p-list{display:flex;flex-direction:column;gap:16px;padding-bottom:10px}
.p-res{background:#fff;border:1px solid #e2edf1;border-radius:14px;padding:20px;box-shadow:0 2px 10px rgba(0,0,0,.03)}
.p-res-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.p-res-title{font-weight:700;font-size:16.5px;color:var(--brand-deep,#0b3c4d)}
.p-res-ref{color:#64748b;font-size:13px;margin-top:3px}
.p-res-money{display:flex;gap:26px;flex-wrap:wrap;margin:16px 0 4px;padding:13px 0;border-top:1px solid #f1f5f9;border-bottom:1px solid #f1f5f9}
.p-res-money div{display:flex;flex-direction:column;gap:2px}
.p-res-money span{font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;font-weight:600}
.p-res-money b{font-size:15.5px;color:#0f172a}
.p-rest{color:#b45309}
.p-docs{margin-top:16px}
.p-docs-h{font-size:13px;font-weight:700;color:#334155;margin-bottom:10px}
.p-docs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.p-doc{border:1px solid #e2edf1;border-radius:12px;overflow:hidden;background:#fbfdfe}
.p-doc-view{display:block;height:150px;background:#f4f8fa}
.p-doc-view img{width:100%;height:150px;object-fit:cover;display:block}
.p-doc-view embed{width:100%;height:150px;display:block;border:0}
.p-doc-ico{height:150px;display:grid;place-items:center;font-size:34px;color:#94a3b8;gap:2px}
.p-doc-ico small{font-size:11px;font-weight:700;letter-spacing:.06em}
.p-doc-foot{padding:11px}
.p-doc-name{font-size:12.5px;color:#334155;word-break:break-word;margin-bottom:9px}
.p-doc-actions{display:flex;gap:7px;flex-wrap:wrap}
.p-nodoc{color:#94a3b8;font-size:13.5px;font-style:italic;margin:14px 0 0}

/* Colonne aperçu (agence) */
.tx-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.tx-doc-cell{width:64px}
.tx-doc{display:block;width:48px;height:48px;border-radius:8px;overflow:hidden;border:1px solid #e2edf1;background:#f4f8fa}
.tx-doc img{width:48px;height:48px;object-fit:cover;display:block}
.tx-doc-ext{display:grid;place-items:center;width:100%;height:100%;font-size:10px;font-weight:700;color:#64748b;letter-spacing:.04em}
.tx-doc-none{color:#cbd5e1}
.hint-inline{font-weight:400;color:#94a3b8;font-size:12.5px}

@media (max-width:640px){
    .p-auth-card{padding:22px}
    .p-res-money{gap:16px}
    .p-doc-actions .btn{flex:1;justify-content:center}
}

/* ---- Icône « espace client » dans l'en-tête ---- */
.s-acct {
    display: inline-flex; align-items: center; justify-content: center;
    width: 44px; height: 44px; border-radius: 50%; flex-shrink: 0;
    margin-inline: 8px; /* respiration entre le bouton Réserver et le sélecteur de langue */
    color: var(--brand-deep, #0b3c4d); text-decoration: none;
    border: 1px solid var(--brand-border, #d9ecf2); background: var(--brand-pale, #f2fafc);
    transition: all .15s;
}
.s-acct svg { width: 24px; height: 24px; }
.s-acct:hover { background: var(--brand-soft, #d8f1f7); border-color: var(--brand, #12a4c4); }
.s-acct.active { background: var(--brand, #12a4c4); color: #fff; border-color: var(--brand, #12a4c4); }

/* ---- Onglets de types sur la page des offres (site + espace client) ---- */
.s-type-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.s-type-tabs a {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 7px 14px; border-radius: 999px; font-size: 14px; font-weight: 600;
    color: #fff; background: rgba(255,255,255,.14); border: 1px solid rgba(255,255,255,.32);
    text-decoration: none; transition: all .15s; white-space: nowrap;
}
.s-type-tabs a:hover { background: rgba(255,255,255,.26); }
.s-type-tabs a.active { background: #fff; color: var(--brand-deep, #0b3c4d); border-color: #fff; }

/* ---- Page de connexion de l'espace client (autonome) ---- */
.pl-body {
    min-height: 100vh; margin: 0;
    background: var(--brand-pale, #eef6f9);
    background: linear-gradient(160deg, var(--brand-pale, #eef6f9) 0%, #fff 45%, var(--brand-pale, #eef6f9) 100%);
}
.pl-page { padding: 18px 16px 46px; }
.pl-head {
    max-width: 460px; margin: 0 auto 6px; padding: 8px 0;
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
}
.pl-brand { display: inline-flex; align-items: center; gap: 10px; text-decoration: none; min-width: 0; }
.pl-brand img { display: block; width: auto; max-width: 240px; }
.pl-brand-txt {
    font-weight: 700; font-size: 21px; letter-spacing: .04em; text-transform: uppercase;
    color: var(--brand-deep, #0b3c4d); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.pl-body .p-auth-wrap { padding-top: 12px; }
.pl-body .p-auth-card { box-shadow: 0 16px 44px var(--brand-shadow, rgba(14,74,92,.14)); }

/* ============================================================
   ESPACE CLIENT — coquille autonome (comme le tableau de bord
   de l'agence, mais aux couleurs du site).
   ============================================================ */
.pt-body { background: #f4f8fa; min-height: 100vh; display: flex; flex-direction: column; }
.pt-header { background: #fff; border-bottom: 1px solid #e2edf1; position: sticky; top: 0; z-index: 50; }
.pt-header-in {
    max-width: 1200px; margin: 0 auto; padding: 0 20px;
    display: flex; align-items: center; gap: 28px; min-height: 66px;
}
.pt-brand { display: flex; align-items: center; gap: 10px; text-decoration: none; flex-shrink: 0; }
.pt-brand-txt { font-weight: 800; font-size: 17px; color: var(--brand-deep, #0b3c4d); letter-spacing: .2px; }
.pt-brand img { display: block; }

.pt-nav { display: flex; align-items: center; gap: 4px; margin-inline-end: auto; }
.pt-nav a {
    padding: 9px 14px; border-radius: 9px; text-decoration: none;
    color: #5b6b78; font-size: 14.5px; font-weight: 600; transition: all .15s; white-space: nowrap;
}
.pt-nav a:hover { background: var(--brand-pale, #e6f7fb); color: var(--brand-deep, #0b3c4d); }
.pt-nav a.active { background: var(--brand, #12a4c4); color: #fff; }
.pt-nav-site { color: #94a3b8 !important; font-weight: 500 !important; font-size: 13.5px !important; }

.pt-tools { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }

/* Compte + menu déroulant */
.pt-acct { position: relative; }
.pt-acct-btn {
    display: flex; align-items: center; gap: 8px; background: none; border: 1px solid #e2edf1;
    border-radius: 999px; padding: 5px 10px 5px 5px; cursor: pointer; font: inherit;
    color: var(--brand-deep, #0b3c4d); transition: all .15s;
}
.pt-acct-btn:hover { border-color: var(--brand, #12a4c4); background: var(--brand-pale, #e6f7fb); }
.pt-avatar {
    width: 30px; height: 30px; border-radius: 50%; background: var(--brand, #12a4c4);
    color: #fff; display: grid; place-items: center; font-weight: 700; font-size: 13px; flex-shrink: 0;
}
.pt-acct-name { font-size: 14px; font-weight: 600; max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pt-acct-menu {
    display: none; position: absolute; inset-inline-end: 0; top: calc(100% + 8px);
    background: #fff; border: 1px solid #e2edf1; border-radius: 12px; min-width: 210px;
    box-shadow: 0 14px 34px rgba(11,60,77,.16); padding: 6px; z-index: 60;
}
.pt-acct-menu.open { display: block; }
.pt-acct-head { padding: 10px 12px 12px; border-bottom: 1px solid #f1f5f9; margin-bottom: 6px; }
.pt-acct-head b { display: block; font-size: 14px; color: var(--brand-deep, #0b3c4d); }
.pt-acct-head small { color: #94a3b8; font-size: 12.5px; word-break: break-all; }
.pt-acct-menu a {
    display: block; padding: 10px 12px; border-radius: 8px; text-decoration: none;
    color: #334155; font-size: 14px; transition: background .12s;
}
.pt-acct-menu a:hover { background: var(--brand-pale, #e6f7fb); }
.pt-acct-menu .pt-logout { color: #b3261e; }

.pt-main { flex: 1; padding: 26px 0 40px; }
.pt-footer {
    background: #fff; border-top: 1px solid #e2edf1; padding: 18px 0;
    color: #94a3b8; font-size: 13px; text-align: center;
}
.pt-footer a { color: #64748b; text-decoration: none; }

/* En-tête de page dans l'espace */
.pt-body .p-head { padding: 0 0 4px; }
.pt-body .p-hello { font-size: 24px; }

/* ---- Mon profil (espace client) ---- */
.pp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; align-items: start; }
.pp-card { padding: 24px; }
.pp-title { margin: 0 0 14px; font-size: 18px; color: var(--brand-deep, #0b3c4d); }
.pp-info { margin: 0; display: grid; gap: 10px; }
.pp-info div { display: flex; justify-content: space-between; gap: 14px; border-bottom: 1px dashed #e2edf1; padding-bottom: 8px; }
.pp-info dt { color: #94a3b8; font-size: 13.5px; }
.pp-info dd { margin: 0; font-weight: 600; color: #1e293b; font-size: 14.5px; word-break: break-word; text-align: end; }
@media (max-width: 800px) { .pp-grid { grid-template-columns: 1fr; } }

@media (max-width: 900px) {
    /* Sur mobile, la navigation est dans le menu du compte (avatar) :
       on masque la barre de liens — en-tête compact : marque + langue + avatar. */
    .pt-nav { display: none; }
    .pt-header-in { gap: 12px; padding: 0 14px; }
    .pt-brand { min-width: 0; flex: 1 1 auto; overflow: hidden; }
    .pt-brand-txt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .pt-acct-name { display: none; }
    .pt-acct-btn { padding: 4px; border-color: transparent; }
}
