/* ==========================================================================
   Hub Airbus — composants du gabarit hub (repris des maquettes validées).
   Le socle charte (tokens, masthead, hero, boutons, cartes, FAQ, footer)
   vit dans charte.css ; ce fichier ne contient que les composants de page.
   ========================================================================== */
/* composants du gabarit hub — repris des maquettes validées ; le socle vit dans assets/css/charte.css */
.prose h3{font-size:var(--heading-xs-size);line-height:var(--heading-xs-lh);font-weight:400;color:var(--navy);margin:var(--sp-06) 0 var(--sp-02)}
.prose p{margin:0 0 var(--sp-04);color:var(--gray-mid);font-size:var(--p-md-size);line-height:var(--p-md-lh);max-width:820px}
.prose ul,.prose ol{margin:0 0 var(--sp-04) 20px;color:var(--gray-mid);font-size:var(--p-md-size);line-height:1.9;max-width:800px}
.prose b{color:var(--navy);font-weight:400}
.prose .cta{display:inline-block;margin:0 var(--sp-04) var(--sp-04) 0;font-size:var(--p-md-size)}

/* hero : grille + stats (maquette hub) */
.hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-10);align-items:stretch;padding:50px 0 80px}
.hero-media{background:rgba(255,255,255,.08);border:1px dashed rgba(255,255,255,.35);border-radius:var(--radius-02);min-height:320px;display:flex;align-items:center;justify-content:center;color:#B9C9E8;font-size:var(--p-sm-size);line-height:var(--p-sm-lh);text-align:center;padding:var(--sp-06)}
.hero-media.has-img{background:none;border:0;padding:0;min-height:0;position:relative;overflow:hidden;border-radius:var(--radius-02)}
.hero-media.has-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,220px));gap:var(--sp-04);margin-top:var(--sp-08)}
.stat{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:var(--radius-02);padding:var(--sp-04)}
.stat b{display:block;font-size:var(--heading-sm-size);font-weight:400;letter-spacing:var(--heading-sm-ls)}
.stat span{font-size:var(--p-xs-size);color:#B9C9E8;line-height:1.4;display:block;margin-top:2px}

/* cartes : variantes (tag entité, listes internes, prix) */
.card .tag{display:block;font-size:var(--p-xs-size);color:var(--blue);margin-bottom:var(--sp-02)}
.card ul{margin:var(--sp-02) 0 0 18px;font-size:var(--p-sm-size);color:var(--gray-mid);line-height:1.8}
.card .hl{color:var(--navy)}

/* étapes numérotées + délai (maquette processus) */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--sp-04);margin-top:var(--sp-08)}
.step{background:#fff;border:2px solid var(--gray-line);border-radius:var(--radius-02);padding:var(--sp-06);position:relative}
.step .n{position:absolute;top:-14px;left:var(--sp-04);width:30px;height:30px;border-radius:var(--radius-full);background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;font-size:var(--p-sm-size)}
.step b{display:block;color:var(--navy);font-weight:400;font-size:var(--p-md-size);margin:var(--sp-02) 0}
.step p{font-size:var(--p-sm-size);color:var(--gray-mid);line-height:var(--p-sm-lh)}
.delay{margin-top:var(--sp-06);background:var(--blue-tint-7);border-radius:var(--radius-02);padding:var(--sp-03) var(--sp-04);font-size:var(--p-sm-size);color:var(--navy)}
.delay b{color:var(--blue-active)}

/* témoignage (maquette formation) */
.quote{display:flex;gap:var(--sp-04);background:#fff;border:2px solid var(--gray-line);border-radius:var(--radius-02);padding:var(--sp-06);max-width:720px}
.quote .ph{width:56px;height:56px;border-radius:var(--radius-full);background:var(--blue);flex:none;display:flex;align-items:center;justify-content:center;color:#fff;font-size:20px}
.quote blockquote{font-size:var(--p-md-size);font-style:italic;color:var(--navy);line-height:var(--p-md-lh)}
.quote figcaption{margin-top:var(--sp-02);font-size:var(--p-sm-size);color:var(--gray-mid)}

/* aiguillage géographique (maquette hub : carte + liste) */
.geo-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-08);align-items:stretch;margin-top:var(--sp-06)}
.mapbox{background:#fff;border:2px solid var(--gray-line);border-radius:var(--radius-02);padding:var(--sp-04);position:relative;display:flex;flex-direction:column;justify-content:center}
.mapbox .hint{font-size:var(--p-xs-size);line-height:var(--p-xs-lh);color:var(--gray-mid);margin-top:var(--sp-03);text-align:center}
.france{width:100%;height:auto;max-height:420px;display:block;margin:0 auto}
.france > path{fill:var(--beige);stroke:#C9C6BF;stroke-width:1.2;stroke-linejoin:round;vector-effect:non-scaling-stroke}
.dot circle{fill:var(--blue);stroke:#fff;stroke-width:2;transition:fill .15s}
.dot{cursor:pointer}
.france a:focus-visible .dot circle{stroke:var(--gold);stroke-width:3}
.dot-static{cursor:default}
.dot-static circle{fill:var(--gray-mid)}
.dot-static:hover circle{fill:var(--gray-mid)}
.site-static{border-style:dashed;cursor:default}
.site-static:hover{border-color:var(--gray-line)}
.site-static b{color:var(--gray-mid)}
.dot:hover circle,.dot.on circle{fill:var(--gold)}
.maptip{position:absolute;pointer-events:none;background:var(--navy);color:#fff;font-size:var(--p-xs-size);padding:5px 10px;border-radius:var(--radius-01);opacity:0;transition:opacity .12s;white-space:nowrap;transform:translate(-50%,-130%)}
.sitelist{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-03)}
.site{background:#fff;border:2px solid var(--gray-line);border-radius:var(--radius-01);padding:var(--sp-03) var(--sp-04);display:flex;justify-content:space-between;align-items:center;gap:var(--sp-03);transition:border-color .15s;color:inherit}
a.site:hover{border-color:var(--blue-accessible);text-decoration:none}
.site b{color:var(--navy);font-weight:400;font-size:var(--p-sm-size);line-height:20px;display:block}
.site small{color:var(--gray-mid);font-size:var(--p-xs-size);line-height:var(--p-xs-lh);display:block;margin-top:2px}
.site .go{color:var(--blue);white-space:nowrap;font-size:var(--p-sm-size)}

/* bloc agence (maquette ville) */
.agence-grid{display:grid;grid-template-columns:280px 1fr;gap:var(--sp-06);margin-top:var(--sp-06);align-items:stretch}
.photo-ph{background:#fff;border:2px dashed var(--gray-line);border-radius:var(--radius-02);display:flex;align-items:center;justify-content:center;color:var(--gray-mid);font-size:var(--p-sm-size);text-align:center;padding:var(--sp-04);min-height:180px}

/* gammes produits (maquette filiale) */
.g5{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--sp-04);margin-top:var(--sp-06)}
.gamme{background:var(--navy);border-radius:var(--radius-02);overflow:hidden;color:#fff;text-align:center;display:flex;flex-direction:column}
.gamme .photo{height:84px;border-bottom:1px dashed rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;font-size:10px;color:#7E93BE;padding:var(--sp-02)}
.gamme .info{padding:var(--sp-03) var(--sp-03) var(--sp-04)}
.gamme b{display:block;font-size:var(--heading-xs-size);font-weight:400;margin-bottom:2px}
.gamme span{font-size:var(--p-xs-size);color:#B9C9E8;line-height:1.4}

.module-offres{border:2px dashed var(--gray-line);border-radius:var(--radius-02);background:#fff;padding:var(--sp-08);text-align:center;color:var(--gray-mid);font-size:var(--p-sm-size);margin-top:var(--sp-04)}
.mesh{font-size:var(--p-sm-size);color:var(--gray-mid)}
.mesh b{color:var(--navy);display:block;margin-bottom:var(--sp-02)}
.mesh a{margin:0 var(--sp-04) var(--sp-02) 0;display:inline-block}

@media(max-width:940px){
  .hero-grid{grid-template-columns:1fr}
  .hero-media{display:none}
  .stats{grid-template-columns:repeat(3,1fr);gap:var(--sp-02)}
  .geo-grid,.agence-grid{grid-template-columns:1fr}
  .g5{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:640px){
  .stats,.sitelist{grid-template-columns:1fr}
  .g5{grid-template-columns:1fr 1fr}
}


/* ---------- cartes avec vignette (modèles d'avions / hélicoptères) ---------- */
.card.has-img{padding:0;overflow:hidden;display:flex;flex-direction:column}
.card.has-img .card-img{aspect-ratio:3/2;overflow:hidden;background:var(--beige)}
.card.has-img .card-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s}
.card.has-img:hover .card-img img{transform:scale(1.03)}
.card.has-img .card-body{padding:var(--sp-04) var(--sp-06) var(--sp-06);display:flex;flex-direction:column;flex:1}
.card.has-img .card-body .tag{margin-bottom:var(--sp-01)}
.gamme.has-img .photo{height:auto;aspect-ratio:5/3;border:0;padding:0;overflow:hidden}
.gamme.has-img .photo img{width:100%;height:100%;object-fit:cover;display:block}

/* ---------- bandeau de respiration (photo pleine largeur + overlay navy) ---------- */
.band{position:relative;min-height:260px;display:flex;align-items:center;background:var(--navy);color:#fff;overflow:hidden}
.band img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.band::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(15,25,65,.82) 0%,rgba(15,25,65,.45) 40%,rgba(15,25,65,0) 70%)}
.band .wrap{position:relative;z-index:1;padding-top:var(--sp-12);padding-bottom:var(--sp-12)}
.band p{font-size:var(--heading-sm-size);line-height:var(--heading-sm-lh);letter-spacing:var(--heading-sm-ls);max-width:640px;color:#fff}
.band p b{color:#85ECFF;font-weight:400}
.band small{display:block;margin-top:var(--sp-03);font-size:var(--p-xs-size);color:rgba(255,255,255,.7)}
@media(max-width:640px){.band{min-height:200px}.band p{font-size:var(--heading-xs-size);line-height:var(--heading-xs-lh);letter-spacing:0}}
