/* ============================================================
   Revspot · "Book a demo" modal (demo-modal.js injects the DOM)
   Self-contained component styles, dm- prefix.
   Relies on styles.css being present for tokens (:root vars)
   and the shared .btn / .orb pieces, which every page loads.
   ============================================================ */

/* ---------- overlay ---------- */
.dm-overlay{
  position:fixed;inset:0;z-index:120;
  display:grid;place-items:center;
  padding:clamp(16px,3vw,32px);
  background:rgba(18,18,16,.44);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  opacity:0;
  transition:opacity .24s var(--ease);
}
.dm-overlay[hidden]{display:none}
.dm-overlay.in{opacity:1}

/* ---------- dialog ---------- */
.dm-dialog{
  position:relative;
  width:min(520px,100%);
  max-height:calc(100vh - 48px);
  overflow:auto;
  background:var(--paper);
  border:1px solid var(--hairline);
  border-radius:var(--r-xl);
  box-shadow:0 40px 90px -40px rgba(18,18,16,.55);
  padding:clamp(26px,3.4vw,40px);
  opacity:0;transform:translateY(14px) scale(.985);
  transition:opacity .26s var(--ease),transform .26s var(--ease);
}
.dm-overlay.in .dm-dialog{opacity:1;transform:translateY(0) scale(1)}

.dm-close{
  position:absolute;top:14px;right:14px;
  width:34px;height:34px;display:grid;place-items:center;
  background:var(--paper-2);border:1px solid var(--hairline);
  border-radius:50%;cursor:pointer;color:var(--ink-2);
  transition:background .25s var(--ease),border-color .25s var(--ease),color .25s var(--ease);
}
.dm-close:hover{background:var(--paper-3);border-color:var(--hairline-2);color:var(--ink)}
.dm-close svg{width:13px;height:13px}

/* ---------- headings / copy ---------- */
.dm-kicker{
  display:inline-flex;align-items:center;gap:9px;
  font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:.005em;
  color:var(--ink-3);
}
.dm-kicker .dm-dot{width:6px;height:6px;border-radius:50%;background:var(--amber);flex:none}
.dm-title{
  font-family:var(--display);font-weight:400;
  font-size:clamp(24px,2.4vw,32px);line-height:1.12;letter-spacing:-.02em;
  margin:12px 0 0;color:var(--ink);outline:none;
}
.dm-sub{margin:10px 0 0;font-size:14.5px;line-height:1.6;color:var(--ink-3)}

/* ---------- form (Material-style floating labels) ---------- */
.dm-form{margin-top:22px;display:grid;gap:18px}
.dm-field{display:grid;gap:7px}
.dm-fbox{position:relative}
.dm-field input,
.dm-field select{
  font-family:var(--sans);font-size:15px;color:var(--ink);
  background:var(--paper);
  border:1px solid var(--hairline-2);border-radius:var(--r-md);
  padding:14px 14px 12px;width:100%;
  transition:border-color .25s var(--ease),box-shadow .25s var(--ease);
  appearance:none;-webkit-appearance:none;
}
/* the label rests inside the field, then floats up into the border */
.dm-fbox label{
  position:absolute;left:11px;top:50%;transform:translateY(-50%);
  font-family:var(--sans);font-size:14.5px;font-weight:500;color:var(--ink-3);
  padding:0 4px;background:transparent;border-radius:4px;
  pointer-events:none;white-space:nowrap;
  transition:top .22s var(--ease),transform .22s var(--ease),
             font-size .22s var(--ease),color .22s var(--ease),
             background-color .22s var(--ease);
}
.dm-fbox input:focus ~ label,
.dm-fbox input:not(:placeholder-shown) ~ label,
.dm-fbox input:-webkit-autofill ~ label,
.dm-fbox select:focus ~ label,
.dm-fbox select:valid ~ label{
  top:0;transform:translateY(-50%);
  font-size:11.5px;font-weight:600;letter-spacing:.01em;color:var(--ink-2);
  background:var(--paper);
}
.dm-fbox input:focus ~ label,
.dm-fbox select:focus ~ label{color:var(--amber-deep)}
.dm-field input:focus,
.dm-field select:focus{
  outline:none;border-color:var(--amber);
  box-shadow:0 0 0 3px rgba(214,162,74,.16);
}
.dm-field.err input,
.dm-field.err select{border-color:var(--amber-deep)}
.dm-field.err .dm-fbox label{color:var(--amber-deep)}
.dm-selwrap{position:relative}
.dm-selwrap::after{
  content:"";position:absolute;right:14px;top:50%;
  width:9px;height:9px;pointer-events:none;
  border-right:1.6px solid var(--ink-3);border-bottom:1.6px solid var(--ink-3);
  transform:translateY(-70%) rotate(45deg);
}
.dm-field select{padding-right:38px;cursor:pointer}
.dm-field select:invalid{color:var(--ink-3)}
/* phone = country dial-code select + number input on one row */
.dm-phone-row{display:flex;gap:8px;align-items:stretch}
.dm-ccwrap{flex:0 0 auto;width:112px}
.dm-ccwrap select{padding:14px 30px 12px 12px;font-size:14.5px}
.dm-ccwrap::after{right:12px}
.dm-phone-box{flex:1 1 auto}
.dm-err{
  display:none;font-size:12.5px;line-height:1.4;font-weight:500;color:var(--amber-deep);
}
.dm-field.err .dm-err{display:block}
.dm-hint{
  display:none;font-size:12.5px;line-height:1.4;color:var(--ink-3);
}
.dm-hint.on{display:block}
.dm-turnstile:not(:empty){margin-top:4px;min-height:65px}
.dm-submit{margin-top:6px;width:100%}
.dm-note{margin:2px 0 0;font-size:12.5px;line-height:1.5;color:var(--ink-3);text-align:center}

/* ---------- step 2: slots ---------- */
.dm-step[hidden]{display:none}
.dm-slots{
  margin-top:20px;min-height:260px;
  border:1px solid var(--hairline);border-radius:var(--r-lg);
  background:var(--paper-2);
  display:grid;place-items:center;
  padding:clamp(20px,3vw,32px);
}
.dm-slots-empty{text-align:center;max-width:38ch}
.dm-slots-empty .orb{width:30px;height:30px;margin:0 auto 14px;display:block}
.dm-slots-empty b{
  display:block;font-family:var(--display);font-weight:450;
  font-size:18px;letter-spacing:-.012em;color:var(--ink);
}
.dm-slots-empty p{margin-top:8px;font-size:13.5px;line-height:1.6;color:var(--ink-3)}
.dm-slots-empty a{
  font-weight:600;color:var(--ink-2);border-bottom:1px solid var(--hairline-2);
  transition:color .3s var(--ease),border-color .3s var(--ease);
}
.dm-slots-empty a:hover{color:var(--ink);border-color:var(--ink-3)}

/* ---------- Calendly inline embed (modal step 2 + book-a-demo page) ---------- */
.dm-dialog.dm-wide{width:min(880px,100%)}

/* live state: the slot stops being a framed placeholder and hosts the widget */
.dm-cal-live{
  display:block;place-items:unset;
  padding:0;min-height:0;
  background:var(--paper);
  overflow:hidden;
}
.dm-cal-embed{
  width:100%;
  height:min(630px,calc(100vh - 220px));
  min-height:480px;
}
.dm-cal-embed iframe{display:block;width:100%;height:100%;border:0}
.dm-cal-fallback{
  margin:0;padding:10px 14px 12px;
  border-top:1px solid var(--hairline);
  font-size:12.5px;line-height:1.5;color:var(--ink-3);text-align:center;
}
.dm-cal-fallback a{
  font-weight:600;color:var(--ink-2);border-bottom:1px solid var(--hairline-2);
  transition:color .3s var(--ease),border-color .3s var(--ease);
}
.dm-cal-fallback a:hover{color:var(--ink);border-color:var(--ink-3)}

/* Calendly's narrow (mobile) layout needs more vertical room */
@media (max-width:700px){
  .dm-cal-embed{height:min(1000px,calc(100vh - 180px));min-height:560px}
}

/* ---------- body lock ---------- */
.dm-lock{overflow:hidden}

/* ---------- small screens ---------- */
@media (max-width:560px){
  .dm-overlay{padding:12px;align-items:center}
  .dm-dialog{max-height:calc(100vh - 24px)}
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  .dm-overlay,.dm-dialog,.dm-fbox label{transition:none}
}
