/* ==========================================================================
   SAFRICAN Consulting — thème (charte v3, maquette v3.4)
   Autorité des styles : 1) réglages du widget Elementor, 2) kit global
   Elementor (couleurs/typos), 3) ce fichier (tokens, polices, composants).
   Les classes .saf-* sont posées dans Elementor > Avancé > Classes CSS.
   ========================================================================== */

/* Polices hébergées localement (licence OFL, fichiers dans assets/fonts). */
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 600; font-display: swap; src: url(../fonts/manrope-latin-600.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 600; font-display: swap; src: url(../fonts/manrope-latin-ext-600.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 700; font-display: swap; src: url(../fonts/manrope-latin-700.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Manrope"; font-style: normal; font-weight: 700; font-display: swap; src: url(../fonts/manrope-latin-ext-700.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 400; font-display: swap; src: url(../fonts/source-sans-3-latin-400.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 400; font-display: swap; src: url(../fonts/source-sans-3-latin-ext-400.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 600; font-display: swap; src: url(../fonts/source-sans-3-latin-600.woff2) format("woff2"); unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }
@font-face { font-family: "Source Sans 3"; font-style: normal; font-weight: 600; font-display: swap; src: url(../fonts/source-sans-3-latin-ext-600.woff2) format("woff2"); unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }

:root {
	--saf-marine: #032540;
	--saf-bleu: #075A91;
	--saf-bleu-hover: #064873;
	--saf-rouge: #CF302E;
	--saf-rouge-hover: #B52624;
	--saf-jaune: #F2B705;
	--saf-ivoire: #F5F4F0;
	--saf-blanc: #FFFFFF;
	--saf-muted: #475569;
	--saf-bordure: #D8E0E6;
	--saf-champ: #718096;
	--saf-erreur: #B42318;
	--saf-succes: #13703B;
	--saf-focus: #F2B705;
	--saf-font-titre: "Manrope", Arial, sans-serif;
	--saf-font-texte: "Source Sans 3", Arial, sans-serif;
	--saf-wrap: 1200px;
	--saf-gutter: 24px;
	--saf-radius: 6px;
	--saf-radius-forme: 0 64px 0 64px;
	--saf-duree: 180ms;
}

/* ---------- Base ---------- */
html { scroll-behavior: smooth; }
body.safrican { margin: 0; background: var(--saf-blanc); color: var(--saf-marine); font-family: var(--saf-font-texte); font-size: 18px; line-height: 1.6; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
body.safrican h1, body.safrican h2, body.safrican h3, body.safrican h4 { font-family: var(--saf-font-titre); color: var(--saf-marine); text-wrap: pretty; }
body.safrican a { color: var(--saf-bleu); }
body.safrican a:hover { color: var(--saf-bleu-hover); }
body.safrican img { max-width: 100%; height: auto; }
body.safrican :focus-visible { outline: 3px solid var(--saf-focus); outline-offset: 2px; border-radius: 2px; }
.saf-bg-marine :focus-visible, .saf-topbar :focus-visible, .saf-hero :focus-visible { outline-color: var(--saf-jaune); }
.saf-main { display: block; }
.saf-main:focus { outline: none; }
.saf-wrap { width: 100%; max-width: calc(var(--saf-wrap) + 2 * var(--saf-gutter)); margin: 0 auto; padding: 0 var(--saf-gutter); box-sizing: border-box; }
.saf-skip { position: absolute; left: 12px; top: -80px; z-index: 1000; background: var(--saf-jaune); color: var(--saf-marine) !important; padding: 10px 16px; font-weight: 600; border-radius: var(--saf-radius); transition: top var(--saf-duree); }
.saf-skip:focus { top: 12px; }
.screen-reader-text, .saf-sr { border: 0; clip: rect(1px,1px,1px,1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute !important; width: 1px; word-wrap: normal !important; }

/* ---------- Éléments Elementor : titres et textes ---------- */
.saf-kicker .elementor-heading-title, p.saf-kicker, .saf-kicker-text { display: flex; align-items: center; gap: 10px; font-family: var(--saf-font-texte); font-weight: 600; font-size: 14px; letter-spacing: .06em; text-transform: uppercase; line-height: 1.45; color: var(--saf-bleu); margin: 0; }
.saf-kicker .elementor-heading-title::before, p.saf-kicker .saf-dot { content: ""; width: 10px; height: 10px; border-radius: 50%; background: currentColor; flex: none; display: inline-block; }
.saf-kicker--jaune .elementor-heading-title { color: var(--saf-jaune); }
.saf-muted, .saf-muted p { color: var(--saf-muted); }
.saf-text-white, .saf-text-white p { color: rgba(255,255,255,.9); }
.saf-barre { width: 72px; height: 4px; background: var(--saf-jaune); border-radius: 2px; }
.saf-title-barre .elementor-heading-title::after { content: ""; display: block; width: 72px; height: 4px; margin: 12px auto 0; background: var(--saf-jaune); border-radius: 2px; }
.saf-title-barre.saf-left .elementor-heading-title::after { margin-left: 0; }
.elementor-widget-text-editor p:last-child { margin-bottom: 0; }
.saf-note .elementor-widget-container, .saf-note { font-size: 14px; line-height: 1.45; color: var(--saf-muted); }
.saf-placeholder-note .elementor-widget-container { display: inline-block; font-size: 14px; font-weight: 600; color: var(--saf-muted); background: var(--saf-ivoire); border: 1px dashed var(--saf-champ); border-radius: 4px; padding: 6px 10px; }

/* ---------- Boutons (variantes par classe ; le style du widget reste prioritaire) ---------- */
.elementor-button { transition: background-color var(--saf-duree), color var(--saf-duree), border-color var(--saf-duree); }
/* Variantes de boutons de la charte. Préfixe .elementor (spécificité 0,3,0) : passe devant la couleur par défaut
   des widgets Bouton d'Elementor (var(--e-global-color-accent), 0,2,0) et devant le kit, mais reste en dessous
   des réglages faits widget par widget dans Elementor (0,4,0), qui restent prioritaires. */
.elementor .elementor-widget-button .elementor-button { background-color: var(--saf-bleu); color: #fff; }
.elementor .elementor-widget-button .elementor-button:hover, .elementor .elementor-widget-button .elementor-button:focus-visible { background-color: var(--saf-bleu-hover); color: #fff; }
.elementor .saf-btn-accent .elementor-button { background-color: var(--saf-rouge); color: #fff; }
.elementor .saf-btn-accent .elementor-button:hover, .elementor .saf-btn-accent .elementor-button:focus-visible { background-color: var(--saf-rouge-hover); color: #fff; }
.elementor .saf-btn-secondary .elementor-button { background-color: #fff; color: var(--saf-marine); border: 2px solid var(--saf-marine); }
.elementor .saf-btn-secondary .elementor-button:hover, .elementor .saf-btn-secondary .elementor-button:focus-visible { background-color: var(--saf-ivoire); color: var(--saf-marine); }
.elementor .saf-btn-ghost .elementor-button { background-color: transparent; color: #fff; border: 2px solid #fff; }
.elementor .saf-btn-ghost .elementor-button:hover, .elementor .saf-btn-ghost .elementor-button:focus-visible { background-color: rgba(255,255,255,.1); color: #fff; }
.elementor .saf-btn-jaune .elementor-button { background-color: var(--saf-jaune); color: var(--saf-marine); }
.elementor .saf-btn-jaune .elementor-button:hover, .elementor .saf-btn-jaune .elementor-button:focus-visible { background-color: #DCA604; color: var(--saf-marine); }
.elementor .saf-link .elementor-button { background: transparent; color: var(--saf-bleu); border: 0; padding: 0; min-height: 0; } /* lien texte aligné sur le paragraphe */
.elementor .saf-link .elementor-button:hover, .elementor .saf-link .elementor-button:focus-visible { background: transparent; color: var(--saf-bleu-hover); }
.elementor .saf-link--jaune .elementor-button, .elementor .saf-link--jaune .elementor-button:focus-visible { color: var(--saf-jaune); }
.elementor .saf-link--jaune .elementor-button:hover { color: #FFD24A; }
.saf-btn-accent .elementor-button { background-color: var(--saf-rouge); color: #fff; }
.saf-btn-accent .elementor-button:hover, .saf-btn-accent .elementor-button:focus-visible { background-color: var(--saf-rouge-hover); color: #fff; }
.saf-btn-secondary .elementor-button { background-color: #fff; color: var(--saf-marine); border: 2px solid var(--saf-marine); }
.saf-btn-secondary .elementor-button:hover, .saf-btn-secondary .elementor-button:focus-visible { background-color: var(--saf-ivoire); color: var(--saf-marine); }
.saf-btn-ghost .elementor-button { background-color: transparent; color: #fff; border: 2px solid #fff; }
.saf-btn-ghost .elementor-button:hover, .saf-btn-ghost .elementor-button:focus-visible { background-color: rgba(255,255,255,.1); color: #fff; }
.saf-btn-jaune .elementor-button { background-color: var(--saf-jaune); color: var(--saf-marine); }
.saf-btn-jaune .elementor-button:hover { background-color: #DCA604; color: var(--saf-marine); }
.saf-btn-sm .elementor-button { min-height: 44px; padding: 10px 16px; }
.elementor-button .elementor-button-content-wrapper { align-items: center; }
.saf-link .elementor-button { background: transparent !important; color: var(--saf-bleu); padding: 0; min-height: 0; text-decoration: underline; text-underline-offset: 4px; font-weight: 600; border: 0; }
.saf-link .elementor-button:hover { color: var(--saf-bleu-hover); }
.saf-link--jaune .elementor-button { color: var(--saf-jaune); }
.saf-link--jaune .elementor-button:hover { color: #FFD24A; }

/* Boutons HTML des widgets métier */
html body .saf-btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 48px; padding: 0 24px; border-radius: var(--saf-radius); font-family: var(--saf-font-texte); font-weight: 600; font-size: 16px; line-height: 1.25; text-decoration: none !important; white-space: nowrap; border: 2px solid transparent; cursor: pointer; transition: background-color var(--saf-duree), color var(--saf-duree); box-sizing: border-box; }
html body .saf-btn--primary { background: var(--saf-bleu); color: #fff !important; }
html body .saf-btn--primary:hover { background: var(--saf-bleu-hover); }
html body .saf-btn--accent { background: var(--saf-rouge); color: #fff !important; }
html body .saf-btn--accent:hover { background: var(--saf-rouge-hover); }
html body .saf-btn--secondary { background: #fff; color: var(--saf-marine) !important; border-color: var(--saf-marine); }
html body .saf-btn--secondary:hover { background: var(--saf-ivoire); }
html body .saf-btn--jaune { background: var(--saf-jaune); color: var(--saf-marine) !important; }
html body .saf-btn--sm { min-height: 44px; padding: 0 16px; }
html body .saf-btn[disabled], html body .saf-btn[aria-busy="true"] { opacity: .65; cursor: progress; }
.saf-actions { display: flex; flex-wrap: wrap; gap: 16px; }

/* ---------- Barre supérieure / en-tête (modèle Elementor) ---------- */
.saf-topbar { font-size: 14px; line-height: 1.45; }
.saf-topbar .elementor-icon-list-text, .saf-topbar a, .saf-topbar .elementor-widget-container { color: #fff; }
.saf-topbar .elementor-icon-list-icon svg { fill: var(--saf-jaune); }
/* Villes sur une seule ligne (retour dirigeant 24/09) : largeur auto, pas de contraction, marges 0 pour
   l'alignement vertical avec les téléphones. La colonne des téléphones prend la place restante. */
.saf-topbar > .e-con-inner > .saf-topbar-gauche { flex: 1 1 auto; width: auto; min-width: 0; }
.saf-topbar .saf-topbar-villes { flex: 0 0 auto; width: auto; max-width: none; margin-left: auto; }
.saf-topbar .saf-topbar-villes p { margin: 0; white-space: nowrap; }

.saf-header-row .elementor-widget-image img { display: block; }
.saf-site-header { position: relative; z-index: 50; }

/* ---------- Diaporama (conteneurs Elementor natifs animés par theme.js) ---------- */
.saf-hero { position: relative; overflow: hidden; }
.saf-hero > .e-con-inner { position: relative; }
.saf-slide { transition: opacity 400ms ease; }
.saf-hero.is-ready .saf-slide:not(.is-active) { display: none !important; }
.saf-hero.is-ready .saf-slide.is-active { animation: saf-fade 450ms ease; }
@keyframes saf-fade { from { opacity: .35; } to { opacity: 1; } }
.saf-slide .elementor-heading-title { text-wrap: pretty; }
/* Photo de mine portrait fournie : panneau contenu a droite sur marine. */
html body .saf-slide--bauxite .saf-slide-title, html body .saf-slide--bauxite .saf-slide-text { max-width: 730px !important; }
@media (max-width: 1024px) { .saf-slide--bauxite::before { opacity: .66 !important; } }
/* Diapositive Trading (illustration vraquier, 26/09) : texte limité à la zone calme, voile renforcé quand le texte couvre l'image. */
html body .saf-slide--trading .saf-slide-title, html body .saf-slide--trading .saf-slide-text { max-width: 640px !important; }
.saf-slide--trading .saf-slide-title .elementor-heading-title, .saf-slide--trading .saf-slide-text { text-shadow: 0 1px 12px rgba(3,37,64,.55); }
@media (max-width: 1024px) { html body .saf-slide--trading::before { background-image: linear-gradient(90deg, rgba(3,37,64,.94) 0%, rgba(3,37,64,.82) 55%, rgba(3,37,64,.5) 100%) !important; opacity: 1 !important; } }
@media (max-width: 767px) { html body .saf-slide--trading::before { background-image: linear-gradient(180deg, rgba(3,37,64,.9) 0%, rgba(3,37,64,.8) 100%) !important; } }
.saf-carte-image img { display: block; }
.saf-hero-tabs { position: relative; z-index: 2; display: flex; gap: 28px; align-items: center; flex-wrap: wrap; margin: 0; padding: 0; list-style: none; } /* au-dessus du calque ::before des diapositives avec photo */
html body .saf-hero-tab { background: none; border: 0; border-bottom: 3px solid transparent; padding: 0 0 6px; color: rgba(255,255,255,.75); font: 600 14px/1.45 var(--saf-font-texte); letter-spacing: .04em; text-transform: uppercase; cursor: pointer; min-height: 32px; }
html body .saf-hero-tab:hover, html body .saf-hero-tab:focus, html body .saf-hero-tab:active { color: #fff; background: none; box-shadow: none; } /* neutralise le style bouton du kit (fond bleu au focus) */
html body .saf-hero-tab[aria-selected="true"] { color: #fff; border-bottom-color: var(--saf-jaune); }
html body .saf-hero-nav { position: absolute; top: 50%; margin-top: -28px; width: 56px; height: 56px; border-radius: 50%; background: rgba(255,255,255,.14); border: 0; color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 3; transition: background-color var(--saf-duree); }
html body .saf-hero-nav:hover { background: rgba(255,255,255,.26); }
html body .saf-hero-nav svg { width: 22px; height: 22px; flex: none; }
.saf-hero-nav--prev { left: 32px; } .saf-hero-nav--next { right: 32px; }
html body .saf-hero-pause { position: absolute; right: 32px; bottom: 76px; z-index: 3; display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 14px; border-radius: var(--saf-radius); background: rgba(255,255,255,.14); color: #fff; border: 0; font: 600 14px var(--saf-font-texte); cursor: pointer; }
html body .saf-hero-pause:hover { background: rgba(255,255,255,.26); }
.saf-hero-controls { position: absolute; left: 0; right: 0; top: 0; z-index: 3; }
.saf-hero-dots { display: none; }
.saf-slide-count { color: var(--saf-jaune); }
.saf-photo-manquante { position: absolute; right: 32px; top: 24px; z-index: 2; background: rgba(245,244,240,.95); color: var(--saf-marine); font: 600 13px/1.4 var(--saf-font-texte); padding: 6px 10px; border-radius: 4px; border: 1px dashed var(--saf-champ); }
.saf-photo-manquante .elementor-widget-container { padding: 0; }

/* ---------- Tuiles « domaines d'intervention » (conteneur Elementor = lien <a>) ---------- */
.saf-tile { position: relative; cursor: pointer; text-decoration: none !important; transition: background-color var(--saf-duree); }
.saf-tile .elementor-icon svg { fill: var(--saf-jaune); }
.saf-tile .elementor-widget-icon { transition: transform var(--saf-duree); }
.saf-tile:hover .elementor-widget-icon, .saf-tile:focus-visible .elementor-widget-icon { transform: translateY(3px); }
.saf-tile:hover .elementor-heading-title, .saf-tile:focus-visible .elementor-heading-title { text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 2px; text-decoration-color: var(--saf-jaune); }
/* Focus clavier : anneau marine sur le fond ivoire + liseré jaune intérieur (visible sur bleu et marine). */
body.safrican .saf-tile:focus-visible { outline: 3px solid var(--saf-marine); outline-offset: 3px; box-shadow: inset 0 0 0 3px var(--saf-jaune); border-radius: 0; }

/* ---------- Cartes-liens (cartes de services, pôles) : toute la carte est le lien ---------- */
.saf-carte--lien { cursor: pointer; text-decoration: none !important; transition: border-color var(--saf-duree), box-shadow var(--saf-duree), transform var(--saf-duree); }
.saf-carte--lien:hover { border-color: var(--saf-bleu) !important; box-shadow: 0 8px 20px rgba(3,37,64,.10); transform: translateY(-2px); }
.saf-carte--lien .saf-card-more { margin-top: auto; }
.saf-carte--lien .saf-card-more .elementor-heading-title::after { content: "\2192"; display: inline-block; margin-left: 8px; transition: transform var(--saf-duree); }
.saf-carte--lien:hover .saf-card-more .elementor-heading-title::after, .saf-carte--lien:focus-visible .saf-card-more .elementor-heading-title::after { transform: translateX(4px); }
.saf-carte--lien:hover .saf-card-more .elementor-heading-title, .saf-carte--lien:focus-visible .saf-card-more .elementor-heading-title { text-decoration: underline; text-underline-offset: 3px; }
body.safrican .saf-carte--lien:focus-visible { outline: 3px solid var(--saf-marine); outline-offset: 3px; border-color: var(--saf-bleu) !important; }
@media (prefers-reduced-motion: reduce) {
	.saf-tile, .saf-tile .elementor-widget-icon, .saf-carte--lien, .saf-carte--lien .saf-card-more .elementor-heading-title::after { transition: none; }
	.saf-tile:hover .elementor-widget-icon, .saf-carte--lien:hover, .saf-carte--lien:hover .saf-card-more .elementor-heading-title::after { transform: none; }
}

/* ---------- Listes ---------- */
.saf-domaines .elementor-icon-list-items { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 40px; border-top: 1px solid var(--saf-bordure); }
.saf-domaines .elementor-icon-list-item { padding: 12px 0 !important; margin: 0 !important; border-bottom: 1px solid var(--saf-bordure); }
.saf-domaines .elementor-icon-list-item a { font-weight: 600; font-size: 17px; }
.saf-domaines .elementor-icon-list-item a:hover .elementor-icon-list-text { color: var(--saf-bleu); }
.saf-domaines .elementor-icon-list-item::after { display: none !important; }
.saf-puces .elementor-icon-list-icon svg { fill: var(--saf-jaune); }
.saf-puces .elementor-icon-list-item { align-items: flex-start !important; }
.saf-puces .elementor-icon-list-icon { margin-top: .45em; }

/* ---------- Cartes « lieu » (bordure jaune) ---------- */
.saf-lieu { border-left: 4px solid var(--saf-jaune) !important; }
.saf-lieu .elementor-heading-title { font-size: 20px; }

/* ---------- Photo à coins opposés arrondis (logo) ---------- */
.saf-forme img { border-radius: var(--saf-radius-forme); }
.saf-badge-jaune { box-shadow: 0 6px 16px rgba(3,37,64,.18); }

/* ---------- Galerie marine ---------- */
.saf-galerie img { width: 100%; height: 220px; object-fit: cover; display: block; }
.saf-galerie .elementor-widget-image:first-child img { border-radius: 24px 0 0 0; }
.saf-galerie .elementor-widget-image:last-child img { border-radius: 0 0 24px 0; }
/* Galerie complète (À propos) : 7 photos, la première sur deux colonnes pour une grille sans case vide. */
.saf-galerie--full > .elementor-widget-image:first-child { grid-column: span 2; }

/* Carrousel « SAFRICAN en image » (Accueil) : widget natif Carrousel d'images. Images de même hauteur
   recadrées (cover), flèches blanches (réglage du widget) survol jaune, points blancs / actif jaune. */
.saf-carrousel { position: relative; }
.saf-carrousel .swiper-slide-image { width: 100%; height: 240px; object-fit: cover; display: block; }
.saf-carrousel .swiper-slide a { display: block; cursor: zoom-in; }
.saf-carrousel .swiper-slide a:focus-visible { outline: 3px solid var(--saf-jaune); outline-offset: -3px; }
.saf-carrousel .elementor-swiper-button { width: 44px; height: 44px; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: color var(--saf-duree), background-color var(--saf-duree); }
.saf-carrousel .elementor-swiper-button:hover { background: rgba(255,255,255,.12); }
html body .saf-carrousel .elementor-swiper-button:hover svg { fill: var(--saf-jaune); }
.saf-carrousel .elementor-swiper-button:focus-visible { outline: 3px solid var(--saf-jaune); outline-offset: 2px; }
.saf-carrousel .swiper-pagination-bullet:focus-visible { outline: 2px solid var(--saf-jaune); outline-offset: 3px; }
/* Points : position native Elementor « à l'extérieur » (bande de 35 px sous les images) ; Pause aligné sur cette bande. */
.saf-carrousel .swiper-pagination { display: flex; align-items: center; justify-content: center; height: 35px; bottom: 0 !important; pointer-events: none; }
/* La bande des points (Swiper, z-index 10, pleine largeur) interceptait le clic sur Pause : seuls les points restent cliquables. */
.saf-carrousel .swiper-pagination-bullet { pointer-events: auto; }
/* Pause/Lecture (ajouté par theme.js) : discret, sur la ligne des points, à droite. Spécificité renforcée : le kit stylise tous les <button>. */
html body .saf-carrousel .saf-carrousel-pause { position: absolute; right: 0; bottom: 1px; z-index: 11; display: inline-flex; align-items: center; gap: 6px; min-height: 32px; height: 32px; margin: 0; padding: 0 14px; border: 1px solid rgba(255,255,255,.5); border-radius: 18px; background: transparent; box-shadow: none; color: #fff; font: 600 14px/1 var(--saf-font-texte); letter-spacing: 0; text-transform: none; cursor: pointer; transition: border-color var(--saf-duree), color var(--saf-duree); }
html body .saf-carrousel .saf-carrousel-pause:hover { border-color: var(--saf-jaune); color: var(--saf-jaune); background: transparent; }
html body .saf-carrousel .saf-carrousel-pause:focus-visible { outline: 3px solid var(--saf-jaune); outline-offset: 2px; }
/* Visionneuse Elementor : l'en-tête (compteur, zoom, plein écran) et le pied (titre, légende) mesuraient 100 % + marges
   internes (1512 px sur un écran de 1440 px) -> icônes sous le bouton Fermer. */
.elementor-lightbox .elementor-slideshow__header, .elementor-lightbox .elementor-slideshow__footer { box-sizing: border-box; }
.elementor-lightbox .elementor-slideshow__header svg:focus-visible, .elementor-lightbox .dialog-close-button:focus-visible { outline: 2px solid var(--saf-jaune); outline-offset: 2px; }

/* Graphique en barres (page Mines) : widgets natifs ; la largeur de chaque barre est le réglage « Largeur » du conteneur. */
.saf-bar-piste { background: rgba(255,255,255,.1); border-radius: 0 6px 6px 0; }
.saf-bar { max-width: 100%; box-sizing: border-box; }
.saf-bar-valeur .elementor-heading-title { white-space: nowrap; }
.saf-source-note p { margin: 0; }
.saf-phones--marine { color: #fff; }
html body .saf-phones--marine a { color: #fff; text-decoration: underline; text-decoration-color: rgba(255,255,255,.45); text-underline-offset: 3px; }
html body .saf-phones--marine a:hover, html body .saf-phones--marine a:focus-visible { color: var(--saf-jaune); text-decoration-color: currentColor; }
.saf-phones--marine p { margin: 0; }

/* ---------- Numéros jaunes (étapes, pôles) ---------- */
.saf-num .elementor-heading-title { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 50%; background: var(--saf-jaune); color: var(--saf-marine); font: 700 16px var(--saf-font-titre); }
/* Cartes d'information (démarche, étapes) : pas d'effet de survol, elles ne sont pas cliquables. */

/* ---------- Tête de page (pages intérieures) ---------- */
.saf-pagehead { background: var(--saf-ivoire); padding: 56px 0 48px; border-bottom: 1px solid var(--saf-bordure); }
.saf-pagehead h1 { font-size: 48px; line-height: 1.15; margin: 8px 0 12px; }
.saf-pagehead p { color: var(--saf-muted); max-width: 46em; margin: 0 0 16px; }
.saf-crumbs, .saf-crumbs .elementor-widget-container { font-size: 14px; color: var(--saf-muted); }
.saf-crumbs a { color: var(--saf-muted); text-decoration: underline; }
.saf-section { padding-top: 64px; padding-bottom: 64px; }
.saf-prose { max-width: 820px; }
.saf-prose h2 { font-size: 28px; margin: 1.6em 0 .5em; }
.saf-empty { color: var(--saf-muted); background: var(--saf-ivoire); border-left: 4px solid var(--saf-jaune); padding: 16px 20px; }
.saf-meta { color: var(--saf-muted); font-size: 16px; }

/* ---------- Actualités ---------- */
.saf-news-grid { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 32px; }
.saf-news-card { border: 1px solid var(--saf-bordure); border-radius: var(--saf-radius); overflow: hidden; background: #fff; }
.saf-news-card__media img { display: block; width: 100%; height: 200px; object-fit: cover; }
.saf-news-card__body { padding: 20px 24px 24px; }
.saf-news-card__body time { font-size: 14px; color: var(--saf-muted); }
.saf-news-card__title { font-size: 20px; line-height: 1.3; margin: 6px 0 8px; }
.saf-news-card__title a { color: var(--saf-marine); text-decoration: none; }
/* Carte d'actualité entièrement cliquable : le lien du titre (seul lien focusable) est étiré sur la carte. */
.saf-news-card { position: relative; cursor: pointer; transition: border-color var(--saf-duree), box-shadow var(--saf-duree); }
.saf-news-card__title a::after { content: ""; position: absolute; inset: 0; z-index: 1; }
.saf-news-card:hover, .saf-news-card:focus-within { border-color: var(--saf-bleu); box-shadow: 0 8px 20px rgba(3,37,64,.10); }
.saf-news-card:hover .saf-news-card__title a { text-decoration: underline; text-underline-offset: 3px; }
.saf-news-card__title a:focus-visible { outline: none; }
.saf-news-card:has(.saf-news-card__title a:focus-visible) { outline: 3px solid var(--saf-marine); outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) { .saf-news-card { transition: none; } }
.saf-article-img { border-radius: var(--saf-radius-forme); margin-bottom: 24px; }

/* ---------- Page légale / éditoriale Elementor ---------- */
.saf-legal h2 { font-size: 26px; margin-top: 8px; }

/* ---------- Pied de page ---------- */
.saf-footer .elementor-heading-title.saf-foot-title, .saf-foot-title .elementor-heading-title { font-size: 16px; letter-spacing: .04em; text-transform: uppercase; }
.saf-footer .elementor-icon-list-item a { color: var(--saf-marine); }
.saf-footer .elementor-icon-list-item a:hover .elementor-icon-list-text { text-decoration: underline; color: var(--saf-bleu); }
.saf-footer-credit p { margin: 0; }
html body .saf-footer-credit a { color: var(--saf-marine); text-decoration: underline; text-underline-offset: 3px; }
html body .saf-footer-credit a:hover, html body .saf-footer-credit a:focus-visible { color: var(--saf-bleu); }
.saf-social .elementor-social-icon { border: 1px solid var(--saf-bordure); }
.saf-fallback-header, .saf-fallback-footer { display: flex; justify-content: space-between; align-items: center; min-height: 80px; }

/* ---------- Fallback / éditeur ---------- */
.elementor-editor-active .saf-hero.is-ready .saf-slide:not(.is-active) { display: flex !important; }

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
	.saf-carrousel .swiper-slide-image { height: 260px; }
	.saf-domaines .elementor-icon-list-items { column-gap: 24px; }
	.saf-news-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
	html body .saf-hero-nav { display: none; }
	html body .saf-hero-pause { bottom: 28px; top: auto; right: auto; left: 20px; } /* en bas à gauche (marge de 96 px de la diapositive) : ni onglets ni bouton WhatsApp flottant */
	.saf-photo-manquante { right: 16px; top: 64px; }
}
@media (max-width: 767px) {
	body.safrican { font-size: 17px; }
	.saf-pagehead { padding: 36px 0 32px; }
	.saf-pagehead h1 { font-size: 32px; }
	.saf-domaines .elementor-icon-list-items { grid-template-columns: 1fr; }
	.saf-news-grid { grid-template-columns: 1fr; }
	.saf-galerie img { height: 160px; }
	.saf-carrousel .swiper-slide-image { height: 220px; }
	html body .saf-carrousel .saf-carrousel-pause { width: 32px; padding: 0; justify-content: center; } /* icône seule, libellé conservé dans aria-label */
	.saf-carrousel-pause span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.saf-hero-tabs { gap: 14px; }
	html body .saf-hero-tab { font-size: 12px; }
	.saf-section { padding-top: 48px; padding-bottom: 48px; }
	.saf-btn { white-space: normal; text-align: center; }
	.elementor-button { white-space: normal; }
}
@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}

/* Garde-fou : taille des icônes de liste (barre supérieure, pied de page) même sans la feuille Elementor du widget. */
.elementor-icon-list-icon svg { width: var(--e-icon-list-icon-size, 14px); height: var(--e-icon-list-icon-size, 14px); flex-shrink: 0; }
