/* Formulaires (devis + cahier des charges) — extraits des deux fichiers fournis,
   scopés sous .msf et branchés sur les tokens de site.css : une seule identité. */
.msf{
  --bg:#07080a; --surface:#10131a; --sunk:#0b0d11; --ink:#f5f6f7; --muted:#9aa3ad; --line:rgba(255,255,255,.13);
  --accent:#22d3ee; --accent-ink:#04141a; --accent-soft:rgba(34,211,238,.12); --saffron:#ff9a1f; --saffron-soft:rgba(255,154,31,.12);
  --danger:#ff8a80; --wa:#25d366; --f-display:'Plus Jakarta Sans',system-ui,sans-serif; --f-body:'Plus Jakarta Sans',system-ui,sans-serif; --f-mono:ui-monospace,SFMono-Regular,Menlo,monospace; --r:12px;
  font-family:var(--f-body);color:var(--ink)
}
.msf *{box-sizing:border-box}
.msf h1,.msf h2,.msf h3,.msf h4{font-family:var(--f-display);text-wrap:balance;margin:0;letter-spacing:-.01em}
.msf p{margin:0}
.msf .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.msf-intro{padding:clamp(32px,5vw,56px) 0 22px}
.msf-intro h1{font-size:clamp(1.9rem,1.3rem + 2.6vw,3rem);max-width:20ch;margin:14px 0}
.msf-intro .lead{max-width:62ch}
.msf-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:18px;font-size:var(--fs-xs);color:var(--muted)}
.msf-meta b{color:var(--ink)}
.msf-meta .tag{display:inline-flex;align-items:center;background:rgba(255,154,31,.12);color:var(--orange);border-radius:99px;padding:3px 11px;font-weight:600}
.msf .help{margin:0 0 22px;display:grid;grid-template-columns:auto minmax(0,1fr);gap:6px 14px;padding:14px 18px;border:1px solid var(--line);border-radius:12px;background:var(--surface);font-size:14.5px}
.msf .help b{font-family:var(--f-display)}
.msf .help ul{margin:0;padding-left:18px;display:grid;gap:3px;color:var(--muted);list-style:disc}
.msf .help ul strong{color:var(--ink)}
.msf .help .qm{width:26px;height:26px;border-radius:50%;background:var(--saffron-soft);color:var(--saffron);display:grid;place-items:center;font-weight:700;grid-row:span 2}
.msf #saved{font-family:var(--f-mono);font-size:12px;color:var(--accent)}
.msf .bar-row{display:flex;justify-content:space-between;gap:10px}
.msf .reset-wrap{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:22px;font-size:13px;color:var(--muted)}
.msf #reset{all:unset;cursor:pointer;color:var(--muted);text-decoration:underline;text-underline-offset:3px}
.msf #reset.armed{color:var(--danger);font-weight:600}
.msf #reset:focus-visible{outline:2px solid var(--accent)}
.msf .link{all:unset;cursor:pointer;color:var(--accent);font-weight:600;font-size:14px;text-decoration:underline;text-underline-offset:3px}
.msf .link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.msf .btn.wa{font-size:16px;padding:16px 22px}
.msf .btn.small{padding:8px 14px;font-size:14px}
.msf-wrap{padding-bottom:var(--section)}
.msf .sheet{background:var(--surface)}
.msf h1,.msf h2,.msf h3,.msf h4{font-family:var(--f-display); text-wrap:balance; margin:0; letter-spacing:-.01em}
.msf p{margin:0}
.msf .shell{max-width:1120px; margin:0 auto; display:grid; grid-template-columns:250px minmax(0,1fr); gap:28px; align-items:start}
.msf aside{position:sticky; top:calc(env(safe-area-inset-top, 0px) + 16px)}
.msf .rail{list-style:none; margin:0; padding:0; display:grid; gap:2px}
.msf .rail .grp{font-family:var(--f-mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); padding:14px 10px 4px}
.msf .rail .grp:first-child{padding-top:0}
.msf .rail button{all:unset; box-sizing:border-box; width:100%; display:flex; align-items:center; gap:10px; padding:7px 10px; border-radius:8px; font-size:14px; color:var(--muted); cursor:pointer}
.msf .rail button:disabled{cursor:default}
.msf .rail button:not(:disabled):hover{background:var(--surface); color:var(--ink)}
.msf .rail button:focus-visible{outline:2px solid var(--accent); outline-offset:1px}
.msf .rail .dot{width:9px; height:9px; border-radius:50%; border:1.5px solid var(--line); flex:none}
.msf .rail .done .dot{background:var(--accent); border-color:var(--accent)}
.msf .rail .done button{color:var(--ink)}
.msf .rail .now button{background:var(--surface); color:var(--ink); font-weight:600; box-shadow:inset 0 0 0 1px var(--line)}
.msf .rail .now .dot{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft)}
.msf .progress{display:none}
.msf .track{height:4px; background:var(--line); border-radius:4px; overflow:hidden}
.msf #bar{display:block; height:100%; background:var(--accent); width:0; transition:width .3s}
.msf #bar-lbl{font-family:var(--f-mono); font-size:12px; color:var(--muted)}
.msf .sheet{background:var(--surface); border:1px solid var(--line); border-radius:14px; padding:clamp(20px, 3.6vw, 40px); min-width:0}
.msf .step-head{display:grid; gap:8px; margin-bottom:26px; padding-bottom:22px; border-bottom:1px solid var(--line)}
.msf .eyebrow{font-family:var(--f-mono); font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--accent); display:flex; gap:12px; flex-wrap:wrap}
.msf .eyebrow span{color:var(--muted)}
.msf .step-head h2{font-size:clamp(23px, 3vw, 30px); line-height:1.15; outline:none}
.msf .intro{color:var(--muted); max-width:64ch}
.msf .fields{display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:22px 20px}
.msf .field{display:grid; gap:7px; align-content:start; min-width:0}
.msf .field.wide,.msf .subhead{grid-column:1 / -1}
.msf .subhead{padding-top:10px; display:grid; gap:4px}
.msf .subhead h3{font-size:17px}
.msf .subhead p{color:var(--muted); font-size:14px}
.msf .lbl{font-weight:600; font-size:15px}
.msf .req{color:var(--saffron)}
.msf .hint{font-size:13.5px; color:var(--muted); margin-top:-3px}
.msf input,.msf textarea,.msf select{font:inherit; color:var(--ink); background:var(--sunk); border:1px solid var(--line); border-radius:8px; padding:10px 12px; width:100%; min-width:0}
.msf textarea{resize:vertical; min-height:84px}
.msf input::placeholder,.msf textarea::placeholder{color:var(--muted); opacity:.75}
.msf input:focus,.msf textarea:focus,.msf select:focus{outline:none; border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); background:var(--surface)}
.msf .field.bad input,.msf .field.bad textarea,.msf .field.bad select{border-color:var(--danger)}
.msf .err{color:var(--danger); font-size:13.5px; font-weight:500}
.msf .chips{display:flex; flex-wrap:wrap; gap:8px}
.msf .chip,.msf .card-opt{position:relative; cursor:pointer}
.msf .chip input,.msf .card-opt input{position:absolute; opacity:0; width:1px; height:1px}
.msf .chip .txt{display:inline-flex; align-items:center; padding:7px 13px; border:1px solid var(--line); border-radius:99px; font-size:14.5px; background:var(--sunk); transition:background .15s, border-color .15s}
.msf .chip .tick{display:none}
.msf .chip:hover .txt{border-color:var(--accent)}
.msf .chip input:checked ~ .txt{background:var(--accent); border-color:var(--accent); color:var(--accent-ink)}
.msf .chip input:focus-visible ~ .txt{outline:2px solid var(--accent); outline-offset:2px}
.msf .field.bad .chip .txt,.msf .field.bad .card-opt{border-color:var(--danger)}
.msf .cards{display:grid; grid-template-columns:repeat(auto-fill, minmax(230px,1fr)); gap:10px}
.msf .card-opt{display:flex; gap:12px; align-items:flex-start; padding:13px 14px; border:1px solid var(--line); border-radius:var(--r); background:var(--sunk); transition:border-color .15s, background .15s}
.msf .card-opt:hover{border-color:var(--accent)}
.msf .card-opt .tick{flex:none; width:18px; height:18px; margin-top:2px; border-radius:5px; border:1.5px solid var(--muted); display:grid; place-items:center}
.msf .card-opt input[type=radio] ~ .tick{border-radius:50%}
.msf .card-opt input:checked ~ .tick{background:var(--accent); border-color:var(--accent)}
.msf .card-opt input:checked ~ .tick::after{content:""; width:5px; height:9px; border:solid var(--accent-ink); border-width:0 2px 2px 0; transform:translateY(-1px) rotate(45deg)}
.msf .card-opt:has(input:checked){border-color:var(--accent); background:var(--accent-soft)}
.msf .card-opt:has(input:focus-visible){outline:2px solid var(--accent); outline-offset:2px}
.msf .card-opt .txt{display:grid; gap:2px; min-width:0}
.msf .card-opt .v{font-weight:600; font-size:14.5px; line-height:1.35}
.msf .card-opt .d{font-size:13px; color:var(--muted); line-height:1.4}
.msf .rep{display:grid; gap:10px; justify-items:start}
.msf .rep-scroll{overflow-x:auto; width:100%; border:1px solid var(--line); border-radius:var(--r)}
.msf .rep table{border-collapse:collapse; width:100%; min-width:640px; font-size:14px}
.msf .rep th{font-family:var(--f-mono); font-size:11.5px; letter-spacing:.04em; text-transform:uppercase; color:var(--muted); text-align:left; font-weight:500; padding:9px 8px; background:var(--sunk); border-bottom:1px solid var(--line)}
.msf .rep td{padding:6px 8px; border-bottom:1px solid var(--line)}
.msf .rep tr:last-child td{border-bottom:0}
.msf .rep td input{padding:7px 9px; font-size:14px}
.msf .rep .n{width:34px; font-family:var(--f-mono); color:var(--muted); font-variant-numeric:tabular-nums}
.msf .rep .x{width:44px}
.msf .icon-btn{font:inherit; font-size:18px; line-height:1; width:30px; height:30px; border-radius:6px; border:1px solid var(--line); background:transparent; color:var(--muted); cursor:pointer}
.msf .icon-btn:disabled{opacity:.35; cursor:default}
.msf .icon-btn:not(:disabled):hover{color:var(--danger); border-color:var(--danger)}
.msf .navbtns{display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:32px; padding-top:22px; border-top:1px solid var(--line); flex-wrap:wrap}
.msf .navbtns .spacer{flex:1}
.msf .recap{display:grid; gap:18px}
.msf .send{display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr); gap:22px; padding:22px; border-radius:12px; background:var(--accent-soft); border:1px solid var(--accent)}
.msf .send-copy{display:grid; gap:8px; align-content:start}
.msf .send h3{font-size:22px}
.msf .send-copy > p:not(.eyebrow){color:var(--ink); opacity:.85}
.msf .send-actions{display:grid; gap:10px; align-content:start}
.msf .fine{font-size:13px; color:var(--muted)}
.msf .num{font-family:var(--f-mono); color:var(--ink); user-select:all}
.msf .warn{background:var(--saffron-soft); color:var(--ink); border-left:3px solid var(--saffron); padding:8px 12px; border-radius:6px; font-size:14px}
.msf .next{grid-column:1 / -1; list-style:none; margin:4px 0 0; padding:16px 0 0; border-top:1px solid var(--accent); display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:14px; counter-reset:n}
.msf .next li{counter-increment:n; display:grid; gap:3px; font-size:14px; color:var(--muted)}
.msf .next li strong{color:var(--ink); font-size:14.5px}
.msf .next li strong::before{content:counter(n) ". "; font-family:var(--f-mono); color:var(--accent)}
.msf .copy-src{min-height:160px; font-family:var(--f-mono); font-size:12.5px}
.msf .rc{border:1px solid var(--line); border-radius:var(--r); overflow:hidden}
.msf .rc header{display:flex; justify-content:space-between; align-items:center; gap:12px; padding:11px 16px; background:var(--sunk); border-bottom:1px solid var(--line)}
.msf .rc h4{font-size:15.5px}
.msf .rc dl{margin:0; display:grid}
.msf .rc dl div{display:grid; grid-template-columns:minmax(0,220px) minmax(0,1fr); gap:16px; padding:9px 16px; border-bottom:1px solid var(--line)}
.msf .rc dl div:last-child{border-bottom:0}
.msf .rc dt{color:var(--muted); font-size:14px}
.msf .rc dd{margin:0; font-size:14.5px; overflow-wrap:anywhere}
.msf .empty{padding:12px 16px; color:var(--muted); font-size:14px}
@media (max-width: 880px){
.msf .shell{grid-template-columns:minmax(0,1fr)}
.msf aside{display:none}
.msf .progress{display:grid; gap:6px; position:sticky; top:env(safe-area-inset-top, 0px); z-index:5; background:var(--bg); padding-block:10px}
.msf .send{grid-template-columns:minmax(0,1fr)}
}
@media (max-width: 600px){
.msf .fields{grid-template-columns:minmax(0,1fr)}
.msf .rc dl div{grid-template-columns:minmax(0,1fr); gap:2px}
.msf .next{grid-template-columns:minmax(0,1fr)}
.msf .navbtns .btn{flex:1}
}
.msf .help{max-width:1120px; margin:0 auto 22px; display:grid; grid-template-columns:auto minmax(0,1fr); gap:6px 14px; padding:14px 18px; border:1px solid var(--line); border-radius:12px; background:var(--surface); font-size:14.5px}
.msf .help b{font-family:var(--f-display)}
.msf .help ul{margin:0; padding-left:18px; display:grid; gap:3px; color:var(--muted)}
.msf .help ul strong{color:var(--ink)}
.msf .help .qm{width:26px; height:26px; border-radius:50%; background:var(--saffron-soft); color:var(--saffron); display:grid; place-items:center; font-weight:700; font-family:var(--f-display); grid-row:span 2}
.msf #saved{font-family:var(--f-mono); font-size:12px; color:var(--accent)}
.msf .bar-row{display:flex; justify-content:space-between; gap:10px}
@media (prefers-reduced-motion: reduce){.msf *{transition:none!important}}
.msf #top{scroll-margin-top:calc(var(--header-h) + 12px)}
.msf .progress{top:var(--header-h)}
.msf-dash{display:grid;gap:22px}

/* Espace client */
.msf-intro .eyebrow{font-family:var(--f-mono);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--orange)}
.msf-intro .lead{color:var(--ink-2)}
.proj-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:26px;list-style:none;padding:0}
.proj-step{display:flex;gap:14px;align-items:center;padding:16px 18px;border:1px solid var(--line);border-radius:14px;background:var(--surface);opacity:.7}
.proj-step.now{opacity:1;border-color:var(--accent);background:var(--accent-soft)}
.proj-step .n{width:30px;height:30px;border-radius:50%;flex:none;display:grid;place-items:center;font-family:var(--f-mono);font-size:13px;border:1px solid var(--line);color:var(--muted)}
.proj-step.now .n{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.proj-step b{display:block;font-size:15px}
.proj-step .st{font-size:12.5px;color:var(--muted)}
.msf-help-card{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}
.msf .login{max-width:460px;margin:clamp(24px,6vw,72px) auto;padding:clamp(24px,4vw,36px);border:1px solid var(--line);border-radius:var(--r-lg,24px);background:var(--surface)}
.msf .login h1{font-size:clamp(1.6rem,1.3rem + 1.4vw,2.2rem);margin:10px 0 10px}
.msf .login p{color:var(--ink-2);font-size:15px}
.msf .login form{display:grid;gap:14px;margin-top:22px}
.msf .login label{font-weight:600;font-size:15px}
.msf .login input{font:inherit;color:var(--ink);background:var(--sunk);border:1px solid var(--line);border-radius:10px;padding:13px 14px;width:100%;letter-spacing:.04em}
.msf .login input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.msf .login .err-msg{color:var(--danger);font-size:14px;min-height:1.2em}
.msf .login .small-note{margin-top:18px;font-size:13px;color:var(--muted)}
.msf .login .small-note a{color:var(--accent)}
.msf-top{display:flex;justify-content:flex-end;margin-bottom:6px}
@media (max-width:700px){.proj-steps{grid-template-columns:1fr}}

/* Alignements (surcharges des valeurs d'origine des fichiers fournis) */
.msf .help{max-width:none;margin:0 0 22px}
.msf .shell{max-width:none;margin:0}
.msf-dash{display:block}
.msf-dash > *{margin-bottom:22px}
.msf-dash > .reset-wrap,.msf-dash > .msf-help-card{margin-top:0}
.msf-intro h1{margin:14px 0 18px}
.msf .foot{display:none}
