.elementor-kit-6{--e-global-color-primary:#006DB5;--e-global-color-secondary:#0D1520;--e-global-color-text:#232B34;--e-global-color-accent:#CF4415;--e-global-color-cvbleufonce:#005390;--e-global-color-cvnuit2:#16202D;--e-global-color-cvorangef:#B23810;--e-global-color-cvacier:#EDF1F5;--e-global-color-cvtole:#6E7E8D;--e-global-color-cvfilet:#D8DFE6;--e-global-color-cvfiletnuit:#2A3644;--e-global-color-cvblanc:#FFFFFF;--e-global-color-cvgristexte:#5B6874;--e-global-color-cvtextenuit:#C6D0DA;--e-global-color-cvbleuclair:#5CB3E8;--e-global-color-cvtexteclair:#DCE6EF;--e-global-color-cvfiletclair:#E4EAEF;--e-global-typography-primary-font-family:"Outfit";--e-global-typography-primary-font-weight:700;--e-global-typography-secondary-font-family:"Outfit";--e-global-typography-secondary-font-weight:700;--e-global-typography-text-font-family:"Open Sans";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Outfit";--e-global-typography-accent-font-weight:700;--e-global-typography-tpsh1-font-family:"Outfit";--e-global-typography-tpsh1-font-size:52px;--e-global-typography-tpsh1-font-weight:700;--e-global-typography-tpsh1-line-height:1em;--e-global-typography-tpsh1-letter-spacing:0em;--e-global-typography-tpsh2-font-family:"Outfit";--e-global-typography-tpsh2-font-size:42px;--e-global-typography-tpsh2-font-weight:700;--e-global-typography-tpsh2-line-height:1.2em;--e-global-typography-tpsh2-letter-spacing:0em;--e-global-typography-tpsh3-font-family:"Outfit";--e-global-typography-tpsh3-font-size:34px;--e-global-typography-tpsh3-font-weight:700;--e-global-typography-tpsh3-line-height:1.2em;--e-global-typography-tpsh3-letter-spacing:0em;--e-global-typography-tpsh4-font-family:"Outfit";--e-global-typography-tpsh4-font-size:24px;--e-global-typography-tpsh4-font-weight:700;--e-global-typography-tpsh4-line-height:1.2em;--e-global-typography-tpsh4-letter-spacing:0em;--e-global-typography-tpsh5-font-family:"Outfit";--e-global-typography-tpsh5-font-size:19px;--e-global-typography-tpsh5-font-weight:700;--e-global-typography-tpsh5-line-height:1.2em;--e-global-typography-tpsh5-letter-spacing:0em;--e-global-typography-tpsh6-font-family:"Outfit";--e-global-typography-tpsh6-font-size:16px;--e-global-typography-tpsh6-font-weight:700;--e-global-typography-tpsh6-line-height:1.2em;--e-global-typography-tpsh6-letter-spacing:0em;--e-global-typography-tpstexte-font-family:"Open Sans";--e-global-typography-tpstexte-font-size:17px;--e-global-typography-tpstexte-font-weight:400;--e-global-typography-tpstexte-line-height:1.7em;color:var( --e-global-color-text );font-family:var( --e-global-typography-tpstexte-font-family ), Sans-serif;font-size:var( --e-global-typography-tpstexte-font-size );font-weight:var( --e-global-typography-tpstexte-font-weight );line-height:var( --e-global-typography-tpstexte-line-height );letter-spacing:var( --e-global-typography-tpstexte-letter-spacing );word-spacing:var( --e-global-typography-tpstexte-word-spacing );}.elementor-kit-6 a{color:var( --e-global-color-primary );}.elementor-kit-6 a:hover{color:var( --e-global-color-cvbleufonce );}.elementor-kit-6 h1{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-tpsh1-font-family ), Sans-serif;font-size:var( --e-global-typography-tpsh1-font-size );font-weight:var( --e-global-typography-tpsh1-font-weight );line-height:var( --e-global-typography-tpsh1-line-height );letter-spacing:var( --e-global-typography-tpsh1-letter-spacing );word-spacing:var( --e-global-typography-tpsh1-word-spacing );}.elementor-kit-6 h2{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-tpsh2-font-family ), Sans-serif;font-size:var( --e-global-typography-tpsh2-font-size );font-weight:var( --e-global-typography-tpsh2-font-weight );line-height:var( --e-global-typography-tpsh2-line-height );letter-spacing:var( --e-global-typography-tpsh2-letter-spacing );word-spacing:var( --e-global-typography-tpsh2-word-spacing );}.elementor-kit-6 h3{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-tpsh3-font-family ), Sans-serif;font-size:var( --e-global-typography-tpsh3-font-size );font-weight:var( --e-global-typography-tpsh3-font-weight );line-height:var( --e-global-typography-tpsh3-line-height );letter-spacing:var( --e-global-typography-tpsh3-letter-spacing );word-spacing:var( --e-global-typography-tpsh3-word-spacing );}.elementor-kit-6 h4{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-tpsh4-font-family ), Sans-serif;font-size:var( --e-global-typography-tpsh4-font-size );font-weight:var( --e-global-typography-tpsh4-font-weight );line-height:var( --e-global-typography-tpsh4-line-height );letter-spacing:var( --e-global-typography-tpsh4-letter-spacing );word-spacing:var( --e-global-typography-tpsh4-word-spacing );}.elementor-kit-6 h5{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-tpsh5-font-family ), Sans-serif;font-size:var( --e-global-typography-tpsh5-font-size );font-weight:var( --e-global-typography-tpsh5-font-weight );line-height:var( --e-global-typography-tpsh5-line-height );letter-spacing:var( --e-global-typography-tpsh5-letter-spacing );word-spacing:var( --e-global-typography-tpsh5-word-spacing );}.elementor-kit-6 h6{color:var( --e-global-color-secondary );font-family:var( --e-global-typography-tpsh6-font-family ), Sans-serif;font-size:var( --e-global-typography-tpsh6-font-size );font-weight:var( --e-global-typography-tpsh6-font-weight );line-height:var( --e-global-typography-tpsh6-line-height );letter-spacing:var( --e-global-typography-tpsh6-letter-spacing );word-spacing:var( --e-global-typography-tpsh6-word-spacing );}.elementor-kit-6 button,.elementor-kit-6 input[type="button"],.elementor-kit-6 input[type="submit"],.elementor-kit-6 .elementor-button{font-family:"Outfit", Sans-serif;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:0em;color:var( --e-global-color-cvblanc );background-color:var( --e-global-color-accent );border-style:solid;border-width:1.5px 1.5px 1.5px 1.5px;border-color:rgba(0,0,0,0);border-radius:3px 3px 3px 3px;padding:15px 24px 15px 24px;}.elementor-kit-6 button:hover,.elementor-kit-6 button:focus,.elementor-kit-6 input[type="button"]:hover,.elementor-kit-6 input[type="button"]:focus,.elementor-kit-6 input[type="submit"]:hover,.elementor-kit-6 input[type="submit"]:focus,.elementor-kit-6 .elementor-button:hover,.elementor-kit-6 .elementor-button:focus{color:var( --e-global-color-cvblanc );background-color:var( --e-global-color-cvorangef );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1240px;}.e-con{--container-max-width:1240px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.elementor-kit-6 e-page-transition{background-color:#FFBC7D;}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1366px){.elementor-kit-6{font-size:var( --e-global-typography-tpstexte-font-size );line-height:var( --e-global-typography-tpstexte-line-height );letter-spacing:var( --e-global-typography-tpstexte-letter-spacing );word-spacing:var( --e-global-typography-tpstexte-word-spacing );}.elementor-kit-6 h1{font-size:var( --e-global-typography-tpsh1-font-size );line-height:var( --e-global-typography-tpsh1-line-height );letter-spacing:var( --e-global-typography-tpsh1-letter-spacing );word-spacing:var( --e-global-typography-tpsh1-word-spacing );}.elementor-kit-6 h2{font-size:var( --e-global-typography-tpsh2-font-size );line-height:var( --e-global-typography-tpsh2-line-height );letter-spacing:var( --e-global-typography-tpsh2-letter-spacing );word-spacing:var( --e-global-typography-tpsh2-word-spacing );}.elementor-kit-6 h3{font-size:var( --e-global-typography-tpsh3-font-size );line-height:var( --e-global-typography-tpsh3-line-height );letter-spacing:var( --e-global-typography-tpsh3-letter-spacing );word-spacing:var( --e-global-typography-tpsh3-word-spacing );}.elementor-kit-6 h4{font-size:var( --e-global-typography-tpsh4-font-size );line-height:var( --e-global-typography-tpsh4-line-height );letter-spacing:var( --e-global-typography-tpsh4-letter-spacing );word-spacing:var( --e-global-typography-tpsh4-word-spacing );}.elementor-kit-6 h5{font-size:var( --e-global-typography-tpsh5-font-size );line-height:var( --e-global-typography-tpsh5-line-height );letter-spacing:var( --e-global-typography-tpsh5-letter-spacing );word-spacing:var( --e-global-typography-tpsh5-word-spacing );}.elementor-kit-6 h6{font-size:var( --e-global-typography-tpsh6-font-size );line-height:var( --e-global-typography-tpsh6-line-height );letter-spacing:var( --e-global-typography-tpsh6-letter-spacing );word-spacing:var( --e-global-typography-tpsh6-word-spacing );}}@media(max-width:1024px){.elementor-kit-6{--e-global-typography-tpsh1-font-size:44px;--e-global-typography-tpsh2-font-size:36px;--e-global-typography-tpsh3-font-size:30px;--e-global-typography-tpsh4-font-size:22px;--e-global-typography-tpsh5-font-size:18px;--e-global-typography-tpsh6-font-size:16px;font-size:var( --e-global-typography-tpstexte-font-size );line-height:var( --e-global-typography-tpstexte-line-height );letter-spacing:var( --e-global-typography-tpstexte-letter-spacing );word-spacing:var( --e-global-typography-tpstexte-word-spacing );}.elementor-kit-6 h1{font-size:var( --e-global-typography-tpsh1-font-size );line-height:var( --e-global-typography-tpsh1-line-height );letter-spacing:var( --e-global-typography-tpsh1-letter-spacing );word-spacing:var( --e-global-typography-tpsh1-word-spacing );}.elementor-kit-6 h2{font-size:var( --e-global-typography-tpsh2-font-size );line-height:var( --e-global-typography-tpsh2-line-height );letter-spacing:var( --e-global-typography-tpsh2-letter-spacing );word-spacing:var( --e-global-typography-tpsh2-word-spacing );}.elementor-kit-6 h3{font-size:var( --e-global-typography-tpsh3-font-size );line-height:var( --e-global-typography-tpsh3-line-height );letter-spacing:var( --e-global-typography-tpsh3-letter-spacing );word-spacing:var( --e-global-typography-tpsh3-word-spacing );}.elementor-kit-6 h4{font-size:var( --e-global-typography-tpsh4-font-size );line-height:var( --e-global-typography-tpsh4-line-height );letter-spacing:var( --e-global-typography-tpsh4-letter-spacing );word-spacing:var( --e-global-typography-tpsh4-word-spacing );}.elementor-kit-6 h5{font-size:var( --e-global-typography-tpsh5-font-size );line-height:var( --e-global-typography-tpsh5-line-height );letter-spacing:var( --e-global-typography-tpsh5-letter-spacing );word-spacing:var( --e-global-typography-tpsh5-word-spacing );}.elementor-kit-6 h6{font-size:var( --e-global-typography-tpsh6-font-size );line-height:var( --e-global-typography-tpsh6-line-height );letter-spacing:var( --e-global-typography-tpsh6-letter-spacing );word-spacing:var( --e-global-typography-tpsh6-word-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:880px){.elementor-kit-6{--e-global-typography-tpsh1-font-size:40px;--e-global-typography-tpsh2-font-size:32px;--e-global-typography-tpsh3-font-size:28px;--e-global-typography-tpsh4-font-size:21px;--e-global-typography-tpsh5-font-size:18px;--e-global-typography-tpsh6-font-size:15px;}}@media(max-width:767px){.elementor-kit-6{--e-global-typography-tpsh1-font-size:32px;--e-global-typography-tpsh2-font-size:27px;--e-global-typography-tpsh3-font-size:24px;--e-global-typography-tpsh4-font-size:20px;--e-global-typography-tpsh5-font-size:17px;--e-global-typography-tpsh6-font-size:15px;font-size:var( --e-global-typography-tpstexte-font-size );line-height:var( --e-global-typography-tpstexte-line-height );letter-spacing:var( --e-global-typography-tpstexte-letter-spacing );word-spacing:var( --e-global-typography-tpstexte-word-spacing );}.elementor-kit-6 h1{font-size:var( --e-global-typography-tpsh1-font-size );line-height:var( --e-global-typography-tpsh1-line-height );letter-spacing:var( --e-global-typography-tpsh1-letter-spacing );word-spacing:var( --e-global-typography-tpsh1-word-spacing );}.elementor-kit-6 h2{font-size:var( --e-global-typography-tpsh2-font-size );line-height:var( --e-global-typography-tpsh2-line-height );letter-spacing:var( --e-global-typography-tpsh2-letter-spacing );word-spacing:var( --e-global-typography-tpsh2-word-spacing );}.elementor-kit-6 h3{font-size:var( --e-global-typography-tpsh3-font-size );line-height:var( --e-global-typography-tpsh3-line-height );letter-spacing:var( --e-global-typography-tpsh3-letter-spacing );word-spacing:var( --e-global-typography-tpsh3-word-spacing );}.elementor-kit-6 h4{font-size:var( --e-global-typography-tpsh4-font-size );line-height:var( --e-global-typography-tpsh4-line-height );letter-spacing:var( --e-global-typography-tpsh4-letter-spacing );word-spacing:var( --e-global-typography-tpsh4-word-spacing );}.elementor-kit-6 h5{font-size:var( --e-global-typography-tpsh5-font-size );line-height:var( --e-global-typography-tpsh5-line-height );letter-spacing:var( --e-global-typography-tpsh5-letter-spacing );word-spacing:var( --e-global-typography-tpsh5-word-spacing );}.elementor-kit-6 h6{font-size:var( --e-global-typography-tpsh6-font-size );line-height:var( --e-global-typography-tpsh6-line-height );letter-spacing:var( --e-global-typography-tpsh6-letter-spacing );word-spacing:var( --e-global-typography-tpsh6-word-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}@media(min-width:2400px){.elementor-kit-6{font-size:var( --e-global-typography-tpstexte-font-size );line-height:var( --e-global-typography-tpstexte-line-height );letter-spacing:var( --e-global-typography-tpstexte-letter-spacing );word-spacing:var( --e-global-typography-tpstexte-word-spacing );}.elementor-kit-6 h1{font-size:var( --e-global-typography-tpsh1-font-size );line-height:var( --e-global-typography-tpsh1-line-height );letter-spacing:var( --e-global-typography-tpsh1-letter-spacing );word-spacing:var( --e-global-typography-tpsh1-word-spacing );}.elementor-kit-6 h2{font-size:var( --e-global-typography-tpsh2-font-size );line-height:var( --e-global-typography-tpsh2-line-height );letter-spacing:var( --e-global-typography-tpsh2-letter-spacing );word-spacing:var( --e-global-typography-tpsh2-word-spacing );}.elementor-kit-6 h3{font-size:var( --e-global-typography-tpsh3-font-size );line-height:var( --e-global-typography-tpsh3-line-height );letter-spacing:var( --e-global-typography-tpsh3-letter-spacing );word-spacing:var( --e-global-typography-tpsh3-word-spacing );}.elementor-kit-6 h4{font-size:var( --e-global-typography-tpsh4-font-size );line-height:var( --e-global-typography-tpsh4-line-height );letter-spacing:var( --e-global-typography-tpsh4-letter-spacing );word-spacing:var( --e-global-typography-tpsh4-word-spacing );}.elementor-kit-6 h5{font-size:var( --e-global-typography-tpsh5-font-size );line-height:var( --e-global-typography-tpsh5-line-height );letter-spacing:var( --e-global-typography-tpsh5-letter-spacing );word-spacing:var( --e-global-typography-tpsh5-word-spacing );}.elementor-kit-6 h6{font-size:var( --e-global-typography-tpsh6-font-size );line-height:var( --e-global-typography-tpsh6-line-height );letter-spacing:var( --e-global-typography-tpsh6-letter-spacing );word-spacing:var( --e-global-typography-tpsh6-word-spacing );}}
/* Start custom CSS *//* =====================================================================
   TPS - CSS CENTRALISE DU SITE (Elementor > Parametres du site > CSS personnalise)
   Tout le CSS personnalise du site est ICI. Ne plus en mettre dans les pages ni
   dans les templates Elementor (header, footer, fiches...).
   Blocs balises (dans l'ordre de chargement d'origine) :
     - Socle (en tete, hors balises) : corniere animee, brouillons redactionnels
     - TPS-COMMUN    : composants communs accueil + pages interieures (doublons fusionnes)
     - TPS-INTERIEUR : pages interieures (body:not(.home)) + templates Realisations / Actualites
     - TPS-RELECTURE : mode relecture client (TEMPORAIRE : ce bloc + Code Snippet 9, a retirer apres validation)
     - TPS-ACCUEIL   : page d'accueil - ex-CSS de la page 12, confine sous :where(body.home)
                       (:where n'ajoute aucune specificite : rendu identique a l'origine)
     - TPS-HEADER    : header et mega-menu - ex-CSS du template 62
     - TPS-FOOTER    : footer - ex-CSS du template 63
   Typographie de base (corps, liens, H1-H6, boutons) : Parametres du site > Styles du theme, reliee aux
   typographies globales (Titre H1..H6, Texte courant, Boutons). Ne pas la redeclarer ici.
   Couleurs et polices : variables globales Elementor (Parametres du site > Couleurs / Typographie globales).
   Modifier une couleur globale met a jour tout le site. Exceptions volontaires : rgba() (transparence),
   bloc TPS-RELECTURE, couleurs rares non presentes dans la palette.
   ===================================================================== */
/* ==========================================================
   CORNIERE ANIMEE - le cadrage se trace a l'apparition
   Elle nait de son angle (9x9 = l'epaisseur exacte du logo, comme un coup
   de poincon) puis ses deux bras s'etendent jusqu'a 46px : le cadre se
   dessine. Le crochet bas-droite se pose apres -> le cadrage se referme.
   CSS pose dans le KIT = valable sur toutes les pages du site.
   ⚠ Les etats initiaux ne s'appliquent QUE si le JS tourne (html.tps-anim,
   pose par le script du footer). Sans JS -> cornieres visibles, rien ne casse.
   Le script s'abstient aussi si prefers-reduced-motion est demande.
   ========================================================== */
.tps-eyebrow .elementor-heading-title::before,
.tps-kicker .elementor-heading-title::before,
.tps-h2 .elementor-heading-title::after{transition:width 1.1s cubic-bezier(.25,.5,.35,1),height 1.1s cubic-bezier(.25,.5,.35,1),opacity .45s ease}
/* le crochet bas-droite se pose apres le haut-gauche : le cadre se referme */
.tps-h2 .elementor-heading-title::after{transition-delay:.34s}
/* etat initial : reduite a son angle, invisible */
html.tps-anim .tps-eyebrow:not(.tps-seen) .elementor-heading-title::before,
html.tps-anim .tps-kicker:not(.tps-seen) .elementor-heading-title::before,
html.tps-anim .tps-h2:not(.tps-seen) .elementor-heading-title::after{width:0;height:0;opacity:0}

/* ==== BROUILLON REDACTIONNEL - pages internes en relecture client (a retirer au design) ==== */
.tps-draft{max-width:1240px;margin:0 auto;padding:52px 22px 96px;color:var(--e-global-color-text)}
.tps-draft h1{font-size:42px;line-height:1.1;margin:0 0 22px}
.tps-draft h2{font-size:24px;margin:44px 0 14px;padding-top:18px;border-top:1px solid var(--e-global-color-cvfilet);color:var(--e-global-color-secondary)}
.tps-draft h3{font-size:19px;margin:26px 0 10px;color:var(--e-global-color-secondary)}
.tps-draft p{margin:0 0 16px;max-width:76ch;line-height:1.75}
.tps-draft ul,.tps-draft ol{margin:0 0 18px 22px;max-width:76ch}
.tps-draft li{margin-bottom:7px;line-height:1.7}
.tps-draft .tps-lede{font-size:20px;line-height:1.6;color:var(--e-global-color-secondary);border-left:3px solid var(--e-global-color-primary);padding-left:18px}
.tps-draft blockquote{margin:0 0 18px;padding:14px 18px;background:var(--e-global-color-cvacier);border-left:3px solid var(--e-global-color-cvtole);max-width:76ch}
.tps-draft blockquote p{margin:0}
.tps-draft .tps-tablewrap{overflow-x:auto;margin:0 0 22px}
.tps-draft table{border-collapse:collapse;width:100%;font-size:15px}
.tps-draft th,.tps-draft td{border:1px solid var(--e-global-color-cvfilet);padding:9px 12px;text-align:left;vertical-align:top}
.tps-draft th{background:var(--e-global-color-cvacier);font-weight:700}
.tps-draft code{font-family:'IBM Plex Mono',monospace;font-size:.92em;background:var(--e-global-color-cvacier);padding:1px 5px}
.tps-draft a{color:var(--e-global-color-primary)}
.tps-draft .tps-cta{display:inline-block;font-family:var(--e-global-typography-primary-font-family),sans-serif;font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:.04em;background:var(--e-global-color-cvacier);border:1px solid var(--e-global-color-cvfilet);color:var(--e-global-color-secondary);padding:6px 12px;margin:2px 5px 2px 0}
.tps-draft .tps-ctaline{margin-top:26px}
.tps-draft .tps-draftflag{background:var(--e-global-color-secondary);color:var(--e-global-color-cvtexteclair);font-size:14px;line-height:1.6;padding:14px 18px;margin:0 0 34px;max-width:none}
.tps-draft .tps-draftflag strong{color:var(--e-global-color-cvblanc)}
.tps-draft .tps-todo{background:#FFF6E8;border-left:3px solid #B4641E;padding:12px 16px;font-size:15px;color:#5A3A12;max-width:76ch}
.tps-draft .tps-check{display:inline-block;font-family:'IBM Plex Mono',monospace;font-size:11px;text-transform:uppercase;letter-spacing:.07em;background:#FFF0DA;color:#8A4B10;border:1px solid #E8C79A;padding:1px 6px;white-space:nowrap}
.tps-draft .tps-seonote{margin-top:58px;padding:14px 18px;border:1px dashed var(--e-global-color-cvfilet);background:#FAFCFE;color:var(--e-global-color-cvtole)}
.tps-draft .tps-seonote p{margin:0 0 6px;font-size:13px;max-width:none}
.tps-draft-top{padding-bottom:0}
@media(max-width:767px){.tps-draft{padding:32px 18px 64px}.tps-draft h1{font-size:30px}.tps-draft h2{font-size:21px}}
/* Realisations - provisoire, en attendant le design */
.tps-rea-field:not(:has(.tps-rea-val)){display:none}
.tps-rea-field:has(.tps-rea-val .elementor-heading-title:empty){display:none}
.tps-rea-field{min-width:180px}
.tps-rea-lab .elementor-heading-title{color:var(--e-global-color-cvgristexte)}
.tps-rea-card img{width:100%;object-fit:cover}

/* ==== TPS-COMMUN:START ==== */
/* Composants communs accueil + pages interieures (fusion des doublons, phase 2b).
   Chaque regle porte les deux formes de selecteur : chaque contexte garde sa specificite d'origine.
   Les variantes propres a un contexte restent dans TPS-ACCUEIL / TPS-INTERIEUR. */
body:not(.home) .tps-hero,body:where(.home) .tps-hero{position:relative;overflow:hidden}
body:not(.home) .tps-hero::before,body:where(.home) .tps-hero::before{z-index:1}
body:not(.home) .tps-h1 .elementor-heading-title,body:where(.home) .tps-h1 .elementor-heading-title{color:var(--e-global-color-cvblanc)!important;}
body:not(.home) .tps-kicker .elementor-heading-title,body:where(.home) .tps-kicker .elementor-heading-title{display:inline-block;position:relative;font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-size:11px!important;letter-spacing:.16em!important;text-transform:uppercase!important;margin-bottom:12px}
body:not(.home) .tps-eyebrow .elementor-heading-title,body:where(.home) .tps-eyebrow .elementor-heading-title{font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-size:11px!important;letter-spacing:.16em!important;text-transform:uppercase!important;margin-bottom:12px}
body:not(.home) .tps-h2 .elementor-heading-title,body:where(.home) .tps-h2 .elementor-heading-title{display:inline-block;position:relative;color:var(--e-global-color-secondary)!important;max-width:24ch;margin-bottom:12px}
body:not(.home) .tps-secdesc,body:where(.home) .tps-secdesc{color:var(--e-global-color-cvgristexte)!important;font-size:16px!important;line-height:1.6!important;max-width:62ch}
body:not(.home) .tps-secdesc p,body:where(.home) .tps-secdesc p{color:var(--e-global-color-cvgristexte)!important;font-size:16px!important;line-height:1.6!important;max-width:62ch}
body:not(.home) .tps-eyebrow .elementor-heading-title::before,body:where(.home) .tps-eyebrow .elementor-heading-title::before{content:"";position:absolute;left:-18px;top:-16px;width:var(--tps-corn-l);height:var(--tps-corn-l);border-top:var(--tps-corn-ep) solid var(--tps-corn-c);border-left:var(--tps-corn-ep) solid var(--tps-corn-c);pointer-events:none}
body:not(.home) .tps-kicker .elementor-heading-title::before,body:where(.home) .tps-kicker .elementor-heading-title::before{content:"";position:absolute;left:-18px;top:-16px;width:var(--tps-corn-l);height:var(--tps-corn-l);border-top:var(--tps-corn-ep) solid var(--tps-corn-c);border-left:var(--tps-corn-ep) solid var(--tps-corn-c);pointer-events:none}
body:not(.home) .tps-h2 .elementor-heading-title::after,body:where(.home) .tps-h2 .elementor-heading-title::after{content:"";position:absolute;right:-24px;bottom:-20px;width:var(--tps-corn-l);height:var(--tps-corn-l);border-bottom:var(--tps-corn-ep) solid var(--tps-corn-c);border-right:var(--tps-corn-ep) solid var(--tps-corn-c);pointer-events:none}
body:not(.home) .tps-perf-dot,body:where(.home) .tps-perf-dot{--tps-perf-dot:max(1.1px,0.030em);--tps-perf-feather:max(1.4px,0.038em);--tps-perf-grid:max(3.2px,0.085em)}
body:not(.home) .tps-h2 .tps-perf-cover,body:where(.home) .tps-h2 .tps-perf-cover{color:var(--e-global-color-secondary);-webkit-text-fill-color:var(--e-global-color-secondary)}
body:not(.home) .tps-h1 .tps-perf-bit,body:where(.home) .tps-h1 .tps-perf-bit{width:4px;box-shadow:0 0 11px 1px rgba(255,255,255,.78)}
body:not(.home) .tps-ctah .tps-perf-bit,body:where(.home) .tps-ctah .tps-perf-bit{top:4%;height:92%}
body:not(.home) .tps-h1 .tps-perf-wrap,body:where(.home) .tps-h1 .tps-perf-wrap{margin:0 10px}
body:not(.home) .tps-h1 .tps-perf-sq,body:where(.home) .tps-h1 .tps-perf-sq{left:-8px;right:-8px;clip-path:inset(0% 100% 0% 0%)}
body:not(.home) .tps-btn-ghost .elementor-button,body:where(.home) .tps-btn-ghost .elementor-button{background:transparent!important;color:var(--e-global-color-cvblanc)!important;border:1.5px solid rgba(255,255,255,.55)!important}
body:not(.home) .tps-btn-ghost .elementor-button:hover,body:where(.home) .tps-btn-ghost .elementor-button:hover{background:rgba(255,255,255,.12)!important;border-color:var(--e-global-color-cvblanc)!important}
body:not(.home) .tps-btn-line .elementor-button,body:where(.home) .tps-btn-line .elementor-button{background:transparent!important;color:var(--e-global-color-primary)!important;border:1.5px solid var(--e-global-color-primary)!important;padding:12px 22px!important}
body:not(.home) .tps-btn-line .elementor-button:hover,body:where(.home) .tps-btn-line .elementor-button:hover{background:var(--e-global-color-primary)!important;color:var(--e-global-color-cvblanc)!important}
body:not(.home) .tps-pluscol,body:where(.home) .tps-pluscol{border-top:2px solid var(--e-global-color-cvfilet);transition:border-color .2s}
body:not(.home) .tps-pluscol:hover,body:where(.home) .tps-pluscol:hover{border-top-color:var(--e-global-color-primary)}
body:not(.home) .tps-plus .elementor-icon-box-icon,body:where(.home) .tps-plus .elementor-icon-box-icon{margin-bottom:14px!important}
body:not(.home) .tps-plus .elementor-icon,body:where(.home) .tps-plus .elementor-icon{color:var(--e-global-color-primary)!important;font-size:28px!important}
body:not(.home) .tps-plus .elementor-icon-box-title,body:where(.home) .tps-plus .elementor-icon-box-title{font-size:17px!important;color:var(--e-global-color-secondary)!important;margin-bottom:8px!important}
body:not(.home) .tps-plus .elementor-icon-box-description,body:where(.home) .tps-plus .elementor-icon-box-description{font-size:14.5px!important;line-height:1.55!important;color:var(--e-global-color-cvgristexte)!important}
body:not(.home) .tps-specline,body:where(.home) .tps-specline{font-size:15px!important;color:var(--e-global-color-text)!important;line-height:1.6!important;border-left:3px solid var(--e-global-color-primary);padding-left:16px}
body:not(.home) .tps-specline p,body:where(.home) .tps-specline p{font-size:15px!important;color:var(--e-global-color-text)!important;line-height:1.6!important}
body:not(.home) .tps-stepn .elementor-heading-title,body:where(.home) .tps-stepn .elementor-heading-title{font-family:var(--e-global-typography-text-font-family),sans-serif!important;letter-spacing:.14em!important}


body:not(.home) .tps-faqleft,body:where(.home) .tps-faqleft{flex:1 1 54%!important;display:flex;flex-direction:column}
body:not(.home) .tps-faqimg,body:where(.home) .tps-faqimg{flex:1 1 44%!important;border-radius:4px;overflow:hidden;background-size:cover!important;background-position:center!important;position:relative;isolation:isolate}
body:not(.home) .tps-faqimg::before,body:where(.home) .tps-faqimg::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(135deg,rgba(0,109,181,.22) 0%,rgba(13,21,32,.42) 100%)}
@media(max-width:880px){body:not(.home) .tps-faqleft,body:where(.home) .tps-faqleft{flex-basis:auto!important;width:100%!important}}
@media(max-width:880px){body:not(.home) .tps-faqimg,body:where(.home) .tps-faqimg{flex-basis:auto!important;max-width:none!important;width:100%!important}}
body:not(.home) .tps-faqwrap,body:where(.home) .tps-faqwrap{width:100%!important;max-width:820px!important}
body:not(.home) .tps-faq .elementor-accordion-item,body:where(.home) .tps-faq .elementor-accordion-item{border:0!important;border-bottom:1px solid var(--e-global-color-cvfilet)!important}
body:not(.home) .tps-faq .elementor-tab-title,body:where(.home) .tps-faq .elementor-tab-title{background:transparent!important;padding:20px 4px!important;font-family:var(--e-global-typography-primary-font-family),sans-serif!important;font-size:16.5px!important;}
body:not(.home) .tps-faq .elementor-tab-title a,body:where(.home) .tps-faq .elementor-tab-title a{color:var(--e-global-color-secondary)!important}
body:not(.home) .tps-faq .elementor-tab-title:hover a,body:where(.home) .tps-faq .elementor-tab-title:hover a{color:var(--e-global-color-primary)!important}
body:not(.home) .tps-faq .elementor-tab-content,body:where(.home) .tps-faq .elementor-tab-content{background:transparent!important;border:0!important;padding:0 4px 22px!important;font-size:15px!important;line-height:1.6!important;color:var(--e-global-color-cvgristexte)!important}
body:not(.home) .tps-faq .elementor-accordion-icon,body:where(.home) .tps-faq .elementor-accordion-icon{color:var(--e-global-color-primary)!important}
body:not(.home) .tps-ctafinal,body:where(.home) .tps-ctafinal{position:relative;overflow:hidden}
body:not(.home) .tps-ctah .elementor-heading-title,body:where(.home) .tps-ctah .elementor-heading-title{color:var(--e-global-color-cvblanc)!important;text-align:center;margin-bottom:12px}
body:not(.home) .tps-ctad,body:where(.home) .tps-ctad{color:rgba(255,255,255,.9)!important;font-size:16.5px!important;line-height:1.6!important;text-align:center}
body:not(.home) .tps-ctad p,body:where(.home) .tps-ctad p{color:rgba(255,255,255,.9)!important;font-size:16.5px!important;line-height:1.6!important;text-align:center}
body:not(.home) .tps-ctafinal .tps-btn-main .elementor-button,body:where(.home) .tps-ctafinal .tps-btn-main .elementor-button{background:var(--e-global-color-accent)!important;color:var(--e-global-color-cvblanc)!important}
body:not(.home) .tps-ctafinal .tps-btn-main .elementor-button:hover,body:where(.home) .tps-ctafinal .tps-btn-main .elementor-button:hover{background:var(--e-global-color-cvorangef)!important}
/* ==== TPS-COMMUN:END ==== */
/* ==== TPS-INTERIEUR:START ==== */
/* ==========================================================
   PAGES INTERIEURES — SYSTEME GRAPHIQUE DE L'ACCUEIL
   Repris du CSS de la page d'accueil (#12), portee body:not(.home) :
   l'accueil garde son propre CSS, rien ne change pour lui.
   Les brouillons (.tps-draft) ne sont pas touches : classes dediees
   (.tps-hlede au lieu de .tps-lede).
   Animations reutilisees : tps-corniere.js (cornieres) et
   tps-perforation.js (mots perfores), charges sur tout le site.
   ========================================================== */:root{--tps-corn-ep:9px;--tps-corn-l:46px;--tps-corn-c:#9B9B9B}

/* --- Gouttiere laterale + respiration verticale --- */@media(max-width:1366px){body:not(.home) .tps-hero>.e-con-inner,body:not(.home) .tps-sec>.e-con-inner,body:not(.home) .tps-ctafinal>.e-con-inner,body:not(.home) .tps-crumbs>.e-con-inner{padding-left:22px!important;padding-right:22px!important}}body:not(.home) .tps-sec>.e-con-inner{padding-top:96px!important;padding-bottom:96px!important}body:not(.home) .tps-sec>.e-con-inner>.e-con{margin-top:26px}body:not(.home) .tps-ctafinal>.e-con-inner{padding-top:88px!important;padding-bottom:88px!important}@media(max-width:767px){body:not(.home) .tps-sec>.e-con-inner{padding-top:58px!important;padding-bottom:58px!important}body:not(.home) .tps-sec>.e-con-inner>.e-con{margin-top:20px}body:not(.home) .tps-ctafinal>.e-con-inner{padding-top:56px!important;padding-bottom:56px!important}
}

/* --- Hero interieur (photo + voile directionnel) --- */body:not(.home) .tps-hero::before{opacity:1!important;background:linear-gradient(100deg,rgba(13,21,32,.94) 0%,rgba(13,21,32,.86) 38%,rgba(13,21,32,.5) 70%,rgba(13,21,32,.2) 100%)!important}@media(max-width:1024px){body:not(.home) .tps-hero::before{background:linear-gradient(100deg,rgba(13,21,32,.92) 0%,rgba(13,21,32,.86) 58%,rgba(13,21,32,.62) 100%)!important}}body:not(.home) .tps-hero>.e-con-inner{justify-content:center}body:not(.home) .tps-hero>.e-con-inner>*{position:relative;z-index:2}body:not(.home) .tps-h1 .elementor-heading-title{font-size:clamp(34px,4.4vw,54px)!important;line-height:1.05!important;margin-bottom:16px}body:not(.home) .tps-hsub .elementor-heading-title{color:var(--e-global-color-cvblanc)!important;font-weight:600!important;font-size:clamp(19px,1.9vw,24px)!important;line-height:1.3!important;max-width:42ch;margin-bottom:6px}body:not(.home) .tps-hlede,body:not(.home) .tps-hlede p{color:var(--e-global-color-cvtextenuit)!important;font-size:17px!important;line-height:1.6!important;max-width:60ch}body:not(.home) .tps-hlede p{margin:0 0 10px}@media(max-width:767px){body:not(.home) .tps-hlede,body:not(.home) .tps-hlede p{font-size:16px!important}}

/* --- Kickers / eyebrows --- */body:not(.home) .tps-kicker .elementor-heading-title{font-weight:600!important;color:var(--e-global-color-cvgristexte)!important}body:not(.home) .tps-eyebrow .elementor-heading-title{display:inline-block;position:relative;font-weight:600!important;color:var(--e-global-color-cvgristexte)!important}body:not(.home) .tps-kicker .elementor-heading-title{color:var(--e-global-color-cvtexteclair)!important;font-weight:500!important}

/* --- Titres de section --- */body:not(.home) .tps-h2 .elementor-heading-title{line-height:1.2!important}body:not(.home) .tps-secdesc p{margin:0 0 10px}

/* --- CORNIERE (signe du logo) : geometrie. L'animation (etat initial + transition)
   est deja dans le kit plus haut et reste prioritaire (specificite superieure). --- */

/* --- MOTS PERFORES (+ carre bleu). Markup :
   <span class="tps-perf-wrap"><span class="tps-perf-sq" aria-hidden="true"></span><span class="tps-perf-dot">mot</span></span>
   Dans le CTA final : <span class="tps-perf-dot">mot</span> seul (pas de carre). --- */body:not(.home) .tps-perf-dot{position:relative;z-index:1;display:inline-block;background-image:radial-gradient(circle,var(--e-global-color-cvblanc) var(--tps-perf-dot),rgba(255,255,255,0) var(--tps-perf-feather));background-size:var(--tps-perf-grid) var(--tps-perf-grid);background-position:0 0;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}body:not(.home) .tps-perf-cover{position:absolute;left:0;top:0;white-space:nowrap;color:var(--e-global-color-cvblanc);-webkit-text-fill-color:var(--e-global-color-cvblanc);pointer-events:none}body:not(.home) .tps-darkband .tps-h2 .tps-perf-cover{color:var(--e-global-color-cvblanc);-webkit-text-fill-color:var(--e-global-color-cvblanc)}body:not(.home) .tps-perf-bit{position:absolute;top:3%;left:0;width:3px;height:94%;background:linear-gradient(180deg,transparent,rgba(255,255,255,.95),transparent);box-shadow:0 0 9px 1px rgba(255,255,255,.75);opacity:0;pointer-events:none}body:not(.home) .tps-perf-wrap{position:relative;display:inline-block;margin:0 9px}body:not(.home) .tps-perf-sq{position:absolute;top:-1px;bottom:-1px;left:-7px;right:-7px;z-index:0;background:var(--e-global-color-primary);border-radius:2px;pointer-events:none}

/* --- Boutons --- */

/* --- Fil d'Ariane (bande sous le hero) --- */body:not(.home) .tps-crumbs{background:var(--e-global-color-cvblanc);border-bottom:1px solid var(--e-global-color-cvfilet)}body:not(.home) .tps-crumbs>.e-con-inner{padding-top:14px!important;padding-bottom:14px!important}body:not(.home) .tps-crumb,body:not(.home) .tps-crumb p,body:not(.home) .tps-crumb span{font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-size:13px!important;line-height:1.4!important;color:var(--e-global-color-cvgristexte)!important;margin:0!important}body:not(.home) .tps-crumb a{color:var(--e-global-color-primary)!important;text-decoration:none}body:not(.home) .tps-crumb a:hover{color:var(--e-global-color-cvbleufonce)!important;text-decoration:underline}

/* --- Points forts (cartes icone, reprise de "Pourquoi TPS") --- */body:not(.home) .tps-plus .elementor-icon svg{fill:var(--e-global-color-primary)!important;width:28px;height:28px}body:not(.home) .tps-plus .elementor-icon-box-title{line-height:1.3!important}
/* carte note (fond nuit + trame Z, reprise de la carte CTA "Besoin specifique ?") */body:not(.home) .tps-notecard{background:var(--e-global-color-secondary)!important;border-top:2px solid var(--e-global-color-secondary)!important;border-radius:4px;position:relative;overflow:hidden;justify-content:center}body:not(.home) .tps-notecard::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,currentColor 2.4px,transparent 2.9px),radial-gradient(circle,currentColor 2.4px,transparent 2.9px);background-size:17px 17px;background-position:0 0,8.5px 8.5px;color:var(--e-global-color-cvblanc);opacity:.07;pointer-events:none;z-index:0}body:not(.home) .tps-notecard:hover{border-top-color:var(--e-global-color-primary)!important}body:not(.home) .tps-notecard>*{position:relative;z-index:1}body:not(.home) .tps-notetxt,body:not(.home) .tps-notetxt p{font-family:var(--e-global-typography-primary-font-family),sans-serif!important;font-weight:600!important;font-size:17px!important;line-height:1.45!important;color:var(--e-global-color-cvblanc)!important;margin:0!important}@media(max-width:1024px){body:not(.home) .tps-pluscol{width:47%!important}}@media(max-width:767px){body:not(.home) .tps-pluscol{width:100%!important}}

/* --- Fiche technique (photo + tableau) --- */body:not(.home) .tps-specrow{flex-wrap:nowrap!important;gap:56px!important;align-items:flex-start!important}body:not(.home) .tps-specaside{flex:0 0 36%!important;max-width:36%!important;position:sticky!important;top:110px}body:not(.home) .tps-specmain{flex:1 1 auto!important;min-width:0}body:not(.home) .tps-specimg img{width:100%!important;height:auto!important;aspect-ratio:4/3;object-fit:cover;border-radius:4px;display:block}body:not(.home) .tps-specline,body:not(.home) .tps-specline p{margin:0!important}body:not(.home) .tps-spec table{width:100%;margin:0;border-collapse:separate;border-spacing:0;background:var(--e-global-color-cvblanc);border:1px solid var(--e-global-color-cvfiletclair);border-radius:4px;overflow:hidden;font-size:15px}body:not(.home) .tps-spec th,body:not(.home) .tps-spec td{padding:13px 18px;text-align:left;vertical-align:top;border:0!important;border-bottom:1px solid var(--e-global-color-cvacier)!important;line-height:1.5;background:transparent!important}body:not(.home) .tps-spec thead th{background:var(--e-global-color-secondary)!important;color:var(--e-global-color-cvblanc);font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:12px;text-transform:uppercase;letter-spacing:.06em;border-bottom:0!important}body:not(.home) .tps-spec tbody th{width:36%;font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:14.5px;color:var(--e-global-color-secondary);position:relative;transition:color .15s}body:not(.home) .tps-spec tbody td{color:var(--e-global-color-text)}body:not(.home) .tps-spec tbody tr:last-child th,body:not(.home) .tps-spec tbody tr:last-child td{border-bottom:0!important}body:not(.home) .tps-spec tbody tr:hover th,body:not(.home) .tps-spec tbody tr:hover td{background:#F6F9FB!important}body:not(.home) .tps-spec tbody tr:hover th{color:var(--e-global-color-primary)}body:not(.home) .tps-spec tbody th::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--e-global-color-primary);transform:scaleY(0);transition:transform .2s}body:not(.home) .tps-spec tbody tr:hover th::before{transform:scaleY(1)}@media(max-width:1024px){body:not(.home) .tps-specrow{flex-direction:column!important;gap:32px!important}body:not(.home) .tps-specaside{flex-basis:auto!important;max-width:none!important;width:100%!important;position:static!important}body:not(.home) .tps-specimg img{aspect-ratio:16/9}
}@media(max-width:767px){body:not(.home) .tps-spec th,body:not(.home) .tps-spec td{padding:11px 12px;font-size:14px}body:not(.home) .tps-spec tbody th{width:40%}}

/* --- Bande sombre (trame U) + etapes a bordure animee (reprise du process) --- */body:not(.home) .tps-darkband{position:relative;overflow:hidden}body:not(.home) .tps-darkband::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,currentColor 2.4px,transparent 2.9px);background-size:15px 15px;color:var(--e-global-color-cvblanc);opacity:.045;pointer-events:none;z-index:0}body:not(.home) .tps-darkband>.e-con-inner{position:relative;z-index:1}body:not(.home) .tps-darkband .tps-eyebrow .elementor-heading-title{color:var(--e-global-color-cvtexteclair)!important}body:not(.home) .tps-darkband .tps-h2 .elementor-heading-title{color:var(--e-global-color-cvblanc)!important}body:not(.home) .tps-step{position:relative;border-top:2px solid #3A4756}body:not(.home) .tps-stepn .elementor-heading-title{font-size:13px!important;font-weight:600!important;color:#7CC4EF!important;margin-bottom:10px}body:not(.home) .tps-steps,body:not(.home) .tps-steps p{font-size:16px!important;line-height:1.6!important;color:#DAE3EB!important;margin:0!important}body:not(.home) .tps-step::after{content:"";position:absolute;top:-2px;left:0;width:100%;height:2px;background:var(--e-global-color-cvblanc);box-shadow:0 0 6px rgba(255,255,255,.45);transform-origin:left;transform:scaleX(0);animation-duration:8s;animation-timing-function:linear;animation-iteration-count:infinite;z-index:2;pointer-events:none}body:not(.home) .tps-step:nth-child(1)::after{animation-name:tpsi-fill-1}body:not(.home) .tps-step:nth-child(2)::after{animation-name:tpsi-fill-2}body:not(.home) .tps-step:nth-child(3)::after{animation-name:tpsi-fill-3}
@keyframes tpsi-fill-1{0%{transform:scaleX(0)}15%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}
@keyframes tpsi-fill-2{0%{transform:scaleX(0)}15%{transform:scaleX(0)}30%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}
@keyframes tpsi-fill-3{0%{transform:scaleX(0)}30%{transform:scaleX(0)}45%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}@media(prefers-reduced-motion:reduce){body:not(.home) .tps-step::after{animation:none!important;display:none}}@media(max-width:767px){body:not(.home) .tps-step{width:100%!important}}

/* --- FAQ 2 colonnes (accordeon + image) --- */body:not(.home) .tps-faqsec>.e-con-inner{flex-direction:row!important;flex-wrap:nowrap!important;align-items:flex-start!important;gap:52px!important}body:not(.home) .tps-faqleft{max-width:660px}body:not(.home) .tps-faqimg{align-self:flex-start!important;aspect-ratio:5/6}@media(max-width:880px){body:not(.home) .tps-faqsec>.e-con-inner{flex-direction:column!important}body:not(.home) .tps-faqleft{max-width:none!important}body:not(.home) .tps-faqimg{aspect-ratio:auto;min-height:240px}
}body:not(.home) .tps-faqwrap{margin:0!important}body:not(.home) .tps-faq .elementor-tab-content p{margin:0 0 8px}body:not(.home) .tps-faq .elementor-tab-content p:last-child{margin-bottom:0}

/* --- CTA final (fond bleu) --- */body:not(.home) .tps-ctad{margin-bottom:10px!important}body:not(.home) .tps-ctad,body:not(.home) .tps-ctad p{max-width:62ch;margin-left:auto;margin-right:auto}body:not(.home) .tps-ctad p{margin:0 auto 10px}body:not(.home) .tps-ctad p strong{color:var(--e-global-color-cvblanc)}

/* --- Texte courant de section (paragraphes longs) --- */body:not(.home) .tps-bodytxt,body:not(.home) .tps-bodytxt p{font-size:16.5px!important;line-height:1.7!important;color:var(--e-global-color-text)!important;max-width:78ch}body:not(.home) .tps-bodytxt p{margin:0 0 14px}body:not(.home) .tps-bodytxt + .tps-specline{margin-top:10px!important;max-width:78ch}

/* --- Bloc d'introduction (regle : hero = H1 + sous-titre + 1er paragraphe ; le reste de l'intro passe ici) --- */body:not(.home) .tps-pageintro{background:var(--e-global-color-cvblanc)}body:not(.home) .tps-pageintro>.e-con-inner{padding-top:72px!important;padding-bottom:72px!important}@media(max-width:1366px){body:not(.home) .tps-pageintro>.e-con-inner{padding-left:22px!important;padding-right:22px!important}}body:not(.home) .tps-introrow{flex-direction:row!important;flex-wrap:nowrap!important;gap:64px!important;align-items:flex-start!important}body:not(.home) .tps-introlead{flex:0 0 44%!important;max-width:44%!important}body:not(.home) .tps-introlead:only-child{flex-basis:auto!important;max-width:64ch!important}body:not(.home) .tps-introbody{flex:1 1 auto!important;min-width:0}body:not(.home) .tps-leadtxt{border-left:3px solid var(--e-global-color-primary);padding-left:22px}body:not(.home) .tps-leadtxt,body:not(.home) .tps-leadtxt p{font-family:var(--e-global-typography-primary-font-family),sans-serif!important;font-weight:600!important;font-size:22px!important;line-height:1.45!important;color:var(--e-global-color-secondary)!important;margin:0!important}body:not(.home) .tps-introbody .tps-bodytxt p:last-child{margin-bottom:0}@media(max-width:1024px){body:not(.home) .tps-introrow{flex-direction:column!important;gap:28px!important}body:not(.home) .tps-introlead{flex-basis:auto!important;max-width:none!important;width:100%!important}}@media(max-width:767px){body:not(.home) .tps-pageintro>.e-con-inner{padding-top:48px!important;padding-bottom:48px!important}body:not(.home) .tps-leadtxt,body:not(.home) .tps-leadtxt p{font-size:19px!important}}

/* ==========================================================
   COMPOSANTS SAVOIR-FAIRE (prefixe tpsx- = propre aux pages interieures, jamais utilise par le header)
   ========================================================== */
/* Section texte + photo en alternance */body:not(.home) .tpsx-split>.e-con-inner>.tpsx-splitrow{margin-top:0!important}body:not(.home) .tpsx-splitrow{flex-direction:row!important;flex-wrap:nowrap!important;gap:64px!important;align-items:center!important}body:not(.home) .tpsx-splitrow.tpsx-rev{flex-direction:row-reverse!important}body:not(.home) .tpsx-splittext{flex:1 1 52%!important;min-width:0}body:not(.home) .tpsx-splittext .tps-specline{margin-top:8px!important}body:not(.home) .tpsx-splitimg{flex:0 0 44%!important;max-width:44%!important;margin:0!important}body:not(.home) .tpsx-splitimg img{width:100%!important;height:auto!important;aspect-ratio:4/3;object-fit:cover;border-radius:4px;display:block}body:not(.home) .tpsx-splitimg.tpsx-portrait img{aspect-ratio:4/5}@media(max-width:1024px){body:not(.home) .tpsx-splitrow,body:not(.home) .tpsx-splitrow.tpsx-rev{flex-direction:column!important;align-items:stretch!important;gap:32px!important}body:not(.home) .tpsx-splitimg{flex-basis:auto!important;max-width:none!important;width:100%!important}body:not(.home) .tpsx-splitimg img,body:not(.home) .tpsx-splitimg.tpsx-portrait img{aspect-ratio:16/10}
}
/* Etiquettes de combinaisons (Laser + pliage...) */body:not(.home) .tpsx-chips p{display:flex;flex-wrap:wrap;gap:10px;margin:4px 0 0!important}body:not(.home) .tpsx-chip{display:inline-block;font-family:var(--e-global-typography-primary-font-family),sans-serif;font-weight:700;font-size:13px;line-height:1.2;letter-spacing:.02em;color:var(--e-global-color-primary);background:var(--e-global-color-cvblanc);border:1.5px solid var(--e-global-color-primary);border-radius:3px;padding:7px 12px;transition:background .15s,color .15s}body:not(.home) .tpsx-chip:hover{background:var(--e-global-color-primary);color:var(--e-global-color-cvblanc)}
/* Bande points cles (puce = carre bleu du logo) */body:not(.home) .tpsx-keysrow{flex-direction:row!important;flex-wrap:nowrap!important;gap:56px!important;align-items:stretch!important}body:not(.home) .tpsx-keysmain{flex:1 1 auto!important;min-width:0}body:not(.home) .tpsx-keysimg{flex:0 0 36%!important;max-width:36%!important;margin:0!important}body:not(.home) .tpsx-keysimg img{width:100%!important;height:100%!important;min-height:380px;object-fit:cover;border-radius:4px;display:block}body:not(.home) .tpsx-keys ul{list-style:none!important;margin:0!important;padding:0!important}body:not(.home) .tpsx-keys li{position:relative;margin:0!important;padding:16px 8px 16px 32px;border-bottom:1px solid var(--e-global-color-cvfiletnuit);font-family:var(--e-global-typography-text-font-family),sans-serif;font-size:16px;line-height:1.55;color:#DAE3EB;transition:background .2s}body:not(.home) .tpsx-keys li:first-child{border-top:1px solid var(--e-global-color-cvfiletnuit)}body:not(.home) .tpsx-keys li::before{content:"";position:absolute;left:4px;top:23px;width:10px;height:10px;background:var(--e-global-color-primary);border-radius:1px;transition:transform .2s}body:not(.home) .tpsx-keys li:hover{background:rgba(255,255,255,.03)}body:not(.home) .tpsx-keys li:hover::before{transform:scale(1.25)}body:not(.home) .tpsx-keys li strong{color:var(--e-global-color-cvblanc);font-family:var(--e-global-typography-primary-font-family),sans-serif;}@media(max-width:1024px){body:not(.home) .tpsx-keysrow{flex-direction:column!important;gap:32px!important}body:not(.home) .tpsx-keysimg{flex-basis:auto!important;max-width:none!important;width:100%!important}body:not(.home) .tpsx-keysimg img{min-height:0;height:auto!important;aspect-ratio:16/10}}
/* Textes sur bande sombre (introduction, conclusion, phrase-cle) */body:not(.home) .tps-darkband .tps-secdesc,body:not(.home) .tps-darkband .tps-secdesc p{color:var(--e-global-color-cvtextenuit)!important}body:not(.home) .tps-darkband .tpsx-after{margin-top:30px!important}body:not(.home) .tps-darkband .tps-specline,body:not(.home) .tps-darkband .tps-specline p{color:#DAE3EB!important}body:not(.home) .tps-darkband .tps-specline{border-left-color:var(--e-global-color-cvbleuclair);margin-top:30px!important;max-width:78ch}
/* Signature du bloc final */body:not(.home) .tpsx-ctasign{margin-top:30px!important;padding-top:22px;border-top:1px solid rgba(255,255,255,.28);max-width:62ch;text-align:center}body:not(.home) .tpsx-ctasign p{margin:0 0 4px!important;color:var(--e-global-color-cvblanc)!important;font-family:var(--e-global-typography-primary-font-family),sans-serif!important;font-weight:600!important;font-size:17px!important;line-height:1.45!important;text-align:center}

/* ==========================================================
   COMPOSANTS L'ENTREPRISE (prefixe tpsx-)
   ========================================================== */
/* Hero sans photo : fond nuit + trame Z */body:not(.home) .tpsx-herotrame::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,currentColor 2.4px,transparent 2.9px),radial-gradient(circle,currentColor 2.4px,transparent 2.9px);background-size:17px 17px;background-position:0 0,8.5px 8.5px;color:var(--e-global-color-cvblanc);opacity:.07;pointer-events:none;z-index:0}

/* Frise chronologique : rail pointille (trame), carre bleu sur chaque date, apparition au defilement */body:not(.home) .tpsx-tl{position:relative;gap:0!important}body:not(.home) .tpsx-tl::before{content:"";position:absolute;left:193px;top:10px;bottom:10px;width:6px;background-image:radial-gradient(circle,#8FB3D1 1.5px,transparent 2px);background-size:6px 12px;background-repeat:repeat-y;background-position:center top;pointer-events:none}body:not(.home) .tpsx-tl::after{content:"";position:absolute;left:195px;top:10px;bottom:10px;width:2px;background:var(--e-global-color-primary);transform-origin:top;transform:scaleY(0);pointer-events:none;opacity:0}body:not(.home) .tpsx-tlitem{position:relative;flex-direction:row!important;flex-wrap:nowrap!important;gap:56px!important;align-items:flex-start!important;padding:0 0 64px 0!important}body:not(.home) .tpsx-tlitem:last-child{padding-bottom:0!important}body:not(.home) .tpsx-tlitem::before{content:"";position:absolute;left:190px;top:12px;width:12px;height:12px;background:var(--e-global-color-primary);border-radius:1px;z-index:1;transition:transform .3s}body:not(.home) .tpsx-tlitem:hover::before{transform:scale(1.35)}body:not(.home) .tpsx-tldate{flex:0 0 168px!important;max-width:168px!important;margin:0!important}body:not(.home) .tpsx-tldate .elementor-heading-title{text-align:right;font-size:26px!important;line-height:1.1!important;color:var(--e-global-color-primary)!important}body:not(.home) .tpsx-tlbody{flex:1 1 auto!important;min-width:0;padding-left:0!important;gap:10px!important}body:not(.home) .tpsx-tlh .elementor-heading-title{font-size:24px!important;line-height:1.25!important;color:var(--e-global-color-secondary)!important;margin:0!important}body:not(.home) .tpsx-tlbody .tps-bodytxt,body:not(.home) .tpsx-tlbody .tps-bodytxt p{font-size:16px!important;max-width:72ch}body:not(.home) .tpsx-tlimg{flex:0 0 30%!important;max-width:30%!important;margin:0!important}body:not(.home) .tpsx-tlimg img{width:100%!important;height:auto!important;aspect-ratio:4/3;object-fit:cover;border-radius:4px;display:block;filter:saturate(.9)}body:not(.home) .tpsx-tlimg.tpsx-portrait img{aspect-ratio:4/5}@supports (animation-timeline: view()){@media (prefers-reduced-motion: no-preference){body:not(.home) .tpsx-tlitem{animation:tpsx-tlin linear both;animation-timeline:view();animation-range:entry 0% cover 28%}body:not(.home) .tpsx-tl::after{opacity:1;animation:tpsx-rail linear both;animation-timeline:view();animation-range:entry 20% exit 60%}
  }
}
/* Logos de certification / labels (Engagement RSE & qualite) */body:not(.home) .tpsx-certlogo{width:auto!important;max-width:100%!important;margin:26px 0 0!important;text-align:left}body:not(.home) .tpsx-certlogo img{display:block;width:auto!important;max-width:100%!important;height:130px!important;object-fit:contain}body:not(.home) .tpsx-certlogo--wide img{height:auto!important;width:320px!important}body:not(.home) .tpsx-certlogo--ffab img{height:110px!important}
/* Frise : deux photos empilees sur une meme etape */body:not(.home) .tpsx-tlimgs{gap:12px!important}body:not(.home) .tpsx-tlimgs>.elementor-widget{width:100%!important;max-width:100%!important;margin:0!important}
@media(max-width:767px){body:not(.home) .tpsx-certlogo img{height:96px!important}body:not(.home) .tpsx-certlogo--wide img{height:auto!important;width:240px!important}}
@keyframes tpsx-tlin{from{opacity:0;transform:translateY(32px)}to{opacity:1;transform:none}}
@keyframes tpsx-rail{from{transform:scaleY(0)}to{transform:scaleY(1)}}@media(max-width:1024px){body:not(.home) .tpsx-tl::before{left:0}body:not(.home) .tpsx-tl::after{left:2px}body:not(.home) .tpsx-tlitem{flex-direction:column!important;gap:12px!important;padding:0 0 48px 34px!important}body:not(.home) .tpsx-tlitem::before{left:-3px;top:8px}body:not(.home) .tpsx-tldate{flex-basis:auto!important;max-width:none!important}body:not(.home) .tpsx-tldate .elementor-heading-title{text-align:left;font-size:22px!important}body:not(.home) .tpsx-tlimg{flex-basis:auto!important;max-width:520px!important;width:100%!important}
}

/* Mission / Vision / Valeurs */body:not(.home) .tpsx-mvv{gap:0!important}body:not(.home) .tpsx-mvvrow{flex-direction:row!important;flex-wrap:nowrap!important;gap:56px!important;align-items:flex-start!important;padding:44px 0!important;border-top:1px solid var(--e-global-color-cvfilet)}body:not(.home) .tpsx-mvvrow:last-child{border-bottom:1px solid var(--e-global-color-cvfilet)}body:not(.home) .tpsx-mvvhead{flex:0 0 240px!important;max-width:240px!important;gap:16px!important}body:not(.home) .tpsx-mvvicon .elementor-icon{display:inline-flex!important;align-items:center;justify-content:center;width:64px;height:64px;background:var(--e-global-color-primary);color:var(--e-global-color-cvblanc)!important;font-size:28px!important;border-radius:2px;transition:transform .3s}body:not(.home) .tpsx-mvvicon .elementor-icon svg{fill:var(--e-global-color-cvblanc)!important;width:28px;height:28px}body:not(.home) .tpsx-mvvrow:hover .tpsx-mvvicon .elementor-icon{transform:rotate(-8deg) scale(1.05)}body:not(.home) .tpsx-mvvlabel .elementor-heading-title{font-size:34px!important;line-height:1.1!important;color:var(--e-global-color-secondary)!important;margin:0!important}body:not(.home) .tpsx-mvvtext{flex:1 1 auto!important;min-width:0}body:not(.home) .tpsx-mvvtext,body:not(.home) .tpsx-mvvtext p{font-size:18px!important;line-height:1.75!important;color:var(--e-global-color-text)!important;max-width:72ch;margin:0!important}@media(max-width:1024px){body:not(.home) .tpsx-mvvrow{flex-direction:column!important;gap:20px!important;padding:32px 0!important}body:not(.home) .tpsx-mvvhead{flex-basis:auto!important;max-width:none!important;flex-direction:row!important;align-items:center!important}body:not(.home) .tpsx-mvvtext,body:not(.home) .tpsx-mvvtext p{font-size:16.5px!important}}

/* Fiches machines (grille) */body:not(.home) .tpsx-bigline{border-left:3px solid var(--e-global-color-primary);padding-left:20px;max-width:60ch}body:not(.home) .tpsx-bigline,body:not(.home) .tpsx-bigline p{font-family:var(--e-global-typography-primary-font-family),sans-serif!important;font-weight:600!important;font-size:22px!important;line-height:1.4!important;color:var(--e-global-color-secondary)!important;margin:0!important}body:not(.home) .tpsx-mgrid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px!important}body:not(.home) .tpsx-mcard{background:var(--e-global-color-cvblanc)!important;border:1px solid var(--e-global-color-cvfiletclair);border-radius:4px;gap:12px!important;transition:border-color .2s,box-shadow .2s,transform .2s}body:not(.home) .tpsx-mcard:hover{border-color:#CBD6DF;box-shadow:0 12px 30px -18px rgba(13,21,32,.35);transform:translateY(-3px)}body:not(.home) .tpsx-span2{grid-column:span 2}body:not(.home) .tpsx-mcardimg{position:relative;margin:0!important;padding:0!important;border:0!important;overflow:hidden;min-height:220px}body:not(.home) .tpsx-mcardimg img{position:absolute;inset:0;width:100%!important;height:100%!important;object-fit:cover;display:block;border-radius:4px}body:not(.home) .tpsx-mch .elementor-heading-title{display:block;position:relative;font-size:14px!important;text-transform:uppercase;letter-spacing:.04em;line-height:1.3!important;color:var(--e-global-color-primary)!important;padding-bottom:10px;border-bottom:1px solid var(--e-global-color-cvacier);margin:0!important}body:not(.home) .tpsx-mch .elementor-heading-title::before{content:"";position:absolute;left:0;bottom:-1px;width:28px;height:2px;background:var(--e-global-color-primary);transition:width .28s cubic-bezier(.22,1,.36,1)}body:not(.home) .tpsx-mcard:hover .tpsx-mch .elementor-heading-title::before{width:100%}body:not(.home) .tpsx-mcl p,body:not(.home) .tpsx-mcl li{font-family:var(--e-global-typography-text-font-family),sans-serif;font-size:15px;line-height:1.55;color:var(--e-global-color-cvgristexte)}body:not(.home) .tpsx-mcl p{margin:0 0 8px}body:not(.home) .tpsx-mcl p:last-child{margin-bottom:0}body:not(.home) .tpsx-mcl .tpsx-mlead{font-family:var(--e-global-typography-primary-font-family),sans-serif;font-weight:700;font-size:19px;line-height:1.3;color:var(--e-global-color-secondary)}body:not(.home) .tpsx-mcl ul{list-style:none;margin:0 0 8px;padding:0}body:not(.home) .tpsx-mcl ul:last-child{margin-bottom:0}body:not(.home) .tpsx-mcl li{position:relative;margin:0;padding:3px 0 3px 16px;color:var(--e-global-color-text)}body:not(.home) .tpsx-mcl li::before{content:"";position:absolute;left:0;top:11px;width:6px;height:6px;background:var(--e-global-color-primary)}body:not(.home) .tpsx-msub{flex-direction:row!important;flex-wrap:nowrap!important;gap:32px!important}body:not(.home) .tpsx-msub>.tpsx-mcl{flex:1 1 0;min-width:0}@media(max-width:1024px){body:not(.home) .tpsx-mgrid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:dense}}@media(max-width:767px){body:not(.home) .tpsx-mgrid{grid-template-columns:1fr}body:not(.home) .tpsx-span2{grid-column:auto}body:not(.home) .tpsx-msub{flex-direction:column!important;gap:12px!important}body:not(.home) .tpsx-bigline,body:not(.home) .tpsx-bigline p{font-size:19px!important}}

/* Chaine de production (etapes reliees, noeuds allumes en sequence) */body:not(.home) .tpsx-flow{margin-top:34px!important}body:not(.home) .tpsx-flow ol{list-style:none!important;margin:0!important;padding:0!important;display:grid;grid-template-columns:repeat(8,minmax(0,1fr))}body:not(.home) .tpsx-flow li{position:relative;margin:0!important;padding:38px 6px 0;text-align:center}body:not(.home) .tpsx-flow li::before{content:"";position:absolute;top:13px;left:0;right:0;height:2px;background:#3A4756}body:not(.home) .tpsx-flow li:first-child::before{left:50%}body:not(.home) .tpsx-flow li:last-child::before{right:50%}body:not(.home) .tpsx-flow li::after{content:"";position:absolute;top:5px;left:50%;width:18px;height:18px;margin-left:-9px;box-sizing:border-box;background:var(--e-global-color-secondary);border:2px solid var(--e-global-color-cvbleuclair);border-radius:1px;animation:tpsx-flownode 8s linear infinite}body:not(.home) .tpsx-flow li span{display:block;font-family:var(--e-global-typography-primary-font-family),sans-serif;font-weight:700;font-size:16px;line-height:1.25;color:var(--e-global-color-cvblanc)}body:not(.home) .tpsx-flow li:nth-child(2)::after{animation-delay:.8s}body:not(.home) .tpsx-flow li:nth-child(3)::after{animation-delay:1.6s}body:not(.home) .tpsx-flow li:nth-child(4)::after{animation-delay:2.4s}body:not(.home) .tpsx-flow li:nth-child(5)::after{animation-delay:3.2s}body:not(.home) .tpsx-flow li:nth-child(6)::after{animation-delay:4s}body:not(.home) .tpsx-flow li:nth-child(7)::after{animation-delay:4.8s}body:not(.home) .tpsx-flow li:nth-child(8)::after{animation-delay:5.6s}
@keyframes tpsx-flownode{0%{background:var(--e-global-color-secondary);transform:scale(1)}4%{background:var(--e-global-color-primary);border-color:var(--e-global-color-cvblanc);transform:scale(1.3)}10%{background:var(--e-global-color-primary);border-color:var(--e-global-color-cvbleuclair);transform:scale(1)}80%{background:var(--e-global-color-primary)}90%{background:var(--e-global-color-secondary)}100%{background:var(--e-global-color-secondary)}}@media(prefers-reduced-motion:reduce){body:not(.home) .tpsx-flow li::after{animation:none;background:var(--e-global-color-primary)}}@media(max-width:1024px){body:not(.home) .tpsx-flow ol{grid-template-columns:repeat(4,minmax(0,1fr));row-gap:26px}body:not(.home) .tpsx-flow li:nth-child(4n)::before{right:50%}body:not(.home) .tpsx-flow li:nth-child(4n+1)::before{left:50%}}@media(max-width:767px){body:not(.home) .tpsx-flow ol{grid-template-columns:repeat(2,minmax(0,1fr))}body:not(.home) .tpsx-flow li::before{display:none}body:not(.home) .tpsx-flow li span{font-size:15px}}

/* Axes d'une politique (cartes nuit) */body:not(.home) .tpsx-axes{flex-direction:row!important;flex-wrap:nowrap!important;gap:24px!important;align-items:stretch!important}body:not(.home) .tpsx-axis{flex:1 1 0!important;min-width:0;background:var(--e-global-color-secondary)!important;border-radius:4px;position:relative;overflow:hidden;gap:10px!important;border-top:3px solid var(--e-global-color-primary);transition:transform .2s,box-shadow .2s}body:not(.home) .tpsx-axis::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,currentColor 2.4px,transparent 2.9px),radial-gradient(circle,currentColor 2.4px,transparent 2.9px);background-size:17px 17px;background-position:0 0,8.5px 8.5px;color:var(--e-global-color-cvblanc);opacity:.06;pointer-events:none;z-index:0}body:not(.home) .tpsx-axis>*{position:relative;z-index:1}body:not(.home) .tpsx-axis:hover{transform:translateY(-3px);box-shadow:0 16px 36px -20px rgba(13,21,32,.6)}body:not(.home) .tpsx-axish .elementor-heading-title{display:flex;align-items:center;gap:12px;font-size:24px!important;text-transform:uppercase;letter-spacing:.04em;color:var(--e-global-color-cvblanc)!important;margin:0!important}body:not(.home) .tpsx-axish .elementor-heading-title::before{content:"";flex:0 0 12px;width:12px;height:12px;background:var(--e-global-color-primary)}body:not(.home) .tpsx-axisd,body:not(.home) .tpsx-axisd p{font-size:16px!important;line-height:1.55!important;color:var(--e-global-color-cvtextenuit)!important;margin:0!important}body:not(.home) .tpsx-axesnote{margin-top:30px!important;max-width:78ch}@media(max-width:1024px){body:not(.home) .tpsx-axes{flex-direction:column!important}}

/* Titre a gauche / texte a droite */body:not(.home) .tpsx-textcols>.e-con-inner>.tpsx-tcrow{margin-top:0!important}body:not(.home) .tpsx-tcrow{flex-direction:row!important;flex-wrap:nowrap!important;gap:64px!important;align-items:flex-start!important}body:not(.home) .tpsx-tcleft{flex:0 0 40%!important;max-width:40%!important;position:sticky!important;top:110px}body:not(.home) .tpsx-tcright{flex:1 1 auto!important;min-width:0;padding-top:34px!important}body:not(.home) .tpsx-tcright .tps-specline{margin-top:10px!important;max-width:78ch}@media(max-width:1024px){body:not(.home) .tpsx-tcrow{flex-direction:column!important;gap:12px!important}body:not(.home) .tpsx-tcleft{flex-basis:auto!important;max-width:none!important;position:static!important}body:not(.home) .tpsx-tcright{padding-top:0!important}}

/* Cartes a icone sur 3 colonnes */body:not(.home) .tpsx-feat3 .tps-featcard{flex-basis:calc((100% - 48px)/3)!important;max-width:calc((100% - 48px)/3)!important}body:not(.home) .tpsx-feat3 .tps-featicon{height:130px}@media(max-width:1024px){body:not(.home) .tpsx-feat3 .tps-featcard{flex-basis:100%!important;max-width:100%!important}}

/* Bloc final : texte avant le titre */body:not(.home) .tpsx-ctalead{margin-bottom:16px!important}body:not(.home) .tpsx-ctalead p{font-size:18px!important}

/* Video de l'outil industriel (widget Video natif heberge, affiche + bouton lecture au carre bleu) */body:not(.home) .tpsx-videosec>.e-con-inner>.tpsx-video{margin-top:0!important}body:not(.home) .tpsx-video{width:100%!important;max-width:1040px!important;margin-left:auto!important;margin-right:auto!important}body:not(.home) .tpsx-video .elementor-wrapper{border-radius:4px;overflow:hidden;background:var(--e-global-color-secondary)}body:not(.home) .tpsx-video .elementor-custom-embed-image-overlay::before{content:"";position:absolute;inset:0;background:rgba(13,21,32,.22);transition:background .3s}body:not(.home) .tpsx-video .elementor-custom-embed-image-overlay:hover::before{background:rgba(13,21,32,.08)}body:not(.home) .tpsx-video .elementor-custom-embed-play{display:flex;align-items:center;justify-content:center;width:88px;height:88px;background:var(--e-global-color-primary);border-radius:2px;transition:transform .3s}body:not(.home) .tpsx-video .elementor-custom-embed-play svg{width:30px!important;height:30px!important;margin-left:4px;fill:var(--e-global-color-cvblanc)!important;filter:none!important;opacity:1!important}body:not(.home) .tpsx-video .elementor-custom-embed-image-overlay:hover .elementor-custom-embed-play{transform:translate3d(-50%,-50%,0) scale(1.06)}@media(max-width:767px){body:not(.home) .tpsx-video .elementor-custom-embed-play{width:46px;height:46px}body:not(.home) .tpsx-video .elementor-custom-embed-play svg{width:18px!important;height:18px!important;margin-left:2px}}

/* ==========================================================
   COMPOSANTS APPLICATIONS & MARCHES (prefixe tpsx-)
   ========================================================== */
/* Onglets verticaux des applications (widget Onglets imbriques natif restyle, bandeau photos en tete de panneau) */body:not(.home) .tpsx-apptabs .e-n-tabs{gap:0!important;align-items:stretch}body:not(.home) .tpsx-apptabs .e-n-tabs-heading{flex:0 0 330px!important;width:330px!important;gap:0!important;justify-content:flex-start!important;background:transparent!important}body:not(.home) .tpsx-apptabs .e-n-tab-title{position:relative;width:100%!important;height:auto!important;flex-grow:0!important;justify-content:flex-start!important;align-items:center!important;text-align:left!important;white-space:normal!important;border:0!important;border-bottom:1px solid var(--e-global-color-cvfilet)!important;border-radius:0!important;margin:0!important;padding:14px 16px 14px 32px!important;font-family:var(--e-global-typography-primary-font-family),sans-serif!important;font-size:13.5px!important;font-weight:700!important;line-height:1.3!important;text-transform:uppercase!important;letter-spacing:.02em!important;color:var(--e-global-color-cvgristexte)!important;background:transparent!important;box-shadow:none!important;outline-offset:-2px;cursor:pointer;transition:color .2s,background .2s}body:not(.home) .tpsx-apptabs .e-n-tab-title::before{content:"";position:absolute;left:12px;top:50%;width:8px;height:8px;margin-top:-4px;background:#C3CFDA;transition:background .2s,transform .2s}body:not(.home) .tpsx-apptabs .e-n-tab-title-text{font:inherit!important;color:inherit!important;letter-spacing:inherit!important;text-transform:inherit!important;text-align:left!important;justify-content:flex-start!important}body:not(.home) .tpsx-apptabs .e-n-tab-title:hover{color:var(--e-global-color-primary)!important;background:transparent!important}body:not(.home) .tpsx-apptabs .e-n-tab-title[aria-selected="true"]{color:var(--e-global-color-secondary)!important;background:var(--e-global-color-cvblanc)!important}body:not(.home) .tpsx-apptabs .e-n-tab-title[aria-selected="true"]::before{background:var(--e-global-color-primary);transform:scale(1.35)}body:not(.home) .tpsx-apptabs .e-n-tabs-content{flex:1 1 auto!important;min-width:0;background:var(--e-global-color-cvblanc);border-radius:0 4px 4px 0;box-shadow:inset 3px 0 0 var(--e-global-color-primary)}body:not(.home) .tpsx-apptabs .tpsx-apppanel{flex-direction:column!important;gap:0!important;padding:38px 44px!important}body:not(.home) .tpsx-apptabs .tpsx-apptext{font-family:var(--e-global-typography-text-font-family),sans-serif;font-size:16px;line-height:1.7;color:var(--e-global-color-text)}body:not(.home) .tpsx-apptabs .tpsx-apptext p{margin:0 0 14px;max-width:76ch}body:not(.home) .tpsx-apptabs .tpsx-apptext .tps-specline{margin:4px 0 16px!important;border-left:3px solid var(--e-global-color-primary);padding-left:16px}body:not(.home) .tpsx-apptabs .tpsx-appphotos{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px!important;width:100%!important;padding:0!important;margin:0 0 28px!important}body:not(.home) .tpsx-apptabs .tpsx-appphotos--1{grid-template-columns:minmax(0,1fr)}body:not(.home) .tpsx-apptabs .tpsx-appphotos--3{grid-template-columns:repeat(3,minmax(0,1fr))}body:not(.home) .tpsx-apptabs .tpsx-appphoto{width:auto!important;max-width:none!important;margin:0!important}body:not(.home) .tpsx-apptabs .tpsx-appphoto img{display:block;width:100%!important;max-width:none!important;height:240px!important;object-fit:cover;border-radius:3px}body:not(.home) .tpsx-apptabs .tpsx-appphotos--1 .tpsx-appphoto img{height:320px!important}body:not(.home) .tpsx-apptabs .tpsx-appphotos--3 .tpsx-appphoto img{height:200px!important}body:not(.home) .tpsx-apptabs .tpsx-apph{position:relative;font-size:26px;line-height:1.25;color:var(--e-global-color-secondary);margin:0 0 18px;padding-bottom:14px;border-bottom:1px solid var(--e-global-color-cvacier)}body:not(.home) .tpsx-apptabs .tpsx-apph::after{content:"";position:absolute;left:0;bottom:-1px;width:40px;height:2px;background:var(--e-global-color-primary)}body:not(.home) .tpsx-apptabs .tpsx-appfor{margin:22px 0 0!important;padding:14px 18px;background:var(--e-global-color-cvacier);border-radius:3px;font-size:15px;line-height:1.6}body:not(.home) .tpsx-apptabs .tpsx-appfor strong{font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--e-global-color-primary);margin-right:4px}@media(max-width:1024px){body:not(.home) .tpsx-apptabs .e-n-tabs-heading{flex-basis:260px!important;width:260px!important}body:not(.home) .tpsx-apptabs .tpsx-apppanel{padding:28px!important}body:not(.home) .tpsx-apptabs .tpsx-appphoto img{height:180px!important}body:not(.home) .tpsx-apptabs .tpsx-appphotos--1 .tpsx-appphoto img{height:240px!important}body:not(.home) .tpsx-apptabs .tpsx-appphotos--3 .tpsx-appphoto img{height:150px!important}}@media(max-width:767px){body:not(.home) .tpsx-apptabs .e-n-tab-title{background:var(--e-global-color-cvblanc)!important;margin-top:6px!important}body:not(.home) .tpsx-apptabs .tpsx-apppanel{padding:22px 18px!important;background:var(--e-global-color-cvblanc);box-shadow:inset 3px 0 0 var(--e-global-color-primary)}body:not(.home) .tpsx-apptabs .tpsx-appphotos,body:not(.home) .tpsx-apptabs .tpsx-appphotos--3{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:20px!important}body:not(.home) .tpsx-apptabs .tpsx-appphotos--1{grid-template-columns:minmax(0,1fr)}body:not(.home) .tpsx-apptabs .tpsx-appphotos--3 .tpsx-appphoto:first-child{grid-column:1 / -1}body:not(.home) .tpsx-apptabs .tpsx-appphoto img,body:not(.home) .tpsx-apptabs .tpsx-appphotos--3 .tpsx-appphoto img{height:140px!important}body:not(.home) .tpsx-apptabs .tpsx-appphotos--1 .tpsx-appphoto img,body:not(.home) .tpsx-apptabs .tpsx-appphotos--3 .tpsx-appphoto:first-child img{height:190px!important}body:not(.home) .tpsx-apptabs .tpsx-apph{font-size:21px}}

/* Cartes marches */body:not(.home) .tpsx-mkgrid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px!important}body:not(.home) .tpsx-mkcard{background:var(--e-global-color-cvblanc)!important;border:1px solid var(--e-global-color-cvfiletclair);border-top:3px solid var(--e-global-color-cvfilet);border-radius:4px;gap:14px!important;transition:border-color .2s,box-shadow .2s,transform .2s}body:not(.home) .tpsx-mkcard:hover{border-top-color:var(--e-global-color-primary);box-shadow:0 14px 34px -20px rgba(13,21,32,.35);transform:translateY(-3px)}body:not(.home) .tpsx-mkicon .elementor-icon{display:inline-flex!important;align-items:center;justify-content:center;width:52px;height:52px;background:var(--e-global-color-primary);color:var(--e-global-color-cvblanc)!important;font-size:22px!important;border-radius:2px;transition:transform .3s}body:not(.home) .tpsx-mkicon .elementor-icon svg{fill:var(--e-global-color-cvblanc)!important;width:22px;height:22px}body:not(.home) .tpsx-mkcard:hover .tpsx-mkicon .elementor-icon{transform:rotate(-8deg)}body:not(.home) .tpsx-mkh .elementor-heading-title{font-size:22px!important;line-height:1.25!important;color:var(--e-global-color-secondary)!important;margin:0!important}body:not(.home) .tpsx-mkd,body:not(.home) .tpsx-mkd p{font-size:15.5px!important;line-height:1.7!important;color:var(--e-global-color-cvgristexte)!important;margin:0!important}@media(max-width:1024px){body:not(.home) .tpsx-mkgrid{grid-template-columns:1fr}}

/* Grille de realisations (Loop Grid + carte template 364) : calquee sur les cartes Realisations de l'accueil */body:not(.home) .tpsx-reafilter .e-filter{display:flex!important;flex-wrap:wrap!important;gap:10px!important;justify-content:flex-start!important;margin:0 0 34px!important}body:not(.home) .tpsx-reafilter .e-filter-item{font-weight:600!important;font-size:13px!important;line-height:1.2!important;letter-spacing:.04em;color:var(--e-global-color-cvgristexte)!important;background:var(--e-global-color-cvblanc)!important;border:1px solid var(--e-global-color-cvfilet)!important;border-radius:2px!important;padding:10px 16px!important;cursor:pointer;transition:color .2s,border-color .2s,background .2s}body:not(.home) .tpsx-reafilter .e-filter-item:hover{color:var(--e-global-color-primary)!important;border-color:var(--e-global-color-primary)!important}body:not(.home) .tpsx-reafilter .e-filter-item[aria-pressed="true"]{background:var(--e-global-color-primary)!important;border-color:var(--e-global-color-primary)!important;color:var(--e-global-color-cvblanc)!important}body:not(.home) .tpsx-reagrid{--grid-column-gap:24px;--grid-row-gap:44px}body:not(.home) .tpsx-reagrid .tps-rea-card{position:relative;gap:0!important;padding:0!important;text-align:center;border-top:2px solid transparent;transition:border-color .25s}body:not(.home) .tpsx-reagrid .e-loop-item:hover .tps-rea-card{border-top-color:var(--e-global-color-primary)}body:not(.home) .tpsx-reagrid .elementor-widget-theme-post-featured-image{margin:0 0 18px!important;overflow:hidden;border-radius:4px;background:var(--e-global-color-cvacier)}body:not(.home) .tpsx-reagrid .elementor-widget-theme-post-featured-image a{display:block!important;width:100%!important}body:not(.home) .tpsx-reagrid .elementor-widget-theme-post-featured-image img{width:100%!important;max-width:100%!important;aspect-ratio:auto!important;height:220px!important;object-fit:cover;display:block;transition:transform .5s ease}body:not(.home) .tpsx-reagrid .e-loop-item:hover .elementor-widget-theme-post-featured-image img{transform:scale(1.06)}body:not(.home) .tpsx-reagrid .elementor-widget-theme-post-title .elementor-heading-title{position:relative;font-size:16.5px!important;line-height:1.25!important;margin:0 0 7px!important;padding-bottom:9px;border-bottom:1px solid var(--e-global-color-cvacier)}body:not(.home) .tpsx-reagrid .elementor-widget-theme-post-title .elementor-heading-title::before{content:"";position:absolute;left:50%;transform:translateX(-50%);bottom:-1px;width:28px;height:2px;background:var(--e-global-color-primary)}body:not(.home) .tpsx-reagrid .elementor-widget-theme-post-title .elementor-heading-title a{color:var(--e-global-color-secondary)!important;transition:color .15s}body:not(.home) .tpsx-reagrid .e-loop-item:hover .elementor-widget-theme-post-title .elementor-heading-title a{color:var(--e-global-color-primary)!important}body:not(.home) .tpsx-reagrid .elementor-widget-theme-post-excerpt,body:not(.home) .tpsx-reagrid .elementor-widget-theme-post-excerpt p{font-size:14px!important;line-height:1.5!important;color:var(--e-global-color-cvgristexte)!important;margin:8px 0 0!important}body:not(.home) .tpsx-reasec .tps-btn-line{margin-top:44px!important}@media(max-width:767px){body:not(.home) .tpsx-reafilter .e-filter{gap:8px!important;margin-bottom:24px!important}body:not(.home) .tpsx-reafilter .e-filter-item{font-size:12px!important;padding:9px 12px!important}body:not(.home) .tpsx-reagrid{--grid-row-gap:34px}}

/* Page Realisations (38) : deux filtres empiles + bouton "Voir plus" de la grille */body:not(.home) .elementor-widget-taxonomy-filter.tpsx-reafilter:has(+ .elementor-widget-taxonomy-filter) .e-filter{margin-bottom:12px!important}body:not(.home) .tpsx-reagrid .elementor-button-wrapper{margin-top:44px;text-align:center}body:not(.home) .tpsx-reagrid .elementor-button-wrapper .elementor-button{background:transparent!important;color:var(--e-global-color-primary)!important;border:1.5px solid var(--e-global-color-primary)!important;border-radius:0!important;padding:12px 22px!important;font-size:14px!important;letter-spacing:.02em}body:not(.home) .tpsx-reagrid .elementor-button-wrapper .elementor-button:hover{background:var(--e-global-color-primary)!important;color:var(--e-global-color-cvblanc)!important}

/* Template single Realisation (365) */body:not(.home) .tpsx-rsmain{flex-direction:row!important;flex-wrap:nowrap!important;gap:64px!important;align-items:flex-start!important}body:not(.home) .tpsx-rsimgcol{flex:0 0 46%!important;max-width:46%!important;position:sticky!important;top:110px}body:not(.home) .tpsx-rsimg a{display:block!important;overflow:hidden;border-radius:4px}body:not(.home) .tpsx-rsimg img{width:100%!important;max-width:100%!important;height:auto!important;max-height:560px;object-fit:cover;display:block;border-radius:4px;transition:transform .5s ease}body:not(.home) .tpsx-rsimg a:hover img{transform:scale(1.03)}body:not(.home) .tpsx-rstext{flex:1 1 auto!important;min-width:0}body:not(.home) .tpsx-rsspec{margin-top:30px!important;border-top:1px solid var(--e-global-color-cvfilet);gap:0!important}body:not(.home) .tpsx-rsrow{flex-direction:row!important;flex-wrap:nowrap!important;align-items:baseline!important;gap:18px!important;padding:13px 0!important;border-bottom:1px solid var(--e-global-color-cvfiletclair)}body:not(.home) .tpsx-rsrow:not(:has(.tpsx-rsval .elementor-heading-title:not(:empty))){display:none!important}body:not(.home) .tpsx-rslab{flex:0 0 190px!important;max-width:190px}body:not(.home) .tpsx-rslab .elementor-heading-title{font-weight:600!important;font-size:12.5px!important;line-height:1.4!important;text-transform:uppercase;letter-spacing:.08em;color:var(--e-global-color-cvgristexte)!important}body:not(.home) .tpsx-rsval{flex:1 1 auto!important;min-width:0}body:not(.home) .tpsx-rsval .elementor-heading-title{font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-weight:600!important;font-size:16px!important;line-height:1.5!important;color:var(--e-global-color-secondary)!important}body:not(.home) .tpsx-rscontent{margin-top:28px!important}body:not(.home) .tpsx-rscontent p{font-size:16px;line-height:1.7;color:var(--e-global-color-text);margin:0 0 12px;max-width:72ch}body:not(.home) .tpsx-rscontent em{color:var(--e-global-color-cvgristexte)}body:not(.home) .tpsx-rsrecit{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px!important;margin-top:48px!important}body:not(.home) .tpsx-rsrecit:not(:has(.tpsx-rscardtxt)){display:none!important}body:not(.home) .tpsx-rscard{background:var(--e-global-color-cvacier);border-left:3px solid var(--e-global-color-primary);border-radius:0 4px 4px 0;gap:10px!important}body:not(.home) .tpsx-rscard:not(:has(.tpsx-rscardtxt)){display:none!important}body:not(.home) .tpsx-rscardh .elementor-heading-title{font-size:19px!important;color:var(--e-global-color-secondary)!important}body:not(.home) .tpsx-rscardtxt,body:not(.home) .tpsx-rscardtxt p{color:var(--e-global-color-text)!important;margin:0!important}body:not(.home) .tpsx-rsgalsec:not(:has(.gallery-item)){display:none!important}body:not(.home) .tpsx-rsgal .gallery{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px!important;margin:0!important}body:not(.home) .tpsx-rsgal .gallery br{display:none}body:not(.home) .tpsx-rsgal .gallery-item{width:auto!important;max-width:none!important;margin:0!important;padding:0!important}body:not(.home) .tpsx-rsgal .gallery-icon a{display:block;overflow:hidden;border-radius:4px;background:var(--e-global-color-cvfilet)}body:not(.home) .tpsx-rsgal .gallery-item img{width:100%!important;height:260px!important;object-fit:cover;display:block;border:0!important;transition:transform .5s ease}body:not(.home) .tpsx-rsgal .gallery-icon a:hover img{transform:scale(1.05)}body:not(.home) .tpsx-rscredit .elementor-heading-title{color:var(--e-global-color-cvgristexte)!important;margin-top:16px!important}@media(max-width:1024px){body:not(.home) .tpsx-rsmain{flex-direction:column!important;gap:36px!important}body:not(.home) .tpsx-rsimgcol{flex-basis:auto!important;max-width:none!important;width:100%;position:static!important}body:not(.home) .tpsx-rsrecit{grid-template-columns:1fr}}@media(max-width:767px){body:not(.home) .tpsx-rsrow{flex-direction:column!important;gap:2px!important}body:not(.home) .tpsx-rslab{flex-basis:auto!important;max-width:none}body:not(.home) .tpsx-rsgal .gallery{grid-template-columns:1fr}body:not(.home) .tpsx-rsgal .gallery-item img{height:220px!important}}

/* Actualites : carte (loop item), liste (archive) et article (single) */body:not(.home) .tpsx-newsgrid{--grid-column-gap:28px;--grid-row-gap:48px}body:not(.home) .tpsx-newscard{gap:0!important;padding:0!important;height:100%;border-top:2px solid transparent;transition:border-color .25s}body:not(.home) .e-loop-item:hover .tpsx-newscard{border-top-color:var(--e-global-color-primary)}body:not(.home) .tpsx-newsmedia{position:relative;height:230px;overflow:hidden;border-radius:4px;padding:0!important;background-color:var(--e-global-color-secondary)!important;background-image:radial-gradient(circle,rgba(220,230,239,.16) 1.5px,transparent 1.8px)!important;background-size:14px 14px!important}body:not(.home) .tpsx-newsmedia:not(:has(img))::after{content:"";position:absolute;right:18px;bottom:18px;width:22px;height:22px;background:var(--e-global-color-primary)}body:not(.home) .tpsx-newsimg,body:not(.home) .tpsx-newsimg a{position:absolute!important;inset:0;display:block!important;margin:0!important;width:100%!important;height:100%!important}body:not(.home) .tpsx-newsimg img{width:100%!important;height:100%!important;max-width:none!important;object-fit:cover;display:block;transition:transform .5s ease}body:not(.home) .e-loop-item:hover .tpsx-newsimg img{transform:scale(1.06)}body:not(.home) .tpsx-newscat{position:absolute!important;top:12px;left:12px;z-index:2;width:auto!important;margin:0!important}body:not(.home) .tpsx-newscat .elementor-heading-title{font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-size:10.5px!important;line-height:1.2!important;letter-spacing:.1em;text-transform:uppercase;color:var(--e-global-color-cvtexteclair)!important;background:rgba(13,21,32,.78);padding:5px 9px;margin:0!important}body:not(.home) .tpsx-newsbody{gap:8px!important;padding:20px 0 0!important}body:not(.home) .tpsx-newsdate .elementor-heading-title{font-size:12.5px!important;font-weight:600!important;letter-spacing:.08em;text-transform:uppercase;color:var(--e-global-color-primary)!important}body:not(.home) .tpsx-newstitle .elementor-heading-title{font-size:19px!important;line-height:1.3!important;color:var(--e-global-color-secondary)!important;margin:0!important}body:not(.home) .tpsx-newstitle .elementor-heading-title a{color:inherit!important;transition:color .15s}body:not(.home) .e-loop-item:hover .tpsx-newstitle .elementor-heading-title a{color:var(--e-global-color-primary)!important}body:not(.home) .tpsx-newsexcerpt,body:not(.home) .tpsx-newsexcerpt p{font-size:14.5px!important;line-height:1.6!important;color:var(--e-global-color-cvgristexte)!important;margin:0!important}body:not(.home) .tpsx-newsmore .elementor-heading-title{font-size:13px!important;letter-spacing:.04em;text-transform:uppercase;margin-top:6px!important}body:not(.home) .tpsx-newsmore .elementor-heading-title a{color:var(--e-global-color-primary)!important}body:not(.home) .tpsx-newsmore .elementor-heading-title a::after{content:" →";display:inline-block;transition:transform .2s}body:not(.home) .e-loop-item:hover .tpsx-newsmore .elementor-heading-title a::after{transform:translateX(4px)}body:not(.home) .tpsx-newsgrid .elementor-pagination{margin-top:52px;display:flex;flex-wrap:wrap;justify-content:center;gap:8px}body:not(.home) .tpsx-newsgrid .page-numbers{min-width:42px;height:42px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--e-global-color-cvfilet);color:var(--e-global-color-secondary)!important;text-decoration:none;transition:border-color .2s,background .2s,color .2s}body:not(.home) .tpsx-newsgrid a.page-numbers:hover{border-color:var(--e-global-color-primary);color:var(--e-global-color-primary)!important}body:not(.home) .tpsx-newsgrid .page-numbers.current{background:var(--e-global-color-primary);border-color:var(--e-global-color-primary);color:var(--e-global-color-cvblanc)!important}body:not(.home) .tpsx-newsgrid .e-loop-nothing-found-message{font-size:16px;color:var(--e-global-color-cvgristexte);padding:24px 0}body:not(.home) .tpsx-article{max-width:820px;width:100%;margin:0 auto!important;gap:0!important}body:not(.home) .tpsx-articleimg{margin:0 0 38px!important}body:not(.home) .tpsx-articleimg{text-align:center}body:not(.home) .tpsx-articleimg a{display:inline-block;max-width:100%}
/* Photo a la une a sa taille reelle (plafonnee a la colonne) : evite d'etirer les petites images importees de l'ancien site */body:not(.home) .tpsx-articleimg img{width:auto!important;max-width:100%!important;height:auto!important;max-height:520px;object-fit:cover;border-radius:4px;display:block;margin:0 auto}body:not(.home) .tpsx-articlebody{font-size:17px;line-height:1.75;color:var(--e-global-color-text)}body:not(.home) .tpsx-articlebody p{margin:0 0 18px}body:not(.home) .tpsx-articlebody h2,body:not(.home) .tpsx-articlebody h3,body:not(.home) .tpsx-articlebody h4{color:var(--e-global-color-secondary);line-height:1.3;margin:34px 0 12px}body:not(.home) .tpsx-articlebody h4{font-size:18px}body:not(.home) .tpsx-articlebody img{max-width:100%;height:auto;border-radius:4px;margin:8px 0}body:not(.home) .tpsx-articlebody a{color:var(--e-global-color-primary);text-decoration:underline;text-underline-offset:3px}body:not(.home) .tpsx-articlebody ul,body:not(.home) .tpsx-articlebody ol{margin:0 0 18px;padding-left:1.3em}body:not(.home) .tpsx-articlebody li::marker{color:var(--e-global-color-primary)}body:not(.home) .tpsx-articlefoot{margin-top:44px!important;padding-top:30px!important;border-top:1px solid var(--e-global-color-cvfiletclair)}body:not(.home) .tpsx-newsrelated:not(:has(.e-loop-item)){display:none!important}@media(max-width:767px){body:not(.home) .tpsx-newsmedia{height:210px}body:not(.home) .tpsx-articlebody{font-size:16px}}

/* Titre / texte sur bande sombre */body:not(.home) .tps-darkband .tps-bodytxt,body:not(.home) .tps-darkband .tps-bodytxt p{color:var(--e-global-color-cvtextenuit)!important}body:not(.home) .tpsx-textcols.tps-darkband .tps-specline{margin-top:4px!important;margin-bottom:14px!important}

/* --- Etapes : rangees de 4 a 6 etapes (retour a la ligne par 3), remplissage sequentiel sur 6 temps --- */body:not(.home) .tps-steprow-long{justify-content:flex-start!important;column-gap:3.5%!important}body:not(.home) .tps-steprow-long .tps-step:nth-child(1)::after{animation-name:tpsi-fill6-1}body:not(.home) .tps-steprow-long .tps-step:nth-child(2)::after{animation-name:tpsi-fill6-2}body:not(.home) .tps-steprow-long .tps-step:nth-child(3)::after{animation-name:tpsi-fill6-3}body:not(.home) .tps-steprow-long .tps-step:nth-child(4)::after{animation-name:tpsi-fill6-4}body:not(.home) .tps-steprow-long .tps-step:nth-child(5)::after{animation-name:tpsi-fill6-5}body:not(.home) .tps-steprow-long .tps-step:nth-child(6)::after{animation-name:tpsi-fill6-6}
@keyframes tpsi-fill6-1{0%{transform:scaleX(0)}10%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}
@keyframes tpsi-fill6-2{0%{transform:scaleX(0)}10%{transform:scaleX(0)}20%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}
@keyframes tpsi-fill6-3{0%{transform:scaleX(0)}20%{transform:scaleX(0)}30%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}
@keyframes tpsi-fill6-4{0%{transform:scaleX(0)}30%{transform:scaleX(0)}40%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}
@keyframes tpsi-fill6-5{0%{transform:scaleX(0)}40%{transform:scaleX(0)}50%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}
@keyframes tpsi-fill6-6{0%{transform:scaleX(0)}50%{transform:scaleX(0)}60%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}

/* --- Bande sombre avec photo de fond (voile natif Elementor, comme le process de l'accueil) --- */body:not(.home) .tps-darkband.tps-bandphoto::before{opacity:1!important;z-index:0}body:not(.home) .tps-darkband.tps-bandphoto::after{opacity:.035}

/* --- Cartes procedes sur fond nuit (image + titre a filet + texte) --- */body:not(.home) .tps-featgrid{flex-wrap:wrap!important;gap:24px!important;align-items:stretch!important}body:not(.home) .tps-featcard{flex:0 0 calc((100% - 24px)/2)!important;max-width:calc((100% - 24px)/2)!important;min-width:0!important;background:var(--e-global-color-cvnuit2)!important;border:1px solid var(--e-global-color-cvfiletnuit);border-radius:4px;overflow:hidden;padding:0!important;gap:0!important;transition:border-color .2s,transform .2s,box-shadow .2s}body:not(.home) .tps-featcard:hover{border-color:var(--e-global-color-primary);transform:translateY(-3px);box-shadow:0 14px 34px -18px rgba(0,0,0,.6)}body:not(.home) .tps-featimg{margin:0!important;overflow:hidden;width:100%!important}body:not(.home) .tps-featimg img{width:100%!important;height:230px!important;object-fit:cover;display:block;transition:transform .5s ease}body:not(.home) .tps-featcard:hover .tps-featimg img{transform:scale(1.05)}body:not(.home) .tps-featicon{height:230px;width:100%!important;display:flex!important;align-items:center!important;justify-content:center!important;position:relative;overflow:hidden;background:var(--e-global-color-secondary)!important;border-bottom:1px solid var(--e-global-color-cvfiletnuit);padding:0!important}body:not(.home) .tps-featicon::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,currentColor 2.4px,transparent 2.9px),radial-gradient(circle,currentColor 2.4px,transparent 2.9px);background-size:17px 17px;background-position:0 0,8.5px 8.5px;color:var(--e-global-color-cvblanc);opacity:.07;pointer-events:none}body:not(.home) .tps-featicon>*{position:relative;z-index:1}body:not(.home) .tps-featicon .elementor-icon{color:var(--e-global-color-cvbleuclair)!important;font-size:64px!important}body:not(.home) .tps-featicon .elementor-icon svg{fill:var(--e-global-color-cvbleuclair)!important;width:64px;height:64px}body:not(.home) .tps-featbody{padding:22px 24px 26px!important}body:not(.home) .tps-feath .elementor-heading-title{display:block;position:relative;font-size:19px!important;line-height:1.25!important;color:var(--e-global-color-cvblanc)!important;padding-bottom:10px;margin-bottom:12px;border-bottom:1px solid var(--e-global-color-cvfiletnuit)}body:not(.home) .tps-feath .elementor-heading-title::before{content:"";position:absolute;left:0;bottom:-1px;width:28px;height:2px;background:var(--e-global-color-cvbleuclair);transition:width .28s cubic-bezier(.22,1,.36,1)}body:not(.home) .tps-featcard:hover .tps-feath .elementor-heading-title::before{width:100%}body:not(.home) .tps-featd,body:not(.home) .tps-featd p{font-size:15px!important;line-height:1.6!important;color:var(--e-global-color-cvtextenuit)!important}body:not(.home) .tps-featd p{margin:0 0 10px}body:not(.home) .tps-featd p:last-child{margin-bottom:0}@media(max-width:767px){body:not(.home) .tps-featcard{flex-basis:100%!important;max-width:100%!important}body:not(.home) .tps-featimg img,body:not(.home) .tps-featicon{height:200px!important}}
/* Pages legales (politique de confidentialite...) : colonne de lecture, titres numerotes, listes et tableau */body:not(.home) .tpsx-legaltxt{width:100%!important;max-width:820px!important}body:not(.home) .tpsx-legaltxt h2{font-size:24px!important;line-height:1.3!important;color:var(--e-global-color-secondary)!important;margin:44px 0 14px!important;padding-bottom:10px;border-bottom:1px solid var(--e-global-color-cvfilet)}body:not(.home) .tpsx-legaltxt h2:first-child{margin-top:0!important}body:not(.home) .tpsx-legaltxt p,body:not(.home) .tpsx-legaltxt li{font-size:16px;line-height:1.7;color:var(--e-global-color-text)}body:not(.home) .tpsx-legaltxt p{margin:0 0 14px}body:not(.home) .tpsx-legaltxt ul{margin:0 0 16px;padding-left:22px}body:not(.home) .tpsx-legaltxt li{margin:0 0 6px}body:not(.home) .tpsx-legaltxt li::marker{color:var(--e-global-color-primary)}body:not(.home) .tpsx-legaltxt a{color:var(--e-global-color-primary);text-decoration:underline;text-underline-offset:2px}body:not(.home) .tpsx-legaltxt table{width:100%;border-collapse:collapse;margin:6px 0 20px;font-size:15px}body:not(.home) .tpsx-legaltxt th{background:var(--e-global-color-secondary);color:var(--e-global-color-cvblanc);text-align:left;font-weight:600;padding:12px 14px}body:not(.home) .tpsx-legaltxt td{padding:12px 14px;border-bottom:1px solid var(--e-global-color-cvfilet);vertical-align:top;color:var(--e-global-color-text)}
@media(max-width:767px){body:not(.home) .tpsx-legaltxt h2{font-size:20px!important;margin-top:34px!important}body:not(.home) .tpsx-legaltxt table{display:block;overflow-x:auto;white-space:nowrap}}
/* Contact (page 52) : formulaire + colonne d'infos */body:not(.home) .tpsx-contactrow{gap:64px!important;align-items:flex-start!important}body:not(.home) .tpsx-contactmain{flex:1 1 auto!important;width:auto!important;min-width:0}body:not(.home) .tpsx-contactaside{flex:0 0 340px!important;width:340px!important;gap:18px!important;position:sticky;top:110px}body:not(.home) .tpsx-ccard{background:var(--e-global-color-cvacier);border-top:3px solid var(--e-global-color-primary);border-radius:0 0 4px 4px;padding:24px 26px!important;gap:0!important}body:not(.home) .tpsx-ccardh .elementor-heading-title{font-size:14px!important;line-height:1.3!important;text-transform:uppercase;letter-spacing:.06em;color:var(--e-global-color-secondary)!important;margin:0 0 12px!important}body:not(.home) .tpsx-ccardtxt p,body:not(.home) .tpsx-ccardtxt li{font-size:15px;line-height:1.6;color:var(--e-global-color-text)}body:not(.home) .tpsx-ccardtxt p{margin:0 0 12px}body:not(.home) .tpsx-ccardtxt p:last-child{margin-bottom:0}body:not(.home) .tpsx-ccardtxt a{color:var(--e-global-color-primary);font-weight:600}body:not(.home) .tpsx-ccardtxt ol{margin:0;padding-left:20px}body:not(.home) .tpsx-ccardtxt li{margin:0 0 8px}body:not(.home) .tpsx-ccardtxt li::marker{color:var(--e-global-color-primary);font-weight:700}
body:not(.home) .tpsx-form{margin-top:30px!important}body:not(.home) .tpsx-form .elementor-field-group{margin-bottom:18px!important}body:not(.home) .tpsx-form .elementor-field-label{font-family:var(--e-global-typography-primary-font-family),sans-serif!important;font-size:13px!important;font-weight:600!important;color:var(--e-global-color-secondary)!important;margin-bottom:6px!important}body:not(.home) .tpsx-form .elementor-mark-required .elementor-field-label::after{color:var(--e-global-color-primary)}body:not(.home) .tpsx-form .elementor-field-textual{min-height:48px;padding:12px 14px!important;font-size:15px!important;line-height:1.4!important;color:var(--e-global-color-text)!important;background:var(--e-global-color-cvblanc)!important;border:1px solid #C9D3DC!important;border-radius:3px!important;box-shadow:none!important;transition:border-color .2s,box-shadow .2s}body:not(.home) .tpsx-form .elementor-field-textual::placeholder{color:#8A96A3}body:not(.home) .tpsx-form .elementor-field-textual:focus{border-color:var(--e-global-color-primary)!important;box-shadow:0 0 0 3px rgba(0,109,181,.15)!important;outline:0}body:not(.home) .tpsx-form textarea.elementor-field-textual{min-height:150px}body:not(.home) .tpsx-form .elementor-field-type-upload input[type=file]{width:100%;padding:14px!important;border:1px dashed #C9D3DC!important;border-radius:3px;background:var(--e-global-color-cvacier)!important;font-size:14px;color:var(--e-global-color-text)}body:not(.home) .tpsx-form .elementor-field-type-upload input[type=file]::file-.elementor-kit-6-button{margin-right:12px;padding:8px 14px;border:1.5px solid var(--e-global-color-primary);border-radius:3px;background:var(--e-global-color-cvblanc);color:var(--e-global-color-primary);font-weight:600;cursor:pointer}body:not(.home) .tpsx-form .elementor-field-type-acceptance>.elementor-field-label{display:none!important}body:not(.home) .tpsx-form .elementor-field-subgroup label{font-size:14px;line-height:1.5;color:var(--e-global-color-text)}body:not(.home) .tpsx-form .elementor-field-subgroup a{color:var(--e-global-color-primary);text-decoration:underline}body:not(.home) .tpsx-form .elementor-field-option input{accent-color:var(--e-global-color-primary);margin-right:8px;width:16px;height:16px;vertical-align:-3px}body:not(.home) .tpsx-form .e-form__buttons{margin-top:6px}body:not(.home) .tpsx-form .e-form__buttons .elementor-button{min-height:52px}body:not(.home) .tpsx-form .elementor-message{font-size:15px;margin-top:14px}
body:not(.home) .tpsx-contactbtns{gap:14px!important}
/* Bandeau logos clients sur les pages interieures (reprise de l'accueil) */body:not(.home) .tps-trust{position:relative;overflow:hidden}body:not(.home) .tps-trust::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,currentColor 2.4px,transparent 2.9px),radial-gradient(circle,currentColor 2.4px,transparent 2.9px);background-size:17px 17px;background-position:0 0,8.5px 8.5px;color:var(--e-global-color-cvblanc);opacity:.07;pointer-events:none}body:not(.home) .tps-trust>*{position:relative;z-index:1}body:not(.home) .tps-trustlab .elementor-heading-title{font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-size:11px!important;letter-spacing:.16em!important;text-transform:uppercase!important;color:var(--e-global-color-cvbleuclair)!important;text-align:center;margin-bottom:22px}
@media(max-width:1024px){body:not(.home) .tpsx-contactrow{flex-direction:column!important;gap:48px!important}body:not(.home) .tpsx-contactaside{flex-basis:auto!important;width:100%!important;position:static}}
@media(max-width:767px){body:not(.home) .tpsx-form .elementor-field-group{margin-bottom:14px!important}}
/* Calculateur VSP (pages 47 et 64) : habillage du plugin TPS Calculateur VSP aux couleurs du site (le plugin garde son CSS de base) */
body:not(.home) #calculateur{scroll-margin-top:90px}
body:not(.home) .tpsx-calc,body:not(.home) .tpsx-calcr{width:100%}
body:not(.home) #cvsp-root,body:not(.home) #cvspr-root{max-width:none;font-family:var(--e-global-typography-text-font-family),sans-serif;color:var(--e-global-color-text)}
body:not(.home) #cvsp-root .cvsp-logo,body:not(.home) #cvspr-root .cvspr-logo{display:none}
body:not(.home) #cvsp-root .cvsp-sub{font-size:16.5px;line-height:1.7;color:var(--e-global-color-cvgristexte);max-width:760px;margin:14px 0 40px}
body:not(.home) #cvsp-root .cvsp-grid{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:32px;align-items:start}
body:not(.home) #cvsp-root .cvsp-grid>div{background:var(--e-global-color-cvacier);border-top:3px solid var(--e-global-color-primary);border-radius:0 0 4px 4px;padding:28px 30px 32px}
body:not(.home) #cvsp-root .cvsp-grid>div:first-child{position:sticky;top:110px}
body:not(.home) #cvsp-root .cvsp-step{font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:14px;font-weight:700;line-height:1.3;letter-spacing:.06em;text-transform:uppercase;color:var(--e-global-color-secondary);border:0;padding:0;margin:0 0 20px}
body:not(.home) #cvsp-root .cvsp-motifs{gap:10px}
body:not(.home) #cvsp-root .cvsp-motif{position:relative;border:1px solid var(--e-global-color-cvfilet);border-radius:3px;padding:8px 8px 10px;background:var(--e-global-color-cvblanc);transition:border-color .2s,box-shadow .2s}
body:not(.home) #cvsp-root .cvsp-motif:hover{border-color:var(--e-global-color-primary)}
body:not(.home) #cvsp-root .cvsp-motif.active{border-color:var(--e-global-color-primary);box-shadow:inset 0 0 0 1px var(--e-global-color-primary)}
body:not(.home) #cvsp-root .cvsp-motif.active::after{content:"";position:absolute;top:-1px;right:-1px;width:10px;height:10px;background:var(--e-global-color-primary)}
body:not(.home) #cvsp-root .cvsp-motif canvas{height:62px;border-radius:2px}
body:not(.home) #cvsp-root .cvsp-motif span{font-size:12px;line-height:1.3;font-weight:600;color:var(--e-global-color-secondary);margin-top:8px}
body:not(.home) #cvsp-root .cvsp-schema{border:0;border-radius:3px;margin-bottom:4px}
body:not(.home) #cvsp-root .cvsp-h4{font-family:var(--e-global-typography-text-font-family),sans-serif;font-size:11px;font-weight:600;line-height:1.3;letter-spacing:.16em;text-transform:uppercase;color:var(--e-global-color-cvgristexte);margin:26px 0 2px;padding-top:22px;border-top:1px solid var(--e-global-color-cvfilet)}
body:not(.home) #cvsp-root label{font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:13px;font-weight:600;color:var(--e-global-color-secondary);margin:16px 0 6px}
body:not(.home) #cvsp-root input[type=number],body:not(.home) #cvsp-root select{min-height:48px;padding:12px 14px;font-size:15px;line-height:1.4;color:var(--e-global-color-text);background-color:var(--e-global-color-cvblanc);border:1px solid #C9D3DC;border-radius:3px;box-shadow:none;transition:border-color .2s,box-shadow .2s}
body:not(.home) #cvsp-root input[type=number]:focus,body:not(.home) #cvsp-root select:focus{border-color:var(--e-global-color-primary);box-shadow:0 0 0 3px rgba(0,109,181,.15);outline:0}
body:not(.home) #cvsp-root .cvsp-row{gap:14px}
body:not(.home) #cvsp-root .cvsp-check{font-family:var(--e-global-typography-text-font-family),sans-serif;font-size:14px;font-weight:600;color:var(--e-global-color-text);margin:18px 0 0}
body:not(.home) #cvsp-root .cvsp-check input{width:16px;height:16px;accent-color:var(--e-global-color-primary)}
body:not(.home) #cvsp-root .cvsp-btn{margin-top:28px;min-height:52px;padding:15px 24px;border-radius:3px;background:var(--e-global-color-accent);font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:14px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;transition:background .2s}
body:not(.home) #cvsp-root .cvsp-btn:hover,body:not(.home) #cvsp-root .cvsp-btn:focus{filter:none;background:var(--e-global-color-cvorangef)}
body:not(.home) #cvsp-root .cvsp-err{border:0;border-left:3px solid #C0392B;border-radius:0 3px 3px 0;background:#FDECEA;color:#8E2A1D;font-size:14px;line-height:1.6;margin-top:18px}
body:not(.home) #cvsp-overlay{background:rgba(13,21,32,.6)}
body:not(.home) #cvsp-overlay .cvsp-box{border-radius:4px;border-top:3px solid var(--e-global-color-primary)}
body:not(.home) #cvsp-overlay .cvsp-spin{border-color:var(--e-global-color-cvacier);border-top-color:var(--e-global-color-primary)}
body:not(.home) #cvsp-overlay p{font-family:var(--e-global-typography-primary-font-family),sans-serif;color:var(--e-global-color-secondary)}
/* Résultat : grille schéma / chiffres clés, détails / exports, puis demande de devis */
body:not(.home) #cvspr-root{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);grid-template-rows:auto auto auto auto auto auto 1fr auto;grid-template-areas:"back back" "title title" "schema vsp" "details actions" "details dlnote" "details note" "details ." "devis devis";column-gap:32px}
body:not(.home) #cvspr-root .cvspr-topback{grid-area:back;justify-self:start;font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--e-global-color-primary);margin:0 0 18px}
body:not(.home) #cvspr-root .cvspr-title{grid-area:title;text-align:left;font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:34px;font-weight:700;line-height:1.2;color:var(--e-global-color-secondary);margin:0 0 28px}
body:not(.home) #cvspr-root .cvspr-schema{grid-area:schema;max-width:none;width:100%;height:100%;min-height:340px;border-radius:3px;margin:0}
body:not(.home) #cvspr-root .cvspr-cards{display:contents}
body:not(.home) #cvspr-root .cvspr-card{border:0;border-radius:0 0 4px 4px;padding:26px 30px 30px}
body:not(.home) #cvspr-root .cvspr-card h2{font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:14px;font-weight:700;line-height:1.3;letter-spacing:.06em;text-transform:uppercase;border:0;padding:0;margin:0 0 10px}
body:not(.home) #cvspr-root .cvspr-card:first-child{grid-area:details;align-self:start;margin-top:32px;background:var(--e-global-color-cvacier);border-top:3px solid var(--e-global-color-primary)}
body:not(.home) #cvspr-root .cvspr-card:first-child h2{color:var(--e-global-color-secondary)}
body:not(.home) #cvspr-root .cvspr-card:first-child .cvspr-line{font-size:15px;padding:10px 0;border-bottom:1px solid var(--e-global-color-cvfilet)}
body:not(.home) #cvspr-root .cvspr-card:first-child .cvspr-line:last-child{border-bottom:0}
body:not(.home) #cvspr-root .cvspr-card:first-child .cvspr-line span:first-child{color:var(--e-global-color-cvgristexte)}
body:not(.home) #cvspr-root .cvspr-card:first-child .cvspr-line span:last-child{font-weight:600;color:var(--e-global-color-secondary);text-align:right}
body:not(.home) #cvspr-root .cvspr-card:last-child{grid-area:vsp;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;background:var(--e-global-color-secondary);border-top:3px solid var(--e-global-color-cvbleuclair)}
body:not(.home) #cvspr-root .cvspr-card:last-child::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,currentColor 2.4px,transparent 2.9px);background-size:15px 15px;color:var(--e-global-color-cvblanc);opacity:.045;pointer-events:none}
body:not(.home) #cvspr-root .cvspr-card:last-child>*{position:relative;z-index:1}
body:not(.home) #cvspr-root .cvspr-card:last-child h2{color:var(--e-global-color-cvtexteclair)}
body:not(.home) #cvspr-root .cvspr-card:last-child h2[style]{margin-top:26px!important}
body:not(.home) #cvspr-root .cvspr-card:last-child .cvspr-line{align-items:baseline;gap:16px;padding:12px 0;border-bottom:1px solid var(--e-global-color-cvfiletnuit)}
body:not(.home) #cvspr-root .cvspr-card:last-child .cvspr-line span:first-child{font-size:15px;color:var(--e-global-color-cvtextenuit)}
body:not(.home) #cvspr-root .cvspr-card:last-child .cvspr-line span:last-child{font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:30px;font-weight:700;line-height:1.1;color:var(--e-global-color-cvblanc);white-space:nowrap}
body:not(.home) #cvspr-root .cvspr-card:last-child .cvspr-line:first-of-type span:last-child{font-size:44px;color:var(--e-global-color-cvbleuclair)}
body:not(.home) #cvspr-root .cvspr-actions{grid-area:actions;align-self:start;justify-content:flex-start;gap:12px;margin:32px 0 0}
body:not(.home) #cvspr-root .cvspr-pdf,body:not(.home) #cvspr-root .cvspr-dxf{flex:1 1 180px;min-height:50px;padding:14px 20px;border:1.5px solid var(--e-global-color-primary);border-radius:3px;font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:13px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;transition:background .2s,color .2s,border-color .2s}
body:not(.home) #cvspr-root .cvspr-pdf{background:var(--e-global-color-primary);color:var(--e-global-color-cvblanc)}
body:not(.home) #cvspr-root .cvspr-pdf:hover{filter:none;background:var(--e-global-color-cvbleu,#004E82);border-color:var(--e-global-color-cvbleu,#004E82)}
body:not(.home) #cvspr-root .cvspr-dxf{background:transparent;color:var(--e-global-color-primary)}
body:not(.home) #cvspr-root .cvspr-dxf:hover{background:var(--e-global-color-primary);color:var(--e-global-color-cvblanc)}
body:not(.home) #cvspr-root .cvspr-dlnote{grid-area:dlnote;align-self:start;text-align:left;font-size:13.5px;line-height:1.6;color:var(--e-global-color-cvgristexte);margin:12px 0 0}
body:not(.home) #cvspr-root .cvspr-note{grid-area:note;align-self:start;text-align:left;font-style:normal;font-size:13.5px;line-height:1.6;color:var(--e-global-color-cvgristexte);margin:22px 0 0;padding:2px 0 2px 14px;border-left:3px solid var(--e-global-color-cvfilet)}
body:not(.home) #cvspr-root .cvspr-brand{grid-column:1/-1}
body:not(.home) #cvspr-root .cvspr-devis{grid-area:devis;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);grid-template-rows:auto auto auto auto auto 1fr;column-gap:48px;max-width:none;margin:64px 0 0;padding:44px 48px 48px;border:0;border-top:3px solid var(--e-global-color-accent);border-radius:0 0 4px 4px;background:var(--e-global-color-cvacier)}
body:not(.home) #cvspr-root .cvspr-devis-h{grid-column:1/-1;grid-row:1;align-self:start;text-align:left;font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:28px;font-weight:700;line-height:1.25;color:var(--e-global-color-secondary);margin:0 0 26px}
body:not(.home) #cvspr-root .cvspr-devis-form{display:contents}
body:not(.home) #cvspr-root .cvspr-recap-box{grid-column:1;grid-row:2/7;align-self:start;margin:0;padding:18px 20px;font-size:14px;line-height:1.75;color:var(--e-global-color-text);background:var(--e-global-color-cvblanc);border:0;border-left:3px solid var(--e-global-color-primary);border-radius:0 3px 3px 0}
body:not(.home) #cvspr-root .cvspr-recap-box b{color:var(--e-global-color-secondary)}
body:not(.home) #cvspr-root .cvspr-frow,body:not(.home) #cvspr-root #dv-qte,body:not(.home) #cvspr-root .cvspr-devis-err,body:not(.home) #cvspr-root .cvspr-devis-send{grid-column:2;align-self:start}
body:not(.home) #cvspr-root .cvspr-frow{column-gap:14px;row-gap:0}
body:not(.home) #cvspr-root .cvspr-devis-form input{min-height:48px;margin:0 0 14px;padding:12px 14px;font-size:15px;line-height:1.4;color:var(--e-global-color-text);background:var(--e-global-color-cvblanc);border:1px solid #C9D3DC;border-radius:3px;box-shadow:none;transition:border-color .2s,box-shadow .2s}
body:not(.home) #cvspr-root .cvspr-devis-form input::placeholder{color:#8A96A3}
body:not(.home) #cvspr-root .cvspr-devis-form input:focus{border-color:var(--e-global-color-primary);box-shadow:0 0 0 3px rgba(0,109,181,.15);outline:0}
body:not(.home) #cvspr-root .cvspr-devis-err{font-size:14px;color:#8E2A1D;margin:0 0 12px}
body:not(.home) #cvspr-root .cvspr-devis-send{align-self:start;min-height:52px;margin:2px 0 0;padding:15px 24px;border-radius:3px;background:var(--e-global-color-accent);font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:14px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;transition:background .2s}
body:not(.home) #cvspr-root .cvspr-devis-send:hover{filter:none;background:var(--e-global-color-cvorangef)}
body:not(.home) #cvspr-root .cvspr-devis-send:disabled{opacity:.7;cursor:wait}
body:not(.home) #cvspr-root .cvspr-devis-ok{grid-column:1/-1;background:var(--e-global-color-cvblanc);border:0;border-left:3px solid #2E7D32;border-radius:0 3px 3px 0;color:var(--e-global-color-text);font-size:16px;font-weight:600;text-align:left;padding:20px 24px}
body:not(.home) #cvspr-root .cvspr-empty{grid-column:1/-1;padding:24px 0;font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:22px;font-weight:700;color:var(--e-global-color-secondary)}
body:not(.home) #cvspr-root .cvspr-empty a{display:inline-block;margin-top:22px;padding:12px 22px;border:1.5px solid var(--e-global-color-primary);border-radius:3px;font-size:13px;letter-spacing:.02em;text-transform:uppercase;color:var(--e-global-color-primary)}
body:not(.home) #cvspr-root .cvspr-empty a:hover{background:var(--e-global-color-primary);color:var(--e-global-color-cvblanc)}
@media(max-width:1024px){body:not(.home) #cvsp-root .cvsp-grid{grid-template-columns:1fr;gap:24px}body:not(.home) #cvsp-root .cvsp-grid>div:first-child{position:static}body:not(.home) #cvspr-root{display:flex;flex-direction:column}body:not(.home) #cvspr-root>*,body:not(.home) #cvspr-root .cvspr-card{order:10}body:not(.home) #cvspr-root .cvspr-topback{order:1;align-self:flex-start}body:not(.home) #cvspr-root .cvspr-title{order:2}body:not(.home) #cvspr-root .cvspr-schema{order:3;height:260px;min-height:0}body:not(.home) #cvspr-root .cvspr-card:last-child{order:4;margin-top:24px}body:not(.home) #cvspr-root .cvspr-card:first-child,body:not(.home) #cvspr-root .cvspr-actions,body:not(.home) #cvspr-root .cvspr-dlnote,body:not(.home) #cvspr-root .cvspr-note{align-self:stretch}body:not(.home) #cvspr-root .cvspr-actions{order:5;margin-top:24px}body:not(.home) #cvspr-root .cvspr-dlnote{order:6}body:not(.home) #cvspr-root .cvspr-card:first-child{order:7}body:not(.home) #cvspr-root .cvspr-note{order:8}body:not(.home) #cvspr-root .cvspr-devis{order:9}body:not(.home) #cvspr-root .cvspr-empty{order:0}body:not(.home) #cvspr-root .cvspr-devis{display:block;margin-top:48px}body:not(.home) #cvspr-root .cvspr-devis-form{display:block}body:not(.home) #cvspr-root .cvspr-recap-box{margin-bottom:20px}body:not(.home) #cvspr-root .cvspr-devis-send{width:100%}}
@media(max-width:767px){body:not(.home) #cvsp-root .cvsp-sub{margin-bottom:28px}body:not(.home) #cvsp-root .cvsp-grid>div{padding:22px 18px 24px}body:not(.home) #cvsp-root .cvsp-motifs{grid-template-columns:repeat(2,1fr)}body:not(.home) #cvspr-root .cvspr-title{font-size:26px;margin-bottom:20px}body:not(.home) #cvspr-root .cvspr-schema{height:200px}body:not(.home) #cvspr-root .cvspr-card{padding:22px 20px 24px}body:not(.home) #cvspr-root .cvspr-card:last-child .cvspr-line span:last-child{font-size:24px}body:not(.home) #cvspr-root .cvspr-card:last-child .cvspr-line:first-of-type span:last-child{font-size:34px}body:not(.home) #cvspr-root .cvspr-devis{padding:28px 20px 32px}body:not(.home) #cvspr-root .cvspr-devis-h{font-size:22px}}
/* Fiche realisation : tableau de caracteristiques, « Notre valeur ajoutee » et phrase de conclusion (documents client 2026-09-23) */
body:not(.home) .tpsx-rscarac{margin:0!important}
body:not(.home) .tpsx-rscarac dl{display:grid;grid-template-columns:190px minmax(0,1fr);column-gap:18px;margin:0}
body:not(.home) .tpsx-rscarac dt{padding:13px 0;border-bottom:1px solid var(--e-global-color-cvfiletclair);font-family:var(--e-global-typography-text-font-family),sans-serif;font-weight:600;font-size:12.5px;line-height:1.4;letter-spacing:.08em;text-transform:uppercase;color:var(--e-global-color-cvgristexte)}
body:not(.home) .tpsx-rscarac dd{margin:0;padding:13px 0;border-bottom:1px solid var(--e-global-color-cvfiletclair);font-weight:600;font-size:16px;line-height:1.5;color:var(--e-global-color-secondary)}
body:not(.home) .tpsx-rsva{margin-top:48px!important;gap:0!important}
body:not(.home) .tpsx-rsva:not(:has(.tpsx-rsvatxt)):not(:has(.tpsx-rssign)){display:none!important}
body:not(.home) .tpsx-rsva:not(:has(.tpsx-rsvatxt)) .tpsx-rsvah{display:none!important}
body:not(.home) .tpsx-rsvah .elementor-heading-title{font-size:22px!important;line-height:1.3!important;color:var(--e-global-color-secondary)!important;margin:0 0 20px!important}
body:not(.home) .tpsx-rsvatxt p{font-size:16px;line-height:1.7;color:var(--e-global-color-text);margin:0 0 16px}
body:not(.home) .tpsx-rsvatxt ul{columns:2;column-gap:44px;margin:0;padding:0;list-style:none}
body:not(.home) .tpsx-rsvatxt li{position:relative;padding-left:22px;margin:0 0 11px;font-size:15.5px;line-height:1.55;color:var(--e-global-color-text);break-inside:avoid}
body:not(.home) .tpsx-rsvatxt li::before{content:"";position:absolute;left:0;top:.5em;width:8px;height:8px;background:var(--e-global-color-primary)}
body:not(.home) .tpsx-rsvatxt strong{color:var(--e-global-color-secondary)}
body:not(.home) .tpsx-rssign{margin-top:34px!important;padding:22px 26px;background:var(--e-global-color-cvacier);border-left:3px solid var(--e-global-color-accent);border-radius:0 4px 4px 0}
body:not(.home) .tpsx-rssign p{font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:17.5px;font-weight:500;line-height:1.55;color:var(--e-global-color-secondary);margin:0}
body:not(.home) .tpsx-rscontent h3{font-size:21px;line-height:1.3;color:var(--e-global-color-secondary);margin:26px 0 10px}
@media(max-width:767px){body:not(.home) .tpsx-rscarac dl{grid-template-columns:1fr;row-gap:0}
body:not(.home) .tpsx-rscarac dt{padding:12px 0 0;border-bottom:0}
body:not(.home) .tpsx-rscarac dd{padding:2px 0 12px}
body:not(.home) .tpsx-rsvatxt ul{columns:1}
body:not(.home) .tpsx-rsva{margin-top:36px!important}
body:not(.home) .tpsx-rssign{padding:18px 20px}}
/* Pages Catalogue de perforation (18), Abaques (50), Bibliotheque de ressources (49) : mise en forme des brouillons (2026-09-24) */
body:not(.home) .tpsx-decodewrap{margin-top:34px!important}
body:not(.home) .tpsx-decode{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:var(--e-global-color-cvblanc);border:1px solid var(--e-global-color-cvfilet);border-top:3px solid var(--e-global-color-primary);border-radius:0 0 4px 4px}
body:not(.home) .tpsx-dec{display:flex;flex-direction:column;gap:6px;padding:26px 24px 24px;border-right:1px solid var(--e-global-color-cvacier)}
body:not(.home) .tpsx-dec:last-child{border-right:0}
body:not(.home) .tpsx-deccode{font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:56px;font-weight:700;line-height:1;color:var(--e-global-color-primary);margin-bottom:12px}
body:not(.home) .tpsx-declab{font-size:11px;font-weight:600;line-height:1.3;letter-spacing:.14em;text-transform:uppercase;color:var(--e-global-color-cvgristexte)}
body:not(.home) .tpsx-decval{font-size:16px;font-weight:600;line-height:1.4;color:var(--e-global-color-secondary)}
body:not(.home) .tpsx-lexrow{gap:32px!important;align-items:flex-start!important;flex-wrap:nowrap!important}
body:not(.home) .tpsx-lexcol{flex:1 1 0!important;min-width:0;gap:14px!important}
body:not(.home) .tpsx-colh .elementor-heading-title{font-size:14px!important;line-height:1.3!important;letter-spacing:.06em;text-transform:uppercase;color:var(--e-global-color-secondary)!important}
body:not(.home) .tpsx-lexnote{margin-top:28px!important}
body:not(.home) .tps-spec code,body:not(.home) .tpsx-formulewrap code,body:not(.home) .tpsx-corr code,body:not(.home) .tps-secdesc code{font-family:'IBM Plex Mono',monospace;font-size:.92em;font-weight:500;color:var(--e-global-color-secondary);background:var(--e-global-color-cvacier);border-radius:2px;padding:2px 7px;white-space:nowrap}
body:not(.home) .tpsx-codes tbody th{width:88px!important}
body:not(.home) .tpsx-codes tbody th code{color:var(--e-global-color-primary);font-weight:600}
body:not(.home) .tpsx-formules tbody th{width:44%!important;font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-weight:400!important;font-size:14.5px!important;color:var(--e-global-color-text)!important}
body:not(.home) .tpsx-formules tbody th strong{color:var(--e-global-color-secondary)}
body:not(.home) .tpsx-formulewrap p{font-size:15px;line-height:1.6;color:var(--e-global-color-text);margin:0 0 14px}
body:not(.home) .tpsx-formulewrap .tpsx-formule{margin:0 0 12px;padding:22px 24px;background:var(--e-global-color-cvblanc);border:1px solid var(--e-global-color-cvfilet);border-left:3px solid var(--e-global-color-primary);border-radius:0 4px 4px 0}
body:not(.home) .tpsx-formulewrap .tpsx-formule code{font-size:18px;background:transparent;padding:0;white-space:normal}
body:not(.home) .tpsx-motifs{gap:20px!important;flex-wrap:nowrap!important}
body:not(.home) .tpsx-motif{flex:1 1 0!important;min-width:0}
body:not(.home) .tpsx-motif img{width:100%!important;aspect-ratio:4/3;object-fit:cover;border-radius:4px;display:block}
body:not(.home) .tpsx-motif .widget-image-caption,body:not(.home) .tpsx-motif figcaption{font-size:13.5px;line-height:1.45;color:var(--e-global-color-cvgristexte);text-align:left;margin-top:10px}
body:not(.home) .tpsx-trames{margin-top:30px!important}
body:not(.home) .tpsx-trames p,body:not(.home) .tpsx-normes p{align-items:center}
body:not(.home) .tpsx-chipslab{font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--e-global-color-cvgristexte);margin-right:6px}
body:not(.home) .tpsx-trames .tpsx-chip,body:not(.home) .tpsx-normes .tpsx-chip{font-family:'IBM Plex Mono',monospace;font-weight:600;cursor:default}
body:not(.home) .tpsx-trames .tpsx-chip:hover,body:not(.home) .tpsx-normes .tpsx-chip:hover{background:var(--e-global-color-cvblanc);color:var(--e-global-color-primary)}
body:not(.home) .tpsx-normes{margin-top:22px!important}
body:not(.home) .tpsx-rcards{gap:24px!important;align-items:stretch!important;flex-wrap:nowrap!important}
body:not(.home) .tpsx-rcard{flex:1 1 0!important;min-width:0;gap:14px!important;padding:30px 32px 32px!important;background:var(--e-global-color-cvblanc);border-top:3px solid var(--e-global-color-primary);border-radius:0 0 4px 4px}
body:not(.home) .tpsx-rcardh .elementor-heading-title{font-size:21px!important;line-height:1.3!important;color:var(--e-global-color-secondary)!important}
body:not(.home) .tpsx-rcardtxt p{font-size:15.5px;line-height:1.65;color:var(--e-global-color-text);margin:0}
body:not(.home) .tpsx-rcard .elementor-widget-button{margin-top:auto!important}
body:not(.home) .tpsx-notation{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:30px 0 0}
body:not(.home) .tpsx-notation>div{padding:18px 20px;background:var(--e-global-color-cvblanc);border:1px solid var(--e-global-color-cvfilet);border-radius:4px}
body:not(.home) .tpsx-notation dt{font-family:'IBM Plex Mono',monospace;font-size:22px;font-weight:600;line-height:1.2;color:var(--e-global-color-primary)}
body:not(.home) .tpsx-notation dd{margin:6px 0 0;font-size:14.5px;line-height:1.5;color:var(--e-global-color-text)}
body:not(.home) .tpsx-corr{margin-top:26px!important;overflow-x:auto}
body:not(.home) .tpsx-corr table{width:100%;min-width:640px;margin:0;border-collapse:collapse;background:var(--e-global-color-cvblanc);font-size:14px}
body:not(.home) .tpsx-corr th,body:not(.home) .tpsx-corr td{padding:9px 8px;text-align:center;border:1px solid var(--e-global-color-cvfiletclair)!important;font-variant-numeric:tabular-nums;background:transparent}
body:not(.home) .tpsx-corr thead th{background:var(--e-global-color-secondary)!important;color:var(--e-global-color-cvblanc);font-family:'IBM Plex Mono',monospace;font-size:13px;font-weight:600}
body:not(.home) .tpsx-corr tbody th{background:var(--e-global-color-cvacier)!important;font-family:'IBM Plex Mono',monospace;font-size:13px;font-weight:600;color:var(--e-global-color-secondary)}
body:not(.home) .tpsx-corr td{color:var(--e-global-color-text)}
body:not(.home) .tpsx-corr td.na{color:var(--e-global-color-cvfilet)}
body:not(.home) .tpsx-corr td.hi{background:var(--e-global-color-primary)!important;color:var(--e-global-color-cvblanc);font-weight:700}
body:not(.home) .tpsx-corr tbody tr:hover td:not(.hi){background:#F6F9FB}
body:not(.home) .tpsx-docgrid{gap:24px!important}
body:not(.home) .tpsx-doccard{flex:1 1 calc(33.333% - 16px)!important;min-width:260px;max-width:calc(33.333% - 16px);gap:18px!important;padding:28px 28px 30px!important;background:var(--e-global-color-cvblanc);border:1px solid var(--e-global-color-cvfilet);border-top:3px solid var(--e-global-color-primary);border-radius:0 0 4px 4px}
body:not(.home) .tpsx-doccard .elementor-widget-button{margin-top:auto!important}
body:not(.home) .tpsx-docicon{position:relative;display:inline-flex;align-items:flex-end;justify-content:center;width:40px;height:50px;padding-bottom:7px;background:var(--e-global-color-cvacier);border:1.5px solid var(--e-global-color-primary);clip-path:polygon(0 0,70% 0,100% 22%,100% 100%,0 100%);font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:10.5px;font-weight:700;letter-spacing:.06em;color:var(--e-global-color-primary)}
body:not(.home) .tpsx-docicon::after{content:"";position:absolute;top:-1px;right:-1px;width:12px;height:12px;background:var(--e-global-color-primary);clip-path:polygon(0 0,100% 100%,0 100%)}
body:not(.home) .tpsx-doctxt h3{font-size:19px;line-height:1.3;color:var(--e-global-color-secondary);margin:18px 0 8px}
body:not(.home) .tpsx-doctxt p{font-size:15px;line-height:1.6;color:var(--e-global-color-text);margin:0}
@media(max-width:1024px){body:not(.home) .tpsx-lexrow,body:not(.home) .tpsx-rcards{flex-direction:column!important;flex-wrap:wrap!important}
body:not(.home) .tpsx-lexcol,body:not(.home) .tpsx-rcard{width:100%!important;flex-basis:auto!important}
body:not(.home) .tpsx-motifs{flex-wrap:wrap!important}
body:not(.home) .tpsx-motif{flex:1 1 calc(50% - 10px)!important}
body:not(.home) .tpsx-doccard{flex-basis:calc(50% - 12px)!important;max-width:calc(50% - 12px)}}
@media(max-width:767px){body:not(.home) .tpsx-decode{grid-template-columns:repeat(2,minmax(0,1fr))}
body:not(.home) .tpsx-dec{padding:20px 18px}
body:not(.home) .tpsx-dec:nth-child(2){border-right:0}
body:not(.home) .tpsx-dec:nth-child(-n+2){border-bottom:1px solid var(--e-global-color-cvacier)}
body:not(.home) .tpsx-deccode{font-size:44px}
body:not(.home) .tpsx-notation{grid-template-columns:1fr 1fr}
body:not(.home) .tpsx-doccard{flex-basis:100%!important;max-width:100%}
body:not(.home) .tpsx-rcard{padding:24px 22px 26px!important}}
/* Note de travail pour le client en bas de page (.tps-worknote) : TEMPORAIRE, a retirer avant la mise en ligne (2026-09-24) */
body .tps-worknote{background:#FFF6E6!important;border-top:3px solid #E0A04A}
body .tps-worknote .tpsx-wnlab .elementor-heading-title{display:inline-block;font-family:'IBM Plex Mono',monospace!important;font-size:11px!important;font-weight:600!important;line-height:1.3!important;letter-spacing:.08em;text-transform:uppercase;color:#8A4B10!important;background:#FFE7C2;border:1px solid #E8C79A;border-radius:2px;padding:5px 10px;margin:0 0 14px}
body .tps-worknote .tpsx-wntitle .elementor-heading-title{font-size:26px!important;line-height:1.25!important;color:var(--e-global-color-secondary)!important;margin:0!important}
body .tps-worknote .tpsx-wnintro p{font-size:15px;line-height:1.6;color:var(--e-global-color-text);margin:10px 0 0}
body .tps-worknote .tpsx-wnrow{gap:24px!important;align-items:stretch!important;flex-wrap:nowrap!important;margin-top:26px}
body .tps-worknote .tpsx-wncol{flex:1 1 0!important;min-width:0;gap:10px!important;padding:22px 24px!important;background:var(--e-global-color-cvblanc);border:1px solid #F0D9B5;border-radius:4px}
body .tps-worknote .tpsx-wnh .elementor-heading-title{font-size:13px!important;line-height:1.3!important;letter-spacing:.06em;text-transform:uppercase;color:#8A4B10!important}
body .tps-worknote .tpsx-wntxt ul{margin:0;padding-left:18px}
body .tps-worknote .tpsx-wntxt li{font-size:14.5px;line-height:1.55;color:var(--e-global-color-text);margin:0 0 9px}
body .tps-worknote .tpsx-wntxt li:last-child{margin-bottom:0}
body .tps-worknote .tpsx-wntxt li::marker{color:#E0A04A}
body .tps-worknote .tpsx-wntxt strong{color:var(--e-global-color-secondary)}
@media(max-width:1366px){body .tps-worknote>.e-con-inner{padding-left:22px!important;padding-right:22px!important}}
@media(max-width:1024px){body .tps-worknote .tpsx-wnrow{flex-direction:column!important}
body .tps-worknote .tpsx-wncol{width:100%!important;flex-basis:auto!important}}
@media(max-width:767px){body .tps-worknote .tpsx-wntitle .elementor-heading-title{font-size:22px!important}}
/* Bibliotheque : grille de 4 documents en 2 colonnes + ligne format / version / poids (retours client 2026-09-25) */
body:not(.home) .tpsx-docgrid--2 .tpsx-doccard{flex-basis:calc(50% - 12px)!important;max-width:calc(50% - 12px)}
body:not(.home) .tpsx-doctxt .tpsx-docmeta{margin-top:10px;font-family:'IBM Plex Mono',monospace;font-size:12px;letter-spacing:.02em;color:var(--e-global-color-cvgristexte)}
@media(max-width:767px){body:not(.home) .tpsx-docgrid--2 .tpsx-doccard{flex-basis:100%!important;max-width:100%}}
/* Liens dans le chapo des bandeaux sombres : bleu clair souligne (contraste suffisant sur fond nuit) */
body:not(.home) .tps-hero .tps-hlede a{color:var(--e-global-color-cvbleuclair)!important;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
body:not(.home) .tps-hero .tps-hlede a:hover{color:var(--e-global-color-cvblanc)!important}
/* Calculateur (retour client 2026-09-25) : liste du bloc « Pourquoi calculer le taux de vide ? » et chapo de la section formulaire, qui remplace la phrase d'introduction du plugin (.cvsp-sub) */body:not(.home) .tpsx-whylist ul{list-style:none;margin:6px 0 0;padding:0}body:not(.home) .tpsx-whylist li{position:relative;margin:0;padding:11px 0 11px 26px;border-bottom:1px solid var(--e-global-color-cvfilet);font-size:16px;line-height:1.55;color:var(--e-global-color-text)}body:not(.home) .tpsx-whylist li:first-child{border-top:1px solid var(--e-global-color-cvfilet)}body:not(.home) .tpsx-whylist li::before{content:"";position:absolute;left:3px;top:19px;width:8px;height:8px;background:var(--e-global-color-primary);border-radius:1px}body:not(.home) .tpsx-calcdesc{margin:14px 0 40px!important}body:not(.home) .tpsx-calcdesc p{font-size:16.5px;line-height:1.7;color:var(--e-global-color-cvgristexte);max-width:760px;margin:0}body:not(.home) .tpsx-calcsec #cvsp-root .cvsp-sub{display:none}@media(max-width:767px){body:not(.home) .tpsx-calcdesc{margin-bottom:28px!important}body:not(.home) .tpsx-whylist li{font-size:15px}}
/* ===== TABLEAUX EN MOBILE (<= 767 px) — audit responsive du 2026-09-28 =====
   Formules des abaques : <code> en nowrap -> tableau plus large que l'écran, coupé à droite (overflow:hidden du tableau).
   Fiches produit et abaques (NL, EN surtout) : mots longs + marges des cellules empêchaient le tableau de se resserrer. */
@media (max-width:767px){
body:not(.home) .tps-spec td code{white-space:normal;overflow-wrap:anywhere}
body:not(.home) .tps-spec th,body:not(.home) .tps-spec td{overflow-wrap:break-word;padding-left:10px;padding-right:10px}
/* Césure seulement en néerlandais (mots composés longs) : en FR/EN elle coupait des mots qui tenaient déjà. */
html[lang^="nl"] body:not(.home) .tps-spec th,html[lang^="nl"] body:not(.home) .tps-spec td{hyphens:auto}
}
/* ===== TITRE « PERFORATIECATALOGUS » (page NL 1442) SUR PETIT TÉLÉPHONE — audit responsive du 2026-09-28 =====
   Un seul mot de 19 lettres dans le cadre perforé : à 32 px il touchait le bord droit sous 400 px. */
@media (max-width:400px){
body.page-id-1442 .elementor-widget-heading h1.elementor-heading-title{font-size:28px!important}
}
/* ==== TPS-INTERIEUR:END ==== */

/* ==== TPS-RELECTURE:START ==== */
/* MODE RELECTURE DESACTIVE le 2026-09-23 (demande utilisateur).
   Le bloc complet est conserve ici : tps-build/sept23/tps-relecture-actif.css
   et sur le serveur : novamira-sandbox/backup-css-relecture-2026-09-23.txt
   Pour le remettre : recoller le bloc a la place de celui-ci et reactiver le Code Snippet 9.
   Sans ses styles, les reperes (.tps-rv-add, .tps-rv-typo, .tps-rv-addw...) sont invisibles ;
   seule la legende doit etre masquee. */
body .tps-rv-legend{display:none!important}
/* ==== TPS-RELECTURE:END ==== */

/* ==== TPS-ACCUEIL:START ==== */body:where(.home){--tps-perf-dot:0.85px;--tps-perf-feather:1.25px;--tps-perf-grid:3.7px}
/* ============ ACCUEIL TPS — DA (couleurs en !important : le widget Heading d'Elementor force la couleur globale Primary) ============ */

/* --- Kickers / eyebrows (mono orange) --- */body:where(.home) .tps-kicker .elementor-heading-title,body:where(.home) .tps-eyebrow .elementor-heading-title{font-weight:500!important;color:var(--e-global-color-cvgristexte)!important}

/* --- HERO --- */body:where(.home) .tps-h1 .elementor-heading-title{font-size:clamp(34px,4.6vw,56px)!important;line-height:1!important;margin-bottom:18px}body:where(.home) .tps-lede,body:where(.home) .tps-lede p{color:var(--e-global-color-cvtextenuit)!important;font-size:18px!important;line-height:1.55!important;max-width:56ch;margin-bottom:4px}

/* --- Titres de section --- */body:where(.home) .tps-h2 .elementor-heading-title{line-height:1.2}body:where(.home) .tps-center .elementor-heading-title{text-align:center;max-width:none;margin-left:auto;margin-right:auto}

/* --- Chiffres clés --- */body:where(.home) .tps-statcol{position:relative;z-index:1;padding:26px 22px!important;border-left:0!important;background:transparent!important}body:where(.home) .tps-stat .elementor-counter-number-wrapper{font-size:clamp(30px,3.4vw,44px)!important;line-height:1!important;color:var(--e-global-color-secondary)!important;justify-content:flex-start}body:where(.home) .tps-stat .elementor-counter-number-prefix{flex-grow:0!important;color:var(--e-global-color-primary)!important}body:where(.home) .tps-stat .elementor-counter-title{font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-size:13.5px!important;font-weight:600!important;color:var(--e-global-color-cvgristexte)!important;text-align:left!important;margin-top:10px;line-height:1.4}

/* --- Points forts --- */body:where(.home) .tps-pluscol{padding-top:22px}body:where(.home) .tps-plus .elementor-icon-box-title a{color:var(--e-global-color-secondary)!important}

/* --- Cartes image --- */body:where(.home) .tps-sol .elementor-image-box-img,body:where(.home) .tps-rea .elementor-image-box-img{margin-bottom:16px!important;overflow:hidden;border-radius:4px}body:where(.home) .tps-sol .elementor-image-box-img img,body:where(.home) .tps-rea .elementor-image-box-img img{width:100%;height:auto;display:block;transition:transform .5s ease}body:where(.home) .tps-solcol:hover .elementor-image-box-img img,body:where(.home) .tps-reacol:hover .elementor-image-box-img img{transform:scale(1.06)}body:where(.home) .tps-sol .elementor-image-box-title,body:where(.home) .tps-rea .elementor-image-box-title{font-size:16.5px!important;margin-bottom:7px!important;line-height:1.25!important;padding-bottom:9px;border-bottom:1px solid var(--e-global-color-cvacier);position:relative}body:where(.home) .tps-sol .elementor-image-box-title::before,body:where(.home) .tps-rea .elementor-image-box-title::before{content:"";position:absolute;left:50%;transform:translateX(-50%);bottom:-1px;width:28px;height:2px;background:var(--e-global-color-primary)}body:where(.home) .tps-sol .elementor-image-box-title a,body:where(.home) .tps-rea .elementor-image-box-title a{color:var(--e-global-color-secondary)!important;transition:color .15s}body:where(.home) .tps-solcol:hover .elementor-image-box-title a,body:where(.home) .tps-reacol:hover .elementor-image-box-title a{color:var(--e-global-color-primary)!important}body:where(.home) .tps-sol .elementor-image-box-description,body:where(.home) .tps-rea .elementor-image-box-description{font-size:14px!important;line-height:1.5!important;color:var(--e-global-color-cvgristexte)!important;margin-top:8px}

/* --- Process --- */body:where(.home) .tps-step{border-top:2px solid #CFD8E1;padding-top:16px}body:where(.home) .tps-stepn .elementor-heading-title{font-size:11px!important;font-weight:500!important;color:var(--e-global-color-cvgristexte)!important;margin-bottom:8px}body:where(.home) .tps-stept .elementor-heading-title{font-size:15.5px!important;color:var(--e-global-color-secondary)!important;line-height:1.25!important;margin-bottom:5px}body:where(.home) .tps-steps,body:where(.home) .tps-steps p{font-size:12px!important;color:var(--e-global-color-cvgristexte)!important;line-height:1.4!important}body:where(.home) .tps-specline{margin:4px 0 22px}body:where(.home) .tps-specline strong{color:var(--e-global-color-primary)!important;}

/* --- Boutons lignés --- */

/* --- Confiance (fond nuit) --- */body:where(.home) .tps-trust{position:relative;overflow:hidden}body:where(.home) .tps-trust::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,currentColor 2.4px,transparent 2.9px),radial-gradient(circle,currentColor 2.4px,transparent 2.9px);background-size:17px 17px;background-position:0 0,8.5px 8.5px;color:var(--e-global-color-cvblanc);opacity:.07;pointer-events:none}body:where(.home) .tps-trust > *{position:relative;z-index:1}body:where(.home) .tps-trustlab .elementor-heading-title{font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-size:11px!important;letter-spacing:.16em!important;text-transform:uppercase!important;color:var(--e-global-color-cvbleuclair)!important;text-align:center;margin-bottom:14px}body:where(.home) .tps-trustnote .elementor-heading-title{font-size:clamp(22px,2.6vw,30px)!important;color:var(--e-global-color-cvblanc)!important;text-align:center;margin-bottom:16px}
/* --- FAQ --- */body:where(.home) .tps-faqwrap{margin:0 auto}body:where(.home) .tps-faq .elementor-active .elementor-tab-title a{color:var(--e-global-color-primary)!important}

/* --- CTA final (fond bleu) --- */body:where(.home) .tps-ctafinal::after{content:none}body:where(.home) .tps-ctafinal > *{position:relative;z-index:1}body:where(.home) .tps-ctad,body:where(.home) .tps-ctad p{max-width:54ch;margin:0 auto 22px}

/* --- Responsive --- */@media(max-width:1024px){body:where(.home) .tps-statcol,body:where(.home) .tps-pluscol,body:where(.home) .tps-solcol,body:where(.home) .tps-reacol{width:47%!important}body:where(.home) .tps-step{width:30%!important}
}@media(max-width:767px){body:where(.home) .tps-statcol,body:where(.home) .tps-pluscol,body:where(.home) .tps-solcol,body:where(.home) .tps-reacol,body:where(.home) .tps-step{width:100%!important}body:where(.home) .tps-lede,body:where(.home) .tps-lede p{font-size:16px!important}
}
/* ===== Lisibilite : petits labels orange sur fond CLAIR -> orange fonce (AA) ; orange vif conserve sur fond sombre ===== */body:where(.home) .tps-eyebrow .elementor-heading-title,body:where(.home) .tps-stepn .elementor-heading-title{color:var(--e-global-color-cvgristexte)!important;font-weight:600!important}body:where(.home) .tps-kicker .elementor-heading-title{color:var(--e-global-color-cvtexteclair)!important}

/* ===== Domaines d'application ===== */body:where(.home) .tps-appcol{flex:0 0 calc((100% - 88px)/5)!important;max-width:calc((100% - 88px)/5)!important;min-width:0!important;padding-top:16px}body:where(.home) .tps-apph .elementor-heading-title{font-size:12px!important;text-transform:uppercase!important;color:var(--e-global-color-primary)!important;padding-bottom:9px;margin-bottom:10px;border-bottom:1px solid var(--e-global-color-cvacier);position:relative;display:block;line-height:1.35}body:where(.home) .tps-apph .elementor-heading-title::before{content:"";position:absolute;left:0;bottom:-1px;width:28px;height:2px;background:var(--e-global-color-primary);transition:width .28s cubic-bezier(.22,1,.36,1)}body:where(.home) .tps-appcol:hover .tps-apph .elementor-heading-title::before{width:100%}body:where(.home) .tps-apph a.elementor-heading-title:hover{color:var(--e-global-color-cvbleufonce)!important}body:where(.home) .tps-applist .elementor-icon-list-icon{display:none!important}body:where(.home) .tps-applist .elementor-icon-list-item{margin:0!important;padding:0!important;border:0!important}body:where(.home) .tps-applist .elementor-icon-list-text{font-size:13.5px!important;line-height:1.35!important;color:var(--e-global-color-cvgristexte)!important;padding:5px 0!important;display:block}@media(max-width:1024px){body:where(.home) .tps-appcol{flex-basis:calc((100% - 44px)/3)!important;max-width:calc((100% - 44px)/3)!important} }@media(max-width:767px){body:where(.home) .tps-appcol{flex-basis:calc((100% - 22px)/2)!important;max-width:calc((100% - 22px)/2)!important} }
/* Hero : voile directionnel (sombre a gauche sous le texte, ouvre sur la facade a droite) */body:where(.home) .tps-hero::before{opacity:1!important;background:linear-gradient(100deg,rgba(13,21,32,.94) 0%,rgba(13,21,32,.86) 34%,rgba(13,21,32,.46) 66%,rgba(13,21,32,.16) 100%)!important}@media(max-width:1024px){body:where(.home) .tps-hero::before{opacity:1!important;background:linear-gradient(100deg,rgba(13,21,32,.92) 0%,rgba(13,21,32,.86) 58%,rgba(13,21,32,.58) 100%)!important}}

/* Cartes Solutions & Realisations : Elementor image-box plafonne la figure a 30% de la carte -> pleine largeur + cadrage regulier */body:where(.home) .tps-sol .elementor-image-box-img,body:where(.home) .tps-rea .elementor-image-box-img{width:100%!important;margin:0 0 18px 0!important;overflow:hidden;position:relative;background:var(--e-global-color-cvacier)}body:where(.home) .tps-sol .elementor-image-box-img img,body:where(.home) .tps-rea .elementor-image-box-img img{width:100%!important;height:196px!important;object-fit:cover;display:block;transition:transform .5s ease}body:where(.home) .tps-sol:hover .elementor-image-box-img img,body:where(.home) .tps-rea:hover .elementor-image-box-img img{transform:scale(1.06)}@media(max-width:1024px){body:where(.home) .tps-sol .elementor-image-box-img img,body:where(.home) .tps-rea .elementor-image-box-img img{height:220px!important}}
/* Solutions : photos produit detourees sur fond blanc, affichees en entier */body:where(.home) .tps-sol .elementor-image-box-img{background:var(--e-global-color-cvblanc)}body:where(.home) .tps-sol .elementor-image-box-img img{object-fit:contain}

/* ==========================================================
   LANGAGE DA - LA TRAME PERFOREE COMME LANGAGE GRAPHIQUE
   Repris a l'identique de TPS-Design-System-DA-v1 :
   "Le motif vient du catalogue, pas de la decoration."
   - trame U (alignee)   : pas 15px          -> fonds de section, 4-8 %
   - trame Z (quinconce) : pas 17px / 8.5px  -> fonds sombres + survols de cartes
   - degrade de densite  : SVG, surface ouverte 1,2 -> 74,8 % = le vide sur plein
   ========================================================== */
/* Trame U en fond de la section savoir-faire */body:where(.home) .tps-process{position:relative;overflow:hidden}body:where(.home) .tps-process::before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,currentColor 2.4px,transparent 2.9px);background-size:15px 15px;color:var(--e-global-color-secondary);opacity:.05;pointer-events:none;z-index:0}body:where(.home) .tps-process > *{position:relative;z-index:1}
/* Degrade de densite : illustre litteralement le "2,5 -> 75 %" ecrit juste dessous */body:where(.home) .tps-specline{position:relative;margin-top:104px!important}body:where(.home) .tps-specline::before{content:"";position:absolute;left:-3px;right:0;top:-96px;height:85px;background:url(https://www.tolesperforees.fr/wp-content/uploads/tps-trame-bande.svg?v=3) left top/100% 100% no-repeat;opacity:.82;pointer-events:none}
/* Survol des cartes : trame Z + filet bleu (DA). z-index 0 + enfants en 1 :
   sinon le pseudo positionne passe DEVANT le texte (ordre de peinture CSS). */body:where(.home) .tps-solcol,body:where(.home) .tps-reacol{position:relative;border-top:2px solid transparent;transition:border-color .25s}body:where(.home) .tps-solcol > *,body:where(.home) .tps-reacol > *{position:relative;z-index:1}body:where(.home) .tps-solcol:hover,body:where(.home) .tps-reacol:hover{border-top-color:var(--e-global-color-primary)}
/* Ref. catalogue estampillee sur la photo - numerotation reelle de l'arborescence */body:where(.home) .tps-solcol::after,body:where(.home) .tps-reacol::after{position:absolute;top:10px;left:10px;z-index:2;font-size:10.5px;letter-spacing:.1em;color:var(--e-global-color-cvtexteclair);background:rgba(13,21,32,.78);padding:5px 9px;pointer-events:none}body:where(.home) .tps-solcol:nth-child(1)::after{content:"RÉF. 2.1.1"}body:where(.home) .tps-solcol:nth-child(2)::after{content:"RÉF. 2.1.2"}body:where(.home) .tps-solcol:nth-child(3)::after{content:"RÉF. 2.1.3"}body:where(.home) .tps-solcol:nth-child(4)::after{content:"RÉF. 2.2"}
/* Cotes chantier sur les realisations (photos reellement issues de ces chantiers) */body:where(.home) .tps-reacol:nth-child(1)::after{content:"CCI, VALENCIENNES"}body:where(.home) .tps-reacol:nth-child(2)::after{content:"CLÔTURE DÉCORATIVE — MAUBEUGE"}body:where(.home) .tps-reacol:nth-child(3)::after{content:"SOUDURE TIG — ATELIER MAUBEUGE"}body:where(.home) .tps-reacol:nth-child(4)::after{content:"FILTRATION INOX — SUR PLAN"}
/* Legendes des realisations et reperes des solutions en EN / NL (traduction 2026-09-25) : :lang() suit l'attribut lang de la page (en-GB, nl-BE) */body:where(.home):lang(en) .tps-reacol:nth-child(1)::after{content:"CHAMBER OF COMMERCE, VALENCIENNES"}body:where(.home):lang(en) .tps-reacol:nth-child(2)::after{content:"DECORATIVE FENCE — MAUBEUGE"}body:where(.home):lang(en) .tps-reacol:nth-child(3)::after{content:"TIG WELDING — MAUBEUGE WORKSHOP"}body:where(.home):lang(en) .tps-reacol:nth-child(4)::after{content:"STAINLESS FILTRATION — BUILT TO DRAWING"}body:where(.home):lang(en) .tps-solcol:nth-child(1)::after{content:"REF. 2.1.1"}body:where(.home):lang(en) .tps-solcol:nth-child(2)::after{content:"REF. 2.1.2"}body:where(.home):lang(en) .tps-solcol:nth-child(3)::after{content:"REF. 2.1.3"}body:where(.home):lang(en) .tps-solcol:nth-child(4)::after{content:"REF. 2.2"}body:where(.home):lang(nl) .tps-reacol:nth-child(1)::after{content:"KAMER VAN KOOPHANDEL, VALENCIENNES"}body:where(.home):lang(nl) .tps-reacol:nth-child(2)::after{content:"DECORATIEVE OMHEINING — MAUBEUGE"}body:where(.home):lang(nl) .tps-reacol:nth-child(3)::after{content:"TIG-LASSEN — WERKPLAATS MAUBEUGE"}body:where(.home):lang(nl) .tps-reacol:nth-child(4)::after{content:"INOX FILTRATIE — VOLGENS TEKENING"}body:where(.home):lang(nl) .tps-solcol:nth-child(1)::after{content:"REF. 2.1.1"}body:where(.home):lang(nl) .tps-solcol:nth-child(2)::after{content:"REF. 2.1.2"}body:where(.home):lang(nl) .tps-solcol:nth-child(3)::after{content:"REF. 2.1.3"}body:where(.home):lang(nl) .tps-solcol:nth-child(4)::after{content:"REF. 2.2"}

/* ==========================================================
   GOUTTIERE LATERALE
   Les conteneurs sont en padding vertical seul : la marge laterale
   ne venait QUE du max-width 1240 centre. Sous 1240 de viewport il n'y
   avait donc plus AUCUNE marge -> 8 sections sur 10 avaient leur texte
   colle au bord (mobile, mais aussi un portable en 1100).
   Seuil 1287 = 1240 + 2x24 -> garantit toujours >=24px de gouttiere. */@media(max-width:1366px){body:where(.home) .tps-hero > .e-con-inner,body:where(.home) .tps-stats > .e-con-inner,body:where(.home) .tps-sec > .e-con-inner,body:where(.home) .tps-trust > .e-con-inner,body:where(.home) .tps-ctafinal > .e-con-inner,body:where(.home) .tps-hero.e-con-full,body:where(.home) .tps-stats.e-con-full,body:where(.home) .tps-sec.e-con-full,body:where(.home) .tps-trust.e-con-full,body:where(.home) .tps-ctafinal.e-con-full{padding-left:22px!important;padding-right:22px!important}
}

/* ==========================================================
   CORNIERE - signe distinctif tire du LOGO
   Geometrie relevee au pixel sur logo-TPS.jpg :
     bras horizontal 39px / bras vertical 40px = BRAS EGAUX
     epaisseur 8px -> RATIO epaisseur:longueur = 1:5
     couleur #9B9B9B, posee en DIAGONALE (haut-gauche + bas-droite),
     jamais aux 4 coins : c'est un cadrage asymetrique, comme des
     traits de coupe. En metallurgie, une corniere = un profile d'angle.
   Offsets negatifs : la corniere encadre le texte SANS le decaler,
   donc les titres restent alignes sur la grille.
   ========================================================== */body:where(.home){--tps-corn-ep:9px;--tps-corn-l:46px;--tps-corn-c:#9B9B9B}body:where(.home) n.tps-eyebrow .elementor-heading-title{display:inline-block;position:relative}

/* ==========================================================
   CARRE BLEU - 2e signe distinctif du logo
   Dans le logo : carre PARFAIT (77x81 px), 80 % de la hauteur,
   pose a droite. Il ne borde rien : il TRAVERSE le lockup, et le S
   qui tombe dedans s'inverse en blanc. Principe repris ici : un plan
   bleu plein qui casse la photo, contenu inverse en blanc, et qui
   porte la date que le logo loge deja dans sa corniere bas-droite.
   ::before = voile degrade, ::after = cote -> le carre se pose donc
   sur le ::after de l'inner (grille 1240), a droite du bloc de titre.
   ========================================================== */

/* Le carre bleu devient l'INDEX DE SECTION : pose a droite du kicker,
   soit exactement sa place dans le logo (a droite du lockup), contenu
   inverse en blanc. Repete, il fait systeme au lieu de decorer -- et la DA
   numerote elle-meme ses sections ("01 / PARTI PRIS").
   Le bloc de titre rejoue alors la structure du logo :
   corniere -> texte -> carre bleu -> corniere. */body:where(.home) .tps-eyebrow .elementor-heading-title::after{content:attr(data-idx);display:none}body:where(.home) .tps-sec .tps-eyebrow .elementor-heading-title::after{display:none;align-items:center;justify-content:center;width:28px;height:28px;margin-left:16px;vertical-align:middle;background:var(--e-global-color-primary);color:var(--e-global-color-cvblanc)!important;font-family:var(--e-global-typography-text-font-family),sans-serif;font-size:12px;font-weight:500;letter-spacing:.04em;pointer-events:none}body:where(.home) .tps-sec:nth-child(3) .tps-eyebrow .elementor-heading-title::after{content:"01"}body:where(.home) .tps-sec:nth-child(4) .tps-eyebrow .elementor-heading-title::after{content:"02"}body:where(.home) .tps-sec:nth-child(5) .tps-eyebrow .elementor-heading-title::after{content:"03"}body:where(.home) .tps-sec:nth-child(6) .tps-eyebrow .elementor-heading-title::after{content:"04"}body:where(.home) .tps-sec:nth-child(7) .tps-eyebrow .elementor-heading-title::after{content:"05"}body:where(.home) .tps-sec:nth-child(9) .tps-eyebrow .elementor-heading-title::after{content:"06"}

/* PISTE 3 - le plan bleu qui casse la barre de chiffres cles.
   Principe du logo : un plan bleu plein traverse une serie reguliere,
   et ce qui tombe dedans s'inverse en blanc. Ici il casse le rythme des
   4 cellules. Cellule 1 = "125 ans - depuis 1899", la donnee patrimoniale
   que le logo porte deja dans sa corniere. */

/* ==========================================================
   DEGAGEMENT DU HEADER EN OVERLAP
   Le header est en position:absolute (Sticky Header Effects) : il ne
   pousse plus le contenu, le hero demarre donc a y=0 et passait SOUS lui.
   Mesure : header 81px en desktop, mais 129px en mobile (logo + burger +
   CTA empiles) alors que le kicker etait a y=91 -> il etait recouvert. */body:where(.home) .tps-hero > .e-con-inner{justify-content:center}


/* ==========================================================
   TRAME PERFOREE ANIMEE (hero)
   Le canvas peint le meme voile directionnel que le ::before CSS, puis
   y PERCE des trous (destination-out) : la facade apparait dans les trous.
   Le rayon suit le degrade de densite de la DA (2,5 % -> 75 %) : trous
   minuscules a gauche => le voile reste dense sous le texte ; ouverts a
   droite => la photo respire. Une onde lente traverse la tole.
   Le ::before CSS reste le VOILE DE SECOURS : il n'est coupe que si le JS
   a effectivement peint (classe .tps-perfo-on posee par le script).
   Sans JS / canvas KO -> voile CSS conserve, texte lisible. */body:where(.home) .tps-perfo{position:absolute!important;inset:0;z-index:0;pointer-events:none;margin:0!important;padding:0!important;width:auto!important}body:where(.home) .tps-perfo .tps-perfo-wrap{position:absolute;inset:0}body:where(.home) .tps-perfo .tps-perfo-cv{display:block;width:100%;height:100%}body:where(.home) .tps-hero.tps-perfo-on::before{opacity:0!important}
/* Le contenu repasse au-dessus du canvas. On positionne les ENFANTS et surtout
   PAS l'inner : un inner positionne deviendrait le bloc conteneur du canvas
   absolu, qui serait alors confine a la grille 1240 au lieu de couvrir le hero. */
/* Plans du hero : video (z-index 0) < voile ::before (1) < contenu (2).
   Le conteneur video etant POSITIONNE, il recouvrait le voile ::before qui le
   precede dans l'arbre. Avec un fond image (peint a l'etape 2) ca ne se voyait pas. */body:where(.home) .tps-hero > .e-con-inner > *:not(.tps-perfo):not(.elementor-background-video-container){position:relative;z-index:2}

/* ==========================================================
   PROCESS SUR FOND SOMBRE (bande image atelier)
   La section passe en image nuit -> tous ses textes basculent en clair.
   Scope .tps-process pour ne pas toucher les autres sections.
   ========================================================== */body:where(.home) .tps-process > *{position:relative;z-index:1}body:where(.home) .tps-process .tps-eyebrow .elementor-heading-title{color:var(--e-global-color-cvtexteclair)!important}body:where(.home) .tps-process .tps-h2 .elementor-heading-title{color:var(--e-global-color-cvblanc)!important}body:where(.home) .tps-process .tps-secdesc,body:where(.home) .tps-process .tps-secdesc p{color:var(--e-global-color-cvtextenuit)!important}body:where(.home) .tps-process .tps-stepn .elementor-heading-title{color:var(--e-global-color-cvbleuclair)!important}body:where(.home) .tps-process .tps-stept .elementor-heading-title{color:var(--e-global-color-cvblanc)!important}body:where(.home) .tps-process .tps-steps,body:where(.home) .tps-process .tps-steps p{color:#AEB9C6!important}body:where(.home) .tps-process .tps-step{border-top-color:var(--e-global-color-cvfiletnuit)!important}body:where(.home) .tps-process .tps-specline,body:where(.home) .tps-process .tps-specline p{color:var(--e-global-color-cvtextenuit)!important}body:where(.home) .tps-process .tps-specline strong{color:var(--e-global-color-cvbleuclair)!important}body:where(.home) .tps-process .tps-specline{border-left-color:var(--e-global-color-cvbleuclair)!important}body:where(.home) .tps-process .tps-btn-line .elementor-button{color:var(--e-global-color-cvblanc)!important;border-color:rgba(255,255,255,.55)!important}body:where(.home) .tps-process .tps-btn-line .elementor-button:hover{background:var(--e-global-color-cvblanc)!important;color:var(--e-global-color-secondary)!important;border-color:var(--e-global-color-cvblanc)!important}
/* trame U : etait #0D1520 (invisible sur nuit) -> blanc tres faible */body:where(.home) .tps-process::before{color:var(--e-global-color-cvblanc)!important;opacity:.04!important}

/* VOILE PROCESS (le voile natif Elementor n'a pas rendu -> CSS) */body:where(.home) .tps-process{position:relative;overflow:hidden}body:where(.home) .tps-process::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(180deg,rgba(13,21,32,.66) 0%,rgba(13,21,32,.82) 42%,rgba(13,21,32,.9) 100%)}

/* ==========================================================
   RESPIRATION VERTICALE (contenu trop serre)
   Sections simples etaient en 84/20 (bas serre) et incoherentes avec
   les 84/84 des autres. Padding uniforme + genereux, et de l'air entre
   le titre et le contenu (le gap kit de 20px les collait).
   ========================================================== */body:where(.home) .tps-sec > .e-con-inner{padding-top:96px!important;padding-bottom:96px!important}body:where(.home) .tps-stats > .e-con-inner{padding-top:60px!important;padding-bottom:60px!important}body:where(.home) .tps-trust > .e-con-inner{padding-top:70px!important;padding-bottom:70px!important}body:where(.home) .tps-ctafinal > .e-con-inner{padding-top:88px!important;padding-bottom:88px!important}
/* titre -> contenu : le conteneur de contenu prend de l'air sous le titre */body:where(.home) .tps-sec > .e-con-inner > .e-con{margin-top:26px}
/* mobile : padding vertical reduit (sinon sections enormes) */@media(max-width:767px){body:where(.home) .tps-sec > .e-con-inner{padding-top:58px!important;padding-bottom:58px!important}body:where(.home) .tps-stats > .e-con-inner{padding-top:44px!important;padding-bottom:44px!important}body:where(.home) .tps-trust > .e-con-inner{padding-top:48px!important;padding-bottom:48px!important}body:where(.home) .tps-ctafinal > .e-con-inner{padding-top:56px!important;padding-bottom:56px!important}body:where(.home) .tps-sec > .e-con-inner > .e-con{margin-top:20px}
}

/* FAQ ALIGNEE A GAUCHE (coherence : tous les boutons de section a gauche, seul le CTA final reste centre) */body:where(.home) .tps-faqsec > .e-con-inner{align-items:flex-start!important}body:where(.home) .tps-faqsec .tps-center .elementor-heading-title{text-align:left!important;margin-left:0!important;margin-right:0!important}body:where(.home) .tps-faqsec .tps-faqwrap{margin-left:0!important;margin-right:0!important}

/* ==========================================================
   CARRE BLEU GLISSANT (chiffres cles) — GSAP, footer charge deja gsap
   Le carre du logo devient un highlight qui visite les 4 chiffres en
   boucle. Cellule active = texte blanc. Fallback reduced-motion = fige
   sur la 1re. Le carre est un div absolu SOUS le contenu (z-index 0),
   les cellules en z-index 1 -> texte toujours au-dessus.
   ========================================================== */body:where(.home) .tps-stat-square{position:absolute;left:0;top:0;width:0;height:0;background:var(--e-global-color-primary);border-radius:2px;z-index:0;pointer-events:none;visibility:hidden}body:where(.home) .tps-statcol .elementor-counter-title{transition:color .35s ease}body:where(.home) .tps-statcol.stat-lit .elementor-counter-number-wrapper{color:var(--e-global-color-cvblanc)!important}body:where(.home) .tps-statcol.stat-lit .elementor-counter-number,body:where(.home) .tps-statcol.stat-lit .elementor-counter-number-prefix{background:radial-gradient(circle,var(--e-global-color-cvblanc) var(--tps-perf-dot),rgba(255,255,255,0) var(--tps-perf-feather)) 0 0/var(--tps-perf-grid) var(--tps-perf-grid);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent!important}body:where(.home) .tps-statcol.stat-lit .elementor-counter-title{color:#E8F2FA!important}

/* MOT PERFORATION EN POINTS (CTA final) — meme principe que les chiffres cles :
   le mot est litteralement perfore, blanc sur bleu, rappel du logo. */body:where(.home) .tps-ctah .tps-perf-dot{position:relative;display:inline-block;background-image:radial-gradient(circle,var(--e-global-color-cvblanc) var(--tps-perf-dot),rgba(255,255,255,0) var(--tps-perf-feather));background-size:var(--tps-perf-grid) var(--tps-perf-grid);background-position:0 0;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}body:where(.home) .tps-ctah .tps-perf-cover{position:absolute;left:0;top:0;white-space:nowrap;color:var(--e-global-color-cvblanc);-webkit-text-fill-color:var(--e-global-color-cvblanc);pointer-events:none}body:where(.home) .tps-ctah .tps-perf-bit{position:absolute;left:0;width:3px;background:linear-gradient(180deg,transparent,rgba(255,255,255,.95),transparent);box-shadow:0 0 9px 1px rgba(255,255,255,.75);opacity:0;pointer-events:none}


/* MOT PERÇONS EN POINTS (hero) — même traitement perforé que le CTA ; trame ×1,33 (56px vs 42px) pour une densité identique. Dots blancs = trous de lumière sur le hero sombre. */body:where(.home) .tps-h1 .tps-perf-dot{position:relative;z-index:1;display:inline-block;background-image:radial-gradient(circle,var(--e-global-color-cvblanc) var(--tps-perf-dot),rgba(255,255,255,0) var(--tps-perf-feather));background-size:var(--tps-perf-grid) var(--tps-perf-grid);background-position:0 0;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}body:where(.home) .tps-h1 .tps-perf-cover{position:absolute;left:0;top:0;white-space:nowrap;color:var(--e-global-color-cvblanc);-webkit-text-fill-color:var(--e-global-color-cvblanc);pointer-events:none}body:where(.home) .tps-h1 .tps-perf-bit{position:absolute;top:3%;left:0;height:94%;background:linear-gradient(180deg,transparent,rgba(255,255,255,.95),transparent);opacity:0;pointer-events:none}

/* CARRE BLEU HERO — plaque bleue (bleu logo) qui se pose derriere "percons" en meme temps que le percage, pour la lisibilite sur fond sombre (recree le fond bleu du CTA). Le carre est un FRERE derriere le mot : le background-clip:text du .tps-perf-dot le peindrait devant s'il etait enfant. */body:where(.home) .tps-h1 .tps-perf-wrap{position:relative;display:inline-block}body:where(.home) .tps-h1 .tps-perf-sq{position:absolute;top:-1px;bottom:-1px;z-index:0;background:var(--e-global-color-primary);border-radius:2px;pointer-events:none}

/* MOTS PERFORES SUR TITRES DE SECTION (.tps-h2) - texte fonce sur fond clair : trous #0D1520, foret bleu. Memes variables de trous (--tps-perf-*). Pas de carre bleu (contraste fonce-sur-clair deja bon). */body:where(.home) .tps-h2 .tps-perf-dot{position:relative;z-index:1;display:inline-block;background-image:radial-gradient(circle,var(--e-global-color-cvblanc) var(--tps-perf-dot),rgba(255,255,255,0) var(--tps-perf-feather));background-size:var(--tps-perf-grid) var(--tps-perf-grid);background-position:0 0;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}body:where(.home) .tps-h2 .tps-perf-cover{position:absolute;left:0;top:0;white-space:nowrap;pointer-events:none}body:where(.home) .tps-h2 .tps-perf-bit{position:absolute;top:3%;left:0;width:3px;height:94%;background:linear-gradient(180deg,transparent,rgba(255,255,255,.95),transparent);box-shadow:0 0 9px 1px rgba(255,255,255,.75);opacity:0;pointer-events:none}

/* CARRE BLEU sur titres de section (.tps-h2) : plaque bleue qui se pose en meme temps que le percage -> mot en points BLANCS sur bleu (lisible sur fond clair). Le cover reste #0D1520 pour l'etat initial lisible. Defaut visible = repli sans JS. */body:where(.home) .tps-h2 .tps-perf-wrap{position:relative;display:inline-block;margin:0 9px}body:where(.home) .tps-h2 .tps-perf-sq{position:absolute;top:-1px;bottom:-1px;left:-7px;right:-7px;z-index:0;background:var(--e-global-color-primary);border-radius:2px;pointer-events:none}

/* Retrait des badges REF sur les cartes Solutions (non pertinents pour le client). Les cotes chantier des Realisations (.tps-reacol::after) sont conservees. */body:where(.home) .tps-solcol::after{content:none!important;display:none!important}

/* Process (savoir-faire) : 6 etapes plus grandes + plus contrastees sur le fond atelier sombre. */body:where(.home) .tps-process::after{background:linear-gradient(180deg,rgba(13,21,32,.82) 0%,rgba(13,21,32,.90) 42%,rgba(13,21,32,.95) 100%)!important}body:where(.home) .tps-process .tps-stepn .elementor-heading-title{font-size:13px!important;color:#7CC4EF!important}body:where(.home) .tps-process .tps-stept .elementor-heading-title{font-size:19px!important;color:var(--e-global-color-cvblanc)!important}body:where(.home) .tps-process .tps-steps,body:where(.home) .tps-process .tps-steps p{font-size:14px!important;color:#DAE3EB!important}body:where(.home) .tps-process .tps-step{border-top-color:#3A4756!important}

/* FAQ EN 2 COLONNES : accordeon a gauche + image perforation pleine hauteur a droite (comble le vide a droite). Layout force en CSS (structure DOM). */body:where(.home) .tps-faqsec > .e-con-inner{flex-direction:row!important;flex-wrap:nowrap!important;align-items:stretch!important;gap:52px!important;width:100%!important;max-width:1240px!important;margin-left:auto!important;margin-right:auto!important}body:where(.home) .tps-faqleft{max-width:660px}body:where(.home) .tps-faqimg{align-self:stretch;min-height:100%}@media(max-width:880px){body:where(.home) .tps-faqsec > .e-con-inner{flex-direction:column!important}body:where(.home) .tps-faqleft{max-width:none!important}body:where(.home) .tps-faqimg{min-height:240px}
}

/* PROCESS : remplissage anime des bordures superieures, chacune leur tour, en boucle (facon pagination de carousel / stories). CSS pur, synchronise, sans JS. */body:where(.home) .tps-process .tps-step{position:relative}body:where(.home) .tps-process .tps-step::after{content:"";position:absolute;top:-2px;left:0;width:100%;height:2px;background:var(--e-global-color-cvblanc);box-shadow:0 0 6px rgba(255,255,255,.45);transform-origin:left;transform:scaleX(0);animation-duration:8s;animation-timing-function:linear;animation-iteration-count:infinite;z-index:2;pointer-events:none}body:where(.home) .tps-process .tps-step:nth-child(1)::after{animation-name:tps-fill-1}body:where(.home) .tps-process .tps-step:nth-child(2)::after{animation-name:tps-fill-2}body:where(.home) .tps-process .tps-step:nth-child(3)::after{animation-name:tps-fill-3}body:where(.home) .tps-process .tps-step:nth-child(4)::after{animation-name:tps-fill-4}body:where(.home) .tps-process .tps-step:nth-child(5)::after{animation-name:tps-fill-5}body:where(.home) .tps-process .tps-step:nth-child(6)::after{animation-name:tps-fill-6}
@keyframes tps-fill-1{0%{transform:scaleX(0)}10%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}
@keyframes tps-fill-2{0%{transform:scaleX(0)}10%{transform:scaleX(0)}20%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}
@keyframes tps-fill-3{0%{transform:scaleX(0)}20%{transform:scaleX(0)}30%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}
@keyframes tps-fill-4{0%{transform:scaleX(0)}30%{transform:scaleX(0)}40%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}
@keyframes tps-fill-5{0%{transform:scaleX(0)}40%{transform:scaleX(0)}50%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}
@keyframes tps-fill-6{0%{transform:scaleX(0)}50%{transform:scaleX(0)}60%{transform:scaleX(1)}85%{transform:scaleX(1)}95%{transform:scaleX(0)}100%{transform:scaleX(0)}}@media(prefers-reduced-motion:reduce){body:where(.home) .tps-process .tps-step::after{animation:none!important;display:none}}
/* ====== DOMAINES EN CARTES PHOTO (grille 3x2) ====== */body:where(.home) .tps-appgrid{flex-wrap:wrap!important;gap:24px!important;align-items:stretch!important}body:where(.home) .tps-appcard{flex:0 0 calc((100% - 48px)/3)!important;max-width:calc((100% - 48px)/3)!important;min-width:0!important;display:flex;flex-direction:column;background:var(--e-global-color-cvblanc);border:1px solid var(--e-global-color-cvfiletclair);border-radius:4px;overflow:hidden;padding:0!important;transition:border-color .2s,box-shadow .2s,transform .2s}body:where(.home) .tps-appcard:hover{border-color:#CBD6DF;box-shadow:0 12px 30px -18px rgba(13,21,32,.35);transform:translateY(-3px)}body:where(.home) .tps-appcard-img{height:158px;background-size:cover;background-position:center;position:relative;overflow:hidden}body:where(.home) .tps-appcard-body{padding:20px 20px 22px!important;display:flex;flex-direction:column}body:where(.home) .tps-appcard .tps-apph .elementor-heading-title{margin-bottom:12px}body:where(.home) .tps-appcard:hover .tps-apph .elementor-heading-title::before{width:100%}
/* carte CTA navy */body:where(.home) .tps-appcard-cta{background:var(--e-global-color-secondary)!important;justify-content:center;padding:28px 24px!important;border-color:var(--e-global-color-secondary)!important}body:where(.home) .tps-appcta-k .elementor-heading-title{font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-size:12px!important;letter-spacing:.14em!important;text-transform:uppercase!important;color:var(--e-global-color-cvbleuclair)!important;margin-bottom:12px}body:where(.home) .tps-appcta-d,body:where(.home) .tps-appcta-d p{color:var(--e-global-color-cvtextenuit)!important;font-size:14.5px!important;line-height:1.55!important;margin-bottom:20px}body:where(.home) .tps-appcard-cta .tps-btn-ghost .elementor-button{background:transparent!important;color:var(--e-global-color-cvblanc)!important;border:1.5px solid rgba(255,255,255,.55)!important}body:where(.home) .tps-appcard-cta .tps-btn-ghost .elementor-button:hover{background:rgba(255,255,255,.12)!important;border-color:var(--e-global-color-cvblanc)!important}@media(max-width:1024px){body:where(.home) .tps-appcard{flex-basis:calc((100% - 24px)/2)!important;max-width:calc((100% - 24px)/2)!important}}@media(max-width:767px){body:where(.home) .tps-appcard{flex-basis:100%!important;max-width:100%!important}}


/* Taille titres cartes domaines (12 -> 15px) */body:where(.home) .tps-appcard .tps-apph .elementor-heading-title{font-size:15px!important;padding-bottom:11px!important;margin-bottom:12px!important}


/* Bouton carte domaine (CTA clair en bas de carte) */body:where(.home) .tps-appbtn{margin-top:auto!important;padding-top:16px!important}body:where(.home) .tps-appbtn .elementor-button{background:transparent!important;color:var(--e-global-color-primary)!important;border:1.5px solid var(--e-global-color-primary)!important;padding:9px 16px!important;font-size:12.5px!important;letter-spacing:.02em!important;border-radius:3px!important;transition:background .15s,color .15s}body:where(.home) .tps-appbtn .elementor-button:hover{background:var(--e-global-color-primary)!important;color:var(--e-global-color-cvblanc)!important}


/* Alignement bas boutons cartes : le body remplit la hauteur, l'image reste fixe */body:where(.home) .tps-appcard-body{flex:1 1 auto!important}body:where(.home) .tps-appcard-img{flex:0 0 158px!important}


/* Trame perforee carte CTA (meme recette que la section Confiance) */body:where(.home) .tps-appcard-cta{position:relative;overflow:hidden}body:where(.home) .tps-appcard-cta::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,currentColor 2.4px,transparent 2.9px),radial-gradient(circle,currentColor 2.4px,transparent 2.9px);background-size:17px 17px;background-position:0 0,8.5px 8.5px;color:var(--e-global-color-cvblanc);opacity:.07;pointer-events:none;z-index:0}body:where(.home) .tps-appcard-cta > *{position:relative;z-index:1}


/* L'image FAQ ne doit plus suivre la hauteur de l'accordeon (elle changeait a chaque
   ouverture/fermeture, effet perturbant). image FAQ independante : on la sort du stretch
   et sa hauteur derive de sa PROPRE largeur (ratio), donc stable. */body:where(.home) .tps-faqimg{align-self:flex-start!important;aspect-ratio:5/6}@media(max-width:880px){body:where(.home) .tps-faqimg{aspect-ratio:auto}}


/* hauteur FAQ reservee : on reserve la hauteur du plus grand etat de l'accordeon pour que
   la section (et donc le CTA en dessous) ne monte/descende plus a l'ouverture. Valeurs
   mesurees par plage : la colonne etant plus etroite en dessous de 1366, les reponses
   se replient sur plus de lignes et l'amplitude augmente (43px @1440 -> 108px @885). */body:where(.home) .tps-faqleft{min-height:700px}@media(max-width:1366px){body:where(.home) .tps-faqleft{min-height:730px}}@media(max-width:880px){body:where(.home) .tps-faqleft{min-height:630px}}@media(max-width:767px){body:where(.home) .tps-faqleft{min-height:750px}}


/* ===== PERFORATION : echelle relative a la taille du texte =====
   Les metriques sont en em : elles se resolvent sur la taille de police de CHAQUE mot
   perfore (hero 56px, CTA/H2 42px, compteur 44px, et toutes les tailles responsive).
   Les variables sont donc declarees SUR les elements perfores, pas sur :root (ou em
   vaudrait la taille racine). Le plancher en px evite que les trous deviennent flous
   aux petites tailles. Taux de remplissage augmente (~39% contre ~17%) = lisibilite. */body:where(.home) .tps-statcol.stat-lit .elementor-counter-number,body:where(.home) .tps-statcol.stat-lit .elementor-counter-number-prefix{--tps-perf-dot:max(1.1px,0.030em);--tps-perf-feather:max(1.4px,0.038em);--tps-perf-grid:max(3.2px,0.085em)}
/* Pilier « Fabrique en France » : logo La French Fab (widget Image avec lien) a la place de l icone, zones d icone alignees sur 52 px */body:where(.home) .tps-plus .elementor-icon-box-icon{height:52px;display:flex!important;align-items:flex-end;justify-content:center}body:where(.home) .tps-plus-logo{width:100%!important;max-width:100%!important;height:52px;margin:0 0 9px!important;display:flex!important;align-items:flex-end;justify-content:center}body:where(.home) .tps-plus-logo a{display:block;transition:opacity .2s}body:where(.home) .tps-plus-logo a:hover{opacity:.85}body:where(.home) .tps-plus-logo img{display:block;width:auto!important;max-width:none!important;height:52px!important}
/* Badge avis Google (plugin Widgets for Google Reviews / Trustindex) habille comme les tuiles de logos du bandeau « Ils nous ont fait confiance » (2026-09-24) */
body .tps-trust .ti-widget.ti-goog a.ti-header{background:#16202D!important;background-image:none!important;border:1px solid var(--e-global-color-cvfiletnuit)!important;border-radius:3px!important;box-shadow:none!important;padding:14px 22px 14px 18px!important;transition:border-color .2s}
body .tps-trust .ti-widget.ti-goog a.ti-header:hover{border-color:var(--e-global-color-cvbleuclair)!important}
body .tps-trust .ti-widget.ti-goog .ti-platform-icon{width:34px!important;height:34px!important}
body .tps-trust .ti-widget.ti-goog .ti-profile-details{padding-top:0!important}
body .tps-trust .ti-widget.ti-goog .ti-text{font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-size:10.5px!important;font-weight:600!important;line-height:1.3!important;letter-spacing:.14em;text-transform:uppercase;color:var(--e-global-color-cvtextenuit)!important;margin-bottom:5px}
body .tps-trust .ti-widget.ti-goog .ti-stars{line-height:1!important;margin-top:0!important}
body .tps-trust .ti-widget.ti-goog .ti-rating{font-family:var(--e-global-typography-primary-font-family),sans-serif!important;font-size:18px!important;font-weight:700!important;line-height:1!important;color:var(--e-global-color-cvblanc)!important;margin-right:6px;vertical-align:middle}
body .tps-trust .ti-widget.ti-goog .ti-star{width:16px!important;height:16px!important;vertical-align:middle}
/* Legende discrete sous le badge (remplace le grand titre « — note moyenne de nos clients ») */
body .tps-trust .tps-trustnote .elementor-heading-title{font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-size:13.5px!important;font-weight:400!important;line-height:1.4!important;letter-spacing:.02em;color:var(--e-global-color-cvtextenuit)!important;text-align:center;margin:0!important}
/* ==== TPS-ACCUEIL:END ==== */

/* ==== TPS-HEADER:START ==== */
/* ===== Layout du panneau (forcé par structure) ===== */
body .elementor-location-header .e-n-menu-content > .e-con > .e-con{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;align-items:flex-start!important;gap:36px;max-width:1240px;margin-left:auto!important;margin-right:auto!important;padding:32px 24px 36px!important}
body .elementor-location-header .e-n-menu-content > .e-con > .e-con > .e-con:has(> .tps-kick){flex:0 0 24%!important;max-width:24%}
body .elementor-location-header .e-n-menu-content > .e-con > .e-con > .e-con:has(> .tps-fkick){flex:0 0 22%!important;max-width:22%}
body .elementor-location-header .e-n-menu-content > .e-con > .e-con > .e-con:not(:has(> .tps-kick)):not(:has(> .tps-fkick)){flex:1 1 auto!important;display:flex!important;flex-direction:row!important;flex-wrap:wrap!important;gap:24px 32px!important;align-content:flex-start}
body .elementor-location-header .e-n-menu-content > .e-con > .e-con > .e-con:not(:has(> .tps-kick)):not(:has(> .tps-fkick)) > .e-con{flex:1 1 150px!important;min-width:140px}
body .elementor-location-header .e-n-menu-content > .e-con > .e-con > .e-con:not(:has(> .tps-kick)):not(:has(> .tps-fkick)) > .e-con:has(> .tps-itd){flex:1 1 43%!important;min-width:210px!important}

/* ===== Styles ===== */
body .elementor-location-header .e-n-menu-content{box-shadow:0 26px 44px -22px rgba(13,21,32,.22)}
body .elementor-location-header .tps-kick .elementor-heading-title{margin-bottom:6px}
body .elementor-location-header .tps-title .elementor-heading-title{margin-bottom:8px}
body .elementor-location-header .tps-desc{margin-bottom:14px;max-width:30ch}

/* Titres de colonne unifiés (Savoir-faire + onglets à cartes) : tick orange + filet */
body .elementor-location-header .tps-colh .elementor-heading-title,body .elementor-location-header .tps-ith .elementor-heading-title{position:relative;display:block;padding-bottom:9px;margin-bottom:8px;border-bottom:1px solid var(--e-global-color-cvacier);color:var(--e-global-color-primary);font-size:12px;text-transform:uppercase;line-height:1.35}
body .elementor-location-header .tps-colh .elementor-heading-title::before,body .elementor-location-header .tps-ith .elementor-heading-title::before{content:"";position:absolute;left:0;bottom:-1px;width:28px;height:2px;background:var(--e-global-color-primary);transition:width .28s cubic-bezier(.22,1,.36,1)}
/* Structure reelle : .tps-colh > .elementor-heading-title > a. Le <a> est DANS
   le titre et n'a pas la classe -> cibler "a.elementor-heading-title" ne matche
   rien. On passe par :has(> a) pour ne reagir QUE si le titre est un lien.
   Le <a> passe en display:block : la zone cliquable ne faisait que la largeur
   du texte (60px) alors que le titre en fait 143. */
body .elementor-location-header .tps-colh .elementor-heading-title > a,
body .elementor-location-header .tps-ith .elementor-heading-title > a{display:block;color:inherit;transition:color .18s ease}
body .elementor-location-header .tps-colh .elementor-heading-title:has(> a):hover,
body .elementor-location-header .tps-ith .elementor-heading-title:has(> a):hover{color:var(--e-global-color-cvbleufonce)}
/* Le tick bleu file sur toute la largeur du filet = signal de "cliquable". */
body .elementor-location-header .tps-colh .elementor-heading-title:has(> a):hover::before,
body .elementor-location-header .tps-ith .elementor-heading-title:has(> a):hover::before{width:100%}

/* description (onglets sans sous-sous-pages) */
body .elementor-location-header .tps-itd{color:var(--e-global-color-cvtole);font-size:13px;line-height:1.55}

/* Liens (Savoir-faire, Nos solutions) */
body .elementor-location-header .tps-links .elementor-icon-list-icon{display:none!important}
body .elementor-location-header .tps-links .elementor-icon-list-item{margin:0!important;padding:0!important;border:0!important}
body .elementor-location-header .tps-links .elementor-icon-list-item>a{display:block;position:relative;padding:6px 0;color:var(--e-global-color-text);font-size:14.5px;line-height:1.3;transition:color .18s ease,padding-left .28s cubic-bezier(.22,1,.36,1)}
body .elementor-location-header .tps-links .elementor-icon-list-item>a::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:0;height:2px;background:var(--e-global-color-primary);transition:width .28s cubic-bezier(.22,1,.36,1)}
body .elementor-location-header .tps-links .elementor-icon-list-item>a:hover{color:var(--e-global-color-primary);padding-left:20px}
body .elementor-location-header .tps-links .elementor-icon-list-item>a:hover::before{width:13px}

/* Voir la rubrique */
body .elementor-location-header .tps-all .elementor-button{background:transparent!important;color:var(--e-global-color-primary)!important;border:0!important;box-shadow:none!important;padding:4px 0!important;border-radius:0!important;}
body .elementor-location-header .tps-all .elementor-button:hover{background:transparent!important;color:var(--e-global-color-cvbleufonce)!important}

/* Carte feature : motif perforation + CTA */
body .elementor-location-header .e-con:has(> .tps-fkick){position:relative;overflow:hidden}
body .elementor-location-header .e-con:has(> .tps-fkick)::after{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,currentColor 2.4px,transparent 2.9px),radial-gradient(circle,currentColor 2.4px,transparent 2.9px);background-size:17px 17px;background-position:0 0,8.5px 8.5px;color:var(--e-global-color-cvblanc);opacity:.07;pointer-events:none;z-index:0}
body .elementor-location-header .e-con:has(> .tps-fkick) > *{position:relative;z-index:1}
body .elementor-location-header .tps-fkick .elementor-heading-title{margin-bottom:6px}
body .elementor-location-header .tps-ftitle .elementor-heading-title{margin-bottom:6px}
body .elementor-location-header .tps-fdesc{margin-bottom:14px}
body .elementor-location-header .tps-fcta .elementor-button{background:var(--e-global-color-accent)!important;color:var(--e-global-color-cvblanc)!important;padding:10px 16px!important;border-radius:3px!important;font-size:12px!important;}
body .elementor-location-header .tps-fcta .elementor-button:hover{background:var(--e-global-color-cvorangef)!important}



/* ===== Lisibilité du texte sur la carte feature (fond nuit) ===== */
body .elementor-location-header .tps-fkick .elementor-heading-title{color:var(--e-global-color-cvbleuclair)!important}
body .elementor-location-header .tps-ftitle .elementor-heading-title{color:var(--e-global-color-cvblanc)!important}
body .elementor-location-header .tps-fdesc,body .elementor-location-header .tps-fdesc *{color:var(--e-global-color-cvtextenuit)!important}

/* ===== Boutons : texte + fleche sur une seule ligne ===== */
body .elementor-location-header .tps-all .elementor-button,body .elementor-location-header .tps-fcta .elementor-button,body .elementor-location-header .tps-cta .elementor-button{white-space:nowrap!important}
body .elementor-location-header .tps-all .elementor-button-text,body .elementor-location-header .tps-fcta .elementor-button-text,body .elementor-location-header .tps-cta .elementor-button-text{white-space:nowrap!important}
body .elementor-location-header .tps-all .elementor-button-content-wrapper,body .elementor-location-header .tps-fcta .elementor-button-content-wrapper,body .elementor-location-header .tps-cta .elementor-button-content-wrapper{flex-wrap:nowrap!important}

/* ===== CTA de la carte feature : pleine largeur, une ligne, jamais de debordement ===== */
body .elementor-location-header .tps-fcta{width:100%}
body .elementor-location-header .tps-fcta .elementor-button{display:flex!important;width:100%;justify-content:center;align-items:center;gap:6px;padding:11px 10px!important;text-align:center}

/* ===== ANCRAGE DU PANNEAU SOUS LA BARRE =====
   Le panneau s'ancre sous .e-n-menu (bas = 59px), pas sous la barre (bas = 81px) :
   la bande blanche pleine largeur recouvrait le bas du logo et collait au bouton devis.
   Le wrapper .e-n-menu-content est transparent (le blanc est sur la bande enfant) :
   un padding-top dessus descend la bande SANS creer de zone morte au survol,
   La marge est posee sur la BANDE, pas sur le wrapper : fermee, la bande est en
   display:none donc sa marge ne s'applique pas (sinon les panneaux fermes feraient
   22px de haut et recouvriraient les onglets). Ouverte, le wrapper etant en flex,
   la marge compte dans sa hauteur -> la zone de survol reste contigue au titre.
   Scope [data-layout="horizontal"] : Elementor bascule cet attribut sur "dropdown"
   en mode burger, ou le decalage n'a pas de sens (il creuserait l'accordeon).
   On suit l'etat du widget plutot qu'un breakpoint recopie en dur. */
body .elementor-location-header .e-n-menu[data-layout="horizontal"] .e-n-menu-content > .e-con{margin-top:22px!important}

/* Menu en Outfit MAJUSCULES : nettement plus large que du casse mixte.
   8 entrees (Renoult n'en a que 6, plus courtes) -> padding resserre
   pour tenir sur une ligne jusqu'a 1280 de viewport. */
body .elementor-location-header .e-n-menu-title{padding:8px 8px!important}

/* ==========================================================
   HEADER TRANSPARENT EN OVERLAP (Sticky Header Effects)
   Le plugin pose .she-header-transparent-yes avant scroll
   (background transparent + position:absolute = overlap), puis la
   retire au scroll -> le fond blanc du conteneur reprend.
   On ne se sert PAS de son option "Change Logo Color" : son filtre
   brightness(0) invert(1) blanchit TOUT, y compris le carre bleu qui
   devient un bloc plein ou le S se noie. On bascule donc sur un vrai
   logo inverse (carre bleu preserve, S et SYSTEME en reserve).
   ========================================================== */
body .she-header-transparent-yes .tps-logo img{content:url(https://www.tolesperforees.fr/wp-content/uploads/2026/07/tps-logo-blanc-v2.png)}
/* Blanc UNIQUEMENT sur le menu horizontal (header transparent au-dessus du hero sombre).
   En burger, Elementor bascule .e-n-menu sur data-layout=dropdown et le tiroir est BLANC :
   sans ce cadrage, les libelles etaient blancs sur blanc = invisibles. */
body .she-header-transparent-yes .e-n-menu[data-layout="horizontal"] .e-n-menu-title-text{color:var(--e-global-color-cvblanc)!important}
/* Fleches des items a sous-menu : SVG rempli par la couleur d'icone du widget (#232B34) -> blanc aussi sur le header transparent */
body .she-header-transparent-yes .e-n-menu[data-layout="horizontal"] .e-n-menu-dropdown-icon{color:var(--e-global-color-cvblanc)!important}
body .she-header-transparent-yes .e-n-menu[data-layout="horizontal"] .e-n-menu-dropdown-icon svg{fill:var(--e-global-color-cvblanc)!important}
body .she-header-transparent-yes .e-n-menu-toggle,
body .she-header-transparent-yes .e-n-menu-toggle i{color:var(--e-global-color-cvblanc)!important}
body .she-header-transparent-yes{border-bottom-color:transparent!important}
/* Le plugin rend le header absolu sur TOUTES les pages. Seul l'accueil a
   un hero sombre : ailleurs la nav serait blanche sur blanc et le header
   recouvrirait le contenu. On neutralise donc hors accueil. */
html body:not(.home) .she-header-transparent-yes{position:fixed!important;background-color:var(--e-global-color-cvblanc)!important;border-bottom-color:var(--e-global-color-cvfilet)!important}
/* le fantome du sticky Elementor doit rester dans le flux hors accueil, sinon le header recouvre le contenu */
html body:not(.home) .elementor-location-header .elementor-sticky__spacer{position:relative!important}
html body:not(.home) .she-header-transparent-yes .tps-logo img{content:normal}
html body:not(.home) .she-header-transparent-yes .e-n-menu-title-text,
html body:not(.home) .she-header-transparent-yes .e-n-menu[data-layout="horizontal"] .e-n-menu-title-text{color:var(--e-global-color-text)!important}
html body:not(.home) .she-header-transparent-yes .e-n-menu[data-layout="horizontal"] .e-n-menu-dropdown-icon{color:var(--e-global-color-text)!important}
html body:not(.home) .she-header-transparent-yes .e-n-menu[data-layout="horizontal"] .e-n-menu-dropdown-icon svg{fill:var(--e-global-color-text)!important}
html body:not(.home) .she-header-transparent-yes .e-n-menu-toggle,
html body:not(.home) .she-header-transparent-yes .e-n-menu-toggle i{color:var(--e-global-color-text)!important}
/* Selecteur de langue Polylang (widget Connect Polylang Elementor) habille aux couleurs du site */
body .tps-lang{width:auto!important;flex:0 0 auto}
body .tps-lang .cpel-switcher__nav{line-height:1}
body .tps-lang .cpel-switcher__toggle>a,body .tps-lang .cpel-switcher__list a{font-family:var(--e-global-typography-primary-font-family),sans-serif;font-size:13px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;text-decoration:none}
body .tps-lang .cpel-switcher__toggle>a{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 13px;border:1px solid var(--e-global-color-cvfilet);border-radius:3px;background:var(--e-global-color-cvblanc);color:var(--e-global-color-secondary)!important;transition:border-color .2s,color .2s}
body .tps-lang .cpel-switcher__nav:hover .cpel-switcher__toggle>a,body .tps-lang .cpel-switcher__toggle--on>a{border-color:var(--e-global-color-primary);color:var(--e-global-color-primary)!important}
/* Chevron dessine en CSS : Font Awesome n'est pas charge dans le header */
body .tps-lang .cpel-switcher__icon{position:relative;display:inline-block;width:9px;height:9px;font-size:0;color:var(--e-global-color-cvgristexte)!important;margin:0!important;padding:0!important}
body .tps-lang .cpel-switcher__icon::before{content:"";position:absolute;left:0;top:0;width:7px;height:7px;border-right:1.6px solid currentColor;border-bottom:1.6px solid currentColor;transform:rotate(45deg);transform-origin:center}
body .tps-lang .cpel-switcher__nav:hover .cpel-switcher__icon,body .tps-lang .cpel-switcher__toggle--on .cpel-switcher__icon{color:var(--e-global-color-primary)!important}
body .tps-lang .cpel-switcher__list{margin-top:6px;min-width:100%;background:var(--e-global-color-cvblanc);border:0 solid var(--e-global-color-cvfilet);border-radius:3px;box-shadow:none}
body .tps-lang .cpel-switcher__toggle--on+.cpel-switcher__list{max-height:220px!important;border-width:1px;box-shadow:0 12px 26px rgba(13,21,32,.14)}
body .tps-lang .cpel-switcher__list a{display:block;height:38px;line-height:38px;padding:0 13px;color:var(--e-global-color-secondary)!important;transition:background .15s,color .15s}
body .tps-lang .cpel-switcher__list a:hover,body .tps-lang .cpel-switcher__list a:focus{background:var(--e-global-color-cvacier);color:var(--e-global-color-primary)!important}
body .tps-lang .cpel-switcher__list .cpel-switcher__lang+.cpel-switcher__lang a{border-top:1px solid var(--e-global-color-cvacier)}
/* Filet de separation avec le bouton devis (masque quand le bouton ne s'affiche pas) */
body .tps-bar .tps-lang{margin-right:18px;padding-right:18px;border-right:1px solid var(--e-global-color-cvfilet)}
@media(max-width:1024px){body .tps-bar .tps-lang{margin-right:0;padding-right:0;border-right:0}
body .tps-lang .cpel-switcher__toggle>a{height:36px;padding:0 11px}
body .tps-lang .cpel-switcher__list a{height:36px;line-height:36px;padding:0 11px}}
/* ===== MENU BURGER (<= 1200 px, data-layout="dropdown") — audit responsive du 2026-09-28 =====
   Les regles de layout ci-dessus (colonnes en ligne, largeurs 24 % / 22 %, !important) servent le mega-menu
   desktop mais s'appliquaient aussi dans le burger : panneaux en 3-4 colonnes ecrasees, carte coupee.
   En burger on ne garde que les liens : accroche et carte sombre masquees, descriptions masquees,
   colonnes empilees (1 colonne en mobile, 2-3 en tablette). Le desktop (data-layout="horizontal") est intact. */
body .elementor-location-header .e-n-menu[data-layout="dropdown"] .e-n-menu-content > .e-con > .e-con{flex-direction:column!important;flex-wrap:nowrap!important;gap:0!important;max-width:100%!important;width:100%!important;padding:6px 20px 18px!important}
body .elementor-location-header .e-n-menu[data-layout="dropdown"] .e-n-menu-content > .e-con > .e-con > .e-con:has(> .tps-kick),
body .elementor-location-header .e-n-menu[data-layout="dropdown"] .e-n-menu-content > .e-con > .e-con > .e-con:has(> .tps-fkick){display:none!important}
body .elementor-location-header .e-n-menu[data-layout="dropdown"] .e-n-menu-content > .e-con > .e-con > .e-con:not(:has(> .tps-kick)):not(:has(> .tps-fkick)){width:100%!important;max-width:100%!important;flex:1 1 auto!important;gap:18px 28px!important;padding:0!important}
body .elementor-location-header .e-n-menu[data-layout="dropdown"] .e-n-menu-content > .e-con > .e-con > .e-con:not(:has(> .tps-kick)):not(:has(> .tps-fkick)) > .e-con,
body .elementor-location-header .e-n-menu[data-layout="dropdown"] .e-n-menu-content > .e-con > .e-con > .e-con:not(:has(> .tps-kick)):not(:has(> .tps-fkick)) > .e-con:has(> .tps-itd){flex:1 1 220px!important;min-width:0!important;width:auto!important;max-width:100%!important}
body .elementor-location-header .e-n-menu[data-layout="dropdown"] .tps-itd{display:none!important}
body .elementor-location-header .e-n-menu[data-layout="dropdown"] .e-con:has(> .tps-itd){row-gap:0!important;padding-top:0!important;padding-bottom:0!important}
body .elementor-location-header .e-n-menu[data-layout="dropdown"] .tps-ith .elementor-heading-title{margin-bottom:0}
/* ===== EN-TÊTE COMPACT ENTRE 1201 ET 1365 PX — audit responsive du 2026-09-28 =====
   Depuis l'ajout du sélecteur de langue, le menu passait sur 2 lignes entre 1201 et ~1300 px (FR, NL).
   Sur cette plage seulement : sélecteur réduit au drapeau (le code reste dans la liste déroulante),
   filet de séparation resserré, intitulés du menu un peu moins espacés. >= 1366 px et burger (<= 1200 px) inchangés. */
@media (min-width:1201px) and (max-width:1365px){
body .tps-lang .cpel-switcher__toggle .cpel-switcher__code{display:none}
body .tps-lang .cpel-switcher__toggle>a{gap:6px;padding:0 10px}
body .tps-bar .tps-lang{margin-right:12px;padding-right:12px}
body .elementor-location-header .e-n-menu[data-layout="horizontal"] .e-n-menu-title{padding-left:5px!important;padding-right:5px!important}
}
@media (min-width:1201px) and (max-width:1259px){
body .elementor-location-header .tps-bar{padding-left:20px!important;padding-right:20px!important}
body .elementor-location-header .e-n-menu[data-layout="horizontal"] .e-n-menu-title{padding-left:4px!important;padding-right:4px!important}
}
/* ==== TPS-HEADER:END ==== */

/* ==== TPS-FOOTER:START ==== */
/* ===== FOOTER TPS (widgets natifs) ===== */body .tpsf-root{padding:0!important}body .tpsf-top{max-width:1240px;margin:0 auto!important;padding:64px 40px 0!important;flex-direction:row!important;gap:48px!important;align-items:flex-start!important;flex-wrap:nowrap!important}body .tpsf-brand{flex:0 0 30%!important;max-width:30%!important;min-width:0!important;padding:0!important}body .tpsf-cols{flex:1 1 auto!important;min-width:0!important;flex-direction:row!important;gap:28px!important;flex-wrap:nowrap!important;padding:0!important}body .tpsf-col{flex:1 1 0!important;min-width:0!important;padding:0!important}body .tpsf-logo img{height:46px!important;width:auto!important;display:block}body .tpsf-tag,body .tpsf-tag p{font-size:15px!important;line-height:1.6!important;color:#9AA7B4!important;max-width:34ch;margin:16px 0 18px!important}body .tpsf-contact,body .tpsf-contact p{font-size:14.5px!important;line-height:1.8!important;color:var(--e-global-color-cvtextenuit)!important;margin:0 0 16px!important}body .tpsf-contact a{color:var(--e-global-color-cvtextenuit)!important;text-decoration:none;transition:color .15s}body .tpsf-contact a:hover{color:var(--e-global-color-cvblanc)!important}body .tpsf-fr .elementor-heading-title{display:inline-block;font-family:var(--e-global-typography-text-font-family),sans-serif!important;font-size:11px!important;font-weight:400!important;letter-spacing:.14em!important;text-transform:uppercase!important;color:#8895A3!important;border:1px solid var(--e-global-color-cvfiletnuit);border-radius:3px;padding:6px 12px}body .tpsf-colh .elementor-heading-title{font-family:'Syne',sans-serif!important;font-size:12px!important;letter-spacing:.12em!important;text-transform:uppercase!important;color:var(--e-global-color-cvblanc)!important;margin:0 0 14px!important}body .tpsf-collist .elementor-icon-list-icon{display:none!important}body .tpsf-collist .elementor-icon-list-items{padding:0!important;margin:0!important}body .tpsf-collist .elementor-icon-list-item{margin:0 0 9px!important;padding:0!important;border:0!important}body .tpsf-collist .elementor-icon-list-text{font-size:14.5px!important;line-height:1.35!important;color:var(--e-global-color-cvtextenuit)!important;transition:color .15s}body .tpsf-collist a:hover .elementor-icon-list-text{color:var(--e-global-color-cvblanc)!important}body .tpsf-bottom{max-width:1240px;margin:52px auto 0!important;padding:22px 40px!important;flex-direction:row!important;justify-content:space-between!important;flex-wrap:wrap!important;gap:12px!important;border-top:1px solid var(--e-global-color-cvfiletnuit)}body .tpsf-legal,body .tpsf-legal p{font-size:13px!important;color:#7E8B98!important;margin:0!important}@media(max-width:880px){body .tpsf-top{flex-direction:column!important;gap:36px!important;padding:48px 22px 0!important}body .tpsf-brand{flex:1 1 auto!important;max-width:none!important}body .tpsf-bottom{padding:22px!important;margin-top:36px!important}}@media(max-width:767px){body .tpsf-cols{flex-wrap:wrap!important;gap:24px!important}body .tpsf-col{flex:1 1 44%!important}}
/* Logo La French Fab (lien lafrenchfab.fr) sous le badge Fabrique en France */body .tpsf-frenchfab{width:auto!important;max-width:none!important;margin:16px 0 0!important;text-align:left}body .tpsf-frenchfab a{display:inline-block;transition:opacity .2s}body .tpsf-frenchfab a:hover{opacity:.85}body .tpsf-frenchfab img{display:block;width:64px!important;max-width:64px!important;height:auto!important}@media(max-width:767px){body .tpsf-frenchfab img{width:56px!important;max-width:56px!important}}
/* Bouton « Gerer les cookies » (Complianz : button.cmplz-manage-consent) affiche comme les liens legaux du footer */body .tpsf-legal .tpsf-cookiebtn,body .tpsf-legal .tpsf-cookiebtn:hover,body .tpsf-legal .tpsf-cookiebtn:focus{display:inline;background:none!important;border:0!important;border-radius:0!important;padding:0!important;margin:0!important;box-shadow:none!important;color:var(--e-global-color-primary)!important;font:inherit!important;line-height:inherit!important;letter-spacing:inherit!important;text-transform:none!important;cursor:pointer}body .tpsf-legal .tpsf-cookiebtn:hover{text-decoration:underline!important}body .tpsf-legal .tpsf-cookiebtn:focus-visible{outline:2px solid var(--e-global-color-primary);outline-offset:2px}
/* Logos TPS + La French Fab cote a cote dans le footer (demande client 2026-09-18) */body .tpsf-logos{flex-direction:row!important;flex-wrap:nowrap!important;align-items:center!important;gap:20px!important;width:auto!important;padding:0!important}body .tpsf-logos .tpsf-logo{width:auto!important;margin:0!important}body .tpsf-logos .tpsf-frenchfab{width:auto!important;margin:0!important;padding-left:20px;border-left:1px solid var(--e-global-color-cvfiletnuit)}body .tpsf-logos .tpsf-frenchfab img{width:auto!important;max-width:none!important;height:54px!important}@media(max-width:767px){body .tpsf-logos .tpsf-frenchfab img{width:auto!important;max-width:none!important;height:48px!important}}
/* ===== FOOTER EN TABLETTE (881-1024 px) — audit responsive du 2026-09-28 =====
   Bloc marque + 4 colonnes de liens sur une ligne = colonnes de 132 px, intitulés NL sur 3 lignes et
   « MVO- & kwaliteitsengagement » qui débordait. Même empilement qu'en dessous de 880 px : marque au-dessus,
   4 colonnes pleine largeur. Césure autorisée dans les liens (mots composés NL en mobile). */
@media (min-width:881px) and (max-width:1024px){
body .tpsf-top{flex-direction:column!important;gap:36px!important}
body .tpsf-brand{flex:1 1 auto!important;max-width:none!important}
}
body .tpsf-col .elementor-icon-list-text{overflow-wrap:break-word;hyphens:auto}
/* ==== TPS-FOOTER:END ==== */


/* ===== TPS-PERF : image de repli de la bannière vidéo de l'accueil en mobile (pas d'option responsive native pour le repli vidéo) ; même URL que le préchargement du snippet 20 ===== */
@media (max-width: 767px) {
	body.home [data-elementor-type="wp-page"] > .e-con.tps-hero:first-child {
		background-image: url("/wp-content/uploads/2026/09/accueil-hero-atelier-tps-premiere-image-1024x576.jpg");
	}
}
/* ===== /TPS-PERF ===== */


/* ===== TPS-A11Y : libellés passés de h4/h6 à <p> pour l'ordre des titres (28/09/2026). Reprend à l'identique (même spécificité 0,1,1 via :where) la typo que le kit appliquait par balise h6 / h4. ===== */
:where(.tps-eyebrow, .tps-kicker, .tps-stepn, .tps-trustlab, .tps-kick, .tps-fkick, .tps-colh, .tps-ith) p.elementor-heading-title {
	line-height: var(--e-global-typography-tpsh6-line-height);
}
:where(.tps-kick, .tps-fkick, .tps-colh, .tps-ith) p.elementor-heading-title {
	font-size: var(--e-global-typography-tpsh6-font-size);
}
:where(.tps-ftitle) p.elementor-heading-title {
	font-size: var(--e-global-typography-tpsh4-font-size);
	line-height: var(--e-global-typography-tpsh4-line-height);
}
/* Contrastes (28/09/2026) : liens légaux du footer en Bleu clair (7,9:1 sur Nuit, au lieu de 3,4:1) et soulignés ; liens du fil d'Ariane soulignés (leur couleur seule ne les distingue pas du texte gris). */
body .tpsf-legal a,
body .tpsf-legal .tpsf-cookiebtn,
body .tpsf-legal .tpsf-cookiebtn:hover,
body .tpsf-legal .tpsf-cookiebtn:focus {
	color: var(--e-global-color-cvbleuclair) !important;
	text-decoration: underline !important;
	text-underline-offset: 2px;
}
body .tpsf-legal a:hover,
body .tpsf-legal .tpsf-cookiebtn:hover {
	color: var(--e-global-color-cvblanc) !important;
}
body .tpsf-legal .tpsf-cookiebtn:focus-visible {
	outline-color: var(--e-global-color-cvbleuclair);
}
body:not(.home) .tps-crumb a {
	text-decoration: underline;
	text-underline-offset: 2px;
}
/* Calculateur, page résultat : titres h3 passés en h2 (28/09/2026). Le titre du devis reprend la typo que le kit lui donnait en h3. */
:where(#cvspr-root) h2.cvspr-devis-h {
	font-family: var(--e-global-typography-tpsh3-font-family), sans-serif;
	font-size: var(--e-global-typography-tpsh3-font-size);
	font-weight: var(--e-global-typography-tpsh3-font-weight);
	line-height: var(--e-global-typography-tpsh3-line-height);
	letter-spacing: var(--e-global-typography-tpsh3-letter-spacing);
	word-spacing: var(--e-global-typography-tpsh3-word-spacing);
}
/* ===== /TPS-A11Y ===== */

/* ==== TPS-RECHERCHE:START ==== */
/* Recherche du site (demande client du 29/09/2026) - classes tpsx-sr-*.
   Couleurs, typographies, bordures : reglages natifs des widgets (bouton loupe des en-tetes 62/932/938,
   popups 1473/1475/1477, carte de resultat 1472, pages de resultats 1474/1476/1478).
   Ici seulement ce qu'Elementor ne sait pas regler. */

/* Bouton loupe : carre de 38 px (36 en <= 1024) comme le selecteur de langue. Le libelle
   (« Rechercher sur le site ») reste lu par les lecteurs d'ecran, seule l'icone s'affiche. */
body .elementor-location-header .tpsx-sr-btn{width:auto!important;flex:0 0 auto}
body .elementor-location-header .tpsx-sr-btn .elementor-button{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;padding:0!important;line-height:1}
body .elementor-location-header .tpsx-sr-btn .elementor-button-content-wrapper{gap:0}
body .elementor-location-header .tpsx-sr-btn .elementor-button-text{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
body .elementor-location-header .tpsx-sr-btn .elementor-button-icon{margin:0!important;font-size:15px}
body .elementor-location-header .tpsx-sr-btn .elementor-button-icon svg{width:15px;height:15px}
body .elementor-location-header .tpsx-sr-btn .elementor-button:focus-visible{outline:2px solid var(--e-global-color-primary);outline-offset:2px}
@media(max-width:1024px){body .elementor-location-header .tpsx-sr-btn .elementor-button{width:36px;height:36px}}

/* Place de la loupe dans la barre : menu verifie sur une ligne de 1201 a 1920 px en FR / EN / NL,
   page rechargee a chaque largeur, barre de defilement Windows comprise (29/09/2026).
   1201-1535 : espacement de la barre 20 -> 12 px ; 1201-1300 : intitules du menu 4-5 -> 3 px ;
   1367-1439 (typo « bureau », plus large) : intitules 8 -> 6 px et selecteur de langue reduit au drapeau,
   comme deja entre 1201 et 1365. */
@media (min-width:1201px) and (max-width:1535px){
body .elementor-location-header .tps-bar{column-gap:12px!important}
body .tps-bar .tps-lang{margin-right:12px!important;padding-right:12px!important}
}
@media (min-width:1201px) and (max-width:1300px){
body .elementor-location-header .e-n-menu[data-layout="horizontal"] .e-n-menu-title{padding-left:3px!important;padding-right:3px!important}
}
@media (min-width:1367px) and (max-width:1439px){
body .elementor-location-header .e-n-menu[data-layout="horizontal"] .e-n-menu-title{padding-left:6px!important;padding-right:6px!important}
body .tps-lang .cpel-switcher__toggle .cpel-switcher__code{display:none}
body .tps-lang .cpel-switcher__toggle>a{gap:6px;padding:0 10px}
}

/* Carte de resultat (popup + page de resultats) : filet + tick bleu de 28 px qui file sur toute la
   largeur au survol (langage des titres de colonnes du mega-menu). Toute la carte est cliquable via
   le lien du titre (pseudo-element etire : un seul lien, nomme par le titre). Resume sur 2 lignes. */
body .tpsx-sr-card{position:relative}
body .tpsx-sr-card .elementor-widget{position:static}
body .tpsx-sr-card::after{content:"";position:absolute;left:0;top:-1px;width:28px;height:2px;background:var(--e-global-color-primary);transition:width .28s cubic-bezier(.22,1,.36,1);pointer-events:none}
body .tpsx-sr-card:hover::after,body .tpsx-sr-card:focus-within::after{width:100%}
body .tpsx-sr-title .elementor-heading-title a::before{content:"";position:absolute;inset:0;z-index:1}
body .tpsx-sr-title .elementor-heading-title a:focus-visible{outline:none}
body .tpsx-sr-card:has(.tpsx-sr-title a:focus-visible){outline:2px solid var(--e-global-color-primary);outline-offset:4px}
body .tpsx-sr-desc .elementor-heading-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* Popup : resultats en direct defilants, le dernier sans marge */
body .tpsx-sr-popform .e-search-results .e-loop-item:last-child .tpsx-sr-card{padding-bottom:12px}

/* Page de resultats : champ de recherche du bandeau limite a 640 px, message « aucun resultat »,
   pagination en carres (page courante = carre bleu, le marqueur du systeme) */
body .tps-hero .tpsx-sr-heroform{max-width:640px}
body .tpsx-sr-grid .e-loop-nothing-found-message__text{max-width:62ch;margin:0}
body .tpsx-sr-grid .e-loop-nothing-found-message__text a{color:var(--e-global-color-primary);text-decoration:underline;text-underline-offset:3px}
body .tpsx-sr-grid .e-load-more-anchor+.elementor-pagination,body .tpsx-sr-grid .elementor-pagination{display:flex;flex-wrap:wrap;gap:6px}
body .tpsx-sr-grid .elementor-pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:38px;margin:0!important;padding:0 12px;border:1px solid var(--e-global-color-cvfilet);border-radius:3px;text-decoration:none}
body .tpsx-sr-grid .elementor-pagination a.page-numbers:hover{border-color:var(--e-global-color-primary)}
body .tpsx-sr-grid .elementor-pagination .page-numbers.current{background:var(--e-global-color-primary);border-color:var(--e-global-color-primary);color:var(--e-global-color-cvblanc)!important}
body .tpsx-sr-grid .elementor-pagination .page-numbers.dots{border-color:transparent}
body .tpsx-sr-grid .elementor-pagination .page-numbers.inactive{display:none}
/* Popup : la zone de message d'Elementor (overflow:auto) coupait la liste des résultats en direct,
   positionnée en absolu sous le champ : elle déborde désormais sous le bandeau, comme un menu déroulant. */
body .dialog-message:has(.tpsx-sr-popform){overflow:visible}
body .tpsx-sr-popform .e-search-results-container{box-shadow:0 22px 44px -20px rgba(13,21,32,.45)}
/* Mobile (<= 767 px, la barre passe a la ligne) : avec la loupe, logo + burger + loupe + langue ne tenaient plus
   (en-tete de 81 -> 127 px a 360-390). Marges laterales 32 -> 20 px (alignees sur la gouttiere du contenu, 22 px),
   espacement 20 -> 10 px ; sous 400 px, selecteur de langue reduit au drapeau. Verifie de 320 a 767 px, FR / EN / NL. */
@media (max-width:767px){body .elementor-location-header .tps-bar{padding-left:20px!important;padding-right:20px!important;column-gap:10px!important}}
@media (max-width:400px){body .tps-lang .cpel-switcher__toggle .cpel-switcher__code{display:none}body .tps-lang .cpel-switcher__toggle>a{gap:6px;padding:0 10px}}
/* ==== TPS-RECHERCHE:END ==== *//* End custom CSS */