/* =====================================================================
   ers_estilos.css - Hoja de estilos única de la web ERS
   (reglas duplicadas eliminadas; se conserva la última aparición,
    que era la que aplicaba el navegador)
   ===================================================================== */

/* === SISTEMA DE GESTIÓN DE EVENTOS - DISEÑO PROFESIONAL === */

:root {
    /* Colores principales */
    --primary-700: #1e40af;
    --primary-600: #2563eb;
    --primary-500: #3b82f6;
    --primary-400: #60a5fa;
    --primary-300: #93c5fd;
    --primary-200: #bfdbfe;
    --primary-100: #dbeafe;
    --primary-50: #eff6ff;
    
    /* Colores secundarios */
    --success-600: #059669;
    --success-500: #10b981;
    --error-600: #dc2626;
    --error-500: #ef4444;
    --warning-600: #d97706;
    --warning-500: #f59e0b;
    
    /* Grises */
    --gray-900: #111827;
    --gray-800: #1f2937;
    --gray-700: #374151;
    --gray-600: #4b5563;
    --gray-500: #6b7280;
    --gray-400: #9ca3af;
    --gray-300: #d1d5db;
    --gray-200: #e5e7eb;
    --gray-100: #f3f4f6;
    --gray-50: #f9fafb;
    
    /* Espaciado */
    --spacing-xs: 0.25rem;
    --spacing-sm: 0.5rem;
    --spacing-md: 1rem;
    --spacing-lg: 1.5rem;
    --spacing-xl: 2rem;
    --spacing-2xl: 3rem;
    
    /* Sombras */
    --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);
    
    /* Border radius */
    --radius-sm: 0.375rem;
    --radius-md: 0.5rem;
    --radius-lg: 0.75rem;
    --radius-xl: 1rem;
    
    /* Transiciones */
    --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
    --transition-base: 200ms cubic-bezier(0.4, 0, 0.2, 1);
    --transition-slow: 300ms cubic-bezier(0.4, 0, 0.2, 1);
}


/* === Reset y Base === */

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
    background: linear-gradient(to bottom right, var(--gray-50), var(--primary-50));
    color: var(--gray-900);
    line-height: 1.6;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}


/* === Header Profesional === */

header {
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-600) 100%);
    color: white;
    padding: var(--spacing-lg) var(--spacing-2xl);
    box-shadow: var(--shadow-lg);
    display: flex;
    align-items: center;
    gap: var(--spacing-lg);
    border-bottom: 3px solid var(--primary-500);
    position: sticky;
    top: 0;
    z-index: 1000;
    backdrop-filter: blur(10px);
}

.logo {
    height: 65px;
    width: auto;
    background: white;
    padding: var(--spacing-sm);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-md);
    transition: transform var(--transition-base);
}

.logo:hover {
    transform: scale(1.05);
}

.header-text h1 {
    font-size: 1.875rem;
    font-weight: 700;
    margin-bottom: var(--spacing-xs);
    letter-spacing: -0.025em;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.header-text h2 {
    font-size: 0.938rem;
    opacity: 0.95;
    font-weight: 500;
    letter-spacing: 0.025em;
}


/* === Main Content === */

main {
    flex: 1;
    max-width: 1400px;
    width: 100%;
    margin: var(--spacing-2xl) auto;
    padding: 0 var(--spacing-2xl);
}


/* === Breadcrumb / Botón Volver === */

.breadcrumb-link {
    text-decoration: none;
    margin-bottom: var(--spacing-lg);
    display: inline-block;
}

.breadcrumb-box {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-sm);
    background: white;
    color: var(--primary-700);
    padding: var(--spacing-sm) var(--spacing-md);
    border-radius: var(--radius-md);
    font-weight: 600;
    font-size: 0.875rem;
    box-shadow: var(--shadow-sm);
    border: 1px solid var(--gray-200);
    transition: all var(--transition-base);
    cursor: pointer;
}

.breadcrumb-box:hover {
    background: var(--primary-50);
    border-color: var(--primary-300);
    transform: translateX(-4px);
    box-shadow: var(--shadow-md);
}


/* === Mensajes === */

.success, .error, .info, .warning {
    padding: var(--spacing-md) var(--spacing-lg);
    border-radius: var(--radius-lg);
    margin-bottom: var(--spacing-lg);
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: var(--spacing-md);
    box-shadow: var(--shadow-sm);
    animation: slideIn 0.3s ease-out;
}

@keyframes slideIn {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.success {
    background: linear-gradient(135deg, #d1fae5 0%, #a7f3d0 100%);
    color: #065f46;
    border-left: 4px solid var(--success-500);
}

.error {
    background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);
    color: #991b1b;
    border-left: 4px solid var(--error-600);
}

.info {
    background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
    color: #1e3a8a;
    border-left: 4px solid var(--primary-500);
}

.warning {
    background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
    color: #92400e;
    border-left: 4px solid var(--warning-500);
}


/* === Cards / Recuadros === */

.recuadro-independiente {
    background: white;
    border-radius: var(--radius-xl);
    padding: var(--spacing-2xl);
    margin-bottom: var(--spacing-xl);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--gray-200);
    transition: box-shadow var(--transition-base);
}

.recuadro-independiente:hover {
    box-shadow: var(--shadow-lg);
}

.evento-detalle h3,
.agentes-detalle h3 {
    color: var(--primary-700);
    font-size: 1.5rem;
    font-weight: 700;
    margin-bottom: var(--spacing-lg);
    padding-bottom: var(--spacing-md);
    border-bottom: 3px solid var(--primary-200);
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
}


/* === Tablas Profesionales === */

table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    margin-top: var(--spacing-lg);
    background: white;
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-md);
    border: 1px solid var(--gray-200);
}

table th {
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-600) 100%);
    color: white;
    padding: var(--spacing-md);
    text-align: left;
    font-weight: 600;
    font-size: 0.813rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    white-space: nowrap;
}

table td {
    padding: var(--spacing-md);
    border-bottom: 1px solid var(--gray-200);
    font-size: 0.938rem;
    color: var(--gray-700);
}

table tbody tr {
    transition: all var(--transition-fast);
}

table tbody tr:hover {
    background: var(--primary-50);
    transform: scale(1.01);
    box-shadow: 0 2px 8px rgba(30, 64, 175, 0.1);
}

table tbody tr:last-child td {
    border-bottom: none;
}


/* === Badge / Etiquetas === */

.badge-status {
    display: inline-block;
    padding: var(--spacing-xs) var(--spacing-md);
    background: linear-gradient(135deg, #fef3c7 0%, #fde68a 100%);
    color: #92400e;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    box-shadow: var(--shadow-sm);
    border: 1px solid #fcd34d;
}


/* === Botones Profesionales === */

.action-buttons {
    display: flex;
    gap: var(--spacing-md);
    justify-content: center;
    margin-top: var(--spacing-xl);
    padding-top: var(--spacing-xl);
    border-top: 2px solid var(--gray-200);
}

.action-buttons-inline {
    display: flex;
    gap: var(--spacing-sm);
    justify-content: center;
}

.action-buttons-vertical {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-sm);
    width: 100%;
}

.btn-approve,
.btn-deny,
.btn-consultar,
.btn-login {
    padding: 0.75rem 1.5rem;
    border: none;
    border-radius: var(--radius-lg);
    font-size: 0.938rem;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--transition-base);
    box-shadow: var(--shadow-md);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    position: relative;
    overflow: hidden;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-sm);
}

.btn-approve {
    background: linear-gradient(135deg, var(--success-600) 0%, var(--success-500) 100%);
    color: white;
}

.btn-approve:hover {
    background: linear-gradient(135deg, #047857 0%, var(--success-600) 100%);
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}

.btn-deny {
    background: linear-gradient(135deg, var(--error-600) 0%, var(--error-500) 100%);
    color: white;
}

.btn-deny:hover {
    background: linear-gradient(135deg, #b91c1c 0%, var(--error-600) 100%);
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}

.btn-consultar {
    background: linear-gradient(135deg, var(--primary-600) 0%, var(--primary-500) 100%);
    color: white;
    padding: 0.5rem 1rem;
    font-size: 0.813rem;
}

.btn-consultar:hover {
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-600) 100%);
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}

.btn-small {
    padding: 0.5rem 1rem;
    font-size: 0.813rem;
}


/* === Botón de Subida de Documentación === */

.btn-upload-doc {
    padding: 0.875rem 1.75rem;
    border: 2px solid var(--primary-600);
    background: linear-gradient(135deg, var(--primary-600) 0%, var(--primary-500) 100%);
    color: white;
    border-radius: var(--radius-lg);
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--transition-base);
    box-shadow: var(--shadow-md);
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-sm);
    margin-bottom: var(--spacing-md);
}

.btn-upload-doc:hover {
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-600) 100%);
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}

.btn-upload-doc.btn-active {
    background: linear-gradient(135deg, var(--gray-600) 0%, var(--gray-500) 100%);
    border-color: var(--gray-600);
}

.btn-upload-doc.btn-active:hover {
    background: linear-gradient(135deg, var(--gray-700) 0%, var(--gray-600) 100%);
}


/* === Formulario de Upload === */

.form-group label {
    display: block;
    margin-bottom: var(--spacing-sm);
    font-weight: 600;
    color: var(--gray-700);
    font-size: 0.938rem;
}


/* === Fin Botones === */

.btn-approve:active,
.btn-deny:active,
.btn-consultar:active {
    transform: translateY(0);
}


/* === Login Page === */

.body-login {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-500) 100%);
    position: relative;
    overflow: hidden;
}

.body-login::before {
    content: '';
    position: absolute;
    width: 200%;
    height: 200%;
    background: radial-gradient(circle, rgba(255,255,255,0.1) 1px, transparent 1px);
    background-size: 50px 50px;
    animation: moveBackground 20s linear infinite;
}

@keyframes moveBackground {
    0% { transform: translate(0, 0); }
    100% { transform: translate(50px, 50px); }
}

.login-container {
    background: white;
    padding: var(--spacing-2xl);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-xl);
    width: 100%;
    max-width: 420px;
    text-align: center;
    position: relative;
    z-index: 1;
    animation: fadeInUp 0.5s ease-out;
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.login-container .logo {
    height: 180px;
    width: auto;
    margin-bottom: var(--spacing-2xl);
    background: transparent;
    box-shadow: none;
    object-fit: contain;
}

.login-container h1 {
    color: var(--primary-700);
    margin-bottom: var(--spacing-xl);
    font-size: 2rem;
    font-weight: 700;
    display: none; /* Ocultar el título */
}

.form-group {
    margin-bottom: var(--spacing-lg);
    text-align: left;
}

.form-group label {
    display: block;
    margin-bottom: var(--spacing-sm);
    font-weight: 600;
    color: var(--gray-700);
    font-size: 0.875rem;
}

.form-group input {
    width: 100%;
    padding: 0.75rem 1rem;
    border: 2px solid var(--gray-300);
    border-radius: var(--radius-lg);
    font-size: 1rem;
    transition: all var(--transition-base);
    background: var(--gray-50);
}

.form-group input:focus {
    outline: none;
    border-color: var(--primary-500);
    background: white;
    box-shadow: 0 0 0 3px var(--primary-100);
}


/* === Checkbox Recordarme === */

.form-group-checkbox {
    margin-bottom: var(--spacing-lg);
    text-align: left;
    padding-left: 4px;
}

.checkbox-label {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-sm);
    cursor: pointer;
    font-size: 0.875rem;
    color: var(--gray-600);
    font-weight: 500;
    user-select: none;
}

.checkbox-label input[type="checkbox"] {
    width: 18px;
    height: 18px;
    cursor: pointer;
    accent-color: var(--primary-600);
    border-radius: var(--radius-sm);
}

.checkbox-label:hover {
    color: var(--primary-700);
}

.checkbox-label:hover input[type="checkbox"] {
    transform: scale(1.05);
}


/* === Botones de Login === */

.btn-login {
    width: 100%;
    padding: 0.875rem;
    border: none;
    border-radius: var(--radius-lg);
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--transition-base);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    background: linear-gradient(135deg, var(--success-600) 0%, var(--success-500) 100%);
    color: white;
    box-shadow: var(--shadow-md);
}

.btn-login:hover {
    background: linear-gradient(135deg, #047857 0%, var(--success-600) 100%);
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}

.error-login {
    background: linear-gradient(135deg, #fee2e2 0%, #fecaca 100%);
    color: #991b1b;
    padding: var(--spacing-md);
    border-radius: var(--radius-lg);
    border-left: 4px solid var(--error-600);
    margin-top: var(--spacing-lg);
    font-weight: 500;
    text-align: left;
    font-size: 0.875rem;
}


/* === Menú Principal === */

.menu-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: var(--spacing-lg);
    margin-top: var(--spacing-xl);
}

.menu-item {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-2xl) var(--spacing-xl);
    background: white;
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-md);
    border: 2px solid var(--gray-200);
    text-decoration: none;
    color: var(--primary-700);
    font-size: 1.25rem;
    font-weight: 700;
    transition: all var(--transition-base);
    text-align: center;
    min-height: 140px;
}

.menu-item:hover {
    transform: translateY(-5px);
    box-shadow: var(--shadow-xl);
    background: linear-gradient(135deg, white 0%, var(--primary-50) 100%);
    border-color: var(--primary-500);
}

.menu-item.logout {
    color: var(--error-600);
    border-color: #fecaca;
}

.menu-item.logout:hover {
    background: linear-gradient(135deg, white 0%, #fef2f2 100%);
    border-color: var(--error-500);
}


/* === Detalles de Evento === */

.detalle-evento-dl {
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: var(--spacing-md) var(--spacing-xl);
    margin-top: var(--spacing-lg);
}

.detalle-evento-dl dt {
    font-weight: 600;
    color: var(--gray-700);
    text-align: right;
    font-size: 0.938rem;
}

.detalle-evento-dl dd {
    font-weight: 500;
    color: var(--gray-900);
    font-size: 0.938rem;
}


/* === Grupos Jerárquicos con Acordeón === */

.group-header {
    padding: var(--spacing-md) var(--spacing-lg);
    margin-top: var(--spacing-lg);
    margin-bottom: 0;
    border-radius: var(--radius-lg) var(--radius-lg) 0 0;
    font-weight: 700;
    color: white;
    box-shadow: var(--shadow-md);
}

.group-header-unidad {
    background: linear-gradient(135deg, var(--gray-700) 0%, var(--gray-800) 100%);
    font-size: 1.375rem;
    border-bottom: 3px solid var(--gray-900);
}

.toggle-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--spacing-md) var(--spacing-lg);
    margin-top: var(--spacing-md);
    margin-bottom: 0;
    border-radius: var(--radius-lg);
    font-weight: 700;
    color: white;
    box-shadow: var(--shadow-sm);
    cursor: pointer;
    transition: all var(--transition-base);
}

.toggle-header:hover {
    box-shadow: var(--shadow-md);
    transform: translateX(4px);
}

.group-header-region {
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-600) 100%);
    font-size: 1.25rem;
}

.group-header-plaza {
    background: linear-gradient(135deg, var(--primary-600) 0%, var(--primary-500) 100%);
    font-size: 1.125rem;
}

.group-header-responsable {
    background: linear-gradient(135deg, var(--primary-400) 0%, var(--primary-300) 100%);
    font-size: 1rem;
    color: var(--primary-900);
    border: 2px solid var(--primary-200);
}

.toggle-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    background: rgba(255, 255, 255, 0.25);
    border-radius: 50%;
    font-size: 1.5rem;
    font-weight: 700;
    color: white;
    transition: all var(--transition-base);
    backdrop-filter: blur(10px);
}

.toggle-header:hover .toggle-button {
    background: rgba(255, 255, 255, 0.35);
    transform: scale(1.1);
}

.toggle-content {
    display: none;
    border: 1px solid var(--gray-300);
    border-top: none;
    border-radius: 0 0 var(--radius-lg) var(--radius-lg);
    padding: var(--spacing-lg);
    background: var(--gray-50);
    animation: expandDown 0.3s ease-out;
}

@keyframes expandDown {
    from {
        opacity: 0;
        max-height: 0;
    }
    to {
        opacity: 1;
        max-height: 5000px;
    }
}

.group-container {
    border: 1px solid var(--gray-300);
    border-top: none;
    padding: var(--spacing-lg);
    background: var(--gray-50);
    border-radius: 0 0 var(--radius-lg) var(--radius-lg);
    margin-bottom: var(--spacing-lg);
}


/* === Footer === */

footer {
    background: var(--gray-800);
    color: white;
    text-align: center;
    padding: var(--spacing-xl);
    margin-top: auto;
    border-top: 4px solid var(--primary-600);
}

footer p {
    font-size: 0.875rem;
    opacity: 0.9;
}


/* === Responsive Design === */

@media (max-width: 768px) {
    header {
        flex-direction: column;
        text-align: center;
        padding: var(--spacing-lg) var(--spacing-md);
    }
    
    .logo {
        height: 55px;
    }
    
    .header-text h1 {
        font-size: 1.5rem;
    }
    
    .header-text h2 {
        font-size: 0.875rem;
    }
    
    main {
        padding: 0 var(--spacing-md);
        margin: var(--spacing-lg) auto;
    }
    
    .recuadro-independiente {
        padding: var(--spacing-lg);
    }
    
    table {
        font-size: 0.813rem;
        display: block;
        overflow-x: auto;
        white-space: nowrap;
    }
    
    table th,
    table td {
        padding: var(--spacing-sm) var(--spacing-md);
    }
    
    .action-buttons {
        flex-direction: column;
        gap: var(--spacing-sm);
    }
    
    .action-buttons-inline {
        flex-direction: column;
    }
    
    .btn-approve,
    .btn-deny,
    .btn-consultar {
        width: 100%;
    }
    
    .detalle-evento-dl {
        grid-template-columns: 1fr;
        gap: var(--spacing-xs);
    }
    
    .detalle-evento-dl dt {
        text-align: left;
        color: var(--primary-700);
        border-bottom: 1px solid var(--gray-200);
        padding-bottom: var(--spacing-xs);
        margin-top: var(--spacing-sm);
    }
    
    .detalle-evento-dl dd {
        margin-left: var(--spacing-sm);
    }
    
    .menu-container {
        grid-template-columns: 1fr;
    }
}


/* === Print Styles === */

@media print {
    body {
        background: white;
    }
    
    header,
    footer,
    .action-buttons,
    .action-buttons-inline,
    .breadcrumb-link {
        display: none;
    }
    
    .recuadro-independiente {
        box-shadow: none;
        border: 1px solid #ddd;
        page-break-inside: avoid;
    }
    
    .toggle-content {
        display: block !important;
    }
}

.filter-bar-costes {
    background: white;
    border-radius: var(--radius-xl);
    padding: var(--spacing-xl);
    margin-bottom: var(--spacing-xl);
    box-shadow: var(--shadow-lg);
    border: 1px solid var(--gray-200);
    display: flex;
    gap: var(--spacing-lg);
    align-items: flex-end;
    flex-wrap: wrap;
}

.filter-bar-costes .filter-group {
    display: flex;
    flex-direction: column;
    min-width: 180px;
}

.filter-bar-costes .filter-group label {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--gray-600);
    margin-bottom: var(--spacing-sm);
    letter-spacing: 0.5px;
}

.filter-bar-costes select {
    padding: 0.75rem 1rem;
    border: 2px solid var(--gray-300);
    border-radius: var(--radius-lg);
    font-size: 0.938rem;
    background: var(--gray-50);
    color: var(--gray-900);
    cursor: pointer;
    transition: all var(--transition-base);
    font-weight: 500;
}

.filter-bar-costes select:hover {
    border-color: var(--primary-400);
    background: white;
}

.filter-bar-costes select:focus {
    outline: none;
    border-color: var(--primary-500);
    background: white;
    box-shadow: 0 0 0 3px var(--primary-100);
}

.btn-filter-costes {
    background: linear-gradient(135deg, var(--primary-600) 0%, var(--primary-500) 100%);
    color: white;
    border: none;
    padding: 0.75rem 1.75rem;
    border-radius: var(--radius-lg);
    cursor: pointer;
    font-weight: 600;
    font-size: 0.938rem;
    transition: all var(--transition-base);
    box-shadow: var(--shadow-md);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.btn-filter-costes:hover {
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-600) 100%);
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}

.btn-excel-costes {
    background: linear-gradient(135deg, #047857 0%, var(--success-600) 100%);
    color: white;
    border: none;
    padding: 0.75rem 1.75rem;
    border-radius: var(--radius-lg);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.938rem;
    cursor: pointer;
    font-weight: 600;
    transition: all var(--transition-base);
    box-shadow: var(--shadow-md);
    gap: var(--spacing-sm);
}

.btn-excel-costes:hover {
    background: linear-gradient(135deg, #065f46 0%, #047857 100%);
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}


/* KPIs Dashboard */

.kpi-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: var(--spacing-lg);
    margin-bottom: var(--spacing-xl);
}

.kpi-card {
    background: white;
    border-radius: var(--radius-xl);
    padding: var(--spacing-xl);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--gray-200);
    display: flex;
    align-items: center;
    gap: var(--spacing-lg);
    transition: all var(--transition-base);
    position: relative;
    overflow: hidden;
}

.kpi-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 4px;
    height: 100%;
    background: linear-gradient(180deg, var(--primary-600) 0%, var(--primary-400) 100%);
}

.kpi-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-xl);
    border-color: var(--primary-300);
}

.kpi-icon {
    font-size: 2.5rem;
    opacity: 0.9;
    min-width: 60px;
    text-align: center;
}

.kpi-content {
    flex: 1;
}

.kpi-label {
    font-size: 0.75rem;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--gray-600);
    letter-spacing: 0.5px;
    margin-bottom: var(--spacing-xs);
}

.kpi-value {
    font-size: 1.875rem;
    font-weight: 700;
    color: var(--primary-700);
    line-height: 1.2;
}


/* Gráficos */

.charts-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
    gap: var(--spacing-xl);
    margin-bottom: var(--spacing-xl);
}

.chart-card {
    background: white;
    border-radius: var(--radius-xl);
    padding: var(--spacing-xl);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--gray-200);
}

.chart-card h3 {
    color: var(--primary-700);
    font-size: 1.125rem;
    font-weight: 700;
    margin-bottom: var(--spacing-lg);
    padding-bottom: var(--spacing-md);
    border-bottom: 2px solid var(--primary-200);
}

.chart-card-full {
    background: white;
    border-radius: var(--radius-xl);
    padding: var(--spacing-xl);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--gray-200);
    margin-bottom: var(--spacing-xl);
}

.chart-card-full h3 {
    color: var(--primary-700);
    font-size: 1.125rem;
    font-weight: 700;
    margin-bottom: var(--spacing-lg);
    padding-bottom: var(--spacing-md);
    border-bottom: 2px solid var(--primary-200);
}


/* Barra de Búsqueda */

.search-bar-costes {
    background: white;
    border-radius: var(--radius-xl);
    padding: var(--spacing-lg);
    margin-bottom: var(--spacing-lg);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--gray-200);
}

.search-bar-costes input {
    width: 100%;
    padding: 0.875rem 1.25rem;
    border: 2px solid var(--gray-300);
    border-radius: var(--radius-lg);
    font-size: 1rem;
    background: var(--gray-50);
    transition: all var(--transition-base);
    font-weight: 500;
}

.search-bar-costes input:focus {
    outline: none;
    border-color: var(--primary-500);
    background: white;
    box-shadow: 0 0 0 3px var(--primary-100);
}

.search-bar-costes input::placeholder {
    color: var(--gray-400);
}


/* Contenedor de Tabla */

.table-container-costes {
    background: white;
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-lg);
    border: 1px solid var(--gray-200);
    overflow: hidden;
    margin-bottom: var(--spacing-xl);
}


/* Tabla Profesional Ledger */

.ledger-table-costes {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.875rem;
}

.ledger-table-costes thead th {
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-600) 100%);
    color: white;
    padding: var(--spacing-md) var(--spacing-lg);
    text-align: left;
    font-weight: 700;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    white-space: nowrap;
    position: sticky;
    top: 0;
    z-index: 10;
}

.ledger-table-costes tbody td {
    padding: var(--spacing-md) var(--spacing-lg);
    border-bottom: 1px solid var(--gray-200);
    color: var(--gray-700);
    vertical-align: middle;
}

.ledger-table-costes tbody tr.data-row {
    transition: all var(--transition-fast);
}

.ledger-table-costes tbody tr.data-row:hover {
    background: var(--primary-50);
}

.ledger-table-costes tbody tr.subtotal-row {
    background: var(--gray-100);
    font-weight: 600;
}

.ledger-table-costes tbody tr.subtotal-row td {
    border-top: 2px solid var(--gray-300);
    border-bottom: 2px solid var(--gray-300);
}

.ledger-table-costes tbody tr.total-row {
    background: linear-gradient(135deg, var(--primary-100) 0%, var(--primary-50) 100%);
    font-weight: 700;
    font-size: 1rem;
}

.ledger-table-costes tbody tr.total-row td {
    border-top: 3px solid var(--primary-600);
    border-bottom: none;
    padding: var(--spacing-lg);
}


/* Columnas específicas */

.date-col {
    font-family: 'Consolas', 'Monaco', monospace;
    color: var(--gray-600);
    font-size: 0.813rem;
    white-space: nowrap;
}

.desc-col {
    font-weight: 600;
    color: var(--gray-900);
}

.meta-info {
    font-size: 0.813rem;
    color: var(--gray-500);
}


/* Badges */

.badge-cc {
    display: inline-block;
    padding: 0.25rem 0.75rem;
    background: linear-gradient(135deg, var(--primary-100) 0%, var(--primary-50) 100%);
    color: var(--primary-700);
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    border: 1px solid var(--primary-200);
}

.badge-unidad {
    display: inline-block;
    padding: 0.25rem 0.75rem;
    background: linear-gradient(135deg, var(--gray-100) 0%, var(--gray-50) 100%);
    color: var(--gray-700);
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
    border: 1px solid var(--gray-200);
}


/* Responsive */

@media (max-width: 1024px) {
    .charts-container {
        grid-template-columns: 1fr;
    }
    
    .filter-bar-costes {
        flex-direction: column;
        align-items: stretch;
    }
    
    .filter-bar-costes .filter-group {
        width: 100%;
    }
}

@media (max-width: 768px) {
    .kpi-container {
        grid-template-columns: 1fr;
    }
    
    .table-container-costes {
        overflow-x: auto;
    }
    
    .ledger-table-costes {
        min-width: 1000px;
    }
    
    .kpi-value {
        font-size: 1.5rem;
    }
}


/* Print styles */

@media print {
    .filter-bar-costes,
    .search-bar-costes,
    .breadcrumb-link {
        display: none;
    }
    
    .kpi-container {
        page-break-inside: avoid;
    }
    
    .charts-container {
        display: none;
    }
    
    .table-container-costes {
        box-shadow: none;
        border: 1px solid #ddd;
    }
}


/* KPIs MINI - Una sola línea compacta */

.kpi-mini-container {
    display: flex;
    gap: var(--spacing-md);
    background: white;
    border-radius: var(--radius-lg);
    padding: var(--spacing-md) var(--spacing-lg);
    margin-bottom: var(--spacing-lg);
    box-shadow: var(--shadow-sm);
    border: 1px solid var(--gray-200);
    justify-content: space-between;
}

.kpi-mini {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    border-left: 3px solid var(--primary-500);
    flex: 1;
}

.kpi-mini:first-child {
    border-left-color: var(--primary-600);
}

.kpi-mini:nth-child(2) {
    border-left-color: var(--success-600);
}

.kpi-mini:nth-child(3) {
    border-left-color: var(--warning-600);
}

.kpi-mini:nth-child(4) {
    border-left-color: #8b5cf6;
}

.kpi-mini-label {
    font-size: 0.75rem;
    text-transform: uppercase;
    font-weight: 600;
    color: var(--gray-600);
    white-space: nowrap;
}

.kpi-mini-value {
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--primary-700);
    white-space: nowrap;
}


/* Filtros Compactos - 2 Filas */

.filter-bar-compact {
    background: white;
    border-radius: var(--radius-lg);
    padding: var(--spacing-lg);
    margin-bottom: var(--spacing-lg);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--gray-200);
}

.filter-row-main {
    display: flex;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
    flex-wrap: wrap;
}

.filter-row-actions {
    display: flex;
    gap: var(--spacing-md);
    padding-top: var(--spacing-md);
    border-top: 1px solid var(--gray-200);
}

.filter-group-compact {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-width: 180px;
}

.filter-group-compact label {
    font-size: 0.688rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--gray-600);
    margin-bottom: 0.25rem;
    letter-spacing: 0.5px;
}

.filter-group-compact select {
    padding: 0.625rem 0.875rem;
    border: 2px solid var(--gray-300);
    border-radius: var(--radius-md);
    font-size: 0.875rem;
    background: var(--gray-50);
    color: var(--gray-900);
    cursor: pointer;
    transition: all var(--transition-base);
    font-weight: 500;
}

.filter-group-compact select:hover {
    border-color: var(--primary-400);
    background: white;
}

.filter-group-compact select:focus {
    outline: none;
    border-color: var(--primary-500);
    background: white;
    box-shadow: 0 0 0 3px var(--primary-100);
}


/* Botones de Acción */

.btn-action {
    padding: 0.625rem 1.25rem;
    border: none;
    border-radius: var(--radius-md);
    cursor: pointer;
    font-weight: 600;
    font-size: 0.875rem;
    transition: all var(--transition-base);
    box-shadow: var(--shadow-sm);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    white-space: nowrap;
}

.btn-primary {
    background: linear-gradient(135deg, var(--primary-600) 0%, var(--primary-500) 100%);
    color: white;
}

.btn-primary:hover {
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-600) 100%);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}

.btn-charts {
    background: linear-gradient(135deg, #8b5cf6 0%, #a78bfa 100%);
    color: white;
}

.btn-charts:hover {
    background: linear-gradient(135deg, #7c3aed 0%, #8b5cf6 100%);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}

.btn-excel {
    background: linear-gradient(135deg, #047857 0%, var(--success-600) 100%);
    color: white;
}

.btn-excel:hover {
    background: linear-gradient(135deg, #065f46 0%, #047857 100%);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}

.btn-pdf {
    background: linear-gradient(135deg, #dc2626 0%, #ef4444 100%);
    color: white;
}

.btn-pdf:hover {
    background: linear-gradient(135deg, #b91c1c 0%, #dc2626 100%);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}


/* Barra de Búsqueda Compacta */

.search-bar-compact {
    background: white;
    border-radius: var(--radius-lg);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
    box-shadow: var(--shadow-sm);
    border: 1px solid var(--gray-200);
}

.search-bar-compact input {
    width: 100%;
    padding: 0.75rem 1rem;
    border: 2px solid var(--gray-300);
    border-radius: var(--radius-md);
    font-size: 0.938rem;
    background: var(--gray-50);
    transition: all var(--transition-base);
    font-weight: 500;
}

.search-bar-compact input:focus {
    outline: none;
    border-color: var(--primary-500);
    background: white;
    box-shadow: 0 0 0 3px var(--primary-100);
}

.search-bar-compact input::placeholder {
    color: var(--gray-400);
}


/* Contenedor de Tabla de Auditoría */

.table-container-audit {
    background: white;
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--gray-200);
    overflow: hidden;
    margin-bottom: var(--spacing-xl);
}


/* Tabla de Auditoría Profesional */

.audit-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.813rem;
}

.audit-table thead th {
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-600) 100%);
    color: white;
    padding: 0.75rem 0.875rem;
    text-align: left;
    font-weight: 700;
    font-size: 0.688rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    white-space: nowrap;
    position: sticky;
    top: 0;
    z-index: 10;
    border-bottom: 2px solid var(--primary-800);
}

.audit-table tbody td {
    padding: 0.75rem 0.875rem;
    border-bottom: 1px solid var(--gray-200);
    color: var(--gray-700);
    vertical-align: middle;
}

.audit-table tbody tr.data-row {
    transition: all var(--transition-fast);
}

.audit-table tbody tr.data-row:hover {
    background: var(--primary-50);
}

.audit-table tbody tr.subtotal-row {
    background: linear-gradient(135deg, var(--gray-100) 0%, var(--gray-50) 100%);
    font-weight: 600;
}

.audit-table tbody tr.subtotal-row td {
    border-top: 2px solid var(--gray-400);
    border-bottom: 2px solid var(--gray-400);
    padding: 0.875rem;
}

.audit-table tbody tr.total-row {
    background: linear-gradient(135deg, var(--primary-100) 0%, var(--primary-50) 100%);
    font-weight: 700;
    font-size: 0.938rem;
}

.audit-table tbody tr.total-row td {
    border-top: 3px solid var(--primary-600);
    border-bottom: none;
    padding: 1rem;
}


/* Columnas específicas */

.date-col {
    font-family: 'Consolas', 'Monaco', monospace;
    color: var(--gray-600);
    font-size: 0.75rem;
    white-space: nowrap;
}

.desc-col {
    font-weight: 600;
    color: var(--gray-900);
    max-width: 250px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.meta-info {
    font-size: 0.75rem;
    color: var(--gray-500);
}


/* Badges */

.badge-cc {
    display: inline-block;
    padding: 0.25rem 0.625rem;
    background: linear-gradient(135deg, var(--primary-100) 0%, var(--primary-50) 100%);
    color: var(--primary-700);
    border-radius: 9999px;
    font-size: 0.688rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    border: 1px solid var(--primary-200);
    white-space: nowrap;
}


/* Money formatting */

.money-pos {
    font-weight: 700;
    color: var(--gray-900);
    font-variant-numeric: tabular-nums;
}

.money-neg {
    font-weight: 700;
    color: var(--error-600);
    font-variant-numeric: tabular-nums;
}

.text-right {
    text-align: right;
    font-variant-numeric: tabular-nums;
}


/* Responsive */

@media (max-width: 1200px) {
    .filter-row-main {
        flex-wrap: wrap;
    }
    
    .filter-group-compact {
        min-width: calc(50% - 0.5rem);
    }
}

@media (max-width: 768px) {
    .kpi-mini-container {
        flex-wrap: wrap;
    }
    
    .kpi-mini {
        min-width: calc(50% - 0.5rem);
    }
    
    .filter-group-compact {
        width: 100%;
    }
    
    .filter-row-actions {
        flex-direction: column;
    }
    
    .btn-action {
        width: 100%;
    }
    
    .table-container-audit {
        overflow-x: auto;
    }
    
    .audit-table {
        min-width: 1400px;
    }
}


/* Print styles */

@media print {
    .filter-bar-compact,
    .search-bar-compact,
    .breadcrumb-link,
    .kpi-mini-container {
        display: none;
    }
    
    .table-container-audit {
        box-shadow: none;
        border: 1px solid #ddd;
    }
    
    .audit-table {
        font-size: 0.75rem;
    }
    
    .audit-table thead th {
        background: #333 !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }
}


/* === CORRECCIÓN RESPONSIVE PARA IPAD/TABLET/PORTÁTIL === */

@media screen and (max-width: 1600px) {
    
    /* 1. Contenedor de la tabla: Forzamos el scroll si no cabe */
    .table-container-audit {
        overflow-x: auto !important;  /* Habilita el desplazamiento horizontal */
        overflow-y: hidden;
        -webkit-overflow-scrolling: touch; /* Suavidad nativa en iOS */
        width: 100%;
        display: block;
        margin-bottom: 20px;
        border: 1px solid #ddd; /* Borde para que se vea claro dónde acaba */
    }

    /* 2. La tabla: Le damos un ancho mínimo real */
    /* Usamos 'max-content' para que ocupe lo que realmente necesitan las columnas */
    /* Si el navegador es antiguo, usará el 1600px de fallback */
    .audit-table {
        min-width: 1600px; 
        width: max-content; 
    }

    /* 3. Ajustes de celdas para ganar espacio */
    .audit-table th, 
    .audit-table td {
        padding: 10px 8px !important; /* Un poco más de aire para el dedo */
        white-space: normal !important; /* Permitir que el texto baje de línea */
    }

    /* 4. Mantenemos el ajuste de la descripción que hicimos antes */
    .audit-table td[style*="min-width"] {
        min-width: 200px !important;
        max-width: 300px !important;
    }
}


/* === ESTILOS ADICIONALES PARA BUDGET === */

.table-resumen-mes {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    background: white;
    border-radius: var(--radius-lg);
    overflow: hidden;
    box-shadow: var(--shadow-md);
    border: 1px solid var(--gray-200);
}

.table-resumen-mes th {
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-600) 100%);
    color: white;
    padding: 0.75rem 0.625rem;
    text-align: center;
    font-weight: 600;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    white-space: nowrap;
    border-right: 1px solid rgba(255,255,255,0.2);
}

.table-resumen-mes th.th-mes-group {
    background: linear-gradient(135deg, var(--primary-600) 0%, var(--primary-500) 100%);
}

.table-resumen-mes th.th-total-group {
    background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 100%);
}

.table-resumen-mes th.th-real {
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-600) 100%);
    font-size: 0.688rem;
}

.table-resumen-mes th.th-budget {
    background: linear-gradient(135deg, #3b82f6 0%, #60a5fa 100%);
    font-size: 0.688rem;
    border-right: 2px solid white !important;
}

.table-resumen-mes th.th-total-val {
    background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 100%);
    font-size: 0.688rem;
}

.table-resumen-mes tbody td {
    padding: 0.625rem 0.5rem;
    border-bottom: 1px solid var(--gray-200);
    border-right: 1px solid var(--gray-100);
    font-size: 0.813rem;
    text-align: center;
    transition: all var(--transition-fast);
}

.table-resumen-mes tbody td.td-centro {
    text-align: left;
    font-weight: 600;
    background: var(--gray-50);
    position: sticky;
    left: 0;
    z-index: 5;
    border-right: 2px solid var(--gray-300);
    min-width: 200px;
}

.table-resumen-mes tbody td.td-clas {
    text-align: left;
    background: var(--gray-50);
    font-size: 0.75rem;
    color: var(--gray-700);
    border-right: 1px solid var(--gray-200);
    max-width: 150px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.table-resumen-mes tbody td.td-real {
    cursor: pointer;
    font-weight: 600;
    color: var(--gray-900);
}

.table-resumen-mes tbody td.td-real:hover {
    background: var(--primary-50);
    transform: scale(1.05);
    box-shadow: 0 2px 8px rgba(30, 64, 175, 0.15);
    z-index: 3;
    position: relative;
}

.table-resumen-mes tbody td.td-budget {
    background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
    font-weight: 600;
    color: #1e40af;
    border-right: 2px solid var(--gray-300) !important;
    font-size: 0.75rem;
}

.table-resumen-mes tbody td.td-total-val {
    background: linear-gradient(135deg, var(--primary-50) 0%, var(--primary-100) 100%);
    font-weight: 700;
    color: var(--primary-900);
}

.table-resumen-mes tbody tr.tr-total td {
    background: linear-gradient(135deg, var(--primary-100) 0%, var(--primary-50) 100%);
    border-top: 3px solid var(--primary-600);
    font-weight: 700;
    font-size: 0.875rem;
    padding: 0.875rem 0.5rem;
}

.table-resumen-mes tbody tr.tr-total td.td-budget {
    background: linear-gradient(135deg, #bfdbfe 0%, #93c5fd 100%);
    color: #1e3a8a;
    font-weight: 700;
}


/* Botón para resetear filtro del detalle */

.btn-reset-filter {
    background: linear-gradient(135deg, #f59e0b 0%, #fbbf24 100%);
    color: white;
    padding: 0.625rem 1.25rem;
    border: none;
    border-radius: var(--radius-md);
    cursor: pointer;
    font-weight: 600;
    font-size: 0.875rem;
    transition: all var(--transition-base);
    box-shadow: var(--shadow-sm);
    margin-left: 10px;
}

.btn-reset-filter:hover {
    background: linear-gradient(135deg, #d97706 0%, #f59e0b 100%);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}


/* Indicador de scroll horizontal */

#resumen-scroll {
    position: relative;
}

#resumen-scroll.has-scroll::after {
    content: '👉 Desliza para ver más →';
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    background: rgba(59, 130, 246, 0.95);
    color: white;
    padding: 8px 16px;
    border-radius: 20px;
    font-size: 0.75rem;
    font-weight: 600;
    pointer-events: none;
    animation: pulse 2s infinite;
    box-shadow: 0 4px 12px rgba(59, 130, 246, 0.4);
    z-index: 10;
}

@keyframes pulse {
    0%, 100% {
        opacity: 1;
    }
    50% {
        opacity: 0.7;
    }
}


/* Responsive para la tabla de resumen */

@media screen and (max-width: 1600px) {
    .table-resumen-mes {
        min-width: 1600px;
    }
    
    .table-resumen-mes th,
    .table-resumen-mes td {
        padding: 0.5rem 0.375rem;
        font-size: 0.75rem;
    }
    
    .table-resumen-mes th.th-real,
    .table-resumen-mes th.th-budget,
    .table-resumen-mes th.th-total-val {
        font-size: 0.625rem;
    }
    
    .table-resumen-mes tbody td.td-centro {
        min-width: 150px;
    }
    
    .table-resumen-mes tbody td.td-clas {
        max-width: 120px;
        font-size: 0.688rem;
    }
}

@media screen and (max-width: 768px) {
    .table-resumen-mes {
        min-width: 1800px;
    }
    
    #resumen-scroll.has-scroll::after {
        font-size: 0.688rem;
        padding: 6px 12px;
        right: 10px;
    }
}

.table-scroll {
    overflow-x: auto;
    width: 100%;
}


/* TABLA RESUMEN */

.resumen-table {
    width: 100%;
    min-width: 1200px;
    border-collapse: collapse;
    font-size: 12px;
}

.resumen-table th {
    background: #1e40af;
    color: white;
    padding: 8px 6px;
    text-align: center;
    font-weight: 700;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-right: 1px solid rgba(255,255,255,0.2);
}

.th-centro {
    text-align: left !important;
    min-width: 200px;
    position: sticky;
    left: 0;
    z-index: 10;
    background: #1e3a8a;
}

.th-total {
    background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%);
}

.th-real-sub {
    background: #2563eb;
    font-size: 10px;
}

.th-bud-sub {
    background: #3b82f6;
    font-size: 10px;
}

.resumen-table tbody td {
    padding: 8px 6px;
    border-bottom: 1px solid #e5e7eb;
    border-right: 1px solid #f3f4f6;
    text-align: center;
    font-size: 11px;
}

.td-centro {
    text-align: left !important;
    font-weight: 600;
    background: #f9fafb;
    position: sticky;
    left: 0;
    z-index: 5;
    border-right: 2px solid #d1d5db;
    min-width: 200px;
}

.tr-padre .td-centro {
    background: #e0e7ff;
    font-weight: 700;
}

.tr-hijo .td-centro {
    background: #f9fafb;
    font-weight: 500;
}

.td-real {
    cursor: pointer;
    font-weight: 600;
    color: #1f2937;
    transition: all 0.2s;
}

.td-real:hover {
    background: #dbeafe;
    transform: scale(1.05);
}

.td-bud {
    background: linear-gradient(135deg, #eff6ff 0%, #dbeafe 100%);
    font-weight: 600;
    color: #1e40af;
}

.td-total-val {
    background: #f3e8ff;
    font-weight: 700;
    color: #6d28d9;
}

.tr-total td {
    background: linear-gradient(135deg, #e0e7ff 0%, #c7d2fe 100%);
    border-top: 3px solid #3b82f6;
    font-weight: 700;
    padding: 10px 6px;
    font-size: 12px;
}

.detail-table tbody td {
    padding: 8px;
    border-bottom: 1px solid #f3f4f6;
    font-size: 12px;
    color: #374151;
}

.tr-total {
    background: linear-gradient(135deg, #f3f4f6 0%, #e5e7eb 100%);
    border-top: 3px solid #3b82f6;
}


/* RESPONSIVE */

@media screen and (max-width: 1400px) {
    .resumen-table {
        font-size: 11px;
    }
    
    .resumen-table th {
        padding: 6px 4px;
        font-size: 10px;
    }
    
    .resumen-table tbody td {
        padding: 6px 4px;
        font-size: 10px;
    }
    
    .th-centro, .td-centro {
        min-width: 180px;
    }
    
    .kpi-value {
        font-size: 18px;
    }
}

@media screen and (max-width: 1024px) {
    .filter-row {
        flex-wrap: wrap;
    }
    
    .filter-group {
        flex: 1 1 200px;
    }
    
    .kpi-container {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .resumen-table {
        min-width: 1400px;
    }
    
    .filter-row-buttons {
        flex-wrap: wrap;
    }
    
    .btn-filter, .btn-clear, .btn-charts, .btn-excel, .btn-pdf {
        flex: 1 1 auto;
    }
}

@media screen and (max-width: 768px) {
    .kpi-container {
        grid-template-columns: 1fr;
    }
    
    .filter-bar-optimized {
        padding: 8px;
    }
    
    .filter-row {
        flex-direction: column;
    }
    
    .filter-group {
        width: 100%;
    }
    
    .filter-group select,
    .filter-group input {
        width: 100%;
    }
    
    .resumen-title {
        font-size: 14px;
        padding: 12px 16px;
    }
    
    .detail-table {
        font-size: 11px;
    }
    
    .detail-table thead th {
        padding: 8px 6px;
        font-size: 10px;
    }
    
    .detail-table tbody td {
        padding: 6px;
        font-size: 11px;
    }
}


/* SCROLL SUAVE */

.table-scroll {
    scrollbar-width: thin;
    scrollbar-color: #3b82f6 #e5e7eb;
}

.table-scroll::-webkit-scrollbar {
    height: 8px;
}

.table-scroll::-webkit-scrollbar-track {
    background: #e5e7eb;
    border-radius: 4px;
}

.table-scroll::-webkit-scrollbar-thumb {
    background: #3b82f6;
    border-radius: 4px;
}

.table-scroll::-webkit-scrollbar-thumb:hover {
    background: #2563eb;
}


/* IMPRESIÓN */

@media print {
    .filter-bar-optimized,
    .search-bar,
    .btn-filter,
    .btn-clear,
    .btn-charts,
    .btn-excel,
    .btn-pdf,
    .btn-reset {
        display: none;
    }
    
    .resumen-table,
    .detail-table {
        font-size: 10px;
    }
    
    .td-real {
        cursor: default;
    }
    
    .td-real:hover {
        background: none;
        transform: none;
    }
}


/* === ESTILOS OPTIMIZADOS - AÑADIR AL FINAL DE ers_estilos.css === */

.filter-bar-optimized {
    background: white;
    padding: 12px;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    margin-bottom: 16px;
}

.filter-group {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.filter-group label {
    font-size: 11px;
    font-weight: 600;
    color: #374151;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.filter-group select,
.filter-group input {
    padding: 6px 8px;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    font-size: 13px;
    font-family: inherit;
    background: white;
    transition: all 0.2s;
}

.filter-group select:focus,
.filter-group input:focus {
    outline: none;
    border-color: #3b82f6;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

.btn-filter, .btn-clear, .btn-charts, .btn-excel, .btn-pdf {
    padding: 8px 16px;
    border: none;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
    text-decoration: none;
    display: inline-block;
    font-family: inherit;
}

.btn-filter {
    background: #3b82f6;
    color: white;
}

.btn-filter:hover {
    background: #2563eb;
    transform: translateY(-1px);
}


/* KPIs OPTIMIZADOS */

.kpi-container {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 20px;
}

.kpi-box {
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    padding: 16px;
    border-radius: 8px;
    color: white;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.kpi-label {
    font-size: 12px;
    font-weight: 500;
    opacity: 0.9;
}

.kpi-value {
    font-size: 20px;
    font-weight: 700;
}

.resumen-title {
    padding: 16px 20px;
    margin: 0;
    background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 100%);
    color: white;
    font-size: 16px;
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 12px;
}

.mode-badge {
    background: rgba(255,255,255,0.2);
    padding: 4px 12px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 600;
}

.resumen-table tbody td {
    padding: 7px 5px;
    border-bottom: 1px solid #e5e7eb;
    border-right: 1px solid #f3f4f6;
    text-align: center;
    font-size: 11px;
}

.tr-agrupador .td-total-val {
    background: linear-gradient(135deg, #e0e7ff 0%, #c7d2fe 100%);
    font-weight: 700;
    color: #1e3a8a;
}

.tr-agrupador td {
    font-weight: 700;
}


/* RESPONSIVE */

@media screen and (max-width: 1400px) {
    .resumen-table {
        font-size: 10px;
        min-width: 1200px;
    }
    
    .resumen-table th {
        padding: 6px 4px;
        font-size: 9px;
    }
    
    .resumen-table tbody td {
        padding: 6px 4px;
        font-size: 10px;
    }
    
    .th-centro, .td-centro {
        min-width: 220px;
        max-width: 220px;
    }
    
    .th-total-col {
        left: 220px;
    }
    
    .td-total-val {
        left: 220px;
    }
    
    .kpi-value {
        font-size: 18px;
    }
}

@media screen and (max-width: 1024px) {
    .filter-row {
        flex-wrap: wrap;
    }
    
    .filter-group {
        flex: 1 1 200px;
    }
    
    .kpi-container {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .resumen-table {
        min-width: 1400px;
    }
    
    .filter-row-buttons {
        flex-wrap: wrap;
    }
    
    .btn-filter, .btn-clear, .btn-charts, .btn-excel, .btn-pdf {
        flex: 1 1 auto;
    }
    
    .th-centro, .td-centro {
        min-width: 200px;
        max-width: 200px;
    }
    
    .th-total-col {
        left: 200px;
    }
    
    .td-total-val {
        left: 200px;
    }
}

@media screen and (max-width: 768px) {
    .kpi-container {
        grid-template-columns: 1fr;
    }
    
    .filter-bar-optimized {
        padding: 8px;
    }
    
    .filter-row {
        flex-direction: column;
    }
    
    .filter-group {
        width: 100%;
    }
    
    .filter-group select,
    .filter-group input {
        width: 100%;
    }
    
    .resumen-title {
        font-size: 14px;
        padding: 12px 16px;
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }
    
    .detail-table {
        font-size: 10px;
    }
    
    .detail-table thead th {
        padding: 8px 6px;
        font-size: 9px;
    }
    
    .detail-table tbody td {
        padding: 6px;
        font-size: 10px;
    }
    
    .th-centro, .td-centro {
        min-width: 180px;
        max-width: 180px;
        font-size: 10px;
    }
    
    .th-total-col {
        left: 180px;
        min-width: 70px;
    }
    
    .td-total-val {
        left: 180px;
    }
    
    .th-real-sub, .th-bud-sub {
        min-width: 55px;
        font-size: 8px;
    }
}


/* IMPRESIÓN */

@media print {
    .filter-bar-optimized,
    .search-bar,
    .btn-filter,
    .btn-clear,
    .btn-charts,
    .btn-excel,
    .btn-pdf,
    .btn-reset {
        display: none;
    }
    
    .resumen-table,
    .detail-table {
        font-size: 9px;
    }
    
    .td-real {
        cursor: default;
    }
    
    .td-real:hover {
        background: none;
        transform: none;
    }
    
    .th-centro, .td-centro {
        position: relative;
        left: 0;
    }
    
    .th-total-col, .td-total-val {
        position: relative;
        left: 0;
    }
}

.th-total-col {
    background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%);
    min-width: 80px;
    position: sticky;
    left: 250px;
    z-index: 14;
}

.th-real-sub {
    background: #2563eb;
    font-size: 9px;
    min-width: 65px;
}

.th-bud-sub {
    background: #3b82f6;
    font-size: 9px;
    min-width: 60px;
}

.resumen-table tbody td {
    padding: 7px 5px;
    border-bottom: 1px solid #e5e7eb;
    border-right: 1px solid #f3f4f6;
    text-align: center;
    font-size: 10px;
}

.td-total-val {
    background: #f3e8ff;
    font-weight: 700;
    color: #6d28d9;
    position: sticky;
    left: 250px;
    z-index: 9;
    border-right: 2px solid #d1d5db;
}


/* FORMATO ESPECIAL PARA 6+ CIFRAS */

.num-big {
    display: block;
    font-size: 10px;
    line-height: 1.1;
}

.euro-small {
    display: block;
    font-size: 8px;
    opacity: 0.7;
}


/* SUBTOTALES CON TODA LA LÍNEA MARCADA */

.tr-agrupador td {
    background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
    font-weight: 700;
    font-size: 11px;
    color: #1e3a8a;
    border-bottom: 2px solid #93c5fd;
}

.tr-agrupador .td-centro {
    background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
    font-weight: 700;
    font-size: 12px;
    color: #1e3a8a;
    border-left: 4px solid #3b82f6;
}

.tr-agrupador .td-total-val {
    background: linear-gradient(135deg, #c7d2fe 0%, #a5b4fc 100%);
    font-weight: 700;
    color: #1e3a8a;
}

.tr-agrupador .td-real {
    background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
    font-weight: 700;
}

.tr-agrupador .td-bud {
    background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
    font-weight: 700;
}

.tr-centro .td-centro {
    background: #ffffff;
    font-weight: 500;
    font-size: 11px;
    color: #374151;
    padding-left: 12px !important;
}

.tr-centro .td-total-val {
    background: #faf5ff;
    font-weight: 600;
}

.td-real {
    cursor: pointer;
    font-weight: 600;
    color: #1f2937;
    transition: all 0.2s;
    background: #ffffff;
}

.td-bud {
    background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
    font-weight: 600;
    color: #0369a1;
}

.tr-total td {
    background: linear-gradient(135deg, #e0e7ff 0%, #c7d2fe 100%);
    border-top: 3px solid #3b82f6;
    font-weight: 700;
    padding: 10px 6px;
    font-size: 11px;
}

.tr-total .td-centro {
    background: linear-gradient(135deg, #c7d2fe 0%, #a5b4fc 100%);
    color: #1e3a8a;
}

.tr-total .td-total-val {
    background: linear-gradient(135deg, #c7d2fe 0%, #a5b4fc 100%);
    color: #1e3a8a;
}

.tr-total .td-bud {
    background: linear-gradient(135deg, #bfdbfe 0%, #93c5fd 100%);
    color: #1e3a8a;
}

@media screen and (max-width: 768px) {
    .kpi-container-compact {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .filter-bar-compact {
        padding: 8px;
    }
    
    .filter-row {
        flex-direction: column;
    }
    
    .filter-group-box {
        width: 100%;
    }
    
    .filter-group-box select,
    .filter-group-box input {
        width: 100%;
    }
    
    .resumen-title {
        font-size: 13px;
        padding: 12px 16px;
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }
    
    .detail-table {
        font-size: 10px;
    }
    
    .detail-table thead th {
        padding: 8px 6px;
        font-size: 9px;
    }
    
    .detail-table tbody td {
        padding: 6px;
        font-size: 10px;
    }
    
    .th-centro, .td-centro {
        min-width: 180px;
        max-width: 180px;
        font-size: 10px;
    }
    
    .th-total-col {
        left: 180px;
        min-width: 70px;
    }
    
    .td-total-val {
        left: 180px;
    }
    
    .th-real-sub, .th-bud-sub {
        min-width: 55px;
        font-size: 8px;
    }
    
    .num-big {
        font-size: 9px;
    }
    
    .euro-small {
        font-size: 7px;
    }
}


/* RESUMEN BOX */

.resumen-box {
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    margin-bottom: 20px;
    overflow: hidden;
}

.resumen-title {
    padding: 14px 18px;
    margin: 0;
    background: linear-gradient(135deg, #1e3a8a 0%, #1e40af 100%);
    color: white;
    font-size: 15px;
    font-weight: 700;
    display: flex;
    align-items: center;
    gap: 12px;
}

.mode-badge {
    background: rgba(255,255,255,0.2);
    padding: 3px 10px;
    border-radius: 16px;
    font-size: 11px;
    font-weight: 600;
}


/* TABLA RESUMEN */

.resumen-table {
    width: 100%;
    min-width: 1400px;
    border-collapse: collapse;
    font-size: 11px;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}

.resumen-table th {
    background: #1e40af;
    color: white;
    padding: 8px 6px;
    text-align: center;
    font-weight: 700;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-right: 1px solid rgba(255,255,255,0.2);
}

.th-centro {
    text-align: left !important;
    min-width: 250px;
    max-width: 250px;
    position: sticky;
    left: 0;
    z-index: 15;
    background: #1e3a8a;
}

.th-total-col {
    background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%);
    min-width: 90px;
    position: sticky;
    left: 250px;
    z-index: 14;
}

.th-mes {
    background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
}

.th-real-sub, .th-bud-sub {
    background: #2563eb;
    font-size: 9px;
    min-width: 70px;
    text-align: right !important;
}

.resumen-table tbody td {
    padding: 7px 8px;
    border-bottom: 1px solid #e5e7eb;
    border-right: 1px solid #f3f4f6;
    text-align: right;
    font-size: 10px;
}

.td-centro {
    text-align: left !important;
    font-weight: 500;
    background: #ffffff;
    position: sticky;
    left: 0;
    z-index: 10;
    border-right: 2px solid #d1d5db;
    min-width: 250px;
    max-width: 250px;
    padding-left: 12px !important;
}

.td-total-val {
    background: #f3e8ff;
    font-weight: 700;
    color: #6d28d9;
    position: sticky;
    left: 250px;
    z-index: 9;
    border-right: 2px solid #d1d5db;
    text-align: right !important;
}

.tr-centro .td-centro {
    background: #ffffff;
    font-weight: 500;
    font-size: 11px;
    color: #374151;
    padding-left: 12px !important;
    text-align: left !important;
}

.tr-total td {
    background: linear-gradient(135deg, #e0e7ff 0%, #c7d2fe 100%);
    border-top: 3px solid #3b82f6;
    font-weight: 700;
    padding: 10px 8px;
    font-size: 11px;
    text-align: right;
}


/* RESPONSIVE */

@media screen and (max-width: 1400px) {
    .kpi-container-compact {
        grid-template-columns: repeat(3, 1fr);
    }
    
    .resumen-table {
        font-size: 10px;
        min-width: 1200px;
    }
    
    .resumen-table th {
        padding: 6px 4px;
        font-size: 9px;
    }
    
    .resumen-table tbody td {
        padding: 6px 4px;
        font-size: 10px;
    }
    
    .th-centro, .td-centro {
        min-width: 220px;
        max-width: 220px;
    }
    
    .th-total-col {
        left: 220px;
    }
    
    .td-total-val {
        left: 220px;
    }
    
    .kpi-value-compact {
        font-size: 14px;
    }
}

@media screen and (max-width: 1024px) {
    .filter-row {
        flex-wrap: wrap;
    }
    
    .filter-group-box {
        flex: 1 1 200px;
    }
    
    .kpi-container-compact {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .resumen-table {
        min-width: 1400px;
    }
    
    .filter-row-buttons {
        flex-wrap: wrap;
    }
    
    .btn-apply, .btn-clear, .btn-charts, .btn-excel, .btn-pdf {
        flex: 1 1 auto;
    }
    
    .th-centro, .td-centro {
        min-width: 200px;
        max-width: 200px;
    }
    
    .th-total-col {
        left: 200px;
    }
    
    .td-total-val {
        left: 200px;
    }
}

@media screen and (max-width: 768px) {
    .kpi-container-compact {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .filter-bar-compact {
        padding: 8px;
    }
    
    .filter-row {
        flex-direction: column;
    }
    
    .filter-group-box {
        width: 100%;
    }
    
    .filter-group-box select,
    .filter-group-box input {
        width: 100%;
    }
    
    .resumen-title {
        font-size: 13px;
        padding: 12px 16px;
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }
    
    .detail-table {
        font-size: 10px;
    }
    
    .detail-table thead th {
        padding: 8px 6px;
        font-size: 9px;
    }
    
    .detail-table tbody td {
        padding: 6px;
        font-size: 10px;
    }
    
    .th-centro, .td-centro {
        min-width: 180px;
        max-width: 180px;
        font-size: 10px;
    }
    
    .th-total-col {
        left: 180px;
        min-width: 80px;
    }
    
    .td-total-val {
        left: 180px;
    }
    
    .th-real-sub, .th-bud-sub {
        min-width: 60px;
        font-size: 8px;
    }
}

.resumen-box, .detail-box {
    animation: fadeIn 0.3s ease-out;
}


/* Fix selector de centros */

select[name="centro"], 
select[name="unidad"],
select[name="division"],
select[name="marca"],
select[name="proyecto"] {
    cursor: pointer;
}

select[name="centro"]:focus,
select[name="unidad"]:focus,
select[name="division"]:focus,
select[name="marca"]:focus,
select[name="proyecto"]:focus {
    outline: 2px solid #3b82f6;
    outline-offset: 2px;
}


/* === ESTILOS FINALES OPTIMIZADOS - AÑADIR AL FINAL DE ers_estilos.css === */

.filter-bar-compact {
    background: white;
    padding: 12px;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    margin-bottom: 16px;
}

.filter-row {
    display: flex;
    gap: 8px;
    margin-bottom: 8px;
    align-items: flex-end;
}

.filter-row:last-child {
    margin-bottom: 0;
}

.filter-group-box {
    display: flex;
    flex-direction: column;
    gap: 3px;
    background: #f9fafb;
    padding: 6px 8px;
    border-radius: 4px;
    border: 1px solid #e5e7eb;
}

.filter-box-label {
    font-size: 9px;
    font-weight: 700;
    color: #6b7280;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.filter-group-box select,
.filter-group-box input {
    padding: 5px 6px;
    border: 1px solid #d1d5db;
    border-radius: 3px;
    font-size: 12px;
    font-family: inherit;
    background: white;
    transition: all 0.2s;
}

.filter-group-box select:focus,
.filter-group-box input:focus {
    outline: none;
    border-color: #3b82f6;
    box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1);
}

.filter-row-buttons {
    display: flex;
    gap: 8px;
    padding-top: 8px;
    border-top: 1px solid #e5e7eb;
    margin-top: 4px;
}

.btn-apply, .btn-clear, .btn-charts, .btn-excel, .btn-pdf {
    padding: 8px 16px;
    border: none;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
    text-decoration: none;
    display: inline-block;
    font-family: inherit;
}

.btn-apply {
    background: #10b981;
    color: white;
}

.btn-apply:hover {
    background: #059669;
    transform: translateY(-1px);
}

.btn-clear {
    background: #ef4444;
    color: white;
}

.btn-clear:hover {
    background: #dc2626;
}

.btn-charts {
    background: #8b5cf6;
    color: white;
}

.btn-charts:hover {
    background: #7c3aed;
}

.btn-excel {
    background: #10b981;
    color: white;
}

.btn-excel:hover {
    background: #059669;
}

.btn-pdf {
    background: #f59e0b;
    color: white;
}

.btn-pdf:hover {
    background: #d97706;
}


/* KPIs COMPACTOS CON INFO DE BUDGET */

.kpi-container-compact {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 10px;
    margin-bottom: 16px;
}

.kpi-box-compact {
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    padding: 10px 12px;
    border-radius: 6px;
    color: white;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.kpi-label-compact {
    font-size: 10px;
    font-weight: 500;
    opacity: 0.9;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.kpi-value-compact {
    font-size: 16px;
    font-weight: 700;
}


/* NO DATA */

.no-data-box {
    background: #f9fafb;
    border: 2px dashed #d1d5db;
    border-radius: 8px;
    padding: 60px 20px;
    text-align: center;
    color: #6b7280;
    font-size: 16px;
}


/* RESUMEN BOX COMPACTO (SIN TÍTULO) */

.resumen-box-compact {
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    margin-bottom: 20px;
    overflow: hidden;
    padding: 0;
}


/* SCROLL SUAVE Y OPTIMIZADO */

.table-scroll-smooth {
    overflow-x: auto;
    overflow-y: hidden;
    width: 100%;
    -webkit-overflow-scrolling: touch;
    scroll-behavior: smooth;
}

.table-scroll-smooth::-webkit-scrollbar {
    height: 10px;
}

.table-scroll-smooth::-webkit-scrollbar-track {
    background: linear-gradient(to right, #e5e7eb 0%, #f3f4f6 50%, #e5e7eb 100%);
    border-radius: 5px;
}

.table-scroll-smooth::-webkit-scrollbar-thumb {
    background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
    border-radius: 5px;
    border: 2px solid #f3f4f6;
}

.table-scroll-smooth::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(135deg, #2563eb 0%, #1e40af 100%);
}

.table-scroll-smooth {
    scrollbar-width: thin;
    scrollbar-color: #3b82f6 #e5e7eb;
}


/* TABLA RESUMEN COMPACTA */

.resumen-table {
    width: 100%;
    min-width: 900px;
    border-collapse: collapse;
    font-size: 11px;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}

.resumen-table th {
    background: #1e40af;
    color: white;
    padding: 8px 4px;
    text-align: center;
    font-weight: 700;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-right: 1px solid rgba(255,255,255,0.2);
}

.th-centro {
    text-align: left !important;
    min-width: 200px;
    max-width: 200px;
    position: sticky;
    left: 0;
    z-index: 15;
    background: #1e3a8a;
}

.th-total-col {
    background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%);
    min-width: 70px;
    position: sticky;
    left: 200px;
    z-index: 14;
}

.th-mes {
    background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
    min-width: 50px;
}

.th-real-sub, .th-bud-sub {
    background: #2563eb;
    font-size: 9px;
    min-width: 55px;
    text-align: right !important;
}

.th-bud-sub {
    background: #3b82f6;
}

.resumen-table tbody td {
    padding: 6px 5px;
    border-bottom: 1px solid #e5e7eb;
    border-right: 1px solid #f3f4f6;
    text-align: right;
    font-size: 10px;
}

.td-centro {
    text-align: left !important;
    font-weight: 500;
    background: #ffffff;
    position: sticky;
    left: 0;
    z-index: 10;
    border-right: 2px solid #d1d5db;
    min-width: 200px;
    max-width: 200px;
    padding-left: 10px !important;
}

.td-total-val {
    background: #f3e8ff;
    font-weight: 700;
    color: #6d28d9;
    position: sticky;
    left: 200px;
    z-index: 9;
    border-right: 2px solid #d1d5db;
    text-align: right !important;
}


/* SUBTOTALES CON TODA LA LÍNEA MARCADA */

.tr-agrupador td {
    background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
    font-weight: 700;
    font-size: 11px;
    color: #1e3a8a;
    border-bottom: 2px solid #93c5fd;
    text-align: right;
}

.tr-agrupador .td-centro {
    background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
    font-weight: 700;
    font-size: 12px;
    color: #1e3a8a;
    border-left: 4px solid #3b82f6;
    text-align: left !important;
}

.tr-agrupador .td-total-val {
    background: linear-gradient(135deg, #c7d2fe 0%, #a5b4fc 100%);
    font-weight: 700;
    color: #1e3a8a;
    text-align: right !important;
}

.tr-agrupador .td-real {
    background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
    font-weight: 700;
    text-align: right;
}

.tr-agrupador .td-bud {
    background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
    font-weight: 700;
    text-align: right;
}

.tr-centro .td-centro {
    background: #ffffff;
    font-weight: 500;
    font-size: 11px;
    color: #374151;
    padding-left: 10px !important;
    text-align: left !important;
}

.tr-centro .td-total-val {
    background: #faf5ff;
    font-weight: 600;
    text-align: right !important;
}

.td-real {
    cursor: pointer;
    font-weight: 600;
    color: #1f2937;
    transition: all 0.2s;
    background: #ffffff;
    text-align: right;
}

.td-real:hover {
    background: #dbeafe;
    transform: scale(1.05);
    box-shadow: 0 0 0 2px #3b82f6;
}

.td-bud {
    background: linear-gradient(135deg, #f0f9ff 0%, #e0f2fe 100%);
    font-weight: 600;
    color: #0369a1;
    text-align: right;
}

.tr-total td {
    background: linear-gradient(135deg, #e0e7ff 0%, #c7d2fe 100%);
    border-top: 3px solid #3b82f6;
    font-weight: 700;
    padding: 10px 6px;
    font-size: 11px;
    text-align: right;
}

.tr-total .td-centro {
    background: linear-gradient(135deg, #c7d2fe 0%, #a5b4fc 100%);
    color: #1e3a8a;
    text-align: left !important;
}

.tr-total .td-total-val {
    background: linear-gradient(135deg, #c7d2fe 0%, #a5b4fc 100%);
    color: #1e3a8a;
    text-align: right !important;
}

.tr-total .td-bud {
    background: linear-gradient(135deg, #bfdbfe 0%, #93c5fd 100%);
    color: #1e3a8a;
    text-align: right;
}


/* COLORES PARA PORCENTAJES */

.color-green {
    color: #059669 !important;
    font-weight: 700;
}

.color-orange {
    color: #ea580c !important;
    font-weight: 700;
}

.color-red {
    color: #dc2626 !important;
    font-weight: 800;
}


/* BARRA DE BÚSQUEDA */

.search-bar {
    display: flex;
    gap: 8px;
    margin-bottom: 12px;
    align-items: center;
}

.search-bar input {
    flex: 1;
    padding: 10px 16px;
    border: 2px solid #d1d5db;
    border-radius: 6px;
    font-size: 14px;
    font-family: inherit;
}

.search-bar input:focus {
    outline: none;
    border-color: #3b82f6;
}

.btn-reset {
    padding: 10px 20px;
    background: #6b7280;
    color: white;
    border: none;
    border-radius: 6px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
    font-family: inherit;
}

.btn-reset:hover {
    background: #4b5563;
}


/* TABLA DETALLE */

.detail-box {
    background: white;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.08);
    overflow: hidden;
}

.detail-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
}

.detail-table thead th {
    background: linear-gradient(135deg, #374151 0%, #1f2937 100%);
    color: white;
    padding: 10px 8px;
    text-align: left;
    font-weight: 700;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    position: sticky;
    top: 0;
    z-index: 10;
}

.detail-table tbody td {
    padding: 8px;
    border-bottom: 1px solid #f3f4f6;
    font-size: 11px;
    color: #374151;
}

.detail-table tbody tr:hover {
    background: #f9fafb;
}

.td-desc {
    max-width: 300px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.text-right {
    text-align: right !important;
}


/* RESPONSIVE */

@media screen and (max-width: 1400px) {
    .kpi-container-compact {
        grid-template-columns: repeat(3, 1fr);
    }
    
    .resumen-table {
        font-size: 10px;
        min-width: 850px;
    }
    
    .resumen-table th {
        padding: 6px 3px;
        font-size: 9px;
    }
    
    .resumen-table tbody td {
        padding: 5px 4px;
        font-size: 10px;
    }
    
    .th-centro, .td-centro {
        min-width: 180px;
        max-width: 180px;
    }
    
    .th-total-col {
        left: 180px;
        min-width: 65px;
    }
    
    .td-total-val {
        left: 180px;
    }
    
    .th-real-sub, .th-bud-sub {
        min-width: 50px;
    }
    
    .kpi-value-compact {
        font-size: 14px;
    }
}

@media screen and (max-width: 1024px) {
    .filter-row {
        flex-wrap: wrap;
    }
    
    .filter-group-box {
        flex: 1 1 200px;
    }
    
    .kpi-container-compact {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .resumen-table {
        min-width: 800px;
    }
    
    .filter-row-buttons {
        flex-wrap: wrap;
    }
    
    .btn-apply, .btn-clear, .btn-charts, .btn-excel, .btn-pdf {
        flex: 1 1 auto;
    }
    
    .th-centro, .td-centro {
        min-width: 170px;
        max-width: 170px;
    }
    
    .th-total-col {
        left: 170px;
    }
    
    .td-total-val {
        left: 170px;
    }
}

@media screen and (max-width: 768px) {
    .kpi-container-compact {
        grid-template-columns: repeat(2, 1fr);
    }
    
    .filter-bar-compact {
        padding: 8px;
    }
    
    .filter-row {
        flex-direction: column;
    }
    
    .filter-group-box {
        width: 100%;
    }
    
    .filter-group-box select,
    .filter-group-box input {
        width: 100%;
    }
    
    .detail-table {
        font-size: 10px;
    }
    
    .detail-table thead th {
        padding: 8px 6px;
        font-size: 9px;
    }
    
    .detail-table tbody td {
        padding: 6px;
        font-size: 10px;
    }
    
    .th-centro, .td-centro {
        min-width: 150px;
        max-width: 150px;
        font-size: 10px;
    }
    
    .th-total-col {
        left: 150px;
        min-width: 60px;
    }
    
    .td-total-val {
        left: 150px;
    }
    
    .th-real-sub, .th-bud-sub {
        min-width: 48px;
        font-size: 8px;
    }
}


/* MEJORAS VISUALES */

* {
    box-sizing: border-box;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    line-height: 1.5;
}


/* ANIMACIONES */

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.resumen-box-compact, .detail-box {
    animation: fadeIn 0.3s ease-out;
}


/* IMPRESIÓN */

@media print {
    .filter-bar-compact,
    .search-bar,
    .btn-apply,
    .btn-clear,
    .btn-charts,
    .btn-excel,
    .btn-pdf,
    .btn-reset {
        display: none;
    }
    
    .resumen-table,
    .detail-table {
        font-size: 9px;
    }
    
    .td-real {
        cursor: default;
    }
    
    .td-real:hover {
        background: none;
        transform: none;
    }
    
    .th-centro, .td-centro {
        position: relative;
        left: 0;
    }
    
    .th-total-col, .td-total-val {
        position: relative;
        left: 0;
    }
}


/* ACCESIBILIDAD */

@media (prefers-reduced-motion: reduce) {
    * {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
}

/* =====================================================================
   === TICKETS DE SISTEMAS ===
   (ers_tickets_mant.php, ers_ticket_det.php,
    ers_tickets_sistemas_consulta.php, ers_ticket_usu_det.php)
   ===================================================================== */

/* --- Contadores ------------------------------------------------------ */
.tk-stats {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
}
.tk-stat {
    background: white;
    border: 2px solid var(--gray-200);
    border-left: 5px solid var(--primary-600);
    border-radius: var(--radius-lg);
    padding: var(--spacing-md);
    text-align: center;
    cursor: pointer;
    box-shadow: var(--shadow-sm);
    transition: all var(--transition-base);
    user-select: none;
}
.tk-stat:hover   { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.tk-stat.activa  { border-color: var(--primary-600); background: var(--primary-50); box-shadow: 0 0 0 3px var(--primary-200); }
.tk-stat-num     { display: block; font-size: 1.875rem; font-weight: 700; color: var(--primary-700); line-height: 1.2; }
.tk-stat-label   { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; color: var(--gray-600); }
.tk-stat-naranja { border-left-color: var(--warning-500); }  .tk-stat-naranja .tk-stat-num { color: var(--warning-600); }
.tk-stat-azul    { border-left-color: var(--primary-500); }
.tk-stat-morado  { border-left-color: #8b5cf6; }              .tk-stat-morado .tk-stat-num  { color: #7c3aed; }
.tk-stat-rojo    { border-left-color: var(--error-500); }     .tk-stat-rojo .tk-stat-num    { color: var(--error-600); }
.tk-stat-gris    { border-left-color: var(--gray-400); }      .tk-stat-gris .tk-stat-num    { color: var(--gray-600); }

/* --- Filtros y campos ------------------------------------------------ */
.tk-filtros {
    background: var(--gray-50);
    border: 1px solid var(--gray-200);
    border-radius: var(--radius-lg);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}
.tk-filtros-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--spacing-md);
    align-items: end;
}
.tk-filtro        { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.tk-filtro-ancho  { grid-column: 1 / -1; }
.tk-filtro-doble  { grid-column: span 2; }
.tk-filtro label  {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--gray-600);
}
.tk-input {
    width: 100%;
    padding: 0.55rem 0.75rem;
    border: 2px solid var(--gray-300);
    border-radius: var(--radius-md);
    font-size: 0.9rem;
    font-family: inherit;
    background: white;
    color: var(--gray-900);
    transition: all var(--transition-base);
}
.tk-input:focus   { outline: none; border-color: var(--primary-500); box-shadow: 0 0 0 3px var(--primary-100); }
.tk-textarea      { min-height: 110px; resize: vertical; line-height: 1.5; }
.tk-filtros-pie   { margin-top: var(--spacing-sm); padding-top: var(--spacing-sm); border-top: 1px solid var(--gray-200); font-size: 0.813rem; color: var(--gray-600); }
.tk-aviso-tarjeta { color: var(--primary-700); font-weight: 600; }

/* Multiselect de estados */
.tk-ms { position: relative; }
.tk-ms-trigger {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.55rem 0.75rem;
    border: 2px solid var(--gray-300);
    border-radius: var(--radius-md);
    background: white;
    cursor: pointer;
    font-size: 0.9rem;
}
.tk-ms-trigger.abierto { border-color: var(--primary-500); }
.tk-ms-panel {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    min-width: 220px;
    max-height: 380px;
    overflow-y: auto;
    background: white;
    border: 2px solid var(--primary-500);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-lg);
    z-index: 1001;
}
.tk-ms-panel.abierto { display: block; }
.tk-ms-seccion {
    padding: 4px 12px;
    font-size: 0.688rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--gray-500);
    background: var(--gray-100);
}
.tk-ms-opcion       { display: flex; align-items: center; gap: 8px; padding: 6px 12px; cursor: pointer; }
.tk-ms-opcion:hover { background: var(--primary-50); }
.tk-ms-overlay         { display: none; position: fixed; inset: 0; z-index: 1000; }
.tk-ms-overlay.activo  { display: block; }

/* --- Botones --------------------------------------------------------- */
.tk-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 0.6rem 1.2rem;
    border: 2px solid transparent;
    border-radius: var(--radius-md);
    font-size: 0.875rem;
    font-weight: 600;
    font-family: inherit;
    cursor: pointer;
    text-decoration: none;
    white-space: nowrap;
    transition: all var(--transition-base);
}
.tk-btn:hover:not(:disabled) { transform: translateY(-1px); box-shadow: var(--shadow-md); }
.tk-btn:disabled  { opacity: 0.4; cursor: not-allowed; }
.tk-btn-sm        { padding: 0.3rem 0.7rem; font-size: 0.75rem; }
.tk-btn-primario  { background: var(--primary-600); color: white; }
.tk-btn-verde     { background: var(--success-600); color: white; }
.tk-btn-naranja   { background: var(--warning-500); color: white; }
.tk-btn-rojo      { background: var(--error-600); color: white; }
.tk-btn-gris      { background: var(--gray-200); color: var(--gray-700); }
.tk-btn-sec       { background: white; color: var(--primary-700); border-color: var(--primary-300); }
.tk-form-inline   { display: inline; margin: 0; }

/* Acciones de cada fila del listado: botones apilados y del mismo ancho */
.tk-acc-celda { width: 1%; }
.tk-acc-celda .tk-btn,
.tk-acc-celda .tk-form-inline { display: flex; width: 100%; }
.tk-acc-celda .tk-btn { min-width: 84px; }
.tk-acc-celda > * + * { margin-top: 4px; }

/* --- Tablas ---------------------------------------------------------- */
.tk-tabla-scroll { overflow-x: auto; }
/* Tablas compactas para que quepan todas las columnas (acciones incluidas) */
.recuadro-independiente:has(.tk-tabla-scroll) { padding: var(--spacing-lg); }
.tk-tabla        { margin-top: var(--spacing-sm); }
.tk-tabla th,
.tk-tabla td     { padding: 0.6rem 0.5rem; }
.tk-tabla th     { cursor: pointer; user-select: none; font-size: 0.7rem; letter-spacing: 0.03em; }
.tk-tabla td     { font-size: 0.82rem; vertical-align: top; }
.tk-tabla tbody tr:hover { transform: none; }
.tk-orden        { font-size: 0.7rem; opacity: 0.8; }
.tk-fila-cerrada td { opacity: 0.6; }
.tk-nowrap       { white-space: nowrap; }
.tk-sin-dato     { color: var(--gray-400); font-size: 0.85em; font-weight: 400; }
.tk-vacio        { text-align: center; padding: var(--spacing-xl); color: var(--gray-500); }
.tk-novedad      { color: #7c3aed; font-size: 1.1rem; margin-left: 4px; }
.tk-dias-alerta  { color: var(--error-600); font-weight: 700; }
.tk-contador-resp {
    display: inline-block;
    margin-left: 6px;
    padding: 0 6px;
    border-radius: 9999px;
    background: var(--gray-100);
    color: var(--gray-600);
    font-size: 0.75rem;
    font-weight: 600;
}

/* --- Badges de estado y prioridad ------------------------------------ */
.tk-badge {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 700;
    white-space: nowrap;
    border: 1px solid transparent;
}
.tk-st-pend_asignar   { background: #fef3c7; color: #92400e; border-color: #fcd34d; }
.tk-st-asignado       { background: #dbeafe; color: #1e40af; border-color: #93c5fd; }
.tk-st-activo         { background: #d1fae5; color: #065f46; border-color: #6ee7b7; }
.tk-st-susp_inf_usu   { background: #ffedd5; color: #9a3412; border-color: #fdba74; }
.tk-st-susp_proveedor { background: #ede9fe; color: #5b21b6; border-color: #c4b5fd; }
.tk-st-suspendido     { background: #f3f4f6; color: #4b5563; border-color: #d1d5db; }
.tk-st-relacionado    { background: #e0f2fe; color: #075985; border-color: #7dd3fc; }
.tk-st-cerrado        { background: #e5e7eb; color: #374151; border-color: #9ca3af; }
.tk-st-anulado        { background: #fee2e2; color: #991b1b; border-color: #fca5a5; }

.tk-pr-critico     { background: #fee2e2; color: #991b1b; border-color: #dc2626; }
.tk-pr-alto        { background: #ffedd5; color: #9a3412; border-color: #ea580c; }
.tk-pr-medio       { background: #fef3c7; color: #92400e; border-color: #f59e0b; }
.tk-pr-bajo        { background: #dbeafe; color: #1e3a8a; border-color: #3b82f6; }
.tk-pr-planificado { background: #d1fae5; color: #065f46; border-color: #10b981; }

/* --- Detalle --------------------------------------------------------- */
.tk-asunto { font-size: 1.35rem; font-weight: 700; color: var(--gray-900); margin-bottom: var(--spacing-sm); }
.tk-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: var(--spacing-md); }
.tk-info-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--spacing-sm);
}
.tk-info {
    background: var(--gray-50);
    border-left: 4px solid var(--primary-500);
    border-radius: var(--radius-md);
    padding: var(--spacing-sm) var(--spacing-md);
}
.tk-info-label { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.5px; color: var(--gray-500); }
.tk-info-valor { font-weight: 600; color: var(--gray-900); min-height: 1.4em; }

.tk-gestion-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--spacing-md);
    align-items: end;
    margin-bottom: var(--spacing-md);
}
.tk-notas-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--spacing-md);
}
.tk-check {
    display: flex !important;
    align-items: center;
    gap: 8px;
    padding: 0.55rem 0.75rem;
    background: var(--primary-50);
    border-radius: var(--radius-md);
    cursor: pointer;
    text-transform: none !important;
    font-size: 0.9rem !important;
    color: var(--gray-800) !important;
}
.tk-acciones {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-md);
    padding-top: var(--spacing-md);
    border-top: 2px solid var(--gray-200);
}
.tk-relacionar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--spacing-sm);
    margin-top: var(--spacing-md);
    font-size: 0.875rem;
    color: var(--gray-600);
}
.tk-relacionar .tk-input { width: 160px; }

/* --- Adjuntos -------------------------------------------------------- */
.tk-adjuntos { list-style: none; margin: 0; padding: 0; }
.tk-adj {
    display: flex;
    align-items: center;
    gap: var(--spacing-sm);
    padding: var(--spacing-sm) var(--spacing-md);
    border-bottom: 1px solid var(--gray-200);
}
.tk-adj:last-child  { border-bottom: none; }
.tk-adj:hover       { background: var(--gray-50); }
.tk-adj-icono       { font-size: 1.25rem; }
.tk-adj-nombre      { flex: 1; font-weight: 600; color: var(--gray-800); word-break: break-all; }
.tk-adj-meta        { font-size: 0.75rem; color: var(--gray-500); white-space: nowrap; }

/* --- Conversación ---------------------------------------------------- */
.tk-hilo { display: flex; flex-direction: column; gap: var(--spacing-sm); }
.tk-msg {
    border: 1px solid var(--gray-200);
    border-left: 5px solid var(--gray-400);
    border-radius: var(--radius-md);
    padding: var(--spacing-sm) var(--spacing-md);
    background: white;
    max-width: 92%;
}
.tk-msg-cab {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-md);
    align-items: baseline;
    font-size: 0.8rem;
    margin-bottom: 4px;
}
.tk-msg-tipo   { font-weight: 700; color: var(--gray-700); }
.tk-msg-autor  { font-weight: 600; color: var(--primary-700); }
.tk-msg-fecha  { color: var(--gray-500); margin-left: auto; }
.tk-msg-asunto { font-size: 0.8rem; font-style: italic; color: var(--gray-600); margin-bottom: 4px; }
.tk-msg-texto  {
    white-space: pre-wrap;
    word-break: break-word;
    font-size: 0.875rem;
    color: var(--gray-800);
    max-height: 420px;
    overflow-y: auto;
}
/* Lo que viene del usuario a la izquierda, lo de Sistemas a la derecha */
.tk-msg-original     { border-left-color: var(--primary-600); background: var(--primary-50); }
.tk-msg-usuario,
.tk-msg-respuesta    { border-left-color: var(--primary-400); }
.tk-msg-para_usuario { border-left-color: var(--success-600); background: #f0fdf4; align-self: flex-end; }
.tk-msg-interna      { border-left-color: var(--warning-500); background: #fffbeb; align-self: flex-end; }
.tk-msg-evento       { border: none; border-left: 3px solid var(--gray-300); background: transparent; align-self: flex-end; padding: 2px var(--spacing-md); }
.tk-msg-evento .tk-msg-texto { font-size: 0.75rem; color: var(--gray-500); }

/* --- Navegación anterior / siguiente --------------------------------- */
.tk-nav {
    display: none;
    justify-content: center;
    align-items: center;
    gap: var(--spacing-lg);
    margin-top: var(--spacing-lg);
}

/* --- Reglas de asignación ------------------------------------------- */
.tk-cabecera-acciones {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-md);
    margin-bottom: var(--spacing-md);
}
.tk-cabecera-acciones .breadcrumb-link { margin-bottom: 0; }
.tk-ayuda   { font-size: 0.813rem; color: var(--gray-600); margin: 0 0 var(--spacing-md); }
.tk-codigo  { font-family: Consolas, 'Courier New', monospace; }
.tk-fila-baja td { opacity: 0.55; text-decoration: line-through; }
.tk-fila-baja td.tk-acc-celda { opacity: 1; text-decoration: none; }

.tk-cond {
    display: inline-block;
    width: 22px;
    height: 22px;
    line-height: 20px;
    margin-right: 2px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--gray-300);
    color: var(--gray-300);
    font-size: 0.75rem;
    font-weight: 700;
    text-align: center;
    cursor: default;
}
.tk-cond-on { background: var(--primary-600); border-color: var(--primary-600); color: white; cursor: help; }

.tk-modo-0 { background: #dbeafe; color: #1e40af; border-color: #93c5fd; }
.tk-modo-1 { background: #f3f4f6; color: #4b5563; border-color: #d1d5db; }
.tk-modo-2 { background: #ede9fe; color: #5b21b6; border-color: #c4b5fd; }

.tk-sync-0 { background: #d1fae5; color: #065f46; border-color: #6ee7b7; }
.tk-sync-1 { background: #dbeafe; color: #1e40af; border-color: #93c5fd; }
.tk-sync-2 { background: #fef3c7; color: #92400e; border-color: #fcd34d; }
.tk-sync-3 { background: #fee2e2; color: #991b1b; border-color: #fca5a5; }

.tk-probar {
    margin-top: var(--spacing-lg);
    padding-top: var(--spacing-md);
    border-top: 2px dashed var(--gray-200);
}
.tk-probar .tk-relacionar .tk-input { width: 110px; }
.tk-resultado-prueba { margin-top: var(--spacing-md); }

/* --- Responsive ------------------------------------------------------ */
@media (max-width: 1024px) {
    .tk-filtros-grid, .tk-gestion-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
    .tk-filtros-grid, .tk-gestion-grid, .tk-notas-grid { grid-template-columns: 1fr; }
    .tk-filtro-doble { grid-column: auto; }
    .tk-msg { max-width: 100%; }
}

/* === Tickets: estados nuevos y botón morado (añadir al final de css/ers_estilos.css) === */
.tk-st-aplazado         { background: #eef2f7; color: #475569; border: 1px solid #cbd5e1; }
.tk-st-susp_dependencia { background: #fff4e5; color: #b45309; border: 1px solid #f5c27a; }
.tk-st-susp_consulta    { background: #f3ecff; color: #6d28d9; border: 1px solid #c4b5fd; }
 
.tk-btn-morado          { background: #7c3aed; color: #fff; border: 1px solid #7c3aed; }
.tk-btn-morado:hover    { background: #6d28d9; border-color: #6d28d9; }

/* === Tickets: estados nuevos y botón morado (añadir al final de css/ers_estilos.css) === */
.tk-st-aplazado         { background: #eef2f7; color: #475569; border: 1px solid #cbd5e1; }
.tk-st-susp_dependencia { background: #fff4e5; color: #b45309; border: 1px solid #f5c27a; }
.tk-st-susp_consulta    { background: #f3ecff; color: #6d28d9; border: 1px solid #c4b5fd; }

.tk-btn-morado          { background: #7c3aed; color: #fff; border: 1px solid #7c3aed; }
.tk-btn-morado:hover    { background: #6d28d9; border-color: #6d28d9; }

/* Ficha del ticket: panel desplegable "Más opciones" */
.tk-avanzadas           { margin-top: 14px; border: 1px solid #d5dce8; border-radius: 8px; padding: 0 14px; background: #f8fafd; }
.tk-avanzadas[open]     { padding-bottom: 10px; }
.tk-avanzadas summary   { cursor: pointer; padding: 10px 0; font-weight: 600; color: #1e3a8a; list-style: none; }
.tk-avanzadas summary::-webkit-details-marker { display: none; }
.tk-avanzadas summary::before { content: '▸ '; }
.tk-avanzadas[open] summary::before { content: '▾ '; }

/* Ficha del ticket: autorespuesta en la fila de botones y tarjetas de "Más opciones" */
.tk-acciones .tk-ar       { display: inline-flex; gap: 6px; align-items: center; margin-left: auto; }
.tk-acciones .tk-ar .tk-input { width: auto; min-width: 200px; margin: 0; }
.tk-avz-grid              { display: grid; grid-template-columns: repeat(auto-fit, minmax(330px, 1fr)); gap: 12px; }
.tk-avz-card              { background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 10px 12px; }
.tk-avz-card h4           { margin: 0 0 4px; font-size: 14px; color: #1e3a8a; }
.tk-avz-card p            { margin: 0 0 8px; font-size: 12px; }
.tk-avz-fila              { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.tk-avz-fila .tk-input    { flex: 1; min-width: 160px; margin: 0; }

/* =====================================================================
   TICKETS - estilos añadidos en el evolutivo (pegar al FINAL de css/ers_estilos.css)
   ===================================================================== */

/* Estados nuevos */
.tk-st-aplazado         { background: #eef2f7; color: #475569; border: 1px solid #cbd5e1; }
.tk-st-susp_dependencia { background: #fff4e5; color: #b45309; border: 1px solid #f5c27a; }
.tk-st-susp_consulta    { background: #f3ecff; color: #6d28d9; border: 1px solid #c4b5fd; }

/* Botón morado (Consultar a otro técnico) */
.tk-btn-morado          { background: #7c3aed; color: #fff; border: 1px solid #7c3aed; }
.tk-btn-morado:hover    { background: #6d28d9; border-color: #6d28d9; }

/* Ficha: autorespuesta en la fila de botones */
.tk-acciones .tk-ar           { display: inline-flex; gap: 6px; align-items: center; margin-left: auto; }
.tk-acciones .tk-ar .tk-input { width: auto; min-width: 200px; margin: 0; }

/* Ficha: desplegable "Más opciones" */
.tk-avanzadas           { margin-top: 14px; border: 1px solid #d5dce8; border-radius: 8px; padding: 0 14px; background: #f8fafd; }
.tk-avanzadas[open]     { padding-bottom: 12px; }
.tk-avanzadas summary   { cursor: pointer; padding: 10px 0; font-weight: 600; color: #1e3a8a; list-style: none; }
.tk-avanzadas summary::-webkit-details-marker { display: none; }
.tk-avanzadas summary::before       { content: '\25B8  '; }
.tk-avanzadas[open] summary::before { content: '\25BE  '; }

/* Ficha: tarjetas de "Más opciones" */
.tk-avz-grid            { display: grid; grid-template-columns: repeat(auto-fit, minmax(330px, 1fr)); gap: 12px; }
.tk-avz-card            { background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 10px 12px; }
.tk-avz-card h4         { margin: 0 0 4px; font-size: 14px; color: #1e3a8a; }
.tk-avz-card p          { margin: 0 0 8px; font-size: 12px; }
.tk-avz-fila            { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.tk-avz-fila .tk-input  { flex: 1; min-width: 160px; margin: 0; }

/* --- Correo original como en Outlook (iframe con el .eml) --- */
.tk-correo-vista { position: relative; }
.tk-correo-cambiar { display: inline-block; margin: 2px 0 6px; font-size: 12px; color: #1E63C6; text-decoration: none; }
.tk-correo-cambiar:hover { text-decoration: underline; }
.tk-correo-frame { display: block; width: 100%; height: 300px; border: 1px solid #DCE6F5; border-radius: 6px; background: #FFFFFF; }

/* =====================================================================
   TICKETS - estilos añadidos en el evolutivo (pegar al FINAL de css/ers_estilos.css)
   ===================================================================== */

/* Estados nuevos */
.tk-st-aplazado         { background: #eef2f7; color: #475569; border: 1px solid #cbd5e1; }
.tk-st-susp_dependencia { background: #fff4e5; color: #b45309; border: 1px solid #f5c27a; }
.tk-st-susp_consulta    { background: #f3ecff; color: #6d28d9; border: 1px solid #c4b5fd; }

/* Botón morado (Consultar a otro técnico) */
.tk-btn-morado          { background: #7c3aed; color: #fff; border: 1px solid #7c3aed; }
.tk-btn-morado:hover    { background: #6d28d9; border-color: #6d28d9; }

/* Ficha: autorespuesta en la fila de botones */
.tk-acciones .tk-ar           { display: inline-flex; gap: 6px; align-items: center; margin-left: auto; }
.tk-acciones .tk-ar .tk-input { width: auto; min-width: 200px; margin: 0; }

/* Ficha: desplegable "Más opciones" */
.tk-avanzadas           { margin-top: 14px; border: 1px solid #d5dce8; border-radius: 8px; padding: 0 14px; background: #f8fafd; }
.tk-avanzadas[open]     { padding-bottom: 12px; }
.tk-avanzadas summary   { cursor: pointer; padding: 10px 0; font-weight: 600; color: #1e3a8a; list-style: none; }
.tk-avanzadas summary::-webkit-details-marker { display: none; }
.tk-avanzadas summary::before       { content: '\25B8  '; }
.tk-avanzadas[open] summary::before { content: '\25BE  '; }

/* Ficha: tarjetas de "Más opciones" */
.tk-avz-grid            { display: grid; grid-template-columns: repeat(auto-fit, minmax(330px, 1fr)); gap: 12px; }
.tk-avz-card            { background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 10px 12px; }
.tk-avz-card h4         { margin: 0 0 4px; font-size: 14px; color: #1e3a8a; }
.tk-avz-card p          { margin: 0 0 8px; font-size: 12px; }
.tk-avz-fila            { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.tk-avz-fila .tk-input  { flex: 1; min-width: 160px; margin: 0; }

/* --- Correo original como en Outlook (iframe con el .eml) --- */
.tk-correo-vista { position: relative; }
.tk-correo-cambiar { display: inline-block; margin: 2px 0 6px; font-size: 12px; color: #1E63C6; text-decoration: none; }
.tk-correo-cambiar:hover { text-decoration: underline; }
.tk-correo-frame { display: block; width: 100%; height: 300px; border: 1px solid #DCE6F5; border-radius: 6px; background: #FFFFFF; }


/* --- Buscador de soluciones (ficha y ers_tickets_soluciones.php) --- */
.tk-sol-caja > summary { cursor: pointer; list-style: none; }
.tk-sol-caja > summary::-webkit-details-marker { display: none; }
.tk-sol-caja > summary h3 { display: inline-block; margin: 0; }
.tk-sol-caja > summary h3::before { content: "▸ "; color: #1E63C6; }
.tk-sol-caja[open] > summary h3::before { content: "▾ "; }
.tk-sol { border: 1px solid #DCE6F5; border-left: 4px solid #2E7D32; border-radius: 6px; padding: 8px 12px; margin: 10px 0; background: #FBFDFF; }
.tk-sol-cab { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.tk-sol-id { font-weight: 700; color: #0B3D91; text-decoration: none; }
.tk-sol-id:hover { text-decoration: underline; }
.tk-sol-asunto { font-weight: 600; flex: 1 1 300px; }
.tk-sol-meta { font-size: 12px; color: #5F6B7A; margin: 2px 0 6px; }
.tk-sol-texto { font-size: 13px; line-height: 1.45; margin-bottom: 6px; white-space: normal; }
.tk-sol-texto mark { background: #FFF3BF; padding: 0 1px; border-radius: 2px; }
.tk-sol-buscar { display: flex; gap: 8px; margin-top: 10px; }
.tk-sol-buscar .tk-input { flex: 1; }

/* Estados nuevos */
.tk-st-aplazado         { background: #eef2f7; color: #475569; border: 1px solid #cbd5e1; }
.tk-st-susp_dependencia { background: #fff4e5; color: #b45309; border: 1px solid #f5c27a; }
.tk-st-susp_consulta    { background: #f3ecff; color: #6d28d9; border: 1px solid #c4b5fd; }

/* Botón morado (Consultar a otro técnico) */
.tk-btn-morado          { background: #7c3aed; color: #fff; border: 1px solid #7c3aed; }
.tk-btn-morado:hover    { background: #6d28d9; border-color: #6d28d9; }

/* Ficha: autorespuesta en la fila de botones */
.tk-acciones .tk-ar           { display: inline-flex; gap: 6px; align-items: center; margin-left: auto; }
.tk-acciones .tk-ar .tk-input { width: auto; min-width: 200px; margin: 0; }

/* Ficha: desplegable "Más opciones" */
.tk-avanzadas           { margin-top: 14px; border: 1px solid #d5dce8; border-radius: 8px; padding: 0 14px; background: #f8fafd; }
.tk-avanzadas[open]     { padding-bottom: 12px; }
.tk-avanzadas summary   { cursor: pointer; padding: 10px 0; font-weight: 600; color: #1e3a8a; list-style: none; }
.tk-avanzadas summary::-webkit-details-marker { display: none; }
.tk-avanzadas summary::before       { content: '\25B8  '; }
.tk-avanzadas[open] summary::before { content: '\25BE  '; }

/* Ficha: tarjetas de "Más opciones" */
.tk-avz-grid            { display: grid; grid-template-columns: repeat(auto-fit, minmax(330px, 1fr)); gap: 12px; }
.tk-avz-card            { background: #fff; border: 1px solid #e2e8f0; border-radius: 8px; padding: 10px 12px; }
.tk-avz-card h4         { margin: 0 0 4px; font-size: 14px; color: #1e3a8a; }
.tk-avz-card p          { margin: 0 0 8px; font-size: 12px; }
.tk-avz-fila            { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.tk-avz-fila .tk-input  { flex: 1; min-width: 160px; margin: 0; }

/* --- Correo original como en Outlook (iframe con el .eml) --- */
.tk-correo-vista { position: relative; }
.tk-correo-cambiar { display: inline-block; margin: 2px 0 6px; font-size: 12px; color: #1E63C6; text-decoration: none; }
.tk-correo-cambiar:hover { text-decoration: underline; }
.tk-correo-frame { display: block; width: 100%; height: 300px; border: 1px solid #DCE6F5; border-radius: 6px; background: #FFFFFF; }


/* --- Buscador de soluciones (ficha y ers_tickets_soluciones.php) --- */
.tk-sol-caja > summary { cursor: pointer; list-style: none; }
.tk-sol-caja > summary::-webkit-details-marker { display: none; }
.tk-sol-caja > summary h3 { display: inline-block; margin: 0; }
.tk-sol-caja > summary h3::before { content: "▸ "; color: #1E63C6; }
.tk-sol-caja[open] > summary h3::before { content: "▾ "; }
.tk-sol { border: 1px solid #DCE6F5; border-left: 4px solid #2E7D32; border-radius: 6px; padding: 8px 12px; margin: 10px 0; background: #FBFDFF; }
.tk-sol-cab { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.tk-sol-id { font-weight: 700; color: #0B3D91; text-decoration: none; }
.tk-sol-id:hover { text-decoration: underline; }
.tk-sol-asunto { font-weight: 600; flex: 1 1 300px; }
.tk-sol-meta { font-size: 12px; color: #5F6B7A; margin: 2px 0 6px; }
.tk-sol-texto { font-size: 13px; line-height: 1.45; margin-bottom: 6px; white-space: normal; }
.tk-sol-texto mark { background: #FFF3BF; padding: 0 1px; border-radius: 2px; }
.tk-sol-buscar { display: flex; gap: 8px; margin-top: 10px; }
.tk-sol-buscar .tk-input { flex: 1; }

/* --- Relaciones: último aviso de las repeticiones y participantes --- */
.tk-ultimo-aviso { border-left: 4px solid #D9480F; }
.tk-msg-plegado { margin: 6px 0; }
.tk-msg-plegado > summary { cursor: pointer; font-size: 13px; color: #5F6B7A; padding: 4px 8px; background: #F4F6FA; border-radius: 6px; }
.tk-contador-rep { background: #FFF1E6; color: #D9480F; }
.tk-input-corto { flex: 0 0 140px; max-width: 140px; }
.tk-cierre { margin: 12px 0 4px; padding: 10px 12px; border: 1px dashed #BFD6F7; border-radius: 6px; background: #FBFDFF; }
.tk-cierre-titulo { font-weight: 600; margin-bottom: 6px; }
.tk-cierre-lista { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-bottom: 8px; }
.tk-cierre-email { font-size: 13px; }
.tk-cierre-externo { color: #8A4B00; }
.tk-cierre-extra { width: 100%; }

/* --- Tickets: sugerencia de la IA (ficha y listado) --- */
.tk-ia { border-left: 4px solid #7c3aed; }
.tk-ia > summary { cursor: pointer; list-style: none; }
.tk-ia > summary::-webkit-details-marker { display: none; }
.tk-ia > summary h3 { margin: 0; flex-wrap: wrap; }
.tk-ia > summary h3::before { content: "▸ "; color: #7c3aed; }
.tk-ia[open] > summary h3::before { content: "▾ "; }
.tk-ia[open] > summary h3 { margin-bottom: 14px; }
.tk-ia-baja { border-left-color: #9ca3af; background: #fafafa; }
.tk-ia-fecha { font-size: 0.8rem; font-weight: 400; margin-left: auto; }
.tk-ia-aviso { font-size: 13px; color: #6b7280; font-style: italic; margin: 0 0 10px; }
.tk-ia-resumen { font-size: 13px; color: #4b5563; margin-bottom: 12px; }
.tk-ia-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; margin-bottom: 10px; }
.tk-ia-campo { border: 1px solid #ede9fe; background: #faf8ff; border-radius: 6px; padding: 8px 10px;
               display: flex; flex-direction: column; gap: 4px; align-items: flex-start; }
.tk-ia-valor { font-weight: 600; color: #1f2937; font-size: 14px; }
.tk-ia-ok { font-size: 12px; color: #2e7d32; font-weight: 600; }
.tk-ia-pie-botones { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 4px 0 12px; }
.tk-ia-solucion { border: 1px solid #ddd6fe; border-radius: 6px; padding: 10px 12px; background: #fff; margin: 8px 0; }
.tk-ia-texto { font-size: 14px; line-height: 1.5; margin-top: 4px; }
.tk-ia-refs { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 8px 0; }
.tk-ia-etiquetas { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.tk-ia-etiqueta { font-size: 11px; font-weight: 600; letter-spacing: .02em; color: #5b21b6; background: #f3f0ff;
                  border: 1px solid #ddd6fe; border-radius: 9999px; padding: 1px 8px; }
.tk-ia-conf-alta  { background: #dcfce7; color: #166534; border-color: #86efac; }
.tk-ia-conf-media { background: #fef3c7; color: #92400e; border-color: #fcd34d; }
.tk-ia-conf-baja  { background: #f3f4f6; color: #4b5563; border-color: #d1d5db; }
.tk-ia-aplicado { box-shadow: 0 0 0 2px #a78bfa !important; background: #faf8ff !important; }
.tk-ia-sugerido { font-size: 11.5px; color: #6d28d9; margin-top: 3px; white-space: nowrap; }

/* --- Tickets: sugerencia de la IA (ficha y listado) --- */
.tk-ia { border-left: 4px solid #7c3aed; }
.tk-ia > summary { cursor: pointer; list-style: none; }
.tk-ia > summary::-webkit-details-marker { display: none; }
.tk-ia > summary h3 { margin: 0; flex-wrap: wrap; }
.tk-ia > summary h3::before { content: "▸ "; color: #7c3aed; }
.tk-ia[open] > summary h3::before { content: "▾ "; }
.tk-ia[open] > summary h3 { margin-bottom: 14px; }
.tk-ia-baja { border-left-color: #9ca3af; background: #fafafa; }
.tk-ia-fecha { font-size: 0.8rem; font-weight: 400; margin-left: auto; }
.tk-ia-aviso { font-size: 13px; color: #6b7280; font-style: italic; margin: 0 0 10px; }
.tk-ia-resumen { font-size: 13px; color: #4b5563; margin-bottom: 12px; }
.tk-ia-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; margin-bottom: 10px; }
.tk-ia-campo { border: 1px solid #ede9fe; background: #faf8ff; border-radius: 6px; padding: 8px 10px;
               display: flex; flex-direction: column; gap: 4px; align-items: flex-start; }
.tk-ia-valor { font-weight: 600; color: #1f2937; font-size: 14px; }
.tk-ia-ok { font-size: 12px; color: #2e7d32; font-weight: 600; }
.tk-ia-pie-botones { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 4px 0 12px; }
.tk-ia-solucion { border: 1px solid #ddd6fe; border-radius: 6px; padding: 10px 12px; background: #fff; margin: 8px 0; }
.tk-ia-texto { font-size: 14px; line-height: 1.5; margin-top: 4px; }
.tk-ia-refs { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 8px 0; }
.tk-ia-etiquetas { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.tk-ia-etiqueta { font-size: 11px; font-weight: 600; letter-spacing: .02em; color: #5b21b6; background: #f3f0ff;
                  border: 1px solid #ddd6fe; border-radius: 9999px; padding: 1px 8px; }
.tk-ia-conf-alta  { background: #dcfce7; color: #166534; border-color: #86efac; }
.tk-ia-conf-media { background: #fef3c7; color: #92400e; border-color: #fcd34d; }
.tk-ia-conf-baja  { background: #f3f4f6; color: #4b5563; border-color: #d1d5db; }
.tk-ia-aplicado { box-shadow: 0 0 0 2px #a78bfa !important; background: #faf8ff !important; }
.tk-ia-sugerido { font-size: 11.5px; color: #6d28d9; margin-top: 3px; white-space: nowrap; }

/* --- Tickets: documentación del cierre (diálogo al pulsar Responder y cerrar) --- */
.tk-doc { width: min(760px, calc(100vw - 32px)); max-height: calc(100vh - 32px); border: none; border-radius: 10px;
          padding: 20px 22px; box-shadow: 0 12px 40px rgba(0, 0, 0, .25); border-top: 4px solid #2e7d32; }
.tk-doc::backdrop { background: rgba(17, 24, 39, .45); }
.tk-doc h3 { margin: 0 0 4px; }
.tk-doc label { display: block; font-size: 13px; font-weight: 600; color: #1f2937; margin: 12px 0 4px; }
.tk-doc-ayuda { font-size: 13px; color: #4b5563; margin: 6px 0 4px; }
.tk-doc-campo { width: 100%; box-sizing: border-box; resize: vertical; font-size: 13px; }
.tk-doc-codigo { font-family: Consolas, "Courier New", monospace; font-size: 12.5px; }
.tk-doc-botones { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; margin-top: 16px; }

/* --- Tickets: adjuntar ficheros en las fichas (añadir al final de ers_estilos.css) --- */
.tk-adj-input { display: none; }
.tk-adj-subir { margin: 6px 0 12px; }
.tk-adj-zona {
    display: block;
    border: 2px dashed #9fb6dc;
    border-radius: 8px;
    padding: 14px;
    text-align: center;
    background: #f7faff;
    color: #1f3b6e;
    cursor: pointer;
    transition: background .15s, border-color .15s;
}
.tk-adj-zona:hover,
.tk-adj-zona.tk-adj-encima { background: #e6effc; border-color: #2a5bb5; }
.tk-adj-elegidos { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px; }
.tk-adj-elegido {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border: 1px solid #c9d7ee;
    border-radius: 6px;
    padding: 3px 4px 3px 8px;
    background: #fff;
    font-size: 13px;
}
.tk-adj-quitar {
    border: none;
    background: #b3261e;
    color: #fff;
    border-radius: 50%;
    width: 20px;
    height: 20px;
    line-height: 18px;
    cursor: pointer;
    padding: 0;
}

/* ==================================================================================================================
   Ticket XXXX - Menu principal por areas (ers_menu.php). AÑADIR al final de css/ers_estilos.css. Prefijo mn-.
   ================================================================================================================== */

.mn-body { background: #f4f6f9; }

.mn-header {
    position: sticky; top: 0; z-index: 1000; display: flex; align-items: center; gap: var(--spacing-lg);
    padding: 10px var(--spacing-xl); background: rgb(0, 43, 92); color: #fff; box-shadow: var(--shadow-md);
}
.mn-header .logo { height: 44px; }
.mn-marca { display: flex; }

.mn-nav { flex: 1; }
.mn-nav > ul { list-style: none; display: flex; gap: 4px; margin: 0; padding: 0; }
.mn-sec { position: relative; }
.mn-sec-btn {
    background: none; border: 0; color: #fff; font: inherit; font-weight: 600; font-size: 0.95rem;
    padding: 10px 14px; border-radius: var(--radius-md); cursor: pointer;
}
.mn-sec-btn span { font-size: 0.7rem; opacity: 0.8; }
.mn-sec-btn:hover, .mn-sec.mn-abierto .mn-sec-btn, .mn-sec-btn:focus-visible { background: rgba(255, 255, 255, 0.14); outline: none; }
.mn-sub {
    display: none; position: absolute; top: calc(100% + 6px); left: 0; min-width: 300px; list-style: none; margin: 0;
    padding: 6px; background: #fff; border-radius: var(--radius-lg); box-shadow: var(--shadow-xl); border: 1px solid var(--gray-200);
}
.mn-sec.mn-abierto .mn-sub { display: block; }
@media (hover: hover) and (min-width: 901px) {
    .mn-sec:hover .mn-sub { display: block; }
    .mn-sec::after { content: ''; position: absolute; left: 0; right: 0; top: 100%; height: 8px; }   /* puente del hover */
}
.mn-sub a { display: flex; flex-direction: column; padding: 9px 12px; border-radius: var(--radius-md); text-decoration: none; color: var(--gray-900); }
.mn-sub a strong { font-size: 0.92rem; font-weight: 600; }
.mn-sub a span { font-size: 0.8rem; color: var(--gray-500); }
.mn-sub a:hover, .mn-sub a:focus-visible { background: #e8eef6; outline: none; }

.mn-usuario { display: flex; align-items: center; gap: 10px; margin-left: auto; white-space: nowrap; }
.mn-avatar {
    width: 34px; height: 34px; border-radius: 50%; background: #fff; color: rgb(0, 43, 92); font-weight: 700; font-size: 0.85rem;
    display: inline-flex; align-items: center; justify-content: center;
}
.mn-nombre { font-size: 0.9rem; opacity: 0.95; }
.mn-salir { color: #fff; text-decoration: none; font-size: 0.85rem; border: 1px solid rgba(255, 255, 255, 0.5); padding: 5px 12px; border-radius: var(--radius-md); }
.mn-salir:hover { background: rgba(255, 255, 255, 0.14); }
.mn-test { background: var(--warning-500); color: #fff; font-weight: 700; padding: 3px 10px; border-radius: var(--radius-md); letter-spacing: 0.1em; }
.mn-hamburguesa { display: none; background: none; border: 0; color: #fff; font-size: 1.6rem; cursor: pointer; }

.mn-main { max-width: 1200px; margin: var(--spacing-xl) auto; padding: 0 var(--spacing-xl); }
.mn-bienvenida { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--spacing-lg); flex-wrap: wrap; margin-bottom: var(--spacing-xl); }
.mn-bienvenida h1 { color: rgb(0, 43, 92); font-size: 1.7rem; margin: 0; }
.mn-bienvenida p { color: var(--gray-500); margin: 4px 0 0; }
.mn-buscar {
    min-width: 280px; padding: 11px 14px; border: 1px solid var(--gray-300); border-radius: var(--radius-lg);
    font: inherit; background: #fff; box-shadow: var(--shadow-sm);
}
.mn-buscar:focus { outline: 2px solid #e8eef6; border-color: rgb(0, 43, 92); }

.mn-areas { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--spacing-lg); align-items: start; }
.mn-area { background: #fff; border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); border-top: 4px solid var(--mn-color); padding: var(--spacing-lg); }
.mn-area h2 { font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--mn-color); margin: 0 0 var(--spacing-md); }
.mn-opciones { display: grid; gap: 6px; }
.mn-opcion { display: flex; gap: 12px; align-items: center; padding: 10px; border-radius: var(--radius-md); text-decoration: none; color: var(--gray-900); transition: background var(--transition-fast); }
.mn-opcion:hover, .mn-opcion:focus-visible { background: #f1f5fa; outline: none; }
.mn-icono {
    flex: 0 0 40px; height: 40px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 0.85rem; color: var(--mn-color); background: var(--mn-fondo);
}
.mn-texto { display: flex; flex-direction: column; }
.mn-texto strong { font-weight: 600; font-size: 0.95rem; }
.mn-texto span { color: var(--gray-500); font-size: 0.82rem; }
.mn-sin-resultados { text-align: center; color: var(--gray-500); margin: var(--spacing-xl) 0; }

.mn-c-general    { --mn-color: rgb(0, 43, 92);  --mn-fondo: #e8eef6; }
.mn-c-comercial  { --mn-color: #0f766e;        --mn-fondo: #ccfbf1; }
.mn-c-rrhh       { --mn-color: #7c3aed;        --mn-fondo: #ede9fe; }
.mn-c-financiero { --mn-color: #b45309;        --mn-fondo: #fef3c7; }
.mn-c-sistemas   { --mn-color: #475569;        --mn-fondo: #e2e8f0; }

@media (max-width: 900px) {
    .mn-header { flex-direction: row !important; flex-wrap: wrap; align-items: center !important; justify-content: space-between;
                 text-align: left; padding: 10px var(--spacing-md) !important; gap: var(--spacing-sm); }
    .mn-header .logo { height: 36px; }
    .mn-test { order: 1; font-size: 0.75rem; }
    .mn-hamburguesa { display: block; order: 3; }
    .mn-usuario { order: 2; margin-left: auto; }
    .mn-nombre { display: none; }
    .mn-nav { display: none; order: 4; flex-basis: 100%; }
    .mn-nav.mn-nav-abierto { display: block; }
    .mn-nav > ul { flex-direction: column; }
    .mn-sec-btn { width: 100%; text-align: left; }
    .mn-sub { position: static; box-shadow: none; min-width: 0; margin: 4px 0 8px; }
    .mn-main { padding: 0 var(--spacing-md); margin: var(--spacing-lg) auto; }
    .mn-buscar { min-width: 0; width: 100%; font-size: 16px; }
    .mn-areas { grid-template-columns: 1fr; }
}

/* ==================================================================================================================
   Ticket XXXX - Alta de empleados (ers_alta_empleado*.php)
   AÑADIR al final de css/ers_estilos.css (una sola hoja de estilos). Prefijo ne- para no chocar con nada.
   Azul corporativo rgb(0,43,92). Rojo solo para errores; avisos en ambar.
   ================================================================================================================== */

:root {
    --ne-azul: rgb(0, 43, 92);
    --ne-azul-claro: #e8eef6;
}

.ne-body header { position: relative; }
.ne-marca-test {
    margin-left: auto; background: var(--warning-500); color: #fff; font-weight: 700;
    padding: 4px 12px; border-radius: var(--radius-md); letter-spacing: 0.1em;
}
.ne-main-estrecho { max-width: 900px; }

.ne-tarjeta {
    background: #fff; border: 1px solid var(--gray-200); border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm); padding: var(--spacing-lg); margin-bottom: var(--spacing-lg);
}
.ne-tarjeta h3 {
    color: var(--ne-azul); font-size: 1.1rem; margin-bottom: var(--spacing-md);
    display: flex; align-items: center; gap: var(--spacing-sm); flex-wrap: wrap;
}
.ne-resumen { display: flex; flex-wrap: wrap; gap: var(--spacing-lg); }
.ne-resumen > div { display: flex; flex-direction: column; min-width: 140px; }
.ne-sub { color: var(--gray-500); font-size: 0.82rem; }

/* Formularios */
.ne-form fieldset { border: 0; padding: 0; margin: 0; }
.ne-rejilla { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: var(--spacing-md); }
.ne-rejilla label { display: flex; flex-direction: column; gap: 4px; font-size: 0.88rem; font-weight: 600; color: var(--gray-700); }
.ne-rejilla input, .ne-rejilla select {
    font: inherit; font-weight: 400; padding: 9px 10px; border: 1px solid var(--gray-300);
    border-radius: var(--radius-md); background: #fff; color: var(--gray-900); min-height: 40px;
}
.ne-rejilla input:focus, .ne-rejilla select:focus { outline: 2px solid var(--ne-azul-claro); border-color: var(--ne-azul); }
.ne-form fieldset[disabled] input, .ne-form fieldset[disabled] select { background: var(--gray-50); color: var(--gray-700); }
.ne-ancho { grid-column: 1 / -1; }
.ne-ayuda { font-weight: 400; color: var(--gray-500); font-size: 0.8rem; }
.ne-check { flex-direction: row !important; align-items: flex-start; gap: 8px !important; font-weight: 400 !important; }
.ne-check input { min-height: auto !important; margin-top: 3px; }
.ne-pwd { font-weight: 400; color: var(--gray-700); padding: 9px 0; }

/* Botones */
.ne-botones { display: flex; gap: var(--spacing-md); justify-content: flex-end; flex-wrap: wrap; margin-top: var(--spacing-md); }
.ne-botones.ne-izq { justify-content: flex-start; align-items: center; }
.ne-btn, .ne-btn-sec, .ne-btn-peligro {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px; font: inherit; font-weight: 600;
    padding: 10px 20px; border-radius: var(--radius-md); cursor: pointer; text-decoration: none; min-height: 42px;
}
.ne-btn { background: var(--ne-azul); color: #fff; border: 1px solid var(--ne-azul); }
.ne-btn:hover { filter: brightness(1.15); }
.ne-btn-sec { background: #fff; color: var(--ne-azul); border: 1px solid var(--ne-azul); }
.ne-btn-sec:hover { background: var(--ne-azul-claro); }
.ne-btn-peligro { background: #fff; color: var(--error-600); border: 1px solid var(--error-600); }
.ne-btn-link { background: none; border: 0; color: var(--ne-azul); text-decoration: underline; cursor: pointer; font: inherit; font-size: 0.85rem; }
.ne-inline { display: inline-flex; gap: var(--spacing-sm); align-items: center; }
.ne-cancelar input { padding: 9px 10px; border: 1px solid var(--gray-300); border-radius: var(--radius-md); min-width: 220px; }

.ne-aviso {
    background: #fffbeb; border-left: 4px solid var(--warning-500); color: #92400e;
    padding: var(--spacing-md) var(--spacing-lg); border-radius: var(--radius-lg); margin-bottom: var(--spacing-lg);
}
.error ul, .ne-aviso ul { margin: 0; padding-left: 1.2rem; }

/* Semaforos y estados */
.ne-leyenda { display: flex; gap: var(--spacing-sm); flex-wrap: wrap; margin: 0 0 var(--spacing-md); }
.ne-semaforos { display: flex; gap: 6px; flex-wrap: wrap; }
.ne-sem {
    display: inline-block; font-size: 0.75rem; font-weight: 600; padding: 3px 9px; border-radius: 999px;
    border: 1px solid var(--gray-300); white-space: nowrap;
}
.ne-sem-pend  { background: #fff; color: var(--gray-700); }
.ne-sem-curso { background: #fef3c7; color: #92400e; border-color: #fcd34d; }
.ne-sem-ok    { background: #d1fae5; color: #065f46; border-color: #6ee7b7; }
.ne-sem-na    { background: var(--gray-100); color: var(--gray-400); border-color: var(--gray-200); }
.ne-sem-error { background: #fee2e2; color: var(--error-600); border-color: #fca5a5; }
.ne-estado { display: inline-block; font-weight: 600; font-size: 0.85rem; padding: 4px 10px; border-radius: var(--radius-md); }
.ne-estado-ok    { background: #d1fae5; color: #065f46; }
.ne-estado-curso { background: #fef3c7; color: #92400e; }
.ne-estado-pend  { background: var(--gray-100); color: var(--gray-700); }
.ne-estado-na    { background: var(--gray-100); color: var(--gray-500); }
.ne-estado-error { background: #fee2e2; color: var(--error-600); }
.ne-cabecera-alta { display: flex; justify-content: space-between; align-items: center; gap: var(--spacing-md); flex-wrap: wrap; }

/* Listado */
.ne-tabla-wrap { background: #fff; border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); overflow-x: auto; }
.ne-tabla { width: 100%; border-collapse: collapse; font-size: 0.9rem; }
.ne-tabla th { background: var(--ne-azul); color: #fff; text-align: left; padding: 10px 12px; font-weight: 600; }
.ne-tabla .ne-filtros-col th { background: var(--ne-azul-claro); padding: 6px 12px; }
.ne-tabla .ne-filtros-col input { width: 100%; padding: 5px 8px; border: 1px solid var(--gray-300); border-radius: var(--radius-sm); font: inherit; }
.ne-tabla td { padding: 10px 12px; border-bottom: 1px solid var(--gray-100); vertical-align: top; }
.ne-tabla tbody tr { cursor: pointer; }
.ne-tabla tbody tr:hover { background: var(--ne-azul-claro); }
.ne-ordenable { cursor: pointer; user-select: none; }
.ne-ordenable::after { content: ' ⇅'; opacity: 0.6; font-size: 0.8em; }

/* Ficha */
.ne-columnas { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--spacing-lg); }
.ne-columnas .ne-tarjeta { margin-bottom: 0; }
.ne-columnas + .ne-tarjeta, .ne-columnas { margin-bottom: var(--spacing-lg); }
.ne-dato { display: flex; flex-direction: column; margin-bottom: 8px; }
.ne-pre { white-space: pre-wrap; font-family: Consolas, monospace; font-size: 0.82rem; background: var(--gray-50);
          padding: var(--spacing-md); border-radius: var(--radius-md); max-height: 320px; overflow: auto; margin: 8px 0; }
.ne-enlaces { list-style: none; padding: 0; margin: 0 0 var(--spacing-md); }
.ne-enlaces li { padding: 6px 0; display: flex; gap: var(--spacing-md); align-items: center; flex-wrap: wrap; }
.ne-enlaces a { color: var(--ne-azul); font-weight: 600; }

/* Documentos */
.ne-docs { display: grid; gap: var(--spacing-md); }
.ne-doc { border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: var(--spacing-md); background: #fff; }
.ne-doc-oblig { border-left: 4px solid var(--warning-500); }
.ne-doc-ok { border-left: 4px solid var(--success-500); }
.ne-doc-cab { display: flex; justify-content: space-between; gap: var(--spacing-sm); align-items: center; }
.ne-doc-titulo { font-weight: 600; color: var(--gray-800); }
.ne-doc-marca { font-size: 0.72rem; font-weight: 700; color: #92400e; background: #fef3c7; padding: 2px 8px; border-radius: 999px; }
.ne-doc-ok .ne-doc-marca { color: #065f46; background: #d1fae5; }
.ne-doc-lista { list-style: none; padding: 0; margin: 8px 0; }
.ne-doc-lista li { display: flex; gap: 8px; align-items: center; padding: 4px 0; word-break: break-all; }
.ne-doc-lista a { color: var(--ne-azul); }
.ne-doc-borrar { border: 0; background: none; color: var(--gray-500); cursor: pointer; font-size: 1rem; padding: 2px 6px; }
.ne-doc-borrar:hover { color: var(--error-600); }
.ne-doc-zona {
    border: 2px dashed var(--gray-300); border-radius: var(--radius-md); padding: var(--spacing-md);
    display: flex; gap: var(--spacing-sm); align-items: center; justify-content: center; flex-wrap: wrap;
    color: var(--gray-500); font-size: 0.88rem; transition: background var(--transition-fast);
}
.ne-doc-zona.ne-arrastrando { background: var(--ne-azul-claro); border-color: var(--ne-azul); }
.ne-doc-zona .ne-btn-sec { min-height: 36px; padding: 6px 14px; font-size: 0.85rem; }
.ne-doc-progreso { height: 6px; background: var(--gray-100); border-radius: 3px; overflow: hidden; margin-top: 8px; }
.ne-doc-progreso > div { height: 100%; width: 0; background: var(--ne-azul); transition: width var(--transition-fast); }
.ne-doc-error { color: var(--error-600); font-size: 0.85rem; margin-top: 6px; }
.ne-solo-movil { display: none !important; }

@media (max-width: 768px) {
    main, .ne-main-estrecho { padding: 0 var(--spacing-md); margin: var(--spacing-md) auto; }
    header { padding: var(--spacing-md); }
    .header-text h1 { font-size: 1.25rem; }
    .logo { height: 44px; }
    .ne-tarjeta { padding: var(--spacing-md); }
    .ne-rejilla { grid-template-columns: 1fr; }
    .ne-botones { flex-direction: column-reverse; }
    .ne-botones .ne-btn, .ne-botones .ne-btn-sec { width: 100%; }
    .ne-doc-zona > span { display: none; }
    .ne-solo-movil { display: inline-flex !important; }
    .ne-rejilla input, .ne-rejilla select { font-size: 16px; }   /* sin zoom automatico en iPhone */
}

/* Aprobacion de RRHH y devolucion al empleado */
.ne-aprobar { background: #f1f5fa; border-radius: var(--radius-md); padding: var(--spacing-md); margin-bottom: var(--spacing-md); }
.ne-aprobar p { margin: 0 0 var(--spacing-sm); }
.ne-devolver { display: flex; gap: var(--spacing-sm); align-items: flex-start; flex-wrap: wrap; margin-top: var(--spacing-sm); }
.ne-devolver textarea { flex: 1; min-width: 220px; font: inherit; padding: 8px 10px; border: 1px solid var(--gray-300); border-radius: var(--radius-md); }

/* Ficha del empleado (ers_rrhh_empleado_detalle.php): cambios pendientes de aplicar en ERS y rechazados */
.ne-rejilla label.de-pendiente input, .ne-rejilla label.de-pendiente select { border-color: var(--warning-500); background: #fffbeb; }
.ne-rejilla label.de-error input, .ne-rejilla label.de-error select { border-color: var(--error-600); background: #fef2f2; }
.ne-rejilla label.de-error .ne-ayuda, .de-txt-error { color: var(--error-600); }
.de-fila-error td { background: #fef2f2; }

/* ---- Empleado modelo (landing de Sistemas, ticket XXXX) ---- */
.ne-propuesta { background: #eef4fb; border-left: 4px solid rgb(0, 43, 92); padding: 10px 14px; border-radius: 4px; margin: 8px 0 14px; }
.ne-modelo { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-top: 12px; }
.ne-modelo h4 { margin: 0 0 6px; font-size: .9rem; color: rgb(0, 43, 92); }
.ne-modelo ul { margin: 0; padding-left: 1.1rem; font-size: .85rem; max-height: 220px; overflow-y: auto; }
.ne-modelo li { margin: 2px 0; word-break: break-word; }

/* ---- Mis datos (ticket XXXX) ---- */
.md-solo-lectura { box-shadow: none; padding: 0; margin: 0; }
.md-tabla tbody tr { cursor: default; }

/* ---- v2: aviso discreto de sincronizacion con ERS (status_www) y documentos ya guardados en ERS ---- */
.ne-sync { font-size: 0.82rem; color: #92400e; background: #fffbeb; border: 1px solid #fde68a; border-radius: var(--radius-md);
           padding: 4px 10px; margin: 0 0 var(--spacing-md); display: inline-block; }
.ne-sync-marca { font-size: 0.75rem; color: #92400e; white-space: nowrap; }
.ne-doc-ers span:first-child { color: #065f46; font-weight: 600; }

/* ==========================================================================
   Ticket XXXX - Filtros, barra superior y boton de alta de las consultas
   (antes solo en el <style> de ers_rrhh_empleados_consulta.php; ahora comunes)
   ========================================================================== */
.filtros-container {
    background: white;
    border-radius: var(--radius-lg);
    padding: var(--spacing-md);
    margin-bottom: var(--spacing-lg);
    box-shadow: var(--shadow-sm);
    border: 1px solid var(--gray-200);
    display: flex;
    gap: var(--spacing-md);
    align-items: flex-end;
    flex-wrap: wrap;
}

.filtro-grupo {
    flex: 1;
    min-width: 200px;
}

.filtro-grupo label {
    display: block;
    font-size: 0.813rem;
    font-weight: 600;
    color: var(--gray-700);
    margin-bottom: var(--spacing-xs);
    text-transform: uppercase;
    letter-spacing: 0.025em;
}

.filtro-grupo input,
.filtro-grupo select {
    width: 100%;
    padding: var(--spacing-sm) var(--spacing-md);
    border: 1px solid var(--gray-300);
    border-radius: var(--radius-md);
    font-size: 0.938rem;
    transition: all var(--transition-base);
}

.filtro-grupo input:focus,
.filtro-grupo select:focus {
    outline: none;
    border-color: var(--primary-500);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

.filtros-botones {
    display: flex;
    gap: var(--spacing-sm);
}

.btn-filtrar,
.btn-limpiar {
    padding: var(--spacing-sm) var(--spacing-lg);
    border: none;
    border-radius: var(--radius-md);
    font-size: 0.875rem;
    font-weight: 600;
    cursor: pointer;
    transition: all var(--transition-base);
    text-transform: uppercase;
    letter-spacing: 0.025em;
}

.btn-filtrar {
    background: linear-gradient(135deg, var(--primary-600) 0%, var(--primary-500) 100%);
    color: white;
}

.btn-filtrar:hover {
    background: linear-gradient(135deg, var(--primary-700) 0%, var(--primary-600) 100%);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}

.btn-limpiar {
    background: white;
    color: var(--gray-700);
    border: 1px solid var(--gray-300);
}

.btn-limpiar:hover {
    background: var(--gray-100);
    border-color: var(--gray-400);
}


.sin-datos {
    text-align: center;
    padding: var(--spacing-2xl);
    color: var(--gray-500);
    font-style: italic;
}

.barra-superior {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--spacing-md);
    flex-wrap: wrap;
    margin-bottom: var(--spacing-md);
}

.barra-superior .breadcrumb-link {
    margin-bottom: 0;
}

.btn-nuevo-usuario {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: var(--spacing-sm) var(--spacing-lg);
    background: linear-gradient(135deg, #059669 0%, #10b981 100%);
    color: white;
    border-radius: var(--radius-md);
    font-size: 0.875rem;
    font-weight: 600;
    text-decoration: none;
    text-transform: uppercase;
    letter-spacing: 0.025em;
    box-shadow: var(--shadow-sm);
    transition: all var(--transition-base);
}

.btn-nuevo-usuario:hover {
    background: linear-gradient(135deg, #047857 0%, #059669 100%);
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}

/* ==================================================================================================================
   Ticket XXXX - Mantenimiento de empleados (ers_rrhh_empleados_consulta.php). Prefijo me-.
   Mismo estilo que el menu (barra mn-header, tarjetas blancas con borde de color del area: RRHH, .mn-c-rrhh).
   Etiquetas de situacion con ne-estado-*: ambar baja solicitada, gris de baja; rojo solo errores.
   v5: agrupado por departamento como el listin (una tarjeta y una tabla compacta por grupo) y tabla de ancho fijo
   (table-layout: fixed) para que quepa sin scroll horizontal.
   ================================================================================================================== */
.me-main { max-width: 1400px; }
.me-oculto { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* Cabecera de la pagina (tambien la usan las fichas, fi-) */
.me-cabecera { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--spacing-lg); flex-wrap: wrap; margin-bottom: var(--spacing-lg); }
.me-cabecera h1 { color: rgb(0, 43, 92); font-size: 1.7rem; margin: 0; line-height: 1.2; }
.me-miga { font-size: 0.8rem; color: var(--gray-500); margin: 0 0 4px; }
.me-miga a { color: var(--mn-color, rgb(0, 43, 92)); text-decoration: none; font-weight: 600; }
.me-miga a:hover { text-decoration: underline; }
.me-subtitulo { color: var(--gray-500); margin: 4px 0 0; }
.me-acciones { display: flex; gap: var(--spacing-sm); flex-wrap: wrap; }
.me-mensaje { padding: var(--spacing-md) var(--spacing-lg); border-radius: var(--radius-lg); margin-bottom: var(--spacing-lg); }

/* Indicadores */
.me-indicadores { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--spacing-lg); margin-bottom: var(--spacing-lg); }
.me-indicador {
    display: flex; flex-direction: column; align-items: flex-start; gap: 2px; text-align: left; font: inherit; color: var(--gray-900);
    background: #fff; border: 0; border-top: 4px solid var(--me-ind-color); border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm); padding: var(--spacing-md) var(--spacing-lg); cursor: pointer; text-decoration: none;
    transition: box-shadow var(--transition-fast), transform var(--transition-fast);
}
.me-indicador:hover, .me-indicador:focus-visible { box-shadow: var(--shadow-md); transform: translateY(-1px); outline: none; }
.me-ind-num { font-size: 1.9rem; font-weight: 700; line-height: 1.1; color: var(--me-ind-color); }
.me-ind-txt { font-size: 0.82rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--gray-500); }
.me-ind-activos { --me-ind-color: var(--mn-color, #7c3aed); }
.me-ind-altas   { --me-ind-color: rgb(0, 43, 92); }
.me-ind-bajas   { --me-ind-color: var(--warning-600); }

/* Barra de filtros compacta */
.me-filtros {
    display: flex; gap: var(--spacing-sm); align-items: center; flex-wrap: wrap; background: #fff; border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm); padding: 10px var(--spacing-md); margin-bottom: var(--spacing-lg);
}
.me-filtros input[type="search"], .me-filtros select {
    font: inherit; font-size: 0.92rem; padding: 8px 12px; border: 1px solid var(--gray-300); border-radius: var(--radius-md);
    background: #fff; color: var(--gray-900); min-height: 40px;
}
.me-filtros input[type="search"]:focus, .me-filtros select:focus { outline: 2px solid #e8eef6; border-color: rgb(0, 43, 92); }
.me-buscar { flex: 2 1 320px; min-width: 0; }
.me-filtros select { flex: 1 1 220px; min-width: 0; }
.me-segmentos { display: inline-flex; border: 1px solid var(--gray-300); border-radius: var(--radius-md); overflow: hidden; }
.me-segmentos label { position: relative; cursor: pointer; }
.me-segmentos input { position: absolute; opacity: 0; pointer-events: none; }
.me-segmentos span { display: inline-block; padding: 8px 14px; font-size: 0.88rem; font-weight: 600; color: var(--gray-700); min-height: 38px; line-height: 22px; }
.me-segmentos label + label span { border-left: 1px solid var(--gray-300); }
.me-segmentos input:checked + span { background: rgb(0, 43, 92); color: #fff; }
.me-segmentos input:focus-visible + span { outline: 2px solid var(--primary-300); outline-offset: -2px; }
.me-limpiar { background: none; border: 0; color: rgb(0, 43, 92); font: inherit; font-size: 0.88rem; cursor: pointer; padding: 8px 6px; text-decoration: underline; }
.me-chip {
    display: inline-flex; align-items: center; gap: 6px; font: inherit; font-size: 0.82rem; font-weight: 600; cursor: pointer;
    background: #fef3c7; color: #92400e; border: 1px solid #fcd34d; border-radius: 999px; padding: 5px 12px;
}
.me-chip[hidden] { display: none; }
.me-chip:hover, .me-chip:focus-visible { background: #fde68a; outline: none; }

/* Lista: un grupo (tarjeta) por departamento */
.me-lista-cab { display: flex; justify-content: space-between; align-items: center; gap: var(--spacing-md); flex-wrap: wrap; padding: 0 2px var(--spacing-sm); font-size: 0.85rem; color: var(--gray-500); }
.me-leyenda { display: inline-flex; gap: var(--spacing-md); align-items: center; }
.me-grupo {
    background: #fff; border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); border-top: 4px solid var(--mn-color, rgb(0, 43, 92));
    margin-bottom: var(--spacing-lg); overflow: hidden;
}
.me-grupo[hidden] { display: none; }
.me-grupo-titulo {
    display: flex; align-items: center; gap: var(--spacing-sm); margin: 0; padding: 12px var(--spacing-md);
    font-size: 1rem; font-weight: 700; color: rgb(0, 43, 92); border-bottom: 1px solid var(--gray-200);
}
.me-grupo-num {
    font-size: 0.75rem; font-weight: 700; line-height: 1; padding: 4px 9px; border-radius: 999px;
    background: var(--mn-fondo, #e8eef6); color: var(--mn-color, rgb(0, 43, 92));
}
.me-tabla {
    width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 0.88rem;
    margin: 0; border: 0; border-radius: 0; box-shadow: none; overflow: visible; background: #fff;
}
.me-tabla col.me-c-emp    { width: 30%; }
.me-tabla col.me-c-puesto { width: 22%; }
.me-tabla col.me-c-resp   { width: 19%; }
.me-tabla col.me-c-acc    { width: 40px; }
.me-tabla th {
    text-align: left; font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--gray-500);
    background: var(--gray-50); padding: 8px 12px; border-bottom: 1px solid var(--gray-200); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.me-tabla td { padding: 9px 12px; border-bottom: 1px solid var(--gray-100); vertical-align: middle; font-size: 0.88rem; color: var(--gray-700); overflow-wrap: anywhere; }
.me-tabla tbody tr:last-child td { border-bottom: 0; }
.me-tabla td a { color: rgb(0, 43, 92); text-decoration: none; }
.me-tabla td a:hover { text-decoration: underline; }
.me-tabla tbody tr { cursor: pointer; transition: background var(--transition-fast); }
.me-tabla tbody tr:hover { background: #f1f5fa; transform: none; box-shadow: none; }   /* sin el scale(1.01) general de las tablas */
.me-tabla tbody tr[hidden] { display: none !important; }
.me-tabla a.me-nombre { font-weight: 600; color: var(--gray-900); }
.me-tabla a.me-nombre:focus-visible { outline: 2px solid rgb(0, 43, 92); outline-offset: 2px; border-radius: 2px; }
.me-sub { display: block; font-size: 0.78rem; color: var(--gray-500); line-height: 1.3; }
.me-tabla .ne-sem { font-size: 0.7rem; padding: 1px 7px; margin-left: 4px; }
.me-tabla .ne-estado { font-size: 0.72rem; padding: 1px 8px; margin-left: 4px; white-space: nowrap; vertical-align: 1px; }
.me-vacio { color: var(--gray-400); font-style: italic; }
.me-contacto a { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.me-contacto a.me-movil { font-size: 0.8rem; color: var(--gray-600); }
.me-col-acc { text-align: center; padding-left: 0 !important; padding-right: 8px !important; }
.me-ir { font-size: 1.3rem; line-height: 1; color: var(--gray-300); }
.me-tabla tbody tr:hover .me-ir { color: rgb(0, 43, 92); }

/* Pantallas medianas: algo mas de aire para el nombre */
@media screen and (max-width: 1100px) {
    .me-tabla col.me-c-emp    { width: 32%; }
    .me-tabla col.me-c-puesto { width: 20%; }
    .me-tabla col.me-c-resp   { width: 18%; }
    .me-tabla th, .me-tabla td { padding-left: 8px; padding-right: 8px; }
}

/* Movil: una tarjeta por empleado dentro de cada grupo */
@media screen and (max-width: 900px) {
    .me-cabecera { align-items: stretch; }
    .me-cabecera h1 { font-size: 1.4rem; }
    .me-acciones { width: 100%; }
    .me-acciones a { flex: 1 1 auto; }
    .me-indicadores { gap: var(--spacing-sm); }
    .me-indicador { padding: var(--spacing-sm) var(--spacing-md); }
    .me-ind-num { font-size: 1.5rem; }
    .me-ind-txt { font-size: 0.7rem; letter-spacing: 0.02em; }
    .me-filtros { padding: var(--spacing-sm); }
    .me-buscar, .me-filtros select { flex-basis: 100%; font-size: 16px !important; }   /* sin zoom automatico en iPhone */
    .me-segmentos { flex: 1 1 auto; }
    .me-segmentos label { flex: 1; text-align: center; }
    .me-segmentos span { width: 100%; }
    .me-grupo { background: transparent; box-shadow: none; border-top: 0; overflow: visible; }
    .me-grupo-titulo { padding: 4px 2px 8px; border-bottom: 0; }
    .me-tabla thead, .me-tabla colgroup { display: none; }
    .me-tabla, .me-tabla tbody { display: block; background: transparent; box-shadow: none; border: 0; }
    .me-tabla tbody tr {
        display: grid; grid-template-columns: 1fr 1fr; gap: 4px 12px; background: #fff; border-radius: var(--radius-lg);
        box-shadow: var(--shadow-sm); border-left: 4px solid var(--mn-color, rgb(0, 43, 92)); padding: 12px 14px; margin-bottom: var(--spacing-sm);
    }
    .me-tabla td { display: block; padding: 0 !important; border: 0; min-width: 0; }
    .me-tabla td::before { content: attr(data-label); display: block; font-size: 0.68rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--gray-400); }
    .me-tabla td:first-child { grid-column: 1 / -1; font-size: 1rem; }
    .me-tabla td:first-child::before { display: none; }
    .me-tabla td.me-contacto { grid-column: 1 / -1; }
    .me-tabla td.me-col-acc { display: none; }
}
@media screen and (max-width: 480px) {
    .me-indicadores { grid-template-columns: 1fr; }
    .me-indicador { flex-direction: row; align-items: baseline; gap: var(--spacing-sm); }
    .me-tabla tbody tr { grid-template-columns: 1fr; }
}

/* Impresion: sin barra, filtros ni botones; los grupos completos */
@media print {
    .mn-header, .me-acciones, .me-miga, .me-filtros, .me-col-acc, .me-c-acc, .me-leyenda, footer { display: none !important; }
    .mn-body { background: #fff; }
    .me-main { max-width: none; margin: 0; padding: 0; }
    .me-indicador { box-shadow: none; border: 1px solid var(--gray-300); border-top-width: 4px; }
    .me-grupo { box-shadow: none; border: 1px solid var(--gray-300); border-top-width: 4px; page-break-inside: auto; }
    .me-tabla { font-size: 9pt; }
    .me-tabla th, .me-tabla td { padding: 4px 6px; }
    .me-tabla tbody tr { page-break-inside: avoid; }
    .me-tabla td a { color: inherit; }
    .me-contacto a { white-space: normal; }
    .ne-estado { padding: 0; background: none !important; }
}

/* ==================================================================================================================
   Ticket XXXX (v5) - Fichas con el estilo del menu: ficha del empleado (ers_rrhh_empleado_detalle.php) y ficha del
   alta (ers_alta_empleado_ficha.php). Prefijo fi-. Usan la barra mn-header, la cabecera me-cabecera y los botones,
   semaforos y avisos ne-. Secciones en tarjetas blancas con titulo; rojo solo para errores, avisos en ambar.
   ================================================================================================================== */
.fi-main { max-width: 1100px; }
.fi-main.fi-main-ancho { max-width: 1320px; }
.fi-main fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
.fi-main .success, .fi-main .error, .fi-main .info, .fi-main .ne-aviso { margin-bottom: var(--spacing-lg); }
.fi-main .ne-sync { margin-bottom: var(--spacing-lg); }
.fi-estado-titulo { font-size: 0.8rem; vertical-align: middle; margin-left: 6px; }

/* Secciones */
.fi-seccion {
    background: #fff; border: 1px solid var(--gray-200); border-top: 4px solid var(--mn-color, rgb(0, 43, 92));
    border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); margin-bottom: var(--spacing-lg);
}
.fi-seccion > h2, .fi-seccion > summary {
    display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-sm); flex-wrap: wrap;
    margin: 0; padding: 12px var(--spacing-lg); font-size: 1.02rem; font-weight: 700; color: rgb(0, 43, 92);
    border-bottom: 1px solid var(--gray-200);
}
.fi-num {
    display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; margin-right: 6px;
    border-radius: 50%; font-size: 0.78rem; font-weight: 700; background: var(--mn-fondo, #e8eef6); color: var(--mn-color, rgb(0, 43, 92));
}
.fi-cuerpo { padding: var(--spacing-lg); }
.fi-nota { font-size: 0.85rem; color: var(--gray-500); margin: 0 0 var(--spacing-md); }
.fi-subtitulo {
    display: flex; align-items: center; gap: var(--spacing-sm); flex-wrap: wrap;
    font-size: 0.74rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--gray-500);
    margin: var(--spacing-lg) 0 var(--spacing-sm); padding-top: var(--spacing-md); border-top: 1px dashed var(--gray-200);
}
.fi-cuerpo > .fi-subtitulo:first-child, .fi-columnas .fi-subtitulo { margin-top: 0; padding-top: 0; border-top: 0; }
.fi-opcional { text-transform: none; letter-spacing: 0; font-weight: 400; font-size: 0.78rem; color: var(--gray-400); }
.fi-solo-lectura { font-size: 0.75rem; font-weight: 600; color: var(--gray-600); background: var(--gray-100); border-radius: 999px; padding: 3px 10px; }

/* Campos */
.fi-rejilla { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px var(--spacing-md); }
.fi-rejilla-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.fi-campo { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.fi-campo label, .fi-etq { font-size: 0.82rem; font-weight: 600; color: var(--gray-700); }
.fi-oblig { color: var(--gray-500); }
.fi-campo input, .fi-campo select, .fi-form-motivo input, .fi-form-motivo textarea {
    width: 100%; font: inherit; font-size: 0.92rem; font-weight: 400; padding: 8px 10px; min-height: 40px;
    border: 1px solid var(--gray-300); border-radius: var(--radius-md); background: #fff; color: var(--gray-900);
}
.fi-campo input:focus, .fi-campo select:focus, .fi-form-motivo input:focus, .fi-form-motivo textarea:focus {
    outline: 2px solid #e8eef6; border-color: rgb(0, 43, 92);
}
.fi-main fieldset[disabled] input, .fi-main fieldset[disabled] select {
    background: var(--gray-50); color: var(--gray-700); border-color: var(--gray-200); cursor: default;
}
.fi-campo-ro .fi-valor {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-height: 40px; padding: 8px 10px;
    background: var(--gray-50); border: 1px dashed var(--gray-300); border-radius: var(--radius-md); font-size: 0.92rem; color: var(--gray-900);
}
.fi-ancho2 { grid-column: span 2; }
.fi-ancho { grid-column: 1 / -1; }
.fi-vacio { color: var(--gray-400); }

/* Datos de solo lectura */
.fi-datos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px var(--spacing-md); margin: 0; }
.fi-datos.fi-datos-1 { grid-template-columns: minmax(0, 1fr); gap: 8px; }
.fi-datos > div { min-width: 0; }
.fi-datos dt { font-size: 0.75rem; font-weight: 600; color: var(--gray-500); }
.fi-datos dd { margin: 0; font-size: 0.92rem; color: var(--gray-900); overflow-wrap: anywhere; }
.fi-datos dd a { color: rgb(0, 43, 92); text-decoration: none; }
.fi-datos dd a:hover { text-decoration: underline; }
.fi-columnas { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--spacing-lg); }
.fi-aviso-compacto { margin: var(--spacing-md) 0 0 !important; padding: 8px 12px; font-size: 0.88rem; }

/* Barra inferior de guardar (ficha del empleado) */
.fi-barra {
    position: sticky; bottom: 0; z-index: 50; display: flex; justify-content: space-between; align-items: center; gap: var(--spacing-md);
    flex-wrap: wrap; background: #fff; border: 1px solid var(--gray-200); border-radius: var(--radius-lg);
    box-shadow: 0 -4px 14px rgba(0, 0, 0, 0.08); padding: 10px var(--spacing-lg); margin-bottom: var(--spacing-lg);
}
.fi-barra-estado { font-size: 0.88rem; color: var(--gray-500); }
.fi-barra.fi-sucio { border-color: #fcd34d; background: #fffbeb; }
.fi-barra.fi-sucio .fi-barra-estado { color: #92400e; font-weight: 600; }
.fi-barra-botones { display: flex; gap: var(--spacing-sm); flex-wrap: wrap; }

/* Accion delicada (solicitar baja, cancelar alta): ambar, no rojo (el rojo es solo para errores) */
.ne-btn-sec.fi-btn-aviso { color: #92400e; border-color: var(--warning-500); }
.ne-btn-sec.fi-btn-aviso:hover { background: #fffbeb; }

/* Ficha del alta: columna principal + panel lateral de estado. En el movil, el panel va despues del puesto */
.fi-layout {
    display: grid; grid-template-columns: minmax(0, 1fr) 340px; grid-template-rows: auto 1fr;
    grid-template-areas: "a lateral" "b lateral"; gap: 0 var(--spacing-lg); align-items: start;
}
.fi-zona-a { grid-area: a; min-width: 0; }
.fi-zona-b { grid-area: b; min-width: 0; }
.fi-lateral { grid-area: lateral; position: sticky; top: 76px; max-height: calc(100vh - 90px); overflow-y: auto; min-width: 0; }
.fi-panel .fi-cuerpo { padding: var(--spacing-md) var(--spacing-lg) var(--spacing-lg); }
.fi-estado-alta { margin: 0 0 var(--spacing-md); }
.fi-estado-alta .ne-estado { display: block; text-align: center; }
.fi-areas { list-style: none; margin: 0 0 var(--spacing-md); padding: 0; }
.fi-areas li { display: flex; justify-content: space-between; align-items: center; gap: var(--spacing-sm); padding: 8px 0; border-bottom: 1px solid var(--gray-100); }
.fi-areas li:last-child { border-bottom: 0; }
.fi-area-nombre { display: flex; flex-direction: column; font-weight: 600; font-size: 0.9rem; color: var(--gray-800); }
.fi-area-enlace { font-weight: 400; font-size: 0.8rem; color: rgb(0, 43, 92); }
.fi-acciones { display: grid; gap: var(--spacing-sm); margin-bottom: var(--spacing-md); }
.fi-acciones .ne-btn, .fi-acciones .ne-btn-sec, .fi-ancho-total { width: 100%; }
.fi-bloque { background: #f1f5fa; border-radius: var(--radius-md); padding: var(--spacing-md); margin-bottom: var(--spacing-md); font-size: 0.9rem; }
.fi-bloque p { margin: 0 0 var(--spacing-sm); }
.fi-desplegable { border-top: 1px solid var(--gray-200); padding: 10px 0 0; margin-top: 10px; }
.fi-desplegable summary { cursor: pointer; font-weight: 600; font-size: 0.9rem; color: rgb(0, 43, 92); }
.fi-desplegable summary:focus-visible { outline: 2px solid rgb(0, 43, 92); outline-offset: 2px; }
.fi-form-motivo { display: grid; gap: 6px; margin-top: var(--spacing-sm); }
.fi-form-motivo label { font-size: 0.82rem; font-weight: 600; color: var(--gray-700); }
.fi-error-bloque pre { background: rgba(255, 255, 255, 0.6); }

/* Historial plegado */
details.fi-plegable > summary { cursor: pointer; list-style: none; border-bottom: 0; }
details.fi-plegable > summary::-webkit-details-marker { display: none; }
details.fi-plegable > summary::after { content: '▸'; font-size: 0.9rem; color: var(--gray-500); transition: transform var(--transition-fast); }
details.fi-plegable[open] > summary { border-bottom: 1px solid var(--gray-200); }
details.fi-plegable[open] > summary::after { transform: rotate(90deg); }
details.fi-plegable > summary:focus-visible { outline: 2px solid rgb(0, 43, 92); outline-offset: -2px; }

/* Documentos dentro de una seccion: sin doble tarjeta */
.fi-seccion .ne-docs { gap: var(--spacing-sm); }

@media screen and (max-width: 1100px) {
    .fi-layout { grid-template-columns: minmax(0, 1fr) 300px; }
    .fi-rejilla-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media screen and (max-width: 900px) {
    .fi-layout { display: block; }
    .fi-lateral { position: static; max-height: none; overflow: visible; }
    .fi-rejilla, .fi-datos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .fi-columnas { grid-template-columns: minmax(0, 1fr); }
    .fi-cuerpo { padding: var(--spacing-md); }
    .fi-seccion > h2, .fi-seccion > summary { padding: 10px var(--spacing-md); }
}
@media screen and (max-width: 600px) {
    .fi-rejilla, .fi-rejilla-4, .fi-datos { grid-template-columns: minmax(0, 1fr); }
    .fi-ancho2 { grid-column: auto; }
    .fi-campo input, .fi-campo select, .fi-form-motivo input, .fi-form-motivo textarea { font-size: 16px; }   /* sin zoom en iPhone */
    .fi-barra { flex-direction: column; align-items: stretch; padding: 10px var(--spacing-md); }
    .fi-barra-botones { flex-direction: column-reverse; }
    .fi-barra-botones .ne-btn, .fi-barra-botones .ne-btn-sec { width: 100%; }
}
@media print {
    .fi-barra, .fi-lateral .fi-acciones, .fi-desplegable, .ne-doc-zona { display: none !important; }
    .fi-layout { display: block; }
    .fi-lateral { position: static; max-height: none; }
    .fi-seccion { box-shadow: none; page-break-inside: avoid; }
}

/* ==================================================================================================================
   0294 - Mis datos (ers_mis_datos.php). Prefijo md-. Usa los colores de las altas (ne-): azul corporativo rgb(0,43,92).
   Rojo solo para errores; avisos en ambar.
   ================================================================================================================== */
.md-pagina { max-width: 980px; padding-bottom: 96px; }

/* Cabecera con la persona */
.md-perfil {
    display: flex; align-items: center; gap: var(--spacing-lg); flex-wrap: wrap;
    background: linear-gradient(135deg, var(--ne-azul) 0%, #0b4a8f 100%); color: #fff;
    border-radius: var(--radius-xl); padding: var(--spacing-lg) var(--spacing-xl); margin-bottom: var(--spacing-lg);
    box-shadow: var(--shadow-md);
}
.md-avatar {
    width: 72px; height: 72px; border-radius: 50%; flex: 0 0 72px;
    display: flex; align-items: center; justify-content: center;
    background: rgba(255, 255, 255, 0.16); border: 2px solid rgba(255, 255, 255, 0.55);
    font-size: 1.6rem; font-weight: 700; letter-spacing: 0.04em;
}
.md-perfil-texto { flex: 1 1 260px; min-width: 0; }
.md-perfil-texto h2 { margin: 0 0 4px; font-size: 1.45rem; font-weight: 700; color: #fff; }
.md-perfil-texto p { margin: 0; color: rgba(255, 255, 255, 0.85); font-size: 0.98rem; }
.md-perfil-correo { margin-top: 4px !important; font-size: 0.9rem !important; color: rgba(255, 255, 255, 0.7) !important; }
.md-perfil-desde {
    display: flex; flex-direction: column; align-items: flex-end; gap: 2px;
    background: rgba(255, 255, 255, 0.12); border-radius: var(--radius-lg); padding: 10px 16px;
}
.md-perfil-desde span { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: rgba(255, 255, 255, 0.75); }
.md-perfil-desde strong { font-size: 1.1rem; }

/* Tarjetas */
.md-tarjeta { padding: var(--spacing-lg) var(--spacing-xl); border-radius: var(--radius-xl); }
.md-titulo { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-md); flex-wrap: wrap;
             border-bottom: 1px solid var(--gray-100); padding-bottom: var(--spacing-sm); margin-bottom: var(--spacing-md); }
.md-titulo h3 { margin: 0; font-size: 1.12rem; color: var(--ne-azul); display: flex; align-items: center; gap: 10px; }
.md-icono { display: inline-flex; width: 34px; height: 34px; align-items: center; justify-content: center;
            background: var(--ne-azul-claro); border-radius: var(--radius-md); font-size: 1.05rem; }
.md-solo-lectura { font-size: 0.8rem; font-weight: 600; color: var(--gray-500); background: var(--gray-100);
                   padding: 4px 10px; border-radius: 999px; }
.md-nota { margin: 0 0 var(--spacing-md); color: var(--gray-500); font-size: 0.88rem; }

/* Datos de solo lectura */
.md-datos { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--spacing-md) var(--spacing-lg); margin: 0; }
.md-dato { background: var(--gray-50); border: 1px solid var(--gray-100); border-radius: var(--radius-md); padding: 10px 14px; min-width: 0; }
.md-dato-ancho { grid-column: 1 / -1; }
.md-dato dt { font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--gray-500); margin-bottom: 3px; }
.md-dato dd { margin: 0; font-size: 0.98rem; font-weight: 600; color: var(--gray-900); overflow-wrap: anywhere; }
.md-vacio { color: var(--gray-400); font-weight: 400; }

/* Campos editables: rejilla de 6 columnas */
.md-rejilla { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: var(--spacing-md) var(--spacing-lg); }
.md-campo { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.md-campo > span:first-child { font-size: 0.85rem; font-weight: 600; color: var(--gray-700); }
.md-c2 { grid-column: span 2; } .md-c3 { grid-column: span 3; } .md-c6 { grid-column: 1 / -1; }
.md-form input, .md-form select {
    font: inherit; font-size: 0.98rem; padding: 10px 12px; min-height: 44px; width: 100%; box-sizing: border-box;
    border: 1px solid var(--gray-300); border-radius: var(--radius-md); background: #fff; color: var(--gray-900);
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}
.md-form input:hover, .md-form select:hover { border-color: var(--gray-400); }
.md-form input:focus, .md-form select:focus { outline: none; border-color: var(--ne-azul); box-shadow: 0 0 0 3px var(--ne-azul-claro); }

/* Cuenta de la nomina */
.md-cuenta-actual { display: flex; align-items: center; gap: var(--spacing-md); background: var(--gray-50);
                    border: 1px dashed var(--gray-300); border-radius: var(--radius-md); padding: 10px 14px; margin-bottom: var(--spacing-md); }
.md-cuenta-actual span { font-size: 0.8rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--gray-500); }
.md-cuenta-actual strong { font-family: Consolas, 'Courier New', monospace; font-size: 1rem; letter-spacing: 0.06em; }
.md-banco { margin-left: auto; font-style: normal; font-weight: 600; color: var(--ne-azul); font-size: 0.92rem; }
.md-iban { font-family: Consolas, 'Courier New', monospace !important; font-size: 1.08rem !important; letter-spacing: 0.08em; }
.md-iban-estado { font-size: 0.86rem; color: var(--gray-500); }
.md-iban-estado.md-falta { color: var(--gray-600); }
.md-iban-estado.md-bien { color: var(--success-600); font-weight: 600; }
.md-iban-estado.md-mal { color: var(--error-600); font-weight: 600; }
.md-form input.md-input-bien, .md-form input.md-input-bien:focus { border-color: var(--success-500); }
.md-form input.md-input-mal, .md-form input.md-input-mal:focus { border-color: var(--error-500); box-shadow: 0 0 0 3px #fee2e2; }

/* Barra de guardar, siempre a la vista */
.md-barra {
    position: sticky; bottom: 0; z-index: 5; display: flex; align-items: center; justify-content: flex-end;
    gap: var(--spacing-md); flex-wrap: wrap; background: rgba(255, 255, 255, 0.96); backdrop-filter: blur(4px);
    border: 1px solid var(--gray-200); border-radius: var(--radius-xl); box-shadow: var(--shadow-lg);
    padding: 12px var(--spacing-lg); margin-top: var(--spacing-md);
}
.md-barra-texto { margin-right: auto; color: var(--gray-500); font-size: 0.9rem; }
.md-barra-texto.md-hay-cambios { color: #92400e; font-weight: 600; }
.md-barra-texto.md-hay-error { color: var(--error-600); font-weight: 600; }
.md-barra .ne-btn[disabled] { opacity: 0.45; cursor: not-allowed; filter: none; }

@media (max-width: 760px) {
    .md-perfil { padding: var(--spacing-lg); }
    .md-perfil-desde { align-items: flex-start; }
    .md-datos { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .md-rejilla { grid-template-columns: 1fr; }
    .md-c2, .md-c3, .md-c6 { grid-column: 1 / -1; }
    .md-tarjeta { padding: var(--spacing-lg); }
}
@media (max-width: 480px) {
    .md-datos { grid-template-columns: 1fr; }
}

/* =====================================================================================================================
   Ticket XXXX v3 - Alta de empleados: landing (nl-), documentos en un solo bloque (nd-) y mantenimiento de material (mt-)
   ===================================================================================================================== */
.nl-c4 { grid-column: span 4; }
.nl-espera { border-left-width: 4px; }

/* Documentos */
.nd-docs { display: flex; flex-direction: column; gap: var(--spacing-md); }
.nd-check { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.nd-check li { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border-radius: 999px;
    background: var(--gray-50); border: 1px solid var(--gray-200); font-size: 0.88rem; color: var(--gray-700); }
.nd-check li .nd-marca { display: inline-flex; width: 18px; height: 18px; border-radius: 50%; border: 2px solid var(--gray-300, #d1d5db);
    align-items: center; justify-content: center; font-size: 0.72rem; font-weight: 700; }
.nd-check li.nd-ok { background: #ecfdf5; border-color: #a7f3d0; color: #065f46; }
.nd-check li.nd-ok .nd-marca { background: var(--success-500); border-color: var(--success-500); color: #fff; }
.nd-subir { display: grid; grid-template-columns: minmax(220px, 1fr) 2fr; gap: var(--spacing-md); align-items: stretch;
    background: var(--gray-50); border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: var(--spacing-md); }
.nd-tipo-campo { display: flex; flex-direction: column; gap: 6px; }
.nd-tipo-campo > span { font-size: 0.85rem; font-weight: 600; color: var(--gray-700); }
.nd-tipo-campo select { padding: 10px 12px; border: 1px solid var(--gray-300, #d1d5db); border-radius: var(--radius-md); font-size: 0.95rem; background: #fff; }
.nd-zona { display: flex; align-items: center; justify-content: center; gap: 12px; flex-wrap: wrap; min-height: 72px;
    border: 2px dashed var(--gray-300, #d1d5db); border-radius: var(--radius-md); background: #fff; padding: 12px; color: var(--gray-500);
    transition: border-color .15s, background .15s; }
.nd-zona.nd-arrastrando { border-color: var(--ne-azul, #002b5c); background: #eff6ff; color: var(--ne-azul, #002b5c); }
.nd-zona-icono { font-size: 1.4rem; line-height: 1; }
.nd-subir .ne-ayuda { grid-column: 1 / -1; margin: 0; }
.nd-progreso { grid-column: 1 / -1; height: 6px; background: var(--gray-200); border-radius: 999px; overflow: hidden; }
.nd-progreso > div { height: 100%; width: 0; background: var(--ne-azul, #002b5c); transition: width .2s; }
.nd-error { grid-column: 1 / -1; color: var(--error-600, #dc2626); font-weight: 600; font-size: 0.9rem; }
.nd-lista { width: 100%; border-collapse: collapse; font-size: 0.92rem; }
.nd-lista th { text-align: left; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--gray-500);
    padding: 8px 10px; border-bottom: 1px solid var(--gray-200); }
.nd-lista td { padding: 10px; border-bottom: 1px solid var(--gray-100); vertical-align: middle; overflow-wrap: anywhere; }
.nd-lista .nd-num { text-align: right; white-space: nowrap; color: var(--gray-500); }
.nd-lista .nd-acc { text-align: right; width: 1%; }
.nd-lista .nd-vacia td { color: var(--gray-400); text-align: center; padding: 18px; }
.nd-lista tr.nd-nuevo td { background: #f0fdf4; }
.nd-quitar { background: none; border: 1px solid var(--gray-200); border-radius: var(--radius-md); padding: 4px 10px; cursor: pointer;
    color: var(--gray-600, #4b5563); font-size: 0.85rem; }
.nd-quitar:hover { border-color: var(--error-500, #ef4444); color: var(--error-600, #dc2626); }

/* Mantenimiento de material */
.mt-pagina { max-width: 1280px; margin: 0 auto; padding: var(--spacing-lg); }
.mt-resumen { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--spacing-md); margin-bottom: var(--spacing-md); }
.mt-resumen div { background: #fff; border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: 12px 16px; }
.mt-resumen span { display: block; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--gray-500); }
.mt-resumen strong { font-size: 1.4rem; color: var(--ne-azul, #002b5c); }
.mt-contador { color: var(--gray-500); font-size: 0.88rem; margin: 4px 0 8px; }
.mt-tabla td { vertical-align: middle; }
.mt-tabla tbody tr { cursor: default; }
.mt-mono { font-family: Consolas, 'Courier New', monospace; font-size: 0.88rem; }
.mt-emp { color: var(--ne-azul, #002b5c); font-weight: 600; text-decoration: none; }
.mt-emp:hover { text-decoration: underline; }
.mt-dialogo { border: none; border-radius: var(--radius-xl, 1rem); padding: var(--spacing-lg) var(--spacing-xl, 2rem); width: min(520px, 94vw);
    box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25); }
.mt-dialogo::backdrop { background: rgba(15, 23, 42, 0.45); }
.mt-dialogo h3 { margin: 0 0 4px; color: var(--ne-azul, #002b5c); }
.mt-campo { display: flex; flex-direction: column; gap: 6px; margin-top: var(--spacing-md); }
.mt-campo > span { font-size: 0.85rem; font-weight: 600; color: var(--gray-700); }
.mt-campo select { padding: 10px 12px; border: 1px solid var(--gray-300, #d1d5db); border-radius: var(--radius-md); font-size: 0.95rem; }
.mt-botones { display: flex; justify-content: flex-end; gap: var(--spacing-sm, 8px); margin-top: var(--spacing-lg); }

/* Ticket XXXX - Mantenimiento completo de material: pestanas, rejilla del dialogo, por empleado */
.mt-pagina [hidden], .mt-dialogo [hidden], .mt-vista[hidden] { display: none !important; }
.mt-dialogo { margin: auto; max-height: 92vh; overflow-y: auto; }
.mt-barra { display: flex; justify-content: space-between; align-items: center; gap: var(--spacing-md); }
.mt-tabs { display: flex; gap: 4px; border-bottom: 2px solid var(--gray-200); margin: var(--spacing-md) 0; }
.mt-tab { background: none; border: 0; border-bottom: 3px solid transparent; margin-bottom: -2px; padding: 10px 18px; font: inherit;
    font-weight: 600; color: var(--gray-500); cursor: pointer; }
.mt-tab:hover { color: var(--ne-azul); }
.mt-tab.activa { color: var(--ne-azul); border-bottom-color: var(--ne-azul); }
.mt-resumen { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.mt-resumen .mt-tile { background: #fff; border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: 12px 16px; text-align: left;
    font: inherit; cursor: default; }
.mt-resumen button.mt-tile { cursor: pointer; }
.mt-resumen button.mt-tile:hover { border-color: var(--ne-azul); background: var(--ne-azul-claro); }
.mt-resumen .mt-tile-aviso strong { color: #92400e; }
.mt-filtros { display: grid; grid-template-columns: minmax(200px, 2fr) repeat(3, minmax(140px, 1fr)) auto; gap: var(--spacing-md); align-items: end; }
.mt-acciones { white-space: nowrap; text-align: right; }
.mt-acciones .ne-btn-sec { padding: 4px 10px; font-size: 0.85rem; margin-left: 4px; }
.mt-baja { color: #92400e; font-size: 0.78rem; font-weight: 600; }
.mt-r-asig { background: #dbeafe; color: #1e3a8a; }
.mt-r-otro { background: #ede9fe; color: #5b21b6; }
.mt-aviso { background: #fffbeb; border: 1px solid #fde68a; color: #92400e; border-radius: var(--radius-md); padding: 10px 14px; margin: var(--spacing-sm, 8px) 0; font-size: 0.9rem; }
.mt-dialogo-ancho { width: min(820px, 96vw); }
.mt-rejilla { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--spacing-md); }
.mt-rejilla .mt-ancho { grid-column: 1 / -1; }
.mt-campo input, .mt-campo textarea, .mt-input { padding: 9px 12px; border: 1px solid var(--gray-300, #d1d5db); border-radius: var(--radius-md);
    font: inherit; font-size: 0.95rem; width: 100%; box-sizing: border-box; }
.mt-campo select:disabled { background: var(--gray-100); color: var(--gray-400); }
.mt-campo small { min-height: 1em; }
.mt-hueco { flex: 1; }
.mt-dialogo .error ul { margin: 0; padding-left: 18px; }
.mt-emp-layout { display: grid; grid-template-columns: 320px minmax(0, 1fr); gap: var(--spacing-lg); align-items: start; }
.mt-emp-panel { background: #fff; border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: var(--spacing-md);
    position: sticky; top: var(--spacing-md); }
.mt-check { display: flex; align-items: center; gap: 6px; font-size: 0.85rem; color: var(--gray-600, #4b5563); margin: 8px 0; }
.mt-emp-lista { list-style: none; margin: 0; padding: 0; max-height: 65vh; overflow-y: auto; }
.mt-emp-item { display: flex; justify-content: space-between; gap: 8px; width: 100%; background: none; border: 0; border-radius: var(--radius-md);
    padding: 8px 10px; font: inherit; font-size: 0.9rem; text-align: left; cursor: pointer; color: var(--gray-700); }
.mt-emp-item:hover { background: var(--ne-azul-claro); }
.mt-emp-item.activa { background: var(--ne-azul); color: #fff; }
.mt-emp-item.mt-emp-baja span:first-child::after { content: ' (baja)'; color: #92400e; font-size: 0.8em; }
.mt-emp-item.activa.mt-emp-baja span:first-child::after { color: #fde68a; }
.mt-num { font-weight: 700; }
.mt-emp-detalle { min-width: 0; }
.mt-emp-cab { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--spacing-md); margin-bottom: var(--spacing-md); }
.mt-emp-cab h3 { margin: 0; color: var(--ne-azul); }
.mt-vacio { padding: var(--spacing-lg) 0; }
.mt-asignar { display: grid; grid-template-columns: 180px minmax(0, 1fr) auto; gap: var(--spacing-sm, 8px); align-items: center; margin-top: var(--spacing-lg);
    background: #fff; border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: var(--spacing-md); }
.mt-asignar h4 { grid-column: 1 / -1; margin: 0; color: var(--ne-azul); }
.mt-asignar select { padding: 9px 12px; border: 1px solid var(--gray-300, #d1d5db); border-radius: var(--radius-md); font: inherit; min-width: 0; }

@media (max-width: 768px) {
    .nl-c4 { grid-column: 1 / -1; }
    .nd-subir { grid-template-columns: 1fr; }
    .mt-resumen { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .mt-filtros, .mt-rejilla, .mt-emp-layout, .mt-asignar { grid-template-columns: 1fr; }
    .mt-emp-panel { position: static; }
    .nd-lista th:nth-child(3), .nd-lista td.nd-num { display: none; }
}


/* ==================================================================================================================
   Ticket XXXX - Auditoria de usuarios (ers_auditoria_consulta.php). Prefijo aud-.
   Rojo solo para errores (logins fallidos); avisos en ambar (accesos denegados).
   ================================================================================================================== */

.aud-main { max-width: 1280px; }

/* Filtros */
.aud-filtros {
    display: grid; grid-template-columns: minmax(220px, 2fr) minmax(150px, 1fr) minmax(140px, 1fr) minmax(140px, 1fr) auto;
    gap: var(--spacing-md); align-items: end; background: #fff; border: 1px solid var(--gray-200);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: var(--spacing-md) var(--spacing-lg);
}
.aud-filtros label { display: flex; flex-direction: column; gap: 4px; font-size: 0.75rem; font-weight: 600; color: var(--gray-500);
                     text-transform: uppercase; letter-spacing: 0.04em; }
.aud-filtros select, .aud-filtros input[type="date"] {
    font: inherit; font-size: 0.9rem; text-transform: none; letter-spacing: 0; color: var(--gray-900);
    padding: 0 10px; border: 1px solid var(--gray-300); border-radius: var(--radius-md); background: #fff; height: 38px; width: 100%; box-sizing: border-box;
}
.aud-filtros select:focus, .aud-filtros input:focus { outline: 2px solid var(--primary-100); border-color: var(--primary-600); }
.aud-filtros-acciones { display: flex; gap: var(--spacing-sm); align-items: center; }
.aud-atajos { display: inline-flex; border: 1px solid var(--gray-300); border-radius: var(--radius-md); overflow: hidden; margin-right: var(--spacing-sm); }
.aud-atajos button { font: inherit; font-size: 0.82rem; background: #fff; color: var(--gray-700); border: 0; padding: 8px 10px; cursor: pointer; min-height: 38px; }
.aud-atajos button + button { border-left: 1px solid var(--gray-300); }
.aud-atajos button:hover { background: var(--primary-50); color: var(--primary-700); }
.aud-btn, .aud-btn-sec {
    display: inline-flex; align-items: center; justify-content: center; font: inherit; font-size: 0.88rem; font-weight: 600;
    padding: 8px 16px; min-height: 38px; border-radius: var(--radius-md); cursor: pointer; text-decoration: none; white-space: nowrap;
}
.aud-btn { background: var(--primary-700); color: #fff; border: 1px solid var(--primary-700); }
.aud-btn:hover { background: var(--primary-600); }
.aud-btn-sec { background: #fff; color: var(--gray-700); border: 1px solid var(--gray-300); }
.aud-btn-sec:hover { background: var(--gray-50); }
.aud-periodo { margin: var(--spacing-md) 0 var(--spacing-sm); color: var(--gray-500); font-size: 0.85rem; }

/* Indicadores */
.aud-kpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--spacing-md); margin-bottom: var(--spacing-lg); }
.aud-kpi {
    display: flex; flex-direction: column; gap: 2px; background: #fff; border: 1px solid var(--gray-200);
    border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: var(--spacing-md) var(--spacing-lg);
}
.aud-kpi-label { font-size: 0.75rem; font-weight: 600; color: var(--gray-500); text-transform: uppercase; letter-spacing: 0.04em; }
.aud-kpi-valor { font-size: 1.75rem; font-weight: 700; color: var(--gray-900); line-height: 1.2; font-variant-numeric: tabular-nums; }
.aud-kpi-sub { font-size: 0.8rem; color: var(--gray-500); }
.aud-kpi-error { border-left: 4px solid var(--error-600); }
.aud-kpi-error .aud-kpi-valor { color: var(--error-600); }
.aud-kpi-aviso { border-left: 4px solid var(--warning-500); }
.aud-kpi-aviso .aud-kpi-valor { color: var(--warning-600); }

/* Paneles de ranking */
.aud-paneles { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--spacing-md); margin-bottom: var(--spacing-lg); }
.aud-panel { background: #fff; border: 1px solid var(--gray-200); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: var(--spacing-md) var(--spacing-lg); }
.aud-panel h3, .aud-registros-cab h3 {
    display: flex; justify-content: space-between; align-items: baseline; font-size: 0.95rem; font-weight: 700; color: var(--gray-800);
    margin: 0 0 var(--spacing-md);
}
.aud-panel h3 span { font-size: 0.75rem; font-weight: 500; color: var(--gray-400); }
.aud-ranking { list-style: none; margin: 0; padding: 0; counter-reset: rk; }
.aud-ranking li {
    display: grid; grid-template-columns: 1.4rem 1fr auto; grid-template-rows: auto 6px; column-gap: var(--spacing-sm);
    align-items: center; padding: 6px 0; counter-increment: rk;
}
.aud-ranking li::before { content: counter(rk); grid-row: 1; color: var(--gray-400); font-size: 0.8rem; font-weight: 600; }
.aud-rk-nombre { font-size: 0.88rem; color: var(--gray-800); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-decoration: none; }
a.aud-rk-nombre:hover { color: var(--primary-700); text-decoration: underline; }
.aud-rk-valor { font-size: 0.88rem; font-weight: 700; color: var(--gray-900); font-variant-numeric: tabular-nums; }
.aud-rk-barra { grid-column: 2 / 4; grid-row: 2; height: 4px; background: var(--gray-100); border-radius: 2px; overflow: hidden; }
.aud-rk-barra i { display: block; height: 100%; background: var(--primary-500); border-radius: 2px; }
.aud-ranking-error .aud-rk-barra i { background: var(--error-500); }
.aud-vacio { color: var(--gray-400); font-size: 0.88rem; margin: 0; }
.aud-vacio-grande { text-align: center; padding: var(--spacing-2xl) 0; }

/* Registros */
.aud-registros { background: #fff; border: 1px solid var(--gray-200); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); padding: var(--spacing-md) var(--spacing-lg) var(--spacing-lg); }
.aud-registros-cab { display: flex; justify-content: space-between; align-items: center; gap: var(--spacing-md); margin-bottom: var(--spacing-sm); }
.aud-registros-cab h3 { margin: 0; gap: var(--spacing-sm); justify-content: flex-start; }
.aud-registros-cab h3 span { background: var(--gray-100); color: var(--gray-600); font-size: 0.75rem; padding: 2px 8px; border-radius: 999px; }
.aud-por-pagina label { display: flex; align-items: center; gap: var(--spacing-sm); font-size: 0.82rem; color: var(--gray-500); }
.aud-por-pagina select { font: inherit; padding: 4px 8px; border: 1px solid var(--gray-300); border-radius: var(--radius-sm); background: #fff; }

.aud-tabla-wrap { overflow: auto; max-height: 70vh; border: 1px solid var(--gray-200); border-radius: var(--radius-md); }
.aud-tabla { width: 100%; border-collapse: separate; border-spacing: 0; font-size: 0.86rem; margin: 0; box-shadow: none;
              border: 0; border-radius: 0; overflow: visible; }
.aud-tabla tbody tr:hover { transform: none; box-shadow: none; background: none; }
.aud-tabla thead th { position: sticky; z-index: 1; background: var(--gray-50); color: var(--gray-600); text-align: left; font-size: 0.75rem;
                      font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; padding: 8px 12px; border-bottom: 1px solid var(--gray-200); }
.aud-tabla thead tr:first-child th { top: 0; }
.aud-tabla thead .aud-filtros-col th { top: 33px; padding: 4px 8px 6px; background: var(--gray-50); }
.aud-tabla .aud-filtros-col input { width: 100%; font: inherit; font-size: 0.8rem; text-transform: none; letter-spacing: 0; padding: 4px 8px;
                                    border: 1px solid var(--gray-300); border-radius: var(--radius-sm); background: #fff; }
.aud-tabla td { padding: 7px 12px; border-bottom: 1px solid var(--gray-100); vertical-align: middle; color: var(--gray-800); background: #fff; font-size: 0.86rem; }
.aud-tabla tbody tr:hover td { background: var(--primary-50); }
.aud-tabla td a { color: var(--primary-700); text-decoration: none; font-weight: 600; }
.aud-tabla td a:hover { text-decoration: underline; }
.aud-ordenable { cursor: pointer; user-select: none; }
.aud-ordenable::after { content: ' ⇅'; opacity: 0.4; }
.aud-ordenable[data-dir="asc"]::after { content: ' ↑'; opacity: 1; }
.aud-ordenable[data-dir="desc"]::after { content: ' ↓'; opacity: 1; }
.aud-fecha { white-space: nowrap; font-variant-numeric: tabular-nums; }
.aud-fecha span { color: var(--gray-500); }
.aud-sub { display: block; white-space: nowrap; color: var(--gray-500); font-size: 0.78rem; }
.aud-detalle { max-width: 360px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.aud-mono { font-family: Consolas, monospace; font-size: 0.8rem; color: var(--gray-600); }

.aud-ev { display: inline-block; font-size: 0.75rem; font-weight: 600; padding: 2px 8px; border-radius: 999px; white-space: nowrap; }
.aud-ev-ok     { background: #d1fae5; color: #065f46; }
.aud-ev-error  { background: #fee2e2; color: var(--error-600); }
.aud-ev-menu   { background: var(--primary-100); color: var(--primary-700); }
.aud-ev-aviso  { background: #fef3c7; color: #92400e; }
.aud-ev-neutro { background: var(--gray-100); color: var(--gray-600); }

.aud-paginacion { display: flex; align-items: center; gap: 4px; margin-top: var(--spacing-md); flex-wrap: wrap; }
.aud-paginacion a, .aud-pag-actual, .aud-pag-hueco {
    min-width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; padding: 0 8px;
    border-radius: var(--radius-sm); font-size: 0.85rem; text-decoration: none; font-variant-numeric: tabular-nums;
}
.aud-paginacion a { color: var(--gray-700); border: 1px solid var(--gray-200); background: #fff; }
.aud-paginacion a:hover { border-color: var(--primary-300); color: var(--primary-700); background: var(--primary-50); }
.aud-pag-actual { background: var(--primary-700); color: #fff; font-weight: 700; }
.aud-pag-hueco { color: var(--gray-400); }
.aud-pag-info { margin-left: auto; color: var(--gray-500); font-size: 0.82rem; }

@media (max-width: 1100px) {
    .aud-filtros { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .aud-filtros-acciones { grid-column: 1 / -1; justify-content: flex-end; flex-wrap: wrap; }
    .aud-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .aud-paneles { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
    .aud-filtros { grid-template-columns: 1fr; }
    .aud-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .aud-tabla th:nth-child(5), .aud-tabla td:nth-child(5), .aud-tabla th:nth-child(6), .aud-tabla td:nth-child(6) { display: none; }
}


/* Ticket XXXX - Mis datos: direccion fiscal y direccion de envio bien diferenciadas */
.md-dir { border-left: 5px solid var(--gray-300); }
.md-dir-fiscal { border-left-color: var(--ne-azul); }
.md-dir-envio { border-left-color: var(--warning-500); background: #fffdf5; }
.md-dir-uso { font-size: 0.75rem; font-weight: 600; padding: 3px 10px; border-radius: 999px; letter-spacing: 0.02em; }
.md-dir-fiscal .md-dir-uso { background: var(--ne-azul-claro); color: var(--ne-azul); }
.md-dir-envio .md-dir-uso { background: #fef3c7; color: #92400e; }
.md-copiar-fiscal { min-height: 34px; padding: 6px 14px; font-size: 0.85rem; }
@media (max-width: 640px) { .md-copiar-fiscal { width: 100%; } }

/* ===== Ticket XXXX v5 - Alta de empleados, landing de Sistemas: material del sustituido, lineas y checks del modelo (nl5-) ===== */
.nl5-sust { background: var(--ne-azul-claro); border-left: 4px solid var(--ne-azul); border-radius: 4px; padding: 10px 14px; margin: 0 0 14px; }
.nl5-sust ul { margin: 6px 0 0; padding-left: 1.1rem; font-size: .88rem; }
.nl5-sust li { margin: 3px 0; }
.nl5-clase { display: inline-block; min-width: 64px; font-weight: 600; color: var(--ne-azul); }
.nl5-motivo { display: block; color: var(--ne-azul); }
.nl5-sin-linea { margin-top: 10px; background: #fff8eb; border-left: 4px solid var(--warning-500); border-radius: 4px; padding: 8px 12px; }
.nl5-modelo .nl5-lista { list-style: none; padding-left: 0; }
.nl5-modelo .nl5-lista label { display: flex !important; flex-direction: row !important; justify-content: flex-start !important; align-items: flex-start; gap: 6px !important; width: auto; text-align: left; font-weight: 400 !important; cursor: pointer; word-break: break-word; }
.nl5-modelo .nl5-lista input { flex: 0 0 auto; width: auto !important; margin: 3px 0 0; min-height: auto !important; }
.nl5-otro { margin-left: 6px; font-size: .72rem; color: var(--warning-600); background: #fff8eb; border-radius: 8px; padding: 0 6px; white-space: nowrap; }
.nl5-acciones { display: flex; gap: 10px; margin: 0 0 4px; }
.nl5-enlace { background: none; border: 0; padding: 0; color: var(--ne-azul); font-size: .78rem; text-decoration: underline; cursor: pointer; }
.nl5-anadir { display: flex; gap: 6px; margin-top: 8px; }
.nl5-anadir input { flex: 1; min-width: 0; font-size: .85rem; }
.nl5-anadir .ne-btn-sec { padding: 4px 10px; font-size: .8rem; }

/* ===========================================================================================================
   Ticket XXXX v7 - aut_material.php: acta de entrega y devolucion de material (bloque am-)
   =========================================================================================================== */
.am-tarjeta { padding: 28px 32px; }
.am-cabecera { display: grid; grid-template-columns: auto 1fr auto; gap: 28px; align-items: end;
               padding-bottom: 18px; border-bottom: 1px solid var(--gray-200); }
.am-cabecera > div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.am-etq { font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; color: var(--gray-500); font-weight: 600; }
.am-cabecera strong { font-size: 1rem; color: var(--gray-800, #1f2937); font-weight: 600; }
.am-cabecera .am-num { font-size: 1.6rem; color: var(--ne-azul); line-height: 1.1; }
.am-chips { display: flex; gap: 8px; flex-wrap: wrap; margin: 16px 0 4px; }
.am-bloque { margin: 6px 0 10px; font-size: .8rem; letter-spacing: .06em; text-transform: uppercase; color: var(--ne-azul); font-weight: 700; }
.am-tarjeta-cambios { border-top: 4px solid var(--ne-azul); }
.am-bloque-cambios { margin-top: 0; }
.am-vacio { margin: 0; padding: 14px; color: var(--gray-500); background: #f6f8fb; border-radius: 10px; font-size: .9rem; }
.am-intro { margin: 14px 0 16px; color: var(--gray-600); font-size: .92rem; line-height: 1.55; }
.am-etiqueta { display: inline-block; padding: 3px 10px; border-radius: 999px; font-size: .75rem; font-weight: 600; white-space: nowrap; }
.am-et-recibe { background: #e3f3e8; color: #1d6b3a; }
.am-et-devuelve { background: #fdf1dc; color: #8a5a00; }
.am-et-igual { background: #eef1f5; color: #52606d; }
.am-tabla-caja { overflow-x: auto; border: 1px solid var(--gray-200); border-radius: 10px; }
.am-tabla { width: 100%; border-collapse: collapse; font-size: .9rem; margin: 0; box-shadow: none; border: 0; border-radius: 0; }
.am-tabla th { text-align: left; background: #f6f8fb; color: var(--gray-500); font-size: .72rem; letter-spacing: .05em;
               text-transform: uppercase; font-weight: 600; padding: 10px 14px; white-space: nowrap; }
.am-tabla td { padding: 12px 14px; border-top: 1px solid var(--gray-200); vertical-align: middle; white-space: normal; }
.am-tabla tr.am-cambio td { background: #fbfcfe; }
.am-mat { display: block; color: var(--gray-800, #1f2937); font-weight: 500; }
.am-codigo { display: block; font-size: .78rem; color: var(--gray-500); margin-top: 2px; }
.am-serie { font-family: Consolas, 'Courier New', monospace; font-size: .85rem; color: var(--gray-600); }
.am-desde { color: var(--gray-500); white-space: nowrap; font-size: .85rem; }
.am-declaracion { margin: 16px 0 0; padding: 12px 14px; background: var(--ne-azul-claro); border-radius: 8px;
                  font-size: .85rem; line-height: 1.5; color: var(--gray-700, #374151); }
.am-titulo { margin: 0 0 18px; font-size: 1.15rem; color: var(--ne-azul); }
.am-titulo.am-ok { color: #1d6b3a; }
.am-campo { display: flex; flex-direction: column; gap: 6px; margin-bottom: 18px; max-width: 560px; }
.am-campo label { font-size: .85rem; font-weight: 600; color: var(--gray-700, #374151); }
.am-campo input[type="text"] { width: 100%; box-sizing: border-box; padding: 11px 14px; font: inherit; font-size: 1rem;
                               border: 1px solid #cfd6df; border-radius: 8px; background: #fff; color: var(--gray-800, #1f2937); }
.am-campo input[type="text"]:focus { outline: none; border-color: var(--ne-azul); box-shadow: 0 0 0 3px var(--ne-azul-claro); }
.am-firma-caja { position: relative; }
.am-firma { display: block; width: 100%; height: 210px; background: #fff; border: 1px solid #cfd6df; border-radius: 10px;
            touch-action: none; cursor: crosshair; }
.am-firma-guia { position: absolute; left: 24px; right: 24px; bottom: 44px; border-bottom: 1px solid #d5dbe3; padding-bottom: 6px;
                 color: #a7b1bd; font-size: .85rem; pointer-events: none; }
.am-firma-acciones { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; min-height: 30px; }
.am-btn-borrar { padding: 5px 12px; font-size: .82rem; }
.am-falta { color: var(--error-600); font-weight: 600; }
.am-acepto { display: flex; gap: 10px; align-items: flex-start; font-size: .92rem; margin: 4px 0 22px; cursor: pointer; max-width: 560px; }
.am-acepto input { width: 18px; height: 18px; margin-top: 1px; accent-color: var(--ne-azul); flex: none; }
.am-pie { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding-top: 18px;
          border-top: 1px solid var(--gray-200); color: var(--gray-500); font-size: .85rem; flex-wrap: wrap; }
.am-btn-firmar { padding: 12px 28px; font-size: 1rem; }
@media (max-width: 640px) {
    .am-tarjeta { padding: 20px 16px; }
    .am-cabecera { grid-template-columns: 1fr 1fr; gap: 14px; }
    .am-cabecera > div:first-child { grid-column: 1 / -1; }
    .am-firma { height: 180px; }
    .am-tabla thead { display: none; }
    .am-tabla, .am-tabla tbody { display: block; width: 100%; }
    .am-tabla .am-codigo { overflow-wrap: anywhere; }
    .am-tabla tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 10px; padding: 12px 14px; border-top: 1px solid var(--gray-200); }
    .am-tabla tr:first-child { border-top: 0; }
    .am-tabla td { display: block; min-width: 0; border: 0; padding: 0; background: none !important; }
    .am-tabla .am-mat { overflow-wrap: anywhere; }
    .am-tabla td:nth-child(1) { grid-column: 2; grid-row: 1; }
    .am-tabla td:nth-child(2) { grid-column: 1; grid-row: 1; }
    .am-tabla td.am-serie { grid-column: 1 / -1; font-size: .78rem; margin-top: 2px; }
    .am-tabla.am-sin-sit td:nth-child(1) { grid-column: 1 / -1; grid-row: 1; }
    .am-tabla.am-sin-sit td.am-serie { grid-row: 2; }
    .am-tabla td.am-serie:empty, .am-tabla td.am-desde { display: none; }
    .am-btn-firmar { width: 100%; }
}


/* =====================================================================================================================
   Ticket XXXX - Web de pedidos de los delegados (pd-): clientes, ficha, nuevo pedido, pedido, firma y consulta.
   Pensado para tablet (objetivos tactiles de 44px como minimo); usa el azul corporativo --ne-azul.
   ===================================================================================================================== */
.pd-body { background: #f3f5f8; }
.pd-body [hidden], .pd-landing [hidden] { display: none !important; }
.pd-body a:not([class]), .pd-landing a:not([class]) { color: var(--ne-azul); font-weight: 600; }
.pd-body header { position: static; padding: var(--spacing-md) var(--spacing-2xl); }
.pd-body header .logo { height: 52px; }
.pd-body header .header-text h1 { font-size: 1.45rem; }
.pd-nav { display: flex; gap: 4px; background: #fff; border-bottom: 1px solid var(--gray-200); padding: 0 var(--spacing-2xl);
          position: sticky; top: 0; z-index: 900; }
.pd-nav a { padding: 14px 20px; color: var(--gray-600); text-decoration: none; font-weight: 600; border-bottom: 3px solid transparent; }
.pd-nav a:hover { color: var(--ne-azul); }
.pd-nav a.activa { color: var(--ne-azul); border-bottom-color: var(--ne-azul); }
.pd-main { flex: 1; width: 100%; max-width: 1280px; margin: 0 auto; padding: var(--spacing-lg) var(--spacing-xl) 120px; }

/* Mensajes */
.pd-msg { border-radius: var(--radius-md); padding: 12px 16px; margin-bottom: var(--spacing-md); font-weight: 500; border: 1px solid; }
.pd-msg-ok    { background: #ecfdf5; border-color: #a7f3d0; color: #065f46; }
.pd-msg-aviso { background: #fffbeb; border-color: #fde68a; color: #92400e; }
.pd-msg-error { background: #fef2f2; border-color: #fecaca; color: #991b1b; }
.pd-msg-info  { background: var(--ne-azul-claro); border-color: #c7d6ea; color: var(--ne-azul); }

/* Tarjetas, titulos y rejillas */
.pd-tarjeta { background: #fff; border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: var(--spacing-lg);
              margin-bottom: var(--spacing-lg); box-shadow: var(--shadow-sm); }
.pd-tarjeta > h2, .pd-tarjeta > h3 { color: var(--ne-azul); font-size: 1.1rem; margin-bottom: var(--spacing-md); display: flex;
              align-items: center; justify-content: space-between; gap: var(--spacing-md); }
.pd-tarjeta-sin-pad { padding: 0; }
.pd-tarjeta-sin-pad > :first-child { border-top-left-radius: var(--radius-lg); border-top-right-radius: var(--radius-lg); }
.pd-tarjeta-sin-pad > :last-child { border-bottom-left-radius: var(--radius-lg); border-bottom-right-radius: var(--radius-lg); }
.pd-titulo-pagina { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--spacing-md); flex-wrap: wrap;
                    margin-bottom: var(--spacing-lg); }
.pd-titulo-pagina h1 { font-size: 1.6rem; color: var(--ne-azul); line-height: 1.2; }
.pd-titulo-pagina .pd-sub { color: var(--gray-500); margin-top: 4px; }
.pd-acciones { display: flex; gap: var(--spacing-sm); flex-wrap: wrap; align-items: center; }
.pd-rejilla { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: var(--spacing-md); }
.pd-rejilla-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--spacing-lg); }
.pd-ancho { grid-column: 1 / -1; }
.pd-vacio { text-align: center; padding: var(--spacing-2xl) var(--spacing-lg); color: var(--gray-500); }
.pd-vacio h2 { color: var(--ne-azul); margin-bottom: var(--spacing-sm); }
.pd-vacio p { margin-bottom: var(--spacing-md); }
.pd-muted { color: var(--gray-500); font-size: 0.88rem; }
.pd-num { font-variant-numeric: tabular-nums; white-space: nowrap; }
.pd-der { text-align: right; }

/* Botones (tactiles) */
.pd-body .ne-btn, .pd-body .ne-btn-sec, .pd-body .ne-btn-peligro { min-height: 44px; padding: 10px 18px; border-radius: var(--radius-md);
              font-weight: 600; font-size: 0.95rem; display: inline-flex; align-items: center; justify-content: center; gap: 8px;
              text-decoration: none; cursor: pointer; font-family: inherit; }
.pd-body .ne-btn[disabled], .pd-body .ne-btn.pd-deshabilitado { background: var(--gray-300); border-color: var(--gray-300); color: #fff; cursor: not-allowed; filter: none; }
.pd-btn-grande { min-height: 52px !important; padding: 12px 26px !important; font-size: 1.05rem !important; }
.pd-btn-exito { background: #047857 !important; border-color: #047857 !important; color: #fff !important; }

/* Etiquetas */
.pd-chip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border-radius: 999px; font-size: 0.78rem; font-weight: 600;
           background: var(--gray-100); color: var(--gray-700); border: 1px solid var(--gray-200); white-space: nowrap; }
.pd-chip-ok    { background: #ecfdf5; color: #065f46; border-color: #a7f3d0; }
.pd-chip-aviso { background: #fffbeb; color: #92400e; border-color: #fde68a; }
.pd-chip-error { background: #fef2f2; color: #991b1b; border-color: #fecaca; }
.pd-chip-info  { background: var(--ne-azul-claro); color: var(--ne-azul); border-color: #c7d6ea; }
.pd-chips { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }

/* Indicadores (KPI) clicables */
.pd-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: var(--spacing-md); margin-bottom: var(--spacing-lg); }
.pd-kpi { background: #fff; border: 1px solid var(--gray-200); border-radius: var(--radius-lg); padding: 14px 16px; text-decoration: none;
          color: inherit; display: block; transition: border-color var(--transition-fast), box-shadow var(--transition-fast); }
a.pd-kpi:hover, .pd-kpi.activa { border-color: var(--ne-azul); box-shadow: 0 0 0 2px var(--ne-azul-claro); }
.pd-kpi span { display: block; color: var(--gray-500); font-size: 0.82rem; font-weight: 600; }
.pd-kpi strong { display: block; font-size: 1.6rem; color: var(--ne-azul); line-height: 1.3; font-variant-numeric: tabular-nums; }
.pd-kpi.pd-kpi-aviso strong { color: #b45309; }

/* Buscador y filtros */
.pd-buscador { display: grid; grid-template-columns: minmax(240px, 1fr) auto auto; gap: var(--spacing-sm); margin-bottom: var(--spacing-md); }
.pd-buscador-amplio { grid-template-columns: minmax(200px, 1.5fr) minmax(190px, 1fr) minmax(170px, 1fr) minmax(140px, 160px) minmax(140px, 160px) auto; }
.pd-input, .pd-campo input, .pd-campo select, .pd-campo textarea, .pd-buscador input, .pd-buscador select {
    width: 100%; min-height: 44px; padding: 10px 12px; border: 1px solid var(--gray-300); border-radius: var(--radius-md);
    font: inherit; font-size: 1rem; background: #fff; color: var(--gray-900); }
.pd-campo textarea { min-height: 90px; resize: vertical; }
.pd-input:focus, .pd-campo input:focus, .pd-campo select:focus, .pd-campo textarea:focus, .pd-buscador input:focus, .pd-buscador select:focus {
    outline: none; border-color: var(--ne-azul); box-shadow: 0 0 0 3px var(--ne-azul-claro); }
.pd-campo { display: flex; flex-direction: column; gap: 4px; }
.pd-campo label { font-size: 0.82rem; font-weight: 600; color: var(--gray-600); }
.pd-campo small { color: var(--gray-500); font-size: 0.8rem; }
.pd-campo.pd-error input, .pd-campo.pd-error select { border-color: var(--error-500); }
.pd-campo .pd-texto-error { color: var(--error-600); font-size: 0.8rem; font-weight: 600; }
.pd-filtros-rapidos { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: var(--spacing-md); }
.pd-filtro { min-height: 38px; padding: 6px 14px; border-radius: 999px; border: 1px solid var(--gray-300); background: #fff; color: var(--gray-700);
             font-weight: 600; font-size: 0.88rem; text-decoration: none; cursor: pointer; font-family: inherit; display: inline-flex; align-items: center; gap: 6px; }
.pd-filtro:hover { border-color: var(--ne-azul); color: var(--ne-azul); }
.pd-filtro.activa { background: var(--ne-azul); border-color: var(--ne-azul); color: #fff; }
.pd-filtro em { font-style: normal; opacity: .75; font-weight: 500; }

/* Lista de clientes / pedidos (filas tactiles) */
.pd-lista { list-style: none; margin: 0; padding: 0; }
.pd-fila { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--spacing-md); align-items: center; padding: 14px 18px;
           border-bottom: 1px solid var(--gray-100); text-decoration: none; color: inherit; background: #fff; }
.pd-fila:last-child { border-bottom: 0; }
a.pd-fila:hover, .pd-fila-click:hover { background: #f7f9fc; cursor: pointer; }
.pd-fila-titulo { font-weight: 700; color: var(--gray-900); font-size: 1.02rem; }
.pd-fila-titulo small { font-weight: 500; color: var(--gray-500); margin-left: 6px; }
.pd-fila-sub { color: var(--gray-500); font-size: 0.88rem; margin-top: 2px; }
.pd-fila .pd-chips { margin-top: 6px; }
.pd-fila-lado { display: flex; align-items: center; gap: var(--spacing-sm); flex-wrap: wrap; justify-content: flex-end; }
.pd-fila-importe { font-weight: 700; color: var(--ne-azul); font-size: 1.05rem; text-align: right; min-width: 110px; }

/* Tablas */
.pd-tabla-wrap { overflow-x: auto; }
.pd-tabla { width: 100%; border-collapse: collapse; font-size: 0.92rem; margin: 0; border: 0; border-radius: 0; box-shadow: none; overflow: visible; background: transparent; }
.pd-tabla tbody tr:hover { transform: none; box-shadow: none; background: transparent; }
.pd-tabla td { color: var(--gray-800); font-size: 0.92rem; }
.pd-tabla th.pd-der, .pd-tabla td.pd-der { text-align: right; }
.pd-tabla th { background: #f8fafc; background-image: none; font-weight: 600; color: var(--gray-600); text-align: left; padding: 10px 12px; font-size: 0.78rem; text-transform: uppercase;
               letter-spacing: .03em; border-bottom: 1px solid var(--gray-200); white-space: nowrap; }
.pd-tabla td { padding: 12px; border-bottom: 1px solid var(--gray-100); vertical-align: middle; }
.pd-tabla tbody tr.pd-click { cursor: pointer; }
.pd-tabla tbody tr.pd-click:hover { background: #f7f9fc; }
.pd-tabla tfoot td { font-weight: 700; background: #f8fafc; }

/* Paginacion */
.pd-paginacion { display: flex; justify-content: space-between; align-items: center; gap: var(--spacing-md); padding: 12px 18px;
                 border-top: 1px solid var(--gray-200); background: #fafbfc; flex-wrap: wrap; }
.pd-paginacion .pd-acciones a, .pd-paginacion .pd-acciones span { min-width: 44px; min-height: 40px; display: inline-flex; align-items: center;
                 justify-content: center; border: 1px solid var(--gray-300); border-radius: var(--radius-md); text-decoration: none; color: var(--gray-700);
                 font-weight: 600; padding: 0 12px; background: #fff; }
.pd-paginacion .pd-acciones span.activa { background: var(--ne-azul); color: #fff; border-color: var(--ne-azul); }

/* Ficha del cliente */
.pd-cliente-cab { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--spacing-lg); align-items: start; }
.pd-cliente-cab h1 { font-size: 1.5rem; color: var(--ne-azul); line-height: 1.25; }
.pd-cliente-cab .pd-sub { color: var(--gray-500); margin: 4px 0 8px; }
.pd-pestanas { display: flex; gap: 2px; border-bottom: 1px solid var(--gray-200); margin: 0 0 var(--spacing-lg); overflow-x: auto; }
.pd-pestanas a { padding: 12px 20px; min-height: 44px; color: var(--gray-600); text-decoration: none; font-weight: 600; white-space: nowrap;
                 border-bottom: 3px solid transparent; }
.pd-pestanas a:hover { color: var(--ne-azul); }
.pd-pestanas a.activa { color: var(--ne-azul); border-bottom-color: var(--ne-azul); }
.pd-pestanas a em { font-style: normal; background: var(--gray-100); border-radius: 999px; padding: 1px 8px; margin-left: 6px; font-size: .8rem; }
.pd-checklist { list-style: none; margin: 0; padding: 0; }
.pd-checklist li { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px dashed var(--gray-200); }
.pd-checklist li:last-child { border-bottom: 0; }
.pd-checklist .pd-ok, .pd-checklist .pd-ko { width: 26px; height: 26px; border-radius: 50%; display: inline-flex; align-items: center;
                 justify-content: center; font-weight: 700; flex: none; font-size: .85rem; }
.pd-checklist .pd-ok { background: #d1fae5; color: #065f46; }
.pd-checklist .pd-ko { background: #fef3c7; color: #92400e; }
.pd-dato { display: flex; flex-direction: column; gap: 2px; }
.pd-dato span { color: var(--gray-500); font-size: 0.8rem; font-weight: 600; }
.pd-dato strong { color: var(--gray-900); font-weight: 600; overflow-wrap: anywhere; }
.pd-seccion-form { border-top: 1px solid var(--gray-200); margin-top: var(--spacing-lg); padding-top: var(--spacing-lg); }
.pd-seccion-form h4 { color: var(--ne-azul); margin-bottom: var(--spacing-md); }
.pd-pie-form { display: flex; justify-content: flex-end; gap: var(--spacing-sm); margin-top: var(--spacing-lg); flex-wrap: wrap; }
.pd-subida { border: 2px dashed var(--gray-300); border-radius: var(--radius-lg); padding: var(--spacing-lg); background: #fafbfc;
             display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; gap: var(--spacing-md); align-items: end; }

/* Dialogo */
.pd-dialogo { border: 0; border-radius: var(--radius-lg); padding: 0; width: min(560px, 94vw); box-shadow: var(--shadow-xl); }
.pd-dialogo::backdrop { background: rgba(15, 23, 42, .55); }
.pd-dialogo form { padding: var(--spacing-lg); }
.pd-dialogo h3 { color: var(--ne-azul); margin-bottom: var(--spacing-md); }

/* Nuevo pedido: pasos */
.pd-pasos { display: flex; gap: 0; margin-bottom: var(--spacing-lg); background: #fff; border: 1px solid var(--gray-200); border-radius: var(--radius-lg); overflow: hidden; }
.pd-paso { flex: 1; display: flex; align-items: center; gap: 10px; padding: 12px 16px; color: var(--gray-500); font-weight: 600; border-right: 1px solid var(--gray-200); }
.pd-paso:last-child { border-right: 0; }
.pd-paso b { width: 28px; height: 28px; border-radius: 50%; background: var(--gray-200); color: var(--gray-600); display: inline-flex;
             align-items: center; justify-content: center; flex: none; }
.pd-paso.activo { color: var(--ne-azul); background: var(--ne-azul-claro); }
.pd-paso.activo b, .pd-paso.hecho b { background: var(--ne-azul); color: #fff; }
.pd-segmento { display: inline-flex; border: 1px solid var(--ne-azul); border-radius: var(--radius-md); overflow: hidden; }
.pd-segmento label { margin: 0; }
.pd-segmento input { position: absolute; opacity: 0; pointer-events: none; }
.pd-segmento span { display: inline-flex; align-items: center; min-height: 44px; padding: 0 22px; font-weight: 600; color: var(--ne-azul); cursor: pointer; background: #fff; }
.pd-segmento input:checked + span { background: var(--ne-azul); color: #fff; }
.pd-segmento input:disabled + span { cursor: not-allowed; opacity: .55; }
.pd-config { display: grid; grid-template-columns: auto minmax(200px, 1fr) minmax(200px, 1fr); gap: var(--spacing-md); align-items: end; }
.pd-catalogo-barra { display: grid; grid-template-columns: minmax(220px, 1fr) minmax(160px, 220px) minmax(160px, 220px) auto; gap: var(--spacing-sm);
                     padding: var(--spacing-md); border-bottom: 1px solid var(--gray-200); background: #fafbfc; position: sticky; top: 49px; z-index: 50; }
.pd-grupo { background: var(--ne-azul-claro); color: var(--ne-azul); font-weight: 700; padding: 8px 18px; font-size: .9rem; letter-spacing: .02em; }
.pd-grupo small { font-weight: 500; color: var(--gray-500); margin-left: 6px; }
.pd-prod { display: grid; grid-template-columns: minmax(0, 1fr) 150px 150px 110px; gap: var(--spacing-md); align-items: center; padding: 10px 18px;
           border-bottom: 1px solid var(--gray-100); }
.pd-prod.con-cantidad { background: #f0fdf4; }
.pd-prod-nombre { font-weight: 600; }
.pd-prod-nombre small { display: block; font-weight: 500; color: var(--gray-500); font-size: .82rem; }
.pd-prod-total { text-align: right; font-weight: 700; color: var(--ne-azul); font-variant-numeric: tabular-nums; }
.pd-paso-num { display: inline-flex; align-items: center; border: 1px solid var(--gray-300); border-radius: var(--radius-md); background: #fff; overflow: hidden; }
.pd-paso-num button { width: 44px; height: 44px; border: 0; background: #f8fafc; font-size: 1.3rem; font-weight: 700; color: var(--ne-azul); cursor: pointer; }
.pd-paso-num button:active { background: var(--ne-azul-claro); }
.pd-paso-num input { width: 58px; height: 44px; border: 0; text-align: center; font-size: 1.05rem; font-weight: 700; font-family: inherit;
                     -moz-appearance: textfield; appearance: textfield; }
.pd-paso-num input::-webkit-outer-spin-button, .pd-paso-num input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.pd-paso-num.pd-dto input { width: 54px; font-weight: 600; }
.pd-paso-num.excedido { border-color: var(--warning-500); background: #fffbeb; }
.pd-paso-num.excedido input { background: #fffbeb; color: #92400e; }
.pd-max { display: block; font-size: .75rem; color: var(--gray-500); margin-top: 3px; text-align: center; }
.pd-max.excedido { color: #b45309; font-weight: 700; }
.pd-carrito { position: fixed; left: 0; right: 0; bottom: 0; z-index: 950; background: var(--ne-azul); color: #fff; box-shadow: 0 -6px 18px rgba(0, 0, 0, .18); }
.pd-carrito-in { max-width: 1280px; margin: 0 auto; padding: 12px var(--spacing-xl); display: flex; align-items: center; gap: var(--spacing-lg); flex-wrap: wrap; }
.pd-carrito-dato span { display: block; font-size: .75rem; opacity: .8; text-transform: uppercase; letter-spacing: .04em; }
.pd-carrito-dato strong { font-size: 1.2rem; font-variant-numeric: tabular-nums; }
.pd-carrito-dato.total strong { font-size: 1.45rem; }
.pd-carrito .pd-hueco { flex: 1; }
.pd-carrito .ne-btn { background: #fff; color: var(--ne-azul); border-color: #fff; }
.pd-carrito .ne-btn-sec { background: transparent; color: #fff; border-color: rgba(255, 255, 255, .6); }
.pd-carrito-aviso { background: #fef3c7; color: #92400e; font-weight: 600; text-align: center; padding: 6px; font-size: .88rem; }
.pd-opcion-firma { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--spacing-md); }
.pd-opcion-firma label { border: 2px solid var(--gray-200); border-radius: var(--radius-lg); padding: var(--spacing-md); cursor: pointer; display: flex; gap: 12px; align-items: flex-start; }
.pd-opcion-firma label:has(input:checked) { border-color: var(--ne-azul); background: var(--ne-azul-claro); }
.pd-opcion-firma input { width: 20px; height: 20px; accent-color: var(--ne-azul); margin-top: 2px; }
.pd-opcion-firma strong { display: block; color: var(--ne-azul); }

/* Firma */
.pd-firma-caja { position: relative; border: 2px solid var(--gray-300); border-radius: var(--radius-lg); background: #fff; touch-action: none; }
.pd-firma { display: block; width: 100%; height: 240px; border-radius: var(--radius-lg); cursor: crosshair; }
.pd-firma-guia { position: absolute; left: 24px; right: 24px; bottom: 48px; border-bottom: 1px solid #d5dbe3; padding-bottom: 6px; color: #a7b1bd;
                 font-size: .9rem; pointer-events: none; }
.pd-firma-acciones { display: flex; justify-content: space-between; align-items: center; margin-top: 8px; gap: var(--spacing-sm); }
.pd-falta { color: var(--error-600); font-weight: 600; }
.pd-checks { grid-column: 1 / -1; display: flex; gap: var(--spacing-xl); flex-wrap: wrap; }
.pd-checks .pd-acepto { margin: 4px 0; }
.pd-acepto { display: flex; gap: 10px; align-items: flex-start; margin: var(--spacing-md) 0; cursor: pointer; }
.pd-acepto input { width: 20px; height: 20px; accent-color: var(--ne-azul); margin-top: 2px; flex: none; }

/* Totales */
.pd-totales { margin-left: auto; max-width: 380px; }
.pd-totales div { display: flex; justify-content: space-between; padding: 6px 0; font-variant-numeric: tabular-nums; }
.pd-totales .pd-total-final { border-top: 2px solid var(--ne-azul); margin-top: 6px; padding-top: 10px; font-size: 1.25rem; font-weight: 700; color: var(--ne-azul); }

/* Landing de firma (cliente) */
.pd-landing { max-width: 900px; margin: var(--spacing-lg) auto; padding: 0 var(--spacing-md) var(--spacing-2xl); width: 100%; }

@media (max-width: 1024px) {
    .pd-main { padding: var(--spacing-md) var(--spacing-md) 140px; }
    .pd-nav { padding: 0 var(--spacing-md); }
    .pd-buscador-amplio { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .pd-buscador-amplio > :first-child { grid-column: 1 / -1; }
    .pd-config { grid-template-columns: 1fr 1fr; }
    .pd-config > :first-child { grid-column: 1 / -1; }
    .pd-catalogo-barra { grid-template-columns: 1fr 1fr; }
    .pd-catalogo-barra > :first-child { grid-column: 1 / -1; }
    .pd-prod { grid-template-columns: minmax(0, 1fr) 150px 140px; }
    .pd-prod-total { grid-column: 3; }
    .pd-subida { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
    .pd-rejilla-2, .pd-opcion-firma, .pd-cliente-cab, .pd-buscador, .pd-config { grid-template-columns: 1fr; }
    .pd-prod { grid-template-columns: 1fr 1fr; }
    .pd-prod-nombre { grid-column: 1 / -1; }
    .pd-prod-total { grid-column: 1 / -1; }
    .pd-fila { grid-template-columns: 1fr; }
    .pd-fila-lado { justify-content: flex-start; }
    .pd-carrito-in { padding: 10px var(--spacing-md); gap: var(--spacing-md); }
    .pd-pasos .pd-paso span { display: none; }
}
@media print {
    .pd-nav, .pd-carrito, header, footer, .pd-acciones { display: none !important; }
}


/* =====================================================================================================================
   Ticket XXXX - Nuevo pedido (ers_pedidos_form.php), version 2. Prefijo pf-.
   Catalogo en tabla compacta + resumen del pedido fijo a la derecha (tablet horizontal) o barra abajo (vertical).
   ===================================================================================================================== */
.pf-cab { display: flex; justify-content: space-between; align-items: flex-end; gap: var(--spacing-md); margin-bottom: var(--spacing-md); }
.pf-cab h1 { margin: 2px 0 2px; font-size: 1.55rem; color: var(--ne-azul); line-height: 1.2; }
.pf-volver { font-size: .85rem; font-weight: 600; color: var(--gray-500) !important; text-decoration: none; }
.pf-volver:hover { color: var(--ne-azul) !important; }

/* Condiciones: tipo, mayorista y campaña en una franja */
.pf-config { display: grid; grid-template-columns: auto minmax(220px, 1fr) minmax(260px, 1.3fr); gap: var(--spacing-lg); align-items: start;
             background: #fff; border: 1px solid var(--gray-200); border-radius: 12px; padding: 14px 18px; margin-bottom: var(--spacing-md); }
.pf-config-campo { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.pf-etiqueta { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--gray-500); margin: 0; }
.pf-segmento span { min-height: 44px; padding: 0 26px; }
.pf-select { width: 100%; height: 44px; border: 1px solid var(--gray-300); border-radius: var(--radius-md); padding: 0 12px; font: inherit;
             font-weight: 600; color: var(--gray-800); background: #fff; }
.pf-select:focus { outline: 2px solid var(--ne-azul); outline-offset: 1px; }
.pf-select:disabled { background: var(--gray-50); color: var(--gray-400); }
.pf-fijo { height: 44px; display: flex; align-items: center; padding: 0 12px; border-radius: var(--radius-md); background: var(--gray-50);
           border: 1px dashed var(--gray-300); color: var(--gray-500); font-weight: 600; }
.pf-nota { font-size: .78rem; color: var(--gray-500); }
.pf-nota-aviso { color: #b45309; font-weight: 600; }
.pf-chips-campana { display: flex; flex-wrap: wrap; gap: 6px; min-height: 0; }
.pf-chips-campana:empty { display: none; }

/* Cuerpo: catalogo + resumen */
.pf-cuerpo { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: var(--spacing-md); align-items: start; }
.pf-izq { min-width: 0; }
.pf-catalogo { background: #fff; border: 1px solid var(--gray-200); border-radius: 12px; overflow: clip; }

.pf-barra { display: flex; gap: 10px; align-items: center; padding: 12px 14px; border-bottom: 1px solid var(--gray-100); flex-wrap: wrap; }
.pf-buscar { flex: 1 1 260px; position: relative; }
.pf-buscar input { width: 100%; height: 44px; border: 1px solid var(--gray-300); border-radius: 22px; padding: 0 16px 0 40px; font: inherit;
                   background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%236b7280' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") no-repeat 14px center; }
.pf-buscar input:focus { outline: 2px solid var(--ne-azul); outline-offset: 1px; }
.pf-unidades { display: inline-flex; gap: 6px; }
.pf-pill { height: 40px; padding: 0 14px; border-radius: 20px; border: 1px solid var(--gray-300); background: #fff; color: var(--gray-700);
           font: inherit; font-weight: 600; font-size: .88rem; cursor: pointer; white-space: nowrap; }
.pf-pill.activa { background: var(--ne-azul); border-color: var(--ne-azul); color: #fff; }
.pf-pill em { font-style: normal; display: inline-block; min-width: 22px; padding: 1px 7px; margin-left: 4px; border-radius: 10px;
              background: var(--ne-azul-claro); color: var(--ne-azul); font-size: .8rem; }
.pf-pill.activa em { background: #fff; }

.pf-marcas { display: flex; gap: 6px; padding: 10px 14px; overflow-x: auto; border-bottom: 1px solid var(--gray-200); scrollbar-width: thin; }
.pf-marca { flex: 0 0 auto; height: 34px; padding: 0 12px; border-radius: 17px; border: 1px solid transparent; background: var(--gray-100);
            color: var(--gray-700); font: inherit; font-size: .82rem; font-weight: 600; cursor: pointer; }
.pf-marca.activa { background: var(--ne-azul-claro); border-color: var(--ne-azul); color: var(--ne-azul); }

/* Filas del catalogo */
.pf-thead, .pf-fila { display: grid; grid-template-columns: minmax(0, 1fr) 76px 136px 112px 92px; gap: 10px; align-items: center; padding: 0 14px; }
.pf-thead { height: 34px; background: var(--gray-50); border-bottom: 1px solid var(--gray-200); font-size: .7rem; font-weight: 700;
            text-transform: uppercase; letter-spacing: .06em; color: var(--gray-500); position: sticky; top: 57px; z-index: 5; }
.pf-der { text-align: right; }
.pf-centro { text-align: center; }
.pf-grupo { display: flex; align-items: baseline; gap: 8px; padding: 7px 14px; background: #f8fafc; border-bottom: 1px solid var(--gray-100);
            color: var(--ne-azul); font-weight: 700; font-size: .85rem; letter-spacing: .02em; }
.pf-grupo small { color: var(--gray-400); font-weight: 600; font-size: .75rem; }
.pf-fila { min-height: 58px; border-bottom: 1px solid var(--gray-100); border-left: 3px solid transparent; padding-left: 11px; }
.pf-fila.con-cantidad { background: #f5f9ff; border-left-color: var(--ne-azul); }
.pf-fila.excedido { background: #fffbeb; border-left-color: var(--warning-500); }
.pf-prod { min-width: 0; }
.pf-prod strong { display: block; font-size: .93rem; color: var(--gray-900); line-height: 1.25; }
.pf-prod small { display: block; font-size: .76rem; color: var(--gray-500); margin-top: 2px; }
.pf-pvl { text-align: right; font-variant-numeric: tabular-nums; color: var(--gray-600); font-size: .9rem; }
.pf-cant { display: grid; grid-template-columns: 40px 1fr 40px; height: 40px; border: 1px solid var(--gray-300); border-radius: 20px; overflow: hidden; background: #fff; }
.pf-cant button { border: 0; background: transparent; color: var(--ne-azul); font-size: 1.25rem; font-weight: 700; cursor: pointer; }
.pf-cant button:active { background: var(--ne-azul-claro); }
.pf-cant input { width: 100%; min-width: 0; border: 0; text-align: center; font: inherit; font-weight: 700; font-size: 1rem; color: var(--gray-900);
                 -moz-appearance: textfield; background: transparent; }
.pf-fila.con-cantidad .pf-cant { border-color: var(--ne-azul); }
.pf-dto { display: flex; flex-direction: column; align-items: center; gap: 3px; }
.pf-dto-in { display: flex; align-items: center; height: 34px; width: 84px; border: 1px solid var(--gray-300); border-radius: var(--radius-md); background: #fff; padding-right: 8px; }
.pf-dto-in input { width: 100%; min-width: 0; border: 0; text-align: right; font: inherit; font-weight: 600; padding: 0 4px; -moz-appearance: textfield; background: transparent; }
.pf-dto-in span { color: var(--gray-400); font-weight: 600; font-size: .85rem; }
.pf-fila.excedido .pf-dto-in { border-color: var(--warning-500); background: #fff; }
.pf-max { border: 0; background: none; padding: 0; font: inherit; font-size: .72rem; font-weight: 700; color: var(--success-600); cursor: pointer; text-decoration: underline dotted; }
.pf-fila.excedido .pf-max { color: #b45309; }
.pf-cant input::-webkit-outer-spin-button, .pf-cant input::-webkit-inner-spin-button,
.pf-dto-in input::-webkit-outer-spin-button, .pf-dto-in input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.pf-neto { text-align: right; font-weight: 700; color: var(--gray-400); font-variant-numeric: tabular-nums; }
.pf-fila.con-cantidad .pf-neto { color: var(--ne-azul); }

/* Resumen del pedido */
.pf-resumen { position: sticky; top: 72px; background: #fff; border: 1px solid var(--gray-200); border-radius: 12px; display: flex; flex-direction: column;
              max-height: calc(100vh - 88px); box-shadow: 0 4px 16px rgba(15, 23, 42, .06); }
.pf-res-cab { display: flex; justify-content: space-between; align-items: baseline; padding: 14px 16px 10px; border-bottom: 1px solid var(--gray-100); }
.pf-res-cab h3 { margin: 0; font-size: 1.05rem; color: var(--ne-azul); }
.pf-res-cab span { font-size: .8rem; color: var(--gray-500); font-weight: 600; }
.pf-res-lineas { overflow-y: auto; flex: 1 1 auto; min-height: 60px; }
.pf-res-vacio { padding: 18px 16px; color: var(--gray-400); font-size: .88rem; margin: 0; text-align: center; }
.pf-res-linea { display: grid; grid-template-columns: minmax(0, 1fr) auto 28px; gap: 8px; align-items: center; padding: 8px 10px 8px 16px; border-bottom: 1px solid var(--gray-100); }
.pf-res-linea strong { display: block; font-size: .82rem; color: var(--gray-800); line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pf-res-linea small { display: block; font-size: .74rem; color: var(--gray-500); }
.pf-res-linea > span { font-weight: 700; font-size: .85rem; color: var(--ne-azul); font-variant-numeric: tabular-nums; }
.pf-res-linea.excedido small { color: #b45309; font-weight: 600; }
.pf-quitar { width: 28px; height: 28px; border-radius: 14px; border: 0; background: var(--gray-100); color: var(--gray-500); font-size: 1.05rem; line-height: 1; cursor: pointer; }
.pf-quitar:hover { background: #fee2e2; color: var(--error-600); }
.pf-res-avisos { padding: 0 12px; }
.pf-aviso { margin-top: 10px; padding: 8px 10px; border-radius: var(--radius-md); background: #fffbeb; border: 1px solid #fcd34d; color: #92400e; font-size: .8rem; }
.pf-aviso-info { background: var(--ne-azul-claro); border-color: #c7d6ea; color: var(--ne-azul); }
.pf-res-totales { padding: 12px 16px; display: grid; gap: 4px; font-size: .88rem; color: var(--gray-600); font-variant-numeric: tabular-nums; }
.pf-res-totales div { display: flex; justify-content: space-between; }
.pf-res-neto { margin-top: 6px; padding-top: 8px; border-top: 2px solid var(--ne-azul); color: var(--ne-azul) !important; align-items: baseline; }
.pf-res-neto span { font-weight: 700; }
.pf-res-neto strong { font-size: 1.45rem; }
.pf-res-botones { display: grid; gap: 8px; padding: 0 16px 16px; }
.pf-btn-principal { width: 100%; min-height: 50px; font-size: 1.02rem; justify-content: center; }
.pf-btn-principal:disabled { opacity: .45; cursor: not-allowed; }
.pf-cancelar { text-align: center; font-size: .85rem; color: var(--gray-500) !important; text-decoration: none; padding: 4px; }

/* Revision */
.pf-rev-cab { display: flex; justify-content: space-between; align-items: center; gap: var(--spacing-md); margin-bottom: var(--spacing-md); }
.pf-rev-cab h3 { margin: 0; }
.pf-rev-datos { display: flex; flex-wrap: wrap; gap: 10px 28px; margin-bottom: var(--spacing-md); }
.pf-rev-datos span { display: block; font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--gray-500); }
.pf-rev-datos strong { color: var(--gray-900); }

/* Tablet vertical / pantallas estrechas: el resumen pasa a barra fija abajo */
@media (max-width: 1100px) {
    .pf-config { grid-template-columns: 1fr 1fr; }
    .pf-config-campo:last-child { grid-column: 1 / -1; }
    .pf-cuerpo { grid-template-columns: 1fr; }
    .pf-resumen { position: fixed; left: 0; right: 0; bottom: 0; top: auto; z-index: 950; max-height: none; border-radius: 0; border: 0;
                  display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 0 14px; padding: 10px 18px;
                  background: var(--ne-azul); color: #fff; box-shadow: 0 -6px 18px rgba(0, 0, 0, .18); }
    .pf-res-lineas, .pf-res-totales div:not(.pf-res-neto) { display: none; }
    .pf-res-cab { border: 0; padding: 0; display: block; }
    .pf-res-cab h3 { display: none; }
    .pf-res-cab span { color: #fff; opacity: .85; font-size: .85rem; }
    .pf-res-avisos { grid-column: 1 / -1; order: -1; padding: 0; }
    .pf-res-avisos .pf-aviso { margin: 0 0 8px; }
    .pf-res-totales { padding: 0; color: #fff; }
    .pf-res-neto { border: 0; margin: 0; padding: 0; color: #fff !important; gap: 10px; }
    .pf-res-neto span { font-weight: 600; opacity: .85; }
    .pf-res-botones { padding: 0; grid-auto-flow: column; }
    .pf-res-botones .ne-btn { background: #fff; color: var(--ne-azul); border-color: #fff; min-height: 46px; padding: 0 22px; }
    .pf-cancelar { color: #fff !important; opacity: .8; }
    .pf-thead { top: 57px; }
    .pd-main { padding-bottom: 150px; }
}
@media (max-width: 760px) {
    .pf-config { grid-template-columns: 1fr; }
    .pf-thead { display: none; }
    .pf-fila { grid-template-columns: minmax(0, 1fr) 128px; grid-template-areas: "prod cant" "pvl dto" "neto neto"; padding: 10px 14px; row-gap: 6px; }
    .pf-prod { grid-area: prod; } .pf-cant { grid-area: cant; } .pf-pvl { grid-area: pvl; text-align: left; } .pf-dto { grid-area: dto; } .pf-neto { grid-area: neto; }
}
.pf-revisando .pf-config { pointer-events: none; opacity: .7; }
.pf-revisando .pf-quitar { display: none; }
.pf-res-botones { align-items: center; }

/* iOS: Safari amplía la página al enfocar un campo con letra < 16px */
.pf-cant input, .pf-dto-in input, .pf-buscar input, .pf-select,
.pd-body input, .pd-body select, .pd-body textarea { font-size: 16px; }
