/* 
 * MEJORAS RESPONSIVE PARA FORMULARIOS
 * Optimización específica para dispositivos móviles manteniendo el diseño original
 */

/* Base responsive para todos los formularios */
@media screen and (max-width: 768px) {
    /* Contenedores de formulario */
    .form-container, .formulario-principal, #contenedor-principal {
        width: 95%;
        max-width: none;
        margin: 10px auto;
        padding: 20px 15px;
    }
    
    /* Tarjetas de formulario */
    .form-card, .tarjeta-formulario, .card {
        margin: 10px 0;
        padding: 20px 15px;
        border-radius: 12px;
        box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    }
    
    /* Títulos de formulario */
    .form-title, .titulo-formulario, h1, h2 {
        font-size: 1.5rem !important;
        margin-bottom: 15px;
        text-align: center;
        line-height: 1.3;
    }
    
    /* Subtítulos */
    .form-subtitle, .subtitulo-formulario, .descripcion-formulario {
        font-size: 0.9rem !important;
        margin-bottom: 20px;
        text-align: center;
        opacity: 0.8;
    }
    
    /* Grupos de campos */
    .form-row, .form-sections, .campos-formulario {
        display: flex;
        flex-direction: column;
        gap: 15px;
    }
    
    .form-group, .campo-formulario {
        margin-bottom: 15px;
        width: 100%;
    }
    
    /* Labels */
    .form-label, label {
        font-size: 0.9rem;
        font-weight: 600;
        margin-bottom: 6px;
        display: block;
        color: #495057;
    }
    
    /* Inputs */
    .form-control, input, select, textarea {
        width: 100%;
        padding: 12px 15px;
        font-size: 16px; /* Evita zoom en iOS */
        border: 2px solid #e9ecef;
        border-radius: 8px;
        background: white;
        transition: all 0.3s ease;
        -webkit-appearance: none;
        appearance: none;
    }
    
    /* Estados de input */
    .form-control:focus, input:focus, select:focus, textarea:focus {
        outline: none;
        border-color: var(--primary-color, #ffd700);
        box-shadow: 0 0 0 3px rgba(255, 215, 0, 0.1);
        transform: translateY(-1px);
    }
    
    .form-control:hover, input:hover, select:hover {
        border-color: #ced4da;
    }
    
    /* Select específico */
    select {
        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3e%3c/svg%3e");
        background-position: right 12px center;
        background-repeat: no-repeat;
        background-size: 16px;
        padding-right: 40px;
        cursor: pointer;
    }
    
    /* Textarea */
    textarea {
        min-height: 100px;
        resize: vertical;
    }
    
    /* Botones de formulario */
    .form-actions, .botones-formulario, .acciones-formulario {
        display: flex;
        flex-direction: column;
        gap: 10px;
        margin-top: 25px;
        padding-top: 20px;
        border-top: 1px solid #e9ecef;
    }
    
    .btn, .boton, button[type="submit"], button[type="button"] {
        width: 100%;
        padding: 14px 20px;
        font-size: 1rem;
        font-weight: 600;
        border: none;
        border-radius: 8px;
        cursor: pointer;
        transition: all 0.3s ease;
        min-height: 48px;
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
    }
    
    /* Botón primario */
    .btn-primary, .boton-principal {
        background: linear-gradient(135deg, #ffd700, #ffa500);
        color: #333;
        box-shadow: 0 4px 15px rgba(255, 215, 0, 0.3);
    }
    
    .btn-primary:hover, .boton-principal:hover {
        transform: translateY(-2px);
        box-shadow: 0 6px 20px rgba(255, 215, 0, 0.4);
    }
    
    /* Botón secundario */
    .btn-secondary, .boton-secundario {
        background: #f8f9fa;
        color: #6c757d;
        border: 2px solid #e9ecef;
    }
    
    .btn-secondary:hover, .boton-secundario:hover {
        background: #e9ecef;
        transform: translateY(-1px);
    }
    
    /* Enlaces de formulario */
    .form-links, .enlaces-formulario {
        text-align: center;
        margin-top: 20px;
    }
    
    .form-link, .enlace-formulario {
        color: var(--primary-color, #ffd700);
        text-decoration: none;
        font-weight: 500;
        padding: 10px;
        display: inline-block;
        min-height: 44px;
        line-height: 24px;
    }
    
    .form-link:hover, .enlace-formulario:hover {
        text-decoration: underline;
        opacity: 0.8;
    }
}

/* Móvil pequeño - Optimización máxima */
@media screen and (max-width: 480px) {
    .form-container, .formulario-principal, #contenedor-principal {
        width: 98%;
        margin: 5px auto;
        padding: 15px 10px;
    }
    
    .form-card, .tarjeta-formulario {
        padding: 15px 10px;
        margin: 5px 0;
    }
    
    .form-title, .titulo-formulario, h1, h2 {
        font-size: 1.3rem !important;
        margin-bottom: 10px;
    }
    
    .form-control, input, select, textarea {
        padding: 10px 12px;
        font-size: 16px;
    }
    
    .btn, .boton, button {
        padding: 12px 16px;
        font-size: 0.95rem;
        min-height: 44px;
    }
    
    .form-group, .campo-formulario {
        margin-bottom: 12px;
    }
}

/* Mejoras específicas para formularios de registro */
@media screen and (max-width: 768px) {
    .registro-form, .login-form {
        max-width: 100%;
    }
    
    .form-section {
        margin-bottom: 20px;
        padding: 15px;
        background: rgba(255, 255, 255, 0.05);
        border-radius: 8px;
    }
    
    .section-title {
        font-size: 1.1rem;
        margin-bottom: 15px;
        color: var(--primary-color, #ffd700);
        font-weight: 600;
    }
}

/* Mejoras específicas para formularios de filtros */
@media screen and (max-width: 768px) {
    .filter-form, .filtros-formulario {
        background: white;
        padding: 15px;
        border-radius: 8px;
        margin-bottom: 20px;
        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
    }
    
    .filter-row {
        display: flex;
        flex-direction: column;
        gap: 10px;
    }
    
    .filter-group {
        display: flex;
        flex-direction: column;
        gap: 5px;
    }
    
    .filter-buttons {
        display: flex;
        flex-direction: column;
        gap: 8px;
        margin-top: 15px;
    }
    
    .btn-filter {
        padding: 10px 15px;
        font-size: 0.9rem;
        min-height: 42px;
    }
}

/* Validación visual responsive */
@media screen and (max-width: 768px) {
    .form-control.is-valid, input.is-valid {
        border-color: #28a745;
        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%2328a745' viewBox='0 0 8 8'%3e%3cpath d='m2.3 6.73.94-.94 1.38 1.38 2.68-2.68.94.94-3.62 3.62-2.32-2.32z'/%3e%3c/svg%3e");
        background-repeat: no-repeat;
        background-position: right 12px center;
        background-size: 16px;
        padding-right: 40px;
    }
    
    .form-control.is-invalid, input.is-invalid {
        border-color: #dc3545;
        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='0 0 12 12'%3e%3cpath d='M6 0C2.7 0 0 2.7 0 6s2.7 6 6 6 6-2.7 6-6S9.3 0 6 0zM6 10c-2.2 0-4-1.8-4-4s1.8-4 4-4 4 1.8 4 4-1.8 4-4 4z'/%3e%3cpath d='M7.5 7.5L4.5 4.5m0 3l3-3'/%3e%3c/svg%3e");
        background-repeat: no-repeat;
        background-position: right 12px center;
        background-size: 16px;
        padding-right: 40px;
    }
    
    .invalid-feedback, .valid-feedback {
        display: block;
        font-size: 0.8rem;
        margin-top: 5px;
        padding-left: 5px;
    }
    
    .invalid-feedback {
        color: #dc3545;
    }
    
    .valid-feedback {
        color: #28a745;
    }
}

/* Mejoras para checkbox y radio buttons */
@media screen and (max-width: 768px) {
    .form-check, .checkbox-group, .radio-group {
        margin: 15px 0;
        padding: 10px;
        background: rgba(255, 255, 255, 0.5);
        border-radius: 8px;
    }
    
    .form-check-input, input[type="checkbox"], input[type="radio"] {
        width: 18px;
        height: 18px;
        margin-right: 10px;
        margin-top: 2px;
        cursor: pointer;
    }
    
    .form-check-label, .checkbox-label, .radio-label {
        font-size: 0.9rem;
        cursor: pointer;
        display: flex;
        align-items: flex-start;
        gap: 8px;
        line-height: 1.4;
        min-height: 44px;
        align-items: center;
    }
}

/* Mejoras para formularios en modal */
@media screen and (max-width: 768px) {
    .modal .form-container {
        width: 100%;
        margin: 0;
        padding: 0;
    }
    
    .modal .form-group {
        margin-bottom: 12px;
    }
    
    .modal .form-control {
        padding: 10px 12px;
    }
    
    .modal .form-actions {
        margin-top: 15px;
        padding-top: 15px;
    }
    
    .modal .btn {
        padding: 10px 15px;
        font-size: 0.9rem;
    }
}

/* Loading states para formularios */
@media screen and (max-width: 768px) {
    .form-loading {
        position: relative;
        opacity: 0.7;
        pointer-events: none;
    }
    
    .form-loading::after {
        content: '';
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%);
        width: 20px;
        height: 20px;
        border: 2px solid #f3f3f3;
        border-top: 2px solid var(--primary-color, #ffd700);
        border-radius: 50%;
        animation: spin 1s linear infinite;
    }
    
    @keyframes spin {
        0% { transform: translate(-50%, -50%) rotate(0deg); }
        100% { transform: translate(-50%, -50%) rotate(360deg); }
    }
}

/* Mejoras de accesibilidad */
@media (hover: none) and (pointer: coarse) {
    .form-control:focus, input:focus, select:focus, textarea:focus {
        transform: none; /* Evita saltos en touch */
    }
    
    .btn:active, button:active {
        transform: scale(0.98);
    }
    
    .form-check-label, .checkbox-label, .radio-label {
        min-height: 48px; /* Target táctil más grande */
    }
}

/* Fix específico para Safari iOS */
@supports (-webkit-touch-callout: none) {
    .form-control, input, select, textarea {
        font-size: 16px !important; /* Evita zoom automático */
    }
}

/* Estilos específicos para perfil de usuario responsive */
@media screen and (max-width: 768px) {
    /* Layout del perfil en móvil */
    .main-flex {
        flex-direction: column !important;
        gap: 20px !important;
        padding: 15px !important;
    }
    
    .profile-section,
    .payments-section {
        flex: none !important;
        width: 100% !important;
        min-width: auto !important;
    }
    
    /* Equilibrar altura de secciones */
    .profile-section {
        margin-bottom: 20px;
    }
    
    .payments-section {
        margin-top: 0;
    }
    
    /* Cards del perfil más compactas */
    .profile-card,
    .profile-contact-info {
        padding: 20px;
        margin-bottom: 15px;
        border-radius: 12px;
        box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    }
    
    /* Avatar más pequeño en móvil */
    .avatar {
        width: 80px !important;
        height: 80px !important;
    }
    
    .avatar img {
        width: 100% !important;
        height: 100% !important;
    }
    
    /* Estadísticas de cuotas en columnas */
    .stats-container {
        display: grid !important;
        grid-template-columns: 1fr 1fr !important;
        gap: 10px !important;
        margin-bottom: 20px;
    }
    
    .stat-card {
        padding: 15px 10px !important;
        text-align: center;
        border-radius: 8px;
    }
    
    .stat-number {
        font-size: 1.2rem !important;
    }
    
    .stat-label {
        font-size: 0.8rem !important;
    }
    
    /* Header responsive */
    .header {
        padding: 15px !important;
        flex-direction: column;
        gap: 15px;
        text-align: center;
    }
    
    .header-buttons {
        flex-direction: column;
        gap: 10px;
        width: 100%;
    }
    
    .back-btn,
    .edit-btn {
        width: 100% !important;
        padding: 12px !important;
        min-height: 44px;
    }
}
