/* Reserva pública: asistente por pasos, limitado a esta pantalla. */
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=Playfair+Display:wght@500;600;700&display=swap');

html body[data-page="reservas"] {
  --rv-bg: #fff;
  --rv-surface: #fff;
  --rv-text: #111;
  --rv-muted: #666;
  --rv-border: #e8e8e8;
  --rv-ink: #1a1a1a;
  background: var(--rv-bg) !important;
  color: var(--rv-text) !important;
  font-family: Inter, system-ui, sans-serif !important;
  min-height: 100%;
  padding: 0 !important;
}
html body[data-page="reservas"][data-theme="light"] { background: #fff !important; }

html body[data-page="reservas"] .reservas-wizard,
html body[data-page="reservas"] .reservas-wizard * {
  box-sizing: border-box;
}

html body[data-page="reservas"] .reservas-wizard {
  display: block !important;
  min-height: 100dvh;
  width: 100%;
  max-width: none !important;
  margin: 0 !important;
  gap: 0 !important;
  padding: 0 !important;
  color: var(--rv-text);
  background: var(--rv-bg);
  padding-bottom: env(safe-area-inset-bottom);
}

html body[data-page="reservas"] .reservas-wizard .main-content:not(.hide) {
  display: block !important;
  width: 100% !important;
  max-width: none !important;
  min-height: 0 !important;
  height: auto !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
html body[data-page="reservas"] .reservas-wizard .main-content:not(.hide)::before,
html body[data-page="reservas"] .reservas-wizard .main-content:not(.hide)::after,
html body[data-page="reservas"] .reservas-wizard #bookingForm::before,
html body[data-page="reservas"] .reservas-wizard #bookingForm::after { content: none !important; display: none !important; }

html body[data-page="reservas"] .rv-wizard-header {
  position: sticky;
  top: 0;
  z-index: 30;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  align-items: center;
  min-height: 68px;
  padding: 10px max(20px, calc((100vw - 920px) / 2));
  border-bottom: 1px solid rgba(232,232,232,.85);
  background: rgba(255,255,255,.94);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

html body[data-page="reservas"] .rv-wizard-header .rv-header-back,
html body[data-page="reservas"] .rv-wizard-header .rv-header-exit {
  position: static !important;
  display: inline-flex;
  width: max-content;
  min-height: 0;
  align-items: center;
  padding: 8px 2px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: var(--rv-muted);
  font: 500 14px/1 Inter, sans-serif;
  letter-spacing: 0;
  text-transform: none;
  box-shadow: none !important;
  transform: none !important;
  text-decoration: none;
  cursor: pointer;
}
html body[data-page="reservas"] .rv-wizard-header .rv-header-back { grid-column: 1; justify-self: start; }
html body[data-page="reservas"] .rv-wizard-header .rv-header-exit { grid-column: 3; justify-self: end; }
html body[data-page="reservas"] .rv-header-back svg { display: block; width: 23px; height: 23px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
html body[data-page="reservas"] .rv-wizard-header .rv-header-back:hover,
html body[data-page="reservas"] .rv-wizard-header .rv-header-exit:hover { background: transparent; color: #111; box-shadow: none !important; transform: none !important; }

html body[data-page="reservas"] .rv-wizard-brand {
  position: static;
  grid-column: 2;
  justify-self: center;
  transform: none;
  font: 600 20px/1.05 'Playfair Display', Georgia, serif;
  text-align: center;
  white-space: nowrap;
}

html body[data-page="reservas"] .rv-wizard-brand span {
  display: block;
  margin-top: 4px;
  color: var(--rv-muted);
  font: 600 9px/1 Inter, sans-serif;
  letter-spacing: 2.4px;
}

html body[data-page="reservas"] .rv-progress-wrap {
  width: min(100% - 40px, 780px);
  margin: 0 auto;
  padding: 22px 0 8px;
}

html body[data-page="reservas"] .rv-progress-bar { display: flex; gap: 6px; margin-bottom: 10px; }
html body[data-page="reservas"] .rv-progress-step { flex: 1; height: 4px; border-radius: 10px; background: #e6e6e6; transition: background .25s ease; }
html body[data-page="reservas"] .rv-progress-step.active,
html body[data-page="reservas"] .rv-progress-step.done { background: var(--rv-ink); }
html body[data-page="reservas"] .rv-progress-label { color: var(--rv-muted); font-size: 11px; font-weight: 600; letter-spacing: .8px; text-transform: uppercase; }

html body[data-page="reservas"] .rv-booking-form { position: relative; display: block !important; margin: 0 !important; padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; }
html body[data-page="reservas"] .rv-wizard-main { width: min(100% - 40px, 780px); min-height: 440px; margin: 0 auto; padding: 24px 0 130px; }
html body[data-page="reservas"] .rv-step { animation: rv-step-in .44s cubic-bezier(.16,1,.3,1) both; }
html body[data-page="reservas"] .rv-step[hidden] { display: none !important; }
html body[data-page="reservas"] .rv-step h1 { position: relative; display: flex; align-items: center; gap: 12px; margin: 0 0 8px; color: #17191d; font: 600 clamp(26px, 4vw, 30px)/1.16 'DM Sans', Inter, system-ui, sans-serif; letter-spacing: -.7px; }
html body[data-page="reservas"] .rv-step-heading-icon { display: grid; flex: 0 0 40px; width: 40px; height: 40px; place-items: center; border: 1px solid #e8ebef; border-radius: 14px; background: #f3f5f7; color: #475569; }
html body[data-page="reservas"] .rv-step-heading-icon svg { display: block; width: 21px; height: 21px; }
html body[data-page="reservas"] .rv-step-heading-text { min-width: 0; }
html body[data-page="reservas"] .rv-step-help { position: relative; display: inline-flex; flex: 0 0 auto; margin-left: auto; }
html body[data-page="reservas"] .rv-step-help-button { display: grid; width: 24px; height: 24px; place-items: center; padding: 0; border: 1px solid #cdd3da; border-radius: 50%; background: #fff; color: #657080; box-shadow: none; cursor: pointer; transition: color .2s ease, border-color .2s ease, background-color .2s ease, transform .2s cubic-bezier(.16,1,.3,1); }
html body[data-page="reservas"] .rv-step-help-button:hover,
html body[data-page="reservas"] .rv-step-help.is-open .rv-step-help-button { border-color: #59616d; background: #1a1a1a; color: #fff; transform: scale(1.04); }
html body[data-page="reservas"] .rv-step-help-button svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
html body[data-page="reservas"] .rv-step-help-popover { position: absolute; z-index: 20; top: calc(100% + 9px); right: 0; display: grid; width: min(286px, calc(100vw - 40px)); gap: 7px; padding: 14px; border: 1px solid #e4e7eb; border-radius: 14px; background: rgba(255,255,255,.98); color: #586170; box-shadow: 0 12px 28px rgba(17,24,39,.13); font: 400 12px/1.42 Inter, system-ui, sans-serif; letter-spacing: 0; opacity: 0; pointer-events: none; transform: translate3d(0,-5px,0) scale(.98); transform-origin: top right; transition: opacity .18s ease, transform .22s cubic-bezier(.16,1,.3,1); }
html body[data-page="reservas"] .rv-step-help-popover strong { color: #17191d; font: 700 12px/1.2 Inter, system-ui, sans-serif; }
html body[data-page="reservas"] .rv-step-help-popover span { display: block; }
html body[data-page="reservas"] .rv-step-help-popover b { color: #17191d; }
html body[data-page="reservas"] .rv-step-help.is-open .rv-step-help-popover { opacity: 1; pointer-events: auto; transform: translate3d(0,0,0) scale(1); }
html body[data-page="reservas"] .rv-step-subtitle { margin: 0 0 24px; color: var(--rv-muted); font: 400 15px/1.55 Inter, sans-serif; }
@keyframes rv-step-in { from { opacity: 0; transform: translate3d(0, 6px, 0) scale(.998); } to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); } }
@keyframes rv-service-select { from { opacity: .9; transform: scale(.99); } to { opacity: 1; transform: scale(1); } }

html body[data-page="reservas"] .rv-service-list { display: grid; gap: 15px; }
html body[data-page="reservas"] .rv-service-card {
  position: relative;
  display: flex;
  width: 100%;
  min-height: 76px;
  justify-content: space-between;
  align-items: center;
  gap: 14px;
  padding: 12px 14px;
  border: 1px solid #e7e9ec;
  border-radius: 18px;
  background: var(--rv-surface);
  box-shadow: 0 3px 10px rgba(15,23,42,.035);
  color: var(--rv-text);
  cursor: pointer;
  text-align: left;
  transition: border-color .3s cubic-bezier(.16,1,.3,1), box-shadow .3s cubic-bezier(.16,1,.3,1), transform .3s cubic-bezier(.16,1,.3,1), background-color .3s ease;
}
html body[data-page="reservas"] .rv-service-card:hover { border-color: #cbd0d6; box-shadow: 0 5px 15px rgba(15,23,42,.07); transform: translateY(-1px); }
html body[data-page="reservas"] .rv-service-card::after { content: ''; position: absolute; top: 50%; right: 16px; display: grid; width: 18px; height: 18px; place-items: center; border: 1.7px solid #aeb4bb; border-radius: 50%; background: transparent; color: transparent; font: 700 12px/1 Inter, sans-serif; transform: translateY(-50%); transition: background-color .25s ease, border-color .25s ease, color .25s ease, transform .25s cubic-bezier(.16,1,.3,1); }
html body[data-page="reservas"] .rv-service-card.selected { border-color: #b7bcc3; background: #f0f1f3; box-shadow: 0 4px 13px rgba(15,23,42,.065); animation: rv-service-select .34s cubic-bezier(.16,1,.3,1) both; }
html body[data-page="reservas"] .rv-service-card.selected::after { content: '✓'; border-color: #78828c; background: #78828c; color: #fff; }
html body[data-page="reservas"] .rv-service-icon { display: grid; flex: 0 0 48px; width: 48px; height: 48px; place-items: center; border: 0; border-radius: 15px; background: #e9edf1; color: #111820; transition: background-color .28s ease, color .28s ease, transform .28s cubic-bezier(.16,1,.3,1); }
html body[data-page="reservas"] .rv-service-icon svg { display: block; width: 25px; height: 25px; stroke-width: 1.9; }
html body[data-page="reservas"] .rv-service-card:hover .rv-service-icon { background: #e4e8ed; transform: scale(1.03); }
html body[data-page="reservas"] .rv-service-card.selected .rv-service-icon { background: #e2e6eb; color: #101820; }
html body[data-page="reservas"] .rv-service-info { display: grid; flex: 1 1 auto; gap: 5px; min-width: 0; padding-right: 0; text-align: left; }
html body[data-page="reservas"] .rv-service-info strong { color: #111820; font: 700 15px/1.25 Inter, system-ui, sans-serif; letter-spacing: .015em; text-transform: uppercase; }
html body[data-page="reservas"] .rv-service-info small { color: #737b84; font: 500 10px/1.45 Inter, system-ui, sans-serif; letter-spacing: .12em; text-transform: uppercase; }
html body[data-page="reservas"] .rv-service-meta { display: grid; flex: 0 0 auto; gap: 5px; padding-right: 30px; text-align: right; }
html body[data-page="reservas"] .rv-service-meta strong { color: #111820; font: 700 15px/1.2 Inter, system-ui, sans-serif; white-space: nowrap; }
html body[data-page="reservas"] .rv-service-meta small { color: #737b84; font: 500 10px/1.2 Inter, system-ui, sans-serif; letter-spacing: .12em; text-transform: uppercase; }

html body[data-page="reservas"] .calendar-status { margin: 0 0 12px; color: var(--rv-muted); font-size: 13px; }
html body[data-page="reservas"] .calendar-status.error { padding: 12px 14px; border: 1px solid #f2c6c6; border-radius: 12px; background: #fff7f7; color: #aa3131; }
html body[data-page="reservas"] .rv-calendar-nav { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 4px 0 20px; }
html body[data-page="reservas"] .rv-calendar-nav .calendar-nav-btn { display: grid; width: 40px; min-width: 40px; height: 40px; place-items: center; padding: 0; border: 1px solid var(--rv-border); border-radius: 12px; background: #fff; color: var(--rv-text); font: 500 13px Inter, sans-serif; cursor: pointer; }
html body[data-page="reservas"] .rv-calendar-nav .calendar-nav-btn:disabled { opacity: .4; cursor: default; }
html body[data-page="reservas"] .rv-calendar-nav .month-label { flex: 1; color: var(--rv-text); font-size: 14px; font-weight: 600; text-align: center; text-transform: capitalize; }
html body[data-page="reservas"] .rv-months { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
html body[data-page="reservas"] .rv-month { min-width: 0; padding: 12px 4px 18px; border: 0; border-radius: 0; background: transparent; box-shadow: none; }
html body[data-page="reservas"] .rv-month h2 { margin: 0 0 22px; color: var(--rv-text); font: 600 16px Inter, sans-serif; text-align: center; text-transform: capitalize; }
html body[data-page="reservas"] .rv-month .weekdays,
html body[data-page="reservas"] .rv-month .days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 7px; }
html body[data-page="reservas"] .rv-month .weekdays { margin-bottom: 12px; }
html body[data-page="reservas"] .rv-month .weekdays span { color: #898989; font-size: 10px; font-weight: 500; text-align: center; }
html body[data-page="reservas"] .rv-month .day { width: 100%; min-width: 0; aspect-ratio: 1; padding: 0; border: 1px solid transparent; border-radius: 12px; background: transparent; color: var(--rv-text); font: 500 13px Inter, sans-serif; }
html body[data-page="reservas"] .rv-month .day { transition: background-color .3s ease, border-color .3s ease, color .3s ease, transform .3s cubic-bezier(.16,1,.3,1); }
html body[data-page="reservas"] .rv-month .day.available { cursor: pointer; }
html body[data-page="reservas"] .rv-month .day.available:hover:not(.selected) { border-color: transparent; background: #f1f1f1; }
html body[data-page="reservas"] .rv-month .day.today:not(.selected) { border-color: transparent; background: #f1f1f1; }
html body[data-page="reservas"] .rv-month .day.selected,
html body[data-page="reservas"] .rv-month .day.selected:hover { background: var(--rv-ink) !important; color: #fff !important; }
html body[data-page="reservas"] .rv-month .day.selected { background: var(--rv-ink) !important; color: #fff !important; padding-bottom: 0 !important; border-radius: 11px; animation: rv-service-select .32s cubic-bezier(.16,1,.3,1) both; }
html body[data-page="reservas"] .rv-month .day.selected::after { content: none !important; display: none !important; }
html body[data-page="reservas"] .rv-month .day:disabled,
html body[data-page="reservas"] .rv-month .day.closed,
html body[data-page="reservas"] .rv-month .day.full { color: #c4c4c4; cursor: default; }
html body[data-page="reservas"] .rv-month .day.empty { visibility: hidden; }
html body[data-page="reservas"] .rv-calendar-note { margin: 14px 0 0; color: var(--rv-muted); font-size: 12px; line-height: 1.5; }

html body[data-page="reservas"] .rv-barber-picker { display: flex; align-items: center; gap: 12px; margin: 0 0 18px; }
html body[data-page="reservas"] .rv-barber-picker label { color: var(--rv-muted); font-size: 11px; font-weight: 700; letter-spacing: .9px; text-transform: uppercase; }
html body[data-page="reservas"] .rv-barber-picker select { min-width: 130px; padding: 7px 28px 7px 10px; border: 1px solid transparent; border-radius: 8px; background-color: transparent; color: #555; font: 700 12px Inter, sans-serif; letter-spacing: .4px; text-transform: uppercase; }
html body[data-page="reservas"] .selected-date { display: block !important; margin: 0 0 14px !important; padding: 0 !important; border: 0 !important; border-radius: 0 !important; background: transparent !important; color: var(--rv-muted) !important; font-size: 14px; }
html body[data-page="reservas"] .selected-date::before { content: none !important; display: none !important; }
html body[data-page="reservas"] .selected-date__label { margin-right: 7px; font-size: 11px; font-weight: 600; letter-spacing: .6px; text-transform: uppercase; }
html body[data-page="reservas"] .selected-date__value { color: var(--rv-text); font-weight: 600; text-transform: capitalize; }
html body[data-page="reservas"] .rv-time-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
html body[data-page="reservas"] .rv-time-grid .time-btn { min-height: 48px; border: 1px solid var(--rv-border) !important; border-radius: 12px !important; background: #fff !important; color: var(--rv-text) !important; font: 500 14px Inter, sans-serif; cursor: pointer; transition: background-color .3s ease, border-color .3s ease, color .3s ease, transform .3s cubic-bezier(.16,1,.3,1), box-shadow .3s ease; }
html body[data-page="reservas"] .rv-time-grid .time-btn:hover { border-color: var(--rv-ink); }
html body[data-page="reservas"] .rv-time-grid .time-btn.selected { border-color: var(--rv-ink) !important; background: var(--rv-ink) !important; color: #fff !important; box-shadow: 0 4px 12px rgba(26,26,26,.14); animation: rv-service-select .32s cubic-bezier(.16,1,.3,1) both; }
html body[data-page="reservas"] .rv-time-grid .no-slots { grid-column: 1 / -1; padding: 18px; border: 1px dashed var(--rv-border); border-radius: 12px; color: var(--rv-muted); text-align: center; }

html body[data-page="reservas"] .rv-form-fields { display: grid; gap: 17px; max-width: 620px; }
html body[data-page="reservas"] .rv-form-fields .form-group { display: grid; gap: 8px; margin: 0; }
html body[data-page="reservas"] .rv-form-fields label { display: flex; align-items: center; gap: 8px; color: #444; font: 700 11px/1.3 'DM Sans', Inter, sans-serif; letter-spacing: .8px; text-transform: uppercase; }
html body[data-page="reservas"] .rv-field-icon { display: inline-flex; flex: 0 0 17px; width: 17px; height: 17px; align-items: center; justify-content: center; color: #707b8b; }
html body[data-page="reservas"] .rv-field-icon svg { display: block; width: 16px; height: 16px; stroke-width: 1.8; }
html body[data-page="reservas"] .rv-form-fields label span { color: #888; font-weight: 500; text-transform: none; letter-spacing: 0; }
html body[data-page="reservas"] .rv-form-fields label .rv-field-icon { color: #707b8b; font-weight: 400; text-transform: none; letter-spacing: 0; }
html body[data-page="reservas"] .rv-form-fields input { width: 100%; min-height: 54px; padding: 0 15px; border: 1px solid var(--rv-border); border-radius: 14px; outline: 0; background-color: #fff !important; background-image: none !important; color: var(--rv-text); font: 400 15px Inter, sans-serif; box-shadow: none; }
html body[data-page="reservas"] .rv-form-fields #nombre,
html body[data-page="reservas"] .rv-form-fields #telefono,
html body[data-page="reservas"] .rv-form-fields #correo { background-image: none !important; background-position: initial !important; padding-left: 15px !important; }
html body[data-page="reservas"] .rv-form-fields input:focus { border-color: #777; box-shadow: 0 0 0 3px rgba(0,0,0,.06); }
html body[data-page="reservas"] .rv-form-fields input::placeholder { color: #aaa; }
html body[data-page="reservas"] .rv-phone-row { display: flex; overflow: hidden; min-height: 54px; border: 1px solid var(--rv-border); border-radius: 14px; background: #fff; }
html body[data-page="reservas"] .rv-phone-row:focus-within { border-color: #777; box-shadow: 0 0 0 3px rgba(0,0,0,.06); }
html body[data-page="reservas"] .rv-phone-row .rv-phone-prefix { display: grid; flex: 0 0 auto; place-items: center; padding: 0 14px; border-right: 1px solid var(--rv-border); background: #f8f8f8; color: #555; font-size: 14px; }
html body[data-page="reservas"] .rv-phone-row input { min-width: 0; border: 0; border-radius: 0; background-image: none !important; box-shadow: none !important; }
html body[data-page="reservas"] .rv-form-status { min-height: 0; margin-top: 12px; color: #b3261e; font-size: 13px; }
html body[data-page="reservas"] .rv-summary-card { max-width: 620px; margin: 4px auto 0; }
html body[data-page="reservas"] .rv-optional { color: #7b6d5e; font: 500 .76em/1.2 Inter, system-ui, sans-serif; letter-spacing: 0; text-transform: none; }
html body[data-page="reservas"] .rv-ticket { overflow: hidden; border-radius: 22px; filter: drop-shadow(0 12px 22px rgba(29,45,69,.12)); }
html body[data-page="reservas"] .rv-ticket__head,
html body[data-page="reservas"] .rv-ticket__body { border: 1px solid #e1e6ed; }
html body[data-page="reservas"] .rv-ticket__head { position: relative; display: flex; align-items: flex-end; justify-content: space-between; gap: 14px; overflow: hidden; padding: 31px 24px 22px; border-bottom: 0; border-radius: 22px 22px 0 0; background: #f4f7fb; -webkit-mask: radial-gradient(circle 11px at 0 100%, #0000 97%, #000) left / 51% 100% no-repeat, radial-gradient(circle 11px at 100% 100%, #0000 97%, #000) right / 51% 100% no-repeat; mask: radial-gradient(circle 11px at 0 100%, #0000 97%, #000) left / 51% 100% no-repeat, radial-gradient(circle 11px at 100% 100%, #0000 97%, #000) right / 51% 100% no-repeat; }
html body[data-page="reservas"] .rv-ticket__head::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 7px; background: repeating-linear-gradient(-45deg, #d94f4f 0 7px, #fff 7px 14px, #3b78e0 14px 21px, #fff 21px 28px); }
html body[data-page="reservas"] .rv-ticket__when { display: flex; min-width: 0; align-items: flex-end; gap: 12px; }
html body[data-page="reservas"] .rv-ticket__day { color: #172b4d; font: 600 clamp(54px, 14vw, 76px)/.82 'Playfair Display', Georgia, serif; font-variant-numeric: lining-nums; }
html body[data-page="reservas"] .rv-ticket__date { display: flex; min-width: 0; flex-direction: column; gap: 3px; padding-bottom: 2px; }
html body[data-page="reservas"] .rv-ticket__date strong { color: #172b4d; font-size: 15px; font-weight: 700; }
html body[data-page="reservas"] .rv-ticket__date small { color: #68778c; font-size: 13px; text-transform: capitalize; }
html body[data-page="reservas"] .rv-ticket__time { display: flex; flex: none; flex-direction: column; align-items: flex-end; gap: 5px; }
html body[data-page="reservas"] .rv-ticket__time span { color: #68778c; font-size: 11px; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; }
html body[data-page="reservas"] .rv-ticket__time strong { color: #1a1a1a; font: 600 clamp(28px, 8vw, 38px)/.95 'Playfair Display', Georgia, serif; font-variant-numeric: tabular-nums; }
html body[data-page="reservas"] .rv-ticket__body { position: relative; margin: 0; padding: 11px 24px 9px; border-top: 0; border-radius: 0 0 22px 22px; background: #fff; -webkit-mask: radial-gradient(circle 11px at 0 0, #0000 97%, #000) left / 51% 100% no-repeat, radial-gradient(circle 11px at 100% 0, #0000 97%, #000) right / 51% 100% no-repeat; mask: radial-gradient(circle 11px at 0 0, #0000 97%, #000) left / 51% 100% no-repeat, radial-gradient(circle 11px at 100% 0, #0000 97%, #000) right / 51% 100% no-repeat; }
html body[data-page="reservas"] .rv-ticket__body::before { content: ""; position: absolute; top: 0; left: 20px; right: 20px; border-top: 2px dashed #d9e0e9; }
html body[data-page="reservas"] .rv-ticket__row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 13px 0; border-bottom: 1px solid #edf0f4; }
html body[data-page="reservas"] .rv-ticket__row:last-child { border-bottom: 0; }
html body[data-page="reservas"] .rv-ticket__row dt { margin: 0; color: #68778c; font-size: 13px; }
html body[data-page="reservas"] .rv-ticket__row dd { margin: 0; color: #172b4d; font-size: 14px; font-weight: 600; text-align: right; overflow-wrap: anywhere; }
html body[data-page="reservas"] .rv-ticket__row dd.rv-ticket__status { padding: 5px 11px; border-radius: 999px; background: #eaf0f8; color: #344a68; font-size: 12px; }
html body[data-page="reservas"] .rv-empty-state { padding: 18px; border: 1px dashed var(--rv-border); border-radius: 14px; color: var(--rv-muted); text-align: center; }

html body[data-page="reservas"] .rv-bottom-bar { position: fixed; right: 0; bottom: 0; left: 0; z-index: 25; display: flex; justify-content: center; gap: 10px; padding: 14px max(20px, calc((100vw - 780px) / 2)); padding-bottom: max(14px, env(safe-area-inset-bottom)); border-top: 1px solid rgba(232,232,232,.9); background: rgba(255,255,255,.94); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
html body[data-page="reservas"] .rv-continue { flex: 1; width: 100%; max-width: 780px; min-height: 58px; border: 0; border-radius: 999px; background: #17191c; color: #fff; font: 700 14px Inter, sans-serif; letter-spacing: .14em; text-transform: uppercase; cursor: pointer; touch-action: manipulation; -webkit-tap-highlight-color: transparent; transition: transform .3s cubic-bezier(.16,1,.3,1), background-color .3s ease, color .3s ease, box-shadow .3s ease; }
html body[data-page="reservas"] .rv-continue:hover:not(:disabled) { background: #303030; box-shadow: 0 7px 22px rgba(0,0,0,.15); transform: translate3d(0,-1px,0); }
html body[data-page="reservas"] .rv-continue:active:not(:disabled) { background: #111; box-shadow: 0 2px 8px rgba(0,0,0,.12); transform: scale(.99); transition-duration: .14s; }
html body[data-page="reservas"] .rv-continue:disabled { background: #dedede; color: #999; cursor: not-allowed; }
html body[data-page="reservas"] .rv-finalize { max-width: 780px; }
html body[data-page="reservas"] .rv-back-step { flex: 0 0 auto; min-width: 86px; border: 1px solid var(--rv-border); border-radius: 14px; background: #fff; color: var(--rv-text); font: 600 14px Inter, sans-serif; cursor: pointer; }
html body[data-page="reservas"] [hidden] { display: none !important; }
html body[data-page="reservas"] .rv-data-control,
html body[data-page="reservas"] .rv-submit-proxy { position: absolute !important; width: 1px !important; height: 1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; }

html body[data-page="reservas"] .rv-step button:focus-visible,
html body[data-page="reservas"] .rv-bottom-bar button:focus-visible,
html body[data-page="reservas"] .rv-form-fields input:focus-visible { outline: 3px solid rgba(26,26,26,.22); outline-offset: 2px; }

@media (max-width: 700px) {
  html body[data-page="reservas"] .rv-wizard-header { min-height: 60px; padding: 8px 16px; }
  html body[data-page="reservas"] .rv-wizard-header .rv-header-back,
  html body[data-page="reservas"] .rv-wizard-header .rv-header-exit { font-size: 13px; }
  html body[data-page="reservas"] .rv-wizard-brand { font-size: 18px; }
  html body[data-page="reservas"] .rv-progress-wrap,
  html body[data-page="reservas"] .rv-wizard-main { width: calc(100% - 32px); }
  html body[data-page="reservas"] .rv-progress-wrap { padding-top: 18px; }
  html body[data-page="reservas"] .rv-wizard-main { min-height: 0; padding-top: 20px; }
  html body[data-page="reservas"] .rv-step-subtitle { margin-bottom: 20px; font-size: 14px; }
  html body[data-page="reservas"] .rv-step h1 { gap: 10px; font-size: 25px; letter-spacing: -.55px; }
  html body[data-page="reservas"] .rv-step-heading-icon { flex-basis: 36px; width: 36px; height: 36px; border-radius: 12px; }
  html body[data-page="reservas"] .rv-step-heading-icon svg { width: 19px; height: 19px; }
  html body[data-page="reservas"] .rv-months { grid-template-columns: 1fr; gap: 14px; }
  html body[data-page="reservas"] .rv-month { padding: 10px 2px 14px; }
  html body[data-page="reservas"] .rv-month h2 { margin-bottom: 20px; }
  html body[data-page="reservas"] .rv-calendar-nav .month-label { font-size: 12px; }
  html body[data-page="reservas"] .rv-calendar-nav .calendar-nav-btn { width: 38px; min-width: 38px; height: 38px; font-size: 12px; }
  html body[data-page="reservas"] .rv-month .days,
  html body[data-page="reservas"] .rv-month .weekdays { gap: 4px; }
  html body[data-page="reservas"] .rv-month .day { border-radius: 9px; font-size: 12px; }
  html body[data-page="reservas"] .rv-service-card { min-height: 76px; gap: 12px; padding: 12px; }
  html body[data-page="reservas"] .rv-service-icon { flex-basis: 46px; width: 46px; height: 46px; border-radius: 14px; }
  html body[data-page="reservas"] .rv-service-icon svg { width: 24px; height: 24px; }
  html body[data-page="reservas"] .rv-service-info strong { font-size: 13px; }
  html body[data-page="reservas"] .rv-service-info small { font-size: 9px; letter-spacing: .1em; }
  html body[data-page="reservas"] .rv-service-meta { padding-right: 30px; }
  html body[data-page="reservas"] .rv-service-meta strong { font-size: 13px; }
  html body[data-page="reservas"] .rv-time-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
  html body[data-page="reservas"] .rv-time-grid .time-btn { min-height: 46px; font-size: 13px; }
  html body[data-page="reservas"] .rv-bottom-bar { padding-right: 16px; padding-left: 16px; }
  html body[data-page="reservas"] .rv-continue { min-height: 54px; }
  html body[data-page="reservas"] .rv-back-step { min-width: 74px; font-size: 12px; }
  html body[data-page="reservas"] .rv-ticket__head { padding: 27px 17px 19px; }
  html body[data-page="reservas"] .rv-ticket__body { padding: 10px 17px 8px; }
  html body[data-page="reservas"] .rv-ticket__row { gap: 10px; padding: 12px 0; }
  html body[data-page="reservas"] .rv-ticket__row dt { font-size: 12px; }
  html body[data-page="reservas"] .rv-ticket__row dd { font-size: 13px; }
}

@media (prefers-reduced-motion: reduce) {
  html body[data-page="reservas"] .rv-step,
  html body[data-page="reservas"] .rv-service-card,
  html body[data-page="reservas"] .rv-month .day,
  html body[data-page="reservas"] .rv-time-grid .time-btn,
  html body[data-page="reservas"] .rv-continue { animation: none !important; transition: none !important; }
}
.rv-barber-picker {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  margin: 0 0 12px;
}

.rv-barber-picker label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  line-height: 1;
  white-space: nowrap;
  flex: 0 0 auto;
}

.rv-barber-picker-icon {
  display: inline-flex;
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
}

.rv-barber-picker-icon svg {
  width: 100%;
  height: 100%;
}

.rv-barber-picker select {
  flex: 1 1 auto;
  min-width: 0;
  width: auto;
  height: 38px;
  padding: 0 10px;
  font-size: 14px;
  border-radius: 8px;
}
/* ==========================================================================
   Soft-glass: materialidad de las tarjetas de servicio (solo visual)
   Aislado a .rv-service-card / .rv-service-icon. No toca .rv-continue.
   ========================================================================== */
@keyframes rv-service-sheen { from { background-position: 120% 0; } to { background-position: 0% 0; } }

html body[data-page="reservas"] .rv-service-card {
  isolation: isolate;
  border-color: rgba(15,23,42,.075);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.95),
    inset 0 -1px 0 rgba(15,23,42,.035),
    inset 0 0 0 1px rgba(255,255,255,.35),
    0 1px 2px rgba(15,23,42,.04),
    0 8px 22px -6px rgba(15,23,42,.09);
}
/* reflejo líquido: amplio, curvo, casi imperceptible (detrás del contenido) */
html body[data-page="reservas"] .rv-service-card::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  pointer-events: none;
  background:
    radial-gradient(120% 90% at 8% -20%, rgba(255,255,255,.55) 0%, rgba(255,255,255,0) 55%),
    linear-gradient(168deg, rgba(255,255,255,.34) 0%, rgba(255,255,255,0) 42%, rgba(15,23,42,.018) 100%);
  background-size: 100% 100%, 200% 100%;
  opacity: .8;
  transition: opacity .45s cubic-bezier(.16,1,.3,1);
}
html body[data-page="reservas"] .rv-service-card:hover {
  border-color: rgba(15,23,42,.12);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.98),
    inset 0 -1px 0 rgba(15,23,42,.04),
    inset 0 0 0 1px rgba(255,255,255,.4),
    0 1px 2px rgba(15,23,42,.05),
    0 12px 26px -8px rgba(15,23,42,.12);
}

/* seleccionada: más profundidad y reflejo un poco más presente */
html body[data-page="reservas"] .rv-service-card.selected {
  border-color: rgba(15,23,42,.17);
  box-shadow:
    inset 0 1.5px 0 rgba(255,255,255,1),
    inset 0 -2px 6px rgba(15,23,42,.05),
    inset 0 0 0 1px rgba(255,255,255,.55),
    0 2px 4px rgba(15,23,42,.06),
    0 14px 30px -8px rgba(15,23,42,.16);
}
html body[data-page="reservas"] .rv-service-card.selected::before {
  opacity: 1;
  background:
    radial-gradient(130% 100% at 10% -25%, rgba(255,255,255,.8) 0%, rgba(255,255,255,0) 58%),
    linear-gradient(162deg, rgba(255,255,255,.5) 0%, rgba(255,255,255,.08) 38%, rgba(255,255,255,0) 52%, rgba(15,23,42,.03) 100%),
    linear-gradient(105deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.4) 48%, rgba(255,255,255,0) 66%);
  background-size: 100% 100%, 100% 100%, 220% 100%;
  background-position: 0 0, 0 0, 0% 0;
  animation: rv-service-sheen 1.1s cubic-bezier(.16,1,.3,1) both;
}
html body[data-page="reservas"] .rv-service-card::after {
  box-shadow: inset 0 1px 1px rgba(15,23,42,.06);
}
html body[data-page="reservas"] .rv-service-card.selected::after {
  box-shadow: inset 0 1px 0 rgba(255,255,255,.22), 0 1px 3px rgba(15,23,42,.22);
}

/* icon-box: mismo material, un nivel por encima de la tarjeta */
html body[data-page="reservas"] .rv-service-icon {
  position: relative;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.9),
    inset 0 -2px 4px rgba(15,23,42,.045),
    inset 0 0 0 1px rgba(255,255,255,.3),
    0 0 0 1px rgba(15,23,42,.05),
    0 4px 9px -3px rgba(15,23,42,.12);
  transition: background-color .28s ease, color .28s ease, transform .28s cubic-bezier(.16,1,.3,1), box-shadow .35s ease;
}
html body[data-page="reservas"] .rv-service-icon::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  background: linear-gradient(160deg, rgba(255,255,255,.45) 0%, rgba(255,255,255,0) 52%);
}
html body[data-page="reservas"] .rv-service-icon svg { position: relative; }
html body[data-page="reservas"] .rv-service-card.selected .rv-service-icon {
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.95),
    inset 0 -2px 5px rgba(15,23,42,.06),
    inset 0 0 0 1px rgba(255,255,255,.35),
    0 0 0 1px rgba(15,23,42,.07),
    0 5px 11px -3px rgba(15,23,42,.16);
}

@media (prefers-reduced-motion: reduce) {
  html body[data-page="reservas"] .rv-service-card::before { animation: none !important; transition: none !important; }
}

/* ==========================================================================
   Ajuste 2: tarjeta seleccionada más fiel a la referencia + barra de progreso
   ========================================================================== */

/* --- Tarjeta seleccionada: borde cristal, ola diagonal, borde inferior claro --- */
html body[data-page="reservas"] .rv-service-card.selected {
  border-color: rgba(110,126,148,.34);
  background-image: linear-gradient(180deg, rgba(255,255,255,.28) 0%, rgba(255,255,255,0) 45%, rgba(15,23,42,.035) 100%);
  box-shadow:
    inset 0 2px 1px rgba(255,255,255,1),
    inset 0 1px 0 1px rgba(255,255,255,.7),
    inset 0 -3px 5px rgba(255,255,255,.95),
    inset 0 -1px 0 rgba(120,135,155,.28),
    inset 0 8px 18px -8px rgba(15,23,42,.09),
    0 2px 3px rgba(15,23,42,.07),
    0 16px 30px -10px rgba(15,23,42,.24);
}
html body[data-page="reservas"] .rv-service-card.selected::before {
  opacity: 1;
  background:
    /* arco brillante curvo en el borde superior */
    radial-gradient(140% 70% at 50% -18%, rgba(255,255,255,.85) 0%, rgba(255,255,255,0) 62%),
    /* ola diagonal suave */
    linear-gradient(112deg, rgba(255,255,255,0) 18%, rgba(255,255,255,.42) 34%, rgba(255,255,255,.1) 46%, rgba(255,255,255,0) 58%),
    /* curva inferior tipo líquido */
    radial-gradient(120% 60% at 70% 125%, rgba(255,255,255,.7) 0%, rgba(255,255,255,0) 60%),
    /* barrido animado al seleccionar */
    linear-gradient(105deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.55) 48%, rgba(255,255,255,0) 66%);
  background-size: 100% 100%, 100% 100%, 100% 100%, 240% 100%;
  background-repeat: no-repeat;
  background-position: 0 0, 0 0, 0 0, 0% 0;
  animation: rv-service-sheen 1.2s cubic-bezier(.16,1,.3,1) both;
}
/* icon-box dentro de la seleccionada: un poco más de volumen */
html body[data-page="reservas"] .rv-service-card.selected .rv-service-icon {
  box-shadow:
    inset 0 1.5px 0 rgba(255,255,255,1),
    inset 0 -3px 6px rgba(15,23,42,.08),
    inset 0 0 0 1px rgba(255,255,255,.45),
    0 0 0 1px rgba(15,23,42,.08),
    0 6px 12px -3px rgba(15,23,42,.2);
}
/* normales: borde inferior claro, más cercano a la referencia */
html body[data-page="reservas"] .rv-service-card:not(.selected) {
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,1),
    inset 0 -2px 4px rgba(255,255,255,.9),
    inset 0 0 0 1px rgba(255,255,255,.4),
    0 1px 2px rgba(15,23,42,.05),
    0 8px 20px -8px rgba(15,23,42,.12);
}

/* --- Barra de progreso: relleno que avanza + partículas discretas --- */
@keyframes rv-bar-fill { from { transform: scaleX(0); } to { transform: scaleX(1); } }
@keyframes rv-bar-spark {
  0%   { left: 0; opacity: 0; }
  12%  { opacity: .9; }
  80%  { opacity: .55; }
  100% { left: 100%; opacity: 0; }
}
html body[data-page="reservas"] .rv-progress-step { position: relative; }
html body[data-page="reservas"] .rv-progress-step.active:not(.done) { background: #e6e6e6; }
html body[data-page="reservas"] .rv-progress-step.active::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: var(--rv-ink);
  transform-origin: left center;
  animation: rv-bar-fill .75s cubic-bezier(.16,1,.3,1) both;
}
html body[data-page="reservas"] .rv-progress-step.active::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 0;
  width: 2px;
  height: 2px;
  margin-top: -1px;
  border-radius: 50%;
  background: rgba(23,25,28,.55);
  pointer-events: none;
  box-shadow:
    -5px -4px 0 -.2px rgba(23,25,28,.45),
    -9px 3px 0 -.4px rgba(23,25,28,.35),
    -14px -6px 0 -.5px rgba(23,25,28,.28),
    -19px 5px 0 -.6px rgba(23,25,28,.2),
    -25px -3px 0 -.6px rgba(23,25,28,.14);
  animation: rv-bar-spark .75s cubic-bezier(.16,1,.3,1) both;
}
@media (prefers-reduced-motion: reduce) {
  html body[data-page="reservas"] .rv-progress-step.active::before,
  html body[data-page="reservas"] .rv-progress-step.active::after { animation: none !important; }
  html body[data-page="reservas"] .rv-progress-step.active::after { display: none; }
}

/* ==========================================================================
   Ajuste 3: tarjeta seleccionada = "losa de vidrio" biselada (como la referencia)
   + partículas del progreso más visibles
   ========================================================================== */
html body[data-page="reservas"] .rv-service-card.selected {
  border-color: rgba(140,156,178,.38);
  background-image: linear-gradient(100deg, rgba(120,136,160,.13) 0%, rgba(150,164,184,.06) 45%, rgba(255,255,255,.22) 100%);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.95),
    inset 0 0 0 7px rgba(176,188,204,.17),
    inset 0 2px 3px 6px rgba(255,255,255,.28),
    inset 0 -4px 5px -1px rgba(255,255,255,.95),
    inset 0 10px 22px -10px rgba(15,23,42,.10),
    0 2px 3px rgba(15,23,42,.07),
    0 18px 32px -12px rgba(30,45,70,.30);
}
html body[data-page="reservas"] .rv-service-card.selected::before {
  opacity: 1;
  background-image:
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 40' preserveAspectRatio='none'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' y1='0' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='white' stop-opacity='0'/%3E%3Cstop offset='.3' stop-color='white' stop-opacity='.8'/%3E%3Cstop offset='.8' stop-color='white' stop-opacity='.95'/%3E%3Cstop offset='1' stop-color='white' stop-opacity='.3'/%3E%3C/linearGradient%3E%3ClinearGradient id='h' x1='0' y1='0' x2='1' y2='0'%3E%3Cstop offset='0' stop-color='white' stop-opacity='0'/%3E%3Cstop offset='.5' stop-color='white' stop-opacity='.45'/%3E%3Cstop offset='1' stop-color='white' stop-opacity='0'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath d='M0 38 C30 38 52 30 72 14 S92 1 100 2 L100 40 L0 40Z' fill='white' fill-opacity='.24'/%3E%3Cpath d='M0 40 C34 40 58 34 78 20 S94 9 100 8' fill='none' stroke='url(%23h)' stroke-width='1' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M0 38 C30 38 52 30 72 14 S92 1 100 2' fill='none' stroke='url(%23g)' stroke-width='1.6' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E"),
    radial-gradient(150% 65% at 45% -22%, rgba(255,255,255,.7) 0%, rgba(255,255,255,0) 62%),
    linear-gradient(105deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.5) 48%, rgba(255,255,255,0) 66%);
  background-size: 100% 100%, 100% 100%, 240% 100%;
  background-repeat: no-repeat;
  background-position: 0 0, 0 0, 0% 0;
  animation: rv-service-sheen 1.2s cubic-bezier(.16,1,.3,1) both;
}
html body[data-page="reservas"] .rv-service-card.selected .rv-service-icon {
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.85),
    inset 0 2px 2px rgba(255,255,255,.9),
    inset 0 -4px 7px rgba(255,255,255,.55),
    inset 0 -1px 0 rgba(120,136,160,.25),
    0 0 0 1px rgba(120,136,160,.16),
    0 7px 14px -4px rgba(30,45,70,.22);
}

/* partículas del progreso: más notorias pero finas */
@keyframes rv-bar-spark {
  0%   { left: 0; opacity: 0; }
  10%  { opacity: 1; }
  85%  { opacity: .8; }
  100% { left: 100%; opacity: 0; }
}
html body[data-page="reservas"] .rv-progress-step.active::before { animation-duration: .9s; }
html body[data-page="reservas"] .rv-progress-step.active::after {
  width: 3px;
  height: 3px;
  margin-top: -1.5px;
  background: rgba(23,25,28,.9);
  animation-duration: .9s;
  box-shadow:
    -6px -5px 0 0 rgba(23,25,28,.75),
    -11px 4px 0 -.3px rgba(23,25,28,.65),
    -17px -8px 0 -.3px rgba(23,25,28,.55),
    -23px 7px 0 -.4px rgba(23,25,28,.45),
    -30px -4px 0 -.5px rgba(23,25,28,.35),
    -37px 6px 0 -.6px rgba(23,25,28,.25),
    -45px -7px 0 -.7px rgba(23,25,28,.16),
    0 0 6px 1px rgba(23,25,28,.25);
}

/* ==========================================================================
   Ajuste 4: partículas del progreso con movimiento propio
   Cada punto sale de la cabeza de la barra, se dispersa hacia atrás,
   sube/baja distinto, se encoge y se desvanece.
   ========================================================================== */
@keyframes rv-bar-head {
  from { left: 0; }
  to   { left: 100%; }
}
@keyframes rv-bar-dots {
  0% {
    background-color: rgba(23,25,28,.85);
    box-shadow:
      0 0 0 0 rgba(23,25,28,.8), 0 0 0 0 rgba(23,25,28,.8), 0 0 0 0 rgba(23,25,28,.8), 0 0 0 0 rgba(23,25,28,.8),
      0 0 0 0 rgba(23,25,28,.8), 0 0 0 0 rgba(23,25,28,.8), 0 0 0 0 rgba(23,25,28,.8), 0 0 5px 1px rgba(23,25,28,.28);
  }
  35% {
    background-color: rgba(23,25,28,.8);
    box-shadow:
      -8px -6px 0 0 rgba(23,25,28,.8), -13px 5px 0 0 rgba(23,25,28,.7), -19px -9px 0 -.3px rgba(23,25,28,.62), -26px 8px 0 -.3px rgba(23,25,28,.52),
      -33px -5px 0 -.4px rgba(23,25,28,.42), -41px 7px 0 -.5px rgba(23,25,28,.32), -49px -8px 0 -.6px rgba(23,25,28,.22), 0 0 6px 1px rgba(23,25,28,.22);
  }
  100% {
    background-color: rgba(23,25,28,0);
    box-shadow:
      -20px -14px 0 -1px rgba(23,25,28,0), -32px 12px 0 -1px rgba(23,25,28,0), -46px -17px 0 -1px rgba(23,25,28,0), -60px 15px 0 -1px rgba(23,25,28,0),
      -74px -10px 0 -1px rgba(23,25,28,0), -88px 13px 0 -1px rgba(23,25,28,0), -102px -15px 0 -1px rgba(23,25,28,0), 0 0 0 0 rgba(23,25,28,0);
  }
}
html body[data-page="reservas"] .rv-progress-step.active::after {
  animation:
    rv-bar-head .9s cubic-bezier(.16,1,.3,1) both,
    rv-bar-dots 1.25s cubic-bezier(.2,.6,.3,1) both;
}
/* ==========================================================================
   Selector de barbero: label arriba + control tipo "select card"
   Solo CSS. Ícono tijera+peine va dentro del select (background-image),
   el ícono genérico de persona del HTML se oculta.
   ========================================================================== */
html body[data-page="reservas"] .rv-barber-picker {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 8px;
  margin: 0 0 22px;
}

html body[data-page="reservas"] .rv-barber-picker label {
  display: block;
  color: var(--rv-muted);
  font: 500 14px/1.2 Inter, sans-serif;
  letter-spacing: 0;
  text-transform: none;
}

/* oculta el ícono de persona (el nuevo va dentro del select) */
html body[data-page="reservas"] .rv-barber-picker-icon { display: none; }

html body[data-page="reservas"] .rv-barber-picker select {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  min-width: 0;
  height: 54px;
  padding: 0 44px 0 60px;
  border: 1px solid var(--rv-border);
  border-radius: 12px;
  background-color: #fafafa;
  background-repeat: no-repeat, no-repeat;
  background-position: left 14px center, right 16px center;
  background-size: 34px 34px, 16px 16px;
  background-image:
    url("data:image/webp;base64,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"),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231a1a1a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  color: var(--rv-ink);
  font: 700 17px Inter, sans-serif;
  letter-spacing: 0;
  text-transform: none;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.95), 0 1px 2px rgba(15,23,42,.04), 0 6px 16px -8px rgba(15,23,42,.10);
  cursor: pointer;
  transition: border-color .3s ease, box-shadow .3s ease;
}

html body[data-page="reservas"] .rv-barber-picker select:hover,
html body[data-page="reservas"] .rv-barber-picker select:focus-visible {
  border-color: var(--rv-ink);
  outline: none;
}

@media (max-width: 640px) {
  html body[data-page="reservas"] .rv-barber-picker select { height: 52px; font-size: 16px; } /* 16px evita zoom en iOS */
}

/* --------------------------------------------------------------------------
   Barbero: tarjetas con foto (solo presentación). El <select id="barberoVisible">
   sigue en el DOM como fuente de verdad, solo se oculta.
   -------------------------------------------------------------------------- */
html body[data-page="reservas"] .rv-barber-picker { gap: 2px; margin: 0 0 34px; min-width: 0; }
html body[data-page="reservas"] .rv-barber-picker select { display: none; }

html body[data-page="reservas"] .rv-barber-current {
  display: flex;
  align-items: center;
  gap: 5px;
  min-height: 18px;
  margin: 0 0 10px;
  color: var(--rv-muted);
  font: 400 15px/1.2 Inter, sans-serif;
}
html body[data-page="reservas"] .rv-barber-current::before {
  content: "";
  flex: 0 0 2px;
  width: 2px;
  height: 12px;
  border-radius: 2px;
  background: var(--rv-help-yellow-border, #f0e0a8);
}
html body[data-page="reservas"] .rv-barber-current.is-empty { font-size: 12.5px; }
html body[data-page="reservas"] .rv-barber-current.is-empty::before { flex-basis: 1px; width: 1px; height: 9px; background: #cfcfcf; }

html body[data-page="reservas"] .rv-barber-carousel { position: relative; min-width: 0; }
html body[data-page="reservas"] .rv-barber-cards {
  display: flex;
  gap: 10px;
  padding: 2px 9px 4px;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  scroll-snap-type: x proximity;
  scroll-padding: 0 9px;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
}
html body[data-page="reservas"] .rv-barber-cards::-webkit-scrollbar { display: none; }

html body[data-page="reservas"] .rv-barber-card {
  position: relative;
  flex: 0 0 78px;
  width: 78px;
  min-width: 78px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
  padding: 5px 5px 7px;
  border: 1px solid var(--rv-border);
  border-radius: 12px;
  background: #fafafa;
  color: #555;
  font: 500 12.5px/1.2 Inter, sans-serif;
  text-align: center;
  cursor: pointer;
  scroll-snap-align: start;
  -webkit-tap-highlight-color: transparent;
  transition: border-color .25s ease, background-color .25s ease, box-shadow .25s ease;
}
html body[data-page="reservas"] .rv-barber-card:hover { border-color: #cfcfcf; }
html body[data-page="reservas"] .rv-barber-card:focus-visible { outline: 2px solid var(--rv-ink); outline-offset: 2px; }

html body[data-page="reservas"] .rv-barber-photo {
  display: block;
  width: 100%;
  height: 62px;
  border-radius: 8px;
  object-fit: cover;
  object-position: center top;
  background: #ececec;
  user-select: none;
  -webkit-user-drag: none;
}
html body[data-page="reservas"] .rv-barber-photo--empty {
  display: grid;
  place-items: center;
  color: #888;
  font: 600 22px Inter, sans-serif;
}
html body[data-page="reservas"] .rv-barber-name {
  display: block;
  overflow: hidden;
  color: inherit;
  text-overflow: ellipsis;
  white-space: nowrap;
}

html body[data-page="reservas"] .rv-barber-card.selected {
  border-color: var(--rv-ink);
  background: #fbfaf7;
  box-shadow: 0 0 0 .5px var(--rv-ink);
  color: var(--rv-ink);
}
html body[data-page="reservas"] .rv-barber-check {
  position: absolute;
  top: 7px;
  right: 7px;
  display: grid;
  width: 17px;
  height: 17px;
  place-items: center;
  border-radius: 50%;
  background: var(--rv-ink);
}
html body[data-page="reservas"] .rv-barber-check svg {
  width: 11px;
  height: 11px;
  fill: none;
  stroke: #fff;
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
}

html body[data-page="reservas"] .rv-barber-arrow[hidden],
html body[data-page="reservas"] .rv-barber-dots[hidden] { display: none !important; }
html body[data-page="reservas"] .rv-barber-arrow {
  -webkit-appearance: none !important;
  appearance: none !important;
  position: absolute;
  top: 50%;
  z-index: 1;
  display: grid;
  width: 16px !important;
  min-width: 0 !important;
  height: 32px !important;
  min-height: 0 !important;
  margin: -16px 0 0 !important;
  padding: 0 !important;
  place-items: center;
  border: 0 !important;
  border-radius: 0 !important;
  outline: none !important;
  background: none !important;
  box-shadow: none !important;
  color: #555;
  cursor: pointer;
  transition: opacity .2s ease;
  -webkit-tap-highlight-color: transparent;
}
html body[data-page="reservas"] .rv-barber-arrow.is-edge { opacity: .3; pointer-events: none; }
html body[data-page="reservas"] .rv-barber-arrow--prev { left: -10px; }
html body[data-page="reservas"] .rv-barber-arrow--next { right: -10px; }
html body[data-page="reservas"] .rv-barber-arrow svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

html body[data-page="reservas"] .rv-barber-dots {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 12px;
}
html body[data-page="reservas"] .rv-barber-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #e3e3e3;
  transition: background-color .25s ease;
}
html body[data-page="reservas"] .rv-barber-dot.active { background: var(--rv-ink); }

@media (prefers-reduced-motion: reduce) {
  html body[data-page="reservas"] .rv-barber-card,
  html body[data-page="reservas"] .rv-barber-dot { transition: none; }
}

/* ==========================================================================
   Íconos de título: colores originales + brillo que pasa (shimmer)
   Color base plano (sin degradado); el destello es solo un reflejo que cruza.
   Colores: --rv-icon-color / --rv-icon-bg / --rv-icon-border
   ========================================================================== */
html body[data-page="reservas"] {
  --rv-icon-color: #475569;
  --rv-icon-bg: #f3f5f7;
  --rv-icon-border: #e8ebef;
  --rv-help-yellow: #c99a1e;
  --rv-help-yellow-bg: #fdf6dc;
  --rv-help-yellow-border: #f0e0a8;
}

@keyframes rv-icon-glint {
  0%, 55%  { transform: translateX(-160%) skewX(-20deg); }
  85%, 100% { transform: translateX(260%) skewX(-20deg); }
}

html body[data-page="reservas"] .rv-step-heading-icon {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  border-color: var(--rv-icon-border);
  background: var(--rv-icon-bg);
  color: var(--rv-icon-color);
}

html body[data-page="reservas"] .rv-step-heading-icon::after {
  content: "";
  position: absolute;
  top: -20%;
  bottom: -20%;
  left: 0;
  width: 60%;
  background: linear-gradient(100deg, transparent 0%, rgba(255,255,255,.85) 50%, transparent 100%);
  transform: translateX(-160%) skewX(-20deg);
  animation: rv-icon-glint 4.5s ease-in-out infinite;
  pointer-events: none;
}

@media (prefers-reduced-motion: reduce) {
  html body[data-page="reservas"] .rv-step-heading-icon::after { animation: none; opacity: 0; }
}

/* Botón de ayuda (?): amarillo suave. El hover/abierto existente (negro) se mantiene. */
html body[data-page="reservas"] .rv-step-help-button {
  border-color: var(--rv-help-yellow-border);
  background: var(--rv-help-yellow-bg);
  color: var(--rv-help-yellow);
}

/* ==========================================================================
   Header: texto "Atrás" junto a la flecha (aparece desde el paso 2)
   El JS ya oculta el botón en el paso 1 con el atributo [hidden].
   ========================================================================== */
@keyframes rv-back-in { from { opacity: 0; transform: translateX(-6px); } to { opacity: 1; transform: none; } }

html body[data-page="reservas"] .rv-wizard-header .rv-header-back[hidden] { display: none !important; }

html body[data-page="reservas"] .rv-wizard-header .rv-header-back { gap: 2px; padding-right: 8px; }

html body[data-page="reservas"] .rv-wizard-header .rv-header-back::after {
  content: "Atrás";
  color: inherit;
  font: inherit;
  animation: rv-back-in .38s cubic-bezier(.16,1,.3,1) both;
}

@media (prefers-reduced-motion: reduce) {
  html body[data-page="reservas"] .rv-wizard-header .rv-header-back::after { animation: none; }
}

/* ==========================================================================
   Paso 3 (celular): título, barbero y fecha quedan fijos;
   solo la cuadrícula de horas se desliza. La página ya no hace scroll aquí.
   ========================================================================== */
@media (max-width: 700px) {
  html body[data-page="reservas"]:has(#step3.active) .reservas-wizard {
    display: flex !important;
    flex-direction: column;
    height: 100dvh;
    min-height: 0;
    overflow: hidden;
  }
  html body[data-page="reservas"]:has(#step3.active) .reservas-wizard .main-content:not(.hide) {
    display: flex !important;
    flex-direction: column;
    flex: 1 1 auto;
    height: auto !important;
    min-height: 0 !important;
    overflow: hidden;
  }
  html body[data-page="reservas"]:has(#step3.active) .rv-wizard-header,
  html body[data-page="reservas"]:has(#step3.active) .rv-progress-wrap { flex: 0 0 auto; }

  html body[data-page="reservas"]:has(#step3.active) #bookingForm {
    display: flex !important;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
  }
  html body[data-page="reservas"]:has(#step3.active) .rv-wizard-main {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    padding-bottom: calc(100px + env(safe-area-inset-bottom));
  }
  html body[data-page="reservas"] #step3.active {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
  }
  html body[data-page="reservas"] #step3.active > * { flex: 0 0 auto; }

  /* Siempre 5 filas de horas visibles como mínimo (5 x 46px + 4 x 8px + relleno 12px = 274px).
     Si el alto del navegador no alcanza, se compacta la parte superior y, como último recurso,
     la pantalla hace scroll en vez de recortar la cuadrícula. */
  html body[data-page="reservas"]:has(#step3.active) .reservas-wizard .main-content:not(.hide) { overflow-y: auto; }
  html body[data-page="reservas"]:has(#step3.active) #bookingForm,
  html body[data-page="reservas"]:has(#step3.active) .rv-wizard-main,
  html body[data-page="reservas"] #step3.active { flex: 1 0 auto; min-height: auto; }

  html body[data-page="reservas"] #step3.active .rv-step-subtitle { margin-bottom: 8px; }
  html body[data-page="reservas"] #step3.active .rv-barber-picker { margin-bottom: 10px; }
  html body[data-page="reservas"] #step3.active .rv-barber-current { min-height: 16px; margin-bottom: 4px; }
  html body[data-page="reservas"] #step3.active .rv-barber-photo { height: 46px; }
  html body[data-page="reservas"] #step3.active .rv-barber-card { gap: 4px; padding-bottom: 6px; }
  html body[data-page="reservas"] #step3.active .rv-barber-dots { margin-top: 8px; }
  html body[data-page="reservas"] #step3.active .selected-date { margin-bottom: 8px !important; }

  html body[data-page="reservas"] #step3.active #timesGrid {
    flex: 1 0 274px;
    min-height: 274px;
    align-content: start;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    margin: 0 -4px;
    padding: 4px 4px 8px;
  }
}

/* ==========================================================================
   Ícono del paso 1 (Elige tu servicio): peluqueria.webp (peine + tijera)
   Se usa como máscara, así toma el color de --rv-icon-color igual que los demás.
   ========================================================================== */
html body[data-page="reservas"] #step1Title .rv-step-heading-icon svg { display: none; }
html body[data-page="reservas"] #step1Title .rv-step-heading-icon::before {
  content: "";
  display: block;
  width: 24px;
  height: 24px;
  background-color: var(--rv-icon-color);
  -webkit-mask: url("data:image/webp;base64,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") center / contain no-repeat;
  mask: url("data:image/webp;base64,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") center / contain no-repeat;
}
@media (max-width: 700px) {
  html body[data-page="reservas"] #step1Title .rv-step-heading-icon::before { width: 22px; height: 22px; }
}

/* ==========================================================================
   Selección de día y hora más suave
   Los botones se vuelven a dibujar al seleccionar, así que la suavidad viene
   de la animación de entrada (opacidad + escala + sombra), no de transiciones.
   ========================================================================== */
@keyframes rv-select-soft {
  0%   { opacity: .35; transform: scale(.955); box-shadow: 0 0 0 rgba(26,26,26,0); }
  60%  { opacity: 1;   transform: scale(1.012); }
  100% { opacity: 1;   transform: scale(1);     box-shadow: 0 4px 12px rgba(26,26,26,.14); }
}

html body[data-page="reservas"] .rv-time-grid .time-btn,
html body[data-page="reservas"] .rv-month .day {
  transition: background-color .45s cubic-bezier(.22,.61,.36,1), border-color .45s cubic-bezier(.22,.61,.36,1), color .45s cubic-bezier(.22,.61,.36,1), transform .35s cubic-bezier(.22,.61,.36,1), box-shadow .45s cubic-bezier(.22,.61,.36,1);
}
html body[data-page="reservas"] .rv-time-grid .time-btn:active,
html body[data-page="reservas"] .rv-month .day.available:active { transform: scale(.97); }

html body[data-page="reservas"] .rv-time-grid .time-btn.selected,
html body[data-page="reservas"] .rv-month .day.selected {
  animation: rv-select-soft .55s cubic-bezier(.22,.61,.36,1) both;
}

@media (prefers-reduced-motion: reduce) {
  html body[data-page="reservas"] .rv-time-grid .time-btn.selected,
  html body[data-page="reservas"] .rv-month .day.selected { animation: none; }
}

/* ==========================================================================
   Poste de barbería (solo paso 1) con soportes de pared y cordón-interruptor
   Ocupa el lugar del botón "Atrás". El JS lo oculta ([hidden]) en el mismo
   instante en que muestra "Atrás", así que nunca se ven juntos.
   Tocar el poste o el cordón: el cordón se jala con rebote y el giro se
   detiene / se reanuda (clase .is-paused en el botón).
   ========================================================================== */
@keyframes rv-pole-spin { from { background-position: 0 0; } to { background-position: 0 -22px; } }
@keyframes rv-pole-pull {
  0%   { height: 28px;   transform: rotate(0);      animation-timing-function: cubic-bezier(.2,.8,.3,1); }
  12%  { height: 33.6px; transform: rotate(1.6deg); animation-timing-function: ease-in-out; }
  30%  { height: 25.6px; transform: rotate(-2deg);  animation-timing-function: ease-in-out; }
  48%  { height: 30.4px; transform: rotate(1.4deg); animation-timing-function: ease-in-out; }
  64%  { height: 27px;   transform: rotate(-.9deg); animation-timing-function: ease-in-out; }
  80%  { height: 28.8px; transform: rotate(.4deg);  animation-timing-function: ease-in-out; }
  92%  { height: 27.8px; transform: rotate(-.1deg); animation-timing-function: ease-in-out; }
  100% { height: 28px;   transform: rotate(0); }
}
/* la perilla se balancea con un poco de retraso, como un péndulo */
@keyframes rv-knob-swing {
  0%   { transform: rotate(0); }
  18%  { transform: rotate(8deg); }
  38%  { transform: rotate(-10deg); }
  56%  { transform: rotate(6deg); }
  74%  { transform: rotate(-3.2deg); }
  88%  { transform: rotate(1.2deg); }
  100% { transform: rotate(0); }
}

html body[data-page="reservas"] .rv-wizard-header {
  --rv-pole-left: max(24px, calc((100vw - 920px) / 2));
  --rv-mount-left: calc(var(--rv-pole-left) - 18px); /* laptop: la placa queda junto al poste */
}
@media (max-width: 700px) {
  html body[data-page="reservas"] .rv-wizard-header {
    --rv-pole-left: 22px;
    --rv-mount-left: -2px; /* celular: la placa queda pegada al borde de la pantalla */
  }
}

html body[data-page="reservas"] .rv-pole { position: absolute; inset: 0; z-index: 3; pointer-events: none; }
html body[data-page="reservas"] .rv-pole[hidden] { display: none !important; }

/* soporte: placa de pared con tornillos + dos brazos cortos con collar */
html body[data-page="reservas"] .rv-pole::before {
  content: "";
  position: absolute;
  top: calc(50% - 24.2px);
  left: var(--rv-mount-left);
  width: 7px;
  height: 48.4px;
  box-sizing: border-box;
  border: 1.1px solid #1a1a1a;
  border-radius: 3px;
  background-color: #e3e7eb;
  background-image:
    radial-gradient(circle at 50% 8%,  #6b727b 0 1.2px, transparent 1.4px),
    radial-gradient(circle at 50% 92%, #6b727b 0 1.2px, transparent 1.4px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.85), 1px 1px 2px rgba(15,23,42,.16);
}
html body[data-page="reservas"] .rv-pole-arm {
  position: absolute;
  left: calc(var(--rv-mount-left) + 4px);
  width: calc(var(--rv-pole-left) - var(--rv-mount-left));
  height: 3.6px;
  box-sizing: border-box;
  border: 1px solid #1a1a1a;
  border-radius: 1.5px;
  background: #e3e7eb;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.85), 0 1px 1.5px rgba(15,23,42,.18);
}
/* collar junto a la tapa */
html body[data-page="reservas"] .rv-pole-arm::after {
  content: "";
  position: absolute;
  right: 5px;
  top: -2.2px;
  width: 3px;
  height: 8px;
  box-sizing: border-box;
  border: 1.1px solid #1a1a1a;
  border-radius: 1.5px;
  background: #cfd5db;
}
html body[data-page="reservas"] .rv-pole-arm--top { top: calc(50% - 16.65px); }
html body[data-page="reservas"] .rv-pole-arm--bottom { top: calc(50% + 13.05px); }

/* botón: poste + cordón (zona táctil ampliada con ::before) */
html body[data-page="reservas"] .rv-pole-btn {
  position: absolute;
  top: 50%;
  left: var(--rv-pole-left);
  width: 36px;
  height: 48.4px;
  margin: -24.2px 0 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: inherit;
  cursor: pointer;
  pointer-events: auto;
  -webkit-appearance: none;
  appearance: none;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
html body[data-page="reservas"] .rv-pole-btn::before { content: ""; position: absolute; inset: -8px -6px; }
html body[data-page="reservas"] .rv-pole-btn:focus-visible { outline: 2px solid rgba(26,26,26,.4); outline-offset: 6px; border-radius: 8px; }
/* varilla corta que une la tapa superior con el cordón */
html body[data-page="reservas"] .rv-pole-btn::after {
  content: "";
  position: absolute;
  left: 20px;
  top: 8.6px;
  width: 8px;
  height: 1.5px;
  border-radius: 1px;
  background: #1a1a1a;
}

/* franjas que giran (ventana de vidrio) */
html body[data-page="reservas"] .rv-pole-stripes {
  position: absolute;
  left: 4.95px;
  top: 11px;
  width: 12.1px;
  height: 26.4px;
  background-image: repeating-linear-gradient(150deg,
    #e46a5b 0 4.763px,
    #ffffff 4.763px 9.526px,
    #4a86d9 9.526px 14.289px,
    #ffffff 14.289px 19.053px);
  background-size: 100% 66px;
  animation: rv-pole-spin 1.4s linear infinite;
}
html body[data-page="reservas"] .rv-pole-btn.is-paused .rv-pole-stripes { animation-play-state: paused; }

/* marco: domos, tapas y brillo del vidrio */
html body[data-page="reservas"] .rv-pole-frame {
  position: absolute;
  left: 0;
  top: 0;
  width: 22px;
  height: 48.4px;
  background: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2040%2088'%3E%3Cpath%20d='M9%2013A11%2011%200%200%201%2031%2013Z'%20fill='%231a1a1a'%20stroke='%231a1a1a'%20stroke-width='2.2'%20stroke-linejoin='round'/%3E%3Cpath%20d='M13%209.5A8%208%200%200%201%2019%205.2'%20fill='none'%20stroke='%23fff'%20stroke-opacity='.5'%20stroke-width='1.6'%20stroke-linecap='round'/%3E%3Cpath%20d='M9%2075A11%2011%200%200%200%2031%2075Z'%20fill='%231a1a1a'%20stroke='%231a1a1a'%20stroke-width='2.2'%20stroke-linejoin='round'/%3E%3Crect%20x='9'%20y='21'%20width='22'%20height='3'%20fill='%23000'%20fill-opacity='.14'/%3E%3Crect%20x='9'%20y='64'%20width='22'%20height='3'%20fill='%23000'%20fill-opacity='.10'/%3E%3Crect%20x='11.4'%20y='24'%20width='3'%20height='40'%20rx='1.5'%20fill='%23fff'%20fill-opacity='.5'/%3E%3Crect%20x='25.5'%20y='24'%20width='4.5'%20height='40'%20fill='%23000'%20fill-opacity='.09'/%3E%3Crect%20x='9'%20y='21'%20width='22'%20height='46'%20fill='none'%20stroke='%231a1a1a'%20stroke-width='2.2'/%3E%3Crect%20x='3'%20y='13'%20width='34'%20height='8'%20rx='2.5'%20fill='%23eceff2'%20stroke='%231a1a1a'%20stroke-width='2.2'/%3E%3Crect%20x='3'%20y='67'%20width='34'%20height='8'%20rx='2.5'%20fill='%23eceff2'%20stroke='%231a1a1a'%20stroke-width='2.2'/%3E%3Cpath%20d='M6.5%2016h27M6.5%2070h27'%20stroke='%23fff'%20stroke-width='1.1'%20stroke-linecap='round'%20stroke-opacity='.9'/%3E%3C/svg%3E") center / 100% 100% no-repeat;
  filter: drop-shadow(0 1px 1.5px rgba(15,23,42,.14));
}

/* cordón trenzado con ojal arriba y perilla acanalada abajo (tipo cortina) */
html body[data-page="reservas"] .rv-pole-cord {
  position: absolute;
  left: 27.2px;
  top: 9.35px;
  width: 2px;
  height: 28px;
  border-radius: 1px;
  background: repeating-linear-gradient(135deg, #1a1a1a 0 1px, #6a707a 1px 2px);
  transform-origin: 50% 0;
}
/* ojal / guía por donde sale el cordón */
html body[data-page="reservas"] .rv-pole-cord::before {
  content: "";
  position: absolute;
  top: -2.5px;
  left: -1.5px;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: radial-gradient(circle at 50% 50%, #e3e7eb 0 .9px, #1a1a1a 1.1px);
}
/* perilla: cilindro negro con ranuras, casquillo metálico y brillo lateral */
html body[data-page="reservas"] .rv-pole-cord::after {
  content: "";
  position: absolute;
  bottom: -9.5px;
  left: -1.5px;
  box-sizing: border-box;
  width: 5px;
  height: 10px;
  border-radius: 1px 1px 2.5px 2.5px;
  background:
    linear-gradient(#aab1b9 0 2px, transparent 2px),
    repeating-linear-gradient(180deg, #1a1a1a 0 1.4px, #4d535c 1.4px 2px);
  box-shadow: inset 1px 0 0 rgba(255,255,255,.28), 0 1px 1.5px rgba(15,23,42,.25);
  transform-origin: 50% 0;
}
html body[data-page="reservas"] .rv-pole-cord.is-pulled { animation: rv-pole-pull 1.1s both; }
html body[data-page="reservas"] .rv-pole-cord.is-pulled::after { animation: rv-knob-swing 1.1s ease-in-out both; }

@media (prefers-reduced-motion: reduce) {
  html body[data-page="reservas"] .rv-pole-stripes { animation: none; }
  html body[data-page="reservas"] .rv-pole-cord.is-pulled,
  html body[data-page="reservas"] .rv-pole-cord.is-pulled::after { animation: none; }
}
/* ==========================================================================
   Pantalla "Guardando tu reserva" / "No pudimos completar tu reserva"
   Solo visual. Prefijo bk- para no chocar con estilos existentes.
   ========================================================================== */
.bk-screen {
  --bk-ink: #111317;
  --bk-muted: #8a94a3;
  --bk-line: #eceef2;
  --bk-red: #a62a31;
  display: flex;
  width: 100%;
  max-width: 440px;
  min-height: 100svh;
  margin: 0 auto;
  padding: max(28px, env(safe-area-inset-top)) 18px max(32px, env(safe-area-inset-bottom));
  box-sizing: border-box;
  flex-direction: column;
  align-items: center;
  color: var(--bk-ink);
  font-family: Inter, system-ui, sans-serif;
  -webkit-font-smoothing: antialiased;
}

.bk-brand {
  font: 700 26px/1.05 'Playfair Display', Georgia, serif;
  letter-spacing: .5px;
  text-align: center;
  white-space: nowrap;
}
.bk-brand span {
  display: block;
  margin-top: 5px;
  font: 600 11px/1 Inter, sans-serif;
  letter-spacing: 5px;
  padding-left: 5px;
}

.bk-hero { display: flex; flex-direction: column; align-items: center; margin-top: clamp(40px, 9svh, 80px); text-align: center; }

.bk-badge {
  position: relative;
  display: grid;
  width: 74px;
  height: 74px;
  place-items: center;
  border-radius: 50%;
  background: #f1f2f4;
}
.bk-badge-arcs {
  position: absolute;
  inset: -6px;
  border: 2px solid transparent;
  border-top-color: #9aa3b0;
  border-bottom-color: #c3c8d0;
  border-radius: 50%;
  animation: bk-spin 1.1s linear infinite;
}
.bk-badge-icon { width: 36px; height: 36px; fill: none; stroke: var(--bk-ink); stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.bk-badge--error { background: #fbeeee; }
.bk-badge--error .bk-badge-arcs { border-top-color: #d98a8e; border-bottom-color: #e6b3b5; animation: none; transform: rotate(-12deg); }
.bk-badge--error .bk-badge-icon { stroke: var(--bk-red); }

.bk-title { margin: 26px 0 0; max-width: 300px; font: 700 clamp(22px, 6.4vw, 26px)/1.2 Inter, sans-serif; letter-spacing: -.4px; }
.bk-sub { margin: 12px 0 0; max-width: 320px; color: var(--bk-muted); font: 400 15px/1.5 Inter, sans-serif; }

.bk-card {
  width: 100%;
  margin: 34px 0 0;
  padding: 6px 20px;
  box-sizing: border-box;
  list-style: none;
  border: 1px solid #e6e9ee;
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 14px 30px -18px rgba(17, 19, 23, .22);
}
.bk-row { display: flex; align-items: flex-start; gap: 16px; padding: 16px 0; }
.bk-row + .bk-row { border-top: 1px solid var(--bk-line); }
.bk-row-text { min-width: 0; padding-top: 1px; }
.bk-row-text strong { display: block; font: 500 15.5px/1.3 Inter, sans-serif; }
.bk-row-text span, .bk-row-text em { display: block; margin-top: 4px; color: var(--bk-muted); font: 400 12.5px/1.45 Inter, sans-serif; }
.bk-row-text em { margin-top: 12px; font-style: normal; }

/* Icono de cada paso: anillo girando -> check */
.bk-ico { position: relative; flex: 0 0 32px; width: 32px; height: 32px; }
.bk-ico-spin, .bk-ico-done, .bk-ico-fail { position: absolute; inset: 0; border-radius: 50%; }
.bk-ico-spin { border: 3px solid #e3e6ea; border-top-color: #2a2d33; animation: bk-spin .9s linear infinite; }
.bk-ico-done { display: grid; place-items: center; background: var(--bk-ink); opacity: 0; transform: scale(.6); }
.bk-ico-done svg, .bk-ico-fail svg { width: 18px; height: 18px; fill: none; stroke: #fff; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }
.bk-ico-fail { display: grid; place-items: center; border: 3px solid #d98a8e; background: #fff; }
.bk-ico-fail svg { stroke: var(--bk-red); width: 16px; height: 16px; }

/* Secuencia: check 1 a 0,1 s, check 2 a 0,3 s; el 3.º sigue girando */
.bk-row--1 .bk-ico-spin { animation: bk-spin .9s linear infinite, bk-hide .01s linear .1s forwards; }
.bk-row--1 .bk-ico-done { animation: bk-pop .22s cubic-bezier(.16, 1, .3, 1) .1s forwards; }
.bk-row--2 .bk-ico-spin { animation: bk-spin .9s linear infinite, bk-hide .01s linear .3s forwards; }
.bk-row--2 .bk-ico-done { animation: bk-pop .22s cubic-bezier(.16, 1, .3, 1) .3s forwards; }
.bk-ico.is-done .bk-ico-done { opacity: 1; transform: none; animation: none; }

.bk-back {
  width: 100%;
  max-width: 440px;
  margin-top: 26px;
  padding: 16px 20px;
  border: 0;
  border-radius: 16px;
  background: var(--bk-ink);
  color: #fff;
  font: 600 15px/1 Inter, sans-serif;
  cursor: pointer;
}
.bk-back:active { transform: scale(.985); }

@keyframes bk-spin { to { transform: rotate(360deg); } }
@keyframes bk-pop { to { opacity: 1; transform: scale(1); } }
@keyframes bk-hide { to { opacity: 0; } }

@media (prefers-reduced-motion: reduce) {
  .bk-badge-arcs, .bk-ico-spin { animation-duration: 2.4s; }
}
@media (max-width: 360px) {
  .bk-card { padding: 4px 16px; }
  .bk-row { gap: 13px; }
}

/* ==========================================================================
   Avisos de validación del paso "Tus datos" (nombre, WhatsApp y correo)
   Solo aparecen cuando el dato no cumple las reglas.
   ========================================================================== */
html body[data-page="reservas"] .rv-form-fields label .rv-field-limit {
  margin-left: auto;
  color: #b3261e;
  font: 600 11.5px/1.2 Inter, system-ui, sans-serif;
  letter-spacing: 0;
  text-align: right;
  text-transform: none;
}
html body[data-page="reservas"] .rv-form-fields label .rv-field-limit[hidden] { display: none; }

html body[data-page="reservas"] .rv-form-fields .rv-field-error {
  margin: -2px 0 0;
  color: #b3261e;
  font: 500 12.5px/1.4 Inter, system-ui, sans-serif;
}
html body[data-page="reservas"] .rv-form-fields .rv-field-error[hidden] { display: none; }

html body[data-page="reservas"] .rv-form-fields .form-group.is-invalid input,
html body[data-page="reservas"] .rv-form-fields .form-group.is-invalid .rv-phone-row {
  border-color: #b3261e;
}
html body[data-page="reservas"] .rv-form-fields .form-group.is-invalid input:focus,
html body[data-page="reservas"] .rv-form-fields .form-group.is-invalid .rv-phone-row:focus-within {
  border-color: #b3261e;
  box-shadow: 0 0 0 3px rgba(179, 38, 30, .1);
}
html body[data-page="reservas"] .rv-form-fields .form-group.is-invalid .rv-phone-row input { border: 0; box-shadow: none; }


/* ==========================================================================
   Anti-zoom de iPhone / Safari / Chrome al tocar un campo.
   Cualquier campo con letra menor a 16px hace zoom automático al enfocarlo y,
   como la app bloquea el zoom manual, luego no se puede volver al tamaño normal.
   En la reserva pública los campos del paso "Tus datos" tenían 15px.
   ========================================================================== */
@media (max-width: 900px), (pointer: coarse) {
  html body[data-page] :is(
    input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="file"]):not([type="color"]),
    select,
    textarea
  ) {
    font-size: 16px !important;
  }
}

/* ==========================================================================
   Paso 3 "Elige barbero y horario" — medidas tomadas de la imagen de referencia
   (captura de 900 px de ancho ≈ 400 px CSS, factor 2.25).
   - Siempre 4 barberos por página: cada tarjeta mide (100% − huecos) / 4.
   - Mínimo 5 filas de horas (la cuadrícula conserva su alto mínimo).
   - Todo en px fijos pequeños; si la pantalla es baja, se compacta por alto.
   Solo presentación. No toca la lógica.
   ========================================================================== */

/* ---- Encabezado: tarjeta gris con ícono + título + subtítulo ---- */
html body[data-page="reservas"] #step3.active .rv-step-hero {
  margin: 0 0 10px;
  padding: 11px 14px 12px;
  border: 1px solid #eceff2;
  border-radius: 16px;
  background: #f4f6f8;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.9), 0 5px 14px -10px rgba(15,23,42,.18);
}
html body[data-page="reservas"] #step3.active .rv-step-hero h1 {
  gap: 10px;
  margin: 0 0 3px;
  font-size: 22px;
  line-height: 1.15;
  letter-spacing: -.5px;
}
html body[data-page="reservas"] #step3.active .rv-step-hero .rv-step-heading-icon { flex: 0 0 34px; width: 34px; height: 34px; border-radius: 11px; }
html body[data-page="reservas"] #step3.active .rv-step-hero .rv-step-heading-icon svg { width: 18px; height: 18px; }
html body[data-page="reservas"] #step3.active .rv-step-hero .rv-step-help { align-self: flex-start; margin-top: -2px; }
html body[data-page="reservas"] #step3.active .rv-step-hero .rv-step-help-button { width: 22px; height: 22px; }
html body[data-page="reservas"] #step3.active .rv-step-hero .rv-step-help-button svg { width: 13px; height: 13px; }
html body[data-page="reservas"] #step3.active .rv-step-hero .rv-step-subtitle {
  margin: 0;
  color: #4d5560;
  font-size: clamp(10.5px, 3vw, 12.5px);
  line-height: 1.35;
  letter-spacing: -.15px;
  text-wrap: balance;
  text-align: center;
}

/* ---- "Barbero" + nombre actual ---- */
html body[data-page="reservas"] #step3.active .rv-barber-picker { gap: 2px; margin: 0 0 6px; }
html body[data-page="reservas"] #step3.active .rv-barber-picker label { color: #6b7280; font: 500 14px/1.2 Inter, sans-serif; }
html body[data-page="reservas"] #step3.active .rv-barber-current { min-height: 17px; margin: 0 0 8px; font: 400 15px/1.2 Inter, sans-serif; }

/* ---- Carrusel: SIEMPRE 4 tarjetas por página ---- */
html body[data-page="reservas"] #step3.active .rv-barber-carousel { border: 1px solid #f1f1f1; border-radius: 6px; background: #fafafa; }
html body[data-page="reservas"] #step3.active .rv-barber-cards { gap: 8px; padding: 9px 14px 5px; scroll-padding: 0 14px; scroll-snap-type: x mandatory; }
html body[data-page="reservas"] #step3.active .rv-barber-card {
  flex: 0 0 calc((100% - 24px) / 4);
  width: auto;
  min-width: 0;
  align-items: center;
  gap: 6px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: #5a606a;
  font: 500 12px/1.2 Inter, sans-serif;
  text-transform: uppercase;
}
html body[data-page="reservas"] #step3.active .rv-barber-card:hover { border-color: transparent; }
html body[data-page="reservas"] #step3.active .rv-barber-photo {
  flex: none;
  width: 56px;
  height: 56px;
  border-radius: 50%;
  object-fit: cover;
  object-position: center 20%;
  background: #d9dbde;
  transition: box-shadow .25s ease;
}
html body[data-page="reservas"] #step3.active .rv-barber-photo--empty { font-size: 22px; }
html body[data-page="reservas"] #step3.active .rv-barber-name { width: 100%; }

/* seleccionado: aro blanco + aro oscuro, nombre oscuro, check arriba a la derecha de la foto */
html body[data-page="reservas"] #step3.active .rv-barber-card.selected { border: 0; background: transparent; box-shadow: none; color: var(--rv-ink); }
html body[data-page="reservas"] #step3.active .rv-barber-card.selected .rv-barber-photo { box-shadow: 0 0 0 1.5px #fff, 0 0 0 3.5px var(--rv-ink); }
html body[data-page="reservas"] #step3.active .rv-barber-check {
  top: -3px;
  right: auto;
  left: calc(50% + 14px);
  box-sizing: content-box;
  width: 16px;
  height: 16px;
  border: 2px solid #fff;
  z-index: 2;
}
html body[data-page="reservas"] #step3.active .rv-barber-check svg { width: 10px; height: 10px; }
html body[data-page="reservas"] #step3.active .rv-barber-dots { gap: 8px; margin-top: 9px; }

/* ---- FECHA + valor ---- */
html body[data-page="reservas"] #step3.active .selected-date { margin: 4px 0 10px !important; }
html body[data-page="reservas"] #step3.active .selected-date__text { display: flex; flex-direction: column; gap: 4px; }
html body[data-page="reservas"] #step3.active .selected-date__label { margin: 0; color: #5f6f86; font: 600 11.5px/1.2 Inter, sans-serif; letter-spacing: .16em; text-transform: uppercase; }
html body[data-page="reservas"] #step3.active .selected-date__value { color: #14213d; font: 600 16px/1.25 'DM Sans', Inter, sans-serif; letter-spacing: -.1px; text-transform: capitalize; }

/* ---- Horas: 3 columnas, botón de 44 px con borde doble suave ---- */
html body[data-page="reservas"] #step3.active .rv-time-grid { gap: 10px; }
html body[data-page="reservas"] #step3.active .rv-time-grid .time-btn {
  min-height: 44px;
  border: 1px solid #dde2ea !important;
  border-radius: 12px !important;
  box-shadow: 0 0 0 2px #f0f3f8;
  font: 500 14px Inter, sans-serif;
}
html body[data-page="reservas"] #step3.active .rv-time-grid .time-btn.selected {
  border-color: var(--rv-ink) !important;
  box-shadow: 0 0 0 2px #e6e8ec, 0 4px 12px rgba(26,26,26,.14);
}

@media (max-width: 700px) {
  html body[data-page="reservas"] #step3.active .rv-barber-picker { margin-bottom: 6px; }
  html body[data-page="reservas"] #step3.active .rv-barber-card { gap: 6px; padding-bottom: 0; }
  html body[data-page="reservas"] #step3.active .rv-barber-current { margin-bottom: 8px; min-height: 17px; }
  html body[data-page="reservas"] #step3.active .rv-barber-dots { margin-top: 9px; }
  html body[data-page="reservas"] #step3.active .selected-date { margin: 4px 0 10px !important; }
  html body[data-page="reservas"] #step3.active .rv-step-hero .rv-step-subtitle { margin: 0; }
}

/* Teléfonos muy angostos (≤ 360 px): mismo diseño, un poco más fino */
@media (max-width: 360px) {
  html body[data-page="reservas"] #step3.active .rv-step-hero h1 { font-size: 20px; gap: 8px; }
  html body[data-page="reservas"] #step3.active .rv-barber-cards { gap: 6px; padding-right: 10px; padding-left: 10px; }
  html body[data-page="reservas"] #step3.active .rv-barber-card { flex-basis: calc((100% - 18px) / 4); font-size: 11px; }
  html body[data-page="reservas"] #step3.active .rv-barber-photo { width: 50px; height: 50px; }
}

/* ==========================================================================
   Paso 3: EXACTAMENTE 5 filas de horas, sin importar la altura del navegador.
   - La cuadrícula ya NO crece para llenar el espacio (antes asomaba una 6.ª fila).
   - Su alto = 5 botones + 4 huecos + relleno; si hay más horas, se desliza por dentro.
   - El subtítulo siempre se ve. Al bajar la altura se achican medidas (fotos, botones,
     márgenes) en vez de esconder texto.
   Variables: --tb alto del botón de hora, --tg hueco entre filas.
   ========================================================================== */
@media (max-width: 700px) {
  html body[data-page="reservas"] #step3.active { --tb: 44px; --tg: 10px; }
  html body[data-page="reservas"] #step3.active .rv-time-grid { gap: var(--tg); }
  html body[data-page="reservas"] #step3.active .rv-time-grid .time-btn { min-height: var(--tb); height: var(--tb); }
  html body[data-page="reservas"] #step3.active #timesGrid {
    flex: 0 0 auto;
    min-height: 0;
    height: calc(5 * var(--tb) + 4 * var(--tg) + 8px);   /* 5 filas exactas: la 6.ª queda oculta */
    padding: 4px 4px;
    align-content: start;
    overflow-y: auto;
  }
  html body[data-page="reservas"] #step3.active .rv-step-hero .rv-step-subtitle { display: block; }
}

/* ==========================================================================
   Encabezado del paso 3 SIN contenedor: ya no hay tarjeta gris, borde ni sombra.
   El ícono, el título, el "?" y el subtítulo quedan directamente sobre el fondo de la página.
   (Va al final para ganarle a las reglas de compactación anteriores.)
   ========================================================================== */
html body[data-page="reservas"] #step3.active .rv-step-hero {
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
html body[data-page="reservas"] #step3.active .rv-step-hero .rv-step-subtitle { text-align: left; }

/* Sin barbero elegido no se muestra la rayita amarilla junto a "Barberos" */
html body[data-page="reservas"] #step3 .rv-barber-current:empty::before { display: none; }

/* ==========================================================================
   Paso 3 — ESCALADO CONTINUO por alto real (reemplaza los saltos por rangos de altura).
   calendario.js escribe el alto real de la página en --rv-h (px, sin unidad).
   --s va de 0 (pantalla baja, ~560 px) a 1 (pantalla alta, ~800 px o más) y TODAS las medidas
   se interpolan con él: así la pantalla se llena sin dejar huecos ni cortar las 5 filas,
   en cualquier celular y en cualquier navegador (barras de Safari/Chrome incluidas).
   ========================================================================== */
html body[data-page="reservas"] {
  --s: clamp(0, calc((var(--rv-h, 800) - 581) / 161), 1);    /* 0 = lo más compacto que cabe (≈ 580 px de alto) · 1 = tamaño de la referencia (≈ 742 px) */
  --s2: clamp(0, calc((var(--rv-h, 800) - 742) / 160), 1);   /* pantallas altas: reparte el espacio extra en aire, no en tamaño */
}

@media (max-width: 700px) {
  /* encabezado de la app y progreso */

  /* medidas del paso */
  html body[data-page="reservas"] #step3.active { --tb: calc(32px + 12px * var(--s) + 6px * var(--s2)); --tg: calc(5px + 5px * var(--s) + 4px * var(--s2)); }
  html body[data-page="reservas"] #step3.active .rv-step-hero { margin-bottom: calc(5px + 5px * var(--s) + 6px * var(--s2)); }
  html body[data-page="reservas"] #step3.active .rv-step-hero h1 { margin-bottom: calc(1px + 2px * var(--s)); font-size: calc(18px + 4px * var(--s)); }
  html body[data-page="reservas"] #step3.active .rv-step-hero .rv-step-heading-icon { flex-basis: calc(28px + 6px * var(--s)); width: calc(28px + 6px * var(--s)); height: calc(28px + 6px * var(--s)); }
  html body[data-page="reservas"] #step3.active .rv-step-hero .rv-step-subtitle { font-size: clamp(10.5px, 3vw, calc(11px + 1.5px * var(--s))); line-height: 1.25; }
  html body[data-page="reservas"] #step3.active .rv-barber-picker { margin-bottom: calc(3px + 4px * var(--s) + 6px * var(--s2)); }
  html body[data-page="reservas"] #step3.active .rv-barber-picker label { font-size: calc(13px + 1px * var(--s)); }
  html body[data-page="reservas"] #step3.active .rv-barber-current { margin-bottom: calc(3px + 5px * var(--s)); font-size: calc(14px + 1px * var(--s)); }
  html body[data-page="reservas"] #step3.active .rv-barber-cards { padding-top: calc(6px + 3px * var(--s) + 3px * var(--s2)); padding-bottom: calc(3px + 2px * var(--s) + 2px * var(--s2)); }
  html body[data-page="reservas"] #step3.active .rv-barber-card { gap: calc(4px + 2px * var(--s)); font-size: calc(11px + 1px * var(--s)); }
  html body[data-page="reservas"] #step3.active .rv-barber-photo { width: calc(36px + 20px * var(--s) + 6px * var(--s2)); height: calc(36px + 20px * var(--s) + 6px * var(--s2)); }
  html body[data-page="reservas"] #step3.active .rv-barber-check { left: calc(50% + 9px + 5px * var(--s)); width: calc(14px + 2px * var(--s)); height: calc(14px + 2px * var(--s)); }
  html body[data-page="reservas"] #step3.active .rv-barber-dots { margin-top: calc(4px + 5px * var(--s) + 5px * var(--s2)); }
  html body[data-page="reservas"] #step3.active .selected-date { margin: calc(1px + 3px * var(--s) + 6px * var(--s2)) 0 calc(5px + 5px * var(--s) + 5px * var(--s2)) !important; }
  html body[data-page="reservas"] #step3.active .selected-date__text { gap: calc(2px + 2px * var(--s)); }
  html body[data-page="reservas"] #step3.active .selected-date__label { font-size: calc(10.5px + 1px * var(--s)); }
  html body[data-page="reservas"] #step3.active .selected-date__value { font-size: calc(14px + 2px * var(--s)); }
  html body[data-page="reservas"] #step3.active .rv-time-grid .time-btn { font-size: calc(13px + 1px * var(--s)); }
}

/* ==========================================================================
   Flechas del calendario (mes anterior / siguiente): SIN contenedor, solo el ícono.
   Se conserva el área táctil de 40 px; solo desaparecen el fondo, el borde y la sombra.
   ========================================================================== */
html body[data-page="reservas"] .rv-calendar-nav .calendar-nav-btn {
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  -webkit-tap-highlight-color: transparent;
}
html body[data-page="reservas"] .rv-calendar-nav .calendar-nav-btn:hover,
html body[data-page="reservas"] .rv-calendar-nav .calendar-nav-btn:active,
html body[data-page="reservas"] .rv-calendar-nav .calendar-nav-btn:focus { background: transparent; box-shadow: none; }
html body[data-page="reservas"] .rv-calendar-nav .calendar-nav-btn:focus-visible { outline: 2px solid var(--rv-ink, #1a1a1a); outline-offset: -4px; border-radius: 10px; }

@media (max-width: 700px) {
  html body[data-page="reservas"] .rv-wizard-header { min-height: 52px; padding-top: 6px; padding-bottom: 6px; }
  html body[data-page="reservas"] .rv-progress-wrap { padding-top: 12px; }
  html body[data-page="reservas"] .rv-progress-bar { margin-bottom: 8px; }
  html body[data-page="reservas"] .rv-wizard-main { padding-top: 12px; }
  html body[data-page="reservas"] .rv-bottom-bar { padding-top: 9px; padding-bottom: max(9px, env(safe-area-inset-bottom)); }
  html body[data-page="reservas"] .rv-continue { min-height: 48px; height: 48px; }
  html body[data-page="reservas"]:has(#step3.active) .rv-wizard-main { padding-bottom: calc(72px + env(safe-area-inset-bottom)); }
}
html body[data-page="reservas"] #step3.active .rv-barber-carousel {
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

@media (max-width: 700px) {
  html body[data-page="reservas"] #step3.active {
    --bp: calc(48px + 12px * var(--s) + 6px * var(--s2)); /* antes 36 a 62 px; ahora 48 a 66 px */
  }
  html body[data-page="reservas"] #step3.active .rv-barber-photo {
    width: min(var(--bp), 100%);   /* nunca más ancha que su tarjeta: se mantienen 4 por fila */
    height: auto;
    aspect-ratio: 1 / 1;
  }
  html body[data-page="reservas"] #step3.active .rv-barber-card {
    font-size: calc(12.5px + 1px * var(--s));
  }
  html body[data-page="reservas"] #step3.active .rv-barber-check {
    left: calc(50% + var(--bp) / 2 - 12px);
  }
}