/* theme-pro.css — fond blanc, lignes modernes et professionnelles (chargé en dernier sur chaque page).
   Remplace l'habillage « carnet de voyage » (papier crème, notes manuscrites, tampons, étiquettes inclinées,
   ombres dures, pointillés) par un style net : blanc, filets gris clair, Work Sans, cartes à bord fin.
   CSS seulement : aucune page ni aucun script n'est modifié. Les feuilles injectées plus tard (outils.css,
   comparer.css, itineraire.css, ot-*.css) passent APRÈS ce fichier : les règles qui les visent sont donc
   préfixées par « html » ou marquées !important. */

/* ============================================================ 0. POLICES
   Work Sans partout. « T2W Titre » et « T2W Chiffre » sont des alias de Work Sans 700 : tout élément qui
   demandait Fraunces (titres) ou Anton (prix, codes) reçoit Work Sans gras, quel que soit le poids demandé.
   La face « italic » pointe vers le fichier droit : les <em> des titres restent droits (pas d'italique simulé). */
@font-face{font-family:"T2W Titre";font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/work-sans-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"T2W Titre";font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/work-sans-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"T2W Chiffre";font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/work-sans-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"T2W Chiffre";font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/work-sans-latin-700-normal.woff2) format("woff2")}
@font-face{font-family:"T2W Texte";font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/work-sans-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"T2W Texte";font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/work-sans-latin-500-normal.woff2) format("woff2")}

/* ============================================================ 1. JETONS (clair) */
:root,html:root{
  --bg:#fff;--surface:#fff;--soft:#f6f7f9;--line:#e5e7eb;--line-strong:#d1d5db;
  --ink:#0f1b2a;--muted:#556070;--blue:#1d4f91;--orange:#c94d23;--orange-ink:#a83b17;--sun:#f2b33d;
  --paper-shadow:0 1px 2px rgba(15,27,42,.06);
  --tp-sh:0 1px 2px rgba(15,27,42,.06);
  --tp-sh-hover:0 1px 2px rgba(15,27,42,.06),0 8px 24px rgba(15,27,42,.08);
  --tp-r:12px;--tp-r-btn:10px;--tp-navy:#0f1b2a;--tp-tint:#fdf1ec;--tp-tab:#f1f3f6;
  --f-body:"Twemoji Country Flags","Work Sans","Work Sans Fallback","Work Sans Fallback R",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-display:"Twemoji Country Flags","T2W Titre","Work Sans Fallback",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-hand:"Twemoji Country Flags","T2W Texte","Work Sans Fallback",system-ui,sans-serif;
  --f-poster:"Twemoji Country Flags","T2W Chiffre","Work Sans Fallback",system-ui,sans-serif;
  /* jetons des pages (crème → blanc, tampons → orange sobre) */
  --hv-ink:var(--ink);--hv-stamp:var(--orange-ink);--acc-stamp:var(--orange-ink);--pr-tampon:var(--orange-ink);--cine-tampon:var(--orange-ink);
  --cine-creme:#f8fafc;--cine-encre:#0f1b2a;--cine-nuit:#0b1220;--cine-saumon:#ffb08a;
  --ds-creme:#f8fafc;--ds-nuit:#0b1220;--ds-panneau:#111a2b;--ds-saumon:#ffb08a;
  --lgg-ground:#eef1f4;--lgg-sky:#eef3f8;--lgg-sun:#fbe7da
}
html #app .ot-root,html #app .ot-reglette{--ot-creme:#f8fafc;--ot-nuit:#111a2b;--ot-saumon:#ffb08a}
html #app .ot-comparer{--cp2-creme:#f8fafc;--cp2-nuit:#111a2b}
html #app .ck{--ck-creme:#f8fafc;--ck-nuit:#111a2b}
html .qs-res{--qs-papier:#fff;--qs-papier2:#f6f7f9;--qs-encre:#0f1b2a;--qs-gris:#556070;--qs-corde:#d1d5db;--qs-fond:#0b1220}
html footer{--ft-ink:#f1f4f8;--ft-soft:rgba(241,244,248,.74);--ft-faint:rgba(241,244,248,.5);--ft-line:rgba(241,244,248,.12);background:#0f1b2a!important;color:var(--ft-ink)!important}

/* ============================================================ 2. JETONS (sombre) */
html[data-theme=dark]{
  --bg:#0b1220;--surface:#111a2b;--soft:#16213a;--line:#243044;--line-strong:#33405a;
  --ink:#e8edf4;--muted:#9aa6b5;--blue:#8db4ea;--orange:#f08a5d;--orange-ink:#f5a07a;--sun:#f5c35f;
  --paper-shadow:none;--tp-sh:0 1px 2px rgba(0,0,0,.3);--tp-sh-hover:0 1px 2px rgba(0,0,0,.3),0 10px 28px rgba(0,0,0,.35);
  --tp-navy:#e8edf4;--tp-tint:#2a1c17;
  --hv-ink:var(--ink);--hv-stamp:var(--orange-ink);--acc-stamp:var(--orange-ink);--pr-tampon:var(--orange-ink);--cine-tampon:var(--orange-ink);
  --cine-creme:#f1f4f8;--ds-creme:#f1f4f8
}
html[data-theme=dark] footer{background:#070c16!important}
html[data-theme=dark] .qs-res{--qs-papier:#111a2b;--qs-papier2:#16213a;--qs-encre:#e8edf4;--qs-gris:#9aa6b5}

/* ============================================================ 3. FOND ET TEXTE DE BASE */
html,html body{background:var(--bg)!important;background-image:none!important;color:var(--ink)}
html body{font-family:var(--f-body);letter-spacing:-.003em;-webkit-font-smoothing:antialiased}
html #app,html #app>main{background-color:var(--bg);background-image:none}
html body:before,html body:after{background-image:none!important}

/* titres : Work Sans 700, serrés */
html :is(h1,h2){font-weight:700;font-style:normal}
html :is(h3,h4){font-weight:650;font-style:normal}
html :is(h1,h2){line-height:1.12}
html :is(h3,h4){line-height:1.25}
html :is(h1,h2,h3,h4) :is(em,i){font-style:normal;font-family:inherit}

/* liens dans le texte : bleu marine, soulignement discret */
html main :is(p,li,dd,td) a:not([class]){color:var(--blue);text-decoration-thickness:1px;text-underline-offset:3px}

/* chiffres alignés partout où l'ancienne police d'affiche servait (prix, codes, compteurs) */
html :is(.price,.prix,[class*="-prix"],[class*="-price"],[class*="-code"],[class*="-num"]){font-variant-numeric:tabular-nums}

/* notes manuscrites décoratives : retirées */
html .hand-note,html .globe-scribble{display:none!important}

/* ============================================================ 4. CARTES, PANNEAUX, BOUTONS GÉNÉRIQUES */
html .card,html .panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--tp-r);box-shadow:var(--tp-sh)}
html .btn{border-radius:var(--tp-r-btn);min-height:44px;font-weight:600;box-shadow:none}
html .btn:before{display:none}
html .btn.primary{background:var(--orange);color:#fff;border-color:var(--orange)}
html .btn.primary:hover{background:#b3431d;color:#fff}
html[data-theme=dark] .btn.primary{background:#c94d23;border-color:#c94d23}
html .btn.secondary{background:transparent;color:var(--ink);border:1px solid var(--line-strong)}
html .btn.secondary:hover{background:var(--soft);color:var(--ink);border-color:var(--line-strong)}
html .btn:hover,html .card:hover{transform:none}
@media (hover:hover) and (pointer:fine){
  html a.card:hover,html .card:has(>a):hover{box-shadow:var(--tp-sh-hover)}
}
html :is(input,select,textarea):not([type=checkbox]):not([type=radio]):not([type=range]){border-radius:10px}

/* ============================================================ 5. EN-TÊTE ET PIED */
html #app>header.hx,html #app>header{background:var(--bg)!important;border-bottom:1px solid var(--line)!important;box-shadow:none!important}
html footer{border-top:0}
/* « Carnet » (passeport à tampons) : retiré de l'en-tête à la demande du propriétaire */
html #app>header .t2w-pass-nav.hd-carnet,html .t2w-pass-nav.hd-carnet{display:none!important}

/* ============================================================ 6. BARRE DU BAS (téléphone)
   Barre blanche pleine largeur, filet en haut, sans encoches ; onglet actif en orange avec une pastille douce. */
html .mc-barre{left:0;right:0;bottom:0;height:calc(60px + env(safe-area-inset-bottom,0px));padding:4px 6px calc(4px + env(safe-area-inset-bottom,0px));
  --papier:#fff;--encre:var(--line);--repos:#5b6574;--tampon:var(--tp-tab);--sur-tampon:var(--orange-ink)}
html .mc-barre:before{-webkit-mask:none;mask:none;border:0;border-top:1px solid var(--line);border-radius:0;background:var(--papier)}
html .mc-barre:after{display:none}
html .mc-barre .mc-ind{left:6px;top:4px;bottom:calc(4px + env(safe-area-inset-bottom,0px));width:calc((100% - 12px)/var(--n))}
html .mc-barre .mc-ind>b{inset:2px 6px;border-radius:10px;background:var(--tampon);box-shadow:none;transform:none}
html .mc-barre .mc-ind>b:after{content:"";position:absolute;left:28%;right:28%;top:-6px;height:3px;border-radius:0 0 3px 3px;background:var(--orange)}
html .mc-barre a{color:var(--repos);font-weight:600}
html .mc-barre a.on{color:var(--sur-tampon);font-weight:700}
html[data-theme=dark] .mc-barre{--papier:#0f1828;--encre:var(--line);--repos:#a3aebd;--tampon:#1c2740;--sur-tampon:#f5a07a}


/* ============================================================ 7. CARTES : bord fin, coins 12 px, ombre légère
   (remplace les bords encre + ombres dures décalées « 6px 6px 0 ») */
html #app :is(.hv-pass,.hv-ticket,.hv-esc-list li,.rv-card,.al-box,.acc-pass,.gd-card,.of-book,.of-tier,.of-promo,.of-home-card,.lg-card,.of-dl-card,.home-step,
  .pr-pass,.pr-actions li,.ds-billet,.py-billet,.py-cabine,.py-visa,.py-film-box,.py-peek-in,.ot-ticket,.ot-offre,.ot-hub-parcours,.ot-sa-carte,
  .ot-vl-panneau,.ot-vl-bref,.ot-jo-pass,.ot-jo-p fieldset,.cp2-verdict,.cp2-pass,.it-carte,.it-pass,.it-res,.it-escale,.it-vues,.qs-tt,.qs-block,.qs-bloc,
  .cm-main,.cm-menu,.cm-team,.cm-prof-card,.cm-me-row,.pp-card,.pp-ov,.gc details,.emo-card,.ch-stage,.cn-detail,.gp-result,.cmp-grid,.rp-maintenant,
  .gd-sticky,.rv-invite-in,.ck-pass,.av-fig,.avt-mosaic figure,.qa-grid a,.ots-alertes){
  border:1px solid var(--line)!important;border-radius:var(--tp-r)!important;box-shadow:var(--tp-sh)!important}
html #app :is(.hv-pass,.hv-ticket,.hv-esc-list li,.rv-card,.al-box,.acc-pass,.gd-card,.of-book,.of-tier,.of-home-card,.lg-card,.of-dl-card,.home-step,.pr-pass,
  .pr-actions li,.ds-billet,.py-billet,.py-cabine,.py-visa,.ot-ticket,.ot-offre,.ot-hub-parcours,.ot-sa-carte,.ot-vl-bref,.ot-jo-pass,.cp2-pass,.it-pass,
  .it-res,.it-escale,.qs-tt,.cm-main,.cm-team,.pp-card,.emo-card,.ck-pass,.qa-grid a){background-color:var(--surface)}
html .al-box,html .gc details,html .qs-block,html .av-fig,html .avt-mosaic figure,html .rp-maintenant{border:1px solid var(--line)!important;border-radius:var(--tp-r)!important;box-shadow:var(--tp-sh)!important}
/* « offre la plus choisie » : un filet orange au lieu de l'ombre orange */
html #app :is(.hv-ticket-hot,.acc-pass.is-hot,.of-tier.hot,.ds-billet-chaud,.ot-offre-coach,.gd-pack){border-color:var(--orange)!important;box-shadow:0 0 0 1px var(--orange),var(--tp-sh)!important}
@media (hover:hover) and (pointer:fine){
  html #app :is(.hv-ticket,.acc-pass,.gd-card,.of-book,.of-home-card,.lg-card,.ds-billet,.ot-ticket,.ot-jo-pass,.cm-card,.qa-grid a,.rv-card):hover{box-shadow:var(--tp-sh-hover)!important;transform:none!important}
  html #app :is(.hv-ticket-hot,.acc-pass.is-hot,.ds-billet-chaud):hover{box-shadow:0 0 0 1px var(--orange),var(--tp-sh-hover)!important}
}
html #app :is(.hv-ticket,.acc-pass,.ds-billet,.ds-carte,.ot-ticket,.gd-card,.of-home-card,.qa-grid a):active{transform:none!important}

/* panneaux sombres (tableaux, packs) : on garde le fond nuit, sans ombre dure ni bord encre */
html #app :is(.ds-tableau,.ot-board,.pr-tableau,.ds-pack,.ot-suite,.cp2-six-b,.rp2-talon,.ds-passeport,.ds-carte,.it-calcul){box-shadow:none!important;border-radius:var(--tp-r)!important}
html #app :is(.ds-tableau,.ot-board,.pr-tableau){border:1px solid rgba(255,255,255,.08)!important}

/* ============================================================ 8. BOUTONS : pleins, coins 10 px, 44 px minimum, sans ombre */
html #app :is(.pr-suivant,.pr-btn,.py-buy,.py-btn2,.py-dock-buy,.ot-btn,.ds-pack-buy,.ds-buy,.cine-cta,.cine-presse,.gd-hero-buy,.qs-tt-btn,.hv-cta,.ct-checkout,.hxs-cta){
  border-radius:var(--tp-r-btn)!important;box-shadow:none!important;min-height:44px}
html #app :is(.pr-suivant,.pr-btn,.py-buy,.py-btn2,.py-dock-buy,.ot-btn,.ds-pack-buy,.ds-buy,.cine-cta,.cine-presse,.gd-hero-buy,.qs-tt-btn,.hv-cta):is(:hover,:active){transform:none!important}
/* bouton secondaire (version « claire ») : contour gris */
html #app :is(.pr-btn-clair,.ot-btn-clair,.py-btn2-clair){background:var(--surface)!important;color:var(--ink)!important;border:1px solid var(--line-strong)!important}
html #app :is(.pr-btn-clair,.ot-btn-clair,.py-btn2-clair):hover{background:var(--soft)!important}
/* puces, onglets, choix : pas d'ombre décalée */
html #app :is(.hv-key span,.pr-key>span,.acc-dest span,.ds-puce,.ds-pp-lien,.ds-rn,.py-rond,.py-opt,.py-ch-btn,.py-rc,.py-seat,.ot-onglets a,.ot-onglets button,.ot-reglette,
  .cp2-select-f,.cp2-filtres button,.it-outil,.it-preset,.it-chip,.ot-vl-slot,.ot-vl-base,.ot-vl-couche,.ot-vl-ligne,.ot-sa-mois button,.ot-jo-obj button,.ots-pill,.of-quick button,
  .tools-country a,.cm-socials a,.cm-prov,.cm-card,.cm-tea,.la-lang,.la-spk,.al-chip,.nv-hero,.rv-nav,.ot-toast,.it-toast,.ct-toast,.gp-page,.ot-saisie,.it-saisie,.it-cherche input,.it-date input,.ot-sa-select select){
  box-shadow:none!important}
html #app :is(.hv-key span,.pr-key>span,.py-opt,.py-ch-btn,.py-seat,.ot-sa-mois button,.ot-jo-obj button,.ots-pill,.cp2-filtres button,.it-outil,.it-preset,.ot-vl-slot,.ot-vl-ligne,.al-chip){
  border-width:1px!important;border-color:var(--line-strong)!important}
html #app .hv-key:is(:hover,:active) span,html #app .pr-key:is(:hover,:active)>span{transform:none!important}
html #app .hv-key span,html #app .pr-key>span{border-radius:10px!important}
/* choix coché : fond marine plein, sans ombre */
html #app .hv-key input:checked+span,html #app .pr-key input:checked+span,html #app .acc-dest input:checked+span{background:var(--tp-navy)!important;border-color:var(--tp-navy)!important;color:var(--bg)!important}
html #app :is(.py-opt[aria-pressed=true],.py-ch-btn.is-on,.py-seat.is-on,.ot-sa-mois button[aria-pressed=true],.ot-jo-obj button[aria-pressed=true],.ots-pill[aria-pressed=true],.cp2-filtres [aria-pressed=true],.ot-vl-slot[aria-pressed=true],.ot-vl-ligne[aria-pressed=true],.ot-vl-ligne[aria-expanded=true],.al-chip:has(input:checked),.al-chip.al-on){border-color:var(--tp-navy)!important}
html .globi-teaser,html .gp-result,html .tools-country a.on,html .ct-toast,html .ct-checkout,html .gd-sticky{box-shadow:var(--tp-sh)!important}
html .ot-toast,html .it-toast,html .ct-toast{box-shadow:var(--tp-sh-hover)!important}

/* ============================================================ 9. PLUS D'INCLINAISON NI DE TAMPONS */
html #app :is(.hv-pass,.hv-keys legend,.hv-tag,.acc-note,.acc-band b,.pr-pass,.ds-note,.ds-f-t>span,.ds-votre,.ds-tag,.ds-c-rang,.ds-c-ferme,.py-pile-astuce,.py-rc,
  .py-tag,.py-photo,.qs-ig-note,.qs-res .qs-ig,.cp2-pass,.cp2-vs-t,.ot-hub-hublot-note,.ot-hub-note,a.ot-etiq,.ot-ptag,.ot-sa-postale,.ot-sa-mois button,.ot-jo-pass,.of-tag,
  .gd-card,.gd-wave,.gd-wave>span,.gd-pole,.gd-pole>*,.gd-pdf,.gd-fan>span,.of-quick b,.of-quick>*,.rv-card,.rv-pick label,.home-step,.tp-frame,.boarding,.it-preset,.it-chip){
  transform:none!important;rotate:none!important}
html #app .ds-carte:hover .ds-tag,html #app .ds-tag:nth-child(n){transform:none!important}
html #app .hv-tag.is-cur .hv-tag-name:after{transform:none!important;font:600 .7rem/1.6 var(--f-body)!important;letter-spacing:.04em;text-transform:uppercase;border-radius:999px!important;padding:0 .6em!important;vertical-align:.2em}
/* tampons encreurs décoratifs : retirés (l'information est déjà écrite à côté) */
html #app :is(.hv-stamp,.pr-tampon,.ot-tampon,.acc-stamp,.of-stamps,.stamp,.cp2-tampon-ferme){display:none!important}
html #app .ds-passeport.is-complet:after{content:none!important;display:none!important}

/* ============================================================ 10. ÉTIQUETTES À BAGAGE → PASTILLES */
html #app :is(.hv-tag,.ds-tag,.ot-ptag,.ot-etiq){clip-path:none!important}
html #app .hv-tag{border:1px solid var(--line);border-radius:var(--tp-r)!important}
html #app .hv-tags li{filter:none!important}
html #app .hv-tag-hole{display:none!important}
html #app .ds-tag{padding:3px 10px!important;border-radius:999px!important;min-height:24px;font-weight:600!important}
html #app .ot-ptag,html #app .ot-etiq{border-radius:999px!important}
html #app .hv-tag-name{font-family:var(--f-display)!important;font-weight:700!important;font-size:1.25rem!important}
html #app .hv-tag-facts,html #app .hv-lines dd{font-family:var(--f-body)!important;font-variant-numeric:tabular-nums}
@media (hover:hover) and (pointer:fine){html #app .hv-tag:hover{box-shadow:var(--tp-sh-hover)}}

/* ============================================================ 11. POINTILLÉS ET ENCOCHES DE BILLET → FILETS */
html #app :is(.hv-lines,.hv-stub,.acc-it,.acc-stub,.pr-portes,.pr-stub,.pr-vol:before,.py-pass-l,.py-bord,.py-billet-d,.qs-tt-corps,.ot-lignes,.ot-ticket-talon,.ot-sources,.cp2-pick,
  .it-pass-l,.it-regl,.ot-hub-go,.ot-hub-piste:before,.ot-etiq-etat,.ot-sa-etapes>li,.ot-sa-liens,.ot-jo-bas,.ot-jo-pass-go,.ots-pied,.rv-bottom,.gc-body,.tv-fine,.cp2-arc,.pr-arc){
  border-top-style:solid!important;border-top-width:1px!important;border-top-color:var(--line)!important}
html #app :is(.pr-route,.py-vl,.py-pl,.pr-cond li,.ots-pills){border-bottom-style:solid!important;border-bottom-width:1px!important;border-bottom-color:var(--line)!important}
html #app :is(.pr-cal,.ds-b-talon,.py-billet-d,.qs-ig-talon,.cp2-c.is-b,.ot-sa-carte:before,.it-leg,.cn-annonce-x,.cp2-fonds:before){border-left-style:solid!important;border-left-width:1px!important;border-left-color:var(--line)!important}
html #app :is(.ot-vl-t tbody tr,.ot-vl-t tbody td,.ot-vl-t tbody th){border-top-style:solid!important;border-top-color:var(--line)!important}
html #app :is(.py-pack,.cp2-vous,.ots-alertes,.ot-vl-f-loyer,.ot-sa-attente,.it-saison,.cn-liste li,.ds-slot-rond,.cm-login-cta,.ct-upsell,.rv-merci,.rv-offer,.ot-sa-timbre,.ot-vl-panne){border-style:solid!important;border-width:1px!important}
html #app :is(.py-pack,.cp2-vous,.ots-alertes,.ot-vl-f-loyer,.ot-sa-attente,.it-saison,.cn-liste li,.ds-slot-rond,.cm-login-cta){border-color:var(--line)!important}
html #app .of-cover:after{border-style:solid!important;border-width:1px!important}
html main>section.legal :is(.legal-updated,.lg-sec p:has(>i:first-child)){border-style:solid!important;border-width:1px!important;border-color:var(--line)!important}
html main>section.legal.lg :is(.lg-sec,.lg-fin,.lg-toc-l){border-top-style:solid!important;border-top-width:1px!important;border-top-color:var(--line)!important}
html main>section.legal.lg-credits>ul>li:before{border-right-style:solid!important;border-right-width:1px!important}
/* encoches rondes (trous de billet) : retirées */
html #app :is(.hv-stub,.acc-stub,.pr-stub,.py-bord,.ot-ticket-talon,.qs-tt-corps,.it-pass-l,.ot-jo-pass-go):is(:before,:after){display:none!important}
html #app .hv-esc-list li:before{display:none}
/* code-barres décoratif */
html #app :is(.hv-barcode,.qs-ig-code){display:none!important}

/* ============================================================ 12. NOTES MANUSCRITES → petites étiquettes, ou retirées */
html #app :is(.hv-keys legend,.hv-tag-hook,.hv-esc-n,.acc-band b,.ds-f-t>span,.ds-votre,.ds-c-hook,.py-pile-cap b,.of-tag,.of-quick b,.cine-image figcaption b,.cine-legende b,.home-step>span),
html #app>header.hx .nv-hero span{
  font-family:var(--f-body)!important;font-weight:600!important;font-size:.75rem!important;line-height:1.3!important;letter-spacing:.06em!important;text-transform:uppercase;transform:none!important}
html #app .hv-keys legend{font-size:.8rem!important;color:var(--muted)}
html #app :is(.acc-note,.ds-note,.py-pile-astuce,.qs-ig-note,.ot-hub-hublot-note,.ot-hub-note,.cn-annonce small){display:none!important}
html #app :is(.rv-ghost blockquote,.rv-sign,.py-extrait-fin p,.of-cover i,.cine-main){font-family:var(--f-body)!important;font-weight:500!important;font-style:normal!important;letter-spacing:0!important}
html #app .py-extrait-fin p{font-size:1.05rem!important}
html #app .hv-esc-list q{font-family:var(--f-body)!important;font-style:normal!important;font-size:.98rem!important}
html #app .hv-esc-list li:nth-child(n){margin-top:0!important}

/* ============================================================ 13. CARNET : retiré (demande du propriétaire) */
html :is(.cn-bande,.cn-annonce,.t2w-pass-nav,.hd-carnet,.hd-cn){display:none!important}

/* ============================================================ 14. TEXTURES ET FONDS « PAPIER » */
html #app :is(.ds-passeport,.py-visa,.cn-case,.ot-sa-cle,.qs-tt-amorce){background-image:none!important}
html #app .hv-proof{background:#0f1b2a}
html[data-theme=dark] #app .hv-proof{background:#0d1626}

/* ============================================================ 15. ENCOCHES (trous ronds des billets) : retirées
   (les pseudo-éléments ne peuvent pas aller dans :is(), d'où la liste explicite) */
html #app .hv-stub::before,html #app .hv-stub::after,html #app .acc-stub::before,html #app .acc-stub::after,
html #app .pr-stub::before,html #app .pr-stub::after,html #app .py-billet-d::before,html #app .py-billet-d::after,
html #app .ot-ticket-talon::before,html #app .ot-ticket-talon::after,html #app .cp2-verdict::before,html #app .cp2-verdict::after,
html #app .ds-b-talon::before,html #app .ds-b-talon::after,html #app .qs-tt-bande::before,html #app .qs-tt-bande::after,
html #app .py-bord::before,html #app .py-bord::after,html #app .it-pass-l::before,html #app .it-pass-l::after,
html #app .ot-jo-pass-go::before,html #app .ot-jo-pass-go::after,html #app .ds-tag::before,
html #app .ds-ouv::after,html #app .ds-sur::before,html .cine-clap::before,html #app .tp-grid::before{display:none!important}
/* traits pointillés portés par des pseudo-éléments → filets pleins */
html #app .pr-vol::before,html #app .ot-hub-piste::before{border-top-style:solid!important;border-top-width:1px!important;border-top-color:var(--line)!important}
html #app .ot-sa-carte::before,html #app .cp2-fonds::before{border-left-style:solid!important;border-left-width:1px!important}
html #app .ot-sa-carte::before{border-left-color:var(--line)!important}
html #app .cp2-fonds::before{border-left-color:rgba(255,255,255,.35)!important}
html #app .acc-it::before{background:var(--line)!important}

/* ============================================================ 16. TEXTE CRÈME CODÉ EN DUR (sur fonds nuit) → blanc froid */
html #app :is(.hv-link-light,.cp2-tuiles>i,b.no-ico,.ds-rn>b,#hv-proof-h,.pr-pass-top>span,.py-visa-top>span,.qs-card>b,.cp2-col-s,.ds-c-code,
  .ds-fl-u>i,.ds-fl-d>i,.ds-fl-fu>i,.ds-fl-fd>i,.hv-fl-u>i,.hv-fl-d>i,.hv-fl-fu>i,.hv-fl-fd>i,.ot-fl-u>i,.ot-fl-d>i,.ot-fl-fu>i,.ot-fl-fd>i,
  .ds-l-age,.ds-l-duree,.ds-l-vol,.ot-sa-nom>b,.pr-statut.ouvert,.py-gate-n,.pr-dep-aff>b,.pr-dep-pays>button,.av-fig figcaption,figure[class^=m]>figcaption){color:#f1f4f8!important}
html #app :is(.ot-hub-go>small,.ds-tab-cols>span,.ot-hub-porte>i,.ot-hub-porte>small,.qs-card>p,.av-note,.cp2-via,.ds-pack-pied,.ds-pack-prix>s,.ds-tab-pied,
  .ot-sa-legende>span,.ds-l-meta,.ds-l-ville,.cp2-l>span,.cp2-score-code,.ot-sa-lettres>i,.ot-sa-nom>small,.ot-sa-quand,.ot-sa-st){color:rgba(241,244,248,.74)!important}
html footer .foot-tech>span{color:rgba(241,244,248,.6)!important}
html #app .ot-sa-cle{background-color:rgba(241,244,248,.77)}
html #app .qs-ig-talon>span{color:#fff!important}
/* sur les bandeaux nuit, l'orange foncé ne se lit pas : orange clair */
html #app :is(.hv-proof,.qs-res,.cine-scene,.cine-pellicule,.av-band,.home-final,[class*="-nuit"]) .eyebrow{color:#ffb08a!important}
html #app .it-calcul{--muted:#a3aebd}
html #app .ot-ptag>b{color:var(--ink)!important}

/* ============================================================ 17. FONDS RESTANTS */
html #app :is(figure.av-fig,figure.av-hero-fig,figure[class^=m],img.py-pc){background-color:var(--soft)!important}
html #app :is(.av-hero-fig img,.av-hero-fig>img,.py-film,figure.py-film,.ot-hub-hublot-v,.av-badge,.gd-pdf){box-shadow:none!important}
html #app :is(.av-hero-fig img,.av-fig img){border-radius:var(--tp-r)!important}
html #app .av-badge{border:1px solid var(--line)!important}
html #app .cm-team{background-image:none!important;background-color:var(--soft)!important}
html #app :is(.acc-band,.gd-top){background-image:none!important}
html #app .of-radar{display:none!important}
html #app .ot-sa-timbre{transform:none!important;border-radius:999px!important}

/* ============================================================ 18. BANDEAUX NUIT : texte blanc froid au lieu du crème */
html #app :is(.qs-why,.av-how,.pr-tableau,.of-local){color:#f1f4f8!important}
html #app :is(.qs-why,.av-how,.of-local) :is(h2,h3,b,strong){color:#f1f4f8!important}
html #app :is(.qs-why,.av-how,.of-local) p{color:rgba(241,244,248,.8)!important;opacity:1!important}
html #app :is(.qs-why,.av-how) .eyebrow{color:#ffb08a!important}
html[data-theme=dark] #app .of-local{background:#111a2b!important;border-block:1px solid var(--line)}
html .qs-res :is(.qs-res-tete h2,.qs-res-tete p b,.qs-tt-bande,.qs-tt-bande h3){color:#f1f4f8!important}
html[data-theme=dark] .qs-res :is(.qs-tt-bande,.qs-tt-btn){background:#1c2740!important;color:#f1f4f8!important}
html[data-theme=dark] .qs-res .qs-tt-btn:hover{background:#243050!important}

/* ============================================================ 19. MODE SOMBRE : boutons orange lisibles (blanc sur orange foncé) */
html[data-theme=dark] :is(.nav-button.nav-offres,.of-quick button.pack em,.globi-badge){background-color:#c94d23!important;border-color:#c94d23!important;color:#fff!important}
html[data-theme=dark] .nav-button.nav-offres:hover{background-color:#b3431d!important}

/* ============================================================ 20. TABLEAU À VOLETS (split-flap) en mode sombre : tuiles bleu nuit */
html[data-theme=dark] #app .hv-fl,html[data-theme=dark] #app .hv-fl>span{background:#1c2740!important}
html #app .hv-fl{color:#f1f4f8}

/* ============================================================ 21. COMMUNAUTÉ */
html #app .cm-team{color:var(--ink)!important;border:1px solid var(--line)!important;box-shadow:none!important}
html #app .cm-team small{color:var(--muted)!important}
html #app :is(.cm-team:hover,.cm-team.on){transform:none!important;box-shadow:var(--tp-sh-hover)!important;border-color:var(--line-strong)!important}

/* ============================================================ 22. OUTILS : étiquettes pays, sources, saisons */
html #app .ot-ptag.is-on>b,html #app .ot-ptag.is-on b{color:var(--bg)!important;opacity:.8}
html #app .ot-ptag-trou{display:none!important}
html #app .ot-ptag{padding-left:12px!important}
html #app .cp2-l>span.ot-src{color:var(--muted)!important}
html #app :is(.ot-src,.ot-src-hyp,.ot-src-verif){border-style:solid!important}
html #app .ot-sa-board .ot-src{color:rgba(241,244,248,.74)!important;border-color:rgba(241,244,248,.2)!important}
html #app .ot-sa-board .ot-src-verif{color:#f5c35f!important;border-color:rgba(245,195,95,.5)!important}
html #app .ot-sa-bande i{background:rgba(241,244,248,.07)!important;color:rgba(241,244,248,.55)!important}
html #app .ot-sa-bande i.on{background:rgba(241,244,248,.82)!important;color:#0f1b2a!important}
html #app .ot-sa-bande i.pic{background:var(--ot-or,#f2b33d)!important;color:#0f1b2a!important}
html #app .ot-sa-bande.is-verif i.on{background:rgba(241,244,248,.18)!important;box-shadow:inset 0 0 0 1px rgba(241,244,248,.5)!important;color:#f1f4f8!important}
html #app .ot-sa-cle{background-color:rgba(241,244,248,.18)!important}
html #app .ot-sa-cle.on{background:rgba(241,244,248,.82)!important}
html #app .ot-sa-cle.rep{background:rgba(241,244,248,.18)!important;box-shadow:inset 0 0 0 1px rgba(241,244,248,.5)!important}
html #app .ot-sa-st{border-color:rgba(241,244,248,.2)!important;color:rgba(241,244,248,.74)!important}
html #app .is-on .ot-sa-st{background:#f1f4f8!important;border-color:#f1f4f8!important;color:#0f1b2a!important}
html #app .ot-sa-l.is-repere.is-on .ot-sa-st{background:transparent!important;border:1px solid #f1f4f8!important;color:#f1f4f8!important}
html #app :is(.ot-sa-lettres,.ot-sa-legende,.ot-sa-nom small){color:rgba(241,244,248,.7)!important}
html #app .ot-sa-l{border-top-color:rgba(241,244,248,.08)!important}
html #app .ot-sa-nom b{color:#f1f4f8!important;font-variation-settings:normal!important}
html #app .ot-sa-mois button::after{box-shadow:none!important}
/* choix « à saisir » et puces d'ajout : trait plein */
html #app :is(.ot-saisie,.it-chip,.it-saisie){border-style:solid!important}
html #app .it-chip{border-color:var(--line-strong)!important}

/* ============================================================ 23. DIVERS */
html #app .av-hero-fig>img,html #app figure.av-hero-fig img{background-color:var(--soft)!important}
html #app .ds-pack-fan i{transform:none!important;box-shadow:0 0 0 2px var(--ds-panneau,#111a2b)!important;border-radius:4px!important;margin-left:-14px}
html #app .ds-pack-fan i:first-child{margin-left:0}

/* ============================================================ 24. CORRECTIFS SOMBRE / CONTRASTE */
html[data-theme=dark] #app>header.hx .nav-button.nav-offres,html[data-theme=dark] #app>header .nav-offres{background:#c94d23!important;color:#fff!important}
html[data-theme=dark] #app>header.hx .nav-button.nav-offres:hover{background:#b3431d!important}
html[data-theme=dark] #app .ot-reglette-go{background-color:#c94d23!important;color:#fff!important}
html #app .ot-sa-lettres>i.is-m{color:#0f1b2a!important}

/* ============================================================ 25. MODE SOMBRE : panneau « Étape suivante » bleu nuit (plus de bloc clair) */
html[data-theme=dark] #app .ot-suite{background:#16213a!important;color:var(--ink)!important;border:1px solid var(--line)!important}
html[data-theme=dark] #app .ot-suite-k{color:var(--sun)!important}
html[data-theme=dark] #app .ot-suite-a :is(b,small){color:var(--ink)!important}
html[data-theme=dark] #app .ot-suite-a span{background:#c94d23!important;color:#fff!important}
/* bande de pellicule perforée (décor) : retirée */
html .cine-pellicule-bande::before,html .cine-pellicule-bande::after{display:none!important}
/* cadre « carte postale » (bord crème) des photos pays : retiré, coins 12 px */
html #app .py-pc{border:0!important;border-radius:var(--tp-r)!important}
html #app .ot-reglette .ot-eur-court{color:inherit!important;opacity:.75}
