.psap-backdrop,
.psap-backdrop * { box-sizing: border-box; }
.psap-backdrop {
  position: fixed;
  inset: 0;
  z-index: 2147482450;
  display: none;
  overflow: auto;
  padding: 26px 18px 44px;
  background: var(--psap-overlay, #fff);
  color: var(--psap-overlay-text, #111);
  font-family: var(--psap-font-body, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif);
}
.psap-backdrop.is-open { display: block; }
.psap-shell { position: relative; width: min(920px, 100%); margin: 0 auto; padding-top: 4px; color: var(--psap-overlay-text, #111); }
.psap-close {
  position: absolute;
  top: 0;
  right: 4px;
  z-index: 5;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--psap-close, #111);
  font: 34px/1 Arial, sans-serif;
  cursor: pointer;
}
.psap-hero { padding: 20px 72px 8px; text-align: center; }
.psap-hero h2 { margin: 0 0 10px; color: inherit; font-family: var(--psap-font-heading); font-size: var(--psap-main-size-desktop, 52px); font-weight: var(--psap-main-weight, 800); line-height: var(--psap-main-line, 1.03); letter-spacing: -.03em; }
.psap-hero p { max-width: 700px; margin: 0 auto; color: inherit; font-size: var(--psap-subtitle-size-desktop, 16px); font-weight: var(--psap-subtitle-weight, 400); line-height: var(--psap-subtitle-line, 1.5); opacity: .72; }
.psap-progress { margin: 28px 0 22px; }
.psap-progress-meta { display: flex; justify-content: space-between; margin-bottom: 12px; font-size: var(--psap-meta-size-desktop, 14px); font-weight: var(--psap-meta-weight, 700); line-height: var(--psap-meta-line, 1.2); text-transform: uppercase; }
.psap-track { height: 8px; overflow: hidden; border-radius: 999px; background: var(--psap-track, #e8ebef); }
.psap-bar { width: 25%; height: 100%; border-radius: inherit; background: var(--psap-progress, #3b82f6); transition: width .25s ease; }
.psap-card { padding: 42px 48px 40px; border-radius: 40px; background: var(--psap-modal, #fff); box-shadow: 0 26px 58px rgba(0, 0, 0, .13); color: var(--psap-text, #626b78); }
.psap-step-title { margin: 0 0 8px; color: var(--psap-title, #111); font-family: var(--psap-font-heading); font-size: var(--psap-step-size-desktop, 24px); font-weight: var(--psap-step-weight, 800); line-height: var(--psap-step-line, 1.2); }
.psap-step-sub { margin: 0 0 26px; color: inherit; font-size: var(--psap-subtitle-size-desktop, 16px); font-weight: var(--psap-subtitle-weight, 400); line-height: var(--psap-subtitle-line, 1.5); }
.psap-options,
.psap-dates,
.psap-times { display: flex; flex-wrap: wrap; gap: 10px; }
.psap-chip {
  width: auto;
  min-height: 0;
  padding: 13px 20px;
  border: 1px solid var(--psap-chip-border, #cfe6f5);
  border-radius: 999px;
  background: transparent;
  box-shadow: none;
  color: var(--psap-chip-text, #315b78);
  font: inherit;
  font-size: var(--psap-option-size-desktop, 16px);
  font-weight: var(--psap-option-weight, 700);
  line-height: var(--psap-option-line, 1.2);
  text-transform: none;
  cursor: pointer;
  transition: .18s;
}
.psap-chip:hover,
.psap-chip:focus { border-color: var(--psap-chip-active, #3b82f6); background: transparent; color: var(--psap-chip-text, #315b78); }
.psap-chip.is-selected,
.psap-chip.is-selected:hover { border-color: var(--psap-chip-active, #3b82f6); background: var(--psap-chip-active, #3b82f6); color: var(--psap-chip-active-text, #fff); }
.psap-date { width: 92px; min-height: 102px; padding: 12px 8px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; border-radius: 22px; }
.psap-date span { font-size: 12px; letter-spacing: .06em; text-transform: uppercase; }
.psap-date strong { font-size: 22px; }
.psap-time { min-width: 150px; border-radius: 16px; }
.psap-time[disabled] { opacity: .38; cursor: not-allowed; text-decoration: line-through; }
.psap-fields { display: grid; gap: 12px; }
.psap-input {
  width: 100%;
  min-height: 0;
  margin: 0;
  padding: 15px 16px;
  border: 1px solid #d8dce2;
  border-radius: 13px;
  background: var(--psap-input, #fff);
  box-shadow: none;
  color: var(--psap-input-text, #222);
  font: inherit;
  font-size: var(--psap-input-size-desktop, 16px);
  font-weight: var(--psap-input-weight, 400);
  line-height: var(--psap-input-line, 1.35);
  outline: none;
}
.psap-input:focus { border-color: var(--psap-progress, #3b82f6); box-shadow: 0 0 0 3px color-mix(in srgb, var(--psap-progress, #3b82f6) 15%, transparent); }
.psap-sep { height: 1px; margin: 32px 0; background: #e1e4e8; }
.psap-actions { display: grid; grid-template-columns: 140px 1fr; gap: 16px; }
.psap-actions.is-single { grid-template-columns: 1fr; }
.psap-btn {
  width: 100%;
  min-height: 62px;
  margin: 0;
  padding: 12px 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  border: 0;
  border-radius: 13px;
  background: var(--psap-btn, #000);
  box-shadow: none;
  color: var(--psap-btn-text, #fff);
  font: inherit;
  font-size: var(--psap-button-size-desktop, 17px);
  font-weight: var(--psap-button-weight, 700);
  line-height: var(--psap-button-line, 1.2);
  text-transform: none;
  cursor: pointer;
  transition: transform .2s ease, filter .2s ease;
}
.psap-btn:hover { background: var(--psap-btn, #000); color: var(--psap-btn-text, #fff); filter: brightness(.98); transform: translateY(-2px); }
.psap-btn[disabled] { cursor: wait; opacity: .7; transform: none; }
.psap-btn-back,
.psap-btn-back:hover { border: 2px solid #d8dce2; background: var(--psap-back, #fff); color: var(--psap-back-text, #111); }
.psap-btn svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.psap-summary { margin-top: 20px; padding: 18px 22px; border-radius: 18px; background: var(--psap-summary, #eff8ff); color: var(--psap-summary-text, #315b78); font-size: var(--psap-meta-size-desktop, 14px); font-weight: var(--psap-meta-weight, 700); line-height: var(--psap-meta-line, 1.2); }
.psap-summary strong { font-weight: 800; }
.psap-error { display: none; margin-top: 12px; color: #b42318; font-size: 13px; }
.psap-error.is-visible { display: block; }
.psap-success { min-height: 360px; padding: 92px 24px 50px; display: none; align-items: center; flex-direction: column; text-align: center; }
.psap-shell.is-success .psap-hero,
.psap-shell.is-success .psap-progress,
.psap-shell.is-success .psap-card { display: none; }
.psap-shell.is-success .psap-success { display: flex; }
.psap-success-icon { width: 118px; height: 118px; margin-bottom: 26px; display: grid; place-items: center; border-radius: 50%; background: var(--psap-success, #16a34a); box-shadow: 0 16px 38px rgba(22, 163, 74, .24); color: #fff; }
.psap-success-icon svg { width: 62px; height: 62px; fill: none; stroke: currentColor; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.psap-success h2 { margin: 0 0 10px; color: var(--psap-overlay-text, #111); font-family: var(--psap-font-heading); font-size: var(--psap-main-size-desktop, 52px); font-weight: var(--psap-main-weight, 800); line-height: var(--psap-main-line, 1.03); }
.psap-success p { margin: 0; color: var(--psap-overlay-text, #111); font-size: var(--psap-subtitle-size-desktop, 16px); font-weight: var(--psap-subtitle-weight, 400); line-height: var(--psap-subtitle-line, 1.5); opacity: .72; }
.psap-hp { position: absolute !important; left: -9999px !important; opacity: 0 !important; pointer-events: none !important; }
.psap-close:focus-visible,
.psap-chip:focus-visible,
.psap-btn:focus-visible { outline: 3px solid #72aee6; outline-offset: 3px; }

/* Aísla el modal de los estilos globales de Elementor sin usar !important. */
#psAppointmentBackdrop button.psap-close {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: var(--psap-close, #111);
  font: 34px/1 Arial, sans-serif;
}
#psAppointmentBackdrop button.psap-chip {
  border: 1px solid var(--psap-chip-border, #cfe6f5);
  background: transparent;
  box-shadow: none;
  color: var(--psap-chip-text, #315b78);
  font-family: var(--psap-font-body);
  font-size: var(--psap-option-size-desktop, 16px);
  font-weight: var(--psap-option-weight, 700);
  line-height: var(--psap-option-line, 1.2);
}
#psAppointmentBackdrop button.psap-chip:hover,
#psAppointmentBackdrop button.psap-chip:focus {
  border-color: var(--psap-chip-active, #3b82f6);
  background: transparent;
  color: var(--psap-chip-text, #315b78);
}
#psAppointmentBackdrop button.psap-chip.is-selected,
#psAppointmentBackdrop button.psap-chip.is-selected:hover {
  border-color: var(--psap-chip-active, #3b82f6);
  background: var(--psap-chip-active, #3b82f6);
  color: var(--psap-chip-active-text, #fff);
}
#psAppointmentBackdrop button.psap-btn {
  border: 0;
  background: var(--psap-btn, #000);
  box-shadow: none;
  color: var(--psap-btn-text, #fff);
  font-family: var(--psap-font-body);
  font-size: var(--psap-button-size-desktop, 17px);
  font-weight: var(--psap-button-weight, 700);
  line-height: var(--psap-button-line, 1.2);
}
#psAppointmentBackdrop button.psap-btn-back,
#psAppointmentBackdrop button.psap-btn-back:hover {
  border: 2px solid #d8dce2;
  background: var(--psap-back, #fff);
  color: var(--psap-back-text, #111);
}
@media (max-width: 768px) {
  .psap-card { padding: 30px 24px 26px; border-radius: 20px; }
  .psap-hero { padding: 24px 38px 8px; }
  .psap-actions { grid-template-columns: 120px 1fr; }
}
@media (max-width: 560px) {
  .psap-backdrop { padding: 14px 12px 28px; scrollbar-width: none; -ms-overflow-style: none; }
  .psap-backdrop::-webkit-scrollbar { display: none; width: 0; height: 0; }
  .psap-card { padding: 26px 18px 22px; border-radius: 20px; }
  .psap-hero { padding: 32px 26px 8px; }
  .psap-hero h2,
  .psap-success h2 { font-size: var(--psap-main-size-mobile, 40px); }
  .psap-hero p,
  .psap-step-sub,
  .psap-success p { font-size: var(--psap-subtitle-size-mobile, 15px); }
  .psap-step-title { font-size: var(--psap-step-size-mobile, 28px); }
  .psap-progress-meta,
  .psap-summary { font-size: var(--psap-meta-size-mobile, 14px); }
  .psap-progress { margin-top: 22px; }
  .psap-actions { grid-template-columns: 1fr; }
  .psap-btn-back { order: 2; }
  .psap-options .psap-chip,
  .psap-times .psap-chip { width: 100%; }
  #psAppointmentBackdrop button.psap-chip { font-size: var(--psap-option-size-mobile, 16px); }
  #psAppointmentBackdrop button.psap-btn { font-size: var(--psap-button-size-mobile, 17px); }
  .psap-input { font-size: var(--psap-input-size-mobile, 16px); }
  .psap-date { width: 76px; min-height: 90px; }
  .psap-time { min-width: 0; padding: 12px 10px; }
}
