/* EPILASER: native booking flow, no third-party iframe. */
#epiModal.epi-modal--native{background:rgba(10,34,48,.55);backdrop-filter:blur(7px)}
#epiModal.epi-modal--native .epi-booking-card{
  width:min(650px,calc(100vw - 24px));
  max-height:min(92dvh,860px);
  overflow-y:auto;
  overflow-x:hidden;
  overscroll-behavior:contain;
  border:1px solid rgba(255,255,255,.64);
  background:#fff;
  padding:clamp(20px,4vw,34px);
  border-radius:18px;
  box-shadow:0 26px 90px rgba(13,45,63,.25);
}
#epiModal.epi-modal--native .epi-booking-head{padding-right:48px;margin-bottom:19px}
#epiModal.epi-modal--native .epi-booking-kicker{font-size:10px;font-weight:800;letter-spacing:.16em;color:#168cad}
#epiModal.epi-modal--native h2{font-size:clamp(24px,3vw,33px);font-weight:550;line-height:1.12;letter-spacing:-.025em}
#epiModal.epi-modal--native .epi-booking-head p{font-size:13px;color:#70838c;margin:7px 0 0;line-height:1.55}
#epiModal.epi-modal--native .epi-modal__close{z-index:2;border-radius:10px;background:#f1f6f8}
#epiModal.epi-modal--native .epi-booking-form{gap:18px}
#epiModal.epi-modal--native .epi-booking-section{
  padding:17px 17px 20px;
  background:linear-gradient(145deg,#f8fcfd,#f0f8fa);
  border:1px solid rgba(22,104,130,.11);
  border-radius:12px;
}
#epiModal.epi-modal--native .epi-booking-section__head{margin-bottom:15px}
#epiModal.epi-modal--native .epi-booking-step{
  display:inline-flex;
  justify-content:center;
  align-items:center;
  width:31px;height:31px;
  font-size:12px;
  background:#1f91b1;color:white;border-radius:9px;font-weight:700;
}
#epiModal.epi-modal--native .epi-booking-field{min-width:0;gap:7px}
#epiModal.epi-modal--native .epi-booking-field>span{font-size:12px;color:#34515d;font-weight:700}
#epiModal.epi-modal--native select,
#epiModal.epi-modal--native .epi-booking-field input,
#epiModal.epi-modal--native .epi-booking-field textarea{
  width:100%;max-width:100%;
  background:#fff;min-height:48px;
  padding:11px 13px;
  border:1px solid #d9e6eb;
  border-radius:9px;
  font-size:14px;
  color:#284957;
}
#epiModal.epi-modal--native select:disabled{background:#edf3f5;color:#8ca1a9;cursor:not-allowed}
#epiModal.epi-modal--native input:focus-visible,
#epiModal.epi-modal--native select:focus-visible,
#epiModal.epi-modal--native textarea:focus-visible{
  border-color:#179ec2;outline:2px solid rgba(23,158,194,.19);outline-offset:1px;
}
#epiModal.epi-modal--native .epi-booking-consent{align-items:flex-start;line-height:1.5;color:#5b707a;font-size:12px}
#epiModal.epi-modal--native .epi-booking-consent input{accent-color:#1f91b1;flex-shrink:0;margin-top:3px}
#epiModal.epi-modal--native .epi-booking-submit{
  height:53px;min-height:53px;
  width:100%;border-radius:9px;
  font-size:14px;font-weight:800;letter-spacing:.01em;
}
#epiModal.epi-modal--native .epi-booking-submit:disabled{cursor:not-allowed;opacity:.55}
#epiModal.epi-modal--native .epi-booking-message.is-error{
  margin:0;padding:12px;border-radius:9px;color:#aa493e;background:#fff1f0;
}
#epiModal.epi-modal--native .epi-booking-message.is-success{
  margin:0;padding:16px;border-radius:10px;color:#207158;background:#e8f8f2;
  line-height:1.5;
}
.epi-booking-info{
  padding:12px 14px;margin:0 0 14px;
  background:#ecf7fb;color:#315d70;
  border:1px solid #d0e8f1;
  border-radius:10px;font-size:12px;line-height:1.6;
}
.epi-booking-info strong{font-weight:750}
.epi-booking-info[data-mode="crm"]{background:#eff9f5;color:#276850;border-color:#d5e9dc}
.epi-booking-contact-alt{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px;font-size:12px}
.epi-booking-contact-alt a{color:#147c9b;font-weight:700;text-decoration:underline;text-underline-offset:2px}
@media(max-width:620px){
  #epiModal.epi-modal--native{padding:6px;align-items:flex-end}
  #epiModal.epi-modal--native .epi-booking-card{
    width:100%;max-height:calc(100dvh - 12px);border-radius:16px 16px 8px 8px;
    padding:20px 14px 17px;
  }
  #epiModal.epi-modal--native .epi-booking-section{padding:14px 12px 16px}
  #epiModal.epi-modal--native .epi-booking-grid{grid-template-columns:minmax(0,1fr)}
  #epiModal.epi-modal--native .epi-booking-head{padding-right:42px}
  #epiModal.epi-modal--native .epi-booking-head h2{font-size:25px}
  #epiModal.epi-modal--native select{font-size:16px}
  #epiModal.epi-modal--native .epi-booking-submit{min-height:52px}
}

/* Hidden stages must stay hidden even when other site rules define display:grid. */
#epiModal.epi-modal--native [data-booking-crm-only][hidden],
#epiModal.epi-modal--native .epi-booking-section[hidden],
#epiModal.epi-modal--native .epi-booking-submit[hidden],
#epiModal.epi-modal--native .epi-booking-form[hidden],
#epiModal.epi-modal--native .epi-booking-info[hidden],
#epiModal.epi-modal--native .epi-booking-fallback[hidden]{display:none!important}

/* SMS confirmation step with Altegio — native EPILASER design. */
#epiModal.epi-modal--native .epi-booking-sms{
  background:linear-gradient(135deg,#eaf7fb,#f5fbfd);
  border-color:rgba(21,153,189,.27);
}
#epiModal.epi-modal--native .epi-booking-sms input{
  font-size:19px;
  font-variant-numeric:tabular-nums;
  letter-spacing:.16em;
  text-align:center;
  max-width:240px;
}
.epi-booking-sms__actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin-top:12px;font-size:12px;color:#708590}
.epi-booking-sms__resend{border:0;background:transparent;padding:0;color:#087b9b;text-decoration:underline;text-underline-offset:3px;font:inherit;font-weight:750;cursor:pointer}
.epi-booking-sms__resend:disabled{opacity:.45;cursor:wait}
#epiModal.epi-modal--native .epi-booking-sms[hidden]{display:none!important}

/* Helpful state when the chosen day has no bookable slots. */
#epiModal.epi-modal--native .epi-booking-slot-hint{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:9px 14px;
  margin-top:12px;
  padding:12px 14px;
  border-radius:10px;
  border:1px solid rgba(20,128,165,.16);
  background:#eaf7fb;
  color:#315d70;
  font-size:12px;
  line-height:1.5;
}
#epiModal.epi-modal--native .epi-booking-slot-hint[hidden],
#epiModal.epi-modal--native .epi-booking-slot-hint a[hidden]{display:none!important}
#epiModal.epi-modal--native .epi-booking-slot-hint a{
  color:#0b7795;
  text-decoration:underline;
  text-underline-offset:3px;
  font-weight:700;
  flex-shrink:0;
}
#epiModal.epi-modal--native .epi-booking-submit:disabled{
  opacity:.58;
  cursor:not-allowed;
}
@media(max-width:620px){
  #epiModal.epi-modal--native .epi-booking-slot-hint{padding:10px 12px}
}

/* Available appointment days, highlighted from the live booking dates. */
#epiModal.epi-modal--native .epi-booking-calendar{
  grid-column:1/-1;
  min-width:0;
  margin-top:4px;
  padding:15px;
  border:1px solid rgba(18,127,161,.16);
  border-radius:12px;
  background:#fff;
}
#epiModal.epi-modal--native .epi-booking-calendar[hidden]{display:none!important}
.epi-booking-calendar__head{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:12px;
  margin-bottom:14px;
}
.epi-booking-calendar__month{
  color:#2a505e;
  font-size:15px;
  font-weight:750;
  text-transform:capitalize;
  text-align:center;
}
.epi-booking-calendar__nav{
  width:35px;
  height:35px;
  flex-shrink:0;
  border:1px solid #d4e7ee;
  border-radius:8px;
  font-size:25px;
  line-height:1;
  background:#edf8fb;
  color:#237f9c;
  cursor:pointer;
}
.epi-booking-calendar__nav:disabled{
  opacity:.3;
  cursor:default;
}
.epi-booking-calendar__weekdays,.epi-booking-calendar__days{
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  gap:6px;
}
.epi-booking-calendar__weekdays{margin-bottom:7px}
.epi-booking-calendar__weekdays span{
  text-align:center;
  color:#8aa3ad;
  font-size:11px;
  font-weight:700;
}
.epi-booking-calendar__day{
  min-width:0;
  aspect-ratio:1/1;
  min-height:35px;
  border:1px solid transparent;
  border-radius:9px;
  background:#f4f8fa;
  font-size:13px;
  font-weight:600;
  color:#a2b1b7;
  font-variant-numeric:tabular-nums;
  cursor:default;
  transition:background .15s,border-color .15s,color .15s;
}
.epi-booking-calendar__day.is-available{
  background:#d9f1f8;
  border-color:#a5dce9;
  color:#127d9d;
  font-weight:800;
  cursor:pointer;
}
.epi-booking-calendar__day.is-available:hover{
  background:#bfe7f1;
  border-color:#5bb6ce;
}
.epi-booking-calendar__day.is-selected{
  background:#188faf;
  border-color:#188faf;
  color:#fff;
}
.epi-booking-calendar__day.is-today:not(.is-selected){
  box-shadow:inset 0 0 0 1px #89b4c0;
}
.epi-booking-calendar__day:focus-visible,
.epi-booking-calendar__nav:focus-visible{
  outline:2px solid #168db2;
  outline-offset:2px;
}
.epi-booking-calendar__day.is-unavailable{opacity:.65}
.epi-booking-calendar__legend{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:11px;
  line-height:1.5;
  color:#5e7783;
  margin-top:13px;
}
.epi-booking-calendar__legend[hidden]{display:none}
.epi-booking-calendar__dot{
  display:inline-block;
  width:11px;
  height:11px;
  flex-shrink:0;
  background:#cbeef6;
  border:1px solid #7ec6da;
  border-radius:3px;
}
.epi-booking-calendar__status{
  margin:8px 0 0;
  font-size:11px;
  line-height:1.5;
  color:#6c8792;
}
@media(max-width:620px){
  #epiModal.epi-modal--native .epi-booking-calendar{padding:12px 10px}
  .epi-booking-calendar__days,.epi-booking-calendar__weekdays{gap:4px}
  .epi-booking-calendar__day{min-height:33px;font-size:12px;border-radius:7px}
  .epi-booking-calendar__month{font-size:14px}
}

/* Separate availability search from final booking confirmation */
#epiModal.epi-modal--native .epi-booking-slot-find{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:38px;
  padding:9px 13px;
  border:1px solid #89c9d9;
  border-radius:8px;
  background:#f8fdfe;
  color:#116982;
  font-size:12px;
  font-weight:800;
  cursor:pointer;
}
#epiModal.epi-modal--native .epi-booking-slot-find:hover{
  background:#d5f0f7;
}
#epiModal.epi-modal--native .epi-booking-slot-find[hidden]{
  display:none!important;
}
#epiModal.epi-modal--native .epi-booking-slot-find:disabled{
  opacity:.65;
  cursor:wait;
}
#epiModal.epi-modal--native .epi-booking-slot-find:focus-visible{
  outline:2px solid #167f9f;
  outline-offset:2px;
}
@media(max-width:620px){
  #epiModal.epi-modal--native .epi-booking-slot-find{
    width:100%;
  }
}
