/* ============================================================
   Ofertas · Flujo de reserva (reservar.php / datos.php)
   Línea de diseño Apple, consistente con ofertas.css
   ============================================================ */
:root{
    --ap-bg:#f5f5f7; --ap-card:#fff; --ap-ink:#1d1d1f; --ap-muted:#6e6e73;
    --ap-line:#e3e3e6; --ap-blue:#1E90FF; --ap-blue-d:#0a6fe0;
    --ap-green:#2fa84f; --ap-red:#e0533d;
}

/* ---- Pasos ---- */
.rv-steps{
    max-width:1120px; margin:22px auto 0; padding:0 20px;
    display:flex; gap:10px; flex-wrap:wrap;
}
.rv-step{
    font-size:13px; font-weight:600; color:var(--ap-muted);
    background:var(--ap-card); border:1px solid var(--ap-line);
    padding:8px 14px; border-radius:980px;
}
.rv-step.is-on{ color:#fff; background:var(--ap-blue); border-color:var(--ap-blue); }
.rv-step.is-done{ color:var(--ap-blue); border-color:var(--ap-blue); }

/* ---- Layout ---- */
.rv-wrap{
    max-width:1120px; margin:22px auto 60px; padding:0 20px;
    display:grid; grid-template-columns:1fr 380px; gap:26px; align-items:start;
}
@media (max-width:900px){
    .rv-wrap{ grid-template-columns:1fr; }
}

.rv-h1{ font-size:30px; line-height:1.1; letter-spacing:-.02em; margin:0 0 6px; color:var(--ap-ink); }
.rv-sub{ font-size:16px; color:var(--ap-muted); margin:0 0 22px; }

/* ---- Tarjetas ---- */
.rv-card{
    background:var(--ap-card); border:1px solid var(--ap-line);
    border-radius:20px; padding:22px; margin-bottom:18px;
    box-shadow:0 1px 3px rgba(0,0,0,.04);
}
.rv-label{ display:block; font-size:14px; font-weight:700; color:var(--ap-ink); margin-bottom:14px; }
.rv-hint{ font-size:13px; color:var(--ap-muted); margin:12px 0 0; }

/* ---- Modo habitaciones / huéspedes ---- */
.rv-modes{ display:flex; gap:10px; margin-bottom:18px; }
.rv-mode{
    flex:1; font:inherit; font-weight:600; font-size:15px; cursor:pointer;
    padding:13px 10px; border-radius:14px; color:var(--ap-ink);
    background:#f5f5f7; border:1px solid var(--ap-line); transition:.2s;
}
.rv-mode:hover{ border-color:#c9c9cf; }
.rv-mode.is-on{ background:var(--ap-blue); color:#fff; border-color:var(--ap-blue); }

/* ---- Stepper ---- */
.rv-qty{ display:flex; align-items:center; justify-content:space-between; gap:16px; }
.rv-qty-label{ font-size:16px; font-weight:600; color:var(--ap-ink); }
.rv-stepper{ display:flex; align-items:center; gap:6px; }
.rv-step-btn{
    width:44px; height:44px; border-radius:50%; cursor:pointer;
    font-size:22px; line-height:1; color:var(--ap-blue);
    background:#fff; border:1px solid var(--ap-line); transition:.15s;
}
.rv-step-btn:hover{ background:var(--ap-blue); color:#fff; border-color:var(--ap-blue); }
.rv-stepper input{
    width:56px; text-align:center; font-size:19px; font-weight:700; color:var(--ap-ink);
    border:none; background:transparent; -moz-appearance:textfield;
}
.rv-stepper input::-webkit-outer-spin-button,
.rv-stepper input::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }

/* ---- Campos / fechas ---- */
.rv-dates,.rv-two{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
@media (max-width:520px){ .rv-dates,.rv-two{ grid-template-columns:1fr; } }
.rv-field{ display:flex; flex-direction:column; gap:6px; margin-bottom:2px; }
.rv-field label{ font-size:13px; font-weight:600; color:var(--ap-muted); }
.rv-field input{
    font:inherit; font-size:16px; color:var(--ap-ink); background:#fff;
    border:1px solid var(--ap-line); border-radius:13px; padding:14px 15px;
    width:100%; transition:.15s;
}
.rv-field input:focus{ outline:none; border-color:var(--ap-blue); box-shadow:0 0 0 3px rgba(30,144,255,.15); }
.rv-datos .rv-field{ margin-bottom:14px; }

/* ---- Botón continuar ---- */
.rv-continue{
    width:100%; font:inherit; font-size:17px; font-weight:600; cursor:pointer;
    color:#fff; background:var(--ap-blue); border:none;
    border-radius:980px; padding:16px 22px; transition:.2s;
}
.rv-continue:hover{ background:var(--ap-blue-d); transform:translateY(-2px); }
.rv-continue:disabled{ background:#c7c7cc; cursor:not-allowed; transform:none; }
.rv-form-error{ color:var(--ap-red); font-size:14px; font-weight:600; margin:0 0 12px; min-height:18px; }

/* ---- Resumen ---- */
.rv-summary{
    position:sticky; top:20px; background:var(--ap-card);
    border:1px solid var(--ap-line); border-radius:22px; overflow:hidden;
    box-shadow:0 6px 22px rgba(0,0,0,.06);
}
.rv-sum-media{ aspect-ratio:16/10; background:#eee; }
.rv-sum-media img{ width:100%; height:100%; object-fit:cover; display:block; }
.rv-sum-body{ padding:20px; }
.rv-sum-body h2{ font-size:19px; letter-spacing:-.01em; margin:0 0 2px; color:var(--ap-ink); }
.rv-sum-hotel{ font-size:14px; color:var(--ap-muted); margin:0 0 16px; }
.rv-sum-row{
    display:flex; justify-content:space-between; align-items:center;
    font-size:14px; color:var(--ap-muted); padding:9px 0; border-top:1px solid var(--ap-line);
}
.rv-sum-row b{ color:var(--ap-ink); font-weight:600; }
.rv-sum-total{
    display:flex; justify-content:space-between; align-items:baseline;
    margin-top:14px; padding-top:14px; border-top:2px solid var(--ap-ink);
}
.rv-sum-total span{ font-size:16px; font-weight:600; color:var(--ap-ink); }
.rv-sum-total b{ font-size:24px; font-weight:700; letter-spacing:-.02em; color:var(--ap-ink); }
.rv-sum-note{ font-size:12.5px; color:var(--ap-muted); margin:10px 0 0; }

/* Badges de temporada */
.rv-badge-alta{ color:var(--ap-red)!important; }
.rv-badge-baja{ color:var(--ap-green)!important; }

/* ---- Flatpickr en dodgerblue ---- */
.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,
.flatpickr-day.selected:hover{
    background:var(--ap-blue); border-color:var(--ap-blue);
}
.flatpickr-day.today{ border-color:var(--ap-blue); }
.flatpickr-months .flatpickr-month{ color:var(--ap-blue); }
