/*
Theme Name: TechnylSoft
Theme URI: https://technylsoft.com
Author: TechnylSoft
Description: Thème enfant de Hello Elementor pour TechnylSoft. Tout le design vit ici ; Elementor Pro ne porte que le contenu (règle E : aucun style dans le panneau).
Template: hello-elementor
Version: 1.1.2
Requires at least: 6.6
Requires PHP: 8.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: technylsoft
*/

/* ==================================================================
   CE FICHIER EST GÉNÉRÉ par scripts/construire_theme.sh depuis
   wordpress/src/theme.css : « .elementor-element.elementor-element » y devient « .elementor-element.elementor-element ».
   Pourquoi doublé : Elementor 4 remet à zéro la marge basse des widgets par
   « .e-con .elementor-widget.elementor-widget » (0,3,0). Les composants passent
   donc en (0,3,0), chargés après lui ; les réglages posés par le client dans le
   panneau (post-ID.css, imprimé après le thème) gardent la priorité.
   Toute retouche se fait dans la source.

   Conventions (references/elementor.md) :
   - .elementor-element.elementor-element.classe         (0,3,0) : un composant, conteneur ou widget ;
   - la classe d'un widget est sur son ENVELOPPE : on cible la balise
     en descendant (.elementor-element.elementor-element.btn .elementor-button, .elementor-element.elementor-element.etape-img img) ;
   - les conteneurs sont mis en bloc par défaut (filet), les grilles et
     les flex de la maquette sont redéclarés sur leur classe.
   ================================================================== */

:root {
  --noir: #000000;
  --carte: #121313;
  --anthracite: #434041;
  --ligne: rgba(255,255,255,.09);
  --texte-sombre: rgba(255,255,255,.66);
  --blanc: #ffffff;
  --clair-ligne: #e6e7e8;
  --texte-clair: #4b4a4b;
  --accent: #0b8484;
  --accent-vif: #13a8a8;
  --accent-clair: #5fd0cf;
  --or: #c5b044;
  --rayon: 14px;
  --rayon-petit: 10px;
  --largeur: 1200px;
  --police: 'Montserrat', system-ui, sans-serif;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; font-family: var(--police); font-size: 15px; line-height: 1.6; color: var(--blanc); background: var(--noir); -webkit-font-smoothing: antialiased; overflow-x: hidden; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
h1, h2, h3, h4 { margin: 0; font-weight: 700; letter-spacing: -.02em; line-height: 1.12; hyphens: none; text-wrap: balance; }
p { margin: 0 0 1em; }
figure { margin: 0; }
.screen-reader-text { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }

/* ------------------------------------------------------------------
   FILET DE NEUTRALISATION D'ELEMENTOR (préfixe body)
   ------------------------------------------------------------------ */
/* Elementor met ses conteneurs en flex colonne, largeur 100 % et enfants
   pleine largeur (variables --flex-direction, --width, --container-widget-width).
   La maquette décide : bloc par défaut ; les composants flex et grille
   redéclarent leur mise en page sur leur classe, en (0,2,0). */
body .e-con { display: block; flex-wrap: nowrap; align-items: stretch; width: auto; padding: 0; gap: 0; min-height: 0; max-width: none; margin: 0;
  --container-default-padding-top: 0px; --container-default-padding-right: 0px;
  --container-default-padding-bottom: 0px; --container-default-padding-left: 0px; }
body .elementor-element { --widgets-spacing: 0px 0px; --widgets-spacing-row: 0px; --widgets-spacing-column: 0px; --kit-widget-spacing: 0px; }
.e-con > .elementor-widget, .e-con > .e-con { width: auto; max-width: none; flex: 0 1 auto; }
/* Elementor pose flex-direction en (0,2,0) sur .e-con-full.e-flex : rangée par défaut en (0,2,1).
   Les rares composants en colonne la redéclarent préfixés par body. */
body .e-con.e-flex { flex-direction: row; }
/* Elementor plafonne chaque widget à max-width: 100 % en (0,4,0) : les largeurs
   maximales des widgets se posent donc sur la balise intérieure, jamais sur l'enveloppe. */
body .elementor-heading-title { font: inherit; color: inherit; letter-spacing: inherit; line-height: inherit; text-transform: inherit; }
/* :where() garde le filet en (0,1,1) : les composants (0,2,1) passent devant */
body .elementor-widget-text-editor :where(p:last-child, ul:last-child) { margin-bottom: 0; }
/* Paragraphes dont la maquette gardait la marge par défaut (1em) */
.elementor-element.elementor-element.probleme-texte p:last-child, .elementor-element.elementor-element.pile-intro p:last-child, .elementor-element.elementor-element.pile-desc p:last-child, .elementor-element.elementor-element.diagnostic-intro p:last-child,
.elementor-element.elementor-element.blog-intro p:last-child, .elementor-element.elementor-element.avis-intro p:last-child, .elementor-element.elementor-element.contact-intro p:last-child, .elementor-element.elementor-element.service-detail-desc p:last-child,
.elementor-element.elementor-element.histoire-desc p:last-child, .elementor-element.elementor-element.temoignage-texte p:last-child, .elementor-element.elementor-element.pied-texte p:last-child, .elementor-element.elementor-element.decider-intro p:last-child, .elementor-element.elementor-element.secteurs-texte p:last-child { margin-bottom: 1em; }
body .elementor-widget-image img { width: 100%; }
body .elementor-widget-image { text-align: left; }
/* Typographie par défaut des titres, posée sur l'enveloppe (le titre en hérite) */
.elementor-widget-heading { font-weight: 700; letter-spacing: -.02em; line-height: 1.12; text-wrap: balance; hyphens: none; }
/* Accent des titres : <em> nu (substitution 4) */
.elementor-widget-heading em { font-style: normal; color: var(--accent-vif); }
.elementor-element.elementor-element.clair .elementor-widget-heading em { color: var(--accent); }

/* ------------------------------------------------------------------
   STRUCTURE
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.enveloppe { width: 100%; max-width: var(--largeur); margin: 0 auto; padding: 0 32px; position: relative; z-index: 2; }
section.e-con { position: relative; overflow: hidden; overflow: clip; }
.elementor-element.elementor-element.sombre { background: var(--noir); color: var(--blanc); }
.elementor-element.elementor-element.clair { background: var(--blanc); color: #111; }
.elementor-element.elementor-element.clair p { color: var(--texte-clair); }
.elementor-element.elementor-element.sombre p { color: var(--texte-sombre); }

.elementor-element.elementor-element.surtitre { display: inline-flex; align-items: center; gap: 10px; font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; margin-bottom: 18px; }
.elementor-element.elementor-element.surtitre p { color: var(--accent-vif) !important; margin: 0; }
.elementor-element.elementor-element.surtitre::before { content: ""; width: 22px; height: 2px; background: var(--or); flex: none; }

.elementor-element.elementor-element.titre-section { font-size: clamp(28px, 3.4vw, 44px); margin-bottom: 22px; }
.elementor-element.elementor-element.titre-section .elementor-heading-title { max-width: 760px; }
.elementor-element.elementor-element.titre-xl { font-size: clamp(32px, 3.6vw, 50px); }
.elementor-element.elementor-element.titre-etroit .elementor-heading-title { max-width: 640px; }
.elementor-element.elementor-element.titre-centre { text-align: center; }
.elementor-element.elementor-element.titre-centre .elementor-heading-title { margin-left: auto; margin-right: auto; }

/* ---------- boutons ---------- */
.elementor-element.elementor-element.btn .elementor-button { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 14px 26px; border-radius: 999px; font-family: inherit; font-weight: 600; font-size: 14px; line-height: 1.6; letter-spacing: 0; border: 1px solid transparent; background: transparent; color: #fff; transition: background .2s, border-color .2s, transform .2s; position: relative; overflow: hidden; }
.elementor-element.elementor-element.btn-plein .elementor-button { background: var(--accent); box-shadow: 0 10px 30px -10px rgba(19,168,168,.7); }
.elementor-element.elementor-element.btn-plein .elementor-button:hover { background: var(--accent-vif); color: #fff; transform: translateY(-1px); }
.elementor-element.elementor-element.btn-plein .elementor-button::before { content: ""; position: absolute; inset: 0; transform: translateX(-100%); background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,.45) 50%, transparent 70%); transition: transform .7s; }
.elementor-element.elementor-element.btn-plein .elementor-button:hover::before { transform: translateX(100%); }
.elementor-element.elementor-element.btn-contour .elementor-button { border-color: rgba(255,255,255,.28); }
.elementor-element.elementor-element.btn-contour .elementor-button:hover { border-color: #fff; color: #fff; }
.elementor-element.elementor-element.btn-petit .elementor-button { padding: 10px 18px; font-size: 13px; }
.elementor-element.elementor-element.btn-bloc .elementor-button { width: 100%; }
.elementor-element.elementor-element.lien-fleche .elementor-button { display: inline-flex; align-items: center; gap: 8px; padding: 0 0 3px; background: none; border-radius: 0; font-family: inherit; font-weight: 600; font-size: 14px; line-height: 1.6; color: #fff; border-bottom: 1px solid rgba(255,255,255,.3); }
.elementor-element.elementor-element.lien-fleche .elementor-button::after { content: "→"; color: var(--accent-vif); }
.elementor-element.elementor-element.lien-sombre .elementor-button { color: #111; border-color: #cfd1d2; }
.elementor-element.elementor-element.lien-sombre .elementor-button::after { color: var(--accent); }

/* ---------- halos et traînées : pseudo-éléments des sections ---------- */
.elementor-element.elementor-element.hero::before, .elementor-element.elementor-element.hero::after, .elementor-element.elementor-element.services::before, .elementor-element.elementor-element.methode::before, .elementor-element.elementor-element.socle::before, .elementor-element.elementor-element.decider::before,
.elementor-element.elementor-element.diagnostic::before, .elementor-element.elementor-element.secteurs::before, .elementor-element.elementor-element.local::before, .elementor-element.elementor-element.contact::before, .elementor-element.elementor-element.cta-final::before,
.elementor-element.elementor-element.hero-interne::before, .elementor-element.elementor-element.service-detail::before, .elementor-element.elementor-element.histoire::before, .elementor-element.elementor-element.mission::before, .elementor-element.elementor-element.lettre::before {
  content: ""; position: absolute; border-radius: 50%; pointer-events: none; z-index: 1; filter: blur(10px); }
.elementor-element.elementor-element.hero::before { width: 900px; height: 900px; right: -260px; top: -280px; background: radial-gradient(circle, rgba(19,168,168,.42) 0%, rgba(11,132,132,.16) 35%, transparent 68%); }
.elementor-element.elementor-element.hero::after { width: 520px; height: 520px; left: -220px; bottom: -200px; background: radial-gradient(circle, rgba(11,132,132,.28) 0%, transparent 65%); }
.elementor-element.elementor-element.services::before { width: 1100px; height: 600px; left: 50%; top: -360px; transform: translateX(-50%); background: radial-gradient(ellipse, rgba(19,168,168,.38) 0%, rgba(11,132,132,.12) 40%, transparent 70%); }
.elementor-element.elementor-element.methode::before, .elementor-element.elementor-element.service-detail::before { width: 700px; height: 700px; left: -300px; top: -200px; background: radial-gradient(circle, rgba(11,132,132,.30) 0%, transparent 65%); }
.elementor-element.elementor-element.service-detail.inverse::before { left: auto; right: -300px; }
.elementor-element.elementor-element.socle::before, .elementor-element.elementor-element.histoire::before { width: 900px; height: 700px; right: -200px; top: -120px; background: radial-gradient(ellipse, rgba(19,168,168,.22) 0%, transparent 65%); }
.elementor-element.elementor-element.decider::before { width: 900px; height: 600px; right: -300px; bottom: -300px; background: radial-gradient(ellipse, rgba(11,132,132,.28) 0%, transparent 65%); }
.elementor-element.elementor-element.diagnostic::before, .elementor-element.elementor-element.mission::before { width: 1100px; height: 600px; left: 50%; top: -340px; transform: translateX(-50%); background: radial-gradient(ellipse, rgba(19,168,168,.34) 0%, rgba(11,132,132,.1) 42%, transparent 70%); }
.elementor-element.elementor-element.secteurs::before { width: 1000px; height: 600px; left: 50%; bottom: -380px; transform: translateX(-50%); background: radial-gradient(ellipse, rgba(19,168,168,.3) 0%, transparent 66%); }
.elementor-element.elementor-element.local::before { width: 1000px; height: 700px; left: 50%; top: 120px; transform: translateX(-50%); background: radial-gradient(ellipse, rgba(19,168,168,.26) 0%, transparent 65%); }
.elementor-element.elementor-element.contact::before, .elementor-element.elementor-element.lettre::before { width: 800px; height: 800px; left: -260px; bottom: -380px; background: radial-gradient(circle, rgba(19,168,168,.36) 0%, transparent 62%); }
.elementor-element.elementor-element.cta-final::before { width: 1300px; height: 700px; left: 50%; bottom: -380px; transform: translateX(-50%); background: radial-gradient(ellipse, rgba(19,168,168,.6) 0%, rgba(11,132,132,.22) 38%, transparent 68%); }
.elementor-element.elementor-element.hero-interne::before { width: 900px; height: 900px; right: -260px; top: -280px; background: radial-gradient(circle, rgba(19,168,168,.42) 0%, rgba(11,132,132,.16) 35%, transparent 68%); }

.elementor-element.elementor-element.probleme::after, .elementor-element.elementor-element.cta-final::after, .elementor-element.elementor-element.hero-interne::after { content: ""; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background:
    linear-gradient(105deg, transparent 46%, rgba(19,168,168,.55) 49.6%, transparent 50.4%),
    linear-gradient(112deg, transparent 52%, rgba(19,168,168,.35) 54.8%, transparent 55.4%),
    linear-gradient(98deg, transparent 58%, rgba(19,168,168,.25) 60.6%, transparent 61.2%),
    linear-gradient(118deg, transparent 63%, rgba(197,176,68,.22) 64.7%, transparent 65.1%);
  -webkit-mask-image: linear-gradient(90deg, transparent 20%, #000 60%, #000 100%); mask-image: linear-gradient(90deg, transparent 20%, #000 60%, #000 100%);
  filter: blur(1.5px); opacity: .9; }
.elementor-element.elementor-element.cta-final::after, .elementor-element.elementor-element.hero-interne::after { opacity: .55; }

/* ------------------------------------------------------------------
   EN-TÊTE (Theme Builder, Elementor Pro)
   ------------------------------------------------------------------ */
.elementor-location-header { position: absolute; top: 0; left: 0; right: 0; z-index: 20; }
.admin-bar .elementor-location-header { top: 32px; }
.elementor-element.elementor-element.entete { background: transparent; }
.elementor-element.elementor-element.entete-in { max-width: var(--largeur); margin: 0 auto; padding: 20px 32px; display: flex; align-items: center; gap: 36px; }
.elementor-element.elementor-element.logo-pastille { flex: none; width: auto; display: flex; line-height: 0; }
.elementor-element.elementor-element.logo-pastille a { display: inline-flex; align-items: center; background: #fff; border-radius: 999px; padding: 11px 20px 11px 16px; }
.elementor-element.elementor-element.logo-pastille img { height: 30px; width: auto !important; max-width: none; }
.elementor-element.elementor-element.nav { flex: 1; width: auto; }
.elementor-element.elementor-element.nav .elementor-nav-menu--main .elementor-nav-menu { display: flex; gap: 28px; }
.elementor-element.elementor-element.nav .elementor-nav-menu--main .elementor-item { padding: 0; font-family: inherit; font-size: 14px; font-weight: 500; line-height: 1.6; color: rgba(255,255,255,.72); }
.elementor-element.elementor-element.nav .elementor-nav-menu--main .elementor-item:hover, .elementor-element.elementor-element.nav .elementor-nav-menu--main .elementor-item.elementor-item-active { color: #fff; }
.elementor-element.elementor-element.entete-actions { margin-left: auto; display: flex; align-items: center; gap: 20px; }
.elementor-element.elementor-element.entete-tel { font-size: 13px; font-weight: 600; }
.elementor-element.elementor-element.entete-tel p, .elementor-element.elementor-element.entete-tel a { color: rgba(255,255,255,.8); margin: 0; }
.elementor-element.elementor-element.nav-pied { display: none; }
.elementor-element.elementor-element.nav .elementor-menu-toggle { background: none; color: #fff; font-size: 24px; width: 44px; height: 44px; padding: 10px; border-radius: 50%; position: relative; z-index: 31; }
.elementor-element.elementor-element.nav .elementor-menu-toggle svg { fill: #fff; }

/* ------------------------------------------------------------------
   PIED DE PAGE (Theme Builder) + bouton WhatsApp
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.pied { padding: 80px 0 30px; border-top: 1px solid var(--ligne); background: #000; }
.elementor-element.elementor-element.pied-grille { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 40px; }
.elementor-element.elementor-element.pied-texte { font-size: 13.5px; margin-top: 22px; }
.elementor-element.elementor-element.pied-texte p { max-width: 300px; }
.elementor-element.elementor-element.pied-titre { font-size: 12px; text-transform: uppercase; letter-spacing: .07em; color: var(--accent-vif); margin-bottom: 18px; font-weight: 600; }
.elementor-element.elementor-element.pied-liens ul { list-style: none; margin: 0; padding: 0; }
.elementor-element.elementor-element.pied-liens li { margin-bottom: 10px; font-size: 14px; }
.elementor-element.elementor-element.pied-liens a { font-size: 14px; color: rgba(255,255,255,.7); }
.elementor-element.elementor-element.pied-liens a:hover { color: #fff; }
.elementor-element.elementor-element.pied-liens p { font-size: 14px; }
.elementor-element.elementor-element.pied-bas { display: flex; justify-content: space-between; gap: 20px; flex-wrap: wrap; margin-top: 60px; padding-top: 24px; border-top: 1px solid var(--ligne); font-size: 12.5px; }
.elementor-element.elementor-element.pied-bas p, .elementor-element.elementor-element.pied-bas a { color: rgba(255,255,255,.45) !important; margin: 0; }
.elementor-element.elementor-element.pied-bas::before { content: ""; position: absolute; left: 32px; top: -1px; width: 60px; height: 1px; background: var(--or); }
.elementor-element.elementor-element.whatsapp { position: fixed; right: 22px; bottom: 22px; z-index: 50; width: 56px; height: 56px; }
.elementor-element.elementor-element.whatsapp .elementor-button { display: block; width: 56px; height: 56px; padding: 0; border-radius: 50%; background: var(--accent); border: 1px solid rgba(255,255,255,.18); box-shadow: 0 12px 30px -8px rgba(0,0,0,.6); font-size: 0; color: transparent; position: relative; }
.elementor-element.elementor-element.whatsapp .elementor-button::before { content: ""; position: absolute; inset: 15px; background: #fff;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.3A10 10 0 1 0 12 2Zm5.6 14.2c-.2.7-1.4 1.3-2 1.4-.5.1-1.2.1-1.9-.1-.4-.1-1-.3-1.7-.6-3-1.3-4.9-4.3-5.1-4.5-.1-.2-1.2-1.6-1.2-3.1s.8-2.2 1-2.5c.3-.3.6-.4.8-.4h.6c.2 0 .4 0 .6.5l.9 2.1c.1.2.1.3 0 .5l-.3.5-.4.5c-.1.1-.3.3-.1.6.2.3.8 1.3 1.7 2.1 1.2 1 2.1 1.3 2.4 1.5.3.1.5.1.6-.1l.9-1.1c.2-.3.4-.2.6-.1l2 1c.3.1.5.2.5.3.1.1.1.7-.1 1.4Z'/%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a10 10 0 0 0-8.6 15.1L2 22l5-1.3A10 10 0 1 0 12 2Zm5.6 14.2c-.2.7-1.4 1.3-2 1.4-.5.1-1.2.1-1.9-.1-.4-.1-1-.3-1.7-.6-3-1.3-4.9-4.3-5.1-4.5-.1-.2-1.2-1.6-1.2-3.1s.8-2.2 1-2.5c.3-.3.6-.4.8-.4h.6c.2 0 .4 0 .6.5l.9 2.1c.1.2.1.3 0 .5l-.3.5-.4.5c-.1.1-.3.3-.1.6.2.3.8 1.3 1.7 2.1 1.2 1 2.1 1.3 2.4 1.5.3.1.5.1.6-.1l.9-1.1c.2-.3.4-.2.6-.1l2 1c.3.1.5.2.5.3.1.1.1.7-.1 1.4Z'/%3E%3C/svg%3E") center / contain no-repeat; }

/* ------------------------------------------------------------------
   HERO + RADAR
   ------------------------------------------------------------------ */
body .elementor-element.elementor-element.hero { padding: 150px 0 48px; min-height: 100vh; display: flex; flex-direction: column; justify-content: center; align-items: stretch; }
.elementor-element.elementor-element.hero-grille { display: grid; grid-template-columns: 1.2fr .8fr; gap: 40px; align-items: center; }
.elementor-element.elementor-element.hero-titre { font-size: clamp(38px, 4.6vw, 66px); font-weight: 800; letter-spacing: -.035em; line-height: 1.02; margin-bottom: 26px; }
.elementor-element.elementor-element.hero-titre em, .elementor-element.elementor-element.hero-interne-titre em { background: linear-gradient(90deg, #0b8484, #13a8a8 45%, #5fd0cf); -webkit-background-clip: text; background-clip: text; color: transparent; }
.elementor-element.elementor-element.hero-intro { font-size: 17px; margin-bottom: 34px; }
.elementor-element.elementor-element.hero-intro p { max-width: 540px; }
.elementor-element.elementor-element.hero-boutons { display: flex; gap: 14px; flex-wrap: wrap; }
.elementor-element.elementor-element.hero-preuves ul { list-style: none; padding: 0; margin: 44px 0 0; display: flex; gap: 34px; flex-wrap: wrap; font-size: 13px; color: var(--texte-sombre); }
.elementor-element.elementor-element.hero-preuves strong { display: block; color: #fff; font-size: 20px; font-weight: 700; }

.elementor-element.elementor-element.radar { position: relative; aspect-ratio: 1; width: 100%; max-width: 620px; margin-right: -30px; justify-self: end;
  background: url("assets/img/radar.svg") center / 100% 100% no-repeat; }
.elementor-element.elementor-element.radar::before { content: ""; position: absolute; inset: 4.6%; border-radius: 50%; z-index: 0;
  background-image: radial-gradient(rgba(255,255,255,.22) 1px, transparent 1.6px); background-size: 11px 11px;
  -webkit-mask-image: radial-gradient(circle, #000 30%, transparent 72%); mask-image: radial-gradient(circle, #000 30%, transparent 72%); opacity: .55; }
.elementor-element.elementor-element.radar::after { content: ""; position: absolute; inset: 4.6%; border-radius: 50%; z-index: 0;
  background: conic-gradient(from 0deg, transparent 0deg 290deg, rgba(19,168,168,.04) 300deg, rgba(19,168,168,.32) 358deg, rgba(95,208,207,.75) 360deg);
  animation: tourne 8s linear infinite;
  -webkit-mask-image: radial-gradient(circle, #000 60%, transparent 71%); mask-image: radial-gradient(circle, #000 60%, transparent 71%); }
@keyframes tourne { to { transform: rotate(360deg); } }
.elementor-element.elementor-element.radar-noeud { position: absolute; width: 0; height: 0; z-index: 2; --d: 0s; }
.elementor-element.elementor-element.radar-noeud::before { content: ""; position: absolute; width: 14px; height: 14px; margin: -7px; border-radius: 50%; background: var(--accent-vif); box-shadow: 0 0 0 5px rgba(19,168,168,.16), 0 0 16px 3px rgba(19,168,168,.55); animation: point-flash 8s linear infinite; animation-delay: var(--d); }
.elementor-element.elementor-element.radar-noeud p { position: absolute; top: 0; margin: 0; transform: translateY(-50%); white-space: nowrap; text-transform: uppercase; font-size: 10.5px; font-weight: 700; letter-spacing: .14em; color: rgba(255,255,255,.7) !important; text-shadow: 0 0 12px #000; animation: label-flash 8s linear infinite; animation-delay: var(--d); }
.elementor-element.elementor-element.radar-noeud.droite p { left: 18px; } .elementor-element.elementor-element.radar-noeud.gauche p { right: 18px; }
.elementor-element.elementor-element.rn1 { left: 70.6%; top: 20.5%; --d: -7.22s; } .elementor-element.elementor-element.rn2 { left: 89.8%; top: 53.5%; --d: -5.89s; }
.elementor-element.elementor-element.rn3 { left: 67%; top: 79.4%; --d: -4.67s; } .elementor-element.elementor-element.rn4 { left: 27%; top: 82.8%; --d: -3.22s; }
.elementor-element.elementor-element.rn5 { left: 14.5%; top: 43.7%; --d: -1.78s; } .elementor-element.elementor-element.rn6 { left: 36%; top: 25.8%; --d: -.67s; }
@keyframes point-flash { 0% { transform: scale(1.5); background: #fff; box-shadow: 0 0 0 9px rgba(19,168,168,.3), 0 0 34px 10px rgba(19,168,168,.95); } 12%, 100% { transform: scale(1); } }
@keyframes label-flash { 0% { color: #5fd0cf; } 14%, 100% { color: rgba(255,255,255,.7); } }

.elementor-element.elementor-element.bandeau-marques { margin-top: 70px; padding-top: 28px; border-top: 1px solid var(--ligne); }
.elementor-element.elementor-element.bandeau-titre { text-align: center; font-size: 11px; font-weight: 600; letter-spacing: .22em; text-transform: uppercase; margin-bottom: 22px; }
.elementor-element.elementor-element.bandeau-titre p { color: rgba(255,255,255,.4) !important; }
.elementor-element.elementor-element.defile { overflow: hidden; -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent); }
.elementor-element.elementor-element.defile-piste { display: flex; width: max-content; }
html.anime .elementor-element.elementor-element.defile-piste { animation: defile 40s linear infinite; }
.elementor-element.elementor-element.defile:hover .elementor-element.elementor-element.defile-piste { animation-play-state: paused; }
.elementor-element.elementor-element.marque-defile { flex: none; padding: 0 38px; font-weight: 700; font-size: 19px; }
.elementor-element.elementor-element.marque-defile p { color: rgba(255,255,255,.38) !important; margin: 0; transition: color .3s; }
.elementor-element.elementor-element.marque-defile:hover p { color: #fff !important; }
@keyframes defile { to { transform: translateX(-50%); } }

/* ------------------------------------------------------------------
   LE CONSTAT : bannière en parallaxe
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.probleme { padding: 120px 0 130px; background: #000; }
.elementor-element.elementor-element.banniere-img { position: absolute; left: 0; right: 0; top: -12%; height: 124%; z-index: 0; }
.elementor-element.elementor-element.banniere-img img { width: 100%; height: 100% !important; object-fit: cover; opacity: .32; filter: grayscale(.4) hue-rotate(160deg) saturate(.7); transform: translate3d(0, var(--par, 0px), 0); will-change: transform; }
.elementor-element.elementor-element.probleme::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, #000 0%, rgba(0,0,0,.55) 30%, rgba(0,0,0,.6) 70%, #000 100%), linear-gradient(90deg, rgba(0,0,0,.85), transparent 75%); }
.elementor-element.elementor-element.probleme-in { max-width: 820px; margin-left: max(32px, calc((100vw - var(--largeur)) / 2)); padding: 0; }
.elementor-element.elementor-element.probleme-texte p { max-width: 600px; font-size: 16px; }
.elementor-element.elementor-element.probleme .elementor-element.elementor-element.lien-fleche { margin-top: 28px; } /* 16 px du paragraphe + 12 px, comme dans la maquette (la marge ne se fusionne pas avec un lien en ligne) */
/* fidèles à la maquette validée : le surtitre y hérite du corps de la section */
.elementor-element.elementor-element.probleme .elementor-element.elementor-element.surtitre { font-size: 16px; }
.elementor-element.elementor-element.decider .elementor-element.elementor-element.surtitre { margin-bottom: 30px; }

/* ------------------------------------------------------------------
   CARTES EMPILÉES
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.socle { padding: 120px 0 140px; overflow: visible; overflow-x: clip; }
.elementor-element.elementor-element.socle-grille { display: grid; grid-template-columns: .8fr 1.2fr; gap: 60px; align-items: start; }
.elementor-element.elementor-element.pile-tete { position: sticky; top: 120px; }
.elementor-element.elementor-element.pile-intro p { max-width: 380px; }
.elementor-element.elementor-element.pile { display: grid; gap: 18px; }
.elementor-element.elementor-element.pile-carte { position: sticky; top: calc(110px + var(--i) * 16px); display: grid; grid-template-columns: 1fr 1fr; gap: 26px; padding: 26px; border-radius: 20px; background: linear-gradient(160deg, #141616, #0b0c0c); border: 1px solid var(--ligne); box-shadow: 0 -12px 40px -24px rgba(0,0,0,.9), 0 40px 70px -40px rgba(0,0,0,.9); transform-origin: 50% 0; transform: scale(calc(1 - var(--cover, 0) * .07)); filter: brightness(calc(1 - var(--cover, 0) * .5)); will-change: transform; min-height: 340px; }
.elementor-element.elementor-element.pc1 { --i: 0; } .elementor-element.elementor-element.pc2 { --i: 1; } .elementor-element.elementor-element.pc3 { --i: 2; } .elementor-element.elementor-element.pc4 { --i: 3; }
body .elementor-element.elementor-element.pile-texte { display: flex; flex-direction: column; }
.elementor-element.elementor-element.pile-num { width: 46px; height: 46px; border-radius: 14px; display: grid; place-items: center; font-weight: 700; font-size: 13px; background: linear-gradient(160deg, rgba(19,168,168,.18), rgba(11,132,132,.06)); margin-bottom: 26px; }
.elementor-element.elementor-element.pile-num p { color: var(--accent-vif) !important; margin: 0; }
.elementor-element.elementor-element.pile-titre { font-size: 26px; margin-bottom: 14px; }
.elementor-element.elementor-element.pile-desc p { font-size: 14.5px; }
.elementor-element.elementor-element.pile-benef { margin-top: auto; margin-bottom: 14.5px; padding-top: 16px; border-top: 1px solid var(--ligne); }
.elementor-element.elementor-element.pile-benef p { color: #fff !important; font-weight: 500; }
.elementor-element.elementor-element.pile-benef strong { display: block; font-size: 10.5px; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: var(--accent-vif); margin-bottom: 4px; }
.elementor-element.elementor-element.pile-media { border-radius: 14px; overflow: hidden; }
.elementor-element.elementor-element.pile-media img { width: 100%; height: 100% !important; object-fit: cover; filter: saturate(.85); }

/* ------------------------------------------------------------------
   SERVICES (grille à filets) + icônes en masques CSS
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.services { padding: 140px 0 120px; border-top: 1px solid var(--ligne); }
.elementor-element.elementor-element.grille-services { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--ligne); border: 1px solid var(--ligne); border-radius: var(--rayon); overflow: hidden; margin: 50px 0 44px; }
.elementor-element.elementor-element.grille-2 { grid-template-columns: repeat(2, 1fr); }
.elementor-element.elementor-element.service { position: relative; background: #060707; padding: 104px 30px 30px; transition: background .35s; }
.elementor-element.elementor-element.service:hover { background: #0c0f0f; }
.elementor-element.elementor-element.service::before { content: ""; position: absolute; left: 30px; top: 34px; width: 48px; height: 48px; border-radius: 14px; background: linear-gradient(160deg, rgba(19,168,168,.18), rgba(11,132,132,.05)); transition: transform .35s cubic-bezier(.16,1,.3,1), box-shadow .35s; }
.elementor-element.elementor-element.service::after { content: ""; position: absolute; left: 42px; top: 46px; width: 24px; height: 24px; background: var(--accent-vif); -webkit-mask: center / contain no-repeat; mask: center / contain no-repeat; transition: transform .35s cubic-bezier(.16,1,.3,1); }
.elementor-element.elementor-element.service:hover::before, .elementor-element.elementor-element.service:hover::after { transform: translateY(-3px); }
.elementor-element.elementor-element.service:hover::before { box-shadow: 0 16px 30px -14px rgba(19,168,168,.8); }
.elementor-element.elementor-element.svc-maintenance::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.7 6.3a4 4 0 0 0-5.4 5.4L3 18l3 3 6.3-6.3a4 4 0 0 0 5.4-5.4l-2.5 2.5-2.4-.6-.6-2.4z'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.7 6.3a4 4 0 0 0-5.4 5.4L3 18l3 3 6.3-6.3a4 4 0 0 0 5.4-5.4l-2.5 2.5-2.4-.6-.6-2.4z'/%3E%3C/svg%3E"); }
.elementor-element.elementor-element.svc-cyber::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3 4 6v6c0 5 3.4 8 8 9 4.6-1 8-4 8-9V6z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3 4 6v6c0 5 3.4 8 8 9 4.6-1 8-4 8-9V6z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E"); }
.elementor-element.elementor-element.svc-infogerance::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='6' rx='1.5'/%3E%3Crect x='3' y='14' width='18' height='6' rx='1.5'/%3E%3Cpath d='M7 7h.01M7 17h.01'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='6' rx='1.5'/%3E%3Crect x='3' y='14' width='18' height='6' rx='1.5'/%3E%3Cpath d='M7 7h.01M7 17h.01'/%3E%3C/svg%3E"); }
.elementor-element.elementor-element.svc-cameras::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7h12l4 3v4l-4 3H3z'/%3E%3Ccircle cx='9' cy='12' r='2.5'/%3E%3Cpath d='M19 10l2-1v6l-2-1'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7h12l4 3v4l-4 3H3z'/%3E%3Ccircle cx='9' cy='12' r='2.5'/%3E%3Cpath d='M19 10l2-1v6l-2-1'/%3E%3C/svg%3E"); }
.elementor-element.elementor-element.svc-sauvegarde::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cellipse cx='12' cy='5' rx='8' ry='3'/%3E%3Cpath d='M4 5v6c0 1.7 3.6 3 8 3s8-1.3 8-3V5'/%3E%3Cpath d='M4 11v6c0 1.7 3.6 3 8 3s8-1.3 8-3v-6'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cellipse cx='12' cy='5' rx='8' ry='3'/%3E%3Cpath d='M4 5v6c0 1.7 3.6 3 8 3s8-1.3 8-3V5'/%3E%3Cpath d='M4 11v6c0 1.7 3.6 3 8 3s8-1.3 8-3v-6'/%3E%3C/svg%3E"); }
.elementor-element.elementor-element.svc-materiel::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='12' rx='1.5'/%3E%3Cpath d='M8 20h8M12 16v4'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='12' rx='1.5'/%3E%3Cpath d='M8 20h8M12 16v4'/%3E%3C/svg%3E"); }
.elementor-element.elementor-element.svc-reseau::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5a10 10 0 0 1 14 0M8.5 16a5 5 0 0 1 7 0M2 9a14 14 0 0 1 20 0'/%3E%3Cpath d='M12 19.5h.01'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5a10 10 0 0 1 14 0M8.5 16a5 5 0 0 1 7 0M2 9a14 14 0 0 1 20 0'/%3E%3Cpath d='M12 19.5h.01'/%3E%3C/svg%3E"); }
.elementor-element.elementor-element.svc-audit::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 19V5M4 19h16'/%3E%3Cpath d='m8 15 3-4 3 2 5-6'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 19V5M4 19h16'/%3E%3Cpath d='m8 15 3-4 3 2 5-6'/%3E%3C/svg%3E"); }
.elementor-element.elementor-element.service-titre { font-size: 18px; color: var(--accent-vif); margin-bottom: 12px; }
.elementor-element.elementor-element.service-texte p { font-size: 14px; margin: 0; }

/* ------------------------------------------------------------------
   DÉCIDER
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.decider { padding: 110px 0 130px; }
.elementor-element.elementor-element.decider-grille { display: grid; grid-template-columns: .9fr 1.1fr; gap: 70px; align-items: center; }
.elementor-element.elementor-element.decider-intro p, .elementor-element.elementor-element.decider-intro p:last-child { max-width: 460px; margin-bottom: 30px; }
.elementor-element.elementor-element.liste-tuiles ul { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.elementor-element.elementor-element.liste-tuiles li { display: flex; align-items: center; gap: 14px; padding: 18px; border-radius: var(--rayon-petit); background: var(--carte); border: 1px solid var(--ligne); font-size: 14px; font-weight: 500; transition: transform .4s cubic-bezier(.16,1,.3,1), box-shadow .4s, border-color .3s; }
.elementor-element.elementor-element.liste-tuiles li:hover { transform: translateY(-3px); border-color: rgba(19,168,168,.4); box-shadow: 0 0 0 1px rgba(19,168,168,.2), 0 20px 40px -20px rgba(19,168,168,.4); }
.elementor-element.elementor-element.liste-tuiles strong { flex: none; width: 34px; height: 34px; border-radius: 8px; display: grid; place-items: center; font-size: 11px; font-weight: 700; color: var(--accent-vif); background: rgba(19,168,168,.1); border: 1px solid rgba(19,168,168,.3); }

/* ------------------------------------------------------------------
   COMMENCER / CARTES CLAIRES / VALEURS
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.commencer, .elementor-element.elementor-element.valeurs { padding: 110px 0; }
.elementor-element.elementor-element.commencer-tete { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items: end; margin-bottom: 44px; }
.elementor-element.elementor-element.commencer-tete .elementor-element.elementor-element.titre-section { margin: 0; }
.elementor-element.elementor-element.commencer-intro p { margin: 0; font-size: 16px; }
.elementor-element.elementor-element.grille-cartes { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 40px; }
.elementor-element.elementor-element.carte-claire { padding: 26px 24px; border: 1px solid var(--clair-ligne); border-radius: var(--rayon-petit); background: #fff; transition: border-color .2s, box-shadow .2s, transform .4s cubic-bezier(.16,1,.3,1); }
.elementor-element.elementor-element.carte-claire:hover { border-color: var(--accent); box-shadow: 0 16px 40px -24px rgba(11,132,132,.6); transform: translateY(-3px); }
.elementor-element.elementor-element.carte-titre { font-size: 16px; margin-bottom: 10px; color: #111; }
.elementor-element.elementor-element.carte-texte p { font-size: 14px; margin: 0; }
.elementor-element.elementor-element.valeur { padding: 32px 28px; }
.elementor-element.elementor-element.valeur .elementor-element.elementor-element.carte-titre { font-size: 20px; }
.elementor-element.elementor-element.valeur-num { display: inline-grid; place-items: center; width: 42px; height: 42px; border-radius: 12px; background: rgba(11,132,132,.1); font-weight: 700; font-size: 13px; margin-bottom: 18px; }
.elementor-element.elementor-element.valeur-num p { color: var(--accent) !important; margin: 0; }

/* ------------------------------------------------------------------
   MÉTHODE
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.methode { padding: 130px 0; }
.elementor-element.elementor-element.grille-methode { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-top: 50px; }
.elementor-element.elementor-element.etape { transition: transform .4s cubic-bezier(.16,1,.3,1); }
.elementor-element.elementor-element.etape:hover { transform: translateY(-4px); }
.elementor-element.elementor-element.etape-img { border-radius: var(--rayon); overflow: hidden; margin-bottom: 20px; aspect-ratio: 3/4; }
.elementor-element.elementor-element.etape-img img { width: 100%; height: 100% !important; object-fit: cover; filter: saturate(.8) brightness(.85); transition: transform .5s; }
.elementor-element.elementor-element.etape:hover .elementor-element.elementor-element.etape-img img { transform: scale(1.04); }
.elementor-element.elementor-element.etape-titre { font-size: 18px; margin-bottom: 8px; color: var(--accent-vif); }
.elementor-element.elementor-element.etape-texte p { font-size: 14px; margin: 0; }

/* ------------------------------------------------------------------
   DIAGNOSTIC + QUIZ
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.diagnostic { padding: 110px 0 130px; border-top: 1px solid var(--ligne); }
.elementor-element.elementor-element.diagnostic-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; }
.elementor-element.elementor-element.diagnostic-intro p { max-width: 480px; }
.elementor-element.elementor-element.puces ul { list-style: none; padding: 0; margin: 26px 0 0; display: grid; gap: 12px; }
.elementor-element.elementor-element.puces li { position: relative; padding-left: 28px; font-size: 14px; color: rgba(255,255,255,.85); }
.elementor-element.elementor-element.puces li::before { content: ""; position: absolute; left: 0; top: 7px; width: 10px; height: 10px; border-radius: 50%; background: var(--accent-vif); box-shadow: 0 0 12px 2px rgba(19,168,168,.6); }
.elementor-element.elementor-element.quiz { padding: 34px; border-radius: var(--rayon); background: linear-gradient(180deg, #111313, #0a0b0b); border: 1px solid var(--ligne); box-shadow: 0 0 0 1px rgba(19,168,168,.12), 0 40px 90px -30px rgba(19,168,168,.45); }
.elementor-element.elementor-element.quiz-tete { display: flex; align-items: center; gap: 16px; margin-bottom: 24px; }
.elementor-element.elementor-element.quiz-tete p { flex: none; margin: 0; font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--accent-vif) !important; background: rgba(19,168,168,.12); border: 1px solid rgba(19,168,168,.35); padding: 4px 10px; border-radius: 999px; }
.elementor-element.elementor-element.quiz-tete::after { content: ""; flex: 1; height: 3px; border-radius: 3px; background: linear-gradient(90deg, var(--accent-vif) 33%, rgba(255,255,255,.1) 33%); }
.elementor-element.elementor-element.quiz-question p { font-size: 19px; font-weight: 600; color: #fff !important; line-height: 1.35; margin-bottom: 22px; }
.elementor-element.elementor-element.quiz-options { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 22px; }
.elementor-element.elementor-element.option { cursor: pointer; border-radius: var(--rayon-petit); border: 1px solid var(--ligne); background: rgba(255,255,255,.03); padding: 15px 16px; transition: border-color .2s, background .2s; }
.elementor-element.elementor-element.option p { margin: 0; font-size: 14px; line-height: normal; font-weight: 500; color: rgba(255,255,255,.85) !important; }
.elementor-element.elementor-element.option:hover { border-color: rgba(19,168,168,.5); }
.elementor-element.elementor-element.option.choisie { border-color: var(--accent-vif); background: rgba(19,168,168,.14); }

/* ------------------------------------------------------------------
   SECTEURS (galerie horizontale)
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.secteurs { padding: 40px 0 130px; }
.elementor-element.elementor-element.secteurs-tete { display: grid; grid-template-columns: 1fr auto; gap: 60px; align-items: end; margin-bottom: 40px; }
.elementor-element.elementor-element.secteurs-tete .elementor-element.elementor-element.titre-section { margin: 0; }
.elementor-element.elementor-element.secteurs-texte p, .elementor-element.elementor-element.secteurs-texte p:last-child { max-width: 460px; margin: 0; }
.elementor-element.elementor-element.galerie-nav { display: flex; gap: 8px; }
.elementor-element.elementor-element.galerie-btn { width: 46px; height: 46px; border-radius: 50%; background: rgba(255,255,255,.08); display: grid; place-items: center; cursor: pointer; transition: background .2s; }
.elementor-element.elementor-element.galerie-btn p { margin: 0; color: #fff !important; font-size: 18px; line-height: 1; }
.elementor-element.elementor-element.galerie-btn:hover { background: var(--accent); }
.elementor-element.elementor-element.galerie { display: flex; gap: 16px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 8px; margin-right: calc(-1 * max(32px, (100vw - var(--largeur)) / 2 + 32px)); padding-right: 32px; }
.elementor-element.elementor-element.galerie::-webkit-scrollbar { display: none; }
.elementor-element.elementor-element.secteur { position: relative; flex: 0 0 clamp(220px, 22vw, 290px); scroll-snap-align: start; aspect-ratio: 4/5; border-radius: var(--rayon); overflow: hidden; }
.elementor-element.elementor-element.secteur-img { position: absolute; inset: 0; }
.elementor-element.elementor-element.secteur-img img { width: 100%; height: 100% !important; object-fit: cover; filter: saturate(.85); transition: transform .5s; }
.elementor-element.elementor-element.secteur:hover .elementor-element.elementor-element.secteur-img img { transform: scale(1.05); }
.elementor-element.elementor-element.secteur::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(5,5,5,.3), transparent 25%, transparent 45%, rgba(5,5,5,.88)), linear-gradient(160deg, rgba(11,132,132,.28), transparent 60%); }
.elementor-element.elementor-element.secteur-titre { position: absolute; left: 18px; right: 18px; bottom: 18px; z-index: 2; font-size: 16px; }

/* ------------------------------------------------------------------
   BLOG (section d'accueil)
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.blog { padding: 110px 0 120px; }
.elementor-element.elementor-element.blog-tete { margin-bottom: 44px; }
.elementor-element.elementor-element.blog-intro p { max-width: 520px; }
.elementor-element.elementor-element.grille-articles { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; }
.elementor-element.elementor-element.article { transition: transform .4s cubic-bezier(.16,1,.3,1); }
.elementor-element.elementor-element.article:hover { transform: translateY(-3px); }
.elementor-element.elementor-element.article-img { border-radius: var(--rayon); overflow: hidden; aspect-ratio: 16/9; margin-bottom: 22px; }
.elementor-element.elementor-element.article-img img { width: 100%; height: 100% !important; object-fit: cover; transition: transform .9s cubic-bezier(.16,1,.3,1); }
.elementor-element.elementor-element.article:hover .elementor-element.elementor-element.article-img img { transform: scale(1.05); }
.elementor-element.elementor-element.cat p { margin: 0; line-height: 24px; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--accent) !important; }
.elementor-element.elementor-element.article-titre { font-size: 22px; margin: 10px 0 18px; color: #111; }
.elementor-element.elementor-element.article-titre .elementor-heading-title { max-width: 520px; }

/* ------------------------------------------------------------------
   ANCRAGE LOCAL (carte pointillée animée)
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.local { padding: 130px 0; }
.elementor-element.elementor-element.local-visuel { position: relative; aspect-ratio: 21/8.5; margin: 50px 0 56px; border-radius: var(--rayon); overflow: hidden; border: 1px solid var(--ligne);
  background: url("assets/img/carte.svg") center / 100% 100% no-repeat, #050606; }
.elementor-element.elementor-element.local-visuel::before { content: ""; position: absolute; inset: 0; z-index: 0; background-image: radial-gradient(rgba(255,255,255,.2) 1.1px, transparent 1.7px); background-size: 13px 13px; -webkit-mask-image: radial-gradient(60% 75% at 48% 50%, #000 35%, transparent 80%); mask-image: radial-gradient(60% 75% at 48% 50%, #000 35%, transparent 80%); }
.elementor-element.elementor-element.ville { position: absolute; width: 0; height: 0; z-index: 2; }
.elementor-element.elementor-element.ville p { position: absolute; left: 14px; top: 0; transform: translateY(-50%); margin: 0; white-space: nowrap; font-size: 13px; font-weight: 600; color: rgba(255,255,255,.85) !important; }
.elementor-element.elementor-element.v-thies p { left: 18px; font-size: 16px; font-weight: 700; color: #fff !important; }
.elementor-element.elementor-element.v-thies { left: 47.8%; top: 47.2%; } .elementor-element.elementor-element.v-dakar { left: 27.8%; top: 56.9%; } .elementor-element.elementor-element.v-mbour { left: 43.3%; top: 83.3%; }
.elementor-element.elementor-element.v-kaolack { left: 71.1%; top: 83.3%; } .elementor-element.elementor-element.v-stlouis { left: 46.7%; top: 11.1%; } .elementor-element.elementor-element.v-touba { left: 68.9%; top: 44.4%; }
.elementor-element.elementor-element.local-colonnes { display: grid; grid-template-columns: 1fr 1fr; gap: 60px; }
.elementor-element.elementor-element.local-titre { font-size: 18px; margin-bottom: 10px; }
.elementor-element.elementor-element.local-texte p { margin: 0; }

/* ------------------------------------------------------------------
   MARQUES (clair)
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.marques { padding: 110px 0 60px; }
.elementor-element.elementor-element.grille-marques { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0 20px; margin-top: 40px; }
.elementor-element.elementor-element.marque { display: grid; place-items: center; height: 84px; font-weight: 700; font-size: 19px; letter-spacing: -.01em; }
.elementor-element.elementor-element.marque p { color: #8b8d8f !important; margin: 0; }

/* ------------------------------------------------------------------
   AVIS (mur défilant)
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.avis { padding: 70px 0 110px; }
.elementor-element.elementor-element.avis-grille { display: grid; grid-template-columns: .75fr 1.8fr; gap: 60px; }
.elementor-element.elementor-element.avis-gauche { position: sticky; top: 40px; align-self: start; }
.elementor-element.elementor-element.avis-chiffre { margin-top: 34px; padding-top: 26px; border-top: 1px solid var(--clair-ligne); }
.elementor-element.elementor-element.avis-chiffre p { display: flex; align-items: center; gap: 16px; font-size: 13px; line-height: 1.4; }
.elementor-element.elementor-element.avis-chiffre strong { font-size: 52px; font-weight: 800; letter-spacing: -.04em; color: var(--accent); line-height: 1; }
.elementor-element.elementor-element.mur-avis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; height: 640px; overflow: hidden; -webkit-mask-image: linear-gradient(180deg, transparent, #000 14%, #000 86%, transparent); mask-image: linear-gradient(180deg, transparent, #000 14%, #000 86%, transparent); }
.elementor-element.elementor-element.mur-piste { display: flex; flex-direction: column; }
html.anime .elementor-element.elementor-element.mur-piste { animation: mur 30s linear infinite; }
html.anime .elementor-element.elementor-element.mc2 .elementor-element.elementor-element.mur-piste { animation-duration: 36s; animation-direction: reverse; }
html.anime .elementor-element.elementor-element.mc3 .elementor-element.elementor-element.mur-piste { animation-duration: 42s; }
.elementor-element.elementor-element.mur-avis:hover .elementor-element.elementor-element.mur-piste { animation-play-state: paused; }
@keyframes mur { to { transform: translateY(-50%); } }
.elementor-element.elementor-element.temoignage { margin: 0 0 16px; padding: 24px; border: 1px solid var(--clair-ligne); border-radius: var(--rayon-petit); background: #fff; box-shadow: 0 1px 2px rgba(20,20,26,.05), 0 6px 14px -4px rgba(20,20,26,.08); }
.elementor-element.elementor-element.temoignage-texte p { font-size: 14.5px; color: #222 !important; }
.elementor-element.elementor-element.temoin { display: flex; align-items: center; gap: 12px; }
.elementor-element.elementor-element.initiales { flex: none; width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; background: #0f1111; }
.elementor-element.elementor-element.initiales p { margin: 0; color: var(--accent-vif) !important; font-weight: 700; font-size: 14px; }
.elementor-element.elementor-element.temoin-nom p { margin: 0; font-size: 12px; line-height: 1.6; color: #7a7b7c !important; }
.elementor-element.elementor-element.temoin-nom strong { display: block; font-size: 14px; line-height: 1.6; color: #111; }

/* ------------------------------------------------------------------
   FAQ (questions-réponses ; bascule .ouvert par app.js)
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.faq { padding: 60px 0 130px; border-top: 1px solid var(--clair-ligne); }
.elementor-element.elementor-element.faq-in { max-width: 860px; padding-top: 60px; }
.elementor-element.elementor-element.accordeon { margin-top: 40px; display: grid; gap: 10px; }
.elementor-element.elementor-element.faq-item { border: 1px solid var(--clair-ligne); border-radius: var(--rayon-petit); padding: 0 24px; transition: border-color .2s; }
.elementor-element.elementor-element.faq-item.ouvert { border-color: var(--accent); }
.elementor-element.elementor-element.faq-q { position: relative; cursor: pointer; padding: 20px 30px 20px 0; font-weight: 600; font-size: 15.5px; line-height: 1.6; letter-spacing: 0; color: #111; }
.elementor-element.elementor-element.faq-q::after { content: "+"; position: absolute; right: 0; top: 50%; transform: translateY(-50%); font-size: 22px; font-weight: 400; color: var(--accent); }
.elementor-element.elementor-element.faq-item.ouvert .elementor-element.elementor-element.faq-q::after { content: "–"; }
.elementor-element.elementor-element.faq-r { display: none; padding-bottom: 20px; }
.elementor-element.elementor-element.faq-r p { margin: 0; font-size: 14.5px; }
.elementor-element.elementor-element.faq-item.ouvert .elementor-element.elementor-element.faq-r { display: block; }
.elementor-editor-active .elementor-element.elementor-element.faq-r { display: block; }
/* Étiquettes du radar et villes : ancres de taille nulle, que l'éditeur prendrait pour des widgets vides */
.elementor-editor-active .elementor-element.elementor-element.radar-noeud, .elementor-editor-active .elementor-element.elementor-element.ville { width: 1px; height: 1px; }

/* ------------------------------------------------------------------
   CONTACT + formulaire Elementor Pro
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.contact { padding: 130px 0; }
.elementor-element.elementor-element.contact-grille { display: grid; grid-template-columns: .9fr 1.1fr; gap: 70px; align-items: start; }
.elementor-element.elementor-element.coordonnees ul { list-style: none; padding: 0; margin: 34px 0 0; display: grid; gap: 18px; }
.elementor-element.elementor-element.coordonnees li { display: grid; gap: 2px; font-weight: 600; font-size: 15px; }
.elementor-element.elementor-element.coordonnees strong { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--accent-vif); }
body .elementor-element.elementor-element.formulaire { padding: 34px; border-radius: var(--rayon); background: rgba(14,16,16,.85); border: 1px solid var(--ligne); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
body .elementor-element.elementor-element.formulaire .elementor-form-fields-wrapper { margin: 0 -7px; row-gap: 16px; }
body .elementor-element.elementor-element.formulaire .elementor-field-group { padding: 0 7px; margin-bottom: 0; }
body .elementor-element.elementor-element.formulaire .elementor-field-label { font-size: 12.5px; font-weight: 600; color: rgba(255,255,255,.75); margin-bottom: 8px; padding: 0; }
/* Elementor imprime pour ce widget un fond blanc par défaut en (0,6,0) dans post-ID.css :
   le sélecteur ci-dessous (0,7,1) le neutralise, sinon le texte saisi est blanc sur blanc */
body .elementor-element.elementor-element.formulaire .elementor-field-group .elementor-field-textual.elementor-field:not(.elementor-select-wrapper) { background-color: rgba(255,255,255,.04); color: #fff; }
body .elementor-element.elementor-element.formulaire .elementor-field-textual { font-family: inherit; font-size: 14px; line-height: normal; color: #fff; background: rgba(255,255,255,.04); border: 1px solid var(--ligne); border-radius: 8px; padding: 13px 14px; min-height: 0; }
body .elementor-element.elementor-element.formulaire .elementor-field-textual:focus { border-color: var(--accent-vif); box-shadow: none; outline: none; }
body .elementor-element.elementor-element.formulaire .elementor-field-textual::placeholder { color: rgba(255,255,255,.3); }
body .elementor-element.elementor-element.formulaire .elementor-field-subgroup { display: flex; flex-wrap: wrap; gap: 8px; }
body .elementor-element.elementor-element.formulaire .elementor-field-option { margin: 0; }
body .elementor-element.elementor-element.formulaire .elementor-field-option input { position: absolute; opacity: 0; pointer-events: none; }
body .elementor-element.elementor-element.formulaire .elementor-field-option label { display: inline-block; padding: 9px 16px; border-radius: 999px; border: 1px solid var(--ligne); font-size: 13px; font-weight: 500; color: #fff; cursor: pointer; }
body .elementor-element.elementor-element.formulaire .elementor-field-option input:checked + label { background: var(--accent); border-color: var(--accent); }
body .elementor-element.elementor-element.formulaire .elementor-field-type-submit .elementor-button { width: 100%; display: flex; justify-content: center; padding: 14px 26px; line-height: normal; border: 1px solid transparent; border-radius: 999px; font-family: inherit; font-weight: 600; font-size: 14px; background: var(--accent); color: #fff; box-shadow: 0 10px 30px -10px rgba(19,168,168,.7); }
body .elementor-element.elementor-element.formulaire .elementor-field-type-submit .elementor-button:hover { background: var(--accent-vif); }
body .elementor-element.elementor-element.formulaire .elementor-message { font-size: 14px; margin-top: 12px; }
body .elementor-element.elementor-element.formulaire .elementor-message-success { color: var(--accent-clair); }
body .elementor-element.elementor-element.formulaire .elementor-message-danger, body .elementor-element.elementor-element.formulaire .elementor-error .elementor-field-textual { color: #ff8a80; border-color: #ff8a80; }

/* ------------------------------------------------------------------
   CTA FINAL
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.cta-final { padding: 150px 0 170px; border-top: 1px solid var(--ligne); }
.elementor-element.elementor-element.cta-titre { font-size: clamp(36px, 5vw, 66px); font-weight: 800; letter-spacing: -.035em; line-height: 1.04; margin-bottom: 36px; }
.elementor-element.elementor-element.cta-titre .elementor-heading-title { max-width: 820px; }

/* ------------------------------------------------------------------
   PAGES INTERNES
   ------------------------------------------------------------------ */
.elementor-element.elementor-element.hero-interne { padding: 170px 0 110px; }
.elementor-element.elementor-element.ariane { margin-bottom: 40px; }
.elementor-element.elementor-element.ariane p { font-size: 12.5px; color: rgba(255,255,255,.5) !important; margin: 0; }
.elementor-element.elementor-element.ariane a:hover { color: #fff; }
.elementor-element.elementor-element.hero-interne-texte { max-width: 820px; }
.elementor-element.elementor-element.hero-interne-titre { font-size: clamp(38px, 5vw, 70px); font-weight: 800; letter-spacing: -.035em; line-height: 1.03; margin-bottom: 24px; }
.elementor-element.elementor-element.pastilles { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; }
.elementor-element.elementor-element.pastille-lien .elementor-button { padding: 10px 18px; border-radius: 999px; border: 1px solid rgba(255,255,255,.16); background: none; font-family: inherit; font-size: 13.5px; font-weight: 500; line-height: 1.6; color: #fff; transition: border-color .2s, background .2s; }
.elementor-element.elementor-element.pastille-lien .elementor-button:hover { border-color: var(--accent-vif); background: rgba(19,168,168,.12); color: #fff; }

.elementor-element.elementor-element.service-detail { padding: 110px 0; border-top: 1px solid var(--ligne); scroll-margin-top: 20px; }
.elementor-element.elementor-element.service-detail-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 70px; align-items: center; }
.elementor-element.elementor-element.service-detail.inverse .elementor-element.elementor-element.service-detail-media { order: 2; }
.elementor-element.elementor-element.service-detail-media { position: relative; }
.elementor-element.elementor-element.service-detail-media img { width: 100%; aspect-ratio: 4/4.4; object-fit: cover; border-radius: 20px; filter: saturate(.85) brightness(.9); }
.elementor-element.elementor-element.service-detail-media::after { position: absolute; right: -22px; bottom: -26px; font-size: 120px; font-weight: 800; letter-spacing: -.05em; line-height: 1; color: transparent; -webkit-text-stroke: 1px rgba(19,168,168,.6); }
.elementor-element.elementor-element.service-detail.inverse .elementor-element.elementor-element.service-detail-media::after { right: auto; left: -22px; }
.elementor-element.elementor-element.sd1 .elementor-element.elementor-element.service-detail-media::after { content: "01"; } .elementor-element.elementor-element.sd2 .elementor-element.elementor-element.service-detail-media::after { content: "02"; }
.elementor-element.elementor-element.sd3 .elementor-element.elementor-element.service-detail-media::after { content: "03"; } .elementor-element.elementor-element.sd4 .elementor-element.elementor-element.service-detail-media::after { content: "04"; }
.elementor-element.elementor-element.service-detail-texte .elementor-element.elementor-element.puces ul { margin: 22px 0 34px; }

.elementor-element.elementor-element.histoire { padding: 120px 0; }
.elementor-element.elementor-element.histoire-grille { display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; }
.elementor-element.elementor-element.histoire-visuels { position: relative; min-height: 560px; }
.elementor-element.elementor-element.histoire-img-a, .elementor-element.elementor-element.histoire-img-b { position: absolute; border-radius: 18px; overflow: hidden; }
.elementor-element.elementor-element.histoire-img-a img, .elementor-element.elementor-element.histoire-img-b img { width: 100%; height: 100% !important; object-fit: cover; filter: saturate(.85); }
.elementor-element.elementor-element.histoire-img-a { left: 0; top: 0; width: 72%; height: 78%; }
.elementor-element.elementor-element.histoire-img-b { right: 0; bottom: 0; width: 50%; height: 52%; border: 6px solid #000; }
.elementor-element.elementor-element.histoire-badge { position: absolute; left: 6%; bottom: 4%; width: 240px; padding: 20px 22px; border-radius: var(--rayon-petit); background: rgba(12,14,14,.9); border: 1px solid var(--ligne); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); box-shadow: 0 30px 60px -20px rgba(0,0,0,.9); }
.elementor-element.elementor-element.histoire-badge p { margin: 0; font-size: 13px; }
.elementor-element.elementor-element.histoire-badge strong { display: block; width: max-content; margin-bottom: 8px; font-size: 11px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--accent-vif); background: rgba(19,168,168,.12); border: 1px solid rgba(19,168,168,.35); padding: 4px 10px; border-radius: 999px; }
.elementor-element.elementor-element.mission { padding: 130px 0; }
.elementor-element.elementor-element.mission .elementor-element.elementor-element.titre-section .elementor-heading-title { max-width: 900px; }
.elementor-element.elementor-element.chiffres { display: grid; grid-template-columns: repeat(4, 1fr); margin-top: 60px; border-top: 1px solid var(--ligne); }
.elementor-element.elementor-element.chiffre { padding: 34px 20px 0; border-left: 1px solid var(--ligne); }
.elementor-element.elementor-element.chiffre:first-child { border-left: 0; }
.elementor-element.elementor-element.chiffre p { font-size: 13.5px; line-height: 24px; margin: 0; } /* hauteur de ligne du corps, comme le <span> de la maquette */
.elementor-element.elementor-element.chiffre strong { display: block; font-size: clamp(38px, 4.4vw, 60px); font-weight: 800; letter-spacing: -.04em; line-height: 1; background: linear-gradient(90deg, #fff, #5fd0cf); -webkit-background-clip: text; background-clip: text; color: transparent; }

.elementor-element.elementor-element.canaux { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 10px; }
.elementor-element.elementor-element.canal { display: grid; gap: 4px; padding: 18px 20px; border-radius: 14px; background: rgba(255,255,255,.04); border: 1px solid var(--ligne); font-weight: 600; font-size: 14.5px; transition: border-color .2s, transform .3s; }
.elementor-element.elementor-element.canal:hover { border-color: rgba(19,168,168,.5); transform: translateY(-2px); }
.elementor-element.elementor-element.canal-label p { margin: 0; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--accent-vif) !important; }
.elementor-element.elementor-element.canal-valeur p { margin: 0; color: #fff !important; }
.elementor-element.elementor-element.contact-page { border-top: 1px solid var(--ligne); }
.elementor-element.elementor-element.infos-pratiques { padding: 90px 0 60px; }
.elementor-element.elementor-element.infos-pratiques .elementor-element.elementor-element.grille-cartes { margin-bottom: 0; }
.elementor-element.elementor-element.infos-pratiques .elementor-element.elementor-element.carte-titre { color: var(--accent); }

/* ------------------------------------------------------------------
   BLOG — gabarits PHP du thème (home.php, archive.php, single.php)
   Pas d'Elementor ici : sélecteurs simples.
   ------------------------------------------------------------------ */
.ts-section { position: relative; overflow: hidden; }
.ts-enveloppe { width: 100%; max-width: var(--largeur); margin: 0 auto; padding: 0 32px; position: relative; z-index: 2; }
.ts-hero { padding: 170px 0 110px; background: #000; }
.ts-hero::before { content: ""; position: absolute; width: 900px; height: 900px; right: -260px; top: -280px; border-radius: 50%; filter: blur(10px); background: radial-gradient(circle, rgba(19,168,168,.42) 0%, rgba(11,132,132,.16) 35%, transparent 68%); }
.ts-ariane { font-size: 12.5px; color: rgba(255,255,255,.5); margin-bottom: 40px; }
.ts-ariane a:hover { color: #fff; }
.ts-surtitre { display: inline-flex; align-items: center; gap: 10px; font-size: 12px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--accent-vif); margin-bottom: 18px; }
.ts-surtitre::before { content: ""; width: 22px; height: 2px; background: var(--or); }
.ts-titre { font-size: clamp(38px, 5vw, 70px); font-weight: 800; letter-spacing: -.035em; line-height: 1.03; margin-bottom: 24px; max-width: 900px; }
.ts-titre em { font-style: normal; background: linear-gradient(90deg, #0b8484, #13a8a8 45%, #5fd0cf); -webkit-background-clip: text; background-clip: text; color: transparent; }
.ts-intro { font-size: 17px; max-width: 620px; color: var(--texte-sombre); }
.ts-liste { padding: 100px 0 120px; background: #fff; color: #111; }
.ts-filtres { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 36px; }
.ts-filtres a { font-size: 13.5px; font-weight: 500; padding: 10px 18px; border-radius: 999px; border: 1px solid var(--clair-ligne); color: #222; transition: all .2s; }
.ts-filtres a:hover { border-color: var(--accent); }
.ts-filtres a.actif { background: #0a0b0b; border-color: #0a0b0b; color: #fff; }
.ts-une { display: grid; grid-template-columns: 1.2fr 1fr; gap: 50px; align-items: center; padding-bottom: 70px; margin-bottom: 50px; border-bottom: 1px solid var(--clair-ligne); }
.ts-une figure, .ts-carte figure { border-radius: 20px; overflow: hidden; aspect-ratio: 16/10; background: #eef0f0; }
.ts-une img, .ts-carte img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s cubic-bezier(.16,1,.3,1); }
.ts-une h2 { font-size: clamp(26px, 2.8vw, 36px); margin: 14px 0 16px; }
.ts-une p { font-size: 16px; color: var(--texte-clair); margin-bottom: 28px; }
.ts-meta { display: flex; gap: 16px; align-items: center; font-size: 12.5px; color: #7a7b7c; }
.ts-meta .ts-cat { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--accent); }
.ts-grille { display: grid; grid-template-columns: repeat(3, 1fr); gap: 34px 26px; }
.ts-carte { transition: transform .4s cubic-bezier(.16,1,.3,1); }
.ts-carte:hover { transform: translateY(-3px); }
.ts-carte:hover img { transform: scale(1.05); }
.ts-carte figure { border-radius: var(--rayon); margin-bottom: 18px; }
.ts-carte h3 { font-size: 18px; margin: 10px 0; }
.ts-carte p { font-size: 14px; color: var(--texte-clair); margin-bottom: 16px; }
.ts-lien { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: 14px; color: #111; border-bottom: 1px solid #cfd1d2; padding-bottom: 3px; }
.ts-lien::after { content: "→"; color: var(--accent); }
.ts-bouton { display: inline-flex; align-items: center; justify-content: center; padding: 14px 26px; border-radius: 999px; font-weight: 600; font-size: 14px; background: var(--accent); color: #fff; box-shadow: 0 10px 30px -10px rgba(19,168,168,.7); transition: background .2s; }
.ts-bouton:hover { background: var(--accent-vif); }
.ts-pagination { margin-top: 60px; display: flex; gap: 8px; justify-content: center; }
.ts-pagination .page-numbers { min-width: 42px; height: 42px; padding: 0 12px; display: grid; place-items: center; border-radius: 999px; border: 1px solid var(--clair-ligne); font-weight: 600; font-size: 14px; color: #222; }
.ts-pagination .current { background: #0a0b0b; color: #fff; border-color: #0a0b0b; }
.ts-article { padding: 90px 0 110px; background: #fff; color: #222; }
.ts-article .ts-enveloppe { max-width: 820px; }
.ts-article-image { border-radius: 20px; overflow: hidden; margin: -160px 0 60px; position: relative; z-index: 3; box-shadow: 0 40px 80px -40px rgba(0,0,0,.6); }
.ts-contenu { font-size: 17px; line-height: 1.75; }
.ts-contenu h2 { font-size: 30px; margin: 2em 0 .6em; color: #111; }
.ts-contenu h3 { font-size: 22px; margin: 1.6em 0 .5em; color: #111; }
.ts-contenu a { color: var(--accent); text-decoration: underline; text-underline-offset: 3px; }
.ts-contenu ul, .ts-contenu ol { padding-left: 1.3em; margin: 0 0 1.2em; }
.ts-contenu li { margin-bottom: .4em; }
.ts-contenu img { border-radius: 14px; margin: 2em 0; }
.ts-contenu blockquote { margin: 2em 0; padding: 4px 0 4px 24px; border-left: 3px solid var(--accent); font-size: 19px; color: #111; }
.ts-cta { padding: 130px 0 150px; background: #000; border-top: 1px solid var(--ligne); }
.ts-cta::before { content: ""; position: absolute; width: 1300px; height: 700px; left: 50%; bottom: -380px; transform: translateX(-50%); border-radius: 50%; filter: blur(10px); background: radial-gradient(ellipse, rgba(19,168,168,.6) 0%, rgba(11,132,132,.22) 38%, transparent 68%); }
.ts-cta h2 { font-size: clamp(34px, 4.6vw, 60px); font-weight: 800; letter-spacing: -.035em; line-height: 1.04; margin-bottom: 36px; }
.elementor-element.elementor-element.cta-titre .elementor-heading-title { max-width: 820px; }
.ts-cta h2 em { font-style: normal; color: var(--accent-vif); }

/* ------------------------------------------------------------------
   ANIMATIONS GLOBALES : intro, lueur, entrées, révélations
   (désactivées dans l'éditeur : html.anime n'y est jamais posé)
   ------------------------------------------------------------------ */
.ts-intro-voile { position: fixed; inset: 0; z-index: 100; background: #000; display: grid; place-items: center; animation: intro-voile .6s ease 1.3s forwards; }
.ts-intro-voile span { background: #fff; border-radius: 999px; padding: 8px 20px 8px 12px; animation: intro-logo .8s cubic-bezier(.16,1,.3,1) both; }
.ts-intro-voile img { height: 40px; width: auto; }
.ts-intro-voile i { position: absolute; left: 50%; top: calc(50% + 50px); width: 180px; height: 1px; background: linear-gradient(90deg, transparent, var(--accent-vif), transparent); transform: translateX(-50%) scaleX(0); animation: intro-ligne 1s cubic-bezier(.16,1,.3,1) .25s forwards; }
html.sans-intro .ts-intro-voile, .elementor-editor-active .ts-intro-voile { display: none; }
@keyframes intro-logo { from { opacity: 0; filter: blur(8px); transform: translateY(10px) scale(.96); } to { opacity: 1; filter: none; transform: none; } }
@keyframes intro-ligne { 40% { opacity: 1; } to { transform: translateX(-50%) scaleX(1); opacity: .9; } }
@keyframes intro-voile { to { opacity: 0; visibility: hidden; } }
.ts-lueur { position: fixed; inset: 0; width: 100%; height: 100%; z-index: 15; pointer-events: none; mix-blend-mode: screen; }

html.anime .elementor-element.elementor-element.hero-texte > *, html.anime .elementor-element.elementor-element.hero-interne-texte > * { opacity: 0; transform: translateY(24px); animation: monte .9s cubic-bezier(.16,1,.3,1) forwards; }
html.anime .elementor-element.elementor-element.hero-texte > :nth-child(1), html.anime .elementor-element.elementor-element.hero-interne-texte > :nth-child(1) { animation-delay: 1.35s; }
html.anime .elementor-element.elementor-element.hero-texte > :nth-child(2), html.anime .elementor-element.elementor-element.hero-interne-texte > :nth-child(2) { animation-delay: 1.45s; }
html.anime .elementor-element.elementor-element.hero-texte > :nth-child(3), html.anime .elementor-element.elementor-element.hero-interne-texte > :nth-child(3) { animation-delay: 1.55s; }
html.anime .elementor-element.elementor-element.hero-texte > :nth-child(4), html.anime .elementor-element.elementor-element.hero-interne-texte > :nth-child(4) { animation-delay: 1.65s; }
html.anime .elementor-element.elementor-element.hero-texte > :nth-child(5) { animation-delay: 1.75s; }
html.anime .elementor-element.elementor-element.radar { opacity: 0; animation: apparait 1.4s ease 1.3s forwards; }
html.anime.sans-intro .elementor-element.elementor-element.hero-texte > *, html.anime.sans-intro .elementor-element.elementor-element.hero-interne-texte > *, html.anime.sans-intro .elementor-element.elementor-element.radar { animation-delay: .1s; }
@keyframes monte { to { opacity: 1; transform: none; } }
@keyframes apparait { to { opacity: 1; } }

html.anime section.revele > .elementor-element.elementor-element.enveloppe > *, html.anime section.revele [class*="grille"] > .elementor-element.elementor-element { opacity: 0; transform: translateY(28px); transition: opacity .8s cubic-bezier(.16,1,.3,1), transform .9s cubic-bezier(.16,1,.3,1); }
html.anime section.revele.vu > .elementor-element.elementor-element.enveloppe > *, html.anime section.revele.vu [class*="grille"] > .elementor-element.elementor-element { opacity: 1; transform: none; }
html.anime section.revele.vu > .elementor-element.elementor-element.enveloppe > :nth-child(2), html.anime section.revele.vu [class*="grille"] > :nth-child(2) { transition-delay: 80ms; }
html.anime section.revele.vu > .elementor-element.elementor-element.enveloppe > :nth-child(3), html.anime section.revele.vu [class*="grille"] > :nth-child(3) { transition-delay: 160ms; }
html.anime section.revele.vu > .elementor-element.elementor-element.enveloppe > :nth-child(n+4), html.anime section.revele.vu [class*="grille"] > :nth-child(n+4) { transition-delay: 240ms; }
html.anime section.revele.vu [class*="grille"] > :nth-child(n+5) { transition-delay: 320ms; }
html.anime .elementor-element.elementor-element.socle > .elementor-element.elementor-element.enveloppe > *, html.anime .elementor-element.elementor-element.socle [class*="grille"] > .elementor-element.elementor-element { transform: none !important; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .ts-intro-voile { display: none; }
}

/* ------------------------------------------------------------------
   RESPONSIVE
   ------------------------------------------------------------------ */
@media (max-width: 1080px) {
  .elementor-element.elementor-element.hero-grille, .elementor-element.elementor-element.socle-grille, .elementor-element.elementor-element.decider-grille, .elementor-element.elementor-element.diagnostic-grille, .elementor-element.elementor-element.contact-grille, .elementor-element.elementor-element.avis-grille,
  .elementor-element.elementor-element.service-detail-grille, .elementor-element.elementor-element.histoire-grille { grid-template-columns: 1fr; }
  .elementor-element.elementor-element.radar { justify-self: center; max-width: 480px; margin: 30px auto 0; }
  .elementor-element.elementor-element.pile-tete, .elementor-element.elementor-element.avis-gauche { position: static; }
  .elementor-element.elementor-element.grille-methode { grid-template-columns: repeat(2, 1fr); }
  .elementor-element.elementor-element.pied-grille { grid-template-columns: 1fr 1fr; }
  .elementor-element.elementor-element.mur-avis { grid-template-columns: repeat(2, 1fr); }
  .elementor-element.elementor-element.mc3 { display: none; }
  .elementor-element.elementor-element.service-detail.inverse .elementor-element.elementor-element.service-detail-media { order: 0; }
  .elementor-element.elementor-element.service-detail-grille, .elementor-element.elementor-element.histoire-grille { gap: 50px; }
  .elementor-element.elementor-element.chiffres { grid-template-columns: repeat(2, 1fr); }
  .elementor-element.elementor-element.chiffre:nth-child(3) { border-left: 0; }
  .ts-une { grid-template-columns: 1fr; }
  .ts-grille { grid-template-columns: repeat(2, 1fr); }
}
/* En-tête : le widget Menu passe en panneau sous 1025 px (réglage dropdown « tablet ») */
@media (max-width: 1024px) {
  /* le bloc téléphone + bouton disparaît entièrement : vide, il prendrait la moitié de l'espace libre et centrerait le menu */
  .elementor-element.elementor-element.entete-actions { display: none; }
  .elementor-element.elementor-element.nav { flex: 0 0 auto; margin-left: auto; }
  .elementor-element.elementor-element.nav .elementor-nav-menu--dropdown { position: fixed !important; inset: 0 !important; width: auto !important; max-height: none !important; z-index: 30; margin: 0 !important; display: flex; flex-direction: column; justify-content: center; padding: 110px 28px 200px; background: radial-gradient(120% 60% at 80% 0%, rgba(19,168,168,.22), transparent 60%), rgba(0,0,0,.97); -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px); opacity: 0; visibility: hidden; transform: none !important; transition: opacity .35s ease, visibility 0s linear .35s; }
  .elementor-element.elementor-element.nav .elementor-menu-toggle.elementor-active + .elementor-nav-menu--dropdown { opacity: 1; visibility: visible; transition: opacity .35s ease; }
  .elementor-element.elementor-element.nav .elementor-nav-menu--dropdown .elementor-item { font-family: inherit; font-size: clamp(30px, 8vw, 44px); font-weight: 700; letter-spacing: -.03em; line-height: 1.3; color: rgba(255,255,255,.55); background: none !important; padding: 6px 0; }
  .elementor-element.elementor-element.nav .elementor-nav-menu--dropdown .elementor-item-active { color: #fff; }
  .elementor-element.elementor-element.nav .elementor-nav-menu--dropdown .elementor-item-active::after { content: ""; position: static; opacity: 1; transform: none; display: inline-block; width: 10px; height: 10px; margin-left: 14px; border-radius: 50%; background: var(--accent-vif); box-shadow: 0 0 14px 3px rgba(19,168,168,.7); }
  .elementor-element.elementor-element.entete-in:has(.elementor-menu-toggle.elementor-active) .elementor-element.elementor-element.nav-pied { display: flex; position: fixed; left: 28px; right: 28px; bottom: 60px; z-index: 31; flex-wrap: wrap; align-items: center; gap: 14px 22px; padding-top: 28px; border-top: 1px solid var(--ligne); }
  .elementor-element.elementor-element.nav-tels p { margin: 0; display: flex; gap: 22px; }
  .elementor-element.elementor-element.nav-tels a { font-size: 15px; font-weight: 600; color: rgba(255,255,255,.8); }
  body:has(.elementor-menu-toggle.elementor-active) { overflow: hidden; }
  body:has(.elementor-menu-toggle.elementor-active) .elementor-element.elementor-element.whatsapp { opacity: 0; pointer-events: none; }
  .elementor-element.elementor-element.logo-pastille { position: relative; z-index: 31; }
}
@media (max-width: 720px) {
  body { font-size: 14.5px; }
  .elementor-element.elementor-element.enveloppe, .elementor-element.elementor-element.entete-in, .ts-enveloppe { padding-left: 20px; padding-right: 20px; }
  .elementor-element.elementor-element.logo-pastille a { padding: 9px 16px 9px 13px; }
  .elementor-element.elementor-element.logo-pastille img { height: 28px; }
  body .elementor-element.elementor-element.hero { padding-top: 120px; min-height: 0; }
  .elementor-element.elementor-element.hero-preuves ul { gap: 20px; }
  .elementor-element.elementor-element.radar { width: calc(100% - 120px); margin: 30px auto 10px; }
  .elementor-element.elementor-element.radar-noeud p { font-size: 8.5px; letter-spacing: .08em; }
  .elementor-element.elementor-element.radar-noeud.droite p { left: 12px; } .elementor-element.elementor-element.radar-noeud.gauche p { right: 12px; }
  .elementor-element.elementor-element.probleme-in { margin-left: 0; padding: 0 20px; }
  .elementor-element.elementor-element.grille-services, .elementor-element.elementor-element.grille-cartes, .elementor-element.elementor-element.grille-articles, .elementor-element.elementor-element.local-colonnes, .elementor-element.elementor-element.commencer-tete, .elementor-element.elementor-element.secteurs-tete, .elementor-element.elementor-element.grille-2, .elementor-element.elementor-element.canaux { grid-template-columns: 1fr; }
  .elementor-element.elementor-element.commencer-tete, .elementor-element.elementor-element.secteurs-tete { gap: 16px; }
  .elementor-element.elementor-element.liste-tuiles ul, .elementor-element.elementor-element.quiz-options { grid-template-columns: 1fr; }
  body .elementor-element.elementor-element.formulaire .elementor-field-group { width: 100%; }
  .elementor-element.elementor-element.grille-methode { grid-template-columns: 1fr 1fr; gap: 14px; }
  .elementor-element.elementor-element.pile-carte { grid-template-columns: 1fr; top: calc(80px + var(--i) * 12px); min-height: 0; padding: 18px; }
  .elementor-element.elementor-element.pile-media { aspect-ratio: 16/9; order: -1; }
  .elementor-element.elementor-element.galerie { margin-right: -20px; padding-right: 20px; }
  .elementor-element.elementor-element.secteur { flex-basis: 70vw; }
  .elementor-element.elementor-element.ville p { font-size: 10px; left: 10px; } .elementor-element.elementor-element.v-thies p { font-size: 12px; }
  /* même cadrage que la maquette mobile : carte agrandie 1,5× et centrée */
  .elementor-element.elementor-element.local-visuel { aspect-ratio: 4/3; background-size: 150% 80%, auto; }
  .elementor-element.elementor-element.v-thies { left: 46.7%; top: 47.8%; } .elementor-element.elementor-element.v-dakar { left: 16.7%; top: 55.5%; } .elementor-element.elementor-element.v-mbour { left: 40%; top: 76.7%; }
  .elementor-element.elementor-element.v-kaolack { left: 81.7%; top: 76.7%; } .elementor-element.elementor-element.v-stlouis { left: 45%; top: 18.9%; } .elementor-element.elementor-element.v-touba { left: 78.3%; top: 45.5%; }
  .elementor-element.elementor-element.grille-marques { grid-template-columns: repeat(2, 1fr); }
  .elementor-element.elementor-element.mur-avis { grid-template-columns: 1fr; height: 520px; }
  .elementor-element.elementor-element.mc2 { display: none; }
  .elementor-element.elementor-element.quiz, body .elementor-element.elementor-element.formulaire { padding: 22px; }
  .elementor-element.elementor-element.pied-grille { grid-template-columns: 1fr; }
  .elementor-element.elementor-element.hero-interne { padding: 130px 0 80px; }
  .elementor-element.elementor-element.service-detail { padding: 80px 0; }
  .elementor-element.elementor-element.service-detail-media::after { font-size: 80px; right: 10px; bottom: -20px; }
  .elementor-element.elementor-element.service-detail.inverse .elementor-element.elementor-element.service-detail-media::after { left: auto; right: 10px; }
  .elementor-element.elementor-element.histoire-visuels { min-height: 420px; }
  .elementor-element.elementor-element.histoire-badge { left: 0; bottom: 0; width: 210px; }
  .elementor-element.elementor-element.chiffre { padding: 26px 12px 0; }
  .elementor-element.elementor-element.chiffre p { line-height: 23.2px; }
  .ts-grille { grid-template-columns: 1fr; }
  .elementor-element.elementor-element.cat p { line-height: 23.2px; }
  .ts-hero { padding: 130px 0 80px; }
  .ts-article-image { margin-top: -100px; }
}

/* ------------------------------------------------------------------
   REPLIS (Elementor Pro désactivé) : en-tête et pied minimaux
   ------------------------------------------------------------------ */
.ts-entete-repli { position: absolute; top: 0; left: 0; right: 0; z-index: 20; max-width: var(--largeur); margin: 0 auto; padding: 20px 32px; display: flex; align-items: center; gap: 36px; }
.ts-logo-repli { background: #fff; border-radius: 999px; padding: 6px 16px 6px 10px; }
.ts-logo-repli img { height: 40px; width: auto; }
.ts-menu-repli { display: flex; flex-wrap: wrap; gap: 24px; list-style: none; margin: 0; padding: 0; font-size: 14px; font-weight: 500; }
.ts-menu-repli a { color: rgba(255,255,255,.75); }
.ts-pied-repli { padding: 40px 32px; text-align: center; font-size: 13px; color: rgba(255,255,255,.5); border-top: 1px solid var(--ligne); }
.ts-retour { margin-top: 30px; }
