/* ===================== BASE ===================== */
:root {
  /* ---- NOCTURNE — luxe parisien (voir DESIGN-NOTES.md) ---- */
  --black: #0B0B0D;                  /* noir laqué : bandes hero/header/footer/CTA */
  --dark: #141418;                   /* noir surélevé */
  --accent: #8C6A2C;                 /* or fonctionnel — lisible (AA) sur ivoire/blanc */
  --accent-dark: #6F521F;            /* or foncé (hover) */
  --champagne: #CFAE74;              /* champagne métal — accent sur fonds SOMBRES */
  --accent-soft: #F1E9D6;            /* teinte or claire (badges/hover clair) */
  --sage: #E7DECB;                   /* neutre chaud (bandes claires) */
  --sage-light: #F1EADA;
  --text: #1A1916;                   /* encre chaude */
  --muted: #6A6459;                  /* gris chaud */
  --white: #ffffff;

  /* Surfaces & borders — canvas ivoire chaud */
  --bg: #F5F2EC;
  --surface: #FBF9F4;
  --surface-2: #EFE9DD;
  --border: #E4DDCE;
  --border-strong: #D3C9B4;
  --ring: 0 0 0 3px rgba(140, 106, 44, .35);

  /* Semantic */
  --ok: #1a7f37;
  --warn: #b97400;
  --danger: #d23b3b;
  --info: var(--accent);

  /* Radii */
  --r-sm: 8px;
  --r-md: 12px;
  --r-lg: 16px;
  --r-xl: 24px;
  --r-pill: 999px;
  --radius: 16px;                    /* legacy alias (kept) */

  /* Elevation */
  --shadow-sm: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .08);
  --shadow-md: 0 6px 16px rgba(16, 24, 40, .10);
  --shadow-lg: 0 18px 50px rgba(0, 0, 0, .12);
  --shadow-accent: 0 8px 24px rgba(140, 106, 44, .26);
  --shadow: 0 18px 50px rgba(0, 0, 0, .12);   /* legacy alias (kept) */

  /* Fluid spacing scale (phone → desktop) */
  --space-1: clamp(.25rem, .2rem + .25vw, .375rem);
  --space-2: clamp(.5rem, .4rem + .4vw, .75rem);
  --space-3: clamp(.75rem, .6rem + .6vw, 1rem);
  --space-4: clamp(1rem, .8rem + .9vw, 1.5rem);
  --space-5: clamp(1.5rem, 1.1rem + 1.4vw, 2.25rem);
  --space-6: clamp(2rem, 1.5rem + 2vw, 3.25rem);
  --space-7: clamp(3rem, 2.2rem + 3vw, 5rem);
  --space-8: clamp(4rem, 3rem + 4vw, 7rem);

  /* Fluid type scale */
  --text-xs: clamp(.72rem, .7rem + .1vw, .78rem);
  --text-sm: clamp(.82rem, .8rem + .12vw, .9rem);
  --text-base: clamp(.95rem, .92rem + .2vw, 1.05rem);
  --text-lg: clamp(1.1rem, 1rem + .4vw, 1.3rem);
  --text-xl: clamp(1.35rem, 1.2rem + .8vw, 1.8rem);
  --text-2xl: clamp(1.8rem, 1.5rem + 1.6vw, 2.6rem);
  --text-3xl: clamp(2.2rem, 1.7rem + 2.6vw, 3.6rem);

  /* Motion */
  --ease: cubic-bezier(.4, 0, .2, 1);
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --dur: .22s;

  /* Z-index scale */
  --z-header: 100;
  --z-dropdown: 200;
  --z-overlay: 1000;
  --z-modal: 1100;
  --z-toast: 1200;

  /* Breakpoints (reference; CSS vars can't be used inside @media):
     xs 480 · sm 640 · md 768 · lg 1024 · xl 1280 · 2xl 1440 */
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  font-family: 'Hanken Grotesk', system-ui, sans-serif;
  color: var(--text);
  background: var(--bg);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img { max-width: 100%; height: auto; display: block; }
a { text-decoration: none; color: inherit; }
ul { list-style: none; }

/* Display face (Fraunces) — réservée aux titres éditoriaux ; l'UI reste en grotesque */
h1, h2, .section-title, .hero h1, .slide-content h1, .slide-content h2, .slide-content .slide-h {
  font-family: 'Fraunces', 'Hanken Grotesk', Georgia, serif;
  font-optical-sizing: auto;
}

.section-title {
  text-align: center;
  font-size: clamp(2rem, 4vw, 3.2rem);
  font-weight: 500;
  letter-spacing: -.5px;
  line-height: 1.08;
}

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .4rem;
  font-weight: 600;
  border-radius: 6px;
  padding: .72rem 1.6rem;
  white-space: nowrap;
  cursor: pointer;
  border: none;
  letter-spacing: .2px;
  transition: transform .2s, background .2s, color .2s, box-shadow .2s;
  font-family: inherit;
}
.btn:hover { transform: translateY(-2px); }

/* Table comparative (ex. taxi vs chauffeur) */
.cmp { width: 100%; border-collapse: collapse; margin: 1.4rem 0; font-size: .95rem; background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-md); overflow: hidden; }
.cmp th, .cmp td { padding: .8rem 1rem; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; }
.cmp thead th { background: var(--surface-2); font-weight: 700; color: var(--text); }
.cmp thead th.hl { color: var(--accent-dark); }
.cmp tbody th { font-weight: 600; color: var(--muted); width: 30%; }
.cmp td.hl { background: var(--accent-soft); }
.cmp .yes { color: var(--ok); font-weight: 700; }
.cmp .no { color: var(--danger); font-weight: 700; }
.cmp tr:last-child th, .cmp tr:last-child td { border-bottom: 0; }
@media (max-width: 640px) { .cmp th, .cmp td { padding: .55rem .6rem; font-size: .82rem; } .cmp tbody th { width: 34%; } }

/* Bandeau note / confiance (sous le hero) */
.rating-bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .5rem 2.2rem; padding: .9rem 1.5rem; background: var(--surface); border-bottom: 1px solid var(--border); font-size: .9rem; color: var(--muted); text-align: center; }
.rating-bar .rb-item { display: inline-flex; align-items: center; gap: .45rem; }
.rating-bar .rb-google { color: var(--text); text-decoration: none; font-weight: 600; transition: color .2s; }
.rating-bar .rb-google:hover { color: var(--accent-dark); }
.rating-bar .rb-google strong { color: var(--text); }
.rating-bar .rb-stars { color: var(--accent); letter-spacing: 1px; font-size: 1rem; }
@media (max-width: 640px) { .rating-bar { gap: .35rem 1.2rem; font-size: .82rem; padding: .7rem 1rem; } }

/* ===================== FOUNDATION (accessibility · motion · touch) ===================== */
/* Visible, consistent keyboard focus everywhere; no ring on mouse/touch press */
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 4px; }
:where(a, button, input, select, textarea, [tabindex]):focus:not(:focus-visible) { outline: none; }
.btn:focus-visible { outline: none; box-shadow: var(--ring); }
::selection { background: var(--accent); color: #fff; }

/* Comfortable tap targets on touch devices (Apple/Material ≥44px guidance) */
@media (pointer: coarse) {
  .btn, button, [role="button"], .cls-card, .sim-tab,
  .admin-tabs button, input:not([type="checkbox"]):not([type="radio"]), select, textarea {
    min-height: 44px;
  }
}

/* Honour reduced-motion preference */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}

/* ===================== HEADER ===================== */
.site-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 50;
  color: var(--white);
  background: linear-gradient(to bottom, rgba(0,0,0,.55), rgba(0,0,0,0));
  transition: background .3s ease, box-shadow .3s ease;
}
.site-header.scrolled, .site-header.solid {
  background: var(--black);
  box-shadow: 0 4px 22px rgba(0,0,0,.35);
}
/* hero-less pages: offset the fixed header */
body.no-hero { padding-top: 72px; }
.header-inner {
  max-width: 1400px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 2rem;
  padding: .9rem 2rem;
}
/* Logo d'en-tete. max-height + max-width plutot qu'une hauteur fixe : sous contrainte le
   navigateur reduit l'image en respectant ses proportions, au lieu de la laisser deborder
   de la barre. min-width:0 autorise l'element flex a retrecir — sans lui, sa taille
   minimale reste celle de l'image et c'est tout l'en-tete qui deborde de l'ecran. */
.logo, .logo picture { display: flex; align-items: center; min-width: 0; }
.logo img { height: auto; width: auto; max-height: 46px; max-width: 100%; }

.main-nav { flex: 1; }
.nav-primary {
  display: flex;
  gap: 1.7rem;
  align-items: center;
  font-weight: 600;
  font-size: .95rem;
}
.nav-primary > li > a {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .5rem 0;
  transition: color .2s;
}
.nav-primary > li > a::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -1px;
  height: 2px; border-radius: 2px;
  background: var(--champagne);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .25s ease;
}
.nav-primary > li > a:hover, .has-dropdown:hover > a { color: var(--champagne); }
.nav-primary > li > a:hover::after,
.has-dropdown:hover > a::after,
.nav-primary a.is-current::after { transform: scaleX(1); }
.has-dropdown > a .caret { transition: transform .25s ease; }
.has-dropdown:hover > a .caret { transform: rotate(180deg); }
.nav-tagline {
  margin-top: .35rem;
  font-size: .82rem;
  color: #cfd3d6;
  font-weight: 500;
}
.caret { font-size: .7em; opacity: .8; }

.header-actions {
  display: flex;
  align-items: center;
  gap: .85rem;
  flex-shrink: 0;
}
.icon-btn {
  background: none;
  border: none;
  color: var(--white);
  cursor: pointer;
  display: grid;
  place-items: center;
  width: 38px; height: 38px;
  border-radius: 50%;
  transition: background .2s;
}
.icon-btn:hover { background: rgba(255,255,255,.14); }
.phone {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  font-weight: 600;
  font-size: .92rem;
  color: var(--champagne);
  white-space: nowrap;
}
.header-actions .btn { padding: .58rem 1.25rem; }
.phone svg { color: var(--champagne); }
.lang-switch { position: relative; display: inline-flex; align-items: center; }
.lang-btn {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  background: none;
  border: none;
  color: var(--white);
  font-family: inherit;
  font-weight: 600;
  font-size: .9rem;
  cursor: pointer;
  padding: .3rem .3rem;
  line-height: 1;
}
.lang-btn svg { opacity: .9; flex: none; }
.lang-btn .lang-cur { letter-spacing: .02em; }
.lang-btn .caret { font-size: .7rem; opacity: .7; transition: transform .18s ease; }
.lang-btn[aria-expanded="true"] .caret { transform: rotate(180deg); }
.lang-btn:hover { color: var(--champagne); }
.lang-menu {
  position: absolute;
  top: calc(100% + 8px);
  right: 0;
  min-width: 148px;
  display: flex;
  flex-direction: column;
  background: #14181c;
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 10px;
  box-shadow: 0 12px 30px rgba(0, 0, 0, .4);
  padding: .35rem;
  z-index: 60;
}
.lang-menu[hidden] { display: none; }
.lang-menu a {
  color: #cfd4d8;
  text-decoration: none;
  font-weight: 600;
  font-size: .9rem;
  padding: .5rem .7rem;
  border-radius: 7px;
  transition: background .15s, color .15s;
}
.lang-menu a:hover { background: rgba(255, 255, 255, .08); color: var(--white); }
.lang-menu a.active { color: var(--champagne); }
/* Variante sans JS pour les pages ES (îlots, header en dur) : disclosure natif <details> */
.lang-details { position: relative; display: inline-flex; align-items: center; }
.lang-details > summary.lang-btn { list-style: none; }
.lang-details > summary.lang-btn::-webkit-details-marker { display: none; }
.lang-details > summary.lang-btn::marker { content: ""; }
.lang-details[open] .caret { transform: rotate(180deg); }
.lang-details .lang-menu { display: none; }
.lang-details[open] .lang-menu { display: flex; }
.btn-login {
  background: #2a2d30;
  color: var(--white);
}
.btn-login:hover { background: #3a3e42; }
.btn-signup {
  background: var(--white);
  color: var(--black);
}
.burger {
  display: none;
  flex-direction: column;
  gap: 4px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px;
}
.burger span {
  width: 24px;
  height: 2px;
  background: var(--white);
  border-radius: 2px;
}

/* ===================== HERO ===================== */
.hero {
  position: relative;
  background: transparent;
  padding: 0 0 3rem;
}
.hero-watermark {
  position: absolute;
  top: 90px; left: 0; right: 0;
  z-index: 2;
  text-align: center;
  font-size: clamp(1.1rem, 3vw, 2rem);
  font-weight: 700;
  letter-spacing: 3px;
  color: rgba(207, 174, 116, .20);
  text-transform: uppercase;
  pointer-events: none;
  margin: 0;
}

.hero-slider {
  position: relative;
  max-width: none;
  margin: 0;
}
.slides {
  position: relative;
  height: clamp(560px, 90vh, 860px);
}
.slide {
  position: absolute;
  inset: 0;
  background: var(--bg) center/cover no-repeat;
  opacity: 0;
  transition: opacity .7s ease;
  display: flex;
  align-items: flex-end;
}
.slide::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,.15) 0%, rgba(0,0,0,.65) 100%);
}
.slide.is-active { opacity: 1; }
.slide-content {
  position: relative;
  z-index: 2;
  color: var(--white);
  padding: 0 0 4rem 4rem;
  max-width: 760px;
}
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: .7rem;
  font-family: 'Hanken Grotesk', system-ui, sans-serif;
  font-weight: 600;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  font-size: .74rem;
  color: var(--champagne);
  margin-bottom: 1rem;
}
.eyebrow::before {                    /* amorce du « fil d'itinéraire » (signature) */
  content: "";
  width: 34px; height: 1px;
  background: var(--champagne);
  opacity: .8;
}
.slide-content h1, .slide-content h2, .slide-content .slide-h {
  font-size: clamp(2.4rem, 5.4vw, 4.4rem);
  font-weight: 400;
  line-height: 1.04;
  letter-spacing: -.5px;
  margin: 0;
}

.slider-controls {
  position: absolute;
  top: 38%;
  left: 4rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  z-index: 3;
}
.slider-arrow {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  border: none;
  background: rgba(255, 255, 255, .18);
  backdrop-filter: blur(4px);
  color: var(--white);
  font-size: 1.2rem;
  cursor: pointer;
  transition: background .2s;
}
.slider-arrow:hover { background: rgba(255, 255, 255, .35); }
.slider-count {
  color: var(--white);
  font-weight: 600;
  letter-spacing: 1px;
}

/* Booking card */
.booking-card {
  position: relative;
  z-index: 5;
  max-width: 1100px;
  margin: -3.5rem auto 0;
  background: var(--white);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 1.4rem 1.6rem;
}
.booking-tabs {
  display: flex;
  gap: .5rem;
  margin-bottom: 1rem;
}
.b-tab {
  background: none;
  border: none;
  font-family: inherit;
  font-weight: 600;
  font-size: .95rem;
  color: var(--muted);
  padding: .4rem .9rem;
  border-radius: 999px;
  cursor: pointer;
}
.b-tab.is-active { background: var(--black); color: var(--white); }
.booking-form {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr auto;
  gap: 1rem;
  align-items: end;
}
.field { display: flex; flex-direction: column; gap: .35rem; }
.field span { font-size: .78rem; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: .5px; }
.field input {
  border: 1px solid #E4DDCE;
  border-radius: 10px;
  padding: .7rem .85rem;
  font-family: inherit;
  font-size: .95rem;
  outline: none;
  transition: border .2s;
}
.field input:focus { border-color: var(--accent); }
.btn-book {
  background: var(--accent);
  color: var(--white);
  height: 46px;
  padding: 0 1.6rem;
  white-space: nowrap;
}
.btn-book:hover { background: var(--accent-dark); }

/* ===================== SPECIALTIES ===================== */
.specialties {
  background: var(--sage);
  padding: 4.5rem 2rem 5.5rem;
}
.specialty-grid {
  max-width: 1400px;
  margin: 3rem auto 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2.5rem;
}
.shield {
  display: grid;
  place-items: center;
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: rgba(255,255,255,.55);
  color: var(--black);
  margin-bottom: 1.3rem;
}
.shield svg { width: 30px; height: 30px; }
.specialty-col h3 {
  font-size: 1.4rem;
  font-weight: 700;
  margin-bottom: 1.2rem;
}
.specialty-col ul li {
  position: relative;
  padding-left: 1.1rem;
  margin-bottom: .85rem;
  color: #3b4347;
}
.specialty-col ul li::before {
  content: "•";
  position: absolute;
  left: 0;
  color: #6c7479;
}

/* ===================== WHAT WE PROVIDE ===================== */
.provide {
  background: var(--black);
  color: var(--white);
  padding: 5rem 2rem 5.5rem;
}
.provide-top {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1.1fr 1fr;
  gap: 3rem;
  align-items: start;
}
.provide-top h2 {
  font-size: clamp(1.8rem, 3.2vw, 2.9rem);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -.5px;
}
.provide-top h2 .muted { color: #6c7177; }
.provide-text p { color: #c9ced2; margin-bottom: 1.4rem; }
.provide-text ul li {
  position: relative;
  padding-left: 1.4rem;
  margin-bottom: .9rem;
  color: #d7dbde;
}
.provide-text ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: .55rem;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent);
}
.provide-gallery {
  max-width: 1400px;
  margin: 3.5rem auto 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
.provide-gallery figure {
  border-radius: var(--radius);
  overflow: hidden;
  aspect-ratio: 3/4;
}
.provide-gallery img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .5s;
}
.provide-gallery figure:hover img { transform: scale(1.05); }

/* ===================== FLEET ===================== */
.fleet {
  background: var(--sage);
  padding: 4rem 2rem 5.5rem;
}
.fleet .section-title { margin-bottom: 2.5rem; }
.fleet-filters {
  display: flex;
  justify-content: center;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 3rem;
}
.filter {
  background: var(--black);
  color: var(--white);
  border: none;
  border-radius: 10px;
  padding: .75rem 1.6rem;
  font-family: inherit;
  font-weight: 600;
  font-size: .95rem;
  cursor: pointer;
  transition: background .2s, color .2s;
}
.filter.is-active { background: var(--accent); }
.fleet-grid {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
}
.car-card {
  background: var(--white);
  border-radius: var(--radius);
  padding: 1.6rem 1.8rem 2rem;
  box-shadow: 0 10px 30px rgba(0,0,0,.06);
  transition: transform .25s, box-shadow .25s;
}
.car-card:hover { transform: translateY(-5px); box-shadow: var(--shadow); }
.car-img {
  height: 170px;
  display: grid;
  place-items: center;
  margin-bottom: 1rem;
}
.car-img img { max-height: 100%; object-fit: contain; }
.car-card h3 {
  font-size: 1.5rem;
  font-weight: 700;
  margin-bottom: .3rem;
}
.car-sub {
  font-size: .9rem;
  color: var(--muted);
  margin-bottom: .8rem;
}
.car-meta {
  display: flex;
  gap: 1.5rem;
  margin-top: .8rem;
  font-size: .95rem;
  color: #3b4347;
  font-weight: 500;
}
.car-card.is-hidden { display: none; }

/* ===================== LIMOUSINE / STATS ===================== */
.limo {
  background: var(--black);
  color: var(--white);
  padding: 5.5rem 2rem;
  position: relative;
  overflow: hidden;
}
.limo::before {
  content: "";
  position: absolute;
  top: -30%;
  left: -10%;
  width: 60%;
  height: 80%;
  background: radial-gradient(circle, rgba(207,174,116,.14), transparent 70%);
}
.limo-inner {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  position: relative;
  z-index: 2;
  align-items: start;
}
.limo-left h2 {
  font-size: clamp(2.2rem, 4vw, 3.6rem);
  font-weight: 700;
  line-height: 1.1;
  letter-spacing: -1px;
  margin-bottom: 2.5rem;
}
.limo-left .accent { color: var(--accent); }
.btn-book--lg { padding: .9rem 2.2rem; font-size: 1.05rem; }
.limo-right p { color: #c9ced2; margin-bottom: 1.2rem; }
.limo-cta { color: var(--white) !important; font-weight: 600; }
.stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
  margin-top: 3rem;
}
.stat .num {
  font-size: clamp(2.4rem, 4vw, 3.4rem);
  font-weight: 800;
  line-height: 1;
  display: block;
  margin-bottom: .6rem;
}
.stat p { color: #aeb4b8; font-weight: 600; line-height: 1.3; }

/* ===================== FOOTER ===================== */
.site-footer {
  background: #060708;
  color: #c9ced2;
  padding: 4rem 2rem 1.5rem;
}
.footer-inner {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr;
  gap: 2.5rem;
}
.footer-brand img { height: 44px; width: auto; margin-bottom: 1.2rem; }
.footer-brand p { margin-bottom: 1rem; max-width: 340px; }
.footer-addr { color: #aeb4b8; font-size: .9rem; margin-bottom: .5rem; }
.footer-phone { color: var(--champagne); font-weight: 600; }
.footer-social { display: flex; gap: .7rem; margin-top: 1.2rem; }
.footer-social a { width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; background: #16191c; color: #c9ced2; transition: background .2s, color .2s, transform .2s; }
.footer-social a:hover { background: var(--accent); color: #fff; transform: translateY(-2px); }

/* Keyword internal-linking band */
.seo-explore { background: var(--sage-light); border-top: 1px solid rgba(0,0,0,.05); }
.seo-explore-inner { max-width: 1400px; margin: 0 auto; padding: 1.3rem 2rem; display: flex; align-items: center; gap: .8rem 1.5rem; flex-wrap: wrap; }
.seo-explore-h { font-weight: 700; color: var(--text); }
.seo-explore nav { display: flex; gap: .5rem 1.3rem; flex-wrap: wrap; }
.seo-explore a { color: #3b4347; font-weight: 600; font-size: .92rem; }
.seo-explore a:hover { color: var(--accent); text-decoration: underline; }

/* Discreet homepage "Follow us" band */
.social-band { background: var(--sage-light); border-top: 1px solid rgba(0,0,0,.05); }
.social-band-inner { max-width: 1400px; margin: 0 auto; padding: 1.4rem 2rem; display: flex; align-items: center; justify-content: space-between; gap: 1.2rem; flex-wrap: wrap; }
.social-band-inner > div:first-child { display: flex; flex-direction: column; }
.social-band-inner strong { font-size: 1.1rem; }
.social-band-inner span { color: var(--muted); font-size: .9rem; }
.social-row { display: flex; gap: .7rem; }
.social-row a { width: 42px; height: 42px; border-radius: 50%; display: grid; place-items: center; background: var(--white); color: var(--text); box-shadow: 0 4px 12px rgba(0,0,0,.06); transition: background .2s, color .2s, transform .2s; }
.social-row a:hover { background: var(--accent); color: #fff; transform: translateY(-2px); }
@media (max-width: 620px) { .social-band-inner { justify-content: center; text-align: center; } }
.footer-col h4 {
  color: var(--white);
  margin-bottom: 1.2rem;
  font-size: 1.05rem;
}
.footer-col ul li { margin-bottom: .7rem; }
.footer-col a:hover { color: var(--champagne); }
.footer-bottom {
  max-width: 1400px;
  margin: 3rem auto 0;
  padding-top: 1.5rem;
  border-top: 1px solid #1c1f22;
  display: flex;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 1rem;
  font-size: .88rem;
}
.footer-bottom a:hover { color: var(--champagne); }

/* ===================== BACK TO TOP ===================== */
.back-to-top {
  position: fixed;
  right: 1.5rem;
  bottom: 1.5rem;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--white);
  color: var(--accent);
  display: grid;
  place-items: center;
  font-size: 1.3rem;
  box-shadow: var(--shadow);
  border: 1px solid #e3e9e7;
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s, transform .3s;
  z-index: 40;
}
.back-to-top.show { opacity: 1; pointer-events: auto; }
.back-to-top:hover { transform: translateY(-3px); }

/* ===================== NAV DROPDOWN ===================== */
.has-dropdown { position: relative; }
/* invisible hover bridge so the menu doesn't close in the gap below the link */
.has-dropdown:hover::before {
  content: ''; position: absolute; top: 100%; left: 0; width: 100%; height: 16px;
}
.dropdown {
  position: absolute;
  top: 100%;
  left: 0;
  margin-top: 12px;
  background: #16181a;
  border: 1px solid rgba(255,255,255,.08);
  border-top: 2px solid var(--accent);
  border-radius: 12px;
  padding: .5rem;
  min-width: 230px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity .22s ease, transform .22s ease, visibility .22s;
  box-shadow: 0 24px 48px rgba(0,0,0,.45);
  z-index: 60;
}
.has-dropdown:hover .dropdown { opacity: 1; visibility: visible; transform: translateY(0); }
.dropdown li a {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .62rem .9rem;
  border-radius: 9px;
  font-size: .9rem;
  font-weight: 500;
  color: #d7dbde;
  transition: background .15s ease, color .15s ease, padding-left .15s ease;
}
.dropdown li a::before {
  content: '›';
  color: var(--accent);
  opacity: 0;
  margin-left: -.4rem;
  transition: opacity .15s ease, margin-left .15s ease;
  font-weight: 700;
}
.dropdown li a:hover { background: rgba(200,162,74,.12); color: var(--accent); padding-left: 1.05rem; }
.dropdown li a:hover::before { opacity: 1; margin-left: 0; }
.dropdown li a.is-current { color: var(--accent); }
.nav-primary a.is-current { color: var(--accent); }

/* Fleet mega-menu — vehicle-range cards */
.mega-fleet {
  min-width: 960px;
  padding: 1.3rem 1.3rem 1rem;
  left: auto;
}
.mega-fleet-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: .7rem;
}
.fleet-card {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  padding: 1rem .9rem 1.1rem;
  border-radius: 14px;
  background: #17191c;
  border: 1px solid rgba(255,255,255,.06);
  transition: transform .2s, border-color .2s, background .2s;
}
.fleet-card:hover { transform: translateY(-3px); border-color: var(--accent); background: #1c1f23; }
.fleet-card.is-current { border-color: var(--accent); }
.fc-img {
  height: 70px;
  display: grid;
  place-items: center;
  background: var(--white);
  border-radius: 10px;
  margin-bottom: .5rem;
  padding: 6px 10px;
}
.fc-img img { max-width: 100%; max-height: 100%; object-fit: contain; }
.fc-name { font-weight: 700; font-size: 1rem; color: var(--white); }
.fc-meta { font-size: .8rem; color: #9aa1a6; }
.fc-models { font-size: .76rem; color: #c2c7cb; line-height: 1.4; }
.fc-price { font-size: .82rem; color: #9aa1a6; margin-top: .25rem; }
.fc-price strong { color: var(--accent); font-size: 1.05rem; }
.mega-fleet-all {
  display: block;
  text-align: center;
  margin-top: 1rem;
  padding-top: .9rem;
  border-top: 1px solid rgba(255,255,255,.08);
  font-weight: 600;
  font-size: .9rem;
  color: var(--accent);
}
.mega-fleet-all:hover { color: var(--white); }

/* ===================== FLEET PAGE: HERO ===================== */
.fleet-hero {
  background: var(--sage);
  padding: 3rem 2rem 4rem;
}
.fleet-hero-inner { max-width: 1400px; margin: 0 auto; }
.breadcrumb { font-size: .9rem; color: var(--muted); margin-bottom: 1.5rem; font-weight: 500; }
.breadcrumb a:hover { color: var(--accent); }
.breadcrumb span { color: var(--text); }
.fleet-hero h1 {
  font-size: clamp(2.2rem, 5vw, 4.2rem);
  font-weight: 800;
  line-height: 1.08;
  letter-spacing: -1.5px;
  color: var(--accent);
  margin-bottom: 1.6rem;
  max-width: 1100px;
}
.fleet-hero-text {
  color: #44504f;
  max-width: 1100px;
  font-size: 1.05rem;
  margin-bottom: 2.5rem;
}
.fleet-hero-img {
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow);
}
.fleet-hero-img img { width: 100%; display: block; }

/* ===================== FLEET PAGE: CATEGORIES ===================== */
.fleet-categories {
  background: var(--sage);
  padding: 1rem 2rem 5rem;
}
.fleet-intro {
  max-width: 1250px;
  margin: 0 auto 3.5rem;
  text-align: center;
  color: #44504f;
  font-size: 1.05rem;
}
.cat-grid {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2.5rem;
}
.cat-card { text-align: center; }
.cat-title {
  display: inline-flex;
  align-items: center;
  gap: .8rem;
  background: var(--black);
  color: var(--white);
  font-size: 1.3rem;
  font-weight: 700;
  padding: 1rem 2rem;
  border-radius: 12px;
  margin-bottom: 2rem;
  cursor: pointer;
  transition: background .2s;
}
.cat-title:hover { background: #23282b; }
.cat-specs { margin-bottom: 1.5rem; }
.cat-specs li { color: var(--muted); margin-bottom: 1rem; font-size: 1.05rem; }
.cat-specs li strong { color: var(--text); }
.cat-img {
  height: 150px;
  display: grid;
  place-items: center;
}
.cat-img img { max-height: 100%; object-fit: contain; }
.cat-cta { text-align: center; margin-top: 3.5rem; }
.btn-quote { padding: 1rem 2.5rem; font-size: 1.05rem; }

/* ===================== GENERIC PAGE HERO ===================== */
.page-hero {
  position: relative;
  min-height: 420px;
  display: flex;
  align-items: center;
  color: var(--white);
  padding: 5rem 2rem;
  background: var(--bg) center/cover no-repeat;
}
.page-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(0,0,0,.78) 0%, rgba(0,0,0,.45) 60%, rgba(0,0,0,.25) 100%);
}
.page-hero-inner { position: relative; z-index: 2; max-width: 1200px; margin: 0 auto; width: 100%; }
.page-hero .breadcrumb { color: #cfd6da; }
.page-hero .breadcrumb a:hover { color: var(--accent); }
.page-hero .breadcrumb span { color: #fff; }
.page-hero h1 {
  font-size: clamp(2.2rem, 5vw, 4rem);
  font-weight: 400;
  line-height: 1.06;
  letter-spacing: -.5px;
  max-width: 800px;
  margin-bottom: 1.3rem;
}
.page-hero p.lead { max-width: 680px; font-size: 1.15rem; color: #e7ebed; margin-bottom: 2rem; }
.page-hero .btn-book { padding: .85rem 2rem; height: auto; }

/* Generic content section */
.content-section { background: var(--sage); padding: 4.5rem 2rem; }
.content-section.alt { background: var(--sage-light); }
.content-section.white { background: var(--white); }
.content-wrap { max-width: 1200px; margin: 0 auto; }
.content-wrap.narrow { max-width: 880px; }
.lead-text { font-size: 1.15rem; color: #2a3a47; font-weight: 500; margin-bottom: 1.4rem; }
.muted-text { color: #5b6469; margin-bottom: 1.2rem; }
.content-section h2 { font-size: clamp(1.8rem, 3.5vw, 2.8rem); font-weight: 500; letter-spacing: -.3px; line-height: 1.1; margin-bottom: 1.6rem; }
.content-section h3 { font-family: 'Hanken Grotesk', system-ui, sans-serif; font-size: 1.35rem; font-weight: 700; letter-spacing: -.2px; margin: 2rem 0 1rem; }

/* Feature cards grid */
.feature-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.6rem;
  margin-top: 2.5rem;
}
.feature-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 2rem 1.8rem;
  box-shadow: 0 1px 2px rgba(26, 25, 22, .04);
  transition: transform .25s var(--ease-out), box-shadow .25s var(--ease-out), border-color .25s;
}
.feature-card:hover {
  transform: translateY(-4px);
  border-color: var(--accent);
  box-shadow: 0 18px 40px rgba(26, 25, 22, .10);
}
.feature-card .fc-icon {
  width: 54px; height: 54px;
  display: grid; place-items: center;
  background: var(--accent-soft); border: 1px solid var(--border);
  border-radius: 12px;
  margin-bottom: 1.2rem; color: var(--accent-dark);
}
.feature-card h3 { font-family: 'Hanken Grotesk', system-ui, sans-serif; font-size: 1.2rem; font-weight: 700; letter-spacing: -.2px; margin: 0 0 .6rem; }
.feature-card p { color: #5b6469; font-size: .97rem; }

/* FAQ */
.faq { max-width: 880px; margin: 2.5rem auto 0; }
.faq details {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 1.1rem 1.4rem;
  margin-bottom: 1rem;
  box-shadow: 0 1px 2px rgba(26, 25, 22, .04);
  transition: border-color .2s;
}
.faq details[open] { border-color: var(--border-strong); }
.faq summary {
  font-weight: 600;
  font-size: 1.05rem;
  cursor: pointer;
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; font-size: 1.5rem; color: var(--accent); font-weight: 400; }
.faq details[open] summary::after { content: "−"; }
.faq details p { color: #5b6469; margin-top: .9rem; }

/* ===== Etape d itineraire — appel a l action en cours d article =====
   Un fil, pas un encadre. Le lecteur vient de se reconnaitre dans une section ;
   ce point de passage lui donne le bouton sans interrompre la lecture. Volontairement
   SANS fond ni bordure fermee : le .cta-band noir qui ferme la page reste la
   destination, celui-ci n est qu une etape. Se place dans un .content-wrap. */
.waypoint {
  position: relative;
  margin: var(--space-6) 0 var(--space-2);
  padding: var(--space-1) 0 var(--space-1) var(--space-5);
  border-left: 1px solid var(--accent);
}
.waypoint-label {
  position: relative;
  font-family: 'Hanken Grotesk', system-ui, sans-serif;
  font-size: var(--text-xs);
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 var(--space-2);
}

.waypoint-label::before {                /* le noeud du fil d itineraire */
  content: "";
  position: absolute;
  left: calc(-1 * var(--space-5) - 4px);   /* remonte du bord de contenu jusqu au filet */
  top: 50%;
  transform: translateY(-50%);            /* se cale sur le libelle, quelles que soient les metriques */
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent);
}
.waypoint-text {
  font-family: 'Fraunces', Georgia, serif;
  font-size: var(--text-lg);
  font-weight: 400;
  line-height: 1.35;
  letter-spacing: -.2px;
  color: var(--text);
  max-width: 46ch;
  margin: 0 0 var(--space-4);
}

/* CTA band */
.cta-band {
  background: var(--black);
  color: var(--white);
  text-align: center;
  padding: 4.5rem 2rem;
}
.cta-band::before {                   /* nœud du fil d'itinéraire */
  content: "";
  display: block;
  width: 1px; height: 34px;
  background: linear-gradient(var(--champagne), transparent);
  margin: 0 auto 1.4rem;
}
.cta-band h2 { font-size: clamp(1.9rem, 3.6vw, 3rem); font-weight: 400; letter-spacing: -.3px; margin-bottom: 1rem; }
.cta-band p { color: #b7b2a6; max-width: 620px; margin: 0 auto 2rem; }
.cta-band .btn-book { padding: .9rem 2.4rem; font-size: 1.05rem; }

/* Pricing cards (service pages) */
.price-row { display: flex; flex-wrap: wrap; gap: 1.2rem; margin-top: 2rem; }
.price-chip {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 1.1rem 1.5rem;
  box-shadow: 0 1px 2px rgba(26, 25, 22, .04);
  flex: 1 1 200px;
}
.price-chip .pc-label { color: var(--muted); font-size: .78rem; text-transform: uppercase; letter-spacing: .6px; font-weight: 600; }
.price-chip .pc-price { font-size: 1.7rem; font-weight: 700; letter-spacing: -.5px; color: var(--accent-dark); font-variant-numeric: tabular-nums; }

@media (max-width: 1100px) {
  .feature-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 620px) {
  .feature-grid { grid-template-columns: 1fr; }
}

/* ===================== ADMIN / BACK OFFICE ===================== */
.admin-body { background: #EFE9DD; }
.admin-login { position: fixed; inset: 0; z-index: 1000; min-height: 100vh; display: grid; place-items: center; padding: 2rem; background: linear-gradient(135deg, #0a0a0a, #1c2226); overflow-y: auto; }
.admin-login[hidden] { display: none; }
.admin-login-card { background: #fff; border-radius: 18px; padding: 2.5rem; width: 100%; max-width: 400px; text-align: center; box-shadow: 0 20px 60px rgba(0,0,0,.35); }
.admin-login-logo { height: 44px; margin: 0 auto 1.4rem; display: block; }
.admin-login-card h1 { font-size: 1.5rem; margin-bottom: .4rem; }
.admin-login-sub { color: var(--muted); font-size: .9rem; margin-bottom: 1.5rem; }
.admin-login-card input { width: 100%; border: 1px solid #E4DDCE; border-radius: 10px; padding: .8rem; font-family: inherit; font-size: 1rem; margin-bottom: 1rem; outline: none; }
.admin-login-card input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(200,162,74,.18); }
.admin-login-card .btn { width: 100%; justify-content: center; }
.admin-login-err { color: #c0392b; margin-top: .8rem; font-size: .9rem; }
.admin-login-hint { color: var(--muted); font-size: .78rem; margin-top: 1.2rem; }
.admin-login-hint code { background: #f0f2f4; padding: 1px 6px; border-radius: 5px; }

.admin-top { position: sticky; top: 0; z-index: 20; background: var(--black); color: #fff; display: flex; align-items: center; gap: 1.5rem; padding: .8rem 1.5rem; flex-wrap: wrap; }
.admin-logo { font-weight: 700; letter-spacing: .5px; }
.admin-logo b { color: var(--accent); }
.admin-tabs { display: flex; gap: .3rem; flex: 1; flex-wrap: wrap; }
.admin-tabs button { background: none; border: none; color: #c9ced2; font-family: inherit; font-weight: 600; font-size: .9rem; padding: .5rem .9rem; border-radius: 8px; cursor: pointer; }
.admin-tabs button:hover { background: #23282b; color: #fff; }
.admin-tabs button.on { background: var(--accent); color: #fff; }
.admin-logout { background: #2a2d30; color: #fff; border: none; border-radius: 8px; padding: .5rem 1rem; font-family: inherit; font-weight: 600; cursor: pointer; }

.admin-main { max-width: 1300px; margin: 0 auto; padding: 1.8rem 1.5rem 4rem; }
.admin-head { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; margin-bottom: 1.2rem; }
.admin-head h2 { font-size: 1.5rem; font-weight: 700; }
.admin-head .count { background: var(--accent); color: #fff; font-size: .85rem; padding: 1px 9px; border-radius: 20px; vertical-align: middle; }
.kpis { display: flex; gap: .8rem; flex-wrap: wrap; }
.kpi { background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-md); padding: .6rem 1.1rem; box-shadow: 0 1px 2px rgba(26,25,22,.04); text-align: center; }
.kpi-v { display: block; font-size: 1.4rem; font-weight: 800; color: var(--accent-dark); }
.kpi-l { font-size: .75rem; color: var(--muted); }

.table-wrap { overflow-x: auto; background: #fff; border-radius: 14px; box-shadow: 0 6px 20px rgba(0,0,0,.05); }
.admin-table { width: 100%; border-collapse: collapse; font-size: .9rem; }
.admin-table th { text-align: left; padding: .9rem 1rem; background: #f6f8f9; color: var(--muted); font-weight: 600; font-size: .8rem; text-transform: uppercase; letter-spacing: .4px; white-space: nowrap; }
.admin-table td { padding: .85rem 1rem; border-top: 1px solid #EFE9DD; vertical-align: middle; }
.admin-table small { color: var(--muted); }
.admin-table small.tag { color: var(--accent); }
.admin-table .empty { text-align: center; color: var(--muted); padding: 2.5rem; }
.admin-table tr.grp-row td { background: #EFE9DD; font-weight: 700; font-size: .78rem; text-transform: uppercase; letter-spacing: .4px; color: #555; }
/* Responsive planning table → stacked cards on small screens */
@media (max-width: 760px) {
  .bk-table thead { position: absolute; left: -9999px; }
  .bk-table, .bk-table tbody, .bk-table tr, .bk-table td { display: block; width: auto; }
  .bk-table tr { border: 1px solid #e6ebf1; border-radius: 12px; margin: 0 0 .7rem; padding: .4rem; background: #fff; }
  .bk-table td { border: 0; border-bottom: 1px solid #f1f4f8; padding: .5rem .2rem; display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; }
  .bk-table tr td:last-child { border-bottom: 0; }
  .bk-table td::before { content: attr(data-l); color: #7c8794; font-size: .66rem; font-weight: 700; text-transform: uppercase; letter-spacing: .4px; flex: 0 0 34%; }
  .bk-table td[data-l=""]::before { content: ""; flex: 0 0 0; }
  .bk-table td.bk-ctrl { display: block; }
  .bk-table td.bk-ctrl::before { display: block; margin-bottom: .3rem; }
  .bk-table td.bk-ctrl select { width: 100%; margin: .15rem 0; }
  .bk-table td.row-act { display: flex; gap: .5rem; }
  .bk-table td.row-act::before { content: ""; }
  .bk-table td.empty { display: block; text-align: center; }
  .admin-toolbar { flex-wrap: wrap; }
}
.grp-count { background: #fff; color: var(--muted); font-weight: 600; padding: 0 7px; border-radius: 10px; font-size: .72rem; margin-left: .35rem; }
.row-act { white-space: nowrap; }
.admin-toolbar { display: flex; gap: .6rem; align-items: center; flex-wrap: wrap; margin-bottom: 1rem; }
.admin-toolbar input[type=search] { flex: 1; min-width: 220px; border: 1px solid #E4DDCE; border-radius: 10px; padding: .6rem .9rem; font-family: inherit; font-size: .9rem; outline: none; }
.admin-toolbar input[type=search]:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(200,162,74,.15); }
.admin-toolbar select.mini { width: auto; margin: 0; padding: .55rem .7rem; }
.admin-toolbar-info { color: var(--muted); font-size: .85rem; white-space: nowrap; }
@media (max-width: 760px) {
  .admin-tabs { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .admin-tabs::-webkit-scrollbar { display: none; }
  .admin-tabs button { white-space: nowrap; }
}

.mini { padding: .35rem .5rem; border: 1px solid #E4DDCE; border-radius: 7px; font-family: inherit; font-size: .82rem; background: #fff; cursor: pointer; margin: 1px; }
select.mini { display: block; width: 100%; margin-bottom: 3px; }
input.mini { width: 80px; }
input.mini[type="date"], input.mini[type="datetime-local"], input.mini[type="time"] { width: auto; min-width: 9rem; min-height: 40px; font-size: .85rem; }
button.mini:hover { border-color: var(--accent); color: var(--accent); }
button.mini.danger:hover { border-color: #c0392b; color: #c0392b; }
.st-pending { color: #b8860b; } .st-confirmed { color: #1a7f37; } .st-assigned { color: #1565c0; } .st-enroute { color: #0277bd; } .st-onboard { color: #6a1b9a; } .st-completed { color: #555; } .st-cancelled { color: #c0392b; }
.pill-ok { background: #e3f5e9; color: #1a7f37; padding: 2px 9px; border-radius: 20px; font-size: .8rem; font-weight: 600; }
.pill-off { background: #f0f0f0; color: #888; padding: 2px 9px; border-radius: 20px; font-size: .8rem; font-weight: 600; }

.admin-modal { position: fixed; inset: 0; background: rgba(0,0,0,.55); display: grid; place-items: center; z-index: 100; padding: 1.5rem; }
.admin-modal[hidden] { display: none; }
.admin-modal-card { background: #fff; border-radius: 16px; padding: 1.8rem; width: 100%; max-width: 520px; box-shadow: var(--shadow); max-height: 90vh; overflow-y: auto; }
.admin-modal-card h3 { font-size: 1.3rem; margin-bottom: 1.2rem; }
.modal-fields { display: grid; grid-template-columns: 1fr 1fr; gap: .9rem; }
.modal-fields .fld { margin-bottom: 0; }
.bk-detail { display: grid; gap: .55rem; font-size: .92rem; }
.bk-detail .bk-l { display: block; font-size: .7rem; text-transform: uppercase; letter-spacing: .4px; color: var(--muted); margin-bottom: 1px; }
.modal-actions { display: flex; flex-wrap: wrap; gap: .6rem; justify-content: flex-end; align-items: center; margin-top: 1.4rem; }
@media (max-width: 560px) { .admin-modal-card .modal-actions .btn { flex: 1 1 auto; } .admin-modal-card { padding: 1.2rem; } }

/* ===== Barre d'actions du modal réservation : toolbar libellée & hiérarchisée ===== */
.bk-actions { gap: .45rem; margin-top: 1rem; padding-top: .9rem; border-top: 1px solid var(--border); align-items: center; }
.bk-actions .btn { height: 38px; min-height: 38px; padding: 0 .9rem; font-size: .83rem; font-weight: 600; border-radius: 9px; gap: .4rem; box-shadow: none; }
.bk-actions .btn:hover { transform: none; filter: brightness(1.05); }
.bk-actions .btn svg { width: 15px; height: 15px; flex: 0 0 auto; }
/* Boutons utilitaires (agenda, facture, impression, dupliquer, suivi…) = neutres discrets */
.bk-actions .btn-dark { background: #f1f4f6; color: #26303a; border: 1px solid #e0e6ea; }
.bk-actions .btn-dark:hover { background: #e6ebef; filter: none; }
/* Groupe primaire (Fermer / Enregistrer) repoussé à droite */
.bk-actions #mCancel { margin-left: auto; background: #eef1f3; color: #1f2630; border: 1px solid #e0e6ea; }
.bk-actions #mCancel:hover { background: #e2e7ea; filter: none; }
.bk-actions #bkSave { box-shadow: 0 6px 16px rgba(25, 168, 224, .28); }
/* Liens de paiement : paire homogène au-dessus de la toolbar */
.bk-paylinks { margin-top: .8rem; }
.bk-paylinks .btn { height: 42px; border-radius: 10px; font-size: .88rem; padding: 0 1.1rem; }
@media (max-width: 560px) { .bk-actions #mCancel { margin-left: 0; } }
.danger-btn { background: #c0392b; color: #fff; }
.danger-btn:hover { background: #a93226; }

.settings-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1.2rem; }
.card-box { background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-md); padding: 1.5rem; box-shadow: 0 1px 2px rgba(26,25,22,.04); }
.card-box h3 { font-size: 1.1rem; margin-bottom: 1rem; }

/* Admin dashboard */
.db-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 1rem; margin-bottom: 1.5rem; }
.db-kpis .kpi { padding: 1.1rem 1.3rem; }
.db-cols { display: grid; grid-template-columns: 1fr 1.4fr; gap: 1.2rem; }
.db-chart { display: flex; align-items: flex-end; gap: .6rem; height: 160px; padding-top: 1rem; }
.db-bar { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; gap: .3rem; }
.db-bar-fill { width: 60%; min-height: 3px; background: var(--accent); border-radius: 5px 5px 0 0; }
.db-bar-n { font-size: .8rem; font-weight: 700; }
.db-bar-d { font-size: .72rem; color: var(--muted); }
.tag-warn { background: #fdf3d6; color: #8a6d0b; padding: 1px 8px; border-radius: 12px; font-size: .78rem; font-weight: 600; }
@media (max-width: 920px) { .db-cols { grid-template-columns: 1fr; } }
/* Agenda tableau de bord (vue par jour, type Google Agenda) */
.db-agenda { max-height: 380px; overflow-y: auto; }
.db-ag-day { margin-bottom: .5rem; }
.db-ag-date { font-weight: 700; font-size: .78rem; color: var(--muted); text-transform: capitalize; border-bottom: 1px solid var(--border); padding-bottom: .25rem; margin-bottom: .3rem; }
.db-ag-date.today { color: var(--accent); }
.db-ag-ev { display: flex; align-items: center; gap: .5rem; padding: .38rem .3rem; border-radius: 7px; cursor: pointer; font-size: .88rem; }
.db-ag-ev:hover { background: rgba(0, 0, 0, .045); }
.db-ag-time { font-weight: 700; min-width: 46px; font-variant-numeric: tabular-nums; }
.db-ag-dot { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.db-ag-txt { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Driver portal */
.driver-name { flex: 1; font-weight: 600; color: #c9ced2; }
.ride-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--r-md); padding: 1.4rem 1.6rem; box-shadow: 0 1px 2px rgba(26,25,22,.04); margin-bottom: 1.2rem; }
.ride-head { display: flex; justify-content: space-between; align-items: center; gap: .6rem; margin-bottom: 1rem; flex-wrap: wrap; }
.ride-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .7rem 1.4rem; margin-bottom: 1.2rem; }
.ride-grid > div { display: flex; flex-direction: column; font-size: .95rem; color: var(--text); }
.ride-grid > div span { font-size: .73rem; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .4px; margin-bottom: .1rem; }
.ride-grid a { color: var(--accent); font-weight: 600; }
.ride-trip { grid-column: 1 / -1; }
.ride-actions { display: flex; gap: .8rem; align-items: center; flex-wrap: wrap; border-top: 1px solid #EFE9DD; padding-top: 1rem; }
.ride-done { font-weight: 700; color: #1a7f37; }

.rc-toast { position: fixed; bottom: 1.5rem; left: 50%; transform: translateX(-50%) translateY(20px); background: var(--black); color: #fff; padding: .8rem 1.5rem; border-radius: 10px; opacity: 0; transition: .3s; z-index: 200; font-weight: 600; }
.rc-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

@media (max-width: 620px) { .modal-fields { grid-template-columns: 1fr; } }

/* ===================== TRIP SIMULATOR ===================== */
.sim { background: var(--sage); padding: 3rem 2rem 5rem; }
.sim-hero { min-height: 320px; }
.sim-grid {
  max-width: 1200px; margin: 0 auto;
  display: grid; grid-template-columns: 1.6fr 1fr; gap: 2rem; align-items: start;
}
.sim-form { background: var(--white); border-radius: var(--radius); padding: 2rem; box-shadow: var(--shadow); }
.sim-tabs { display: flex; gap: .5rem; margin-bottom: 1.5rem; background: #EFE9DD; padding: .35rem; border-radius: 12px; }
.sim-tab { flex: 1; border: none; background: none; padding: .7rem; border-radius: 9px; font-family: inherit; font-weight: 600; color: var(--muted); cursor: pointer; transition: .2s; }
.sim-tab.on { background: var(--black); color: var(--white); }
.sim-pane { margin-bottom: .3rem; }
.fld { display: flex; flex-direction: column; gap: .35rem; margin-bottom: 1.1rem; }
.fld > span { font-size: .8rem; font-weight: 600; color: var(--muted); }
.fld > span em { color: var(--accent); font-style: normal; font-weight: 500; }
.fld input, .fld select, .fld textarea {
  border: 1px solid #E4DDCE; border-radius: 10px; padding: .75rem .85rem;
  font-family: inherit; font-size: .95rem; color: var(--text); outline: none; transition: border .2s;
}
.fld input:focus, .fld select:focus, .fld textarea:focus { border-color: var(--accent); }
/* Champs date / heure — rendu fiable sur mobile (iOS/Android) : pleine largeur, hauteur cohérente, valeur non tronquée */
input[type="date"], input[type="datetime-local"], input[type="time"] { box-sizing: border-box; background-color: #fff; min-height: 46px; }
.fld input[type="date"], .fld input[type="datetime-local"], .fld input[type="time"] { width: 100%; max-width: 100%; }
/* Date + heure côte à côte (booking) ; passe en colonne sur très petits écrans */
.dt-row { display: flex; gap: .5rem; }
.dt-row > input { width: auto; min-width: 0; }
.dt-row > input[type="date"] { flex: 1 1 58%; }
.dt-row > input[type="time"] { flex: 1 1 42%; }
@media (max-width: 400px) { .dt-row { flex-wrap: wrap; } .dt-row > input { flex-basis: 100%; } }
input[type="date"]::-webkit-date-and-time-value, input[type="datetime-local"]::-webkit-date-and-time-value, input[type="time"]::-webkit-date-and-time-value { text-align: left; min-height: 1.4em; padding-right: .25rem; }
input[type="date"]::-webkit-calendar-picker-indicator, input[type="datetime-local"]::-webkit-calendar-picker-indicator, input[type="time"]::-webkit-calendar-picker-indicator { opacity: .55; cursor: pointer; }
.sim-row2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 1rem; }
@media (max-width: 460px) { .sim-row2 { grid-template-columns: 1fr; gap: .65rem; } }
.stop-input { display: flex; gap: .5rem; align-items: center; }
.stop-input input { flex: 1; }
.stop-drag { cursor: grab; color: #9aa1a6; font-size: 1.2rem; padding: 0 .2rem; user-select: none; }
.stop-drag:active { cursor: grabbing; }
.stop-row { border-radius: 10px; transition: background .15s, box-shadow .15s; }
.stop-row.drag-over { background: #F1E9D6; box-shadow: 0 0 0 2px var(--accent) inset; }
.stop-x { width: 38px; height: 42px; flex-shrink: 0; border: 1px solid #e3c4c4; background: #fff; color: #c0392b; border-radius: 10px; font-size: 1.3rem; line-height: 1; cursor: pointer; }
.stop-x:hover { background: #fbeaea; }
.add-stop { background: none; border: 1px dashed #b9c6cb; color: var(--accent); font-family: inherit; font-weight: 600; font-size: .9rem; padding: .6rem 1rem; border-radius: 10px; cursor: pointer; margin-bottom: 1.1rem; transition: .2s; }
.add-stop:hover { border-color: var(--accent); background: #F1E9D6; }
.fld-pax { max-width: 160px; }
.sim-h { font-size: 1.05rem; font-weight: 700; margin: 1.4rem 0 .9rem; }

/* Address autocomplete dropdown */
.addr-ac { position: absolute; top: 100%; left: 0; right: 0; z-index: 80; margin: 4px 0 0; padding: 4px; list-style: none; background: #fff; border: 1px solid #E4DDCE; border-radius: 10px; box-shadow: 0 14px 34px rgba(0,0,0,.16); max-height: 250px; overflow-y: auto; }
.addr-ac-item { padding: .55rem .7rem; border-radius: 7px; font-size: .9rem; color: #222; cursor: pointer; }
.addr-ac-item:hover, .addr-ac-item.on { background: #f3ece2; color: #111; }

/* Quick-pick: airports & stations */
.sim-quick { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.sim-quick-lbl { font-size: .78rem; font-weight: 600; color: var(--muted); margin-right: .15rem; }
.qk { position: relative; }
.qk-btn { display: inline-flex; align-items: center; gap: .35rem; background: #F1EADA; border: 1px solid #E4DDCE; color: var(--text); font-family: inherit; font-size: .85rem; font-weight: 600; padding: .5rem .85rem; border-radius: 999px; cursor: pointer; transition: .15s; }
.qk-btn:hover { border-color: var(--accent); background: #fff; }
.qk-menu { position: absolute; top: calc(100% + 6px); left: 0; z-index: 85; min-width: 200px; max-height: 280px; overflow-y: auto; padding: 6px; background: #fff; border: 1px solid #E4DDCE; border-radius: 12px; box-shadow: 0 14px 34px rgba(0,0,0,.16); display: grid; gap: 2px; }
.qk-menu[hidden] { display: none; }
.qk-item { text-align: left; background: none; border: 0; font-family: inherit; font-size: .9rem; color: #222; padding: .55rem .7rem; border-radius: 8px; cursor: pointer; }
.qk-item:hover { background: #f3ece2; }
@media (max-width: 600px) { .sim-quick { display: none; } }

/* Blacklane-style horizontal search bar */
.sim-search { display: grid; gap: .8rem 1rem; align-items: end; margin-bottom: 1rem; }
/* Adresses fréquentes d'un compte entreprise : rangée de puces sous les champs du simulateur. */
.sim-fav { grid-column: 1 / -1; margin-top: -.2rem; }
/* Collaborateur rattache a une societe : le montant est remplace par une mention sobre. */
.sim-co-hidden { font-size: .84em; font-weight: 700; color: var(--muted); letter-spacing: .02em; }
.sim-co-banner { grid-column: 1 / -1; background: var(--accent-soft, #f5efe2); border: 1px solid var(--border); border-radius: 10px; padding: .5rem .75rem; font-size: .86rem; }
.sim-fav-t { display: block; font-size: .78rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); margin-bottom: .35rem; }
.sim-fav-row { display: flex; flex-wrap: wrap; gap: .4rem; }
.sim-fav-c { border: 1px solid var(--border-strong); background: var(--surface); color: inherit; border-radius: 999px; padding: .3rem .7rem; font: inherit; font-size: .82rem; cursor: pointer; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sim-fav-c:hover { border-color: var(--accent); color: var(--accent-dark); }
.sim-search .fld { margin-bottom: 0; }
.sim-search-transfer { grid-template-columns: 1fr auto 1fr 1fr; }
.sim-search-hourly, .sim-search-package { grid-template-columns: 1fr 1fr; }
.sim-swap { align-self: end; width: 44px; height: 46px; border-radius: 50%; border: 1px solid #E4DDCE; background: #fff; color: var(--accent); font-size: 1.15rem; line-height: 1; cursor: pointer; transition: transform .25s, border-color .15s; }
.sim-swap:hover { border-color: var(--accent); transform: rotate(180deg); }
.rt-toggle { display: inline-flex; gap: .3rem; background: #EFE9DD; padding: .3rem; border-radius: 999px; margin-bottom: 1rem; }
.rt-opt { background: none; border: 0; font-family: inherit; font-size: .9rem; font-weight: 600; color: var(--muted); padding: .5rem 1.2rem; border-radius: 999px; cursor: pointer; transition: .15s; }
.rt-opt.on { background: var(--white); color: var(--text); box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.sim-row-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; align-items: end; margin-bottom: .3rem; }
.sim-row-2 .add-stop { margin-bottom: 0; align-self: end; height: 46px; }
.sim-row-2 .fld { margin-bottom: 0; }
@media (max-width: 760px) {
  .sim-search-transfer, .sim-search-hourly, .sim-search-package { grid-template-columns: 1fr; }
  .sim-swap { justify-self: center; }
  .sim-row-2 { grid-template-columns: 1fr; }
}

.cls-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: .8rem; }

/* Vehicle image on class cards */
.cls-img { height: 92px; display: grid; place-items: center; margin-bottom: .5rem; }
.cls-img img { max-height: 100%; max-width: 100%; object-fit: contain; }

/* Capacity block (luggage / seats) */
.sim-capacity { margin: .4rem 0 .3rem; }
.cap-tabs { display: inline-flex; gap: .3rem; background: #EFE9DD; padding: .3rem; border-radius: 999px; margin-bottom: 1rem; }
.cap-tab { background: none; border: 0; font-family: inherit; font-size: .9rem; font-weight: 600; color: var(--muted); padding: .45rem 1.1rem; border-radius: 999px; cursor: pointer; transition: .15s; }
.cap-tab.on { background: var(--white); color: var(--text); box-shadow: 0 2px 8px rgba(0,0,0,.08); }
.cap-icons { display: flex; flex-wrap: wrap; gap: .35rem; font-size: 1.5rem; margin-bottom: .5rem; }
.cap-line { color: var(--muted); font-size: .95rem; }
.cap-line strong { color: var(--text); font-size: 1.1rem; }

/* Trip map */
.sim-map { height: 260px; border-radius: 14px; overflow: hidden; margin-bottom: 1.2rem; box-shadow: var(--shadow); }
.sim-map .leaflet-container { height: 100%; width: 100%; font-family: inherit; }

/* Price breakdown VAT line */
.sum-vat { color: var(--muted); font-size: .82rem; border-top: 1px dashed #e3e7e8; padding-top: .5rem; margin-top: .2rem; }

/* "What's included" perks */
.sim-included { background: var(--white); border-radius: var(--radius); padding: 2rem; box-shadow: var(--shadow); margin-top: 1.6rem; }
.sim-included h3 { font-size: 1.15rem; font-weight: 700; margin-bottom: 1.4rem; }
.sim-incl-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.3rem 1.6rem; }
.sim-incl { display: flex; gap: .8rem; align-items: flex-start; }
.sim-incl .ic { font-size: 1.4rem; line-height: 1.2; flex-shrink: 0; }
.sim-incl b { display: block; font-size: .92rem; color: var(--text); }
.sim-incl small { color: var(--muted); font-size: .8rem; }
@media (max-width: 760px) { .sim-incl-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 480px) { .sim-incl-grid { grid-template-columns: 1fr; } }
.cls-card {
  display: flex; flex-direction: column; gap: .25rem; text-align: left;
  border: 2px solid #e3e7e8; border-radius: 12px; padding: .9rem 1rem; cursor: pointer;
  background: var(--white); font-family: inherit; transition: .2s;
}
.cls-card:hover { border-color: #b9c6cb; }
.cls-card.on { border-color: var(--accent); background: #F1E9D6; }
.cls-name { font-weight: 700; }
.cls-meta { font-size: .8rem; color: var(--muted); }
.cls-from { font-size: .85rem; font-weight: 700; color: var(--accent); }

.opt-list { display: flex; flex-direction: column; gap: .6rem; }
.opt-group { display: flex; flex-direction: column; gap: .6rem; }
.opt-group-h { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .6px; color: var(--muted); margin-top: .4rem; }
.opt-group:first-child .opt-group-h { margin-top: 0; }
.opt-row {
  display: flex; align-items: center; gap: .9rem; padding: .8rem 1rem;
  border: 1px solid #e3e7e8; border-radius: 12px; cursor: pointer; transition: .2s;
}
.opt-row.on { border-color: var(--accent); background: #F1E9D6; }
.opt-row input { width: 18px; height: 18px; accent-color: var(--accent); flex-shrink: 0; }
.opt-main { display: flex; flex-direction: column; flex: 1; }
.opt-name { font-weight: 600; }
.opt-desc { font-size: .8rem; color: var(--muted); }
.opt-price { font-weight: 700; color: var(--text); white-space: nowrap; }

.sim-summary {
  background: var(--black); color: var(--white);
  border-radius: var(--radius); padding: 1.8rem; box-shadow: var(--shadow);
}
.sim-summary h3 { font-size: 1.2rem; margin-bottom: 1rem; }
.sum-cls { font-weight: 700; color: var(--champagne); margin-bottom: 1rem; }
.sum-list { list-style: none; margin-bottom: 1rem; }
.sum-list li { display: flex; justify-content: space-between; gap: 1rem; padding: .5rem 0; border-bottom: 1px solid rgba(255,255,255,.08); font-size: .92rem; color: #d7dbde; }
.sum-list li em { color: #9aa1a6; font-style: normal; font-size: .82rem; }
.sum-total { display: flex; justify-content: space-between; align-items: center; font-size: 1.5rem; font-weight: 800; margin: 1rem 0 1.3rem; }
.sum-cta { width: 100%; justify-content: center; }
.sum-note { font-size: .78rem; color: #9aa1a6; margin-top: .8rem; text-align: center; }

/* Modal */
.sim-modal { position: fixed; inset: 0; background: rgba(0,0,0,.6); display: grid; place-items: center; z-index: 100; padding: 1.5rem; }
.sim-modal[hidden] { display: none; }

/* Per-class price grid with vehicle thumbnails */
.gprice-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.2rem; max-width: 1100px; margin: 1.5rem auto 0; }
.gprice-card { background: var(--white); border: 1px solid #ece6da; border-radius: 14px; padding: 1rem 1rem 1.2rem; text-align: center; box-shadow: 0 6px 18px rgba(0,0,0,.05); }
.gp-img { display: block; height: 72px; margin-bottom: .4rem; }
.gp-img img { width: 100%; height: 100%; object-fit: contain; }
.gprice-card h3 { font-size: 1rem; margin-bottom: .3rem; }
.gp-amount strong { display: block; color: var(--accent); font-size: 1.35rem; line-height: 1.1; }
.gp-amount span { font-size: .8rem; color: var(--muted); }

/* Tours & excursions cards */
.tour-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 1.4rem; margin-top: 1.5rem; }
.tour-card { background: var(--white); border: 1px solid #ece6da; border-radius: 16px; padding: 1.5rem; display: flex; flex-direction: column; gap: .6rem; box-shadow: 0 8px 24px rgba(0,0,0,.05); transition: transform .2s, box-shadow .2s; }
.tour-card:hover { transform: translateY(-3px); box-shadow: 0 14px 32px rgba(0,0,0,.1); }
.tour-img { display: block; margin: -1.5rem -1.5rem .4rem; border-radius: 16px 16px 0 0; overflow: hidden; }
.tour-img img { width: 100%; height: 200px; object-fit: cover; display: block; }
.tour-card h3 { font-size: 1.15rem; }
.tour-dur { font-size: .85rem; color: var(--muted); }
.tour-price { list-style: none; padding: .4rem 0; margin: auto 0 .4rem; border-top: 1px solid #efe9dd; }
.tour-price li { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: .4rem 0; font-size: .92rem; }
.tour-price li span { color: var(--muted); }
.tour-price li strong { color: var(--accent); white-space: nowrap; }
.tour-card .btn { margin-top: .4rem; }

/* Product-page fare highlight */
.price-list { max-width: 560px; margin: 0 auto; list-style: none; padding: 0; }
.price-list li { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: .75rem 0; border-bottom: 1px dashed #d9d2c4; }
.price-list li span { color: var(--text); }
.price-list li strong { color: var(--accent); font-size: 1.1rem; white-space: nowrap; }
.price-note { max-width: 560px; margin: 1rem auto 0; font-size: .85rem; color: var(--muted); text-align: center; }
.sim-modal-card { background: var(--white); border-radius: var(--radius); padding: 2rem; max-width: 520px; width: 100%; position: relative; box-shadow: var(--shadow); }
.sim-modal-x { position: absolute; top: 1rem; right: 1.2rem; border: none; background: none; font-size: 1.8rem; line-height: 1; cursor: pointer; color: var(--muted); }
.sim-modal-card h3 { font-size: 1.4rem; margin-bottom: .6rem; }
.sim-modal-sum { color: var(--muted); margin-bottom: 1.2rem; }
.sim-modal-sum strong { color: var(--accent); }
.sim-modal-actions { display: flex; gap: 1rem; justify-content: flex-end; margin-top: 1rem; }
.sim-err { color: #c0392b; font-size: .88rem; margin-top: .3rem; }
.sim-done { text-align: center; }
.sim-check { width: 64px; height: 64px; border-radius: 50%; background: var(--accent); color: #fff; font-size: 2rem; display: grid; place-items: center; margin: 0 auto 1rem; }
.sim-ref { font-size: 1.1rem; margin: .5rem 0 1rem; }
.sim-ref strong { color: var(--accent); }

@media (max-width: 900px) {
  .sim-grid { grid-template-columns: 1fr; }
  .sim-summary { position: static; }
  .cls-grid { grid-template-columns: 1fr; }
  .sim-row2 { grid-template-columns: 1fr; }
}

/* ===================== CONFIRMATION PAGE ===================== */
.confirm-card { text-align: center; }
.confirm-card .sim-check { margin: 0 auto 1.4rem; }
.confirm-card h1 { font-size: clamp(1.8rem, 4vw, 2.6rem); font-weight: 800; margin-bottom: 1rem; }
.confirm-ref { font-size: 1.15rem; margin-bottom: 1.4rem; }
.confirm-ref strong { color: var(--accent); }
.confirm-details { max-width: 360px; margin: 0 auto 1.6rem; background: var(--sage-light); border-radius: 12px; padding: 1rem 1.3rem; }
.cd-row { display: flex; justify-content: space-between; padding: .45rem 0; border-bottom: 1px solid rgba(0,0,0,.07); font-weight: 600; }
.cd-row:last-child { border-bottom: none; }
.confirm-phone { font-weight: 700; font-size: 1.1rem; margin-bottom: 1.8rem; }
.confirm-phone a:hover { color: var(--accent); }
.confirm-actions { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }

/* ===================== PASSENGER ACCOUNT ===================== */
.acc-form { background: var(--white); border-radius: var(--radius); padding: 1.8rem; box-shadow: var(--shadow); margin-top: 1rem; }
.acc-form .btn-book { width: 100%; justify-content: center; margin-top: .4rem; }
.acc-err { color: #c0392b; font-size: .9rem; margin-top: .8rem; text-align: center; }
.acc-pro { text-align: center; margin-top: 1.5rem; }
.acc-pro a { color: var(--muted); font-weight: 600; font-size: .9rem; }
.acc-pro a:hover { color: var(--accent); }
.acc-result { background: var(--white); border-radius: var(--radius); padding: 1.8rem; box-shadow: var(--shadow); }
.acc-result-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.2rem; flex-wrap: wrap; gap: .6rem; }
.acc-ref { font-size: 1.4rem; font-weight: 800; color: var(--accent); }
.acc-status { padding: .35rem .9rem; border-radius: 20px; font-weight: 700; font-size: .85rem; }
.acc-status.st-pending { background: #fdf3d6; color: #8a6d0b; }
.acc-status.st-confirmed { background: #e3f5e9; color: #1a7f37; }
.acc-status.st-assigned { background: #e1edfb; color: #1565c0; }
.acc-status.st-enroute { background: #e1f0fb; color: #0277bd; }
.acc-status.st-onboard { background: #f0e6f7; color: #6a1b9a; }
.acc-status.st-completed { background: #eceff1; color: #555; }
.acc-status.st-cancelled { background: #fbe3e3; color: #c0392b; }
.acc-card { background: var(--sage-light); border-radius: 12px; padding: 1rem 1.3rem; }
.acc-tabs { display: flex; gap: .5rem; background: #EFE9DD; padding: .35rem; border-radius: 12px; margin-bottom: 1.2rem; }
.acc-tab { flex: 1; border: none; background: none; padding: .7rem; border-radius: 9px; font-family: inherit; font-weight: 600; color: var(--muted); cursor: pointer; }
.acc-tab.on { background: var(--black); color: #fff; }
.acc-guest { text-align: center; margin-top: 1.2rem; }
.acc-guest a { color: var(--accent); font-weight: 600; font-size: .9rem; }
.acc-forgot { text-align: center; margin-top: .8rem; }
.acc-forgot a { color: var(--muted); font-size: .85rem; }
.acc-forgot a:hover { color: var(--accent); }
.acc-dash-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; flex-wrap: wrap; margin-bottom: 1rem; }
.acc-dash-head h2 { font-size: 1.6rem; font-weight: 800; }
.acc-dash-actions { display: flex; gap: .6rem; flex-wrap: wrap; }
.trip-card { background: var(--white); border-radius: 14px; padding: 1.3rem 1.5rem; box-shadow: 0 6px 18px rgba(0,0,0,.05); margin-bottom: 1rem; }
.trip-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: .9rem; gap: .6rem; flex-wrap: wrap; }
.trip-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: .7rem 1.4rem; }
.trip-grid > div { display: flex; flex-direction: column; font-size: .95rem; }
.trip-grid > div span { font-size: .75rem; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: .4px; }

/* ===================== CONTACT PAGE ===================== */
.contact-grid {
  display: grid;
  grid-template-columns: 1fr 1.3fr;
  gap: 3rem;
  align-items: start;
}
.contact-info h2 { font-size: 2rem; font-weight: 700; margin-bottom: 1rem; }
.contact-list { margin-top: 1.5rem; }
.contact-list li {
  display: flex;
  flex-direction: column;
  gap: .2rem;
  padding: .9rem 0;
  border-bottom: 1px solid rgba(0,0,0,.08);
}
.contact-list li span { font-weight: 600; font-size: .85rem; color: var(--muted); }
.contact-list li a { color: var(--text); font-weight: 600; }
.contact-list li a:hover { color: var(--accent); }
.contact-form {
  background: var(--white);
  border-radius: var(--radius);
  padding: 2rem;
  box-shadow: var(--shadow);
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.cf-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.contact-form label {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  font-size: .82rem;
  font-weight: 600;
  color: var(--muted);
}
.contact-form input,
.contact-form select,
.contact-form textarea {
  border: 1px solid #E4DDCE;
  border-radius: 10px;
  padding: .7rem .85rem;
  font-family: inherit;
  font-size: .95rem;
  color: var(--text);
  outline: none;
  transition: border .2s;
}
.contact-form input:focus,
.contact-form select:focus,
.contact-form textarea:focus { border-color: var(--accent); }
.contact-form .btn-book { margin-top: .5rem; height: auto; padding: .85rem 1.8rem; }
.cf-note { font-size: .8rem; color: var(--muted); font-weight: 500; text-align: center; }

@media (max-width: 880px) {
  .contact-grid { grid-template-columns: 1fr; }
  .cf-row { grid-template-columns: 1fr; }
}

/* ===================== VEHICLES-IN-CLASS CARDS ===================== */
.veh-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.4rem; margin-top: 2.5rem; }
.veh-card { background: var(--white); border-radius: var(--radius); padding: 1.4rem; box-shadow: 0 10px 30px rgba(0,0,0,.06); display: flex; flex-direction: column; transition: transform .25s, box-shadow .25s; }
.veh-card:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.veh-img {
  height: 150px;
  display: grid;
  place-items: center;
  background: #fff;
  border: 1px solid #eef1f2;
  border-radius: 12px;
  margin-bottom: 1.1rem;
  padding: 10px;
  overflow: hidden;
}
.veh-img img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; }
/* Photo-based vehicles (Audi, coaches): fill the frame as a uniform catalog tile */
.veh-img--photo { padding: 0; }
.veh-img--photo img { width: 100%; height: 100%; max-width: none; max-height: none; object-fit: cover; }
.veh-card h3 { font-size: 1.15rem; font-weight: 700; line-height: 1.25; min-height: 2.5em; display: flex; align-items: center; }
.veh-price { color: var(--accent); font-weight: 700; margin: .35rem 0 .7rem; }
.veh-card > p { color: #5b6469; font-size: .93rem; margin-bottom: .9rem; }
.veh-feats { margin-bottom: 1.2rem; }
.veh-feats li { position: relative; padding-left: 1.1rem; margin-bottom: .5rem; color: #44504f; font-size: .9rem; }
.veh-feats li::before { content: "•"; position: absolute; left: 0; color: var(--accent); }
.veh-card .btn { margin-top: auto; align-self: flex-start; }

/* ===================== BUSINESS CLASS PAGE ===================== */
.bc-hero {
  background: var(--sage);
  padding: 3rem 2rem 3.5rem;
  text-align: center;
}
.bc-hero-inner { max-width: 1200px; margin: 0 auto; }
.bc-hero .breadcrumb { text-align: left; }
.bc-eyebrow {
  font-weight: 700;
  color: var(--text);
  margin-bottom: 1.5rem;
  font-size: 1.05rem;
}
.bc-hero h1 {
  font-size: clamp(2.2rem, 5vw, 4rem);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -1.5px;
  margin-bottom: 1.8rem;
}
.bc-lead {
  max-width: 1050px;
  margin: 0 auto 1.8rem;
  font-size: 1.15rem;
  font-weight: 500;
  color: #2a3a47;
}
.bc-text {
  max-width: 1050px;
  margin: 0 auto;
  color: #6a7378;
}

.bc-section {
  background: var(--sage);
  padding: 3.5rem 2rem 4rem;
}
.bc-section--alt { background: var(--sage-light); }
.bc-section-title { margin-bottom: 3rem; }
.bc-section .service-block { padding: 0; }
.bc-list li, .service-body .bc-list li { margin-bottom: 1.5rem; }
.bc-subhead {
  font-size: clamp(1.5rem, 3vw, 2.1rem);
  font-weight: 700;
  margin-bottom: 1.4rem;
  letter-spacing: -.5px;
}
.bc-car-img {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2rem;
}
.bc-car-img img { max-width: 100%; }
.bc-interior {
  aspect-ratio: 16/11;
  box-shadow: var(--shadow);
}

.bc-links {
  max-width: 1100px;
  margin: 4rem auto 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem 4rem;
}
.bc-link {
  display: flex;
  align-items: center;
  gap: .7rem;
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--text);
  transition: color .2s;
}
.bc-link:hover { color: var(--accent); }
.bc-plus { font-size: 1.6rem; font-weight: 400; line-height: 1; }

/* ===================== TRUSTED BY ===================== */
.trusted {
  background: var(--black);
  color: var(--white);
  padding: 3rem 2rem 3.5rem;
}
.trusted-title {
  text-align: center;
  font-weight: 600;
  font-size: 1.1rem;
  margin-bottom: 2.2rem;
}
.trusted-track {
  max-width: 1500px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 1px;
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.12);
}
.trusted-logo {
  background: var(--white);
  display: grid;
  place-items: center;
  height: 150px;
  padding: 1rem;
  text-align: center;
}
.trusted-logo a {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  text-decoration: none;
  color: inherit;
  transition: transform .2s, opacity .2s;
}
.trusted-logo a:hover { transform: scale(1.04); opacity: .85; }
.trusted-logo a:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 6px; }
.trusted-logo span {
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: -.5px;
}
.tl-hedis { color: #1c6fa5; font-size: 1.9rem; font-style: italic; }
.tl-ahp { color: #2c3e6b; font-size: 1.1rem; font-weight: 700; }
.tl-bunzl { color: #1f3a5f; font-size: 1.9rem; }
.tl-bateaux { color: #9b1c2e; font-size: 1.25rem; }
.tl-hygiene { color: #3a7d3a; font-size: 1.5rem; display: flex; flex-direction: column; }
.tl-hygiene small { color: #555; font-size: .8rem; font-weight: 600; }
.tl-sanofi { color: #5a3f8c; font-size: 1.8rem; letter-spacing: 2px; }

/* ===================== SERVICES ===================== */
.services {
  background: var(--sage);
  padding: 1rem 2rem 5rem;
}
.service-block {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
  padding: 3.5rem 0;
}
.service-block.reverse .service-img { order: 2; }
.service-img {
  border-radius: var(--radius);
  overflow: hidden;
  aspect-ratio: 4/3;
  box-shadow: var(--shadow);
}
.service-img img { width: 100%; height: 100%; object-fit: cover; }
.service-body h2 {
  font-size: clamp(2rem, 4vw, 3.2rem);
  font-weight: 700;
  letter-spacing: -1px;
  margin-bottom: 1.2rem;
}
.service-body > p { color: #44504f; margin-bottom: 1.6rem; max-width: 560px; }
.service-body ul { margin-bottom: 2rem; }
.service-body ul li {
  position: relative;
  padding-left: 1.3rem;
  margin-bottom: 1.1rem;
  color: #44504f;
}
.service-body ul li::before {
  content: "•";
  position: absolute;
  left: 0;
  top: -.1rem;
  color: #1a2e2c;
  font-size: 1.3rem;
}
.service-body ul li strong { color: var(--text); display: block; margin-bottom: .15rem; }
.service-actions { display: flex; gap: 1rem; flex-wrap: wrap; }
.btn-dark { background: var(--black); color: var(--white); padding: .85rem 1.8rem; }
.btn-dark:hover { background: #23282b; }
.service-actions .btn-book { padding: .85rem 1.8rem; height: auto; }

/* ===================== DESTINATIONS ===================== */
.destinations {
  background: var(--white);
  padding: 5rem 2rem 5.5rem;
}
.dest-head { text-align: center; max-width: 760px; margin: 0 auto 3rem; }
.dest-head .pill { margin-bottom: 1.2rem; }
.dest-sub { color: var(--muted); margin-top: 1rem; font-size: 1.05rem; }
.dest-grid {
  max-width: 1400px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.6rem;
}
.dest-card {
  position: relative;
  height: 320px;
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--img) center/cover no-repeat;
  display: flex;
  align-items: flex-end;
  box-shadow: 0 10px 30px rgba(0,0,0,.08);
}
.dest-card::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 35%, rgba(0,0,0,.78) 100%);
  transition: background .3s;
}
.dest-card:hover::after { background: linear-gradient(180deg, rgba(0,0,0,.1) 20%, rgba(0,0,0,.82) 100%); }
.dest-card > * { position: relative; z-index: 2; }
.dest-card .dest-overlay {
  padding: 1.6rem 1.8rem;
  color: var(--white);
  transform: translateY(0);
}
.dest-overlay h3 { font-size: 1.5rem; font-weight: 700; margin-bottom: .3rem; }
.dest-overlay p { font-size: .95rem; color: #e3e6e8; opacity: .9; }
.dest-card img { width: 100%; height: 100%; object-fit: cover; }
.dest-card { transition: transform .3s; }
.dest-card:hover { transform: translateY(-5px); }

/* ===================== GOOGLE REVIEWS ===================== */
.reviews { background: #fbe9e4; padding: 4.5rem 2rem 5.5rem; }
.reviews-head { text-align: center; max-width: 760px; margin: 0 auto 2.5rem; }
.reviews-head .pill { display: inline-flex; align-items: center; gap: .45rem; margin-bottom: 1.2rem; }
.reviews-head .pill svg { vertical-align: middle; }
.reviews-rating { display: inline-flex; align-items: center; gap: .7rem; margin-top: 1rem; flex-wrap: wrap; justify-content: center; }
.rr-score { font-size: 2.4rem; font-weight: 800; line-height: 1; }
.reviews-rating .rev-stars { font-size: 1.4rem; }
.rr-count { color: var(--muted); font-weight: 600; }
.rev-stars { letter-spacing: 2px; }
.rev-stars span { color: #d6d6d6; }
.rev-stars span.on { color: #fbbc05; }

/* Platform tabs */
.rev-tabs { display: flex; gap: .6rem; justify-content: center; flex-wrap: wrap; margin-top: 1.8rem; }
.rev-tab { background: #fff; border: 1px solid #efd9d3; border-radius: 12px; padding: .6rem 1.2rem; cursor: pointer; font-family: inherit; display: flex; flex-direction: column; align-items: center; gap: .15rem; transition: .2s; }
.rev-tab:hover { border-color: #d9b8af; }
.rev-tab.on { border-color: var(--accent); box-shadow: 0 4px 14px rgba(0,0,0,.08); }
.rt-badge { display: inline-flex; align-items: center; gap: .35rem; font-weight: 700; font-size: .95rem; }
.rt-meta { font-size: .78rem; color: var(--muted); font-weight: 600; }
.pl-tripadvisor { color: #00875A; } .ta-owl { color: #00875A; letter-spacing: -3px; } .pl-viator { color: #14675C; }
.pl-pagesjaunes { color: #2b2b2b; }
.pj-chip { background: #ffde00; color: #1a1a1a; font-weight: 800; font-size: .72rem; padding: 2px 5px; border-radius: 4px; letter-spacing: -.5px; }
.rev-title { font-size: 1.05rem; font-weight: 700; margin: .25rem 0 .05rem; }
.rev-context { font-size: .82rem; color: #8a9196; margin-bottom: .35rem; }

.reviews-grid {
  max-width: 1300px; margin: 0 auto;
  display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1.4rem;
}
.review-card {
  background: #fff; border-radius: 16px; padding: 1.5rem; box-shadow: 0 8px 24px rgba(0,0,0,.06);
  display: flex; flex-direction: column; gap: .7rem;
}
.rev-head { display: flex; align-items: center; gap: .8rem; }
.rev-avatar { width: 44px; height: 44px; border-radius: 50%; background: var(--c); color: #fff; display: grid; place-items: center; font-weight: 700; flex-shrink: 0; }
.rev-id { display: flex; flex-direction: column; flex: 1; min-width: 0; }
.rev-name { font-weight: 700; }
.rev-date { font-size: .8rem; color: var(--muted); }
.rev-g { flex-shrink: 0; }
.review-card .rev-stars { font-size: 1.1rem; }
.rev-text { color: #2c3338; line-height: 1.6; font-size: .96rem; }
.rev-owner { background: #f5f7f8; border-left: 3px solid var(--accent); border-radius: 8px; padding: .8rem 1rem; font-size: .88rem; color: #4a5258; }
.rev-owner strong { display: block; color: var(--text); margin-bottom: .25rem; font-size: .82rem; }
.rev-verified { margin-top: auto; font-size: .8rem; font-weight: 600; color: #1a7f37; }
.reviews-cta { text-align: center; margin-top: 2.8rem; display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }

/* ---- Reviews ergonomics: clamp, read-more, show-more, a11y ---- */
.rev-text.clamp { display: -webkit-box; -webkit-line-clamp: 5; -webkit-box-orient: vertical; overflow: hidden; }
.rev-more { align-self: flex-start; background: none; border: 0; padding: 0; margin-top: -.2rem; color: var(--accent); font-family: inherit; font-size: .88rem; font-weight: 600; cursor: pointer; }
.rev-more:hover { text-decoration: underline; }
.review-card { transition: box-shadow .2s, transform .2s; }
.review-card:hover { box-shadow: 0 12px 30px rgba(0,0,0,.10); transform: translateY(-2px); }
.reviews-more { text-align: center; margin-top: 2.2rem; }
.rev-showmore { background: #fff; border: 1px solid #e0c4bc; border-radius: 999px; padding: .7rem 1.7rem; font-family: inherit; font-size: .95rem; font-weight: 700; color: var(--text); cursor: pointer; transition: .2s; }
.rev-showmore:hover { border-color: var(--accent); box-shadow: 0 4px 14px rgba(0,0,0,.08); }
.rev-tab:focus-visible, .rev-showmore:focus-visible, .rev-more:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
@media (max-width: 560px) {
  .rev-tabs { flex-wrap: nowrap; overflow-x: auto; justify-content: flex-start; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding-bottom: .5rem; margin-left: -.5rem; margin-right: -.5rem; padding-left: .5rem; padding-right: .5rem; }
  .rev-tab { flex: 0 0 auto; scroll-snap-align: start; }
}

/* ---- Mobile carousel: one review at a time, swipe + snap ---- */
.reviews-dots { display: none; }
.rev-dot { width: 8px; height: 8px; padding: 0; border: 0; border-radius: 50%; background: #d8b8b0; cursor: pointer; transition: transform .2s, background .2s; }
.rev-dot.on { background: var(--accent); transform: scale(1.35); }
@media (max-width: 700px) {
  .reviews-grid {
    grid-template-columns: none;
    display: flex;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    gap: 1rem;
    scroll-padding: 1.2rem;
    padding: 0 1.2rem 1rem;
    margin: 0 -1.2rem;
    scrollbar-width: none;
  }
  .reviews-grid::-webkit-scrollbar { height: 0; }
  .reviews-grid .review-card { flex: 0 0 86%; scroll-snap-align: center; }
  .review-card:hover { transform: none; }
  .reviews-dots { display: flex; gap: .55rem; justify-content: center; margin-top: 1.2rem; flex-wrap: wrap; }
}

/* ===================== TESTIMONIALS (legacy) ===================== */
.testimonials {
  background: #fbe9e4;
  padding: 4.5rem 2rem 5.5rem;
  text-align: center;
}
.pill {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  background: var(--white);
  border: 1px solid #f0d6cf;
  border-radius: 999px;
  padding: .45rem 1.2rem;
  font-weight: 600;
  font-size: .9rem;
  margin-bottom: 1.4rem;
}
.testimonials .section-title { margin-bottom: 3rem; }
.testi-avatars {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 2.5rem;
  margin-bottom: 2.5rem;
  flex-wrap: wrap;
}
.avatar {
  width: 84px;
  height: 84px;
  border-radius: 50%;
  border: none;
  cursor: pointer;
  color: var(--white);
  font-weight: 700;
  font-size: 1.3rem;
  background: linear-gradient(135deg, var(--c1), var(--c2));
  opacity: .55;
  transform: scale(.85);
  transition: transform .3s, opacity .3s, border-radius .3s;
}
.avatar.is-active {
  opacity: 1;
  transform: scale(1.25);
  border-radius: 28px;
  box-shadow: 0 12px 30px rgba(0,0,0,.18);
}
.avatar:hover { opacity: 1; }
.testi-name { font-size: 1.3rem; font-weight: 700; margin-bottom: .25rem; }
.testi-role { color: var(--muted); margin-bottom: 1rem; }
.testi-stars { color: var(--accent); font-size: 1.3rem; letter-spacing: 3px; margin-bottom: 1.5rem; }
.testi-quote {
  max-width: 900px;
  margin: 0 auto;
  font-size: clamp(1.1rem, 2vw, 1.5rem);
  font-weight: 500;
  color: #1a1d20;
  line-height: 1.5;
}
.testi-controls { display: flex; justify-content: center; gap: 1rem; margin-top: 2.5rem; }
.slider-arrow.dark {
  background: var(--white);
  color: var(--text);
  border: 1px solid #f0d6cf;
}
.slider-arrow.dark:hover { background: #fff; color: var(--accent); }

/* ===================== RESPONSIVE ===================== */
@media (max-width: 1100px) {
  .nav-tagline { display: none; }
  .specialty-grid { grid-template-columns: repeat(2, 1fr); }
  .fleet-grid { grid-template-columns: repeat(2, 1fr); }
  .provide-top { grid-template-columns: 1fr; gap: 1.5rem; }
  .limo-inner { grid-template-columns: 1fr; gap: 2.5rem; }
  .trusted-track { grid-template-columns: repeat(3, 1fr); }
  .service-block { gap: 2.5rem; }
  .cat-grid { grid-template-columns: 1fr; gap: 3rem; }
  .dest-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 880px) {
  .main-nav { display: none; }
  .phone span, .btn-login, .btn-signup { display: none; }
  .burger { display: flex; }

  /* ---- Barre d'actions mobile -------------------------------------------------------
     1. Alignement : le menu principal est masque ici, et c'est lui qui poussait les
        commandes vers la droite. Sans ce margin-left, elles restent agglutinees contre
        le logo et laissent un tiers de barre vide.
     2. Surface tactile : chaque commande recoit la meme cible de 40 px. Le telephone et
        le selecteur de langue n'en avaient aucune — on visait le glyphe lui-meme, 18 px.
     3. Rythme : meme surface, meme rayon, meme retour au toucher pour les six commandes. */
  .header-actions { margin-left: auto; gap: .3rem; }
  .header-actions > * { flex: 0 0 auto; }
  .icon-btn, .header-actions .phone, .lang-btn, .burger {
    width: 40px; height: 40px; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center; padding: 0;
    -webkit-tap-highlight-color: transparent;
  }
  .lang-btn { width: auto; min-width: 40px; padding: 0 .4rem; gap: .18rem; }
  .header-actions .phone svg { width: 20px; height: 20px; }
  .icon-btn:active, .header-actions .phone:active, .lang-btn:active, .burger:active {
    background: rgba(255, 255, 255, .16);
  }
  /* Le menu se detache des utilitaires par un filet plutot que par un ecart : l'oeil lit
     deux groupes sans que la barre s'allonge d'un pixel. */
  .burger { position: relative; margin-left: .5rem; }
  .burger::before {
    content: ''; position: absolute; left: -.5rem; top: 50%; transform: translateY(-50%);
    width: 1px; height: 20px; background: rgba(255, 255, 255, .18);
  }
  .main-nav.open {
    display: block;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--black);
    padding: 1.5rem 2rem;
    max-height: calc(100vh - 70px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
  .main-nav.open .nav-primary { flex-direction: column; gap: 1rem; }
  .main-nav.open .dropdown {
    position: static;
    opacity: 1;
    visibility: visible;
    transform: none;
    box-shadow: none;
    background: transparent;
    border: none;
    padding: .5rem 0 0 1rem;
    min-width: auto;
  }
  .main-nav.open .mega-fleet { min-width: auto; padding: .6rem 0 0; }
  .main-nav.open .mega-fleet-grid { grid-template-columns: 1fr; gap: .5rem; }
  .main-nav.open .fleet-card {
    display: grid;
    grid-template-columns: 76px minmax(0, 1fr) auto;
    grid-template-areas:
      "img name price"
      "img meta meta"
      "img models models";
    align-items: center;
    column-gap: .8rem;
    row-gap: .15rem;
    padding: .55rem .6rem;
  }
  .main-nav.open .fleet-card:hover { transform: none; }
  .main-nav.open .fc-img { grid-area: img; width: 76px; height: 50px; margin-bottom: 0; padding: 4px 6px; }
  .main-nav.open .fc-name { grid-area: name; font-size: .92rem; min-width: 0; overflow-wrap: anywhere; line-height: 1.2; }
  .main-nav.open .fc-meta { grid-area: meta; min-width: 0; }
  .main-nav.open .fc-models { grid-area: models; font-size: .72rem; min-width: 0; overflow-wrap: anywhere; }
  .main-nav.open .fc-price { grid-area: price; margin-top: 0; text-align: right; white-space: nowrap; }
  .main-nav.open .mega-fleet-all { margin-top: .6rem; padding-top: .6rem; }
  .booking-form { grid-template-columns: 1fr; }
  .slider-controls { left: 1.25rem; right: auto; top: auto; bottom: 1.35rem; gap: .7rem; }
  .slider-arrow { width: 42px; height: 42px; font-size: 1.05rem; }
  .slide-content { padding: 0 1.25rem 5rem; }
  .service-block, .service-block.reverse { grid-template-columns: 1fr; gap: 2rem; }
  .service-block.reverse .service-img { order: 0; }
  .testi-avatars { gap: 1.2rem; }
  .avatar { width: 60px; height: 60px; font-size: 1rem; }
}

@media (min-width: 881px) and (max-width: 1040px) {
  /* Narrow desktop / landscape tablet: keep the vehicle mega-menu inside the viewport */
  .mega-fleet { min-width: auto; width: calc(100vw - 32px); left: auto; right: 0; }
  .mega-fleet-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 620px) {
  .specialty-grid, .fleet-grid, .provide-gallery, .dest-grid { grid-template-columns: 1fr; }
  .stats { grid-template-columns: 1fr; gap: 1.5rem; }
  .footer-inner { grid-template-columns: 1fr 1fr; }
  /* En-tete etroit : logo + six commandes + burger. Les espacements sont resserres pour
     que l ensemble tienne sur un telephone de 360 px sans deborder. */
  .header-inner { padding: .8rem 1rem; gap: .6rem; }
  .header-actions { gap: .25rem; }
  .trusted-track { grid-template-columns: repeat(2, 1fr); }
}

/* ===================== RESPONSIVE HEALTH (enhancements) ===================== */
html { -webkit-text-size-adjust: 100%; }
body { overflow-x: hidden; }                 /* safety net: no horizontal scroll on mobile */
svg, video, iframe, table { max-width: 100%; }
/* Long addresses, refs and URLs never overflow their card */
.bc-list li, .feature-card p, .lead-text, .content-wrap p, .sum-list li, .price-chip,
.contact-list a, .rev-text { overflow-wrap: break-word; }

@media (max-width: 768px) {
  .page-hero { padding: 3.5rem 1.25rem; min-height: 340px; }
  .content-section { padding: 3rem 1.25rem; }
  .cta-band { padding: 3rem 1.25rem; }
  .bc-hero { padding: 2.2rem 1.25rem 2.6rem; }
  .page-hero p.lead { font-size: 1.05rem; }
  .breadcrumb { font-size: .82rem; }
  .btn { min-height: 44px; }                 /* comfortable tap targets */
}

@media (max-width: 480px) {
  .footer-inner { grid-template-columns: 1fr; gap: 1.6rem; text-align: center; }
  .footer-brand img, .footer-social { margin-left: auto; margin-right: auto; }
  .footer-social { justify-content: center; }
  .price-row { gap: .8rem; }
  .price-chip { flex: 1 1 100%; }
  /* full-width primary CTAs = easier to tap on phones */
  .page-hero .btn-book, .cta-band .btn-book, .sum-cta, .contact-form .btn-book { display: block; width: 100%; text-align: center; }
  .page-hero h1 { letter-spacing: -.5px; }
  /* Embleme seul : portrait (ratio 0,61), donc ~25 px de large pour 40 px de haut.
     Un peu plus haut que le mot-symbole pour compenser sa faible largeur. */
  .logo img { max-height: 40px; }
  .content-section { padding: 2.4rem 1rem; }
  .feature-card { padding: 1.1rem 1.2rem; }
}

/* Tres petits telephones (<= 380 px). Le libelle de langue cede la place : le globe seul
   reste une commande comprise, et ces 23 px sont ce qui separe une barre qui tient d'une
   barre qui deborde. Le menu de langue, lui, ne change pas. */
@media (max-width: 380px) {
  .lang-btn .lang-cur, .lang-btn .caret { display: none; }
  .lang-btn { width: 40px; min-width: 40px; padding: 0; }
  .header-inner { padding: .7rem .7rem; }
}

/* ============================================================
   ADMIN — habillage moderne 2026 (scopé .admin-body / .admin-login,
   n'affecte pas le site public). Accent de marque : #19a8e0.
   ============================================================ */
.admin-body { background: #eef1f6; color: #1c2430; }

/* --- Barre supérieure --- */
.admin-body .admin-top { background: linear-gradient(180deg,#161b22,#0c0f14); padding: .8rem 1.6rem; gap: 1.1rem; border-bottom: 1px solid rgba(255,255,255,.06); box-shadow: 0 4px 22px rgba(0,0,0,.16); }
.admin-body .admin-logo { font-size: 1.05rem; letter-spacing: .2px; }
.admin-body .admin-tabs { gap: .25rem; }
.admin-body .admin-tabs button { color: #aab3bf; font-weight: 600; font-size: .87rem; padding: .5rem 1rem; border-radius: 999px; transition: background .15s, color .15s; }
.admin-body .admin-tabs button:hover { background: rgba(255,255,255,.08); color: #fff; }
.admin-body .admin-tabs button.on { background: var(--accent); color: #fff; box-shadow: 0 6px 16px rgba(25,168,224,.40); }
.admin-body .admin-logout { background: rgba(255,255,255,.07); border: 1px solid rgba(255,255,255,.12); border-radius: 999px; padding: .5rem 1.15rem; transition: background .15s; }
.admin-body .admin-logout:hover { background: rgba(255,255,255,.16); }

/* --- Contenu / titres / KPIs --- */
.admin-body .admin-main { padding: 2rem 1.6rem 4.5rem; }
.admin-body .admin-head { margin-bottom: 1.5rem; }
.admin-body .admin-head h2 { font-size: 1.6rem; font-weight: 700; letter-spacing: -.4px; }
.admin-body .admin-head .count { background: var(--accent); box-shadow: 0 4px 12px rgba(25,168,224,.35); }
.admin-body .kpis { gap: 1rem; }
.admin-body .kpi { background: #fff; border: 1px solid #e6ebf1; border-radius: 16px; padding: 1rem 1.4rem; box-shadow: 0 3px 14px rgba(22,34,57,.05); min-width: 132px; }
.admin-body .kpi-v { font-size: 1.6rem; font-weight: 800; color: #10141a; letter-spacing: -.5px; }
.admin-body .kpi-l { font-size: .7rem; text-transform: uppercase; letter-spacing: .6px; color: #8a94a1; }

/* --- Barre d'outils / recherche --- */
.admin-body .admin-toolbar input[type=search] { border: 1px solid #e1e7ee; border-radius: 12px; background: #fff; padding: .72rem 1rem; box-shadow: 0 2px 8px rgba(22,34,57,.04); }
.admin-body .admin-toolbar input[type=search]:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(25,168,224,.16); }

/* --- Tableaux --- */
.admin-body .table-wrap { border: 1px solid #e6ebf1; border-radius: 18px; box-shadow: 0 6px 26px rgba(22,34,57,.06); }
.admin-body .admin-table th { background: #f6f8fb; color: #7c8794; font-size: .7rem; letter-spacing: .6px; padding: .95rem 1.15rem; border-bottom: 1px solid #eceff4; }
.admin-body .admin-table td { padding: 1rem 1.15rem; border-top: 1px solid #f1f4f8; }
.admin-body .admin-table tbody tr { transition: background .12s; }
.admin-body .admin-table tbody tr:hover { background: #f7fafd; }
.admin-body .admin-table tr.grp-row td { background: #edf3f9; color: #4d5d6e; letter-spacing: .5px; }
.admin-body .grp-count { background: #fff; }

/* --- Boutons (admin uniquement) --- */
.admin-body .btn-book { background: var(--accent); border-radius: 12px; font-weight: 600; box-shadow: 0 8px 20px rgba(25,168,224,.30); transition: transform .12s, box-shadow .15s, background .15s; }
.admin-body .btn-book:hover { background: var(--accent-dark); transform: translateY(-1px); box-shadow: 0 10px 26px rgba(25,168,224,.42); }
.admin-body .btn-dark { border-radius: 12px; }
.admin-body .mini { border: 1px solid #dde4ec; border-radius: 9px; background: #fff; transition: all .12s; color: #344150; }
.admin-body .mini:hover { border-color: var(--accent); color: var(--accent); }
.admin-body button.mini[data-bkdetail] { border-color: var(--accent); color: var(--accent); font-weight: 600; }
.admin-body button.mini[data-bkdetail]:hover { background: var(--accent); color: #fff; }

/* --- Pastilles statut --- */
.admin-body .pill-ok { background: #e2f7ee; color: #12895b; border-radius: 999px; }
.admin-body .pill-off { background: #edf0f4; color: #8893a1; border-radius: 999px; }

/* --- Cartes Réglages --- */
.admin-body .settings-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 1.2rem; }
.admin-body .card-box { background: #fff; border: 1px solid #e6ebf1; border-radius: 18px; box-shadow: 0 3px 16px rgba(22,34,57,.05); padding: 1.5rem; }
.admin-body .card-box h3 { font-size: 1.05rem; margin-bottom: 1rem; }
.admin-body .fld input, .admin-body .fld select { border: 1px solid #e1e7ee; border-radius: 10px; padding: .65rem .8rem; font-family: inherit; width: 100%; outline: none; transition: border-color .12s, box-shadow .12s; }
.admin-body .fld input:focus, .admin-body .fld select:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(25,168,224,.15); }
.admin-body .fld span { font-size: .8rem; color: #5b6672; display: block; margin-bottom: .35rem; }

/* --- Modale --- */
.admin-modal { background: rgba(12,16,22,.55); backdrop-filter: blur(3px); }
.admin-modal-card { border-radius: 20px; box-shadow: 0 30px 90px rgba(0,0,0,.35); }

/* --- Connexion (admin + chauffeur) --- */
.admin-login { background: radial-gradient(120% 120% at 25% 15%, #1c2a36 0%, #0a0e13 60%); }
.admin-login-card { border-radius: 24px; box-shadow: 0 35px 90px rgba(0,0,0,.5); padding: 2.6rem; }
.admin-login-card h1 { letter-spacing: -.4px; }
.admin-login-card input { border-radius: 12px; padding: .85rem 1rem; }
.admin-login-card input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(25,168,224,.18); }
.admin-login-card .btn-book { border-radius: 12px; box-shadow: 0 8px 22px rgba(25,168,224,.35); }
.admin-login-card .btn-book:hover { background: var(--accent-dark); }
/* --- Hero quick-quote : autocomplétion d'adresse (Photon/OSM) --- */
.booking-form .field { position: relative; }
.hero-ac { position: fixed; z-index: 9999; background: #fff; border: 1px solid #e2e7ee; border-radius: 12px; box-shadow: 0 14px 36px rgba(0,0,0,.22); max-height: 280px; overflow-y: auto; }
.hero-ac button { display: block; width: 100%; text-align: left; border: 0; border-bottom: 1px solid #f1f4f8; background: none; padding: .6rem .85rem; font-family: inherit; font-size: .88rem; line-height: 1.35; color: #1c2430; cursor: pointer; }
.hero-ac button:last-child { border-bottom: 0; }
.hero-ac button:hover { background: #f2f7fc; color: var(--accent); }
/* --- Simulateur : champs du retour (aller-retour) --- */
.rt-return { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 1rem; margin: .2rem 0 .6rem; }
@media (max-width: 600px) { .rt-return { grid-template-columns: 1fr; } }

/* ===================================================================
   HERO — « Le Fil d'Or » (évolution éditoriale, accueil)
   Additif : surcharge les règles hero plus haut. 100% réversible.
   =================================================================== */

/* Accent typographique : Fraunces italique champagne sur un mot-clé */
.slide-content .hl-gold {
  font-family: 'Fraunces', Georgia, serif;
  font-style: italic;
  font-weight: 400;
  color: var(--champagne);
}

/* Le « fil d'or » : hairline qui se dessine sous le titre du slide actif */
.slide-content h1, .slide-content .slide-h { position: relative; padding-bottom: .3em; }
.slide-content h1::after,
.slide-content .slide-h::after {
  content: "";
  position: absolute; left: 0; bottom: 0;
  width: clamp(170px, 42%, 360px); height: 2px;
  background: linear-gradient(90deg, var(--champagne) 0%, rgba(207,174,116,.85) 45%, rgba(207,174,116,0) 100%);
  transform: scaleX(0); transform-origin: left center;
  transition: transform 1s var(--ease-out) .35s;
}
.slide.is-active .slide-content h1::after,
.slide.is-active .slide-content .slide-h::after { transform: scaleX(1); }

/* Cadre passe-partout champagne (façon tirage encadré), avec amorces d'angle */
.hero-frame {
  position: absolute; inset: clamp(14px, 1.8vw, 30px);
  border: 1px solid rgba(207,174,116,.38);
  border-radius: 5px;
  z-index: 4; pointer-events: none;
}
.hero-frame::before, .hero-frame::after {
  content: ""; position: absolute; width: 20px; height: 20px;
  border: solid var(--champagne); border-width: 0;
}
.hero-frame::before { top: -1px; left: -1px; border-top-width: 2px; border-left-width: 2px; border-top-left-radius: 5px; }
.hero-frame::after  { bottom: -1px; right: -1px; border-bottom-width: 2px; border-right-width: 2px; border-bottom-right-radius: 5px; }

/* Révélation orchestrée du contenu (chargement / activation du slide) */
@keyframes heroRise { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }
.slide.is-active .slide-content > * { animation: heroRise .8s var(--ease-out) both; }
.slide.is-active .slide-content .eyebrow { animation-delay: .12s; }
.slide.is-active .slide-content h1,
.slide.is-active .slide-content .slide-h { animation-delay: .24s; }

/* Contrôles slider — plus fins, teintés champagne */
.slider-arrow {
  border: 1px solid rgba(255,255,255,.4);
  background: rgba(11,11,13,.28);
  backdrop-filter: blur(6px);
  transition: background .25s var(--ease), border-color .25s var(--ease), color .25s var(--ease);
}
.slider-arrow:hover { background: var(--champagne); border-color: var(--champagne); color: var(--black); }
.slider-count { display: inline-flex; align-items: center; gap: .6rem; font-size: .82rem; letter-spacing: 2px; }
.slider-count::before { content: ""; width: 26px; height: 1px; background: rgba(255,255,255,.5); }

/* Carte de réservation — finition couture */
.booking-card {
  background: var(--surface);
  border: 1px solid rgba(207,174,116,.38);
  border-radius: 16px;
  box-shadow: 0 26px 64px rgba(11,11,13,.26);
}
.b-tab.is-active { background: var(--accent); color: var(--white); }
.b-tab:not(.is-active):hover { color: var(--accent-dark); }
.field input { background: var(--white); transition: border-color .2s var(--ease), box-shadow .2s var(--ease); }
.field input:focus { border-color: var(--accent); box-shadow: var(--ring); }
.booking-card .btn-book { transition: background .2s var(--ease), transform .2s var(--ease), box-shadow .2s var(--ease); }
.booking-card .btn-book:hover { transform: translateY(-1px); box-shadow: 0 10px 24px rgba(140,106,44,.32); }

/* Watermark : plus discret, laisse respirer le nouveau hero */
.hero-watermark { color: rgba(207,174,116,.13); letter-spacing: 5px; }

/* Accessibilité — respect de prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
  .slide-content h1::after, .slide-content .slide-h::after { transition: none; transform: scaleX(1); }
  .slide.is-active .slide-content > * { animation: none; }
}

/* Mobile : cadre + fil plus discrets */
@media (max-width: 640px) {
  .hero-frame { inset: 10px; }
  .slide-content h1::after, .slide-content .slide-h::after { width: 140px; }
}

/* ===================================================================
   PAGE-HERO — cascade « Le Fil d'Or » sur toutes les pages intérieures
   100% CSS : hérité par les ~150 bandeaux page-hero, sans toucher au HTML.
   =================================================================== */

/* Cadre passe-partout champagne (au-dessus du dégradé, sous le contenu) */
.page-hero::before {
  content: "";
  position: absolute; inset: clamp(12px, 1.6vw, 26px);
  border: 1px solid rgba(207,174,116,.30);
  border-radius: 4px;
  z-index: 1; pointer-events: none;
}

/* Le « fil d'or » : hairline qui se dessine sous le H1 au chargement */
.page-hero h1 { position: relative; padding-bottom: .3em; }
.page-hero h1::after {
  content: "";
  position: absolute; left: 0; bottom: 0;
  width: clamp(150px, 40%, 320px); height: 2px;
  background: linear-gradient(90deg, var(--champagne) 0%, rgba(207,174,116,.85) 45%, rgba(207,174,116,0) 100%);
  transform: scaleX(0); transform-origin: left center;
  animation: filDraw 1s var(--ease-out) .5s forwards;
}
@keyframes filDraw { to { transform: scaleX(1); } }

/* Accent typographique (si un mot-clé du H1 est enveloppé de .hl-gold) */
.page-hero h1 .hl-gold { font-family: 'Fraunces', Georgia, serif; font-style: italic; font-weight: 400; color: var(--champagne); }

/* Breadcrumb : teinte champagne discrète sur le séparateur actif */
.page-hero .breadcrumb span { color: var(--champagne); }

/* Révélation orchestrée du contenu au chargement */
.page-hero-inner > * { animation: heroRise .7s var(--ease-out) both; }
.page-hero-inner > *:nth-child(1) { animation-delay: .05s; }
.page-hero-inner > *:nth-child(2) { animation-delay: .15s; }
.page-hero-inner > *:nth-child(3) { animation-delay: .25s; }
.page-hero-inner > *:nth-child(4) { animation-delay: .35s; }

/* Accessibilité — respect de prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
  .page-hero h1::after { animation: none; transform: scaleX(1); }
  .page-hero-inner > * { animation: none; }
}

/* Mobile : cadre + fil plus discrets */
@media (max-width: 640px) {
  .page-hero::before { inset: 9px; }
  .page-hero h1::after { width: 130px; }
}

/* ===================================================================
   ACCUEIL & SECTIONS — polish Nocturne (cohérence avec le hero)
   Additif : surcharge les règles plus haut. 100% réversible.
   =================================================================== */

/* Kicker « fil » champagne au-dessus des titres de section centrés */
.section-title { position: relative; padding-top: 1.5rem; }
.section-title::before {
  content: ""; position: absolute; top: 0; left: 50%; transform: translateX(-50%);
  width: 48px; height: 2px;
  background: linear-gradient(90deg, rgba(207,174,116,0), var(--accent) 50%, rgba(207,174,116,0));
}

/* Cartes véhicule — liseré + survol raffinés */
.car-card { border: 1px solid var(--border); box-shadow: var(--shadow-sm); transition: transform .25s var(--ease-out), box-shadow .25s var(--ease), border-color .25s var(--ease); }
.car-card:hover { transform: translateY(-6px); border-color: var(--border-strong); box-shadow: var(--shadow-lg); }

/* Écusson des spécialités — anneau champagne */
.shield { background: var(--surface); box-shadow: inset 0 0 0 1px rgba(207,174,116,.55); color: var(--accent-dark); }

/* Puces — teintes chaudes cohérentes */
.specialty-col ul li::before { color: var(--accent); }
.service-body ul li::before { color: var(--accent); }
.provide-text ul li::before { background: var(--champagne); }   /* sur fond noir */

/* Section Limo — accent sur sombre (halo corrigé à la source) */
.limo-left .accent { color: var(--champagne); }

/* Filtres flotte — transition fluide + survol */
.filter { transition: background .2s var(--ease), color .2s var(--ease), transform .12s var(--ease); }
.filter:hover:not(.is-active) { background: var(--dark); }

/* Cadres d'images des blocs services — liseré discret cohérent */
.provide-gallery figure { box-shadow: inset 0 0 0 1px rgba(207,174,116,.18); }

/* --- Section Spécialités : cartes élégantes + items cliquables --- */
.specialty-grid { grid-template-columns: repeat(4, 1fr); gap: 1.5rem; align-items: stretch; }
.specialty-col {
  background: var(--surface);
  border: 1px solid rgba(207,174,116,.28);
  border-radius: var(--r-lg);
  padding: 2rem 1.7rem 2.1rem;
  box-shadow: var(--shadow-sm);
  transition: transform .28s var(--ease-out), box-shadow .28s var(--ease), border-color .28s var(--ease);
}
.specialty-col:hover { transform: translateY(-5px); border-color: rgba(207,174,116,.6); box-shadow: var(--shadow-md); }
.specialty-col .shield { background: var(--accent-soft); box-shadow: none; color: var(--accent-dark); margin-bottom: 1.2rem; }
.specialty-col h3 {
  font-size: 1.22rem; font-weight: 700; color: var(--text);
  margin-bottom: 1rem; padding-bottom: .75rem; border-bottom: 1px solid var(--border);
}
.specialty-col ul li { margin-bottom: .7rem; color: var(--muted); }
.specialty-col ul li a { color: var(--text); transition: color .18s var(--ease); }
.specialty-col ul li a:hover { color: var(--accent-dark); }
.specialty-col ul li::before { color: var(--accent); }
@media (max-width: 980px) { .specialty-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .specialty-grid { grid-template-columns: 1fr; } }

/* ===================================================================
   CHANTIER C — harmonisation globale (bc-list) + polish sections
   =================================================================== */

/* .bc-list : marqueur champagne + espacement resserré (cascade partout) */
.bc-list li { position: relative; padding-left: 1.45rem; margin-bottom: .85rem; }
.bc-list li::before {
  content: ""; position: absolute; left: 0; top: .58em;
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--accent);
}

/* Section Limo — chiffres clés en Fraunces champagne */
.stat .num { font-family: 'Fraunces', Georgia, serif; font-weight: 500; color: var(--champagne); }

/* Destinations — survol raffiné */
.dest-card { border-radius: var(--r-lg); overflow: hidden; transition: transform .3s var(--ease-out), box-shadow .3s var(--ease); }
.dest-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); }

/* Avis — fond réchauffé (retire le rose hors-charte) */
.reviews { background: var(--surface-2); }
.rev-tab { border-color: var(--border); }
.rev-tab:hover { border-color: var(--border-strong); }
/* ===== Devis instantané dans les pages produit (quote-widget.js, 30/09/2026) =====
   Même carte que l'accueil, sans le décalage négatif qui la faisait chevaucher le bandeau. */
.rc-quote-sec { padding-top: 2.4rem; padding-bottom: .6rem; }
.rc-quote.booking-card { margin: 0 auto; }
.rc-quote-head { margin: 0 0 1rem; font-size: .95rem; color: var(--muted); line-height: 1.5; }
.rc-quote-head strong { color: var(--black); }
.rc-quote .field select {
  border: 1px solid #E4DDCE; border-radius: 10px; padding: .7rem .85rem;
  font-family: inherit; font-size: .95rem; background: var(--white); outline: none; width: 100%; cursor: pointer;
}
.rc-quote .field select:focus { border-color: var(--accent); box-shadow: var(--ring); }
.rc-quote .btn-book { border: 0; cursor: pointer; font-family: inherit; font-weight: 700; font-size: .95rem; border-radius: 10px; }
.rc-quote-note { margin: .8rem 0 0; font-size: .82rem; color: var(--muted); }

/* ===== Grille de trajets & galerie (page Orly, 30/09/2026) ===== */
.route-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: .6rem; margin-top: 1.2rem; }
.route-grid a { display: block; padding: .75rem .95rem; border: 1px solid var(--border, #E4DDCE); border-radius: 10px; background: var(--white); text-decoration: none; color: var(--black); font-weight: 600; font-size: .92rem; transition: border-color .2s, transform .2s; }
.route-grid a small { display: block; font-weight: 400; color: var(--muted); font-size: .8rem; margin-top: .15rem; }
.route-grid a:hover { border-color: var(--accent); transform: translateY(-1px); }
.photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .8rem; margin-top: 1.2rem; }
.photo-grid figure { margin: 0; }
.photo-grid img { width: 100%; height: 180px; object-fit: cover; border-radius: 12px; display: block; }
.photo-grid figcaption { font-size: .82rem; color: var(--muted); margin-top: .35rem; }

/* ===== Pied de page : rangée de liens clés (EN), 30/09/2026 ===== */
.footer-popular { max-width: 1400px; margin: 2.6rem auto 0; padding-top: 1.8rem; border-top: 1px solid #1c1f22; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.6rem 2.5rem; }
.footer-popular h4 { color: var(--white); font-size: .95rem; margin-bottom: .6rem; }
.footer-popular p { font-size: .86rem; line-height: 1.9; color: #9aa1a6; }
.footer-popular a:hover { color: var(--champagne); }
@media (max-width: 900px) { .footer-popular { grid-template-columns: 1fr; text-align: center; } }

/* ===== Tableaux de prix (fare-table) — règles globales, 30/09/2026 =====
   N'existaient que dans le <head> de certaines pages : les autres (dont Orly) affichaient
   des tableaux bruts. Reprises à l'identique de chauffeur-prive-bougival.html. */
.fare-examples { margin-top: 1.6rem; }
.fare-examples h3 { margin: 0 0 .3rem; }
.fare-table { width: 100%; border-collapse: collapse; margin: .6rem 0; }
.fare-table th, .fare-table td { padding: .8rem 1rem; border-bottom: 1px solid rgba(0,0,0,.1); }
.fare-table thead th { font-size: .72rem; text-transform: uppercase; letter-spacing: .08em; opacity: .7; text-align: left; }
.fare-table td.trajet { font-weight: 600; }
.fare-table th:not(:first-child), .fare-table td.price { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.fare-table td.price { font-weight: 700; }
.fare-table tbody tr:last-child td { border-bottom: 0; }
.price-note { font-size: .85rem; color: var(--muted); margin-top: .6rem; }
@media (max-width: 620px) { .fare-table th, .fare-table td { padding: .55rem .5rem; font-size: .9rem; } }
