/* =====================================================================
   MSH-AFRIQUE — CORRECTIFS RESPONSIVE (chargée APRÈS style.css)
   ---------------------------------------------------------------------
   Objectifs :
   1. Empêcher tout débordement horizontal (plus de scroll latéral)
   2. Adapter <html>, <body>, .container et .brand (logo) aux smartphones
   3. Menu mobile .nav en plein écran / 100 % sans casser la mise en page
   ===================================================================== */

/* ---------------------------------------------------------------------
   1. RÈGLES GLOBALES INDISPENSABLES — anti-débordement horizontal
   --------------------------------------------------------------------- */

/* box-sizing universel : padding et bordures inclus dans la largeur */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;              /* bloque le défilement latéral */
  -webkit-text-size-adjust: 100%;  /* évite le zoom auto iOS en paysage */
  scroll-behavior: smooth;
}

body {
  width: 100%;
  max-width: 100vw;
  overflow-x: hidden;              /* double sécurité (iOS Safari) */
  position: relative;              /* contient les éléments positionnés */
  margin: 0;
  overscroll-behavior-x: none;     /* supprime le rebond horizontal */
}

/* Aucun média ne peut dépasser son conteneur */
img,
svg,
video,
iframe,
embed,
object,
canvas,
picture {
  max-width: 100%;
  height: auto;
}
iframe { border: 0; }

/* Les mots très longs (e-mails, URL, codes) ne créent plus de débordement */
p, h1, h2, h3, h4, h5, h6, li, a, span, td, th, label, figcaption, dd, dt, blockquote {
  overflow-wrap: break-word;
  word-wrap: break-word;
  -webkit-hyphens: auto;
  hyphens: auto;
}
code, pre, .font-mono, [style*="monospace"] {
  overflow-wrap: anywhere;
  word-break: break-all;
}

/* Les champs de formulaire restent dans la grille */
input, select, textarea, button {
  max-width: 100%;
  font-family: inherit;
}
textarea { resize: vertical; }

/* Tout tableau large devient scrollable dans sa boîte, jamais dans la page */
.table-wrap,
.table-responsive {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
table { max-width: 100%; }

/* Les carrousels d'animation (bandeau annonces, logos) restent confinés */
.ticker,
.partners-strip,
.logo-marquee-wrap {
  max-width: 100%;
  overflow: hidden;
}

/* Les grilles ne débordent jamais (correctif CSS Grid : minmax + min-width:0) */
.grid, .g2, .g3, .g4,
.dir-grid, .rep-grid, .country-grid, .exec-grid,
.gallery-grid, .video-grid, .testi-grid, .logo-grid,
.kpi-grid, .kpis, .form-grid, .dash, .split, .world-wrap {
  max-width: 100%;
  min-width: 0;
}
.grid > *, .split > *, .dash > *, .form-grid > * { min-width: 0; }

/* ---------------------------------------------------------------------
   2. CONTENEUR PRINCIPAL
   --------------------------------------------------------------------- */
.container {
  width: 100%;
  max-width: 1200px;
  margin-inline: auto;
  padding-inline: 16px;
}
.header > .container { max-width: 1320px; }

@media (max-width: 640px) {
  .container { padding-inline: 14px; }
}
@media (max-width: 380px) {
  .container { padding-inline: 12px; }
}

/* ---------------------------------------------------------------------
   3. EN-TÊTE : logo et menu ne se chevauchent plus
   --------------------------------------------------------------------- */
.header > .container {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: nowrap;          /* une seule ligne */
  min-width: 0;
}

/* Le logo peut rétrécir au lieu de pousser le menu */
.brand {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;               /* ESSENTIEL : autorise la compression du flex-item */
  flex: 0 1 auto;
  overflow: hidden;
}
.brand img {
  flex-shrink: 0;
  height: clamp(38px, 8vw, 62px);   /* logo fluide */
  width: auto;
  object-fit: contain;
}
.brand-text { min-width: 0; overflow: hidden; }
.brand-text strong {
  display: block;
  font-size: clamp(14px, 2.6vw, 19px);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.brand-text span {
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 34ch;
}

/* Les boutons de droite ne rétrécissent pas et restent accessibles */
.header-cta {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  margin-inline-start: auto;
}

/* Barre supérieure : passe à la ligne proprement */
.topbar .container { flex-wrap: wrap; row-gap: 6px; }
.topbar-links { flex-wrap: wrap; row-gap: 6px; }

@media (max-width: 1024px) {
  .brand-text span { display: none; }         /* on masque le slogan */
}
@media (max-width: 560px) {
  .header > .container { gap: 10px; }
  .brand-text strong { max-width: 42vw; }
}
@media (max-width: 400px) {
  .brand-text { display: none; }              /* logo seul sur très petit écran */
  .brand img { height: 42px; }
}

/* ---------------------------------------------------------------------
   4. MENU MOBILE : panneau 100 % propre, sans débordement
   --------------------------------------------------------------------- */
@media (max-width: 1024px) {
  .nav {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: auto;
    width: min(360px, 100%);
    max-width: 100%;
    height: 100%;
    height: 100dvh;                    /* hauteur réelle mobile (barre d'URL) */
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 3px;
    margin: 0;
    padding: 84px 16px calc(28px + env(safe-area-inset-bottom));
    background: #fff;
    box-shadow: -18px 0 46px -24px rgba(8, 33, 63, .8);
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;      /* pas de scroll de la page derrière */
    z-index: 999;

    /* État fermé : hors écran ET retiré du flux de peinture
       (visibility évite la création d'une zone scrollable sur iOS) */
    transform: translateX(100%);
    visibility: hidden;
    transition: transform .35s cubic-bezier(.22, 1, .36, 1), visibility .35s;
  }
  .nav.open {
    transform: translateX(0);
    visibility: visible;
  }

  /* Empêche le scroll de la page quand le menu est ouvert */
  body.nav-open { overflow: hidden; touch-action: none; }

  .nav-item { width: 100%; position: relative; }
  .nav-item > a {
    width: 100%;
    justify-content: flex-start;
    white-space: normal;               /* les libellés longs passent à la ligne */
    padding: 13px 52px 13px 14px;      /* place pour le bouton du sous-menu */
    font-size: 15px;
    border-radius: 12px;
  }
  .submenu {
    position: static;
    width: 100%;
    min-width: 0;
    max-width: 100%;
    box-shadow: none;
    border: 0;
    border-inline-start: 2px solid var(--line);
    border-radius: 0;
    margin: 2px 0 8px 14px;
    padding: 0 0 0 6px;
  }
  .submenu a { white-space: normal; padding: 10px 12px; }

  /* Bouton de fermeture intégré au panneau */
  .nav::before {
    content: "";
    position: sticky;
    top: -84px;
    display: block;
    height: 0;
  }

  .nav-overlay {
    position: fixed;
    inset: 0;
    width: 100vw;
    height: 100%;
    height: 100dvh;
    background: rgba(6, 20, 38, .55);
    backdrop-filter: blur(2px);
    z-index: 998;
    opacity: 0;
    visibility: hidden;
    transition: opacity .3s, visibility .3s;
  }
  .nav-overlay.show { opacity: 1; visibility: visible; }
}

/* Plein écran sur les petits smartphones */
@media (max-width: 480px) {
  .nav { width: 100%; padding-top: 76px; }
}

/* ---------------------------------------------------------------------
   5. SECTIONS & COMPOSANTS — adaptation smartphone
   --------------------------------------------------------------------- */
@media (max-width: 768px) {
  .section { padding: 44px 0; }
  .title { font-size: clamp(21px, 5.4vw, 30px); }
  .subtitle { font-size: 14.5px; }

  /* Slider */
  .slider { height: clamp(420px, 78vh, 520px); }
  .slide-inner h1 { font-size: clamp(22px, 6.4vw, 32px); }
  .slide-inner p { font-size: 14.5px; }
  .slide-actions { gap: 9px; }
  .slide-actions .btn { padding: 11px 18px; font-size: 13px; }
  .slider-btn { width: 38px; height: 38px; font-size: 20px; }

  /* Grilles : une colonne */
  .g2, .g3, .g4 { grid-template-columns: 1fr; }
  .split, .dash, .world-wrap { grid-template-columns: 1fr; }
  .form-grid { grid-template-columns: 1fr; }
  .df-row { grid-template-columns: 1fr 1fr; }
  .mosaic { grid-template-columns: repeat(2, 1fr); }
  .mosaic img { height: 138px; margin-top: 0 !important; }

  /* Cartes et boîtes : marges internes réduites */
  .box, .form-card, .panel { padding: 18px 16px; }
  .card-body { padding: 18px 16px; }

  /* Statistiques */
  .stats .grid { grid-template-columns: repeat(2, 1fr); gap: 22px; }
  .stat-value { font-size: 28px; }

  /* Bandeaux / CTA */
  .cta .container { flex-direction: column; align-items: flex-start; }
  .cms-banner .cb-in { padding: 22px 18px; }
  .page-hero { padding: 50px 0; }

  /* Listes d'éléments en 2 colonnes → 1 */
  .country-grid, .exec-grid, .dir-grid, .rep-grid,
  .video-grid, .testi-grid { grid-template-columns: 1fr; }
  .gallery-grid { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
  .logo-grid { grid-template-columns: repeat(auto-fill, minmax(135px, 1fr)); }

  /* Pied de page */
  .footer-grid { grid-template-columns: 1fr; gap: 26px; }
  .footer-bottom { flex-direction: column; text-align: center; gap: 8px; }

  /* Boutons flottants compacts */
  .float-actions { right: 12px; bottom: 12px; gap: 8px; }

  /* Onglets & filtres défilables horizontalement (dans leur boîte) */
  .tabs, .inline-form {
    display: flex;
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 6px;
  }
  .tabs::-webkit-scrollbar, .inline-form::-webkit-scrollbar { display: none; }
  .tabs > *, .inline-form > * { flex: 0 0 auto; }
}

@media (max-width: 560px) {
  .df-row { grid-template-columns: 1fr; }
  .stats .grid { gap: 16px; }
  .btn { padding: 11px 18px; font-size: 13.5px; }
  .steps { gap: 8px; }
  .step { padding: 7px 12px; font-size: 12px; }
  .share-grid { grid-template-columns: 1fr; }
  .countdown { gap: 8px; }
  .countdown div { min-width: 64px; padding: 10px 11px; }
  .countdown b { font-size: 22px; }
  .member-tile, .country-card, .exec-card { padding-inline: 14px; }
}

@media (max-width: 400px) {
  .mosaic { grid-template-columns: 1fr; }
  .gallery-grid { grid-template-columns: 1fr; }
  .stats .grid { grid-template-columns: 1fr; }
  .hdr-btn { padding: 9px 11px; }
}

/* ---------------------------------------------------------------------
   6. CERTIFICAT & DOCUMENTS LARGES
   --------------------------------------------------------------------- */
@media (max-width: 1180px) {
  .cert { width: 100%; max-width: 100%; }
}

/* ---------------------------------------------------------------------
   7. ESPACE MEMBRE / BACK-OFFICE sur mobile
   --------------------------------------------------------------------- */
@media (max-width: 768px) {
  .dash-side { position: static; }
  .kpi-grid { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
  .kpi b { font-size: 24px; }
  article.box[style*="grid-template-columns"] { grid-template-columns: 1fr !important; }
}

/* ---------------------------------------------------------------------
   8. OUTIL DE DIAGNOSTIC (activé via ?debug=overflow)
   --------------------------------------------------------------------- */
body.debug-overflow .is-overflowing {
  outline: 3px dashed #e03131 !important;
  outline-offset: -3px;
  background: rgba(224, 49, 49, .08) !important;
}
