/* MAB ERP — master.css (homepage only, additive). Load after style/upgrade/enhance. */

/* Hero */
.hero h1{max-width:22ch;font-size:clamp(2.1rem,5vw,4.1rem);line-height:1.05}
.hero h2{font-family:var(--f-body);font-weight:500;font-size:clamp(1.02rem,1.7vw,1.3rem);color:var(--text-soft);max-width:50ch;margin-top:1.3rem;letter-spacing:0}
.hero .lead{margin-top:.9rem}
.hero-tags .is-cndp{color:var(--blue-700);font-weight:700}
.mx-head{text-align:center;max-width:62ch;margin:0 auto clamp(2rem,5vw,3.2rem)}
.mx-head .lead{margin-inline:auto}

/* ---------- Scroll timeline: appel d'offres → clôture ---------- */
.tl-sec{padding:clamp(4rem,8vw,7rem) 0}
.tl{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(2rem,6vw,5rem);align-items:start}
.tl-side{position:sticky;top:calc(var(--fx-sticky-top,72px) + 24px)}
.tl-side .lead{margin-top:1rem}
.tl-now{margin-top:2rem;padding:1.2rem 1.3rem;border:1px solid var(--d-border-2);border-radius:var(--r);background:var(--d-card)}
.tl-now small{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.18em;color:var(--amber-300)}
.tl-now b{display:block;margin-top:.3rem;font-family:var(--f-display);font-size:1.25rem;color:#fff}
.tl-bar{height:6px;margin-top:1rem;border-radius:99px;background:rgba(120,160,230,.22);overflow:hidden}
.tl-bar i{display:block;height:100%;width:100%;transform-origin:0 50%;transform:scaleX(var(--p,.1));border-radius:99px;background:linear-gradient(90deg,var(--blue-400),var(--amber-500));transition:transform .45s var(--ease)}
.tl-list{list-style:none;margin:0;padding:0 0 0 2.2rem;position:relative;display:grid;gap:1.1rem}
.tl-list::before,.tl-list::after{content:"";position:absolute;left:.55rem;top:.6rem;bottom:.6rem;width:2px;border-radius:2px}
.tl-list::before{background:rgba(120,160,230,.2)}
.tl-list::after{background:linear-gradient(180deg,var(--blue-400),var(--amber-500));transform-origin:0 0;transform:scaleY(var(--p,0));transition:transform .45s var(--ease)}
.tl-step{position:relative;padding:1.3rem 1.4rem;border:1px solid var(--d-border);border-radius:var(--r);background:var(--d-card);transition:opacity .45s,border-color .45s,background .45s,transform .45s var(--ease)}
.tl-step::before{content:"";position:absolute;left:-2.05rem;top:1.6rem;width:14px;height:14px;border-radius:50%;background:#0a285f;border:2px solid var(--d-border-2);transition:.4s}
.tl-step .k{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.18em;color:var(--amber-300)}
.tl-step h3{margin:.25rem 0 .6rem;font-size:1.25rem;color:#fff}
.tl-step p{margin:.25rem 0;font-size:.95rem;color:var(--d-soft)}
.tl-step p b{color:#fff;font-weight:600}
.tl-step ul{display:flex;flex-wrap:wrap;gap:.4rem;margin:.9rem 0 0;padding:0;list-style:none}
.tl-step li{font-family:var(--f-mono);font-size:.68rem;padding:.3rem .65rem;border:1px solid var(--d-border-2);border-radius:var(--r-pill);color:#cfe0fb;background:rgba(21,101,216,.16)}
.js-tl .tl-step{opacity:.38}
.js-tl .tl-step.is-active,.js-tl .tl-step.is-past{opacity:1}
.tl-step.is-active{border-color:rgba(255,184,28,.6);background:var(--d-card-2);transform:translateX(6px)}
.tl-step.is-active::before,.tl-step.is-past::before{background:var(--amber-500);border-color:var(--amber-500);box-shadow:0 0 0 5px rgba(255,184,28,.2)}
@media (max-width:900px){
  .tl{grid-template-columns:1fr}
  .tl-side{position:static}
  .tl-now{display:none}
  .js-tl .tl-step{opacity:1}
}

/* ---------- Modules grid ---------- */
.mx-mods{display:grid;grid-template-columns:repeat(auto-fill,minmax(235px,1fr));gap:1rem}
.mx-mod{display:block;padding:1.2rem 1.3rem;border:1px solid var(--border);border-radius:var(--r);background:#fff;text-decoration:none;color:inherit;
  box-shadow:var(--shadow-sm);transition:transform .35s var(--ease),border-color .35s,box-shadow .35s}
.mx-mod:hover{transform:translateY(-4px);border-color:var(--blue-400);box-shadow:var(--shadow)}
.mx-mod b{display:block;font-family:var(--f-display);color:var(--ink);font-size:1.02rem}
.mx-mod span{display:block;margin-top:.3rem;font-size:.86rem;color:var(--text-soft)}
.mx-mod.is-new{background:linear-gradient(160deg,var(--blue-50),#fff);border-color:var(--border-2)}

/* ---------- Security / CNDP ---------- */
.dark-band .lead{color:var(--d-soft)}
.dark-band .eyebrow{color:var(--amber-300)}
.dark-band .eyebrow::before{background:var(--amber-300)}
.sec-seal{position:relative;padding:clamp(1.6rem,4vw,2.4rem);border-radius:var(--r-xl);text-align:center;border:1px solid var(--d-border-2);
  background:linear-gradient(160deg,rgba(16,42,96,.7),rgba(6,24,58,.7));box-shadow:0 40px 80px -40px rgba(0,0,0,.8)}
.sec-shield{width:130px;height:148px;margin:0 auto 1rem;display:block;overflow:visible}
.sec-shield .sh{fill:rgba(21,101,216,.18);stroke:var(--blue-300);stroke-width:2.4;stroke-linejoin:round;stroke-dasharray:420;stroke-dashoffset:420}
.sec-shield .ck{fill:none;stroke:var(--amber-500);stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:70;stroke-dashoffset:70}
.sec-seal.in-view .sh{animation:mxDraw 1.3s var(--ease) forwards}
.sec-seal.in-view .ck{animation:mxDraw .6s var(--ease) 1.1s forwards}
@keyframes mxDraw{to{stroke-dashoffset:0}}
.sec-seal b.big{display:block;font-family:var(--f-display);font-size:clamp(1.4rem,3vw,1.9rem);color:#fff}
.sec-seal .sub{display:block;margin-top:.3rem;font-family:var(--f-mono);font-size:.72rem;letter-spacing:.14em;color:var(--amber-300)}
.sec-seal small{display:block;margin-top:.9rem;color:var(--d-dim);font-size:.82rem}

@media (prefers-reduced-motion:reduce){
  .js-tl .tl-step{opacity:1}
  .tl-step,.tl-bar i,.tl-list::after{transition:none}
  .tl-step.is-active{transform:none}
  .sec-shield .sh,.sec-shield .ck{stroke-dashoffset:0;animation:none!important}
}

/* ---------- Comparison table: wide, sticky first column ---------- */
.mx-cmp{overflow-x:auto;-webkit-overflow-scrolling:touch}
.mx-cmp .fx-compare{min-width:1020px;font-size:.88rem}
.mx-cmp th,.mx-cmp td{padding:.8rem .85rem;vertical-align:top}
.mx-cmp thead th{white-space:normal;font-size:.72rem;line-height:1.3}
.mx-cmp tbody th{position:sticky;left:0;z-index:1;background:var(--bg,#fff);min-width:190px;font-size:.88rem}
.mx-cmp thead th:first-child{position:sticky;left:0;z-index:2;background:var(--bg,#fff)}
.mx-cmp .is-mab{min-width:150px}
.mx-cmp td span{display:inline-block;line-height:1.35}

/* ---------- Clients: 3-line auto marquee (left → right) ---------- */
.mx-mq{display:grid;gap:1.4rem;overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.mx-mq-row{display:flex;width:max-content;animation:mxMq var(--d,40s) linear infinite;will-change:transform}
.mx-mq:hover .mx-mq-row{animation-play-state:paused}
@keyframes mxMq{from{transform:translateX(-50%)}to{transform:translateX(0)}}
.mx-logo{flex:none;width:205px;height:116px;margin-right:1.4rem;display:grid;place-items:center;padding:0.1rem 1.5rem;
  border:1px solid var(--border);border-radius:var(--r);background:#fff;box-shadow:var(--shadow-sm)}
.mx-logo img{max-width:100%;max-height:100%;object-fit:contain}
@media (max-width:600px){.mx-logo{width:156px;height:84px;margin-right:1rem;padding:.8rem 1rem}}
@media (prefers-reduced-motion:reduce){
  .mx-mq-row{animation:none;width:auto;flex-wrap:wrap;justify-content:center;gap:.8rem}
  .mx-mq-row .mx-logo[aria-hidden="true"]{display:none}
}

/* ---------- Proof cards ---------- */
.mx-proof{text-align:center}
.mx-proof .mx-big{font-family:var(--f-display);font-weight:800;font-size:clamp(2.6rem,5vw,3.6rem);line-height:1;
  background:var(--grad-text);-webkit-background-clip:text;background-clip:text;color:transparent}
.mx-proof h3{margin:.6rem 0 .4rem}
.mx-proof small{display:block;margin-top:.8rem;font-size:.78rem;color:var(--text-dim)}
.mx-note{margin:1.2rem auto 0;max-width:92ch;text-align:center;font-size:.82rem;color:var(--text-dim)}
.mx-ada{margin-top:clamp(2rem,5vw,3rem)}
.mx-ada h3{text-align:center;margin:0 0 1.2rem;font-size:clamp(1.15rem,2.2vw,1.5rem);color:var(--ink)}
.mx-cmp-s .fx-compare{min-width:640px}
.mx-cmp-s tbody th{min-width:150px}

/* Clients: more air above/below, clear logos */
.mx-clients{padding-top:clamp(6rem,12vw,10rem);padding-bottom:clamp(6rem,12vw,10rem)}
.mx-clients .mx-head{margin-bottom:clamp(3rem,6vw,4.5rem)!important}
.mx-clients .mx-mq{margin-bottom:0}

/* ---------- Timeline background = phase images (scroll-driven) ---------- */
.tl-bg{position:absolute;inset:0;z-index:-1;pointer-events:none}
.tl-bg-in{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden}
.tl-bg-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.08);
  transition:opacity 1s var(--ease),transform 6s var(--ease);filter:saturate(1.1) contrast(1.05)}
.tl-bg-img.on{opacity:1;transform:scale(1)}
.tl-bg-in::after{content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(4,13,34,.86) 0%,rgba(6,24,58,.55) 45%,rgba(4,13,34,.72) 100%),
             linear-gradient(180deg,rgba(4,13,34,.55),transparent 22%,transparent 78%,rgba(4,13,34,.65))}
.tl-step,.tl-now{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.tl-step{background:rgba(8,22,52,.62)}
.tl-step.is-active{background:rgba(12,32,72,.78)}
@media (max-width:900px){.tl-bg-in::after{background:linear-gradient(180deg,rgba(4,13,34,.8),rgba(6,24,58,.6) 50%,rgba(4,13,34,.85))}}
@media (prefers-reduced-motion:reduce){.tl-bg-img,.tl-bg-img.on{transition:none;transform:none}}
