/* Rafiely Core 0.6.3 — flujo de reserva. Cargado después del theme para evitar estilos muertos. */
.rafiely-booking-app {
  --rf-booking-brand: var(--color-brand, #ffbe00);
  --rf-booking-brand-soft: var(--color-brand-soft, #fff6d8);
  --rf-booking-ink: var(--color-ink, #171819);
  --rf-booking-mute: var(--color-mute, #6f706f);
  --rf-booking-paper: var(--color-paper, #fffdf8);
  --rf-booking-ivory: var(--color-ivory, #f5f2e9);
  --rf-booking-line: var(--color-line, #dedbd1);
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}
.rafiely-booking-app *, .rafiely-booking-app *::before, .rafiely-booking-app *::after { box-sizing: border-box; }
.rafiely-booking-app button, .rafiely-booking-app input { font: inherit; }
.rafiely-booking-app button { color: inherit; }
.rafiely-booking-app [hidden] { display: none !important; }

.rafiely-booking-app.rf-booking-shell {
  display: grid !important;
  grid-template-columns: minmax(280px, .7fr) minmax(0, 1.3fr) !important;
  gap: clamp(1.5rem, 4vw, 4rem) !important;
  align-items: start !important;
  margin-top: -3rem !important;
  position: relative !important;
  z-index: 3 !important;
  padding-bottom: clamp(4rem, 7vw, 7rem) !important;
}
.rafiely-booking-app .rf-booking-side {
  position: sticky !important;
  top: 170px !important;
  border-radius: 28px !important;
  background: var(--rf-booking-brand) !important;
  color: var(--rf-booking-ink) !important;
  padding: clamp(1.5rem, 3vw, 2.5rem) !important;
  box-shadow: 0 24px 70px rgba(23,24,25,.15) !important;
  min-width: 0;
}
.rafiely-booking-app .rf-booking-kicker {
  margin: 0 !important;
  font-size: 10px !important;
  line-height: 1.5 !important;
  letter-spacing: .2em !important;
  font-weight: 800 !important;
  text-transform: uppercase !important;
  opacity: .62;
}
.rafiely-booking-app .rf-booking-side h2 {
  margin: .65rem 0 0 !important;
  font-family: "Sora", ui-sans-serif, system-ui, sans-serif !important;
  font-size: clamp(2rem, 3vw, 3.2rem) !important;
  line-height: .98 !important;
  letter-spacing: -.045em !important;
  font-weight: 800 !important;
}
.rafiely-booking-app .rf-booking-summary { margin-top: 1.5rem !important; display: grid !important; gap: .25rem !important; }
.rafiely-booking-app .rf-booking-summary-row {
  display: flex !important;
  align-items: flex-start !important;
  gap: .75rem !important;
  padding: .85rem 0 !important;
  border-top: 1px solid rgba(23,24,25,.16) !important;
  min-width: 0;
}
.rafiely-booking-app .rf-booking-summary-row > svg { flex: 0 0 auto; margin-top: .1rem; }
.rafiely-booking-app .rf-booking-summary-row > div { min-width: 0; }
.rafiely-booking-app .rf-booking-summary-row small {
  display: block !important;
  margin: 0 !important;
  font-size: 10px !important;
  line-height: 1.4 !important;
  letter-spacing: .15em !important;
  font-weight: 800 !important;
  text-transform: uppercase !important;
  opacity: .58;
}
.rafiely-booking-app .rf-booking-summary-row strong {
  display: block !important;
  margin-top: .24rem !important;
  font-size: .88rem !important;
  line-height: 1.45 !important;
  overflow-wrap: anywhere;
}
.rafiely-booking-app .rf-booking-note {
  margin-top: 1.25rem !important;
  border-radius: 18px !important;
  background: var(--rf-booking-ink) !important;
  color: #fff !important;
  padding: 1.25rem !important;
}
.rafiely-booking-app .rf-booking-note > svg { color: var(--rf-booking-brand); }
.rafiely-booking-app .rf-booking-note p { margin: .8rem 0 0 !important; color: rgba(255,255,255,.68) !important; font-size: .86rem !important; line-height: 1.7 !important; }
.rafiely-booking-app .rf-booking-address { display: flex !important; align-items: flex-start !important; gap: .7rem !important; margin-top: 1.15rem !important; font-size: .86rem !important; line-height: 1.55 !important; }
.rafiely-booking-app .rf-booking-address svg { flex: 0 0 auto; margin-top: .15rem; }

.rafiely-booking-app .rf-booking-card {
  min-width: 0;
  border-radius: 32px !important;
  background: #fff !important;
  border: 1px solid var(--rf-booking-line) !important;
  box-shadow: 0 24px 70px rgba(23,24,25,.12) !important;
  overflow: hidden !important;
}
.rafiely-booking-app .rf-booking-stepper {
  display: grid !important;
  grid-template-columns: repeat(5, minmax(0,1fr)) !important;
  background: var(--rf-booking-ivory) !important;
  border-bottom: 1px solid var(--rf-booking-line) !important;
}
.rafiely-booking-app .rf-booking-step {
  position: relative !important;
  min-width: 0;
  padding: 1.05rem .3rem !important;
  text-align: center !important;
  color: var(--rf-booking-mute) !important;
  font-size: .62rem !important;
  line-height: 1.35 !important;
  font-weight: 800 !important;
  letter-spacing: .08em !important;
  text-transform: uppercase !important;
}
.rafiely-booking-app .rf-booking-step::after {
  content: "";
  position: absolute;
  left: 50%; right: -50%; top: 28px;
  height: 1px;
  background: var(--rf-booking-line);
}
.rafiely-booking-app .rf-booking-step:last-child::after { display: none; }
.rafiely-booking-app .rf-booking-step-number {
  position: relative !important;
  z-index: 2 !important;
  margin: 0 auto .45rem !important;
  width: 34px !important; height: 34px !important;
  display: grid !important; place-items: center !important;
  border-radius: 50% !important;
  background: #fff !important;
  border: 1px solid var(--rf-booking-line) !important;
  color: var(--rf-booking-ink) !important;
  font-size: .75rem !important;
  letter-spacing: 0 !important;
}
.rafiely-booking-app .rf-booking-step.active .rf-booking-step-number { background: var(--rf-booking-brand) !important; border-color: var(--rf-booking-brand) !important; }
.rafiely-booking-app .rf-booking-step.done .rf-booking-step-number { background: var(--rf-booking-ink) !important; border-color: var(--rf-booking-ink) !important; color: #fff !important; }
.rafiely-booking-app .rf-booking-step.done .rf-booking-step-number span { font-size: 0; }
.rafiely-booking-app .rf-booking-step.done .rf-booking-step-number span::after { content: "✓"; font-size: .8rem; }

.rafiely-booking-app .rf-booking-flow { margin: 0 !important; }
.rafiely-booking-app .rf-booking-body { min-height: 520px !important; padding: clamp(1.4rem, 4vw, 3rem) !important; }
.rafiely-booking-app .rf-booking-panel[hidden] { display: none !important; }
.rafiely-booking-app .rf-booking-panel-heading > p {
  margin: 0 !important;
  color: #a27400 !important;
  font-size: 10px !important;
  line-height: 1.5 !important;
  letter-spacing: .2em !important;
  font-weight: 800 !important;
  text-transform: uppercase !important;
}
.rafiely-booking-app .rf-booking-panel-heading h2 {
  margin: .45rem 0 0 !important;
  font-family: "Sora", ui-sans-serif, system-ui, sans-serif !important;
  font-size: clamp(1.65rem, 4vw, 2.5rem) !important;
  line-height: 1.08 !important;
  letter-spacing: -.035em !important;
  font-weight: 800 !important;
  color: var(--rf-booking-ink) !important;
}
.rafiely-booking-app .rf-booking-panel-heading > span {
  display: block !important;
  margin: .75rem 0 1.75rem !important;
  color: var(--rf-booking-mute) !important;
  font-size: .94rem !important;
  line-height: 1.7 !important;
}

.rafiely-booking-app .rf-service-grid { display: grid !important; grid-template-columns: repeat(2,minmax(0,1fr)) !important; gap: 1rem !important; }
.rafiely-booking-app .rf-service-card {
  appearance: none;
  position: relative !important;
  display: block !important;
  width: 100% !important;
  min-width: 0;
  padding: 1.35rem !important;
  border: 2px solid var(--rf-booking-line) !important;
  border-radius: 22px !important;
  background: #fff !important;
  color: var(--rf-booking-ink) !important;
  text-align: left !important;
  cursor: pointer;
  transition: transform .2s ease,border-color .2s ease,background .2s ease !important;
}
.rafiely-booking-app .rf-service-card:hover { transform: translateY(-3px); border-color: var(--rf-booking-mute) !important; }
.rafiely-booking-app .rf-service-card.active { border-color: var(--rf-booking-ink) !important; background: var(--rf-booking-brand-soft) !important; }
.rafiely-booking-app .rf-service-icon { width: 48px !important; height: 48px !important; display: grid !important; place-items: center !important; border-radius: 16px !important; background: var(--rf-booking-ink) !important; color: var(--rf-booking-brand) !important; }
.rafiely-booking-app .rf-service-duration { display: block !important; margin-top: 1.15rem !important; color: var(--rf-booking-mute) !important; font-size: 10px !important; line-height: 1.4 !important; letter-spacing: .18em !important; font-weight: 800 !important; text-transform: uppercase !important; }
.rafiely-booking-app .rf-service-card > strong { display: block !important; margin-top: .45rem !important; font-family: "Sora",ui-sans-serif,system-ui,sans-serif !important; font-size: 1.15rem !important; line-height: 1.25 !important; }
.rafiely-booking-app .rf-service-description { display: block !important; margin-top: .55rem !important; color: var(--rf-booking-mute) !important; font-size: .85rem !important; line-height: 1.65 !important; }
.rafiely-booking-app .rf-service-check { position: absolute !important; right: 1rem !important; top: 1rem !important; width: 28px !important; height: 28px !important; display: none !important; place-items: center !important; border-radius: 50% !important; background: var(--rf-booking-ink) !important; color: #fff !important; }
.rafiely-booking-app .rf-service-card.active .rf-service-check { display: grid !important; }

.rafiely-booking-app .rf-calendar { border: 1px solid var(--rf-booking-line) !important; border-radius: 22px !important; padding: clamp(1rem,2vw,1.5rem) !important; max-width: 620px !important; }
.rafiely-booking-app .rf-calendar-head { display: flex !important; align-items: center !important; justify-content: space-between !important; gap: 1rem !important; margin-bottom: 1.25rem !important; }
.rafiely-booking-app .rf-calendar-head h3 { margin: 0 !important; font-family: "Sora",ui-sans-serif,system-ui,sans-serif !important; font-size: 1.05rem !important; line-height: 1.3 !important; font-weight: 700 !important; text-align: center; }
.rafiely-booking-app .rf-calendar-nav { width: 42px !important; height: 42px !important; display: grid !important; place-items: center !important; flex: 0 0 auto; border: 1px solid var(--rf-booking-line) !important; border-radius: 50% !important; background: #fff !important; cursor: pointer; }
.rafiely-booking-app .rf-calendar-nav:disabled { opacity: .28; cursor: not-allowed; }
.rafiely-booking-app .rf-calendar-weekdays, .rafiely-booking-app .rf-calendar-days { display: grid !important; grid-template-columns: repeat(7,minmax(0,1fr)) !important; gap: .35rem !important; }
.rafiely-booking-app .rf-calendar-weekdays { margin-bottom: .35rem !important; }
.rafiely-booking-app .rf-calendar-weekdays span { padding: .3rem 0 !important; color: var(--rf-booking-mute) !important; font-size: .67rem !important; font-weight: 800 !important; text-align: center !important; text-transform: uppercase !important; }
.rafiely-booking-app .rf-calendar-day { aspect-ratio: 1 !important; display: grid !important; place-items: center !important; width: 100% !important; min-width: 0; border: 0 !important; border-radius: 12px !important; background: transparent !important; color: var(--rf-booking-ink) !important; font-size: .83rem !important; font-weight: 700 !important; cursor: pointer; transition: background .2s ease,color .2s ease,transform .2s ease !important; }
.rafiely-booking-app .rf-calendar-day:not(:disabled):hover { background: var(--rf-booking-ivory) !important; transform: translateY(-2px); }
.rafiely-booking-app .rf-calendar-day.active { background: var(--rf-booking-ink) !important; color: #fff !important; }
.rafiely-booking-app .rf-calendar-day:disabled { opacity: .2; cursor: not-allowed; }
.rafiely-booking-app .rf-calendar-day.is-outside { visibility: hidden; }

.rafiely-booking-app .rf-time-group { margin-top: 1.35rem !important; }
.rafiely-booking-app .rf-time-group:first-of-type { margin-top: 0 !important; }
.rafiely-booking-app .rf-time-group > p { margin: 0 0 .75rem !important; color: var(--rf-booking-mute) !important; font-size: 10px !important; line-height: 1.4 !important; letter-spacing: .18em !important; font-weight: 800 !important; text-transform: uppercase !important; }
.rafiely-booking-app .rf-time-grid { display: grid !important; grid-template-columns: repeat(4,minmax(0,1fr)) !important; gap: .55rem !important; }
.rafiely-booking-app .rf-time-btn { min-height: 46px !important; border: 1px solid var(--rf-booking-line) !important; border-radius: 12px !important; background: #fff !important; color: var(--rf-booking-ink) !important; font-size: .82rem !important; line-height: 1 !important; font-weight: 800 !important; cursor: pointer; transition: border-color .2s ease,background .2s ease,transform .2s ease !important; }
.rafiely-booking-app .rf-time-btn:hover { border-color: var(--rf-booking-ink) !important; transform: translateY(-2px); }
.rafiely-booking-app .rf-time-btn.active { background: var(--rf-booking-brand) !important; border-color: var(--rf-booking-ink) !important; }

.rafiely-booking-app .rf-booking-fields { display: grid !important; grid-template-columns: repeat(2,minmax(0,1fr)) !important; gap: 1rem !important; }
.rafiely-booking-app .rf-booking-field { display: block !important; min-width: 0; }
.rafiely-booking-app .rf-booking-field > span { display: block !important; margin: 0 0 .5rem !important; color: var(--rf-booking-mute) !important; font-size: 10px !important; line-height: 1.4 !important; letter-spacing: .16em !important; font-weight: 800 !important; text-transform: uppercase !important; }
.rafiely-booking-app .rf-input { display: block !important; width: 100% !important; min-height: 50px !important; border: 1px solid var(--rf-booking-line) !important; border-radius: 14px !important; padding: .78rem .95rem !important; background: #fff !important; color: var(--rf-booking-ink) !important; box-shadow: none !important; outline: none !important; }
.rafiely-booking-app .rf-input:focus { border-color: var(--rf-booking-ink) !important; box-shadow: 0 0 0 5px rgba(255,190,0,.13) !important; }
.rafiely-booking-app .rf-input.is-invalid { border-color: #b42318 !important; }
.rafiely-booking-app .rf-booking-consent { display: flex !important; align-items: flex-start !important; gap: .75rem !important; margin-top: 1.25rem !important; color: var(--rf-booking-mute) !important; font-size: .84rem !important; line-height: 1.6 !important; cursor: pointer; }
.rafiely-booking-app .rf-booking-consent input { flex: 0 0 auto; width: 17px !important; height: 17px !important; margin-top: .2rem !important; accent-color: var(--rf-booking-brand); }
.rafiely-booking-app .rf-booking-consent a { color: var(--rf-booking-ink) !important; font-weight: 800 !important; text-decoration: underline !important; text-underline-offset: 3px; }
.rafiely-booking-app .rf-booking-validation { margin: .8rem 0 0 !important; color: #b42318 !important; font-size: .78rem !important; line-height: 1.5 !important; }

.rafiely-booking-app .rf-booking-review { display: grid !important; grid-template-columns: repeat(2,minmax(0,1fr)) !important; gap: .75rem !important; }
.rafiely-booking-app .rf-booking-review > div { min-width: 0; border: 1px solid var(--rf-booking-line) !important; border-radius: 16px !important; background: var(--rf-booking-ivory) !important; padding: 1rem !important; }
.rafiely-booking-app .rf-booking-review small { display: block !important; color: var(--rf-booking-mute) !important; font-size: 10px !important; line-height: 1.4 !important; letter-spacing: .16em !important; font-weight: 800 !important; text-transform: uppercase !important; }
.rafiely-booking-app .rf-booking-review strong { display: block !important; margin-top: .35rem !important; color: var(--rf-booking-ink) !important; font-size: .88rem !important; line-height: 1.5 !important; overflow-wrap: anywhere; }
.rafiely-booking-app .rf-booking-submit { width: 100% !important; margin-top: 1.5rem !important; }

.rafiely-booking-app .rf-booking-nav { display: flex !important; align-items: center !important; justify-content: space-between !important; gap: 1rem !important; padding: 1rem clamp(1.3rem,4vw,3rem) 1.5rem !important; border-top: 1px solid var(--rf-booking-line) !important; }
.rafiely-booking-app .rf-booking-nav .btn-rf { min-width: 132px; }
.rafiely-booking-app .rf-booking-nav button:disabled { opacity: .38 !important; cursor: not-allowed !important; transform: none !important; }

.rafiely-booking-app .rf-booking-modal[hidden] { display: none !important; }
.rafiely-booking-app .rf-booking-modal { position: fixed !important; inset: 0 !important; z-index: 100000 !important; display: grid !important; place-items: center !important; padding: 1rem !important; }
.rafiely-booking-app .rf-booking-modal-backdrop { position: absolute !important; inset: 0 !important; width: 100% !important; height: 100% !important; border: 0 !important; background: rgba(0,0,0,.62) !important; }
.rafiely-booking-app .rf-booking-modal-card { position: relative !important; z-index: 2 !important; width: min(100%,540px) !important; border-radius: 26px !important; background: #fff !important; padding: clamp(1.35rem,4vw,2.2rem) !important; box-shadow: 0 30px 100px rgba(0,0,0,.3) !important; }
.rafiely-booking-app .rf-booking-modal-head { display: flex !important; align-items: flex-start !important; justify-content: space-between !important; gap: 1rem !important; }
.rafiely-booking-app .rf-booking-modal-head .eyebrow { margin: 0 !important; }
.rafiely-booking-app .rf-booking-modal-head h2 { margin: .75rem 0 0 !important; font-family: "Sora",ui-sans-serif,system-ui,sans-serif !important; font-size: clamp(1.7rem,5vw,2.35rem) !important; line-height: 1.08 !important; }
.rafiely-booking-app .rf-booking-modal-card > p { margin: 1rem 0 0 !important; color: var(--rf-booking-mute) !important; line-height: 1.7 !important; }
.rafiely-booking-app .rf-booking-modal-actions { display: grid !important; grid-template-columns: 1fr 1fr !important; gap: .6rem !important; margin-top: 1.5rem !important; }
body.rf-booking-modal-open { overflow: hidden !important; }

@media (max-width: 900px) {
  .rafiely-booking-app.rf-booking-shell { grid-template-columns: 1fr !important; gap: 1.25rem !important; margin-top: -2rem !important; }
  .rafiely-booking-app .rf-booking-side { position: relative !important; top: auto !important; order: 2 !important; }
  .rafiely-booking-app .rf-booking-card { order: 1 !important; }
  .rafiely-booking-app .rf-booking-body { min-height: 480px !important; }
}
@media (max-width: 680px) {
  .rafiely-booking-app.rf-booking-shell { margin-top: -1.5rem !important; padding-left: 0 !important; padding-right: 0 !important; }
  .rafiely-booking-app .rf-booking-card { border-radius: 24px !important; }
  .rafiely-booking-app .rf-booking-step { padding: .85rem .15rem !important; }
  .rafiely-booking-app .rf-booking-step-label { display: none !important; }
  .rafiely-booking-app .rf-booking-step::after { top: 24px; }
  .rafiely-booking-app .rf-booking-step-number { width: 30px !important; height: 30px !important; margin-bottom: 0 !important; }
  .rafiely-booking-app .rf-booking-body { min-height: 0 !important; padding: 1.25rem !important; }
  .rafiely-booking-app .rf-booking-panel-heading > span { margin-bottom: 1.25rem !important; }
  .rafiely-booking-app .rf-service-grid, .rafiely-booking-app .rf-booking-fields, .rafiely-booking-app .rf-booking-review { grid-template-columns: 1fr !important; }
  .rafiely-booking-app .rf-time-grid { grid-template-columns: repeat(3,minmax(0,1fr)) !important; }
  .rafiely-booking-app .rf-booking-nav { padding: .9rem 1.25rem 1.2rem !important; }
  .rafiely-booking-app .rf-booking-nav .btn-rf { min-width: 0; padding-left: 1rem !important; padding-right: 1rem !important; }
  .rafiely-booking-app .rf-booking-side { border-radius: 24px !important; }
}
@media (max-width: 390px) {
  .rafiely-booking-app .rf-time-grid { grid-template-columns: repeat(2,minmax(0,1fr)) !important; }
  .rafiely-booking-app .rf-calendar { padding: .8rem !important; }
  .rafiely-booking-app .rf-calendar-days, .rafiely-booking-app .rf-calendar-weekdays { gap: .18rem !important; }
  .rafiely-booking-app .rf-booking-modal-actions { grid-template-columns: 1fr !important; }
}
