/* ============================================================
   IMS SAFETY CONSULTING — Design system
   Aligné sur la Charte Graphique officielle v1.0 · 2026
   Bleu IMS #1B2A6B · Rouge Flamme #C0181A · Vert #1B6B45
   Montserrat · Source Sans 3 · Courier New
   ============================================================ */

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

:root{
  /* — bleu IMS (couleur principale) — */
  --ink:#15204A;          /* navy profond — grands fonds sombres */
  --navy:#1B2A6B;         /* Bleu IMS officiel */
  --navy-2:#1B2A6B;       /* titres, noms de marque */
  --navy-soft:#2A3D8F;    /* fin de dégradé hero */
  --navy-line:rgba(255,255,255,.12);
  --navy-line-2:rgba(255,255,255,.20);

  /* — rouge flamme (accent / urgence) — */
  --signal:#C0181A;
  --signal-deep:#9E1417;
  --signal-tint:#FDF0F0;
  --signal-glow:rgba(192,24,26,.30);

  /* — fonds (charte) — */
  --paper:#F7F8FA;        /* Gris fond — background général */
  --paper-2:#EAF0F7;      /* Bleu clair — fond informatif */
  --paper-3:#E1E9F4;
  --card:#FFFFFF;
  --line:#E5E7EB;         /* bordure cartes */
  --line-soft:#EEF1F6;

  /* — texte — */
  --text:#374151;         /* corps de texte (charte) */
  --muted:#6B7280;        /* texte secondaire (charte) */
  --muted-2:#9097A6;

  /* — sémantique (échelle de risque) — */
  --safe:#1B6B45;  --safe-tint:#EAF4EE;
  --warn:#C8963E;  --warn-tint:#FDF6EC;
  --high:#D2691E;
  --crit:#C0181A;

  /* — typographie (charte) — */
  --display:'Montserrat',system-ui,-apple-system,sans-serif;   /* titres, nav, boutons, logo */
  --body:'Source Sans 3',system-ui,-apple-system,sans-serif;   /* corps, interface */
  --mono:'Montserrat',system-ui,sans-serif;                    /* labels / taglines (caps tracés) */
  --tech:'Courier New',ui-monospace,monospace;                 /* codes & données techniques */

  --maxw:1240px;
  --gut:clamp(1.25rem,5vw,4rem);
  --nav-h:72px;
}

html{scroll-behavior:smooth}
body{
  font-family:var(--body);
  background:var(--paper);
  color:var(--text);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{display:block;max-width:100%}
a{color:inherit}
::selection{background:var(--signal);color:#fff}

/* ---------- layout helpers ---------- */
.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gut)}
.section{padding-block:clamp(4.5rem,9vw,8rem)}
.section-tight{padding-block:clamp(3rem,6vw,5rem)}
.stack{display:flex;flex-direction:column}

/* ---------- typography primitives ---------- */
.eyebrow{
  font-family:var(--mono);font-weight:600;font-size:.72rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--signal);
  display:inline-flex;align-items:center;gap:.6rem;
}
.eyebrow::before{content:'';width:1.6rem;height:2px;background:var(--signal);display:inline-block}
.eyebrow.center{justify-content:center}
.eyebrow.on-dark{color:#FF6B6F}
.eyebrow.on-dark::before{background:var(--signal)}

.h-display{
  font-family:var(--display);font-weight:700;line-height:1.05;
  letter-spacing:-.015em;font-size:clamp(2.6rem,6.4vw,5rem);color:var(--navy-2);
}
.h1{font-family:var(--display);font-weight:700;line-height:1.08;letter-spacing:-.015em;font-size:clamp(2rem,4.6vw,3.4rem);color:var(--navy-2)}
.h2{font-family:var(--display);font-weight:700;line-height:1.12;letter-spacing:-.01em;font-size:clamp(1.65rem,3.4vw,2.6rem);color:var(--navy-2)}
.h3{font-family:var(--display);font-weight:600;line-height:1.2;font-size:clamp(1.15rem,1.8vw,1.4rem);color:var(--navy-2)}
.lead{font-size:clamp(1.05rem,1.5vw,1.2rem);color:var(--muted);line-height:1.7;max-width:54ch}
.measure{max-width:60ch}

.text-signal{color:var(--signal)}
.text-paper{color:var(--paper)}

/* — titres blancs sur surfaces sombres — */
#hero .h-display,#hero .h1,
#founder .h1,#founder .h-display,
#cta .h1,#cta .h-display,
.page-hero .h-display,.page-hero .h1,.page-hero .h2,
#methode .h1,#methode .h2,
.about-hero .h-display,.about-hero .h1,
#certs .h1,#certs .h2,
.contact-hero .h-display,.contact-hero .h1{color:#fff}

/* trait rouge sous les titres principaux (élément récurrent charte) */
.title-rule{display:block;width:54px;height:3px;background:var(--signal);border:0;margin:1rem 0 0;border-radius:2px}

/* ---------- hazard stripe motif ---------- */
.hazard{
  background-image:repeating-linear-gradient(135deg,
    var(--signal) 0 12px,var(--ink) 12px 24px);
}
.hazard-thin{height:6px}
.rule{height:1px;background:var(--line);border:0}
.rule-navy{height:1px;background:var(--navy-line);border:0}

/* ---------- buttons ---------- */
.btn{
  --bg:var(--signal);--fg:#fff;
  display:inline-flex;align-items:center;gap:.6rem;
  background:var(--bg);color:var(--fg);
  font-family:var(--display);font-weight:600;font-size:.95rem;letter-spacing:.005em;
  padding:.88rem 1.6rem;border:1.5px solid var(--bg);border-radius:6px;
  text-decoration:none;cursor:pointer;
  transition:transform .18s ease,box-shadow .2s ease,background .2s,color .2s,border-color .2s;
}
.btn:hover{transform:translateY(-2px);box-shadow:0 10px 26px var(--signal-glow);background:var(--signal-deep);border-color:var(--signal-deep)}
.btn .ar{transition:transform .2s}
.btn:hover .ar{transform:translateX(4px)}
/* secondaire : bordure bleue, texte bleu (charte) */
.btn-ghost{--bg:transparent;--fg:var(--navy-2);border-color:var(--navy-2);box-shadow:none}
.btn-ghost:hover{--fg:#fff;background:var(--navy-2);border-color:var(--navy-2);box-shadow:none;transform:translateY(-2px)}
.btn-ghost.on-dark{--fg:#fff;border-color:var(--navy-line-2);background:transparent}
.btn-ghost.on-dark:hover{--fg:#fff;border-color:#fff;background:rgba(255,255,255,.08)}
.btn-lg{padding:1.02rem 2rem;font-size:1rem}

/* ---------- chips / pills / tags ---------- */
.tag{
  font-family:var(--mono);font-weight:500;font-size:.68rem;letter-spacing:.03em;
  padding:.3rem .65rem;border:1px solid var(--line);border-radius:6px;
  color:var(--navy-2);background:var(--paper-2);white-space:nowrap;
}
.tag.on-dark{border-color:var(--navy-line-2);color:#C7D2EC;background:rgba(255,255,255,.05)}
.tag-row{display:flex;flex-wrap:wrap;gap:.4rem}

.chip{
  display:inline-flex;align-items:center;gap:.5rem;
  font-family:var(--mono);font-weight:600;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;
  padding:.42rem .85rem;border-radius:999px;
  border:1px solid var(--signal);color:var(--signal);background:var(--signal-tint);
}
.chip-dot{width:6px;height:6px;border-radius:50%;background:var(--signal);animation:pulse 2.4s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}
.chip.on-dark{background:rgba(192,24,26,.14);border-color:rgba(192,24,26,.45);color:#FF7B7F}

/* index number */
.idx{font-family:var(--mono);font-weight:700;color:var(--signal);font-size:.82rem;letter-spacing:.03em}

/* ===========================================================
   NAV — fond bleu marine IMS, logo blanc (charte)
   =========================================================== */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:300;height:var(--nav-h);
  display:flex;align-items:center;
  background:rgba(21,32,74,.88);backdrop-filter:blur(18px) saturate(1.3);
  border-bottom:1px solid var(--navy-line);
  transition:background .3s,border-color .3s,box-shadow .3s;
}
.nav.scrolled{background:rgba(20,30,72,.98);box-shadow:0 6px 24px rgba(10,17,48,.25)}
.nav-inner{max-width:var(--maxw);margin:0 auto;padding-inline:var(--gut);width:100%;
  display:flex;align-items:center;justify-content:space-between;gap:1rem}
.brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;flex-shrink:0;background:#fff;border-radius:9px;padding:.3rem .7rem;box-shadow:0 4px 16px rgba(0,0,0,.18);transition:box-shadow .25s,transform .25s}
.brand:hover{box-shadow:0 8px 24px rgba(0,0,0,.28);transform:translateY(-1px)}
.brand-logo{height:52px;width:auto;display:block}
.foot-brand .brand{background:none;box-shadow:none;padding:0}
.foot-brand .brand:hover{transform:none;box-shadow:none}
/* legacy mark/txt (au cas où) */
.brand-mark{width:38px;height:42px;flex-shrink:0;position:relative}
.brand-mark svg{width:100%;height:100%}
.brand-txt{line-height:1.1}
.brand-name{display:block;font-family:var(--display);font-weight:700;color:#fff;font-size:1.02rem;letter-spacing:-.01em}
.brand-tag{display:block;font-family:var(--mono);font-weight:500;color:#9FB0D8;font-size:.54rem;letter-spacing:.16em;margin-top:.1rem}

.nav-menu{display:flex;align-items:center;gap:.2rem;list-style:none}
.nav-menu a{
  text-decoration:none;color:rgba(255,255,255,.78);font-family:var(--display);font-size:.88rem;font-weight:500;
  padding:.55rem .85rem;border-radius:6px;transition:color .18s,background .18s;white-space:nowrap;
  position:relative;
}
.nav-menu a:hover{color:#fff}
.nav-menu a.active{color:#fff;font-weight:600}
.nav-menu a.active::after{content:'';position:absolute;left:.85rem;right:.85rem;bottom:.2rem;height:2px;background:var(--signal)}

.nav-right{display:flex;align-items:center;gap:.9rem;flex-shrink:0}
.lang{
  display:flex;align-items:center;font-family:var(--mono);font-weight:600;font-size:.72rem;
  border:1px solid var(--navy-line-2);border-radius:6px;overflow:hidden;
}
.lang button{
  background:transparent;border:0;color:rgba(255,255,255,.6);
  padding:.4rem .55rem;cursor:pointer;font-family:inherit;font-weight:inherit;font-size:inherit;letter-spacing:.04em;
  transition:background .18s,color .18s;
}
.lang button.on{background:var(--signal);color:#fff}
.nav-cta{
  background:var(--signal);color:#fff;text-decoration:none;font-family:var(--display);font-weight:600;font-size:.85rem;
  padding:.6rem 1.2rem;border-radius:6px;transition:background .2s,transform .15s;white-space:nowrap;
}
.nav-cta:hover{background:var(--signal-deep);transform:translateY(-1px)}

/* burger */
.burger{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;padding:.4rem}
.burger span{width:24px;height:2px;background:#fff;transition:.25s;border-radius:2px}
.nav.open .burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav.open .burger span:nth-child(2){opacity:0}
.nav.open .burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* mobile drawer */
.mobile-menu{
  position:fixed;inset:var(--nav-h) 0 0 0;z-index:290;
  background:var(--ink);padding:2rem var(--gut);
  display:flex;flex-direction:column;gap:.4rem;
  transform:translateX(100%);transition:transform .35s cubic-bezier(.4,0,.2,1);
  pointer-events:none;
}
.mobile-menu.open{transform:translateX(0);pointer-events:auto}
.mobile-menu a{
  text-decoration:none;color:rgba(255,255,255,.88);font-family:var(--display);
  font-size:1.6rem;font-weight:600;padding:.7rem 0;border-bottom:1px solid var(--navy-line);
}
.mobile-menu a .mi{font-family:var(--mono);font-weight:700;font-size:.7rem;color:var(--signal);margin-right:.8rem}

/* ===========================================================
   FOOTER
   =========================================================== */
.foot{background:var(--ink);color:rgba(255,255,255,.62);padding-block:clamp(3.5rem,6vw,5rem) 2rem}
.foot-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:2.5rem}
.foot-logo{height:62px;width:auto;display:block;margin-bottom:.4rem}
.foot-brand .brand-name{font-size:1.3rem}
.foot-blurb{margin-top:1rem;font-size:.92rem;line-height:1.7;max-width:34ch;color:rgba(255,255,255,.55)}
.foot-col h4{font-family:var(--mono);font-weight:600;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#9FB0D8;margin-bottom:1.1rem}
.foot-col a{display:block;text-decoration:none;color:rgba(255,255,255,.66);font-size:.92rem;padding:.3rem 0;transition:color .18s}
.foot-col a:hover{color:#fff}
.foot-bottom{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;
  margin-top:3rem;padding-top:1.6rem;border-top:1px solid var(--navy-line);
  font-family:var(--mono);font-weight:500;font-size:.72rem;letter-spacing:.03em;color:rgba(255,255,255,.45)}

/* ===========================================================
   CARDS & reusable blocks
   =========================================================== */
.card{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--signal);border-radius:10px;padding:2rem;box-shadow:0 2px 8px rgba(16,24,69,.05);transition:border-color .25s,box-shadow .25s,transform .25s}
.card-hover:hover{box-shadow:0 14px 40px rgba(16,24,69,.10);transform:translateY(-3px)}

.section-head{display:flex;flex-direction:column;gap:1rem;margin-bottom:clamp(2.5rem,5vw,4rem)}
.section-head.center{align-items:center;text-align:center}

/* stat */
.stat-num{font-family:var(--display);font-weight:700;color:var(--signal);font-size:clamp(1.6rem,2.6vw,2.2rem);line-height:1;white-space:nowrap}
.stat-lbl{font-family:var(--mono);font-weight:600;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2);margin-top:.4rem}

/* ===========================================================
   REVEAL
   =========================================================== */
.reveal-on .reveal{opacity:0;transform:translateY(28px);transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1)}
.reveal-on .reveal.in{opacity:1;transform:none}
.reveal-on .reveal[data-d="1"]{transition-delay:.08s}
.reveal-on .reveal[data-d="2"]{transition-delay:.16s}
.reveal-on .reveal[data-d="3"]{transition-delay:.24s}
.reveal-on .reveal[data-d="4"]{transition-delay:.32s}
.reveal-on .reveal[data-d="5"]{transition-delay:.40s}

@media print{ .reveal{opacity:1!important;transform:none!important} }
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}
  .reveal{opacity:1!important;transform:none!important}
  html{scroll-behavior:auto}
}

/* ===========================================================
   RESPONSIVE — shared
   =========================================================== */
@media(max-width:980px){
  .nav-menu{display:none}
  .burger{display:flex}
  .foot-top{grid-template-columns:1fr 1fr}
  .foot-brand{grid-column:1/-1}
}
@media(max-width:560px){
  .foot-top{grid-template-columns:1fr}
  .nav-cta{display:none}
  .brand{padding:.26rem .5rem;border-radius:7px}
  .brand-logo{height:40px}
}

/* ================= CERTIFICATIONS ================= */
.certs-band{background:var(--paper);padding:clamp(2.6rem,5vw,4.2rem) 0;border-bottom:1px solid var(--line)}
.certs-title{text-align:center;font-family:var(--mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:clamp(1.5rem,3vw,2.3rem)}
.certs-row{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2vw,1.8rem);max-width:980px;margin:0 auto}
.cert-badge{background:var(--card);border:2px solid var(--line);border-radius:14px;padding:clamp(1.4rem,2.6vw,2.2rem) 1rem;text-align:center;position:relative;transition:border-color .25s,transform .25s,box-shadow .25s}
.cert-badge::before{content:'';position:absolute;top:-2px;left:50%;transform:translateX(-50%);width:58px;height:5px;background:var(--signal);border-radius:0 0 5px 5px}
.cert-badge:hover{border-color:var(--signal);transform:translateY(-4px);box-shadow:0 18px 40px rgba(0,0,0,.10)}
.cb-mark{font-family:var(--display);font-weight:700;font-size:clamp(.95rem,1.5vw,1.25rem);letter-spacing:.18em;color:var(--muted-2,#7E8AB0);text-transform:uppercase}
.cb-num{font-family:var(--display);font-weight:700;font-size:clamp(2rem,4.4vw,3.5rem);line-height:1;color:var(--ink);letter-spacing:-.02em;margin:.2rem 0 .6rem}
.cb-lbl{font-family:var(--body);font-size:clamp(.78rem,1vw,.9rem);color:var(--muted);line-height:1.45;max-width:24ch;margin:0 auto}
.certs-row.compact{max-width:760px;gap:clamp(.7rem,1.4vw,1.1rem);margin-top:clamp(1.4rem,3vw,2.2rem)}
.certs-row.compact .cert-badge{padding:1rem .8rem;border-width:1px;border-radius:10px}
.certs-row.compact .cert-badge::before{width:38px;height:3px;top:-1px}
.certs-row.compact .cb-mark{font-size:.7rem;letter-spacing:.14em}
.certs-row.compact .cb-num{font-size:clamp(1.15rem,2.2vw,1.7rem);margin:.1rem 0 .25rem}
.certs-row.compact .cb-lbl{font-size:.68rem;max-width:20ch}
.exp-claim{text-align:center;margin-top:clamp(2.4rem,5vw,3.6rem);padding-top:clamp(2rem,4vw,3rem);border-top:1px solid var(--line)}
.exp-claim .n{font-family:var(--display);font-weight:700;font-size:clamp(2.4rem,6vw,4.4rem);line-height:1;color:var(--signal);letter-spacing:-.02em}
.exp-claim .t{font-family:var(--display);font-weight:600;font-size:clamp(1.05rem,2vw,1.5rem);color:var(--ink);margin-top:.6rem;line-height:1.35}
@media(max-width:720px){.certs-row{grid-template-columns:1fr;max-width:420px}.certs-row.compact{grid-template-columns:1fr 1fr 1fr;max-width:none}}

/* ---------- ACRONYMES, INFOBULLES ---------- */
.acr{position:relative;border-bottom:1px dotted currentColor;cursor:help;outline:none}
.acr:focus-visible{outline:2px solid var(--signal);outline-offset:2px;border-radius:2px}
.acr::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 9px);transform:translateX(-50%) translateY(4px);background:#fff;color:#16224f;border:1px solid #D8DCE8;font-family:var(--body);font-size:.78rem;font-weight:400;font-style:normal;letter-spacing:0;line-height:1.4;text-transform:none;white-space:normal;width:max-content;max-width:250px;padding:.55rem .75rem;border-radius:8px;box-shadow:0 14px 34px rgba(0,0,0,.30);opacity:0;visibility:hidden;transition:opacity .18s ease,transform .18s ease;pointer-events:none;z-index:60}
.acr::before{content:'';position:absolute;left:50%;bottom:calc(100% + 3px);transform:translateX(-50%) translateY(4px);border:6px solid transparent;border-top-color:#fff;filter:drop-shadow(0 1px 0 #D8DCE8);opacity:0;visibility:hidden;transition:opacity .18s ease,transform .18s ease;pointer-events:none;z-index:61}
.acr:hover::after,.acr:focus::after,.acr:hover::before,.acr:focus::before{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
@media(max-width:560px){.acr::after{max-width:200px;font-size:.72rem}}

/* ---------- BANDEAU RGPD ---------- */
.rgpd-banner{position:fixed;left:0;right:0;bottom:0;z-index:200;background:#101a3d;color:rgba(255,255,255,.86);border-top:3px solid var(--signal);box-shadow:0 -14px 40px rgba(0,0,0,.32);transform:translateY(110%);transition:transform .38s cubic-bezier(.2,.7,.3,1),opacity .3s}
.rgpd-banner.show{transform:translateY(0)}
.rgpd-banner.gone{transform:translateY(110%);opacity:0}
.rgpd-inner{max-width:1180px;max-height:70vh;overflow:auto;margin:0 auto;padding:clamp(1rem,2vw,1.4rem) clamp(1.2rem,4vw,2.4rem);display:flex;align-items:center;gap:clamp(1rem,3vw,2.4rem);flex-wrap:wrap}
.rgpd-txt{flex:1 1 320px;margin:0;font-family:var(--body);font-size:.86rem;line-height:1.6}
.rgpd-txt a{color:#fff;text-decoration:underline;text-underline-offset:3px}
.rgpd-btns{display:flex;gap:.7rem;flex:none}
.rgpd-btn{font-family:var(--display);font-weight:600;font-size:.82rem;padding:.72rem 1.4rem;border-radius:8px;border:1px solid var(--signal);background:var(--signal);color:#fff;cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.rgpd-btn:hover{background:#fff;color:#16224f;border-color:#fff}
.rgpd-btn.ghost{background:transparent;color:rgba(255,255,255,.8);border-color:rgba(255,255,255,.32)}
.rgpd-btn.ghost:hover{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.6)}
@media(max-width:640px){.rgpd-inner{flex-direction:column;align-items:stretch;gap:.9rem}.rgpd-txt{flex:0 0 auto;font-size:.8rem}.rgpd-btns{justify-content:stretch}.rgpd-btn{flex:1}}

/* ---------- PAGE LEXIQUE ---------- */
.lex-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:clamp(.9rem,2vw,1.4rem);margin-top:clamp(1.6rem,3vw,2.4rem)}
.lex-item{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--signal);border-radius:10px;padding:1.15rem 1.3rem}
.lex-sig{font-family:var(--display);font-weight:700;font-size:1.05rem;color:var(--navy-2,#16224f);letter-spacing:.02em}
.lex-def{font-family:var(--body);font-size:.88rem;color:var(--muted);line-height:1.55;margin:.35rem 0 0}
