/* ============================================================
   HORIZON VOYAGES — Feuille de style principale
   Palette : bleu marine (confiance / grand large) + rouge corail
   (énergie, cachet de voyage). Typo : Fraunces (display) +
   Public Sans (texte) + IBM Plex Mono (détails "billet").
   Signature visuelle : les circuits sont présentés comme des
   billets d'embarquement (perforation, souches, tampon).
   ============================================================ */

:root {
    --bleu-marine: #0e3a63;
    --bleu-marine-fonce: #082745;
    --bleu-ciel: #eaf1f8;
    --rouge: #c8353a;
    --rouge-fonce: #a02328;
    --creme: #faf8f4;
    --encre: #17324f;
    --gris-texte: #5b6b7a;
    --or-sable: #d9a441;
    --rayon: 14px;
    --ombre: 0 10px 30px rgba(14, 58, 99, 0.10);
}

* { box-sizing: border-box; }

body {
    font-family: 'Public Sans', Arial, sans-serif;
    color: var(--encre);
    background: var(--creme);
    line-height: 1.6;
}

h1, h2, h3, h4, .police-affichage {
    font-family: 'Fraunces', Georgia, serif;
    color: var(--bleu-marine-fonce);
    letter-spacing: -0.01em;
}

.texte-mono, .prix, .reference-billet, .date-billet {
    font-family: 'IBM Plex Mono', monospace;
}

a { text-decoration: none; }

/* ---------- Bandeau haut + nav ---------- */
.bandeau-haut {
    background: var(--bleu-marine-fonce);
    color: #dbe7f3;
    font-size: 13px;
    padding: 7px 0;
}
.bandeau-coordonnees span { margin-right: 18px; }
.bandeau-garantie { font-style: italic; font-family:'Fraunces', serif; }

.navbar-principale {
    background: #fff;
    box-shadow: 0 2px 14px rgba(14,58,99,.06);
    padding: 14px 0;
}
.marque-nom {
    font-family: 'Fraunces', serif;
    font-weight: 700;
    font-size: 26px;
    color: var(--bleu-marine);
}
.marque-accent { color: var(--rouge); }
.navbar-principale .nav-link {
    color: var(--encre);
    font-weight: 600;
    font-size: 15px;
    padding: 8px 14px !important;
}
.navbar-principale .nav-link:hover { color: var(--rouge); }
.btn-cta-nav {
    background: var(--rouge);
    color: #fff !important;
    font-weight: 700;
    padding: 10px 20px;
    border-radius: 50px;
    transition: background .15s ease;
}
.btn-cta-nav:hover { background: var(--rouge-fonce); color:#fff; }

/* ---------- Boutons génériques ---------- */
.btn-principal {
    background: var(--rouge);
    border: none;
    color: #fff;
    font-weight: 700;
    padding: 12px 28px;
    border-radius: 50px;
    transition: transform .15s ease, background .15s ease;
}
.btn-principal:hover { background: var(--rouge-fonce); color:#fff; transform: translateY(-2px); }
.btn-secondaire {
    background: transparent;
    border: 2px solid var(--bleu-marine);
    color: var(--bleu-marine);
    font-weight: 700;
    padding: 10px 26px;
    border-radius: 50px;
}
.btn-secondaire:hover { background: var(--bleu-marine); color: #fff; }

/* ---------- Hero ---------- */
.hero {
    position: relative;
    min-height: 620px;
    display: flex;
    align-items: center;
    background: linear-gradient(180deg, rgba(8,39,69,.72), rgba(8,39,69,.55)), 
                url('/assets/images/site/hero-voyage.jpg') center/cover no-repeat;
    color: #fff;
}
.hero .eyebrow {
    font-family: 'Fraunces', serif;
    font-style: italic;
    font-size: 19px;
    color: #ffd9a0;
    display:inline-block;
    margin-bottom: 10px;
}
.hero h1 {
    color: #fff;
    font-size: clamp(2.2rem, 5vw, 3.6rem);
    font-weight: 600;
    max-width: 780px;
}
.hero p.lead { color: #e6eef7; max-width: 600px; font-size: 18px; }

/* Barre de recherche flottante style "comptoir d'embarquement" */
.barre-recherche {
    background: #fff;
    border-radius: var(--rayon);
    box-shadow: var(--ombre);
    padding: 22px;
    margin-top: -60px;
    position: relative;
    z-index: 5;
}
.barre-recherche label {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--gris-texte);
    font-weight: 700;
}
.barre-recherche select, .barre-recherche input {
    border: 1px solid #dbe4ec;
    border-radius: 8px;
    padding: 10px 12px;
}

/* ---------- Sections génériques ---------- */
.section { padding: 78px 0; }
.section-titre-eyebrow {
    font-family: 'Fraunces', serif;
    font-style: italic;
    color: var(--rouge);
    font-size: 17px;
}
.section-titre { font-size: clamp(1.7rem, 3vw, 2.4rem); margin-bottom: 10px; }
.section-soustitre { color: var(--gris-texte); max-width: 640px; }
.section-alt { background: var(--bleu-ciel); }

/* ============================================================
   SIGNATURE : cartes circuits en forme de billet d'embarquement
   ============================================================ */
.billet-circuit {
    background: #fff;
    border-radius: var(--rayon);
    box-shadow: var(--ombre);
    overflow: hidden;
    height: 100%;
    display: flex;
    flex-direction: column;
    transition: transform .18s ease, box-shadow .18s ease;
    position: relative;
}
.billet-circuit:hover { transform: translateY(-6px); box-shadow: 0 18px 40px rgba(14,58,99,.18); }

.billet-image { position: relative; height: 210px; overflow: hidden; }
.billet-image img { width: 100%; height: 100%; object-fit: cover; }
.billet-badge-vedette {
    position: absolute; top: 14px; left: -6px;
    background: var(--rouge); color:#fff; font-size: 12px; font-weight: 700;
    padding: 5px 14px 5px 18px; border-radius: 0 20px 20px 0;
    box-shadow: 0 3px 8px rgba(0,0,0,.2);
}
.billet-duree {
    position: absolute; bottom: 12px; right: 12px;
    background: rgba(8,39,69,.85); color: #fff;
    font-family: 'IBM Plex Mono', monospace; font-size: 13px;
    padding: 4px 12px; border-radius: 20px;
}

.billet-corps { padding: 20px 22px 6px; flex-grow: 1; }
.billet-destination { font-size: 12px; text-transform: uppercase; letter-spacing: .07em; color: var(--rouge); font-weight: 700; }
.billet-titre { font-size: 20px; margin: 6px 0 10px; line-height: 1.3; }
.billet-resume { color: var(--gris-texte); font-size: 14.5px; }

/* Ligne de perforation façon souche de billet */
.billet-perforation {
    position: relative;
    height: 0;
    border-top: 2px dashed #d7e0e8;
    margin: 18px 0 0;
}
.billet-perforation::before, .billet-perforation::after {
    content: '';
    position: absolute; top: -10px;
    width: 20px; height: 20px;
    background: var(--creme);
    border-radius: 50%;
}
.billet-perforation::before { left: -32px; }
.billet-perforation::after { right: -32px; }

.billet-pied {
    display: flex; align-items: center; justify-content: space-between;
    padding: 16px 22px 22px;
}
.billet-prix { font-size: 22px; font-weight: 700; color: var(--bleu-marine); }
.billet-prix small { display:block; font-family:'Public Sans',sans-serif; font-weight:500; font-size: 12px; color: var(--gris-texte); }
.billet-prix .barre { text-decoration: line-through; color:#a9b6c1; font-size:14px; font-weight:500; margin-right:6px;}

/* ---------- Chiffres clés (bandeau confiance) ---------- */
.chiffres-cle { background: var(--bleu-marine-fonce); color: #fff; padding: 44px 0; }
.chiffre-item { text-align: center; }
.chiffre-valeur { font-family:'Fraunces', serif; font-size: 2.4rem; color: #ffd9a0; }
.chiffre-label { font-size: 14px; color: #cfe0ef; }

/* ---------- Témoignages ---------- */
.temoignage-carte {
    background: #fff; border-radius: var(--rayon); padding: 28px;
    box-shadow: var(--ombre); height: 100%;
}
.temoignage-etoiles { color: var(--or-sable); letter-spacing: 2px; }
.temoignage-nom { font-weight: 700; color: var(--bleu-marine); }

/* ---------- Fil d'Ariane ---------- */
.fil-ariane { font-size: 13.5px; color: var(--gris-texte); padding: 16px 0; }
.fil-ariane a { color: var(--bleu-marine); font-weight: 600; }

/* ---------- Page détail circuit ---------- */
.circuit-hero-img { border-radius: var(--rayon); overflow:hidden; height: 420px; }
.circuit-hero-img img { width:100%; height:100%; object-fit:cover; }
.circuit-onglet-nav .nav-link { color: var(--encre); font-weight:700; border:none; border-bottom:3px solid transparent; }
.circuit-onglet-nav .nav-link.active { color: var(--rouge); border-bottom-color: var(--rouge); background: transparent; }

.encart-reservation {
    background: #fff; border-radius: var(--rayon); box-shadow: var(--ombre);
    padding: 26px; position: sticky; top: 20px;
    border-top: 5px solid var(--rouge);
}
.encart-reservation .prix-encart { font-size: 30px; color: var(--bleu-marine); font-weight: 700; }

.jour-programme {
    border-left: 3px solid var(--bleu-ciel);
    padding: 4px 0 26px 24px;
    position: relative;
}
.jour-programme::before {
    content: '';
    position: absolute; left: -8px; top: 4px;
    width: 14px; height: 14px; border-radius: 50%;
    background: var(--rouge);
}
.jour-numero { font-family:'IBM Plex Mono', monospace; color: var(--rouge); font-weight:700; font-size:13px; }

/* ---------- Formulaires ---------- */
.form-control, .form-select {
    border-radius: 8px;
    border: 1px solid #d7e0e8;
    padding: 11px 14px;
}
.form-control:focus, .form-select:focus {
    border-color: var(--bleu-marine);
    box-shadow: 0 0 0 3px rgba(14,58,99,.15);
}
label.form-label { font-weight: 600; font-size: 14px; color: var(--encre); }

/* ---------- Pied de page ---------- */
.site-pied { background: var(--bleu-marine-fonce); color: #cfe0ef; padding: 64px 0 24px; }
.pied-logo { color: #fff; }
.pied-logo .marque-accent { color: #ffb199; }
.pied-texte { color: #a9c2d7; font-size: 14.5px; }
.pied-titre { color: #fff; font-family:'Fraunces', serif; margin-bottom: 14px; }
.pied-liens { list-style:none; padding:0; }
.pied-liens li { margin-bottom: 8px; }
.pied-liens a { color: #a9c2d7; font-size: 14.5px; }
.pied-liens a:hover { color: #fff; }
.pied-separateur { border-color: rgba(255,255,255,.12); margin: 34px 0 18px; }
.pied-bas { font-size: 13px; color: #8fa9c0; }

/* ---------- Page contact ---------- */
.carte-info-contact {
    background:#fff; border-radius: var(--rayon); box-shadow: var(--ombre);
    padding: 26px; text-align:center; height:100%;
}
.carte-info-contact .icone { font-size: 30px; color: var(--rouge); margin-bottom:10px; }

/* ---------- Accessibilité ---------- */
a:focus-visible, button:focus-visible, .lang-bouton:focus-visible {
    outline: 3px solid var(--rouge);
    outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
    * { transition: none !important; animation: none !important; }
}

/* ---------- Responsive ---------- */
@media (max-width: 768px) {
    .hero { min-height: 480px; }
    .barre-recherche { margin-top: -30px; }
    .encart-reservation { position: static; margin-top: 30px; }
}
