/* BOOKING OVERLAY
   Contrato: modal de agenda controlado por la clase global `body.is-booking-open`. */
.cm-booking {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: block;
}
.cm-booking[hidden] { display: none; }

.cm-booking-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(8, 9, 11, 0.55);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  opacity: 0;
  transition: opacity var(--cm-dur-3) var(--cm-ease);
}

.cm-booking-card {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding:
    calc(var(--cm-space-5) + var(--cm-safe-top))
    var(--cm-space-5)
    calc(var(--cm-space-5) + var(--cm-safe-bottom));
  opacity: 0;
  transform: translateY(16px) scale(0.98);
  filter: blur(10px);
  transition:
    opacity var(--cm-dur-3) var(--cm-ease),
    transform var(--cm-dur-3) var(--cm-ease),
    filter var(--cm-dur-3) var(--cm-ease);
}

.cm-booking-panel {
  position: relative;
  width: min(960px, 100%);
  height: min(78vh, 720px);
  background: rgba(242, 243, 240, 0.96);
  border: 1px solid rgba(17, 21, 27, 0.12);
  border-radius: var(--cm-radius-3);
  box-shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

.cm-booking-close {
  position: absolute;
  top: 14px;
  left: 14px;
  width: 36px;
  height: 36px;
  border-radius: 999px;
  border: 1px solid rgba(0, 0, 0, 0.12);
  background: rgba(255, 255, 255, 0.72);
  color: rgba(17, 21, 27, 0.82);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  transition:
    transform var(--cm-dur-2) var(--cm-ease),
    opacity var(--cm-dur-2) var(--cm-ease);
}
.cm-booking-close:hover { transform: translateY(-1px); }
.cm-booking-close:active { transform: translateY(0) scale(0.98); opacity: 0.92; }

.cm-booking-iframe {
  flex: 1;
  width: 100%;
  height: 100%;
  border: 0;
  background: transparent;
}

/* CRITICAL: `body.is-booking-open` define visibilidad y transición del modal completo. */
body.is-booking-open .cm-booking-backdrop { opacity: 1; }
body.is-booking-open .cm-booking-card {
  opacity: 1;
  transform: translateY(0) scale(1);
  filter: blur(0);
}
