/* ============================================================
   UPia v2 : overrides Frisk
   Le SEUL fichier qui modifie le template Frisk.
   ============================================================ */

/* 1. Font swap : PolySans pour titres et nav, fallback General Sans
   pour les caracteres absents du Trial (accents francais).
   Le navigateur fait le fallback character-by-character automatiquement. */
:root {
  --title-font: "PolySans", "General Sans", "Unbounded", system-ui, sans-serif;
  --body-font:  "Inter", "Poppins", system-ui, sans-serif;
}

body {
  font-family: var(--body-font);
}

h1, h2, h3, h4, h5, h6,
.title-area .sec-title,
.hero-title,
.section-title {
  font-family: var(--title-font);
  font-weight: 700;
  letter-spacing: -0.025em;
}

/* 2. Logo UPia : visible et lisible dans le header */
/* IMPORTANT: Frisk applique `img:not([draggable]) { height: auto; max-width: 100% }`
   avec specificite (0,0,1,1) qui ecrase .upia-logo (0,0,1,0).
   On utilise donc .header-logo img.upia-logo (specificite 0,0,2,1) pour gagner. */
.header-logo img.upia-logo,
.mobile-logo img.upia-logo,
.footer-logo img.upia-logo {
  display: inline-block;
  height: 56px;
  width: auto;
  max-width: none;
  vertical-align: middle;
}
@media (max-width: 991px) {
  .header-logo img.upia-logo,
  .mobile-logo img.upia-logo {
    height: 44px;
  }
}
.header-logo {
  display: flex;
  align-items: center;
  padding-top: 12px;
  padding-bottom: 12px;
  min-height: 56px;
}
.header-logo a {
  display: inline-flex;
  align-items: center;
}

/* 3. Italique accent : fonds clairs = lime text sur pill noir (HIGH CONTRAST) */
/* Doit etre avant les regles fonds sombres pour que ces dernieres priment */
.bg-smoke h1 em, .bg-smoke h2 em, .bg-smoke .sec-title em,
.bg-smoke2 h1 em, .bg-smoke2 h2 em,
.bg-white h1 em, .bg-white h2 em,
body h1 em, body h2 em,
.title-area .sec-title em,
section h1 em, section h2 em,
.title-area h1 em {
  font-family: var(--title-font);
  font-style: italic;
  font-weight: 700;
  color: var(--theme-color);
  background: var(--title-color);
  padding: 0.05em 0.25em;
  border-radius: 0;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

/* 3b. Italique sur fonds NOIRS (.bg-title) : lime pur, pas de pill */
/* bg-theme (lime) NE figure PAS ici : le em reste en lime-sur-pill-noir (rule 3). */
.bg-title h1 em, .bg-title h2 em, .bg-title .sec-title em,
.hero-wrapper[data-bg-src] h1 em, .hero-wrapper[data-bg-src] h2 em,
.hero-wrapper[data-bg-src] .sec-title em,
.footer-wrapper.bg-title h1 em, .footer-wrapper.bg-title h2 em,
.sidemenu-wrapper h1 em, .sidemenu-wrapper h2 em,
.hero-1 .hero-title em,
.hero-title em {
  font-family: var(--title-font);
  font-style: italic;
  font-weight: 700;
  color: var(--theme-color);
  background: transparent;
  padding: 0;
  border-radius: 0;
  box-decoration-break: unset;
  -webkit-box-decoration-break: unset;
}

/* 3b-bis. Italique sur fond LIME (.bg-theme) : pill noir avec texte lime */
.bg-theme h1 em, .bg-theme h2 em, .bg-theme h3 em,
.bg-theme .sec-title em, .bg-theme em {
  color: var(--theme-color);
  background: var(--title-color);
  padding: 0.05em 0.25em;
  border-radius: 0;
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

/* 3c. GUARD lisibilite : aucun texte lime brut sur fonds clairs */
/* Si un element a .text-theme (lime) tombe sur un fond clair, on force le noir */
.bg-smoke .text-theme, .bg-smoke2 .text-theme, .bg-white .text-theme,
.bg-light .text-theme {
  color: var(--title-color);
}

/* 3d. Sub-title : noir et petit (Frisk les met en lime/14px, trop imposant sur fonds clairs) */
.sub-title {
  color: var(--title-color);
  font-size: 11px;
  letter-spacing: 0.18em;
  font-weight: 600;
}
.sub-title:after {
  background-color: var(--title-color);
  width: 32px;
  height: 1px;
}
/* Sur fonds sombres ET sur fond lime : couleur appropriee */
.bg-title .sub-title, .bg-theme .sub-title,
.hero-wrapper[data-bg-src] .sub-title,
.footer-wrapper.bg-title .sub-title,
.sidemenu-wrapper .sub-title {
  color: var(--theme-color);
}
/* Sur fond lime, sub-title noir pour contraste */
.bg-theme .sub-title {
  color: var(--title-color);
}
.bg-title .sub-title:after, .hero-wrapper[data-bg-src] .sub-title:after,
.footer-wrapper.bg-title .sub-title:after, .sidemenu-wrapper .sub-title:after {
  background-color: var(--theme-color);
}
.bg-theme .sub-title:after {
  background-color: var(--title-color);
}

/* 3e. GUARD lime-on-lime : tout texte de corps sur .bg-theme passe en NOIR */
/* Les em sont geres separement par 3b-bis (lime-on-pill-noir). */
.bg-theme .text-theme,
.bg-theme h1, .bg-theme h2, .bg-theme h3, .bg-theme h4, .bg-theme h5, .bg-theme h6,
.bg-theme p, .bg-theme li, .bg-theme a:not(.btn) {
  color: var(--title-color);
}

/* 4. Mention "scenario type, anonymise" sur cas */
.case-scenario-note {
  display: inline-block;
  font-family: ui-monospace, "SF Mono", Menlo, monospace;
  font-size: 0.72rem;
  letter-spacing: 0.12em;
  color: var(--light-color);
  text-transform: uppercase;
  margin-top: 0.8rem;
  padding: 0.3rem 0.6rem;
  border: 1px solid var(--border-color);
  border-radius: 999px;
}

/* 5. Promo bar : pleine largeur, en tete de page (hors sticky-wrapper) */
.upia-promo-bar {
  display: block;
  width: 100%;
  margin: 0;
  background: var(--title-color);
  color: var(--theme-color);
  padding: 0.75rem 1.5rem;
  text-align: center;
  font-size: 0.85rem;
  font-weight: 500;
  font-family: var(--body-font);
  letter-spacing: 0.01em;
  position: relative;
  z-index: 1001;
}
.upia-promo-bar a {
  color: var(--theme-color);
  text-decoration: underline;
  text-underline-offset: 0.2em;
  margin-left: 0.75rem;
}
.upia-promo-bar a:hover {
  color: #ffffff;
}

/* 5b. Header : repasse en flow normal (Frisk le met absolute, overlay sur contenu) */
/* Avec position: relative, le header prend sa place et le contenu se cale dessous. */
.nav-header {
  position: relative;
}

/* 6. Accordion : layout vertical, body sous la question, plein largeur */
/* On NE force PAS display:block sur .accordion-collapse, sinon Bootstrap ne peut plus le fermer */
.accordion-area .accordion-card {
  display: block;
  padding-top: 28px;
  padding-bottom: 28px;
  border-bottom: 2px solid var(--title-color);
}
.accordion-area .accordion-card .accordion-header {
  flex: none;
  width: 100%;
  margin: 0;
}
.accordion-area .accordion-card .accordion-button {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 1.5rem;
  text-align: left;
  padding: 0 0 0.5rem 0;
  font-family: var(--title-font);
  font-weight: 700;
  letter-spacing: -0.015em;
}
.accordion-area .accordion-card .accordion-button:after {
  margin-left: auto;
  flex-shrink: 0;
}
.accordion-area .accordion-card .accordion-collapse {
  width: 100%;
}
.accordion-area .accordion-card .accordion-body {
  width: 100%;
  max-width: none;
  padding: 0.75rem 0 0 0;
  margin: 0;
}
.accordion-area .accordion-card .accordion-body .faq-text {
  display: block;
  width: 100%;
  max-width: none;
  margin: 0 0 0.75rem 0;
  font-size: 1rem;
  line-height: 1.65;
  color: var(--body-color);
}
.accordion-area .accordion-card .accordion-body .faq-text:last-child {
  margin-bottom: 0;
}

/* 6b. FAQ number : badge visible et aere */
.accordion-area .accordion-card .accordion-button .faq-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 3rem;
  padding: 0.25rem 0.75rem;
  margin-right: 1.5rem;
  background: var(--theme-color);
  color: var(--title-color);
  font-family: var(--title-font);
  font-weight: 700;
  font-size: 0.9rem;
  letter-spacing: 0.04em;
  border-radius: 0;
  flex-shrink: 0;
}

/* 7. Counter : 4 colonnes, separateur Frisk ::after (deja noir), pas de border-right en doublon */
.counter-area-1 .counter-card { width: 100%; }
/* Le separateur Frisk via ::after (positionne a left:-30/-70px) reste, pas de doublon */
/* Sur breakpoint xl-auto -> xl-3, le ::after Frisk peut depasser ou se superposer.
   On le repositionne au bord gauche de la colonne (10px) au lieu de -70px,
   et on retire pour la 1ere colonne. */
.counter-area-1 .counter-divider:after {
  left: 0;
  width: 1px;
  height: 70%;
  top: 15%;
  border: 0;
  background: var(--title-color);
}
.counter-area-1 .row > .counter-divider:first-child:after {
  display: none;
}
@media (max-width: 991px) {
  .counter-area-1 .counter-divider:after { display: none; }
}

/* 7b. Counter cards : padding-left pour eloigner le texte de la barre de separation */
.counter-area-1 .counter-divider > .counter-card { padding-left: 1.5rem; }
.counter-area-1 .row > .counter-divider:first-child > .counter-card { padding-left: 0; }
@media (max-width: 991px) {
  .counter-area-1 .counter-divider > .counter-card { padding-left: 0; }
}

/* 8. Scroll-to-top : fleche NOIRE bien visible sur fond clair */
.scroll-top:after {
  color: var(--title-color);
  font-weight: 900;
}

/* 9. Footer social : icones lisibles */
.footer-wrapper .social-btn a,
.footer-wrapper .social-btn a i {
  color: inherit;
}

/* 11. CTA sur sections noires : bouton lime avec texte noir */
.bg-title .btn,
.bg-title a.btn,
.bg-title button.btn,
.footer-wrapper.bg-title .btn,
.cta-area-1.bg-title .btn,
section.bg-title .btn {
  background: var(--theme-color);
  color: var(--title-color);
  border-color: var(--theme-color);
}
.bg-title .btn:hover,
.footer-wrapper.bg-title .btn:hover,
.cta-area-1.bg-title .btn:hover,
section.bg-title .btn:hover {
  background: var(--white-color);
  color: var(--title-color);
  border-color: var(--white-color);
}
.bg-title .btn .link-effect .effect-1,
.bg-title .btn span {
  color: var(--title-color);
}

/* 12. Nav desktop : alignement vertical via line-height constant.
   IMPORTANT : ne pas mettre display: flex sur les <li> car cela change le
   calcul de positionnement absolu du .menu-pages (megamenu) et le fait
   sortir en haut de page. */
.main-menu > ul {
  display: flex;
  align-items: center;
}
.main-menu .link-effect,
.main-menu .link-effect .effect-1 {
  line-height: 17px;
  vertical-align: middle;
}

/* 13. Megamenu : positionne sous le header (et non au top de page) */
.main-menu .menu-pages {
  top: 100%;
}

/* 14. Filtres /cas/ : actif noir, inactifs noir-outline (etaient currentColor
   = white inherite de .btn, donc blanc sur blanc illisible) */
.cas-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
  justify-content: center;
}
.cas-filter-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.6rem 1.4rem;
  font-family: var(--title-font);
  font-size: 0.85rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--title-color);
  background: transparent;
  border: 1.5px solid var(--title-color);
  border-radius: 0;
  text-decoration: none;
  transition: background 0.2s, color 0.2s;
}
.cas-filter-btn:hover {
  background: var(--title-color);
  color: var(--white-color);
}
.cas-filter-btn.is-active {
  background: var(--title-color);
  color: var(--white-color);
}

/* 10. Burger mobile : lignes empilees verticalement et centrees */
/* Cause : Bootstrap d-inline-flex impose flex-direction row, les lignes du burger
   s'alignent en horizontal au lieu d'etre stackees. */
.sidebar-btn,
button.sidebar-btn,
.menu-toggle.sidebar-btn,
.navbar-right .sidebar-btn {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 0;
}
.sidebar-btn .line {
  display: block;
  height: 2px;
  width: 18px;
  background: var(--title-color);
  margin: 0;
  flex: 0 0 auto;
}
.sidebar-btn .line:not(:last-child) {
  margin-bottom: 0;
}

/* ============================================================
   /pour-qui/ : hub cards + sub-page jargon pills
   ============================================================ */

.sector-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: 32px 28px 28px;
  background: var(--white-color);
  border: 1px solid var(--smoke-color2);
  border-radius: 8px;
  text-decoration: none;
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
  color: inherit;
}

.sector-card:hover {
  transform: translateY(-4px);
  border-color: var(--title-color);
  box-shadow: 0 14px 32px -18px rgba(0, 0, 0, 0.18);
  text-decoration: none;
}

.sector-card-head {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 18px;
}

.sector-card-tier {
  display: inline-block;
  width: max-content;
  padding: 4px 10px;
  background: var(--theme-color);
  color: var(--title-color);
  font-family: var(--body-font);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  border-radius: 0;
}

.sector-card-title {
  font-family: var(--title-font);
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--title-color);
  margin: 0;
  line-height: 1.2;
}

.sector-card-text {
  flex: 1 0 auto;
  font-family: var(--body-font);
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--body-color);
  margin-bottom: 18px;
}

.sector-card-cta {
  display: inline-block;
  font-family: var(--title-font);
  font-size: 0.85rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--title-color);
  border-bottom: 2px solid var(--title-color);
  padding-bottom: 4px;
  width: max-content;
  transition: color 0.2s ease, border-color 0.2s ease;
}

.sector-card:hover .sector-card-cta {
  color: var(--theme-color);
  border-color: var(--theme-color);
}

/* Filter bar mt-30 nudge for /pour-qui/ */
.cas-filter-bar { margin-top: 30px; display: flex; flex-wrap: wrap; gap: 10px; justify-content: center; }

/* Jargon cloud on sub-pages */
.jargon-cloud {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  justify-content: center;
}

.jargon-pill {
  display: inline-block;
  padding: 8px 16px;
  background: var(--white-color);
  border: 1px solid var(--title-color);
  border-radius: 0;
  font-family: var(--title-font);
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--title-color);
  letter-spacing: 0.02em;
}


/* ============================================================
   v7 : megamenu Services emphase (50% services / 25% secteurs / 25% banner)
   ============================================================ */

.menu-pages .menu-col-service .single-menu-page.service-card {
  position: relative;
  padding: 22px 22px 22px 60px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  font-family: var(--title-font);
  font-weight: 700;
  font-size: 1.05rem;
  line-height: 1.25;
  color: var(--white-color);
  display: block;
}
.menu-pages .menu-col-service .single-menu-page.service-card:last-child {
  border-bottom: 0;
}
.menu-pages .menu-col-service .single-menu-page.service-card:hover {
  background: rgba(255, 255, 255, 0.04);
}
.menu-pages .menu-col-service .single-menu-page.service-card .menu-category {
  display: block;
  margin-top: 8px;
  font-family: var(--body-font);
  font-size: 0.82rem;
  font-weight: 400;
  line-height: 1.4;
  color: rgba(255, 255, 255, 0.65);
  letter-spacing: 0;
  text-transform: none;
}
.service-card-num {
  position: absolute;
  top: 22px;
  left: 18px;
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--theme-color);
  color: var(--title-color);
  font-family: var(--body-font);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  border-radius: 0;
}

.menu-pages .menu-col-sectors { padding-top: 8px; }
.menu-pages .menu-col-sectors .menu-col-title {
  display: block;
  margin: 0 0 8px;
  font-family: var(--body-font);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.45);
  padding: 0 22px;
}
.menu-pages .menu-col-sectors .single-menu-page {
  padding: 5px 22px;
  font-family: var(--title-font);
  font-weight: 600;
  font-size: 0.88rem;
  line-height: 1.2;
  color: rgba(255, 255, 255, 0.85);
  border-bottom: 0;
}
.menu-pages .menu-col-sectors .single-menu-page:hover {
  background: rgba(255, 255, 255, 0.04);
  color: var(--white-color);
}
.menu-pages .menu-col-sectors .single-menu-page.menu-col-link {
  margin-top: 6px;
  padding-top: 8px;
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  font-size: 0.82rem;
  color: var(--theme-color);
}
.menu-pages .menu-col-sectors .menu-tag {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 6px;
  background: var(--theme-color);
  color: var(--title-color);
  font-size: 0.62rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  border-radius: 0;
  vertical-align: middle;
}


/* ============================================================
   v8 : hero photo homepage
   ============================================================ */

.upia-hero-photo {
  width: 100%;
  margin: 0 0 60px;
  background: var(--smoke-color2);
  overflow: hidden;
}

.upia-hero-photo img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 720px;
  object-fit: cover;
  object-position: center;
}

@media (max-width: 768px) {
  .upia-hero-photo img { max-height: 320px; }
}


/* ============================================================
   v10 : hero photo sur sous-pages /pour-qui/
   ============================================================ */

.upia-sector-hero {
  width: 100%;
  margin: 0 0 40px;
  background: var(--smoke-color2);
  overflow: hidden;
}

.upia-sector-hero img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 560px;
  object-fit: cover;
  object-position: center;
}

@media (max-width: 768px) {
  .upia-sector-hero img { max-height: 280px; }
  .upia-sector-hero { margin-bottom: 20px; }
}


/* ============================================================
   V12 : Team cards refactor + accent lime renforce + ratios uniformes
   ============================================================ */

/* Section "Deux poles" : photos avec ratio strict 4:3 et texte VISIBLE par defaut */
.team-area-1 .team-card {
  display: block;
  position: relative;
}
.team-area-1 .team-card_img {
  width: 100%;
  aspect-ratio: 4 / 3;
  height: auto;
  border-radius: 0;
  overflow: hidden;
}
.team-area-1 .team-card_img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  filter: none; /* on enleve le grayscale par defaut, photos editoriales l'assument deja */
}
.team-area-1 .team-card_img:before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(10, 12, 0, 0) 40%, rgba(10, 12, 0, 0.85) 100%);
  z-index: 1;
}
.team-area-1 .team-card .team-card_content {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 0 24px 22px;
  opacity: 1; /* VISIBLE par defaut, pas cache derriere un hover */
  transform: translateY(0);
}
.team-area-1 .team-card_title {
  font-size: 22px;
  font-weight: 700;
  margin-bottom: 4px;
  color: #ffffff;
}
.team-area-1 .team-card_title a {
  color: #ffffff;
}
.team-area-1 .team-card_title a:hover {
  color: var(--theme-color);
}
.team-area-1 .team-card_desig {
  font-size: 13px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--theme-color);
  font-weight: 600;
}
.team-area-1 .team-card:hover .team-card_img img {
  transform: scale(1.03);
}

/* ============================================================
   V12 : Section "Credo" avec photo a gauche, texte a droite
   ============================================================ */
.testimonial-area-1.bg-theme {
  background: var(--theme-color);
}
.testimonial-area-1 .testi-box_text {
  font-style: normal;
  font-size: 1.08rem;
  line-height: 1.6;
}
.testimonial-area-1 .testi-box_name {
  color: var(--title-color);
  font-weight: 700;
}
.testimonial-area-1 .testi-box_desig {
  color: var(--title-color);
  opacity: 0.7;
}

/* ============================================================
   V12 : Plus de lime dans le texte courant
   ============================================================ */
.text-accent, .lime-accent {
  color: var(--theme-color);
  font-weight: 700;
}
.bg-smoke .text-accent, .bg-smoke2 .text-accent, .bg-white .text-accent {
  color: #3D5500;
  background: var(--theme-color);
  padding: 0.02em 0.18em;
}

/* ============================================================
   V12 : Section sectors hero - on garde la regle originale (lignes 644-663).
   Le bloc v12 introduisait un max-width:1320px + aspect-ratio qui croppait
   les photos. Retire pour restaurer le full-width sans crop.
   ============================================================ */

/* ============================================================
   V13 : Photo "detail metier" - 2eme photo dans les pages secteurs
   (entre "4 angles" et "Jargon metier")
   Pas de caption (retire en v14), pas de marge inferieure.
   ============================================================ */
.upia-sector-detail {
  width: 100%;
  margin: 0;
  background: var(--smoke-color2);
  overflow: hidden;
}
.upia-sector-detail img {
  display: block;
  width: 100%;
  height: auto;
  max-height: 540px;
  object-fit: cover;
  object-position: center;
}
@media (max-width: 768px) {
  .upia-sector-detail img { max-height: 280px; }
}

/* ============================================================
   V13 : Video hero loop on home (10s seamless, 16:9 desktop)
   ============================================================ */
.hero-wrapper.hero-1 {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.hero-wrapper.hero-1 .upia-hero-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  z-index: 0;
  pointer-events: none;
}
/* Dark overlay for legibility */
.hero-wrapper.hero-1::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(10,12,0,0.30) 0%, rgba(10,12,0,0.55) 70%, rgba(10,12,0,0.75) 100%);
  z-index: 1;
  pointer-events: none;
}
.hero-wrapper.hero-1 > .container {
  position: relative;
  z-index: 2;
}
/* Reduce motion: pause video on user preference */
@media (prefers-reduced-motion: reduce) {
  .hero-wrapper.hero-1 .upia-hero-video {
    display: none;
  }
}

/* ============================================================
   V15 : Header transparent + hero inverse blanc sur la home
   Cible uniquement body.home-hero (defini sur <body> de index.html).
   Strategie : le header reste en flow normal (sous la promo-bar dark),
   mais bg transparent. Le hero-wrapper a un margin-top negatif pour
   que la video remonte sous le header. Hero adapte au viewport (100vh).
   ============================================================ */
body.home-hero .nav-header {
  position: relative; /* reste en flow, sous la promo-bar */
  z-index: 10;
  background: transparent;
}
body.home-hero .nav-header .sticky-wrapper {
  background: transparent;
  box-shadow: none;
}
/* Quand le user scroll, on remet le fond solide blanc */
body.home-hero .nav-header .sticky-wrapper.header-sticky,
body.home-hero .nav-header .sticky-wrapper.sticky {
  background: var(--white-color);
  box-shadow: 0 2px 12px rgba(0,0,0,0.06);
}
/* Logo: blanc quand transparent, noir quand sticky */
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .upia-logo,
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .header-logo img {
  filter: brightness(0) invert(1);
}
/* Menu links: blanc quand transparent */
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .main-menu > ul > li > a,
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .main-menu > ul > li > a .effect-1 {
  color: #ffffff;
}
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .main-menu > ul > li > a:hover,
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .main-menu > ul > li > a:hover .effect-1 {
  color: var(--theme-color);
}
/* Burger : les 3 lignes ET le cercle border en blanc en mode transparent */
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .sidebar-btn,
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .menu-toggle {
  border-color: #ffffff;
}
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .sidebar-btn .line,
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .menu-toggle .line {
  background: #ffffff;
}
/* Icones header (search, side menu) : blanc */
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .sidebar-btn img,
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .icon-btn img,
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .sideMenuToggler img {
  filter: brightness(0) invert(1);
}
/* Bouton header "RESERVER UN RDV" : fond lime visible sur la video sombre */
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .header-button .btn {
  background: var(--theme-color);
  color: var(--title-color);
  border-color: var(--theme-color);
}
body.home-hero .nav-header .sticky-wrapper:not(.header-sticky):not(.sticky) .header-button .btn:hover {
  background: #ffffff;
  color: var(--title-color);
  border-color: #ffffff;
}

/* Promo bar : z-index eleve pour qu'elle reste TOUJOURS au-dessus du hero
   (le hero remonte sous elle en negative margin, on veut que la promo reste visible) */
body.home-hero .upia-promo-bar {
  position: relative;
  z-index: 12;
}
/* About area apres le hero : retire le margin-top: 100px qui creait un blanc */
body.home-hero .about-area-1 {
  margin-top: 0;
}
/* HERO : margin negatif large + padding-top compensate */
body.home-hero .hero-wrapper.hero-1 {
  position: relative;
  min-height: 100vh;
  display: flex;
  align-items: center;
  overflow: hidden;
  isolation: isolate;
  margin-top: -140px; /* > hauteur reelle du header desktop ~93px, overlap absorbe par promo z=12 */
}
body.home-hero .hero-wrapper.hero-1 > .container {
  position: relative;
  z-index: 2;
  width: 100%;
  padding-top: 0;
  padding-bottom: 40px;
}
/* Le contenu hero compense le margin negatif par un padding-top sur hero-style1 */
body.home-hero .hero-wrapper.hero-1 .hero-style1 {
  padding-top: 160px !important;
  padding-bottom: 40px !important;
}
@media (max-width: 991px) {
  body.home-hero .hero-wrapper.hero-1 {
    margin-top: -120px;
  }
  body.home-hero .hero-wrapper.hero-1 .hero-style1 {
    padding-top: 140px !important;
    padding-bottom: 30px !important;
  }
}
@media (max-width: 575px) {
  body.home-hero .hero-wrapper.hero-1 {
    margin-top: -110px;
  }
  body.home-hero .hero-wrapper.hero-1 .hero-style1 {
    padding-top: 130px !important;
    padding-bottom: 24px !important;
  }
}

/* HERO content : tout en blanc, em en lime */
body.home-hero .hero-wrapper.hero-1 .hero-subtitle,
body.home-hero .hero-wrapper.hero-1 .hero-title,
body.home-hero .hero-wrapper.hero-1 .hero-text,
body.home-hero .hero-wrapper.hero-1 .hero-year-tag h6 {
  color: #ffffff;
}
body.home-hero .hero-wrapper.hero-1 .hero-title em,
body.home-hero .hero-wrapper.hero-1 h1 em,
body.home-hero .hero-wrapper.hero-1 h2 em {
  color: var(--theme-color);
  background: transparent;
  padding: 0;
}
body.home-hero .hero-wrapper.hero-1 .btn {
  background: var(--theme-color);
  color: var(--title-color);
  border-color: var(--theme-color);
}
body.home-hero .hero-wrapper.hero-1 .btn:hover {
  background: #ffffff;
  color: var(--title-color);
  border-color: #ffffff;
}
body.home-hero .hero-wrapper.hero-1 .link-btn,
body.home-hero .hero-wrapper.hero-1 .link-btn .effect-1 {
  color: #ffffff;
}
body.home-hero .hero-wrapper.hero-1 .link-btn:hover,
body.home-hero .hero-wrapper.hero-1 .link-btn:hover .effect-1 {
  color: var(--theme-color);
}
body.home-hero .hero-wrapper.hero-1 .link-btn img {
  filter: brightness(0) invert(1);
}
/* Underline du link-btn : la ligne sous le texte doit etre blanche aussi */
body.home-hero .hero-wrapper.hero-1 .link-btn::before,
body.home-hero .hero-wrapper.hero-1 .link-btn::after {
  background-color: #ffffff;
}
body.home-hero .hero-wrapper.hero-1 .link-btn:hover::after {
  background-color: var(--theme-color);
}
body.home-hero .hero-wrapper.hero-1 .hero-year-tag img {
  filter: brightness(0) invert(1);
}

/* MOBILE : overlay video un peu plus opaque pour lisibilite */
@media (max-width: 768px) {
  .hero-wrapper.hero-1::after {
    background:
      linear-gradient(180deg, rgba(10,12,0,0.45) 0%, rgba(10,12,0,0.7) 70%, rgba(10,12,0,0.85) 100%);
  }
  body.home-hero .hero-wrapper.hero-1 .hero-title {
    font-size: clamp(2rem, 8vw, 3rem);
    line-height: 1.05;
  }
  body.home-hero .hero-wrapper.hero-1 .hero-text {
    font-size: 0.95rem;
  }
}

/* ============================================================
   V16 : Hero scale adaptive selon hauteur ecran
   Frisk applique padding: 185px 0 80px sur .hero-style1 (trop large
   pour les ecrans 720-900p courants). On reduit + on scale H1 en clamp.
   ============================================================ */
body.home-hero .hero-wrapper.hero-1 .hero-style1 {
  padding: 0;
}
body.home-hero .hero-wrapper.hero-1 .hero-title {
  /* clamp(min, ideal, max) : s'adapte au viewport sans depasser */
  font-size: clamp(2.6rem, 7.5vw, 6.5rem);
  line-height: 1.02;
  letter-spacing: -0.025em;
}
body.home-hero .hero-wrapper.hero-1 .hero-text {
  font-size: clamp(0.95rem, 1.4vw, 1.15rem);
  line-height: 1.55;
}
body.home-hero .hero-wrapper.hero-1 .hero-subtitle {
  font-size: clamp(0.72rem, 1vw, 0.85rem) !important;
}
body.home-hero .hero-wrapper.hero-1 .hero-style1 .hero-text {
  margin-top: 16px;
}
body.home-hero .hero-wrapper.hero-1 .hero-style1 .btn-group {
  margin-top: 24px;
}
body.home-hero .hero-wrapper.hero-1 .hero-year-tag {
  display: none; /* libere ~80px verticaux et evite l'overflow */
}

/* Ecrans courts (laptops 13-14", certains 16:10) : reduit encore */
@media (max-height: 800px) {
  body.home-hero .hero-wrapper.hero-1 > .container {
    padding-top: 110px;
    padding-bottom: 24px;
  }
  body.home-hero .hero-wrapper.hero-1 .hero-title {
    font-size: clamp(2.2rem, 6vw, 4.8rem);
  }
}
@media (max-height: 680px) {
  body.home-hero .hero-wrapper.hero-1 > .container {
    padding-top: 100px;
    padding-bottom: 20px;
  }
  body.home-hero .hero-wrapper.hero-1 .hero-title {
    font-size: clamp(1.9rem, 5vw, 3.6rem);
  }
  body.home-hero .hero-wrapper.hero-1 .hero-text {
    font-size: 0.95rem;
    margin-top: 12px;
  }
  body.home-hero .hero-wrapper.hero-1 .hero-style1 .btn-group {
    margin-top: 18px;
  }
}


/* ============================================================
   V18 : Liste de leviers (Strategie 360) dans feature-card
   ============================================================ */
.feature-card-list {
  list-style: none;
  padding: 0;
  margin: 12px 0 0;
}
.feature-card-list li {
  position: relative;
  padding: 6px 0 6px 20px;
  font-family: var(--body-font);
  font-size: 0.92rem;
  line-height: 1.4;
  color: var(--body-color);
  border-top: 1px solid rgba(10,12,0,0.08);
}
.feature-card-list li:first-child {
  border-top: 0;
  padding-top: 0;
}
.feature-card-list li:before {
  content: "";
  position: absolute;
  left: 0;
  top: 14px;
  width: 8px;
  height: 8px;
  background: var(--theme-color);
  border-radius: 0;
}
.feature-card-list li:first-child:before {
  top: 8px;
}


/* ============================================================
   V20 : Hero service 2 colonnes (bg-smoke) + breadcrumb dark
   ============================================================ */
.upia-service-hero {
  padding: 120px 0 80px;
  position: relative;
  overflow: hidden;
}
.upia-service-hero .sub-title {
  display: inline-block;
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}
.upia-service-hero .sec-title {
  font-size: clamp(2.4rem, 5.5vw, 4.6rem);
  line-height: 1.05;
  margin-top: 0.5rem;
  margin-bottom: 0;
}
.upia-service-hero .sec-text {
  font-size: 1.05rem;
  line-height: 1.6;
  max-width: 560px;
}
.upia-service-hero-cta {
  display: flex;
  align-items: center;
  gap: 32px;
  flex-wrap: wrap;
}
.upia-service-hero-cta .btn {
  background: var(--title-color);
  color: var(--theme-color);
  border: 2px solid var(--title-color);
}
.upia-service-hero-cta .btn:hover {
  background: var(--theme-color);
  color: var(--title-color);
}
.upia-service-hero-cta .link-btn {
  color: var(--title-color);
}
.upia-service-hero-cta .link-btn img {
  filter: none;
}
.upia-service-hero-img {
  position: relative;
}
.upia-service-hero-img img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

@media (max-width: 991px) {
  .upia-service-hero {
    padding: 80px 0 50px;
  }
  .upia-service-hero .sec-title {
    font-size: clamp(2rem, 7vw, 3rem);
  }
  .upia-service-hero-cta {
    gap: 20px;
  }
}

/* Breadcrumb dark band */
.upia-service-breadcrumb {
  padding: 18px 0;
  background: var(--title-color);
}
.upia-service-breadcrumb .breadcumb-menu {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 14px;
  list-style: none;
  padding: 0;
  margin: 0;
}
.upia-service-breadcrumb .breadcumb-menu li {
  position: relative;
  color: var(--theme-color);
  font-size: 0.88rem;
  font-family: var(--body-font);
  letter-spacing: 0.04em;
}
.upia-service-breadcrumb .breadcumb-menu li:not(:last-child)::after {
  content: "/";
  margin-left: 14px;
  opacity: 0.4;
  color: #ffffff;
}
.upia-service-breadcrumb .breadcumb-menu li a {
  color: rgba(255, 255, 255, 0.7);
  transition: color 0.2s;
}
.upia-service-breadcrumb .breadcumb-menu li a:hover {
  color: var(--theme-color);
}
.upia-service-breadcrumb .breadcumb-menu li:last-child {
  color: #ffffff;
  font-weight: 600;
}

@media (max-width: 575px) {
  .upia-service-breadcrumb {
    padding: 14px 0;
  }
  .upia-service-breadcrumb .breadcumb-menu li {
    font-size: 0.8rem;
  }
}

/* ============================================================
   V21 : Process card visibility fix
   Frisk concu pour bg-title (sombre) avec text smoke-color (clair).
   Sur fond clair (.feature-area-1 par defaut), on force le texte
   en noir pour la lisibilite.
   ============================================================ */
.process-card .process-card-number,
.process-card .process-card-title,
.process-card .process-card-text {
  color: var(--title-color);
}
.process-card .process-card-text strong {
  color: var(--title-color);
  font-weight: 700;
}
.process-card .process-card-number {
  border-bottom-color: var(--title-color);
  font-size: 13px;
  letter-spacing: 0.18em;
  padding-bottom: 18px;
}
.process-card .process-card-number:after {
  background: var(--title-color);
  border-color: var(--theme-color);
  width: 20px;
  height: 20px;
}
.process-card .process-card-title {
  font-size: 26px;
  margin-top: 38px;
  line-height: 1.15;
}
.process-card .process-card-text {
  font-size: 1rem;
  line-height: 1.6;
  max-width: none;
  color: var(--body-color);
}
/* Restore comportement original UNIQUEMENT sur fond explicitement sombre */
.bg-title .process-card .process-card-number,
.bg-title .process-card .process-card-title,
.bg-title .process-card .process-card-text {
  color: var(--smoke-color);
}
.bg-title .process-card .process-card-text strong {
  color: #ffffff;
}
.bg-title .process-card .process-card-number {
  border-bottom-color: var(--smoke-color);
}
.bg-title .process-card .process-card-number:after {
  background: var(--smoke-color);
  border-color: var(--title-color);
}


/* ============================================================
   V22 : Acquisition layers - 4 layouts distincts, photos GRANDES
   ============================================================ */

/* Layer 1 : Full-bleed background photo + overlay sombre */
.upia-layer-fullbleed {
  position: relative;
  min-height: 520px;
  padding: 120px 0 100px;
  overflow: hidden;
  isolation: isolate;
}
.upia-layer-fullbleed-bg {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.upia-layer-fullbleed-bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.upia-layer-fullbleed-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(10,12,0,0.85) 0%, rgba(10,12,0,0.65) 60%, rgba(10,12,0,0.4) 100%);
}
.upia-layer-fullbleed-content {
  position: relative;
  z-index: 2;
}
.upia-layer-fullbleed-content .sub-title {
  color: var(--theme-color);
}
.upia-layer-fullbleed-content .sub-title:after {
  background-color: var(--theme-color);
}
.upia-layer-fullbleed-content .sec-title {
  color: #ffffff;
  font-size: clamp(2.4rem, 5vw, 4.4rem);
  line-height: 1.05;
}
.upia-layer-fullbleed-content .sec-title em {
  color: var(--theme-color);
  background: transparent;
  padding: 0;
}
.upia-layer-fullbleed-content .sec-text {
  color: rgba(255,255,255,0.92);
  font-size: 1.05rem;
  line-height: 1.6;
  max-width: 720px;
}
@media (max-width: 991px) {
  .upia-layer-fullbleed {
    padding: 80px 0 60px;
    min-height: 420px;
  }
}

/* Grille 4 clusters */
.upia-layer-clusters {
  padding: 80px 0;
}
.upia-cluster-card {
  position: relative;
  padding: 32px 24px;
  background: #ffffff;
  border: 1px solid rgba(10,12,0,0.08);
  height: 100%;
  display: flex;
  flex-direction: column;
}
.upia-cluster-card-num {
  display: inline-block;
  font-family: var(--title-font);
  font-size: 12px;
  letter-spacing: 0.2em;
  color: var(--title-color);
  background: var(--theme-color);
  padding: 4px 10px;
  margin-bottom: 22px;
  align-self: flex-start;
  font-weight: 700;
}
.upia-cluster-card-title {
  font-size: 1.35rem;
  font-weight: 700;
  margin-bottom: 18px;
  color: var(--title-color);
}
.upia-cluster-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.upia-cluster-list li {
  position: relative;
  padding: 8px 0 8px 18px;
  font-size: 0.93rem;
  line-height: 1.5;
  color: var(--body-color);
  border-top: 1px solid rgba(10,12,0,0.06);
}
.upia-cluster-list li:first-child {
  border-top: 0;
}
.upia-cluster-list li:before {
  content: "";
  position: absolute;
  left: 0;
  top: 16px;
  width: 7px;
  height: 7px;
  background: var(--theme-color);
}
.upia-cluster-list li:first-child:before {
  top: 14px;
}

/* Layer 2 : Photo large gauche 8/12, content dark right 4/12 */
.upia-layer-photo-left {
  padding: 0;
  overflow: hidden;
}
.upia-layer-photo-left .upia-layer-photo-large {
  height: 100%;
  min-height: 600px;
}
.upia-layer-photo-left .upia-layer-photo-large img {
  width: 100%;
  height: 100%;
  min-height: 600px;
  object-fit: cover;
  display: block;
}
.upia-layer-photo-left .upia-layer-side-content {
  padding: 80px 56px 80px 56px;
  color: #ffffff;
  display: flex;
  flex-direction: column;
  justify-content: center;
  height: 100%;
  min-height: 600px;
}
.upia-layer-photo-left .upia-layer-side-content .sub-title {
  color: var(--theme-color);
}
.upia-layer-photo-left .upia-layer-side-content .sub-title:after {
  background-color: var(--theme-color);
}
.upia-layer-photo-left .upia-layer-side-content .sec-title {
  color: #ffffff;
  font-size: clamp(1.8rem, 2.4vw, 2.6rem);
  line-height: 1.1;
}
.upia-layer-photo-left .upia-layer-side-content .sec-title em {
  color: var(--theme-color);
  background: transparent;
  padding: 0;
}
.upia-layer-photo-left .upia-layer-side-content .sec-text {
  color: rgba(255,255,255,0.85);
  font-size: 0.95rem;
}
.upia-layer-side-list {
  list-style: none;
  padding: 0;
  margin: 30px 0 0;
}
.upia-layer-side-list li {
  position: relative;
  padding: 12px 0 12px 24px;
  font-size: 0.9rem;
  line-height: 1.5;
  color: rgba(255,255,255,0.9);
  border-top: 1px solid rgba(200,255,0,0.18);
}
.upia-layer-side-list li:first-child {
  border-top: 0;
}
.upia-layer-side-list li:before {
  content: "";
  position: absolute;
  left: 0;
  top: 19px;
  width: 12px;
  height: 2px;
  background: var(--theme-color);
}
.upia-layer-side-list li:first-child:before {
  top: 17px;
}
.upia-layer-side-list li strong {
  color: #ffffff;
  display: inline;
  font-weight: 700;
}
@media (max-width: 991px) {
  .upia-layer-photo-left .upia-layer-photo-large,
  .upia-layer-photo-left .upia-layer-photo-large img,
  .upia-layer-photo-left .upia-layer-side-content {
    min-height: auto;
  }
  .upia-layer-photo-left .upia-layer-side-content {
    padding: 60px 32px;
  }
}

/* Layer 3 : Magazine spread (photo top full, 2 cols below) */
.upia-layer-magazine {
  padding: 0 0 100px;
}
.upia-layer-magazine-photo {
  width: 100%;
  margin-bottom: 0;
}
.upia-layer-magazine-photo img {
  width: 100%;
  height: auto;
  max-height: 640px;
  object-fit: cover;
  display: block;
}
.upia-magazine-block {
  padding: 32px 0 0;
  border-top: 2px solid var(--title-color);
}
.upia-magazine-block-tag {
  display: inline-block;
  font-family: var(--title-font);
  font-size: 11px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--title-color);
  background: var(--theme-color);
  padding: 4px 10px;
  margin-bottom: 18px;
  font-weight: 700;
}
.upia-magazine-block-title {
  font-size: clamp(1.4rem, 2.2vw, 1.9rem);
  font-weight: 700;
  color: var(--title-color);
  line-height: 1.2;
  margin-bottom: 16px;
}
.upia-magazine-block-text {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--body-color);
  margin: 0;
}
@media (max-width: 991px) {
  .upia-layer-magazine {
    padding: 0 0 60px;
  }
  .upia-layer-magazine-photo img {
    max-height: 360px;
  }
}

/* Layer 4 : Photo right 7/12, content left 5/12 */
.upia-layer-photo-right {
  padding: 100px 0;
}
.upia-layer-photo-right .upia-layer-photo-right-img img {
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
}
.upia-layer-photo-right .sec-title {
  font-size: clamp(2rem, 3.5vw, 3rem);
  line-height: 1.08;
}
.upia-layer-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.upia-layer-list li {
  position: relative;
  padding: 14px 0 14px 24px;
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--body-color);
  border-top: 1px solid rgba(10,12,0,0.1);
}
.upia-layer-list li:first-child {
  border-top: 0;
}
.upia-layer-list li:before {
  content: "";
  position: absolute;
  left: 0;
  top: 22px;
  width: 12px;
  height: 2px;
  background: var(--theme-color);
}
.upia-layer-list li:first-child:before {
  top: 20px;
}
.upia-layer-list li strong {
  color: var(--title-color);
  font-weight: 700;
}
@media (max-width: 991px) {
  .upia-layer-photo-right {
    padding: 60px 0;
  }
}

/* ============================================================
   v23 - UPia services UX components (6 distinct layouts)
   ============================================================ */

/* --- Pricing compare table (3 colonnes side-by-side) --- */
.upia-pricing-compare {
    padding: 100px 0;
}
.upia-pricing-compare-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0;
    border: 1px solid var(--th-border-color, #E5E5E5);
    background: #fff;
    border-radius: 4px;
    overflow: hidden;
}
.upia-pricing-col {
    padding: 50px 36px;
    border-right: 1px solid var(--th-border-color, #E5E5E5);
    display: flex;
    flex-direction: column;
    position: relative;
    transition: background 0.3s ease;
}
.upia-pricing-col:last-child {
    border-right: none;
}
.upia-pricing-col.is-featured {
    background: var(--title-color);
    color: #fff;
}
.upia-pricing-col.is-featured .upia-pricing-num,
.upia-pricing-col.is-featured .upia-pricing-name,
.upia-pricing-col.is-featured .upia-pricing-price,
.upia-pricing-col.is-featured .upia-pricing-features li {
    color: #fff;
}
.upia-pricing-col.is-featured .upia-pricing-tag {
    background: var(--theme-color);
    color: var(--title-color);
}
.upia-pricing-tag {
    position: absolute;
    top: 24px;
    right: 24px;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 5px 12px;
    background: var(--smoke-color);
    color: var(--title-color);
    border-radius: 999px;
}
.upia-pricing-num {
    font-size: 0.72rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--body-color);
    font-weight: 600;
    margin-bottom: 18px;
}
.upia-pricing-name {
    font-family: var(--title-font);
    font-size: 2rem;
    font-weight: 700;
    color: var(--title-color);
    line-height: 1.1;
    margin-bottom: 14px;
}
.upia-pricing-price {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--title-color);
    margin-bottom: 28px;
    padding-bottom: 24px;
    border-bottom: 1px solid var(--th-border-color, #E5E5E5);
}
.upia-pricing-col.is-featured .upia-pricing-price {
    border-bottom-color: rgba(255,255,255,0.15);
}
.upia-pricing-desc {
    color: inherit;
    opacity: 0.85;
    margin-bottom: 26px;
    line-height: 1.55;
}
.upia-pricing-features {
    list-style: none;
    padding: 0;
    margin: 0 0 36px 0;
    flex: 1;
}
.upia-pricing-features li {
    position: relative;
    padding-left: 24px;
    padding-bottom: 12px;
    color: var(--body-color);
    font-size: 0.95rem;
    line-height: 1.5;
}
.upia-pricing-features li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 9px;
    width: 12px;
    height: 6px;
    border-left: 2px solid var(--theme-color);
    border-bottom: 2px solid var(--theme-color);
    transform: rotate(-45deg);
}
.upia-pricing-col.is-featured .upia-pricing-features li {
    color: rgba(255,255,255,0.85);
}
.upia-pricing-cta {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 14px 28px;
    background: var(--theme-color);
    color: var(--title-color);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    border-radius: 4px;
    text-decoration: none;
    transition: transform 0.3s ease;
    align-self: flex-start;
}
.upia-pricing-cta:hover {
    transform: translateX(4px);
    color: var(--title-color);
}
@media (max-width: 991px) {
    .upia-pricing-compare-grid {
        grid-template-columns: 1fr;
    }
    .upia-pricing-col {
        border-right: none;
        border-bottom: 1px solid var(--th-border-color, #E5E5E5);
    }
    .upia-pricing-col:last-child {
        border-bottom: none;
    }
}

/* --- Numbered stack (liste verticale gros chiffres) --- */
.upia-numbered-stack {
    padding: 110px 0;
}
.upia-numbered-row {
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 60px;
    align-items: start;
    padding: 44px 0;
    border-bottom: 1px solid var(--th-border-color, #E5E5E5);
    transition: padding 0.3s ease;
}
.upia-numbered-row:first-child {
    border-top: 1px solid var(--th-border-color, #E5E5E5);
}
.upia-numbered-row:hover {
    padding-left: 14px;
}
.upia-numbered-num {
    font-family: var(--title-font);
    font-size: 5.8rem;
    font-weight: 700;
    color: var(--title-color);
    line-height: 0.9;
    letter-spacing: -0.04em;
}
.upia-numbered-num em {
    font-style: normal;
    color: var(--theme-color);
    background: var(--title-color);
    padding: 0 6px;
    border-radius: 4px;
}
.upia-numbered-body {
    max-width: 720px;
}
.upia-numbered-label {
    font-size: 0.72rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--body-color);
    font-weight: 600;
    margin-bottom: 10px;
    display: block;
}
.upia-numbered-title {
    font-family: var(--title-font);
    font-size: 1.7rem;
    font-weight: 700;
    color: var(--title-color);
    line-height: 1.15;
    margin-bottom: 14px;
}
.upia-numbered-text {
    color: var(--body-color);
    line-height: 1.65;
    margin: 0;
    font-size: 1rem;
}
@media (max-width: 767px) {
    .upia-numbered-row {
        grid-template-columns: 1fr;
        gap: 16px;
        padding: 32px 0;
    }
    .upia-numbered-num {
        font-size: 4.4rem;
    }
    .upia-numbered-title {
        font-size: 1.35rem;
    }
}

/* --- Editorial cards (grandes cards avec photo top) --- */
.upia-editorial-grid {
    padding: 110px 0;
}
.upia-editorial-row {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 32px;
}
.upia-editorial-card {
    background: #fff;
    border: 1px solid var(--th-border-color, #E5E5E5);
    border-radius: 4px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: transform 0.4s ease, box-shadow 0.4s ease;
}
.upia-editorial-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 24px 60px rgba(0,0,0,0.08);
}
.upia-editorial-photo {
    aspect-ratio: 4/3;
    overflow: hidden;
    position: relative;
    background: var(--smoke-color);
}
.upia-editorial-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.6s ease;
}
.upia-editorial-card:hover .upia-editorial-photo img {
    transform: scale(1.05);
}
.upia-editorial-content {
    padding: 36px 32px 32px;
    display: flex;
    flex-direction: column;
    flex: 1;
}
.upia-editorial-label {
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--body-color);
    font-weight: 600;
    margin-bottom: 14px;
}
.upia-editorial-title {
    font-family: var(--title-font);
    font-size: 1.55rem;
    font-weight: 700;
    color: var(--title-color);
    line-height: 1.15;
    margin-bottom: 14px;
}
.upia-editorial-text {
    color: var(--body-color);
    line-height: 1.6;
    margin-bottom: 22px;
    flex: 1;
}
.upia-editorial-meta {
    font-size: 0.92rem;
    font-weight: 700;
    color: var(--title-color);
    padding: 14px 0;
    border-top: 1px solid var(--th-border-color, #E5E5E5);
    margin-bottom: 18px;
}
.upia-editorial-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--title-color);
    text-decoration: none;
    border-bottom: 2px solid var(--theme-color);
    padding-bottom: 4px;
    align-self: flex-start;
    transition: gap 0.3s ease;
}
.upia-editorial-link:hover {
    gap: 14px;
    color: var(--title-color);
}
@media (max-width: 991px) {
    .upia-editorial-row {
        grid-template-columns: 1fr 1fr;
    }
}
@media (max-width: 767px) {
    .upia-editorial-row {
        grid-template-columns: 1fr;
    }
}

/* --- Process zigzag (timeline alternee gauche/droite) --- */
.upia-zigzag {
    padding: 110px 0;
    position: relative;
}
.upia-zigzag::before {
    content: '';
    position: absolute;
    left: 50%;
    top: 110px;
    bottom: 110px;
    width: 2px;
    background: var(--th-border-color, #E5E5E5);
    transform: translateX(-50%);
}
.upia-zigzag-step {
    display: grid;
    grid-template-columns: 1fr 80px 1fr;
    align-items: center;
    margin-bottom: 80px;
    position: relative;
}
.upia-zigzag-step:last-child {
    margin-bottom: 0;
}
.upia-zigzag-dot {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: var(--title-color);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--title-font);
    font-size: 1.4rem;
    font-weight: 700;
    margin: 0 auto;
    position: relative;
    z-index: 2;
    border: 4px solid #fff;
}
.upia-zigzag-step.is-active .upia-zigzag-dot {
    background: var(--theme-color);
    color: var(--title-color);
}
.upia-zigzag-card {
    background: #fff;
    border: 1px solid var(--th-border-color, #E5E5E5);
    border-radius: 4px;
    padding: 32px 36px;
    position: relative;
}
.upia-zigzag-step:nth-child(even) .upia-zigzag-card {
    grid-column: 3;
}
.upia-zigzag-step:nth-child(odd) .upia-zigzag-card {
    grid-column: 1;
    text-align: right;
}
.upia-zigzag-period {
    font-size: 0.72rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--theme-color);
    font-weight: 700;
    margin-bottom: 10px;
    display: block;
}
.upia-zigzag-step:nth-child(odd) .upia-zigzag-period {
    color: var(--body-color);
}
.upia-zigzag-title {
    font-family: var(--title-font);
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--title-color);
    line-height: 1.15;
    margin-bottom: 14px;
}
.upia-zigzag-text {
    color: var(--body-color);
    line-height: 1.6;
    margin: 0 0 14px 0;
    font-size: 0.98rem;
}
.upia-zigzag-deliv {
    font-size: 0.85rem;
    color: var(--title-color);
    padding-top: 14px;
    border-top: 1px solid var(--th-border-color, #E5E5E5);
    margin-top: 14px;
}
.upia-zigzag-deliv strong {
    font-weight: 700;
}
@media (max-width: 767px) {
    .upia-zigzag::before {
        left: 30px;
    }
    .upia-zigzag-step {
        grid-template-columns: 60px 1fr;
        gap: 24px;
        margin-bottom: 44px;
    }
    .upia-zigzag-dot {
        grid-column: 1;
        margin: 0;
    }
    .upia-zigzag-step:nth-child(odd) .upia-zigzag-card,
    .upia-zigzag-step:nth-child(even) .upia-zigzag-card {
        grid-column: 2;
        text-align: left;
    }
}

/* --- Engagement strip (bande horizontale 4 statements) --- */
.upia-engagement-strip {
    padding: 90px 0;
    background: var(--title-color);
    color: #fff;
}
.upia-engagement-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0;
}
.upia-engagement-cell {
    padding: 0 30px;
    border-right: 1px solid rgba(255,255,255,0.12);
    position: relative;
}
.upia-engagement-cell:first-child {
    padding-left: 0;
}
.upia-engagement-cell:last-child {
    border-right: none;
    padding-right: 0;
}
.upia-engagement-num {
    font-family: var(--title-font);
    font-size: 3.4rem;
    font-weight: 700;
    color: var(--theme-color);
    line-height: 0.95;
    letter-spacing: -0.03em;
    margin-bottom: 14px;
    display: block;
}
.upia-engagement-title {
    font-family: var(--title-font);
    font-size: 1.25rem;
    font-weight: 700;
    color: #fff;
    line-height: 1.2;
    margin-bottom: 12px;
}
.upia-engagement-text {
    color: rgba(255,255,255,0.78);
    font-size: 0.92rem;
    line-height: 1.55;
    margin: 0;
}
@media (max-width: 991px) {
    .upia-engagement-grid {
        grid-template-columns: 1fr 1fr;
        gap: 40px 0;
    }
    .upia-engagement-cell {
        padding: 0 24px;
    }
    .upia-engagement-cell:nth-child(odd) {
        border-right: 1px solid rgba(255,255,255,0.12);
        padding-left: 0;
    }
    .upia-engagement-cell:nth-child(even) {
        border-right: none;
        padding-right: 0;
    }
}
@media (max-width: 575px) {
    .upia-engagement-grid {
        grid-template-columns: 1fr;
    }
    .upia-engagement-cell {
        border-right: none !important;
        padding: 0 !important;
        padding-bottom: 30px !important;
        border-bottom: 1px solid rgba(255,255,255,0.12);
    }
    .upia-engagement-cell:last-child {
        border-bottom: none;
        padding-bottom: 0 !important;
    }
}

/* --- Warning list (barre lime + items "pas pour vous") --- */
.upia-warning-list {
    padding: 110px 0;
}
.upia-warning-intro {
    max-width: 720px;
    margin: 0 auto 60px;
    text-align: center;
}
.upia-warning-items {
    display: flex;
    flex-direction: column;
    gap: 20px;
    max-width: 920px;
    margin: 0 auto;
}
.upia-warning-item {
    display: grid;
    grid-template-columns: 6px 1fr;
    background: #fff;
    border: 1px solid var(--th-border-color, #E5E5E5);
    border-radius: 4px;
    overflow: hidden;
    transition: transform 0.3s ease;
}
.upia-warning-item:hover {
    transform: translateX(6px);
}
.upia-warning-bar {
    background: var(--theme-color);
}
.upia-warning-content {
    padding: 28px 36px;
}
.upia-warning-heading {
    font-family: var(--title-font);
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--title-color);
    margin-bottom: 10px;
    line-height: 1.25;
    display: flex;
    align-items: baseline;
    gap: 14px;
}
.upia-warning-heading-num {
    font-size: 0.85rem;
    color: var(--body-color);
    font-weight: 600;
    letter-spacing: 0.08em;
}
.upia-warning-text {
    color: var(--body-color);
    line-height: 1.6;
    margin: 0;
    font-size: 0.98rem;
}
@media (max-width: 575px) {
    .upia-warning-content {
        padding: 22px 24px;
    }
    .upia-warning-heading {
        font-size: 1.05rem;
    }
}

/* ============================================================
   v24 - upia-steps (replace zigzag, cards empilees clean)
   ============================================================ */

/* Neutralise les anciens styles zigzag pour eviter conflits */
.upia-zigzag { display: none !important; }

.upia-steps {
    padding: 110px 0;
}
.upia-steps-list {
    max-width: 1080px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 24px;
}
.upia-steps-card {
    background: #fff;
    border: 1px solid var(--th-border-color, #E5E5E5);
    border-radius: 4px;
    display: grid;
    grid-template-columns: 220px 1fr;
    overflow: hidden;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.upia-steps-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 18px 40px rgba(0,0,0,0.06);
}
.upia-steps-marker {
    background: var(--smoke-color);
    padding: 36px 30px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    border-right: 1px solid var(--th-border-color, #E5E5E5);
}
.upia-steps-card.is-active .upia-steps-marker {
    background: var(--theme-color);
}
.upia-steps-num {
    font-family: var(--title-font);
    font-size: 4rem;
    line-height: 0.9;
    color: var(--title-color);
    letter-spacing: -0.04em;
    font-weight: 700;
    margin-bottom: 10px;
}
.upia-steps-period {
    font-size: 0.72rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--title-color);
    font-weight: 700;
    opacity: 0.7;
}
.upia-steps-card.is-active .upia-steps-period {
    opacity: 1;
}
.upia-steps-body {
    padding: 34px 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.upia-steps-title {
    font-family: var(--title-font);
    font-size: 1.55rem;
    font-weight: 700;
    color: var(--title-color);
    line-height: 1.2;
    margin-bottom: 12px;
}
.upia-steps-text {
    color: var(--body-color);
    line-height: 1.6;
    margin: 0 0 18px 0;
    font-size: 0.98rem;
}
.upia-steps-deliv {
    font-size: 0.9rem;
    color: var(--title-color);
    padding-top: 16px;
    border-top: 1px dashed var(--th-border-color, #D5D5D5);
    margin-top: auto;
    line-height: 1.55;
}
.upia-steps-deliv strong {
    font-weight: 700;
    color: var(--title-color);
}

@media (max-width: 767px) {
    .upia-steps-card {
        grid-template-columns: 1fr;
    }
    .upia-steps-marker {
        padding: 26px 28px 22px;
        border-right: none;
        border-bottom: 1px solid var(--th-border-color, #E5E5E5);
        flex-direction: row;
        align-items: baseline;
        gap: 18px;
    }
    .upia-steps-num {
        font-size: 2.6rem;
        margin-bottom: 0;
    }
    .upia-steps-body {
        padding: 26px 28px 28px;
    }
    .upia-steps-title {
        font-size: 1.25rem;
    }
}

/* ============================================================
   v25 - upia-poles-detail (clean editorial under team cards)
   ============================================================ */

.upia-poles-detail {
    padding: 60px 0 110px;
}
.upia-poles-detail-card {
    background: #fff;
    border: 1px solid var(--th-border-color, #E5E5E5);
    border-radius: 4px;
    padding: 44px 40px 40px;
    position: relative;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
    height: 100%;
}
.upia-poles-detail-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 18px 40px rgba(0,0,0,0.06);
}
.upia-poles-detail-num {
    display: inline-block;
    font-family: var(--title-font);
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    color: var(--title-color);
    background: var(--theme-color);
    padding: 6px 14px;
    border-radius: 999px;
    margin-bottom: 22px;
}
.upia-poles-detail-title {
    font-family: var(--title-font);
    font-size: 1.7rem;
    font-weight: 700;
    color: var(--title-color);
    line-height: 1.15;
    margin-bottom: 18px;
}
.upia-poles-detail-text {
    color: var(--body-color);
    line-height: 1.65;
    margin-bottom: 24px;
    font-size: 1rem;
}
.upia-poles-detail-link {
    display: inline-block;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--title-color);
    text-decoration: none;
    border-bottom: 2px solid var(--theme-color);
    padding-bottom: 4px;
    transition: gap 0.3s ease;
}
.upia-poles-detail-link:hover {
    color: var(--title-color);
}

/* ============================================================
   v26 - Sticky header : reserve la hauteur du wrapper sur le parent
   pour eviter que la page ne saute quand le menu passe en sticky.
   Le JS upia-sticky-fix.js mesure la hauteur reelle et applique
   inline; en fallback CSS pur, min-height responsive.
   ============================================================ */
.nav-header {
    min-height: 92px;
}
@media (max-width: 991px) {
    .nav-header {
        min-height: 80px;
    }
}

/* ============================================================
   v27 - applications-metier : sections persona + schemas
   ============================================================ */

/* Section number badge (eyebrow style iatelier-light) */
.upia-section-num {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    font-family: var(--title-font);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--body-color);
    margin-bottom: 26px;
}
.upia-section-num strong {
    color: var(--theme-color);
    background: var(--title-color);
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 0.78rem;
}

/* --- Section "Pourquoi sur-mesure" : schema central --- */
.upia-why-mesure {
    padding: 110px 0;
}
.upia-why-mesure-intro {
    max-width: 920px;
    margin: 0 auto 70px;
    text-align: center;
}
.upia-why-mesure-intro .sec-title {
    margin-bottom: 22px;
}
.upia-why-mesure-intro .sec-text {
    font-size: 1.1rem;
    line-height: 1.65;
}

/* Schema : 3 boxes inputs -> 1 output */
.upia-schema {
    max-width: 1080px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1fr 80px 1fr;
    align-items: center;
    gap: 30px;
}
.upia-schema-inputs {
    display: grid;
    grid-template-columns: 1fr;
    gap: 16px;
}
.upia-schema-box {
    background: #fff;
    border: 1px solid var(--th-border-color, #E5E5E5);
    border-radius: 4px;
    padding: 22px 24px;
    transition: transform 0.3s ease, border-color 0.3s ease;
}
.upia-schema-box:hover {
    border-color: var(--theme-color);
    transform: translateX(4px);
}
.upia-schema-box-label {
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--body-color);
    font-weight: 700;
    margin-bottom: 8px;
}
.upia-schema-box-title {
    font-family: var(--title-font);
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--title-color);
    margin: 0;
    line-height: 1.25;
}
.upia-schema-arrow {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--theme-color);
}
.upia-schema-arrow svg {
    width: 100%;
    height: auto;
    max-width: 80px;
}
.upia-schema-output {
    background: var(--title-color);
    color: #fff;
    padding: 40px 36px;
    border-radius: 4px;
    text-align: center;
    position: relative;
    overflow: hidden;
}
.upia-schema-output::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: var(--theme-color);
}
.upia-schema-output-label {
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--theme-color);
    font-weight: 700;
    margin-bottom: 14px;
    display: block;
}
.upia-schema-output-title {
    font-family: var(--title-font);
    font-size: 1.5rem;
    font-weight: 700;
    color: #fff;
    margin: 0 0 12px 0;
    line-height: 1.2;
}
.upia-schema-output-text {
    color: rgba(255,255,255,0.78);
    font-size: 0.95rem;
    line-height: 1.55;
    margin: 0;
}

@media (max-width: 991px) {
    .upia-schema {
        grid-template-columns: 1fr;
        gap: 24px;
    }
    .upia-schema-arrow {
        transform: rotate(90deg);
        height: 40px;
    }
}

/* --- Section "Quand le catalogue ne suffit pas" : 4 situations --- */
.upia-when-catalog {
    padding: 110px 0;
    background: var(--smoke-color);
}
.upia-when-catalog-intro {
    max-width: 880px;
    margin: 0 auto 60px;
    text-align: center;
}
.upia-when-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 24px;
    max-width: 1080px;
    margin: 0 auto;
}
.upia-when-card {
    background: #fff;
    border: 1px solid var(--th-border-color, #E5E5E5);
    border-radius: 4px;
    padding: 36px 32px;
    position: relative;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}
.upia-when-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 18px 40px rgba(0,0,0,0.06);
}
.upia-when-card-tag {
    display: inline-block;
    font-family: var(--title-font);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--body-color);
    margin-bottom: 18px;
}
.upia-when-card-tag::before {
    content: '';
    display: inline-block;
    width: 18px;
    height: 2px;
    background: var(--theme-color);
    vertical-align: middle;
    margin-right: 10px;
}
.upia-when-card-symptom {
    font-family: var(--title-font);
    font-size: 1.32rem;
    font-weight: 700;
    color: var(--title-color);
    line-height: 1.3;
    margin-bottom: 16px;
    font-style: italic;
}
.upia-when-card-reading {
    color: var(--body-color);
    line-height: 1.6;
    font-size: 0.98rem;
    margin: 0;
}
@media (max-width: 767px) {
    .upia-when-grid {
        grid-template-columns: 1fr;
    }
}

/* --- Tech intro band (avant Stack technique) --- */
.upia-tech-intro {
    padding: 70px 0 0;
    background: var(--title-color);
    color: #fff;
}
.upia-tech-intro-inner {
    max-width: 920px;
    margin: 0 auto;
    text-align: center;
    padding-bottom: 70px;
    border-bottom: 1px solid rgba(255,255,255,0.1);
}
.upia-tech-intro .sub-title {
    color: var(--theme-color);
}
.upia-tech-intro .sec-title {
    color: #fff;
}
.upia-tech-intro .sec-text {
    color: rgba(255,255,255,0.78);
    font-size: 1.02rem;
    line-height: 1.65;
}

/* Override Stack section quand precede d'un upia-tech-intro */
.upia-tech-intro + .upia-numbered-stack {
    background: var(--title-color);
    padding-top: 70px;
}
.upia-tech-intro + .upia-numbered-stack .upia-numbered-row {
    border-bottom-color: rgba(255,255,255,0.1);
}
.upia-tech-intro + .upia-numbered-stack .upia-numbered-row:first-child {
    border-top-color: rgba(255,255,255,0.1);
}
.upia-tech-intro + .upia-numbered-stack .upia-numbered-num,
.upia-tech-intro + .upia-numbered-stack .upia-numbered-title {
    color: #fff;
}
.upia-tech-intro + .upia-numbered-stack .upia-numbered-label {
    color: var(--theme-color);
}
.upia-tech-intro + .upia-numbered-stack .upia-numbered-text {
    color: rgba(255,255,255,0.72);
}
.upia-tech-intro + .upia-numbered-stack .title-area {
    display: none;
}

/* ============================================================
   v28 - Stack dark theme + Pourquoi reframe
   ============================================================ */

/* Stack en dark : applique via classe is-dark (plus robuste que + selector) */
.upia-numbered-stack.is-dark {
    background: var(--title-color) !important;
    color: #fff;
    padding-top: 60px;
}
.upia-numbered-stack.is-dark .upia-numbered-row {
    border-bottom-color: rgba(255,255,255,0.1);
}
.upia-numbered-stack.is-dark .upia-numbered-row:first-child {
    border-top-color: rgba(255,255,255,0.1);
}
.upia-numbered-stack.is-dark .upia-numbered-num,
.upia-numbered-stack.is-dark .upia-numbered-title {
    color: #fff;
}
.upia-numbered-stack.is-dark .upia-numbered-label {
    color: var(--theme-color);
}
.upia-numbered-stack.is-dark .upia-numbered-text {
    color: rgba(255,255,255,0.72);
}
.upia-numbered-stack.is-dark .title-area {
    display: none;
}

/* Tech intro plus aerienne : padding bottom plus court car Stack suit */
.upia-tech-intro {
    padding: 90px 0 0;
}
.upia-tech-intro-inner {
    padding-bottom: 60px;
    border-bottom: none;
}

/* Section "Pourquoi sur-mesure" : reframed copy needs no CSS change */

/* ============================================================
   v29 - Schemas visuels services (3 patterns distincts)
   ============================================================ */

/* --- Schema 1 : Hub and spoke (acquisition) --- */
.upia-schema-hub {
    padding: 110px 0;
}
.upia-schema-hub-intro {
    max-width: 920px;
    margin: 0 auto 70px;
    text-align: center;
}
.upia-hub-wrap {
    max-width: 1100px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: 1fr 1.2fr 1fr;
    gap: 50px;
    align-items: center;
}
.upia-hub-leviers {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.upia-hub-leviers.is-right {
    align-items: flex-start;
}
.upia-hub-leviers.is-left {
    align-items: flex-end;
}
.upia-hub-levier {
    background: #fff;
    border: 1px solid var(--th-border-color, #E5E5E5);
    padding: 12px 20px;
    border-radius: 999px;
    font-family: var(--title-font);
    font-size: 0.92rem;
    font-weight: 700;
    color: var(--title-color);
    display: inline-flex;
    align-items: center;
    gap: 10px;
    transition: all 0.3s ease;
    white-space: nowrap;
}
.upia-hub-levier:hover {
    border-color: var(--theme-color);
    transform: scale(1.05);
}
.upia-hub-levier::before {
    content: '';
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--theme-color);
    flex-shrink: 0;
}
.upia-hub-center {
    background: var(--title-color);
    color: #fff;
    padding: 60px 36px;
    border-radius: 8px;
    text-align: center;
    position: relative;
    overflow: hidden;
}
.upia-hub-center::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: var(--theme-color);
}
.upia-hub-center-label {
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--theme-color);
    font-weight: 700;
    margin-bottom: 16px;
    display: block;
}
.upia-hub-center-title {
    font-family: var(--title-font);
    font-size: 1.8rem;
    font-weight: 700;
    color: #fff;
    margin: 0 0 14px 0;
    line-height: 1.15;
}
.upia-hub-center-text {
    color: rgba(255,255,255,0.78);
    font-size: 0.95rem;
    line-height: 1.55;
    margin: 0;
}
.upia-hub-center-stat {
    margin-top: 26px;
    padding-top: 22px;
    border-top: 1px solid rgba(255,255,255,0.15);
    display: flex;
    justify-content: space-around;
    gap: 20px;
}
.upia-hub-center-stat-item {
    text-align: center;
}
.upia-hub-center-stat-num {
    font-family: var(--title-font);
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--theme-color);
    display: block;
    line-height: 1;
}
.upia-hub-center-stat-label {
    font-size: 0.65rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.6);
    font-weight: 600;
    margin-top: 6px;
    display: block;
}
@media (max-width: 991px) {
    .upia-hub-wrap {
        grid-template-columns: 1fr;
        gap: 30px;
    }
    .upia-hub-leviers,
    .upia-hub-leviers.is-left,
    .upia-hub-leviers.is-right {
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: center;
        align-items: center;
    }
    .upia-hub-center {
        order: -1;
    }
}

/* --- Schema 2 : Funnel / Convergence (audit) --- */
.upia-schema-funnel {
    padding: 110px 0;
    background: var(--smoke-color);
}
.upia-funnel-intro {
    max-width: 920px;
    margin: 0 auto 60px;
    text-align: center;
}
.upia-funnel-wrap {
    max-width: 1080px;
    margin: 0 auto;
}
.upia-funnel-inputs {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    margin-bottom: 36px;
}
.upia-funnel-input {
    background: #fff;
    border: 1px solid var(--th-border-color, #E5E5E5);
    border-radius: 4px;
    padding: 24px 20px;
    text-align: center;
    transition: transform 0.3s ease;
}
.upia-funnel-input:hover {
    transform: translateY(-4px);
}
.upia-funnel-input-num {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--theme-color);
    color: var(--title-color);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--title-font);
    font-weight: 700;
    margin: 0 auto 14px;
    font-size: 0.95rem;
}
.upia-funnel-input-label {
    font-family: var(--title-font);
    font-size: 1.02rem;
    font-weight: 700;
    color: var(--title-color);
    line-height: 1.25;
    margin: 0 0 8px 0;
}
.upia-funnel-input-text {
    color: var(--body-color);
    font-size: 0.85rem;
    line-height: 1.45;
    margin: 0;
}
.upia-funnel-arrow {
    display: flex;
    justify-content: center;
    margin-bottom: 36px;
    color: var(--theme-color);
}
.upia-funnel-arrow svg {
    width: 40px;
    height: 40px;
}
.upia-funnel-output {
    background: var(--title-color);
    color: #fff;
    border-radius: 4px;
    padding: 44px 50px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 36px;
    align-items: center;
    position: relative;
    overflow: hidden;
}
.upia-funnel-output::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: var(--theme-color);
}
.upia-funnel-output-text-label {
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--theme-color);
    font-weight: 700;
    margin-bottom: 14px;
    display: block;
}
.upia-funnel-output-text-title {
    font-family: var(--title-font);
    font-size: 1.55rem;
    font-weight: 700;
    color: #fff;
    margin: 0 0 12px 0;
    line-height: 1.2;
}
.upia-funnel-output-text-desc {
    color: rgba(255,255,255,0.78);
    font-size: 0.95rem;
    line-height: 1.55;
    margin: 0;
}
.upia-funnel-output-items {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.upia-funnel-output-item {
    display: flex;
    align-items: center;
    gap: 14px;
    color: #fff;
    font-size: 0.95rem;
}
.upia-funnel-output-item::before {
    content: '';
    width: 18px;
    height: 2px;
    background: var(--theme-color);
    flex-shrink: 0;
}
@media (max-width: 767px) {
    .upia-funnel-inputs {
        grid-template-columns: 1fr 1fr;
    }
    .upia-funnel-output {
        grid-template-columns: 1fr;
        padding: 32px 28px;
    }
}

/* --- Schema 3 : Architecture stack (agents) --- */
.upia-schema-stack {
    padding: 110px 0;
}
.upia-arch-intro {
    max-width: 920px;
    margin: 0 auto 70px;
    text-align: center;
}
.upia-arch-wrap {
    max-width: 880px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.upia-arch-layer {
    background: #fff;
    border: 1px solid var(--th-border-color, #E5E5E5);
    border-radius: 4px;
    padding: 22px 32px;
    display: grid;
    grid-template-columns: 60px 1fr auto;
    align-items: center;
    gap: 24px;
    transition: transform 0.3s ease, border-color 0.3s ease;
    position: relative;
}
.upia-arch-layer:hover {
    border-color: var(--theme-color);
    transform: translateX(6px);
}
.upia-arch-layer-num {
    width: 44px;
    height: 44px;
    border-radius: 4px;
    background: var(--smoke-color);
    color: var(--title-color);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--title-font);
    font-weight: 700;
    font-size: 0.95rem;
}
.upia-arch-layer.is-highlight {
    background: var(--title-color);
    border-color: var(--title-color);
}
.upia-arch-layer.is-highlight .upia-arch-layer-num {
    background: var(--theme-color);
    color: var(--title-color);
}
.upia-arch-layer.is-highlight .upia-arch-layer-title,
.upia-arch-layer.is-highlight .upia-arch-layer-detail {
    color: #fff;
}
.upia-arch-layer.is-highlight .upia-arch-layer-text {
    color: rgba(255,255,255,0.78);
}
.upia-arch-layer-content {
    min-width: 0;
}
.upia-arch-layer-title {
    font-family: var(--title-font);
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--title-color);
    margin: 0 0 4px 0;
    line-height: 1.25;
}
.upia-arch-layer-text {
    color: var(--body-color);
    font-size: 0.92rem;
    line-height: 1.5;
    margin: 0;
}
.upia-arch-layer-detail {
    font-family: var(--title-font);
    font-size: 0.75rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--body-color);
    font-weight: 700;
    padding-left: 20px;
    border-left: 1px solid var(--th-border-color, #E5E5E5);
}
.upia-arch-layer.is-highlight .upia-arch-layer-detail {
    border-left-color: rgba(255,255,255,0.15);
}
@media (max-width: 767px) {
    .upia-arch-layer {
        grid-template-columns: 44px 1fr;
        padding: 18px 22px;
    }
    .upia-arch-layer-detail {
        display: none;
    }
}

/* ============================================================
   v30 - Atelier photo banner (services pages)
   ============================================================ */
.upia-atelier-banner {
    padding: 80px 0;
}
.upia-atelier-banner-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 50px;
    align-items: center;
    max-width: 1180px;
    margin: 0 auto;
}
.upia-atelier-banner-grid.is-reverse .upia-atelier-banner-photo {
    order: 2;
}
.upia-atelier-banner-photo {
    aspect-ratio: 4/3;
    overflow: hidden;
    border-radius: 4px;
    position: relative;
}
.upia-atelier-banner-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.8s ease;
}
.upia-atelier-banner-photo:hover img {
    transform: scale(1.04);
}
.upia-atelier-banner-content {
    padding: 0 16px;
}
.upia-atelier-banner-tag {
    display: inline-block;
    font-family: var(--title-font);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--body-color);
    margin-bottom: 18px;
}
.upia-atelier-banner-tag::before {
    content: '';
    display: inline-block;
    width: 24px;
    height: 2px;
    background: var(--theme-color);
    vertical-align: middle;
    margin-right: 12px;
}
.upia-atelier-banner-title {
    font-family: var(--title-font);
    font-size: 2rem;
    font-weight: 700;
    color: var(--title-color);
    line-height: 1.15;
    margin-bottom: 18px;
}
.upia-atelier-banner-title em {
    color: var(--title-color);
    background: var(--theme-color);
    padding: 0 6px;
    font-style: normal;
}
.upia-atelier-banner-text {
    color: var(--body-color);
    line-height: 1.65;
    font-size: 1.02rem;
    margin: 0 0 22px 0;
}
.upia-atelier-banner-quote {
    border-left: 3px solid var(--theme-color);
    padding-left: 22px;
    font-style: italic;
    color: var(--title-color);
    font-size: 0.98rem;
    line-height: 1.55;
}
.upia-atelier-banner-quote cite {
    display: block;
    margin-top: 8px;
    font-style: normal;
    font-size: 0.78rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--body-color);
    font-weight: 600;
}
@media (max-width: 991px) {
    .upia-atelier-banner-grid,
    .upia-atelier-banner-grid.is-reverse {
        grid-template-columns: 1fr;
        gap: 30px;
    }
    .upia-atelier-banner-grid.is-reverse .upia-atelier-banner-photo {
        order: 0;
    }
    .upia-atelier-banner-title {
        font-size: 1.55rem;
    }
}

/* ============================================================
   v31 - CTA strips inline (transitions entre sections)
   ============================================================ */

.upia-cta-strip {
    padding: 50px 0;
}
.upia-cta-strip-inner {
    max-width: 1180px;
    margin: 0 auto;
    border-radius: 8px;
    padding: 36px 50px;
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 36px;
    transition: transform 0.3s ease;
}
.upia-cta-strip-inner:hover {
    transform: translateY(-3px);
}

/* Variants */
.upia-cta-strip-inner.is-lime {
    background: var(--theme-color);
    color: var(--title-color);
}
.upia-cta-strip-inner.is-dark {
    background: var(--title-color);
    color: #fff;
}
.upia-cta-strip-inner.is-bordered {
    background: #fff;
    border: 1px solid var(--th-border-color, #E5E5E5);
    color: var(--title-color);
    border-left: 4px solid var(--theme-color);
}

.upia-cta-strip-eyebrow {
    font-family: var(--title-font);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 8px;
    display: block;
    opacity: 0.7;
}
.upia-cta-strip-inner.is-dark .upia-cta-strip-eyebrow {
    color: var(--theme-color);
    opacity: 1;
}
.upia-cta-strip-title {
    font-family: var(--title-font);
    font-size: 1.45rem;
    font-weight: 700;
    line-height: 1.25;
    margin: 0;
}
.upia-cta-strip-title em {
    font-style: normal;
}
.upia-cta-strip-inner.is-lime .upia-cta-strip-title em {
    background: var(--title-color);
    color: var(--theme-color);
    padding: 0 6px;
    border-radius: 4px;
}
.upia-cta-strip-inner.is-dark .upia-cta-strip-title em {
    color: var(--theme-color);
}
.upia-cta-strip-inner.is-bordered .upia-cta-strip-title em {
    background: var(--theme-color);
    color: var(--title-color);
    padding: 0 6px;
}

.upia-cta-strip-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 16px 32px;
    font-family: var(--title-font);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    border-radius: 4px;
    text-decoration: none;
    transition: transform 0.3s ease, background 0.3s ease;
    white-space: nowrap;
}
.upia-cta-strip-inner.is-lime .upia-cta-strip-btn {
    background: var(--title-color);
    color: var(--theme-color);
}
.upia-cta-strip-inner.is-lime .upia-cta-strip-btn:hover {
    background: #fff;
    color: var(--title-color);
    transform: translateX(4px);
}
.upia-cta-strip-inner.is-dark .upia-cta-strip-btn {
    background: var(--theme-color);
    color: var(--title-color);
}
.upia-cta-strip-inner.is-dark .upia-cta-strip-btn:hover {
    background: #fff;
    color: var(--title-color);
    transform: translateX(4px);
}
.upia-cta-strip-inner.is-bordered .upia-cta-strip-btn {
    background: var(--title-color);
    color: var(--theme-color);
}
.upia-cta-strip-inner.is-bordered .upia-cta-strip-btn:hover {
    background: var(--theme-color);
    color: var(--title-color);
    transform: translateX(4px);
}
.upia-cta-strip-btn-arrow {
    transition: transform 0.3s ease;
}

@media (max-width: 767px) {
    .upia-cta-strip-inner {
        grid-template-columns: 1fr;
        padding: 28px 28px;
        gap: 22px;
    }
    .upia-cta-strip-title {
        font-size: 1.2rem;
    }
    .upia-cta-strip-btn {
        justify-self: start;
    }
}

/* ============================================================
   v32 - Funnel convergent (refonte schema acquisition)
   Remplace l'ancien .upia-hub-wrap (pills latérales)
   ============================================================ */

/* Override : reset l'ancien hub-wrap pour le neutraliser */
.upia-hub-wrap { display: none !important; }

.upia-converge {
    max-width: 1180px;
    margin: 0 auto;
    position: relative;
}
.upia-converge-clusters {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
    margin-bottom: 0;
    position: relative;
    z-index: 2;
}
.upia-converge-cluster {
    background: #fff;
    border: 1px solid var(--th-border-color, #E5E5E5);
    border-radius: 4px;
    padding: 26px 22px;
    text-align: center;
    transition: transform 0.3s ease, border-color 0.3s ease;
}
.upia-converge-cluster:hover {
    transform: translateY(-3px);
    border-color: var(--theme-color);
}
.upia-converge-cluster-num {
    display: inline-block;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--theme-color);
    color: var(--title-color);
    font-family: var(--title-font);
    font-weight: 700;
    font-size: 0.82rem;
    line-height: 30px;
    margin-bottom: 12px;
}
.upia-converge-cluster-title {
    font-family: var(--title-font);
    font-size: 1.02rem;
    font-weight: 700;
    color: var(--title-color);
    line-height: 1.2;
    margin: 0 0 8px 0;
}
.upia-converge-cluster-text {
    color: var(--body-color);
    font-size: 0.82rem;
    line-height: 1.45;
    margin: 0;
}

/* Lignes SVG convergentes entre clusters et hub */
.upia-converge-svg {
    width: 100%;
    height: 100px;
    display: block;
    margin-top: -1px;
    margin-bottom: -1px;
    position: relative;
    z-index: 1;
}
.upia-converge-svg path {
    stroke: var(--theme-color);
    stroke-width: 2;
    fill: none;
    stroke-dasharray: 4 4;
    opacity: 0.8;
    animation: upia-flow 18s linear infinite;
}
@keyframes upia-flow {
    from { stroke-dashoffset: 0; }
    to   { stroke-dashoffset: -120; }
}
.upia-converge-svg circle.dot-top {
    fill: var(--theme-color);
}
.upia-converge-svg circle.dot-bottom {
    fill: var(--title-color);
}

/* Hub central en bas */
.upia-converge-hub {
    background: var(--title-color);
    color: #fff;
    border-radius: 8px;
    padding: 44px 40px;
    text-align: center;
    max-width: 580px;
    margin: 0 auto;
    position: relative;
    overflow: hidden;
    z-index: 2;
}
.upia-converge-hub::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: var(--theme-color);
}
.upia-converge-hub-label {
    font-size: 0.7rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--theme-color);
    font-weight: 700;
    margin-bottom: 14px;
    display: block;
}
.upia-converge-hub-title {
    font-family: var(--title-font);
    font-size: 1.8rem;
    font-weight: 700;
    color: #fff;
    margin: 0 0 14px 0;
    line-height: 1.15;
}
.upia-converge-hub-text {
    color: rgba(255,255,255,0.78);
    font-size: 0.95rem;
    line-height: 1.55;
    margin: 0 0 26px 0;
}
.upia-converge-hub-stats {
    display: flex;
    justify-content: center;
    gap: 36px;
    padding-top: 22px;
    border-top: 1px solid rgba(255,255,255,0.15);
}
.upia-converge-hub-stat {
    text-align: center;
}
.upia-converge-hub-stat-num {
    font-family: var(--title-font);
    font-size: 1.6rem;
    font-weight: 700;
    color: var(--theme-color);
    display: block;
    line-height: 1;
}
.upia-converge-hub-stat-label {
    font-size: 0.65rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.6);
    font-weight: 600;
    margin-top: 6px;
    display: block;
}

@media (max-width: 991px) {
    .upia-converge-clusters {
        grid-template-columns: 1fr 1fr;
        gap: 16px;
    }
    .upia-converge-svg {
        height: 60px;
    }
}
@media (max-width: 575px) {
    .upia-converge-clusters {
        grid-template-columns: 1fr;
    }
    .upia-converge-svg {
        display: none;
    }
    .upia-converge-hub {
        margin-top: 24px;
    }
}

/* ============================================================
   v33 - Process card : padding interne pour eviter que le texte
   touche la colonne suivante quand le gutter est a 0 (timeline continue)
   ============================================================ */
.row.gx-0 > [class*="col-"] .process-card {
    padding-right: 50px;
    padding-left: 4px;
}
@media (max-width: 991px) {
    .row.gx-0 > [class*="col-"] .process-card {
        padding-right: 0;
        padding-left: 0;
    }
}

/* ============================================================
   v34 - Accordion +/- mobile fix + Mobile menu high-tech dark
   ============================================================ */

/* --- Fix accordion : le texte ne doit jamais toucher le +/- --- */
.accordion-area .accordion-card .accordion-button {
    padding-right: 50px !important;
    position: relative;
    flex-wrap: wrap;
}
.accordion-area .accordion-card .accordion-button:after {
    position: absolute;
    right: 0;
    top: 4px;
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
}
@media (max-width: 575px) {
    .accordion-area .accordion-card .accordion-button {
        padding-right: 44px !important;
        font-size: 0.98rem;
        line-height: 1.35;
        gap: 0.6rem;
    }
    .accordion-area .accordion-card .accordion-button .faq-number {
        min-width: 2.4rem;
        font-size: 0.82rem;
        padding: 0.2rem 0.55rem;
        margin-right: 0.5rem;
        flex-shrink: 0;
    }
}

/* --- Mobile menu high-tech dark fullscreen --- */

.mobile-menu-wrapper {
    background: var(--title-color);
    background:
        linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.6) 100%),
        radial-gradient(ellipse at top right, rgba(200,255,0,0.06) 0%, transparent 60%),
        var(--title-color, #0F0F0F);
    width: 100vw;
    max-width: 100vw;
    height: 100vh;
}
.mobile-menu-area {
    background: transparent;
    padding: 30px 28px 40px;
    width: 100vw;
    max-width: 100vw;
    height: 100vh;
    overflow-y: auto;
    position: relative;
}

/* Grid pattern subtil techy en background */
.mobile-menu-wrapper::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(255,255,255,0.025) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.025) 1px, transparent 1px);
    background-size: 40px 40px;
    pointer-events: none;
    z-index: 0;
}
.mobile-menu-area > * {
    position: relative;
    z-index: 1;
}

/* Close button : cercle blanc */
.mobile-menu-area .menu-toggle {
    position: absolute;
    top: 24px;
    right: 24px;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: #fff;
    border: 1px solid #fff;
    color: var(--title-color);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.3s ease, background 0.3s ease;
    z-index: 2;
}
.mobile-menu-area .menu-toggle:hover {
    background: var(--theme-color);
    transform: rotate(90deg);
}
.mobile-menu-area .menu-toggle i {
    color: var(--title-color);
    font-size: 16px;
}

/* Logo blanc en haut a gauche */
.mobile-menu-area .mobile-logo {
    padding: 6px 0 36px;
    border-bottom: 1px solid rgba(255,255,255,0.08);
    margin-bottom: 30px;
}
.mobile-menu-area .mobile-logo img {
    filter: none;
    max-width: 110px !important;
}

/* Menu list */
.mobile-menu-area .mobile-menu > ul {
    list-style: none;
    padding: 0;
    margin: 0 0 36px 0;
}
.mobile-menu-area .mobile-menu > ul > li {
    border-bottom: 1px solid rgba(255,255,255,0.06);
}
.mobile-menu-area .mobile-menu > ul > li:last-child {
    border-bottom: none;
}
.mobile-menu-area .mobile-menu > ul > li > a {
    color: #fff;
    font-family: var(--title-font);
    font-size: 1.32rem;
    font-weight: 700;
    letter-spacing: -0.01em;
    padding: 18px 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    text-decoration: none;
    transition: color 0.2s ease, padding-left 0.3s ease;
}
.mobile-menu-area .mobile-menu > ul > li > a:hover,
.mobile-menu-area .mobile-menu > ul > li > a:focus {
    color: var(--theme-color);
    padding-left: 8px;
}
.mobile-menu-area .mobile-menu > ul > li.menu-item-has-children > a::after {
    content: "\f067";
    font-family: "Font Awesome 5 Free", "Font Awesome 6 Free";
    font-weight: 900;
    font-size: 11px;
    width: 24px;
    height: 24px;
    border: 1px solid rgba(255,255,255,0.25);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(255,255,255,0.7);
    transition: transform 0.3s ease, color 0.3s ease, border-color 0.3s ease;
    flex-shrink: 0;
}
.mobile-menu-area .mobile-menu > ul > li.menu-item-has-children.active > a::after,
.mobile-menu-area .mobile-menu > ul > li.menu-item-has-children:hover > a::after {
    transform: rotate(45deg);
    color: var(--theme-color);
    border-color: var(--theme-color);
}

/* Sub-menu : indented + smaller + opacity */
.mobile-menu-area .mobile-menu .sub-menu {
    list-style: none;
    padding: 0 0 14px 16px;
    margin: 0;
    border-left: 1px solid rgba(255,255,255,0.1);
    margin-left: 6px;
}
.mobile-menu-area .mobile-menu .sub-menu li a {
    color: rgba(255,255,255,0.65);
    font-family: var(--body-font);
    font-size: 0.96rem;
    font-weight: 500;
    padding: 8px 0 8px 14px;
    display: block;
    position: relative;
    text-decoration: none;
    transition: color 0.2s ease, padding-left 0.3s ease;
}
.mobile-menu-area .mobile-menu .sub-menu li a:hover {
    color: #fff;
    padding-left: 20px;
}
.mobile-menu-area .mobile-menu .sub-menu li a::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    width: 8px;
    height: 1px;
    background: rgba(255,255,255,0.2);
    transition: background 0.2s ease, width 0.3s ease;
}
.mobile-menu-area .mobile-menu .sub-menu li a:hover::before {
    background: var(--theme-color);
    width: 14px;
}

/* CTA RDV (last li in menu) : transforme en bouton lime */
.mobile-menu-area .mobile-menu > ul > li.mobile-menu-cta {
    border-bottom: none;
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid rgba(255,255,255,0.08);
}
.mobile-menu-area .mobile-menu > ul > li.mobile-menu-cta > a {
    background: var(--theme-color);
    color: var(--title-color);
    padding: 18px 28px;
    border-radius: 4px;
    justify-content: center;
    text-align: center;
    font-size: 0.92rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    transition: background 0.3s ease, transform 0.3s ease;
}
.mobile-menu-area .mobile-menu > ul > li.mobile-menu-cta > a:hover {
    background: #fff;
    padding-left: 28px;
    transform: translateY(-2px);
}

/* Footer info dans le menu mobile (techy small text) */
.mobile-menu-area .mobile-menu-foot {
    margin-top: 40px;
    padding-top: 24px;
    border-top: 1px solid rgba(255,255,255,0.08);
    color: rgba(255,255,255,0.45);
    font-size: 0.78rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.mobile-menu-area .mobile-menu-foot a {
    color: rgba(255,255,255,0.65);
    text-decoration: none;
    transition: color 0.2s ease;
}
.mobile-menu-area .mobile-menu-foot a:hover {
    color: var(--theme-color);
}

/* ============================================================
   v35 - Mobile menu fullscreen dark + sub-menu toggle natif Frisk
   Override de la specificite Frisk via selecteur compose
   ============================================================ */

/* --- Reset le ::after fake que j'avais mis : on utilise .mean-expand-class --- */
.mobile-menu-area .mobile-menu > ul > li.menu-item-has-children > a::after {
    content: none !important;
}

/* --- Fullscreen + dark : override Frisk max-width 310px et bg white --- */
.mobile-menu-wrapper {
    background-color: transparent !important;
}
.mobile-menu-wrapper .mobile-menu-area {
    max-width: 100vw !important;
    width: 100vw !important;
    background:
        linear-gradient(180deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0.5) 100%),
        radial-gradient(ellipse at top right, rgba(200,255,0,0.07) 0%, transparent 60%),
        #0A0A0A !important;
    padding: 30px 28px 40px !important;
    overflow-y: auto;
    height: 100vh;
}
/* Grid pattern techy */
.mobile-menu-wrapper .mobile-menu-area::before {
    content: '';
    position: fixed;
    inset: 0;
    background-image:
        linear-gradient(rgba(255,255,255,0.025) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.025) 1px, transparent 1px);
    background-size: 48px 48px;
    pointer-events: none;
    z-index: 0;
}
.mobile-menu-wrapper .mobile-menu-area > * {
    position: relative;
    z-index: 1;
}

/* --- Logo block : override bg blanc Frisk --- */
.mobile-menu-wrapper .mobile-logo {
    background-color: transparent !important;
    padding: 6px 0 26px !important;
    border-bottom: 1px solid rgba(255,255,255,0.08);
    margin-bottom: 26px;
    text-align: left;
}
.mobile-menu-wrapper .mobile-logo img {
    max-width: 110px !important;
    height: auto !important;
}

/* --- Close button : cercle blanc OUTLINE + croix BLANCHE --- */
.mobile-menu-wrapper .menu-toggle {
    position: absolute !important;
    top: 24px !important;
    right: 24px !important;
    width: 44px !important;
    height: 44px !important;
    line-height: 42px !important;
    border-radius: 50%;
    background: transparent !important;
    border: 1px solid rgba(255,255,255,0.4) !important;
    color: #fff !important;
    font-size: 16px !important;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.3s ease, background 0.3s ease, border-color 0.3s ease;
}
.mobile-menu-wrapper .menu-toggle:hover {
    background: var(--theme-color) !important;
    border-color: var(--theme-color) !important;
    color: var(--title-color) !important;
    transform: rotate(90deg) !important;
}
.mobile-menu-wrapper .menu-toggle i {
    color: inherit;
    font-size: 14px;
}

/* --- Menu principal --- */
.mobile-menu-wrapper .mobile-menu > ul {
    list-style: none;
    padding: 0;
    margin: 0 0 30px 0;
}
.mobile-menu-wrapper .mobile-menu > ul > li {
    border-bottom: 1px solid rgba(255,255,255,0.06);
    position: relative;
}
.mobile-menu-wrapper .mobile-menu > ul > li:last-child {
    border-bottom: none;
}
.mobile-menu-wrapper .mobile-menu > ul > li > a {
    color: #fff !important;
    font-family: var(--title-font) !important;
    font-size: 1.32rem !important;
    font-weight: 700 !important;
    letter-spacing: -0.01em;
    padding: 20px 60px 20px 0 !important;
    display: block !important;
    text-decoration: none;
    transition: color 0.2s ease, padding-left 0.3s ease;
    line-height: 1.2;
    background: transparent !important;
}
.mobile-menu-wrapper .mobile-menu > ul > li > a:hover,
.mobile-menu-wrapper .mobile-menu > ul > li > a:focus {
    color: var(--theme-color) !important;
    padding-left: 6px !important;
    background: transparent !important;
}

/* --- Toggle button .mean-expand-class : cercle OUTLINE blanc + + blanc --- */
.mobile-menu-wrapper .mobile-menu > ul > li > a .mean-expand-class,
.mobile-menu-wrapper .mobile-menu > ul > li .mean-expand-class {
    position: absolute;
    right: 4px;
    top: 18px;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: transparent;
    border: 1px solid rgba(255,255,255,0.3);
    display: flex !important;
    align-items: center;
    justify-content: center;
    transition: transform 0.3s ease, border-color 0.3s ease, background 0.3s ease;
    z-index: 3;
    cursor: pointer;
}
.mobile-menu-wrapper .mobile-menu > ul > li > a .mean-expand-class::before {
    content: '+';
    font-family: var(--title-font);
    font-size: 18px;
    font-weight: 400;
    color: #fff;
    line-height: 1;
    display: block;
}
.mobile-menu-wrapper .mobile-menu > ul > li.active-class > a .mean-expand-class,
.mobile-menu-wrapper .mobile-menu > ul > li.submenu-item-has-children.active > a .mean-expand-class {
    background: var(--theme-color);
    border-color: var(--theme-color);
}
.mobile-menu-wrapper .mobile-menu > ul > li.active-class > a .mean-expand-class::before,
.mobile-menu-wrapper .mobile-menu > ul > li.submenu-item-has-children.active > a .mean-expand-class::before {
    content: '\2013';
    color: var(--title-color);
    font-size: 20px;
}

/* --- Sub-menu : ouvert, indented, mega-menu inspired --- */
.mobile-menu-wrapper .mobile-menu .sub-menu,
.mobile-menu-wrapper .mobile-menu ul.submenu-class {
    list-style: none;
    padding: 4px 0 18px 18px;
    margin: 0;
    border-left: 1px solid rgba(255,255,255,0.1);
    margin-left: 4px;
}
.mobile-menu-wrapper .mobile-menu .sub-menu li,
.mobile-menu-wrapper .mobile-menu ul.submenu-class li {
    border-bottom: none;
}
.mobile-menu-wrapper .mobile-menu .sub-menu li a,
.mobile-menu-wrapper .mobile-menu ul.submenu-class li a {
    color: rgba(255,255,255,0.7) !important;
    font-family: var(--body-font) !important;
    font-size: 0.95rem !important;
    font-weight: 500 !important;
    padding: 10px 0 10px 18px !important;
    display: block !important;
    position: relative;
    text-decoration: none;
    transition: color 0.2s ease, padding-left 0.3s ease;
    line-height: 1.4;
    background: transparent !important;
}
.mobile-menu-wrapper .mobile-menu .sub-menu li a:hover,
.mobile-menu-wrapper .mobile-menu ul.submenu-class li a:hover {
    color: #fff !important;
    padding-left: 24px !important;
}
.mobile-menu-wrapper .mobile-menu .sub-menu li a::before,
.mobile-menu-wrapper .mobile-menu ul.submenu-class li a::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 10px;
    height: 1px;
    background: rgba(255,255,255,0.2);
    transition: background 0.2s ease, width 0.3s ease;
}
.mobile-menu-wrapper .mobile-menu .sub-menu li a:hover::before,
.mobile-menu-wrapper .mobile-menu ul.submenu-class li a:hover::before {
    background: var(--theme-color);
    width: 16px;
}

/* --- CTA RDV : bouton lime fullwidth --- */
.mobile-menu-wrapper .mobile-menu > ul > li.mobile-menu-cta {
    border-bottom: none !important;
    margin-top: 24px;
    padding-top: 20px;
    border-top: 1px solid rgba(255,255,255,0.08);
}
.mobile-menu-wrapper .mobile-menu > ul > li.mobile-menu-cta > a {
    background: var(--theme-color) !important;
    color: var(--title-color) !important;
    padding: 18px 28px !important;
    border-radius: 4px;
    text-align: center;
    font-size: 0.92rem !important;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    transition: background 0.3s ease, transform 0.3s ease;
}
.mobile-menu-wrapper .mobile-menu > ul > li.mobile-menu-cta > a:hover {
    background: #fff !important;
    color: var(--title-color) !important;
    padding-left: 28px !important;
    transform: translateY(-2px);
}
/* Pas de toggle sur le CTA RDV */
.mobile-menu-wrapper .mobile-menu > ul > li.mobile-menu-cta > a .mean-expand-class {
    display: none !important;
}

/* --- Footer : social icons + contact --- */
.mobile-menu-wrapper .mobile-menu-foot {
    margin-top: 28px;
    padding-top: 24px;
    border-top: 1px solid rgba(255,255,255,0.08);
}
.mobile-menu-wrapper .mobile-menu-social {
    display: flex;
    gap: 12px;
    margin-bottom: 18px;
}
.mobile-menu-wrapper .mobile-menu-social a {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 1px solid rgba(255,255,255,0.2);
    color: rgba(255,255,255,0.8);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s ease;
    text-decoration: none;
    font-size: 14px;
}
.mobile-menu-wrapper .mobile-menu-social a:hover {
    background: var(--theme-color);
    border-color: var(--theme-color);
    color: var(--title-color);
    transform: translateY(-2px);
}
.mobile-menu-wrapper .mobile-menu-contact {
    color: rgba(255,255,255,0.45);
    font-size: 0.78rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.mobile-menu-wrapper .mobile-menu-contact a {
    color: rgba(255,255,255,0.7);
    text-decoration: none;
    transition: color 0.2s ease;
}
.mobile-menu-wrapper .mobile-menu-contact a:hover {
    color: var(--theme-color);
}

/* ============================================================
   v36 - Mobile menu polish : centrage + close fix + texture
   ============================================================ */

/* Remove grid pattern : trop de conflit visuel avec les separateurs */
.mobile-menu-wrapper .mobile-menu-area::before {
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0.5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E") !important;
    background-size: 200px 200px !important;
    background-repeat: repeat !important;
    opacity: 0.045 !important;
    mix-blend-mode: screen;
}

/* Close button : fix click sur mobile + tap highlight + z-index fort */
.mobile-menu-wrapper .menu-toggle {
    z-index: 10 !important;
    cursor: pointer;
    -webkit-tap-highlight-color: rgba(200, 255, 0, 0.3);
    -webkit-user-select: none;
    user-select: none;
    -webkit-appearance: none;
    appearance: none;
    outline: none;
    padding: 0 !important;
}
/* Pas de rotate sur touch (reste bloque) */
@media (hover: hover) {
    .mobile-menu-wrapper .menu-toggle:hover {
        background: var(--theme-color) !important;
        border-color: var(--theme-color) !important;
        color: var(--title-color) !important;
        transform: rotate(90deg) !important;
    }
}
@media (hover: none) {
    .mobile-menu-wrapper .menu-toggle:hover,
    .mobile-menu-wrapper .menu-toggle:focus,
    .mobile-menu-wrapper .menu-toggle:active {
        transform: none !important;
    }
    .mobile-menu-wrapper .menu-toggle:active {
        background: var(--theme-color) !important;
        border-color: var(--theme-color) !important;
        color: var(--title-color) !important;
    }
}

/* --- Toggle + : centrage absolu vertical + horizontal --- */
.mobile-menu-wrapper .mobile-menu > ul > li > a .mean-expand-class,
.mobile-menu-wrapper .mobile-menu > ul > li .mean-expand-class {
    position: absolute !important;
    right: 4px !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    margin: 0 !important;
}

/* Le + / - centre dans le cercle via flex (deja en place) + reset font-size */
.mobile-menu-wrapper .mobile-menu > ul > li > a .mean-expand-class::before,
.mobile-menu-wrapper .mobile-menu > ul > li .mean-expand-class::before {
    content: "\f067" !important;
    font-family: "Font Awesome 5 Free", "Font Awesome 6 Free" !important;
    font-weight: 900 !important;
    font-size: 11px !important;
    color: #fff !important;
    line-height: 1 !important;
    display: inline-block !important;
    position: relative;
    top: 0;
}
.mobile-menu-wrapper .mobile-menu > ul > li.active-class > a .mean-expand-class::before,
.mobile-menu-wrapper .mobile-menu > ul > li.submenu-item-has-children.active > a .mean-expand-class::before {
    content: "\f068" !important;
    color: var(--title-color) !important;
    font-size: 11px !important;
}

/* Pas de transform du + au hover de l'item parent (peut casser le centrage) */
.mobile-menu-wrapper .mobile-menu > ul > li > a:hover .mean-expand-class {
    transform: translateY(-50%) !important;
}

/* ============================================================
   Megamenu fixes 2026-05-28 : service phare + secteurs featured
   ============================================================ */

/* Service phare dans le megamenu (Acquisition IA-first) : bordure lime via box-shadow (pas de decalage layout) + bg lime light, sobre */
.menu-pages .single-menu-page.service-card.is-featured-service {
  box-shadow: inset 0 0 0 2px var(--theme-color, #E3FF04);
  border-radius: 8px;
  background: rgba(227, 255, 4, 0.04);
}
.menu-pages .single-menu-page.service-card.is-featured-service:hover {
  background: rgba(227, 255, 4, 0.08);
}

/* Secteurs mis en avant dans le megamenu (Concessionnaires, BTP) : texte lime gras, sans etoile */
.menu-pages .single-menu-page.is-featured-sector {
  font-weight: 700;
  color: var(--theme-color, #E3FF04);
}
.menu-pages .menu-sector-item.is-featured-sector a {
  font-weight: 700;
  color: var(--theme-color, #E3FF04);
}

/* Secteurs featured dans le sub-menu desktop POUR QUI (dropdown court) */
.main-menu ul .sub-menu li.is-featured-sector a {
  font-weight: 700;
  color: var(--theme-color, #E3FF04);
}

/* Secteurs featured dans le mobile menu POUR QUI */
.mobile-menu-wrapper .mobile-menu ul .sub-menu li.is-featured-mobile a {
  font-weight: 700;
  color: var(--theme-color, #E3FF04);
}
