@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-mono-500-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-mono-500-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-mono-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-mono-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/ibm-plex-sans-400-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/ibm-plex-sans-400-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/ibm-plex-sans-400-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/ibm-plex-sans-400-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-sans-500-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-sans-500-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-sans-500-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-sans-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/ibm-plex-sans-600-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/ibm-plex-sans-600-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/ibm-plex-sans-600-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/ibm-plex-sans-600-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/ibm-plex-sans-700-cyrillic-ext.woff2') format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/ibm-plex-sans-700-cyrillic.woff2') format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/ibm-plex-sans-700-latin-ext.woff2') format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/ibm-plex-sans-700-latin.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
/* =====================================================================
   DEMINETEC — couche « technique » 2026-10
   Typographie Plex, en-têtes compacts, contenus longs structurés.
   Aucune incidence sur le texte, les titres ou les liens.
   ===================================================================== */
:root{
  --dm-font:'IBM Plex Sans', system-ui, -apple-system, 'Segoe UI', Roboto, 'Noto Sans', 'Noto Sans Arabic', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --dm-mono:'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --dm-graphite:#121518;
  --dm-steel:#1d2126;
  --dm-ink:#16191d;
  --dm-text:#2c3238;
  --dm-muted:#5b636b;
  --dm-line:rgba(18,21,24,.11);
  --dm-line-dark:rgba(255,255,255,.12);
  --dm-paper:#f3f4f5;
  --dm-accent:#B3261E;
  --dm-accent-on-dark:#FF7A6E;
  --dm-radius:3px;
  --dm-grid:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
  --dm-grid-light:linear-gradient(rgba(18,21,24,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(18,21,24,.045) 1px,transparent 1px);
}

/* ---------- Typographie ---------- */
body,
body :is(h1,h2,h3,h4,h5,h6,p,li,dt,dd,td,th,a,span,div,input,textarea,select,button,label,blockquote,figcaption,small,strong,b,em):not([class^="icon-"]):not([class*=" icon-"]){
  font-family:var(--dm-font) !important;
}
body{ color:var(--dm-text); -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility; }
#content p, #content li{ font-size:1.02rem; line-height:1.72; }
#content :is(h1,h2,h3,h4){ color:var(--dm-ink); font-weight:600; letter-spacing:-.018em; text-wrap:balance; }
body.dm-home #content :is(.section,.dark,[class*="bg-dark"],.slider-element) :is(h1,h2,h3,h4):not(.dm-keep){ color:inherit; }
body.dm-home #content .section .heading-block h2{ color:#fff; }
#content h2{ font-size:clamp(1.55rem,1.1rem + 1.3vw,2.15rem); line-height:1.18; }
#content h3{ font-size:clamp(1.15rem,1rem + .45vw,1.38rem); line-height:1.3; }
#content h4{ font-size:1.08rem; line-height:1.35; }
#content :is(h1,h2,h3,h4,h5) > span:not(.nocolor):not(.badge){ color:var(--dm-accent); }
.heading-block :is(h1,h2,h3,h4),
.fancy-title :is(h1,h2,h3,h4,h5){ text-transform:none !important; letter-spacing:-.018em !important; font-weight:600 !important; }
.heading-block > span:not(.before-heading){ font-size:1.02rem; color:var(--dm-muted); font-weight:400; margin-top:10px; }
.heading-block{ margin-bottom:28px; }
.heading-block::after{ display:none !important; }
.fancy-title.title-bottom-border{ padding-bottom:0; }
.fancy-title.title-bottom-border :is(h1,h2,h3,h4,h5,h6){ border-bottom:0 !important; padding-bottom:0 !important; background:transparent !important; }
.fancy-title.title-bottom-border::after{ content:''; display:block; width:44px; height:3px; background:var(--dm-accent); margin-top:14px; }
.heading-block.center .fancy-title::after, .text-center.fancy-title::after, .heading-block.text-center::after{ margin-left:auto; margin-right:auto; }
#content strong, #content b{ color:var(--dm-ink); font-weight:600; }
#content a:not(.button):not(.social-icon):not(.menu-link):not(.dm-toc a){ color:var(--dm-accent); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:3px; text-decoration-color:rgba(179,38,30,.35); transition:text-decoration-color .2s ease; }
@media (hover:hover) and (pointer:fine){ #content a:not(.button):not(.social-icon):not(.menu-link):hover{ text-decoration-color:currentColor; } }

/* ---------- Libellés techniques (mono) ---------- */
.breadcrumb, .breadcrumb-item, .breadcrumb a,
.button, .portfolio-desc span, .counter + h5, #footer .widget h4, .dm-eyebrow, figcaption{ font-family:var(--dm-mono) !important; }

/* ---------- En-tête des pages intérieures (hero) ---------- */
body.dm-page #slider.slider-element{ min-height:clamp(420px,62vh,640px) !important; height:auto !important; background-size:cover !important; background-position:center !important; }
body.dm-page #slider.slider-element::before{ content:''; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:linear-gradient(90deg,rgba(10,12,14,.9) 0%,rgba(10,12,14,.7) 45%,rgba(10,12,14,.28) 100%),var(--dm-grid);
  background-size:auto,64px 64px,64px 64px; }
body.dm-page #slider.slider-element::after{ content:''; position:absolute; left:0; right:0; bottom:0; height:3px; z-index:3; background:linear-gradient(90deg,var(--dm-accent) 0 120px,transparent 120px); }
body.dm-page #slider .slider-inner{ z-index:2; }
body.dm-page #slider .heading-block{ text-align:left !important; max-width:880px; margin:0; padding-top:40px; }
body.dm-page #slider .heading-block h1{ color:#fff !important; font-size:clamp(2.1rem,1.2rem + 3.4vw,4rem) !important; line-height:1.06 !important; letter-spacing:-.03em !important; font-weight:600 !important; text-shadow:none !important; }
body.dm-page #slider .heading-block :is(h4,h5,span){ color:rgba(255,255,255,.72) !important; font-family:var(--dm-mono) !important; font-size:.78rem !important; font-weight:500 !important; letter-spacing:.16em !important; text-transform:uppercase !important; margin-top:22px !important; display:flex; align-items:center; gap:12px; }
body.dm-page #slider .heading-block :is(h4,h5)::before{ content:''; width:28px; height:2px; background:var(--dm-accent-on-dark); flex:none; }
body.dm-page #slider .heading-block :is(h4,h5) b{ font-weight:500 !important; color:inherit !important; }
body.dm-page #slider .vertical-middle .container{ padding-top:0 !important; padding-bottom:0 !important; }
body.dm-page #slider .one-page-arrow{ display:none; }
[dir="rtl"] body.dm-page #slider .heading-block, body.dm-page[dir="rtl"] #slider .heading-block{ text-align:right !important; }

/* Pages ville : bandeau image + titre */
body.dm-page #content .content-wrap.py-0 > .section.parallax{ padding:0 !important; height:clamp(220px,34vh,380px); background-size:cover !important; background-position:center !important; position:relative; }
body.dm-page #content .content-wrap.py-0 > .section.parallax::before{ content:''; position:absolute; inset:0; background:linear-gradient(180deg,rgba(10,12,14,.15),rgba(10,12,14,.75)),var(--dm-grid); background-size:auto,64px 64px,64px 64px; }
body.dm-page #page-title{ background-color:var(--dm-graphite) !important; background-image:var(--dm-grid) !important; background-size:64px 64px !important; border:0 !important; padding:56px 0 52px !important; position:relative; }
body.dm-page #page-title::after{ content:''; position:absolute; left:0; bottom:0; height:3px; width:120px; background:var(--dm-accent); }
body.dm-page #page-title h1{ color:#fff !important; font-size:clamp(2rem,1.2rem + 2.6vw,3.3rem) !important; line-height:1.08 !important; letter-spacing:-.028em !important; font-weight:600 !important; text-transform:none !important; }
body.dm-page #page-title span{ color:rgba(255,255,255,.72) !important; font-size:1.05rem !important; font-weight:400 !important; margin-top:12px; display:block; }
body.dm-page #page-title .breadcrumb{ position:static !important; transform:none !important; margin-top:22px !important; justify-content:flex-start; }
body.dm-page #page-title .breadcrumb, body.dm-page #page-title .breadcrumb a, body.dm-page #page-title .breadcrumb-item{ color:rgba(255,255,255,.62) !important; font-size:.72rem !important; letter-spacing:.12em; text-transform:uppercase; }
body.dm-page #page-title .breadcrumb-item + .breadcrumb-item::before{ color:rgba(255,255,255,.35) !important; content:'/' !important; font-family:var(--dm-mono); }

/* ---------- Fil d'Ariane (hors titre) ---------- */
.breadcrumb{ font-size:.72rem; letter-spacing:.1em; text-transform:uppercase; }

/* ---------- Boutons ---------- */
.button{ border-radius:var(--dm-radius) !important; font-weight:500 !important; letter-spacing:.08em !important; text-transform:uppercase; font-size:.78rem !important; box-shadow:none !important; text-shadow:none !important; border-bottom-width:0 !important; transition:transform 160ms var(--ease-out,ease-out),background-color .2s ease,color .2s ease,border-color .2s ease !important; }
.button.button-xlarge{ padding:0 34px !important; line-height:58px !important; height:auto !important; font-size:.84rem !important; }
.button:active{ transform:scale(.97); }
.button.button-red, .button:not(.button-border):not(.button-light):not(.button-dark):not(.button-white){ background-color:var(--dm-accent) !important; }
@media (hover:hover) and (pointer:fine){ .button.button-red:hover{ background-color:#8f1d17 !important; } }

/* ---------- Cartes (encadrés Canvas et colonnes de services) ---------- */
body.dm-page #content .feature-box.fbox-plain,
body.dm-page #content .feature-box.fbox-border,
body.dm-page #content .feature-box.fbox-effect,
body.dm-page #content .row > [class*="col-lg-6"]:has(> .heading-block :is(h3,h4)) ,
body.dm-page #content .row > [class*="col-lg-4"]:has(> .heading-block :is(h3,h4)){
  background:#fff; border:1px solid var(--dm-line); border-radius:var(--dm-radius); padding:28px 28px 22px; transition:border-color .2s ease, transform .25s var(--ease-out,ease-out);
}
body.dm-page #content .row:has(> [class*="col-lg-6"] > .heading-block :is(h3,h4)){ --bs-gutter-y:20px; row-gap:20px; }
body.dm-page #content .row > [class*="col-lg-6"]:has(> .heading-block :is(h3,h4)) .heading-block,
body.dm-page #content .row > [class*="col-lg-4"]:has(> .heading-block :is(h3,h4)) .heading-block{ margin-bottom:12px; }
body.dm-page #content .row > [class*="col-lg-"]:has(> .heading-block h4) .fancy-title.title-bottom-border::after{ width:24px; height:2px; margin-top:10px; }
@media (hover:hover) and (pointer:fine){
  body.dm-page #content .feature-box.fbox-plain:hover,
  body.dm-page #content .row > [class*="col-lg-6"]:has(> .heading-block :is(h3,h4)):hover,
  body.dm-page #content .row > [class*="col-lg-4"]:has(> .heading-block :is(h3,h4)):hover{ border-color:rgba(179,38,30,.45); transform:translateY(-2px); }
}
.fbox-icon i, .fbox-icon img{ color:var(--dm-accent) !important; }
.feature-box h3{ text-transform:none !important; letter-spacing:-.01em !important; font-weight:600 !important; }

/* ---------- Listes ---------- */
body.dm-page #content .container ul:not([class]),
.dm-list{ list-style:none; padding-left:0; margin-left:0; }
body.dm-page #content .container ul:not([class]) > li,
.dm-list > li{ position:relative; padding-left:22px; margin-bottom:8px; }
body.dm-page #content .container ul:not([class]) > li::before,
.dm-list > li::before{ content:''; position:absolute; left:2px; top:.72em; width:7px; height:7px; background:var(--dm-accent); }
[dir="rtl"] body.dm-page #content .container ul:not([class]) > li, [dir="rtl"] .dm-list > li{ padding-left:0; padding-right:22px; }
[dir="rtl"] body.dm-page #content .container ul:not([class]) > li::before, [dir="rtl"] .dm-list > li::before{ left:auto; right:2px; }
.dm-list--grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:10px; margin:22px 0 26px; }
.dm-list--grid > li{ margin:0; padding:16px 18px 16px 38px; background:var(--dm-paper); border:1px solid var(--dm-line); border-radius:var(--dm-radius); line-height:1.55 !important; }
.dm-list--grid > li::before{ left:18px; top:1.45em; }
[dir="rtl"] .dm-list--grid > li{ padding:16px 38px 16px 18px; }
[dir="rtl"] .dm-list--grid > li::before{ right:18px; left:auto; }


/* ---------- Contenus longs : sommaire + sections numérotées ---------- */
.dm-longform{ display:grid; grid-template-columns:minmax(0,1fr); gap:32px; padding:24px 0 8px; container-type:inline-size; }
.dm-lf-wrap{ container-type:inline-size; }
@container (min-width: 1000px){ .dm-longform{ grid-template-columns:250px minmax(0,1fr); gap:72px; } }
.dm-flow{ counter-reset:dmsec dmfig; min-width:0; max-width:820px; }
.dm-flow p{ max-width:72ch; }
.dm-intro{ padding-bottom:12px; }
.dm-intro > p:first-of-type{ font-size:1.18rem !important; line-height:1.65 !important; color:var(--dm-ink); }
.dm-block{ counter-increment:dmsec; padding:52px 0 8px; border-top:1px solid var(--dm-line); scroll-margin-top:110px; }
.dm-intro + .dm-block, .dm-flow > .dm-block:first-child{ border-top:0; padding-top:20px; }
.dm-block > h2{ margin:0 0 22px !important; }
.dm-block > h2::before{ content:counter(dmsec,decimal-leading-zero); display:block; font:500 .74rem/1 var(--dm-mono); letter-spacing:.16em; color:var(--dm-accent); margin-bottom:16px; }
.dm-block > h3{ margin:34px 0 10px !important; }
.dm-block > p, .dm-intro > p{ margin-bottom:18px; }
.dm-toc{ position:relative; }
.dm-toc__in{ position:sticky; top:110px; }
.dm-toc details{ border:1px solid var(--dm-line); border-radius:var(--dm-radius); background:#fff; }
.dm-toc summary{ list-style:none; cursor:pointer; padding:14px 16px; font:500 .72rem/1 var(--dm-mono); letter-spacing:.16em; text-transform:uppercase; color:var(--dm-muted); display:flex; justify-content:space-between; align-items:center; }
.dm-toc summary::-webkit-details-marker{ display:none; }
.dm-toc summary::after{ content:''; width:7px; height:7px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:rotate(45deg) translateY(-2px); transition:transform .2s var(--ease-out,ease-out); }
.dm-toc details[open] summary::after{ transform:rotate(-135deg) translateY(-2px); }
.dm-toc ol{ list-style:none; margin:0; padding:0 0 10px; counter-reset:dmtoc; max-height:calc(100vh - 220px); overflow:auto; }
.dm-toc li{ counter-increment:dmtoc; margin:0; }
.dm-toc a{ display:grid; grid-template-columns:28px 1fr; gap:6px; padding:9px 16px; font-size:.86rem !important; line-height:1.38; color:var(--dm-muted) !important; text-decoration:none !important; border-left:2px solid transparent; transition:color .15s ease,border-color .15s ease,background-color .15s ease; }
.dm-toc a::before{ content:counter(dmtoc,decimal-leading-zero); font:500 .7rem/1.9 var(--dm-mono); color:rgba(91,99,107,.7); }
.dm-toc a.is-active{ color:var(--dm-ink) !important; border-left-color:var(--dm-accent); background:var(--dm-paper); }
.dm-toc a.is-active::before{ color:var(--dm-accent); }
@media (hover:hover) and (pointer:fine){ .dm-toc a:hover{ color:var(--dm-ink) !important; } }
@container (min-width: 1000px){
  .dm-toc details{ border:0; background:transparent; }
  .dm-toc summary{ padding:0 0 14px 18px; cursor:default; pointer-events:none; }
  .dm-toc summary::after{ display:none; }
  .dm-toc ol{ border-left:1px solid var(--dm-line); padding:0; }
  .dm-toc a{ margin-left:-1px; }
}

/* Questions-réponses */
.dm-flow{ container-type:inline-size; }
.dm-qagrid{ display:grid; grid-template-columns:minmax(0,1fr); gap:14px; margin:8px 0 18px; }
@container (min-width: 620px){ .dm-qagrid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
.dm-qa{ background:#fff; border:1px solid var(--dm-line); border-radius:var(--dm-radius); padding:22px 24px 8px; }
.dm-qa > h3{ font-size:1.04rem !important; line-height:1.4 !important; margin:0 0 10px !important; display:grid; grid-template-columns:26px 1fr; }
.dm-qa > h3::before{ content:'Q'; font:500 .74rem/1.9 var(--dm-mono); color:var(--dm-accent); }
[lang="en"] .dm-qa > h3::before{ content:'Q'; }
.dm-qa > p{ font-size:.96rem !important; line-height:1.65 !important; color:var(--dm-text); max-width:none; }


/* Liens « À lire aussi » */
.dm-related{ display:grid; grid-template-columns:repeat(auto-fill,minmax(270px,1fr)); gap:12px; margin:34px 0 10px; }
.dm-related > p{ margin:0 !important; padding:18px 20px !important; background:var(--dm-paper); border:1px solid var(--dm-line); border-top:2px solid var(--dm-accent); border-radius:var(--dm-radius); font-size:.92rem !important; line-height:1.55 !important; max-width:none; }
.dm-related > p > strong:first-child{ display:block; font:500 .68rem/1 var(--dm-mono) !important; letter-spacing:.14em; text-transform:uppercase; color:var(--dm-muted) !important; margin-bottom:10px; }
.dm-related > p a{ font-weight:600; }
.container > .dm-related{ margin-top:40px; margin-bottom:40px; }

/* Figures */
.dm-figure{ counter-increment:dmfig; margin:40px 0 44px; }
.dm-figure img{ display:block; width:100%; height:auto; aspect-ratio:16/9; object-fit:cover; border-radius:var(--dm-radius); background:var(--dm-paper); }
.dm-figure figcaption{ display:flex; gap:14px; margin-top:12px; font-size:.74rem; line-height:1.5; letter-spacing:.04em; color:var(--dm-muted); }
.dm-figure figcaption::before{ content:'FIG. ' counter(dmfig,decimal-leading-zero); color:var(--dm-accent); flex:none; letter-spacing:.12em; }

/* Tableaux */
.dm-table{ overflow-x:auto; margin:24px 0 28px; border:1px solid var(--dm-line); border-radius:var(--dm-radius); }
.dm-table table{ width:100%; border-collapse:collapse; margin:0; font-size:.94rem; }
.dm-table th{ background:var(--dm-graphite); color:#fff; font:500 .74rem/1.4 var(--dm-mono) !important; letter-spacing:.08em; text-transform:uppercase; text-align:left; padding:12px 14px; }
.dm-table td{ padding:12px 14px; border-top:1px solid var(--dm-line); vertical-align:top; }
.dm-table tr:nth-child(even) td{ background:var(--dm-paper); }

/* ---------- Appel à l'action « Un doute, une question ? » ---------- */
body.dm-page .section.footer-stick{ background-color:var(--dm-graphite) !important; background-image:var(--dm-grid) !important; background-size:64px 64px !important; margin-bottom:0 !important; padding:84px 0 !important; border:0 !important; position:relative; }
body.dm-page .section.footer-stick::before{ content:''; position:absolute; left:0; top:0; width:120px; height:3px; background:var(--dm-accent); }
body.dm-page .section.footer-stick .heading-block h2{ color:#fff !important; font-size:clamp(1.7rem,1.2rem + 1.8vw,2.6rem) !important; }
body.dm-page .section.footer-stick .heading-block span{ color:rgba(255,255,255,.7) !important; }

/* ---------- Sections grises ---------- */
body.dm-page #content .section:not(.parallax):not(.footer-stick):not(.dark){ background-color:var(--dm-paper); background-image:var(--dm-grid-light); background-size:64px 64px; border:0; }

/* ---------- Chiffres clés ---------- */
.counter{ font-family:var(--dm-mono) !important; font-weight:500 !important; letter-spacing:-.02em; }

/* ---------- Groupe (logos) ---------- */
@media (hover:hover) and (pointer:fine){
  #content .row.col-mb-30 > [class*="col-md"].text-center img{ filter:grayscale(1); opacity:.78; transition:filter .25s ease, opacity .25s ease; }
  #content .row.col-mb-30 > [class*="col-md"].text-center:hover img{ filter:none; opacity:1; }
}

/* ---------- Pied de page ---------- */
#footer{ background-color:var(--dm-graphite) !important; border-top:3px solid var(--dm-accent) !important; }
#footer .widget h4{ font-size:.74rem !important; letter-spacing:.16em !important; text-transform:uppercase; color:rgba(255,255,255,.62) !important; font-weight:500 !important; }
#copyrights{ background-color:#0c0e10 !important; font-size:.8rem; }

/* ---------- Barre de progression de lecture ---------- */
.dm-progress{ position:fixed; left:0; top:0; height:2px; width:100%; background:var(--dm-accent); transform-origin:0 50%; transform:scaleX(0); z-index:1000; pointer-events:none; }
[dir="rtl"] .dm-progress{ transform-origin:100% 50%; }

/* ---------- Apparition au défilement ---------- */
.dm-js .dm-rv{ opacity:0; transform:translate3d(0,14px,0); transition:opacity .5s var(--ease-out,ease-out), transform .5s var(--ease-out,ease-out); }
.dm-js .dm-rv.is-in{ opacity:1; transform:none; }
@media (prefers-reduced-motion:reduce){
  .dm-js .dm-rv{ transform:none; transition:opacity .2s linear; }
  .button, .dm-toc a, body.dm-page #content [class*="col-lg-"]{ transition:none !important; }
}

/* =====================================================================
   Mouvement : transitions de page et animations de défilement
   Courbes : ease-out fort ; aucune animation sur les actions répétitives.
   ===================================================================== */

/* Transitions entre pages (navigation same-origin, amélioration progressive) */
@view-transition{ navigation:auto; }
#header{ view-transition-name:dm-header; }
::view-transition-old(root){ animation:dm-vt-out 180ms cubic-bezier(.4,0,1,1) both; }
::view-transition-new(root){ animation:dm-vt-in 340ms cubic-bezier(0.23,1,0.32,1) both; }
::view-transition-group(dm-header){ animation:none; }
::view-transition-old(dm-header), ::view-transition-new(dm-header){ animation:none; mix-blend-mode:normal; }
@keyframes dm-vt-out{ to{ opacity:0; } }
@keyframes dm-vt-in{ from{ opacity:0; transform:translate3d(0,10px,0); } }

/* Apparition par éléments (classes posées par le script, rien n'est masqué sans JS) */
.dm-js .dm-rv{ transition-delay:var(--dm-d,0ms); }
.dm-js .dm-rv--left{ transform:translate3d(-18px,0,0); }
[dir="rtl"] .dm-js .dm-rv--left{ transform:translate3d(18px,0,0); }
.dm-js .dm-rv--scale{ transform:scale(.985); }
.dm-js .dm-rv--left.is-in, .dm-js .dm-rv--scale.is-in{ transform:none; }

/* Photo : dévoilement par rideau */
.dm-js .dm-figure.dm-rv{ opacity:1; transform:none; }
.dm-js .dm-figure.dm-rv img{ clip-path:inset(0 0 100% 0); transform:scale(1.04); transition:clip-path .9s cubic-bezier(0.77,0,0.175,1), transform 1.2s cubic-bezier(0.23,1,0.32,1); }
.dm-js .dm-figure.dm-rv.is-in img{ clip-path:inset(0 0 0 0); transform:none; }
.dm-js .dm-figure.dm-rv figcaption{ opacity:0; transition:opacity .4s ease .45s; }
.dm-js .dm-figure.dm-rv.is-in figcaption{ opacity:1; }

/* Trait d'accent des titres : se dessine à l'apparition */
.dm-js .fancy-title.title-bottom-border.dm-rv::after{ transform:scaleX(0); transform-origin:0 50%; transition:transform .6s cubic-bezier(0.23,1,0.32,1) .15s; }
.dm-js .fancy-title.title-bottom-border.dm-rv.is-in::after{ transform:scaleX(1); }
.dm-js .dm-block.dm-rv > h2::before{ clip-path:inset(0 100% 0 0); transition:clip-path .5s cubic-bezier(0.23,1,0.32,1) .1s; }
.dm-js .dm-block.dm-rv.is-in > h2::before{ clip-path:inset(0 0 0 0); }

/* En-tête : entrée du titre au chargement */
@keyframes dm-hero-in{ from{ opacity:0; transform:translate3d(0,16px,0); } }
body.dm-page #slider .heading-block > *{ animation:dm-hero-in .7s cubic-bezier(0.23,1,0.32,1) both; }
body.dm-page #slider .heading-block > *:nth-child(2){ animation-delay:.12s; }
body.dm-page #slider .heading-block > *:nth-child(3){ animation-delay:.2s; }
body.dm-page #page-title .container > *{ animation:dm-hero-in .6s cubic-bezier(0.23,1,0.32,1) both; }
body.dm-page #page-title .container > *:nth-child(2){ animation-delay:.08s; }
body.dm-page #page-title .container > *:nth-child(3){ animation-delay:.14s; }
@keyframes dm-line{ from{ transform:scaleX(0); } }
body.dm-page #slider.slider-element::after, body.dm-page #page-title::after{ transform-origin:0 50%; animation:dm-line .9s cubic-bezier(0.23,1,0.32,1) .25s both; }

/* Parallaxe discrète de l'en-tête, pilotée par le défilement (navigateurs compatibles) */
@supports (animation-timeline: scroll()){
  @keyframes dm-hero-drift{ to{ background-position:center 38%; } }
  @keyframes dm-hero-fade{ to{ opacity:.25; transform:translate3d(0,-36px,0); } }
  body.dm-page #slider.slider-element{ animation:dm-hero-drift linear both; animation-timeline:scroll(root); animation-range:0 70vh; }
  body.dm-page #slider .slider-inner{ animation:dm-hero-fade linear both; animation-timeline:scroll(root); animation-range:0 60vh; }
}

/* Mouvement réduit : opacité seule, pas de déplacement */
@media (prefers-reduced-motion:reduce){
  ::view-transition-old(root), ::view-transition-new(root){ animation:none; }
  body.dm-page #slider .heading-block > *, body.dm-page #page-title .container > *,
  body.dm-page #slider.slider-element, body.dm-page #slider .slider-inner,
  body.dm-page #slider.slider-element::after, body.dm-page #page-title::after{ animation:none !important; }
  .dm-js .dm-rv, .dm-js .dm-rv--left, .dm-js .dm-rv--scale{ transform:none !important; transition:opacity .2s linear !important; }
  .dm-js .dm-figure.dm-rv img{ clip-path:none; transform:none; transition:none; }
  .dm-js .fancy-title.title-bottom-border.dm-rv::after{ transform:none; transition:none; }
  .dm-js .dm-block.dm-rv > h2::before{ clip-path:none; transition:none; }
}

/* ---------- Sections d'origine : structure et hiérarchie ---------- */
/* Paragraphe d'ouverture et accroches */
.dm-lede > p:first-of-type{ font-size:clamp(1.12rem,1rem + .4vw,1.32rem) !important; line-height:1.6 !important; color:var(--dm-ink); font-weight:400; max-width:68ch; }
.dm-lede > p:first-of-type strong{ font-weight:600; }
.dm-lede{ display:grid; grid-template-columns:minmax(0,1fr); gap:0 56px; padding:12px 0 8px; }
@media (min-width:992px){ .dm-lede{ grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); } .dm-lede > p:first-of-type{ grid-row:span 4; } }
.dm-callout{ border-left:3px solid var(--dm-accent); background:var(--dm-paper); padding:20px 24px !important; margin:24px 0 !important; font-size:1.04rem !important; line-height:1.6 !important; grid-column:1 / -1; max-width:none !important; }
[dir="rtl"] .dm-callout{ border-left:0; border-right:3px solid var(--dm-accent); }
/* Sous-titres soulignés « Assurance qualité : » */
#content p.dm-sub{ display:flex; align-items:center; gap:12px; margin:30px 0 12px !important; font-family:var(--dm-mono) !important; font-size:.76rem !important; letter-spacing:.14em; text-transform:uppercase; color:var(--dm-ink); }
#content p.dm-sub *{ text-decoration:none !important; font-family:var(--dm-mono) !important; font-weight:500 !important; }
#content p.dm-sub::before{ content:''; width:18px; height:2px; background:var(--dm-accent); flex:none; }
/* Légende du groupe */
.dm-groupcap{ font-family:var(--dm-mono) !important; font-size:.74rem !important; letter-spacing:.14em; text-transform:uppercase; color:var(--dm-muted) !important; text-align:center; margin:34px 0 8px !important; }
.dm-groupcap *{ font-weight:500 !important; color:inherit !important; }
/* Barre de navigation interne (page-menu Canvas) */
#page-menu #page-menu-wrap, .page-menu-wrap{ background:var(--dm-graphite) !important; }
#page-menu .page-menu-title, #page-menu .page-menu-title span{ font-family:var(--dm-mono) !important; text-transform:uppercase; letter-spacing:.14em; font-size:.74rem !important; color:rgba(255,255,255,.65) !important; font-weight:500 !important; }
#page-menu .page-menu-item > a, #page-menu .page-menu-container a{ font-family:var(--dm-mono) !important; font-size:.72rem !important; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.78) !important; background:transparent !important; border-radius:0 !important; }
#page-menu .page-menu-item.current > a, #page-menu .page-menu-item > a:hover{ color:#fff !important; box-shadow:inset 0 -2px 0 var(--dm-accent); }
/* Longueur de ligne confortable pour les paragraphes pleine largeur */
body.dm-page #content .container > p:not(.dm-groupcap):not(.dm-callout),
body.dm-page #content .container > .col-lg-12 > p,
body.dm-page #content .dm-lede > p{ max-width:78ch; }
body.dm-page #content .container.center > p, body.dm-page #content .text-center > p{ margin-left:auto; margin-right:auto; }
/* Légende du groupe (h4 centré au-dessus des logos) */
#content .col-md-12.text.center > h4{ font-family:var(--dm-mono) !important; font-size:.74rem !important; font-weight:500 !important; letter-spacing:.14em !important; text-transform:uppercase; color:var(--dm-muted) !important; text-align:center; margin:30px auto 6px; max-width:60ch; line-height:1.6; }
/* Logos du groupe : grille 2 x 2 sur mobile */
@media (max-width:767.98px){
  #content .row.col-mb-30:has(> [class*="col-md"].text-center img){ row-gap:18px; }
  #content .row.col-mb-30 > [class*="col-md"].text-center:has(img){ flex:0 0 50%; max-width:50%; margin-bottom:0 !important; }
  #content .row.col-mb-30 > [class*="col-md"].text-center img{ max-height:44px !important; width:auto !important; }
}
.dm-figwrap{ max-width:900px; }
.dm-figwrap .dm-figure{ counter-increment:none; }
.dm-figwrap .dm-figure figcaption::before{ content:'FIG.'; }
/* Menu compact entre 992 et 1199 px : une seule ligne */
@media (min-width:992px) and (max-width:1199.98px){
  body #header .primary-menu .menu-container > .menu-item > .menu-link{ font-size:11px !important; padding-left:5px !important; padding-right:5px !important; letter-spacing:.02em !important; }
  body #header .primary-menu .menu-container > .menu-item > .menu-link i{ margin-left:2px !important; }
  body #header #logo img{ max-height:44px; }
}
/* ---------- Page équipe ---------- */
.dm-team{ padding:72px 0 0; }
.dm-kicker{ font-family:var(--dm-mono) !important; font-size:.74rem !important; letter-spacing:.16em; text-transform:uppercase; color:var(--dm-accent) !important; margin:0 0 10px !important; display:flex; align-items:center; gap:10px; }
.dm-kicker::before{ content:''; width:22px; height:2px; background:var(--dm-accent); }
.dm-team__intro{ max-width:880px; }
.dm-team__intro h2{ font-size:clamp(1.8rem,1.3rem + 1.6vw,2.6rem); letter-spacing:-.02em; margin-bottom:18px; }
.dm-team__lead{ font-size:clamp(1.1rem,1rem + .35vw,1.28rem) !important; line-height:1.6 !important; color:var(--dm-ink) !important; }
.dm-kpis{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); border-top:1px solid var(--dm-line); border-bottom:1px solid var(--dm-line); margin:44px 0 24px; }
.dm-kpis > div{ padding:22px 24px 20px 0; }
.dm-kpis > div + div{ border-left:1px solid var(--dm-line); padding-left:24px; }
[dir="rtl"] .dm-kpis > div + div{ border-left:0; border-right:1px solid var(--dm-line); padding-left:0; padding-right:24px; }
.dm-kpis dt{ font-family:var(--dm-mono); font-size:clamp(2rem,1.5rem + 1.8vw,3rem); font-weight:500; color:var(--dm-ink); line-height:1; letter-spacing:-.02em; }
.dm-kpis dd{ margin:8px 0 0; font-size:.86rem; color:var(--dm-muted); }
.dm-people{ border-top:1px solid var(--dm-line); }
.dm-person{ display:grid; grid-template-columns:minmax(0,1fr); gap:20px 56px; padding:44px 0; border-bottom:1px solid var(--dm-line); scroll-margin-top:110px; }
@media (min-width:992px){ .dm-person{ grid-template-columns:330px minmax(0,1fr); } .dm-person__id{ position:sticky; top:110px; align-self:start; } }
.dm-person__id{ display:flex; gap:18px; align-items:flex-start; }
.dm-person__mono{ flex:none; width:68px; height:68px; display:grid; place-items:center; background:var(--dm-graphite); background-image:var(--dm-grid); background-size:16px 16px; color:#fff; font-family:var(--dm-mono); font-size:1.05rem; letter-spacing:.08em; border-bottom:3px solid var(--dm-accent); }
.dm-person__id h3{ font-size:1.32rem !important; margin:2px 0 6px !important; letter-spacing:-.01em; }
.dm-person__role{ font-weight:600; color:var(--dm-ink) !important; margin:0 0 8px !important; line-height:1.4 !important; }
.dm-person__tag{ font-family:var(--dm-mono) !important; font-size:.7rem !important; letter-spacing:.12em; color:var(--dm-accent) !important; margin:0 !important; }
.dm-person__body > p{ max-width:72ch; }
.dm-person__meta{ display:grid; grid-template-columns:minmax(0,1fr); gap:20px 40px; margin-top:22px; padding-top:22px; border-top:1px dashed var(--dm-line); }
@media (min-width:768px){ .dm-person__meta{ grid-template-columns:minmax(0,1fr) 200px; } }
.dm-person__k{ font-family:var(--dm-mono) !important; font-size:.7rem !important; letter-spacing:.14em; text-transform:uppercase; color:var(--dm-muted) !important; margin:0 0 10px !important; }
.dm-person__meta .dm-list{ margin:0 !important; }
.dm-person__meta .dm-list li{ font-size:.92rem; }
.dm-person__facts{ margin:0; display:grid; gap:16px; align-content:start; }
.dm-person__facts dt{ font-family:var(--dm-mono); font-size:.7rem; letter-spacing:.14em; text-transform:uppercase; color:var(--dm-muted); font-weight:500; }
.dm-person__facts dd{ margin:4px 0 0; font-size:.95rem; color:var(--dm-ink); }
.dm-person__facts > div:first-child dd{ font-family:var(--dm-mono); font-size:1.5rem; }
.dm-team__org{ padding:64px 0 72px; }
.dm-team__org h2{ font-size:clamp(1.5rem,1.2rem + 1vw,2rem); margin-bottom:22px; }
.dm-team__org th[scope="row"]{ white-space:nowrap; }
.dm-teamcta{ background-color:var(--dm-graphite); background-image:var(--dm-grid); background-size:64px 64px; color:#fff; padding:72px 0; border-top:3px solid var(--dm-accent); }
.dm-teamcta h2{ color:#fff !important; font-size:clamp(1.5rem,1.2rem + 1vw,2rem); }
.dm-teamcta p{ color:rgba(255,255,255,.75) !important; max-width:64ch; }
.dm-teamcta__btns{ display:flex; flex-wrap:wrap; gap:12px; margin-top:24px; }
.dm-teamcta a.button.dm-btn-ghost, body .dm-teamcta .button.dm-btn-ghost{ background:transparent !important; border:1px solid rgba(255,255,255,.4) !important; color:#fff !important; }
.dm-teamcta a.button.dm-btn-ghost:hover{ border-color:#fff !important; }
@media (max-width:767.98px){ .dm-kpis > div{ padding:16px 10px 14px 0; } .dm-kpis > div + div{ padding-left:12px; } [dir="rtl"] .dm-kpis > div + div{ padding-right:12px; } .dm-kpis dt{ font-size:1.7rem; } .dm-kpis dd{ font-size:.74rem; line-height:1.35; } .dm-team__org th[scope="row"]{ white-space:normal; } }
/* Grille des filiales : 5 colonnes */
@media (min-width:992px){ #portfolio .portfolio-item.dm-col5{ width:20% !important; flex:0 0 20% !important; max-width:20% !important; } }

/* Dimensions intrinsèques : le ratio est réservé, la taille reste pilotée par la CSS */
:where(img[width][height]){ height:auto; max-width:100%; }

/* Qui sommes-nous : groupe et direction */
.dm-about-group{ padding-block:clamp(1.5rem,1rem + 2vw,3rem); }
.dm-about-list{ list-style:none; padding:0; margin:0 0 1.25rem; border-top:1px solid var(--dm-line,#e3e5e8); }
.dm-about-list li{ padding:.7rem 0; border-bottom:1px solid var(--dm-line,#e3e5e8); line-height:1.55; }
.dm-about-list a{ text-decoration:none; }
.dm-about-list li > a:not(.button){ color:var(--dm-ink); }
