.reserva-publica-page {
    background: #000 url('../../images/reservas-bg.jpg') center / cover no-repeat fixed;
    min-height: 100vh;
    padding: 40px 24px;
    color: #202020;
    font-family: Arial, sans-serif;
}
.reserva-publica-page::before {
    content: '';
    position: fixed;
    inset: 0;
    background: linear-gradient(110deg, rgba(0,0,0,.8), rgba(0,0,0,.35));
    pointer-events: none;
}
.reserva-publica-container {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
    max-width: 1100px;
    margin: auto;
    border: 1px solid #ffffff30;
    border-radius: 20px;
    overflow: hidden;
    background: #0009;
    box-shadow: 0 24px 70px #0005;
    animation: reserva-entrada .35s ease-out;
}
.reserva-publica-header { padding: 48px 38px; align-self: start; color: #fff; }
.reserva-publica-logo { width: min(100%, 230px); height: 64px; object-fit: contain; object-position: left; }
.reserva-publica-logo-wrap { margin-bottom: 64px; }
.reserva-publica-eyebrow { color: #F5C02E; font-size: 12px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.reserva-publica-header h1 { font-size: clamp(30px, 3.4vw, 46px); line-height: 1.12; letter-spacing: -.04em; margin: 18px 0; color: #fff; }
.reserva-publica-header p { max-width: 32ch; color: #e0e0e0; font-size: 16px; line-height: 1.7; }
.reserva-publica-anticipacion { display: block; border-top: 1px solid #ffffff30; margin-top: 36px; padding-top: 20px; font-size: 13px; line-height: 1.5; color: #F5C02E; }
.reserva-publica-form-content { background: #fff; padding: 32px; grid-column: 2; grid-row: 1 / 3; min-width: 0; }
.reserva-publica-section { display: flex; align-items: center; gap: 12px; margin-bottom: 22px; }
.reserva-publica-section span { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 50%; background: #F5C02E; color: #000; font-size: 12px; font-weight: 700; }
.reserva-publica-section h2 { font-size: 19px; margin: 0; letter-spacing: -.025em; }
.reserva-publica-form-group { margin-bottom: 18px; min-width: 0; }
.reserva-publica-form-group label { display: block; font-weight: 600; margin-bottom: 8px; font-size: 13px; }
.reserva-publica-form-group .required { color: #777; }
.reserva-publica-form-group input,
.reserva-publica-form-group select,
.reserva-publica-form-group textarea { box-sizing: border-box; width: 100%; min-width: 0; min-height: 46px; padding: 11px 12px; border: 1px solid #d8d8d8; border-radius: 8px; font: inherit; font-size: 14px; color: #202020; background: #fff; transition: border-color .15s, box-shadow .15s; }
.reserva-publica-form-group select:disabled { background: #f5f5f5; color: #666; }
.reserva-publica-page :focus-visible { outline: 2px solid #a87800; outline-offset: 3px; }
.reserva-publica-form-group :is(input, select, textarea):focus { border-color: #a87800; box-shadow: 0 0 0 3px #F5C02E25; }
.reserva-publica-form-group textarea { resize: vertical; min-height: 82px; line-height: 1.5; }
.reserva-publica-form-row { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 14px; }
.reserva-publica-legal-box { margin: 4px 0 20px; }
.reserva-publica-terminos-check { display: flex; align-items: start; gap: 10px; }
.reserva-publica-terminos-check input { flex-shrink: 0; width: 18px; height: 18px; margin-top: 2px; accent-color: #000; }
.reserva-publica-terminos-check label { font-size: 13px; line-height: 1.6; }
.reserva-publica-link-btn { border: 0; background: none; color: #000; text-decoration: underline; cursor: pointer; padding: 0; font: inherit; font-weight: 700; }
.reserva-publica-btn-submit, .reserva-whatsapp-btn { display: inline-flex; justify-content: center; align-items: center; box-sizing: border-box; width: 100%; min-height: 48px; padding: 12px 20px; background: #000; color: #fff; border: 0; border-radius: 8px; font: inherit; font-size: 14px; font-weight: 700; text-decoration: none; cursor: pointer; transition: background .15s, color .15s, transform .15s; }
.reserva-publica-btn-submit:hover, .reserva-whatsapp-btn:hover { background: #F5C02E; color: #000; transform: translateY(-1px); }
.reserva-publica-politica-box { margin-top: 22px; padding-top: 16px; border-top: 1px solid #eee; }
.reserva-publica-politica-box p { font-size: 11px; line-height: 1.6; color: #666; margin: 4px 0; }
.reserva-publica-politica-box a { color: #333; text-decoration: underline; }
.reserva-publica-ayuda { padding: 24px 38px; align-self: end; display: flex; flex-wrap: wrap; gap: 20px; }
.reserva-publica-ayuda a { color: #fff; font-size: 13px; text-underline-offset: 5px; }
.reserva-publica-ayuda a:hover { color: #F5C02E; }
.alerta-cotizacion { display: none; border-left: 3px solid #F5C02E; background: #f6f6f6; padding: 16px; border-radius: 8px; margin-bottom: 22px; font-size: 13px; line-height: 1.6; }
.alerta-cotizacion.visible { display: block; animation: reserva-entrada .2s ease-out; }
.reserva-whatsapp-btn { margin-top: 12px; }
.reserva-publica-error-message { color: #a52626; font-size: 12px; line-height: 1.5; }
.reserva-publica-error-message:not(:empty) { margin-top: 6px; }
.reserva-terminos-modal { box-sizing: border-box; width: min(720px, calc(100% - 32px)); max-height: 85vh; max-height: 85dvh; margin: auto; border: 0; border-radius: 16px; padding: 0; color: #202020; background: #fff; box-shadow: 0 24px 80px #0005; }
.reserva-terminos-modal::backdrop { background: #000b; }
.reserva-terminos-modal[open] { animation: reserva-entrada .18s ease-out; }
.reserva-terminos-modal-content { padding: 28px; }
.reserva-terminos-close { position: sticky; top: 12px; float: right; display: grid; place-items: center; width: 44px; height: 44px; margin: -10px -10px 8px 12px; border: 1px solid #ddd; border-radius: 8px; background: #fff; color: #000; font-size: 26px; cursor: pointer; }
.reserva-terminos-modal-content h2 { margin: 0 48px 24px 0; font-size: 22px; letter-spacing: -.025em; }
.reserva-terminos-lista { clear: both; padding-left: 22px; margin: 0; font-size: 14px; line-height: 1.7; color: #444; }
.reserva-terminos-lista li { margin-bottom: 16px; padding-left: 6px; }
.reserva-terminos-lista li::marker { color: #000; font-weight: 700; }
.reserva-publica-loading { display: none; text-align: center; padding: 50px 0; }
.reserva-publica-loading.active { display: block; }
.reserva-publica-loading p { font-size: 14px; color: #666; }
.reserva-publica-spinner { width: 36px; height: 36px; margin: auto; border: 3px solid #eee; border-top-color: #000; border-radius: 50%; animation: reserva-publica-spin .8s linear infinite; }
.reserva-publica-codigo-reserva { text-align: center; padding: 36px 0; }
.reserva-publica-success-icon { display: grid; place-items: center; width: 64px; height: 64px; margin: 0 auto 24px; border-radius: 50%; background: #F5C02E; color: #000; font-size: 30px; }
.reserva-publica-codigo-reserva h2 { font-size: 26px; letter-spacing: -.03em; }
.reserva-publica-codigo-reserva p { font-size: 14px; line-height: 1.6; color: #666; }
.reserva-publica-codigo-reserva .codigo { padding: 20px 8px; margin: 20px 0; border: 1px dashed #aaa; border-radius: 8px; background: #fafafa; font-size: 28px; font-weight: 700; letter-spacing: .08em; overflow-wrap: anywhere; }
@keyframes reserva-publica-spin { to { transform: rotate(360deg); } }
@keyframes reserva-entrada { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@media (max-width: 760px) {
    .reserva-publica-page { padding: 16px 12px; background-attachment: scroll; }
    .reserva-publica-container { grid-template-columns: minmax(0,1fr); border-radius: 14px; }
    .reserva-publica-header { padding: 28px 24px; }
    .reserva-publica-logo-wrap { margin-bottom: 24px; }
    .reserva-publica-logo { height: 48px; }
    .reserva-publica-header h1 { font-size: 32px; }
    .reserva-publica-header p { max-width: none; font-size: 14px; }
    .reserva-publica-anticipacion { margin-top: 20px; padding-top: 16px; }
    .reserva-publica-form-content { grid-column: auto; grid-row: auto; padding: 24px 20px; }
    .reserva-publica-ayuda { padding: 24px; }
}
@media (max-width: 420px) {
    .reserva-publica-form-row { grid-template-columns: minmax(0,1fr); gap: 0; }
    .reserva-terminos-modal-content { padding: 22px; }
}
@media (prefers-reduced-motion: reduce) {
    .reserva-publica-page *, .reserva-publica-page *::before { animation: none !important; transition: none !important; }
}
