/* /realisations/application-laboratoire — styles propres à la page, tous préfixés par .lab */
.lab{--lab-w:min(1180px,calc(100% - 2*var(--gutter)));--lab-edge:#d4e1fb;--lab-text:#3a4868;overflow-x:clip;padding-bottom:24px}
.lab *{min-width:0}
.lab h1,.lab h2,.lab h3{color:var(--ink);font-weight:500;letter-spacing:-.03em;line-height:1.15;margin:0}
.lab p,.lab ul,.lab ol,.lab dl,.lab dd,.lab figure{margin:0}
.lab ul,.lab ol{padding:0;list-style:none}
.lab a:not(.m-button){color:var(--blue-deep);text-underline-offset:3px}
.lab a:focus-visible{outline:2px solid var(--blue-deep);outline-offset:3px;border-radius:6px}
.lab figcaption{color:var(--muted);font-size:13.5px;margin-top:14px}

/* En-tête */
.lab .lab-hero{width:var(--lab-w);margin:28px auto 0;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:24px 56px;align-items:center}
.lab .lab-kicker{display:inline-flex;align-items:center;gap:10px;color:var(--ink-2);font-size:14px}
.lab .lab-dot{width:8px;height:8px;border-radius:50%;background:var(--blue);box-shadow:0 0 0 4px #335cff26}
.lab h1{font-size:clamp(34px,5vw,60px);font-weight:400;letter-spacing:-.05em;line-height:1.04;margin:22px 0 22px}
.lab .lab-mark{display:inline;padding:0 .18em;border-radius:.3em;background:var(--blue);color:#fff;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.lab .lab-lead{color:var(--lab-text);font-size:clamp(17px,1.6vw,19px);line-height:1.65;max-width:620px}
.lab .lab-hero .byline{margin-top:26px}
.lab .lab-hero-art img{display:block;width:100%;height:auto;border-radius:var(--radius);border:1px solid var(--lab-edge);box-shadow:var(--shadow)}
.lab .lab-facts{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:20px}
.lab .lab-facts div{background:var(--glass);border:1px solid var(--lab-edge);border-radius:var(--radius-sm);padding:16px 18px}
.lab .lab-facts dt{color:var(--blue-deep);font-size:13px;font-weight:600}
.lab .lab-facts dd{color:var(--ink);font-size:15px;line-height:1.45;margin-top:6px}

/* Sections */
.lab .lab-section{width:var(--lab-w);margin:112px auto 0;scroll-margin-top:96px}
.lab .lab-head{max-width:780px;margin-bottom:36px}
.lab .lab-head h2{font-size:clamp(28px,3.6vw,44px);font-weight:450;letter-spacing:-.045em;line-height:1.1;margin:10px 0 16px}
.lab .lab-head>p:not(.lab-eyebrow){color:var(--lab-text);font-size:17.5px;line-height:1.65}
.lab .lab-eyebrow{display:inline-flex;align-items:center;gap:10px;color:var(--blue-deep);font-size:14px;font-weight:600}
.lab .lab-eyebrow:before{content:"";width:22px;height:1.5px;background:var(--blue);border-radius:2px}

/* Problème */
.lab .lab-problem-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:40px;align-items:start}
.lab .lab-prose p{color:var(--lab-text);font-size:17.5px;line-height:1.7}
.lab .lab-prose p+p{margin-top:16px}
.lab .lab-questions{display:grid;gap:10px}
.lab .lab-questions li{position:relative;padding:14px 18px 14px 46px;background:#fff;border:1px solid var(--lab-edge);border-radius:999px;color:var(--ink);font-size:15.5px;line-height:1.4}
.lab .lab-questions li:before{content:"?";position:absolute;left:12px;top:50%;transform:translateY(-50%);width:24px;height:24px;border-radius:50%;background:var(--blue-soft);color:var(--blue-deep);font-weight:600;font-size:13px;display:grid;place-items:center}

/* Schéma des fonctions */
.lab .lab-flow{background:linear-gradient(160deg,#fff,var(--blue-mist));border:1px solid var(--lab-edge);border-radius:var(--radius);padding:32px}
.lab .lab-flow-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;counter-reset:none}
.lab .lab-flow-steps li{position:relative;background:#fff;border:1px solid var(--lab-edge);border-radius:var(--radius-sm);padding:20px 18px 22px}
.lab .lab-flow-steps li:not(:last-child):after{content:"";position:absolute;top:36px;right:-18px;width:18px;height:2px;background:var(--blue)}
.lab .lab-flow-num{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--blue);color:#fff;font-weight:600;font-size:15px}
.lab .lab-flow-steps h3{font-size:18px;margin:16px 0 8px}
.lab .lab-flow-steps p{color:var(--lab-text);font-size:15px;line-height:1.55}
.lab .lab-flow-base{position:relative;display:flex;align-items:center;gap:14px;margin-top:30px;padding:16px 22px;border-radius:var(--radius-sm);background:var(--blue-deep);color:#fff}
.lab .lab-flow-base:before{content:"";position:absolute;left:12%;right:12%;top:-30px;height:30px;border:2px solid #9ec0ff;border-top:0;border-radius:0 0 18px 18px;opacity:.9}
.lab .lab-flow-base svg{flex:none}
.lab .lab-flow-base p{font-size:16px;line-height:1.45}

/* Façon de travailler */
.lab .lab-method-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:32px;align-items:start}
.lab .lab-timeline{position:relative;display:grid;gap:16px;padding-left:28px}
.lab .lab-timeline:before{content:"";position:absolute;left:7px;top:10px;bottom:10px;width:2px;background:linear-gradient(var(--blue),#9ec0ff)}
.lab .lab-timeline>li{position:relative;background:#fff;border:1px solid var(--lab-edge);border-radius:var(--radius-sm);padding:18px 20px}
.lab .lab-timeline>li:before{content:"";position:absolute;left:-27px;top:22px;width:12px;height:12px;border-radius:50%;background:#fff;border:2px solid var(--blue)}
.lab .lab-timeline>.lab-now:before{background:var(--blue)}
.lab .lab-when{color:var(--blue-deep);font-size:13.5px;font-weight:600}
.lab .lab-timeline h3{font-size:19px;margin:6px 0 8px}
.lab .lab-timeline p:not(.lab-when){color:var(--lab-text);font-size:15.5px;line-height:1.55}
.lab .lab-cycle{background:var(--glass)!important}
.lab .lab-cycle-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.lab .lab-cycle-steps li{display:flex;gap:8px;align-items:flex-start;background:#fff;border:1px solid var(--lab-edge);border-radius:12px;padding:12px;color:var(--ink);font-size:14.5px;line-height:1.4}
.lab .lab-cycle-steps span{color:var(--blue-deep);font-weight:600}
.lab .lab-role{background:var(--glass);border:1px solid var(--lab-edge);border-radius:var(--radius);padding:26px;box-shadow:var(--shadow)}
.lab .lab-role img{display:block;border-radius:50%;background:var(--blue-soft)}
.lab .lab-role h3{font-size:20px;margin:16px 0 10px}
.lab .lab-role p{color:var(--lab-text);font-size:16px;line-height:1.65}
.lab .lab-role .lab-role-sign{margin-top:16px;font-size:14.5px;color:var(--muted)}

/* Principes */
.lab .lab-lessons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;counter-reset:lesson}
.lab .lab-lessons li{counter-increment:lesson;background:#fff;border:1px solid var(--lab-edge);border-radius:var(--radius);padding:24px}
.lab .lab-lessons li:before{content:"0" counter(lesson);display:inline-block;color:var(--blue-deep);font-size:14px;font-weight:600;padding:4px 10px;border-radius:999px;background:var(--blue-soft)}
.lab .lab-lessons h3{font-size:20px;margin:16px 0 10px}
.lab .lab-lessons p{color:var(--lab-text);font-size:15.5px;line-height:1.6}

/* Limites */
.lab .lab-limits-panel{border:1px solid var(--lab-edge);border-left:4px solid var(--blue);border-radius:var(--radius-sm);background:var(--pale);padding:28px 30px}
.lab .lab-limits-panel h2{font-size:clamp(22px,2.4vw,28px);font-weight:500;margin-bottom:16px}
.lab .lab-limits-panel ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 28px}
.lab .lab-limits-panel li{color:var(--lab-text);font-size:15.5px;line-height:1.6}
.lab .lab-limits-panel strong{color:var(--ink);font-weight:600}

/* Suite */
.lab .lab-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.lab .lab-links a,.lab .lab-links .lab-soon{display:flex;flex-direction:column;gap:4px;height:100%;padding:18px 20px;border:1px solid var(--lab-edge);border-radius:var(--radius-sm);background:#fff;color:var(--ink);text-decoration:none;font-size:16.5px;line-height:1.4;transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}
.lab .lab-links a:hover{border-color:var(--blue);box-shadow:var(--shadow)}
.lab .lab-links span{color:var(--blue-deep);font-size:13px;font-weight:600}
.lab .lab-links .lab-soon{background:var(--pale);color:var(--ink-2)}
.lab .lab-links .lab-soon span{color:var(--muted)}
.lab .lab-cta{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:28px;padding:24px 28px;border-radius:var(--radius);background:var(--glass);border:1px solid var(--lab-edge)}
.lab .lab-cta p{color:var(--ink);font-size:18px;line-height:1.5;max-width:640px}
.lab .lab-cta .m-button{flex:none}

@media (max-width:1020px){
  .lab .lab-facts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lab .lab-flow-steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lab .lab-flow-steps li:nth-child(2):after{display:none}
  .lab .lab-method-grid{grid-template-columns:minmax(0,1fr)}
  .lab .lab-lessons{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:900px){
  .lab .lab-hero{grid-template-columns:minmax(0,1fr)}
  .lab .lab-problem-grid{grid-template-columns:minmax(0,1fr);gap:28px}
  .lab .lab-section{margin-top:84px}
}
@media (max-width:640px){
  .lab .lab-facts,.lab .lab-limits-panel ul,.lab .lab-links,.lab .lab-cycle-steps{grid-template-columns:minmax(0,1fr)}
  .lab .lab-flow{padding:20px 16px}
  .lab .lab-flow-steps{grid-template-columns:minmax(0,1fr);gap:14px}
  .lab .lab-flow-steps li{display:grid;grid-template-columns:32px minmax(0,1fr);column-gap:14px;padding:16px}
  .lab .lab-flow-steps li>*:not(.lab-flow-num){grid-column:2}
  .lab .lab-flow-num{grid-row:1/span 2}
  .lab .lab-flow-steps h3{margin:4px 0 6px}
  .lab .lab-flow-steps li:not(:last-child):after{display:block;top:auto;bottom:-14px;right:auto;left:31px;width:2px;height:14px}
  .lab .lab-flow-steps li:nth-child(2):after{display:block}
  .lab .lab-flow-base{align-items:flex-start;padding:16px}
  .lab .lab-flow-base:before{display:none}
  .lab .lab-questions li{border-radius:18px}
  .lab .lab-limits-panel{padding:22px 20px}
  .lab .lab-cta{flex-direction:column;align-items:flex-start;padding:22px 20px}
  .lab .lab-role{padding:22px}
}
@media (prefers-reduced-motion:reduce){.lab .lab-links a{transition:none}}
