/**
 * Mobile Optimizations CSS
 * Estilos específicos para mejorar la experiencia en dispositivos móviles
 * Especialmente optimizado para iPhone y pantallas pequeñas
 */

/* Prevenir zoom no deseado en inputs iOS */
@supports (-webkit-overflow-scrolling: touch) {
    input,
    textarea,
    select {
        font-size: 16px !important;
    }
}

/* Safe area para dispositivos con notch (iPhone X+) */
@supports (padding: max(0px)) {
    body {
        padding-left: max(12px, env(safe-area-inset-left));
        padding-right: max(12px, env(safe-area-inset-right));
        padding-top: max(0px, env(safe-area-inset-top));
        padding-bottom: max(0px, env(safe-area-inset-bottom));
    }
}

/* Optimizaciones táctiles */
* {
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0.1);
    -webkit-touch-callout: default;
}

button,
a,
.btn {
    -webkit-tap-highlight-color: rgba(79, 70, 229, 0.2);
    touch-action: manipulation;
}

/* Smooth scrolling en dispositivos móviles */
* {
    -webkit-overflow-scrolling: touch;
}

/* Optimizaciones de rendimiento */
.certification-card,
.fixed-certification-card,
.stat-card,
.modal {
    will-change: auto;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
}

/* Media queries para diferentes tamaños */

/* Tablets y pantallas medianas */
@media (max-width: 768px) {
    .container {
        padding: 15px;
    }

    .header {
        padding: 30px 15px;
    }

    .header h1 {
        font-size: 1.75rem;
        line-height: 1.2;
    }

    .header p {
        font-size: 0.95rem;
    }

    .nav {
        flex-direction: column;
        padding: 12px;
    }

    .nav-left {
        width: 100%;
        justify-content: space-around;
    }

    .nav-link {
        font-size: 0.9rem;
    }

    .certification-grid,
    .fixed-certifications-grid {
        grid-template-columns: 1fr;
        gap: 20px;
    }

    .academic-stats {
        grid-template-columns: repeat(2, 1fr);
        gap: 15px;
    }

    .payment-details {
        grid-template-columns: 1fr;
    }
}

/* Móviles pequeños y iPhone */
@media (max-width: 480px) {
    /* Container y espaciado general */
    .container {
        padding: 10px;
    }

    /* Header */
    .header {
        padding: 20px 10px;
        margin-bottom: 15px;
        border-radius: 12px;
    }

    .header h1 {
        font-size: 1.3rem;
        line-height: 1.3;
        margin-bottom: 8px;
    }

    .header p {
        font-size: 0.8rem;
        line-height: 1.4;
        padding: 0 5px;
    }

    /* Navegación */
    .nav {
        padding: 8px;
        gap: 6px;
        border-radius: 12px;
    }

    .nav-left {
        gap: 8px;
        flex-wrap: wrap;
    }

    .nav-link {
        font-size: 0.8rem;
        padding: 6px 10px;
        white-space: nowrap;
    }

    .nav-link i {
        display: none;
    }

    /* Cards de certificaciones */
    .certification-card,
    .fixed-certification-card {
        padding: 15px;
        margin-bottom: 15px;
    }

    .certification-title,
    .fixed-cert-title {
        font-size: 1rem;
        line-height: 1.3;
        margin-bottom: 8px;
    }

    .certification-meta,
    .fixed-cert-details {
        font-size: 0.8rem;
    }

    /* Botones */
    .btn {
        padding: 10px 16px;
        font-size: 0.85rem;
    }

    .certification-actions {
        flex-direction: column;
        gap: 8px;
    }

    .certification-actions .btn {
        width: 100%;
    }

    /* Cards de información */
    .card-header {
        padding: 12px;
    }

    .card-header h2 {
        font-size: 1rem;
        line-height: 1.3;
    }

    .card-body {
        padding: 12px;
    }

    /* Sistema de pagos */
    .payment-info {
        padding: 12px;
        margin-bottom: 15px;
    }

    .payment-structure h3 {
        font-size: 1rem;
        margin-bottom: 12px;
    }

    .payment-details {
        grid-template-columns: 1fr;
        gap: 8px;
    }

    .payment-item {
        padding: 10px;
    }

    .payment-item strong {
        font-size: 0.9rem;
    }

    .payment-item small {
        font-size: 0.75rem;
    }

    /* Estadísticas académicas */
    .academic-stats {
        grid-template-columns: 1fr;
        gap: 10px;
        margin-bottom: 20px;
    }

    .stat-card {
        padding: 12px;
    }

    .stat-number {
        font-size: 1.5rem;
    }

    .stat-label {
        font-size: 0.8rem;
    }

    /* Detalles de certificación fija */
    .fixed-cert-details {
        grid-template-columns: 1fr;
        gap: 8px;
        padding: 10px;
    }

    .detail-label {
        font-size: 0.75rem;
    }

    .detail-value {
        font-size: 0.85rem;
    }

    /* Lista de módulos */
    .module-preview-list {
        max-height: 120px;
        margin: 8px 0;
    }

    .module-preview-item {
        font-size: 0.8rem;
        padding: 6px 8px;
        margin: 3px 0;
    }

    .module-icon {
        font-size: 0.9rem;
    }

    .module-hours {
        font-size: 0.7rem;
        padding: 2px 6px;
    }

    /* Sección normativa */
    .normativa-section {
        padding: 12px;
        margin-bottom: 15px;
    }

    .normativa-title {
        font-size: 1rem;
        margin-bottom: 10px;
    }

    .normativa-list {
        padding-left: 20px;
    }

    .normativa-list li {
        font-size: 0.8rem;
        padding: 6px 0;
        line-height: 1.4;
    }

    .normativa-list strong {
        display: block;
        margin-bottom: 2px;
    }

    /* Tabs */
    .tabs {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
    }

    .tabs::-webkit-scrollbar {
        display: none;
    }

    .tab {
        padding: 10px 12px;
        font-size: 0.8rem;
        white-space: nowrap;
        min-width: auto;
    }

    .tab-content {
        padding: 12px;
    }

    /* Modal */
    .modal-content {
        width: 98%;
        max-width: 100%;
        margin: 1% auto;
        max-height: 95vh;
        overflow-y: auto;
    }

    .modal-header {
        padding: 12px;
    }

    .modal-header h3 {
        font-size: 1rem;
    }

    .close {
        font-size: 1.8rem;
        padding: 5px;
    }

    /* Formularios */
    .form-group {
        margin-bottom: 15px;
    }

    .form-group label {
        font-size: 0.85rem;
        margin-bottom: 6px;
    }

    .form-control {
        padding: 10px 12px;
        font-size: 16px;
    }

    /* Loading */
    .loading-container {
        padding: 30px 15px;
    }

    .loading-spinner {
        width: 40px;
        height: 40px;
        border-width: 3px;
    }

    .loading-text {
        font-size: 0.9rem;
    }

    .progress-text {
        font-size: 0.75rem;
    }

    /* Notificaciones */
    .notification {
        bottom: 10px;
        right: 10px;
        left: 10px;
        padding: 12px 15px;
        font-size: 0.85rem;
    }

    /* Ajustes para divs con estilos inline (banners destacados) */
    div[style*="padding: 20px 30px"] {
        padding: 15px 10px !important;
    }

    div[style*="padding: 30px"] {
        padding: 15px !important;
    }

    div[style*="font-size: 2rem"] i,
    div[style*="font-size: 2rem"] {
        font-size: 1.5rem !important;
    }

    div[style*="font-size: 1.5rem"] h3 {
        font-size: 1.1rem !important;
    }

    div[style*="font-size: 1.1rem"] p {
        font-size: 0.9rem !important;
    }

    div[style*="gap: 30px"] {
        gap: 10px !important;
        font-size: 0.75rem !important;
    }

    div[style*="gap: 15px"] {
        gap: 8px !important;
    }

    /* Botones con border-radius inline */
    a[style*="border-radius: 50px"],
    a[style*="border-radius: 25px"],
    button[style*="border-radius: 50px"],
    button[style*="border-radius: 25px"] {
        padding: 10px 18px !important;
        font-size: 0.85rem !important;
    }

    /* Mejorar legibilidad de textos */
    p, li, span, div {
        -webkit-font-smoothing: antialiased;
        -moz-osx-font-smoothing: grayscale;
    }

    /* Prevenir overflow horizontal */
    body, html {
        overflow-x: hidden;
    }

    .container > * {
        max-width: 100%;
    }

    /* Optimizar imágenes */
    img {
        max-width: 100%;
        height: auto;
    }

    /* Ajustar grids para una sola columna */
    .certification-grid,
    .fixed-certifications-grid,
    .payment-details,
    .fixed-cert-details {
        grid-template-columns: 1fr !important;
    }
}

/* iPhone SE y dispositivos muy pequeños */
@media (max-width: 375px) {
    .header h1 {
        font-size: 1.2rem;
    }

    .header p {
        font-size: 0.75rem;
    }

    .nav-link {
        font-size: 0.75rem;
        padding: 5px 8px;
    }

    .stat-number {
        font-size: 1.3rem;
    }

    .stat-label {
        font-size: 0.75rem;
    }

    .btn {
        font-size: 0.8rem;
        padding: 9px 14px;
    }
}

/* Landscape en móviles */
@media (max-width: 768px) and (orientation: landscape) {
    .header {
        padding: 15px 10px;
    }

    .header h1 {
        font-size: 1.3rem;
    }

    .header p {
        font-size: 0.8rem;
    }

    .academic-stats {
        grid-template-columns: repeat(4, 1fr);
    }

    .modal-content {
        max-height: 90vh;
    }
}

/* Optimizaciones para touch */
@media (hover: none) and (pointer: coarse) {
    .btn,
    .nav-link,
    button,
    a {
        min-height: 44px;
        min-width: 44px;
    }

    .certification-card:active,
    .fixed-certification-card:active,
    .btn:active {
        transform: scale(0.98);
        opacity: 0.9;
    }
}

/* Dark mode support */
@media (prefers-color-scheme: dark) {
    /* Opcional: Agregar soporte para modo oscuro en el futuro */
}

/* Reducir movimiento para accesibilidad */
@media (prefers-reduced-motion: reduce) {
    * {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}

/* ============================================
   MODALES RESPONSIVOS
   ============================================ */

/* Modales en tablets */
@media (max-width: 768px) {
    /* Overlays y containers de modales */
    .modal-overlay,
    .quick-processing-overlay,
    [class*="modal-overlay"],
    [class*="-overlay"] {
        padding: 10px !important;
    }

    /* Contenido de modales */
    .modal-content,
    .quick-processing-content,
    .tts-modal-content,
    [class*="modal-content"],
    [class*="modal-dialog"] {
        width: 95% !important;
        max-width: 95% !important;
        min-width: auto !important;
        margin: 10px auto !important;
        padding: 20px 15px !important;
        max-height: 85vh !important;
        overflow-y: auto !important;
    }

    /* Headers de modales */
    .modal-header,
    .tts-modal-header,
    [class*="modal-header"] {
        padding: 12px 15px !important;
        font-size: 1.1rem !important;
    }

    .modal-header h3,
    .modal-header h2,
    .modal-title {
        font-size: 1.1rem !important;
        margin: 0 !important;
    }

    /* Body de modales */
    .modal-body,
    .tts-modal-body,
    [class*="modal-body"] {
        padding: 15px !important;
        font-size: 0.9rem !important;
    }

    /* Footer de modales */
    .modal-footer,
    .tts-modal-footer,
    [class*="modal-footer"] {
        padding: 12px 15px !important;
        flex-direction: column !important;
        gap: 10px !important;
    }

    .modal-footer button,
    .tts-modal-footer button,
    [class*="modal-footer"] button {
        width: 100% !important;
        margin: 0 !important;
    }

    /* Botones de cierre */
    .modal-close,
    .tts-modal-close,
    [class*="modal-close"],
    button[class*="close"] {
        font-size: 1.5rem !important;
        padding: 5px 10px !important;
        min-width: 44px !important;
        min-height: 44px !important;
    }
}

/* Modales en móviles pequeños */
@media (max-width: 480px) {
    .modal-overlay,
    .quick-processing-overlay {
        padding: 5px !important;
    }

    .modal-content,
    .quick-processing-content,
    .tts-modal-content {
        width: 98% !important;
        max-width: 98% !important;
        padding: 15px 10px !important;
        border-radius: 12px !important;
        max-height: 90vh !important;
    }

    .modal-header h3,
    .modal-header h2 {
        font-size: 1rem !important;
    }

    .modal-body {
        font-size: 0.85rem !important;
        padding: 12px !important;
    }

    /* Spinners en modales */
    .quick-processing-spinner,
    .spinner {
        width: 60px !important;
        height: 60px !important;
        border-width: 4px !important;
    }

    .quick-processing-text {
        font-size: 1.1rem !important;
    }

    .quick-processing-subtext {
        font-size: 0.9rem !important;
    }
}

/* ============================================
   FORMULARIOS RESPONSIVOS
   ============================================ */

/* Formularios en tablets */
@media (max-width: 768px) {
    /* Containers de formularios */
    .form-section,
    .form-container,
    form,
    [class*="form"] {
        padding: 20px 15px !important;
        margin: 10px 0 !important;
    }

    /* Grupos de formulario */
    .form-group,
    .form-field,
    [class*="form-group"] {
        margin-bottom: 15px !important;
    }

    /* Labels */
    .form-group label,
    .form-field label,
    label {
        font-size: 0.9rem !important;
        margin-bottom: 6px !important;
        display: block !important;
    }

    /* Inputs, selects, textareas */
    .form-control,
    input[type="text"],
    input[type="email"],
    input[type="password"],
    input[type="number"],
    input[type="tel"],
    input[type="url"],
    select,
    textarea {
        width: 100% !important;
        font-size: 16px !important; /* Evita zoom en iOS */
        padding: 12px !important;
        border-radius: 8px !important;
        box-sizing: border-box !important;
    }

    /* Selects específicamente */
    select.form-control,
    select {
        min-height: 44px !important;
        background-size: 16px !important;
        padding-right: 35px !important;
    }

    /* Textareas */
    textarea.form-control,
    textarea {
        min-height: 100px !important;
        resize: vertical !important;
    }

    /* Botones de formulario */
    .form-section button,
    .form-group button,
    form button[type="submit"],
    form .btn {
        width: 100% !important;
        padding: 14px !important;
        font-size: 1rem !important;
        margin-top: 10px !important;
        min-height: 48px !important;
    }

    /* Checkboxes y radios */
    .form-check,
    .form-radio {
        padding: 10px 0 !important;
    }

    .form-check-input,
    .form-radio-input,
    input[type="checkbox"],
    input[type="radio"] {
        width: 20px !important;
        height: 20px !important;
        margin-right: 10px !important;
    }

    .form-check-label,
    .form-radio-label {
        font-size: 0.9rem !important;
        line-height: 1.4 !important;
    }

    /* Text muted y ayudas */
    .text-muted,
    small,
    .form-text {
        font-size: 0.8rem !important;
        line-height: 1.3 !important;
    }

    /* Stats grid en formularios */
    .stats-grid {
        grid-template-columns: 1fr !important;
        gap: 15px !important;
    }

    /* Alertas en formularios */
    .alert,
    .alert-info,
    .alert-warning,
    .alert-success,
    .alert-danger {
        padding: 12px !important;
        font-size: 0.85rem !important;
        margin: 10px 0 !important;
    }
}

/* Formularios en móviles pequeños */
@media (max-width: 480px) {
    .form-section,
    .form-container {
        padding: 15px 10px !important;
    }

    .form-group {
        margin-bottom: 12px !important;
    }

    .form-group label {
        font-size: 0.85rem !important;
    }

    input,
    select,
    textarea {
        font-size: 16px !important;
        padding: 10px !important;
    }

    form button[type="submit"],
    .btn-primary {
        padding: 12px !important;
        font-size: 0.95rem !important;
    }

    /* Grids de dos columnas a una */
    .form-row,
    [class*="grid-2"] {
        grid-template-columns: 1fr !important;
    }
}

/* ============================================
   CONTENEDORES ESPECÍFICOS
   ============================================ */

@media (max-width: 768px) {
    /* Container principal */
    .container,
    .main-content {
        width: 100% !important;
        max-width: 100% !important;
        padding: 15px 10px !important;
        margin: 0 !important;
    }

    /* Headers */
    .header {
        padding: 20px 15px !important;
        text-align: center !important;
    }

    .header h1 {
        font-size: 1.5rem !important;
        margin-bottom: 10px !important;
    }

    .header p {
        font-size: 0.9rem !important;
    }

    /* Cards y secciones */
    .card,
    .section,
    [class*="card"] {
        padding: 15px !important;
        margin: 10px 0 !important;
        border-radius: 12px !important;
    }

    /* Progress bars */
    .progress-bar,
    [class*="progress"] {
        height: 8px !important;
    }

    /* Loading spinners */
    .loading-spinner,
    [class*="loading"] {
        padding: 20px !important;
    }

    /* Result sections */
    .result-section,
    [class*="result"] {
        padding: 15px !important;
        margin: 10px 0 !important;
    }

    /* Download links */
    .download-links {
        flex-direction: column !important;
        gap: 10px !important;
    }

    .download-links a,
    .download-links button {
        width: 100% !important;
    }
}

/* ============================================
   FIX PARA ELEMENTOS QUE SE SALEN
   ============================================ */

@media (max-width: 768px) {
    /* Prevenir overflow horizontal */
    body {
        overflow-x: hidden !important;
    }

    * {
        max-width: 100% !important;
        word-wrap: break-word !important;
        overflow-wrap: break-word !important;
    }

    /* Tablas responsivas */
    table {
        display: block !important;
        overflow-x: auto !important;
        white-space: nowrap !important;
    }

    /* Imágenes */
    img {
        max-width: 100% !important;
        height: auto !important;
    }

    /* Pre y code blocks */
    pre,
    code {
        max-width: 100% !important;
        overflow-x: auto !important;
        white-space: pre-wrap !important;
        word-break: break-all !important;
    }
}

