/* ============================================================================
   ARCHIVO: app.css
   ============================================================================
   HOJA DE ESTILOS PRINCIPAL DEL SISTEMA CONSULAR - VERSIÓN REFACTORIZADA 3.0.4
   
   CAMBIOS EN VERSIÓN 3.0.4:
   - ARREGLADO: Título del header en 3 líneas en vez de 2
   - SOLUCIÓN: Reducido font-size a 1.3rem, ajustado line-height
   - MANTENIDO: Estilos originales de facturacion.css para el header
   - OBJETIVO: "Sistema Administrativo" en línea 1, "Sección Consular" en línea 2
   
   ESTRUCTURA REFACTORIZADA:
   1. Variables CSS (Custom Properties) - CONSOLIDADAS
   2. Reset y normalización
   3. Layout principal y contenedores - ESTILOS ORIGINALES RESTAURADOS
   4. Componentes reutilizables - FORMULARIOS, BOTONES, TABLAS
   5. Utilidades y helpers
   6. Media queries responsive
   
   @version 3.0.4
   @last_modified 2026-02-11
   @author Sistema Consular - Refactorización CSS
   ============================================================================ */

/* ============================================================================
   1. VARIABLES CSS (CUSTOM PROPERTIES) - CONSOLIDADAS
   ============================================================================ */
:root {
    /* ------------------------------------------------------------------------
       PALETA DE COLORES OFICIAL (Consulado) - CONSOLIDADA
       ------------------------------------------------------------------------ */
    --color-primary: #003366;           /* Azul institucional principal */
    --color-primary-light: #1e4d8c;     /* Variante clara */
    --color-primary-dark: #002244;      /* Variante oscura */
    
    --color-secondary: #0066cc;         /* Azul secundario (de facturacion.css) */
    --color-secondary-light: #3385ff;   /* Variante clara */
    --color-secondary-dark: #0052a3;    /* Variante oscura */
    
    --color-accent: #10b981;            /* Verde de confirmación/éxito */
    --color-accent-light: #34d399;      /* Variante clara */
    --color-accent-dark: #059669;       /* Variante oscura */
    
    --color-danger: #dc2626;            /* Rojo para errores/eliminar */
    --color-danger-light: #f87171;      /* Variante clara */
    --color-danger-dark: #b91c1c;       /* Variante oscura */
    
    --color-warning: #f59e0b;           /* Amarillo advertencia */
    --color-warning-light: #fbbf24;     /* Variante clara */
    --color-warning-dark: #d97706;      /* Variante oscura */
    
    --color-info: #3b82f6;              /* Azul informativo */
    --color-info-light: #60a5fa;        /* Variante clara */
    --color-info-dark: #2563eb;         /* Variante oscura */
    
    /* ------------------------------------------------------------------------
       ESCALA DE GRISES (sistema)
       ------------------------------------------------------------------------ */
    --color-gray-50: #f8fafc;
    --color-gray-100: #f1f5f9;
    --color-gray-200: #e2e8f0;
    --color-gray-300: #cbd5e1;
    --color-gray-400: #94a3b8;
    --color-gray-500: #64748b;
    --color-gray-600: #475569;
    --color-gray-700: #334155;
    --color-gray-800: #1e293b;
    --color-gray-900: #0f172a;
    
    /* ------------------------------------------------------------------------
       COLORES SEMÁNTICOS (uso específico)
       ------------------------------------------------------------------------ */
    --color-background: var(--color-gray-50);
    --color-surface: #ffffff;
    --color-text: var(--color-gray-800);
    --color-text-muted: var(--color-gray-600);
    --color-border: var(--color-gray-300);
    
    /* ------------------------------------------------------------------------
       TIPOGRAFÍA
       ------------------------------------------------------------------------ */
    --font-family-sans: 'Segoe UI', 'Inter', -apple-system, BlinkMacSystemFont, 
                       'Roboto', 'Helvetica Neue', Arial, sans-serif;
    --font-family-mono: 'Courier New', Courier, 'SFMono-Regular', Menlo, Monaco, 
                       Consolas, monospace;
    
    /* ------------------------------------------------------------------------
       ESPACIADO (escala 8px)
       ------------------------------------------------------------------------ */
    --space-1: 0.25rem;   /* 4px */
    --space-2: 0.5rem;    /* 8px */
    --space-3: 0.75rem;   /* 12px */
    --space-4: 1rem;      /* 16px */
    --space-5: 1.25rem;   /* 20px */
    --space-6: 1.5rem;    /* 24px */
    --space-8: 2rem;      /* 32px */
    --space-10: 2.5rem;   /* 40px */
    --space-12: 3rem;     /* 48px */
    --space-16: 4rem;     /* 64px */
    
    /* ------------------------------------------------------------------------
       SOMBRAS (elevación)
       ------------------------------------------------------------------------ */
    --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 
                 0 2px 4px -1px rgba(0, 0, 0, 0.06);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 
                 0 4px 6px -2px rgba(0, 0, 0, 0.05);
    --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 
                 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    
    /* ------------------------------------------------------------------------
       BORDES
       ------------------------------------------------------------------------ */
    --radius-sm: 0.25rem;   /* 4px */
    --radius-md: 0.375rem;  /* 6px */
    --radius-lg: 0.5rem;    /* 8px */
    --radius-xl: 0.75rem;   /* 12px */
    --radius-full: 9999px;
    
    /* ------------------------------------------------------------------------
       TRANSICIONES
       ------------------------------------------------------------------------ */
    --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
    --transition-base: 250ms cubic-bezier(0.4, 0, 0.2, 1);
    --transition-slow: 350ms cubic-bezier(0.4, 0, 0.2, 1);
    
    /* ------------------------------------------------------------------------
       Z-INDEX (sistema de capas)
       ------------------------------------------------------------------------ */
    --z-dropdown: 1000;
    --z-sticky: 1020;
    --z-fixed: 1030;
    --z-modal-backdrop: 1040;
    --z-modal: 1050;
    --z-popover: 1060;
    --z-tooltip: 1070;
    --z-notification: 1080;
}

/* ============================================================================
   2. RESET Y NORMALIZACIÓN
   ============================================================================ */
*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    font-size: 16px;
    line-height: 1.5;
    -webkit-text-size-adjust: 100%;
    -moz-text-size-adjust: 100%;
    text-size-adjust: 100%;
    scroll-behavior: smooth;
}

body {
    font-family: var(--font-family-sans);
    background-color: var(--color-background);
    color: var(--color-text);
    min-height: 100vh;
    overflow-x: hidden;
    display: flex;
    flex-direction: column;
}

/* Mejora de accesibilidad para enfoque */
:focus-visible {
    outline: 3px solid var(--color-primary);
    outline-offset: 2px;
}

/* Ocultar contenido visualmente pero mantenerlo accesible */
.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* ============================================================================
   3. LAYOUT PRINCIPAL Y CONTENEDORES - ESTILOS ORIGINALES RESTAURADOS
   ============================================================================ */

/* ----------------------------------------------------------------------------
   CABECERA PRINCIPAL (.main-header) - ESTILOS ORIGINALES DE FACTURACION.CSS
   ---------------------------------------------------------------------------- */
.main-header {
    background: white; /* EXACTO como en facturacion.css original */
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); /* EXACTO como en facturacion.css */
    border-bottom: 3px solid var(--color-primary); /* EXACTO como en facturacion.css */
    position: relative;
    z-index: var(--z-sticky);
}

.header-content {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem 1rem; /* EXACTO como en facturacion.css original */
    max-width: none;
    margin: 0 auto;
    width: 100%;
}

.logo-img {
    max-height: 75px;
    height: auto;
    width: auto;
    max-width: 100%;
    object-fit: contain;
}

/* Logo del Ministerio + texto institucional de la sede (a la derecha del logo) */
.header-brand {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    flex: none;
}

.logo-img.logo-ministerio {
    width: 230px;
    max-width: 100%;
    max-height: none;
    height: auto;
}

.header-institucion {
    max-width: 190px;
    font-size: 0.72rem;
    font-weight: 700;
    line-height: 1.35;
    color: var(--color-primary);
    text-align: justify;
    text-align-last: left;
}

/* Pantallas angostas: logo arriba y texto de la sede centrado debajo */
@media (max-width: 768px) {
    .header-brand {
        flex-direction: column;
        gap: 0.4rem;
    }

    .logo-img.logo-ministerio {
        width: min(260px, 80%);
    }

    .header-institucion {
        max-width: none;
        font-size: 0.78rem;
        text-align: center;
        text-align-last: center;
    }
}

.nav-titles {
    flex: 1;
    min-width: 200px;
    padding: 0 var(--space-6);
}

/* TÍTULO PRINCIPAL - ARREGLADO PARA 3 LÍNEAS */
.nav-main-title {
    display: block;
    font-size: 1.3rem; /* REDUCIDO para que quepa en 3 líneas */
    font-weight: 800; /* ORIGINAL */
    color: var(--color-primary); /* ORIGINAL */
    text-transform: uppercase; /* ORIGINAL */
    line-height: 1.1; /* Ajustado para ser más compacto */
    letter-spacing: -0.01em; /* Reducido para que quepa mejor */
    margin: 0;
}

.nav-main-title br {
    display: block;
    content: "";
    margin-bottom: 0.1rem; /* Espacio mínimo entre líneas */
}

/* SUBTÍTULO/MÓDULO - ESTILOS ORIGINALES */
.nav-location {
    display: block;
    font-size: 1.1rem; /* ORIGINAL */
    color: var(--color-gray-600); /* ORIGINAL (gris) */
    font-weight: 600; /* ORIGINAL */
    margin-top: var(--space-1); /* ORIGINAL */
}

/* ----------------------------------------------------------------------------
   SECCIÓN DE USUARIO Y NAVEGACIÓN - USADA POR HEADER.TWIG
   ---------------------------------------------------------------------------- */
.header-user-section {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: var(--space-2);
    min-width: 300px;
}

/* Navegación principal limpia (usada por header.twig) */
.clean-nav {
    background: var(--color-surface);
    border-bottom: 2px solid var(--color-primary);
}

.nav-list {
    display: flex;
    list-style: none;
    margin: 0;
    padding: 0;
}

.nav-item { 
    flex: 1; 
    text-align: center; 
}

.nav-link-clean {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-4);
    color: var(--color-primary);
    font-size: 0.95rem;
    font-weight: 600;
    text-decoration: none;
    transition: all var(--transition-base);
    border-radius: var(--radius-md);
    margin: 0 var(--space-1);
}

.nav-link-clean:hover,
.nav-link-clean[aria-current="page"] {
    background: rgba(0, 51, 102, 0.05);
    color: var(--color-secondary);
    text-decoration: none;
}

.nav-link-clean:active {
    transform: translateY(1px);
}

.nav-icon { 
    font-size: 1.1rem; 
}

.nav-text { 
    display: inline-block; 
}

/* Información del usuario */
.user-info-container {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    flex-wrap: wrap;
    justify-content: flex-end;
}

.user-badge-clean {
    background: var(--color-primary);
    color: var(--color-surface);
    padding: var(--space-2) var(--space-4);
    border-radius: var(--radius-full);
    display: flex;
    align-items: center;
    gap: var(--space-2);
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}

.cajero-label {
    font-size: 0.6rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.cajero-name {
    font-size: 0.75rem;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* Botón de salir */
.btn-logout {
    background: var(--color-gray-700);
    color: var(--color-surface);
    padding: var(--space-2) var(--space-4);
    border-radius: var(--radius-md);
    text-decoration: none;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    transition: all var(--transition-fast);
    white-space: nowrap;
    letter-spacing: 0.05em;
    border: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
}

.btn-logout:hover,
.btn-logout:focus {
    background: var(--color-gray-900);
    text-decoration: none;
}

.btn-logout:active {
    transform: translateY(1px);
}

/* ----------------------------------------------------------------------------
   ESTADÍSTICAS DEL DÍA
   ---------------------------------------------------------------------------- */
.header-stats-sub {
    display: flex;
    gap: var(--space-2);
    font-size: 0.65rem;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--color-gray-600);
    align-items: center;
    letter-spacing: 0.05em;
}

.stat-item {
    display: flex;
    gap: var(--space-1);
    align-items: center;
}

.stat-label {
    color: var(--color-gray-600);
}

.stat-value {
    color: var(--color-primary);
    font-weight: 900;
}

.stat-value.amount {
    color: var(--color-accent);
}

.stat-separator {
    color: var(--color-gray-300);
    user-select: none;
}

/* ----------------------------------------------------------------------------
   CONTENEDOR PRINCIPAL Y CONTENIDO
   ---------------------------------------------------------------------------- */
.main-content {
    flex: 1;
    padding: var(--space-6) var(--space-8);
    max-width: 1400px;
    margin: 0 auto;
    width: 100%;
}

.container {
    max-width: 1200px;
    margin: 0 auto;
    padding: var(--space-6) var(--space-4);
    width: 100%;
}

/* ----------------------------------------------------------------------------
   FOOTER PRINCIPAL - USADO POR FOOTER.TWIG
   ---------------------------------------------------------------------------- */
.main-footer {
    background: var(--color-primary);
    color: var(--color-surface);
    padding: var(--space-4) var(--space-8);
    margin-top: auto;
    text-align: center;
}

.footer-content {
    max-width: 1200px;
    margin: 0 auto;
}

.footer-info {
    margin: var(--space-2) 0;
    font-size: 0.9rem;
    opacity: 0.9;
}

.footer-info strong {
    color: #93c5fd;
}

/* ============================================================================
   4. COMPONENTES REUTILIZABLES - UNIFICADOS DE FACTURACION.CSS
   ============================================================================ */

/* ----------------------------------------------------------------------------
   BLOQUES DE SECCIÓN (SECTION-BLOCK)
   ---------------------------------------------------------------------------- */
.section-block {
    background: var(--color-surface);
    border-radius: var(--radius-xl);
    padding: var(--space-6);
    margin-bottom: var(--space-6);
    border: 1px solid var(--color-gray-200);
    box-shadow: var(--shadow-sm);
    transition: box-shadow var(--transition-base);
}

.section-block:hover {
    box-shadow: var(--shadow-md);
}

.section-title {
    display: block;
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--color-primary);
    margin-bottom: var(--space-5);
    border-left: 5px solid var(--color-primary);
    padding-left: var(--space-4);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ----------------------------------------------------------------------------
   SISTEMA DE FORMULARIOS UNIFICADO
   ---------------------------------------------------------------------------- */
.form-grid {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: var(--space-6);
    padding: var(--space-6);
}

.form-group { 
    margin-bottom: var(--space-4); 
}

.form-label {
    display: block;
    margin-bottom: var(--space-2);
    font-weight: 600;
    color: var(--color-gray-700);
    font-size: 0.9rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.form-input,
.form-select {
    width: 100%;
    padding: var(--space-3) var(--space-5);
    border: 2px solid var(--color-border);
    border-radius: var(--radius-md);
    font-size: 1rem;
    transition: all var(--transition-base);
    background: var(--color-surface);
    color: var(--color-text);
    font-family: var(--font-family-sans);
}

.form-input:focus,
.form-select:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(0, 51, 102, 0.15);
}

.form-input::placeholder {
    color: var(--color-gray-400);
    opacity: 0.8;
}

.form-input:disabled,
.form-select:disabled {
    background: var(--color-gray-100);
    color: var(--color-gray-500);
    cursor: not-allowed;
    border-color: var(--color-gray-300);
}

/* ----------------------------------------------------------------------------
   SISTEMA DE BOTONES UNIFICADO
   ---------------------------------------------------------------------------- */
.btn {
    border: none;
    border-radius: var(--radius-md);
    cursor: pointer;
    transition: all var(--transition-base);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    font-family: var(--font-family-sans);
    font-weight: 600;
    text-decoration: none;
    text-align: center;
    white-space: nowrap;
}

.btn-primary {
    background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
    color: var(--color-surface);
    font-weight: 700;
}

.btn-primary:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 10px 20px rgba(0, 51, 102, 0.2);
    background: linear-gradient(135deg, var(--color-primary-dark), var(--color-secondary-dark));
}

.btn-primary:active:not(:disabled) {
    transform: translateY(0);
}

.btn-primary:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    transform: none !important;
    box-shadow: none !important;
}

/* Tamaños de botones */
.btn-large { 
    padding: var(--space-4) var(--space-8); 
    font-size: 1.1rem; 
}

.btn-medium { 
    padding: var(--space-3) var(--space-6); 
    font-size: 1rem; 
}

.btn-small { 
    padding: var(--space-2) var(--space-4); 
    font-size: 0.9rem; 
}

.btn-block { 
    width: 100%; 
    display: flex; 
}

/* Botones específicos heredados de facturacion.css */
.btn-search {
    background: linear-gradient(135deg, var(--color-primary), var(--color-secondary));
    color: var(--color-surface);
    font-weight: 700;
    border: none;
    border-radius: var(--radius-md);
    padding: var(--space-3) var(--space-8);
    font-size: 1.1rem;
    cursor: pointer;
    transition: all var(--transition-base);
    width: 100%;
}

.btn-search:hover:not(:disabled) {
    transform: translateY(-1px);
    box-shadow: 0 10px 20px rgba(0, 51, 102, 0.2);
}

/* ----------------------------------------------------------------------------
   TABLAS DE DATOS
   ---------------------------------------------------------------------------- */
.data-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: var(--space-4);
    background: var(--color-surface);
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
}

.data-table thead {
    background: var(--color-gray-50);
    border-bottom: 2px solid var(--color-gray-200);
}

.data-table th {
    padding: var(--space-3);
    text-align: left;
    font-size: 0.85rem;
    color: var(--color-gray-600);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-weight: 700;
    border-bottom: 2px solid var(--color-gray-200);
}

.data-table td {
    padding: var(--space-3);
    border-bottom: 1px solid var(--color-gray-100);
    font-size: 0.95rem;
    vertical-align: middle;
}

.data-table tr:last-child td {
    border-bottom: none;
}

.data-table tbody tr:hover {
    background: var(--color-gray-50);
}

.table-responsive {
    overflow-x: auto;
    border-radius: var(--radius-md);
    border: 1px solid var(--color-border);
}

/* ----------------------------------------------------------------------------
   ALERTAS Y MENSAJES - UNIFICADOS DE FACTURACION.CSS
   ---------------------------------------------------------------------------- */
.alert {
    padding: var(--space-4);
    border-radius: var(--radius-lg);
    margin-bottom: var(--space-4);
    border: 1px solid transparent;
    font-weight: 600;
    text-align: center;
    display: flex;
    align-items: center;
    gap: var(--space-3);
    animation: slideIn 0.3s ease-out;
}

.alert-success {
    background: rgba(220, 252, 231, 0.9);
    color: var(--color-accent-dark);
    border-color: rgba(187, 247, 208, 0.8);
    border-left: 6px solid var(--color-accent);
}

.alert-error {
    background: rgba(254, 226, 226, 0.9);
    color: var(--color-danger);
    border-color: rgba(254, 202, 202, 0.8);
    border-left: 6px solid var(--color-danger);
}

.alert-warning {
    background: rgba(254, 243, 199, 0.9);
    color: var(--color-warning-dark);
    border-color: rgba(253, 230, 138, 0.8);
    border-left: 6px solid var(--color-warning);
}

.alert-info {
    background: rgba(219, 234, 254, 0.9);
    color: var(--color-info-dark);
    border-color: rgba(191, 219, 254, 0.8);
    border-left: 6px solid var(--color-info);
}

@keyframes slideIn {
    from { 
        opacity: 0; 
        transform: translateY(-10px); 
    }
    to { 
        opacity: 1; 
        transform: translateY(0); 
    }
}

/* ----------------------------------------------------------------------------
   ESTADO VACÍO
   ---------------------------------------------------------------------------- */
.empty-state {
    padding: var(--space-12) var(--space-6);
    text-align: center;
    color: var(--color-gray-500);
    font-style: italic;
    border: 2px dashed var(--color-gray-300);
    border-radius: var(--radius-md);
    background: var(--color-gray-50);
    font-size: 1rem;
}

/* ----------------------------------------------------------------------------
   BADGES Y ETIQUETAS
   ---------------------------------------------------------------------------- */
.badge {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    padding: var(--space-1) var(--space-2);
    border-radius: var(--radius-sm);
    font-size: 0.75rem;
    font-weight: 600;
    border: 1px solid transparent;
}

.badge-encriptado {
    background: #fef3c7;
    color: var(--color-warning-dark);
    border-color: #fde68a;
}

.badge-desencriptado {
    background: #d1fae5;
    color: var(--color-accent);
    border-color: #a7f3d0;
}

/* ============================================================================
   5. UTILIDADES Y HELPERS
   ============================================================================ */
.text-right { text-align: right; }
.text-center { text-align: center; }
.text-left { text-align: left; }

.font-bold { font-weight: 700; }
.font-black { font-weight: 900; }

.mt-1 { margin-top: var(--space-1); }
.mt-2 { margin-top: var(--space-2); }
.mt-4 { margin-top: var(--space-4); }
.mt-6 { margin-top: var(--space-6); }

.mb-1 { margin-bottom: var(--space-1); }
.mb-2 { margin-bottom: var(--space-2); }
.mb-4 { margin-bottom: var(--space-4); }
.mb-6 { margin-bottom: var(--space-6); }

.w-full { width: 100%; }
.h-full { height: 100%; }

.flex { display: flex; }
.flex-col { flex-direction: column; }
.flex-row { flex-direction: row; }
.items-center { align-items: center; }
.items-start { align-items: flex-start; }
.items-end { align-items: flex-end; }
.justify-between { justify-content: space-between; }
.justify-center { justify-content: center; }
.justify-end { justify-content: flex-end; }
.gap-1 { gap: var(--space-1); }
.gap-2 { gap: var(--space-2); }
.gap-3 { gap: var(--space-3); }
.gap-4 { gap: var(--space-4); }
.gap-6 { gap: var(--space-6); }

.hidden { display: none; }
.block { display: block; }
.inline-block { display: inline-block; }

.text-sm { font-size: 0.875rem; }
.text-base { font-size: 1rem; }
.text-lg { font-size: 1.125rem; }
.text-xl { font-size: 1.25rem; }
.text-2xl { font-size: 1.5rem; }

.text-muted { color: var(--color-text-muted); }

.relative { position: relative; }
.absolute { position: absolute; }
.sticky { position: sticky; }

/* ============================================================================
   6. MEDIA QUERIES (RESPONSIVE) - CON AJUSTES PARA HEADER
   ============================================================================ */

/* ----------------------------------------------------------------------------
   TABLET (768px y superior)
   ---------------------------------------------------------------------------- */
@media (max-width: 1024px) {
    .header-content {
        padding: var(--space-4) var(--space-6);
        gap: var(--space-4);
        flex-direction: column;
        text-align: center;
    }
    
    .nav-titles {
        text-align: center;
        padding: var(--space-2) 0;
    }
    
    .nav-main-title {
        font-size: 1.1rem; /* Aún más pequeño en tablet */
        text-align: center;
    }
    
    .nav-location {
        font-size: 0.95rem; /* Ajustado proporcionalmente */
        text-align: center;
    }
    
    .header-user-section {
        min-width: auto;
        width: 100%;
        align-items: center;
    }
    
    .main-content {
        padding: var(--space-4) var(--space-6);
    }
    
    .form-grid {
        grid-template-columns: 1fr;
        gap: var(--space-4);
        padding: var(--space-4);
    }
    
    .footer-content {
        flex-direction: column;
        gap: var(--space-2);
        text-align: center;
    }
}

/* ----------------------------------------------------------------------------
   MÓVIL (hasta 767px)
   ---------------------------------------------------------------------------- */
@media (max-width: 767px) {
    .header-content {
        flex-direction: column;
        text-align: center;
        gap: var(--space-3);
        padding: var(--space-3);
    }
    
    .nav-titles {
        text-align: center;
        width: 100%;
        padding: 0;
    }
    
    .nav-main-title {
        font-size: 1rem; /* Ajustado para móvil */
        line-height: 1.1;
        text-align: center;
    }
    
    .nav-location {
        font-size: 0.85rem; /* Ajustado para móvil */
        text-align: center;
    }
    
    .header-user-section {
        margin-left: 0;
        align-items: center;
        width: 100%;
    }
    
    .nav-list {
        flex-direction: column;
        width: 100%;
    }
    
    .nav-item {
        width: 100%;
    }
    
    .nav-link-clean {
        justify-content: flex-start;
        padding: var(--space-3);
        margin: var(--space-1) 0;
    }
    
    .user-info-container {
        justify-content: center;
        flex-direction: column;
        gap: var(--space-2);
        width: 100%;
    }
    
    .main-content {
        padding: var(--space-4) var(--space-3);
    }
    
    .container {
        padding: var(--space-4) var(--space-3);
    }
    
    .section-block {
        padding: var(--space-4);
    }
    
    .form-grid {
        grid-template-columns: 1fr;
        padding: var(--space-3);
    }
    
    .btn-large {
        padding: var(--space-3) var(--space-4);
        font-size: 1rem;
    }
    
    .btn-search {
        padding: var(--space-3) var(--space-4);
        font-size: 1rem;
    }
    
    .data-table th,
    .data-table td {
        padding: var(--space-2);
        font-size: 0.85rem;
    }
}

/* ----------------------------------------------------------------------------
   IMPRESIÓN
   ---------------------------------------------------------------------------- */
@media print {
    .main-header,
    .btn-logout,
    .nav-link-clean,
    .main-footer,
    .no-print {
        display: none !important;
    }
    
    body {
        background: white;
        color: black;
        font-size: 12pt;
    }
    
    .container {
        max-width: none;
        padding: 0;
        margin: 0;
    }
    
    a {
        color: black !important;
        text-decoration: none !important;
    }
    
    .section-block {
        border: 1px solid #ccc;
        box-shadow: none;
        page-break-inside: avoid;
    }
}

/* ============================================================================
   7. ANIMACIONES
   ============================================================================ */
@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes pulse {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.7;
    }
}

@keyframes spin {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

.fade-in {
    animation: fadeIn 0.3s ease-in;
}

.pulse {
    animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

.spin {
    animation: spin 1s linear infinite;
}

/* ============================================================================
   8. ESTADOS ESPECIALES
   ============================================================================ */

/* JavaScript habilitado */
.js-enabled .no-js-only {
    display: none;
}

/* JavaScript deshabilitado */
.no-js .js-only {
    display: none;
}

/* Modo de alto contraste */
@media (prefers-contrast: high) {
    :root {
        --color-primary: #000080;
        --color-secondary: #0000cc;
        --color-accent: #006400;
        --color-danger: #8b0000;
    }
}

/* Modo de movimiento reducido */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    
    .fade-in,
    .pulse,
    .spin {
        animation: none !important;
    }
}