/*!
 * CODEINE — DCM Design System · Industrial Precision × Dark Engineering
 * Dupasquier Concept Métal · © CODEINE Studio (codeine.ch)
 * Sections : 1 Tokens · 2 Base · 3 Atomes · 4 Hero · 5 Navigation · 6 Cartes
 * 7 Titres/Timeline/CTA · 8 Projets · 9 Comparateur · 10 Formulaire · 11 Footer · 12 Curseur · 13 Mouvement réduit
 */

/* ------------------------------------------------------------------ 1. Tokens */
@font-face{font-family:"Space Grotesk";font-style:normal;font-weight:300 700;font-display:swap;src:url("../fonts/space-grotesk-latin-wght-normal.woff2") format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url("../fonts/inter-latin-wght-normal.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2")}

/* Alias sans équivalent Google : Elementor ne tente donc jamais de charger Google Fonts. */
@font-face{font-family:"DCM Display";font-style:normal;font-weight:300 700;font-display:swap;src:url("../fonts/space-grotesk-latin-wght-normal.woff2") format("woff2")}
@font-face{font-family:"DCM Body";font-style:normal;font-weight:100 900;font-display:swap;src:url("../fonts/inter-latin-wght-normal.woff2") format("woff2")}
@font-face{font-family:"DCM Mono";font-style:normal;font-weight:400;font-display:swap;src:url("../fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2")}

:root{
	--dcm-black:#080B0E;
	--dcm-graphite:#111820;
	--dcm-steel-d:#303B44;
	--dcm-steel:#B5BEC5;
	--dcm-muted:#98A3AC;
	--dcm-white:#E7E9E8;
	--dcm-accent:#E67E32;
	--dcm-line:rgba(181,190,197,.16);
	--dcm-line-2:rgba(181,190,197,.34);
	--dcm-font-display:"DCM Display","Space Grotesk","Segoe UI",system-ui,-apple-system,sans-serif;
	--dcm-font-body:"DCM Body","Inter","Segoe UI",system-ui,-apple-system,sans-serif;
	--dcm-font-mono:"DCM Mono","IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
	--dcm-ease:cubic-bezier(.22,1,.36,1);
	--dcm-ease-io:cubic-bezier(.77,0,.175,1);
	--dcm-gutter:clamp(20px,5vw,72px);
	--dcm-max:1320px;
	--dcm-nav-h:84px;
	--dcm-speed:1;
}

/* -------------------------------------------------------------------- 2. Base */
.dcm-site{background:var(--dcm-black);color:var(--dcm-white);font-family:var(--dcm-font-body);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}
.dcm-site h1,.dcm-site h2,.dcm-site h3,.dcm-site h4{font-family:var(--dcm-font-display);color:var(--dcm-white);line-height:1.08;letter-spacing:-.01em;font-weight:600;margin:0 0 .5em}
.dcm-site p{margin:0 0 1em}
.dcm-site a{color:inherit;text-decoration-color:var(--dcm-line-2);text-underline-offset:.2em}
.dcm-site a:hover{text-decoration-color:var(--dcm-accent)}
.dcm-site :focus-visible{outline:2px solid var(--dcm-accent);outline-offset:3px;border-radius:1px}
.dcm-site ::selection{background:var(--dcm-accent);color:var(--dcm-black)}
.dcm-site img{max-width:100%;height:auto}
.screen-reader-text{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}
.dcm-skip{position:fixed;left:12px;top:-60px;z-index:2000;background:var(--dcm-accent);color:var(--dcm-black);padding:10px 16px;font-family:var(--dcm-font-mono);font-size:13px;transition:top .2s}
.dcm-skip:focus{top:12px}
html.dcm-lock,html.dcm-lock body{overflow:hidden}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
html{scroll-padding-top:calc(var(--dcm-nav-h) + 12px)}
.dcm-container{box-sizing:border-box;width:100%;max-width:var(--dcm-max);margin-inline:auto;padding-inline:var(--dcm-gutter)}

/* Widgets Elementor natifs : on impose la typographie du design system (le kit Elementor par défaut utilise Roboto). */
.dcm-site .elementor-widget-heading .elementor-heading-title{font-family:var(--dcm-font-display);color:var(--dcm-white)}
.dcm-site .elementor-widget-text-editor,.dcm-site .elementor-widget-text-editor p{font-family:var(--dcm-font-body);color:var(--dcm-steel)}
.dcm-site .elementor-widget-text-editor a{color:var(--dcm-white)}
.dcm-site .elementor-widget-button .elementor-button{font-family:var(--dcm-font-mono);border-radius:0}
.dcm-site .elementor-widget-image img{display:block}

/* Utilitaires de mise en page (utilisés par les modèles Elementor, modifiables dans l'éditeur) */
.dcm-section{position:relative}
.dcm-section--graphite{background-color:var(--dcm-graphite)}
.dcm-section--line{border-top:1px solid var(--dcm-line)}
.dcm-h-xl .elementor-heading-title{font-size:clamp(2.4rem,6.4vw,5.6rem);line-height:.96;letter-spacing:-.03em;text-transform:uppercase;font-weight:600}
.dcm-h-l .elementor-heading-title{font-size:clamp(1.9rem,4vw,3.4rem);line-height:1;letter-spacing:-.025em;text-transform:uppercase;font-weight:600}
.dcm-h-m .elementor-heading-title{font-size:clamp(1.3rem,2.2vw,1.9rem);line-height:1.1;font-weight:500}
.dcm-lead-text,.dcm-lead-text p{font-size:clamp(1.05rem,1.5vw,1.3rem);line-height:1.6;color:var(--dcm-white)!important}
.dcm-expo{border-top:1px solid var(--dcm-line)}
.dcm-expo__num .elementor-heading-title{font-family:var(--dcm-font-mono);font-size:13px;letter-spacing:.16em;color:var(--dcm-accent)}
.dcm-expo ul{margin:0 0 1em;padding:0;list-style:none;display:grid;gap:6px}
.dcm-expo li{position:relative;padding-left:24px}
.dcm-expo li::before{content:"";position:absolute;left:0;top:.8em;width:12px;height:1px;background:var(--dcm-accent)}
.dcm-fig img{width:100%;height:auto;border:1px solid var(--dcm-line);background:var(--dcm-graphite)}
.dcm-portrait img{width:100%;height:auto;border:1px solid var(--dcm-line)}
.dcm-footer__big .elementor-heading-title{font-family:var(--dcm-font-display);font-weight:600;font-size:clamp(2.2rem,10vw,9rem);line-height:.9;letter-spacing:-.04em;text-transform:uppercase;-webkit-text-stroke:1px var(--dcm-line-2)}

/* Boutons Elementor natifs : même langage visuel que .dcm-btn */
.dcm-btnw .elementor-button{border:1px solid var(--dcm-line-2);border-radius:0;padding:1em 1.6em;font-size:13px;letter-spacing:.1em;text-transform:uppercase;background:transparent;color:var(--dcm-white);transition:background-color .35s var(--dcm-ease),color .35s var(--dcm-ease),border-color .35s}
.dcm-btnw .elementor-button:hover,.dcm-btnw .elementor-button:focus-visible{background:var(--dcm-white);color:var(--dcm-black);border-color:var(--dcm-white)}
.dcm-btnw--primary .elementor-button{background:var(--dcm-accent);border-color:var(--dcm-accent);color:var(--dcm-black)}
.dcm-fig--bare img{border:0;background:transparent}
.dcm-footer .elementor-widget-text-editor a{text-decoration:none}
@media (max-width:767px){.dcm-section{--padding-block:56px}}

/* Trame de construction (arrière-plan utilitaire) */
.dcm-gridbg{background-image:linear-gradient(var(--dcm-line) 1px,transparent 1px),linear-gradient(90deg,var(--dcm-line) 1px,transparent 1px);background-size:80px 80px;background-position:-1px -1px}
.dcm-steel-surface{background:
	linear-gradient(115deg,rgba(255,255,255,.035) 0%,transparent 28%,rgba(255,255,255,.02) 52%,transparent 74%),
	repeating-linear-gradient(90deg,rgba(255,255,255,.012) 0 1px,transparent 1px 3px),var(--dcm-graphite)}

/* ------------------------------------------------------------------ 3. Atomes */
.dcm-eyebrow{display:inline-flex;align-items:center;gap:.7em;font-family:var(--dcm-font-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--dcm-steel);margin:0}
.dcm-mono{font-family:var(--dcm-font-mono);letter-spacing:.06em}

.dcm-btn{--b:var(--dcm-line-2);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.7em;padding:.95em 1.5em;min-height:48px;font-family:var(--dcm-font-mono);font-size:13px;font-weight:400;letter-spacing:.1em;text-transform:uppercase;text-decoration:none!important;color:var(--dcm-white);background:transparent;border:1px solid var(--b);border-radius:0;cursor:pointer;overflow:hidden;isolation:isolate;transition:color .35s var(--dcm-ease),border-color .35s var(--dcm-ease),transform .2s var(--dcm-ease);-webkit-tap-highlight-color:transparent}
.dcm-btn::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--dcm-white);transform:translateX(-101%);transition:transform .45s var(--dcm-ease)}
.dcm-btn span{position:relative;display:inline-flex;align-items:center;gap:.7em}
.dcm-btn span::after{content:"";width:18px;height:1px;background:currentColor;transition:width .35s var(--dcm-ease)}
.dcm-btn:hover,.dcm-btn:focus-visible{color:var(--dcm-black);border-color:var(--dcm-white)}
.dcm-btn:hover::before,.dcm-btn:focus-visible::before{transform:none}
.dcm-btn:hover span::after{width:28px}
.dcm-btn:active{transform:scale(.97)}
.dcm-btn--primary{--b:var(--dcm-accent);background:var(--dcm-accent);color:var(--dcm-black)}
.dcm-btn--primary::before{background:var(--dcm-white)}
.dcm-btn--lg{padding:1.15em 2em;font-size:14px}
.dcm-btn[disabled]{opacity:.55;cursor:not-allowed}

/* Révélation technique générique */
.dcm-th__rule,.dcm-tl__progress{transform-origin:left center}

/* ------------------------------------------------------------------- 4. Hero */
.dcm-hero{position:relative;display:flex;flex-direction:column;justify-content:flex-end;min-height:100vh;min-height:100svh;background:var(--dcm-black);overflow:hidden;isolation:isolate}
.dcm-hero::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(60% 55% at 72% 46%,rgba(181,190,197,.10),transparent 70%),radial-gradient(40% 40% at 8% 100%,rgba(230,126,50,.07),transparent 70%)}
.dcm-hero::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(90deg,rgba(8,11,14,.94) 0%,rgba(8,11,14,.68) 34%,rgba(8,11,14,0) 66%),linear-gradient(0deg,rgba(8,11,14,.9) 0%,rgba(8,11,14,0) 36%)}
.dcm-hero__scene{position:absolute;inset:0;z-index:-1}
.dcm-hero__grid{position:absolute;inset:0;background-image:linear-gradient(var(--dcm-line) 1px,transparent 1px),linear-gradient(90deg,var(--dcm-line) 1px,transparent 1px);background-size:96px 96px;opacity:.55;-webkit-mask-image:radial-gradient(70% 70% at 70% 45%,#000,transparent 80%);mask-image:radial-gradient(70% 70% at 70% 45%,#000,transparent 80%)}
.dcm-hero__svg{position:absolute;right:0;top:50%;width:min(88vw,1500px);height:auto;max-height:92%;transform:translateY(-50%);overflow:visible}
.dcm-hero--center .dcm-hero__svg{right:50%;transform:translate(50%,-50%)}
.dcm-hero__content{position:relative;z-index:1;padding-top:calc(var(--dcm-nav-h) + 40px);padding-bottom:clamp(88px,12vh,140px)}
.dcm-hero__eyebrow{margin-bottom:1.6rem}
.dcm-hero__tick{width:28px;height:1px;background:var(--dcm-accent)}
.dcm-hero__title{font-size:clamp(2.6rem,8.4vw,7.6rem);line-height:.92;letter-spacing:-.035em;font-weight:600;text-transform:uppercase;margin:0 0 1.4rem;max-width:14ch}
.dcm-hero__line{display:block;position:relative}
.dcm-hero__line--2{color:transparent;-webkit-text-stroke:1.5px var(--dcm-white)}
.dcm-hero__sign{font-family:var(--dcm-font-display);font-size:clamp(1rem,1.8vw,1.45rem);letter-spacing:.04em;text-transform:uppercase;color:var(--dcm-accent);margin:0 0 1.2rem;max-width:34ch}
.dcm-hero__lead{max-width:52ch;color:var(--dcm-steel);font-size:clamp(1rem,1.3vw,1.15rem);margin-bottom:2rem}
.dcm-hero__cta{display:flex;flex-wrap:wrap;gap:14px}
.dcm-hero__foot{position:absolute;left:0;right:0;bottom:0;z-index:1;display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:28px;font-size:12px;color:var(--dcm-muted)}
.dcm-hero__scroll{display:inline-flex;align-items:center;gap:12px;text-decoration:none!important;font-family:var(--dcm-font-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--dcm-steel)}
.dcm-hero__scrollline{position:relative;width:1px;height:46px;background:var(--dcm-line-2);overflow:hidden}
.dcm-hero__scrollline::after{content:"";position:absolute;left:0;top:-50%;width:1px;height:50%;background:var(--dcm-accent);animation:dcm-scroll 2.4s var(--dcm-ease-io) infinite}
.dcm-hero__scrolltext{writing-mode:vertical-rl;transform:rotate(180deg)}

/* Styles de la structure (état final = état statique) */
.dcm-hero__svg text{font-family:var(--dcm-font-mono);font-size:12px;fill:var(--dcm-muted);letter-spacing:.08em}
.dcm-hero__svg .a-pt path{stroke:var(--dcm-steel);stroke-width:1;fill:none;opacity:.8}
.dcm-hero__svg .a-pt circle{fill:var(--dcm-black);stroke:var(--dcm-steel);stroke-width:1}
.dcm-hero__svg .a-axis path{stroke:rgba(181,190,197,.26);stroke-width:1}
.dcm-hero__svg .dcm-dash{stroke-dasharray:7 9}
.dcm-hero__svg .a-axis circle{fill:var(--dcm-black);stroke:rgba(181,190,197,.5);stroke-width:1}
.dcm-hero__svg .a-axis text{text-anchor:middle}
.dcm-hero__svg .a-line{fill:none;stroke:rgba(181,190,197,.62);stroke-width:1.2}
.dcm-hero__svg .a-line--base{stroke:var(--dcm-steel);stroke-width:2}
.dcm-hero__svg .a-beam{fill:rgba(181,190,197,.07);stroke:var(--dcm-white);stroke-width:1.4;stroke-linejoin:miter}
.dcm-hero__svg .a-depth{fill:none;stroke:rgba(181,190,197,.3);stroke-width:1}
.dcm-hero__svg .a-gusset rect{fill:rgba(230,126,50,.12);stroke:var(--dcm-accent);stroke-width:1.2}
.dcm-hero__svg .a-gusset circle{fill:var(--dcm-accent)}
.dcm-hero__svg .a-ground path{stroke:rgba(181,190,197,.32);stroke-width:1;fill:none}
.dcm-hero__svg .a-ground .a-groundline{stroke:var(--dcm-steel);stroke-width:1.5}
.dcm-hero__svg .a-sheen{opacity:0}
.dcm-hero__svg .a-dim path{stroke:rgba(181,190,197,.55);stroke-width:1;fill:none}
.dcm-hero__svg .a-dim text{fill:var(--dcm-steel);text-anchor:middle}
.dcm-hero__svg .a-dim .a-note{fill:var(--dcm-muted);text-anchor:start;font-size:10px}

/* Séquence animée : activée seulement quand JS a posé html.dcm-js (sinon version statique) */
@media (prefers-reduced-motion:no-preference){
	html.dcm-js .dcm-hero:not(.is-static) .a-pt>*{opacity:0;transform:scale(.2);transform-box:fill-box;transform-origin:center}
	html.dcm-js .dcm-hero:not(.is-static) .a-axis{opacity:0}
	html.dcm-js .dcm-hero:not(.is-static) .a-axis path{transform-box:fill-box;transform-origin:center}
	html.dcm-js .dcm-hero:not(.is-static) .a-axis--v path{transform:scaleY(0)}
	html.dcm-js .dcm-hero:not(.is-static) .a-axis--h path{transform:scaleX(0)}
	html.dcm-js .dcm-hero:not(.is-static) .a-line,
	html.dcm-js .dcm-hero:not(.is-static) .a-depth,
	html.dcm-js .dcm-hero:not(.is-static) .a-beam{stroke-dasharray:1;stroke-dashoffset:1}
	html.dcm-js .dcm-hero:not(.is-static) .a-beam{fill-opacity:0}
	html.dcm-js .dcm-hero:not(.is-static) .a-gusset>*{opacity:0;transform-box:fill-box;transform-origin:center;transform:scale(.3)}
	html.dcm-js .dcm-hero:not(.is-static) .a-ground,
	html.dcm-js .dcm-hero:not(.is-static) .a-dim{opacity:0}
	html.dcm-js .dcm-hero:not(.is-static) .dcm-hero__eyebrow,
	html.dcm-js .dcm-hero:not(.is-static) .dcm-hero__sign,
	html.dcm-js .dcm-hero:not(.is-static) .dcm-hero__lead,
	html.dcm-js .dcm-hero:not(.is-static) .dcm-hero__cta,
	html.dcm-js .dcm-hero:not(.is-static) .dcm-hero__foot{opacity:0;transform:translateY(16px)}
	html.dcm-js .dcm-hero:not(.is-static) .dcm-hero__line{clip-path:inset(0 100% 0 0)}
	html.dcm-js .dcm-hero:not(.is-static) .dcm-hero__grid{opacity:0}

	.dcm-hero.is-playing:not(.is-static) .dcm-hero__grid{animation:dcm-fade 1.6s var(--dcm-ease) both;--o:.55}
	.dcm-hero.is-playing .a-pt>*{animation:dcm-pop .55s var(--dcm-ease) calc(var(--d) / var(--dcm-speed)) both}
	.dcm-hero.is-playing .a-axis{animation:dcm-fade .6s ease calc(var(--d) / var(--dcm-speed)) both;--o:1}
	.dcm-hero.is-playing .a-axis path{animation:dcm-grow .9s var(--dcm-ease) calc(var(--d) / var(--dcm-speed)) both}
	.dcm-hero.is-playing .a-line,
	.dcm-hero.is-playing .a-depth{animation:dcm-draw .9s var(--dcm-ease-io) calc(var(--d) / var(--dcm-speed)) both}
	.dcm-hero.is-playing .a-beam{animation:dcm-draw 1.1s var(--dcm-ease-io) calc(var(--d) / var(--dcm-speed)) both,dcm-fillin .8s ease calc((var(--d) + 1s) / var(--dcm-speed)) both}
	.dcm-hero.is-playing .a-gusset>*{animation:dcm-pop .6s var(--dcm-ease) calc(var(--d) / var(--dcm-speed)) both}
	.dcm-hero.is-playing .a-ground,
	.dcm-hero.is-playing .a-dim{animation:dcm-fade 1s ease calc(var(--d) / var(--dcm-speed)) both;--o:1}
	.dcm-hero.is-playing .a-sheen{animation:dcm-sheen 1.8s var(--dcm-ease-io) calc(var(--d) / var(--dcm-speed)) both}
	.dcm-hero.is-playing .dcm-hero__eyebrow{animation:dcm-rise .8s var(--dcm-ease) var(--dcm-text-delay) both}
	.dcm-hero.is-playing .dcm-hero__line{animation:dcm-wipe 1s var(--dcm-ease-io) var(--dcm-text-delay) both}
	.dcm-hero.is-playing .dcm-hero__line--2{animation-delay:calc(var(--dcm-text-delay) + .14s)}
	.dcm-hero.is-playing .dcm-hero__sign{animation:dcm-rise .8s var(--dcm-ease) calc(var(--dcm-text-delay) + .5s) both}
	.dcm-hero.is-playing .dcm-hero__lead{animation:dcm-rise .8s var(--dcm-ease) calc(var(--dcm-text-delay) + .65s) both}
	.dcm-hero.is-playing .dcm-hero__cta{animation:dcm-rise .8s var(--dcm-ease) calc(var(--dcm-text-delay) + .8s) both}
	.dcm-hero.is-playing .dcm-hero__foot{animation:dcm-rise .8s var(--dcm-ease) calc(var(--dcm-text-delay) + 1.1s) both}
}
@keyframes dcm-pop{from{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}
@keyframes dcm-fade{from{opacity:0}to{opacity:var(--o,1)}}
@keyframes dcm-grow{from{transform:scale(0)}to{transform:scale(1)}}
@keyframes dcm-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes dcm-fillin{from{fill-opacity:0}to{fill-opacity:1}}
@keyframes dcm-sheen{0%{opacity:0;transform:translateX(0)}15%{opacity:.5}85%{opacity:.5}100%{opacity:0;transform:translateX(1700px)}}
@keyframes dcm-rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes dcm-wipe{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes dcm-scroll{0%{top:-50%}100%{top:100%}}

/* Mobile : composition dédiée (structure en en-tête, texte dessous) */
@media (max-width:900px){
	.dcm-hide-sm{display:none}
	.dcm-hero{justify-content:flex-end}
	.dcm-hero__svg{right:-14%;top:var(--dcm-nav-h);width:132vw;max-height:none;transform:none;opacity:.9}
	.dcm-hero--center .dcm-hero__svg{right:-16%;transform:none}
	.dcm-hero::after{background:linear-gradient(0deg,rgba(8,11,14,.98) 0%,rgba(8,11,14,.88) 48%,rgba(8,11,14,.05) 80%)}
	.dcm-hero__content{padding-top:calc(var(--dcm-nav-h) + 24vh);padding-bottom:84px}
	.dcm-hero__title{font-size:clamp(2.1rem,11.5vw,3.6rem);max-width:none}
	.dcm-hero__line--2{-webkit-text-stroke-width:1px}
	.dcm-hero__foot{padding-bottom:18px}
	.dcm-hero__scrolltext{writing-mode:horizontal-tb;transform:none}
	.dcm-hero__scrollline{display:none}
	.dcm-hero__cta .dcm-btn{flex:1 1 100%}
}

/* ------------------------------------------------------------ 5. Navigation */
.dcm-nav{--nav-bg:rgba(8,11,14,.82);--nav-link:var(--dcm-white);position:fixed;top:0;left:0;right:0;z-index:1000;transition:transform .5s var(--dcm-ease),background-color .4s ease,border-color .4s ease;border-bottom:1px solid transparent}
.admin-bar .dcm-nav{top:32px}
@media (max-width:782px){.admin-bar .dcm-nav{top:46px}}
.elementor-editor-active .dcm-nav{position:relative;top:0}
.dcm-nav__bar{display:flex;align-items:center;gap:clamp(16px,3vw,48px);height:var(--dcm-nav-h);padding-inline:var(--dcm-gutter);max-width:1800px;margin-inline:auto;transition:height .4s var(--dcm-ease)}
.dcm-nav.is-scrolled{background:var(--nav-bg);-webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2);border-bottom-color:var(--dcm-line)}
.dcm-nav.is-scrolled[data-compact] .dcm-nav__bar{height:64px}
.dcm-nav.is-hidden{transform:translateY(-100%)}
.dcm-logo-link{display:inline-flex;text-decoration:none!important;color:var(--dcm-white);margin-right:auto}
.dcm-logo{display:inline-flex;align-items:center;gap:12px}
.dcm-logo__mark{flex:none;color:var(--dcm-white);transition:transform .6s var(--dcm-ease)}
.dcm-logo-link:hover .dcm-logo__mark{transform:rotate(-6deg) scale(1.06)}
.dcm-logo__word{display:flex;flex-direction:column;line-height:1}
.dcm-logo__word b{font-family:var(--dcm-font-display);font-weight:600;font-size:18px;letter-spacing:.18em}
.dcm-logo__word i{font-family:var(--dcm-font-mono);font-style:normal;font-size:10px;letter-spacing:.34em;color:var(--dcm-steel);margin-top:5px}
.dcm-nav__primary .dcm-menu,.dcm-nav__primary .menu{display:flex;gap:clamp(18px,2.4vw,38px);list-style:none;margin:0;padding:0;counter-reset:dcmnav}
.dcm-nav__primary li{position:relative;counter-increment:dcmnav}
.dcm-nav__primary a{position:relative;display:inline-flex;align-items:baseline;gap:8px;padding:10px 0;font-family:var(--dcm-font-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;text-decoration:none!important;color:var(--nav-link)}
.dcm-nav__primary a::before{content:"0" counter(dcmnav);color:var(--dcm-muted);font-size:10px;transition:color .3s}
.dcm-nav__primary a::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:1px;background:var(--dcm-accent);transform:scaleX(0);transform-origin:right;transition:transform .45s var(--dcm-ease)}
.dcm-nav__primary a:hover::after,.dcm-nav__primary .current-menu-item>a::after,.dcm-nav__primary a[aria-current="page"]::after{transform:scaleX(1);transform-origin:left}
.dcm-nav__primary a:hover::before,.dcm-nav__primary .current-menu-item>a::before{color:var(--dcm-accent)}
.dcm-nav__primary .sub-menu{position:absolute;left:-16px;top:100%;min-width:220px;list-style:none;margin:0;padding:10px 16px;background:var(--dcm-graphite);border:1px solid var(--dcm-line);opacity:0;visibility:hidden;transform:translateY(6px);transition:all .3s var(--dcm-ease)}
.dcm-nav__primary li:hover>.sub-menu,.dcm-nav__primary li:focus-within>.sub-menu{opacity:1;visibility:visible;transform:none}
.dcm-nav__cta{padding:.7em 1.2em;min-height:42px;font-size:12px}
.dcm-nav__toggle{display:none;position:relative;width:48px;height:48px;background:transparent;border:1px solid var(--dcm-line-2);border-radius:0;color:var(--dcm-white);cursor:pointer;padding:0;-webkit-tap-highlight-color:transparent}
.dcm-nav__bars{position:absolute;left:50%;top:50%;width:20px;height:12px;transform:translate(-50%,-50%)}
.dcm-nav__bars i{position:absolute;left:0;right:0;height:1.5px;background:currentColor;transition:transform .45s var(--dcm-ease),top .45s var(--dcm-ease),opacity .2s}
.dcm-nav__bars i:nth-child(1){top:0}.dcm-nav__bars i:nth-child(2){top:5px;right:6px}.dcm-nav__bars i:nth-child(3){top:10px}
.dcm-nav__toggle[aria-expanded="true"] .dcm-nav__bars i:nth-child(1){top:5px;transform:rotate(45deg)}
.dcm-nav__toggle[aria-expanded="true"] .dcm-nav__bars i:nth-child(2){opacity:0}
.dcm-nav__toggle[aria-expanded="true"] .dcm-nav__bars i:nth-child(3){top:5px;transform:rotate(-45deg)}
.dcm-nav__panel{position:fixed;inset:0;z-index:-1;display:flex;align-items:flex-end;background:var(--dcm-black);opacity:0;clip-path:inset(0 0 100% 0);transition:clip-path .7s var(--dcm-ease-io),opacity .3s ease}
.dcm-nav__panel[hidden]{display:none}
.dcm-nav__panel.is-open{opacity:1;clip-path:inset(0 0 0 0)}
.dcm-nav__panelgrid{position:absolute;inset:0;background-image:linear-gradient(var(--dcm-line) 1px,transparent 1px),linear-gradient(90deg,var(--dcm-line) 1px,transparent 1px);background-size:64px 64px;-webkit-mask-image:linear-gradient(0deg,#000,transparent 85%);mask-image:linear-gradient(0deg,#000,transparent 85%)}
.dcm-nav__panelinner{position:relative;width:100%;padding:calc(var(--dcm-nav-h) + 24px) var(--dcm-gutter) 36px;max-height:100%;overflow:auto;overscroll-behavior:contain}
.dcm-menu--panel,.dcm-nav__mobile .menu{list-style:none;margin:18px 0 28px;padding:0;counter-reset:dcmm}
.dcm-nav__mobile li{counter-increment:dcmm;border-top:1px solid var(--dcm-line);overflow:hidden}
.dcm-nav__mobile li:last-child{border-bottom:1px solid var(--dcm-line)}
.dcm-nav__mobile a{display:flex;align-items:baseline;gap:16px;padding:14px 0;min-height:56px;font-family:var(--dcm-font-display);font-size:clamp(1.7rem,8vw,2.6rem);font-weight:500;text-transform:uppercase;letter-spacing:-.01em;text-decoration:none!important;color:var(--dcm-white)}
.dcm-nav__mobile a::before{content:"0" counter(dcmm);font-family:var(--dcm-font-mono);font-size:12px;letter-spacing:.1em;color:var(--dcm-accent)}
.dcm-nav__mobile li>*{transform:translateY(110%);transition:transform .7s var(--dcm-ease)}
.dcm-nav__panel.is-open .dcm-nav__mobile li>*{transform:none}
.dcm-nav__panel.is-open .dcm-nav__mobile li:nth-child(2)>*{transition-delay:.05s}
.dcm-nav__panel.is-open .dcm-nav__mobile li:nth-child(3)>*{transition-delay:.1s}
.dcm-nav__panel.is-open .dcm-nav__mobile li:nth-child(4)>*{transition-delay:.15s}
.dcm-nav__panel.is-open .dcm-nav__mobile li:nth-child(5)>*{transition-delay:.2s}
.dcm-nav__panel.is-open .dcm-nav__mobile li:nth-child(n+6)>*{transition-delay:.25s}
.dcm-nav__addr{margin:22px 0 0;font-size:12px;color:var(--dcm-muted)}
.dcm-nav__panel .dcm-btn{width:100%}
@media (max-width:1024px){
	.dcm-nav__primary,.dcm-nav__cta{display:none}
	.dcm-nav__toggle{display:block}
	.dcm-nav.is-open{background:transparent;border-bottom-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}
	.dcm-nav.is-open .dcm-nav__bar{position:relative;z-index:2}
}

/* ----------------------------------------------------- 6. Cartes d'ingénierie */
.dcm-cards,.dcm-grid{display:grid;gap:1px;list-style:none;margin:0;padding:0}
.dcm-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.dcm-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.dcm-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1100px){.dcm-cols-3,.dcm-cols-4{grid-template-columns:repeat(2,minmax(0,1fr))}.dcm-cols-t-1{grid-template-columns:1fr}}
@media (max-width:700px){.dcm-cols-2,.dcm-cols-3,.dcm-cols-4{grid-template-columns:1fr}}
.dcm-cards{background:var(--dcm-line);border:1px solid var(--dcm-line)}
.dcm-card{--mx:50%;--my:50%;--tx:0px;--ty:0px;position:relative;display:flex;flex-direction:column;gap:14px;min-height:330px;padding:clamp(24px,2.6vw,38px);background:var(--dcm-graphite);overflow:hidden;transform:translate(var(--tx),var(--ty));transition:transform .5s var(--dcm-ease),background-color .4s}
.dcm-card::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;background:radial-gradient(420px circle at var(--mx) var(--my),rgba(230,126,50,.10),transparent 60%),radial-gradient(260px circle at var(--mx) var(--my),rgba(231,233,232,.07),transparent 70%);transition:opacity .4s}
.dcm-card:hover::before,.dcm-card:focus-within::before{opacity:1}
.dcm-card__frame{position:absolute;inset:10px;pointer-events:none;--c:var(--dcm-accent);background:
	linear-gradient(var(--c),var(--c)) top left/var(--s,0) 1px no-repeat,linear-gradient(var(--c),var(--c)) top left/1px var(--s,0) no-repeat,
	linear-gradient(var(--c),var(--c)) top right/var(--s,0) 1px no-repeat,linear-gradient(var(--c),var(--c)) top right/1px var(--s,0) no-repeat,
	linear-gradient(var(--c),var(--c)) bottom left/var(--s,0) 1px no-repeat,linear-gradient(var(--c),var(--c)) bottom left/1px var(--s,0) no-repeat,
	linear-gradient(var(--c),var(--c)) bottom right/var(--s,0) 1px no-repeat,linear-gradient(var(--c),var(--c)) bottom right/1px var(--s,0) no-repeat;transition:--s .5s var(--dcm-ease)}
@property --s{syntax:"<length>";inherits:true;initial-value:0px}
.dcm-card:hover .dcm-card__frame,.dcm-card:focus-within .dcm-card__frame{--s:22px}
.dcm-card__num{position:absolute;right:22px;top:20px;font-size:12px;color:var(--dcm-muted);transition:color .3s,transform .5s var(--dcm-ease)}
.dcm-card:hover .dcm-card__num{color:var(--dcm-accent);transform:translateY(-2px)}
.dcm-card__icon{color:var(--dcm-steel);margin-bottom:auto;transition:color .4s,transform .6s var(--dcm-ease)}
.dcm-card:hover .dcm-card__icon{color:var(--dcm-white);transform:translateY(-3px)}
.dcm-icon path,.dcm-icon circle{vector-effect:non-scaling-stroke}
.dcm-card__title{font-size:clamp(1.2rem,1.8vw,1.55rem);margin:14px 0 0}
.dcm-card__text{color:var(--dcm-steel);font-size:15px;margin:0}
.dcm-card__tags{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:6px 0 0;padding:0}
.dcm-card__tags li{font-family:var(--dcm-font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--dcm-muted);border:1px solid var(--dcm-line);padding:3px 8px}
.dcm-card__more{align-self:flex-start;margin-top:8px;font-family:var(--dcm-font-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;text-decoration:none!important;color:var(--dcm-white);border-bottom:1px solid var(--dcm-accent);padding-bottom:3px}
.dcm-cards[data-magnet="off"] .dcm-card::before,.dcm-cards[data-magnet="off"] .dcm-card__frame{display:none}

/* ------------------------------------------- 7. Titres · Timeline · CTA final */
.dcm-th{max-width:62rem}
.dcm-th--center{margin-inline:auto;text-align:center}
.dcm-th--center .dcm-th__meta{justify-content:center}
.dcm-th__meta{display:flex;align-items:center;gap:14px;margin-bottom:1.4rem}
.dcm-th__num{font-size:13px;color:var(--dcm-accent)}
.dcm-th__rule{display:block;width:56px;height:1px;background:var(--dcm-line-2)}
.dcm-th__title{font-size:clamp(2rem,4.6vw,4rem);text-transform:uppercase;letter-spacing:-.025em;margin:0}
.dcm-th__sub{margin:1.2rem 0 0;max-width:56ch;color:var(--dcm-steel)}
.dcm-th--center .dcm-th__sub{margin-inline:auto}

.dcm-tl{--tl-line:var(--dcm-line-2);--tl-progress:var(--dcm-accent);--p:0;position:relative}
.dcm-tl__list{display:grid;grid-template-columns:repeat(var(--tl-count),minmax(0,1fr));gap:clamp(16px,2vw,32px);list-style:none;margin:0;padding:0}
.dcm-tl__track{position:absolute;left:0;right:0;top:19px;height:1px;background:var(--tl-line)}
.dcm-tl__progress{display:block;height:100%;background:var(--tl-progress);transform:scaleX(var(--p))}
.dcm-tl__step{position:relative;padding-top:56px}
.dcm-tl__node{position:absolute;top:0;left:0;display:grid;place-items:center;width:40px;height:40px;font-size:12px;color:var(--dcm-muted);background:var(--dcm-black);border:1px solid var(--tl-line);transition:color .4s,border-color .4s,background-color .4s}
.dcm-tl__step.is-on .dcm-tl__node{color:var(--dcm-black);background:var(--dcm-accent);border-color:var(--dcm-accent)}
.dcm-tl__title{font-size:clamp(1.15rem,1.7vw,1.5rem);text-transform:uppercase;margin:0 0 .5em}
.dcm-tl__text{color:var(--dcm-steel);font-size:15px;margin:0}
.dcm-tl--vertical .dcm-tl__list{grid-template-columns:1fr;gap:36px}
.dcm-tl--vertical .dcm-tl__track{left:19px;right:auto;top:0;bottom:0;width:1px;height:auto}
.dcm-tl--vertical .dcm-tl__progress{width:100%;height:100%;transform:scaleY(var(--p));transform-origin:top}
.dcm-tl--vertical .dcm-tl__step{padding:0 0 0 68px}
@media (max-width:900px){
	.dcm-tl__list{grid-template-columns:1fr;gap:34px}
	.dcm-tl__track{left:19px;right:auto;top:0;bottom:0;width:1px;height:auto}
	.dcm-tl__progress{width:100%;height:100%;transform:scaleY(var(--p));transform-origin:top}
	.dcm-tl__step{padding:0 0 0 68px}
}

.dcm-cta{position:relative;overflow:hidden;padding:clamp(72px,12vw,160px) 0;background:var(--dcm-graphite);isolation:isolate}
.dcm-cta__draw{position:absolute;inset:0;width:100%;height:100%;z-index:-1;color:rgba(181,190,197,.22)}
.dcm-cta__draw path{stroke-dasharray:1;stroke-dashoffset:0}
.dcm-cta__inner{position:relative}
.dcm-cta__title{font-size:clamp(2.2rem,6.6vw,6rem);text-transform:uppercase;letter-spacing:-.035em;line-height:.95;margin:1rem 0 1.4rem;max-width:16ch}
.dcm-cta__text{color:var(--dcm-steel);max-width:46ch;margin-bottom:2rem}

/* ---------------------------------------------------------------- 8. Projets */
.dcm-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}
.dcm-filters[hidden]{display:none}
.dcm-filter{min-height:44px;padding:.55em 1.1em;background:transparent;color:var(--dcm-steel);border:1px solid var(--dcm-line);border-radius:0;font-family:var(--dcm-font-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:all .3s var(--dcm-ease);-webkit-tap-highlight-color:transparent}
.dcm-filter:hover{color:var(--dcm-white);border-color:var(--dcm-line-2)}
.dcm-filter[aria-pressed="true"]{color:var(--dcm-black);background:var(--dcm-white);border-color:var(--dcm-white)}
.dcm-grid{gap:clamp(16px,2vw,28px)}
.dcm-pcard[hidden]{display:none}
.dcm-pcard__link{display:flex;flex-direction:column;height:100%;text-decoration:none!important;color:inherit}
.dcm-pcard__media{position:relative;display:block;aspect-ratio:4/3;overflow:hidden;background:var(--dcm-graphite);border:1px solid var(--dcm-line)}
.dcm-pcard__media img{width:100%;height:100%;object-fit:cover;transition:transform .9s var(--dcm-ease),filter .5s;filter:grayscale(.25) contrast(1.05)}
.dcm-pcard__media::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(8,11,14,.6),transparent 45%);pointer-events:none}
.dcm-pcard__ph{position:absolute;inset:18%;width:64%;height:64%;color:var(--dcm-steel-d)}
.dcm-pcard__idx{position:absolute;left:14px;top:12px;z-index:1;font-family:var(--dcm-font-mono);font-size:12px;color:var(--dcm-steel)}
.dcm-pcard__link:hover img{transform:scale(1.05);filter:none}
.dcm-pcard__body{display:flex;flex-direction:column;gap:6px;padding:16px 2px 0}
.dcm-pcard__title{font-family:var(--dcm-font-display);font-size:1.3rem;font-weight:500;line-height:1.15;background:linear-gradient(var(--dcm-accent),var(--dcm-accent)) 0 100%/0 1px no-repeat;transition:background-size .5s var(--dcm-ease);align-self:flex-start}
.dcm-pcard__link:hover .dcm-pcard__title,.dcm-pcard__link:focus-visible .dcm-pcard__title{background-size:100% 1px}
.dcm-pcard__meta{font-family:var(--dcm-font-mono);font-size:12px;color:var(--dcm-muted);letter-spacing:.06em}
.dcm-pg__foot{display:flex;justify-content:center;margin-top:36px}
.dcm-pg__all{text-align:center;margin-top:40px}
.dcm-pg__empty{text-align:center;color:var(--dcm-muted);padding:40px 0}
.dcm-empty{display:grid;justify-items:center;text-align:center;gap:6px;padding:clamp(40px,7vw,90px) 20px;border:1px dashed var(--dcm-line-2);background:var(--dcm-graphite);color:var(--dcm-steel)}
.dcm-empty svg{width:min(240px,60%);height:auto;color:var(--dcm-steel-d);margin-bottom:12px}
.dcm-empty h3{font-size:1.5rem;margin:0}
.dcm-empty p{max-width:44ch;margin:0}
.dcm-pd{display:grid;gap:clamp(40px,6vw,88px)}
.dcm-pd__h{font-size:12px;font-family:var(--dcm-font-mono)!important;font-weight:400!important;letter-spacing:.18em;text-transform:uppercase;color:var(--dcm-accent)!important;margin:0 0 1.2rem}
.dcm-pd__facts dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:0;border:1px solid var(--dcm-line);margin:0 0 28px}
.dcm-pd__facts dl>div{padding:18px 20px;border-right:1px solid var(--dcm-line);border-bottom:1px solid var(--dcm-line);margin:-1px -1px 0 0}
.dcm-pd dt{font-family:var(--dcm-font-mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--dcm-muted)}
.dcm-pd dd{margin:4px 0 0;font-family:var(--dcm-font-display);font-size:1.1rem}
.dcm-pd__specs{margin:0;padding:0;list-style:none;display:grid;gap:8px}
.dcm-pd__specs li{position:relative;padding-left:26px;color:var(--dcm-steel)}
.dcm-pd__specs li::before{content:"";position:absolute;left:0;top:.8em;width:14px;height:1px;background:var(--dcm-accent)}
.dcm-pd__gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:clamp(12px,1.6vw,22px)}
.dcm-pd__gallery figure{margin:0;overflow:hidden;border:1px solid var(--dcm-line)}
.dcm-pd__gallery img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .8s var(--dcm-ease)}
.dcm-pd__gallery a:hover img{transform:scale(1.04)}
.dcm-pd__docs ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.dcm-pd__docs li{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid var(--dcm-line)}
.dcm-pd__docs li span{font-family:var(--dcm-font-mono);font-size:12px;color:var(--dcm-muted)}
.dcm-pagehead{padding:calc(var(--dcm-nav-h) + clamp(48px,9vw,120px)) 0 clamp(40px,6vw,80px)}

/* ------------------------------------------------------------ 9. Comparateur */
.dcm-bp{--bp-handle:var(--dcm-accent);--pos:50%;--ratio:16/10}
.dcm-bp__stage{position:relative;aspect-ratio:var(--ratio);overflow:hidden;background:var(--dcm-graphite);border:1px solid var(--dcm-line);touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:ew-resize}
.dcm-bp__layer{position:absolute;inset:0;margin:0}
.dcm-bp__layer .dcm-bp__img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.dcm-bp__before{clip-path:inset(0 calc(100% - var(--pos)) 0 0);background:var(--dcm-black)}
.dcm-bp__before .dcm-bp__img{filter:invert(.92) hue-rotate(180deg) contrast(1.1)}
.dcm-bp__missing{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:10px;text-align:center;padding:20px;color:var(--dcm-muted);font-family:var(--dcm-font-mono);font-size:12px;letter-spacing:.08em;background:var(--dcm-graphite);background-image:linear-gradient(var(--dcm-line) 1px,transparent 1px),linear-gradient(90deg,var(--dcm-line) 1px,transparent 1px);background-size:32px 32px}
.dcm-bp__missing svg{width:min(160px,40%);height:auto;color:var(--dcm-steel-d)}
.dcm-bp__tag{position:absolute;top:14px;z-index:2;padding:4px 10px;font-family:var(--dcm-font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;background:rgba(8,11,14,.78);color:var(--dcm-white);border:1px solid var(--dcm-line-2);pointer-events:none}
.dcm-bp__tag--a{left:14px}.dcm-bp__tag--b{right:14px}
.dcm-bp__handle{position:absolute;top:0;bottom:0;left:var(--pos);width:2px;margin-left:-1px;background:var(--bp-handle);z-index:3;pointer-events:none}
.dcm-bp__handle span{position:absolute;top:50%;left:50%;width:46px;height:46px;transform:translate(-50%,-50%);display:grid;place-items:center;background:var(--dcm-black);border:1px solid var(--bp-handle);transition:transform .3s var(--dcm-ease)}
.dcm-bp__handle span::before,.dcm-bp__handle span::after{content:"";position:absolute;top:50%;width:7px;height:7px;border-top:1.5px solid var(--dcm-white);border-left:1.5px solid var(--dcm-white)}
.dcm-bp__handle span::before{left:11px;transform:translateY(-50%) rotate(-45deg)}
.dcm-bp__handle span::after{right:11px;transform:translateY(-50%) rotate(135deg)}
.dcm-bp.is-drag .dcm-bp__handle span{transform:translate(-50%,-50%) scale(1.1)}
.dcm-bp__range{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;pointer-events:none}
.dcm-bp__stage:has(.dcm-bp__range:focus-visible){outline:2px solid var(--dcm-accent);outline-offset:3px}

/* -------------------------------------------------------------- 10. Formulaire */
.dcm-form{display:grid;gap:22px;max-width:860px}
.dcm-form__intro{color:var(--dcm-steel);margin:0}
.dcm-form__hint{font-family:var(--dcm-font-mono);font-size:12px;color:var(--dcm-muted);margin:0}
.dcm-form,.dcm-form *,.dcm-form *::before,.dcm-form *::after{box-sizing:border-box}
.dcm-form{width:100%;min-width:0}
.dcm-form__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;align-items:start}
@media (max-width:640px){.dcm-form__grid{grid-template-columns:1fr}}
.dcm-field{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;position:relative;min-width:0;align-content:start}
.dcm-field label{display:block;min-height:1.5em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--dcm-font-mono);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--dcm-steel)}
.dcm-field label::before{content:"";display:inline-block;width:7px;height:7px;margin-right:9px;border:1px solid var(--dcm-accent);transform:rotate(45deg) scale(.8);transition:background-color .3s,transform .5s var(--dcm-ease)}
.dcm-field:focus-within label::before{background:var(--dcm-accent);transform:rotate(225deg) scale(1)}
.dcm-field--check label::before{display:none}
.dcm-opt{color:var(--dcm-muted);text-transform:none;letter-spacing:.02em}
.dcm-field input:not([type=checkbox]):not([type=file]),.dcm-field select,.dcm-field textarea,.dcm-field input[type=file]{width:100%;min-height:52px;padding:.8em 1em;font:inherit;font-size:16px;color:var(--dcm-white);background:var(--dcm-graphite);border:1px solid var(--dcm-line-2);border-radius:0;transition:border-color .3s,background-color .3s;box-shadow:none}
.dcm-field textarea{min-height:160px;resize:vertical}
.dcm-field input:hover,.dcm-field select:hover,.dcm-field textarea:hover{border-color:var(--dcm-steel)}
.dcm-field input:focus,.dcm-field select:focus,.dcm-field textarea:focus{outline:2px solid var(--dcm-accent);outline-offset:2px;border-color:var(--dcm-accent);background:#0d141a;box-shadow:inset 0 -3px 0 var(--dcm-accent)}
.dcm-field input[type=file]{padding:.6em .8em}
.dcm-field input[type=file]::file-selector-button{margin-right:14px;padding:.55em 1em;font:inherit;font-family:var(--dcm-font-mono);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--dcm-white);background:transparent;border:1px solid var(--dcm-line-2);border-radius:0;cursor:pointer}
.dcm-field select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--dcm-steel) 50%),linear-gradient(135deg,var(--dcm-steel) 50%,transparent 50%);background-position:calc(100% - 20px) 55%,calc(100% - 14px) 55%;background-size:6px 6px;background-repeat:no-repeat;padding-right:2.4em}
.dcm-field input[aria-invalid="true"],.dcm-field select[aria-invalid="true"],.dcm-field textarea[aria-invalid="true"]{border-color:#ff8a65;border-left-width:4px}
.dcm-err{margin:0;font-size:14px;color:#ffab91}
.dcm-err::before{content:"⚠ "}
.dcm-help{margin:0;font-size:13px;color:var(--dcm-muted)}
.dcm-field--check{grid-template-columns:auto 1fr;align-items:start;gap:12px}
.dcm-field--check input{width:24px;height:24px;margin:2px 0 0;accent-color:var(--dcm-accent)}
.dcm-field--check label{font-family:var(--dcm-font-body);font-size:15px;letter-spacing:0;text-transform:none;color:var(--dcm-steel)}
.dcm-field--check .dcm-err{grid-column:1/-1}
.dcm-hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.dcm-form__foot{display:flex;flex-wrap:wrap;align-items:center;gap:16px}
.dcm-form__status{margin:0;font-size:15px;min-height:1.5em}
.dcm-form__status.is-ok{color:#9ad7a6}
.dcm-form__status.is-ok::before{content:"✔ "}
.dcm-form__status.is-error{color:#ffab91}
.dcm-form__status.is-error::before{content:"⚠ "}
.dcm-form.is-sending .dcm-btn{pointer-events:none;opacity:.7}
.dcm-form__noscript{color:#ffab91}
.dcm-info{display:grid;gap:22px}
.dcm-info__title{font-size:1.5rem;margin:0}
.dcm-info__list{display:grid;gap:18px;margin:0}
.dcm-info__list>div{display:grid;gap:4px;padding-bottom:18px;border-bottom:1px solid var(--dcm-line)}
.dcm-info dt{font-family:var(--dcm-font-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--dcm-muted)}
.dcm-info dd{margin:0}
.dcm-info address{font-style:normal}
.dcm-info__actions{display:flex;flex-wrap:wrap;gap:10px;margin:0}
.dcm-map{border:1px solid var(--dcm-line);padding:20px;background:var(--dcm-graphite)}
.dcm-map p{font-size:14px;color:var(--dcm-steel)}
.dcm-map iframe{display:block;width:100%;height:340px;border:0;filter:grayscale(1) invert(.92) contrast(.9)}
.dcm-map.is-loaded{padding:0}

/* ----------------------------------------------------- 11. Footer & signature */
.dcm-footer{position:relative;background:var(--dcm-black);border-top:1px solid var(--dcm-line);overflow:hidden}
.dcm-footer a{text-decoration:none}
.dcm-footer a:hover{color:var(--dcm-accent)}
.dcm-footer__big{font-family:var(--dcm-font-display);font-weight:600;font-size:clamp(2.2rem,10vw,9rem);line-height:.9;letter-spacing:-.04em;text-transform:uppercase;color:transparent;-webkit-text-stroke:1px var(--dcm-line-2);margin:0}
.dcm-footer__label{font-family:var(--dcm-font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--dcm-muted);margin:0 0 14px}
.dcm-footer .dcm-footnav ul{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.dcm-footer .dcm-footnav a{font-size:15px;color:var(--dcm-steel)}
.dcm-footer p{color:var(--dcm-steel);font-size:15px}
.dcm-credit{margin:0!important;font-family:var(--dcm-font-mono);font-size:12px!important;letter-spacing:.04em}
.dcm-credit a{display:inline-flex;align-items:center;gap:10px;color:var(--dcm-muted)!important}
.dcm-credit__dot{width:7px;height:7px;background:var(--dcm-muted);transform:rotate(45deg);transition:background-color .4s,transform .6s var(--dcm-ease)}
.dcm-credit a:hover{color:var(--dcm-white)!important}
.dcm-credit a:hover .dcm-credit__dot{background:var(--dcm-accent);transform:rotate(225deg) scale(1.3)}
.dcm-prose{max-width:72ch}
.dcm-prose h2{font-size:1.6rem;margin:2.2em 0 .6em}
.dcm-prose h3{font-size:1.2rem;margin:1.6em 0 .5em}
.dcm-prose p,.dcm-prose li{color:var(--dcm-steel)}
.dcm-prose .dcm-todo{display:inline-block;padding:0 6px;background:rgba(230,126,50,.14);border:1px dashed var(--dcm-accent);color:var(--dcm-white);font-family:var(--dcm-font-mono);font-size:.85em}

/* ---------------------------------------------------- Révélation au défilement */
@media (prefers-reduced-motion:no-preference){
	html.dcm-js [data-dcm="reveal"]:not([data-dcm-reveal="off"]){opacity:0;transform:translateY(26px);transition:opacity .9s var(--dcm-ease),transform .9s var(--dcm-ease)}
	html.dcm-js [data-dcm="reveal"].is-in{opacity:1;transform:none}
	html.dcm-js .dcm-th:not([data-dcm-reveal="off"]) .dcm-th__rule{transform:scaleX(0);transition:transform 1s var(--dcm-ease-io) .15s}
	html.dcm-js .dcm-th.is-in .dcm-th__rule{transform:scaleX(1)}
	html.dcm-js [data-dcm="cards"]:not([data-dcm-reveal="off"]) .dcm-card{opacity:0;transform:translateY(24px)}
	html.dcm-js [data-dcm="cards"].is-in .dcm-card{opacity:1;transform:translate(var(--tx),var(--ty));transition:opacity .8s var(--dcm-ease) calc(var(--i,0) * 80ms),transform .8s var(--dcm-ease) calc(var(--i,0) * 80ms),background-color .4s}
	html.dcm-js [data-dcm="timeline"]:not([data-dcm-reveal="off"]) .dcm-tl__step{opacity:.35;transition:opacity .6s}
	html.dcm-js [data-dcm="timeline"] .dcm-tl__step.is-on{opacity:1}
	html.dcm-js .dcm-cta:not([data-dcm-reveal="off"]) .dcm-cta__draw path{stroke-dashoffset:1;transition:stroke-dashoffset 2.2s var(--dcm-ease-io)}
	html.dcm-js .dcm-cta.is-in .dcm-cta__draw path{stroke-dashoffset:0}
	html.dcm-js .dcm-cta.is-in{opacity:1}
}

/* ------------------------------------------------------- 12. Curseur technique */
.dcm-cursor{position:fixed;left:0;top:0;z-index:3000;width:0;height:0;pointer-events:none;opacity:0;transition:opacity .3s}
.dcm-cursor.is-on{opacity:1}
.dcm-cursor__ring{position:absolute;left:-14px;top:-14px;width:28px;height:28px;border:1px solid var(--dcm-steel);border-radius:50%;transition:transform .35s var(--dcm-ease),border-color .3s,background-color .3s}
.dcm-cursor__x,.dcm-cursor__y{position:absolute;background:var(--dcm-white);opacity:.9}
.dcm-cursor__x{left:-5px;top:0;width:10px;height:1px}
.dcm-cursor__y{left:0;top:-5px;width:1px;height:10px}
.dcm-cursor__tip{position:absolute;left:22px;top:14px;white-space:nowrap;font-family:var(--dcm-font-mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--dcm-accent);opacity:0;transition:opacity .25s}
.dcm-cursor.is-link .dcm-cursor__ring{transform:scale(1.9);border-color:var(--dcm-accent);background:rgba(230,126,50,.08)}
.dcm-cursor.is-link .dcm-cursor__tip{opacity:1}
.dcm-cursor.is-down .dcm-cursor__ring{transform:scale(.7)}
.dcm-cursor.is-drag .dcm-cursor__ring{transform:scale(2.2);border-style:dashed}

/* ------------------------------------------- Signature CODEINE (folie maîtrisée) */
.dcm-hero{--hx:50%;--hy:50%;--px:0;--py:0}
.dcm-hero__svg{translate:calc(var(--px) * -16px) calc(var(--py) * -10px);transition:translate .7s var(--dcm-ease)}
.dcm-hero__line--2{translate:calc(var(--px) * 10px) 0;transition:translate .7s var(--dcm-ease)}
.dcm-hero__lit{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .6s ease;
	background-image:linear-gradient(rgba(230,126,50,.55) 1px,transparent 1px),linear-gradient(90deg,rgba(230,126,50,.55) 1px,transparent 1px);background-size:96px 96px;
	-webkit-mask-image:radial-gradient(230px circle at var(--hx) var(--hy),#000,transparent 72%);mask-image:radial-gradient(230px circle at var(--hx) var(--hy),#000,transparent 72%)}
.dcm-hero__lit::after{content:"";position:absolute;inset:0;background:radial-gradient(340px circle at var(--hx) var(--hy),rgba(231,233,232,.07),transparent 70%)}
.dcm-hero.is-lit .dcm-hero__lit{opacity:1}

.dcm-cursor__hx,.dcm-cursor__hy{position:absolute;background:var(--dcm-steel);opacity:0;transition:opacity .35s}
.dcm-cursor__hx{left:-100vw;top:0;width:200vw;height:1px}
.dcm-cursor__hy{top:-100vh;left:0;width:1px;height:200vh}
.dcm-cursor.is-cad .dcm-cursor__hx,.dcm-cursor.is-cad .dcm-cursor__hy{opacity:.13}
.dcm-cursor.is-cad .dcm-cursor__tip{color:var(--dcm-steel)}

.dcm-spark{position:fixed;z-index:3100;width:12px;height:2px;margin:-1px 0 0 -6px;background:var(--dcm-accent);pointer-events:none;transform-origin:0 50%;box-shadow:0 0 6px var(--dcm-accent)}

.dcm-rule{position:fixed;right:22px;top:50%;z-index:900;width:40px;height:38vh;transform:translateY(-50%);opacity:0;pointer-events:none;transition:opacity .5s}
.dcm-rule.is-on{opacity:1}
.dcm-rule__line{position:absolute;right:0;top:0;bottom:0;width:9px;border-right:1px solid var(--dcm-line-2);background:repeating-linear-gradient(180deg,var(--dcm-line-2) 0 1px,transparent 1px 12px) right/5px 100% no-repeat,repeating-linear-gradient(180deg,var(--dcm-steel) 0 1px,transparent 1px 60px) right/9px 100% no-repeat}
.dcm-rule__mark{position:absolute;right:0;width:40px;height:1px;background:var(--dcm-accent);transform:translateY(-.5px)}
.dcm-rule__mark b{position:absolute;right:12px;top:-18px;font:400 10px/1 var(--dcm-font-mono);letter-spacing:.12em;color:var(--dcm-accent)}
@media (max-width:1100px){.dcm-rule{display:none}}

.dcm-form{position:relative}
.dcm-stamp{position:absolute;right:4%;bottom:8%;display:grid;place-items:center;width:150px;height:150px;pointer-events:none;color:var(--dcm-accent);transform:rotate(-12deg);animation:dcm-stamp .7s var(--dcm-ease) both,dcm-fade 1s 8s reverse forwards}
.dcm-stamp svg{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:2}
.dcm-stamp svg path{stroke-width:5;stroke-dasharray:1;stroke-dashoffset:1;animation:dcm-draw .6s .45s var(--dcm-ease-io) forwards}
.dcm-stamp svg path{stroke-dasharray:140;stroke-dashoffset:140;animation-name:dcm-draw140}
.dcm-stamp span{position:absolute;bottom:26px;font:400 13px var(--dcm-font-mono);letter-spacing:.3em;padding-left:.3em}
@keyframes dcm-stamp{from{opacity:0;transform:rotate(-12deg) scale(2.4)}to{opacity:1;transform:rotate(-12deg) scale(1)}}
@keyframes dcm-draw140{to{stroke-dashoffset:0}}

/* ------------------------------------------------ 13. Mouvement réduit & impression */
@media (prefers-reduced-motion:reduce){
	.dcm-site *,.dcm-site *::before,.dcm-site *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
	.dcm-hero__scrollline::after{animation:none}
	.dcm-cursor,.dcm-rule,.dcm-spark,.dcm-hero__lit{display:none}
	.dcm-hero__svg,.dcm-hero__line--2{translate:none}
}
@media (hover:none),(pointer:coarse){.dcm-cursor{display:none}}
@media print{.dcm-nav,.dcm-hero__grid,.dcm-cursor{display:none}.dcm-site{background:#fff;color:#000}}
