/* Live flight search; existing hero and editor adjustments are preserved. */
.flight-dialog { width: min(860px, calc(100% - 32px)); max-height: 90dvh; margin: auto; padding: clamp(22px, 4vw, 42px); border: 1px solid var(--line); border-radius: 8px; background: var(--paper); color: var(--text); font: inherit; }
.flight-dialog::backdrop { background: rgb(0 0 0 / .76); backdrop-filter: blur(8px); }
.flight-dialog h2 { padding-right: 30px; margin-bottom: 20px; }
.flight-dialog h3 { font-size: 18px; }
.flight-close { position: absolute; right: 16px; top: 12px; border: 0; background: transparent; color: var(--text); font-size: 30px; cursor: pointer; }
.flight-message, .flight-note { color: var(--muted); font-size: 14px; line-height: 1.65; }
.flight-message { min-height: 24px; }
.flight-results { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 22px 0 16px; }
.flight-results:empty { display: none; }
.estimate-card { padding: 22px 16px; border: 1px solid var(--line); border-radius: 4px; background: var(--surface); }
.estimate-price { margin: 16px 0 8px; font-size: 20px; font-weight: 600; }
.estimate-card span { font-size: 12px; color: var(--muted); }
.quote-form { margin-top: 28px; border-top: 1px solid var(--line); padding-top: 24px; }
.quote-form fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.quote-form h3 { margin-bottom: 10px; }
.quote-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin: 18px 0; }
.quote-fields label, .legs-search label { display: grid; gap: 7px; font-size: 12px; color: var(--muted); }
.quote-fields input, .quote-fields select, .legs-search input, .legs-search select { width: 100%; min-width: 0; min-height: 44px; border: 1px solid var(--line); border-radius: 3px; padding: 10px 12px; background: var(--surface); color: var(--text); font: inherit; font-size: 14px; color-scheme: dark; }
.quote-consent { display: flex; align-items: flex-start; gap: 10px; font-size: 13px; line-height: 1.6; margin: 18px 0; }
.quote-consent input { margin-top: 5px; flex-shrink: 0; accent-color: white; }
.quote-form button { margin-bottom: 12px; }
#quote-message { margin-top: 14px; }
#track-request { margin-top: 12px; }
.legs-search { display: grid; grid-template-columns: 1fr 1fr 1fr auto; gap: 16px; align-items: end; margin: 26px 0; }
#legs-message { margin-bottom: 16px; }
.flight-dialog [hidden], #legs-more[hidden], #track-request[hidden] { display: none; }
.flight-dialog button:disabled, .legs-search button:disabled, #legs-more:disabled, .sb-go:disabled { opacity: .5; cursor: wait; }
.flight-dialog :focus-visible, .legs-search :focus-visible { outline: 2px solid var(--text); outline-offset: 3px; }
@media (max-width: 650px) {
  .flight-results, .quote-fields { grid-template-columns: 1fr; }
  .estimate-card { padding: 16px; }
  .estimate-price { margin: 8px 0; }
  .legs-search { grid-template-columns: 1fr 1fr; gap: 12px; }
  .legs-search button { min-height: 44px; }
}
/* 09/11 — options du devis, dates des empty legs */
.quote-fields .quote-check, .quote-options .quote-check { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--text); }
.quote-fields .quote-check { align-self: end; min-height: 44px; }
.quote-check input { width: auto; min-height: 0; accent-color: white; }
.quote-options { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; margin: 4px 0 18px; }
.quote-wide { display: grid; gap: 7px; font-size: 12px; color: var(--muted); margin-bottom: 4px; }
.quote-wide textarea { width: 100%; min-width: 0; border: 1px solid var(--line); border-radius: 3px; padding: 10px 12px; background: var(--surface); color: var(--text); font: inherit; font-size: 14px; resize: vertical; }
.quote-fields input:disabled { opacity: .4; }
@media (min-width: 651px) { .legs-search { grid-template-columns: 1.3fr 1.3fr 1fr 1fr 1fr auto; } }
@media (max-width: 900px) { .quote-options { grid-template-columns: 1fr; } }
/* 09/11 — section « Every airport, on one map » (aperçu cliquable → /airports/) + lien du journal */
.atlas { padding: 20px var(--pad) 90px; }
.atlas-card { position: relative; display: block; overflow: hidden; border: 1px solid var(--line); border-radius: 8px; aspect-ratio: 16 / 5.6; background: var(--night-2); } /* 09/11 : légèrement réduite (sa demande), était 16 / 7 */
.atlas-card img { width: 100%; height: 100%; object-fit: cover; display: block; filter: saturate(.85); transition: transform .8s ease; }
.atlas-card:hover img { transform: scale(1.03); }
.atlas-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(15,15,21,0) 45%, rgba(15,15,21,.85)); pointer-events: none; }
.atlas-cta { position: absolute; z-index: 1; left: 24px; bottom: 22px; display: inline-flex; gap: 8px; align-items: center; padding: 12px 22px; border-radius: 999px;
             background: var(--ink); color: var(--paper); font-size: 14px; font-weight: 600; }
.atlas-credit { margin-top: 10px; font-size: 11px; font-weight: 300; color: var(--muted); }
.journal-head .journal-all { justify-self: start; align-self: end; }
@media (max-width: 650px) { .atlas-card { aspect-ratio: 4 / 3; } }
/* 09/11 — sélecteur de langue EN | FR et bandeau de suggestion */
.lang-switch { position: absolute; top: 26px; right: var(--pad, 32px); z-index: 60; display: flex; gap: 2px; font-size: 12px; font-weight: 600; letter-spacing: .12em; }
.lang-switch a { color: var(--on-photo, #F8F9F9); text-decoration: none; padding: 6px 8px; border-radius: 999px; opacity: .6; }
.lang-switch a:hover { opacity: 1; }
.lang-switch a[aria-current="page"] { opacity: 1; background: rgba(248,249,249,.14); }
.lang-suggest { position: fixed; z-index: 1200; left: 50%; bottom: 20px; transform: translateX(-50%); display: flex; gap: 14px; align-items: center; flex-wrap: wrap; justify-content: center;
  padding: 12px 16px; border-radius: 999px; background: rgba(21,26,34,.96); border: 1px solid rgba(248,249,249,.18); color: #F8F9F9; font-size: 13px; box-shadow: 0 10px 30px rgba(0,0,0,.35); max-width: calc(100% - 32px); }
.lang-suggest p { margin: 0; }
.lang-suggest .ls-oui { padding: 8px 14px; border-radius: 999px; background: #F8F9F9; color: #0F0F15; font-weight: 600; text-decoration: none; }
.lang-suggest .ls-non { background: none; border: 0; color: #B4B4B2; font: inherit; cursor: pointer; text-decoration: underline; }
@media (max-width: 600px) { .lang-suggest { border-radius: 12px; bottom: 12px; } .lang-switch { top: 18px; } }
/* 09/11 — Bible §3 (Anthony) : la section d'intro est placée AVANT le héro dans le code source (texte SEO en haut),
   et remise visuellement sous le héro par l'ordre flex. Le visiteur ne voit aucune différence. */
body { display: flex; flex-direction: column; }
body > .hero { order: -1; }


/* 09/11 — lien « estimer depuis ici » par aérodrome (largeurs d'origine remises à sa demande) */
.corridor .corridor-src { margin-top: 26px; }
.fields .go { display: table; margin-top: 10px; font-size: 13px; font-weight: 500; color: var(--ink); text-decoration: none; border-bottom: 1px solid rgba(248,249,249,.35); padding-bottom: 2px; }
.fields .go:hover { border-bottom-color: rgba(248,249,249,.8); }

/* 09/11 — carte de l'accueil : des aéroports s'allument un par un, comme des feux de piste (son idée n°3). SVG pur, aucun script, aucune ligne. */
.atlas-feux { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.atlas-feux circle { fill: url(#feu); opacity: 0; animation: feu 12s ease-in-out infinite; }
@keyframes feu { 0%, 100% { opacity: 0; } 12% { opacity: 1; } 30% { opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .atlas-feux { display: none; } }

/* 09/11 — en-têtes « Tous les aéroports » et « Trajets populaires » : le titre tenait dans 26ch (≈230 px) → 4 lignes et un grand vide.
   Titre sur 2 lignes, texte aligné sur sa base ; l'en-tête de la carte suit la carte centrée. */
.popular-head { grid-template-columns: minmax(0, 560px) minmax(0, 480px); align-items: end; column-gap: 56px; }
.popular-head p { font-size: 15px; line-height: 1.6; margin: 0; }
@media (max-width: 900px) { .popular-head { grid-template-columns: 1fr; row-gap: 14px; } }

/* 09/11 — menu déroulant des aéroports (départ / arrivée), posé dans <body> par extras.js */
.ap-menu { position: fixed; z-index: 1200; max-height: min(380px, 60vh); overflow-y: auto; padding: 6px; border: 1px solid rgba(248, 249, 249, .14); border-radius: 8px;
  background: #151A22; box-shadow: 0 18px 50px rgba(0, 0, 0, .45); color: #F8F9F9; font-family: inherit; }
.ap-menu[hidden] { display: none; }
.ap-grp { margin: 8px 10px 4px; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: #B4B4B2; }
.ap-opt { display: grid; grid-template-columns: auto 1fr auto; gap: 10px; align-items: baseline; width: 100%; padding: 10px; border: 0; border-radius: 6px;
  background: none; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.ap-opt b { font-size: 14px; font-weight: 500; }
.ap-opt span { font-size: 13px; font-weight: 300; color: #B4B4B2; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ap-opt em { font-style: normal; font-size: 12px; letter-spacing: .08em; color: #B4B4B2; }
.ap-opt.on, .ap-opt:hover { background: rgba(248, 249, 249, .08); }
.ap-vide { margin: 10px; font-size: 13px; color: #B4B4B2; }
.ap-menu { scrollbar-width: thin; scrollbar-color: rgba(248, 249, 249, .25) transparent; }
.hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.fields .field a.af-link { color: inherit; text-decoration: none; border-bottom: 1px solid rgba(248,249,249,.35); } .fields .field a.af-link:hover { border-bottom-color: rgba(248,249,249,.8); }
