/* ======== PASES ZPC · Frontend ======== */
.pz-user-wrap { max-width: 1100px; margin: 20px auto; padding: 0 15px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif; }
.pz-card { background:#fff; border-radius:10px; padding:25px; margin-bottom:25px; box-shadow:0 2px 10px rgba(0,0,0,.08); }
.pz-card h2 { color:#1a365d; margin-bottom:15px; border-bottom:2px solid #e2e8f0; padding-bottom:10px; font-size:20px; }
.pz-subtitle { color:#718096; font-size:14px; margin-bottom:20px; text-align:center; }
.pz-form-card { max-width:520px; margin:40px auto; }
.pz-form-group { margin-bottom:15px; }
.pz-form-group label { display:block; margin-bottom:5px; font-weight:600; color:#2d3748; font-size:13px; }
.pz-form-group input, .pz-form-group select, .pz-form-group textarea {
    width:100%; padding:10px; border:1px solid #e2e8f0; border-radius:6px; font-size:14px; background:#fff; box-sizing:border-box;
}
.pz-form-group input:focus, .pz-form-group select:focus { outline:none; border-color:#2b6cb0; box-shadow:0 0 0 3px rgba(43,108,176,.15); }
.pz-form-row { display:grid; grid-template-columns:1fr 1fr; gap:15px; }
.pz-input-group { display:flex; align-items:center; border:1px solid #e2e8f0; border-radius:6px; background:#fff; }
.pz-input-group input { border:none !important; flex:1; }
.pz-toggle-pass { background:none; border:none; cursor:pointer; font-size:1rem; padding:0 10px; color:#4a5568; }

.pz-btn { display:inline-block; padding:10px 20px; border:none; border-radius:6px; cursor:pointer; font-size:14px; text-decoration:none; text-align:center; transition:all .2s; font-weight:600; }
.pz-btn-primary { background:#2b6cb0; color:#fff; } .pz-btn-primary:hover { background:#2c5282; color:#fff; }
.pz-btn-success { background:#48bb78; color:#fff; } .pz-btn-success:hover { background:#38a169; color:#fff; }
.pz-btn-danger  { background:#e53e3e; color:#fff; } .pz-btn-danger:hover  { background:#c53030; color:#fff; }
.pz-btn-warning { background:#ed8936; color:#fff; } .pz-btn-warning:hover { background:#dd6b20; color:#fff; }
.pz-btn-cancel  { background:#a0aec0; color:#fff; }
.pz-btn-sm { padding:6px 12px; font-size:12px; }
.pz-btn-full { width:100%; }

.pz-msg { padding:12px 15px; border-radius:6px; margin-bottom:20px; font-size:14px; }
.pz-msg-success { background:#c6f6d5; color:#22543d; border:1px solid #9ae6b4; }
.pz-msg-error   { background:#fed7d7; color:#9b2c2c; border:1px solid #feb2b2; }
.pz-link { text-align:center; margin-top:15px; font-size:14px; }
.pz-link a { color:#2b6cb0; text-decoration:none; } .pz-link a:hover { text-decoration:underline; }

.pz-header-user { display:flex; justify-content:space-between; align-items:center; background:#1a365d; color:#fff; padding:12px 18px; border-radius:8px; margin-bottom:20px; }
.pz-header-user span { font-weight:600; }

/* ==== Selector de zona ==== */
.pz-zona-selector { display:flex; gap:12px; align-items:stretch; flex-wrap:wrap; margin-bottom:15px; }
.pz-zona-selector > label {
    display:inline-flex; align-items:center;
    font-weight:600; font-size:13px; color:#2d3748; margin:0; line-height:1;
}
.pz-zona-selector > select {
    padding:8px 12px; border:1px solid #e2e8f0; border-radius:6px;
    min-width:320px; font-size:13px; line-height:1.2;
    box-sizing:border-box; margin:0; align-self:stretch;
}
.pz-badge-pases {
    display:inline-flex; align-items:center; justify-content:center;
    align-self:stretch; padding:0 14px;
    background:#fff; border:1px solid #d97706; border-radius:20px;
    font-size:12px; font-weight:600; color:#2d3748;
    line-height:1; white-space:nowrap; box-sizing:border-box; margin:0;
}

.pz-hint { color:#4a5568; font-size:13px; margin-bottom:15px; }
.pz-hint-sm { font-size:12px; color:#718096; }

/* ============================================
   CUADRO DEL DÍA
   Flex column: los hijos se apilan sin line-boxes
   de por medio, así el hueco es exactamente el 'gap'
   ============================================ */
.pz-mes-titulo { font-size:14px; font-weight:700; color:#2d3748; margin:15px 0 8px; }
.pz-calendario { display:grid; grid-template-columns:repeat(auto-fill,minmax(100px,1fr)); gap:10px; }

.pz-dia {
    display: flex;
    flex-direction: column;
    gap: 3px;                        /* hueco real entre número / día / botón / contador */
    background: #f7fafc;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    padding: 8px 6px 8px;
    text-align: center;
    font-size: 13px;
    line-height: 1;
}
.pz-dia-num { font-weight:700; font-size:20px; color:#2d3748; line-height:1.1; }
.pz-dia-name { font-size:11px; color:#718096; line-height:1.1; margin:0; }
.pz-dia-vencido { background:#edf2f7; opacity:.55; }
.pz-dia-cerrado { background:#fff5f5; border-color:#feb2b2; }
.pz-dia-pasado { font-size:10px; color:#a0aec0; line-height:1.1; }
.pz-dia-cerrado-txt { font-size:11px; color:#e53e3e; font-weight:700; line-height:1.1; }
.pz-dia-reservado { background:#f0fff4; border-color:#9ae6b4; }

/* ==== Botón Reservar ==== */
.pz-btn-reservar {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 6px 8px;
    font-size: 11px;
    line-height: 1;
    background: #48bb78;
    color: #fff;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    font-weight: 600;
    box-sizing: border-box;
    margin: 4;
}
.pz-btn-reservar:hover { background:#38a169; }

.pz-sin-pases { font-size:10px; color:#a0aec0; line-height:1.1; }

/* ==== Contador rojo: texto centrado, pegado al botón ==== */
.pz-contador {
    display: flex;
    align-items: center;              /* centra verticalmente el "0/5" */
    justify-content: center;          /* centra horizontalmente */
    width: 50%;
    padding: 6px 8px;
    margin: 0 auto;                   /* sin margen superior: queda pegado al botón */
    font-size: 13px;
    font-weight: 600;
    line-height: 0;
    text-align: center;
    color: #fff;
    background: #e53e3e;
    border-radius: 4px;
    box-sizing: border-box;
}
.pz-contador-full { background:#718096; }

.pz-table { width:100%; border-collapse:collapse; font-size:14px; }
.pz-table th { background:#f7fafc; padding:10px; text-align:left; border-bottom:2px solid #e2e8f0; font-weight:700; color:#2d3748; }
.pz-table td { padding:10px; border-bottom:1px solid #e2e8f0; }
.pz-badge-pendiente { color:#d69e2e; background:#fffff0; padding:5px 14px; border-radius:20px; font-size:12px; font-weight:700; border:2px solid #d69e2e; display:inline-block; }
.pz-no-reservas { text-align:center; padding:20px; color:#718096; }

.pz-modal-overlay { display:none; position:fixed; inset:0; background:rgba(0,0,0,.6); z-index:99999; justify-content:center; align-items:center; }
.pz-modal-overlay.active { display:flex; }
.pz-modal-box { background:#fff; border-radius:12px; padding:30px; max-width:520px; width:90%; box-shadow:0 20px 60px rgba(0,0,0,.35); }
.pz-modal-icon { font-size:48px; text-align:center; margin-bottom:10px; }
.pz-modal-box h3 { color:#1a365d; text-align:center; margin-bottom:15px; }
.pz-modal-mensaje { background:#fffff0; border-left:4px solid #d69e2e; border-radius:4px; padding:15px; text-align:center; font-size:14px; margin-bottom:15px; color:#2d3748; }
.pz-modal-mensaje strong { color:#d69e2e; }
.pz-modal-info { font-size:12px; color:#4a5568; text-align:center; background:#ebf8ff; border-radius:4px; padding:10px; margin-bottom:20px; }
.pz-modal-buttons { display:flex; gap:10px; justify-content:center; }

.pz-verificar-card { max-width:560px; margin:40px auto; }
.pz-valido { color:#38a169; font-size:20px; font-weight:700; text-align:center; margin-bottom:20px; }
.pz-invalido { color:#e53e3e; font-size:20px; font-weight:700; text-align:center; }
.pz-verif-lista { list-style:none; padding:0; }
.pz-verif-lista li { padding:8px 0; border-bottom:1px solid #e2e8f0; font-size:14px; }

@media (max-width:640px) {
    .pz-form-row { grid-template-columns:1fr; }
    .pz-calendario { grid-template-columns:repeat(auto-fill,minmax(72px,1fr)); }
    .pz-header-user { flex-direction:column; gap:10px; }
    .pz-zona-selector { flex-direction:column; align-items:stretch; }
    .pz-zona-selector select { min-width:0; width:100%; }
    .pz-badge-pases { height:auto; padding:6px 12px; }
}
/* ============================================================
   FIX: centrado perfecto del badge "Te quedan X pases disponibles"
   ============================================================ */
.pz-badge-pases,
.pz-user-wrap .pz-badge-pases,
.pz-zona-selector .pz-badge-pases {
    display: inline-flex !important;
    align-items: center !important;      /* centrado vertical */
    justify-content: center !important;  /* centrado horizontal */
    align-self: stretch !important;      /* misma altura que el select */
    height: 100% !important;
    min-height: 36px !important;
    padding: 0 14px !important;
    line-height: 1 !important;           /* evita desplazamientos del tema */
    box-sizing: border-box !important;
    vertical-align: middle !important;
    text-align: center !important;
}

/* Forzar line-height 1 en cualquier hijo (span, strong, etc.) */
.pz-badge-pases * {
    line-height: 1 !important;
    vertical-align: middle !important;
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}