:root{
  --canvas:#E9ECE7; --raised:#F4F6F2; --auth:#FFFFFF; --deep:#0E1417;
  --ink:#0E1417; --muted:#59636A; --faint:#8A9399; --line:#D2D7D0; --line-2:#E2E6E0;
  --brand:#1F2ACF; --brand-s:#E5E6FA;
  --ver:#0F6B57; --ver-s:#E3F0EB;
  --gate:#9A6700; --gate-s:#FBF0D9;
  --stop:#A32118; --stop-s:#FBE7E4;
  --s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--s9:96px;--s10:128px;
  --mono:"Martian Mono",ui-monospace,monospace;
  --sans:"Inter Tight",system-ui,sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
  --spine:132px;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--canvas);color:var(--ink);font-family:var(--sans);font-size:16.5px;line-height:1.62;-webkit-font-smoothing:antialiased;overflow-x:hidden}
:focus-visible{outline:2px solid var(--brand);outline-offset:3px;border-radius:2px}
button{font:inherit;color:inherit;cursor:pointer}
a{color:inherit}
.wrap{max-width:1180px;margin:0 auto;padding:0 clamp(18px,4vw,44px)}
.lbl{font-size:10.5px;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:var(--faint)}
.n{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:500}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ============ spine ============ */
.spine{position:fixed;left:34px;top:0;bottom:0;width:1px;background:var(--line);z-index:30;display:block}
.spine::after{content:"";position:absolute;left:0;top:0;width:1px;background:var(--brand);height:var(--p,0%);transition:height 90ms linear}
.snav{position:fixed;left:22px;top:50%;transform:translateY(-50%);z-index:31;display:flex;flex-direction:column;gap:18px}
.snav a{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--faint);font-family:var(--mono);font-size:9.5px;letter-spacing:.12em}
.snav a i{width:9px;height:9px;border-radius:50%;border:1px solid var(--line);background:var(--canvas);flex:none;transition:all 200ms}
.snav a span{opacity:0;transform:translateX(-4px);transition:all 200ms;white-space:nowrap;background:var(--canvas);padding-right:6px}
.snav a:hover span,.snav a.on span{opacity:1;transform:none}
.snav a.on i{background:var(--brand);border-color:var(--brand)}
.snav a:hover i{border-color:var(--ink)}
@media(max-width:1120px){.spine,.snav{display:none}}
.tprog{position:fixed;top:0;left:0;height:2px;background:var(--brand);width:var(--p,0%);z-index:60;display:none}
@media(max-width:1120px){.tprog{display:block}}

/* ============ header ============ */
header{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--canvas) 88%,transparent);backdrop-filter:blur(9px);border-bottom:1px solid transparent;transition:border-color 160ms}
body.sc header{border-bottom-color:var(--line)}
header .wrap{display:flex;align-items:center;gap:var(--s5);height:64px;max-width:1180px}
.logo{font-family:var(--mono);font-weight:600;font-size:13px;letter-spacing:.17em;text-decoration:none}
.logo b{color:var(--brand);font-weight:600}
header nav{margin-left:auto;display:flex;gap:var(--s5);align-items:center}
header nav a{font-size:14px;color:var(--muted);text-decoration:none;padding:4px 0;border-bottom:1px solid transparent}
header nav a:hover{color:var(--ink);border-bottom-color:var(--brand)}
@media(max-width:900px){header nav a:not(.cta){display:none}}
.pvt{background:none;border:1px solid var(--line);border-radius:4px;padding:7px 12px;font-size:12.5px;color:var(--muted);transition:all 130ms;white-space:nowrap}
.pvt:hover{border-color:var(--ink);color:var(--ink)}
.pvt[aria-pressed="true"]{background:var(--brand);border-color:var(--brand);color:#fff}
@media(max-width:620px){.pvt{display:none}}
.cta{border:1px solid var(--ink)!important;border-radius:4px;padding:8px 15px;font-size:13.5px;font-weight:500;color:var(--ink)!important}
.cta:hover{background:var(--ink);color:var(--canvas)!important}

/* ============ sceaux (dispositif central) ============ */
.pv{display:none;align-items:center;gap:6px;font-size:9.5px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;
    padding:2px 7px;border-radius:2px;border:1px dashed var(--line);color:var(--faint);vertical-align:middle;
    line-height:1.7;white-space:nowrap}
.pv .s{font-weight:400;letter-spacing:.03em;text-transform:none;opacity:.85}
.pv.v{border:1px solid var(--ver);background:var(--ver-s);color:var(--ver)}
.pv.a{border:1px solid var(--gate);background:var(--gate-s);color:var(--gate)}
body.prov .pv{display:inline-flex;animation:fd .3s linear}
body.prov [data-claim]{background:var(--brand-s);border-radius:2px;box-shadow:0 0 0 3px var(--brand-s)}
.pvhint{display:none;margin-top:var(--s5);padding:var(--s4) var(--s5);border:1px solid var(--brand);
        background:var(--brand-s);border-radius:4px;font-size:14px;color:#141a8a;max-width:66ch}
body.prov .pvhint{display:block;animation:fd .3s linear}

/* ============ hero ============ */
main{position:relative}
.hero{padding:clamp(60px,11vw,150px) 0 var(--s9);border-bottom:1px solid var(--line)}
.eb{display:flex;align-items:center;gap:10px;margin-bottom:var(--s6);opacity:0;animation:fd .5s var(--ease) .05s forwards}
.eb i{width:6px;height:6px;border-radius:50%;background:var(--ver)}
h1{font-family:var(--mono);font-weight:500;font-size:clamp(2.1rem,7vw,5.6rem);line-height:.93;letter-spacing:-.055em;
   text-transform:uppercase;margin:0 0 var(--s6);max-width:15ch}
h1 .l{display:block;overflow:hidden}
h1 .l>i{display:block;font-style:normal;transform:translateY(105%);animation:rs .55s var(--ease) forwards}
h1 .l:nth-child(2)>i{animation-delay:.07s}h1 .l:nth-child(3)>i{animation-delay:.14s}h1 .l:nth-child(4)>i{animation-delay:.21s}
h1 em{font-style:normal;color:var(--brand)}
.ld{max-width:56ch;color:var(--muted);font-size:18.5px;margin:0 0 var(--s7);opacity:0;animation:fd .6s var(--ease) .34s forwards}
.ld b{color:var(--ink);font-weight:600}
.hact{display:flex;gap:var(--s3);flex-wrap:wrap;opacity:0;animation:fd .6s var(--ease) .44s forwards}
.bt{border:1px solid var(--ink);background:var(--ink);color:var(--canvas);border-radius:4px;padding:13px 22px;
    font-size:15px;font-weight:500;min-height:46px;display:inline-flex;align-items:center;gap:10px;
    text-decoration:none;transition:all 130ms}
.bt:hover{background:var(--brand);border-color:var(--brand);color:#fff}
.bt.g{background:transparent;color:var(--ink);border-color:var(--line)}
.bt.g:hover{background:var(--raised);color:var(--ink);border-color:var(--ink)}
.hstat{margin-top:var(--s10);padding-top:var(--s4);border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:var(--s5) var(--s8);
       opacity:0;animation:fd .6s var(--ease) .56s forwards}
.hstat div{font-size:13.5px;color:var(--muted);display:flex;gap:9px;align-items:baseline;flex-wrap:wrap}
.hstat b{font-family:var(--mono);font-variant-numeric:tabular-nums;font-weight:500;font-size:15px;color:var(--ink)}

/* ============ sections ============ */
section.s{padding:var(--s10) 0;border-bottom:1px solid var(--line)}
.sh{margin-bottom:var(--s8);max-width:900px}
.sn{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--brand);display:block;margin-bottom:var(--s4)}
.sh h2{font-family:var(--mono);font-weight:500;font-size:clamp(1.5rem,3.6vw,2.5rem);line-height:1.06;letter-spacing:-.045em;
       text-transform:uppercase;margin:0 0 var(--s4);max-width:20ch}
.sh p{margin:0;max-width:60ch;color:var(--muted);font-size:17px}
.sh p+p{margin-top:var(--s3)}

/* échecs */
.fails{display:grid;grid-template-columns:repeat(auto-fit,minmax(258px,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.fl{background:var(--canvas);padding:var(--s6) var(--s5);display:flex;flex-direction:column;gap:var(--s3)}
.fl .no{font-family:var(--mono);font-size:11px;color:var(--stop)}
.fl h3{font-size:19px;font-weight:600;margin:0;letter-spacing:-.015em}
.fl p{margin:0;font-size:14.5px;color:var(--muted)}
.fl .fix{margin-top:auto;padding-top:var(--s4);border-top:1px solid var(--line-2);font-size:13.5px}
.fl .fix b{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ver);margin-bottom:4px}

/* niveaux — stepper */
.lv{display:grid;grid-template-columns:230px 1fr;gap:var(--s7)}
@media(max-width:840px){.lv{grid-template-columns:1fr;gap:var(--s5)}}
.lvn{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line);align-self:start}
@media(max-width:840px){.lvn{flex-direction:row;overflow-x:auto}}
.lvb{background:var(--canvas);border:0;text-align:left;padding:var(--s4) var(--s5);display:flex;flex-direction:column;gap:3px;transition:background 140ms;min-width:150px}
.lvb:hover{background:var(--raised)}
.lvb.on{background:var(--auth);box-shadow:inset 3px 0 0 var(--brand)}
@media(max-width:840px){.lvb.on{box-shadow:inset 0 3px 0 var(--brand)}}
.lvb .t{font-size:16px;font-weight:600;letter-spacing:-.01em}
.lvb .d{font-size:12.5px;color:var(--faint)}
.lvp{background:var(--auth);border:1px solid var(--line);border-radius:2px;padding:var(--s6);min-height:340px}
.lvq{font-family:var(--mono);font-size:14px;line-height:1.5;letter-spacing:-.02em;padding-left:var(--s4);
     border-left:2px solid var(--brand);margin:0 0 var(--s5);color:var(--muted)}
.lvo{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}
.lvo li{display:grid;grid-template-columns:20px 1fr;gap:11px;font-size:15px;align-items:start}
.lvo li i{font-family:var(--mono);font-size:12px;color:var(--faint);padding-top:3px;font-style:normal}
.lvo li.plus i{color:var(--ver)}
.lvo li.no{color:var(--faint)}
.lvw{margin-top:var(--s5);padding-top:var(--s4);border-top:1px solid var(--line-2);font-size:14px;color:var(--muted)}
.lvw b{color:var(--ink);font-weight:600}

/* sceau démo */
.sd{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4)}
@media(max-width:780px){.sd{grid-template-columns:1fr}}
.sdc{background:var(--auth);border:1px solid var(--line);border-radius:2px;padding:var(--s5)}
.sdc.dash{background:transparent;border-style:dashed}
.sdt{display:inline-flex;align-items:center;gap:7px;margin-bottom:var(--s4);font-size:10px;font-weight:600;
     letter-spacing:.11em;text-transform:uppercase;padding:3px 8px;border-radius:2px;border:1px dashed var(--line);color:var(--faint)}
.sdt .s{font-weight:400;letter-spacing:.03em;text-transform:none}
.sdt.v{border:1px solid var(--ver);background:var(--ver-s);color:var(--ver);cursor:pointer}
.sdc .val{font-family:var(--mono);font-weight:500;font-size:clamp(1.5rem,3.4vw,2.1rem);letter-spacing:-.04em;margin:0 0 6px}
.sdc p{margin:0;font-size:14.5px;color:var(--muted)}
.calc{margin-top:var(--s4);border-top:1px solid var(--line-2);padding-top:var(--s3)}
.calc summary{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);cursor:pointer;list-style:none}
.calc summary::-webkit-details-marker{display:none}
.calc summary::before{content:"+ ";color:var(--brand)}
.calc[open] summary::before{content:"– "}
.calc pre{font-family:var(--mono);font-size:11.5px;line-height:1.9;color:var(--muted);margin:10px 0 0;white-space:pre-wrap;overflow-x:auto}
.rule{margin-top:var(--s6);border-left:2px solid var(--ink);padding:var(--s2) 0 var(--s2) var(--s5);max-width:62ch}
.rule p{margin:0;font-size:17px;font-weight:500}

/* mandat */
.mn{background:var(--auth);border:1px solid var(--line);border-top:3px solid var(--brand);border-radius:2px;padding:var(--s6)}
.gh{font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--faint);
    margin:var(--s5) 0 var(--s2);padding-bottom:6px;border-bottom:1px solid var(--line)}
.gh:first-child{margin-top:0}
.arts{margin:0;padding:0;list-style:none}
.arts li{display:grid;grid-template-columns:44px 1fr;gap:11px;padding:8px 0;border-bottom:1px solid var(--line-2);font-size:15px}
.arts li:last-child{border-bottom:0}
.arts .a{font-family:var(--mono);font-size:10.5px;color:var(--faint);padding-top:4px}
.arts li.d span:last-child{color:var(--stop)}
.risk{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin-top:var(--s6)}
.rk{background:var(--canvas);padding:var(--s4) var(--s5)}
.rk .c{font-family:var(--mono);font-weight:500;font-size:15px;letter-spacing:.04em}
.rk.r0 .c,.rk.r1 .c{color:var(--muted)} .rk.r2 .c{color:var(--gate)} .rk.r3 .c{color:var(--stop)}
.rk .e{font-size:13.5px;margin-top:4px}
.rk .b{font-size:12.5px;color:var(--faint);margin-top:3px}

/* méthode */
.mt{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.mt li{display:grid;grid-template-columns:120px 1fr 210px;gap:var(--s5);padding:var(--s5) 0;border-bottom:1px solid var(--line);align-items:start}
@media(max-width:840px){.mt li{grid-template-columns:1fr;gap:var(--s2)}}
.mt .w{font-family:var(--mono);font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--brand);padding-top:4px}
.mt h3{font-size:19px;font-weight:600;margin:0 0 5px;letter-spacing:-.015em}
.mt p{margin:0;color:var(--muted);font-size:15px;max-width:56ch}
.mt .out{font-size:13px;color:var(--faint);padding-top:4px}
.mt .out b{display:block;font-family:var(--mono);font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--faint);margin-bottom:5px}

/* preuves */
.pf{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.pfc{background:var(--auth);padding:var(--s6) var(--s5);display:flex;flex-direction:column;gap:var(--s3)}
.pfc .k{font-family:var(--mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--faint)}
.pfc h3{font-size:19px;font-weight:600;margin:0;letter-spacing:-.015em}
.pfc .big{font-family:var(--mono);font-weight:500;font-size:clamp(1.6rem,3.4vw,2.2rem);letter-spacing:-.045em;color:var(--brand)}
.pfc p{margin:0;font-size:14.5px;color:var(--muted)}
.pfc .m{margin-top:auto;padding-top:var(--s4);border-top:1px solid var(--line-2);font-family:var(--mono);font-size:11px;color:var(--faint)}

/* tarifs */
.pr{display:grid;grid-template-columns:repeat(auto-fit,minmax(238px,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.pc{background:var(--raised);padding:var(--s5);display:flex;flex-direction:column}
.pc.hi{background:var(--auth);box-shadow:inset 0 3px 0 var(--brand)}
.pc .tg{font-family:var(--mono);font-size:9.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--brand);margin-bottom:9px;min-height:14px}
.pc .nm{font-size:19px;font-weight:600;letter-spacing:-.015em}
.pc .amt{font-family:var(--mono);font-weight:500;font-size:28px;letter-spacing:-.045em;margin:9px 0 2px;font-variant-numeric:tabular-nums}
.pc .amt span{font-size:.42em;color:var(--faint)}
.pc ul{margin:var(--s3) 0 0;padding:0;list-style:none}
.pc li{font-size:13.5px;color:var(--muted);padding:4px 0 4px 16px;position:relative}
.pc li::before{content:"—";position:absolute;left:0;color:var(--faint)}
.note{margin-top:var(--s5);font-size:14px;color:var(--muted);max-width:72ch}

/* refus */
.no3{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:var(--s4)}
.nc{border:1px solid var(--stop);background:var(--stop-s);border-radius:2px;padding:var(--s5)}
.nc h3{font-size:16.5px;font-weight:600;margin:0 0 6px;color:#7c1a13}
.nc p{margin:0;font-size:14px;color:#7c1a13}

/* final */
.fin{padding:var(--s10) 0;text-align:left}
.fin h2{font-family:var(--mono);font-weight:500;font-size:clamp(1.7rem,5vw,3.4rem);line-height:1;letter-spacing:-.05em;
        text-transform:uppercase;margin:0 0 var(--s5);max-width:17ch}
.fin p{max-width:56ch;color:var(--muted);font-size:17.5px;margin:0 0 var(--s6)}
.ask{margin-top:var(--s7);padding-top:var(--s5);border-top:1px solid var(--line);display:grid;
     grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:var(--s5)}
.ask div{font-size:14px;color:var(--muted)}
.ask b{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--faint);margin-bottom:6px}

footer{border-top:1px solid var(--line);padding:var(--s6) 0 var(--s9)}
footer .wrap{display:flex;flex-wrap:wrap;gap:var(--s6);justify-content:space-between}
footer nav{display:flex;flex-wrap:wrap;gap:var(--s4)}
footer a{font-size:13.5px;color:var(--muted);text-decoration:none}
footer a:hover{color:var(--brand)}
footer p{margin:0;font-size:12px;color:var(--faint);max-width:34ch}

.rev{opacity:0;transform:translateY(16px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.rev.in{opacity:1;transform:none}

@keyframes rs{to{transform:translateY(0)}}
@keyframes fd{to{opacity:1}}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms !important;transition-duration:.01ms !important}
  html{scroll-behavior:auto}h1 .l>i{transform:none}.rev{opacity:1;transform:none}
}

/* ============ form (A2A tokens) ============ */
.hp{position:absolute;left:-9999px;height:0;overflow:hidden}
.ask-form{margin-top:var(--s7);background:var(--auth);border:1px solid var(--line);border-radius:2px;padding:var(--s6);max-width:720px}
.ask-form h3{font-size:19px;font-weight:600;margin:0 0 6px;letter-spacing:-.015em}
.ask-form .fd{margin:0 0 var(--s5);font-size:14.5px;color:var(--muted);max-width:56ch}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:var(--s4)}
@media(max-width:560px){.frow{grid-template-columns:1fr}}
.fld{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--s4)}
.fld label{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}
.fld input,.fld select,.fld textarea{
  font:inherit;font-size:16px;color:var(--ink);background:var(--canvas);
  border:1px solid var(--line);border-radius:2px;padding:11px 12px;width:100%;min-height:46px}
.fld textarea{min-height:110px;resize:vertical;line-height:1.5}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:2px solid var(--brand);outline-offset:2px;border-color:var(--brand)}
.ferr{font-size:13px;color:var(--stop)}
.form-alert{margin-bottom:var(--s4);padding:var(--s4);border:1px solid var(--stop);background:var(--stop-s);color:#7c1a13;font-size:14px;border-radius:2px}
.form-note{font-size:13px;color:var(--faint);margin:0 0 var(--s4)}
.form-note a{color:var(--brand);text-decoration:none}
.form-note a:hover{text-decoration:underline}
.success{padding:var(--s5);border:1px solid var(--ver);background:var(--ver-s);border-radius:2px}
.success h4{margin:0 0 6px;font-size:18px}
.success p{margin:0;font-size:14.5px;color:var(--muted)}
button.bt{appearance:none;-webkit-appearance:none}
button.bt[disabled]{opacity:.55;cursor:wait}
.legal{padding:var(--s10) 0 var(--s9);max-width:720px}
.legal h1{font-family:var(--mono);font-weight:500;font-size:clamp(1.6rem,4vw,2.4rem);text-transform:uppercase;letter-spacing:-.04em;margin:0 0 var(--s6)}
.legal h2{font-size:16px;margin:28px 0 8px}
.legal p{color:var(--muted);font-size:15.5px;margin:0 0 var(--s3)}
.legal a{color:var(--brand);text-decoration:none}
.legal a:hover{text-decoration:underline}
.errpage{padding:var(--s10) 0;text-align:left}
