*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--font-body),sans-serif;background:var(--s);color:var(--p);overflow-x:hidden;margin:0}
h1,h2,h3,.fd{font-family:var(--font-heading),sans-serif;letter-spacing:.01em}

/* Reveal */
.rv{opacity:0;transform:translateY(22px);transition:opacity .65s cubic-bezier(.16,1,.3,1),transform .65s cubic-bezier(.16,1,.3,1)}
.rv.s1{transition-delay:.12s}.rv.s2{transition-delay:.24s}.rv.s3{transition-delay:.36s}
.rv.on{opacity:1;transform:none}

/* Slide from left */
.rvl{opacity:0;transform:translateX(-30px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}
.rvl.on{opacity:1;transform:none}

/* Primary CTA — red sweep */
.btn-r{position:relative;overflow:hidden;background:var(--a);transition:transform .2s,box-shadow .2s;display:inline-flex;align-items:center;justify-content:center}
.btn-r::before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.25),transparent);transform:translateX(-120%);transition:transform .5s}
.btn-r:hover::before{transform:translateX(120%)}
.btn-r:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(var(--a-rgb),.45)}

/* Dark outlined button */
.btn-dk{background:transparent;border:2px solid var(--p);color:var(--p);transition:background .2s,color .2s;display:inline-flex;align-items:center;justify-content:center}
.btn-dk:hover{background:var(--p);color:var(--s)}

/* Card hover — editorial shadow */
.ch{transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s}
.ch:hover{transform:translateY(-4px);box-shadow:0 20px 40px rgba(var(--p-rgb),.12)}

/* Animated underline */
.al{position:relative}
.al::after{content:'';position:absolute;bottom:-2px;left:0;width:0;height:1.5px;background:var(--a);transition:width .3s}
.al:hover::after{width:100%}

/* Oversized background number — section marker */
.bg-num{font-family:var(--font-heading),sans-serif;font-size:clamp(120px,18vw,220px);font-weight:700;line-height:1;color:var(--p);opacity:.04;position:absolute;top:-20px;right:-10px;pointer-events:none;user-select:none}

/* Service row number */
.srv-n{font-family:var(--font-heading),sans-serif;font-size:clamp(44px,7vw,80px);font-weight:700;line-height:1;color:var(--a);opacity:.55;flex-shrink:0;width:80px;text-align:right}

/* Stat counter */
.stat-v{font-family:var(--font-heading),sans-serif;font-size:clamp(44px,6vw,72px);font-weight:700;line-height:1;color:var(--a)}

/* URGENCE stamp — rotated badge */
.urgence-stamp{display:inline-flex;align-items:center;justify-content:center;border:3px solid var(--a);transform:rotate(-2deg);padding:4px 14px}

/* Hero pattern — thin diagonal lines */
.hero-lines{background-image:repeating-linear-gradient(135deg,rgba(var(--p-rgb),.04) 0px,rgba(var(--p-rgb),.04) 1px,transparent 1px,transparent 14px)}

/* Section rule */
.s-rule{border:none;border-top:1.5px solid rgba(var(--p-rgb),.12);margin:0}

/* Quote mark serif */
.qmark{font-size:72px;line-height:1;color:var(--a);display:block;margin-bottom:-14px;font-family:Georgia,serif}

/* Red tag */
.rtag{display:inline-block;padding:3px 8px;font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;background:var(--a);color:#fff}

/* Force white text on dark primary-color backgrounds — prevents color:var(--p) inheritance */
[style*="background:var(--p)"]{color:#fff}

/* Navbar */
#nav{transition:background .3s,box-shadow .3s;background:var(--s)}
#nav.sc{box-shadow:0 1px 20px rgba(var(--p-rgb),.1)}
#nav.dk{background:var(--p)!important;box-shadow:0 2px 20px rgba(0,0,0,.3)}
#nav.dk .nl{color:rgba(255,255,255,.7)!important}
#nav.dk .nl:hover{color:#fff!important}
#nav.dk .nlogo{color:#fff!important}

/* Mobile menu */
#mmenu{transform:translateX(100%);opacity:0;pointer-events:none;transition:transform .35s cubic-bezier(.16,1,.3,1),opacity .3s}
#mmenu.op{transform:translateX(0);opacity:1;pointer-events:all}

input:focus,select:focus,textarea:focus{outline:2px solid var(--a);outline-offset:1px}
