/*
Theme Name: Tronix Child
Author: ThemePul
Description: This Child Theme Only For Tronix Theme
Version: 1.15.0
Template: tronix

This is the child theme for Tronix theme, generated with Generate Child Theme plugin by catchthemes.

(optional values you can add: Theme URI, Author URI, License, License URI, Tags, Text Domain)
*/

/* ------------------------------------------------------------------
   Correctifs VisionCloud applicables à tout le site.
   La page d'accueil a sa propre feuille : assets/visioncloud.css
   ------------------------------------------------------------------ */

/* Le kit Elementor porte encore la palette de démonstration
   (#6EC1E4, #61CE70). Les boutons Elementor natifs utilisés sur les
   pages intérieures reprennent donc l'habillage du thème (.theme-btns). */
.elementor-widget-button .elementor-button {
    background: var(--thm-color);
    color: var(--white-color);
    border-radius: 30px;
    font-size: 16px;
    font-weight: 500;
    line-height: 20px;
    padding: 16px 32px;
    transition: .4s;
}
.elementor-widget-button .elementor-button:hover {
    background: var(--black-color);
    color: var(--white-color);
}
.elementor-widget-button .elementor-button.elementor-size-sm {
    padding: 13px 26px;
    font-size: 15px;
}

/* Les bannières de pages intérieures laissent le surtitre coller au titre
   sur les petites largeurs. */
@media (max-width: 767px) {
    .slide-stitle { font-size: 14px; line-height: 1.5; }
}

/* Le thème force « text-transform: capitalize » sur les menus, ce qui affichait
   « À Propos ». Le libellé acté est « À propos », avec p minuscule : on laisse
   donc les intitulés tels qu'ils sont saisis. */
.main-menu a,
.main-menu ul.sub-menu li a,
.tronix-mobile-menu ul li a {
    text-transform: none;
}

/* Formulaire de contact : libellés visibles au-dessus des champs, plutôt que
   des placeholders seuls qui disparaissent à la saisie. */
.vc-form .tronix-input-area > label {
    display: block;
    margin-bottom: 7px;
    font-size: 14px;
    font-weight: 600;
    color: var(--black-color);
}
.vc-form .vc-req { color: #D7263D; margin-left: 2px; }
.vc-form .vc-opt { font-weight: 500; color: var(--color-body); }
.vc-form .wpcf7-not-valid-tip { font-size: 13px; color: #D7263D; margin-top: 6px; display: block; }
.vc-form .wpcf7-response-output {
    margin: 18px 0 0; padding: 12px 16px; border-radius: 8px;
    font-size: 14.5px; line-height: 1.6;
}
.vc-form .vc-form-note,
.vc-form .vc-form-rgpd { font-size: 13.5px; line-height: 1.65; margin: 14px 0 0; color: var(--color-body); }
.vc-form .vc-form-rgpd { font-size: 12.5px; opacity: .85; }
.vc-form select:invalid { color: var(--color-body); }

/* Le thème supprime le contour de focus natif sans le remplacer : au clavier,
   on ne voit plus où l'on se trouve. On rétablit un état visible partout. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
    outline: 3px solid var(--thm-color) !important;
    outline-offset: 2px !important;
    border-radius: 3px;
}
.vc-form input:focus-visible,
.vc-form select:focus-visible,
.vc-form textarea:focus-visible {
    outline: 3px solid var(--thm-color) !important;
    outline-offset: 1px !important;
    border-color: var(--thm-color);
}

/* ------------------------------------------------------------------
   Rubrique Actualités en grille : l'interlignage du thème étire les
   titres sur quatre lignes très espacées et déséquilibre les cartes.
   ------------------------------------------------------------------ */
.page-layout-grid .single-post-item .post-title,
.page-layout-grid .single-post-item h2,
.page-layout-grid .single-post-item h2 a {
    font-size: 21px;
    line-height: 1.32;
    letter-spacing: -.01em;
}
.page-layout-grid .single-post-item {
    display: flex;
    flex-direction: column;
    height: 100%;
}
.page-layout-grid .single-post-item .post-content,
.page-layout-grid .single-post-item .entry-content { flex: 1; }
.page-layout-grid .single-post-item p { font-size: 14.5px; line-height: 1.7; }
.page-layout-grid .row > [class*="col-"] { display: flex; margin-bottom: 26px; }

/* ------------------------------------------------------------------
   Bouton Assistance de l'en-tête. L'accès au support est volontairement
   distinct de la prise de contact commerciale : bouton bleu plein pour
   l'assistance, bouton du thème pour « Nous contacter ».
   La zone de droite du thème est masquée sous 1400 px (d-none d-xxl-block) :
   une version compacte prend le relais à côté du bouton de menu.
   ------------------------------------------------------------------ */
.vc-assist { display: inline-flex; align-items: center; margin-right: 14px; }
.vc-assist__btn {
    display: inline-flex; align-items: center; gap: 9px;
    padding: 14px 24px; border-radius: 30px;
    background: var(--thm-color); color: var(--white-color);
    font-size: 16px; font-weight: 600; line-height: 20px;
    text-decoration: none; white-space: nowrap;
    box-shadow: 0 10px 26px -12px rgba(14, 89, 242, .75);
    transition: background .3s, transform .3s, box-shadow .3s;
}
.vc-assist__btn:hover {
    background: var(--black-color); color: var(--white-color);
    transform: translateY(-2px); box-shadow: 0 14px 30px -14px rgba(28, 28, 37, .6);
}
.vc-assist__btn svg { width: 19px; height: 19px; flex: none; }

/* version compacte, visible là où la zone de droite du thème ne l'est pas */
.vc-assist__mobile {
    display: none; align-items: center; gap: 7px;
    padding: 9px 16px; margin-right: 10px; border-radius: 30px;
    background: var(--thm-color); color: var(--white-color);
    font-size: 14px; font-weight: 600; text-decoration: none; white-space: nowrap;
    vertical-align: middle;
}
.vc-assist__mobile:hover { background: var(--black-color); color: var(--white-color); }
.vc-assist__mobile svg { width: 17px; height: 17px; flex: none; }

@media (max-width: 1399.98px) {
    .vc-assist__mobile { display: inline-flex; }
}
@media (max-width: 420px) {
    .vc-assist__mobile span { display: none; }
    .vc-assist__mobile { padding: 9px 11px; }
}

/* Le widget « about » du thème n'espace pas les paragraphes : le texte du
   mot des cofondateurs se lisait d'un seul bloc, phrases collées. */
.about-des p { margin-bottom: 1.1em; }
.about-des p:last-child { margin-bottom: 0; }

/* ------------------------------------------------------------------
   Page À propos — badge et lisibilité du mot des cofondateurs
   ------------------------------------------------------------------ */

/* Badge : médaille, nombre et libellé sur une seule ligne. Le thème empile
   le <h2> et le <p> ; on les remet côte à côte et on élargit le bloc. */
/* Le thème fixe width:260px, height:135px et padding:30px, d'où un badge
   très au large autour de son contenu. On le laisse s'ajuster au texte.
   Il est aussi masqué sous 767px par le thème : on le garde visible. */
.tronix-awards-section {
    display: flex !important;
    align-items: center;
    justify-content: flex-start;
    gap: 13px;
    width: max-content;
    height: auto;
    min-height: 0;
    max-width: none;
    padding: 14px 18px;
    border-width: 8px;
    /* Le thème cale le badge à left:30px, sous une seule des deux personnes
       de la photo. Centré, il se rapporte visiblement aux deux. */
    left: 50%;
    transform: translateX(-50%);
}
.tronix-about-two-small-image,
.tronix-awards-section { box-sizing: border-box; }
/* Le thème ajoute margin-right:15px à l'icône, qui s'ajoutait au gap
   et creusait un vide entre la médaille et le nombre. */
.tronix-awards-section .tronix-Awards-icon { flex: none; line-height: 1; margin-right: 0; }
.tronix-awards-section .tronix-Awards-icon i { font-size: 34px; }
.tronix-awards-content {
    display: flex;
    align-items: center;
    gap: 9px;
    flex-wrap: nowrap;
}
/* Le nombre en grand, suivi du « + » ; le libellé se répartit sur deux
   lignes juste à côté, ce qui garde le badge compact. */
.tronix-awards-content .tronix-award-number {
    margin: 0;
    font-size: 40px;
    line-height: 1;
    font-weight: 700;
    white-space: nowrap;
    /* chiffres de largeur fixe ; la largeur du nombre final est figée
       en JS avant le décompte, pour que le badge ne bouge pas. */
    font-variant-numeric: tabular-nums;
}
.tronix-awards-content .tronix-award-number::after {
    content: "+";
    font-size: .62em;
    font-weight: 700;
    vertical-align: super;
    margin-left: 1px;
}
.tronix-awards-content .tronix-award-title {
    margin: 0;
    font-size: 13.5px;
    line-height: 1.22;
    text-align: left;
    /* min-content : la ligne se coupe au mot le plus long, donc
       « Années » puis « d'expertise », jamais au milieu d'un mot. */
    width: min-content;
}

@media (max-width: 575px) {
    .tronix-awards-section { gap: 10px; padding: 11px 14px; border-width: 6px; }
    .tronix-awards-section .tronix-Awards-icon i { font-size: 24px; }
    .tronix-awards-content { gap: 8px; }
    .tronix-awards-content .tronix-award-number { font-size: 32px; }
    .tronix-awards-content .tronix-award-title { font-size: 12px; }
}

/* Corps du mot des cofondateurs : le gris du thème est trop pâle pour un
   texte de cette longueur. Contraste relevé et expressions clés en bleu. */
.about-des {
    color: #3A4050;
    font-size: 16.5px;
    line-height: 1.85;
}
.about-des strong {
    color: var(--thm-color);
    font-weight: 600;
}

/* Le thème impose une hauteur fixe de 470px au conteneur et object-fit: cover
   à l'image « à propos » (custom-widgets.css), ce qui recadrait le portrait des
   cofondateurs. On rétablit ses proportions, en gardant le rayon du thème. */
.tronix-about-tow-image .tronix-about-two-main-image {
    height: auto;
    /* l'image gardait une largeur fixe : entre 1200 et 1400px elle débordait
       à gauche de sa colonne, emportant le badge avec elle. */
    max-width: 100%;
}
.tronix-about-tow-image { max-width: 100%; }
.tronix-about-tow-image .tronix-about-two-main-image img {
    height: auto;
    object-fit: contain;
    display: block;
}

/* La colonne de l'image « à propos » porte un décalage de -100px réglé dans
   Elementor, qui fait déborder l'image et le badge hors de l'écran entre
   environ 1200 et 1400px. Le décalage n'est conservé que là où il y a la
   place pour lui. */
@media (max-width: 1399.98px) {
    .page-id-1472 .elementor-widget-wrap { margin-left: 0 !important; }
}

/* ------------------------------------------------------------------
   À propos : logo au-dessus du portrait
   Le texte des cofondateurs est long et la photo, centrée verticalement,
   laissait un grand vide au-dessus. Le logo occupe ce haut de colonne,
   à hauteur du titre, et la photo descend vers le corps de texte.
   ------------------------------------------------------------------ */
/* Elementor pose « .elementor img { max-width:100% } » et sa feuille est
   chargée APRÈS celle de l'enfant : à spécificité égale elle l'emporte.
   D'où le sélecteur préfixé, ici et sur le logo du pied de page. */
.elementor .vc-apropos-logo img {
    display: block;
    width: 100%;
    max-width: 300px;
    height: auto;
    margin: 0 auto 34px;
}

/* Briques des cofondateurs : quatre en 2x2 dans une demi-colonne.
   L'icône posée à gauche ne laissait que 150 px au titre, qui se coupait
   sur deux ou trois caractères, et les quatre blocs faisaient 98, 128, 158
   et 128 px de haut. Icône au-dessus pour rendre toute la largeur au texte,
   corps réduit, et hauteur commune pour que la grille soit régulière. */
.page-id-1472 .elementor-widget-icon-box .elementor-icon-box-wrapper {
    display: block;
    text-align: left;
}
.page-id-1472 .elementor-widget-icon-box .elementor-icon-box-icon {
    display: block;
    margin: 0 0 12px;
}
.page-id-1472 .elementor-widget-icon-box .elementor-icon-box-icon svg,
.page-id-1472 .elementor-widget-icon-box .elementor-icon-box-icon img {
    width: 38px;
    height: 38px;
}
.page-id-1472 .elementor-widget-icon-box .elementor-icon-box-title,
.page-id-1472 .elementor-widget-icon-box .elementor-icon-box-title a {
    font-size: 15.5px !important;
    line-height: 1.42 !important;
    font-weight: 500 !important;
    display: block;
}
/* Hauteur commune : sans elle, les quatre titres n'ont pas le même nombre
   de lignes et la grille part en escalier. */
@media (min-width: 768px) {
    .page-id-1472 .elementor-widget-icon-box .elementor-icon-box-wrapper {
        min-height: 134px;
    }
}
.page-id-1472 .elementor-widget-icon-box { margin-bottom: 4px; }

/* Colonne du portrait : le texte des cofondateurs fait 1313 px de haut,
   le logo et la photo 491 px à eux deux. La photo reste près du logo et
   se cale en regard des paragraphes, pas des quatre briques : le blanc
   tombe en bas, à côté des briques, là où il se remarque le moins. */
@media (min-width: 1025px) {
    .page-id-1472 .elementor-element-23346572 > .elementor-widget-wrap {
        display: flex;
        flex-direction: column;
        flex-wrap: nowrap;
        align-content: stretch;
        min-height: 100%;
    }
    .page-id-1472 .elementor-element-23346572 > .elementor-widget-wrap > .elementor-widget-tronix_image_two {
        width: 100%;
    }
    .page-id-1472 .elementor-element-23346572 > .elementor-widget-wrap > .vc-apropos-logo {
        width: 100%;
    }
}


/* ------------------------------------------------------------------
   Texte justifié avec césure, PARTOUT — décision de la direction du
   26/10/2026, confirmée après lui avoir soumis les mesures.
   Une première version épargnait les blocs étroits et le téléphone ;
   la direction a demandé de lever ces deux réserves. Les chiffres
   relevés alors sont conservés ici pour mémoire : sur les colonnes
   de 300 à 350 px, l'espace entre mots peut atteindre cinq fois sa
   valeur naturelle de 5,3 px.
   La césure est ce qui rend la chose tenable : elle s'appuie sur le
   lang="fr-FR" posé par WordPress sur <html>. Sur les blocs les plus
   courts, elle est réglée plus permissive pour couper davantage et
   resserrer d'autant les espaces.
   ------------------------------------------------------------------ */
.about-des,
.about-des p,
.vc-lead,
.vc-hero__meta,
.vc-hero__turn,
.vc-story__pane p,
.vc-step2,
.vc-step2 p,
.vc-adn__row > p,
.vc-adn__point p,
.vc-limites__note,
.vc-limite p,
.vc-techstrip__head p,
.vc-exp__card p,
.vc-path p,
.vc-panel p,
.vch-faq__a,
.vch-wrap > p,
.vch-chat-slot p,
.vch-round__item p,
.vch-step p,
.vch-card p,
.elementor-widget-text-editor p,
.elementor-icon-box-description,
.about-des,
.entry-content p {
    text-align: justify;
    text-justify: inter-word;
    hyphens: auto;
    -webkit-hyphens: auto;
    -ms-hyphens: auto;
    hyphenate-limit-chars: 6 3 3;
}

/* Blocs courts et colonnes étroites : on autorise la césure sur des mots
   plus courts (4 lettres, 2 de part et d'autre). Chaque coupe supplémentaire
   est une occasion de ne pas écarter les espaces. */
.vc-adn__point p,
.vc-limite p,
.vc-exp__card p,
.vc-path p,
.vc-panel p,
.vch-round__item p,
.vch-step p,
.vch-card p,
.elementor-icon-box-description,
.vc-hero__meta,
.vc-hero__turn {
    hyphenate-limit-chars: 4 2 2;
}

/* Téléphone : la justification s'applique aussi, à la demande. La césure
   y est la plus permissive, c'est là que les lignes sont les plus courtes. */
@media (max-width: 767.98px) {
    .about-des,
    .about-des p,
    .vc-lead,
    .vc-story__pane p,
    .vc-step2,
    .vc-step2 p,
    .vc-adn__row > p,
    .vc-limites__note,
    .vc-techstrip__head p,
    .vch-faq__a,
    .vch-wrap > p,
    .vch-chat-slot p,
    .elementor-widget-text-editor p,
    .about-des,
    .entry-content p {
        text-align: justify;
        hyphens: auto;
        -webkit-hyphens: auto;
        hyphenate-limit-chars: 4 2 2;
    }
}

/* ------------------------------------------------------------------
   Page Services : les six cartes faisaient 492 à 526 px de haut, ce qui
   décalait la seconde rangée et désalignait les boutons.
   Le conteneur Elementor n'a pas de hauteur définie, donc un flex-grow
   n'avait rien à répartir : on fixe une hauteur minimale commune et on
   cale le bouton en bas de carte. Les six cartes s'alignent alors, et le
   texte reste libre de s'allonger si besoin.
   ------------------------------------------------------------------ */
@media (min-width: 768px) {
    .page-id-1474 .tronix-service-six-wrapper {
        display: flex;
        flex-direction: column;
        min-height: 530px;
    }
    .page-id-1474 .service-six-content {
        display: flex;
        flex-direction: column;
        flex: 1;
    }
    .page-id-1474 .service-six-button { margin-top: auto; }
}
@media (min-width: 768px) and (max-width: 1100px) {
    .page-id-1474 .tronix-service-six-wrapper { min-height: 580px; }
}

/* ------------------------------------------------------------------
   Page Cybersécurité : le premier écran est le seul du site à utiliser
   le slider du thème. Son conteneur étant bridé à 1220 px dans une
   section de 1440, l'image flottait au milieu de la page comme un bloc
   carré. La section passe pleine largeur sur fond marine, et un voile
   dégradé rend le titre lisible sur une image très chargée.
   ------------------------------------------------------------------ */
/* Le sélecteur doit rester enfermé dans le conteneur Elementor DE LA PAGE
   (.elementor-5154). Sans cela, « :first-of-type » attrape aussi la première
   section du gabarit d'en-tête (.elementor-5196), qui est commun à tout le
   site : la bande derrière le menu passait en marine et le menu, écrit en
   sombre, devenait illisible. */
.elementor-5154 > .elementor-top-section:first-of-type { background: #061327; }
.elementor-5154 > .elementor-top-section:first-of-type > .elementor-container {
    max-width: 100%;
    width: 100%;
}
.page-id-5154 .slider-area { position: relative; }
.page-id-5154 .slider-area::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    background: linear-gradient(100deg,
        rgba(6, 19, 39, .92) 0%,
        rgba(6, 19, 39, .78) 38%,
        rgba(6, 19, 39, .34) 72%,
        rgba(6, 19, 39, .12) 100%);
}
.page-id-5154 .slider-area > * { position: relative; z-index: 2; }

/* ------------------------------------------------------------------
   Bloc « Nous joindre » sur Cybersécurité et Conseil. Sur les quatre
   autres pages de services il vit dans une colonne latérale étroite ;
   ici il est seul en pleine largeur, on lui rend une largeur de carte
   et on le centre, pour que les six pages se terminent pareil.
   ------------------------------------------------------------------ */
.vc-joindre .elementor-widget-working_time {
    max-width: 440px;
    margin-inline: auto;
    width: 100%;
}
@media (max-width: 520px) {
    .vc-joindre .elementor-widget-working_time { max-width: 100%; }
}

/* ------------------------------------------------------------------
   Contenu du bloc « Nous joindre ».
   Le widget Working Time ne rend qu'un seul champ par ligne : le
   second champ du répéteur n'existe pas dans le gabarit et était
   ignoré en silence, si bien qu'un bloc intitulé « Nous joindre »
   n'affichait ni numéro ni lien. Les deux lignes tiennent désormais
   dans le champ rendu, séparées par un <br> ; le <strong> porte
   l'action, le reste de la ligne porte la précision.
   ------------------------------------------------------------------ */
.vc-joindre .tronix-woriking-time-list { align-items: flex-start; }

.vc-joindre .tronix-woriking-time-list-icon {
    padding-top: 3px;
    line-height: 1;
    /* Les trois glyphes n'ont pas la même chasse : sans largeur fixe,
       les trois libellés ne démarrent pas au même endroit. */
    width: 20px;
    text-align: center;
}

.vc-joindre .tronix-woriking-time-list-title {
    font-size: 14.5px;
    line-height: 1.65;
    color: #5A6B84;
    text-align: left;   /* la justification générale n'a pas de sens ici */
    hyphens: manual;
    /* Sans cela chaque ligne se dimensionne sur son seul libellé en gras :
       « Réponse en 2 à 4 h en moyenne », plus long que « Formulaire de
       contact », se repliait alors qu'il reste de la place dans la carte. */
    flex: 1;
    min-width: 0;
}

.vc-joindre .tronix-woriking-time-list-title strong {
    font-size: 16.5px;
    font-weight: 600;
    letter-spacing: -.1px;
    color: #061327;
}

.vc-joindre .tronix-woriking-time-list-title a {
    text-decoration: none;
    transition: color .18s ease;
}

.vc-joindre .tronix-woriking-time-list-title a:hover strong,
.vc-joindre .tronix-woriking-time-list-title a:focus-visible strong,
.vc-joindre .tronix-woriking-time-list:hover .tronix-woriking-time-list-title a strong {
    color: #0E59F2;
}

.vc-joindre .tronix-woriking-time-list-title a:focus-visible {
    outline: 2px solid #0E59F2;
    outline-offset: 3px;
    border-radius: 3px;
}

/* Les 40 px de marge intérieure du widget mangent un tiers d'un écran de
   390 px et replient « Formulaire de contact » sur deux lignes. */
@media (max-width: 480px) {
    .vc-joindre .tronix-woriking-time-box { padding: 24px 20px; }
    .vc-joindre .tronix-woriking-time-list { padding: 14px 16px; }
}

/* ------------------------------------------------------------------
   Listes « Tronix List » (Notre périmètre, Ce que nous exploitons,
   Ce que nous nous engageons à tenir…).
   Le gabarit du widget ne rend que le libellé : les descriptions
   saisies dormaient dans la base sans jamais s'afficher. Elles
   tiennent désormais dans le champ rendu, derrière un <br>.
   L'icône par défaut du widget relève de Bootstrap Icons, police que
   le thème ne charge pas ; chaque entrée a reçu une icône Font
   Awesome explicite.
   ------------------------------------------------------------------ */
/* L'alignement haut vient du réglage « icon-positon » du widget lui-même :
   Elementor le compile en CSS plus spécifique que cette feuille. */
.vc-liste .tronix-list-box-item { margin-bottom: 22px; }

.vc-liste .tronix-list-icon {
    flex: none;
    width: 30px;
    height: 30px;
    font-size: 13px;
    margin-right: 14px;
    margin-top: 2px;
    border-color: rgba(14, 89, 242, .28);
    background: rgba(14, 89, 242, .06);
    color: #0E59F2;
}

.vc-liste .tronix-list-title {
    flex: 1;
    min-width: 0;
    font-size: 14.5px;
    line-height: 1.6;
    color: #5A6B84;
    text-align: left;
    hyphens: manual;
}

.vc-liste .tronix-list-title strong {
    display: block;
    margin-bottom: 3px;
    font-size: 16px;
    font-weight: 600;
    line-height: 1.35;
    letter-spacing: -.1px;
    color: #061327;
}

/* <strong> est déjà en bloc : le <br> qui le suit ajouterait une ligne vide. */
.vc-liste .tronix-list-title strong + br { display: none; }

@media (max-width: 480px) {
    .vc-liste .tronix-list-icon { width: 26px; height: 26px; margin-right: 11px; }
}

/* Sur les quatre autres pages de services l'accordéon vit dans la colonne
   principale et mesure environ 800 px. Posé en pleine largeur sur
   Cybersécurité et Conseil, il irait jusqu'à 1220 px : des lignes de
   question trop longues à lire. */
.vc-faq .tronix-accordion-wraper .container,
.vc-faq .tronix-accordion-wraper .container-fluid {
    max-width: 820px;
    margin-inline: auto;
}

/* ------------------------------------------------------------------
   Pied de page — bloc « Nous contacter ».
   Le champ texte du widget passe par esc_html() : impossible d'y mettre
   un lien. Les coordonnées sont donc rendues par le champ voisin, qui
   passe par do_shortcode() et laisse passer le HTML. Le <form> qui les
   entoure vient du gabarit du thème et ne sert à rien ici.
   ------------------------------------------------------------------ */
.footer-four-newsletter-form { margin: 0; }

.vc-foot-coord {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    font-style: normal;   /* <address> est en italique par défaut */
}

.vc-foot-coord .vc-foot-tel {
    font-size: 23px;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: -.4px;
    color: #fff;
    text-decoration: none;
    transition: color .18s ease;
}
.vc-foot-coord .vc-foot-tel:hover,
.vc-foot-coord .vc-foot-tel:focus-visible { color: #6FA6FF; }

.vc-foot-coord .vc-foot-horaires {
    font-size: 13.5px;
    line-height: 1.6;
    color: #ACB7CC;
    margin-bottom: 14px;
}

.vc-foot-coord .vc-foot-adresse {
    font-size: 14.5px;
    line-height: 1.75;
    color: #ACB7CC;
    margin-bottom: 16px;
}

.vc-foot-coord .vc-foot-lien {
    display: inline-flex;
    align-items: center;
    padding: 9px 18px;
    border: 1px solid rgba(255, 255, 255, .26);
    border-radius: 999px;
    font-size: 13.5px;
    font-weight: 600;
    color: #fff;
    text-decoration: none;
    transition: background-color .18s ease, border-color .18s ease;
}
.vc-foot-coord .vc-foot-lien:hover,
.vc-foot-coord .vc-foot-lien:focus-visible {
    background: rgba(255, 255, 255, .1);
    border-color: rgba(255, 255, 255, .5);
    color: #fff;
}

/* Bas de page : la mention de droits et les pages légales sur deux
   niveaux plutôt qu'une seule ligne encombrée de séparateurs. */
.vc-foot-copy { display: block; }
.vc-foot-legal {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 10px 26px;
    margin-top: 10px;
}
.vc-foot-legal a {
    color: #ACB7CC;
    text-decoration: none;
    border-bottom: 1px solid rgba(172, 183, 204, .32);
    padding-bottom: 1px;
    transition: color .18s ease, border-color .18s ease;
}
.vc-foot-legal a:hover,
.vc-foot-legal a:focus-visible { color: #fff; border-bottom-color: #fff; }

@media (max-width: 767px) {
    .vc-foot-coord { align-items: flex-start; }
    .vc-foot-legal { justify-content: flex-start; }
}

/* Le gabarit Tronix réserve 240 px au-dessus des colonnes du pied de page :
   la démo y logeait un encart en surimpression que nous n'avons pas. */
.footer-four-content-wrp { padding-top: 96px; }

/* Barre du bas : le logo était rendu en taille réelle (865 px de large),
   ce qui ne laissait presque rien aux mentions légales, repliées une par
   ligne. On le ramène à une taille de pied de page. */
.footer-four-copyright-section {
    flex-wrap: wrap;
    gap: 16px 36px;
}
.elementor .footer-four-copyright-section img {
    max-width: 230px;
    height: auto;
}
.footer-four-copyright-text {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 2px;
    text-align: right;
    font-size: 13.5px;
    line-height: 1.7;
}
.footer-four-copyright-text .vc-foot-legal { justify-content: flex-end; }

@media (max-width: 860px) {
    .footer-four-content-wrp { padding-top: 64px; }
    .footer-four-copyright-section { justify-content: center; }
    .footer-four-copyright-text { align-items: center; text-align: center; }
    .footer-four-copyright-text .vc-foot-legal { justify-content: center; }
}

/* ------------------------------------------------------------------
   « Les mots qui comptent » — colonne de droite des pages de services.
   Remplace un menu qui recopiait le menu principal et un bloc de
   coordonnées identique sur les six pages. Le contenu, lui, change :
   chaque terme dit ce qu'il engage, pas ce qu'il signifie.
   La grille s'adapte seule : une colonne dans la barre latérale des
   quatre pages qui en ont une, quatre de front sur Cybersécurité et
   Conseil, où le bloc occupe toute la largeur.
   ------------------------------------------------------------------ */
.vc-mots {
    display: block;
    padding: 34px 30px 36px;
    background: #EFF1F5;
    border-radius: 15px;
}

.vc-mots__titre {
    margin: 0 0 22px;
    font-size: 22px;
    font-weight: 600;
    line-height: 1.3;
    letter-spacing: -.2px;
    color: #061327;
}

.vc-mots__liste {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(auto-fit, minmax(228px, 1fr));
    margin: 0;
}

.vc-mots__item {
    padding: 16px 18px 17px;
    background: #fff;
    border-radius: 12px;
    /* ombre intérieure plutôt que border-left : une bordure déborde des
       angles arrondis et forme deux pointes bleues en haut et en bas. */
    box-shadow: inset 3px 0 0 #0E59F2;
}

.vc-mots__item dt {
    margin: 0 0 5px;
    font-size: 15.5px;
    font-weight: 700;
    line-height: 1.3;
    letter-spacing: -.1px;
    color: #061327;
}

.vc-mots__item dd {
    margin: 0;
    font-size: 14px;
    line-height: 1.65;
    color: #5A6B84;
    text-align: left;   /* la justification générale dessert des lignes si courtes */
    hyphens: manual;
}

@media (max-width: 480px) {
    .vc-mots { padding: 26px 20px 28px; }
    .vc-mots__titre { font-size: 20px; margin-bottom: 18px; }
    .vc-mots__liste { grid-template-columns: 1fr; }
}

/* ------------------------------------------------------------------
   Pied de page — respiration entre les colonnes.
   Les quatre colonnes font exactement la même largeur, mais Bootstrap
   ne leur laisse que 10 px de marge de chaque côté : 20 px entre deux
   blocs de texte de 285 px. Le paragraphe de gauche venait buter sur
   le titre de la colonne voisine. On double la gouttière, et on donne
   au seul bloc de texte courant une marge supplémentaire à droite.
   ------------------------------------------------------------------ */
@media (min-width: 992px) {
    .footer-four-content-wrp .row > [class*="col-"] {
        padding-left: 22px;
        padding-right: 22px;
    }
    .footer-four-about-widget-info { padding-right: 16px; }
}

/* Texte non justifié ici volontairement : sur une mesure de 40 signes,
   la justification creuse des rivières de blanc entre les mots. */
.footer-four-widget-des {
    text-align: left;
    hyphens: manual;
    max-width: 34em;
}

/* ------------------------------------------------------------------
   En-tête : le bloc d'appel devient cliquable. « Réservez votre appel »
   ouvre la prise de rendez-vous 3CX, le numéro compose l'appel. Les
   liens héritent de la couleur du bloc pour que rien ne change à l'œil
   tant qu'on ne les survole pas.
   ------------------------------------------------------------------ */
.header-one-call-title a,
.header-one-call-number a {
    color: inherit;
    text-decoration: none;
    transition: color .18s ease;
}
.header-one-call-title a:hover,
.header-one-call-title a:focus-visible,
.header-one-call-number a:hover,
.header-one-call-number a:focus-visible {
    color: #0E59F2;
    text-decoration: none;
}
.header-one-call-title a:focus-visible,
.header-one-call-number a:focus-visible {
    outline: 2px solid #0E59F2;
    outline-offset: 3px;
    border-radius: 3px;
}

/* Même principe sur la carte de coordonnées de la page Contact. */
.icon-box-title a {
    color: inherit;
    text-decoration: none;
    transition: color .18s ease;
}
.icon-box-title a:hover,
.icon-box-title a:focus-visible { color: #0E59F2; }

/* ------------------------------------------------------------------
   Pied de page — largeurs de colonnes.
   Quatre colonnes identiques alors que « Le Site » porte des libellés
   courts et « Nos services » des libellés longs : la colonne des liens
   rapides se terminait très tôt et laissait un trou, pendant que les
   intitulés de services passaient à la ligne. On répartit la largeur
   selon ce que chaque colonne a réellement à dire.
   ------------------------------------------------------------------ */
@media (min-width: 992px) {
    .footer-four-content-wrp .row > [class*="col-"] { flex: 0 0 auto; }
    .footer-four-content-wrp .row > [class*="col-"]:nth-child(1) { width: 27%; }
    .footer-four-content-wrp .row > [class*="col-"]:nth-child(2) { width: 18%; }
    .footer-four-content-wrp .row > [class*="col-"]:nth-child(3) { width: 31%; }
    .footer-four-content-wrp .row > [class*="col-"]:nth-child(4) { width: 24%; }
}

/* Le credo, détaché du descriptif : c'est la phrase qui dit comment on
   travaille, elle ne doit pas se fondre dans la liste des métiers. */
.footer-four-widget-des strong {
    display: block;
    margin-top: 2px;
    padding-left: 14px;
    border-left: 2px solid #25D8EE;
    font-size: 14.5px;
    font-weight: 500;
    line-height: 1.75;
    color: #E3EAF6;
}

/* « Assistance clients » : le seul lien du pied de page qui mène à une
   action plutôt qu'à une page. Un vert soutenu le distingue du bleu des
   liens, et dit « service ouvert » là où un rouge dirait « incident ».
   Blanc sur ce vert : 5,0:1, au-dessus du minimum. */
.vc-foot-coord .vc-foot-lien {
    background: #15803D;
    border-color: #2AA95C;
    color: #fff;
}
.vc-foot-coord .vc-foot-lien:hover,
.vc-foot-coord .vc-foot-lien:focus-visible {
    background: #189245;
    border-color: #48C87A;
    color: #fff;
}

/* ==================================================================
   Page Contact — bande des coordonnées.
   Remplace une rangée de trois libellés dont deux étaient des liens
   que rien ne signalait comme tels. Fond sombre pleine largeur, pour
   alterner avec le blanc du bloc « Deux chemins » au-dessus et le
   gris clair du formulaire en dessous.
   ================================================================== */
.vc-coord { background: var(--vc-s2, #E7F0FA); color: var(--vc-ink, #101828); }

.vc-coord__wrap {
    width: 100%;
    max-width: 1220px;
    margin: 0 auto;
    padding: clamp(54px, 6vw, 86px) max(20px, env(safe-area-inset-left, 0px))
             clamp(58px, 6.4vw, 92px) max(20px, env(safe-area-inset-right, 0px));
}

.vc-coord__head { margin-bottom: 34px; }

.vc-coord__kicker {
    display: inline-flex; align-items: center; gap: 10px;
    margin: 0 0 14px;
    font-size: 13px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase;
    color: var(--vc-blue, #0E59F2);
}
.vc-coord__kicker::before { content: ""; width: 26px; height: 2px; background: currentColor; border-radius: 2px; }

.vc-coord__titre {
    margin: 0;
    font-size: clamp(26px, 3vw, 36px);
    font-weight: 600;
    line-height: 1.22;
    letter-spacing: -.5px;
    color: var(--vc-ink, #101828);
    text-wrap: balance;
}

/* --- les deux canaux joignables --- */
.vc-coord__canaux {
    display: grid;
    gap: 18px;
    grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
    margin-bottom: 44px;
}

.vc-coord__canal {
    display: grid;
    grid-template-columns: 46px 1fr;
    grid-template-areas: "icone label" "icone valeur" "icone note";
    align-content: start;
    gap: 2px 16px;
    padding: 24px 26px 26px;
    background: #FFFFFF;
    border: 1px solid var(--vc-s2-line, #D5E3F3);
    border-radius: 16px;
    text-decoration: none;
    transition: background-color .2s ease, border-color .2s ease, transform .2s ease;
}
.vc-coord__canal:hover,
.vc-coord__canal:focus-visible {
    background: rgba(14, 89, 242, .06);
    border-color: rgba(14, 89, 242, .45);
    transform: translateY(-2px);
}
.vc-coord__canal:focus-visible { outline: 2px solid var(--vc-blue, #0E59F2); outline-offset: 3px; }

.vc-coord__icone {
    grid-area: icone;
    display: flex; align-items: center; justify-content: center;
    width: 46px; height: 46px;
    border-radius: 12px;
    background: rgba(14, 89, 242, .10);
    color: var(--vc-blue, #0E59F2);
}
.vc-coord__icone svg { width: 22px; height: 22px; }

.vc-coord__label {
    grid-area: label;
    font-size: 12.5px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
    color: var(--vc-body, #576073);
}
.vc-coord__valeur {
    grid-area: valeur;
    font-size: 21px; font-weight: 700; line-height: 1.25; letter-spacing: -.3px;
    color: var(--vc-ink, #101828);
}
.vc-coord__note {
    grid-area: note;
    margin-top: 4px;
    font-size: 13.5px; line-height: 1.6;
    color: var(--vc-body, #576073);
}

/* --- les trois locaux --- */
.vc-coord__intro {
    max-width: 62ch;
    margin: 16px 0 0;
    font-size: 15.5px;
    line-height: 1.75;
    color: var(--vc-body, #576073);
    text-align: left;
    hyphens: manual;
}

.vc-coord__locaux {
    display: grid;
    gap: 18px;
    grid-template-columns: repeat(auto-fit, minmax(258px, 1fr));
    padding-top: 36px;
    border-top: 1px solid var(--vc-s2-line, #D5E3F3);
}

.vc-coord__local {
    display: grid;
    gap: 3px;
    align-content: start;
    padding: 26px 24px 24px;
    background: #FFFFFF;
    border: 1px solid var(--vc-s2-line, #D5E3F3);
    border-radius: 16px;
}

/* Un immeuble, et grand : une punaise de carte se confond avec un
   marqueur de localisation, et « sites » se lisait comme sites web. */
.vc-coord__bati {
    display: block;
    margin-bottom: 14px;
    color: var(--vc-blue, #0E59F2);
}
.vc-coord__bati svg { width: 52px; height: 52px; display: block; }

.vc-coord__carte {
    display: inline-flex; align-items: center; gap: 7px;
    margin-top: 14px;
    font-size: 13.5px; font-weight: 600;
    color: var(--vc-blue, #0E59F2);
    text-decoration: none;
    border-bottom: 1px solid rgba(14, 89, 242, .35);
    padding-bottom: 2px;
    width: fit-content;
    transition: color .18s ease, border-color .18s ease;
}
.vc-coord__carte svg { width: 14px; height: 14px; }
.vc-coord__carte:hover,
.vc-coord__carte:focus-visible { color: var(--vc-blue-600, #0B48C6); border-bottom-color: var(--vc-blue-600, #0B48C6); }

.vc-coord__role {
    font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase;
    color: var(--vc-body, #576073);
}
.vc-coord__ville {
    font-size: 17px; font-weight: 600; line-height: 1.3; color: var(--vc-ink, #101828);
}
.vc-coord__adresse {
    margin: 4px 0 0;
    font-size: 14.5px; line-height: 1.65; color: var(--vc-body, #576073);
    font-style: normal;   /* <address> est en italique par défaut */
}

@media (max-width: 520px) {
    .vc-coord__canal { padding: 20px 20px 22px; gap: 2px 13px; grid-template-columns: 40px 1fr; }
    .vc-coord__icone { width: 40px; height: 40px; }
    .vc-coord__valeur { font-size: 19px; }
}

/* ------------------------------------------------------------------
   Page Contact — les engagements passent sous le formulaire.
   Elementor donne « flex: 0 1 auto » à ses colonnes : une colonne à
   100 % placée après deux colonnes à 50 % se laissait comprimer au
   lieu de passer à la ligne, et les six engagements se retrouvaient
   sur 139 px de large. On lui interdit de rétrécir.
   ------------------------------------------------------------------ */
/* Le conteneur de cette section interne n'enveloppe pas : les trois
   colonnes restaient sur une ligne, les deux premières écrasées et la
   troisième débordant hors de l'encadré gris. */
.elementor-element-2406e6f8 > .elementor-container {
    flex-wrap: wrap;
}

/* Sélecteur doublé : « .elementor-column { flex: 0 1 auto } » vient de la
   feuille d'Elementor, chargée après celle de l'enfant. */
.elementor-column.elementor-element-vceng001 {
    flex: 0 0 100%;
    max-width: 100%;
}

/* Sur trois colonnes, les cartouches n'ont plus besoin d'autant d'air
   entre eux qu'empilés. */
@media (min-width: 992px) {
    .elementor-column.elementor-element-vceng001 .vc-liste .tronix-list-box-item { margin-bottom: 4px; }
    .elementor-column.elementor-element-vceng001 .vc-liste .tronix-section-list-title { margin-bottom: 26px; }
}

/* ==================================================================
   Actualités — vignettes des articles.
   Le thème impose « height: 450px » à l'image de carte, soit un cadre
   portrait de 360 × 450. Nos couvertures font 1200 × 630 : rognées au
   centre, elles ne montraient qu'une bande illisible. On rend au cadre
   le rapport de l'image, qui est aussi celui attendu par les aperçus
   de partage.
   ================================================================== */
.all-posts-wrapper .post-thumbnail-wrapper img {
    height: auto;
    aspect-ratio: 1200 / 630;
    object-fit: cover;
}

/* Les cartes d'une même rangée se terminent à la même hauteur, quel que
   soit le nombre de lignes du titre. */
@media (min-width: 768px) {
    .all-posts-wrapper { align-items: stretch; }
    .all-posts-wrapper > .single-post-item {
        display: flex;
        align-self: stretch;
        height: auto;
    }
    .all-posts-wrapper > .single-post-item > article.post-item {
        display: flex;
        flex-direction: column;
        flex: 1 1 auto;
        width: 100%;
    }
    /* La chaîne complète doit être en colonne souple pour que le lien
       puisse être poussé en bas : article > single-post-wrapper >
       post-content-wrapper > post-read-more. */
    .all-posts-wrapper .single-post-wrapper,
    .all-posts-wrapper .post-content-wrapper {
        display: flex;
        flex-direction: column;
        flex: 1 1 auto;
    }
    .all-posts-wrapper .post-read-more { margin-top: auto; }
}

/* ============================================================
   Illustrations et mise en page des articles
   ------------------------------------------------------------
   Les figures sont rendues à 2x (2080 px de large) pour rester
   nettes sur écran haute densité ; elles s'adaptent ensuite à la
   largeur de la colonne. Tout est porté par .entry-content pour
   ne pas atteindre les widgets de la colonne latérale, qui vivent
   dans le même conteneur .post-details-wrapper.
   ============================================================ */
.post-details-wrapper .entry-content .vc-fig {
    margin: 38px 0 42px;
}
.post-details-wrapper .entry-content .vc-fig img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 12px;
}
.post-details-wrapper .entry-content .vc-fig figcaption {
    margin-top: 12px;
    font-size: 14px;
    line-height: 1.55;
    color: #5A6B84;
    text-align: left;
}

/* Code en ligne : les articles techniques en contiennent beaucoup,
   et le thème ne le distingue pas du texte courant. */
.post-details-wrapper .entry-content code {
    font-family: Menlo, Consolas, "Liberation Mono", monospace;
    font-size: .9em;
    padding: 2px 6px;
    border-radius: 5px;
    background: #EDF2FA;
    color: #0B3A8F;
    word-break: break-word;
}
.post-details-wrapper .entry-content .vc-fig figcaption code {
    font-size: .88em;
    padding: 1px 5px;
}

/* Rythme de lecture : des intertitres qui respirent et des listes
   qui ne collent pas au paragraphe précédent. */
.post-details-wrapper .entry-content h2 {
    margin-top: 44px;
    margin-bottom: 16px;
    line-height: 1.3;
}
.post-details-wrapper .entry-content .vc-fig + p,
.post-details-wrapper .entry-content .vc-fig + h2 {
    margin-top: 0;
}
.post-details-wrapper .entry-content ul,
.post-details-wrapper .entry-content ol {
    margin: 0 0 22px;
    padding-left: 22px;
}
.post-details-wrapper .entry-content li {
    margin-bottom: 11px;
    line-height: 1.65;
}

/* Le thème justifie le corps des articles. Dans une colonne de 760 px
   remplie d'identifiants insécables (CVE-2026-96951, Get-ItemProperty),
   la justification creuse des rivières entre les mots et la césure
   automatique couperait ces identifiants. On passe en drapeau à droite. */
.post-details-wrapper .entry-content p,
.post-details-wrapper .entry-content li {
    text-align: left;
}

/* Sur téléphone, réduire une capture de terminal de 1040 à 370 px la rend
   illisible (le texte tomberait sous 6 px). On la laisse à une échelle
   lisible et on la fait défiler horizontalement, la légende restant
   collée au bord gauche. Seule la figure défile : la page, elle, ne
   déborde pas. */
@media (max-width: 767px) {
    .post-details-wrapper .entry-content .vc-fig {
        overflow-x: auto;
        overflow-y: hidden;
        -webkit-overflow-scrolling: touch;
        padding-bottom: 6px;
    }
    .post-details-wrapper .entry-content .vc-fig img {
        width: 760px;
        max-width: none;
    }
    .post-details-wrapper .entry-content .vc-fig figcaption {
        position: sticky;
        left: 0;
        width: calc(100vw - 40px);
        max-width: 760px;
    }
}

/* ============================================================
   Rubrique Actualités — un article à la une, les suivants en grille
   ------------------------------------------------------------
   Porté par home.php du thème enfant : n'affecte ni les articles
   eux-mêmes (single.php) ni les archives (index.php).
   ============================================================ */
.vc-actu { padding: 64px 0 88px; }

.vc-carte {
    position: relative;
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #E3EAF4;
    border-radius: 14px;
    overflow: hidden;
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
.vc-carte:hover {
    transform: translateY(-3px);
    box-shadow: 0 16px 34px -18px rgba(6, 19, 39, .35);
    border-color: #CBD9EC;
}
/* Toute la carte est cliquable : c'est la zone que l'œil vise. */
.vc-carte__lien { position: absolute; inset: 0; z-index: 2; }
.vc-carte__lien:focus-visible { outline: 3px solid #0E59F2; outline-offset: 3px; border-radius: 14px; }

.vc-carte__visuel { position: relative; background: #0A1A33; }
.vc-carte__visuel img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1200 / 630;
    object-fit: cover;
}
/* Le bandeau vit dans la ligne d'informations, pas sur le visuel : une
   couverture porte déjà son propre titre, on ne le recouvre pas. */
.vc-carte__une {
    background: #0E59F2;
    color: #fff;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 1.3px;
    text-transform: uppercase;
    padding: 4px 11px;
    border-radius: 20px;
}

.vc-carte__corps {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    padding: 20px 22px 22px;
}
.vc-carte__meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 9px;
    margin-bottom: 11px;
    font-size: 13px;
    color: #6B7C96;
}
.vc-carte__rubrique {
    padding: 3px 9px;
    border-radius: 6px;
    background: rgba(14, 89, 242, .09);
    color: #0E4ACB;
    font-size: 12.3px;
    font-weight: 600;
}
.vc-carte__date::after { content: "·"; margin-left: 9px; color: #B6C3D6; }
/* Sur les petites cartes, la rubrique garde sa largeur propre mais occupe
   sa ligne : un saut est inséré après elle plutôt que de l'étirer. */
.vc-actu__grille .vc-carte__meta { gap: 7px 9px; font-size: 12.6px; }
.vc-actu__grille .vc-carte__rubrique { order: 1; }
.vc-actu__grille .vc-carte__meta::after { content: ""; flex: 0 0 100%; height: 0; order: 2; }
.vc-actu__grille .vc-carte__date { order: 3; }
.vc-actu__grille .vc-carte__duree { order: 4; }
.vc-carte__titre {
    margin: 0 0 9px;
    font-size: 20px;
    line-height: 1.3;
    letter-spacing: -.2px;
    color: #061327;
    text-wrap: balance;
}
.vc-carte__chapo {
    margin: 0 0 16px;
    font-size: 14.6px;
    line-height: 1.6;
    color: #5A6B84;
}
.vc-carte__cta {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin-top: auto;
    color: #0E59F2;
    font-size: 14.6px;
    font-weight: 600;
}
.vc-carte__cta svg { transition: transform .18s ease; }
.vc-carte:hover .vc-carte__cta svg { transform: translateX(3px); }

.vc-actu__une { margin-bottom: 50px; }

@media (min-width: 992px) {
    .vc-carte--une { display: grid; grid-template-columns: 1.06fr 1fr; }
    /* L'image remplit sa colonne : c'est le texte qui fixe la hauteur. */
    .vc-carte--une .vc-carte__visuel {
        min-height: 326px;
        background: linear-gradient(135deg, #061327 0%, #0A1E3C 100%);
    }
    .vc-carte--une .vc-carte__visuel img {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        aspect-ratio: auto;
        object-fit: contain;
    }
    .vc-carte--une .vc-carte__corps { padding: 40px 42px; justify-content: center; }
    .vc-carte--une .vc-carte__meta { margin-bottom: 15px; font-size: 13.5px; }
    .vc-carte--une .vc-carte__titre { margin-bottom: 13px; font-size: 31px; }
    .vc-carte--une .vc-carte__chapo { margin-bottom: 22px; font-size: 16px; }
}

.vc-actu__intertitre {
    display: flex;
    align-items: center;
    gap: 18px;
    margin: 0 0 22px;
    font-size: 13.5px;
    font-weight: 600;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: #7589A4;
}
.vc-actu__intertitre::after { content: ""; flex: 1; height: 1px; background: #E3EAF4; }

.vc-actu__grille {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
    gap: 26px;
}

@media (prefers-reduced-motion: reduce) {
    .vc-carte, .vc-carte__cta svg { transition: none; }
    .vc-carte:hover { transform: none; }
}

/* ------------------------------------------------------------------
   En-tête : position du logo (bureau uniquement)

   Le gabarit du thème plaçait le haut du logo à 1 px du bas de la barre
   bleue : les deux se touchaient, ce qui donnait l'impression d'un
   défaut d'alignement. On le descend de 28 px et on l'agrandit de 16 %.

   Les deux transformations passent par « transform », qui ne modifie
   aucune dimension de mise en page : la pastille blanche et les arcs
   bleus gardent exactement la taille et la position d'origine. Un simple
   « width » aurait agrandi la pastille avec le logo et creusé davantage
   son débordement sous l'en-tête.

   Sous 992 px le menu mobile prend le relais, et sa mise en page convient :
   la règle ne s'y applique pas.
   ------------------------------------------------------------------ */
@media (min-width: 992px) {
    .header-four-logo-inner img {
        transform: translateY(28px) scale(1.13);
        transform-origin: center center;
    }
}
