/* ==========================================================================
   QC AIR — thème Bootstrap 5.3
   Ordre de chargement : bootstrap.min.css → bootstrap-icons → qcair.css
   Tout le thème passe par les variables CSS de Bootstrap (--bs-*) + quelques
   variables maison (--qc-*). Le mode sombre = <html data-bs-theme="dark">.
   ========================================================================== */

/* ---------- Polices (auto-hébergées, aucune requête à Google : Loi 25) ---------- */
@font-face{font-family:"Barlow";src:url("../fonts/barlow-latin-400-normal.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Barlow";src:url("../fonts/barlow-latin-500-normal.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Barlow";src:url("../fonts/barlow-latin-600-normal.woff2") format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Barlow";src:url("../fonts/barlow-latin-700-normal.woff2") format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Barlow Condensed";src:url("../fonts/barlow-condensed-latin-600-normal.woff2") format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Barlow Condensed";src:url("../fonts/barlow-condensed-latin-700-normal.woff2") format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("../fonts/jetbrains-mono-latin-400-normal.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"JetBrains Mono";src:url("../fonts/jetbrains-mono-latin-600-normal.woff2") format("woff2");font-weight:600;font-display:swap}

/* ---------- Jetons communs ---------- */
:root{
  --qc-blue:#075797;          /* bleu du logo */
  --qc-blue-rgb:7,87,151;
  --qc-blue-700:#05467a;
  --qc-blue-900:#062a48;
  --qc-sky:#3d9be0;
  --qc-gray:#a09f9f;          /* gris du logo */
  --qc-amber:#f2b705;         /* « tableau des départs », réservé au direct */
  --qc-amber-rgb:242,183,5;
  --qc-night:#08131f;

  --qc-font-display:"Barlow Condensed","Arial Narrow",sans-serif;
  --qc-font-mono:"JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --qc-radius-lg:1rem;
  --qc-shadow:0 1px 2px rgba(8,19,31,.06),0 4px 16px rgba(8,19,31,.06);

  --bs-font-sans-serif:"Barlow",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --bs-font-monospace:var(--qc-font-mono);
  --bs-border-radius:.5rem;
  --bs-border-radius-lg:var(--qc-radius-lg);
}

/* ---------- Mode clair ---------- */
[data-bs-theme=light]{
  --bs-primary:#075797;
  --bs-primary-rgb:7,87,151;
  --bs-primary-text-emphasis:#05467a;
  --bs-primary-bg-subtle:#e3eef8;
  --bs-primary-border-subtle:#b5d0e8;
  --bs-link-color:#075797;
  --bs-link-color-rgb:7,87,151;
  --bs-link-hover-color:#05467a;
  --bs-link-hover-color-rgb:5,70,122;
  --bs-body-bg:#f3f6f9;
  --bs-body-bg-rgb:243,246,249;
  --bs-body-color:#16212c;
  --bs-secondary-color:rgba(22,33,44,.72);
  --bs-tertiary-bg:#e9eef3;
  --bs-border-color:#d9e1e8;
  --qc-surface:#ffffff;
  --qc-surface-2:#f7f9fb;
  --qc-heading:#062a48;
  --qc-logo-light:block; --qc-logo-dark:none;
}

/* ---------- Mode sombre (« cockpit de nuit ») ---------- */
[data-bs-theme=dark]{
  --bs-primary:#4a9fe3;
  --bs-primary-rgb:74,159,227;
  --bs-primary-text-emphasis:#8cc4f0;
  --bs-primary-bg-subtle:#0c2a45;
  --bs-primary-border-subtle:#1a4a73;
  --bs-link-color:#6ab0ea;
  --bs-link-color-rgb:106,176,234;
  --bs-link-hover-color:#9ccbf2;
  --bs-link-hover-color-rgb:156,203,242;
  --bs-body-bg:#08131f;
  --bs-body-bg-rgb:8,19,31;
  --bs-body-color:#dfe7ef;
  --bs-secondary-color:rgba(223,231,239,.7);
  --bs-tertiary-bg:#13263a;
  --bs-border-color:#21384f;
  --qc-surface:#0f1f30;
  --qc-surface-2:#132639;
  --qc-heading:#f2f6fa;
  --qc-logo-light:none; --qc-logo-dark:block;
}

/* ---------- Base ---------- */
body{font-feature-settings:"tnum" 1;-webkit-font-smoothing:antialiased}
h1,h2,h3,.qc-display{font-family:var(--qc-font-display);font-weight:700;letter-spacing:.01em;color:var(--qc-heading)}
h4,h5,h6{font-weight:600;color:var(--qc-heading)}
.font-mono,.qc-mono{font-family:var(--qc-font-mono);font-feature-settings:"tnum" 1,"zero" 1}
:focus-visible{outline:3px solid rgba(var(--qc-amber-rgb),.9);outline-offset:2px}
.btn,.nav-link,.dropdown-item,.form-control,.form-select{min-height:44px}
.btn{font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:.5rem}
.btn-sm{min-height:36px}
.skip-link{position:absolute;left:-999px;top:0;z-index:2000}
.skip-link:focus{left:1rem;top:1rem}

/* Étiquette de signalétique : petite, majuscules, espacée */
.qc-label{font-family:var(--qc-font-display);font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:.8125rem;color:var(--bs-secondary-color)}

/* Logo : bascule clair / sombre */
.qc-logo{height:40px;width:auto}
.qc-logo--light{display:var(--qc-logo-light)}
.qc-logo--dark{display:var(--qc-logo-dark)}

/* ---------- Boutons : Bootstrap compile ses couleurs, on les remappe ---------- */
.btn-primary{--bs-btn-bg:var(--bs-primary);--bs-btn-border-color:var(--bs-primary);--bs-btn-hover-bg:var(--qc-blue-700);--bs-btn-hover-border-color:var(--qc-blue-700);--bs-btn-active-bg:var(--qc-blue-900);--bs-btn-active-border-color:var(--qc-blue-900);--bs-btn-disabled-bg:var(--bs-primary);--bs-btn-disabled-border-color:var(--bs-primary);--bs-btn-focus-shadow-rgb:var(--bs-primary-rgb)}
[data-bs-theme=dark] .btn-primary{--bs-btn-color:#06131f;--bs-btn-hover-color:#06131f;--bs-btn-active-color:#06131f;--bs-btn-hover-bg:#6ab0ea;--bs-btn-hover-border-color:#6ab0ea;--bs-btn-active-bg:#8cc4f0;--bs-btn-active-border-color:#8cc4f0}
.btn-outline-primary{--bs-btn-color:var(--bs-primary);--bs-btn-border-color:var(--bs-primary);--bs-btn-hover-bg:var(--bs-primary);--bs-btn-hover-border-color:var(--bs-primary);--bs-btn-active-bg:var(--bs-primary);--bs-btn-active-border-color:var(--bs-primary);--bs-btn-focus-shadow-rgb:var(--bs-primary-rgb)}
[data-bs-theme=dark] .btn-outline-primary{--bs-btn-hover-color:#06131f;--bs-btn-active-color:#06131f}
.btn-warning{--bs-btn-bg:var(--qc-amber);--bs-btn-border-color:var(--qc-amber);--bs-btn-color:#1b1400;--bs-btn-hover-bg:#ffc933;--bs-btn-hover-border-color:#ffc933;--bs-btn-hover-color:#1b1400;--bs-btn-active-bg:#d9a400;--bs-btn-active-border-color:#d9a400}
.form-control:focus,.form-select:focus,.form-check-input:focus{border-color:var(--bs-primary);box-shadow:0 0 0 .25rem rgba(var(--bs-primary-rgb),.25)}
.form-check-input:checked{background-color:var(--bs-primary);border-color:var(--bs-primary)}
.page-link{--bs-pagination-color:var(--bs-link-color);--bs-pagination-active-bg:var(--bs-primary);--bs-pagination-active-border-color:var(--bs-primary)}
.progress-bar{background-color:var(--bs-primary)}

/* ---------- Carte de surface ---------- */
.qc-card{background:var(--qc-surface);border:1px solid var(--bs-border-color);border-radius:var(--qc-radius-lg);box-shadow:var(--qc-shadow)}
.qc-card__head{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 1.25rem;border-bottom:1px solid var(--bs-border-color)}
.qc-card__head h2,.qc-card__head h3{font-size:1.375rem;margin:0}
.qc-card__body{padding:1.25rem}

/* ---------- Navigation ---------- */
.qc-navbar{background:var(--qc-surface);border-bottom:1px solid var(--bs-border-color)}
.qc-navbar .nav-link{font-weight:500;display:flex;align-items:center;color:var(--bs-body-color)}
.qc-navbar .nav-link:hover,.qc-navbar .nav-link.active{color:var(--bs-primary)}
.qc-navbar .nav-link.active{box-shadow:inset 0 -3px 0 var(--bs-primary)}
.qc-navbar .dropdown-menu{border-radius:.75rem;box-shadow:var(--qc-shadow);padding:.5rem}
.qc-navbar .dropdown-item{border-radius:.5rem;display:flex;align-items:center;gap:.625rem}
.qc-navbar .dropdown-item i{color:var(--bs-primary)}
@media (max-width:991.98px){
  .qc-navbar .nav-link.active{box-shadow:inset 3px 0 0 var(--bs-primary);padding-left:.75rem}
}

/* ---------- Héros ---------- */
.qc-hero{position:relative;overflow:hidden;color:#fff;background:var(--qc-night)}
.qc-hero__bg{position:absolute;inset:0;pointer-events:none;opacity:.9}
.qc-hero > [class*=container]{position:relative;z-index:1}
.qc-hero h1{color:#fff;font-size:clamp(2.5rem,6vw,4.5rem);line-height:.98;text-transform:uppercase}
.qc-hero h1 span{color:var(--qc-amber)}
.qc-hero .lead{color:rgba(255,255,255,.82);max-width:36rem}
.qc-hero .qc-label{color:rgba(255,255,255,.7)}
.qc-steps{list-style:none;padding:0;margin:0;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
.qc-steps li{display:flex;gap:.75rem;align-items:flex-start;color:rgba(255,255,255,.85);font-size:.9375rem}
.qc-steps b{display:inline-grid;place-items:center;flex:0 0 2rem;height:2rem;border-radius:50%;border:1.5px solid var(--qc-amber);color:var(--qc-amber);font-family:var(--qc-font-mono);font-size:.875rem}
.qc-steps a{color:#fff}

/* Tableau des départs (héros) */
.qc-board{background:#0d1b2a;border:1px solid #1f3449;border-radius:var(--qc-radius-lg);padding:1rem 1.25rem;font-family:var(--qc-font-mono);color:#e8eef4;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.qc-board__title{display:flex;justify-content:space-between;align-items:center;font-family:var(--qc-font-display);text-transform:uppercase;letter-spacing:.1em;color:var(--qc-amber);font-weight:700;margin-bottom:.75rem}
.qc-board table{width:100%;font-size:.875rem;border-collapse:separate;border-spacing:0 4px}
.qc-board th{font-weight:400;color:#8ea3b8;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;padding:0 .5rem}
.qc-board td{background:#13263a;padding:.5rem;white-space:nowrap}
.qc-board td:first-child{border-radius:.375rem 0 0 .375rem;color:var(--qc-amber);font-weight:600}
.qc-board td:last-child{border-radius:0 .375rem .375rem 0}

/* Pastille « en direct » */
.qc-live{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--qc-font-display);text-transform:uppercase;letter-spacing:.08em;font-weight:700;font-size:.8125rem;color:var(--qc-amber)}
.qc-live::before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:var(--qc-amber);box-shadow:0 0 0 0 rgba(var(--qc-amber-rgb),.7);animation:qc-pulse 2s infinite}
[data-bs-theme=light] .qc-live:not(.qc-live--on-dark){color:#8a6700}
@keyframes qc-pulse{70%{box-shadow:0 0 0 .5rem rgba(var(--qc-amber-rgb),0)}100%{box-shadow:0 0 0 0 rgba(var(--qc-amber-rgb),0)}}
@media (prefers-reduced-motion:reduce){.qc-live::before{animation:none}}

/* ---------- Tuiles de statistiques ---------- */
.qc-stat{display:flex;gap:1rem;align-items:center;height:100%;padding:1.125rem 1.25rem}
.qc-stat__icon{flex:0 0 3rem;height:3rem;border-radius:.75rem;display:grid;place-items:center;font-size:1.375rem;background:var(--bs-primary-bg-subtle);color:var(--bs-primary)}
.qc-stat__value{font-family:var(--qc-font-display);font-weight:700;font-size:2.125rem;line-height:1;color:var(--qc-heading);font-variant-numeric:tabular-nums}
.qc-stat__value small{font-size:1.125rem;font-weight:600;color:var(--bs-secondary-color);margin-left:.15rem}
.qc-stat__value{white-space:nowrap}
@media (max-width:575.98px){.qc-stat{flex-direction:column;align-items:flex-start;gap:.75rem;padding:1rem}.qc-stat__icon{flex-basis:auto;width:2.5rem;height:2.5rem;font-size:1.125rem}.qc-stat__value{font-size:1.875rem}}
.qc-stat__label{font-size:.9375rem;color:var(--bs-secondary-color);margin-top:.25rem;line-height:1.25}
.qc-stat--live .qc-stat__icon{background:rgba(var(--qc-amber-rgb),.16);color:#9a7300}
[data-bs-theme=dark] .qc-stat--live .qc-stat__icon{color:var(--qc-amber)}

/* ---------- Carte des vols (remplacer par la carte réelle) ---------- */
.qc-map{position:relative;aspect-ratio:16/7;min-height:280px;border-radius:var(--qc-radius-lg);overflow:hidden;background:#0b1a2a}
.qc-map svg{position:absolute;inset:0;width:100%;height:100%}
.qc-map__legend{position:absolute;left:1rem;bottom:1rem;background:rgba(8,19,31,.85);color:#dfe7ef;border-radius:.5rem;padding:.5rem .75rem;font-size:.8125rem}
.qc-map__plane{position:absolute;transform:translate(-50%,-50%);color:var(--qc-amber);font-size:1.25rem;line-height:1}
.qc-map__plane span{position:absolute;left:1.4rem;top:-.1rem;font-family:var(--qc-font-mono);font-size:.6875rem;color:#fff;background:rgba(8,19,31,.75);padding:.05rem .3rem;border-radius:.25rem;white-space:nowrap}
@media (max-width:767.98px){.qc-map{aspect-ratio:4/3}}

/* ---------- Tableaux ---------- */
.qc-table{--bs-table-bg:transparent;margin:0;font-size:.9375rem}
.qc-table thead th{font-family:var(--qc-font-display);font-weight:600;text-transform:uppercase;letter-spacing:.06em;font-size:.8125rem;color:var(--bs-secondary-color);border-bottom-width:1px;white-space:nowrap;padding-top:.75rem;padding-bottom:.75rem}
.qc-table td{vertical-align:middle;padding-top:.75rem;padding-bottom:.75rem}
.qc-table tbody tr:hover{--bs-table-bg-state:rgba(var(--bs-primary-rgb),.05)}
.qc-table .num{text-align:end;font-family:var(--qc-font-mono);font-size:.875rem;white-space:nowrap}
.qc-table .code{font-family:var(--qc-font-mono);font-weight:600;font-size:.875rem}
.qc-sort{background:none;border:0;padding:0;color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;display:inline-flex;align-items:center;gap:.25rem;min-height:0}
.qc-sort i{opacity:.45}
.qc-sort[aria-sort] i{opacity:1;color:var(--bs-primary)}
.qc-route{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--qc-font-mono);font-weight:600;font-size:.875rem;white-space:nowrap}
.qc-route i{color:var(--bs-secondary-color);font-size:.75rem}

/* Donnée manquante : jamais une cellule vide */
.qc-na{display:inline-block;font-family:var(--qc-font-display);font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;padding:.1rem .45rem;border-radius:.3rem;background:var(--bs-tertiary-bg);color:var(--bs-secondary-color)}

/* Phase de vol */
.qc-phase{display:inline-flex;align-items:center;gap:.35rem;font-size:.8125rem;font-weight:600;padding:.2rem .55rem;border-radius:2rem;white-space:nowrap}
.qc-phase--climb{background:#e3eef8;color:#05467a}
.qc-phase--cruise{background:#e3f4ea;color:#1d6b3f}
.qc-phase--descent{background:#fdf1d6;color:#7a5800}
.qc-phase--ground{background:var(--bs-tertiary-bg);color:var(--bs-secondary-color)}
[data-bs-theme=dark] .qc-phase--climb{background:#0c2a45;color:#8cc4f0}
[data-bs-theme=dark] .qc-phase--cruise{background:#0f3020;color:#7fd3a2}
[data-bs-theme=dark] .qc-phase--descent{background:#3a2c06;color:#f2cf6b}

/* Vol en carte (mobile) */
.qc-flight-list{list-style:none;margin:0;padding:0}
.qc-flight{padding:1rem 1.25rem;border-bottom:1px solid var(--bs-border-color)}
.qc-flight:last-child{border-bottom:0}
.qc-flight__top{display:flex;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem}
.qc-flight__route{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:.5rem;margin:.5rem 0}
.qc-flight__route .icao{font-family:var(--qc-font-mono);font-weight:600;font-size:1.25rem;color:var(--qc-heading)}
.qc-flight__route .city{font-size:.8125rem;color:var(--bs-secondary-color)}
.qc-flight__route > :last-child{text-align:end}
.qc-flight__meta{display:flex;flex-wrap:wrap;gap:.25rem 1rem;font-size:.875rem;color:var(--bs-secondary-color)}
.qc-flight__meta b{font-family:var(--qc-font-mono);font-weight:600;color:var(--bs-body-color)}
.qc-flight details summary{cursor:pointer;color:var(--bs-link-color);font-size:.875rem;margin-top:.5rem;min-height:32px;display:flex;align-items:center}

/* ---------- Classements ---------- */
.qc-rank{list-style:none;margin:0;padding:0}
.qc-rank li{display:flex;align-items:center;gap:.875rem;padding:.75rem 1.25rem;border-bottom:1px solid var(--bs-border-color)}
.qc-rank li:last-child{border-bottom:0}
.qc-rank__pos{flex:0 0 1.75rem;height:1.75rem;border-radius:50%;display:grid;place-items:center;font-family:var(--qc-font-mono);font-weight:600;font-size:.8125rem;background:var(--bs-tertiary-bg)}
.qc-rank li:first-child .qc-rank__pos{background:var(--qc-amber);color:#1b1400}
.qc-rank__name{flex:1;min-width:0}
.qc-rank__name a{font-weight:600;text-decoration:none}
.qc-rank__name small{display:block;color:var(--bs-secondary-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qc-rank__val{font-family:var(--qc-font-mono);font-weight:600;white-space:nowrap}
.qc-rank__val small{font-weight:400;color:var(--bs-secondary-color)}

/* ---------- Médailles (badges) ---------- */
.qc-medal{--m1:#d9a514;--m2:#a87a00;display:flex;flex-direction:column;align-items:center;text-align:center;gap:.5rem;text-decoration:none;color:inherit}
.qc-medal__disc{position:relative;width:76px;height:76px;margin-top:22px;border-radius:50%;display:grid;place-items:center;font-size:1.75rem;color:#fff;
  background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.35),transparent 55%),var(--m1);
  box-shadow:inset 0 0 0 4px var(--m2),inset 0 0 0 7px rgba(255,255,255,.35),0 4px 10px rgba(8,19,31,.18)}
.qc-medal__disc::before{content:"";position:absolute;top:-24px;left:50%;width:34px;height:30px;transform:translateX(-50%);z-index:-1;
  background:linear-gradient(90deg,var(--qc-blue) 0 33%,#fff 33% 66%,var(--qc-blue) 66%);clip-path:polygon(0 0,100% 0,100% 100%,50% 75%,0 100%)}
.qc-medal__name{font-weight:600;font-size:.9375rem;line-height:1.2;color:var(--qc-heading)}
.qc-medal__meta{font-size:.8125rem;color:var(--bs-secondary-color)}
.qc-medal--gold{--m1:#d9a514;--m2:#9c7400}
.qc-medal--silver{--m1:#9eabb8;--m2:#6d7b89}
.qc-medal--bronze{--m1:#c27a43;--m2:#8a4f22}
.qc-medal--blue{--m1:#1f78c1;--m2:#075797}
.qc-medal--locked .qc-medal__disc{--m1:#c9d2db;--m2:#aab5c0;filter:grayscale(1);opacity:.55}
.qc-medal--locked .qc-medal__name{color:var(--bs-secondary-color)}
[data-bs-theme=dark] .qc-medal--locked .qc-medal__disc{--m1:#2a3e53;--m2:#3a536c}

/* ---------- Profil ---------- */
.qc-avatar{width:88px;height:88px;border-radius:50%;display:grid;place-items:center;font-family:var(--qc-font-display);font-weight:700;font-size:2rem;color:#fff;background:var(--qc-blue);box-shadow:0 0 0 4px var(--qc-surface),0 0 0 6px var(--qc-amber)}
.qc-profile-head{background:var(--qc-night);color:#fff;border-radius:var(--qc-radius-lg);overflow:hidden;position:relative}
.qc-profile-head h1{color:#fff}
.qc-profile-head .text-secondary-emphasis{color:rgba(255,255,255,.75)!important}
.qc-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .7rem;border-radius:2rem;background:rgba(255,255,255,.1);font-size:.875rem;color:#fff}
.qc-chip .font-mono{font-weight:600}
.qc-bars{display:grid;grid-template-columns:repeat(12,1fr);gap:.375rem;align-items:end;height:140px}
.qc-bars div{background:var(--bs-primary);border-radius:.25rem .25rem 0 0;min-height:4px;position:relative}
.qc-bars div:last-child{background:var(--qc-amber)}
.qc-bars-x{display:grid;grid-template-columns:repeat(12,1fr);gap:.375rem;font-size:.6875rem;color:var(--bs-secondary-color);text-align:center;margin-top:.375rem}
.qc-progress{height:.625rem;border-radius:1rem;background:var(--bs-tertiary-bg)}
.qc-progress .progress-bar{background:var(--bs-primary);border-radius:1rem}

/* ---------- Filtres ---------- */
.qc-filters .form-label{font-size:.8125rem;font-weight:600;margin-bottom:.25rem}

/* ---------- Formulaires d'accès ---------- */
.qc-auth{min-height:calc(100vh - 80px);display:grid;grid-template-columns:1fr;background:var(--bs-body-bg)}
.qc-auth__aside{display:none}
@media (min-width:992px){
  .qc-auth{grid-template-columns:5fr 7fr}
  .qc-auth__aside{display:flex;flex-direction:column;justify-content:space-between;background:var(--qc-night);color:#fff;padding:3rem;position:relative;overflow:hidden}
  .qc-auth__aside h2{color:#fff;font-size:2.75rem;text-transform:uppercase;line-height:1}
}
.qc-auth__main{display:flex;align-items:center;justify-content:center;padding:2rem 1rem}
.qc-auth__form{width:100%;max-width:30rem}
.qc-stepper{list-style:none;display:flex;gap:.5rem;padding:0;margin:0 0 1.5rem;counter-reset:s}
.qc-stepper li{flex:1;counter-increment:s;font-size:.8125rem;font-weight:600;color:var(--bs-secondary-color);padding-top:.625rem;border-top:4px solid var(--bs-border-color)}
.qc-stepper li::before{content:counter(s) ". "}
.qc-stepper li[aria-current=step]{color:var(--bs-primary);border-color:var(--bs-primary)}
.qc-stepper li.done{color:var(--bs-body-color);border-color:var(--bs-primary)}

/* ---------- Pied de page ---------- */
.qc-footer{background:var(--qc-night);color:rgba(255,255,255,.75);font-size:.9375rem}
.qc-footer h2{font-family:var(--qc-font-display);font-size:.875rem;text-transform:uppercase;letter-spacing:.1em;color:#fff;margin-bottom:1rem}
.qc-footer ul{list-style:none;padding:0;margin:0}
.qc-footer li{margin-bottom:.25rem}
.qc-footer a{color:rgba(255,255,255,.85);text-decoration:none;display:inline-flex;align-items:center;min-height:32px;gap:.35rem}
.qc-footer a:hover{color:#fff;text-decoration:underline}
.qc-footer .bi-box-arrow-up-right{font-size:.7rem;opacity:.6}
.qc-footer__bottom{border-top:1px solid rgba(255,255,255,.12)}

/* Fond « carte aéronautique » réutilisable (héros, profil, connexion) */
.qc-chart-bg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.qc-medal-grid{display:grid;gap:1.5rem 1rem;grid-template-columns:repeat(auto-fill,minmax(128px,1fr))}

/* Mode sombre : les blocs « nuit » se détachent du fond */
[data-bs-theme=dark] .qc-profile-head,[data-bs-theme=dark] .qc-auth__aside{background:#0c1d2e;border:1px solid var(--bs-border-color)}
[data-bs-theme=dark] .qc-footer{border-top:1px solid var(--bs-border-color);background:#060f19}

/* Nom de marque : toujours « QcAir », jamais en majuscules, même dans une étiquette */
.qc-brand{text-transform:none;letter-spacing:.02em}

/* ---------- Ajouts intégration PHP ---------- */
/* Médaille avec la vraie image de badge QcAir (SVG rectangulaire 162x72) au lieu du disque */
/* Les SVG de badges n'ont pas de dimensions propres (viewBox seul) : taille explicite.
   Dessinés en bleu et gris foncés : plaque claire pour rester lisibles en mode sombre. */
.qc-medal__img{display:flex;align-items:center;justify-content:center;width:100%;max-width:150px;height:84px;margin-top:14px;padding:.5rem .75rem;
  border-radius:.875rem;background:#eef3f8;box-shadow:inset 0 0 0 1px rgba(7,87,151,.14)}
.qc-medal__img img{display:block;width:100%;height:auto;max-height:100%;object-fit:contain}
[data-bs-theme=dark] .qc-medal__img{background:#dfe7ef;box-shadow:none}
/* Carte Google Maps dans .qc-map : la légende passe au-dessus de la carte */
.qc-map .qc-map__legend{z-index:2}
.qc-map > div:not(.qc-map__legend){border-radius:inherit}
/* Peu de badges (accueil : 6) : auto-fit répartit les médailles sur toute la largeur au lieu de laisser des colonnes vides à droite */
.qc-medal-grid{grid-template-columns:repeat(auto-fit,minmax(128px,1fr))}
.qc-medal-grid .qc-medal__img{margin-left:auto;margin-right:auto}
/* Badge pas encore obtenu (fiche pilote) : image grisée */
.qc-medal--locked .qc-medal__img img{filter:grayscale(1);opacity:.4}
/* .qc-chip est prévue pour un fond sombre (en-tête de profil) ; variante pour un fond normal, clair ou sombre */
.qc-chip--surface{background:var(--bs-primary-bg-subtle);color:var(--bs-primary-text-emphasis);font-weight:600}
/* .qc-steps est prévue pour le héros sombre (texte blanc) ; variante pour un fond normal */
.qc-steps--surface li{color:var(--bs-body-color)}
.qc-steps--surface b{border-color:var(--bs-primary);color:var(--bs-primary)}
/* Bulle d'information des cartes d'aéroports (fond blanc de Google Maps dans les deux thèmes) */
.qc-map-info{font-family:var(--qc-font-body, inherit);min-width:180px;color:#0b1f33}
.qc-map-info__code{font-family:var(--qc-font-mono);font-weight:600;color:#075797;font-size:.9375rem}
.qc-map-info__name{font-weight:600;line-height:1.25;margin-top:.1rem}
.qc-map-info__meta{font-size:.8125rem;color:#4a5d70;margin-top:.2rem}
.qc-map-info .btn{color:#fff}
