/*=============================
   ARENA LIBRE — MODAL DE RESERVA
   Estilo: tropical elegante
   (arena · mar profundo · turquesa · dorado)
==============================*/

@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;0,9..144,700;1,9..144,500&family=Outfit:wght@400;500;600;700&display=swap');

:root{

    --arena-50:#FDFAF4;
    --arena-100:#FBF5E9;
    --arena-200:#F1E3C6;
    --arena-300:#E4CDA0;

    --mar-900:#0D3B4A;
    --mar-700:#125067;
    --mar-600:#166B84;

    --turquesa-500:#1FA6A0;
    --turquesa-400:#3FBFB4;
    --turquesa-100:#DEF3EF;

    --dorado-500:#C9A24B;
    --dorado-300:#E3C783;

    --coral-500:#D97757;
    --coral-100:#FBEAE3;

    --texto-900:#17282C;
    --texto-600:#4C6066;

}

.reserva-content{

    border-radius:26px;
    border:none;
    overflow:hidden;
    font-family:'Outfit',sans-serif;
    color:var(--texto-900);
    box-shadow:0 30px 70px -20px rgba(13,59,74,.45);

}

@media(min-width:576px){

    #modalReserva .modal-dialog{

        max-width:580px;

    }

}

/* ---------- HEADER ---------- */

.reserva-content .modal-header{

    position:relative;
    background:
        radial-gradient(120% 180% at 100% 0%, rgba(63,191,180,.55) 0%, transparent 55%),
        linear-gradient(120deg,var(--mar-900) 0%,var(--mar-700) 55%,var(--turquesa-500) 130%);
    color:var(--arena-50);
    border:none;
    padding:30px 32px 26px;
    overflow:hidden;

}

.reserva-content .modal-header::after{

    content:"";
    position:absolute;
    left:0;
    right:0;
    bottom:-1px;
    height:22px;
    background:var(--arena-50);
    -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 24' preserveAspectRatio='none'%3E%3Cpath d='M0 12 Q 25 0 50 12 T 100 12 T 150 12 T 200 12 T 250 12 T 300 12 V24 H0 Z'/%3E%3C/svg%3E");
    mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 24' preserveAspectRatio='none'%3E%3Cpath d='M0 12 Q 25 0 50 12 T 100 12 T 150 12 T 200 12 T 250 12 T 300 12 V24 H0 Z'/%3E%3C/svg%3E");
    -webkit-mask-size:100% 100%;
    mask-size:100% 100%;

}

.reserva-content .modal-title{

    font-family:'Fraunces',serif;
    font-weight:600;
    font-size:24px;
    letter-spacing:.2px;

}

.reserva-content .modal-header .btn-close{

    filter:invert(1);
    opacity:.85;

}

.reserva-content .modal-header .btn-close:hover{

    opacity:1;

}

.reserva-content .modal-body{

    padding:34px 32px 30px;
    background:var(--arena-50);

}

/* ---------- RESUMEN CABAÑA ---------- */

.cabana-resumen-top{

    display:flex;
    align-items:center;
    gap:16px;
    margin-bottom:24px;

}

.cabana-resumen-icono{

    width:50px;
    height:50px;
    min-width:50px;
    border-radius:50%;
    background:linear-gradient(145deg,var(--turquesa-400),var(--mar-700));
    color:#fff;
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:19px;
    box-shadow:0 8px 18px -4px rgba(18,80,103,.45);

}

.precio-noche{

    display:inline-block;
    color:var(--mar-900);
    background:linear-gradient(100deg,var(--dorado-300),var(--dorado-500) 120%);
    font-weight:700;
    font-size:18px;
    padding:6px 18px;
    border-radius:30px;
    margin:0;

}

.precio-noche small{

    font-weight:600;
    font-size:12.5px;
    color:var(--mar-900);
    opacity:.75;

}

/* ---------- CAMPOS ---------- */

.reserva-content .form-label{

    color:var(--mar-900);
    font-weight:600;
    font-size:13.5px;
    letter-spacing:.2px;
    margin-bottom:8px;
    text-transform:uppercase;

}

.reserva-content .form-label i{

    color:var(--turquesa-500);
    width:16px;
    margin-right:4px;

}

.reserva-content .form-control{

    border:1.5px solid var(--arena-200);
    background:#fff;
    border-radius:13px;
    padding:12px 16px;
    font-size:15px;
    font-family:'Outfit',sans-serif;
    color:var(--texto-900);
    transition:.25s;

}

.reserva-content .form-control::placeholder{

    color:#a9a094;

}

.reserva-content .form-control:focus{

    border-color:var(--turquesa-500);
    box-shadow:0 0 0 4px var(--turquesa-100);

}

.reserva-content .mb-3{

    margin-bottom:22px !important;

}

.reserva-content small.text-muted{

    display:block;
    margin-top:6px;
    font-size:12.5px;
    color:var(--texto-600);

}

.reserva-content .row .col{

    padding-left:8px;
    padding-right:8px;

}

.reserva-content .row{

    margin-left:-8px;
    margin-right:-8px;

}

/* ---------- ARCHIVO ---------- */

.dropzone-archivo{

    position:relative;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    gap:8px;
    border:2px dashed var(--arena-300);
    border-radius:16px;
    padding:26px 16px;
    text-align:center;
    color:var(--texto-600);
    font-size:14px;
    font-weight:500;
    background:var(--arena-100);
    transition:.25s;
    cursor:pointer;

}

.dropzone-archivo:hover{

    border-color:var(--turquesa-500);
    background:var(--turquesa-100);

}

.dropzone-archivo i{

    font-size:26px;
    color:var(--turquesa-500);

}

.dropzone-archivo.con-archivo{

    border-style:solid;
    border-color:var(--turquesa-500);
    background:var(--turquesa-100);
    color:var(--mar-900);

}

.dropzone-archivo #comprobante{

    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    opacity:0;
    cursor:pointer;

}

/* ---------- RESUMEN RESERVA ---------- */

.resumen-reserva{

    background:var(--arena-100);
    border:1px solid var(--arena-200);
    border-radius:16px;
    padding:20px 22px 20px;
    margin:26px 0;

}

.resumen-titulo{

    color:var(--mar-900);
    font-family:'Fraunces',serif;
    font-weight:600;
    font-size:14px;
    text-transform:uppercase;
    letter-spacing:.5px;
    margin-bottom:10px;

}

.resumen-titulo i{

    color:var(--turquesa-500);
    margin-right:6px;

}

.resumen-reserva p{

    display:flex;
    justify-content:space-between;
    align-items:center;
    margin:0;
    padding:9px 0;
    color:var(--texto-600);
    font-size:14.5px;
    border-bottom:1px solid var(--arena-200);

}

.resumen-reserva p span i{

    color:var(--turquesa-500);
    width:16px;
    margin-right:6px;
    opacity:.8;

}

.resumen-reserva p:last-child{

    border-bottom:none;
    padding-top:14px;
    margin-top:4px;
    border-top:1.5px dashed var(--arena-300);

}

.resumen-reserva strong{

    color:var(--mar-900);
    font-size:15.5px;

}

.fila-anticipo{

    color:var(--turquesa-500) !important;

}

.fila-anticipo strong{

    color:var(--turquesa-500) !important;

}

.fila-anticipo i{

    color:var(--turquesa-500) !important;

}

.resumen-reserva p:last-child strong{

    color:var(--dorado-500);
    font-family:'Fraunces',serif;
    font-size:18px;

}

/* ---------- FOOTER / BOTONES ---------- */

.reserva-content .modal-footer{

    border-top:1px solid var(--arena-200);
    padding:22px 32px;
    gap:12px;
    background:var(--arena-50);

}

.reserva-content .btn-secondary{

    background:#fff;
    color:var(--texto-600);
    border:1.5px solid var(--arena-200);
    border-radius:11px;
    padding:10px 22px;
    font-weight:600;
    transition:.3s;

}

.reserva-content .btn-secondary:hover{

    background:var(--arena-100);
    color:var(--mar-900);
    border-color:var(--arena-300);

}

.btn-confirmar-reserva{

    background:linear-gradient(100deg,var(--turquesa-500),var(--mar-700) 130%);
    color:#fff;
    border:none;
    padding:12px 30px;
    border-radius:11px;
    font-weight:600;
    letter-spacing:.2px;
    transition:.3s;
    box-shadow:0 10px 24px -6px rgba(18,80,103,.55);

}

.btn-confirmar-reserva:hover{

    background:linear-gradient(100deg,var(--turquesa-400),var(--mar-900) 130%);
    color:#fff;
    transform:translateY(-2px);
    box-shadow:0 14px 28px -6px rgba(18,80,103,.6);

}

.btn-confirmar-reserva:disabled{

    opacity:.7;
    transform:none;

}

/* ---------- FECHAS OCUPADAS ---------- */

.fechas-ocupadas{

    background:var(--coral-100);
    border:1px solid #f0c9b9;
    border-radius:14px;
    padding:14px 18px;
    margin-bottom:24px;
    font-size:14px;

}

.fechas-ocupadas strong{

    color:var(--coral-500);
    display:block;
    margin-bottom:10px;

}

.fechas-ocupadas i{

    margin-right:6px;

}

.chips-fechas{

    display:flex;
    flex-wrap:wrap;
    gap:8px;

}

.chip-fecha{

    display:inline-flex;
    align-items:center;
    gap:6px;
    background:#fff;
    border:1px solid #f0c9b9;
    color:var(--coral-500);
    font-size:12.5px;
    font-weight:600;
    padding:5px 12px;
    border-radius:30px;

}

.chip-fecha i{

    font-size:10px;
    margin:0;

}

/* ---------- DATOS PARA TRANSFERENCIA (oculto hasta que corresponde) ---------- */

.cuenta-pago-hint{

    display:flex;
    align-items:center;
    gap:8px;
    background:var(--arena-100);
    border:1.5px dashed var(--arena-300);
    border-radius:14px;
    padding:12px 16px;
    margin:0 0 22px;
    color:var(--texto-600);
    font-size:13.5px;

}

.cuenta-pago-hint i{

    color:var(--dorado-500);

}

.btn-ver-cuenta-pago{

    display:flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    width:100%;
    background:#fff;
    border:1.5px solid var(--turquesa-500);
    color:var(--mar-700);
    font-weight:600;
    font-size:14.5px;
    border-radius:13px;
    padding:12px 16px;
    margin:0 0 22px;
    cursor:pointer;
    transition:.25s;
    font-family:'Outfit',sans-serif;

}

.btn-ver-cuenta-pago:hover{

    background:var(--turquesa-100);
    border-color:var(--mar-700);
    color:var(--mar-900);

}

.cuenta-pago-box{

    animation:cuentaPagoAparece .3s ease;

}

.cuenta-pago-box.cuenta-error p{

    border-bottom:none;

}

@keyframes cuentaPagoAparece{

    from{ opacity:0; transform:translateY(-6px); }
    to{ opacity:1; transform:translateY(0); }

}

/* ---------- MENSAJES ---------- */

.mensaje-reserva{

    margin-top:6px;
    font-size:14px;
    font-weight:500;
    display:none;

}

.mensaje-reserva:not(:empty){

    display:flex;
    align-items:center;
    gap:8px;
    padding:12px 16px;
    border-radius:11px;

}

.mensaje-reserva.error{

    color:var(--coral-500);
    background:var(--coral-100);

}

.mensaje-reserva.exito{

    color:var(--mar-900);
    background:var(--turquesa-100);

}

/* ---------- ESTADO DEL QR (comprobante) ---------- */

.qr-estado{

    margin-top:10px;
    padding:10px 14px;
    border-radius:11px;
    font-size:13px;
    font-weight:500;
    line-height:1.4;

}

.qr-estado.qr-ok{

    color:var(--mar-900);
    background:var(--turquesa-100);
    border:1px solid var(--turquesa-400);

}

.qr-estado.qr-advertencia{

    color:var(--coral-500);
    background:var(--coral-100);
    border:1px solid #f0c9b9;

}

.qr-estado.qr-info{

    color:var(--mar-700);
    background:var(--arena-200);
    border:1px solid var(--arena-300);

}