/* Azur VIP Services — site.css GENERE par tools/build-css.sh depuis assets/css/src/. Ne pas editer a la main. */

/* ===== 00-fonts.css ===== */
/* Polices auto-hebergees (SIL OFL). Fichiers variables : un fichier couvre les graisses 300-700.
   Sous-ensembles latin + latin-ext (6 langues). font-display: swap. */
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('../fonts/cormorant-garamond-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 300 700;
  font-display: swap;
  src: url('../fonts/cormorant-garamond-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 300 700;
  font-display: swap;
  src: url('../fonts/cormorant-garamond-italic-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 300 700;
  font-display: swap;
  src: url('../fonts/cormorant-garamond-italic-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('../fonts/montserrat-latin.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Montserrat';
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('../fonts/montserrat-latin-ext.woff2') format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ===== 10-tokens.css ===== */
/* Tokens — design/charte-graphique.md (etape 3). Mode sombre unique. */
:root {
  color-scheme: dark;

  /* Surfaces */
  --bg-0: #0A0A0A;
  --bg-1: #121214;
  --bg-2: #1A1A1C;
  --bg-3: #232326;
  --line: #222226;
  --line-strong: #2A2A2E;
  --line-input: #3A3A3F;

  /* Texte */
  --text: #F2EFE8;
  --text-2: #B9B4A9;
  --text-3: #7E7A72;

  /* Dore */
  --gold: #D4AF37;
  --gold-2: #B8941F;
  --gold-3: #A3831B;
  --gold-soft: rgba(212, 175, 55, 0.12);
  --gold-line: rgba(212, 175, 55, 0.35);
  --gold-line-strong: rgba(212, 175, 55, 0.55);

  /* Etats */
  --info: #7FA6C9;
  --success: #6FBF95;
  --error: #E07A6B;

  /* Typographie */
  --font-serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --font-sans: Montserrat, 'Helvetica Neue', Arial, sans-serif;
  --fs-display: clamp(3.25rem, 2rem + 4.4vw, 5.75rem);   /* 52 → 92 */
  --fs-h1: clamp(2.875rem, 1.9rem + 3.3vw, 5.25rem);     /* 46 → 84 */
  --fs-h2: clamp(2.375rem, 1.9rem + 1.6vw, 3.5rem);      /* 38 → 56 */
  --fs-h3: clamp(1.5rem, 1.4rem + 0.35vw, 1.75rem);      /* 24 → 28 */
  --fs-faq: clamp(1.375rem, 1.3rem + 0.3vw, 1.625rem);   /* 22 → 26 */
  --fs-price: clamp(2.5rem, 2rem + 1.4vw, 3.5rem);       /* 40 → 56 */
  --fs-lead: clamp(0.9375rem, 0.9rem + 0.25vw, 1.125rem);/* 15 → 18 */
  --fs-body: clamp(0.9375rem, 0.92rem + 0.1vw, 1rem);    /* 15 → 16 */
  --fs-ui: 0.75rem;
  --fs-overline: 0.6875rem;
  --fs-small: 0.8125rem;
  --fs-legal: 0.6875rem;
  --lh-tight: 1.05;
  --lh-body: 1.75;
  --ls-ui: 0.12em;
  --ls-overline: 0.18em;

  /* Espacements (grille 8) */
  --sp-1: 0.5rem;
  --sp-2: 0.75rem;
  --sp-3: 1rem;
  --sp-4: 1.5rem;
  --sp-5: 2rem;
  --sp-6: 3rem;
  --sp-7: 4rem;
  --sp-8: 6rem;
  --sp-9: 7.5rem;
  --gutter: clamp(1.25rem, 0.5rem + 3vw, 3.5rem);        /* 20 → 56 */
  --section: clamp(3rem, 2rem + 5vw, 7.5rem);            /* 48 → 120 */
  --container: 1440px;
  --measure: 45rem;                                       /* 720 px de lecture */

  /* Rayons, ombres, mouvement */
  --r-1: 2px;
  --r-2: 8px;
  --shadow-1: 0 24px 60px rgba(0, 0, 0, 0.45);
  --glow-gold: 0 8px 24px rgba(212, 175, 55, 0.25);
  --t-1: 180ms;
  --t-2: 600ms;
  --t-3: 1200ms;
  --ease: cubic-bezier(0.22, 1, 0.36, 1);

  /* Composants */
  --control-h: 3.25rem;   /* 52 */
  --control-h-sm: 2.75rem;/* 44 */
  --control-h-lg: 3.5rem; /* 56 */
  --header-h: 5.25rem;    /* 84 */
  --header-h-m: 4rem;     /* 64 */
}

/* ===== 20-base.css ===== */
/* Base — reset leger, typographie, focus, mouvement reduit. */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--bg-0);
  color: var(--text);
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  font-weight: 400;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
img, video, svg { max-width: 100%; height: auto; display: block; }
img { color: transparent; }
h1, h2, h3, h4 {
  font-family: var(--font-serif);
  font-weight: 500;
  line-height: var(--lh-tight);
  letter-spacing: -0.01em;
  margin: 0;
  text-wrap: balance;
}
h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); line-height: 1.1; letter-spacing: 0; }
p { margin: 0; text-wrap: pretty; }
a { color: var(--gold); text-decoration: none; transition: color var(--t-1) var(--ease); }
a:hover { color: var(--gold-2); }
ul, ol { margin: 0; padding: 0; list-style: none; }
button, input, select, textarea { font: inherit; color: inherit; }
button { background: none; border: 0; padding: 0; cursor: pointer; }
strong { font-weight: 500; }
em { font-style: italic; }
hr { border: 0; height: 1px; background: var(--line); margin: 0; }
:focus { outline: none; }
:focus-visible { outline: 2px solid var(--info); outline-offset: 3px; border-radius: var(--r-1); }
::selection { background: var(--gold); color: var(--bg-0); }

/* Utilitaires typographiques */
.serif { font-family: var(--font-serif); font-weight: 500; line-height: var(--lh-tight); letter-spacing: -0.01em; }
.overline { font-size: var(--fs-overline); letter-spacing: var(--ls-overline); text-transform: uppercase; color: var(--gold); font-weight: 500; }
.lead { font-size: var(--fs-lead); line-height: 1.6; color: var(--text-2); font-weight: 300; }
.muted { color: var(--text-2); }
.dim { color: var(--text-3); }
.small { font-size: var(--fs-small); }
.legal { font-size: var(--fs-legal); color: var(--text-3); line-height: 1.7; }
.ui { font-size: var(--fs-ui); letter-spacing: var(--ls-ui); text-transform: uppercase; font-weight: 500; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip-link { position: absolute; top: -100%; left: var(--gutter); z-index: 100; background: var(--gold); color: var(--bg-0); padding: 0.75rem 1rem; border-radius: 0 0 var(--r-1) var(--r-1); }
.skip-link:focus { top: 0; }

/* Contenu editorial (pages trajet, chauffeur, legales) */
.prose { max-width: var(--measure); }
.prose p { color: var(--text-2); font-weight: 300; line-height: var(--lh-body); }
.prose p + p { margin-top: 1em; }
.prose h2 { margin: var(--sp-7) 0 var(--sp-4); font-size: clamp(1.875rem, 1.6rem + 1vw, 2.5rem); }
.prose h2:first-child { margin-top: 0; }
.prose h3 { margin: var(--sp-5) 0 var(--sp-2); }
.prose ul { padding-left: 1.2em; list-style: disc; color: var(--text-2); font-weight: 300; }
.prose li + li { margin-top: 0.35em; }
.prose a { text-decoration: underline; text-underline-offset: 0.2em; text-decoration-color: var(--gold-line); }
.prose strong { color: var(--text); }

/* Mouvement */
[data-reveal] { opacity: 0; transform: translateY(24px); }
.no-js [data-reveal], .is-revealed[data-reveal] { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  [data-reveal] { opacity: 1 !important; transform: none !important; }
}

/* ===== 30-layout.css ===== */
/* Layout — conteneur, en-tete, pied, sections, grilles, barre collante mobile. */
.container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }
.section { padding-block: var(--section); }
.section--tight { padding-block: calc(var(--section) * 0.66); }
.section--alt { background: var(--bg-1); }
.section__head { display: flex; flex-direction: column; gap: 0.875rem; margin-bottom: var(--sp-6); }
.section__head--row { flex-direction: row; align-items: flex-end; justify-content: space-between; gap: var(--sp-5); flex-wrap: wrap; }
.stack { display: flex; flex-direction: column; }
.stack-2 > * + * { margin-top: var(--sp-2); }
.stack-3 > * + * { margin-top: var(--sp-3); }
.stack-4 > * + * { margin-top: var(--sp-4); }
.stack-5 > * + * { margin-top: var(--sp-5); }
.grid { display: grid; gap: var(--sp-4); }
.grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1199px) { .grid-3, .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) { .grid-2, .grid-3, .grid-4 { grid-template-columns: minmax(0, 1fr); gap: 0.875rem; } }
.rule { height: 1px; background: var(--line); }

/* En-tete */
.header { position: absolute; inset: 0 0 auto 0; z-index: 20; height: var(--header-h); }
.header--solid { position: relative; background: var(--bg-0); border-bottom: 1px solid var(--bg-2); }
.header.is-stuck { position: fixed; background: rgba(10, 10, 10, 0.92); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 1px solid var(--line); transform: translateY(0); }
.header__inner { height: 100%; display: flex; align-items: center; justify-content: space-between; gap: var(--sp-4); }
.brand { display: flex; flex-direction: column; gap: 2px; color: var(--text); }
.brand:hover { color: var(--text); }
.brand__name { font-family: var(--font-serif); font-weight: 500; font-size: 1.5rem; letter-spacing: 0.02em; line-height: 1; }
.brand__tag { font-size: 0.5625rem; letter-spacing: 0.24em; text-transform: uppercase; color: var(--gold); }
.nav { display: flex; align-items: center; gap: 2.5rem; }
.nav__link { color: var(--text-2); font-size: var(--fs-ui); letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500; }
.nav__link:hover, .nav__link[aria-current="page"] { color: var(--text); }
.header__actions { display: flex; align-items: center; gap: 1.25rem; }
.nav-toggle { display: none; width: var(--control-h-sm); height: var(--control-h-sm); align-items: center; justify-content: center; color: var(--text); }
@media (max-width: 991px) {
  .header { height: var(--header-h-m); }
  .brand__name { font-size: 1.25rem; }
  .brand__tag { font-size: 0.5rem; }
  .nav { display: none; }
  .header__cta { display: none; }
  .nav-toggle { display: inline-flex; }
  .header__actions { gap: 0.875rem; }
}

/* Menu mobile plein ecran */
.menu { position: fixed; inset: 0; z-index: 30; background: var(--bg-0); display: none; flex-direction: column; padding: calc(var(--header-h-m) + var(--sp-5)) var(--gutter) var(--sp-6); overflow: auto; }
.menu.is-open { display: flex; }
.menu__close { position: absolute; top: 0.625rem; right: calc(var(--gutter) - 0.6875rem); width: var(--control-h-sm); height: var(--control-h-sm); display: inline-flex; align-items: center; justify-content: center; color: var(--text); }
.menu__link { display: block; font-family: var(--font-serif); font-size: 2.125rem; color: var(--text); padding: 0.875rem 0; border-bottom: 1px solid var(--line); }
.menu__langs { margin-top: var(--sp-5); }
.menu__actions { margin-top: auto; padding-top: var(--sp-5); display: flex; flex-direction: column; gap: 0.625rem; }
body.menu-open { overflow: hidden; }

/* Selecteur de langue */
.lang { position: relative; }
.lang__current { list-style: none; display: inline-flex; align-items: center; gap: 0.375rem; color: var(--text-2); font-size: var(--fs-ui); letter-spacing: 0.1em; font-weight: 500; cursor: pointer; height: var(--control-h-sm); padding: 0 0.25rem; }
.lang__current::-webkit-details-marker { display: none; }
.lang[open] .lang__current { color: var(--text); }
.lang__list { position: absolute; top: 100%; right: 0; min-width: 11rem; background: var(--bg-2); border: 1px solid var(--line-strong); border-radius: var(--r-2); padding: 0.5rem; box-shadow: var(--shadow-1); z-index: 25; }
.lang__link { display: block; padding: 0.625rem 0.75rem; border-radius: var(--r-1); color: var(--text-2); font-size: var(--fs-small); }
.lang__link:hover { color: var(--text); background: var(--bg-3); }
.lang__link.is-current { color: var(--gold); }
.lang-inline { display: flex; gap: 0.875rem; font-size: var(--fs-ui); letter-spacing: 0.1em; font-weight: 500; }
.lang-inline__link { color: var(--text-3); padding: 0.5rem 0; }
.lang-inline__link:hover { color: var(--text); }
.lang-inline__link.is-current { color: var(--gold); }

/* Fil d'Ariane */
.crumb__list { display: flex; flex-wrap: wrap; gap: 0.625rem; align-items: center; font-size: var(--fs-overline); letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-3); }
.crumb__item + .crumb__item::before { content: "›"; margin-right: 0.625rem; }
.crumb__link { color: var(--text-3); }
.crumb__link:hover { color: var(--gold); }
.crumb__item[aria-current] { color: var(--text-2); }

/* Pied de page */
.footer { border-top: 1px solid var(--line); padding: var(--sp-7) 0 var(--sp-5); }
.footer__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: var(--sp-6); margin-bottom: var(--sp-6); }
.footer__col { display: flex; flex-direction: column; gap: 0.75rem; font-size: var(--fs-small); }
.footer__col .overline { margin-bottom: 0.375rem; }
.footer__col a { color: var(--text-2); }
.footer__col a:hover { color: var(--gold); }
.footer__brand { font-family: var(--font-serif); font-size: 1.625rem; font-weight: 500; color: var(--text); }
.footer__bottom { display: flex; justify-content: space-between; gap: var(--sp-5); padding-top: var(--sp-5); border-top: 1px solid var(--line); }
.footer__bottom .legal { max-width: 56rem; }
.footer--compact .footer__grid { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: var(--sp-5); }
.footer__links { display: flex; gap: 2rem; flex-wrap: wrap; }
.footer__links a { color: var(--text-2); font-size: var(--fs-ui); letter-spacing: 0.1em; text-transform: uppercase; font-weight: 500; }
.footer__links a:hover { color: var(--gold); }
@media (max-width: 991px) {
  .footer__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-5); }
  .footer__grid > :first-child { grid-column: 1 / -1; }
  .footer__bottom { flex-direction: column; gap: 0.75rem; }
}

/* Hero trajet (2 colonnes) et corps avec colonne collante */
.route-hero { display: grid; grid-template-columns: minmax(0, 1fr) clamp(20rem, 40vw, 38.75rem); min-height: min(40rem, 80vh); }
.route-hero__body { padding: var(--sp-6) var(--gutter) var(--sp-7); display: flex; flex-direction: column; justify-content: space-between; gap: var(--sp-6); }
.route-hero__facts { display: flex; align-items: flex-end; gap: clamp(1.5rem, 4vw, 3.5rem); flex-wrap: wrap; }
.route-hero__facts .btn { margin-left: auto; }
.route-hero__media { position: relative; overflow: hidden; background: var(--bg-2); }
.route-hero__media img { width: 100%; height: 100%; object-fit: cover; }
.route-body { display: grid; grid-template-columns: minmax(0, 1fr) 26.25rem; gap: clamp(2rem, 6vw, 6rem); padding-block: var(--section); }
.route-body__aside { align-self: start; position: sticky; top: 2rem; display: flex; flex-direction: column; gap: 1.25rem; }
@media (max-width: 1199px) {
  .route-hero { grid-template-columns: minmax(0, 1fr); }
  .route-hero__media { order: -1; aspect-ratio: 16 / 9; min-height: 0; }
  .route-body { grid-template-columns: minmax(0, 1fr); }
  .route-body__aside { position: static; }
}
@media (max-width: 767px) {
  .route-hero__media { aspect-ratio: 3 / 2; }
  .route-hero__body { padding: var(--sp-4) var(--gutter) var(--sp-5); gap: var(--sp-4); }
  .route-hero__facts .btn { display: none; } /* la barre collante prend le relais */
}

/* Barre collante mobile */
.sticky-cta { position: fixed; left: 0; right: 0; bottom: 0; z-index: 15; display: none; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.75rem var(--gutter) max(1rem, env(safe-area-inset-bottom)); background: rgba(10, 10, 10, 0.92); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-top: 1px solid var(--gold-line); transform: translateY(100%); transition: transform 300ms var(--ease); }
.sticky-cta.is-visible { transform: translateY(0); }
.sticky-cta__label { font-size: 0.5625rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--text-3); }
.sticky-cta__price { font-family: var(--font-serif); font-size: 1.875rem; color: var(--gold); line-height: 1; }
.sticky-cta .btn--gold { flex: 1; }
@media (max-width: 767px) { .sticky-cta { display: flex; } body.has-sticky-cta { padding-bottom: 5.5rem; } }

/* Colonne formulaire (Eric 2026-09-11) : collante sur 2 colonnes ; si elle est plus haute que la fenetre, reservation-form.js
   lui donne un top negatif pour qu'elle defile jusqu'a son bas puis s'y accroche (tous les champs restent accessibles). */
.route-body__aside { position: static; }
@media (min-width: 1200px) { .route-body__aside { position: sticky; top: 2rem; } }

/* Telephone : logo texte sur une ligne, sans sous-titre (constat captures mobile 2026-09-11) */
@media (max-width: 480px) { .brand__name { font-size: 1.125rem; white-space: nowrap; } .brand__tag { display: none; } }

/* Ecrans larges (16:9, ultra-wide) : le hero de page trajet reste dans la largeur du conteneur, centre, texte aligne sur le contenu (Eric 2026-09-11) */
.route-hero { max-width: var(--container); margin-inline: auto; }

/* ===== 40-components.css ===== */
/* Composants — boutons, cartes, formulaire, encart aeroport, FAQ, selecteur, messages, placeholders. */

/* Boutons */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 0.625rem; height: var(--control-h); padding: 0 1.75rem; border-radius: var(--r-1); font-size: var(--fs-ui); letter-spacing: var(--ls-ui); text-transform: uppercase; font-weight: 500; white-space: nowrap; border: 1px solid transparent; transition: background var(--t-1) var(--ease), color var(--t-1) var(--ease), border-color var(--t-1) var(--ease), transform var(--t-1) var(--ease), box-shadow var(--t-1) var(--ease); }
.btn svg { flex: none; transition: transform var(--t-1) var(--ease); }
.btn--gold { background: var(--gold); color: var(--bg-0); }
.btn--gold:hover { background: var(--gold-2); color: var(--bg-0); transform: translateY(-1px); box-shadow: var(--glow-gold); }
.btn--gold:hover svg { transform: translateX(3px); }
.btn--gold:active { background: var(--gold-3); transform: none; box-shadow: none; }
.btn--ghost { border-color: rgba(242, 239, 232, 0.28); color: var(--text); }
.btn--ghost:hover { border-color: var(--gold); color: var(--gold); }
.btn--sm { height: var(--control-h-sm); padding: 0 1.375rem; }
.btn--lg { height: var(--control-h-lg); padding: 0 2.25rem; }
.btn--xl { height: 3.75rem; padding: 0 2.25rem; }
.btn--icon { width: var(--control-h); padding: 0; }
.btn--block { width: 100%; }
.btn[disabled], .btn.is-disabled { background: var(--bg-3); color: var(--text-3); border-color: transparent; pointer-events: none; }
.btn.is-loading { background: var(--gold-2); color: rgba(10, 10, 10, 0.7); pointer-events: none; }
.btn.is-loading svg { animation: spin 900ms linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.link-arrow { display: inline-flex; align-items: center; gap: 0.625rem; font-size: var(--fs-ui); letter-spacing: var(--ls-ui); text-transform: uppercase; font-weight: 500; }
.link-arrow svg { transition: transform var(--t-1) var(--ease); }
.link-arrow:hover svg { transform: translateX(4px); }

/* Cartes */
.card { background: var(--bg-1); border: 1px solid var(--line); border-radius: var(--r-2); overflow: hidden; }
.card--raised { background: var(--bg-2); }
.card--dashed { background: transparent; border: 1px dashed rgba(212, 175, 55, 0.45); }
.card--pad { padding: var(--sp-5); }
.route-card { display: flex; flex-direction: column; color: var(--text); transition: border-color var(--t-1) var(--ease), transform var(--t-1) var(--ease); }
.route-card:hover { border-color: var(--gold-line-strong); color: var(--text); }
.route-card__media { aspect-ratio: 4 / 3; background: var(--bg-2); overflow: hidden; }
.route-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform var(--t-2) var(--ease); }
.route-card:hover .route-card__media img { transform: scale(1.03); }
.route-card__body { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.375rem 1.5rem; }
.route-card__title { font-family: var(--font-serif); font-size: 1.625rem; line-height: 1.1; }
.route-card__sub { font-size: var(--fs-ui); color: var(--text-3); letter-spacing: 0; text-transform: none; margin-top: 0.25rem; }
.route-card--row .route-card__body { padding: 1.25rem 1.375rem; }
.route-card--row .route-card__title { font-size: 1.375rem; }
@media (max-width: 767px) { .route-card__media { aspect-ratio: 16 / 9; } .route-card__body { padding: 1.125rem 1.25rem; } .route-card__title { font-size: 1.5rem; } }

/* Prix */
.price { font-family: var(--font-serif); font-weight: 500; font-size: 2.125rem; line-height: 1; color: var(--text); white-space: nowrap; }
.price small { font-family: var(--font-sans); font-size: 0.625rem; letter-spacing: 0.14em; color: var(--text-3); text-transform: uppercase; margin-left: 0.375rem; vertical-align: middle; }
.price--gold { color: var(--gold); }
.price--hero { font-size: var(--fs-price); color: var(--gold); }
.fact { display: flex; flex-direction: column; gap: 0.375rem; }
.fact__k { font-size: 0.625rem; letter-spacing: 0.16em; text-transform: uppercase; color: var(--text-3); }
.fact__v { font-family: var(--font-serif); font-size: 1.875rem; line-height: 1; color: var(--text); }
.fact__note { font-size: var(--fs-overline); color: var(--text-3); }

/* Bande de villes (kinetic-marquee) */
.marquee { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding: 1.375rem 0; overflow: hidden; }
.marquee__track { display: flex; gap: 2.25rem; align-items: center; width: max-content; padding-left: var(--gutter); will-change: transform; }
.marquee__item { font-family: var(--font-serif); font-size: 1.875rem; font-style: italic; color: var(--text-2); white-space: nowrap; }
.marquee__dot { width: 5px; height: 5px; border-radius: 50%; background: var(--gold); flex: none; }
@media (max-width: 767px) { .marquee { padding: 1rem 0; } .marquee__item { font-size: 1.5rem; } .marquee__track { gap: 1.375rem; } }

/* Etapes */
.steps { display: flex; flex-direction: column; }
.step { display: flex; gap: 2rem; padding: 2rem 0; border-top: 1px solid var(--line-strong); }
.step:last-child { border-bottom: 1px solid var(--line-strong); }
.step__n { font-family: var(--font-serif); font-size: 2.75rem; color: var(--gold); width: 4rem; flex: none; line-height: 1; }
.step__body { display: flex; flex-direction: column; gap: 0.5rem; }
.step__body p { color: var(--text-2); }
@media (max-width: 767px) { .step { gap: 1.125rem; padding: 1.375rem 0; } .step__n { font-size: 2.125rem; width: 2.75rem; } }

/* Liste inclus (coches) */
.checks { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.875rem 2rem; }
.checks li { display: flex; align-items: center; gap: 0.75rem; font-size: 0.875rem; }
.checks svg { color: var(--gold); flex: none; }
@media (max-width: 767px) { .checks { grid-template-columns: minmax(0, 1fr); gap: 0.625rem; } }

/* FAQ (accordeon accessible : details/summary) */
.faq { display: flex; flex-direction: column; }
.faq__item { border-top: 1px solid var(--line); }
.faq__item:last-child { border-bottom: 1px solid var(--line); }
.faq__q { list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 1.5rem; padding: 1.75rem 0; cursor: pointer; font-family: var(--font-serif); font-size: var(--fs-faq); line-height: 1.15; color: var(--text); }
.faq__q::-webkit-details-marker { display: none; }
.faq__q svg { color: var(--gold); flex: none; transition: transform var(--t-1) var(--ease); }
.faq__item[open] .faq__q svg { transform: rotate(45deg); }
.faq__a { padding: 0 0 1.75rem; max-width: var(--measure); color: var(--text-2); font-weight: 300; line-height: var(--lh-body); }
.faq__a p + p { margin-top: 0.75em; }
@media (max-width: 767px) { .faq__q { padding: 1.25rem 0; gap: 1rem; } .faq__a { padding-bottom: 1.25rem; font-size: 0.875rem; } }

/* Encart aeroport */
.airport { border: 1px solid var(--gold-line); border-radius: var(--r-2); padding: 2rem 2.25rem; display: flex; gap: 1.75rem; background: linear-gradient(90deg, rgba(212, 175, 55, 0.07), transparent 70%); margin: var(--sp-6) 0; }
.airport > svg { color: var(--gold); flex: none; margin-top: 0.25rem; }
.airport__body { display: flex; flex-direction: column; gap: 0.75rem; }
.airport__head { display: flex; align-items: baseline; gap: 1rem; flex-wrap: wrap; }
.airport__fee { font-family: var(--font-serif); font-size: 1.75rem; color: var(--gold); }
.airport__body p { color: var(--text-2); font-size: 0.9375rem; }
@media (max-width: 767px) { .airport { padding: 1.375rem; gap: 1rem; flex-direction: column; margin: var(--sp-5) 0; } .airport > svg { display: none; } .airport__body p { font-size: 0.8125rem; } }

/* Bandeau SMS / encart dore */
.panel-gold { border: 1px solid var(--gold-line); border-radius: var(--r-2); padding: clamp(1.75rem, 4vw, 3.5rem) clamp(1.5rem, 4.5vw, 4rem); display: flex; align-items: center; justify-content: space-between; gap: var(--sp-5); background: linear-gradient(90deg, rgba(212, 175, 55, 0.08), transparent 60%); }
.panel-gold h2 { font-size: clamp(1.875rem, 1.5rem + 1.2vw, 2.5rem); }
@media (max-width: 767px) { .panel-gold { flex-direction: column; align-items: stretch; background: linear-gradient(180deg, rgba(212, 175, 55, 0.08), transparent); } }

/* Formulaire */
.form { display: flex; flex-direction: column; gap: 1.125rem; }
.form__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
@media (max-width: 359px) { .form__row { grid-template-columns: minmax(0, 1fr); } }
.field { display: flex; flex-direction: column; gap: 0.5rem; }
.field__label { font-size: var(--fs-overline); letter-spacing: var(--ls-ui); text-transform: uppercase; color: var(--text-2); font-weight: 500; }
.input, .select, .textarea { width: 100%; height: var(--control-h); border: 1px solid var(--line-strong); border-radius: var(--r-1); background: #141416; padding: 0 1rem; color: var(--text); font-size: 0.9375rem; transition: border-color var(--t-1) var(--ease), box-shadow var(--t-1) var(--ease); appearance: none; -webkit-appearance: none; }
.input::placeholder, .textarea::placeholder { color: var(--text-3); }
.input:focus, .select:focus, .textarea:focus { border-color: var(--gold); box-shadow: 0 0 0 3px rgba(212, 175, 55, 0.18); outline: none; }
.input[aria-invalid="true"], .select[aria-invalid="true"], .textarea[aria-invalid="true"] { border-color: var(--error); }
.textarea { height: auto; min-height: 5.25rem; padding: 0.875rem 1rem; resize: vertical; }
.select-wrap { position: relative; }
.select-wrap svg { position: absolute; right: 0.875rem; top: 50%; transform: translateY(-50%); color: var(--text-3); pointer-events: none; }
.select { padding-right: 2.5rem; }
.select--big { height: 3.75rem; font-family: var(--font-serif); font-size: 1.625rem; border-color: var(--gold); }
.input[type="date"], .input[type="time"] { color-scheme: dark; }
.field__error { display: none; font-size: 0.75rem; color: var(--error); align-items: center; gap: 0.375rem; }
.field.has-error .field__error { display: flex; }
.check { display: flex; gap: 0.875rem; align-items: flex-start; font-size: var(--fs-small); color: var(--text-2); cursor: pointer; }
.check input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.check__box { width: 1.375rem; height: 1.375rem; border: 1px solid var(--line-input); border-radius: var(--r-1); flex: none; margin-top: 1px; display: inline-flex; align-items: center; justify-content: center; color: var(--bg-0); transition: background var(--t-1) var(--ease), border-color var(--t-1) var(--ease); }
.check__box svg { opacity: 0; }
.check input:checked + .check__box { background: var(--gold); border-color: var(--gold); }
.check input:checked + .check__box svg { opacity: 1; }
.check input:focus-visible + .check__box { outline: 2px solid var(--info); outline-offset: 3px; }
.check.has-error .check__box { border-color: var(--error); }
.check a { text-decoration: underline; text-underline-offset: 0.2em; }
.radio-cards { display: flex; gap: 0.75rem; }
.radio-card { display: flex; gap: 0.875rem; align-items: flex-start; padding: 1rem 1.125rem; border: 1px solid var(--line-strong); border-radius: var(--r-1); flex: 1; cursor: pointer; font-size: 0.875rem; transition: border-color var(--t-1) var(--ease), background var(--t-1) var(--ease); }
.radio-card input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.radio-card__dot { width: 1.125rem; height: 1.125rem; border-radius: 50%; border: 1px solid var(--line-input); flex: none; margin-top: 2px; box-sizing: border-box; transition: border var(--t-1) var(--ease); }
.radio-card:has(input:checked) { border-color: var(--gold); background: rgba(212, 175, 55, 0.06); }
.radio-card:has(input:checked) .radio-card__dot { border: 5px solid var(--gold); }
.radio-card:has(input:focus-visible) { outline: 2px solid var(--info); outline-offset: 3px; }
.radio-card__hint { display: block; color: var(--text-3); font-size: 0.75rem; margin-top: 0.125rem; }
@media (max-width: 479px) { .radio-cards { flex-direction: column; } }
.total { display: flex; justify-content: space-between; align-items: baseline; padding: 1rem 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.total__label { font-size: var(--fs-ui); letter-spacing: var(--ls-ui); text-transform: uppercase; color: var(--text-3); }
.total__value { font-family: var(--font-serif); font-size: 2.125rem; color: var(--gold); line-height: 1; }
.form__head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }
.form__title { font-family: var(--font-serif); font-size: 1.875rem; line-height: 1.1; }
[hidden] { display: none !important; }

/* Messages */
.note { border-left: 2px solid var(--gold); padding: 0.75rem 1rem; font-size: var(--fs-small); color: var(--text-2); background: rgba(212, 175, 55, 0.05); }
.note--info { border-color: var(--info); background: rgba(127, 166, 201, 0.06); }
.note--error { border-color: var(--error); background: rgba(224, 122, 107, 0.06); }
.alert { border: 1px solid var(--error); border-radius: var(--r-1); padding: 1.125rem; display: flex; flex-direction: column; gap: 0.625rem; background: rgba(224, 122, 107, 0.06); }
.alert__title { display: flex; gap: 0.625rem; align-items: center; color: var(--error); font-weight: 500; font-size: 0.875rem; }
.alert--info { border-color: var(--line-strong); background: transparent; }
.alert--info .alert__title { color: var(--info); }
.alert__actions { display: flex; gap: 0.625rem; margin-top: 0.25rem; }
.alert__actions .btn { flex: 1; height: var(--control-h-sm); padding: 0 0.875rem; }

/* Confirmation */
.confirm__icon { width: 3.5rem; height: 3.5rem; border-radius: 50%; border: 1px solid var(--gold); display: inline-flex; align-items: center; justify-content: center; color: var(--gold); }
.recap { display: flex; flex-direction: column; }
.recap__row { display: flex; justify-content: space-between; gap: 1rem; font-size: 0.875rem; padding: 0.75rem 0; border-top: 1px solid var(--bg-2); }
.recap__row:last-child { border-bottom: 1px solid var(--bg-2); }
.recap__k { color: var(--text-3); }
.recap__v { color: var(--text); text-align: right; }
.numbered { display: flex; gap: 0.875rem; align-items: flex-start; }
.numbered__n { width: 1.75rem; height: 1.75rem; border-radius: 50%; border: 1px solid var(--gold); color: var(--gold); display: inline-flex; align-items: center; justify-content: center; font-family: var(--font-serif); font-size: 1rem; flex: none; }

/* Placeholder visuel (tant que l'asset n'est pas livre) */
.ph { position: relative; overflow: hidden; background: linear-gradient(135deg, #141416 0%, #1E1E21 55%, #151517 100%); }
.ph::after { content: ""; position: absolute; inset: 0; background: radial-gradient(60% 50% at 70% 30%, rgba(212, 175, 55, 0.10), transparent 70%); }

/* Spotlight border (cards.js pose --spot-x / --spot-y) */
@media (hover: hover) and (pointer: fine) {
  .route-card { position: relative; }
  .route-card::before { content: ""; position: absolute; inset: -1px; border-radius: inherit; pointer-events: none; opacity: 0; transition: opacity var(--t-1) var(--ease);
    background: radial-gradient(220px circle at var(--spot-x, 50%) var(--spot-y, 50%), rgba(212, 175, 55, 0.55), transparent 70%);
    -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask-composite: exclude; padding: 1px; }
  .route-card:hover::before { opacity: 1; }
}

/* Champs aeroport : caches tant que la case n'est pas cochee (JS) ; sans JS, visibles */
.js [data-airport-fields][hidden] { display: none !important; }
.form__airport { padding-left: 2.25rem; }
@media (max-width: 479px) { .form__airport { padding-left: 0; } }
[data-consent-error] { display: none; }

/* Ecran de confirmation (apres envoi du formulaire) */
.confirmation { scroll-margin-top: 6rem; }
.confirmation__recap { display: grid; gap: 0.625rem; margin: 0; }
.confirmation__recap > div { display: grid; grid-template-columns: minmax(7rem, 9rem) 1fr; gap: 0.75rem; align-items: baseline; }
.confirmation__recap dt { font-size: var(--fs-overline); letter-spacing: var(--ls-ui); text-transform: uppercase; color: var(--text-2); }
.confirmation__recap dd { margin: 0; color: var(--text); overflow-wrap: anywhere; }
.confirmation__steps { margin: 0; padding-left: 1.25rem; display: grid; gap: 0.5rem; color: var(--text-2); }
.container--narrow { max-width: 44rem; }
.confirmation .alert__actions { flex-wrap: wrap; margin-top: 0.75rem; }
.confirmation .alert__actions .btn { flex: 1 1 11rem; }
.confirmation__steps { list-style: decimal; }
.confirmation__steps li::marker { color: var(--gold); font-weight: 500; }
.confirmation__recap > div { grid-template-columns: minmax(8rem, 9.5rem) 1fr; }
/* En-tete du formulaire : "Votre demande" sur sa ligne, le trajet complet en dessous (Eric 2026-09-11) */
.form__head { align-items: flex-start; }
.form__head .overline, .form__head .form__title { display: block; }
.form__head > .stack-2 { min-width: 0; flex: 1 1 auto; }
.form__head .form__title { white-space: normal; overflow-wrap: anywhere; font-size: clamp(1.375rem, 1.1rem + 0.8vw, 1.875rem); }
.form__head .price { flex-shrink: 0; }

/* Boite SMS sur ordinateur (numero + copier) */
.sms-modal { position: fixed; inset: 0; z-index: 40; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.sms-modal[hidden] { display: none; }
.sms-modal__backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.72); }
.sms-modal__box { position: relative; width: min(26rem, 100%); background: var(--bg-1); border: 1px solid var(--gold-line-strong); border-radius: var(--r-1); padding: 1.75rem; display: flex; flex-direction: column; gap: 0.75rem; box-shadow: 0 30px 80px rgba(0, 0, 0, 0.6); }
.sms-modal__number { font-family: var(--font-serif); font-size: 2.25rem; color: var(--gold); letter-spacing: 0.04em; user-select: all; }

/* Selecteur rapide de destination (Eric 2026-09-11) : accueil au-dessus des cartes, tete des pages trajet */
.jump { display: flex; align-items: center; gap: 0.75rem 1rem; flex-wrap: wrap; padding: 1rem 1.25rem; border: 1px solid var(--line); border-radius: var(--r-2); background: var(--bg-1); }
.jump__label { font-size: var(--fs-overline); letter-spacing: var(--ls-overline); text-transform: uppercase; color: var(--gold); white-space: nowrap; }
.jump__select { flex: 1 1 16rem; min-width: 0; }
.jump .select { height: var(--control-h-sm); font-size: 0.9375rem; }
.jump--card { padding: 1.25rem 1.5rem; margin-bottom: var(--sp-6); }
@media (max-width: 767px) { .jump { padding: 0.875rem 1rem; } .jump__label { flex-basis: 100%; } .jump .btn { flex: 1 1 auto; } }

/* ===== 50-pages.css ===== */
/* Pages — home, chauffeur, vers-nice, legales, 404. Les pages trajet sont dans layout (route-*). */

/* Home : hero video */
.hero { position: relative; min-height: calc(100svh - var(--header-h)); display: flex; align-items: flex-end; overflow: hidden; background: var(--bg-2); }  /* sous l'en-tete noir */
.hero__media { position: absolute; inset: 0; }
.hero__media video, .hero__media img { width: 100%; height: 100%; object-fit: cover; }
.hero__shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10, 10, 10, 0.55) 0%, rgba(10, 10, 10, 0.15) 40%, rgba(10, 10, 10, 0.92) 100%); }
.hero__content { position: relative; z-index: 2; padding-block: var(--sp-8) var(--sp-8); display: flex; flex-direction: column; gap: 1.75rem; max-width: 56rem; }
.hero__title { font-size: var(--fs-display); }
.hero__title em { font-style: italic; font-weight: 400; color: var(--gold); }
.hero__actions { display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; margin-top: 0.5rem; }
@media (max-width: 767px) {
  .hero { min-height: calc(100svh - var(--header-h-m)); }
  .hero__content { padding-block: var(--sp-7) var(--sp-6); gap: 1.125rem; }
  .hero__actions { flex-direction: column; align-items: stretch; }
}

/* Home : comment ca marche (sticky-stack) */
.how { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(2rem, 5vw, 5rem); }
.how__intro { align-self: start; position: sticky; top: 7.5rem; display: flex; flex-direction: column; gap: 1.25rem; }
.how__intro .lead { max-width: 29rem; }
@media (max-width: 991px) { .how { grid-template-columns: minmax(0, 1fr); } .how__intro { position: static; } }

/* Home : vehicule (split) */
.split { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.split__media { position: relative; min-height: 45rem; background: var(--bg-2); overflow: hidden; }
.split__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.split__body { padding: var(--section) clamp(1.5rem, 6vw, 6rem); display: flex; flex-direction: column; gap: 1.75rem; justify-content: center; }
@media (max-width: 991px) { .split { grid-template-columns: minmax(0, 1fr); } .split__media { min-height: 0; aspect-ratio: 16 / 10; } .split__body { padding: var(--sp-6) var(--gutter); gap: 1.125rem; } }

/* Home : FAQ en 2 colonnes */
.faq-section { display: grid; grid-template-columns: 26rem minmax(0, 1fr); gap: clamp(2rem, 5vw, 5rem); }
@media (max-width: 991px) { .faq-section { grid-template-columns: minmax(0, 1fr); gap: 1.25rem; } }

/* Chauffeur */
.driver { display: grid; grid-template-columns: 35rem minmax(0, 1fr); }
.driver__media { position: relative; min-height: 53.75rem; background: var(--bg-2); overflow: hidden; }
.driver__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.driver__body { padding: var(--section) clamp(1.5rem, 7vw, 7.5rem) var(--section) clamp(1.5rem, 6vw, 6rem); display: flex; flex-direction: column; gap: 2rem; }
.driver__facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 3rem; }
.driver__facts .fact { padding: 1.5rem 0; border-top: 1px solid var(--line); gap: 0.5rem; }
.driver__facts .fact__v { font-size: 1.75rem; line-height: 1.1; }
.driver__facts .fact__note { font-size: 0.9375rem; color: var(--text-2); }
.driver__facts .fact--last { border-bottom: 1px solid var(--line); }
.driver__actions { display: flex; gap: 1rem; flex-wrap: wrap; }
@media (max-width: 1199px) { .driver { grid-template-columns: minmax(0, 1fr); } .driver__media { min-height: 0; aspect-ratio: 4 / 3; } .driver__media img { object-position: 50% 20%; } .driver__body { padding: var(--sp-6) var(--gutter); } .driver__facts { grid-template-columns: minmax(0, 1fr); } .driver__facts .fact--last { border-bottom: 0; } .driver__facts .fact:last-child { border-bottom: 1px solid var(--line); } }
@media (max-width: 767px) { .driver__media { aspect-ratio: 3 / 4; } }
.pillars { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 3rem; }
.pillar { display: flex; flex-direction: column; gap: 0.875rem; }
.pillar p { color: var(--text-2); font-size: 0.9375rem; }
@media (max-width: 991px) { .pillars { grid-template-columns: minmax(0, 1fr); gap: 2rem; } }

/* Page 404 */
.not-found { min-height: 60vh; display: flex; align-items: center; }
.not-found__inner { display: flex; flex-direction: column; gap: 1.25rem; max-width: 40rem; }
.not-found h1 { font-size: clamp(2.5rem, 6vw, 4.5rem); }
.not-found__actions { display: flex; gap: 1rem; flex-wrap: wrap; margin-top: 0.75rem; }

/* Vers Nice : carte du selecteur */
.selector { padding: 2rem; display: flex; flex-direction: column; gap: 1.5rem; max-width: 45rem; }
.selector__facts { display: flex; align-items: flex-end; gap: clamp(1.5rem, 4vw, 3rem); padding: 0.5rem 0; flex-wrap: wrap; }
.selector__cities { font-size: 0.75rem; color: var(--text-3); }
@media (max-width: 767px) { .selector { padding: 1.25rem; gap: 1.125rem; } }

/* Pages legales */
.legal-page { max-width: var(--measure); }
.legal-page h2 { margin-top: var(--sp-6); }
.legal-page table { width: 100%; border-collapse: collapse; font-size: 0.875rem; }
.legal-page th, .legal-page td { text-align: left; padding: 0.625rem 0.75rem; border-bottom: 1px solid var(--line); vertical-align: top; color: var(--text-2); }
.legal-page th { color: var(--text); font-weight: 500; }

/* 404 */
.notfound { min-height: 60vh; display: flex; flex-direction: column; justify-content: center; gap: 1.5rem; max-width: 40rem; }

/* Rideau d'entree (hero.js) */
.hero__curtain { position: absolute; inset: 0; z-index: 3; background: var(--bg-0); }
.no-js .hero__curtain { display: none; }
@media (prefers-reduced-motion: reduce) { .hero__curtain { display: none; } }

/* ===== Pages trajet : blocs destination (coup d'oeil, lieux, activites, saisons, credits) ===== */
.glance { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.glance__item { padding: 1.25rem 1.25rem 1.25rem 0; display: flex; flex-direction: column; gap: 0.375rem; border-right: 1px solid var(--line); }
.glance__item:not(:first-child) { padding-left: 1.25rem; }
.glance__item:last-child { border-right: 0; }
.glance__k { font-size: var(--fs-overline); letter-spacing: var(--ls-ui); text-transform: uppercase; color: var(--gold); }
.glance__v { font-family: var(--font-serif); font-size: 1.375rem; line-height: 1.2; }
.glance__s { font-size: 0.875rem; color: var(--text-3); }
@media (max-width: 899px) { .glance { grid-template-columns: repeat(2, minmax(0, 1fr)); } .glance__item:nth-child(2n) { border-right: 0; } .glance__item:nth-child(-n+2) { border-bottom: 1px solid var(--line); } }

.places { display: flex; flex-direction: column; gap: 2rem; }
.places__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem 1.75rem; }
.place { display: flex; flex-direction: column; gap: 1rem; }
.place__media { margin: 0; aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--r-1); background: var(--bg-2); border: 1px solid var(--line); }
.place__media img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform var(--t-2) var(--ease); }
.place:hover .place__media img { transform: scale(1.03); }
.place__body { display: flex; flex-direction: column; gap: 0.625rem; }
.place__title { font-family: var(--font-serif); font-size: 1.5rem; line-height: 1.15; }
.place__body p { color: var(--text-2); }
.place__tip { font-size: 0.9375rem; color: var(--text-2); border-left: 2px solid var(--gold); padding-left: 0.875rem; }
.place__tip-label { font-size: var(--fs-overline); letter-spacing: var(--ls-ui); text-transform: uppercase; color: var(--gold); margin-right: 0.375rem; }
@media (max-width: 700px) { .places__grid { grid-template-columns: minmax(0, 1fr); } }

.seasons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem 2rem; }
.season { display: flex; flex-direction: column; gap: 0.375rem; padding-top: 1rem; border-top: 1px solid var(--line); }
.season__k { font-family: var(--font-serif); font-size: 1.25rem; }
.season p { color: var(--text-2); font-size: 0.9375rem; }
@media (max-width: 700px) { .seasons { grid-template-columns: minmax(0, 1fr); } }

.activities { display: grid; gap: 0.875rem; padding: 0; margin: 0; list-style: none; }
.activities li { display: grid; grid-template-columns: 1.25rem 1fr; gap: 0.75rem; align-items: baseline; color: var(--text-2); }
.activities li::before { content: ""; width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--gold); transform: translateY(-0.125rem); justify-self: center; }
.activities strong { color: var(--text); font-weight: 500; }

.credits { font-size: 0.75rem; color: var(--text-3); margin-top: 1rem; }

/* Page trajet : respiration au-dessus de chaque bloc de la colonne principale (demande Eric 2026-09-11) */
.route-body > .stack > * + * { margin-top: var(--sp-6); }
.route-body > .stack > .prose + .glance { margin-top: var(--sp-5); }

/* Bloc retour Ville → Nice (page trajet) */
.return-block { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; flex-wrap: wrap; }
.return-block__body { display: flex; flex-direction: column; gap: 0.5rem; flex: 1 1 22rem; }
.return-block__title { font-family: var(--font-serif); font-size: 1.75rem; line-height: 1.1; }
.return-block .btn { flex: 0 0 auto; }

/* Hero trajet : les 3 valeurs (prix, duree, passagers) alignees sur la meme ligne de base (Eric 2026-09-11) */
.route-hero__facts .fact { justify-content: flex-end; }
.route-hero__facts .fact__v { line-height: 0.9; }
.route-hero__facts .fact__note { text-transform: none; letter-spacing: 0; }
.route-hero__facts { align-items: stretch; }
.route-hero__facts .fact { justify-content: space-between; }
.route-hero__facts .btn { align-self: flex-end; }

/* Page chauffeur : portrait serre au-dessus du titre (photo IA a partir de la photo d'Eric, 2026-09-11) */
.driver__portrait { width: 9rem; height: auto; aspect-ratio: 3 / 4; object-fit: cover; border-radius: var(--r-1); border: 1px solid var(--gold-line-strong); margin: 0.25rem 0 0.5rem; display: block; }
/* Ecrans larges : la page chauffeur reste dans la largeur du conteneur, centree */
.driver { max-width: var(--container); margin-inline: auto; }
