
  /* ==================================================================================
     V2 IMMERSIF (28.09.2026) — rangées horizontales, feuille de détail, sélection,
     mode découverte, mur Premium flouté, navigation mobile, squelettes de chargement.
     Aucune nouvelle couleur : tout réutilise les tokens déjà définis plus haut.
     ================================================================================== */

  /* ---------- Offre à la une ---------- */
  .featured{position:relative;border-radius:28px;overflow:hidden;background:var(--surface);box-shadow:var(--shadow-md);padding:32px 34px;margin-bottom:34px;cursor:pointer;transition:transform var(--d-m) var(--ease),box-shadow var(--d-m) var(--ease);}
  .featured:hover{transform:translateY(-3px);box-shadow:var(--shadow-lift);}
  .featured::before{content:"";position:absolute;inset:0;z-index:0;background:radial-gradient(760px circle at 88% 0%, rgba(0,145,255,0.26), transparent 62%);}
  .featured > *{position:relative;z-index:1;}
  .featured .f-label{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--blue-deep);margin-bottom:14px;}
  .featured h2{font-size:clamp(22px,3.2vw,31px);line-height:1.2;margin:0 0 8px;color:var(--text);}
  .featured .f-inst{font-size:15px;font-weight:700;color:var(--text);margin:0 0 3px;}
  .featured .f-loc{font-size:13.5px;color:var(--text-dim);margin:0 0 18px;}
  .featured .f-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px;}
  .featured .f-tags span{background:rgba(255,255,255,0.07);padding:6px 13px;border-radius:999px;font-size:12.5px;font-weight:600;color:var(--text);}
  .featured .f-actions{display:flex;flex-wrap:wrap;gap:10px;}
  @media (max-width:560px){.featured{padding:26px 22px;}}

  /* ---------- Rangées horizontales (façon catalogue vidéo) ---------- */
  .row-block{margin:0 0 34px;}
  .row-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 14px;padding:0 2px;}
  .row-head h3{font-size:17.5px;margin:0;color:var(--text-dark);letter-spacing:-0.01em;}
  .row-head .row-count{font-size:12.5px;font-weight:700;color:var(--text-faint);white-space:nowrap;}
  .row-scroller{position:relative;}
  .row-track{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x proximity;scroll-behavior:smooth;padding:4px 2px 10px;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
  .row-track::-webkit-scrollbar{display:none;}
  .row-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:38px;height:38px;border-radius:50%;background:var(--glass-light-strong);border:1px solid var(--glass-border-light);box-shadow:0 6px 18px rgba(0,0,0,.14);color:var(--text-dark);display:none;align-items:center;justify-content:center;cursor:pointer;transition:transform var(--d-s) var(--ease-spring),opacity var(--d-s) var(--ease);}
  .row-arrow:hover{transform:translateY(-50%) scale(1.08);}
  .row-arrow.prev{left:-8px;} .row-arrow.next{right:-8px;}
  @media (min-width:901px){.row-scroller:hover .row-arrow{display:flex;}}
  .row-arrow[disabled]{opacity:.25;pointer-events:none;}

  /* ---------- Carte de rangée ---------- */
  .rcard{position:relative;flex:0 0 auto;width:268px;scroll-snap-align:start;border-radius:22px;background:var(--surface);box-shadow:var(--shadow-sm);padding:20px 20px 18px;cursor:pointer;overflow:hidden;isolation:isolate;transition:transform var(--d-m) var(--ease),box-shadow var(--d-m) var(--ease);}
  .rcard:hover{transform:translateY(-4px);box-shadow:var(--shadow-lift);}
  .rcard:active{transform:scale(.985);}
  .rcard .rc-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:12px;}
  .rcard h4{font-size:15.5px;line-height:1.3;margin:0 0 3px;color:var(--text);}
  .rcard .rc-kicker{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);margin:0 0 4px;}
  .rcard .rc-loc{font-size:12.5px;color:var(--text-dim);margin:0 0 12px;}
  .rcard .rc-tags{display:flex;flex-wrap:wrap;gap:6px;}
  .rcard .rc-tags span{background:var(--bg);color:var(--text-dark);padding:4px 9px;border-radius:999px;font-size:11.5px;font-weight:600;}
  @media (max-width:560px){.rcard{width:232px;}}

  /* Bouton "garder" (cœur) */
  .save-btn{width:32px;height:32px;flex:none;border-radius:50%;background:rgba(255,255,255,0.08);color:var(--text-dim);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background var(--d-s) var(--ease),color var(--d-s) var(--ease),transform var(--d-s) var(--ease-spring);}
  .save-btn:hover{background:rgba(255,255,255,0.16);color:var(--text);}
  .save-btn.is-saved{background:var(--mint-soft);color:#7FE3AE;}
  .save-btn.is-saved svg{fill:currentColor;}
  .save-btn:active{transform:scale(.88);}

  /* ---------- Carte verrouillée (mur Premium) ---------- */
  .rcard.is-locked{cursor:pointer;}
  .rcard.is-locked .rc-body{filter:blur(6px);opacity:.5;pointer-events:none;user-select:none;}
  .lock-overlay{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;background:linear-gradient(180deg, rgba(17,17,17,0.55), rgba(17,17,17,0.82));}
  .lock-overlay .lk-icon{width:34px;height:34px;border-radius:50%;background:rgba(255,255,255,0.12);display:flex;align-items:center;justify-content:center;color:var(--text);}
  .lock-overlay .lk-text{font-size:12px;font-weight:700;color:var(--text);}
  .lock-overlay .lk-sub{font-size:11px;color:var(--text-dim);}

  /* ---------- Feuille montante (détail, sélection, premium) ---------- */
  .sheet-overlay{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.6);opacity:0;pointer-events:none;transition:opacity var(--d-m) var(--ease);}
  .sheet-overlay.open{opacity:1;pointer-events:auto;}
  .sheet{position:fixed;left:50%;bottom:0;z-index:301;width:min(720px,100%);max-height:92vh;transform:translate(-50%,102%);background:var(--surface);border-radius:28px 28px 0 0;box-shadow:0 -22px 60px rgba(0,0,0,.55);transition:transform var(--d-l) var(--ease);display:flex;flex-direction:column;overflow:hidden;}
  .sheet.open{transform:translate(-50%,0);}
  .sheet-grab{flex:none;padding:12px 0 4px;display:flex;justify-content:center;cursor:grab;}
  .sheet-grab i{display:block;width:42px;height:4px;border-radius:999px;background:var(--line-hi);}
  .sheet-close{position:absolute;top:14px;right:16px;z-index:4;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,0.08);color:var(--text-dim);display:flex;align-items:center;justify-content:center;font-size:19px;line-height:1;cursor:pointer;}
  .sheet-close:hover{background:rgba(255,255,255,0.16);color:var(--text);}
  .sheet-body{overflow-y:auto;padding:8px 30px 26px;-webkit-overflow-scrolling:touch;}
  .sheet-foot{flex:none;padding:14px 30px calc(16px + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--elevated);display:flex;gap:10px;}
  .sheet-foot .btn{flex:1;justify-content:center;padding:14px 18px;font-size:14.5px;}
  @media (max-width:560px){.sheet-body{padding:8px 20px 22px;}.sheet-foot{padding:12px 20px calc(14px + env(safe-area-inset-bottom));}}

  .sheet h2{font-size:clamp(20px,3vw,26px);line-height:1.25;margin:6px 0 6px;color:var(--text);}
  .sheet .sh-inst{font-size:14.5px;font-weight:700;color:var(--text);margin:0 0 2px;}
  .sheet .sh-loc{font-size:13px;color:var(--text-dim);margin:0 0 18px;}
  .sh-facts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 20px;}
  @media (max-width:480px){.sh-facts{grid-template-columns:1fr;}}
  .sh-fact{background:var(--elevated);border-radius:16px;padding:13px 15px;}
  .sh-fact span{display:block;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);margin-bottom:4px;}
  .sh-fact b{font-size:14.5px;color:var(--text);font-weight:700;}
  .sh-desc{font-size:14.5px;line-height:1.65;color:var(--text-dim);margin:0 0 22px;}
  .sh-section-title{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin:22px 0 12px;}

  /* Progression du dossier (dans la feuille) */
  .doc-check{display:flex;align-items:center;gap:11px;padding:11px 0;border-top:1px solid var(--line);cursor:pointer;font-size:14px;color:var(--text-dim);}
  .doc-check:first-of-type{border-top:none;}
  .doc-check .dc-box{width:21px;height:21px;flex:none;border-radius:7px;border:1.6px solid var(--line-hi);display:flex;align-items:center;justify-content:center;color:transparent;transition:background var(--d-s) var(--ease),border-color var(--d-s) var(--ease),color var(--d-s) var(--ease);}
  .doc-check.is-done .dc-box{background:var(--mint-soft);border-color:transparent;color:#7FE3AE;}
  .doc-check.is-done{color:var(--text);}
  .doc-progress{height:5px;border-radius:999px;background:var(--line);overflow:hidden;margin:4px 0 14px;}
  .doc-progress i{display:block;height:100%;background:var(--mint);border-radius:999px;width:0;transition:width var(--d-l) var(--ease);}

  /* ---------- Barre de sélection ---------- */
  .sel-bar{position:fixed;left:50%;transform:translate(-50%,140%);bottom:calc(16px + env(safe-area-inset-bottom));z-index:120;display:flex;align-items:center;gap:14px;padding:12px 14px 12px 20px;border-radius:999px;background:var(--surface);box-shadow:0 14px 40px rgba(0,0,0,.45),0 0 0 1px var(--line-hi);transition:transform var(--d-m) var(--ease-spring);max-width:calc(100% - 32px);}
  .sel-bar.open{transform:translate(-50%,0);}
  .sel-bar .sb-text{font-size:13.5px;font-weight:700;color:var(--text);white-space:nowrap;}
  .sel-bar .sb-text b{color:var(--mint);}
  .sel-bar .btn{padding:10px 18px;font-size:13px;}
  @media (max-width:900px){.sel-bar{bottom:calc(76px + env(safe-area-inset-bottom));}}

  /* ---------- Mode découverte (deck) ---------- */
  .deck-overlay{position:fixed;inset:0;z-index:310;background:#0A0A0C;display:none;flex-direction:column;}
  .deck-overlay.open{display:flex;}
  .deck-top{flex:none;display:flex;align-items:center;justify-content:space-between;padding:calc(16px + env(safe-area-inset-top)) 20px 12px;}
  .deck-top .dk-title{font-size:14px;font-weight:700;color:var(--text);}
  .deck-top .dk-count{font-size:12.5px;color:var(--text-dim);}
  .deck-stage{flex:1;position:relative;display:flex;align-items:center;justify-content:center;padding:6px 20px;}
  .deck-card{position:absolute;width:min(420px,100%);max-height:100%;border-radius:26px;background:var(--surface);box-shadow:var(--shadow-lift);padding:28px 26px;overflow:hidden;will-change:transform;}
  .deck-card .dc-kicker{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-faint);margin:0 0 6px;}
  .deck-card h3{font-size:21px;line-height:1.25;margin:0 0 6px;color:var(--text);}
  .deck-card .dc-loc{font-size:13.5px;color:var(--text-dim);margin:0 0 18px;}
  .deck-card .dc-tags{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:18px;}
  .deck-card .dc-tags span{background:var(--bg);color:var(--text-dark);padding:5px 11px;border-radius:999px;font-size:12px;font-weight:600;}
  .deck-card .dc-desc{font-size:13.5px;line-height:1.6;color:var(--text-dim);margin:0;max-height:120px;overflow:hidden;}
  .deck-stamp{position:absolute;top:22px;font-size:15px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:8px 16px;border-radius:12px;opacity:0;transform:rotate(-8deg);}
  .deck-stamp.keep{left:22px;color:#7FE3AE;border:2.5px solid #7FE3AE;}
  .deck-stamp.skip{right:22px;color:var(--sun);border:2.5px solid var(--sun);transform:rotate(8deg);}
  .deck-actions{flex:none;display:flex;align-items:center;justify-content:center;gap:18px;padding:14px 20px calc(24px + env(safe-area-inset-bottom));}
  .deck-btn{width:62px;height:62px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform var(--d-s) var(--ease-spring);box-shadow:0 8px 22px rgba(0,0,0,.4);}
  .deck-btn:active{transform:scale(.9);}
  .deck-btn.skip{background:var(--elevated);color:var(--sun);border:1.5px solid var(--line-hi);}
  .deck-btn.keep{background:var(--mint);color:#0A2418;}
  .deck-btn.info{width:46px;height:46px;background:var(--elevated);color:var(--text-dim);border:1.5px solid var(--line-hi);}
  .deck-empty{text-align:center;color:var(--text-dim);padding:40px 20px;}
  .deck-empty h3{color:var(--text);font-size:19px;margin:0 0 10px;}

  /* ---------- Navigation mobile ---------- */
  .mob-nav{position:fixed;left:0;right:0;bottom:0;z-index:110;display:none;justify-content:space-around;align-items:stretch;padding:8px 6px calc(8px + env(safe-area-inset-bottom));background:var(--glass-light-strong);border-top:1px solid var(--glass-border-light);}
  @supports (backdrop-filter:blur(1px)){.mob-nav{background:var(--glass-light);backdrop-filter:blur(var(--glass-blur-lg)) saturate(150%);-webkit-backdrop-filter:blur(var(--glass-blur-lg)) saturate(150%);}}
  @media (max-width:900px){.mob-nav{display:flex;} body{padding-bottom:72px;}}
  .mob-nav button{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;font-size:10.5px;font-weight:700;color:#6B6B70;background:none;border:none;transition:color var(--d-s) var(--ease);}
  .mob-nav button.active{color:var(--blue-deep);}
  .mob-nav button svg{width:21px;height:21px;}
  .mob-nav .mn-badge{position:absolute;top:2px;right:calc(50% - 20px);min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--mint);color:#0A2418;font-size:9.5px;font-weight:800;display:flex;align-items:center;justify-content:center;}

  /* ---------- Squelettes de chargement ---------- */
  .skel{position:relative;overflow:hidden;background:var(--surface);border-radius:22px;}
  .skel::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg, transparent, rgba(255,255,255,0.06), transparent);transform:translateX(-100%);animation:skelSweep 1.25s infinite;}
  @keyframes skelSweep{100%{transform:translateX(100%);}}
  .skel-card{flex:0 0 auto;width:268px;height:186px;padding:20px;}
  .skel-line{height:11px;border-radius:999px;background:rgba(255,255,255,0.07);margin-bottom:10px;}
  @media (max-width:560px){.skel-card{width:232px;}}

  /* ---------- Carte profil (fin de quiz) ---------- */
  .profile-card{position:relative;overflow:hidden;border-radius:28px;background:var(--surface);box-shadow:var(--shadow-md);padding:30px 32px;margin-bottom:26px;}
  .profile-card::before{content:"";position:absolute;inset:0;background:radial-gradient(620px circle at 12% 0%, rgba(0,145,255,0.22), transparent 60%);}
  .profile-card > *{position:relative;z-index:1;}
  .profile-card h3{font-size:clamp(20px,3vw,26px);margin:10px 0 18px;color:var(--text);line-height:1.25;}
  .pc-stats{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px;}
  .pc-stat{flex:1;min-width:120px;background:var(--elevated);border-radius:18px;padding:16px 18px;}
  .pc-stat b{display:block;font-size:26px;font-weight:800;color:var(--blue-deep);line-height:1;margin-bottom:6px;font-feature-settings:"tnum";}
  .pc-stat span{font-size:12px;font-weight:600;color:var(--text-dim);line-height:1.35;display:block;}
  .pc-note{font-size:13.5px;line-height:1.6;color:var(--text-dim);margin:0;}

  /* ---------- Verrou "candidature" (mode browse) ---------- */
  .rc-lock{display:inline-flex;align-items:center;gap:6px;margin-top:12px;color:var(--text-faint);font-size:11px;font-weight:700;}
  .rc-lock svg{width:13px;height:13px;}
  .sh-desc-locked{position:relative;max-height:96px;overflow:hidden;margin-bottom:6px;}
  .sh-desc-locked .sh-desc{margin-bottom:0;}
  .sdl-fade{position:absolute;left:0;right:0;bottom:0;height:64px;background:linear-gradient(180deg, rgba(17,17,17,0), var(--surface));}
  .sh-gate{display:flex;align-items:flex-start;gap:13px;background:var(--elevated);border-radius:18px;padding:16px 18px;margin:0 0 22px;color:var(--text-dim);}
  .sh-gate svg{width:22px;height:22px;flex:none;color:var(--text);margin-top:1px;}
  .sh-gate b{display:block;color:var(--text);font-size:14px;margin-bottom:3px;}
  .sh-gate span{font-size:13px;line-height:1.55;}
  #bs-deck-cta{white-space:nowrap;}

  /* ---------- Cartes de rangée : hauteur homogène, titres sur 2 lignes max ---------- */
  .rcard{min-height:206px;display:flex;flex-direction:column;}
  .rcard .rc-body{display:flex;flex-direction:column;flex:1;}
  .rcard h4{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
  .rcard .rc-kicker{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;}
  .rcard .rc-loc{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;}
  .rcard .rc-tags{margin-top:auto;padding-top:10px;}
  .rcard .rc-tags span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .rcard .rc-lock{margin-top:10px;}

  /* La barre de sélection doit disparaître complètement quand elle est vide
     (translate seul ne suffisait pas au-dessus de la nav mobile). */
  .sel-bar{opacity:0;visibility:hidden;pointer-events:none;}
  .sel-bar.open{opacity:1;visibility:visible;pointer-events:auto;}

  /* ==================================================================================
     V3 — VOYAGE, CONFIANCE, CHIFFRES (28.09.2026)
     Carte des Länder, compteurs animés à l'entrée dans l'écran, preuves de confiance
     réelles, rail de parcours, révélation des rangées au scroll.
     ================================================================================== */

  /* ---------- Carte des Länder (schéma en tuiles, non à l'échelle) ---------- */
  .map-block{margin:0 0 38px;}
  .map-head{text-align:center;margin-bottom:18px;}
  .map-head h3{font-size:clamp(19px,2.6vw,24px);margin:0 0 6px;color:var(--text-dark);}
  .map-head p{font-size:13.5px;color:var(--text-dim);margin:0;line-height:1.55;}
  .map-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;max-width:520px;margin:0 auto;}
  @media (max-width:560px){.map-grid{gap:6px;max-width:100%;}}
  .land{position:relative;grid-column:var(--c);grid-row:var(--r);aspect-ratio:1;border-radius:14px;background:var(--surface);border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 4px;cursor:pointer;overflow:hidden;opacity:0;transform:scale(.86);transition:transform var(--d-m) var(--ease-spring),border-color var(--d-s) var(--ease),box-shadow var(--d-s) var(--ease);}
  .map-grid.in-view .land{opacity:1;transform:scale(1);}
  .land:hover{border-color:var(--blue-deep);box-shadow:0 0 0 1px var(--blue-deep),0 10px 26px rgba(0,145,255,.22);transform:scale(1.06);z-index:2;}
  .land .ld-fill{position:absolute;inset:0;background:var(--blue-deep);opacity:var(--heat,0);transition:opacity var(--d-m) var(--ease);}
  .land > span,.land > b{position:relative;z-index:1;}
  .land b{font-size:17px;font-weight:800;color:var(--text);line-height:1;font-feature-settings:"tnum";}
  .land span{font-size:8.5px;font-weight:700;letter-spacing:.02em;color:var(--text-dim);text-align:center;line-height:1.15;text-transform:uppercase;}
  .land.is-empty{cursor:default;opacity:.42;}
  .land.is-empty:hover{border-color:var(--line);box-shadow:none;transform:scale(1);}
  .land.is-active{border-color:var(--blue-deep);box-shadow:0 0 0 2px var(--blue-deep);}
  .map-legend{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:16px;font-size:11.5px;color:var(--text-faint);font-weight:600;}
  .map-legend i{display:block;width:54px;height:7px;border-radius:999px;background:linear-gradient(90deg, rgba(0,145,255,.12), var(--blue-deep));}

  /* ---------- Bandeau de confiance ---------- */
  .trust-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:22px;overflow:hidden;margin:0 0 34px;}
  @media (max-width:720px){.trust-strip{grid-template-columns:repeat(2,1fr);}}
  .trust-cell{background:var(--surface);padding:20px 16px;text-align:center;}
  .trust-cell b{display:block;font-size:26px;font-weight:800;color:var(--blue-deep);line-height:1;margin-bottom:7px;font-feature-settings:"tnum";}
  .trust-cell span{display:block;font-size:11.5px;font-weight:600;color:var(--text-dim);line-height:1.4;}
  .trust-cell.is-date b{font-size:17px;color:var(--text);}

  /* ---------- Source officielle (preuve concrète) ---------- */
  .src-proof{display:inline-flex;align-items:center;gap:7px;background:var(--mint-soft);color:#7FE3AE;padding:7px 13px;border-radius:999px;font-size:12px;font-weight:700;max-width:100%;}
  .src-proof svg{width:14px;height:14px;flex:none;}
  .src-proof code{font-family:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

  /* ---------- Rail de parcours ---------- */
  .journey{border-radius:26px;background:var(--surface);box-shadow:var(--shadow-sm);padding:28px 30px;margin:0 0 34px;}
  .journey h3{font-size:18px;margin:0 0 4px;color:var(--text);}
  .journey > p{font-size:13.5px;color:var(--text-dim);margin:0 0 24px;line-height:1.55;}
  .jrail{display:flex;align-items:flex-start;gap:0;}
  .jstep{flex:1;position:relative;text-align:center;min-width:0;}
  .jstep::before{content:"";position:absolute;top:15px;left:-50%;width:100%;height:2px;background:var(--line);}
  .jstep:first-child::before{display:none;}
  .jstep.is-done::before{background:var(--mint);}
  .jdot{position:relative;z-index:1;width:32px;height:32px;margin:0 auto 10px;border-radius:50%;background:var(--elevated);border:2px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;color:var(--text-faint);transition:background var(--d-m) var(--ease),border-color var(--d-m) var(--ease),color var(--d-m) var(--ease),transform var(--d-m) var(--ease-spring);}
  .jstep.is-done .jdot{background:var(--mint);border-color:var(--mint);color:#0A2418;transform:scale(1.06);}
  .jstep.is-current .jdot{border-color:var(--blue-deep);color:var(--blue-deep);box-shadow:0 0 0 4px var(--blue-sky-soft);}
  .jstep .jlabel{display:block;font-size:11px;font-weight:700;color:var(--text-dim);line-height:1.3;padding:0 3px;}
  .jstep.is-done .jlabel,.jstep.is-current .jlabel{color:var(--text);}
  .jstep .jdot svg{width:15px;height:15px;}
  @media (max-width:560px){.journey{padding:24px 18px;}.jstep .jlabel{font-size:9.5px;}}

  /* ---------- Révélation des rangées au scroll ---------- */
  .row-block{opacity:0;transform:translateY(20px);transition:opacity .6s var(--ease),transform .6s var(--ease);}
  .row-block.in-view{opacity:1;transform:translateY(0);}
  .row-block .rcard{opacity:0;transform:translateY(14px);transition:opacity .5s var(--ease),transform .5s var(--ease);}
  .row-block.in-view .rcard{opacity:1;transform:translateY(0);}
  .row-block.in-view .rcard:nth-child(1){transition-delay:0ms;}
  .row-block.in-view .rcard:nth-child(2){transition-delay:55ms;}
  .row-block.in-view .rcard:nth-child(3){transition-delay:110ms;}
  .row-block.in-view .rcard:nth-child(4){transition-delay:165ms;}
  .row-block.in-view .rcard:nth-child(5){transition-delay:220ms;}
  .row-block.in-view .rcard:nth-child(n+6){transition-delay:260ms;}
  .trust-strip,.journey,.map-block{opacity:0;transform:translateY(20px);transition:opacity .6s var(--ease),transform .6s var(--ease);}
  .trust-strip.in-view,.journey.in-view,.map-block.in-view{opacity:1;transform:translateY(0);}
  @media (prefers-reduced-motion: reduce){
    .row-block,.row-block .rcard,.trust-strip,.journey,.map-block{opacity:1;transform:none;}
    .land{opacity:1;transform:none;}
  }

  /* Étiquettes des Länder : jamais de débordement sur petit écran */
  .land span{max-width:100%;overflow:hidden;word-break:break-word;hyphens:auto;}
  @media (max-width:560px){
    .land span{font-size:7.5px;letter-spacing:-0.01em;}
    .land b{font-size:15px;}
  }

  /* ==================================================================================
     V4 — LE FIL (28.09.2026)
     Une seule continuité d'animation : entrée de page → parcours au scroll → sortie.
     Mêmes courbes (--ease) et mêmes durées (--d-s/--d-m/--d-l) partout, pour que tout
     le site paraisse animé par la même main.
     ================================================================================== */

  /* ---------- Le fil de progression, littéralement ---------- */
  .thread{position:fixed;top:0;left:0;height:2px;width:0;z-index:250;background:linear-gradient(90deg,var(--mint),var(--blue-deep));box-shadow:0 0 12px rgba(0,145,255,.5);transition:width 120ms linear;pointer-events:none;}
  .thread.is-sweep{transition:width .5s var(--ease);}

  /* ---------- Entrée de page ---------- */
  .topbar{opacity:0;transition:opacity .55s var(--ease),background 220ms var(--ease),border-color 220ms var(--ease),box-shadow 220ms var(--ease);}
  body.is-loaded .topbar{opacity:1;}
  .fil-enter{opacity:0;transform:translateY(16px);}
  body.is-loaded .fil-enter{opacity:1;transform:translateY(0);transition:opacity .62s var(--ease) var(--d,0ms),transform .62s var(--ease) var(--d,0ms);}

  /* ---------- Parcours : entrée ET retrait, dans les deux sens ---------- */
  .fil{opacity:0;transform:translateY(24px);transition:opacity .62s var(--ease),transform .62s var(--ease);will-change:opacity,transform;}
  .fil.is-in{opacity:1;transform:translateY(0);}
  .fil.is-past{opacity:.28;transform:translateY(-14px);}
  .fil.is-ahead{opacity:0;transform:translateY(24px);}

  /* ---------- Sortie : changement de vue ---------- */
  .view.active{animation:filIn var(--d-l) var(--ease);}
  @keyframes filIn{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:translateY(0);}}

  /* ---------- Sortie : la feuille se referme comme elle s'est ouverte ---------- */
  .sheet{transition:transform var(--d-l) var(--ease),opacity var(--d-m) var(--ease);}
  .sheet.is-closing{opacity:0;transform:translate(-50%,102%) scale(.97);}

  /* ---------- Entrée des cartes du mode découverte ---------- */
  .deck-card{animation:deckIn 320ms var(--ease-spring);}
  @keyframes deckIn{from{opacity:0;transform:translateY(22px) scale(.95);}to{opacity:1;transform:translateY(0) scale(1);}}

  @media (prefers-reduced-motion: reduce){
    .fil,.fil.is-past,.fil.is-ahead,.fil-enter{opacity:1 !important;transform:none !important;}
    .thread{display:none;}
    .view.active,.deck-card{animation:none;}
  }

  /* ==================================================================================
     V5 — HERO CINÉMATIQUE (28.09.2026)
     Le premier écran joue une seule séquence : la pastille, l'accroche, les lignes du
     titre qui se lèvent derrière un cache, le cercle tracé à la main autour d'"Allemagne",
     puis les boutons et les chiffres. Profondeur au curseur, boutons magnétiques.
     Mêmes couleurs et mêmes courbes que le reste du site.
     ================================================================================== */

  /* ---------- Profondeur : le décor réagit au curseur ---------- */
  .hero{--px:0px;--py:0px;}
  .hero-glow{transform:translate(calc(-50% + var(--px) * 1.6), calc(-40% + var(--py) * 1.6));transition:transform 600ms cubic-bezier(.22,1,.36,1);animation:heroBreath 9s ease-in-out infinite;}
  @keyframes heroBreath{0%,100%{opacity:.85;}50%{opacity:1;}}
  .hero-water{transform:translate(calc(var(--px) * -0.9), calc(var(--py) * -0.9));transition:transform 900ms cubic-bezier(.22,1,.36,1);}
  .hero-inner{transform:translate(calc(var(--px) * 0.35), calc(var(--py) * 0.35));transition:transform 700ms cubic-bezier(.22,1,.36,1);}

  /* ---------- Séquence d'entrée ---------- */
  .hero-seq{opacity:0;transform:translateY(14px);}
  body.hero-played .hero-seq{opacity:1;transform:translateY(0);transition:opacity .8s cubic-bezier(.16,1,.3,1) var(--d,0ms),transform .8s cubic-bezier(.16,1,.3,1) var(--d,0ms);}

  /* pastille : léger balayage lumineux une fois posée */
  .hero-pill{position:relative;overflow:hidden;}
  .hero-pill::after{content:"";position:absolute;top:0;left:-60%;width:45%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.22),transparent);transform:skewX(-18deg);opacity:0;}
  body.hero-played .hero-pill::after{animation:pillSheen 1.5s cubic-bezier(.22,1,.36,1) 1.1s 1 forwards;}
  @keyframes pillSheen{0%{left:-60%;opacity:0;}12%{opacity:1;}100%{left:130%;opacity:0;}}
  .hero-pill .dot{animation:pillDot 2.4s ease-in-out infinite;}
  @keyframes pillDot{0%,100%{box-shadow:0 0 0 0 rgba(0,145,255,.55);}55%{box-shadow:0 0 0 6px rgba(0,145,255,0);}}

  /* ---------- Titre : chaque ligne se lève derrière un cache ---------- */
  .hero h1{overflow:visible;}
  .hl{display:block;overflow:hidden;}
  .hl.is-open{overflow:visible;}
  .hl-in{display:block;transform:translateY(112%);opacity:0;}
  body.hero-played .hl-in{transform:translateY(0);opacity:1;transition:transform .95s cubic-bezier(.16,1,.3,1) var(--d,0ms),opacity .7s cubic-bezier(.16,1,.3,1) var(--d,0ms);}

  /* le mot d'accent arrive juste après sa ligne, avec un léger dépassement */
  .accent-word{display:inline-block;opacity:0;transform:scale(.88) translateY(6px);filter:blur(5px);}
  body.hero-played .accent-word{opacity:1;transform:scale(1) translateY(0);filter:blur(0);transition:opacity .7s var(--ease) 620ms,transform .8s var(--ease-spring) 620ms,filter .7s var(--ease) 620ms;}

  /* ---------- Le cercle se trace à la main autour d'"Allemagne" ---------- */
  .circle-mark::before{display:none !important;}   /* remplace l'ellipse CSS statique */
  .cm-svg{position:absolute;left:-13px;top:-11px;width:calc(100% + 26px);height:calc(100% + 20px);overflow:visible;pointer-events:none;z-index:-1;}
  .cm-svg path{fill:none;stroke:var(--blue-deep);stroke-width:3.4;stroke-linecap:round;vector-effect:non-scaling-stroke;}

  /* ---------- Chiffres : entrée colonne par colonne, puis calage ---------- */
  .hero-stats div{opacity:0;transform:translateY(16px);}
  body.hero-played .hero-stats div{opacity:1;transform:translateY(0);transition:opacity .7s var(--ease) var(--d,0ms),transform .7s cubic-bezier(.16,1,.3,1) var(--d,0ms);}
  .hero-stats b.is-settling{animation:statSettle 460ms var(--ease-spring);}
  @keyframes statSettle{0%{transform:scale(1.14);}60%{transform:scale(.985);}100%{transform:scale(1);}}

  /* ---------- Boutons magnétiques ---------- */
  .hero-actions .btn{will-change:transform;}
  .mag{transition:transform 260ms cubic-bezier(.22,1,.36,1);}

  @media (hover:none){
    .hero-glow,.hero-water,.hero-inner{transform:none !important;}
  }
  @media (prefers-reduced-motion: reduce){
    .hero-seq,.hl-in,.accent-word,.hero-stats div{opacity:1 !important;transform:none !important;filter:none !important;}
    .hl{overflow:visible;}
    .hero-glow,.hero-water,.hero-inner{transform:none !important;animation:none;}
    .hero-pill::after,.hero-pill .dot{animation:none;}
    .cm-svg path{stroke-dasharray:none !important;stroke-dashoffset:0 !important;}
  }

  /* ==================================================================================
     V6 — EMBARQUEMENT (28.09.2026)
     L'offre à la une devient un départ : avion qui décolle, destination en grand,
     informations posées comme sur une carte d'embarquement. Uniquement des données
     réelles de l'offre — aucun numéro de vol ni compagnie inventés.
     ================================================================================== */

  .featured{padding:30px 34px 28px;}

  /* ---------- Ligne d'en-tête : l'avion décolle ---------- */
  .f-depart{display:flex;align-items:center;gap:11px;margin-bottom:22px;}
  .plane-ico{width:26px;height:26px;flex:none;color:var(--blue-deep);overflow:visible;}
  .plane-ico .pl-runway{stroke:currentColor;stroke-width:1.7;stroke-linecap:round;opacity:.38;}
  .plane-ico .pl-trail{stroke:currentColor;stroke-width:1.5;stroke-linecap:round;fill:none;opacity:.55;}
  .plane-ico .pl-body{fill:currentColor;}
  .featured.is-flying .pl-body{animation:planeTakeoff 1.05s cubic-bezier(.22,1,.36,1) .15s both;}
  .featured.is-flying .pl-trail{animation:trailDraw 1.05s cubic-bezier(.22,1,.36,1) .15s both;}
  @keyframes planeTakeoff{0%{transform:translate(-6px,6px);opacity:0;}28%{opacity:1;}100%{transform:translate(0,0);opacity:1;}}
  @keyframes trailDraw{0%{stroke-dashoffset:var(--tl,40);opacity:0;}25%{opacity:.55;}100%{stroke-dashoffset:0;opacity:.55;}}
  .featured:hover .pl-body{animation:planeNudge 1.1s cubic-bezier(.22,1,.36,1);}
  @keyframes planeNudge{0%{transform:translate(0,0);}45%{transform:translate(4px,-4px);}100%{transform:translate(0,0);}}

  .f-depart-label{font-size:10.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--blue-deep);}
  .f-depart-sub{font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);}

  /* ---------- Destination ---------- */
  .f-dest-label{display:block;font-size:9.5px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--text-faint);margin-bottom:7px;}
  .f-city{font-family:'Fraunces','Instrument Sans',serif;font-optical-sizing:auto;font-weight:600;font-size:clamp(30px,4.6vw,46px);line-height:1.04;letter-spacing:-0.015em;color:var(--text);margin:0 0 6px;}
  .f-land{display:block;font-size:12.5px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--text-dim);margin-bottom:20px;}
  .f-land em{font-style:normal;color:var(--blue-deep);}

  .f-inst{font-size:15px;font-weight:700;color:var(--text);margin:0 0 2px;}
  .f-role{font-size:12px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text-faint);margin:0 0 20px;}

  /* ---------- Séparateur perforé ---------- */
  .f-perf{position:relative;height:1px;margin:0 -34px 18px;background:repeating-linear-gradient(90deg,var(--line-hi) 0 7px,transparent 7px 14px);}
  .f-perf::before,.f-perf::after{content:"";position:absolute;top:50%;width:18px;height:18px;border-radius:50%;background:var(--bg);transform:translateY(-50%);}
  .f-perf::before{left:-9px;} .f-perf::after{right:-9px;}
  @media (max-width:560px){.f-perf{margin:0 -22px 16px;}}

  /* ---------- Champs façon carte d'embarquement ---------- */
  .f-fields{display:flex;flex-wrap:wrap;gap:22px 34px;margin-bottom:24px;}
  .f-field span{display:block;font-size:9.5px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint);margin-bottom:5px;}
  .f-field b{display:block;font-size:14.5px;font-weight:700;color:var(--text);letter-spacing:-0.01em;}
  @media (max-width:560px){.featured{padding:26px 22px 24px;}.f-fields{gap:16px 24px;}}

  /* Boutons d'action de la carte : libellé sur une seule ligne */
  .f-actions .btn,#bs-deck-cta{white-space:nowrap;}
  .f-actions{gap:12px;}

  /* ==================================================================================
     V7 — TOUT LE SITE EN MODE DÉPART (28.09.2026)
     Les cartes deviennent des mini-cartes d'embarquement : la ville d'abord, le Land,
     la perforation, puis l'établissement. La fiche complète reprend la même grammaire.
     ================================================================================== */

  /* ---------- Carte de rangée : la destination d'abord ---------- */
  .rcard{min-height:232px;padding:18px 20px 16px;}
  .rc-dest-label{display:block;font-size:8.5px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--text-faint);margin:12px 0 3px;}
  .rc-city{font-family:'Fraunces','Instrument Sans',serif;font-optical-sizing:auto;font-weight:600;font-size:23px;line-height:1.1;letter-spacing:-0.015em;color:var(--text);margin:0 0 5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
  .rc-land{display:block;font-size:9.5px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--text-dim);margin-bottom:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .rc-land em{font-style:normal;color:var(--blue-deep);}
  .rc-perf{height:1px;margin:0 -20px 12px;background:repeating-linear-gradient(90deg,var(--line-hi) 0 5px,transparent 5px 10px);}
  .rcard h4{font-size:13px;font-weight:700;color:var(--text-dim);margin:0 0 3px;}
  .rcard .rc-kicker{font-size:9.5px;color:var(--text-faint);margin:0 0 9px;}
  .rc-plane{display:inline-flex;align-items:center;gap:5px;font-size:9.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--blue-deep);}
  .rc-plane svg{width:13px;height:13px;}
  .rcard:hover .rc-plane svg{animation:planeNudge 1s cubic-bezier(.22,1,.36,1);}

  /* ---------- Fiche : carte d'embarquement complète ---------- */
  .sh-dest-label{display:block;font-size:9.5px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--text-faint);margin-bottom:7px;}
  .sh-city{font-family:'Fraunces','Instrument Sans',serif;font-optical-sizing:auto;font-weight:600;font-size:clamp(30px,5vw,44px);line-height:1.05;letter-spacing:-0.015em;color:var(--text);margin:0 0 7px;}
  .sh-land{display:block;font-size:12px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--text-dim);margin-bottom:20px;}
  .sh-land em{font-style:normal;color:var(--blue-deep);}
  .sh-perf{height:1px;margin:0 -30px 20px;background:repeating-linear-gradient(90deg,var(--line-hi) 0 7px,transparent 7px 14px);position:relative;}
  .sh-perf::before,.sh-perf::after{content:"";position:absolute;top:50%;width:16px;height:16px;border-radius:50%;background:var(--bg);transform:translateY(-50%);}
  .sh-perf::before{left:-8px;} .sh-perf::after{right:-8px;}
  @media (max-width:560px){.sh-perf{margin:0 -20px 18px;}}
  .sh-board{display:flex;align-items:center;gap:10px;margin-bottom:18px;}
  .sh-board .plane-ico{width:22px;height:22px;}
  .sh-board-txt{font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--blue-deep);}

  /* ---------- Carte du mode découverte : destination d'abord ---------- */
  .deck-card .dc-dest{display:block;font-size:9.5px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--text-faint);margin-bottom:6px;}
  .deck-card .dc-city{font-family:'Fraunces','Instrument Sans',serif;font-weight:600;font-size:34px;line-height:1.05;color:var(--text);margin:0 0 6px;}
  .deck-card .dc-land{display:block;font-size:11px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--text-dim);margin-bottom:16px;}
  .deck-card .dc-land em{font-style:normal;color:var(--blue-deep);}

  /* ---------- Un avion sur l'étape en cours du parcours ---------- */
  .jstep.is-current .jdot{padding:0;}
  .jstep.is-current .jdot .plane-ico{width:16px;height:16px;color:var(--blue-deep);}
  .jstep.is-current .jdot .plane-ico .pl-runway,.jstep.is-current .jdot .plane-ico .pl-trail{display:none;}
  .jstep.is-current .jdot{animation:dotFloat 2.6s ease-in-out infinite;}
  @keyframes dotFloat{0%,100%{transform:translateY(0);}50%{transform:translateY(-3px);}}
  @media (prefers-reduced-motion: reduce){.jstep.is-current .jdot{animation:none;}}

  /* ==================================================================================
     V8 — SALLE D'EMBARQUEMENT (28.09.2026)
     La landing prend le ton d'un départ imminent : statut d'embarquement en haut,
     et un tableau des départs qui s'actualise avec les vraies villes et vraies rentrées.
     ================================================================================== */

  /* ---------- Statut d'embarquement ---------- */
  .hero-pill{gap:10px;padding:8px 18px;font-size:11px;font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:var(--text-dim);border-color:var(--line-hi);}
  .hero-pill .dot{width:7px;height:7px;background:var(--mint);}
  .hero-pill b{color:var(--text-dark);font-weight:800;}
  .hero-pill .sep{opacity:.35;}

  .hero-kicker{font-size:15px;font-style:normal;font-weight:600;letter-spacing:-0.01em;}

  /* ---------- Tableau des départs ---------- */
  .board{max-width:820px;margin:0 auto;border-radius:24px;background:var(--surface);box-shadow:var(--shadow-md);overflow:hidden;}
  .board-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 24px;border-bottom:1px solid var(--line);}
  .board-head .bh-title{display:flex;align-items:center;gap:10px;font-size:10.5px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--blue-deep);}
  .board-head .bh-title .plane-ico{width:20px;height:20px;}
  .board-head .bh-live{display:inline-flex;align-items:center;gap:7px;font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint);}
  .board-head .bh-live i{width:6px;height:6px;border-radius:50%;background:var(--mint);animation:boardLive 2.2s ease-in-out infinite;}
  @keyframes boardLive{0%,100%{box-shadow:0 0 0 0 rgba(37,211,102,.5);}55%{box-shadow:0 0 0 5px rgba(37,211,102,0);}}

  .board-cols{display:grid;grid-template-columns:1.5fr 1.2fr .9fr auto;gap:14px;padding:11px 24px;border-bottom:1px solid var(--line);}
  .board-cols span{font-size:9px;font-weight:800;letter-spacing:.17em;text-transform:uppercase;color:var(--text-faint);}
  .bd-row{display:grid;grid-template-columns:1.5fr 1.2fr .9fr auto;gap:14px;align-items:center;padding:15px 24px;border-bottom:1px solid var(--line);cursor:pointer;transition:background var(--d-s) var(--ease);}
  .bd-row:last-child{border-bottom:none;}
  .bd-row:hover{background:var(--elevated);}
  .bd-city{font-size:17px;font-weight:700;color:var(--text);letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .bd-land{font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .bd-date{font-size:12.5px;font-weight:700;color:var(--text);white-space:nowrap;font-feature-settings:"tnum";}
  .bd-status{display:inline-flex;align-items:center;gap:6px;font-size:9.5px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#7FE3AE;background:var(--mint-soft);padding:5px 11px;border-radius:999px;white-space:nowrap;}
  .bd-status i{width:5px;height:5px;border-radius:50%;background:#25D366;}

  /* caractères qui basculent, comme sur un panneau d'aéroport */
  .bd-char{display:inline-block;transform-origin:bottom center;}
  .bd-row.is-flip .bd-char{animation:bdFlap .44s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(var(--i) * 26ms);}
  @keyframes bdFlap{0%{opacity:0;transform:rotateX(-88deg) translateY(-42%);filter:blur(1.5px);}60%{opacity:1;}100%{opacity:1;transform:rotateX(0) translateY(0);filter:blur(0);}}
  .bd-row.is-flip .bd-land,.bd-row.is-flip .bd-date,.bd-row.is-flip .bd-status{animation:bdFade .5s var(--ease) both;animation-delay:120ms;}
  @keyframes bdFade{from{opacity:0;transform:translateY(-6px);}to{opacity:1;transform:translateY(0);}}

  .board-foot{padding:13px 24px;text-align:center;font-size:11.5px;color:var(--text-faint);}
  .board-foot b{color:var(--text-dim);font-weight:700;}

  @media (max-width:640px){
    .board-cols,.bd-row{grid-template-columns:1.3fr .9fr auto;}
    .board-cols span:nth-child(3),.bd-row .bd-date{display:none;}
    .board-head,.board-cols,.bd-row,.board-foot{padding-left:16px;padding-right:16px;}
    .bd-city{font-size:15px;}
  }
  @media (prefers-reduced-motion: reduce){
    .bd-row.is-flip .bd-char,.bd-row.is-flip .bd-land,.bd-row.is-flip .bd-date,.bd-row.is-flip .bd-status{animation:none;}
    .board-head .bh-live i{animation:none;}
  }

  /* ==================================================================================
     V9 — CALENDRIER DES DÉPARTS (28.09.2026)
     Pendant de la carte des Länder : la carte répond à "où", le calendrier à "quand".
     Les mois sont extraits des dates de rentrée réelles, jamais devinés.
     ================================================================================== */

  .cal-block{margin:0 0 34px;}
  .cal-head{text-align:center;margin-bottom:18px;}
  .cal-head h3{font-size:clamp(19px,2.6vw,24px);margin:0 0 6px;color:var(--text-dark);}
  .cal-head p{font-size:13.5px;color:var(--text-dim);margin:0;line-height:1.55;}
  .cal-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;max-width:680px;margin:0 auto;}
  @media (max-width:640px){.cal-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;}}
  .cal-m{position:relative;border-radius:14px;background:var(--surface);border:1px solid var(--line);padding:13px 6px 11px;text-align:center;cursor:pointer;overflow:hidden;transition:transform var(--d-s) var(--ease-spring),border-color var(--d-s) var(--ease),box-shadow var(--d-s) var(--ease);}
  .cal-m .cm-fill{position:absolute;inset:0;background:var(--blue-deep);opacity:var(--heat,0);}
  .cal-m > b,.cal-m > span{position:relative;z-index:1;}
  .cal-m b{display:block;font-size:19px;font-weight:800;color:var(--text);line-height:1;margin-bottom:5px;font-feature-settings:"tnum";}
  .cal-m span{display:block;font-size:9px;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:var(--text-dim);}
  .cal-m:hover{border-color:var(--blue-deep);box-shadow:0 0 0 1px var(--blue-deep),0 8px 22px rgba(0,145,255,.2);transform:translateY(-2px);}
  .cal-m.is-empty{opacity:.35;cursor:default;}
  .cal-m.is-empty:hover{border-color:var(--line);box-shadow:none;transform:none;}
  .cal-m.is-active{border-color:var(--blue-deep);box-shadow:0 0 0 2px var(--blue-deep);}
  .cal-note{text-align:center;margin-top:14px;font-size:12px;color:var(--text-faint);}
  .cal-note button{background:none;border:none;color:var(--blue-deep);font-weight:700;font-size:12px;cursor:pointer;padding:0;text-decoration:underline;}

  .filter-back{display:flex;justify-content:center;margin:0 0 24px;}
  .filter-back .btn{padding:11px 22px;font-size:13.5px;}

  /* ==================================================================================
     V10 — SIGNATURE LX (28.09.2026)
     Les 16 tuiles des Länder se posent d'abord en "LX", puis s'envolent chacune vers sa
     position géographique réelle. La signature est vue, et la carte garde son sens.
     ================================================================================== */
  .map-grid.lx-phase .land{transition:none;}
  .map-grid.lx-flying .land{transition:transform 1s cubic-bezier(.22,1,.36,1) var(--fd,0ms),opacity .5s var(--ease);}
  .map-grid.lx-phase .land span,.map-grid.lx-flying .land span{opacity:0;transition:opacity .45s var(--ease);}
  .map-grid.lx-done .land span{opacity:1;transition:opacity .5s var(--ease) 120ms;}
  .map-grid.lx-phase .land b,.map-grid.lx-flying .land b{opacity:.9;}
  .map-grid.lx-phase .land.is-empty,.map-grid.lx-flying .land.is-empty{opacity:1;}
  .map-grid.lx-phase .land .ld-fill,.map-grid.lx-flying .land .ld-fill{opacity:.55 !important;transition:opacity .6s var(--ease);}

  .lx-sign{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:14px;font-size:10px;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--text-faint);opacity:0;transition:opacity .6s var(--ease);}
  .lx-sign.is-in{opacity:1;}
  .lx-sign i{display:block;width:16px;height:1px;background:var(--line-hi);}

  /* ==================================================================================
     V11 — DEUX FILIÈRES (28.09.2026)
     Infirmier (Ausbildung, 3 ans) et Aide-soignant (Pflegeassistenz, 1-2 ans) sont deux
     qualifications différentes : elles ne partagent jamais la même liste. Le sélecteur
     est structurel, placé au-dessus des filtres, pas noyé parmi eux.
     ================================================================================== */

  .track-pick{max-width:680px;margin:0 auto 14px;display:grid;grid-template-columns:1fr 1fr;gap:8px;}
  @media (max-width:560px){.track-pick{grid-template-columns:1fr;}}
  .track-btn{position:relative;display:flex;align-items:center;gap:13px;padding:15px 18px;border-radius:18px;border:1.5px solid var(--line);background:var(--surface);cursor:pointer;text-align:left;transition:border-color var(--d-s) var(--ease),box-shadow var(--d-s) var(--ease),transform var(--d-s) var(--ease-spring);}
  .track-btn:hover{border-color:var(--line-hi);transform:translateY(-1px);}
  .track-btn.is-active{border-color:var(--blue-deep);box-shadow:0 0 0 1px var(--blue-deep),0 10px 26px rgba(0,145,255,.18);}
  .track-btn .tk-ico{width:34px;height:34px;flex:none;border-radius:11px;background:var(--elevated);display:flex;align-items:center;justify-content:center;color:var(--text-dim);}
  .track-btn.is-active .tk-ico{background:var(--blue-sky-soft);color:var(--blue-deep);}
  .track-btn .tk-ico svg{width:18px;height:18px;}
  .track-btn .tk-txt{min-width:0;flex:1;}
  .track-btn .tk-name{display:block;font-size:14.5px;font-weight:700;color:var(--text);line-height:1.2;}
  .track-btn .tk-sub{display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin-top:3px;}
  .track-btn .tk-n{flex:none;font-size:15px;font-weight:800;color:var(--text-dim);font-feature-settings:"tnum";}
  .track-btn.is-active .tk-n{color:var(--blue-deep);}
  .track-btn.is-void{opacity:.62;}

  .track-note{max-width:680px;margin:0 auto 26px;text-align:center;font-size:12px;line-height:1.55;color:var(--text-faint);}
  .track-note b{color:var(--text-dim);font-weight:700;}

  /* ---------- État vide d'une filière ---------- */
  .track-empty{max-width:560px;margin:10px auto 34px;border-radius:26px;background:var(--surface);border:1.5px dashed var(--line-hi);padding:36px 30px;text-align:center;}
  .track-empty .te-ico{display:flex;justify-content:center;color:var(--text-dim);margin-bottom:14px;}
  .track-empty .te-ico svg{width:30px;height:30px;}
  .track-empty h3{font-size:18.5px;margin:0 0 10px;color:var(--text);}
  .track-empty p{font-size:13.5px;color:var(--text-dim);line-height:1.6;margin:0 auto 20px;max-width:400px;}

  /* ---------- Bloc d'orientation sur l'accueil ---------- */
  .gate-b2{position:relative;overflow:hidden;border-radius:26px;background:var(--surface);box-shadow:var(--shadow-sm);padding:28px 32px;margin:34px 0 0;display:flex;align-items:center;gap:24px;flex-wrap:wrap;}
  .gate-b2::before{content:"";position:absolute;inset:0;background:radial-gradient(520px circle at 92% 10%, rgba(37,211,102,0.14), transparent 62%);}
  .gate-b2 > *{position:relative;z-index:1;}
  .gate-b2 .gb-txt{flex:1;min-width:240px;}
  .gate-b2 .gb-eyebrow{display:block;font-size:10px;font-weight:800;letter-spacing:.17em;text-transform:uppercase;color:#7FE3AE;margin-bottom:8px;}
  .gate-b2 h3{font-size:19px;margin:0 0 8px;color:var(--text);line-height:1.3;}
  .gate-b2 p{font-size:13.5px;color:var(--text-dim);line-height:1.6;margin:0;}
  @media (max-width:560px){.gate-b2{padding:24px 22px;}}

  /* ==================================================================================
     V12 — NIVEAU D'ALLEMAND PAR FILIÈRE (28.09.2026)
     B1 pour l'aide-soignant, B2 le plus souvent pour l'infirmier. C'est l'information
     qui débloque le plus de candidats : elle est donc affichée au niveau de la filière,
     jamais recopiée dans les offres qui ne l'ont pas déclarée.
     ================================================================================== */

  .track-btn .tk-lang{display:inline-flex;align-items:center;gap:5px;margin-top:6px;font-size:10.5px;font-weight:800;letter-spacing:.04em;padding:3px 9px;border-radius:999px;background:var(--elevated);color:var(--text-dim);}
  .track-btn.is-active .tk-lang{background:var(--blue-sky-soft);color:var(--blue-deep);}

  .lang-guide{max-width:680px;margin:0 auto 26px;border-radius:20px;background:var(--surface);border:1px solid var(--line);overflow:hidden;}
  .lang-guide-head{padding:13px 20px;border-bottom:1px solid var(--line);font-size:10px;font-weight:800;letter-spacing:.17em;text-transform:uppercase;color:var(--text-faint);}
  .lg-row{display:grid;grid-template-columns:62px 1fr;gap:14px;align-items:center;padding:13px 20px;border-bottom:1px solid var(--line);}
  .lg-row:last-child{border-bottom:none;}
  .lg-lvl{font-size:15px;font-weight:800;color:var(--text);text-align:center;padding:7px 0;border-radius:11px;background:var(--elevated);}
  .lg-row.is-open .lg-lvl{background:var(--mint-soft);color:#7FE3AE;}
  .lg-row.is-shut .lg-lvl{color:var(--text-faint);}
  .lg-txt{font-size:13px;line-height:1.5;color:var(--text-dim);}
  .lg-txt b{color:var(--text);font-weight:700;}
  .lang-guide-foot{padding:11px 20px;font-size:11.5px;color:var(--text-faint);line-height:1.5;background:var(--elevated);}

  /* ==================================================================================
     V13 — DEUX VOIES, ANNONCÉES DÈS LA LANDING (28.09.2026)
     Le visiteur doit comprendre en haut de page qu'une seconde voie, moins exigeante,
     existe — sans avoir à scroller jusqu'au catalogue.
     ================================================================================== */

  .routes{border-radius:26px;background:var(--surface);box-shadow:var(--shadow-sm);padding:28px 30px 24px;margin:26px 0 0;}
  .routes-head{text-align:center;margin-bottom:20px;}
  .routes-head span{display:block;font-size:10px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--blue-deep);margin-bottom:7px;}
  .routes-head h3{font-size:clamp(18px,2.4vw,23px);margin:0;color:var(--text);line-height:1.3;}
  .routes-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
  @media (max-width:620px){.routes-grid{grid-template-columns:1fr;}}

  .route{position:relative;overflow:hidden;border-radius:20px;background:var(--elevated);border:1.5px solid var(--line);padding:22px 22px 20px;cursor:pointer;transition:border-color var(--d-s) var(--ease),transform var(--d-s) var(--ease-spring),box-shadow var(--d-s) var(--ease);}
  .route:hover{border-color:var(--blue-deep);transform:translateY(-3px);box-shadow:0 12px 30px rgba(0,145,255,.18);}
  .route .rt-ico{width:36px;height:36px;border-radius:12px;background:rgba(255,255,255,.06);display:flex;align-items:center;justify-content:center;color:var(--blue-deep);margin-bottom:14px;}
  .route .rt-ico svg{width:19px;height:19px;}
  .route h4{font-size:17px;margin:0 0 3px;color:var(--text);}
  .route .rt-sub{display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);margin-bottom:16px;}
  .route .rt-line{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-top:1px solid var(--line);font-size:12.5px;color:var(--text-dim);}
  .route .rt-line b{color:var(--text);font-weight:700;font-size:13.5px;}
  .route .rt-lvl b{color:var(--blue-deep);}
  .route .rt-go{display:inline-flex;align-items:center;gap:7px;margin-top:14px;font-size:13px;font-weight:700;color:var(--blue-deep);transition:gap var(--d-s) var(--ease-spring);}
  .route:hover .rt-go{gap:11px;}
  .route.is-soft{border-style:dashed;}
  .route.is-soft .rt-ico{color:#7FE3AE;background:var(--mint-soft);}
  .route.is-soft .rt-lvl b{color:#7FE3AE;}
  .route.is-soft .rt-go{color:#7FE3AE;}

  .routes-foot{margin:18px 0 0;text-align:center;font-size:13px;line-height:1.6;color:var(--text-dim);}
  .routes-foot b{color:var(--text);font-weight:700;}
  /* ==================================================================================
     V14 — LE TOTAL D'ABORD, LA RÉPARTITION ENSUITE (29.09.2026)
     Le hero annonce le catalogue entier. La répartition par filière vient juste après,
     cliquable, sans forcer le visiteur à choisir avant d'avoir vu la valeur.
     ================================================================================== */
  .hero-split{max-width:600px;margin:12px auto 0;display:grid;grid-template-columns:1fr 1fr;gap:10px;box-sizing:border-box;}
  .hero-split .hs-lead{grid-column:1 / -1;text-align:center;font-size:10px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--text-dim);margin-bottom:2px;}
  /* Le liseré : une lumière fait le tour du contour, en continu. Le halo tourne dans
     une couche sous la pastille ; la surface intérieure le masque et ne laisse voir
     que 1,5 px de bord. Aucun arrêt, aucune pause. */
  .hs-chip{--hs-neon:#0091FF;position:relative;isolation:isolate;min-width:0;box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:12.5px 15.5px;border:0;border-radius:14px;background:transparent;overflow:hidden;cursor:pointer;text-align:left;font-family:inherit;transition:transform var(--d-s) var(--ease-spring),box-shadow var(--d-s) var(--ease);}
  .hs-chip::before{content:"";position:absolute;inset:-100%;z-index:0;background:conic-gradient(from 0deg,transparent 0 58%,color-mix(in srgb,var(--hs-neon) 45%,transparent) 68%,var(--hs-neon) 74%,#FFFFFF 76.5%,var(--hs-neon) 79%,color-mix(in srgb,var(--hs-neon) 45%,transparent) 85%,transparent 94% 100%);animation:hsOrbit 4.6s linear infinite;}
  .hs-chip::after{content:"";position:absolute;inset:1.5px;z-index:1;border-radius:12.5px;background:rgba(255,255,255,0.80);box-shadow:inset 0 0 0 1px rgba(0,0,0,0.05);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);}
  .hs-chip b,.hs-chip span{position:relative;z-index:2;}
  .hs-chip b{flex:0 0 auto;font-size:19px;font-weight:700;line-height:1;letter-spacing:-0.01em;color:var(--blue-deep-ink);}
  .hs-chip span{min-width:0;font-size:11px;font-weight:600;line-height:1.25;color:var(--text-dim);}
  .hs-chip span i{display:block;font-style:normal;font-size:12.5px;font-weight:700;color:var(--text-dark);margin-bottom:1px;}
  .hs-chip:hover{transform:translateY(-2px);box-shadow:0 10px 24px color-mix(in srgb,var(--hs-neon) 22%,transparent);}
  .hs-chip:hover::before{animation-duration:2.4s;}
  .hs-chip.is-soft{--hs-neon:#25D366;}
  .hs-chip.is-soft b{color:#1B8F57;}
  @keyframes hsOrbit{to{transform:rotate(1turn);}}
  /* Mouvement réduit : le liseré se fige en un contour net, sans rotation. */
  @media (prefers-reduced-motion:reduce){
    .hs-chip::before{animation:none;background:var(--hs-neon);opacity:.55;}
    .hs-chip:hover::before{animation:none;}
  }
  /* Repli si color-mix n'est pas connu du navigateur : contour plein, toujours animé. */
  @supports not (background:color-mix(in srgb,#000 50%,transparent)){
    .hs-chip::before{background:conic-gradient(from 0deg,transparent 0 62%,var(--hs-neon) 74%,#FFFFFF 77%,var(--hs-neon) 80%,transparent 92% 100%);}
  }
  @media (max-width:640px){
    .hero-split{gap:8px;}
    .hero-split .hs-lead{font-size:9px;margin-bottom:0;}
    .hs-chip{padding:9px 10px;gap:8px;border-radius:12px;}
    .hs-chip b{font-size:16px;}
    .hs-chip span{font-size:9.5px;}
    .hs-chip span i{font-size:11px;}
  }
  /* ==================================================================================
     V15 — LE HEADER S'EFFACE AU SCROLL (29.09.2026)
     En descendant, la barre se retire vers le haut et rend tout l'écran au contenu.
     En remontant — le geste de quelqu'un qui cherche à naviguer — elle revient.
     ================================================================================== */
  .topbar{will-change:transform;transition:background 220ms var(--ease),border-color 220ms var(--ease),box-shadow 220ms var(--ease),transform 420ms var(--ease);}
  .topbar.is-away{transform:translateY(-102%);box-shadow:none;border-bottom-color:transparent;}
  /* Mouvement réduit : la barre reste en place plutôt que de sauter. */
  @media (prefers-reduced-motion:reduce){
    .topbar{transition:background 220ms linear,border-color 220ms linear,box-shadow 220ms linear;}
    .topbar.is-away{transform:none;}
  }
