/* phdufourcq.fr · template Tableur · feuille de style partagée */
:root{
  --bg:oklch(98.5% 0.004 260);
  --ink:oklch(20% 0.03 262);
  --ink-soft:oklch(46% 0.03 262);
  --grid:oklch(89% 0.01 262);
  --cobalt:oklch(47% 0.21 263);
  --cobalt-soft:oklch(93% 0.035 263);
  --hi:oklch(93% 0.16 102);
  --err:oklch(58% 0.19 27);
  --ease:cubic-bezier(.16,1,.3,1);
  --sans:"Schibsted Grotesk",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,monospace;
}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--ink);font:400 1.0625rem/1.6 var(--sans);-webkit-font-smoothing:antialiased;
  background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:100% 96px,calc(100% / 12) 100%;background-attachment:fixed}
body::before{content:"";position:fixed;inset:0;background:var(--bg);opacity:.86;z-index:-1}
a{color:inherit}
.wrap{width:min(1240px,100% - 2.5rem);margin-inline:auto}
:focus-visible{outline:3px solid var(--cobalt);outline-offset:3px}
.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;background:var(--cobalt);color:var(--bg);padding:.5rem 1rem;z-index:10}

header{border-bottom:1.5px solid var(--ink);background:var(--bg);position:sticky;top:0;z-index:5}
.nav{display:grid;grid-template-columns:repeat(12,1fr);align-items:center;height:64px}
.logo{grid-column:span 3;font:900 1.1rem var(--sans);text-decoration:none;letter-spacing:-.02em}
.nav nav{grid-column:span 6}
.nav ul{display:flex;gap:0;list-style:none;padding:0}
.nav ul a{display:block;padding:.4rem 1rem;text-decoration:none;font:500 .95rem var(--sans);border-left:1px solid var(--grid)}
.nav ul a:hover{background:var(--hi)}
.nav .cta{grid-column:span 3;justify-self:end}
.btn{display:inline-flex;align-items:center;gap:.6rem;padding:.8rem 1.2rem;font:700 .98rem/1 var(--sans);text-decoration:none;border:1.5px solid var(--ink);background:var(--bg);cursor:pointer;transition:box-shadow .25s var(--ease),transform .25s var(--ease)}
.btn:hover{transform:translate(-3px,-3px);box-shadow:3px 3px 0 var(--ink)}
.btn-blue{background:var(--cobalt);color:var(--bg);border-color:var(--cobalt)}
.btn-blue:hover{box-shadow:3px 3px 0 var(--ink)}
@media (max-width:900px){.nav nav{display:none}.logo{grid-column:span 5}.nav .cta{grid-column:span 7;white-space:nowrap;padding:.7rem .9rem}}

/* HERO */
.hero{display:grid;grid-template-columns:repeat(12,1fr);gap:0 1.5rem;padding:clamp(3rem,7vw,5.5rem) 0 clamp(3rem,6vw,5rem)}
.hero .kick{grid-column:1/-1;font:600 .85rem var(--mono);color:var(--cobalt)}
.hero h1{grid-column:1/9;font:900 clamp(2.6rem,6.6vw,6rem)/1.02 var(--sans);letter-spacing:-.05em;margin-top:1rem}
.hero h1 mark{background:linear-gradient(transparent 14%,var(--hi) 14%);color:inherit;padding:0 .12em;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.try{display:inline-flex;gap:.5rem;margin-top:1.4rem;font:600 .9rem var(--mono);color:var(--cobalt);text-decoration:none}
.try:hover{text-decoration:underline}
.hero .side{grid-column:9/-1;align-self:end}
.hero .side p{color:var(--ink-soft);font-size:1.1rem}
.hero .side .ctas{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.4rem}
@media (max-width:900px){.hero h1,.hero .side{grid-column:1/-1}.hero .side{margin-top:2rem}}

/* TABLEAU animé */
.sheet{border:1.5px solid var(--ink);background:var(--bg);box-shadow:8px 8px 0 var(--cobalt);overflow-x:auto}
.sheet table{border-collapse:collapse;width:100%;min-width:760px;font:400 .92rem var(--mono)}
.sheet-head{padding:.7rem 1rem;border-bottom:1.5px solid var(--ink);font:700 .95rem var(--sans);display:flex;justify-content:space-between;gap:1rem;min-width:760px}
.sheet-head span{font:400 .85rem var(--mono);color:var(--ink-soft)}
.sheet th{font:600 .8rem var(--mono);text-align:left;color:var(--ink-soft);background:var(--cobalt-soft);padding:.55rem .9rem;border-right:1px solid var(--grid);border-bottom:1px solid var(--grid)}
.sheet td{padding:.6rem .9rem;border-right:1px solid var(--grid);border-bottom:1px solid var(--grid);white-space:nowrap;transition:background .5s var(--ease),color .5s}
.sheet td.bad{color:var(--err);background:oklch(96% 0.03 27)}
.sheet td.fixed{background:var(--hi)}
.sheet tr.dupe td{text-decoration:line-through;color:var(--ink-soft);opacity:.55}
.sheet td.status{font-weight:600}
.status .ok{color:var(--cobalt)}
.bar{height:6px;background:var(--grid)}
.bar i{display:block;height:100%;width:0;background:var(--cobalt);transition:width .6s var(--ease)}

section{padding:clamp(4rem,9vw,7.5rem) 0;border-top:1.5px solid var(--ink)}
.sec-head{display:grid;grid-template-columns:repeat(12,1fr);gap:1.5rem;margin-bottom:3rem}
.sec-head .idx{grid-column:span 2;font:600 .9rem var(--mono);color:var(--cobalt)}
.sec-head h2{grid-column:span 7;font:900 clamp(2rem,4.4vw,3.6rem)/1 var(--sans);letter-spacing:-.04em}
.sec-head p{grid-column:span 3;color:var(--ink-soft);align-self:end}
@media (max-width:900px){.sec-head>*{grid-column:1/-1!important}}

/* LABO interactif */
.lab{border:1.5px solid var(--ink);background:var(--bg)}
.tabs{display:flex;border-bottom:1.5px solid var(--ink);overflow-x:auto}
.tabs button{flex:0 0 auto;padding:1rem 1.4rem;border:0;border-right:1px solid var(--grid);background:transparent;font:600 .9rem var(--mono);color:var(--ink-soft);cursor:pointer;transition:background .2s,color .2s}
.tabs button:hover{background:var(--cobalt-soft);color:var(--ink)}
.tabs button[aria-selected="true"]{background:var(--ink);color:var(--bg)}
.tabs button span{color:var(--cobalt);margin-right:.4rem}
.tabs button[aria-selected="true"] span{color:var(--hi)}
.panel{display:grid;grid-template-columns:minmax(0,1fr) 300px}
.panel[hidden]{display:none}
.panel .main{padding:1.4rem;border-right:1.5px solid var(--ink);min-width:0}
.panel aside{padding:1.4rem;display:flex;flex-direction:column;gap:1.2rem}
@media (max-width:980px){.panel{grid-template-columns:1fr}.panel .main{border-right:0;border-bottom:1.5px solid var(--ink)}}
.intro{color:var(--ink-soft);font-size:.98rem;max-width:62ch;margin-bottom:1rem}
.toolbar{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}
.tool{padding:.55rem .85rem;border:1.5px solid var(--ink);background:var(--bg);font:600 .82rem var(--mono);cursor:pointer;transition:background .2s,transform .25s var(--ease),box-shadow .25s var(--ease)}
.tool:hover{background:var(--hi);transform:translate(-2px,-2px);box-shadow:2px 2px 0 var(--ink)}
.tool.primary{background:var(--cobalt);color:var(--bg);border-color:var(--cobalt)}
.tool.primary:hover{box-shadow:2px 2px 0 var(--ink);background:var(--cobalt)}
.tool.quiet{border-color:var(--grid);color:var(--ink-soft)}
.tool:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}
.scroll{overflow-x:auto;border:1px solid var(--grid)}
.grid-t{border-collapse:collapse;width:100%;min-width:720px;font:400 .88rem var(--mono)}
.grid-t th{font:600 .75rem var(--mono);text-align:left;color:var(--ink-soft);background:var(--cobalt-soft);padding:.5rem .7rem;border-right:1px solid var(--grid);border-bottom:1px solid var(--grid);white-space:nowrap}
.grid-t td{padding:.5rem .7rem;border-right:1px solid var(--grid);border-bottom:1px solid var(--grid);white-space:nowrap}
.grid-t td[contenteditable]{cursor:text}
.grid-t td[contenteditable]:hover{background:var(--cobalt-soft)}
.grid-t td[contenteditable]:focus{outline:2px solid var(--cobalt);outline-offset:-2px;background:var(--bg)}
.grid-t td.invalid{color:var(--err);background:oklch(96.5% 0.025 27)}
.grid-t td.warn{color:oklch(50% 0.12 70);background:oklch(96% 0.05 90)}
.grid-t tr.dupe td{color:var(--ink-soft);text-decoration:line-through;background:oklch(95% 0.005 262)}
.grid-t td.idx{color:var(--ink-soft);width:2.5rem}
.grid-t .tag{display:inline-block;padding:.1rem .45rem;font:600 .72rem var(--mono);border:1px solid currentColor}
.grid-t .tag.ok{color:var(--cobalt)}
.grid-t .tag.dup{color:var(--err)}
.flash{animation:flash 1.1s var(--ease)}
@keyframes flash{0%{background:var(--hi)}100%{background:transparent}}
.hint{font:400 .78rem var(--mono);color:var(--ink-soft);margin-top:.7rem}
.big-score{font:900 4rem/1 var(--sans);letter-spacing:-.05em}
.big-score small{font-size:1.4rem;letter-spacing:0}
.score-label{font:600 .8rem var(--mono);color:var(--ink-soft)}
.meters{display:grid;gap:.7rem}
.meter-row{display:grid;grid-template-columns:6.5rem 1fr 2.8rem;gap:.6rem;align-items:center;font:400 .8rem var(--mono)}
.meter{height:8px;background:var(--grid);overflow:hidden}
.meter i{display:block;height:100%;background:var(--cobalt);transform-origin:left;transform:scaleX(var(--v,0));transition:transform .7s var(--ease)}
.meter.low i{background:var(--err)}
.meter-row b{text-align:right;font-weight:600}
details.import summary{cursor:pointer;font:600 .82rem var(--mono);color:var(--cobalt)}
details.import textarea{width:100%;min-height:110px;margin:.6rem 0;padding:.6rem;font:400 .8rem var(--mono);border:1.5px solid var(--grid);background:var(--bg);resize:vertical}
.privacy{font:400 .75rem var(--mono);color:var(--ink-soft);border-top:1px solid var(--grid);padding-top:.9rem}
.ctrl{display:grid;gap:.35rem}
.ctrl label{display:flex;justify-content:space-between;font:600 .8rem var(--mono)}
.ctrl label output{color:var(--cobalt)}
.ctrl input[type=range]{width:100%;accent-color:var(--cobalt);height:28px}
.ctrl select{width:100%;padding:.5rem;font:400 .85rem var(--mono);border:1.5px solid var(--ink);background:var(--bg)}
.ctrl-check{display:flex;gap:.6rem;align-items:flex-start;font:400 .82rem var(--mono)}
.ctrl-check input{margin-top:.2rem;accent-color:var(--cobalt);width:18px;height:18px}
.bar-s{position:relative;height:18px;background:var(--grid);min-width:90px}
.bar-s i{position:absolute;inset:0;background:var(--cobalt);transform-origin:left;transform:scaleX(var(--v,0));transition:transform .6s var(--ease)}
.bar-s span{position:relative;font:600 .72rem/18px var(--mono);padding-left:.4rem;color:var(--bg);mix-blend-mode:difference}
.mql{background:var(--hi);color:var(--ink);padding:.1rem .45rem;font:600 .72rem var(--mono)}
.who{font-weight:600}
.load{display:grid;gap:.55rem}
.load .meter-row{grid-template-columns:5rem 1fr 1.8rem}
tr.new td{animation:flash 1.4s var(--ease)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.field{padding:.55rem .75rem;border:1.5px solid var(--ink);background:var(--bg);font:400 .85rem var(--mono);min-width:0;flex:1 1 180px}
.field.cp{flex:0 1 130px}
.cand{font:400 .8rem var(--mono);padding:.3rem;border:1.5px solid var(--err);background:var(--bg);max-width:260px}
.grid-t td.pending{color:var(--ink-soft)}
.grid-t td.pending::after{content:"";display:inline-block;width:.6em;height:.6em;margin-left:.4em;border:2px solid var(--cobalt);border-right-color:transparent;border-radius:50%;animation:spin .7s linear infinite;vertical-align:-.05em}
@keyframes spin{to{transform:rotate(360deg)}}
.tag.closed{color:var(--err)}
.tag.warn{color:oklch(50% 0.12 70)}
.siren-link{color:var(--cobalt)}

/* Offres en colonnes de grille */
.cols{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5px;background:var(--ink);border:1.5px solid var(--ink)}
.col{padding:2rem;display:flex;flex-direction:column;gap:1rem;background:var(--bg);transition:background .3s}
.col.new-offer .ref{color:var(--cobalt)}
.col:hover{background:var(--cobalt-soft)}
.col .ref{font:600 .8rem var(--mono);color:var(--ink-soft)}
.col h3{font:700 1.6rem/1.1 var(--sans);letter-spacing:-.02em}
.col ul{padding-left:1.1rem;color:var(--ink-soft)}
.col .foot{margin-top:auto;font:600 .9rem var(--mono);border-top:1px solid var(--grid);padding-top:1rem}
@media (max-width:1100px){.cols{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.cols{grid-template-columns:1fr}}

/* Études de cas : lignes */
.case{display:grid;grid-template-columns:2fr 5fr 3fr 2fr;gap:1.5rem;padding:1.6rem 0;border-bottom:1px solid var(--grid);text-decoration:none;align-items:center;transition:background .3s}
.case:hover{background:var(--hi)}
.case .sector{font:600 .85rem var(--mono);color:var(--ink-soft)}
.case h3{font:700 1.35rem/1.2 var(--sans)}
.case .kpi{font:900 2.4rem/1 var(--sans);letter-spacing:-.04em;color:var(--cobalt)}
.case .go{justify-self:end;font-weight:700}
@media (max-width:900px){.case{grid-template-columns:1fr;gap:.4rem}.case .go{justify-self:start}}

.quotes{display:grid;grid-template-columns:1fr 1fr;border:1.5px solid var(--ink)}
.quotes figure{padding:2.2rem;background:var(--bg)}
.quotes figure+figure{border-left:1.5px solid var(--ink)}
.quotes p{font:500 1.3rem/1.45 var(--sans)}
.quotes figcaption{margin-top:1.2rem;font:400 .85rem var(--mono);color:var(--ink-soft)}
@media (max-width:900px){.quotes{grid-template-columns:1fr}.quotes figure+figure{border-left:0;border-top:1.5px solid var(--ink)}}

.posts a{display:grid;grid-template-columns:8rem 1fr auto;gap:1.5rem;padding:1.2rem 0;border-bottom:1px solid var(--grid);text-decoration:none;align-items:baseline}
.posts a:hover h3{color:var(--cobalt)}
.posts time,.posts span{font:400 .85rem var(--mono);color:var(--ink-soft)}
.posts h3{font:700 1.25rem var(--sans);transition:color .2s}
@media (max-width:700px){.posts a{grid-template-columns:1fr}}

.contact{background:var(--cobalt);color:var(--bg);border-top:0}
.contact h2{font:900 clamp(2.6rem,8vw,7rem)/.9 var(--sans);letter-spacing:-.055em;max-width:11ch}
.contact .row{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-top:3rem;align-items:end}
.contact .btn{border-color:var(--bg);background:var(--bg);color:var(--ink)}
.contact .btn:hover{box-shadow:3px 3px 0 var(--hi)}
.news label{display:block;font:600 .85rem var(--mono);margin-bottom:.6rem}
.news div{display:flex}
.news input{flex:1;padding:.8rem 1rem;border:1.5px solid var(--bg);background:transparent;color:var(--bg);font:400 .95rem var(--mono)}
.news input::placeholder{color:oklch(85% 0.05 263)}
.news button{border-left:0}
@media (max-width:900px){.contact .row{grid-template-columns:1fr}}
footer.site{padding:1.5rem 0;font:400 .85rem var(--mono);color:var(--ink-soft);border-top:1.5px solid var(--ink);background:var(--bg)}
footer.site .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem}

.reveal{opacity:0;transform:translateY(18px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){:root:not(.fm) .reveal{opacity:1;transform:none;transition:none}:root:not(.fm) .btn:hover{transform:none}:root:not(.fm){scroll-behavior:auto}}

/* ===== Correctifs d'affichage ===== */
html{scroll-padding-top:84px}
h1,h2,h3{overflow-wrap:break-word}
/* Onglets du labo : grille 2x2 sur mobile au lieu d'un défilement qui coupe les titres */
@media (max-width:700px){
  .tabs{display:grid;grid-template-columns:1fr 1fr;overflow:visible}
  .tabs button{border-bottom:1px solid var(--grid);white-space:normal;text-align:left;padding:.85rem 1rem}
}
/* Tableaux défilants : ombre à droite pour signaler qu'on peut faire glisser */
.scroll,.sheet{background:linear-gradient(90deg,var(--bg) 30%,transparent) left/40px 100% no-repeat local,linear-gradient(270deg,var(--bg) 30%,transparent) right/40px 100% no-repeat local,
  radial-gradient(farthest-side at 100% 50%,oklch(20% 0.03 262 / .18),transparent) right/14px 100% no-repeat scroll,var(--bg)}
.swipe{display:none;font:400 .75rem var(--mono);color:var(--ink-soft);margin:.4rem 0 0}
@media (max-width:760px){.swipe{display:block}}
/* Tableau du hero sur mobile : on garde l'essentiel */
@media (max-width:640px){
  .sheet table{min-width:0}
  .sheet-head{min-width:0;flex-direction:column;gap:.2rem}
  .sheet th:nth-child(1),.sheet td:nth-child(1),.sheet th:nth-child(4),.sheet td:nth-child(4),.sheet th:nth-child(5),.sheet td:nth-child(5),
  .sheet th:nth-child(6),.sheet td:nth-child(6),.sheet th:nth-child(7),.sheet td:nth-child(7){display:none}
  .sheet table{font-size:.8rem}
  .sheet th,.sheet td{padding:.5rem .55rem}
  .sheet td{white-space:normal}
  .sheet td:nth-child(3){overflow-wrap:anywhere}
  .hero h1{font-size:clamp(2.4rem,11vw,3.2rem)}
  .contact h2{font-size:clamp(2.4rem,12vw,3.4rem)}
  .big-score{font-size:3.2rem}
}

/* ===== Accueil v2 : présentation, promesse, briques ===== */
.hero2{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.9fr);gap:clamp(1.5rem,4vw,4rem);align-items:center}
.hero2 h1{font:900 clamp(2.5rem,5.6vw,5.2rem)/1.02 var(--sans);letter-spacing:-.05em;margin:1rem 0 1.4rem}
.hero2 h1 .ai{color:var(--cobalt)}
.hero2 h1 mark{padding-right:0}
.hero-p{color:var(--ink-soft);font-size:1.15rem;max-width:56ch}
.hero2 .ctas{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.5rem}
.me{position:relative;margin:0;justify-self:center;width:min(100%,380px)}
.me img{width:100%;height:auto;display:block;border:1.5px solid var(--ink);border-radius:50%;box-shadow:8px 8px 0 var(--cobalt);background:var(--bg)}
.bubble{position:relative;margin-top:1.4rem;background:var(--bg);border:1.5px solid var(--ink);padding:1rem 1.1rem;font:400 .98rem/1.5 var(--sans);box-shadow:4px 4px 0 var(--ink)}
.bubble b{display:block;font-weight:700;margin-top:.25rem}
.bubble::before{content:"";position:absolute;top:-11px;left:50%;width:20px;height:20px;background:var(--bg);border-left:1.5px solid var(--ink);border-top:1.5px solid var(--ink);transform:translateX(-50%) rotate(45deg)}
@media (max-width:900px){
  .hero2{grid-template-columns:1fr}
  .me{order:-1;display:grid;grid-template-columns:120px 1fr;gap:1rem;align-items:center;width:100%;justify-self:stretch}
  .me img{box-shadow:4px 4px 0 var(--cobalt)}
  .bubble{margin-top:0;font-size:.92rem}
  .bubble::before{top:50%;left:-11px;transform:translateY(-50%) rotate(-45deg)}
}
.promise{background:var(--cobalt);color:var(--bg);border-top:0}
.promise .p-kick{font:600 .9rem var(--mono);color:var(--hi)}
.promise h2{font:900 clamp(2rem,4.6vw,3.8rem)/1.04 var(--sans);letter-spacing:-.045em;max-width:22ch;margin:.8rem 0 1.2rem}
.promise .p-lede{font-size:1.18rem;max-width:62ch;color:oklch(92% 0.03 263)}
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5px;background:var(--bg);border:1.5px solid var(--bg);margin-top:2.5rem}
.pillars div{background:var(--cobalt);padding:1.4rem}
.pillars b{display:block;font:900 1.6rem var(--sans);letter-spacing:-.03em;color:var(--hi)}
.pillars span{display:block;margin-top:.4rem;color:oklch(92% 0.03 263)}
@media (max-width:760px){.pillars{grid-template-columns:1fr}}
.ia-list{list-style:none;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:1.5px;background:var(--ink);border:1.5px solid var(--ink)}
.ia-list li{background:var(--bg);padding:1.3rem;position:relative}
.ia-list li::before{content:"IA";display:inline-block;font:600 .7rem var(--mono);background:var(--cobalt);color:var(--bg);padding:.12rem .4rem;margin-bottom:.8rem}
.ia-list b{display:block;font:700 1.12rem/1.2 var(--sans)}
.ia-list span{display:block;color:var(--ink-soft);margin-top:.45rem;font-size:.95rem}
@media (max-width:1100px){.ia-list{grid-template-columns:repeat(3,1fr)}}
@media (max-width:760px){.ia-list{grid-template-columns:1fr 1fr}}
@media (max-width:480px){.ia-list{grid-template-columns:1fr}}
.bricks{display:grid;grid-template-columns:repeat(4,1fr);gap:1.5px;background:var(--ink);border:1.5px solid var(--ink)}
.brick{background:var(--bg);padding:1.6rem;text-decoration:none;display:flex;flex-direction:column;gap:.7rem;min-height:250px;transition:background .25s}
.brick:hover{background:var(--hi)}
.brick .b-k{font:600 .8rem var(--mono);color:var(--cobalt)}
.brick h3{font:700 1.45rem/1.1 var(--sans);letter-spacing:-.02em}
.brick p{color:var(--ink-soft);font-size:.98rem}
.brick .b-go{margin-top:auto;font-weight:700;transition:transform .3s var(--ease)}
.brick:hover .b-go{transform:translateX(6px)}
@media (max-width:1000px){.bricks{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.bricks{grid-template-columns:1fr}.brick{min-height:0}}
.offers-page{border-top:0;padding-top:clamp(2rem,5vw,3.5rem)}
.process{list-style:none;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:1.5px;background:var(--ink);border:1.5px solid var(--ink);counter-reset:p}
.process li{background:var(--bg);padding:1.4rem;counter-increment:p}
.process li::before{content:counter(p,decimal-leading-zero);display:block;font:600 .8rem var(--mono);color:var(--cobalt);margin-bottom:.6rem}
.process b{display:block;font:700 1.2rem var(--sans)}
.process span{display:block;color:var(--ink-soft);margin-top:.4rem;font-size:.97rem}
@media (max-width:900px){.process{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.process{grid-template-columns:1fr}}
.listing{padding:clamp(1.5rem,4vw,3rem) 0 clamp(3rem,6vw,5rem)}
.lab-page{border-top:0;padding-top:clamp(2.5rem,6vw,4rem)}

/* Domaines d'expertise sous le hero */
.skills{list-style:none;padding:0;margin:0 0 clamp(2rem,4vw,3rem);display:flex;flex-wrap:wrap;gap:.45rem}
.skills li{font:600 .78rem var(--mono);border:1.5px solid var(--ink);padding:.35rem .6rem;background:var(--bg)}
.skills li:nth-child(-n+3){background:var(--hi)}
footer.site a{color:inherit}

/* Bandeau d'action après le labo, KPI des études de cas */
.labcta{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;flex-wrap:wrap;margin-top:1.5rem;padding:1.2rem 1.4rem;border:1.5px solid var(--ink);background:var(--hi)}
.labcta p{max-width:60ch}
.case .kpi{display:flex;flex-direction:column;gap:.3rem}
.case .kpi-l{font:400 .8rem var(--mono);color:var(--ink-soft);letter-spacing:0}
.case h3{max-width:32ch}

/* ===== Réservation (Cal.com) ===== */
.cal-inline{min-height:520px;background:var(--bg);color:var(--ink);overflow:auto}
.cal-fallback{padding:2rem;font:400 .9rem var(--mono)}
.cal-fallback a{color:var(--cobalt);font-weight:600}
.contact .cal-wrap{margin-top:2.5rem}
.contact .cal-wrap .score-label{color:oklch(88% 0.04 263);margin-bottom:.7rem;display:block}
.book-note{font:400 .8rem var(--mono);opacity:.85;margin-top:.8rem}
.col .talk{font:700 .9rem var(--sans);color:var(--cobalt);text-decoration:none;margin-top:.3rem;background:none;border:0;padding:0;text-align:left;cursor:pointer}
.col .talk:hover{text-decoration:underline}
/* Barre d'action collante sur mobile */
.stickycta{position:fixed;left:0;right:0;bottom:0;z-index:20;display:none;gap:.5rem;padding:.7rem 1rem calc(.7rem + env(safe-area-inset-bottom));background:var(--bg);border-top:1.5px solid var(--ink);transform:translateY(110%);transition:transform .35s var(--ease)}
.stickycta.on{transform:none}
.stickycta .btn{flex:1;justify-content:center}
@media (max-width:760px){.stickycta{display:flex}footer.site{padding-bottom:5.5rem}}

/* ===== Pages intérieures (études de cas, articles) ===== */
.crumbs{font:400 .82rem var(--mono);color:var(--ink-soft);padding:1.6rem 0 0}
.crumbs a{color:var(--cobalt)}
.page-head{padding:clamp(2rem,5vw,3.5rem) 0 clamp(2rem,5vw,3rem);border-bottom:1.5px solid var(--ink)}
.page-head .kick{font:600 .85rem var(--mono);color:var(--cobalt)}
.page-head h1{font:900 clamp(2.1rem,5.4vw,4.4rem)/1.04 var(--sans);letter-spacing:-.045em;margin:.8rem 0 1.2rem;max-width:22ch}
.page-head .lead{font-size:1.2rem;color:var(--ink-soft);max-width:62ch}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:1.5px;background:var(--ink);border:1.5px solid var(--ink);margin:2.5rem 0 0}
.kpi-box{background:var(--bg);padding:1.4rem}
.kpi-box b{display:block;font:900 clamp(2rem,4vw,2.8rem)/1 var(--sans);letter-spacing:-.04em;color:var(--cobalt)}
.kpi-box span{display:block;margin-top:.5rem;font:400 .85rem var(--mono);color:var(--ink-soft)}
.kpi-box .todo,.kpi .todo{display:inline-block;margin:0}
.todo{display:inline-block;font:600 .72rem var(--mono)!important;letter-spacing:0!important;color:var(--ink)!important;background:var(--hi);padding:.25rem .5rem;vertical-align:middle}
.article{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:clamp(2rem,5vw,4rem);padding:clamp(2.5rem,6vw,4.5rem) 0}
.article .body{max-width:70ch;min-width:0}
.article .body h2{font:900 clamp(1.6rem,3vw,2.2rem)/1.1 var(--sans);letter-spacing:-.03em;margin:2.6rem 0 1rem}
.article .body h2:first-child{margin-top:0}
.article .body h3{font:700 1.2rem var(--sans);margin:1.6rem 0 .5rem}
.article .body p,.article .body li{color:oklch(30% 0.03 262);font-size:1.08rem;line-height:1.75}
.article .body p+p{margin-top:1rem}
.article .body ul,.article .body ol{padding-left:1.3rem;margin:1rem 0}
.article .body li+li{margin-top:.4rem}
.article .body code{font:400 .92em var(--mono);background:var(--cobalt-soft);padding:.05rem .3rem}
.article aside .stick{position:sticky;top:90px;display:grid;gap:1rem}
.box{border:1.5px solid var(--ink);padding:1.3rem;background:var(--bg)}
.box h3{font:700 1.1rem var(--sans);margin-bottom:.5rem}
.box p{font-size:.95rem;color:var(--ink-soft);margin-bottom:1rem}
.box .btn{width:100%;justify-content:center}
.callout{border:1.5px solid var(--ink);background:var(--cobalt-soft);padding:1.2rem 1.4rem;margin:1.6rem 0}
.callout p{margin:0!important}
@media (max-width:980px){.article{grid-template-columns:1fr}.article aside .stick{position:static}}
.draft{display:inline-block;font:600 .75rem var(--mono);background:var(--hi);padding:.2rem .5rem;margin-left:.5rem;vertical-align:middle}
.post-meta{font:400 .85rem var(--mono);color:var(--ink-soft)}
.next{display:grid;grid-template-columns:1fr 1fr;gap:1.5px;background:var(--ink);border:1.5px solid var(--ink);margin-bottom:clamp(3rem,6vw,5rem)}
.next a{background:var(--bg);padding:1.4rem;text-decoration:none;transition:background .2s}
.next a:hover{background:var(--hi)}
.next small{font:400 .8rem var(--mono);color:var(--ink-soft)}
.next b{display:block;font:700 1.15rem/1.3 var(--sans);margin-top:.3rem}
@media (max-width:640px){.next{grid-template-columns:1fr}}

/* Démos des études de cas */
.demo{border:1.5px solid var(--ink);background:var(--bg);box-shadow:8px 8px 0 var(--cobalt);margin:2rem 0}
.demo-bar{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 1rem;border-bottom:1.5px solid var(--ink);flex-wrap:wrap}
.demo-bar b{font:700 .95rem var(--sans)}
.steps-line{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-bottom:1.5px solid var(--ink)}
.steps-line div{padding:.8rem .7rem;font:600 .78rem var(--mono);color:var(--ink-soft);border-right:1px solid var(--grid);transition:background .3s,color .3s}
.steps-line div:last-child{border-right:0}
.steps-line div.on{background:var(--ink);color:var(--bg)}
.steps-line div.done{background:var(--cobalt-soft);color:var(--cobalt)}
.steps-line div i{font-style:normal;display:block;font-size:.7rem;opacity:.8;font-weight:400}
@media (max-width:640px){.steps-line div{font-size:.62rem;padding:.6rem .3rem}.steps-line div i{display:none}}
.demo-grid{display:grid;grid-template-columns:1fr 1fr 1fr;min-height:320px}
.demo-grid>div{padding:1rem;border-right:1px solid var(--grid);min-width:0}
.demo-grid>div:last-child{border-right:0}
.demo-grid h4{font:600 .75rem var(--mono);color:var(--ink-soft);margin-bottom:.7rem}
@media (max-width:900px){.demo-grid{grid-template-columns:1fr}.demo-grid>div{border-right:0;border-bottom:1px solid var(--grid)}}
pre.xml{font:400 .78rem/1.6 var(--mono);white-space:pre-wrap;word-break:break-all;margin:0}
pre.xml .ln{display:block;padding:0 .3rem;transition:background .3s}
pre.xml .ln.hl{background:var(--hi)}
.kv{width:100%;border-collapse:collapse;font:400 .8rem var(--mono)}
.kv td{padding:.35rem .4rem;border-bottom:1px solid var(--grid);vertical-align:top}
.kv td:first-child{color:var(--ink-soft);width:40%}
.kv tr.bad td:last-child{color:var(--err)}
.kv .from{color:var(--ink-soft);text-decoration:line-through;margin-right:.4rem}
.vcard{border:1.5px solid var(--ink);opacity:.25;transform:translateY(8px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.vcard.on{opacity:1;transform:none}
.vcard .ph{aspect-ratio:16/9;background:repeating-linear-gradient(135deg,var(--cobalt-soft) 0 12px,var(--bg) 12px 24px);display:grid;place-items:center;font:600 .75rem var(--mono);color:var(--cobalt)}
.vcard .ph.car-ph{position:relative;display:block;overflow:hidden;background:linear-gradient(oklch(96% 0.02 250),var(--bg) 62%,oklch(93% 0.012 250) 62%,var(--bg))}
.vcard .ph.car-ph.wait{background:repeating-linear-gradient(135deg,var(--cobalt-soft) 0 12px,var(--bg) 12px 24px)}
.car{position:absolute;inset:6% 4% 0;width:92%;height:94%}
.car-ph.ko .car{filter:grayscale(1);opacity:.45}
.pcount{position:absolute;top:.5rem;right:.5rem;font:600 .68rem var(--mono);background:var(--ink);color:var(--bg);padding:.15rem .4rem}
.pdots{position:absolute;bottom:.45rem;left:50%;translate:-50% 0;display:flex;gap:4px}
.pdots i{width:6px;height:6px;border-radius:50%;background:var(--ink);opacity:.25}
.pdots i.on{opacity:.9}
.stamp{position:absolute;top:50%;left:50%;translate:-50% -50%;rotate:-8deg;font:700 .85rem var(--mono);color:var(--err);border:2px solid var(--err);padding:.3rem .7rem;background:oklch(98% 0.01 27 / .85);text-transform:uppercase;letter-spacing:.06em}
.pwait{position:absolute;bottom:.5rem;left:0;right:0;text-align:center;font:600 .72rem var(--mono);color:var(--cobalt)}
.vcard.on .car-ph.ok .car{animation:drive 1.1s var(--ease) both}
.vcard.on .car-ph.ok .wheel{animation:roll 1.1s var(--ease) both}
@keyframes drive{from{transform:translateX(-70%);opacity:0}to{transform:none;opacity:1}}
@keyframes roll{from{transform:rotate(-540deg)}to{transform:none}}
@media (prefers-reduced-motion:reduce){:root:not(.fm) .vcard.on .car-ph.ok .car,:root:not(.fm) .vcard.on .car-ph.ok .wheel{animation:none}}
.vcard .in{padding:.8rem}
.vcard h5{font:700 1rem var(--sans)}
.vcard .price{font:900 1.4rem var(--sans);color:var(--cobalt);margin:.3rem 0}
.vcard .meta{font:400 .75rem var(--mono);color:var(--ink-soft)}
.vcard .sites{display:flex;gap:.3rem;flex-wrap:wrap;margin-top:.6rem}
.vcard .sites span{font:600 .7rem var(--mono);border:1px solid var(--cobalt);color:var(--cobalt);padding:.1rem .35rem}
.flow{display:grid;grid-template-columns:1fr auto 1.1fr auto 1fr;align-items:center;gap:.8rem;padding:1.2rem}
.flow .col-f{display:grid;gap:.4rem;min-width:0}
.flow .chip{font:600 .75rem var(--mono);border:1.5px solid var(--ink);padding:.4rem .5rem;background:var(--bg);display:flex;justify-content:space-between;gap:.4rem;transition:background .3s}
.flow .chip b{color:var(--cobalt)}
.flow .chip.ping{background:var(--hi)}
.flow .hubbox{border:1.5px solid var(--ink);background:var(--ink);color:var(--bg);padding:1rem;display:grid;gap:.35rem}
.flow .hubbox strong{font:700 1rem var(--sans)}
.flow .hubbox span{font:400 .74rem var(--mono);opacity:.9;display:flex;justify-content:space-between;gap:.5rem}
.flow .hubbox span.off{opacity:.35;text-decoration:line-through}
.flow .arrow{font:700 1.2rem var(--mono);color:var(--cobalt)}
.flow .chip.spam{border-color:var(--err);color:var(--err)}
.flow .chip.spam b{color:var(--err)}
@media (max-width:760px){.flow{grid-template-columns:1fr}.flow .arrow{transform:rotate(90deg);justify-self:center}}
