/* =========================================================
   EZO FRANCE — Devis guidé en 3 étapes + barre d'action mobile
   ========================================================= */
.dv{max-width:880px;margin:0 auto;background:#fff;border-radius:22px;padding:clamp(22px,4vw,44px);
  box-shadow:0 1px 2px rgba(17,26,48,.05),0 30px 70px -36px rgba(17,26,48,.35);position:relative;overflow:hidden;color:#121b33}
.dv::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:linear-gradient(90deg,#6d8be0,#ee6a1f)}

/* Progression */
.dv-progress{list-style:none;display:flex;justify-content:space-between;position:relative;margin:0 auto 34px;max-width:520px}
.dv-progress li{display:flex;flex-direction:column;align-items:center;gap:8px;font-size:.78rem;font-weight:600;color:#9aa1b1;position:relative;z-index:1;transition:color .4s}
.dv-progress li b{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#fff;border:2px solid #dcd8cf;font-size:.85rem;transition:all .45s cubic-bezier(.34,1.56,.64,1)}
.dv-progress li.on{color:#121b33}
.dv-progress li.on b{border-color:#ee6a1f;background:#ee6a1f;color:#fff;transform:scale(1.08);box-shadow:0 6px 18px -6px rgba(238,106,31,.8)}
.dv-progress li.done b{border-color:#2546b0;background:#2546b0;color:#fff}
.dv-bar{position:absolute;left:17px;right:17px;top:16px;height:2px;background:#e6e2d9}
.dv-bar i{display:block;height:100%;width:0;background:linear-gradient(90deg,#2546b0,#ee6a1f);transition:width .6s cubic-bezier(.22,1,.36,1)}

/* Étapes */
.dv-form{position:relative}
.dv-step{border:0;margin:0;padding:0;min-width:0;animation:dvIn .55s cubic-bezier(.22,1,.36,1)}
.dv-step.back{animation-name:dvBack}
@keyframes dvIn{from{opacity:0;transform:translateX(34px)}to{opacity:1;transform:none}}
@keyframes dvBack{from{opacity:0;transform:translateX(-34px)}to{opacity:1;transform:none}}
.dv-step legend{font-size:clamp(1.25rem,2.4vw,1.6rem);font-weight:800;letter-spacing:-.02em;margin-bottom:22px;text-align:center;width:100%}
.dv-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}

/* Étape 1 : cartes projet */
.dv-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px}
.dv-card{position:relative;display:flex;flex-direction:column;gap:6px;padding:20px 16px 18px;border:1.5px solid #e6e2d9;border-radius:16px;cursor:pointer;background:#fbfaf7;
  transition:transform .35s cubic-bezier(.22,1,.36,1),border-color .3s,box-shadow .3s,background .3s}
.dv-card input{position:absolute;opacity:0;pointer-events:none}
.dv-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--c) 55%,#e6e2d9);box-shadow:0 18px 34px -20px color-mix(in srgb,var(--c) 70%,transparent);background:#fff}
.dv-card:has(input:checked){border-color:var(--c);background:color-mix(in srgb,var(--c) 7%,#fff);box-shadow:0 0 0 3px color-mix(in srgb,var(--c) 20%,transparent)}
.dv-card:has(input:focus-visible){outline:2px solid var(--c);outline-offset:3px}
.dv-ico{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;color:var(--c);background:color-mix(in srgb,var(--c) 14%,transparent);margin-bottom:6px;transition:transform .45s cubic-bezier(.34,1.56,.64,1)}
.dv-card:hover .dv-ico{transform:rotate(-8deg) scale(1.08)}
.dv-ico svg{width:24px;height:24px}
.dv-card b{font-size:.95rem;line-height:1.25}
.dv-card small{font-size:.78rem;color:#6b7386;line-height:1.35}
.dv-check{position:absolute;top:12px;right:12px;width:22px;height:22px;border-radius:50%;border:1.5px solid #d9d4ca;transition:all .3s}
.dv-card:has(input:checked) .dv-check{background:var(--c);border-color:var(--c);box-shadow:inset 0 0 0 4px #fff}

/* Étape 2 : pastilles */
.dv-q{margin-bottom:22px}
.dv-q>span{display:block;font-weight:700;font-size:.92rem;margin-bottom:10px}
.dv-q em{font-weight:400;color:#7a8295;font-style:normal}
.dv-chips{display:flex;flex-wrap:wrap;gap:8px}
.dv-chip input{position:absolute;opacity:0;pointer-events:none}
.dv-chip span{display:inline-block;padding:10px 16px;border-radius:999px;border:1.5px solid #e2ddd3;background:#fbfaf7;font-size:.88rem;cursor:pointer;transition:all .25s}
.dv-chip span:hover{border-color:#2546b0;color:#2546b0}
.dv-chip input:checked+span{background:#121b33;border-color:#121b33;color:#fff;transform:scale(1.03)}
.dv-chip input:focus-visible+span{outline:2px solid #ee6a1f;outline-offset:2px}

/* Étape 3 : champs */
.dv-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.dv-f{display:flex;flex-direction:column;gap:7px;font-size:.85rem;font-weight:600}
.dv-wide{grid-column:1/-1}
.dv-f input,.dv-f textarea{font:inherit;font-weight:400;font-size:.97rem;padding:13px 15px;border:1.5px solid #e2ddd3;border-radius:12px;background:#fbfaf7;color:#121b33;transition:border-color .25s,box-shadow .25s,background .25s}
.dv-f input:focus,.dv-f textarea:focus{outline:none;border-color:#2546b0;background:#fff;box-shadow:0 0 0 3px rgba(37,70,176,.14)}
.dv-f input.bad{border-color:#d43c2c;box-shadow:0 0 0 3px rgba(212,60,44,.12)}
.dv-consent{display:flex;gap:10px;align-items:flex-start;margin:18px 0 6px;font-size:.82rem;color:#5b6376;line-height:1.45;cursor:pointer}
.dv-consent input{margin-top:3px;accent-color:#ee6a1f;width:17px;height:17px;flex:0 0 auto}
.dv-err{color:#c3301f;font-size:.88rem;font-weight:600;margin-top:10px}
.dv-nav{display:flex;justify-content:space-between;gap:12px;margin-top:26px}
.dv .btn-ghost{border-color:#d9d4ca;color:#121b33}
.dv .btn-ghost:hover{background:#f3f0ea}
.dv .btn[disabled]{opacity:.45;pointer-events:none}

/* Confirmation */
.dv-done{text-align:center;padding:20px 0 6px;animation:dvIn .6s cubic-bezier(.22,1,.36,1)}
.dv-done-ico{width:74px;height:74px;margin:0 auto 18px;border-radius:50%;display:grid;place-items:center;background:#2bb673;color:#fff;box-shadow:0 14px 34px -12px rgba(43,182,115,.7);animation:dvPop .7s cubic-bezier(.34,1.56,.64,1)}
.dv-done-ico svg{width:36px;height:36px;stroke-dasharray:30;stroke-dashoffset:30;animation:dvTick .5s ease .35s forwards}
.dv-done h3{font-size:1.5rem;margin-bottom:10px}
.dv-done p{color:#5b6376;max-width:46ch;margin:0 auto}
.dv-recap{margin-top:14px!important;font-size:.86rem;color:#7a8295!important}
@keyframes dvPop{from{transform:scale(0)}to{transform:scale(1)}}
@keyframes dvTick{to{stroke-dashoffset:0}}

@media(max-width:640px){.dv-grid{grid-template-columns:1fr}.dv-cards{grid-template-columns:1fr 1fr}.dv-card:last-child{grid-column:1/-1}.dv-progress li{font-size:.7rem}}

/* ---------- Barre d'action mobile ---------- */
.ezo-mbar{display:none}
@media(max-width:960px){
  .ezo-mbar{display:flex;gap:10px;position:fixed;left:12px;right:12px;bottom:12px;z-index:240;padding:8px;border-radius:18px;
    background:rgba(13,21,40,.88);backdrop-filter:blur(14px);box-shadow:0 18px 40px -14px rgba(0,0,0,.7);
    transform:translateY(130%);transition:transform .45s cubic-bezier(.22,1,.36,1)}
  .ezo-mbar.show{transform:none}
  .ezo-mbar a{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:13px 10px;border-radius:12px;font-weight:700;font-size:.92rem;color:#fff}
  .ezo-mbar a.call{background:rgba(255,255,255,.1)}
  .ezo-mbar a.quote{background:linear-gradient(135deg,#ee6a1f,#d9530f)}
  .ezo-mbar a.wa{background:#1fa855;flex:0 0 52px}
  .ezo-mbar svg{width:18px;height:18px}
  .ezo-top{bottom:92px!important}
  body{padding-bottom:84px}
}
@media(prefers-reduced-motion:reduce){.dv-step,.dv-done,.dv-done-ico{animation:none}.dv-done-ico svg{stroke-dashoffset:0}}
@media(max-width:960px){.ezo-top{display:none!important}}
