/* ========================================================VARIABLES GLOBALES Y RESET======================================================== */.nav-icon .movygo-logo-img,.nav-icon .wialon-logo-img {filter: brightness(0) invert(1);}:root {--primary: #1e293b;--secondary: #334155;--accent: #3b82f6;--bg: #f1f5f9;--text: #1e293b;--white: #ffffff;/* Colores Pymesgo */--pymes-primary: #0f766e;--pymes-accent: #10b981;}body {font-family: 'Segoe UI', system-ui, sans-serif;background-color: var(--bg);color: var(--text);margin: 0;display: flex;height: 100vh;overflow: hidden;}/* Ocultar elementos por permisos */.hidden-by-role {display: none !important;}/* Selector de Empresa en el Sidebar */.company-selector-wrapper {padding: 10px;background: rgba(0,0,0,0.3);border-bottom: 1px solid var(--secondary);}.sidebar.collapsed .company-selector-wrapper {display: none;}#company-selector {width: 100%;padding: 5px;border-radius: 4px;background: var(--white);color: var(--primary);font-weight: bold;border: none;outline: none;cursor: pointer;}/* ========================================================NUEVOS ESTILOS: INGRESO Y LANDING DE CERTIFICADOS======================================================== /
/ Botón de Ingreso Superior Derecho */.btn-top-right {position: fixed;top: 20px;right: 20px;background-color: var(--primary);color: white;padding: 10px 20px;border-radius: 8px;font-weight: bold;cursor: pointer;border: none;box-shadow: 0 4px 6px rgba(0,0,0,0.2);z-index: 9999;transition: background 0.2s;}.btn-top-right:hover { background-color: var(--secondary); }/* Contenedor Principal de Certificados */#certificados-landing {display: flex;justify-content: center;align-items: center;min-height: 100vh;width: 100%;background-color: var(--bg);position: fixed;top: 0;left: 0;z-index: 500;overflow-y: auto;padding: 20px;box-sizing: border-box;}/* ========================================================LOGIN Y MODALES DE ACCESO======================================================== */#login-overlay {position: fixed;inset: 0;background: rgba(15, 23, 42, 0.9);display: flex;justify-content: center;align-items: center;z-index: 6000;backdrop-filter: blur(4px);padding: 20px;box-sizing: border-box;overflow-y: auto;}.login-box {background: var(--white);padding: 2.5rem;border-radius: 12px;width: 100%;max-width: 450px;box-shadow: 0 20px 25px -5px rgba(0,0,0,0.1);text-align: center;box-sizing: border-box;margin: auto;}.login-box h2 { margin-top: 0; color: var(--primary); margin-bottom: 1.5rem; }.login-box input { width: 100%; padding: 0.75rem; margin-bottom: 1rem; border: 1px solid #cbd5e1; border-radius: 6px; box-sizing: border-box; font-size: 1rem; }.login-box button { width: 100%; padding: 0.75rem; background: var(--accent); color: white; border: none; border-radius: 6px; cursor: pointer; font-weight: 600; font-size: 1rem; transition: background 0.2s; }.login-box button:hover { background: #2563eb; }.error-msg { color: #ef4444; font-size: 0.875rem; display: none; margin-top: 1rem; font-weight: bold; background: #fee2e2; padding: 10px; border-radius: 5px; }/* ========================================================DASHBOARD LAYOUT & SIDEBAR======================================================== */#dashboard { display: none; width: 100%; height: 100%; position: relative; }/* SIDEBAR (COLAPSABLE) */.sidebar {width: 260px;background: var(--primary);color: white;display: flex;flex-direction: column;flex-shrink: 0;transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);z-index: 1500;overflow: hidden;white-space: nowrap;}.sidebar.collapsed { width: 70px; }.sidebar-header {padding: 1rem;border-bottom: 1px solid var(--secondary);display: flex;align-items: center;justify-content: space-between;height: 60px;}.sidebar-logo-container {display: flex;align-items: center;justify-content: center;flex-grow: 1;overflow: hidden;transition: opacity 0.2s;}.sidebar.collapsed .sidebar-logo-container { display: none; }.sidebar-logo { max-width: 100%; height: 40px; object-fit: contain; }/* Botón Toggle Desktop */.toggle-sidebar-btn {background: transparent;border: none;color: #94a3b8;cursor: pointer;font-size: 1.2rem;padding: 5px;display: flex;align-items: center;justify-content: center;transition: color 0.2s;}.toggle-sidebar-btn:hover { color: white; }.sidebar.collapsed .toggle-sidebar-btn { width: 100%; }.nav-items { flex: 1; padding-top: 1rem; overflow-y: auto; overflow-x: hidden; }.nav-btn {padding: 0.8rem 1rem;cursor: pointer;border-left: 4px solid transparent;transition: all 0.2s;display: flex;align-items: center;gap: 12px;opacity: 0.8;position: relative;color: #e2e8f0;}.nav-btn:hover, .nav-btn.active { background: var(--secondary); border-left-color: var(--accent); opacity: 1; color: white; }.nav-icon { min-width: 24px; text-align: center; font-size: 1.2rem; }.nav-text { transition: opacity 0.2s; }.sidebar.collapsed .nav-text { opacity: 0; pointer-events: none; display: none; }/* Tooltip on hover when collapsed */.sidebar.collapsed .nav-btn:hover::after {content: attr(data-title);position: absolute;left: 70px;top: 50%;transform: translateY(-50%);background: var(--secondary);color: white;padding: 5px 10px;border-radius: 4px;font-size: 0.8rem;white-space: nowrap;z-index: 2000;box-shadow: 0 4px 6px rgba(0,0,0,0.1);pointer-events: none;}.user-info { padding: 1rem; font-size: 0.85rem; background: rgba(0,0,0,0.2); text-align: center; color: #cbd5e1; overflow: hidden; text-overflow: ellipsis; }.sidebar.collapsed .user-info { display: none; }.logout-btn {padding: 1rem;background: #991b1b;cursor: pointer;font-weight: bold;margin-top: auto;transition: background 0.2s;flex-shrink: 0;display: flex;align-items: center;justify-content: center;gap: 10px;overflow: hidden;}.logout-btn:hover { background: #7f1d1d; }.sidebar.collapsed .logout-text { display: none; }/* ========================================================CONTENT AREA======================================================== */.content { flex: 1; padding: 2rem; overflow: auto; position: relative; width: 100%; transition: margin-left 0.3s; }.section { display: none; animation: fadeIn 0.2s ease-out; padding-bottom: 80px; width: 100%; box-sizing: border-box; }.section.active { display: block; }@keyframes fadeIn { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: translateY(0); } }/* HEADER & BUTTONS FIX */h1 {margin-top: 0;border-bottom: 2px solid #e2e8f0;padding-bottom: 0.5rem;margin-bottom: 1.5rem;font-size: 1.5rem;display: flex;justify-content: space-between;align-items: center;flex-wrap: wrap;gap: 15px;}.dashboard-controls {display: flex;align-items: center;gap: 10px;flex-wrap: wrap;}/* KPI CARDS (DASHBOARD) */.dashboard-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.5rem; margin-bottom: 2rem; }.kpi-card { background: white; padding: 1.5rem; border-radius: 8px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1); border-top: 4px solid var(--accent); position: relative; overflow: hidden; }.kpi-title { font-size: 0.85rem; color: var(--secondary); text-transform: uppercase; font-weight: bold; margin-bottom: 0.5rem; letter-spacing: 0.5px; }.kpi-value { font-size: 1.8rem; font-weight: bold; color: var(--primary); margin-bottom: 0.25rem; }.kpi-sub { font-size: 0.85rem; color: #64748b; display: flex; justify-content: space-between; align-items: center; margin-top: 8px;}/* CONTENEDORES DE GRÁFICAS */.chart-grid {display: grid;grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));gap: 1.5rem;margin-bottom: 2rem;}.chart-box {background: white;padding: 1.5rem;border-radius: 8px;box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);}.chart-title {font-weight: bold;color: var(--secondary);margin-bottom: 1rem;padding-bottom: 0.5rem;border-bottom: 1px solid #e2e8f0;}/* ========================================================ESTILOS DE POPUP FORMS / MODALES======================================================== */.form-backdrop {display: none; position: fixed; inset: 0; background: rgba(15, 23, 42, 0.6);backdrop-filter: blur(4px); z-index: 1900; animation: fadeIn 0.3s;}.form-backdrop.active { display: block; }.form-card {background: var(--white); padding: 1.5rem; border-radius: 12px;box-shadow: 0 10px 25px -5px rgba(0,0,0,0.1); margin-bottom: 2rem;border-left: 5px solid var(--accent);display: none;}.form-card.popup-mode {display: block; position: fixed; top: 50%; left: 50%;transform: translate(-50%, -50%) scale(0.95);width: 90%; max-width: 650px; z-index: 2000;animation: popIn 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;max-height: 90vh; overflow-y: auto;}@keyframes popIn {to { transform: translate(-50%, -50%) scale(1); opacity: 1; }}.close-form-btn {position: absolute; top: 10px; right: 15px; font-size: 1.5rem; cursor: pointer; color: #94a3b8;}.close-form-btn:hover { color: #ef4444; }.btn-new-entry {background: var(--accent); color: white; border: none; padding: 0.6rem 1.2rem;border-radius: 30px; cursor: pointer; font-weight: 600; font-size: 0.9rem;display: flex; align-items: center; gap: 8px; box-shadow: 0 4px 6px rgba(59, 130, 246, 0.3);transition: transform 0.2s, box-shadow 0.2s;white-space: nowrap;}.btn-new-entry:hover { transform: translateY(-2px); box-shadow: 0 6px 10px rgba(59, 130, 246, 0.4); }/* ANIMACIÓN DE ÉXITO */#success-animation-overlay {position: fixed; inset: 0; background: rgba(255,255,255,0.9); z-index: 3000;display: none; flex-direction: column; justify-content: center; align-items: center;}.checkmark-circle {width: 80px; height: 80px; border-radius: 50%; background: #10b981;display: flex; justify-content: center; align-items: center;box-shadow: 0 0 20px #10b981; animation: scaleUp 0.5s ease;}.checkmark {width: 40px; height: 20px; border-left: 6px solid white; border-bottom: 6px solid white;transform: rotate(-45deg); margin-top: -10px;animation: checkDraw 0.5s 0.2s forwards; opacity: 0;}@keyframes scaleUp { from { transform: scale(0); } to { transform: scale(1); } }@keyframes checkDraw { from { opacity: 0; transform: rotate(-45deg) scale(0.5); } to { opacity: 1; transform: rotate(-45deg) scale(1); } }/* Resto de estilos generales de formularios */.form-title { font-size: 1.1rem; font-weight: 600; margin-bottom: 1rem; color: var(--secondary); }.form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; margin-bottom: 1rem; }input, select, textarea { padding: 0.6rem; border: 1px solid #cbd5e1; border-radius: 6px; width: 100%; box-sizing: border-box; font-size: 16px; }.btn-submit { background: #10b981; color: white; border: none; padding: 0.7rem 1.5rem; border-radius: 6px; cursor: pointer; font-weight: 600; float: right; transition: background 0.2s; }.btn-submit:hover { background: #059669; }/* ========================================================TABLAS Y CONTENEDORES DE BÚSQUEDA======================================================== */.search-container { margin-bottom: 1rem; display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }.search-input { flex: 1; padding: 0.8rem 1rem; border: 1px solid #cbd5e1; border-radius: 8px; font-size: 1rem; box-shadow: 0 2px 4px rgba(0,0,0,0.05); min-width: 200px;}.search-input:focus { outline: none; border-color: var(--accent); }.toggle-group { display: flex; align-items: center; gap: 8px; white-space: nowrap; font-size: 0.9rem; color: var(--secondary); cursor: pointer; user-select: none; background: #e2e8f0; padding: 0.5rem 1rem; border-radius: 20px;}.table-container {background: var(--white);border-radius: 8px;box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);overflow-x: auto;width: 100%;-webkit-overflow-scrolling: touch;}table {width: 100%;border-collapse: collapse;font-size: 0.85rem;margin-bottom: 1.5rem;min-width: 600px;}th, td {padding: 0.8rem 1rem;text-align: left;border-bottom: 1px solid #e2e8f0;color: #4b5563;}/* Alineación Global de Tablas */th {background: #f3f4f6;color: #374151;padding: 8px 10px;font-weight: 700;border-bottom: 2px solid #cbd5e1;white-space: nowrap;text-align: center;}tr:nth-child(even) { background-color: #f9fafb; }tr:hover { background: #f0f9ff; }.group-header-client { background-color: #cbd5e1 !important; color: #1e293b; font-weight: bold; }.group-header-month { background-color: #e2e8f0 !important; font-style: italic; padding-left: 2rem !important; }.badge { padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 700; text-transform: uppercase; display: inline-block;}.select-edit { padding: 0.25rem 1.5rem 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 700; text-transform: uppercase; border: 1px solid transparent; cursor: pointer; outline: none; appearance: none; background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e"); background-position: right 0.2rem center; background-repeat: no-repeat; background-size: 1.2em 1.2em; }.btn-note-icon { background: none; border: none; cursor: pointer; font-size: 1.2rem; padding: 5px 10px; border-radius: 6px; }.btn-note-icon:hover { background-color: #e0f2fe; transform: scale(1.1); }/* Nuevos estilos para botones de eliminar filas */.btn-delete-icon { background: none; border: none; cursor: pointer; font-size: 1.2rem; padding: 5px 10px; border-radius: 6px; color: #ef4444; transition: all 0.2s; }.btn-delete-icon:hover { background-color: #fee2e2; transform: scale(1.1); color: #dc2626; }.status-dot { height: 10px; width: 10px; border-radius: 50%; display: inline-block; margin-right: 5px; }.dot-green { background-color: #166534; } .dot-red { background-color: #991b1b; } .dot-yellow { background-color: #854d0e; } .dot-purple { background-color: #6b21a8; } .bg-gray { background-color: #f1f5f9; color: #475569; border-color: #e2e8f0; }.btn-export { background: #2563eb; color: white; padding: 0.6rem 1.2rem; border: none; border-radius: 6px; cursor: pointer; font-weight: 600; display: flex; align-items: center; gap: 8px; font-size: 0.9rem; transition: background 0.2s; white-space: nowrap; }.btn-excel-debt { background: #166534; color: white; padding: 0.6rem 1.2rem; border: none; border-radius: 6px; cursor: pointer; font-weight: 600; display: flex; align-items: center; gap: 8px; font-size: 0.9rem; margin-left: 0px; white-space: nowrap; }.excel-filter-select { padding: 0.5rem; border-radius: 6px; border: 1px solid #cbd5e1; font-size: 0.9rem; background-color: #f0fdf4; color: #166534; font-weight: 600; cursor: pointer; }/* ========================================================MOBILE MENU Y OPTIMIZACIONES CELULAR======================================================== */.mobile-menu-btn { display: none; position: absolute; top: 1rem; right: 1rem; z-index: 1600; background: var(--primary); color: white; border: none; padding: 0.5rem; border-radius: 6px; cursor: pointer; }.mobile-menu-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 1400; }@media (max-width: 768px) {.mobile-menu-btn { display: block; }.sidebar { position: fixed; height: 100%; left: -260px; box-shadow: 2px 0 10px rgba(0,0,0,0.2); width: 260px !important; }.sidebar.open { left: 0; }.mobile-menu-overlay.open { display: block; }.content { padding: 1rem; width: 100%; max-width: 100vw; }.toggle-sidebar-btn { display: none; }h1 { flex-direction: column; align-items: flex-start; }.dashboard-controls { width: 100%; justify-content: flex-start; }.chart-box { padding: 10px; }.cartera-section { grid-template-columns: 1fr; }table { min-width: max-content; }.chart-grid { grid-template-columns: 1fr; }/* Ajustes específicos para móviles (Ingreso y Landing) */
.btn-top-right { top: 10px; right: 10px; padding: 8px 12px; font-size: 0.85rem; }
#certificados-landing { padding-top: 70px; align-items: flex-start; }
#login-overlay { padding-top: 70px; align-items: flex-start; }
.login-box { padding: 1.5rem !important; width: 100% !important; margin-bottom: 2rem; }
}/* Helpers Colors */.bg-green { background-color: #dcfce7; color: #166534; border-color: #bbf7d0; }.bg-yellow { background-color: #fef9c3; color: #854d0e; border-color: #fde047; }.bg-red { background-color: #fee2e2; color: #991b1b; border-color: #fecaca; }.bg-orange { background-color: #ffedd5; color: #9a3412; border-color: #fdba74; }.bg-purple { background-color: #f3e8ff; color: #6b21a8; border-color: #d8b4fe; }.text-expired { color: #991b1b; font-weight: bold; }.text-valid { color: #166534; font-weight: bold; }/* Modal Generico */.modal { display: none; position: fixed; z-index: 2000; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0,0,0,0.5); align-items: center; justify-content: center; }.modal.show { display: flex; }.modal-content { background-color: #fefefe; padding: 20px; border-radius: 8px; width: 90%; max-width: 500px; box-shadow: 0 10px 25px rgba(0,0,0,0.2); }.modal-header { font-weight: bold; font-size: 1.2rem; margin-bottom: 1rem; color: var(--primary); display: flex; justify-content: space-between; align-items: center; }.close-modal { cursor: pointer; font-size: 1.5rem; color: #aaa; }.btn-save-modal { background: var(--accent); color: white; padding: 0.5rem 1rem; border: none; border-radius: 4px; cursor: pointer; font-weight: bold; transition: background 0.2s;}.btn-save-modal:hover { background: #2563eb; }.btn-confirm-yes { background: #dc2626; color: white; margin-left: 10px; }.btn-confirm-yes:hover { background: #b91c1c; }.btn-confirm-no { background: #64748b; color: white; }.btn-confirm-no:hover { background: #475569; }/* Toast */#toast { visibility: hidden; min-width: 250px; background-color: #333; color: #fff; text-align: center; border-radius: 4px; padding: 16px; position: fixed; z-index: 3000; left: 50%; bottom: 30px; transform: translateX(-50%); font-size: 1rem; }#toast.show { visibility: visible; animation: fadein 0.5s, fadeout 0.5s 2.5s; }@keyframes fadein { from {bottom: 0; opacity: 0;} to {bottom: 30px; opacity: 1;} }@keyframes fadeout { from {bottom: 30px; opacity: 1;} to {bottom: 0; opacity: 0;} }/* ========================================================ESTILOS ESPECÍFICOS DE LAS TABLAS DE GRÁFICOS (CHART TABLES)======================================================== */.chart-table {width: 100%;border-collapse: collapse;margin-top: 1rem;font-size: 0.9rem;border: 1px solid #e2e8f0;}.chart-table th,.chart-table td {padding: 10px 15px;text-align: right !important;}.chart-table th {background: #e2e8f0;color: #334155;font-weight: 700;border-bottom: 2px solid #cbd5e1;}.chart-table td {border-bottom: 1px solid #f1f5f9;color: #475569;}.chart-table th:first-child,.chart-table td:first-child {text-align: left !important;}/* Cartera Section */.cartera-section { display: grid; grid-template-columns: 1fr; gap: 1.5rem; margin-bottom: 2rem; }.cartera-table-container { background: white; border-radius: 8px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1); border-top: 4px solid #ef4444; overflow: auto; width: 100%; }.cartera-header { background: #f8fafc; padding: 1rem; border-bottom: 1px solid #e2e8f0; font-weight: bold; color: #ef4444; text-transform: uppercase; font-size: 0.9rem; }.cartera-total-card { background: #1e293b; color: white; border-radius: 8px; padding: 2rem; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; box-shadow: 0 10px 15px -3px rgba(0,0,0,0.3); position: relative; overflow: hidden; }.cartera-total-card::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 5px; background: linear-gradient(90deg, #ef4444, #f59e0b); }/* Visor Notas Esquina */#note-display-corner { position: fixed; bottom: 20px; right: 20px; width: 300px; min-height: 80px; background: white; border-left: 6px solid var(--accent); box-shadow: 0 10px 25px rgba(0,0,0,0.2); padding: 15px; border-radius: 8px; z-index: 2500; display: none; animation: slideIn 0.3s ease-out; font-size: 0.95rem; color: #334155; line-height: 1.5; }@keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } }/* ========================================================ESTILOS DE IMPRESIÓN (PDF)======================================================== */@media print {body { background-color: white; -webkit-print-color-adjust: exact; print-color-adjust: exact; display: block; height: auto; overflow: visible; }#sidebar, .mobile-menu-btn, .dashboard-controls, .print-hidden, h1, #note-display-corner, #toast { display: none !important; }.content { padding: 0 !important; margin: 0 !important; width: 100% !important; display: block !important; overflow: visible !important; transition: none !important; }#dashboard { display: block !important; height: auto !important; overflow: visible !important; }.section { display: none !important; padding-bottom: 0 !important; }#view-informe-financiero { display: block !important; }#informe-financiero-content { box-shadow: none !important; padding: 0 !important; margin: 0 !important; }.no-print { display: none !important; }
.shadow-lg { box-shadow: none !important; }
.p-10 { padding: 0 !important; }
.max-w-7xl { max-width: 100% !important; }
canvas { max-height: 250px !important; }
h1 { font-size: 20pt; }
h2 { font-size: 16pt; margin-top: 15px; margin-bottom: 10px; page-break-after: avoid; }
h3 { font-size: 12pt; margin-bottom: 5px; page-break-after: avoid; }
td, th { font-size: 8pt; padding: 4px !important; }
.break-inside-avoid { page-break-inside: avoid; break-inside: avoid; }
section { page-break-inside: auto; }
}/* ========================================================ESTILOS NUEVOS: BARRA DE PROGRESO (CARGA MASIVA)======================================================== */.progress-bar-striped {background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-size: 1rem 1rem;animation: progress-stripes 1s linear infinite;}@keyframes progress-stripes {from { background-position: 1rem 0; }to { background-position: 0 0; }}/* ========================================================ESTILOS NUEVOS: BUSCADOR CUSTOM (REGISTRO UNIFICADO)======================================================== */.custom-searchable-select {position: relative;width: 100%;}.custom-dropdown-list {position: absolute;top: 100%;left: 0;right: 0;background: white;border: 1px solid #cbd5e1;border-radius: 6px;box-shadow: 0 10px 15px -3px rgba(0,0,0,0.1);max-height: 200px;overflow-y: auto;z-index: 3000;display: none;margin-top: 4px;}.custom-dropdown-list.show {display: block;}.custom-dropdown-option {padding: 10px 15px;cursor: pointer;border-bottom: 1px solid #f1f5f9;font-size: 0.95rem;color: #334155;transition: background-color 0.2s;}.custom-dropdown-option:last-child {border-bottom: none;}.custom-dropdown-option:hover {background-color: #e0f2fe;color: #1e40af;font-weight: 600;}/* ========================================================ESTILOS NUEVOS: INFORME FINANCIERO Y COMPARATIVAS======================================================== */.text-pos { color: #059669; font-weight: 600; }.text-neg { color: #dc2626; font-weight: 600; }.td-num { text-align: right; font-variant-numeric: tabular-nums; }.row-total { background-color: #e5e7eb !important; font-weight: bold; color: #111827; border-top: 2px solid #9ca3af; }.chart-container { position: relative; height: 300px; width: 100%; margin-bottom: 1.5rem; }.section-header { border-left-width: 4px; padding-left: 0.75rem; margin-bottom: 1.5rem; text-transform: uppercase; }/* ========================================================ESTILOS ESPECÍFICOS PARA APIS (WIALON / MOVYGO)Y RESALTADO GLOBAL DE UNIDADES CONGELADAS======================================================== */.deactivated-row {background-color: #fff7ed !important;transition: background-color 0.2s ease;}.deactivated-row:hover {background-color: #ffedd5 !important;}.deactivated-row td {border-bottom: 1px solid #fdba74 !important;opacity: 0.95;}.text-subrayado-rojo {text-decoration: underline;text-decoration-color: #ea580c;text-decoration-thickness: 2px;color: #9a3412;}/* Pestañas de Sub-Navegación (Wialon) */.sub-nav {display: flex;gap: 10px;margin-bottom: 15px;border-bottom: 1px solid #e2e8f0;padding-bottom: 10px;}.sub-nav-btn {padding: 8px 16px;border-radius: 8px;background: #f1f5f9;border: 1px solid #e2e8f0;cursor: pointer;font-weight: 600;color: #475569;transition: all 0.2s ease;}.sub-nav-btn:hover {background: #e2e8f0;color: #1e293b;}.sub-nav-btn.active {background: #3b82f6;color: white;border-color: #2563eb;box-shadow: 0 4px 6px rgba(59, 130, 246, 0.3);}/* Botón flotante para guardar (APIs) */#btn-save-movygo, #btn-save-wialon {animation: pulseGlow 2s infinite;}@keyframes pulseGlow {0% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4); }70% { box-shadow: 0 0 0 6px rgba(16, 185, 129, 0); }100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }}