/* Modal de compra: mini calendario y campana de Pasaporte Campo.
   Copiado de panaca.co (seccion "section_modal_compra") para que el modal se
   vea y se comporte igual que en produccion. Se carga en el layout porque el
   modal vive alli, como en la tienda original. */

.mini-cal{border:1px solid #eee;border-radius:12px;padding:10px;background:#fff}
.mini-cal__nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.mini-cal__btn{border:0;background:#f3f4f6;border-radius:10px;width:34px;height:34px;font-size:18px;cursor:pointer}
.mini-cal__btn:disabled{opacity:.45;cursor:not-allowed}
.mini-cal__title{font-weight:800}
.mini-cal__weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;font-size:12px;color:#6b7280;margin-bottom:6px}
.mini-cal__days{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
.mini-cal__day{
    position:relative;display:flex;align-items:center;justify-content:center;
    height:38px;border-radius:12px;font-size:13px;user-select:none;
    transition:transform .12s ease, box-shadow .12s ease;
}
.mini-cal__day--empty{background:transparent}
.mini-cal__day--closed{background:#f3f4f6;color:#ea0b2a;cursor:not-allowed}
.mini-cal__day--open{background:#e8f5e9;color:#1b5e20;cursor:pointer;font-weight:700}
.mini-cal__day--selected{outline:none !important;transform:scale(1.12);box-shadow:0 10px 18px rgba(0,0,0,.18);z-index:2}
.mini-cal__day--selected.mini-cal__day--open{border:2px solid #14532d}
.mini-cal__day--today::after{content:"";position:absolute;bottom:4px;width:6px;height:6px;border-radius:999px;background:#111827;opacity:.35}

.mini-cal__legend{display:flex;gap:12px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:#374151}
/* El punto de la leyenda va acotado al calendario: ".dot" a secas es un nombre
   demasiado generico para soltarlo en la hoja global. */
.mini-cal__legend .dot{display:inline-block;width:10px;height:10px;border-radius:999px;margin-right:6px;vertical-align:middle}
.mini-cal__legend .dot--travesia{background:#fbbf24}
.mini-cal__legend .dot--open{background:#22c55e}
.mini-cal__legend .dot--closed{background:#ea0b2a}

.mini-cal__picked{
    margin-top:10px;padding:12px;border-radius:12px;
    background:#111827;color:#fff;font-size:14px;font-weight:800;
    display:flex;align-items:center;gap:10px
}
.mini-cal__picked strong{font-size:18px;font-weight:900}

.mini-cal__day--travesia{
    background:#d79a00;color:#000;font-weight:900;border-radius:12px;
    position:relative;overflow:hidden;cursor:pointer;
    display:flex;flex-direction:column;align-items:center;justify-content:center;
    height:44px;gap:2px;
    transition:transform .12s ease, box-shadow .12s ease;
    background: linear-gradient(to left, #1b5e20, #d79a00);
}
.mini-cal__day--selected.mini-cal__day--travesia{border:2px solid rgba(255,255,255,.85)}
.mini-cal__day--travesia::before{
    content:"TRAVESÍA";
    display:block;font-size:8px;line-height:1;letter-spacing:.08em;
    font-weight:800;opacity:.95;
}
.mini-cal__day--travesia::after{
    content:"";
    position:absolute;right:0;bottom:0;width:18px;height:18px;
    background:#111;
    clip-path: polygon(100% 0, 0 100%, 100% 100%);
}
.mini-cal__num{font-size:14px;line-height:1;font-weight:900}
.mini-cal__day--travesia .mini-cal__num{font-size:16px}

.mini-cal__ico{
    position:absolute;right:2px;bottom:2px;width:12px;height:12px;background:#fff;opacity:.95;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 9a3 3 0 0 0 0 6v2a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-2a3 3 0 0 0 0-6V7a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2Zm10-4v2m0 4v2m0 4v2' stroke='black' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 9a3 3 0 0 0 0 6v2a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-2a3 3 0 0 0 0-6V7a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2Zm10-4v2m0 4v2m0 4v2' stroke='black' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat;
}

/* Restos del calendario anterior (flatpickr): si alguna pagina replicada aun
   trae el input de fecha, no debe verse. */
#fechaVisita,
input[type="date"].modal__date-input,
.modal__date-input[type="date"]{display:none !important;}
.flatpickr-input{display:none !important;}

/* Cabecera de la lista de boletos: el titulo y el boton de limpiar. */
.modal__products-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    flex-wrap:wrap;
}
.modal__products-head .modal__products-title{margin-bottom:0}

.modal__clear-btn{
    border:1px solid #d1d5db;
    background:#fff;
    color:#6b7280;
    font-family:var(--font-body);
    font-size:0.68rem;
    font-weight:700;
    text-transform:uppercase;
    letter-spacing:.03em;
    padding:0.3rem 0.6rem;
    cursor:pointer;
    transition:color .15s ease, border-color .15s ease, background .15s ease;
}
.modal__clear-btn:hover,
.modal__clear-btn:focus-visible{
    color:var(--color-red);
    border-color:var(--color-red);
    background:#fff5f5;
}

/* Venta cruzada del plan de cumpleanos dentro del modal de pasaportes. */
.modal__cumple-cross{
    display:flex;
    align-items:center;
    gap:0.7rem;
    flex-wrap:wrap;
    margin-top:0.9rem;
    padding:0.75rem 0.85rem;
    background:linear-gradient(100deg,#005844 0%,#0b7a5e 100%);
    color:#fff;
    clip-path:polygon(0 0, calc(100% - 14px) 0, 100% 14px, 100% 100%, 14px 100%, 0 calc(100% - 14px));
}
.modal__cumple-cross__icono{font-size:1.7rem;line-height:1;flex-shrink:0}
.modal__cumple-cross__texto{flex:1 1 190px;min-width:0;font-family:var(--font-body);line-height:1.35}
.modal__cumple-cross__texto strong{color:var(--color-yellow)}
.modal__cumple-cross__texto > strong{
    display:block;
    font-family:var(--font-heading);
    font-size:0.85rem;
    text-transform:uppercase;
    letter-spacing:.02em;
    margin-bottom:0.15rem;
}
.modal__cumple-cross__texto > span{display:block;font-size:0.72rem;opacity:.94}
.modal__cumple-cross__cta{
    flex-shrink:0;
    border:0;
    cursor:pointer;
    background:var(--color-yellow);
    color:#1a1a1a;
    font-family:var(--font-heading);
    font-size:0.72rem;
    text-transform:uppercase;
    font-weight:700;
    letter-spacing:.03em;
    padding:0.55rem 0.9rem;
    clip-path:var(--btn-path-4);
    transition:filter .15s ease, transform .15s ease;
}
.modal__cumple-cross__cta:hover,
.modal__cumple-cross__cta:focus-visible{filter:brightness(1.07);transform:translateY(-1px)}

@media (max-width: 640px){
    .modal__cumple-cross{justify-content:center;text-align:center}
    .modal__cumple-cross__cta{width:100%}
}

/* Campana de Pasaporte Campo (descuento por franja horaria). */
.campo-campaign-badge{
    display:none;
    margin:0.45rem 0 0.35rem;
    padding:0.55rem 0.7rem;
    border-radius:12px;
    background:#111827;
    color:#fff;
    font-family:var(--font-heading);
    font-size:0.72rem;
    font-weight:800;
    text-align:center;
    text-transform:uppercase;
    letter-spacing:.03em;
    border:2px solid #fbbf24;
}
.campo-campaign-badge strong{color:#fbbf24;font-size:0.9rem}
.campo-campaign-badge small{
    display:block;
    margin-top:0.2rem;
    font-family:var(--font-body);
    font-size:0.62rem;
    font-weight:700;
    color:#fff7ed;
    text-transform:none;
    letter-spacing:0;
}
.modal__product-row--campo-campaign{
    box-shadow:0 0 0 2px rgba(251,191,36,.9), 0 8px 18px rgba(0,0,0,.12);
    transform:scale(1.01);
}
