/* Demande de devis — page-devis.php. Classes prefixees dv-.
   Seul parcours du site ou l'utilisateur produit au lieu de lire : tout ce
   qui peut faire abandonner compte davantage qu'ailleurs. */

.dv-prog{border-bottom:1px solid var(--k2);background:var(--k0)}
.dv-prog-in{display:flex;align-items:center;padding-block:16px}
.dv-st{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.dv-st:last-child{flex:none}
.dv-st-n{width:28px;height:28px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'DM Mono',monospace;font-size:14px;background:#fff;border:1.5px solid var(--k3);color:var(--k5);transition:background .18s,border-color .18s,color .18s}
.dv-st-l{font-size:14.5px;font-weight:600;color:var(--k5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dv-st-bar{flex:1;height:2px;background:var(--k2);margin:0 12px;min-width:16px;border-radius:2px}
.dv-st.on .dv-st-n{background:var(--co4);border-color:var(--co4);color:#fff}
.dv-st.on .dv-st-l{color:var(--k8)}
.dv-st.done .dv-st-n,.dv-st.done .dv-st-bar{background:var(--ok-solid);border-color:var(--ok-solid);color:#fff}
.dv-st.done .dv-st-l{color:var(--k6)}

.dv-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:44px;align-items:start;padding-block:36px 72px}
.dv-step{display:none}
.dv-step.on{display:block}
.dv-k{font-family:'DM Mono',monospace;font-size:12.5px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--co5);display:block;margin-bottom:10px}
.dv-step h1{font-size:clamp(25px,3.6vw,34px);font-weight:700;letter-spacing:-.035em;line-height:1.08;margin:0}
.dv-x{font-size:16px;line-height:1.65;color:var(--k6);max-width:58ch;margin:12px 0 0}

.dv-f{margin-top:26px}
.dv-l{display:block;font-size:15.5px;font-weight:600;color:var(--k8);margin-bottom:4px}
.dv-h{display:block;font-size:14px;line-height:1.5;color:var(--k5);margin-bottom:9px}
.dv-opt-l{font-family:'DM Mono',monospace;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--k-label);margin-left:7px;font-weight:500}
.dv-inp,.dv-tar,.dv-sel{width:100%;font-size:16px;color:var(--k8);background:#fff;border:1.5px solid var(--k2);border-radius:var(--r8);padding:12px 14px;transition:border-color .14s,box-shadow .14s}
.dv-inp:focus,.dv-tar:focus,.dv-sel:focus{outline:none;border-color:var(--co3);box-shadow:var(--shf)}
.dv-tar{min-height:120px;resize:vertical;line-height:1.6}
.dv-f.err .dv-inp,.dv-f.err .dv-tar,.dv-f.err .dv-sel{border-color:var(--er-dot);background:var(--er-bg)}
.dv-err{display:none;align-items:center;gap:7px;font-size:14.5px;font-weight:600;color:var(--er-tx);margin-top:7px}
.dv-err i{font-size:15.5px}
.dv-f.err .dv-err{display:flex}
/* Le compteur guide avant l'echec, il ne juge pas apres. */
.dv-cnt{font-family:'DM Mono',monospace;font-size:12.5px;color:var(--k-label);text-align:right;margin-top:6px;transition:color .2s}
.dv-cnt.court{color:var(--k5);text-align:left}
.dv-cnt.ok{color:var(--ok-solid)}

.dv-opts{display:grid;gap:9px}
.dv-opt{position:relative;display:flex;align-items:center;gap:12px;border:1.5px solid var(--k2);border-radius:var(--r12);padding:14px 16px;cursor:pointer;background:#fff;transition:border-color .14s,background .14s}
.dv-opt:hover{border-color:var(--k3);background:var(--k0)}
.dv-opt input{position:absolute;opacity:0;pointer-events:none}
.dv-opt>span:not(.dv-dot){display:block;flex:1;min-width:0}
.dv-dot{width:20px;height:20px;flex:none;border-radius:50%;border:2px solid var(--k3);display:flex;align-items:center;justify-content:center;transition:border-color .14s}
.dv-dot::after{content:'';width:10px;height:10px;border-radius:50%;background:var(--co4);transform:scale(0);transition:transform .16s}
.dv-opt input:checked~.dv-dot{border-color:var(--co4)}
.dv-opt input:checked~.dv-dot::after{transform:scale(1)}
.dv-opt:has(input:checked){border-color:var(--co4);background:var(--co0)}
.dv-opt input:focus-visible~.dv-dot{outline:2px solid var(--co4);outline-offset:2px}
.dv-opt-t{display:block;font-size:15.5px;font-weight:600;color:var(--k8);line-height:1.3}
.dv-opt-x{display:block;font-size:14px;color:var(--k5);line-height:1.45;margin-top:3px}
.dv-opt-i{margin-left:auto;font-size:20px;color:var(--k4);flex:none}

.dv-consent{display:flex;gap:12px;align-items:flex-start;border:1.5px solid var(--k2);border-radius:var(--r12);padding:15px 17px;background:var(--k0);cursor:pointer;margin-top:26px}
.dv-consent.err{border-color:var(--er-dot);background:var(--er-bg)}
.dv-consent input{position:absolute;opacity:0;pointer-events:none}
.dv-box{width:20px;height:20px;flex:none;border-radius:var(--r4);border:2px solid var(--k3);display:flex;align-items:center;justify-content:center;margin-top:1px;transition:background .14s,border-color .14s}
.dv-box i{font-size:14.5px;color:#fff;opacity:0;transition:opacity .14s}
.dv-consent input:checked~.dv-box{background:var(--co4);border-color:var(--co4)}
.dv-consent input:checked~.dv-box i{opacity:1}
.dv-consent-t{font-size:14.5px;line-height:1.6;color:var(--k6)}
.dv-consent-t b{color:var(--k8);font-weight:600}
.dv-consent-t a{color:var(--co5);font-weight:600;border-bottom:1px solid var(--co1)}

.dv-nav{display:flex;align-items:center;gap:12px;margin-top:34px;padding-top:24px;border-top:1px solid var(--k2)}
.dv-nav .dv-back{margin-right:auto}
.btn.envoi{pointer-events:none;opacity:.75}
.btn.envoi i{animation:dv-tourne .8s linear infinite}
@keyframes dv-tourne{to{transform:rotate(360deg)}}

.dv-aside{position:sticky;top:calc(var(--hdr-h) + 20px);display:flex;flex-direction:column;gap:12px}
.dv-dest{border:1.5px solid var(--k2);border-radius:var(--r12);background:#fff;box-shadow:var(--sh2);overflow:hidden}
.dv-dest-h{padding:13px 16px;border-bottom:1px solid var(--k2);background:var(--k0);font-family:'DM Mono',monospace;font-size:12px;font-weight:500;letter-spacing:.13em;text-transform:uppercase;color:var(--k-label)}
.dv-dest-b{padding:15px 16px}
.dv-pro{display:flex;gap:12px;align-items:center}
/* Plusieurs destinataires : chacun doit se lire comme une entree distincte */
.dv-pro + .dv-pro{margin-top:14px;padding-top:14px;border-top:1px solid var(--k1)}
.dv-pro>span:not(.dv-mark){display:block;min-width:0}
.dv-mark{width:44px;height:44px;flex:none;border-radius:var(--r8);background:linear-gradient(140deg,var(--co0),var(--co1));color:var(--co5);display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:700;letter-spacing:-.03em}
.dv-pro-n{display:block;font-size:16px;font-weight:700;color:var(--k8);letter-spacing:-.02em;line-height:1.25}
.dv-pro-m{display:block;font-size:13.5px;color:var(--k5);margin-top:3px}
.dv-dest-badges{margin-top:12px;display:flex;flex-wrap:wrap;gap:6px}
.dv-note{padding:12px 16px;background:var(--k0);border-top:1px solid var(--k2);font-size:13.5px;line-height:1.55;color:var(--k5)}
.dv-note b{color:var(--k7);font-weight:600}
.dv-list{list-style:none;margin:0;padding:0}
.dv-list li{display:flex;align-items:center;gap:10px;font-size:14.5px;color:var(--k6);padding:9px 0;border-bottom:1px solid var(--k1)}
.dv-list li:last-child{border-bottom:none}
.dv-list i{font-size:16px;color:var(--k4);flex:none}

.dv-strip{display:flex;gap:13px;align-items:flex-start;border-radius:var(--r12);padding:15px 17px;border:1px solid var(--k2);background:#fff;margin-top:24px}
.dv-strip i.ico{font-size:21px;flex:none;margin-top:1px}
.dv-strip-t{font-size:15px;font-weight:700;margin:0 0 4px}
.dv-strip-x{font-size:14.5px;line-height:1.6;color:var(--k5);margin:0}
.dv-strip-x a{font-weight:600;color:var(--co5);border-bottom:1px solid var(--co1)}
.dv-strip.warn{background:#FFFBEB;border-color:var(--yl-edge)}
.dv-strip.warn i.ico{color:var(--yl4)}
.dv-strip.warn .dv-strip-t{color:var(--yl5)}
.dv-strip.warn .dv-strip-x{color:var(--yl-ink2)}
.dv-strip.info{background:var(--l-tint);border-color:var(--l-edge)}
.dv-strip.info i.ico{color:var(--lm)}
.dv-strip.info .dv-strip-t{color:var(--lp)}
.dv-strip.info .dv-strip-x{color:#3C6660}
.dv-strip.err{background:var(--er-bg);border-color:var(--er-edge)}
.dv-strip.err i.ico{color:var(--er-dot)}
.dv-strip.err .dv-strip-t{color:var(--er-tx)}
.dv-strip.err .dv-strip-x{color:var(--er-tx)}

/* Confirmation */
.dv-done{text-align:center;max-width:640px;margin:0 auto;padding-block:16px 0}
.dv-done-i{width:72px;height:72px;margin:0 auto 22px;border-radius:50%;background:var(--ok-bg);border:1px solid var(--ok-edge);color:var(--ok-solid);display:flex;align-items:center;justify-content:center;font-size:36px}
.dv-done h1{font-size:clamp(26px,3.8vw,36px);font-weight:700;letter-spacing:-.035em;line-height:1.08;margin:0}
.dv-done-x{font-size:16px;line-height:1.68;color:var(--k6);margin:14px 0 0}
.dv-refs{display:flex;gap:9px;justify-content:center;flex-wrap:wrap;margin-top:18px}
.dv-ref{display:inline-flex;align-items:center;gap:8px;font-family:'DM Mono',monospace;font-size:14px;color:var(--k6);background:var(--k0);border:1px solid var(--k2);border-radius:var(--rp);padding:7px 15px}
.dv-ref b{color:var(--k8);font-weight:500}
.dv-envoi{margin-top:28px;padding:22px;border:1.5px solid var(--wa-edge);background:var(--wa-bg);border-radius:var(--r12);text-align:left}
.dv-envoi-t{font-size:17px;font-weight:700;color:var(--wa-ink);letter-spacing:-.02em;margin:0 0 8px}
.dv-envoi-x{font-size:15px;line-height:1.65;color:#0B5C39;margin:0 0 16px}
.dv-envoi .btn{width:100%}
.btn.wa{background:var(--wa-ink);color:#fff}
.btn.wa:hover{background:#0B5C39}
.dv-suite{text-align:left;border:1.5px solid var(--k2);border-radius:var(--r12);padding:20px 22px;margin-top:20px;background:#fff}
.dv-suite-h{font-size:16px;font-weight:700;letter-spacing:-.02em;margin:0 0 16px}
.dv-suite ol{list-style:none;counter-reset:s;margin:0;padding:0}
.dv-suite li{counter-increment:s;position:relative;padding:0 0 18px 40px;font-size:15px;line-height:1.6;color:var(--k6)}
.dv-suite li:last-child{padding-bottom:0}
.dv-suite li::before{content:counter(s);position:absolute;left:0;top:-2px;width:26px;height:26px;border-radius:50%;background:var(--k1);color:var(--k6);font-family:'DM Mono',monospace;font-size:13px;display:flex;align-items:center;justify-content:center}
.dv-suite li::after{content:'';position:absolute;left:12px;top:28px;bottom:2px;width:1px;background:var(--k2)}
.dv-suite li:last-child::after{display:none}
.dv-suite b{color:var(--k8);font-weight:600}
.dv-acts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:28px}

.dv-bar{position:fixed;left:0;right:0;bottom:0;z-index:70;display:none;gap:10px;align-items:center;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:rgba(255,255,255,.97);backdrop-filter:blur(8px);border-top:1px solid var(--k2)}
.dv-bar .btn{flex:1}
.dv-bar-b{width:46px;height:46px;flex:none;border-radius:var(--r8);border:1.5px solid var(--k2);background:#fff;color:var(--k6);display:flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer}

@media (max-width:1000px){
  .dv-grid{grid-template-columns:1fr;gap:0}
  /* Le destinataire passe avant le formulaire : on doit savoir a qui on
     ecrit pendant qu'on ecrit, pas apres. */
  .dv-aside{position:static;order:-1;margin:0 0 30px;padding-bottom:26px;border-bottom:1px solid var(--k2)}
}
@media (max-width:760px){
  .dv-grid{padding-block:22px 90px}
  .dv-st-l{display:none}
  .dv-st-bar{margin:0 8px}
  .dv-prog-in{padding-block:12px}
  .dv-nav{display:none}
  .dv-bar{display:flex}
}
/* \u2500\u2500 Entree directe /devis/ \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500
   Provenance reelle d'un destinataire. Un professionnel remonte par
   zones_intervention n'est pas etabli dans la commune demandee : le
   presenter comme tel serait faux. */
.dv-int{color:var(--lm)}
.dv-hz{color:var(--yl4)}

/* Le consentement en erreur : meme traitement visuel que les champs, sinon
   c'est le seul refus du formulaire qui ne se voit pas. */
.dv-consent.err .dv-box{border-color:var(--dg-solid);background:var(--dg-bg)}

/* Etape franchie avant le POST : sur /devis/ le metier et la commune se
   choisissent en GET, la premiere pastille arrive deja cochee. */
.dv-st.done .dv-st-n{background:var(--ok-solid);color:#fff;border-color:var(--ok-solid)}

/* Reserve sur une fiche non revendiquee : visible avant la saisie, pas apres. */
.dv-warn{display:flex;align-items:flex-start;gap:8px;margin:0;padding:11px 13px;border-top:1px solid var(--yl-edge);background:var(--yl0);color:var(--yl-ink2);font-size:13px;line-height:1.5}
.dv-warn i{font-size:16px;color:var(--yl4);flex:none;margin-top:1px}
