@import url('https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,400;9..40,500;9..40,600;9..40,700;9..40,800&family=Playfair+Display:ital,wght@0,600;0,700;1,600&display=swap');
:root { --r-xs:4px; --r-sm:8px; --r-md:12px; --r-lg:16px; --r-pill:999px; --ink:#102a43; --muted:#52677d; --cream:#f3f6f9; --paper:#ffffff; --coral:#ff6a13; --mint:#eaf0f6; --line:#d8e2ec; --gold:#fff0e8; --lagoon:#244d73; --success:#2f7d5a; --danger:#b83a2d; }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
.embedded-mobile-preview { scrollbar-width:none; }
.embedded-mobile-preview::-webkit-scrollbar { display:none; }
body { margin:0; color:var(--ink); background:var(--cream); font-family:"DM Sans", Arial, sans-serif; -webkit-font-smoothing:antialiased; }
.skip-link { position:fixed; z-index:200; top:-60px; left:12px; padding:10px 14px; border-radius:var(--r-sm); background:var(--ink); color:#fff; font-size:13px; font-weight:700; text-decoration:none; }
.skip-link:focus { top:12px; outline:3px solid var(--coral); outline-offset:2px; }
button, input, select { font:inherit; }
button { cursor:pointer; }
.site-header { position:relative; display:flex; align-items:center; width:100%; height:82px; margin:0; padding:0 max(24px,calc((100vw - 1180px) / 2)); background:var(--ink); }
@media (max-width:760px) { .site-header { height:64px; padding:0 16px; } }
.brand { position:static; flex:0 0 auto; color:#fff; text-decoration:none; font-size:27px; font-weight:700; letter-spacing:-1.8px; }
.brand span { color:var(--coral); }
.header-note { color:var(--muted); font-size:14px; margin-left:auto; margin-right:20px; }
.regional-settings { margin-left:0; border:0; background:transparent; color:var(--muted); padding:7px 12px; font-size:12px; font-weight:700; white-space:nowrap; }
.regional-settings:hover { color:var(--ink); }
main { width:min(1180px, calc(100% - 48px)); margin:auto; padding-bottom:80px; }
.hero { padding:34px 0 28px; max-width:640px; }
.eyebrow { color:var(--coral); font-size:11px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; margin:0 0 14px; }
h1,h2 { letter-spacing:-.045em; margin:0; }
h1 { font-family:"Playfair Display", Georgia, serif; font-size:clamp(42px, 5.8vw, 68px); line-height:1; font-weight:600; }
h1 em { color:var(--coral); font-weight:600; }
.hero-copy { color:var(--muted); font-size:17px; line-height:1.5; max-width:520px; margin:17px 0 0; }
.search-card { background:var(--paper); box-shadow:0 16px 50px rgba(34,47,43,.08); border:1px solid rgba(29,46,45,.08); padding:34px; }
.search-heading { display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:27px; }
.search-heading .eyebrow { margin-bottom:8px; }
h2 { font-size:27px; line-height:1.1; }
.people-badge { background:var(--mint); color:var(--ink); padding:7px 10px; border-radius:var(--r-lg); font-size:13px; font-weight:600; }
.origins { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); }.bar-origins.three { grid-template-columns:repeat(3, minmax(0, 1fr)) !important; grid-auto-flow:column; }
.field { display:block; }
.field span { display:block; color:var(--muted); font-size:11px; font-weight:600; letter-spacing:.05em; margin:0 0 7px; }
.flight-person-header span, .flight-leg-label { font-family:"DM Sans", Arial, sans-serif; font-weight:600; }

/* The full price area is the booking action, not only its label. */
.detail-page .flight-price { grid-column:4; grid-row:1 / span 2; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:9px; color:var(--ink); text-align:center; text-decoration:none; }
.detail-page .flight-person.one-way .flight-price { grid-column:3; grid-row:1; }
.detail-page .flight-price .booking-label { display:inline-flex; align-items:center; justify-content:center; min-width:120px; min-height:36px; padding:8px 12px; background:var(--ink); color:#fff; font-size:12px; font-weight:700; }
.detail-page .flight-price:hover { background:var(--mint); }
@media (max-width:760px) { .detail-page .flight-price, .detail-page .flight-person.one-way .flight-price { display:flex; flex-direction:column; align-items:center; padding:16px; } }
select,input { width:100%; background:#fff; border:1px solid var(--line); color:var(--ink); padding:13px 12px; min-height:49px; border-radius:var(--r-xs); outline-color:var(--coral); }
.search-toolbar { display:flex; gap:9px; margin-bottom:9px; }.toolbar-select select { min-height:36px; width:auto; padding:7px 10px; border-radius:var(--r-lg); background:var(--ink); border-color:var(--ink); color:#fff; font-size:13px; font-weight:600; }
.comparator-bar { display:grid; grid-template-columns:2.1fr 1.4fr 1fr 1fr auto; align-items:stretch; background:white; border-radius:var(--r-sm); overflow:visible; }.bar-origins { min-width:0; }.bar-origins .field { padding:13px 14px; border:1px solid var(--line); }.bar-origins .field + .field { border-left:0; }.bar-origins select,.bar-field input { min-height:22px; padding:0; border:0; border-radius:0; background:transparent; font-size:15px; font-weight:600; }.bar-field { position:relative; min-width:0; padding:13px 14px; border:1px solid var(--line); border-left:0; }.bar-field .field span { margin-bottom:7px; }.destination-field input { font-weight:400; }.destination-field input::placeholder { color:#87928f; }.suggestions { position:absolute; z-index:5; top:calc(100% + 7px); left:-1px; width:min(390px, 100vw - 48px); padding:7px; margin:0; list-style:none; background:white; border:1px solid var(--line); border-radius:var(--r-sm); box-shadow:0 16px 35px rgba(20,34,31,.18); }.suggestion { padding:10px 12px; cursor:pointer; border-radius:var(--r-xs); }.suggestion:hover { background:#f4f5f0; }.suggestion strong,.suggestion small { display:block; }.suggestion small { color:var(--muted); margin-top:2px; }
.suggestions { color:var(--ink); }
.suggestion strong { color:var(--ink); }
.suggestion.is-active { background:#eef0ea; }
.suggestion-code { color:var(--muted); font-weight:700; font-size:12px; }
.suggestions { z-index:25; width:min(470px,calc(100vw - 32px)); max-height:min(580px,70vh); overflow:auto; padding:7px; border-radius:var(--r-md); box-shadow:0 18px 42px rgba(16,42,67,.2); }
.suggestion,.suggestion-location { display:flex; align-items:center; gap:13px; padding:12px; cursor:pointer; border-radius:var(--r-sm); }
.suggestion:hover,.suggestion-location:hover,.suggestion.is-active { background:#f2f6f9; }
.suggestion-shell { position:relative; display:flex; align-items:stretch; margin:0; padding-left:calc(var(--suggestion-depth,0) * 28px); border-radius:var(--r-sm); }
.suggestion-shell > .suggestion { flex:1; min-width:0; }
.suggestion-child::before { content:""; position:absolute; left:19px; top:0; bottom:0; width:1px; background:var(--line); }
.suggestion-copy { min-width:0; }
.suggestion-copy strong,.suggestion-copy small { display:block; }
.suggestion-copy strong { color:var(--ink); font-size:15px; letter-spacing:0; }
.suggestion-copy small { color:var(--muted); margin-top:3px; font-size:12px; letter-spacing:0; }
.suggestion-icon { flex:0 0 24px; width:24px; height:24px; color:var(--ink); }
.suggestion-plane { width:24px; height:24px; }
.suggestion-plane--departure { transform:rotate(45deg); }
.suggestion-plane--destination { transform:rotate(135deg); }
.suggestion-flag { height:18px; object-fit:cover; border-radius:var(--r-xs); box-shadow:0 0 0 1px rgba(16,42,67,.12); }
.suggestion-world { margin-bottom:4px; background:#f7f9fb; }
.suggestion-section { margin:5px 6px 2px; padding:10px 6px 6px; border-top:1px solid var(--line); color:var(--muted); font-size:11px; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.suggestion-section:first-child { margin-top:0; padding-top:5px; border-top:0; }
.suggestion-location { margin-bottom:4px; border-bottom:1px solid var(--line); border-radius:var(--r-sm) var(--r-sm) 0 0; }
.suggestion-location.is-loading { opacity:.65; cursor:wait; }
.place-field { position:relative; }
.bar-origins .field input { width:100%; min-height:22px; padding:0; border:0; border-radius:0; background:transparent; font-size:15px; font-weight:400; color:var(--ink); }
.selected-place-icon { position:absolute; z-index:1; left:14px; top:calc(50% + 8px); display:grid; place-items:center; width:18px; height:18px; color:var(--ink); pointer-events:none; transform:translateY(-50%); }
.selected-place-icon .suggestion-icon { width:18px; height:18px; flex:0 0 18px; }
.selected-place-icon .suggestion-flag { height:auto; }
.place-field.has-selected-place input { padding-left:27px!important; }
.bar-origins .field input::placeholder { color:#87928f; }
.has-three-origins .comparator-bar { grid-template-columns:2.7fr 1.25fr .95fr .95fr auto; }.bar-origins .field { min-width:0; display:flex; flex-direction:column; justify-content:center; }.bar-origins .field > span { min-height:14px; }
.add-origin { border:0; background:none; color:var(--lagoon); font-size:14px; padding:0; font-weight:600; }
.add-origin span { font-size:19px; padding-right:4px; }
.add-origin small { color:var(--muted); font-weight:400; }
.bar-origins .field > span { position:relative; display:flex; align-items:center; height:14px; min-height:14px; margin-bottom:7px; line-height:14px; }.bar-origins select { display:block; height:20px; min-height:20px; line-height:20px; }.removable-origin > span { justify-content:space-between; gap:8px; }.remove-origin { position:absolute; right:0; top:50%; transform:translateY(-50%); border:0; background:transparent; color:var(--coral); padding:0; font-family:"DM Sans",Arial,sans-serif; font-size:20px; font-weight:400; line-height:1; }
.is-hidden { display:none; }.search-options { display:flex; align-items:center; gap:25px; padding-top:13px; }
.search-button { border:0; margin-left:0; padding:0 24px; color:white; background:var(--coral); border-radius:var(--r-sm); font-weight:700; transition:background-color .2s ease, box-shadow .2s ease; }
.search-button:hover { background:var(--ink); box-shadow:0 10px 24px rgba(16,42,67,.2); }
.search-button { display:flex; align-self:stretch; align-items:center; justify-content:center; text-align:center; }
.search-button span { color:inherit; margin:0; font-size:inherit; }
.form-footnote { color:var(--muted); font-size:12px; margin:15px 0 0; }
.results { margin-top:80px; }
.results-topline { display:flex; justify-content:space-between; align-items:flex-end; gap:24px; margin-bottom:24px; }
.results-topline .eyebrow { margin-bottom:8px; }.results-subtitle { margin:8px 0 0; color:var(--muted); }
.sort-control { min-width:205px; }.sort-control label { display:block; color:var(--muted); font-size:12px; margin-bottom:4px; }
.sort-control select { min-height:42px; padding:8px; }
.filters-panel { margin:0 0 24px; border:1px solid var(--line); background:var(--paper); }.filters-panel > summary { display:flex; align-items:center; min-height:50px; padding:0 16px; color:var(--ink); cursor:pointer; font-size:1rem; font-weight:700; list-style:none; }.filters-panel > summary::-webkit-details-marker { display:none; }.filters-panel > summary::after { content:"+"; margin-left:auto; color:var(--coral); font-size:20px; font-weight:400; }.filters-panel[open] > summary { border-bottom:1px solid var(--line); }.filters-panel[open] > summary::after { content:"–"; }.filters-panel > summary #filters-count { color:var(--muted); font-size:12px; font-weight:500; margin-left:4px; }.filters-content { display:flex; align-items:flex-end; gap:12px; padding:16px; }.filter-field { position:relative; display:flex; flex:1; min-width:150px; flex-direction:column; gap:4px; color:var(--muted); font-size:12px; }.filter-label { min-height:15px; color:var(--muted); font-size:12px; line-height:15px; }.filter-field input { min-height:42px; margin:0; padding:8px 32px 8px 8px; }.filter-suffix { position:absolute; right:11px; bottom:12px; color:var(--muted); font-size:12px; pointer-events:none; }.origin-budget-filters { display:contents; }.clear-filters { min-height:42px; padding:0 12px; border:1px solid var(--line); background:transparent; color:var(--muted); font-size:12px; white-space:nowrap; }.clear-filters:hover { border-color:var(--coral); color:var(--coral); }.no-results { grid-column:1 / -1; display:flex; align-items:center; flex-direction:column; gap:8px; margin:0; padding:32px 20px; border:1px dashed var(--line); color:var(--muted); text-align:center; }.no-results strong { color:var(--ink); font-size:18px; }.no-results span { max-width:520px; }.no-results button { min-height:42px; margin-top:8px; padding:0 16px; border:1px solid var(--ink); border-radius:var(--r-pill); background:var(--ink); color:white; font-weight:700; cursor:pointer; }.no-results button:hover,.no-results button:focus-visible { background:var(--coral); border-color:var(--coral); }.no-results-actions { display:flex; flex-wrap:wrap; justify-content:center; gap:10px; }.price-pending { color:var(--muted); font-size:13px; font-weight:600; letter-spacing:.01em; }.flight-leg-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:10px; }.flight-airline { display:inline-flex; align-items:center; gap:7px; color:var(--ink); font-size:13px; font-weight:600; }.airline-badge { display:inline-flex; align-items:center; justify-content:center; width:26px; height:26px; border-radius:8px; background:hsl(var(--teinte) 62% 92%); color:hsl(var(--teinte) 58% 28%); font-size:11px; font-weight:800; letter-spacing:.02em; }.flight-endpoint { display:flex; flex-direction:column; gap:1px; min-width:0; }.flight-endpoint-end { text-align:right; align-items:flex-end; }.flight-place { color:var(--ink); font-size:13px; font-weight:600; }.flight-country { color:var(--muted); font-size:11px; }.flight-line-duration { display:block; color:var(--ink); font-size:12px; font-weight:700; }.flight-line-stops { display:block; color:var(--muted); font-size:11px; }.flight-line-stops.is-direct { color:#1f7a54; font-weight:700; }.flight-line-stops.has-stops { color:#a35a07; font-weight:700; }.flight-line-pending { color:var(--muted); font-size:12px; }.flight-layovers { margin:10px 0 0; color:var(--muted); font-size:12px; }.detail-filters { margin:22px 0 0; }.detail-filters-content { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); align-items:start; column-gap:20px; row-gap:16px; padding:16px 18px 18px; }.detail-filters-content > .filter-field { grid-column:span 3; }.detail-filters-content > .time-filters { grid-column:1 / -1; }.detail-filters-content > .detail-filter-actions { grid-column:1 / -1; }.detail-filter-times { grid-column:1 / -1; }.detail-filter-times h2 { margin:0 0 10px; color:var(--ink); font-size:14px; }.detail-filter-origin { margin:0 0 10px; padding:10px 12px; border:1px solid var(--line); border-radius:var(--r-xs); }.detail-filter-origin h3 { margin:0 0 8px; color:var(--ink); font-size:13px; }.detail-filter-row { display:flex; align-items:center; gap:8px; color:var(--muted); font-size:12px; }.detail-filter-row + .detail-filter-row { margin-top:8px; }.detail-filter-row > span { flex:0 0 68px; }.detail-filter-row input { min-height:38px; padding:0 8px; border:1px solid var(--line); border-radius:var(--r-xs); background:white; color:var(--ink); font-size:13px; }.detail-filter-actions { grid-column:1 / -1; display:flex; flex-wrap:wrap; align-items:center; gap:12px; }.detail-filters button[data-refresh-detail] { min-height:44px; padding:0 18px; border:0; border-radius:var(--r-pill); background:var(--ink); color:white; font-weight:700; cursor:pointer; }.detail-filters button[data-refresh-detail]:hover { background:var(--coral); }.detail-filters button[data-refresh-detail][disabled] { opacity:.6; cursor:progress; }.detail-filter-status { margin:0; color:var(--muted); font-size:12px; }.load-more { grid-column:1 / -1; display:flex; justify-content:center; padding:8px 0 4px; }.load-more p { margin:0; color:var(--muted); font-size:13px; }.load-more button { min-height:46px; padding:0 22px; border:1px solid var(--line); border-radius:var(--r-pill); background:var(--paper); color:var(--ink); font-size:14px; font-weight:700; cursor:pointer; }.load-more button:hover,.load-more button:focus-visible { border-color:var(--coral); color:var(--coral); }.load-more button[disabled] { opacity:.6; cursor:progress; }.no-results button[disabled] { opacity:.6; cursor:progress; }.no-results button.ghost { border-color:var(--line); background:transparent; color:var(--muted); font-weight:600; }.no-results button.ghost:hover,.no-results button.ghost:focus-visible { border-color:var(--coral); background:transparent; color:var(--coral); }
.destination-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:16px; }
.destination-card { position:relative; overflow:hidden; background:var(--paper); border:1px solid var(--line); box-shadow:0 6px 18px rgba(34,47,43,.045); transition:transform .2s, box-shadow .2s; cursor:pointer; }.destination-card:hover { transform:translateY(-3px); box-shadow:0 14px 30px rgba(34,47,43,.12); }.destination-card:focus-visible,.destination-card:has(.detail-link:focus-visible) { outline:3px solid var(--coral); outline-offset:3px; }
/* Lien étendu sur toute la tuile : un clic n'importe où ouvre le détail, et le clavier comme
   les lecteurs d'écran gardent un vrai lien. Les boutons partager/favori restent au-dessus. */
.detail-link { position:absolute; z-index:1; inset:0; outline:none; }.destination-card .destination-photo { z-index:2; }
.destination-photo { min-height:174px; padding:16px; display:flex; flex-direction:column; justify-content:flex-end; color:white; background-position:center; background-size:cover; position:relative; isolation:isolate; }.destination-photo { background-image:linear-gradient(140deg,#24405c,#3c6484); }.destination-photo-image { position:absolute; inset:0; z-index:0; width:100%; height:100%; object-fit:cover; }.destination-photo-image.is-failed { display:none; }.destination-photo::after { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(180deg,rgba(15,24,23,.04) 36%,rgba(15,24,23,.74) 100%); }.destination-photo h3 { position:relative; z-index:1; font-family:"Playfair Display",Georgia,serif; letter-spacing:-.03em; font-size:28px; margin:0; line-height:1; text-shadow:0 1px 12px rgba(12,24,36,.55); }.destination-photo::after { content:""; position:absolute; inset:auto 0 0; z-index:0; height:60%; background:linear-gradient(to top, rgba(12,24,36,.72), rgba(12,24,36,0)); pointer-events:none; }
.fares { display:grid; grid-template-columns:repeat(2,1fr); padding:10px 10px 0; gap:8px; background:var(--paper); }.fares-3 { grid-template-columns:repeat(3,minmax(0,1fr)); }.fare { min-width:0; padding:10px 12px; border-radius:var(--r-xs); background:#f3f6f9; }.fares-3 .fare { padding:10px 8px; }.fare-label { display:block; color:var(--muted); font-size:12px; margin-bottom:5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.fare-price { display:block; color:var(--ink); font-size:22px; line-height:1; letter-spacing:-.035em; font-weight:800; white-space:nowrap; }.fare-duration { display:block; color:var(--muted); font-size:11px; margin-top:6px; white-space:nowrap; }.card-summary { display:flex; align-items:center; justify-content:space-between; margin:8px 10px 10px; padding:10px 12px; gap:8px; border-radius:var(--r-xs); background:#fff3e9; }.card-summary span { color:var(--ink); font-size:12px; font-weight:700; }.card-summary strong { margin-left:auto; color:var(--ink); font-size:23px; letter-spacing:-.035em; white-space:nowrap; }.card-summary .summary-chevron { display:grid; flex:none; place-items:center; margin-right:-4px; color:var(--coral); transition:transform .2s ease; }.summary-chevron svg { width:18px; height:18px; }.destination-card:hover .summary-chevron { transform:translateX(3px); }
.sponsored-card { overflow:hidden; display:flex; min-height:100%; flex-direction:column; border:1px solid var(--line); border-radius:var(--r-md); background:var(--paper); box-shadow:0 6px 18px rgba(34,47,43,.045); }
.sponsored-card-visual { position:relative; display:flex; min-height:174px; align-items:center; justify-content:center; overflow:hidden; background:linear-gradient(145deg,#102a43 0%,#174d63 52%,#d9efe7 100%); color:#fff; }
.sponsored-card-visual::before,.sponsored-card-visual::after { content:""; position:absolute; border:1px solid rgba(255,255,255,.24); border-radius:50%; }
.sponsored-card-visual::before { width:220px; height:220px; left:-72px; bottom:-152px; }
.sponsored-card-visual::after { width:150px; height:150px; right:-54px; top:-82px; }
.sponsored-card-mark,.sponsored-card-pin { position:relative; z-index:1; display:grid; place-items:center; border-radius:50%; }
.sponsored-card-mark { width:58px; height:58px; background:var(--coral); font-family:"Playfair Display",Georgia,serif; font-size:28px; font-weight:700; }
.sponsored-card-pin { width:34px; height:34px; background:#fff; color:var(--coral); font-size:16px; }
.sponsored-card-route { width:84px; height:1px; border-top:1px dashed rgba(255,255,255,.78); }
.sponsored-card-body { flex:1; padding:17px 18px 18px; }
.sponsored-card-label { display:block; margin-bottom:9px; color:var(--muted); font-family:"DM Mono",monospace; font-size:10px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.sponsored-card-body h3 { margin:0; color:var(--ink); font-family:"Playfair Display",Georgia,serif; font-size:25px; line-height:1.05; }
.sponsored-card-body p { margin:10px 0 0; color:var(--muted); font-size:13px; line-height:1.45; }
.sponsored-card-foot { display:flex; min-height:45px; align-items:center; justify-content:space-between; padding:10px 14px; border-top:1px solid var(--line); color:var(--muted); font-size:11px; font-weight:650; }
.sponsored-card-foot span:last-child { color:var(--coral); font-size:17px; }
.data-note { color:var(--muted); font-size:12px; margin-top:13px; }
dialog { border:0; max-width:510px; padding:34px; color:var(--ink); box-shadow:0 20px 70px rgba(0,0,0,.2); }.dialog-close { position:absolute; right:14px; top:10px; border:0; background:none; font-size:28px; color:var(--muted); }dialog p:not(.eyebrow) { line-height:1.55; color:var(--muted); }dialog::backdrop { background:rgba(21,34,32,.45); }
.flight-dialog { width:min(960px, calc(100% - 32px)); max-width:960px; padding:0; background:var(--cream); }.flight-dialog::backdrop { background:rgba(15,27,25,.56); }.flight-dialog .dialog-close { z-index:2; color:white; top:16px; right:18px; }.flight-dialog-header { position:relative; min-height:210px; padding:34px; display:flex; flex-direction:column; justify-content:flex-end; color:white; background-size:cover; background-position:center; isolation:isolate; }.flight-dialog-header::before { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(180deg,rgba(12,24,22,.15),rgba(12,24,22,.8)); }.flight-dialog-header h2 { font-family:"Playfair Display",Georgia,serif; font-size:42px; }.flight-dialog-header p { margin:8px 0 0; color:white; opacity:.9; }.flight-list { padding:24px; display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:16px; }.flight-person { background:var(--paper); border:1px solid var(--line); }.flight-person-header { display:flex; justify-content:space-between; align-items:baseline; padding:17px 18px; border-bottom:1px solid var(--line); }.flight-person-header h3 { margin:0; font-size:17px; }.flight-person-header span { color:var(--muted); font-family:"DM Mono",monospace; font-size:11px; }.flight-leg { padding:16px 18px; border-bottom:1px solid var(--line); }.flight-leg-label { display:block; color:var(--muted); font-family:"DM Mono",monospace; font-size:10px; text-transform:uppercase; letter-spacing:.06em; margin-bottom:12px; }.flight-route { display:grid; grid-template-columns:1fr auto 1fr; gap:10px; align-items:center; }.flight-time { font-size:21px; font-weight:700; letter-spacing:-.04em; }.flight-airport { display:block; color:var(--muted); font-size:12px; margin-top:2px; }.flight-route-end { text-align:right; }.flight-line { min-width:52px; color:var(--muted); font-size:10px; text-align:center; border-top:1px solid #aeb9b5; padding-top:6px; }.flight-meta { padding:13px 18px; display:flex; justify-content:space-between; color:var(--muted); font-size:12px; }.flight-price { padding:17px 18px; display:flex; align-items:baseline; justify-content:space-between; background:#fffaf0; }.flight-price span { color:var(--muted); font-size:12px; }.flight-price strong { font-size:23px; letter-spacing:-.04em; }.flight-note { padding:0 24px 25px; margin:0; color:var(--muted); font-size:12px; }
.details-main { width:min(1100px, calc(100% - 48px)); margin:0 auto 80px; }.back-link { display:inline-flex; margin:25px 0 16px; padding:0; border:0; background:none; color:var(--ink); font-weight:600; text-decoration:none; }.back-link:hover { color:var(--coral); }.detail-page { background:var(--cream); }.detail-page-header { min-height:250px; padding:38px; display:flex; flex-direction:column; justify-content:flex-end; color:white; background-size:cover; background-position:center; position:relative; isolation:isolate; }.detail-page-header::before { content:""; position:absolute; inset:0; z-index:-1; background:linear-gradient(180deg,rgba(12,24,22,.16),rgba(12,24,22,.8)); }.detail-page-header p { align-self:flex-start; margin:0 0 10px; padding:6px 9px; background:rgba(12,24,22,.72); border-radius:var(--r-xs); color:#fff; font-size:13px; font-weight:600; }.detail-page-header h1 { font-size:52px; text-shadow:0 2px 16px rgba(0,0,0,.35); }.detail-summary { display:flex; align-items:baseline; gap:10px; padding:19px 24px; background:var(--paper); border:1px solid var(--line); }.detail-summary span { color:var(--muted); font-size:13px; }.detail-summary strong { font-size:24px; letter-spacing:-.04em; margin-left:auto; }.flight-person-header h2 { margin:0; font-size:17px; }
.detail-page .flight-list { grid-template-columns:1fr; gap:12px; padding:10px 0 24px; }.detail-page .flight-person { display:grid; grid-template-columns:180px minmax(0,1fr) minmax(0,1fr) 180px; }.detail-page .flight-person-header { grid-column:1; grid-row:1 / span 2; flex-direction:column; align-items:flex-start; justify-content:center; gap:7px; border-bottom:0; border-right:1px solid var(--line); }.detail-page .flight-leg { border-bottom:0; border-right:1px solid var(--line); }.detail-page .flight-leg:nth-child(2) { grid-column:2; grid-row:1 / span 2; }.detail-page .flight-leg:nth-child(3) { grid-column:3; grid-row:1 / span 2; }.detail-page .flight-meta { grid-column:4; grid-row:1; padding:16px 18px 8px; flex-direction:column; align-items:flex-end; justify-content:center; gap:4px; }.detail-page .flight-price { grid-column:4; grid-row:2; padding:8px 18px 16px; flex-direction:column; align-items:flex-end; justify-content:center; gap:7px; background:#fffaf0; }.booking-link { display:inline-flex; align-items:center; justify-content:center; min-width:120px; padding:9px 12px; background:var(--ink); color:#fff; text-decoration:none; font-size:12px; font-weight:700; }.booking-link:hover { background:var(--coral); }.detail-page .flight-person.one-way { grid-template-columns:180px minmax(0,1fr) 180px; }.detail-page .flight-person.one-way .flight-leg:nth-child(2) { grid-column:2; }.detail-page .flight-person.one-way .flight-meta { grid-column:3; grid-row:1; }.detail-page .flight-person.one-way .flight-price { grid-column:3; grid-row:2; }
@media (max-width:900px) { .destination-grid { grid-template-columns:repeat(2, minmax(0,1fr)); } }
@media (max-width:900px) { .comparator-bar { grid-template-columns:repeat(2, minmax(0,1fr)); gap:8px; background:transparent; }.bar-origins { grid-column:span 2; }.bar-field,.bar-origins .field,.bar-origins .field + .field { border:1px solid var(--line); background:white; border-radius:var(--r-xs); }.search-button { min-height:50px; margin:0; }.destination-grid { grid-template-columns:repeat(2, minmax(0,1fr)); } }
@media (max-width:700px) { main { width:min(100% - 30px, 1180px); }.header-note { display:none; }.hero { padding:42px 0 34px; }.search-card { padding:22px; }.origins,.origins.three,.comparator-bar,.destination-grid { grid-template-columns:1fr; }.bar-origins { grid-column:auto; }.bar-origins .field + .field { border-top:0; }.search-toolbar,.search-options { flex-wrap:wrap; }.results { margin-top:58px; }.results-topline { align-items:stretch; flex-direction:column; }.sort-control { width:100%; }.hero-copy { font-size:16px; } }
@media (max-width:760px) { .details-main { width:min(100% - 30px,1100px); }.detail-page-header { min-height:200px; padding:24px; }.detail-page-header h1 { font-size:40px; }.detail-page .flight-person,.detail-page .flight-person.one-way { display:block; }.detail-page .flight-person-header,.detail-page .flight-leg { border-right:0; border-bottom:1px solid var(--line); }.detail-page .flight-meta,.detail-page .flight-price { align-items:stretch; flex-direction:row; }.detail-page .flight-price { align-items:baseline; } }

/* Desktop control that gives the home page a phone-sized canvas. */
html:has(body.mobile-preview) { height:100%; overflow:hidden; background:#dce6ef; }
body.mobile-preview { width:min(430px,calc((100vh - 40px) * .5625)); height:min(764px,calc(100vh - 40px)); aspect-ratio:9 / 16; margin:20px auto; overflow-x:hidden; overflow-y:auto; overscroll-behavior:contain; border:8px solid #102a43; border-radius:34px; box-shadow:0 22px 70px rgba(16,42,67,.25); scrollbar-width:thin; }
body.mobile-preview .site-header { width:100%; height:64px; padding:0 16px; }
body.mobile-preview .header-note { display:none; }
body.mobile-preview main { width:100%; padding-bottom:40px; }
body.mobile-preview .hero { padding:23px 16px 26px; }
body.mobile-preview h1 { font-size:50px; line-height:.98; }
body.mobile-preview .hero-copy { margin-top:14px; font-size:15px; max-width:34ch; }
body.mobile-preview .search-card { padding:22px 16px 20px; border-width:1px 0; box-shadow:0 10px 28px rgba(16,42,67,.07); }
body.mobile-preview .search-heading { margin-bottom:20px; }
body.mobile-preview .search-toolbar { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-bottom:12px; }
body.mobile-preview .toolbar-select select { width:100%; min-height:42px; padding:8px 10px; font-size:12px; }
body.mobile-preview .comparator-bar { display:flex; flex-direction:column; gap:9px; }
body.mobile-preview .bar-origins { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
body.mobile-preview .bar-origins.three { grid-template-columns:1fr 1fr 1fr !important; gap:6px; }
body.mobile-preview .bar-origins .field, body.mobile-preview .bar-origins .field + .field, body.mobile-preview .bar-field { min-height:70px; padding:12px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--paper); }
body.mobile-preview .bar-origins .field + .field { border-top:1px solid var(--line); }
body.mobile-preview .bar-origins.three .field { padding:10px 8px; }
body.mobile-preview .bar-origins.three select { font-size:13px; }
body.mobile-preview .bar-field input, body.mobile-preview .bar-origins select { font-size:16px; }
body.mobile-preview .destination-field { order:0; }
body.mobile-preview .suggestions { position:fixed; z-index:120; top:var(--suggestions-top,80px); left:50%; right:auto; width:min(398px,calc((100vh - 40px) * .5625 - 24px)); max-height:calc(min(764px,100vh - 40px) - var(--suggestions-top,80px) + 10px); transform:translateX(-50%); }
body.mobile-preview .search-button { order:3; width:100%; min-height:56px; margin:2px 0 0; border-radius:var(--r-md); font-size:16px; }
body.mobile-preview .search-options { gap:18px; padding-top:15px; }
body.mobile-preview .results { margin:42px 16px 0; }
body.mobile-preview .results-topline { align-items:stretch; flex-direction:column; gap:18px; margin-bottom:18px; }
body.mobile-preview .sort-control { width:100%; }
body.mobile-preview .sort-control select { min-height:48px; border-radius:var(--r-sm); }
body.mobile-preview .destination-grid { grid-template-columns:1fr; gap:12px; }
body.mobile-preview .destination-card { border-radius:var(--r-md); box-shadow:0 5px 18px rgba(16,42,67,.07); }
body.mobile-preview .destination-photo { min-height:158px; }
body.mobile-preview .data-note { margin:13px 0; line-height:1.45; }
body.mobile-preview .filters-content { display:grid; grid-template-columns:1fr; gap:12px; }
body.mobile-preview .origin-budget-filters { display:grid; gap:12px; }
body.mobile-preview .clear-filters { width:100%; }
body.mobile-preview .details-main { width:100%; margin:0; padding-bottom:36px; }
body.mobile-preview .details-main .back-link { margin:16px; min-height:40px; }
body.mobile-preview .detail-page-header { min-height:190px; padding:22px 16px; }
body.mobile-preview .detail-page-header h1 { font-size:40px; }
body.mobile-preview .detail-summary { padding:16px; gap:7px; }
body.mobile-preview .detail-page .flight-list { padding:16px; gap:12px; }
body.mobile-preview .detail-page .flight-person, body.mobile-preview .detail-page .flight-person.one-way { display:block; border-radius:var(--r-md); overflow:hidden; box-shadow:0 3px 12px rgba(16,42,67,.045); }
body.mobile-preview .detail-page .flight-person-header, body.mobile-preview .detail-page .flight-leg { border-right:0; border-bottom:1px solid var(--line); padding:16px; }
body.mobile-preview .detail-page .flight-meta { min-height:42px; padding:12px 16px; align-items:center; background:#f8fbfd; }
body.mobile-preview .detail-page .flight-price { display:grid; grid-template-columns:1fr auto; gap:4px 12px; padding:14px 16px 16px; align-items:center; }
body.mobile-preview .detail-page .flight-price .booking-link { grid-column:1 / -1; width:100%; min-height:44px; margin-top:8px; border-radius:var(--r-sm); }
body.mobile-preview .flight-note { padding:0 16px 12px; }

/* Mobile-first app treatment: the form becomes a short vertical task and results favour one-thumb scanning. */
@media (max-width:600px) {
  body.home-page .site-header { width:100%; height:64px; padding:0 16px; background:var(--ink); }
  body.home-page .brand { color:#fff; }
  body.home-page .site-header .account-entry { display:grid; border-color:rgba(255,255,255,.45); color:#fff; }
  main { width:100%; padding-bottom:40px; display:flex; flex-direction:column; }
  .search-card { order:1; }
  .hero { order:2; padding:32px 16px 18px; }
  .results { order:3; }
  h1 { font-size:clamp(39px, 12vw, 52px); line-height:.98; }
  .hero-copy { margin-top:14px; font-size:15px; max-width:34ch; }
  .search-card { padding:22px 16px 24px; border:0; border-radius:0 0 var(--r-lg) var(--r-lg); background:var(--ink); box-shadow:0 10px 28px rgba(16,42,67,.18); }
  .search-card h2 { color:#fff; }
  .search-heading { margin-bottom:20px; }
  h2 { font-size:24px; }
  .search-toolbar { display:grid; grid-template-columns:1fr; gap:8px; margin-bottom:12px; }
  .toolbar-select select { width:100%; min-height:42px; padding:8px 10px; border-color:rgba(255,255,255,.7); background:#fff; color:var(--ink); font-size:12px; white-space:nowrap; }
  .comparator-bar { display:flex; flex-direction:column; gap:9px; }
  .bar-origins { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
  .bar-origins.three { grid-template-columns:1fr 1fr 1fr !important; gap:6px; }
  .bar-origins .field, .bar-origins .field + .field, .bar-field { min-height:70px; padding:12px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--paper); }
  .bar-origins .field + .field { border-top:1px solid var(--line); }
  .bar-origins.three .field { padding:10px 8px; }
  .bar-origins.three select { font-size:13px; }
  .bar-field { width:100%; }
  .bar-field input, .bar-origins select { font-size:16px; }
  .bar-origins .field > span, .bar-field .field span { margin-bottom:6px; }
  .destination-field { order:0; }
  .search-button { order:3; width:100%; min-height:56px; margin:2px 0 0; border-radius:var(--r-md); font-size:16px; }
  .search-options { gap:18px; padding-top:15px; }
  .add-origin { min-height:40px; }
  .suggestions { position:fixed; z-index:120; top:var(--suggestions-top,80px); left:16px; right:16px; width:auto; max-height:var(--suggestions-max-height,min(520px,calc(100dvh - var(--suggestions-top,80px) - 12px))); }
  .results { margin:42px 16px 0; }
  .results-topline { gap:18px; margin-bottom:18px; }
  .sort-control select { min-height:48px; border-radius:var(--r-sm); }
  .destination-grid { grid-template-columns:1fr; gap:12px; }
  .destination-card { border-radius:var(--r-md); box-shadow:0 5px 18px rgba(16,42,67,.07); }
  .destination-photo { min-height:158px; }
  .fare-price { font-size:19px; }
  .data-note { line-height:1.45; }
  .filters-content { display:grid; grid-template-columns:1fr; gap:12px; }
  .origin-budget-filters { display:grid; gap:12px; }
  .clear-filters { width:100%; }
  .details-main { width:100%; margin-bottom:36px; }
  .details-main .back-link { margin:16px; min-height:40px; }
  .detail-page-header { min-height:190px; padding:22px 16px; }
  .detail-page-header h1 { font-size:40px; }
  .detail-summary { padding:16px; gap:7px; }
  .detail-summary strong { font-size:22px; }
  .detail-summary span { font-size:12px; }
  .detail-page .flight-list { padding:16px; gap:12px; }
  .detail-page .flight-person { border-radius:var(--r-md); overflow:hidden; box-shadow:0 3px 12px rgba(16,42,67,.045); }
  .detail-page .flight-person-header { padding:16px; }
  .detail-page .flight-leg { padding:14px 16px; }
  .flight-time { font-size:22px; }
  .detail-page .flight-meta { min-height:42px; padding:12px 16px; align-items:center; background:#f8fbfd; }
  .detail-page .flight-price { display:grid; grid-template-columns:1fr auto; gap:4px 12px; padding:14px 16px 16px; align-items:center; }
  .detail-page .flight-price .booking-link { grid-column:1 / -1; width:100%; min-height:44px; margin-top:8px; border-radius:var(--r-sm); }
  .flight-note { padding:0 16px 12px; }
}

/* Keep all operational labels in the same sans-serif family. */
.flight-person-header span, .flight-leg-label { font-family:"DM Sans", Arial, sans-serif; font-weight:600; }

/* Final booking-card layout overrides, after desktop and mobile variants. */
.detail-page .flight-price { grid-column:4; grid-row:1 / span 2; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:9px; padding:16px; color:var(--ink); text-align:center; text-decoration:none; }
.detail-page .flight-person.one-way .flight-price { grid-column:3; grid-row:1; }
.detail-page .flight-price .booking-label { display:inline-flex; align-items:center; justify-content:center; min-width:120px; min-height:36px; padding:8px 12px; background:var(--ink); color:#fff; font-size:12px; font-weight:700; }
.detail-page .flight-price:hover { background:var(--mint); }
@media (max-width:760px) { .detail-page .flight-price, .detail-page .flight-person.one-way .flight-price { display:flex; flex-direction:column; align-items:center; } }

/* Booking action: uses the same warm-to-orange transition as the search action. */
.detail-page .flight-price { background:#fff6e8; color:var(--ink); cursor:pointer; transition:background-color .24s ease, color .24s ease, box-shadow .24s ease, transform .24s ease; }
.detail-page .flight-price span, .detail-page .flight-price strong { color:inherit; }
.detail-page .flight-price .booking-label { min-width:0; min-height:0; padding:0; background:transparent; border:0; border-radius:0; color:var(--coral); font-size:12px; transition:color .24s ease, transform .24s ease; }
.detail-page .flight-price:hover { background:var(--coral); color:#fff; box-shadow:inset 0 0 0 1px rgba(255,255,255,.1); }
.detail-page .flight-price:hover .booking-label { background:transparent; color:#fff; transform:translateX(4px); }
.detail-page .flight-price 
.detail-page .flight-price:hover 
.detail-page .flight-price:active { transform:scale(.98); }
.detail-page .flight-price:focus-visible { outline:3px solid var(--coral); outline-offset:-3px; }
@media (prefers-reduced-motion:reduce) { .detail-page .flight-price, .detail-page .flight-price .booking-label { transition:none; } }

/* Preserve the price as the visual centre of the booking area. */
.detail-page .flight-price { display:grid; grid-template-rows:1fr auto 1fr; justify-items:center; align-items:center; }
.detail-page .flight-price > span:first-child { align-self:end; }
.detail-page .flight-price > strong { align-self:center; }
.detail-page .flight-price .booking-label { align-self:start; }
@media (max-width:760px) { .detail-page .flight-price { grid-template-columns:1fr; width:100%; justify-items:center; } }

/* Compact price panel in both the real phone layout and the desktop phone preview. */
@media (max-width:760px) {
  .detail-page .flight-price { grid-template-columns:1fr; grid-template-rows:auto auto auto; gap:4px; min-height:94px; padding:12px 16px; }
}
body.mobile-preview .detail-page .flight-price {
  display:grid;
  grid-template-columns:1fr;
  grid-template-rows:auto auto auto;
  justify-items:center;
  align-items:center;
  gap:4px;
  min-height:94px;
  padding:12px 16px;
}
body.mobile-preview .detail-page .flight-price > span:first-child,
body.mobile-preview .detail-page .flight-price > strong,
body.mobile-preview .detail-page .flight-price .booking-label { grid-column:1; }

/* Pages publiques : un socle éditorial sobre pour la bêta et les partenaires. */
.public-main { width:min(920px, calc(100% - 48px)); margin:46px auto 78px; padding-bottom:0; }
.public-main h1 { max-width:780px; }
.public-intro { max-width:650px; margin:22px 0 42px; color:var(--muted); font-size:18px; line-height:1.55; }
.steps,.principles { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.steps article,.principles article,.policy-list article,.transparency-card { background:var(--paper); border:1px solid var(--line); border-radius:var(--r-md); padding:25px; }
.steps span { display:block; margin-bottom:28px; color:var(--coral); font-size:12px; font-weight:700; letter-spacing:.1em; }
.steps h2,.principles h2,.policy-list h2,.transparency-card h2 { font-size:20px; }
.steps p,.principles p,.policy-list p,.transparency-card p { margin:12px 0 0; color:var(--muted); font-size:15px; line-height:1.55; }
.principles { grid-template-columns:repeat(3,minmax(0,1fr)); }
.transparency-card { margin-top:16px; background:#f7fbfd; }
.policy-list { display:grid; gap:12px; }
.site-footer { width:min(1180px, calc(100% - 48px)); margin:0 auto; padding:23px 0 30px; border-top:1px solid var(--line); display:flex; align-items:flex-start; justify-content:space-between; gap:20px; color:var(--muted); font-size:12px; }
.site-footer p { max-width:480px; margin:0; line-height:1.45; }
.footer-intro { display:flex; flex-direction:column; align-items:flex-start; gap:14px; max-width:480px; }
.site-footer nav { display:grid; grid-template-columns:repeat(2,auto); justify-content:end; align-content:start; gap:11px 40px; margin-right:clamp(0px,7vw,120px); }
.site-footer a { color:var(--muted); text-decoration:none; font-weight:600; }
.site-footer a:hover { color:var(--coral); }
.footer-settings { display:inline-flex; align-items:center; gap:4px; }
.footer-settings .regional-settings { border:1px solid var(--line); border-radius:var(--r-pill); }
@media (max-width:700px) { .public-main { width:min(100% - 32px,920px); margin:27px auto 50px; }.public-intro { margin:18px 0 28px; font-size:16px; }.steps,.principles { grid-template-columns:1fr; }.steps article,.principles article,.policy-list article,.transparency-card { padding:21px; }.site-footer { width:calc(100% - 32px); display:block; }.site-footer nav { display:flex; flex-wrap:wrap; justify-content:flex-start; gap:12px 18px; margin-top:14px; } }
@media (max-width:700px) { .footer-settings { margin:0; }.footer-intro { max-width:none; } }

.mobile-bottom-nav { display:none; }
@media (max-width:760px) {
  body { padding-bottom:88px; }
  .mobile-bottom-nav { position:fixed; z-index:90; left:12px; right:12px; bottom:10px; display:grid; grid-template-columns:repeat(4,1fr); min-height:64px; padding:7px 4px calc(7px + env(safe-area-inset-bottom)); border:1px solid var(--line); border-radius:var(--r-lg); background:rgba(255,255,255,.96); box-shadow:0 10px 32px rgba(16,42,67,.18); backdrop-filter:blur(14px); }
  .mobile-bottom-nav a { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; min-width:0; color:var(--muted); font-size:10px; font-weight:700; text-decoration:none; }
  .mobile-bottom-nav a span { font-size:20px; line-height:1; }
  .mobile-bottom-nav a svg { width:20px; height:20px; }
  .account-entry { display:grid; }
  .mobile-bottom-nav a[aria-current="page"] { color:var(--coral); }
  .mobile-bottom-nav a:focus-visible { outline:3px solid var(--coral); outline-offset:1px; border-radius:var(--r-md); }
}
body.mobile-preview { padding-bottom:88px; }
body.mobile-preview .mobile-bottom-nav { position:fixed; left:50%; right:auto; bottom:calc((100vh - min(764px,calc(100vh - 40px))) * .5 + 18px); width:min(398px,calc((100vh - 40px) * .5625 - 24px)); transform:translateX(-50%); display:grid; grid-template-columns:repeat(4,1fr); min-height:64px; padding:7px 4px; border:1px solid var(--line); border-radius:var(--r-lg); background:rgba(255,255,255,.96); box-shadow:0 10px 32px rgba(16,42,67,.18); z-index:90; }
body.mobile-preview .mobile-bottom-nav a { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; color:var(--muted); font-size:10px; font-weight:700; text-decoration:none; }
body.mobile-preview .mobile-bottom-nav a span { font-size:20px; line-height:1; }
body.mobile-preview .mobile-bottom-nav a svg { width:20px; height:20px; }
body.mobile-preview .mobile-bottom-nav a[aria-current="page"] { color:var(--coral); }
body.mobile-preview .account-entry { display:none; }

/* Préférences de marché : explicites, compactes et indépendantes de la recherche. */
.regional-dialog { width:min(420px, calc(100% - 32px)); padding:0; border:0; border-radius:var(--r-lg); color:var(--ink); box-shadow:0 22px 64px rgba(16,42,67,.28); }
.regional-dialog::backdrop { background:rgba(16,42,67,.5); }
.regional-dialog form { padding:25px; }
.regional-dialog-title { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin-bottom:24px; }
.regional-dialog-title .eyebrow { margin-bottom:7px; }
.regional-dialog-title h2 { font-size:23px; }
.regional-dialog .dialog-close { position:static; flex:0 0 auto; }
.regional-field { display:block; margin-top:17px; }
.regional-field span { display:block; margin-bottom:7px; font-size:13px; font-weight:700; }
.regional-field select { min-height:46px; border-radius:var(--r-sm); }
.regional-field small { display:block; margin-top:7px; color:var(--muted); font-size:12px; line-height:1.4; }
.regional-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:25px; }
.regional-actions .clear-dates,.regional-actions .apply-dates { min-height:42px; }
@media (max-width:600px) { .regional-settings { padding-inline:8px; font-size:11px; }.regional-dialog form { padding:21px; } }

/* Softer surfaces and high-contrast origin blocks across the application. */
.search-card { border-radius:var(--r-md); }
.destination-card, .filters-panel { border-radius:var(--r-md); overflow:hidden; }
.detail-page-header { border-radius:var(--r-md) var(--r-md) 0 0; overflow:hidden; }
.detail-summary { border-radius:0 0 var(--r-md) var(--r-md); }
.detail-page .flight-person { border-radius:var(--r-md); overflow:hidden; }
.detail-page .flight-person-header { background:var(--ink); color:#fff; }
.flight-person-header h2 { display:grid; gap:2px; }
.flight-person-header .flight-person-label { color:#fff; font-family:"DM Sans",Arial,sans-serif; font-size:12px; font-weight:600; letter-spacing:.01em; }
.flight-person-header .flight-person-city { color:#fff; font-family:"Playfair Display",Georgia,serif; font-size:26px; font-weight:700; letter-spacing:-.02em; line-height:1.12; }

/* Calendrier de recherche */
.search-card { position:relative; }
.date-picker { position:absolute; z-index:20; left:50%; width:min(880px,calc(100% - 56px)); transform:translateX(-50%); top:calc(100% - 18px); padding:22px 28px 14px; background:var(--paper); border:1px solid var(--line); border-radius:var(--r-md); box-shadow:0 22px 46px rgba(16,42,67,.16); }
.date-picker-topline,.date-picker-months,.date-picker-footer { display:flex; align-items:center; }
.date-picker-topline { position:relative; justify-content:flex-end; min-height:38px; margin-bottom:12px; }
.date-picker-step { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.date-picker-topline strong { display:block; margin-top:4px; color:var(--ink); font-size:1rem; }
.date-picker-close svg,.month-control svg { width:18px; height:18px; }
.date-picker-close,.month-control { display:grid; place-items:center; width:34px; height:34px; border:1px solid var(--line); border-radius:50%; background:var(--paper); color:var(--ink); font-size:1.1rem; cursor:pointer; transition:background .18s ease,border-color .18s ease; }
.date-picker-close:hover,.month-control:hover { border-color:var(--lagoon); background:var(--mint); }
.calendar-navigation { position:absolute; left:50%; top:0; display:flex; gap:8px; transform:translateX(-50%); }
.date-picker-months { gap:20px; align-items:center; }
.calendar-months { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:38px; flex:1; }
.calendar-month h3 { margin:0 0 14px; text-align:center; color:var(--ink); font-size:1rem; font-weight:700; text-transform:capitalize; }
.calendar-weekdays,.calendar-days { display:grid; grid-template-columns:repeat(7,1fr); text-align:center; }
.calendar-weekdays { margin-bottom:5px; color:var(--muted); font-size:.68rem; font-weight:700; }
.calendar-day { position:relative; min-height:36px; margin:0; border:0; background:transparent; color:var(--ink); font:600 .84rem/1 var(--sans); cursor:pointer; transition:background .16s ease,color .16s ease; }
.calendar-day > span { position:relative; z-index:1; display:grid; place-items:center; width:34px; height:34px; margin:auto; border-radius:50%; }
.calendar-day:hover:not(:disabled) > span { background:var(--mint); }
.calendar-day:disabled { color:#c7d0d9; cursor:not-allowed; }
.calendar-day.is-in-range { background:#e6f1f4; }
.calendar-day.is-range-start { background:linear-gradient(to right,transparent 50%,#e6f1f4 50%); }
.calendar-day.is-range-end { background:linear-gradient(to right,#e6f1f4 50%,transparent 50%); }
.calendar-day.is-selected > span { background:var(--ink); color:#fff; }
.date-picker-footer { justify-content:space-between; margin-top:17px; padding-top:13px; border-top:1px solid var(--line); }
.clear-dates,.apply-dates { border:0; border-radius:var(--r-sm); padding:10px 15px; font:700 .84rem var(--sans); cursor:pointer; }
.clear-dates { background:transparent; color:var(--muted); }
.apply-dates { background:var(--ink); color:#fff; }
@media (max-width:700px) { .date-picker { position:fixed; inset:auto 10px 10px; width:auto; transform:none; max-height:82vh; overflow:auto; padding:19px 16px 14px; border-radius:var(--r-lg); box-shadow:0 10px 44px rgba(16,42,67,.28); } .date-picker-topline { min-height:34px; margin-bottom:10px; } .calendar-months { grid-template-columns:1fr; gap:22px; touch-action:pan-y; } .calendar-months .calendar-month:nth-child(2) { display:none; } .date-picker-months { display:block; } }

/* Le calendrier reste compact sur l'aperçu desktop et se parcourt par glissement. */
body.mobile-preview .date-picker { left:10px; width:calc(100% - 20px); transform:none; padding:19px 16px 14px; border-radius:var(--r-lg); }
body.mobile-preview .date-picker-months { display:block; }.mobile-preview .date-picker .calendar-months { grid-template-columns:1fr; gap:22px; touch-action:pan-y; }.mobile-preview .date-picker .calendar-month:nth-child(2) { display:none; }
.calendar-months.is-sliding-next { animation:calendar-slide-next .22s ease-out; }.calendar-months.is-sliding-previous { animation:calendar-slide-previous .22s ease-out; }
@keyframes calendar-slide-next { from { opacity:.3; transform:translateX(22px); } to { opacity:1; transform:translateX(0); } }
@keyframes calendar-slide-previous { from { opacity:.3; transform:translateX(-22px); } to { opacity:1; transform:translateX(0); } }

/* Recherche : deux itinéraires convergent visuellement vers le même point. */
/* Chargement, temps 1 : page dédiée. Tant qu'aucun résultat n'existe, c'est elle qui
   occupe la page — ce n'est plus une fenêtre posée par-dessus les résultats. */
.search-loading[hidden] { display:none; }
.search-loading { display:grid; place-items:center; min-height:min(52vh,440px); padding:56px 24px 72px; }
.search-loading-panel { width:min(100%,620px); text-align:center; }
/* Le libellé fonctionnel n'est là que pour les lecteurs d'écran : à l'écran, la barre de
   recherche dit déjà ce qui se passe, et cette place revient à la phrase. */
.search-loading-status { position:absolute; width:1px; height:1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
.search-loading-line { margin:0; color:var(--ink); font-family:"Playfair Display",Georgia,serif; font-size:clamp(24px,3.4vw,34px); font-weight:600; line-height:1.18; letter-spacing:-.015em; text-wrap:balance; }
@keyframes inline-progress { from { transform:translateX(-105%); } to { transform:translateX(365%); } }
/* Chargement, temps 2 : les premiers résultats sont consultables, la recherche continue. */
.results-loading { display:flex; align-items:center; gap:8px; width:min(1180px,calc(100% - 48px)); margin:20px auto -4px; color:var(--muted); font-size:13px; font-weight:600; }
.results-loading[hidden] { display:none; }
.results-loading-bar { display:block; flex:0 0 88px; height:3px; border-radius:var(--r-pill); background:var(--line); overflow:hidden; }
.results-loading-bar > span { display:block; width:38%; height:100%; border-radius:inherit; background:var(--coral); animation:inline-progress 1.6s ease-in-out infinite; }
@media (max-width:700px) { body.results-page .results-loading { width:calc(100% - 32px); margin:16px auto -4px; } }
/* La barre de progression EST l'animation : chaque départ progresse vers le point de
   rencontre, et le chemin parcouru est la progression. Durée pilotée par --loading-duration
   (le plancher de la démo aujourd'hui, la latence réelle demain). */
.flight-progress { --loading-duration:3000ms; position:relative; width:min(100%,340px); height:34px; margin:32px auto 0; }
.flight-progress-track { position:absolute; left:0; right:0; top:calc(50% - 2px); height:4px; border-radius:var(--r-pill); background:var(--line); }
.flight-progress-fill { position:absolute; top:calc(50% - 2px); width:50%; height:4px; border-radius:var(--r-pill); background:var(--coral); animation:flight-fill var(--loading-duration) cubic-bezier(.45,.05,.3,1) infinite; }
.flight-progress-fill-left { left:0; transform-origin:left; }
.flight-progress-fill-right { right:0; transform-origin:right; }
@keyframes flight-fill { 0% { transform:scaleX(0); opacity:0; } 6% { transform:scaleX(0); opacity:1; } 72%,82% { transform:scaleX(1); opacity:1; } 88% { transform:scaleX(1); opacity:0; } 89%,100% { transform:scaleX(0); opacity:0; } }
.flight-point { position:absolute; z-index:2; top:calc(50% - 5px); width:10px; height:10px; border-radius:50%; background:var(--lagoon); box-shadow:0 0 0 4px var(--cream); }
.flight-point-left { left:0; }.flight-point-right { right:0; }
.flight-meeting-point { position:absolute; z-index:2; top:calc(50% - 6px); left:calc(50% - 6px); width:12px; height:12px; border-radius:50%; background:var(--coral); box-shadow:0 0 0 7px rgba(255,106,19,.16); animation:meeting-pulse 1.6s ease-in-out infinite; }
.flight-rail { position:absolute; inset:0; }
.flight-rail-left { animation:rail-from-left var(--loading-duration) cubic-bezier(.45,.05,.3,1) infinite; }
.flight-rail-right { animation:rail-from-right var(--loading-duration) cubic-bezier(.45,.05,.3,1) infinite; }
@keyframes rail-from-left { 0% { transform:translateX(0); opacity:0; } 6% { transform:translateX(0); opacity:1; } 72%,82% { transform:translateX(46%); opacity:1; } 88% { transform:translateX(46%); opacity:0; } 89%,100% { transform:translateX(0); opacity:0; } }
@keyframes rail-from-right { 0% { transform:translateX(0); opacity:0; } 6% { transform:translateX(0); opacity:1; } 72%,82% { transform:translateX(-46%); opacity:1; } 88% { transform:translateX(-46%); opacity:0; } 89%,100% { transform:translateX(0); opacity:0; } }
.flight-plane { position:absolute; z-index:3; top:calc(50% - 11px); width:22px; height:22px; color:var(--ink); }
.flight-plane svg { display:block; width:100%; height:100%; }
/* L'avion du module vole déjà vers la droite : celui parti de gauche n'a rien à faire,
   celui parti de droite se retourne. Une rotation de 90° supposait un avion vu de dessus. */
.flight-rail-left .flight-plane { left:-11px; }
.flight-rail-right .flight-plane { right:-11px; }.flight-rail-right .flight-plane svg { transform:scaleX(-1); }
@keyframes meeting-pulse { 0%,100% { box-shadow:0 0 0 7px rgba(255,106,19,.12); } 50% { box-shadow:0 0 0 12px rgba(255,106,19,.03); } }
body.mobile-preview { position:relative; }.mobile-preview .search-loading { min-height:min(48vh,360px); padding:36px 16px 48px; }.mobile-preview .flight-progress { width:min(100%,260px); }.mobile-preview .search-loading-title { font-size:17px; }
@media (max-width:600px) { .search-loading { min-height:min(48vh,380px); padding:40px 16px 56px; }.flight-progress { width:min(100%,260px); }.search-loading-copy { font-size:12px; } }
@media (prefers-reduced-motion:reduce) { .flight-meeting-point,.flight-progress-fill,.flight-rail,.results-loading-bar > span { animation:none; } .flight-progress-fill { transform:scaleX(1); } .flight-rail-left { transform:translateX(46%); } .flight-rail-right { transform:translateX(-46%); } .results-loading-bar > span { width:100%; } }
.favorite-result { position:absolute; z-index:2; top:12px; right:12px; display:grid; place-items:center; width:42px; height:42px; border:1px solid rgba(255,255,255,.75); border-radius:50%; background:rgba(255,255,255,.94); color:var(--coral); font-size:22px; box-shadow:0 5px 18px rgba(16,42,67,.16); }
.favorite-result svg { width:20px; height:20px; }
.save-search svg { width:16px; height:16px; vertical-align:-3px; }
.favorite-heart-toggle svg, .search-trash svg { width:18px; height:18px; }
.favorite-result:hover,.favorite-result:focus-visible { transform:scale(1.05); outline:3px solid var(--coral); outline-offset:2px; }
.detail-favorite { top:20px; right:20px; width:48px; height:48px; padding:0; border:0; cursor:pointer; }
.detail-favorite-status:empty { display:none; }
.detail-favorite-status.is-toast { position:fixed; z-index:140; left:50%; bottom:28px; min-height:0; margin:0; padding:12px 18px; border-radius:var(--r-pill); background:var(--ink); color:#fff; box-shadow:0 14px 38px rgba(6,17,30,.28); transform:translateX(-50%); }
.share-destination { position:absolute; z-index:2; top:12px; left:12px; display:grid; place-items:center; width:42px; height:42px; padding:0; border:1px solid rgba(255,255,255,.75); border-radius:50%; background:rgba(255,255,255,.94); color:var(--coral); box-shadow:0 5px 18px rgba(16,42,67,.16); }
.share-destination svg { width:20px; height:20px; }
.share-destination:hover,.share-destination:focus-visible { transform:scale(1.05); outline:3px solid var(--coral); outline-offset:2px; }
.favorite-status { min-height:20px; margin:-12px 0 16px; color:var(--lagoon); font-size:12px; font-weight:700; }
.detail-page .flight-actions { grid-column:4; grid-row:1 / span 2; display:grid; grid-template-rows:minmax(0,1fr) auto; background:#fff6e8; }
.detail-page .flight-person.one-way .flight-actions { grid-column:3; grid-row:1; }
.detail-page .flight-actions .flight-price { grid-column:auto; grid-row:auto; width:100%; min-height:0; }
.share-flight { display:flex; align-items:center; justify-content:center; gap:8px; min-height:44px; padding:10px 14px; border:0; border-top:1px solid var(--line); background:var(--paper); color:var(--ink); font:700 12px var(--sans); cursor:pointer; }
.share-flight svg { width:19px; height:19px; color:var(--coral); }
.share-flight:hover,.share-flight:focus-visible { background:var(--mint); outline:0; }
.share-flight:focus-visible { box-shadow:inset 0 0 0 3px var(--coral); }
.share-status { min-height:20px; margin:0 0 8px; color:var(--lagoon); font-size:13px; font-weight:700; }
@media(max-width:760px) { .detail-page .flight-actions,.detail-page .flight-person.one-way .flight-actions { display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-rows:1fr; } .detail-page .flight-actions .flight-price { min-height:94px; } .share-flight { min-width:94px; border-top:0; border-left:1px solid var(--line); flex-direction:column; } }
body.mobile-preview .detail-page .flight-actions,body.mobile-preview .detail-page .flight-person.one-way .flight-actions { display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-rows:1fr; }
body.mobile-preview .detail-page .flight-actions .flight-price { min-height:94px; }
body.mobile-preview .share-flight { min-width:94px; border-top:0; border-left:1px solid var(--line); flex-direction:column; }
.shared-context { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:13px; margin:16px 0 0; padding:15px 17px; border:1px solid #c7d5e1; border-radius:var(--r-md); background:var(--mint); color:var(--ink); }
.shared-context svg { width:25px; height:25px; color:var(--lagoon); }
.shared-context strong,.shared-context span { display:block; }.shared-context span { margin-top:2px; color:var(--muted); font-size:12px; }.shared-context a { color:var(--lagoon); font-size:12px; font-weight:800; }.flight-person.is-shared { outline:3px solid var(--coral); outline-offset:3px; }
@media(max-width:760px) { .shared-context { grid-template-columns:auto minmax(0,1fr); }.shared-context a { grid-column:2; min-height:36px; display:flex; align-items:center; } }
body.mobile-preview .shared-context { grid-template-columns:auto minmax(0,1fr); } body.mobile-preview .shared-context a { grid-column:2; min-height:36px; display:flex; align-items:center; }

/* Pages juridiques : lecture longue, sans perdre la sobriété de l’application. */
.account-entry { display:grid; place-items:center; flex:0 0 42px; width:42px; height:42px; margin-left:auto; border:1px solid rgba(255,255,255,.42); border-radius:50%; color:var(--ink); text-decoration:none; }
.account-entry svg { width:21px; height:21px; }
.account-entry:hover,.account-entry:focus-visible { border-color:var(--coral); color:var(--coral); }
.save-search { min-height:42px; padding:10px 14px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--paper); color:var(--ink); font:700 12px var(--sans); cursor:pointer; }
.save-search:hover,.save-search:focus-visible { border-color:var(--coral); color:var(--coral); }
.auth-dialog { width:min(440px,calc(100% - 28px)); padding:28px; border:0; border-radius:var(--r-lg); color:var(--ink); box-shadow:0 24px 70px rgba(16,42,67,.3); }
.auth-dialog::backdrop { background:rgba(16,42,67,.52); }
.auth-dialog h2 { max-width:340px; margin:7px 0 10px; font-size:27px; }
.auth-dialog > p:not(.eyebrow):not(.auth-note):not(.auth-status) { color:var(--muted); line-height:1.5; }
.auth-providers { display:grid; gap:10px; margin:22px 0 16px; }
.auth-providers button,#email-auth-form button { min-height:48px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--paper); color:var(--ink); font:700 14px var(--sans); cursor:pointer; }
.auth-providers button:hover { background:var(--mint); border-color:var(--lagoon); }
.auth-separator { display:flex; align-items:center; gap:10px; color:var(--muted); font-size:12px; }.auth-separator::before,.auth-separator::after { content:""; height:1px; flex:1; background:var(--line); }
#email-auth-form { display:grid; gap:8px; margin-top:14px; }#email-auth-form label { font-size:12px; font-weight:700; }#email-auth-form input { min-height:46px; border:1px solid var(--line); border-radius:var(--r-sm); padding:0 12px; font:inherit; }#email-auth-form button { margin-top:4px; background:var(--ink); color:white; }
.auth-note { margin:15px 0 0; color:var(--muted); font-size:11px; line-height:1.45; }.auth-status { min-height:1em; color:var(--lagoon); font-size:12px; font-weight:700; }
@media(max-width:700px){.account-entry{flex-basis:40px;width:40px;height:40px}.save-search{width:100%}.auth-dialog{padding:23px}.auth-dialog h2{font-size:23px}}

.legal-main { width:min(860px, calc(100% - 48px)); margin:46px auto 72px; }.legal-main > h1 { margin-bottom:27px; }.legal-section { padding:25px 0; border-top:1px solid var(--line); }.legal-section h2 { margin:0 0 12px; font-size:21px; }.legal-section p { max-width:760px; margin:0 0 12px; color:var(--muted); font-size:15px; line-height:1.62; }.legal-section p:last-child { margin-bottom:0; }.legal-section a { color:var(--lagoon); font-weight:700; text-underline-offset:3px; }.legal-draft-notice { margin:0 0 27px; padding:17px 18px; border:1px solid #efb69e; border-radius:var(--r-md); background:#fff6ee; color:#7d3d2b; }.legal-draft-notice strong { display:block; font-size:14px; }.legal-draft-notice p { margin:6px 0 0; font-size:13px; line-height:1.45; }.legal-draft-notice code { padding:1px 4px; border-radius:var(--r-xs); background:rgba(255,255,255,.75); font-family:var(--sans); font-size:12px; }.legal-list { margin:0; }.legal-list > div { display:grid; grid-template-columns:190px minmax(0,1fr); gap:22px; padding:10px 0; border-top:1px solid rgba(215,225,232,.65); }.legal-list > div:first-child { border-top:0; }.legal-list dt { color:var(--ink); font-size:13px; font-weight:700; }.legal-list dd { margin:0; color:var(--muted); font-size:14px; line-height:1.5; }.legal-note,.legal-updated { color:var(--muted); font-size:12px; line-height:1.5; }.legal-table-wrap { overflow-x:auto; margin:0 0 14px; border:1px solid var(--line); border-radius:var(--r-md); }.legal-table { width:100%; min-width:620px; border-collapse:collapse; background:var(--paper); }.legal-table th,.legal-table td { padding:13px 14px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; font-size:13px; line-height:1.45; }.legal-table th { background:#f7fbfd; color:var(--ink); font-weight:700; }.legal-table td { color:var(--muted); }.legal-table tr:last-child td { border-bottom:0; }
@media (max-width:700px) { .legal-main { width:calc(100% - 32px); margin:29px auto 48px; }.legal-main > h1 { margin-bottom:22px; }.legal-section { padding:21px 0; }.legal-section h2 { font-size:19px; }.legal-section p { font-size:14px; }.legal-list > div { grid-template-columns:1fr; gap:4px; }.legal-draft-notice { padding:15px; } }
.legal-value-pending { font-weight:800!important; color:#8a3f22!important; background:#fff0e8; border-radius:var(--r-xs); padding:1px 4px; }
.legal-value-pending::after { content:' \270E'; display:inline-block; margin-left:3px; color:#ff6a13; font-size:.9em; }

/* --- Bannière de consentement --- */
.consent-banner { position:fixed; z-index:1000; left:16px; right:16px; bottom:16px; margin:0 auto; max-width:760px; display:flex; flex-wrap:wrap; align-items:center; gap:16px 22px; padding:18px 20px; border-radius:var(--r-lg); background:var(--ink); color:#eef4fa; box-shadow:0 18px 44px rgba(16,42,67,.28); animation:consent-rise .28s ease-out; }
@keyframes consent-rise { from { opacity:0; transform:translateY(14px); } to { opacity:1; transform:translateY(0); } }
.consent-banner__text { flex:1 1 320px; min-width:0; }
.consent-banner__text strong { display:block; font-size:14px; margin-bottom:4px; }
.consent-banner__text p { margin:0; font-size:12.5px; line-height:1.5; color:#c6d5e4; }
.consent-banner__text a { color:#fff; font-weight:700; text-underline-offset:3px; }
.consent-banner__actions { display:flex; flex-wrap:wrap; gap:10px; flex:0 0 auto; }
.consent-btn { border:0; border-radius:var(--r-md); padding:11px 18px; font:inherit; font-size:13px; font-weight:700; cursor:pointer; transition:transform .12s ease, background .12s ease, border-color .12s ease; }
.consent-btn:active { transform:translateY(1px); }
.consent-btn--primary { background:var(--coral); color:#fff; }
.consent-btn--primary:hover { background:#ff7d31; }
.consent-btn--ghost { background:transparent; color:#dbe6f1; border:1px solid rgba(219,230,241,.4); }
.consent-btn--ghost:hover { border-color:rgba(219,230,241,.8); background:rgba(255,255,255,.06); }
.consent-btn:focus-visible { outline:2px solid #ffb98a; outline-offset:2px; }
@media (max-width:560px) { .consent-banner { left:10px; right:10px; bottom:10px; padding:16px; } .consent-banner__actions { width:100%; } .consent-btn { flex:1 1 auto; } }

/* Accueil mobile : un seul bloc supérieur, plus léger et sans rupture entre l’en-tête et la recherche. */
@media (max-width:600px) {
  main > .search-card { padding:16px 16px 18px; border-radius:0 0 var(--r-lg) var(--r-lg); }
  main > .search-card .search-heading { margin-bottom:14px; }
  main > .search-card .search-heading h2 { font-size:22px; }
  main > .search-card .search-toolbar { margin-bottom:10px; }
  main > .search-card .toolbar-select select { min-height:38px; padding-block:7px; }
  main > .search-card .comparator-bar { gap:8px; }
  main > .search-card .bar-origins .field,
  main > .search-card .bar-origins .field + .field,
  main > .search-card .bar-field { min-height:62px; padding:9px 12px; }
  main > .search-card .search-button { min-height:50px; }
  main > .hero { padding:10px 16px 18px; }
  main > .hero h1 { font-size:clamp(30px,8vw,33px); line-height:.92; white-space:normal; }
}
@media (max-width:600px) and (min-height:740px) {
  main > .hero { padding-top:14px; }
  main > .hero h1 { font-size:clamp(36px,10.5vw,42px); line-height:.9; }
}
.eyebrow{display:none!important}

/* Accueil desktop : promesse, recherche puis respiration éditoriale. */
.editorial-feature { display:none; }
@media (max-width:600px) {
  .home-search-panel-inner { display:flex; flex-direction:column; }
  .home-search-panel .search-card { order:1; padding:16px 16px 18px; border-radius:0 0 var(--r-lg) var(--r-lg); }
  .home-search-panel .search-card .search-heading { margin-bottom:14px; }
  .home-search-panel .search-card .search-heading h2 { font-size:22px; }
  .home-search-panel .search-card .search-toolbar { margin-bottom:10px; }
  .home-search-panel .search-card .toolbar-select select { min-height:38px; padding-block:7px; }
  .home-search-panel .search-card .comparator-bar { gap:8px; }
  .home-search-panel .search-card .bar-origins .field,
  .home-search-panel .search-card .bar-origins .field + .field,
  .home-search-panel .search-card .bar-field { min-height:62px; padding:9px 12px; }
  .home-search-panel .search-card .search-button { min-height:50px; }
  .home-search-panel .hero { display:none; order:2; padding:10px 16px 18px; }
  .home-search-panel .hero h1 { font-size:clamp(30px,8vw,33px); line-height:.92; white-space:normal; }
  body.home-page .editorial-feature { display:block; order:3; width:calc(100% - 32px); margin:10px auto 28px; }
  body.home-page .editorial-card { position:relative; isolation:isolate; display:flex; align-items:flex-end; min-height:220px; overflow:hidden; padding:22px; border-radius:var(--r-lg); background:url('https://images.unsplash.com/photo-1555881400-74d7acaacd8b?auto=format&fit=crop&w=1200&q=84') center 57%/cover no-repeat; color:#fff; text-decoration:none; box-shadow:0 14px 34px rgba(16,42,67,.14); }
  body.home-page .editorial-card::before { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(180deg,rgba(6,24,41,.14) 0%,rgba(6,24,41,.5) 48%,rgba(6,24,41,.86) 100%); }
  body.home-page .editorial-card-copy { max-width:100%; }
  body.home-page .editorial-card-kicker { display:block; max-width:270px; font-family:"Playfair Display",Georgia,serif; font-size:clamp(27px,8.4vw,34px); font-weight:600; line-height:1.03; letter-spacing:-.03em; }
  body.home-page .editorial-card-text { display:block; max-width:280px; margin-top:10px; color:rgba(255,255,255,.9); font-family:"DM Sans",Arial,sans-serif; font-size:15px; font-weight:700; line-height:1.35; letter-spacing:0; }
  body.home-page .editorial-card:focus-visible { outline:3px solid var(--coral); outline-offset:3px; }
}
@media (max-width:600px) and (min-height:740px) {
  .home-search-panel .hero { padding-top:14px; }
  .home-search-panel .hero h1 { font-size:clamp(36px,10.5vw,42px); line-height:.9; }
}
body.mobile-preview .home-search-panel-inner { display:flex; flex-direction:column; }
body.mobile-preview .home-search-panel .search-card { order:1; border-radius:0 0 var(--r-lg) var(--r-lg); }
body.mobile-preview .home-search-panel .hero { display:none; order:2; }
body.mobile-preview .editorial-feature { display:block; order:3; width:calc(100% - 32px); margin:10px auto 28px; }
body.mobile-preview .editorial-card { position:relative; isolation:isolate; display:flex; align-items:flex-end; min-height:220px; overflow:hidden; padding:22px; border-radius:var(--r-lg); background:url('https://images.unsplash.com/photo-1555881400-74d7acaacd8b?auto=format&fit=crop&w=1200&q=84') center 57%/cover no-repeat; color:#fff; text-decoration:none; box-shadow:0 14px 34px rgba(16,42,67,.14); }
body.mobile-preview .editorial-card::before { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(180deg,rgba(6,24,41,.14) 0%,rgba(6,24,41,.5) 48%,rgba(6,24,41,.86) 100%); }
body.mobile-preview .editorial-card-copy { max-width:100%; }
body.mobile-preview .editorial-card-kicker { display:block; max-width:270px; font-family:"Playfair Display",Georgia,serif; font-size:clamp(27px,8.4vw,34px); font-weight:600; line-height:1.03; letter-spacing:-.03em; }
body.mobile-preview .editorial-card-text { display:block; max-width:280px; margin-top:10px; color:rgba(255,255,255,.9); font-family:"DM Sans",Arial,sans-serif; font-size:15px; font-weight:700; line-height:1.35; letter-spacing:0; }
body.mobile-preview .editorial-card:focus-visible { outline:3px solid var(--coral); outline-offset:3px; }
@media (min-width:601px) {
  body.home-page:not(.mobile-preview) { background:var(--cream); }
  body.home-page:not(.mobile-preview) .site-header { padding:0 max(24px,calc((100vw - 1180px) / 2)); }
  body.home-page:not(.mobile-preview) .brand { color:#fff; }
  body.home-page:not(.mobile-preview) .account-entry { border-color:rgba(255,255,255,.42); color:#fff; }
  body.home-page:not(.mobile-preview) .account-entry:hover,body.home-page:not(.mobile-preview) .account-entry:focus-visible { border-color:var(--coral); color:var(--coral); }
  body.home-page:not(.mobile-preview) main { width:100%; padding-bottom:80px; }
  body.home-page:not(.mobile-preview) .home-search-panel { padding:8px 24px 58px; background:var(--ink); color:#fff; }
  body.home-page:not(.mobile-preview) .home-search-panel-inner { width:min(1180px,100%); margin:0 auto; }
  body.home-page:not(.mobile-preview) .hero { max-width:920px; padding:0 0 16px; }
  body.home-page:not(.mobile-preview) .hero h1 { font-size:clamp(52px,5.5vw,76px); line-height:.96; }
  body.home-page:not(.mobile-preview) .hero-copy { max-width:660px; margin-top:18px; color:#c6d5e4; font-size:17px; }
  body.home-page:not(.mobile-preview) .search-card { padding:0; border:0; border-radius:0; background:transparent; box-shadow:none; }
  body.home-page:not(.mobile-preview) .search-heading { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; }
  body.home-page:not(.mobile-preview) .search-toolbar { margin-bottom:12px; }
  body.home-page:not(.mobile-preview) .toolbar-select select { min-height:38px; padding:7px 14px; border-color:rgba(255,255,255,.42); background:transparent; }
  body.home-page:not(.mobile-preview) .comparator-bar { border-radius:var(--r-md); background:transparent; box-shadow:0 16px 34px rgba(3,18,31,.24); }
  body.home-page:not(.mobile-preview) .bar-origins .field,body.home-page:not(.mobile-preview) .bar-field { min-height:72px; background:#fff; }
  body.home-page:not(.mobile-preview) .bar-origins .field input,body.home-page:not(.mobile-preview) .bar-field input { font:400 15px/1.35 var(--sans); color:var(--ink); }
  body.home-page:not(.mobile-preview) .bar-origins .field input::placeholder,body.home-page:not(.mobile-preview) .bar-field input::placeholder { color:#87928f; font:inherit; opacity:1; }
  body.home-page:not(.mobile-preview) .bar-origins .field:first-child { border-radius:var(--r-md) 0 0 var(--r-md); }
  body.home-page:not(.mobile-preview) .search-button { min-width:150px; min-height:72px; margin:0; border-radius:0 var(--r-md) var(--r-md) 0; }
  body.home-page:not(.mobile-preview) .editorial-feature { display:block; width:min(1180px,calc(100% - 48px)); margin:38px auto 0; }
  body.home-page:not(.mobile-preview) .editorial-card { position:relative; isolation:isolate; display:flex; align-items:flex-end; min-height:410px; overflow:hidden; padding:46px; border-radius:var(--r-lg); background:url('https://images.unsplash.com/photo-1555881400-74d7acaacd8b?auto=format&fit=crop&w=1800&q=86') center 57%/cover no-repeat; color:#fff; text-decoration:none; box-shadow:0 20px 52px rgba(16,42,67,.16); }
  body.home-page:not(.mobile-preview) .editorial-card::before { content:""; position:absolute; z-index:-1; inset:0; background:linear-gradient(90deg,rgba(6,24,41,.82) 0%,rgba(6,24,41,.46) 42%,rgba(6,24,41,.06) 76%); transition:background .25s ease; }
  body.home-page:not(.mobile-preview) .editorial-card-copy { max-width:650px; }
  body.home-page:not(.mobile-preview) .editorial-card-kicker { display:block; max-width:520px; font-family:"Playfair Display",Georgia,serif; font-size:clamp(34px,3.4vw,48px); font-weight:600; line-height:1.05; letter-spacing:-.035em; }
  body.home-page:not(.mobile-preview) .editorial-card-text { display:block; max-width:540px; margin-top:18px; color:rgba(255,255,255,.9); font-family:"DM Sans",Arial,sans-serif; font-size:clamp(19px,1.65vw,24px); font-weight:700; line-height:1.28; letter-spacing:0; }
  body.home-page:not(.mobile-preview) .editorial-card:focus-visible { outline:4px solid var(--coral); outline-offset:4px; }
  body.home-page:not(.mobile-preview) .results { width:min(1180px,calc(100% - 48px)); margin:80px auto 0; }
}

@media (max-width:700px) {
  body.home-page:not(.mobile-preview) .bar-origins .field input,body.home-page:not(.mobile-preview) .bar-field input { font:400 16px/1.35 var(--sans); }
}


/* Page résultats : la recherche devient une barre de pilotage persistante. */
body.results-page { background:var(--cream); }
body.results-page .site-header { border-bottom:0; }
body.results-page main { width:100%; margin:0; padding-bottom:80px; }
body.results-page .home-search-panel { position:sticky; z-index:35; top:0; padding:10px 24px 14px; background:var(--ink); border-bottom:0; box-shadow:none; transition:box-shadow .22s ease; }
body.results-page.is-scrolled .home-search-panel { box-shadow:0 18px 34px rgba(16,42,67,.22); }
body.results-page .home-search-panel-inner { width:min(1180px,100%); margin:0 auto; }
body.results-page .search-card { padding:0; border:0; border-radius:0; background:transparent; box-shadow:none; }
body.results-page .search-heading { display:none; }
body.results-page .search-toolbar { margin:9px 0 0; }
body.results-page .toolbar-select select { min-height:34px; padding:6px 12px; border-color:rgba(255,255,255,.42); background:transparent; color:#fff; }
body.results-page .comparator-bar { grid-template-columns:2.1fr 1.4fr 1fr 1fr auto 58px; border-radius:var(--r-md); box-shadow:none; }
body.results-page.is-scrolled .comparator-bar { box-shadow:0 14px 28px rgba(3,18,31,.2); }
body.results-page .bar-origins .field,body.results-page .bar-field { min-height:62px; background:var(--paper); }
body.results-page .bar-origins .field:first-child { border-radius:var(--r-md) 0 0 var(--r-md); }
body.results-page .brand { color:#fff; }
body.results-page .account-entry { border-color:rgba(255,255,255,.42); color:#fff; }
body.results-page .account-entry:hover,body.results-page .account-entry:focus-visible { border-color:var(--coral); color:var(--coral); }
body.results-page .search-button { min-width:140px; min-height:62px; margin-left:0; border-radius:0; }
@media (min-width:701px) { body.results-page .date-picker { top:calc(100% - 6px); } }
body.results-page .results { width:min(1180px,calc(100% - 48px)); margin:24px auto 0; }
body.results-page .results[hidden] { display:none; }
body.results-page .results-topline { align-items:flex-start; }
body.results-page .results-topline h2 { font-size:30px; }
body.results-page .destination-grid { align-items:start; }
@media (max-width:900px) {
  body.results-page .home-search-panel { padding:10px 16px 12px; }
  body.results-page .comparator-bar { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; background:transparent; box-shadow:none; }
  body.results-page .bar-origins { grid-column:1 / -1; }
  body.results-page .bar-origins .field,body.results-page .bar-origins .field + .field,body.results-page .bar-field { min-height:58px; border:1px solid var(--line); border-radius:var(--r-sm); }
  body.results-page .search-button { min-height:50px; margin:0; }
  body.results-page .search-favorite-button { width:auto; min-width:0; min-height:50px; margin:0; }
}
@media (max-width:700px) {
  body.results-page .site-header { padding:0 16px; }
  body.results-page .home-search-panel { top:0; }
  body.results-page .date-picker { bottom:84px; max-height:calc(100dvh - 100px); }
  body.results-page .search-heading { display:none; }
  body.results-page .search-toolbar { margin:8px 0 0; }
  body.results-page .toolbar-select select { width:100%; }
  body.results-page .comparator-bar { display:flex; flex-direction:column; gap:8px; }
  body.results-page .bar-origins { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
  body.results-page .bar-origins .field,body.results-page .bar-origins .field + .field,body.results-page .bar-field { min-height:56px; padding:9px 11px; }
  body.results-page .bar-field input,body.results-page .bar-origins .field input { font-size:16px; }
  body.results-page .search-button { width:100%; min-height:48px; }
  body.results-page .results { width:calc(100% - 32px); margin:18px auto 0; }
  body.results-page .results-topline { gap:16px; }
}
body.mobile-preview.results-page main { width:100%; }
body.mobile-preview.results-page .home-search-panel { position:sticky; top:0; padding:10px 12px; }
body.mobile-preview.results-page .results { width:calc(100% - 32px); margin:18px auto 0; }

body.results-page .results-intro { margin:0; }
body.results-page .results-intro .eyebrow { margin-bottom:4px; }
body.results-page .results-intro h1:focus { outline:none; }
body.results-page .results-intro h1 { color:var(--ink); font-family:"Playfair Display",Georgia,serif; font-size:34px; font-style:normal; font-weight:600; line-height:1.04; letter-spacing:0; }
body.results-page .results-intro h1::after { content:""; display:block; width:42px; height:3px; margin-top:8px; border-radius:var(--r-pill); background:var(--coral); }
body.results-page .search-favorite-button { align-self:stretch; display:grid; place-items:center; width:58px; min-width:58px; min-height:62px; margin-left:0; padding:0; border:1px solid #fff; border-radius:0 var(--r-md) var(--r-md) 0; background:#fff; color:var(--coral); box-shadow:0 10px 24px rgba(3,18,31,.16); transition:background-color .18s ease,border-color .18s ease,color .18s ease,box-shadow .18s ease; }
body.results-page .search-favorite-button svg { width:22px; height:22px; display:block; }
body.results-page .search-favorite-button:hover,body.results-page .search-favorite-button:focus-visible { border-color:#fff0e8; background:#fff0e8; color:var(--coral); box-shadow:0 12px 26px rgba(3,18,31,.2); outline:none; }
body.results-page .search-favorite-button.is-saved { border-color:var(--coral); background:var(--coral); color:#fff; }
body.results-page .results { margin-top:20px; }
body.results-page .favorite-status:empty { display:none; }
body.results-page .favorite-status.is-toast { position:fixed; z-index:140; left:50%; bottom:28px; min-height:0; margin:0; padding:12px 18px; border-radius:var(--r-pill); background:var(--ink); color:#fff; box-shadow:0 14px 38px rgba(6,17,30,.28); font-size:13px; transform:translateX(-50%); animation:favorite-toast-in .2s ease-out; }
@keyframes favorite-toast-in { from { opacity:0; transform:translate(-50%,8px); } to { opacity:1; transform:translate(-50%,0); } }
body.results-page .results-controls { display:grid; grid-template-columns:minmax(0,1fr) 250px; align-items:start; gap:16px; margin:0 0 24px; padding-top:20px; }
body.results-page .results-controls .filters-panel { margin:0; }
body.results-page .results-controls .filters-content { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); align-items:start; column-gap:24px; row-gap:18px; }
body.results-page .results-controls .filter-field { grid-column:span 3; }
body.results-page .results-controls .clear-filters { grid-column:1 / -1; justify-self:start; width:auto; }
body.results-page .results-controls .filter-field { min-width:0; }
.time-filters { grid-column:1 / -1; padding-top:4px; border-top:1px solid var(--line); }
.time-filters-heading { display:flex; align-items:end; justify-content:space-between; margin:8px 0 10px; }
.time-filters-heading strong,.time-filters-heading span { display:block; }
.time-filters-heading strong { color:var(--ink); font-size:14px; }
.time-filters-heading span { margin-top:2px; color:var(--muted); font-size:11px; }
.origin-time-filters { display:grid; gap:8px; }
.origin-time-filter { overflow:hidden; border:1px solid var(--line); border-radius:var(--r-sm); background:#f7f9fa; }
.origin-time-filter > summary { display:flex; align-items:center; min-height:44px; padding:0 12px; color:var(--ink); font-size:13px; font-weight:700; cursor:pointer; list-style:none; }
.origin-time-filter > summary::-webkit-details-marker { display:none; }
.origin-time-filter > summary::before { content:"+"; width:18px; color:var(--coral); font-size:18px; font-weight:400; }
.origin-time-filter[open] > summary::before { content:"–"; }
.origin-time-filter > summary span { margin-left:auto; color:var(--muted); font-size:11px; font-weight:500; }
.time-leg-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; padding:0 8px 8px; }
.time-leg { padding:10px; border:1px solid var(--line); border-radius:var(--r-xs); background:var(--paper); }
.time-leg h4 { margin:0 0 8px; color:var(--ink); font-size:12px; text-transform:uppercase; letter-spacing:.05em; }

/* Modèle unique de curseur, partagé par les horaires et les plafonds.
   Piste grise, segment corail entre les poignées, poignées blanches cerclées :
   sans le cercle blanc, une poignée corail sur un segment corail devient invisible. */
/* Volet dépliant du budget, calqué sur celui des horaires. */
.filter-group { grid-column:1 / -1; overflow:hidden; border:1px solid var(--line); border-radius:var(--r-sm); background:#f7f9fa; }
.filter-group > summary { display:flex; align-items:center; gap:8px; min-height:44px; padding:0 12px; color:var(--ink); font-size:.8125rem; font-weight:700; cursor:pointer; list-style:none; }
.filter-group > summary::-webkit-details-marker { display:none; }
.filter-group > summary::after { content:"+"; margin-left:auto; color:var(--muted); font-size:1rem; font-weight:400; }
.filter-group[open] > summary::after { content:"−"; }
.filter-group > summary:focus-visible { outline:3px solid var(--coral); outline-offset:-3px; }
.filter-group-icon { width:18px; height:18px; flex:0 0 18px; color:var(--coral); }
.filter-group-body { display:grid; gap:14px; padding:12px 12px 14px; background:var(--paper); border-top:1px solid var(--line); }
.filter-origin-icon { width:14px; height:14px; margin-right:6px; color:var(--coral); vertical-align:-2px; transform:rotate(45deg); }
/* Au maximum, un curseur ne filtre rien : pas d'étiquette du tout plutôt qu'un « sans limite ». */
.time-range-heading output:empty,.origin-time-filter > summary span:empty { display:none; }
.limit-field { --limit-fill:100%; display:grid; grid-template-columns:minmax(0,1fr) auto; align-content:start; align-items:center; gap:2px 12px; }
.limit-field .filter-label { grid-column:1; line-height:1.3; }
/* Réservée uniquement là où deux champs se partagent une ligne. */
@media (min-width:701px) { body.results-page .filters-content > .range-field .filter-label { min-height:2.6em; } }
/* Fourchette : deux poignées sur une piste, deux cases pour taper les bornes.
   Le segment coloré est ce qui est retenu ; le gris, ce qui est écarté. */
.range-field { --range-start:0%; --range-end:100%; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:2px 12px; }
.range-field[hidden] { display:none; }
.range-field .filter-label { grid-column:1; line-height:1.3; }
.range-value { grid-column:2; display:inline-flex; align-items:center; gap:2px; padding:2px 8px; border:1px solid var(--line); border-radius:var(--r-pill); background:var(--paper); }
.range-value:focus-within { border-color:var(--coral); box-shadow:0 0 0 3px rgba(255,106,19,.18); }
.range-input { width:9ch; field-sizing:content; min-width:5ch; max-width:11ch; min-height:0; padding:0; border:0; background:transparent; color:var(--ink); font:700 .75rem "DM Sans",Arial,sans-serif; text-align:center; appearance:textfield; }
.range-input::-webkit-outer-spin-button,.range-input::-webkit-inner-spin-button { appearance:none; margin:0; }
.range-input:focus { outline:none; }
.time-input { min-height:0; field-sizing:content; padding:0; border:0; background:transparent; color:var(--ink); font:700 .75rem "DM Sans",Arial,sans-serif; }
.time-input::-webkit-calendar-picker-indicator { display:none; }
.time-input:focus { outline:none; }
.range-sep,.range-unit { color:var(--muted); font-size:.6875rem; font-weight:700; }
.range-slider { position:relative; grid-column:1 / -1; height:28px; }
.range-track { position:absolute; left:0; right:0; top:12px; height:4px; border-radius:var(--r-pill); background:linear-gradient(to right,var(--line) 0 var(--range-start),var(--coral) var(--range-start) var(--range-end),var(--line) var(--range-end) 100%); }
.range-slider input[type="range"],.time-range-slider input[type="range"] { position:absolute; inset:0; width:100%; height:28px; min-height:0; margin:0; padding:0; border:0; border-radius:0; background:transparent; appearance:none; -webkit-appearance:none; }
.range-slider input[type="range"]:disabled { opacity:.45; }
.range-slider input[type="range"]::-webkit-slider-runnable-track { height:4px; background:transparent; }
.range-slider input[type="range"]::-moz-range-track { height:4px; background:transparent; }
.time-range { --time-start:0%; --time-end:100%; }
.time-range + .time-range { margin-top:16px; }
.time-range-heading,.time-range-limits { display:flex; align-items:center; justify-content:space-between; }
.time-range-heading > span { color:var(--ink); font-size:12px; font-weight:650; }
.time-range-heading output { padding:4px 8px; border-radius:var(--r-pill); background:#fff3ea; color:var(--ink); font-size:11px; font-weight:700; }
.time-range-slider { position:relative; height:28px; margin-top:4px; }
.time-range-track { position:absolute; left:0; right:0; top:12px; height:4px; border-radius:var(--r-pill); background:linear-gradient(to right,var(--line) 0 var(--time-start),var(--coral) var(--time-start) var(--time-end),var(--line) var(--time-end) 100%); }
.time-range-slider input[type="range"] { z-index:2; pointer-events:none; }
.time-range-slider input[type="range"]::-webkit-slider-runnable-track { height:4px; background:transparent; }
.range-slider input[type="range"]::-webkit-slider-thumb,.time-range-slider input[type="range"]::-webkit-slider-thumb { appearance:none; width:18px; height:18px; margin-top:-7px; border:2px solid var(--coral); border-radius:50%; background:var(--paper); box-shadow:0 1px 4px rgba(16,42,67,.28); cursor:grab; pointer-events:auto; }
.time-range-slider input[type="range"]::-moz-range-track { height:4px; background:transparent; }
.range-slider input[type="range"]::-moz-range-thumb,.time-range-slider input[type="range"]::-moz-range-thumb { appearance:none; width:18px; height:18px; margin-top:-7px; border:2px solid var(--coral); border-radius:50%; background:var(--paper); box-shadow:0 1px 4px rgba(16,42,67,.28); cursor:grab; pointer-events:auto; }
.time-range-slider input[type="range"]:focus-visible::-webkit-slider-thumb { outline:3px solid var(--ink); outline-offset:2px; }
.time-range-slider input[type="range"]:active::-webkit-slider-thumb { cursor:grabbing; transform:scale(1.08); }
.time-range-limits { margin-top:1px; color:var(--muted); font-size:.6875rem; }
body.results-page .results-controls .sort-control { position:relative; min-width:0; }
body.results-page .results-controls .sort-control label { position:absolute; left:0; top:-24px; margin:0; }
body.results-page .results-controls .sort-control select { width:100%; min-height:52px; padding-left:16px; border-radius:var(--r-md); font-weight:700; }
@media (max-width:900px) {
  body.results-page .results-controls { grid-template-columns:1fr; }
  body.results-page .results-controls .filters-content { grid-template-columns:repeat(2,minmax(0,1fr)); }
  body.results-page .results-controls .filter-field { grid-column:span 1; }
  body.results-page .results-controls .sort-control label { position:static; display:block; margin:0 0 4px; }
}
/* Grand écran : les filtres quittent le haut de page pour un volet latéral toujours déplié,
   calé sous la barre de recherche pendant le défilement (hauteur de la barre lue dans app.js).
   Mobile et tablette gardent le panneau repliable. */
@media (min-width:1100px) {
  body.results-page .results { display:grid; grid-template-columns:300px minmax(0,1fr); grid-template-rows:auto auto 1fr; column-gap:28px; align-items:start; }
  body.results-page .results-controls { display:contents; }
  body.results-page .results-intro { grid-column:2; grid-row:1; align-self:end; }
  body.results-page .favorite-status { grid-column:2; }
  body.results-page .results-controls .sort-control { grid-column:2; grid-row:1; align-self:end; justify-self:end; width:230px; }
  body.results-page .results-controls .sort-control label { position:static; display:block; margin:0 0 4px; }
  body.results-page .destination-grid { grid-column:2; grid-row:2; grid-template-columns:repeat(2,minmax(0,1fr)); margin-top:24px; }
  body.results-page .data-note { grid-column:2; grid-row:3; }
  body.results-page .results-controls .filters-panel { position:sticky; z-index:36; top:96px; grid-column:1; grid-row:1 / span 3; margin:0; border-radius:var(--r-md); max-height:calc(100dvh - 112px); overflow-y:auto; overscroll-behavior:contain; }
  /* Au-dessus de la barre (z-index 35), le volet échappe à son ombre portée ; il repasse
     dessous dès qu'une liste de suggestions ou le calendrier s'ouvre sur lui. */
  body.results-page:has(.home-search-panel .suggestions:not([hidden]),.home-search-panel .date-picker:not([hidden])) .results-controls .filters-panel { z-index:auto; }
  body.results-page .filters-panel > summary { cursor:default; }
  body.results-page .filters-panel > summary::after { content:none; }
  /* Volet resserré pour en montrer le plus possible sous la barre de recherche. */
  body.results-page .filters-panel > summary { min-height:44px; }
  body.results-page .results-controls .filters-content { grid-template-columns:1fr; row-gap:12px; padding:14px 16px 16px; }
  body.results-page .filters-panel .filter-field select { min-height:42px; }
  body.results-page .filters-panel .time-filters { padding-top:0; }
  body.results-page .filters-panel .time-filters-heading { margin:10px 0 8px; }
  body.results-page .filters-panel .clear-filters { min-height:36px; }
  body.results-page .filters-panel .origin-time-filter > summary { min-height:40px; }
  body.results-page .results-controls .filter-field,body.results-page .results-controls .clear-filters { grid-column:1; }
  body.results-page .results-controls .clear-filters { width:100%; }
  body.results-page .filters-content > .range-field .filter-label { min-height:0; }
  body.results-page .filters-panel .range-field .filter-label,body.results-page .filters-panel .range-field .range-value { grid-column:1 / -1; justify-self:start; }
  body.results-page .filters-panel .range-field .range-value { margin-top:4px; }
  body.results-page .filters-panel .time-leg-grid { grid-template-columns:1fr; padding:0 6px 6px; }
  body.results-page .filters-panel .time-leg { padding:10px 8px; }}
@media (max-width:700px) {
  body.results-page .results-intro h1 { font-size:29px; }
  body.results-page .search-favorite-button { min-height:48px; }
  body.results-page .results-controls .filters-content { grid-template-columns:1fr; }
  body.results-page .results-controls .filter-field { grid-column:1; }
  .time-leg-grid { grid-template-columns:1fr; }
  .origin-time-filter:not([open]) > summary { min-height:48px; }
  .time-range + .time-range { margin-top:18px; }
  .time-range-slider { height:34px; }
  .time-range-track { top:15px; }
  .range-slider { height:34px; }
  .range-track { top:15px; }
  .range-slider input[type="range"],.time-range-slider input[type="range"] { height:34px; }
  .time-range-slider input[type="range"]::-webkit-slider-thumb { width:24px; height:24px; margin-top:-10px; }
}

/* Résultats mobile : le volet s'ouvre sur demande et se replie en descendant. Son ouverture
   agrandit réellement le haut de la page et repousse les résultats, sans superposition. */
.search-summary { display:none; }
@media (max-width:700px) {
  body.results-page .home-search-panel { min-height:60px; padding:0; }
  body.results-page .search-summary { position:absolute; z-index:3; inset:0; display:flex; width:100%; align-items:center; gap:8px; min-height:60px; padding:0 12px 0 16px; color:#fff; opacity:0; visibility:hidden; pointer-events:none; transition:opacity .2s ease,visibility .2s; }
  body.results-page.is-search-compact .search-summary { opacity:1; visibility:visible; pointer-events:auto; }
  .search-summary-trigger { display:flex; flex:1 1 auto; align-items:center; gap:12px; min-width:0; min-height:60px; padding:0; border:0; background:transparent; color:#fff; text-align:left; }
  .search-summary-copy { display:grid; gap:2px; min-width:0; }
  .search-summary-copy strong { overflow:hidden; font-size:15px; font-weight:700; letter-spacing:-.01em; text-overflow:ellipsis; white-space:nowrap; }
  .search-summary-copy small { color:rgba(255,255,255,.68); font-size:12px; font-weight:600; }
  .search-summary-icon { display:grid; flex:0 0 auto; place-items:center; width:38px; height:38px; margin-left:auto; border-radius:50%; background:var(--coral); color:#fff; }
  .search-summary-icon svg { width:18px; height:18px; }
  .search-summary-trigger:focus-visible,.compact-search-favorite:focus-visible { outline:3px solid var(--coral); outline-offset:-3px; }
  .compact-search-favorite { display:grid; flex:0 0 38px; place-items:center; width:38px; height:38px; padding:0; border:1px solid rgba(255,255,255,.34); border-radius:50%; background:rgba(255,255,255,.1); color:var(--coral); }
  .compact-search-favorite svg { width:20px; height:20px; }
  .compact-search-favorite.is-saved { border-color:var(--coral); background:var(--coral); color:#fff; }

  body.results-page .home-search-panel-inner { position:relative; z-index:2; width:100%; max-height:760px; padding:10px 16px 14px; overflow:visible; background:var(--ink); opacity:1; transition:max-height .38s cubic-bezier(.33,1,.68,1),padding .38s cubic-bezier(.33,1,.68,1),opacity .2s ease; }
  body.results-page.is-search-compact .home-search-panel-inner { max-height:0; padding-top:0; padding-bottom:0; overflow:hidden; opacity:0; visibility:hidden; pointer-events:none; }

  body.results-page .comparator-bar { display:grid; grid-template-columns:minmax(0,1fr) 58px; }
  body.results-page .bar-origins,body.results-page .bar-field { grid-column:1 / -1; }
  body.results-page .search-button { grid-column:1; order:0; width:auto; border-radius:var(--r-md) 0 0 var(--r-md); }
  body.results-page .search-favorite-button { grid-column:2; order:0; width:58px; border-radius:0 var(--r-md) var(--r-md) 0; }
  body.results-page .favorite-status.is-toast { bottom:94px; max-width:calc(100% - 32px); white-space:nowrap; }
}
@media (max-width:700px) and (prefers-reduced-motion:reduce) {
  body.results-page .search-summary,body.results-page .home-search-panel-inner { transition:none; }
}

/* La case en cours de saisie s'allume : bordure corail, halo doux et étiquette corail.
   Le focus clavier garde son propre contour par-dessus — la couleur seule ne suffit pas. */
body .bar-origins .field:focus-within,
body .bar-field:focus-within,
body .bar-origins .field.is-active-field,
body .bar-field.is-active-field {
  position:relative;
  z-index:3;
  border:1px solid var(--coral);
  box-shadow:0 0 0 3px rgba(255,106,19,.18);
}
body .bar-origins .field:focus-within > span,
body .bar-field:focus-within > span,
body .bar-origins .field.is-active-field > span,
body .bar-field.is-active-field > span { color:var(--coral); }
body .bar-origins .field input:focus-visible,
body .bar-field input:focus-visible { outline:2px solid var(--ink); outline-offset:3px; }
@media (prefers-reduced-motion:no-preference) {
  .bar-origins .field,.bar-field { transition:border-color .15s ease,box-shadow .15s ease; }
}

/* Le « ? » du bandeau et la visite guidée de la barre de recherche. */
.header-help { display:grid; place-items:center; width:38px; height:38px; margin-left:auto; margin-right:12px; padding:0; border:1px solid rgba(255,255,255,.42); border-radius:50%; background:transparent; color:#fff; font:700 16px "DM Sans",Arial,sans-serif; line-height:1; transition:background-color .15s ease,border-color .15s ease; }
.header-help:hover { border-color:var(--coral); background:rgba(255,255,255,.14); }
.header-help:focus-visible { outline:3px solid var(--coral); outline-offset:2px; }
.site-header .header-help + .account-entry { margin-left:0; }
.tour-scrim { position:fixed; z-index:110; inset:0; background:rgba(6,17,30,.62); }
body.is-touring .home-search-panel,body.is-touring .search-card { position:relative; z-index:120; }
.is-tour-target { position:relative; z-index:121; }
.tour-bubble { position:fixed; z-index:130; width:min(330px,calc(100vw - 24px)); padding:18px 20px 16px; border-radius:var(--r-md); background:var(--paper); color:var(--ink); box-shadow:0 24px 60px rgba(6,17,30,.42); }
.tour-bubble::before { content:""; position:absolute; top:-7px; left:50%; width:14px; height:14px; margin-left:-7px; border-radius:var(--r-xs) 0 0 0; background:var(--paper); transform:rotate(45deg); }
.tour-bubble.is-above::before { top:auto; bottom:-7px; border-radius:0 0 var(--r-xs) 0; }
.tour-bubble .tour-step { margin:0; color:var(--coral); font-size:11px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.tour-bubble h2 { margin:9px 0 0; font-size:20px; letter-spacing:-.025em; }
.tour-bubble .tour-copy { margin:8px 0 0; color:var(--muted); font-size:14px; line-height:1.5; }
.tour-actions { display:flex; align-items:center; gap:8px; margin-top:16px; }
.tour-actions button { min-height:38px; padding:8px 14px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--paper); color:var(--ink); font:700 13px "DM Sans",Arial,sans-serif; }
.tour-actions .tour-skip { margin-right:auto; border-color:transparent; color:var(--muted); padding-left:0; }
.tour-actions .tour-skip:hover { color:var(--ink); }
.tour-actions .tour-next { border-color:var(--coral); background:var(--coral); color:#fff; }
.tour-actions .tour-next:hover { border-color:var(--ink); background:var(--ink); }
.tour-actions button:focus-visible { outline:3px solid var(--coral); outline-offset:2px; }
@media (max-width:700px) { .header-help { width:36px; height:36px; margin-right:10px; } .tour-bubble { padding:16px 16px 14px; } .tour-bubble h2 { font-size:18px; } }
/* Détail sans tarifs live disponibles : jamais de prix inventé, une relance de recherche. */
.detail-unavailable { margin:24px 0; background:var(--paper); }
.detail-rerun { display:inline-flex; align-items:center; min-height:42px; margin-top:8px; padding:0 18px; border-radius:var(--r-pill); background:var(--ink); color:#fff; font-weight:700; text-decoration:none; }
.detail-rerun:hover,.detail-rerun:focus-visible { background:var(--coral); }
.detail-page .flight-price.is-unlinked { cursor:default; }
/* Détail : modifier un départ dans son bloc sombre, puis relance live de la destination. */
/* Le champ de départ se saisit comme sur l'écran de recherche, et porte la même forme que
   les filtres voisins : une étiquette, un champ, une liste de suggestions. */
.origin-editor.filter-field { position:relative; }
.origin-editor-input { width:100%; min-height:42px; margin:0; padding:8px 10px; border:1px solid var(--line); border-radius:var(--r-xs); background:#fff; color:var(--ink); font:600 14px "DM Sans",Arial,sans-serif; }
.origin-editor-suggestions { position:absolute; top:calc(100% + 4px); left:0; right:auto; z-index:30; width:min(340px,calc(100vw - 48px)); max-height:320px; overflow:auto; transform:none; }
/* La liste de suggestions doit pouvoir déborder de la carte et du tiroir. On ne lève le
   rognage que le temps où elle est visible : la lever dès que le champ existe laissait voir
   le contenu des tiroirs refermés, puisque le champ, lui, est toujours là. */
.detail-page .flight-person:has(.origin-editor-suggestions:not([hidden])) { overflow:visible; position:relative; z-index:3; }
.flight-tuner-clip:has(.origin-editor-suggestions:not([hidden])) { overflow:visible; }
.flight-tuner-shell:has(.origin-editor-suggestions:not([hidden])) { position:relative; z-index:3; }

/* Fiche destination : le réglage d'un vol est agrafé au bandeau de ce vol. Les horaires
   appartiennent à un départ — les tenir dans le volet global mangeait un écran entier et
   repoussait les vols hors de vue, alors qu'on les règle en les regardant. */
/* La poignée du tiroir : une barre pleine largeur sous le bandeau, avec son chevron. */
.flight-tuner-toggle { grid-column:1 / -1; display:flex; align-items:center; justify-content:center; gap:14px; width:100%; min-height:46px; padding:0 18px; border:0; border-top:1px solid var(--line); background:var(--paper); color:var(--ink); font-family:inherit; font-size:13px; font-weight:700; cursor:pointer; }
.flight-tuner-toggle:hover,.flight-tuner-toggle:focus-visible { background:var(--paper); color:var(--coral); }
.tuner-chevron { flex:0 0 auto; width:17px; height:17px; color:var(--coral); transition:transform .28s ease; }
/* Seule icône plus épaisse que le trait commun : celle-ci n'illustre pas, elle s'actionne.
   À 17 px, 1,8 la rendait trop discrète pour une commande. L'écart est voulu. */
.tuner-chevron { stroke-width:2.2; }
.flight-tuner-toggle[aria-expanded="true"] .tuner-chevron { transform:rotate(180deg); }
.flight-tuner-toggle.has-filters > span::after { content:""; display:inline-block; width:6px; height:6px; margin-left:7px; border-radius:50%; background:var(--coral); vertical-align:middle; }
/* Le tiroir replié a une hauteur nulle ; l'ouverture anime une hauteur mesurée au clic. La
   grille 0fr → 1fr aurait été plus simple, mais le bandeau est lui-même une grille et le
   « fr » s'y résout à zéro : le tiroir ne s'ouvrait jamais. */
.flight-tuner-shell { grid-column:1 / -1; }
.flight-tuner-clip { overflow:hidden; transition:max-height .28s ease; }
.flight-tuner-shell[data-open="false"] .flight-tuner-clip { max-height:0; }
@media (prefers-reduced-motion:reduce) { .flight-tuner-clip,.tuner-chevron { transition:none; } }
.detail-filter-hint { grid-column:1 / -1; margin:0; color:var(--muted); font-size:12px; }
/* Dans les volets de la fiche, une fourchette occupe une colonne étroite : l'étiquette passe
   au-dessus de ses cases, comme pour les autres champs, au lieu de se replier à côté. */
.detail-filters-content .range-field .filter-label,.flight-tuner-fields .range-field .filter-label,
.detail-filters-content .range-field .range-value,.flight-tuner-fields .range-field .range-value { grid-column:1 / -1; justify-self:stretch; }
.detail-filters-content .range-field .range-value,.flight-tuner-fields .range-field .range-value { justify-content:center; min-height:42px; }
.flight-tuner { padding:4px 18px 18px; background:#f7f9fa; }
.flight-tuner-fields { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); align-items:end; gap:12px; }
.flight-tuner-times { border-top:1px solid var(--line); }
.flight-tuner-times .time-filters-heading { margin:14px 0 10px; }
.flight-tuner .time-leg-grid { padding:0; }
/* Pied de volet : le bouton et le message vivent toujours au même endroit, qu'on ait touché
   à quelque chose ou non. Un bouton qui semble apparaître se cherche à chaque fois. */
.flight-tuner-actions { display:flex; flex-wrap:wrap; align-items:center; gap:14px; margin-top:16px; padding-top:14px; border-top:1px solid var(--line); }
.flight-tuner-actions .detail-filter-status { color:var(--coral); font-weight:600; }
.flight-tuner-actions button { min-height:42px; padding:0 18px; border:0; border-radius:var(--r-pill); background:var(--ink); color:#fff; font-weight:700; cursor:pointer; }
.flight-tuner-actions button:hover,.flight-tuner-actions button:focus-visible { background:var(--coral); }
.flight-tuner-actions button[disabled] { opacity:.6; cursor:progress; }
.flight-options { margin-top:16px; padding-top:14px; border-top:1px solid var(--line); }
.flight-options h4 { margin:0 0 10px; color:var(--ink); font-size:13px; }
.flight-options ul { display:grid; gap:8px; margin:0; padding:0; list-style:none; }
.flight-option { display:grid; grid-template-columns:minmax(78px,auto) minmax(110px,auto) minmax(64px,auto) minmax(72px,auto) minmax(0,1fr); align-items:center; gap:12px; width:100%; min-height:48px; padding:0 14px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--paper); color:var(--muted); font-size:12px; text-align:left; cursor:pointer; }
.flight-option:hover,.flight-option:focus-visible { border-color:var(--coral); color:var(--ink); }
.flight-option strong { color:var(--ink); font-size:16px; letter-spacing:-.03em; font-variant-numeric:tabular-nums; }
.flight-option-time { color:var(--ink); font-weight:600; font-variant-numeric:tabular-nums; }
.flight-option-airline { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.flight-option.is-current { border-color:var(--ink); background:var(--gold); color:var(--ink); }
.detail-filter-reset { min-height:44px; padding:0 14px; border:1px solid var(--line); border-radius:var(--r-pill); background:transparent; color:var(--muted); font-size:12px; font-weight:600; cursor:pointer; }
.detail-filter-reset:hover,.detail-filter-reset:focus-visible { border-color:var(--coral); color:var(--coral); }
@media (max-width:760px) {
  .flight-option { grid-template-columns:1fr 1fr; row-gap:4px; padding:12px 14px; }
  .flight-option strong,.flight-option-airline { grid-column:1 / -1; }
}
.back-dialog p { margin:0 0 20px; color:var(--muted); line-height:1.5; }
.back-dialog-actions { display:flex; flex-direction:column; gap:10px; }
.back-dialog-actions button { min-height:46px; padding:0 18px; border:0; border-radius:var(--r-pill); background:var(--ink); color:#fff; font-size:14px; font-weight:700; cursor:pointer; }
.back-dialog-actions button:hover,.back-dialog-actions button:focus-visible { background:var(--coral); }
.back-dialog-actions button.ghost { border:1px solid var(--line); background:transparent; color:var(--muted); font-weight:600; }
.back-dialog-actions button.ghost:hover,.back-dialog-actions button.ghost:focus-visible { border-color:var(--coral); background:transparent; color:var(--coral); }
