/* ============================================================
   responsive-public.css
   Defensas responsive para páginas PÚBLICAS (sin auth-guard.js):
   - visitors/self.html, visitors/preself.html, visitors/reserva.html
   - compras/actualizar.html, compras/solicitar.html
   - empleo/aplicar.html, empleo/subir-documentos.html, empleo/subir-curso.html
   - offline.html
   - login.html (solo si lo requiere)

   Estas páginas NO llevan <divali-topnav>; son standalone para
   usuarios externos. Solo necesitan responsive base.
   ============================================================ */

* {
    box-sizing: border-box;
}

img, video, iframe, embed, object {
    max-width: 100%;
    height: auto;
}

pre, code {
    max-width: 100%;
    overflow-x: auto;
}

body {
    -webkit-text-size-adjust: 100%;
}

/* SweetAlert2 — modal queda dentro del viewport en móvil */
@media (max-width: 768px) {
    .swal2-popup {
        width: calc(100vw - 16px) !important;
        max-width: 480px !important;
        padding: 1.25rem !important;
        font-size: 0.95rem !important;
    }
    .swal2-title {
        font-size: 1.15rem !important;
    }
    .swal2-html-container {
        font-size: 0.9rem !important;
    }

    /* Containers genéricos */
    .container,
    .container-fluid,
    .form-container,
    .public-form,
    .public-card {
        padding-left: 12px !important;
        padding-right: 12px !important;
        max-width: 100% !important;
    }

    /* Form grids colapsan a 1 columna */
    .form-grid,
    .form-row,
    .grid-2col,
    .grid-3col {
        grid-template-columns: 1fr !important;
        gap: 12px !important;
    }

    /* Inputs no se salen */
    input, select, textarea {
        max-width: 100%;
        box-sizing: border-box;
        font-size: 16px; /* evita zoom en iOS */
    }

    /* Touch targets cómodos en móvil — pero NO forzar width:100% para no
       romper grupos flex (input + botón) o filas de acciones */
    button, .btn, input[type="submit"] {
        min-height: 44px;
    }

    /* Submit standalone: solo si está SOLO en su contenedor (no junto a inputs) */
    form > button[type="submit"]:only-child,
    form > input[type="submit"]:only-child {
        width: 100%;
    }

    /* Cards públicos */
    .card,
    .public-card,
    .upload-card {
        padding: 16px !important;
        margin: 8px !important;
    }

    /* Headings escalan */
    h1 { font-size: 1.5rem !important; }
    h2 { font-size: 1.25rem !important; }
    h3 { font-size: 1.1rem !important; }
}

/* Tablet ajustes ligeros */
@media (max-width: 1024px) and (min-width: 769px) {
    .container,
    .container-fluid {
        max-width: 100% !important;
    }
}
