/* ---------------------------------------------------------
   Site-wide quote modal.
   CTAs open this in place instead of scrolling to a footer form,
   so the visitor never loses their position in the copy.
   --------------------------------------------------------- */
.qm-root{position:fixed;inset:0;z-index:9999;display:none}
.qm-root.qm-open{display:block}

/* While the body is scroll-locked the scrollbar disappears. Padding on <body>
   compensates normal flow, but position:fixed chrome is laid out against the
   viewport, so it needs the same nudge or it visibly jumps. */
.qm-locked .sticky-cta,
.qm-locked .callbar{padding-right:calc(22px + var(--qm-scrollbar-width, 0px))}

.qm-backdrop{
  position:absolute;inset:0;
  background:rgba(12,24,38,.62);
  backdrop-filter:blur(3px);
  opacity:0;transition:opacity .28s ease;
}
.qm-root.qm-in .qm-backdrop{opacity:1}

.qm-card{
  position:absolute;top:50%;left:50%;
  width:min(94vw,470px);max-height:92vh;overflow-y:auto;
  background:#fff;border-radius:16px;
  box-shadow:0 40px 100px -24px rgba(10,20,33,.6),0 0 0 1px rgba(255,255,255,.5);
  padding:1.7rem 1.6rem 1.5rem;
  opacity:0;
  transform:translate(calc(-50% + var(--qm-ox,0px)),calc(-50% + var(--qm-oy,0px))) scale(.35);
  transition:opacity .3s ease,transform .38s cubic-bezier(.2,.9,.3,1.1);
  -webkit-overflow-scrolling:touch;
}
.qm-root.qm-in .qm-card{opacity:1;transform:translate(-50%,-50%) scale(1)}

.qm-close{
  position:absolute;top:.75rem;right:.75rem;
  width:34px;height:34px;border-radius:50%;border:0;cursor:pointer;
  background:var(--bg-soft,#f4f7f1);color:var(--muted,#5f7086);
  font-size:1.15rem;line-height:1;display:grid;place-items:center;
  transition:background .15s,color .15s;
}
.qm-close:hover{background:var(--navy,#1c3a5e);color:#fff}

.qm-card h3{
  font-family:'Plus Jakarta Sans',system-ui,sans-serif;
  font-size:1.32rem;line-height:1.2;color:var(--ink,#14293f);
  margin:0 2rem .25rem 0;
}
.qm-card .qm-sub{color:var(--muted,#5f7086);font-size:.9rem;margin-bottom:1.1rem}

.qm-field{margin-bottom:.8rem}
.qm-field label{display:block;font-size:.79rem;font-weight:700;margin-bottom:.3rem;color:var(--ink,#14293f)}
.qm-field input,.qm-field select{
  width:100%;padding:.78rem .9rem;
  border:1.5px solid var(--line,#e6ece2);border-radius:9px;
  font:inherit;font-size:.95rem;background:#fff;color:var(--text,#243142);
}
.qm-field input:focus,.qm-field select:focus{outline:none;border-color:var(--accent-strong,#5f7a2f)}
.qm-two{display:grid;grid-template-columns:1fr 1fr;gap:.65rem}

.qm-submit{
  width:100%;margin-top:.45rem;border:0;cursor:pointer;
  font-family:'Plus Jakarta Sans',system-ui,sans-serif;font-weight:700;font-size:1rem;
  padding:1rem 1.5rem;border-radius:999px;
  background:var(--accent-strong,#5f7a2f);color:#fff;
  box-shadow:0 8px 20px -8px rgba(124,157,65,.9),0 0 16px 1px rgba(244,180,0,.4);
  transition:background .15s,transform .15s;
}
.qm-submit:hover{background:var(--accent-dark,#5c762d);transform:translateY(-2px)}
.qm-fine{display:block;text-align:center;color:var(--muted,#5f7086);font-size:.75rem;margin-top:.75rem}
.qm-call{
  display:block;text-align:center;margin-top:.85rem;padding-top:.85rem;
  border-top:1px solid var(--line,#e6ece2);
  font-size:.88rem;color:var(--muted,#5f7086);
}
.qm-call a{color:var(--navy,#1c3a5e);font-weight:800;font-family:'Plus Jakarta Sans',system-ui,sans-serif}

/* Urgent (emergency lander) variant */
.urgent .qm-submit{background:#c0392b;box-shadow:0 8px 20px -8px rgba(192,57,43,.9),0 0 16px 1px rgba(255,120,90,.45)}
.urgent .qm-submit:hover{background:#a33326}
.urgent .qm-field input:focus,.urgent .qm-field select:focus{border-color:#c0392b}

@media(max-width:520px){
  .qm-card{padding:1.5rem 1.2rem 1.3rem;width:min(94vw,440px)}
  .qm-two{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){
  .qm-card{transition:opacity .2s ease;transform:translate(-50%,-50%) scale(1)}
  .qm-root.qm-in .qm-card{transform:translate(-50%,-50%) scale(1)}
  .qm-backdrop{transition:none}
}

.qm-error{
  background:#fdecea;border:1px solid #f3c3bd;color:#8c2318;
  border-radius:8px;padding:.6rem .8rem;font-size:.85rem;margin:.2rem 0 .4rem;
}
.qm-field input[aria-invalid="true"],.qm-field select[aria-invalid="true"]{border-color:#c0392b}
.qm-submit:disabled{opacity:.7;cursor:progress}
