/* Control Presupuestario App - Estilo Microsoft Fluent / M365 */

@font-face {
	font-family: "Public Sans";
	src: url("../fonts/public-sans/PublicSans-Regular.woff2") format("woff2");
	font-style: normal;
	font-weight: 400;
	font-display: swap;
}

@font-face {
	font-family: "Public Sans";
	src: url("../fonts/public-sans/PublicSans-Medium.woff2") format("woff2");
	font-style: normal;
	font-weight: 500;
	font-display: swap;
}

@font-face {
	font-family: "Public Sans";
	src: url("../fonts/public-sans/PublicSans-SemiBold.woff2") format("woff2");
	font-style: normal;
	font-weight: 600;
	font-display: swap;
}

:root {
	--cp-font-family: "Public Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

	/* Paleta Mantis (referencia demo; ver docs/v1/02-Diseno-Tecnico.md seccion 1.2) */
	--mantis-blue: #1890ff;
	--mantis-blue-hover: #1373cc;
	--mantis-bg: #fafafb;
	--mantis-bg-page: #f0f0f0;
	--mantis-bg-surface: #ffffff;
	--mantis-border: #f0f0f0;
	--mantis-border-alt: #e6ebf1;
	--mantis-text-main: #262626;
	--mantis-text-secondary: #8c8c8c;
	--mantis-success: #52c41a;
	--mantis-warning: #faad14;
	--mantis-danger: #ff4d4f;
	--mantis-primary-subtle: #e6f7ff;
	--mantis-sidebar-bg: #ffffff;
	--mantis-sidebar-bg-hover-item: #f5f5f5;
	--mantis-sidebar-text-muted: #8c8c8c;

	/* Alias CP (compatibilidad reglas existentes) */
	--cp-bg-page: var(--mantis-bg-page);
	--cp-bg-surface: var(--mantis-bg-surface);
	--cp-primary: var(--mantis-blue);
	--cp-primary-hover: var(--mantis-blue-hover);
	--cp-primary-subtle: var(--mantis-primary-subtle);
	--cp-text-primary: var(--mantis-text-main);
	--cp-text-secondary: var(--mantis-text-secondary);
	--cp-border: var(--mantis-border-alt);
	--cp-success: var(--mantis-success);
	--cp-warning: var(--mantis-warning);
	--cp-danger: var(--mantis-danger);
}

body,
button,
input,
select,
textarea {
	font-family: var(--cp-font-family);
}

#cp-app {
	font-family: var(--cp-font-family);
	font-size: 0.9375rem;
	color: var(--cp-text-primary);
	background-color: var(--cp-bg-page);
	min-height: auto;
	display: flex;
	flex-direction: column;
	padding: 0;
}

/* Contenido principal a la derecha del sidebar */
#cp-app > div.portlet-content {
	flex: 1;
	min-width: 0;
	overflow: visible;
	padding: 2rem;
	background-color: var(--mantis-bg);
}

#cp-app .portlet-content {
	min-height: 200px;
	background-color: var(--cp-bg-surface);
	padding: 1.25rem;
	border-radius: 2px;
	border: 1px solid var(--cp-border);
}

#cp-app .portlet-content h5 {
	font-size: 1.1rem;
	font-weight: 600;
	color: var(--cp-text-primary);
	margin-bottom: 1rem;
}

#cp-app .text-muted {
	color: var(--cp-text-secondary) !important;
}

/* Botones */
#cp-app .btn-primary {
	background-color: var(--mantis-blue);
	border-color: var(--mantis-blue);
	color: #fff;
	margin-left: 10px;
}

#cp-app .btn-primary:hover {
	background-color: var(--cp-primary-hover);
	border-color: var(--cp-primary-hover);
	color: #fff;
}

#cp-app .btn-secondary {
	background-color: var(--cp-bg-surface);
	border-color: var(--cp-border);
	color: var(--cp-text-primary);
}

#cp-app .btn-secondary:hover {
	background-color: var(--cp-border);
	border-color: var(--cp-border);
	color: var(--cp-text-primary);
}

#cp-app .btn-outline-primary {
	border-color: var(--cp-primary);
	color: var(--cp-primary);
}

#cp-app .btn-outline-primary:hover {
	background-color: var(--cp-primary-subtle);
	border-color: var(--cp-primary);
	color: var(--cp-primary-hover);
}

#cp-app .btn-outline-danger {
	border-color: var(--cp-danger);
	color: var(--cp-danger);
}

#cp-app .btn-outline-danger:hover {
	background-color: rgba(209, 52, 56, 0.08);
	border-color: var(--cp-danger);
	color: var(--cp-danger);
}

#cp-app .btn-outline-warning {
	border-color: var(--cp-warning);
	color: #5c4a00;
}

#cp-app .table-actions .btn { margin-right: 4px; }

/* ========== Tablas / DataTables (estilo Fluent ultra compacto) ========== */
#cp-app table.dataTable {
    width: 100% !important;
    /*border-collapse: collapse !important;*/
    /*margin-top: 0 !important;*/
    margin-bottom: 0 !important;
    /*border: 1px solid var(--cp-border);*/
    border-radius: 6px;
    overflow: hidden;
}

#cp-app table.dataTable thead th {
    background-color: #faf9f8;
    color: var(--cp-text-primary);
    font-weight: 600;
    font-size: 0.875rem;
    border-bottom: 1px solid var(--cp-border);
    border-top: none;
    white-space: nowrap;
    padding: 0.1rem 0.8rem !important;  /* reducimos padding horizontal también */
	height: 36px !important;           /* altura fija controlada*/
	max-height: 32px !important;
    line-height: 2 !important;
}

#cp-app table.dataTable tbody td {
    border-bottom: 1px solid var(--cp-border);
    padding: 0.05rem 0.8rem !important;       /* sin padding vertical, horizontal reducido */
    color: var(--cp-text-primary);
    vertical-align: middle;
    line-height: 2 !important;
    font-size: 0.875rem;
    height: 32px !important;            /* altura fija controlada*/
    min-height: 0 !important;
    max-height: 32px !important;
}

/* Para que el contenido no se desborde */
#cp-app table.dataTable tbody td * {
    margin: 0;
    padding: 0;
    line-height: 2 !important;
}

/* Botones ultra compactos */
#cp-app .table-actions .btn {
    padding: 0 0.25rem !important;
    font-size: 0.875rem !important;
    line-height: 1.2 !important;
    height: 20px !important;
    margin: 0 2px 0 0 !important;
    border-radius: 3px;
}

/* Opcional: mejorar la paginación de DataTables para que se vea más integrada */
#cp-app .dataTables_wrapper .dataTables_paginate .paginate_button {
    padding: 0.3rem 0.6rem;
    margin: 0 2px;
    border: 1px solid var(--cp-border);
    border-radius: 4px;
    background-color: #fff;
    color: var(--cp-text-primary) !important;
}

#cp-app .dataTables_wrapper .dataTables_paginate .paginate_button.current {
    background-color: var(--cp-primary);
    border-color: var(--cp-primary);
    color: #fff !important;
}

#cp-app .dataTables_wrapper .dataTables_paginate .paginate_button:hover {
    background-color: var(--cp-primary-subtle);
    border-color: var(--cp-primary);
}

#cp-app.cp-modal-open {
	/* Solo marca de estado; el stacking lo resuelven body > .modal */
	position: relative;
	z-index: auto;
}
#cp-app .modal {
	z-index: 1100;
}
/* Modal movido a body: por encima del sidenav (970) y del #cp-app */
body > .modal-backdrop {
	z-index: 1090;
}
body > .modal {
	z-index: 1100;
}

/* Modal en body: valores explicitos (sin herencia de #cp-app) */
body > .modal .modal-content {
	background-color: #ffffff;
	border: 1px solid #d6d6d6;
	border-radius: 2px;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
}
body > .modal .modal-body {
	padding: 1rem;
	background-color: #ffffff;
	color: #323130;
}
body > .modal .modal-footer {
	padding: 0.75rem 1rem;
	background-color: #faf9f8;
	border-top: 1px solid #d6d6d6;
}

#cp-app .cp-section { display: none; }
#cp-app .cp-section.active { display: block; }

/* Inputs y formularios */
#cp-app .form-control,
#cp-app .form-select {
	border-color: var(--cp-border);
	color: var(--cp-text-primary);
	font-size: 0.9375rem;
}

#cp-app .form-control:focus,
#cp-app .form-select:focus {
	border-color: var(--cp-primary);
	box-shadow: 0 0 0 2px var(--cp-primary-subtle);
	outline: none;
}

#cp-app .form-label {
	color: var(--cp-text-primary);
	font-weight: 500;
	font-size: 0.875rem;
}

/* Modales: contenedor (solo dentro de #cp-app o .modal-dialog; body > .modal en bloque "Modal en body") */
#cp-app .modal .modal-content,
.modal-dialog .modal-content {
	background-color: var(--cp-bg-surface);
	border: 1px solid var(--cp-border);
	border-radius: 2px;
	box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
}

#cp-app .modal .modal-header,
[id$="cp-modal-gerencia"] .modal-header,
[id$="cp-modal-account"] .modal-header,
[id$="cp-modal-scenario"] .modal-header {
	display: flex;
	align-items: center;
	flex-wrap: nowrap;
	gap: 0.5rem;
	background-color: #faf9f8;
	border-bottom: 1px solid var(--cp-border);
	padding: 0.75rem 1rem;
}

#cp-app .modal .modal-header .modal-title,
[id$="cp-modal-gerencia"] .modal-header .modal-title,
[id$="cp-modal-account"] .modal-header .modal-title,
[id$="cp-modal-scenario"] .modal-header .modal-title {
	flex: 1 1 auto;
	min-width: 0;
	margin: 0;
	font-size: 1.1rem;
	font-weight: 600;
	color: var(--cp-text-primary);
}

#cp-app .modal .modal-header .btn-close,
[id$="cp-modal-gerencia"] .modal-header .btn-close,
[id$="cp-modal-account"] .modal-header .btn-close,
[id$="cp-modal-scenario"] .modal-header .btn-close {
	flex: 0 0 auto;
	margin: 0 0 0 auto;
	padding: 0.5rem;
	position: relative;
	z-index: 1;
}

/* Solo modales dentro de #cp-app o .modal-dialog; body > .modal tiene reglas en bloque "Modal en body" */
#cp-app .modal .modal-body,
.modal-dialog .modal-body {
	padding: 1rem;
	color: var(--cp-text-primary);
	background-color: var(--cp-bg-surface);
}

/* Solo #cp-app y .modal-dialog; body > .modal en bloque "Modal en body" */
#cp-app .modal .modal-footer,
.modal-dialog .modal-footer {
	border-top: 1px solid var(--cp-border);
	padding: 0.75rem 1rem;
	background-color: #faf9f8;
}

.modal-dialog .modal-content .modal-header { background-color: #faf9f8; }
.modal-dialog .modal-content .modal-footer { background-color: #faf9f8; }

.cp-toast-wrapper {
	position: fixed;
	top: 1rem;
	right: 1rem;
	z-index: 10900;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	max-width: min(420px, calc(100vw - 2rem));
	pointer-events: none;
}
.cp-toast-wrapper .toast {
	pointer-events: auto;
	border: 1px solid;
	border-radius: 2px;
	box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
	font-size: 0.9375rem;
}
.cp-toast-wrapper .toast-body {
	display: flex;
	align-items: flex-start;
	gap: 0.75rem;
	padding: 0.75rem 1rem;
}
.cp-toast-wrapper .cp-toast-icon {
	flex-shrink: 0;
	width: 1.25rem;
	height: 1.25rem;
	line-height: 1.25rem;
	text-align: center;
	font-weight: bold;
	border-radius: 50%;
	font-size: 0.75rem;
}
.cp-toast-wrapper .cp-toast-text {
	flex: 1;
	min-width: 0;
	color: #323130;
}
.cp-toast-wrapper .cp-toast-success {
	background-color: #dff6dd;
	border-color: #107c10;
}
.cp-toast-wrapper .cp-toast-success .cp-toast-icon {
	background-color: #107c10;
	color: #fff;
}
.cp-toast-wrapper .cp-toast-error {
	background-color: #fde7e9;
	border-color: #d13438;
}
.cp-toast-wrapper .cp-toast-error .cp-toast-icon {
	background-color: #d13438;
	color: #fff;
}
.cp-toast-wrapper .cp-toast-warning {
	background-color: #fff4ce;
	border-color: #ffb900;
}
.cp-toast-wrapper .cp-toast-warning .cp-toast-icon {
	background-color: #ffb900;
	color: #5c4a00;
}
.cp-toast-wrapper .cp-toast-info {
	background-color: var(--mantis-primary-subtle);
	border-color: #106ebe;
}
.cp-toast-wrapper .cp-toast-info .cp-toast-icon {
	background-color: #106ebe;
	color: #fff;
}

#cp-app #cp-hot-container {
	max-width: 99%;
	min-height: 200px;
	overflow: auto;
}

/* ========== Pantalla de login (se antepone a Liferay cuando no hay sesion) ========== */
.cp-login-wrapper {
	display: flex;
	min-height: 100vh;
	width: 100%;
	margin: -1rem;
	font-family: var(--cp-font-family);
}

#cp-app,
#cp-app * {
	font-family: var(--cp-font-family);
}

/* Ingreso Presupuesto: tabla con colores suaves y tipografia homogenea */
#cp-app #cp-table-ip {
	width: 98%;
	margin-left: 12px;
	margin-bottom: 0;
	table-layout: fixed;
	border-color: var(--cp-border);
}

#cp-app #cp-table-ip thead th {
	background-color: #f5f7fa;
	color: var(--cp-text-primary);
	font-weight: 500;
	font-size: 0.84rem;
	text-align: center;
	white-space: nowrap;
}

#cp-app #cp-table-ip tbody td {
	background-color: #fff;
	font-size: 0.83rem;
	color: var(--cp-text-primary);
	vertical-align: middle;
}

#cp-app #cp-table-ip tbody tr.cp-ip-row-clase td {
	background-color: #eef3f9;
	font-weight: 500;
	color: #3b414b;
}

#cp-app #cp-table-ip tbody tr.cp-ip-row-categoria td {
	background-color: #f7f9fc;
	font-weight: 500;
	color: #364152;
}

#cp-app #cp-table-ip .cp-ip-cell {
	min-width: 72px;
	text-align: right;
	font-size: 0.82rem;
}

#cp-app #cp-ip-tabs .nav-link {
	font-size: 0.86rem;
	color: #475467;
}

#cp-app #cp-ip-tabs .nav-link.active {
	color: #155eef;
	font-weight: 600;
}

#cp-app #cp-ip-tabs .nav-link.cp-ip-fase-cerrada {
	opacity: 0.75;
}
	opacity: 0.5;
	cursor: not-allowed;
}

#cp-app #cp-table-ip .cp-ip-cell-desv {
	text-align: right;
	font-size: 0.82rem;
}

#cp-app #cp-table-ip .cp-ip-row-desviacion-clase td {
	background-color: #f2f4f7;
	font-weight: 600;
}

#cp-app #cp-table-ip .cp-ip-desv-pos {
	color: #067647;
}

#cp-app #cp-table-ip .cp-ip-desv-neg {
	color: #b42318;
}

#cp-ip-info {
    font-size: 0.85rem;
    /*background: #f8f9fc;*/
    padding: 0.25rem 0.85rem;
    border-radius: 8px;
}
#cp-ip-info .badge {
    font-size: 0.95rem;
    font-weight: 500;
    padding: 0.25rem 0.6rem;
}

.badge-info {
    background-color: #D7F5FC !important;
    color: #03C3EC !important;
}
.badge-warning {
    background-color: #FFF2D6 !important;
    color: #FFAB00 !important;
}

/* Aumentar el ancho de la columna "Cuenta" en Ingreso Presupuesto */
#cp-table-ip thead th:first-child,
#cp-table-ip tbody td:first-child {
    min-width: 300px;
    width: 15%;
    white-space: normal;
}

#cp-app .cp-usuario-gerencias-disponibles {
	max-height: 260px;
	overflow: auto;
	padding: 0.4rem;
	background: #fafbfd;
	border-radius: 0 0 10px 10px;
}

#cp-app .cp-usuario-gerencia-assigned-label {
	color: var(--cp-text-primary);
	font-weight: 600;
	font-size: 0.9rem;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	width: 100%;
}

#cp-app .cp-usuario-gerencia-centros {
	width: calc(100% - 36px);
}

#cp-app .cp-usuario-gerencia-centros-list {
	max-height: 148px;
	overflow: auto;
	border: 1px solid #ffd88a;
	background-color: #fffef9;
	border-radius: 8px;
	padding: 0.35rem 0.45rem;
}

#cp-app .cp-usuario-gerencia-centros .form-label {
	color: #8a6a00;
	font-size: 0.8rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.03em;
}

#cp-app .cp-usuario-gerencia-centros .badge.bg-secondary {
	background-color: #e7f3ff !important;
	color: #0b74d1 !important;
	font-weight: 600;
}

#cp-app .cp-usuario-gerencia-cc-item {
	padding: 0.25rem 0.2rem;
	border-radius: 6px;
}

#cp-app .cp-usuario-gerencia-cc-item:hover {
	background-color: #fff3d6;
}

#cp-app .cp-usuario-gerencia-assigned-remove {
	background: #fff5f5;
	border: 1px solid #ffcccc;
	color: var(--cp-danger);
	border-radius: 6px;
	cursor: pointer;
	width: 28px;
	height: 28px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	font-size: 0.95rem;
	line-height: 1;
	padding: 0;
	vertical-align: middle;
}

#cp-app .cp-usuario-gerencia-assigned-remove:hover {
	border-color: var(--cp-danger);
	color: #fff;
	background: var(--cp-danger);
}

#cp-app .cp-usuario-gerencias-panel {
	border: 1px solid #dbe7f3;
	border-radius: 10px;
	background-color: var(--cp-bg-surface);
	overflow: hidden;
	box-shadow: 0 3px 12px rgba(0, 0, 0, 0.05);
}

#cp-app .cp-usuario-gerencias-panel-title {
	background: linear-gradient(90deg, #eaf5ff 0%, #f3f9ff 100%);
	border-bottom: 1px solid #d6e6f7;
	padding: 0.6rem 0.85rem;
	font-weight: 600;
	color: var(--cp-text-primary);
	font-size: 0.88rem;
	display: flex;
	align-items: center;
	justify-content: space-between;
}

#cp-app .cp-usuario-gerencias-disponibles {
	padding: 0.4rem;
}

#cp-app .cp-usuario-gerencia-available-item {
	padding: 0.45rem 0.5rem;
	border: 1px solid #e5edf5;
	border-radius: 7px;
	margin-bottom: 0.35rem;
	color: var(--cp-text-primary);
	background: #fff;
	transition: all 0.15s ease-in-out;
}

#cp-app .cp-usuario-gerencia-available-item:hover {
	background-color: #f0f8ff;
	border-color: #c6def8;
	transform: translateY(-1px);
}

#cp-app .cp-usuario-gerencia-available-item .form-check-input:checked {
	background-color: var(--lp-primary, #007db5);
	border-color: var(--lp-primary, #007db5);
}

#cp-app .cp-usuario-gerencias-empty {
	border: 1px dashed #ffd27d;
	background: #fffaf0;
	color: #8a6a00;
}

#cp-app .cp-usuario-gerencias-select-all {
	border-color: var(--cp-info, #03C3EC);
	color: var(--cp-info, #03C3EC);
}

#cp-app .cp-usuario-gerencias-select-all:hover {
	background-color: #e8fbff;
	border-color: var(--cp-info, #03C3EC);
	color: #0099bd;
}

#cp-app .cp-usuario-gerencias-clear {
	border-color: var(--cp-warning);
	color: #8a6a00;
}

#cp-app .cp-usuario-gerencias-clear:hover {
	background-color: #fff7e6;
	border-color: var(--cp-warning);
	color: #8a6a00;
}

#cp-app .cp-usuario-gerencia-pill {
	background-color: var(--cp-primary-subtle);
	color: var(--cp-primary) !important;
	border: 1px solid var(--cp-border);
	border-radius: 4px;
	padding: 0.35rem 0.5rem;
	font-weight: 600;
	display: inline-flex;
	align-items: center;
}


/* Contenedor principal de la lista de gerencias */
#cp-app .cp-usuario-gerencias-disponibles {
    max-height: 460px;
    overflow-y: auto;
    padding: 0.5rem 0.2rem 0.5rem 0.2rem;
    background: #fafbfd;
    border-radius: 8px;
}

/* Cada elemento de gerencia (con checkbox y centros) */
.cp-usuario-gerencia-item {
    background: #fff;
    border: 1px solid #e5edf5;
    border-radius: 10px;
    margin-bottom: 0.65rem;
    padding: 0.7rem 1rem;
    transition: all 0.15s ease;
    box-shadow: 0 1px 2px rgba(0,0,0,0.02);
}
.cp-usuario-gerencia-item:hover {
    background-color: #ffffff;
    border-color: #c6def8;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}

/* Etiqueta de gerencia */
.cp-usuario-gerencia-item .form-check-label {
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--cp-text-primary);
    margin-left: 0.4rem;
}

/* Contenedor de centros de costo */
.cp-gerencia-cc-container {
    margin-top: 0.75rem;
    margin-left: 1.8rem;
    padding-left: 0.5rem;
    border-left: 2px solid #e2eefc;
}

/* Grupo de checkboxes de centros de costo (en línea) */
.cp-gerencia-cc-container .d-flex {
    gap: 1rem;
    flex-wrap: wrap;
}

/* Cada checkbox de centro de costo */
.cp-gerencia-cc-container .form-check {
    margin-bottom: 0.25rem;
    margin-right: 0;
}
.cp-gerencia-cc-container .form-check-input {
    margin-top: 0.2rem;
    width: 1rem;
    height: 1rem;
}
.cp-gerencia-cc-container .form-check-label {
    font-size: 0.85rem;
    color: #4a627a;
}

/* Mensaje "sin centros de costo" */
.cp-gerencia-cc-container .text-muted {
    font-size: 0.8rem;
    font-style: italic;
    background: #fef7e0;
    padding: 0.3rem 0.6rem;
    border-radius: 20px;
    display: inline-block;
    color: #a68b2c;
}

/* Mensaje de advertencia / información (estilo tipo aviso) */
.cp-centro-costo-warning-message {
    font-size: 0.9rem;
    font-style: italic;
    background: #fef7e0;
    padding: 0.3rem 0.6rem;
    border-radius: 20px;
    display: inline-block;
    color: #a48516;
}

/* Botones de acción (Seleccionar todo / Limpiar) */
#cp-app #cp-btn-gerencias-select-all,
#cp-app #cp-btn-gerencias-clear {
    border-radius: 30px;
    font-size: 0.8rem;
    padding: 0.25rem 1rem;
    font-weight: 500;
}
#cp-app #cp-btn-gerencias-select-all {
    background-color: #eef7ff;
    border-color: #b8d6f0;
    color: #0066b3;
}
#cp-app #cp-btn-gerencias-clear {
    background-color: #fff5e6;
    border-color: #ffd9a3;
    color: #b57c1c;
}
#cp-app #cp-btn-gerencias-select-all:hover {
    background-color: #e1f0fe;
}
#cp-app #cp-btn-gerencias-clear:hover {
    background-color: #fff0e0;
}

/* Panel del título (contador de seleccionadas) */
#cp-app .cp-usuario-gerencias-panel-title {
    background: #f5f9fe;
    border-bottom: 1px solid #e2eef9;
    padding: 0.6rem 1rem;
    font-weight: 600;
    color: #1a2c3e;
    border-radius: 12px 12px 0 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
}
#cp-app .cp-usuario-gerencias-panel-title .badge {
    background-color: #d4e4f5;
    color: #004d8c;
    font-size: 0.75rem;
    padding: 0.3rem 0.7rem;
    border-radius: 30px;
}

/* Ajuste para el campo de busqueda (sin margin en el input: desalineaba el icono absoluto) */
#cp-usuario-gerencias-search {
    border-radius: 30px;
    background-color: #ffffff;
    border-color: #d9e2ec;
    font-size: 0.85rem;
}
#cp-usuario-gerencias-search:focus {
    border-color: #8bb9e0;
    box-shadow: 0 0 0 0.2rem rgba(3, 195, 236, 0.1);
}

/* Ajuste responsivo para pantallas pequeñas */
@media (max-width: 768px) {
    .cp-gerencia-cc-container {
        margin-left: 1rem;
    }
    .cp-gerencia-cc-container .d-flex {
        flex-direction: column;
        gap: 0.4rem;
    }
    .cp-usuario-gerencia-item {
        padding: 0.5rem 0.7rem;
    }
}

.cp-ga-divider {
    border: 0;
    height: 1px;
    background: #E6EBF1;
    margin: 0.85rem 0;
    opacity: 0.7;
}

.cp-login-left {
	flex: 1;
	background: linear-gradient(135deg, #106ebe 0%, #005a9e 50%, #003d6b 100%);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 2rem;
}
.cp-login-brand {
	max-width: 420px;
	color: #fff;
}
.cp-login-title {
	font-size: 2rem;
	font-weight: 700;
	margin-bottom: 1rem;
	line-height: 1.2;
}
.cp-login-subtitle {
	font-size: 1.1rem;
	opacity: 0.95;
	line-height: 1.5;
	margin: 0;
}
.cp-login-right {
	width: 440px;
	min-width: 380px;
	display: flex;
	align-items: center;
	justify-content: center;
	background-color: var(--mantis-bg-page);
	padding: 2rem;
}
.cp-login-box {
	width: 100%;
	max-width: 360px;
	background: #fff;
	border-radius: 8px;
	box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
	padding: 2rem;
	border: 1px solid #d6d6d6;
}
.cp-login-box-title {
	font-size: 1.5rem;
	font-weight: 600;
	color: #323130;
	margin-bottom: 0.25rem;
}
.cp-login-box-hint {
	font-size: 0.9375rem;
	color: #505050;
	margin-bottom: 1.5rem;
}
.cp-login-form .form-label {
	font-weight: 500;
	color: #323130;
}
.cp-login-form .form-control {
	border-radius: 4px;
	border: 1px solid #d6d6d6;
	padding: 0.5rem 0.75rem;
}
.cp-login-form .form-control:focus {
	border-color: #106ebe;
	box-shadow: 0 0 0 2px rgba(16, 110, 190, 0.2);
}
.cp-login-btn-submit {
	padding: 0.6rem 1rem;
	font-weight: 600;
	border-radius: 4px;
	margin-top: 0.5rem;
	background-color: #106ebe;
	border-color: #106ebe;
}
.cp-login-btn-submit:hover {
	background-color: #005a9e;
	border-color: #005a9e;
	color: #fff;
}
.cp-login-footer {
	margin-top: 1.5rem;
	padding-top: 1rem;
	border-top: 1px solid #e5e5e5;
	text-align: center;
	font-size: 0.9375rem;
	color: #505050;
}
.cp-login-link {
	color: #106ebe;
	font-weight: 600;
	text-decoration: none;
	margin-left: 0.25rem;
}
.cp-login-link:hover {
	color: #005a9e;
	text-decoration: underline;
}

.cp-login-forgot-link {
	font-size: 0.875rem;
	color: #106ebe;
	text-decoration: none;
	font-weight: 600;
	border: none;
	background: none;
	box-shadow: none;
}

.cp-login-forgot-link:hover {
	color: #005a9e;
	text-decoration: underline;
}

#cp-login-forgot-alert,
#cp-login-challenge-alert,
#cp-login-reset-alert {
	margin-bottom: 0.85rem;
}

#cp-table-gerencias_filter {
    display: none;
}

#cp-table-clases_filter {
	display: none;
}

#cp-table-categorias_filter {
	display: none;
}

#cp-table-accounts_filter {
	display: none;
}

#cp-table-scenarios_filter {
	display: none;
}

#cp-table-usuarios_filter {
	display: none;
}

#cp-table-cons_filter {
	display: none;
}

#cp-table-accounts thead th {
    padding-right: 1.8rem !important;
}

#cp-table-accounts thead th.sorting:before,
#cp-table-accounts thead th.sorting:after,
#cp-table-accounts thead th.sorting_asc:before,
#cp-table-accounts thead th.sorting_asc:after,
#cp-table-accounts thead th.sorting_desc:before,
#cp-table-accounts thead th.sorting_desc:after {
    right: 0.3rem !important; /* Ajusta la distancia horizontal de la flecha */
}

/* Colores por tipo en plan de cuentas: desactivados (design system LP = filas blancas) */
/*#cp-table-accounts tbody tr.cp-tipo-ingreso {
    background-color: #EEF9E8 !important;
}
#cp-table-accounts tbody tr.cp-tipo-gasto {
    background-color: #FFEDED !important;
}*/

/* Colores de fondo para los inputs según tipo de cuenta */
/*#cp-table-ip tbody tr.cp-tipo-ingreso input.cp-ip-cell {
    background-color: #EEF9E8 !important;
}
#cp-table-ip tbody tr.cp-tipo-gasto input.cp-ip-cell {
    background-color: #FFEDED !important;
}*/

/* Opcional: para que el hover mantenga el color de resaltado del tema */
#cp-table-ip tbody tr.cp-tipo-ingreso:hover input.cp-ip-cell,
#cp-table-ip tbody tr.cp-tipo-gasto:hover input.cp-ip-cell {
    background-color: var(--cp-primary-subtle) !important;
}

/* Color morado para valores de Estimado */
#cp-table-ip .cp-ip-cell.cp-ip-estimado-value {
    color: #8540F5 !important;
}

/* Color rojo para valores de RealValue */
#cp-table-ip .cp-ip-cell.cp-ip-real-value {
    color: #FF4D4F !important;
}

/* Color verde para valores de Forecast */
#cp-table-ip .cp-ip-cell.cp-ip-forecast-value {
    color: #2E7D32 !important;
}

/* Celdas de ingreso presupuesto originadas en driver (no editables en Estimado/Forecast) */
#cp-app #cp-table-ip td.cp-ip-driver-cell {
	padding: 0.25rem 0.35rem !important;
}

/* RealValue: mismo color de drivers, pero la celda sigue editable */
#cp-app #cp-table-ip td.cp-ip-driver-tint {
	padding: 0.25rem 0.35rem !important;
}

#cp-app #cp-table-ip td.cp-cons-drv-mp,
#cp-app #cp-table-ip td.cp-cons-drv-mp .cp-ip-cell {
    background-color: var(--cp-cons-drv-mp-bg) !important;
    color: var(--cp-cons-drv-mp-text) !important;
    font-weight: 700;
}
#cp-app #cp-table-ip td.cp-cons-drv-pr,
#cp-app #cp-table-ip td.cp-cons-drv-pr .cp-ip-cell {
    background-color: var(--cp-cons-drv-pr-bg) !important;
    color: var(--cp-cons-drv-pr-text) !important;
    font-weight: 700;
}
#cp-app #cp-table-ip td.cp-cons-drv-vt,
#cp-app #cp-table-ip td.cp-cons-drv-vt .cp-ip-cell {
    background-color: var(--cp-cons-drv-vt-bg) !important;
    color: var(--cp-cons-drv-vt-text) !important;
    font-weight: 700;
}
#cp-app #cp-table-ip td.cp-cons-drv-in,
#cp-app #cp-table-ip td.cp-cons-drv-in .cp-ip-cell {
    background-color: var(--cp-cons-drv-in-bg) !important;
    color: var(--cp-cons-drv-in-text) !important;
    font-weight: 700;
}
#cp-app #cp-table-ip td.cp-cons-drv-ratio,
#cp-app #cp-table-ip td.cp-cons-drv-ratio .cp-ip-cell {
    background-color: var(--cp-cons-drv-ratio-bg) !important;
    color: var(--cp-cons-drv-ratio-text) !important;
    font-weight: 700;
}
#cp-app #cp-table-ip td.cp-cons-drv-otros,
#cp-app #cp-table-ip td.cp-cons-drv-otros .cp-ip-cell {
    background-color: var(--cp-cons-drv-otros-bg) !important;
    color: var(--cp-cons-drv-otros-text) !important;
    font-weight: 700;
}

#cp-app #cp-table-ip td.cp-ip-driver-cell .cp-ip-readonly {
    display: block;
    width: 100%;
    text-align: right;
    padding: 0.25rem 0.4rem;
    border-radius: 4px;
    cursor: not-allowed;
}

#cp-app #cp-table-ip td.cp-ip-driver-cell input.cp-ip-cell {
    cursor: not-allowed;
    pointer-events: none;
}

#cp-table-cons {
    width: 100%;
    table-layout: auto;
}

#cp-table-cons tbody td {
    white-space: nowrap;
}

#cp-table-cons td {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

#cp-cons-filters .form-switch {
    margin-top: 0; 
}

#cp-table-cons .cp-cons-estimado {
    color: #8540F5 !important;
    font-weight: 600;
}
#cp-table-cons .cp-cons-real {
    color: #FF4D4F !important;
    font-weight: 600;
}
#cp-table-cons .cp-cons-forecast {
    color: #2E7D32 !important;
    font-weight: 600;
}

#cp-table-cons tr.cp-cons-group-row td {
    background: var(--cp-primary-subtle);
    color: var(--cp-text-primary);
    font-weight: 600;
    cursor: pointer;
}

/* =================== Consolidado Tabulator =================== */
#cp-app #cp-cons-tabulator {
    border: 1px solid var(--cp-border);
    border-radius: 8px;
    overflow: hidden;
    background: var(--cp-bg-surface);
}

#cp-app #cp-cons-tabulator .tabulator {
    border: none;
    background: var(--cp-bg-surface);
    font-family: "Public Sans", "Segoe UI", Arial, sans-serif;
}

#cp-app #cp-cons-tabulator .tabulator-header {
    background: #f6f8fb;
    border-bottom: 1px solid var(--cp-border);
}

#cp-app #cp-cons-tabulator .tabulator-col {
    background: #f6f8fb;
    border-right: 1px solid var(--cp-border);
    color: var(--cp-text-primary);
    font-weight: 600;
}
 
#cp-app #cp-cons-tabulator .tabulator-row {
    border-bottom: 1px solid #eef1f6;
    background: transparent;
}

#cp-app #cp-cons-tabulator .tabulator-row:hover {
    background: #f9fbff;
}

#cp-app #cp-cons-tabulator .tabulator-cell {
    border-right: 1px solid #eef1f6;
    color: var(--cp-text-primary);
    font-size: 0.875rem;
    box-sizing: border-box;
}

/* Titulo (lvl0) y subtitulo (lvl1): color de fondo en toda la fila */
#cp-app #cp-cons-tabulator .tabulator-tree-level-0,
#cp-app #cp-cons-tabulator .tabulator-tree-level-0 .tabulator-cell,
#cp-app #cp-cons-tabulator .tabulator-tree-level-0 .tabulator-col-resize-handle {
    background: #eef4ff !important;
}

#cp-app #cp-cons-tabulator .tabulator-tree-level-0 .tabulator-cell {
    font-weight: 700;
}

#cp-app #cp-cons-tabulator .tabulator-tree-level-1,
#cp-app #cp-cons-tabulator .tabulator-tree-level-1 .tabulator-cell,
#cp-app #cp-cons-tabulator .tabulator-tree-level-1 .tabulator-col-resize-handle {
    background: #f7f9ff !important;
}

#cp-app #cp-cons-tabulator .tabulator-tree-level-1 .tabulator-cell {
    font-weight: 600;
}

#cp-app #cp-cons-tabulator .tabulator-tree-level-0:hover,
#cp-app #cp-cons-tabulator .tabulator-tree-level-0:hover .tabulator-cell,
#cp-app #cp-cons-tabulator .tabulator-tree-level-0:hover .tabulator-col-resize-handle {
    background: #e4edff !important;
}

#cp-app #cp-cons-tabulator .tabulator-tree-level-1:hover,
#cp-app #cp-cons-tabulator .tabulator-tree-level-1:hover .tabulator-cell,
#cp-app #cp-cons-tabulator .tabulator-tree-level-1:hover .tabulator-col-resize-handle {
    background: #eef2ff !important;
}

#cp-app #cp-cons-tabulator .tabulator-tree-level-2 .tabulator-cell:first-child {
    font-weight: 500;
}

/* Boton flotante de ayuda (?) — todas las pantallas */
.cp-help-btn,
#cp-help-btn,
#cp-ip-help-btn,
#cp-ga-help-btn {
    position: fixed !important;
    bottom: 20px !important;
    right: 40px !important;
    z-index: 1050 !important;
    border-radius: 50% !important;
    width: 40px !important;
    height: 40px !important;
    font-weight: 700 !important;
    font-size: 1.1rem !important;
    line-height: 1 !important;
    padding: 0 !important;
    background-color: #0d6efd !important;
    color: #fff !important;
    border: none !important;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2) !important;
}

.cp-help-btn:hover,
#cp-help-btn:hover,
#cp-ip-help-btn:hover,
#cp-ga-help-btn:hover {
    background-color: #0b5ed7 !important;
    color: #fff !important;
}

/* Colores por prioridad origen: Real > Forecast > Estimado */
#cp-app #cp-cons-tabulator .cp-cons-real {
    color: #d92d20 !important;
    font-weight: 700;
}

#cp-app #cp-cons-tabulator .cp-cons-forecast {
    color: #2f9e44 !important;
    font-weight: 700;
}

#cp-app #cp-cons-tabulator .cp-cons-estimado {
    color: #7c3aed !important;
    font-weight: 700;
}

#cp-app #cp-cons-tabulator {
    --cp-cons-drv-mp-text: #9a4f00;
    --cp-cons-drv-pr-text: #0d47a1;
    --cp-cons-drv-vt-text: #4a148c;
    --cp-cons-drv-in-text: #bf360c;
    --cp-cons-drv-ratio-text: #37474f;
    --cp-cons-drv-otros-text: #5c6bc0;
    --cp-cons-drv-mp-bg: rgba(255, 152, 0, 0.14);
    --cp-cons-drv-pr-bg: rgba(41, 182, 246, 0.14);
    --cp-cons-drv-vt-bg: rgba(156, 39, 176, 0.14);
    --cp-cons-drv-in-bg: rgba(230, 81, 0, 0.14);
    --cp-cons-drv-ratio-bg: rgba(55, 71, 79, 0.1);
    --cp-cons-drv-otros-bg: rgba(92, 107, 192, 0.12);
}

body > .modal.cp-cons-desglose-modal {
    z-index: 1060;
}

body > .modal.cp-cons-export-modal {
    z-index: 1060;
}

.cp-cons-export-modal .modal-dialog {
    max-width: 720px;
}

/* Variables driver para ingreso presupuesto y leyenda consolidado */
#cp-app {
    --cp-cons-drv-mp-text: #9a4f00;
    --cp-cons-drv-pr-text: #0d47a1;
    --cp-cons-drv-vt-text: #4a148c;
    --cp-cons-drv-in-text: #bf360c;
    --cp-cons-drv-ratio-text: #37474f;
    --cp-cons-drv-otros-text: #5c6bc0;
    --cp-cons-drv-mp-bg: rgba(255, 152, 0, 0.14);
    --cp-cons-drv-pr-bg: rgba(41, 182, 246, 0.14);
    --cp-cons-drv-vt-bg: rgba(156, 39, 176, 0.14);
    --cp-cons-drv-in-bg: rgba(230, 81, 0, 0.14);
    --cp-cons-drv-ratio-bg: rgba(55, 71, 79, 0.1);
    --cp-cons-drv-otros-bg: rgba(92, 107, 192, 0.12);
}

#cp-app #cp-cons-tabulator .tabulator-cell.cp-cons-drv-mp,
.cp-cons-desglose-modal .cp-cons-desglose-table td.cp-cons-drv-mp,
.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-drv-mp > td {
    background-color: var(--cp-cons-drv-mp-bg) !important;
    color: var(--cp-cons-drv-mp-text) !important;
    font-weight: 700;
}
#cp-app #cp-cons-tabulator .tabulator-cell.cp-cons-drv-pr,
.cp-cons-desglose-modal .cp-cons-desglose-table td.cp-cons-drv-pr,
.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-drv-pr > td {
    background-color: var(--cp-cons-drv-pr-bg) !important;
    color: var(--cp-cons-drv-pr-text) !important;
    font-weight: 700;
}
#cp-app #cp-cons-tabulator .tabulator-cell.cp-cons-drv-vt,
.cp-cons-desglose-modal .cp-cons-desglose-table td.cp-cons-drv-vt,
.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-drv-vt > td {
    background-color: var(--cp-cons-drv-vt-bg) !important;
    color: var(--cp-cons-drv-vt-text) !important;
    font-weight: 700;
}
#cp-app #cp-cons-tabulator .tabulator-cell.cp-cons-drv-in,
.cp-cons-desglose-modal .cp-cons-desglose-table td.cp-cons-drv-in,
.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-drv-in > td {
    background-color: var(--cp-cons-drv-in-bg) !important;
    color: var(--cp-cons-drv-in-text) !important;
    font-weight: 700;
}
#cp-app #cp-cons-tabulator .tabulator-cell.cp-cons-drv-ratio,
.cp-cons-desglose-modal .cp-cons-desglose-table td.cp-cons-drv-ratio,
.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-drv-ratio > td {
    background-color: var(--cp-cons-drv-ratio-bg) !important;
    color: var(--cp-cons-drv-ratio-text) !important;
    font-weight: 700;
}
#cp-app #cp-cons-tabulator .tabulator-cell.cp-cons-drv-otros,
.cp-cons-desglose-modal .cp-cons-desglose-table td.cp-cons-drv-otros,
.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-drv-otros > td {
    background-color: var(--cp-cons-drv-otros-bg) !important;
    color: var(--cp-cons-drv-otros-text) !important;
    font-weight: 700;
}

/* Modal desglose consolidado (en body; ver CP_ModalLifecycleBound en cp-modals.js) */
.cp-cons-desglose-modal {
    --cp-cons-drv-mp-text: #9a4f00;
    --cp-cons-drv-pr-text: #0d47a1;
    --cp-cons-drv-vt-text: #4a148c;
    --cp-cons-drv-in-text: #bf360c;
    --cp-cons-drv-ratio-text: #37474f;
    --cp-cons-drv-otros-text: #5c6bc0;
    --cp-cons-drv-mp-bg: rgba(255, 152, 0, 0.14);
    --cp-cons-drv-pr-bg: rgba(41, 182, 246, 0.14);
    --cp-cons-drv-vt-bg: rgba(156, 39, 176, 0.14);
    --cp-cons-drv-in-bg: rgba(230, 81, 0, 0.14);
    --cp-cons-drv-ratio-bg: rgba(55, 71, 79, 0.1);
    --cp-cons-drv-otros-bg: rgba(92, 107, 192, 0.12);
}

body > .modal.cp-cons-desglose-modal {
    z-index: 1060;
}

.cp-cons-desglose-modal .cp-cons-desglose-dialog {
    max-width: 920px;
}

.cp-cons-desglose-modal .cp-cons-desglose-content {
    border: none;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 12px 40px rgba(15, 23, 42, 0.14);
}

.cp-cons-desglose-modal .cp-cons-desglose-header {
    background: linear-gradient(135deg, #f8fbff 0%, #eef4fc 100%);
    border-bottom: 1px solid #dbe6f4;
    padding: 1rem 1.15rem;
    align-items: flex-start;
}

.cp-cons-desglose-modal .cp-cons-desglose-header-text {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    min-width: 0;
    padding-right: 0.5rem;
}

.cp-cons-desglose-modal .cp-cons-desglose-kicker {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #64748b;
}

.cp-cons-desglose-modal .cp-cons-desglose-title {
    font-size: 1.05rem;
    font-weight: 700;
    color: #0f172a;
    line-height: 1.3;
}

.cp-cons-desglose-modal .cp-cons-desglose-mes-badge {
    display: inline-flex;
    align-self: flex-start;
    margin-top: 0.15rem;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: #1d4ed8;
    background: #dbeafe;
    border: 1px solid #bfdbfe;
}

.cp-cons-desglose-modal .cp-cons-desglose-body {
    padding: 1rem 1.15rem 1.1rem;
    background: #f8fafc;
}

.cp-cons-desglose-modal .cp-cons-desglose-footer {
    background: #fff;
    border-top: 1px solid #e5e7eb;
    padding: 0.55rem 1rem;
}

.cp-cons-desglose-modal .cp-cons-desglose-summary {
    margin-bottom: 1rem;
}

.cp-cons-desglose-modal .cp-cons-desglose-summary-card {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.65rem 1rem;
    padding: 0.85rem 1rem;
    border-radius: 10px;
    background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
    border: 1px solid #e2e8f0;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}

.cp-cons-desglose-modal .cp-cons-desglose-summary-label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #64748b;
    width: 100%;
}

.cp-cons-desglose-modal .cp-cons-desglose-summary-value {
    font-size: 1.65rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    color: #0f172a;
    line-height: 1;
}

.cp-cons-desglose-modal .cp-cons-desglose-summary-tag {
    margin-left: auto;
    padding: 0.2rem 0.6rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 700;
    color: #7c3aed;
    background: #ede9fe;
    border: 1px solid #ddd6fe;
}

.cp-cons-desglose-modal .cp-cons-desglose-summary-note {
    display: block;
    width: 100%;
    margin-top: 0.35rem;
    font-size: 0.75rem;
    font-weight: 500;
    color: #64748b;
    line-height: 1.35;
}

.cp-cons-desglose-modal .cp-cons-desglose-summary-card {
    flex-wrap: wrap;
}

.cp-cons-desglose-modal .cp-cons-driver-pub-hint {
    margin-top: 0.75rem;
}

.cp-cons-desglose-modal .cp-cons-driver-ops-head {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem 1rem;
    margin-bottom: 0.45rem;
}

.cp-cons-desglose-modal .cp-cons-driver-ops-wrap:not(.cp-cons-show-contexto) .cp-cons-driver-op-contexto {
    display: none;
}

.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-driver-op-proyectada > td {
    background-color: rgba(34, 197, 94, 0.1) !important;
    border-top: 2px solid rgba(34, 197, 94, 0.45);
    border-bottom: 2px solid rgba(34, 197, 94, 0.45);
}

.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-driver-op-contexto > td {
    opacity: 0.88;
}

.cp-cons-desglose-modal .cp-cons-driver-op-badge {
    display: inline-block;
    margin-right: 0.35rem;
    padding: 0.05rem 0.4rem;
    border-radius: 0.25rem;
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    vertical-align: middle;
}

.cp-cons-desglose-modal .cp-cons-driver-op-badge-pub {
    color: #166534;
    background: #dcfce7;
    border: 1px solid #bbf7d0;
}

.cp-cons-desglose-modal .cp-cons-driver-op-badge-ctx {
    color: #475569;
    background: #f1f5f9;
    border: 1px solid #e2e8f0;
}

.cp-cons-desglose-modal .cp-cons-driver-op-detail-text {
    vertical-align: middle;
}

.cp-cons-desglose-modal .cp-cons-desglose-section {
    margin-bottom: 1rem;
}

.cp-cons-desglose-modal .cp-cons-desglose-section:last-child {
    margin-bottom: 0;
}

.cp-cons-desglose-modal .cp-cons-desglose-section-head {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    margin-bottom: 0.55rem;
}

.cp-cons-desglose-modal .cp-cons-desglose-section-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 6px;
    font-size: 0.8rem;
    background: #e2e8f0;
    color: #475569;
}

.cp-cons-desglose-modal .cp-cons-desglose-section-title {
    margin: 0;
    font-size: 0.88rem;
    font-weight: 700;
    color: #1e293b;
}

.cp-cons-desglose-modal .cp-cons-desglose-section-hint {
    margin-left: auto;
    font-size: 0.72rem;
    color: #94a3b8;
    font-weight: 600;
}

.cp-cons-desglose-modal .cp-cons-modal-driver-section {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
}

.cp-cons-desglose-modal .cp-cons-driver-detail {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}

.cp-cons-desglose-modal .cp-cons-driver-detail.cp-cons-drv-mp { border-left: 4px solid var(--cp-cons-drv-mp-text); }
.cp-cons-desglose-modal .cp-cons-driver-detail.cp-cons-drv-pr { border-left: 4px solid var(--cp-cons-drv-pr-text); }
.cp-cons-desglose-modal .cp-cons-driver-detail.cp-cons-drv-vt { border-left: 4px solid var(--cp-cons-drv-vt-text); }
.cp-cons-desglose-modal .cp-cons-driver-detail.cp-cons-drv-in { border-left: 4px solid var(--cp-cons-drv-in-text); }
.cp-cons-desglose-modal .cp-cons-driver-detail.cp-cons-drv-ratio { border-left: 4px solid var(--cp-cons-drv-ratio-text); }
.cp-cons-desglose-modal .cp-cons-driver-detail.cp-cons-drv-otros { border-left: 4px solid var(--cp-cons-drv-otros-text); }

.cp-cons-desglose-modal .cp-cons-driver-detail-head {
    padding: 0.7rem 0.85rem;
    background: linear-gradient(180deg, #fafbfc 0%, #f5f7fa 100%);
    border-bottom: 1px solid #eef2f6;
}

.cp-cons-desglose-modal .cp-cons-driver-detail-head-main {
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
}

.cp-cons-desglose-modal .cp-cons-driver-rol-badge {
    flex-shrink: 0;
    padding: 0.2rem 0.5rem;
    border-radius: 6px;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    line-height: 1.3;
    max-width: 7rem;
}

.cp-cons-desglose-modal .cp-cons-driver-rol-badge.cp-cons-drv-mp {
    color: var(--cp-cons-drv-mp-text);
    background: var(--cp-cons-drv-mp-bg);
}
.cp-cons-desglose-modal .cp-cons-driver-rol-badge.cp-cons-drv-pr {
    color: var(--cp-cons-drv-pr-text);
    background: var(--cp-cons-drv-pr-bg);
}
.cp-cons-desglose-modal .cp-cons-driver-rol-badge.cp-cons-drv-vt {
    color: var(--cp-cons-drv-vt-text);
    background: var(--cp-cons-drv-vt-bg);
}
.cp-cons-desglose-modal .cp-cons-driver-rol-badge.cp-cons-drv-in {
    color: var(--cp-cons-drv-in-text);
    background: var(--cp-cons-drv-in-bg);
}
.cp-cons-desglose-modal .cp-cons-driver-rol-badge.cp-cons-drv-ratio {
    color: var(--cp-cons-drv-ratio-text);
    background: var(--cp-cons-drv-ratio-bg);
}
.cp-cons-desglose-modal .cp-cons-driver-rol-badge.cp-cons-drv-otros {
    color: var(--cp-cons-drv-otros-text);
    background: var(--cp-cons-drv-otros-bg);
}

.cp-cons-desglose-modal .cp-cons-driver-detail-name {
    font-size: 0.92rem;
    font-weight: 700;
    color: #111827;
    line-height: 1.25;
}

.cp-cons-desglose-modal .cp-cons-driver-detail-context {
    font-size: 0.78rem;
    color: #64748b;
    margin-top: 0.1rem;
}

.cp-cons-desglose-modal .cp-cons-driver-detail-body {
    padding: 0.75rem 0.85rem 0.85rem;
}

.cp-cons-desglose-modal .cp-cons-driver-meta-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.65rem;
    margin-bottom: 0.65rem;
}

@media (max-width: 640px) {
    .cp-cons-desglose-modal .cp-cons-driver-meta-grid {
        grid-template-columns: 1fr;
    }
}

.cp-cons-desglose-modal .cp-cons-driver-meta-item {
    background: #f8fafc;
    border: 1px solid #eef2f6;
    border-radius: 8px;
    padding: 0.55rem 0.65rem;
}

.cp-cons-desglose-modal .cp-cons-driver-meta-item.cp-cons-driver-meta-cadena {
    grid-column: 1 / -1;
}

.cp-cons-desglose-modal .cp-cons-driver-meta-label {
    display: block;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #94a3b8;
    margin-bottom: 0.25rem;
}

.cp-cons-desglose-modal .cp-cons-driver-meta-val {
    font-size: 0.84rem;
    font-weight: 600;
    color: #334155;
}

.cp-cons-desglose-modal .cp-cons-cadena-flow {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem;
}

.cp-cons-desglose-modal .cp-cons-cadena-arrow {
    color: #cbd5e1;
    font-size: 0.9rem;
    font-weight: 700;
    line-height: 1;
}

.cp-cons-desglose-modal .cp-cons-cadena-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2rem;
    padding: 0.15rem 0.45rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.04em;
}

.cp-cons-desglose-modal .cp-cons-cadena-pill-sm {
    min-width: auto;
    font-size: 0.68rem;
    padding: 0.1rem 0.4rem;
}

.cp-cons-desglose-modal .cp-cons-cadena-pill.cp-cons-drv-mp,
.cp-cons-desglose-modal .cp-cons-cadena-pill.cp-cons-cadena-pill-solo.cp-cons-drv-mp {
    color: var(--cp-cons-drv-mp-text);
    background: var(--cp-cons-drv-mp-bg);
    border: 1px solid rgba(255, 152, 0, 0.25);
}
.cp-cons-desglose-modal .cp-cons-cadena-pill.cp-cons-drv-pr {
    color: var(--cp-cons-drv-pr-text);
    background: var(--cp-cons-drv-pr-bg);
    border: 1px solid rgba(41, 182, 246, 0.25);
}
.cp-cons-desglose-modal .cp-cons-cadena-pill.cp-cons-drv-vt {
    color: var(--cp-cons-drv-vt-text);
    background: var(--cp-cons-drv-vt-bg);
    border: 1px solid rgba(156, 39, 176, 0.22);
}
.cp-cons-desglose-modal .cp-cons-cadena-pill.cp-cons-drv-in {
    color: var(--cp-cons-drv-in-text);
    background: var(--cp-cons-drv-in-bg);
    border: 1px solid rgba(230, 81, 0, 0.22);
}
.cp-cons-desglose-modal .cp-cons-cadena-pill.cp-cons-drv-ratio {
    color: var(--cp-cons-drv-ratio-text);
    background: var(--cp-cons-drv-ratio-bg);
    border: 1px solid rgba(55, 71, 79, 0.18);
}
.cp-cons-desglose-modal .cp-cons-cadena-pill.cp-cons-drv-otros,
.cp-cons-desglose-modal .cp-cons-cadena-pill.cp-cons-cadena-pill-solo {
    color: var(--cp-cons-drv-otros-text);
    background: var(--cp-cons-drv-otros-bg);
    border: 1px solid rgba(92, 107, 192, 0.22);
}

.cp-cons-desglose-modal .cp-cons-driver-ops-wrap {
    border: 1px solid #e5e7eb;
    border-radius: 8px;
    overflow: hidden;
}

.cp-cons-desglose-modal .cp-cons-driver-ops-title {
    padding: 0.4rem 0.65rem;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #64748b;
    background: #f1f5f9;
    border-bottom: 1px solid #e5e7eb;
}

.cp-cons-desglose-modal .cp-cons-driver-ops-table thead th {
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #64748b;
    background: #fafbfc;
    border-bottom-width: 1px;
}

.cp-cons-desglose-modal .cp-cons-driver-ops-table tbody td {
    font-size: 0.78rem;
    vertical-align: middle;
}

.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-drv-mp > td,
.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-drv-pr > td,
.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-drv-vt > td,
.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-drv-in > td,
.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-drv-ratio > td,
.cp-cons-desglose-modal .cp-cons-driver-ops-table tr.cp-cons-drv-otros > td {
    background-color: transparent !important;
    color: inherit !important;
    font-weight: 400;
}

.cp-cons-desglose-modal .cp-cons-driver-op-detail {
    color: #475569;
    line-height: 1.35;
}

.cp-cons-desglose-modal .cp-cons-driver-empty {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.65rem 0.75rem;
    border-radius: 8px;
    background: #f8fafc;
    border: 1px dashed #cbd5e1;
    font-size: 0.8rem;
    color: #64748b;
}

.cp-cons-desglose-modal .cp-cons-driver-empty-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 50%;
    font-size: 0.7rem;
    font-weight: 800;
    font-style: italic;
    color: #64748b;
    background: #e2e8f0;
    flex-shrink: 0;
}

.cp-cons-desglose-modal .cp-cons-desglose-table-wrap {
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}

.cp-cons-desglose-modal .cp-cons-desglose-table {
    font-size: 0.82rem;
    margin-bottom: 0;
}

.cp-cons-desglose-modal .cp-cons-desglose-table thead th {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #64748b;
    background: #f8fafc;
    border-bottom: 1px solid #e2e8f0;
    padding: 0.5rem 0.65rem;
}

.cp-cons-desglose-modal .cp-cons-desglose-table tbody td {
    padding: 0.5rem 0.65rem;
    vertical-align: middle;
    border-color: #f1f5f9;
}

.cp-cons-desglose-modal .cp-cons-desglose-gerencia-cell {
    background: #fafbfc;
    font-weight: 600;
    color: #334155;
    vertical-align: top !important;
}

.cp-cons-desglose-modal .cp-cons-desglose-gerencia-label {
    display: inline-block;
    line-height: 1.35;
}

.cp-cons-desglose-modal .cp-cons-desglose-cc-cell {
    color: #475569;
}

.cp-cons-desglose-modal .cp-cons-desglose-origen-cell {
    color: #5f6368;
    font-size: 0.875rem;
}

.cp-cons-desglose-modal .cp-cons-val-pill {
    display: inline-block;
    min-width: 3rem;
    padding: 0.15rem 0.5rem;
    border-radius: 6px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.cp-cons-desglose-modal .cp-cons-val-pill.cp-cons-drv-mp {
    color: var(--cp-cons-drv-mp-text);
    background: var(--cp-cons-drv-mp-bg);
}
.cp-cons-desglose-modal .cp-cons-val-pill.cp-cons-drv-pr {
    color: var(--cp-cons-drv-pr-text);
    background: var(--cp-cons-drv-pr-bg);
}
.cp-cons-desglose-modal .cp-cons-val-pill.cp-cons-drv-vt {
    color: var(--cp-cons-drv-vt-text);
    background: var(--cp-cons-drv-vt-bg);
}
.cp-cons-desglose-modal .cp-cons-val-pill.cp-cons-drv-in {
    color: var(--cp-cons-drv-in-text);
    background: var(--cp-cons-drv-in-bg);
}
.cp-cons-desglose-modal .cp-cons-val-pill.cp-cons-drv-ratio {
    color: var(--cp-cons-drv-ratio-text);
    background: var(--cp-cons-drv-ratio-bg);
}
.cp-cons-desglose-modal .cp-cons-val-pill.cp-cons-drv-otros {
    color: var(--cp-cons-drv-otros-text);
    background: var(--cp-cons-drv-otros-bg);
}

.cp-cons-desglose-modal .cp-cons-val-plain {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    color: #1e293b;
}

.cp-cons-desglose-modal .cp-cons-desglose-total-row td {
    background: #e8f2fc !important;
    border-top: 1px solid #c5daf0;
}

.cp-cons-desglose-modal .cp-cons-desglose-total-global td {
    background: #e5f5e0 !important;
    border-top: 2px solid #b8ddb0;
}

.cp-cons-desglose-modal .cp-cons-desglose-total-label {
    font-weight: 700;
    color: #334155;
    font-size: 0.8rem;
}

.cp-cons-desglose-modal .cp-cons-desglose-total-val {
    font-weight: 800;
    font-variant-numeric: tabular-nums;
    color: #0f172a;
    font-size: 0.9rem;
}

#cp-app #cp-cons-driver-legend {
    padding: 0.35rem 0.5rem;
    border: 1px solid var(--cp-border);
    border-radius: 6px;
    background: var(--cp-bg-surface);
}

#cp-app .cp-cons-driver-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.8rem;
    margin-right: 0.75rem;
}

#cp-app .cp-cons-driver-legend-swatch {
    display: inline-block;
    min-width: 1.5rem;
    text-align: center;
    font-weight: 700;
    font-size: 0.75rem;
    border-radius: 3px;
    padding: 0 0.15rem;
}

#cp-app #cp-cons-tabulator .cp-cons-group-total {
    color: #111827 !important;
    font-weight: 700;
}

#cp-app .card {
    border-radius: 10px;
}

#cp-app .card-header {
    background: linear-gradient(180deg, #fbfcff 0%, #f5f8ff 100%);
    border-bottom: 1px solid var(--cp-border);
}

#cp-app .card-header h5 {
    font-weight: 700;
    letter-spacing: 0.2px;
}

#cp-app .form-label {
    font-size: 0.83rem;
    font-weight: 600;
    color: #4a5568;
    margin-bottom: 0.32rem;
}

#cp-app .form-select,
#cp-app .form-control {
    border-radius: 8px;
    border: 1px solid #d7deea;
    box-shadow: none;
    min-height: 36px;
}

#cp-app .form-select:focus,
#cp-app .form-control:focus {
    border-color: #8cb4ff;
    box-shadow: 0 0 0 0.2rem rgba(59, 130, 246, 0.12);
}

#cp-app .btn {
    border-radius: 8px;
    font-weight: 600;
}

#cp-app #cp-table-ip,
#cp-app #cp-table-cons {
    border-collapse: separate;
    border-spacing: 0;
    margin-bottom: 0;
}

/* Shell: tabla + botones de scroll fuera a la derecha */
#cp-app #cp-ip-grid-wrap {
    margin-left: 0;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}
#cp-ip-grid-wrap .cp-ip-grid-shell,
.cp-ip-grid-shell {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    margin-left: 0;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}

/* Riel alineado al ancho util del panel (sin margen lateral forzado). */
#cp-app .cp-ip-toolbar-row {
    margin-bottom: 20px !important;
}
#cp-app .cp-ip-align-rail,
#cp-app #cp-ip-cadena-aviso-wrap.cp-ip-align-rail,
#cp-app .cp-ip-actions-bar.cp-ip-align-rail {
    margin-left: 0;
    margin-right: 0;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}
/* Alertas dentro del grid-wrap: mismo ancho que el shell (tabla + nav). */
#cp-app #cp-ip-grid-wrap > .cp-ip-align-rail,
#cp-app #cp-ip-grid-wrap > .cp-ip-grid-alert,
#cp-app #cp-ip-grid-wrap > .alert,
#cp-app #cp-ip-grid-wrap > .cp-clay-alert {
    margin-left: 0 !important;
    margin-right: 0 !important;
    width: 100% !important;
    max-width: 100%;
    box-sizing: border-box;
}
#cp-app #cp-ip-cadena-aviso-wrap {
    margin-bottom: 0.5rem;
}
#cp-app #cp-ip-cadena-aviso-wrap .alert,
#cp-app #cp-ip-cadena-aviso-wrap .cp-clay-alert,
#cp-app #cp-ip-grid-wrap .cp-ip-align-rail .alert,
#cp-app #cp-ip-grid-wrap .cp-ip-align-rail .cp-clay-alert,
#cp-app #cp-ip-grid-wrap > .alert,
#cp-app #cp-ip-grid-wrap > .cp-clay-alert {
    margin-left: 0 !important;
    margin-right: 0 !important;
    margin-bottom: 0 !important;
    width: 100% !important;
    max-width: 100% !important;
    box-sizing: border-box;
}
#cp-app .cp-ip-actions-bar {
    margin-top: 0.5rem;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem;
}
#cp-app .cp-ip-actions-bar #cp-ip-save {
    margin-left: 0 !important;
}
#cp-app .cp-ip-actions-end {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-left: auto;
}
#cp-app .cp-ip-actions-bar #cp-ip-close,
#cp-app .cp-ip-actions-bar #cp-ip-edit {
    margin-right: 0 !important;
}

/* Scroll IP: tamanio/borde vienen de .lp-matrix-shell (design system). */
#cp-ip-grid-wrap .cp-ip-grid-scroll,
.cp-ip-grid-scroll {
    flex: 1 1 auto;
    min-width: 0;
    max-width: 100%;
    height: auto;
    -webkit-overflow-scrolling: touch;
    margin-left: 0;
    width: 100%;
    scroll-behavior: smooth;
    box-sizing: border-box;
}

.cp-ip-grid-nav {
    flex: 0 0 auto;
    align-self: center;
    position: relative;
    top: auto;
    z-index: 8;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
}

.cp-ip-grid-nav-btn {
    width: 2.35rem;
    height: 2.35rem;
    border: 1px solid #d7deea;
    border-radius: 999px;
    background: #fff;
    color: #344050;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 14px rgba(15, 23, 42, 0.1);
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}

.cp-ip-grid-nav-btn:hover:not(:disabled):not(.is-disabled) {
    background: #e8f0ff;
    color: #155eef;
    border-color: #b8d0ff;
    box-shadow: 0 6px 16px rgba(21, 94, 239, 0.16);
    transform: translateY(-1px);
}

.cp-ip-grid-nav-btn:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.25);
}

.cp-ip-grid-nav-btn:disabled,
.cp-ip-grid-nav-btn.is-disabled {
    opacity: 0.35;
    cursor: default;
    box-shadow: none;
    transform: none;
}

/* FAB guardar (arriba del "?"): verde */
.cp-ip-save-fab,
#cp-ip-save-fab {
    position: fixed !important;
    bottom: 72px !important;
    right: 40px !important;
    z-index: 1050 !important;
    width: 40px !important;
    height: 40px !important;
    border-radius: 50% !important;
    padding: 0 !important;
    display: none;
    align-items: center;
    justify-content: center;
    background-color: #198754 !important;
    color: #fff !important;
    border: none !important;
    box-shadow: 0 2px 8px rgba(25, 135, 84, 0.35) !important;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease, bottom 0.15s ease;
}

.cp-ip-save-fab.has-close-above,
#cp-ip-save-fab.has-close-above {
    bottom: 72px !important;
}

.cp-ip-save-fab.is-visible,
#cp-ip-save-fab.is-visible {
    display: inline-flex !important;
}

.cp-ip-save-fab:hover,
#cp-ip-save-fab:hover {
    background-color: #157347 !important;
    color: #fff !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(25, 135, 84, 0.4) !important;
}

.cp-ip-save-fab:focus-visible,
#cp-ip-save-fab:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(25, 135, 84, 0.35) !important;
}

.cp-ip-save-fab:disabled,
#cp-ip-save-fab:disabled {
    opacity: 0.55;
    cursor: default;
    transform: none;
}

/* FAB cerrar valores (candado, amarillo) */
.cp-ip-close-fab,
#cp-ip-close-fab {
    position: fixed !important;
    bottom: 124px !important;
    right: 40px !important;
    z-index: 1050 !important;
    width: 40px !important;
    height: 40px !important;
    border-radius: 50% !important;
    padding: 0 !important;
    display: none;
    align-items: center;
    justify-content: center;
    background-color: #ffc107 !important;
    color: #212529 !important;
    border: none !important;
    box-shadow: 0 2px 8px rgba(255, 193, 7, 0.45) !important;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease, bottom 0.15s ease;
}

.cp-ip-close-fab.has-zero-above,
#cp-ip-close-fab.has-zero-above {
    bottom: 124px !important;
}

.cp-ip-close-fab.is-visible,
#cp-ip-close-fab.is-visible {
    display: inline-flex !important;
}

.cp-ip-close-fab:hover,
#cp-ip-close-fab:hover {
    background-color: #ffca2c !important;
    color: #212529 !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(255, 193, 7, 0.55) !important;
}

.cp-ip-close-fab:focus-visible,
#cp-ip-close-fab:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(255, 193, 7, 0.45) !important;
}

.cp-ip-close-fab:disabled,
#cp-ip-close-fab:disabled {
    opacity: 0.55;
    cursor: default;
    transform: none;
}

/* FAB poner en cero (X roja, solo modo edicion) */
.cp-ip-zero-fab,
#cp-ip-zero-fab {
    position: fixed !important;
    bottom: 176px !important;
    right: 40px !important;
    z-index: 1050 !important;
    width: 40px !important;
    height: 40px !important;
    border-radius: 50% !important;
    padding: 0 !important;
    display: none;
    align-items: center;
    justify-content: center;
    background-color: #dc3545 !important;
    color: #fff !important;
    border: none !important;
    box-shadow: 0 2px 8px rgba(220, 53, 69, 0.4) !important;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease, bottom 0.15s ease;
}

/* Cuando Guardar/Cerrar no estan, la X queda arriba del "?" */
.cp-ip-zero-fab.is-above-help,
#cp-ip-zero-fab.is-above-help {
    bottom: 72px !important;
}

.cp-ip-zero-fab.is-visible,
#cp-ip-zero-fab.is-visible {
    display: inline-flex !important;
}

.cp-ip-zero-fab:hover,
#cp-ip-zero-fab:hover {
    background-color: #bb2d3b !important;
    color: #fff !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(220, 53, 69, 0.5) !important;
}

.cp-ip-zero-fab.is-active,
#cp-ip-zero-fab.is-active {
    background-color: #b02a37 !important;
    box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.35), 0 4px 14px rgba(220, 53, 69, 0.55) !important;
    animation: cp-ip-zero-pulse 1.2s ease-in-out infinite;
}

.cp-ip-zero-fab:focus-visible,
#cp-ip-zero-fab:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(220, 53, 69, 0.4) !important;
}

@keyframes cp-ip-zero-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.06); }
}

/* Indicador suave: solo brillo rojo en el borde de la grilla */
.cp-ip-grid-shell.cp-ip-zero-mode .cp-ip-grid-scroll,
body.cp-ip-zero-mode-active .cp-ip-grid-scroll {
    border-color: #f1aeb5;
    box-shadow:
        0 0 0 1px rgba(220, 53, 69, 0.35),
        0 0 14px rgba(220, 53, 69, 0.35),
        0 1px 2px rgba(15, 23, 42, 0.04);
}

body.cp-ip-zero-mode-active .cp-ip-cuenta-cell,
body.cp-ip-zero-mode-active .cp-ip-cuenta-label {
    cursor: pointer;
}

body.cp-ip-zero-mode-active input.cp-ip-cell {
    cursor: crosshair;
}

/* Hover sobre un input: solo ese input */
body.cp-ip-zero-mode-active #cp-table-ip input.cp-ip-cell:hover {
    background-color: #ffe3e6 !important;
    border-color: #f1aeb5;
    box-shadow: 0 0 0 2px rgba(220, 53, 69, 0.4);
}

/* Hover sobre el titulo de cuenta: ilumina toda la fila */
body.cp-ip-zero-mode-active #cp-table-ip tr.cp-ip-account-row:has(.cp-ip-cuenta-cell:hover) > td {
    background-color: rgba(220, 53, 69, 0.1) !important;
}

body.cp-ip-zero-mode-active #cp-table-ip tr.cp-ip-account-row:has(.cp-ip-cuenta-cell:hover) > td.cp-ip-cuenta-cell {
    background-color: rgba(220, 53, 69, 0.16) !important;
    box-shadow: inset 3px 0 0 #dc3545;
}

body.cp-ip-zero-mode-active #cp-table-ip tr.cp-ip-account-row:has(.cp-ip-cuenta-cell:hover) input.cp-ip-cell {
    background-color: #ffe3e6 !important;
    border-color: #f1aeb5;
    box-shadow: 0 0 0 1px rgba(220, 53, 69, 0.35);
}

#cp-app #cp-ip-grid-wrap #cp-table-ip {
    width: 100%;
    margin-left: 0;
}

#cp-app #cp-table-ip thead th,
#cp-app #cp-table-cons thead th {
    position: sticky;
    top: 0;
    z-index: 4;
    background-color: #f6f8fc !important;
    background-image: none !important;
    opacity: 1 !important;
    color: #3e4754;
    font-size: 0.78rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.25px;
    border-bottom: 1px solid #dbe3f0;
    box-shadow: inset 0 -1px 0 #dbe3f0;
}

/* Columna Cuenta fija al scrollear horizontalmente */
#cp-app #cp-table-ip thead th.cp-ip-col-cuenta,
#cp-app #cp-table-ip thead th:first-child {
    left: 0;
    z-index: 6;
    min-width: 220px;
    background-color: #f6f8fc !important;
    opacity: 1 !important;
    box-shadow: 2px 0 4px rgba(0, 0, 0, 0.04), inset 0 -1px 0 #dbe3f0;
}
#cp-app #cp-table-ip tbody td:first-child {
    position: sticky;
    left: 0;
    z-index: 2;
    background-color: #fff !important;
    opacity: 1;
    box-shadow: 2px 0 4px rgba(0, 0, 0, 0.04);
}
#cp-app #cp-table-ip tbody tr.cp-ip-row-clase > td:first-child {
    background: #edf3ff;
    z-index: 3;
}
#cp-app #cp-table-ip tbody tr.cp-ip-row-categoria > td:first-child {
    background: #f6f9ff;
    z-index: 3;
}
#cp-app #cp-table-ip tbody tr:hover > td:first-child {
    background: #fafcff;
}

#cp-app #cp-table-ip tbody td,
#cp-app #cp-table-cons tbody td {
    font-size: 0.84rem;
    vertical-align: middle;
    border-color: #e8edf6;
}

#cp-app #cp-table-ip tbody tr:hover td,
#cp-app #cp-table-cons tbody tr:hover td {
    background: #fafcff;
}

#cp-app #cp-table-ip .cp-ip-row-clase td {
    background: #edf3ff;
    color: #3c4553;
    font-weight: 600;
    border-top: 1px solid #d8e4fb;
    border-bottom: 1px solid #d8e4fb;
}

#cp-app #cp-table-ip .cp-ip-row-categoria td {
    background: #f6f9ff;
    color: #44556f;
    font-weight: 600;
}

#cp-app #cp-table-ip input.cp-ip-cell {
    border: 1px solid #d7deea;
    border-radius: 6px;
    min-height: 30px;
    text-align: right;
    font-size: 0.82rem;
}

#cp-app #cp-table-ip input.cp-ip-cell:disabled {
    background: #f5f7fb;
    color: #6b7280;
    border-color: #e2e8f0;
}

#cp-app #cp-ip-tabs {
    gap: 4px;
}

#cp-app .cp-drv-captura-tabs .nav-link {
    border-radius: 8px;
    border: 1px solid #d7deea;
    background: #f3f6fb;
    color: #4a5568;
    font-weight: 600;
    font-size: 0.84rem;
    padding: 0.35rem 0.75rem;
}

#cp-app .cp-drv-captura-tabs .nav-link.active {
    background: #e8f0ff;
    color: #155eef;
    border-color: #b8d0ff;
}

#cp-app .cp-drv-captura-tabs .cp-drv-cad-tab-plus {
    font-weight: 700;
    font-size: 1.1rem;
    line-height: 1;
    min-width: 2rem;
    text-align: center;
}

#cp-app .cp-drv-cadena-matriz .cp-cad-mes-congelado {
    background-color: #f8f9fb;
    color: #6b7280;
}

#cp-app .cp-drv-cadena-desviacion .cp-cad-desv-pos {
    color: #067647;
    font-weight: 600;
}

#cp-app .cp-drv-cadena-desviacion .cp-cad-desv-neg {
    color: #b42318;
    font-weight: 600;
}

#cp-app #cp-ip-tabs .nav-link {
    border-radius: 8px 8px 0 0;
    border: 1px solid transparent;
    background: #f3f6fb;
    color: #4a5568;
    font-weight: 600;
    padding: 0.45rem 0.8rem;
}

#cp-app #cp-ip-tabs .nav-link.active {
    background: #fff;
    border-color: #dbe3f0 #dbe3f0 #fff;
    color: #344050;
}

#cp-table-ip .cp-ip-cell.cp-ip-readonly {
    display: inline-block;
    background: transparent;
    border: none;
    padding: 0;
    margin: 0;
    width: 100%;
    text-align: right;
    font-size: inherit;
    font-weight: normal;
    cursor: default;
}

/* ========== Estilos para tarjetas (cards) estilo Fluent ========== */
#cp-app .card {
  display: flow-root;
  border: 1px solid var(--cp-border);
  border-radius: 4px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.04);
  background-color: var(--cp-bg-surface);
  margin: 0; 
}

#cp-app .card-header {
  background-color: #ffffff;
  border-bottom: 1px solid var(--cp-border);
  padding: 0.75rem 1rem;
  font-weight: 600;
  color: var(--cp-text-primary);
}

#cp-app .card-header h5,
#cp-app .card-header .h5 {
  font-size: 1.1rem;
  margin: 0;
  color: var(--cp-text-primary);
  margin-left: 12px;
}

#cp-app .card-body {
  padding: 1.25rem;
  background-color: var(--cp-bg-surface);
  color: var(--cp-text-primary);
}

/* Para mantener la coherencia con los filtros y botones */
#cp-app .card-body .row {
  margin-left: 0;
  margin-right: 0;
  margin-top: 4px;
}

@media (max-width: 768px) {
	.cp-login-wrapper {
		flex-direction: column;
	}
	.cp-login-left {
		min-height: 200px;
		padding: 1.5rem;
	}
	.cp-login-right {
		width: 100%;
		min-width: 0;
		flex: 1;
	}
}

/* Estilos personalizados para Intro.js */
.introjs-tooltipbuttons {
    /*display: flex !important;*/
    justify-content: space-between !important;
    align-items: center !important;
    gap: 12px !important;
    margin-top: 20px !important;
    padding-top: 16px !important;
    border-top: 1px solid #eef2f6 !important;
}

.introjs-button {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-radius: 30px !important;
    font-weight: 500 !important;
    font-size: 0.85rem !important;
    padding: 0.6rem 1.4rem !important;
    min-width: 90px !important;
    transition: all 0.2s ease !important;
    border: none !important;
    cursor: pointer !important;
    line-height: 1 !important;
    text-align: center !important;
    white-space: nowrap !important;
    text-shadow: none !important;      /* ← Elimina la sombra molesta */
    box-sizing: border-box !important;
}

/* Botón Anterior (izquierda) */
.introjs-prevbutton {
    background: #ffffff !important;
    color: #4a5568 !important;
    border: 1px solid #e2e8f0 !important;
    box-shadow: 0 1px 2px rgba(0,0,0,0.02) !important;
}
.introjs-prevbutton:hover {
    background: #f7fafc !important;
    border-color: #cbd5e0 !important;
    transform: translateY(-1px);
}

/* Botón Siguiente (derecha) */
.introjs-nextbutton {
    background: #3182ce !important;
    color: white !important;
    box-shadow: 0 2px 6px rgba(49,130,206,0.2) !important;
}
.introjs-nextbutton:hover {
    background: #2c5282 !important;
    transform: translateY(-1px);
    box-shadow: 0 4px 10px rgba(49,130,206,0.3);
}

/* Botón Finalizar (mismo estilo que Siguiente) */
.introjs-donebutton {
    background: #38a169 !important;
    color: white !important;
    box-shadow: 0 2px 6px rgba(56,161,105,0.2) !important;
}
.introjs-donebutton:hover {
    background: #2f855a !important;
    transform: translateY(-1px);
}

/* Botón Saltar (opcional) */
.introjs-skipbutton {
    background: transparent !important;
    color: #a0aec0 !important;
    box-shadow: none !important;
    padding: 0.6rem 1rem !important;
    text-shadow: none !important;
}
.introjs-skipbutton:hover {
    color: #718096 !important;
    background: rgba(0,0,0,0.02) !important;
}

/* Efecto de presión */
.introjs-button:active {
    transform: translateY(1px);
}

/* Foco accesible */
.introjs-button:focus-visible {
    outline: 2px solid #3182ce;
    outline-offset: 2px;
    border-radius: 30px;
}

/* Drivers: grillas con meses en columnas */
.cp-drv-grid-months-cols thead th {
    vertical-align: middle;
    font-size: 0.8rem;
}
.cp-drv-grid-months-cols tbody td:first-child,
.cp-drv-grid-months-cols thead th:first-child {
    position: sticky;
    left: 0;
    z-index: 1;
    background: var(--bs-body-bg, #fff);
    box-shadow: 1px 0 0 rgba(0, 0, 0, 0.08);
}
.cp-drv-grid-months-cols .cp-drv-linea-inp,
.cp-drv-grid-months-cols .cp-drv-serie-cell {
    min-width: 4.5rem;
    padding-left: 0.35rem;
    padding-right: 0.35rem;
}
.cp-drv-grid-months-cols .cp-drv-linea-calc {
    font-size: 0.8rem;
    white-space: nowrap;
}

.cp-drv-proyeccion-accordion .accordion-button {
    font-size: 0.95rem;
    font-weight: 600;
    padding: 0.55rem 1rem;
}
.cp-drv-proyeccion-accordion .accordion-button:not(.collapsed) {
    color: inherit;
    background-color: var(--bs-tertiary-bg, #f8f9fa);
    box-shadow: none;
}
.cp-drv-proyeccion-accordion .accordion-item {
    border-color: rgba(0, 0, 0, 0.1);
}
.cp-drv-proyeccion-accordion .accordion-body {
    border-top: 1px solid rgba(0, 0, 0, 0.06);
}

/* Drivers: cadena productiva (pestanas principales) */
.cp-drivers-card .nav-tabs > .nav-item > .nav-link {
    font-weight: 600;
}
/* Select2 cuenta ingreso: mismo aspecto que #cp-app .form-select.form-select-sm */
#cp-app .select2-container.cp-drv-account-s2 {
    width: 100% !important;
    vertical-align: middle;
    margin-top: 0.25rem;
}
#cp-app .select2-container.cp-drv-account-s2 .select2-selection--single {
    height: auto;
    min-height: calc(1.5em + 0.5rem + 2px);
    border: 1px solid #d7deea;
    border-radius: 8px;
    background-color: #fff;
    box-shadow: none;
    display: flex;
    align-items: center;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right 0.65rem center;
    background-size: 14px 10px;
}
#cp-app .select2-container.cp-drv-account-s2.select2-container--focus .select2-selection--single,
#cp-app .select2-container.cp-drv-account-s2.select2-container--open .select2-selection--single {
    border-color: #8cb4ff;
    box-shadow: 0 0 0 0.2rem rgba(59, 130, 246, 0.12);
    outline: none;
}
#cp-app .select2-container.cp-drv-account-s2 .select2-selection__rendered {
    padding: 0.25rem 2.25rem 0.25rem 0.75rem;
    font-size: 0.875rem;
    line-height: 1.5;
    color: #262626;
}
#cp-app .select2-container.cp-drv-account-s2 .select2-selection__placeholder {
    color: #8c8c8c;
}
#cp-app .select2-container.cp-drv-account-s2 .select2-selection__arrow {
    display: none;
}
#cp-app .select2-container.cp-drv-account-s2 .select2-selection__clear {
    margin-right: 1.75rem;
    color: #8c8c8c;
    font-weight: 400;
    font-size: 1rem;
    line-height: 1;
}
.select2-dropdown.cp-drv-account-s2-dd {
    border: 1px solid #d7deea;
    border-radius: 8px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
    font-size: 0.875rem;
    z-index: 1060;
    overflow: hidden;
}
.select2-dropdown.cp-drv-account-s2-dd .select2-search--dropdown {
    padding: 8px;
}
.select2-dropdown.cp-drv-account-s2-dd .select2-search__field {
    border: 1px solid #d7deea;
    border-radius: 8px;
    padding: 0.25rem 0.5rem;
    font-size: 0.875rem;
    outline: none;
    width: 100%;
    box-sizing: border-box;
}
.select2-dropdown.cp-drv-account-s2-dd .select2-search__field:focus {
    border-color: #8cb4ff;
    box-shadow: 0 0 0 0.2rem rgba(59, 130, 246, 0.12);
}
.select2-dropdown.cp-drv-account-s2-dd .select2-results__option {
    padding: 0.35rem 0.75rem;
    color: #262626;
}
.select2-dropdown.cp-drv-account-s2-dd .select2-results__option--highlighted[aria-selected] {
    background-color: #e6f7ff;
    color: #262626;
}
.select2-dropdown.cp-drv-account-s2-dd .select2-results__option[aria-selected=true] {
    background-color: #1890ff;
    color: #fff;
}

/* Select2 filtros Ingreso presupuesto (mismo look que #cp-app .form-select).
   Select2 4.0.13 aplica containerCssClass en .select2-selection; tambien marcamos el container en JS. */
#cp-app .select2-container.cp-ip-filter-s2,
#cp-app .select2-container:has(.select2-selection.cp-ip-filter-s2) {
    width: 100% !important;
    vertical-align: middle;
}
#cp-app .select2-container.cp-ip-filter-s2 .select2-selection--single,
#cp-app .select2-selection.select2-selection--single.cp-ip-filter-s2 {
    height: auto;
    min-height: 36px;
    border: 1px solid #d7deea;
    border-radius: 8px;
    background-color: #fff;
    box-shadow: none;
    display: flex;
    align-items: center;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right 0.75rem center;
    background-size: 14px 10px;
}
#cp-app .select2-container.cp-ip-filter-s2.select2-container--focus .select2-selection--single,
#cp-app .select2-container.cp-ip-filter-s2.select2-container--open .select2-selection--single,
#cp-app .select2-container--focus .select2-selection.select2-selection--single.cp-ip-filter-s2,
#cp-app .select2-container--open .select2-selection.select2-selection--single.cp-ip-filter-s2 {
    border-color: #8cb4ff;
    box-shadow: 0 0 0 0.2rem rgba(59, 130, 246, 0.12);
    outline: none;
}
#cp-app .select2-container.cp-ip-filter-s2 .select2-selection__rendered,
#cp-app .select2-selection.cp-ip-filter-s2 .select2-selection__rendered {
    padding: 0.375rem 2.25rem 0.375rem 0.75rem;
    font-size: 0.9375rem;
    line-height: 1.5;
    color: var(--cp-text-primary, #262626);
}
#cp-app .select2-container.cp-ip-filter-s2 .select2-selection__placeholder,
#cp-app .select2-selection.cp-ip-filter-s2 .select2-selection__placeholder {
    color: #8c8c8c;
}
#cp-app .select2-container.cp-ip-filter-s2 .select2-selection__arrow,
#cp-app .select2-selection.cp-ip-filter-s2 .select2-selection__arrow {
    display: none;
}
.select2-dropdown.cp-ip-filter-s2-dd {
    border: 1px solid var(--cp-border, #d7deea);
    border-radius: 8px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
    font-size: 0.9375rem;
    z-index: 1060;
    overflow: hidden;
}
.select2-dropdown.cp-ip-filter-s2-dd .select2-search--dropdown {
    padding: 8px;
}
.select2-dropdown.cp-ip-filter-s2-dd .select2-search__field {
    border: 1px solid var(--cp-border, #d7deea);
    border-radius: 8px;
    padding: 0.35rem 0.5rem;
    font-size: 0.9375rem;
    outline: none;
    width: 100%;
}
.select2-dropdown.cp-ip-filter-s2-dd .select2-search__field:focus {
    border-color: var(--cp-primary, #8cb4ff);
}
.select2-dropdown.cp-ip-filter-s2-dd .select2-results__option {
    padding: 0.4rem 0.75rem;
    color: var(--cp-text-primary, #262626);
}
.select2-dropdown.cp-ip-filter-s2-dd .select2-results__option--highlighted[aria-selected] {
    background-color: #e6f7ff;
    color: #262626;
}
.select2-dropdown.cp-ip-filter-s2-dd .select2-results__option[aria-selected=true] {
    background-color: #1890ff;
    color: #fff;
}

.cp-drv-cadena-grid thead th {
    font-size: 0.85rem;
    white-space: nowrap;
}

/* Cabecera de meses fija al scrollear verticalmente (edicion y resumen). */
.cp-drv-cadena-matriz {
    border-collapse: separate;
    border-spacing: 0;
}
.cp-drv-cadena-matriz thead th {
    position: sticky;
    top: 0;
    z-index: 6;
    /* Fondo opaco: evita que el contenido se vea a traves al sticky. */
    background-color: #f6f8fc !important;
    background-image: none !important;
    opacity: 1 !important;
    box-shadow: inset 0 -1px 0 #dbe3f0;
}
.cp-drv-cadena-grid .cp-cad-ingreso {
    background-color: rgba(13, 110, 253, 0.06);
}
.cp-drv-cadena-matriz-scroll,
.cp-drv-cadena-resumen-scroll {
    max-width: 100%;
    /* Scroll vertical propio: los meses (thead) quedan fijos dentro del ancho de la tabla. */
    max-height: min(70vh, calc(100vh - 14rem));
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}
.cp-drv-cadena-matriz input[readonly],
.cp-drv-cadena-matriz .cp-cad-ingreso {
    background-color: rgba(108, 117, 125, 0.08);
}
.cp-drv-cadena-matriz td {
    vertical-align: middle;
}
.cp-drv-cadena-matriz td:not(.cp-cad-row-num):not(.cp-cad-driver-col):not(.cp-cad-mes-col) {
    min-width: 4.5rem;
}
.cp-drv-cadena-matriz .cp-cad-mes-col {
    width: auto;
    min-width: var(--cp-cad-mes-col-width, 5rem);
    max-width: none;
    padding-left: 0.25rem;
    padding-right: 0.25rem;
    overflow: hidden;
    box-sizing: border-box;
}
.cp-drv-cadena-matriz thead th.cp-cad-mes-col {
    width: auto;
    min-width: var(--cp-cad-mes-col-width, 5rem);
    max-width: none;
}
.cp-drv-cadena-matriz .cp-cad-valor-group {
    display: flex;
    align-items: stretch;
    flex-wrap: nowrap;
}
.cp-drv-cadena-matriz .cp-cad-valor-group .form-control {
    min-width: 3.5rem;
}
.cp-drv-cadena-matriz .cp-cad-valor-group .cp-cad-unidad-text {
    min-width: 2.6rem;
    justify-content: center;
    padding-left: 0.35rem;
    padding-right: 0.35rem;
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    line-height: 1.2;
}
.cp-drv-cadena-matriz .cp-cad-valor-group .cp-cad-moneda-wrap {
    padding: 0;
    flex: 0 0 auto;
}
.cp-drv-cadena-matriz .cp-cad-valor-group .cp-cad-moneda-select {
    display: block;
    width: 100%;
    min-width: 2.6rem;
    max-width: 3.4rem;
    margin: 0;
    padding: 0.25rem 1.15rem 0.25rem 0.35rem;
    border: 0;
    border-radius: 0;
    background-color: transparent;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%236c757d' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right 0.2rem center;
    background-size: 0.55rem 0.55rem;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
    text-transform: uppercase;
    text-align: center;
    color: inherit;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    box-shadow: none;
    outline: none;
}
.cp-drv-cadena-matriz .cp-cad-valor-group .cp-cad-moneda-select:focus {
    box-shadow: none;
    outline: none;
}
.cp-drv-cadena-matriz .cp-cad-valor-group .cp-cad-moneda-select:disabled {
    cursor: not-allowed;
    opacity: 1;
}
#cp-drv-subtabs .nav-link {
    font-size: 0.9rem;
}

/* Drivers — administracion estilo Excel (alineado a operar cadena) */
.cp-drv-admin-excel-scroll {
    max-width: 100%;
    overflow-x: auto;
    border: 1px solid #e5e7eb;
    border-radius: 0.25rem;
    background: #fff;
}
.cp-drv-admin-excel-grid {
    table-layout: auto;
    min-width: 100%;
    margin-bottom: 0;
    font-size: 0.8125rem;
    --cp-cad-otros-text: #9b1c2c;
    --cp-cad-otros-bg: rgba(220, 53, 69, 0.035);
    --cp-cad-otros-bg-total: rgba(220, 53, 69, 0.078);
}
.cp-drv-admin-excel-grid.cp-drv-cadena-matriz {
    table-layout: auto;
    width: auto;
    min-width: 100%;
}
.cp-drv-admin-excel-grid th,
.cp-drv-admin-excel-grid td {
    border-color: #e5e7eb !important;
    vertical-align: middle;
}
.cp-drv-admin-excel-grid thead .cp-drv-admin-head-main th {
    background: #f6f8fc;
    font-weight: 600;
    white-space: nowrap;
    font-size: 0.8125rem;
    color: #374151;
    border-bottom: 1px solid #e5e7eb;
}
.cp-drv-admin-excel-grid .cp-drv-admin-subhead th {
    background: #f3f4f6;
    font-size: 0.75rem;
    font-weight: 600;
    color: #6b7280;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.cp-drv-admin-excel-grid .cp-drv-admin-proj-head {
    border-bottom: 1px solid #e5e7eb;
}
.cp-drv-admin-num-col {
    width: 2.85rem;
    min-width: 2.85rem;
    max-width: 2.85rem;
    background: #f8fafc;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    vertical-align: middle;
}
.cp-drv-admin-row-num {
    display: inline-block;
    white-space: nowrap;
    line-height: 1.2;
    font-size: 0.8125rem;
}
.cp-drv-admin-concept-col {
    min-width: 11rem;
    max-width: 18rem;
}
.cp-drv-admin-actions-col {
    min-width: 6.25rem;
    white-space: nowrap;
}
.cp-drv-admin-actions-wrap {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: nowrap;
    gap: 0.2rem;
}
.cp-drv-admin-cat-row td {
    background: #eceff3 !important;
    font-weight: 700;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #4b5563;
    padding-top: 0.45rem;
    padding-bottom: 0.45rem;
    border-top: 2px solid #d1d5db !important;
}
.cp-drv-admin-cat-row.cp-drv-admin-cat-otros td {
    background: rgba(220, 53, 69, 0.1) !important;
    color: var(--cp-cad-otros-text);
    border-top-color: rgba(220, 53, 69, 0.22) !important;
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-tipo-header.cp-drv-admin-otros-sec > td {
    background-color: var(--cp-cad-otros-bg-total);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-item-row.cp-drv-admin-otros-sec > td,
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-add-row.cp-drv-admin-otros-sec > td {
    background-color: var(--cp-cad-otros-bg);
}
.cp-drv-admin-excel-grid tr.cp-drv-admin-otros-sec .cp-drv-admin-tipo-title {
    color: var(--cp-cad-otros-text);
}
.cp-drv-admin-tipo-header > td {
    font-weight: 600;
    border-top: 1px solid #e5e7eb !important;
    padding-top: 0.45rem;
    padding-bottom: 0.45rem;
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-tipo-header.cp-cad-seccion-mp > td {
    background-color: var(--cp-cad-mp-bg-total);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-tipo-header.cp-cad-seccion-pr > td {
    background-color: var(--cp-cad-pr-bg-total);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-tipo-header.cp-cad-seccion-vt > td {
    background-color: var(--cp-cad-vt-bg-total);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-tipo-header.cp-cad-seccion-in > td {
    background-color: var(--cp-cad-in-bg-total);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-tipo-header.cp-cad-seccion-ratio > td {
    background-color: var(--cp-cad-ratio-bg-total);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-item-row.cp-cad-seccion-mp > td {
    background-color: var(--cp-cad-mp-bg);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-item-row.cp-cad-seccion-pr > td {
    background-color: var(--cp-cad-pr-bg);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-item-row.cp-cad-seccion-vt > td {
    background-color: var(--cp-cad-vt-bg);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-item-row.cp-cad-seccion-in > td {
    background-color: var(--cp-cad-in-bg);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-item-row.cp-cad-seccion-ratio > td {
    background-color: var(--cp-cad-ratio-bg);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-item-row:hover > td {
    filter: brightness(0.98);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-add-row.cp-cad-seccion-mp > td {
    background-color: var(--cp-cad-mp-bg);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-add-row.cp-cad-seccion-pr > td {
    background-color: var(--cp-cad-pr-bg);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-add-row.cp-cad-seccion-vt > td {
    background-color: var(--cp-cad-vt-bg);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-add-row.cp-cad-seccion-in > td {
    background-color: var(--cp-cad-in-bg);
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-add-row.cp-cad-seccion-ratio > td {
    background-color: var(--cp-cad-ratio-bg);
}
.cp-drv-admin-inactive > td {
    opacity: 0.65;
}
.cp-drv-admin-tipo-concept {
	/* No usar display:flex en <td>: deja franja blanca bajo contenido de 1 linea
	   cuando otras celdas de la fila tienen 2 lineas. */
	vertical-align: middle;
}
.cp-drv-admin-tipo-concept .cp-drv-admin-sec-pill,
.cp-drv-admin-tipo-concept .cp-drv-admin-tipo-title {
	vertical-align: middle;
}
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-tipo-header > td,
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-item-row > td,
.cp-drv-admin-excel-grid tbody tr.cp-drv-admin-add-row > td {
	/* Fondo de seccion debe cubrir toda la altura de la fila */
	background-clip: border-box;
}
.cp-drv-admin-sec-pill {
    display: inline-block;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0.1rem 0.4rem;
    border-radius: 0.2rem;
    background: rgba(255, 255, 255, 0.65);
    border: 1px solid rgba(0, 0, 0, 0.08);
    white-space: nowrap;
}
.cp-drv-admin-excel-grid tr.cp-cad-seccion-mp .cp-drv-admin-sec-pill,
.cp-drv-admin-excel-grid tr.cp-cad-seccion-mp .cp-drv-admin-tipo-title {
    color: var(--cp-cad-mp-text);
}
.cp-drv-admin-excel-grid tr.cp-cad-seccion-pr .cp-drv-admin-sec-pill,
.cp-drv-admin-excel-grid tr.cp-cad-seccion-pr .cp-drv-admin-tipo-title {
    color: var(--cp-cad-pr-text);
}
.cp-drv-admin-excel-grid tr.cp-cad-seccion-vt .cp-drv-admin-sec-pill,
.cp-drv-admin-excel-grid tr.cp-cad-seccion-vt .cp-drv-admin-tipo-title {
    color: var(--cp-cad-vt-text);
}
.cp-drv-admin-excel-grid tr.cp-cad-seccion-in .cp-drv-admin-sec-pill,
.cp-drv-admin-excel-grid tr.cp-cad-seccion-in .cp-drv-admin-tipo-title {
    color: var(--cp-cad-in-text);
}
.cp-drv-admin-excel-grid tr.cp-cad-seccion-ratio .cp-drv-admin-sec-pill,
.cp-drv-admin-excel-grid tr.cp-cad-seccion-ratio .cp-drv-admin-tipo-title {
    color: var(--cp-cad-ratio-text);
}
.cp-drv-admin-tipo-title {
    font-weight: 600;
    font-size: 0.8125rem;
}
.cp-drv-admin-rol-tag {
    display: inline-block;
    font-size: 0.65rem;
    font-weight: 700;
    padding: 0.08rem 0.35rem;
    border-radius: 0.2rem;
    background: rgba(255, 255, 255, 0.7);
    border: 1px solid rgba(0, 0, 0, 0.1);
}
.cp-drv-admin-item-indent {
    display: inline-block;
    width: 1rem;
    border-left: 2px solid rgba(0, 0, 0, 0.15);
    margin-right: 0.35rem;
    height: 0.85rem;
    vertical-align: middle;
}
.cp-drv-admin-add-row > td {
    border-top: 1px dashed rgba(0, 0, 0, 0.12) !important;
    padding-top: 0.35rem;
    padding-bottom: 0.35rem;
}
.cp-drv-admin-add-item-btn {
    display: inline-flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.4rem;
    white-space: nowrap;
    width: auto;
    max-width: 100%;
    border: 1px dashed rgba(25, 135, 84, 0.35);
    color: #157347;
    background: rgba(255, 255, 255, 0.55);
    font-size: 0.75rem;
    font-weight: 600;
    padding: 0.25rem 0.55rem;
    line-height: 1.2;
    vertical-align: middle;
}
.cp-drv-admin-add-row > td.ps-4 {
    white-space: nowrap;
}
.cp-drv-admin-add-item-btn:hover {
    background: rgba(25, 135, 84, 0.06);
    color: #146c43;
    border-color: #198754;
}
.cp-drv-admin-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 0;
    color: #fff;
    flex-shrink: 0;
}
.cp-drv-admin-icon svg {
    display: block;
    stroke: currentColor;
}
.cp-drv-admin-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.65rem;
    height: 1.65rem;
    min-width: 1.65rem;
    padding: 0 !important;
    margin: 0 0.1rem;
    border: none;
    border-radius: 0.2rem;
    text-decoration: none !important;
    line-height: 1;
    vertical-align: middle;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}
.cp-drv-admin-icon-btn.cp-drv-edit-tipo,
.cp-drv-admin-icon-btn.cp-drv-edit-item,
.cp-drv-admin-icon-btn.cp-drv-edit-config-item {
    background: #0d6efd;
    color: #fff;
}
.cp-drv-admin-icon-btn.cp-drv-edit-tipo:hover,
.cp-drv-admin-icon-btn.cp-drv-edit-item:hover,
.cp-drv-admin-icon-btn.cp-drv-edit-config-item:hover {
    background: #0b5ed7;
    color: #fff;
}
.cp-drv-admin-icon-btn.cp-drv-del-tipo,
.cp-drv-admin-icon-btn.cp-drv-del-item {
    background: #dc3545;
    color: #fff;
}
.cp-drv-admin-icon-btn.cp-drv-del-tipo:hover,
.cp-drv-admin-icon-btn.cp-drv-del-item:hover {
    background: #bb2d3b;
    color: #fff;
}
.cp-drv-admin-add-item-btn .cp-drv-admin-icon {
    display: inline-flex;
    flex-shrink: 0;
    width: 1.35rem;
    height: 1.35rem;
    background: #198754;
    border-radius: 0.2rem;
    color: #fff;
}
.cp-drv-admin-icon-btn.cp-drv-add-item-tipo,
.cp-drv-admin-icon-btn.cp-drv-add-config-item {
    background: #198754;
    color: #fff;
}
.cp-drv-admin-icon-btn.cp-drv-add-item-tipo:hover,
.cp-drv-admin-icon-btn.cp-drv-add-config-item:hover {
    background: #157347;
    color: #fff;
}
.cp-drv-admin-add-item-btn .cp-drv-admin-icon svg {
    width: 13px;
    height: 13px;
}
.cp-drv-admin-proj {
    max-width: 10rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Drivers — cadena productiva (UI renovada) */
.cp-drivers-card .cp-drv-main-tabs .nav-link {
    font-size: 0.875rem;
    padding: 0.35rem 0.85rem;
}
.cp-drv-step-card {
    background: var(--bs-light, #f8f9fa);
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: 0.5rem;
    padding: 0.65rem 0.75rem;
    position: relative;
}
.cp-drv-step-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 50%;
    background: var(--bs-primary, #0d6efd);
    color: #fff;
    font-size: 0.7rem;
    font-weight: 600;
    margin-bottom: 0.25rem;
}
.cp-drv-empty-state {
    padding: 1.5rem;
    text-align: center;
    border: 1px dashed var(--bs-border-color, #dee2e6);
    border-radius: 0.5rem;
    background: var(--bs-light, #f8f9fa);
}
.cp-drv-cadena-toolbar {
    padding-top: 0.5rem;
    border-top: 1px solid var(--bs-border-color-translucent, rgba(0, 0, 0, 0.08));
}
.cp-drv-oper-filters {
    padding: 0.75rem;
    border: 1px solid var(--bs-border-color-translucent, rgba(0, 0, 0, 0.08));
    border-radius: 0.5rem;
    background: var(--bs-light, #f8f9fa);
}
.cp-drv-cadena-toolbar-forecast {
    padding-left: 0.75rem;
    border-left: 1px solid var(--bs-border-color-translucent, rgba(0, 0, 0, 0.12));
}
.cp-cad-captura-cerrada .cp-drv-cadena-matriz-scroll {
    opacity: 0.92;
}

/* Area operativa cadena (#cp-drv-cad-work): matriz horizontal y toolbar */
#cp-drv-cad-work {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-width: 0;
    width: 100%;
}
#cp-drv-cad-grid-wrap {
    min-width: 0;
    width: 100%;
}
#cp-drv-cad-work .cp-drv-cadena-matriz-scroll {
    width: 100%;
    max-width: 100%;
    max-height: min(70vh, calc(100vh - 14rem));
    overflow: auto;
    -webkit-overflow-scrolling: touch;
    border: 1px solid var(--cp-border, #e5e7eb);
    border-radius: 0.375rem;
    background: var(--cp-bg-surface, #fff);
}
#cp-drv-cad-work .cp-drv-cadena-matriz {
    display: table;
    /* Ocupa todo el ancho del contenedor; si no cabe, scroll horizontal. */
    width: 100%;
    min-width: max(
        100%,
        calc(
            var(--cp-cad-row-num-width, 2.25rem) +
            var(--cp-cad-driver-col-width, 10.5rem) +
            (var(--cp-cad-mes-col-width, 5rem) * 12) +
            5.5rem + 8rem
        )
    );
    table-layout: fixed;
    margin-bottom: 0;
    border-collapse: separate;
    border-spacing: 0;
}
#cp-drv-cad-work .cp-drv-cadena-matriz thead {
    display: table-header-group;
}
#cp-drv-cad-work .cp-drv-cadena-matriz tbody {
    display: table-row-group;
}
#cp-drv-cad-work .cp-drv-cadena-matriz tr {
    display: table-row;
}
#cp-drv-cad-work .cp-drv-cadena-matriz th,
#cp-drv-cad-work .cp-drv-cadena-matriz td {
    display: table-cell;
}
/* Esquina fija: # y Concepto siguen la tabla (sticky top + left), como los meses. */
#cp-drv-cad-work .cp-drv-cadena-matriz thead th.cp-cad-row-num-col,
#cp-drv-cad-work .cp-drv-cadena-matriz thead th.cp-cad-driver-col-h {
    position: sticky !important;
    top: 0 !important;
    z-index: 12 !important;
    background-color: #f6f8fc !important;
}
#cp-drv-cad-work .cp-drv-cadena-matriz thead th.cp-cad-row-num-col {
    left: 0 !important;
}
#cp-drv-cad-work .cp-drv-cadena-matriz thead th.cp-cad-driver-col-h {
    left: var(--cp-cad-row-num-width, 2.25rem) !important;
}
#cp-drv-cad-work .cp-drv-cadena-matriz tbody td.cp-cad-row-num,
#cp-drv-cad-work .cp-drv-cadena-matriz tbody td.cp-cad-driver-col {
    position: sticky !important;
}
#cp-drv-cad-work .cp-drv-cadena-matriz tbody td.cp-cad-row-num {
    left: 0 !important;
    z-index: 5;
}
#cp-drv-cad-work .cp-drv-cadena-matriz tbody td.cp-cad-driver-col {
    left: var(--cp-cad-row-num-width, 2.25rem) !important;
    z-index: 4;
}
#cp-drv-cad-work .cp-drv-cadena-matriz .cp-cad-valor-group {
    display: flex;
    align-items: stretch;
    flex-wrap: nowrap;
    width: 100%;
    min-width: 0;
}
#cp-drv-cad-work .cp-drv-cadena-matriz .cp-cad-valor-group .form-control {
    flex: 1 1 auto;
    min-width: 0;
}
#cp-drv-cad-work .cp-drv-cadena-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    width: 100%;
}
#cp-drv-cad-work .cp-drv-cadena-toolbar-capture,
#cp-drv-cad-work .cp-drv-cadena-toolbar-forecast {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}
@media (max-width: 768px) {
    #cp-drv-cad-work .cp-drv-cadena-toolbar-forecast {
        width: 100%;
        margin-left: 0 !important;
        padding-left: 0;
        border-left: none;
        border-top: 1px solid var(--bs-border-color-translucent, rgba(0, 0, 0, 0.08));
        padding-top: 0.5rem;
    }
}
.cp-cad-captura-cerrada .cp-cad-val:disabled,
.cp-cad-captura-cerrada .cp-cad-driver-moneda-select:disabled {
    background-color: #f3f4f6;
    cursor: not-allowed;
}
/* Alertas Clay/Bootstrap dismissibles en el portlet */
#cp-app .cp-clay-alert,
.cp-clay-alert {
    border-radius: 0.375rem;
    font-size: 0.875rem;
    line-height: 1.45;
    padding: 0.75rem 2.5rem 0.75rem 1rem;
}
#cp-app .cp-clay-alert .lead,
.cp-clay-alert .lead {
    font-size: inherit;
    font-weight: 700;
    margin-right: 0.25rem;
}
#cp-app .cp-clay-alert.alert-sm,
.cp-clay-alert.alert-sm {
    padding: 0.55rem 2.25rem 0.55rem 0.85rem;
    font-size: 0.8125rem;
}
#cp-app .cp-clay-alert .btn-close,
.cp-clay-alert .btn-close {
    padding: 0.85rem;
}
.cp-cad-vista-resumen thead th.cp-cad-total-anual-col {
    min-width: 5.5rem;
    background: #f6f8fc;
    font-weight: 600;
}
.cp-cad-vista-resumen tbody td.cp-cad-total-anual-col {
    background-color: rgba(0, 0, 0, 0.02);
}
.cp-drv-cadena-matriz thead th.cp-cad-total-anual-col {
    min-width: 5.5rem;
    background: #f6f8fc;
    font-weight: 600;
}
.cp-drv-cadena-matriz tbody td.cp-cad-total-anual-col {
    background-color: rgba(0, 0, 0, 0.03);
    font-weight: 600;
}
.cp-cad-vista-resumen tr.cp-cad-seccion-header.cp-cad-seccion-mp > td {
    background-color: var(--cp-cad-mp-bg-total) !important;
    color: var(--cp-cad-mp-text);
    border-top: 2px solid rgba(255, 152, 0, 0.25) !important;
}
.cp-cad-vista-resumen tr.cp-cad-seccion-header.cp-cad-seccion-pr > td {
    background-color: var(--cp-cad-pr-bg-total) !important;
    color: var(--cp-cad-pr-text);
    border-top: 2px solid rgba(41, 182, 246, 0.25) !important;
}
.cp-cad-vista-resumen tr.cp-cad-seccion-header.cp-cad-seccion-vt > td {
    background-color: var(--cp-cad-vt-bg-total) !important;
    color: var(--cp-cad-vt-text);
    border-top: 2px solid rgba(156, 39, 176, 0.25) !important;
}
.cp-cad-vista-resumen tr.cp-cad-seccion-header.cp-cad-seccion-in > td {
    background-color: var(--cp-cad-in-bg-total) !important;
    color: var(--cp-cad-in-text);
    border-top: 2px solid rgba(230, 81, 0, 0.25) !important;
}
.cp-cad-vista-resumen tr.cp-cad-seccion-header.cp-cad-seccion-ratio > td {
    background-color: var(--cp-cad-ratio-bg-total) !important;
    color: var(--cp-cad-ratio-text);
    border-top: 2px solid rgba(55, 71, 79, 0.2) !important;
}
.cp-cad-vista-resumen tr.cp-cad-seccion-header .cp-cad-seccion-title {
    font-weight: 700;
    font-size: 0.8125rem;
    letter-spacing: 0.03em;
}

/* Consolidado — pestaña Areas (drivers operacionales) */
#cp-cons-tabs .nav-link {
    cursor: pointer;
    font-weight: 500;
}
#cp-cons-tab-areas .cp-cons-areas-scroll {
    max-height: 70vh;
    overflow: auto;
}
#cp-cons-tab-areas .cp-cons-areas-table td.cp-cad-seccion-mp {
    background-color: var(--cp-cons-drv-mp-bg) !important;
    color: var(--cp-cons-drv-mp-text);
}
#cp-cons-tab-areas .cp-cons-areas-table td.cp-cad-seccion-pr {
    background-color: var(--cp-cons-drv-pr-bg) !important;
    color: var(--cp-cons-drv-pr-text);
}
#cp-cons-tab-areas .cp-cons-areas-table td.cp-cad-seccion-vt {
    background-color: var(--cp-cons-drv-vt-bg) !important;
    color: var(--cp-cons-drv-vt-text);
}
#cp-cons-tab-areas .cp-cons-areas-table td.cp-cad-seccion-in {
    background-color: var(--cp-cons-drv-in-bg) !important;
    color: var(--cp-cons-drv-in-text);
}
#cp-cons-tab-areas .cp-cons-areas-table td.cp-cad-seccion-ratio {
    background-color: var(--cp-cons-drv-ratio-bg) !important;
    color: var(--cp-cons-drv-ratio-text);
}
#cp-cons-tab-areas .cp-cons-areas-table tr.cp-cad-total-row > td {
    font-weight: 600;
    border-top-width: 2px;
}

/* Cadena operar: chips contexto, celdas editables vs bloqueadas */
#cp-app .cp-cad-context-chips {
    display: inline-flex;
    gap: 0.35rem;
    margin-right: 0.5rem;
    vertical-align: middle;
}
#cp-app .cp-cad-chip {
    display: inline-block;
    font-size: 0.7rem;
    font-weight: 600;
    padding: 0.15rem 0.45rem;
    border-radius: 0.25rem;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}
#cp-app .cp-cad-chip-rol {
    background: #e0e7ff;
    color: #3730a3;
}
#cp-app .cp-cad-chip-abierta {
    background: #dcfce7;
    color: #166534;
}
#cp-app .cp-cad-chip-cerrada {
    background: #fee2e2;
    color: #991b1b;
}
#cp-app .cp-cad-chip-desv {
    background: #fef3c7;
    color: #92400e;
}
#cp-app .cp-cad-banner-hint {
    font-size: 0.85rem;
    color: #64748b;
    font-style: italic;
}
#cp-app .cp-drv-cadena-matriz .cp-cad-val-editable:not(:disabled) {
    border-color: #3b82f6;
    background-color: #fff;
    box-shadow: inset 0 0 0 1px rgba(59, 130, 246, 0.25);
}
#cp-app .cp-drv-cadena-matriz .cp-cad-val-editable:focus {
    border-color: #2563eb;
    box-shadow: 0 0 0 0.15rem rgba(37, 99, 235, 0.2);
}
#cp-app .cp-drv-cadena-matriz .cp-cad-val-bloqueada,
#cp-app .cp-drv-cadena-matriz td.cp-cad-val-bloqueada {
    background-color: #f1f5f9;
    color: #64748b;
}
#cp-app .cp-drv-cadena-matriz .cp-cad-val:disabled,
#cp-app .cp-drv-cadena-matriz .cp-cad-val-bloqueada:disabled {
    cursor: not-allowed;
    opacity: 0.85;
}
#cp-app .cp-drv-cadena-matriz tr.cp-cad-seccion-subheader > td {
    background-color: rgba(148, 163, 184, 0.12);
    font-weight: 600;
    color: #475569;
    padding-top: 0.25rem;
    padding-bottom: 0.25rem;
}
#cp-app .cp-drv-cadena-matriz tr.cp-cad-seccion-ops > td {
    background-color: rgba(234, 179, 8, 0.06);
}

.cp-drv-cad-proy-panel {
    padding: 0.5rem 0.75rem;
    background: #f8fafc;
    border: 1px solid #e2e8f0;
    border-radius: 0.375rem;
}
.cp-drv-cad-proy-panel-head {
    margin-bottom: 0.35rem;
}
.cp-drv-cad-proy-panel-label {
    font-size: 0.75rem;
    font-weight: 600;
    color: #475569;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.cp-drv-cad-proy-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}
.cp-drv-cad-proy-chip {
    display: inline-block;
    padding: 0.2rem 0.55rem;
    font-size: 0.8125rem;
    font-weight: 500;
    color: #1e40af;
    background: #dbeafe;
    border: 1px solid #93c5fd;
    border-radius: 999px;
    white-space: nowrap;
}
.cp-drv-cad-proy-config-row {
    max-width: 22rem;
}
.cp-cad-proy-col {
    min-width: 5.5rem;
    vertical-align: middle;
}
.cp-cad-proy-col-h {
    min-width: 5.5rem;
}
.cp-cad-proy-btn {
    font-size: 0.75rem;
    font-weight: 600;
    text-decoration: none !important;
    white-space: nowrap;
}
.cp-cad-proy-plus {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.1rem;
    height: 1.1rem;
    margin-right: 0.2rem;
    border-radius: 999px;
    background: #198754;
    color: #fff;
    font-weight: 700;
    line-height: 1;
    font-size: 0.85rem;
}
.cp-cad-proy-cuenta-badge {
    cursor: pointer;
    max-width: 5.5rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.cp-cad-proy-requerida .cp-cad-proy-btn {
    color: #b45309;
}
.cp-drv-cadena-matriz {
    table-layout: fixed;
    width: 100%;
    --cp-cad-mp-text: #9a4f00;
    --cp-cad-pr-text: #0d47a1;
    --cp-cad-vt-text: #4a148c;
    --cp-cad-in-text: #bf360c;
    --cp-cad-ratio-text: #37474f;
    /* Fondos opacos (mezcla sobre blanco); sticky no deja ver filas debajo. */
    --cp-cad-mp-bg: #fffbf6;
    --cp-cad-pr-bg: #f7fcfe;
    --cp-cad-vt-bg: #fbf7fc;
    --cp-cad-in-bg: #fef9f6;
    --cp-cad-ratio-bg: #f9f9fa;
    --cp-cad-mp-bg-total: #fff7eb;
    --cp-cad-pr-bg-total: #eef9fe;
    --cp-cad-vt-bg-total: #f7eef9;
    --cp-cad-in-bg-total: #fef0e8;
    --cp-cad-ratio-bg-total: #f1f3f4;
    --cp-cad-row-num-width: 2.25rem;
    --cp-cad-driver-col-width: 12rem;
    --cp-cad-mes-col-width: 5rem;
}
.cp-drv-cadena-matriz .cp-cad-row-num-col,
.cp-drv-cadena-matriz .cp-cad-row-num {
    width: var(--cp-cad-row-num-width);
    min-width: var(--cp-cad-row-num-width);
    max-width: var(--cp-cad-row-num-width);
    padding-left: 0.25rem;
    padding-right: 0.25rem;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    line-height: 1.2;
    vertical-align: middle;
}
.cp-drv-cadena-matriz .cp-cad-row-num-val {
    display: inline-block;
    white-space: nowrap;
    min-width: 1ch;
}
.cp-drv-cadena-matriz .cp-cad-driver-col-h,
.cp-drv-cadena-matriz .cp-cad-driver-col {
    width: var(--cp-cad-driver-col-width);
    min-width: var(--cp-cad-driver-col-width);
    max-width: var(--cp-cad-driver-col-width);
}
.cp-drv-cadena-matriz .cp-cad-driver-col {
    overflow: hidden;
}
.cp-drv-cadena-matriz .cp-cad-row-num {
    position: sticky;
    left: 0;
    z-index: 4;
    background-color: #fff;
    opacity: 1;
}
.cp-drv-cadena-matriz .cp-cad-driver-col {
    position: sticky;
    left: var(--cp-cad-row-num-width);
    z-index: 3;
    background-color: #fff;
    opacity: 1;
    box-shadow: 2px 0 4px rgba(0, 0, 0, 0.04);
}
/* Titulos sticky: mismo color de seccion, siempre opaco. */
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-mp > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-mp > td.cp-cad-driver-col {
    background-color: var(--cp-cad-mp-bg) !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-pr > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-pr > td.cp-cad-driver-col {
    background-color: var(--cp-cad-pr-bg) !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-vt > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-vt > td.cp-cad-driver-col {
    background-color: var(--cp-cad-vt-bg) !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-in > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-in > td.cp-cad-driver-col {
    background-color: var(--cp-cad-in-bg) !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-ratio > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-ratio > td.cp-cad-driver-col {
    background-color: var(--cp-cad-ratio-bg) !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-mp > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-mp > td.cp-cad-driver-col {
    background-color: var(--cp-cad-mp-bg-total) !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-pr > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-pr > td.cp-cad-driver-col {
    background-color: var(--cp-cad-pr-bg-total) !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-vt > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-vt > td.cp-cad-driver-col {
    background-color: var(--cp-cad-vt-bg-total) !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-in > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-in > td.cp-cad-driver-col {
    background-color: var(--cp-cad-in-bg-total) !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-ratio > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-ratio > td.cp-cad-driver-col {
    background-color: var(--cp-cad-ratio-bg-total) !important;
}
.cp-cad-driver-label {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    flex-wrap: nowrap;
    min-width: 0;
}
.cp-cad-driver-name {
    font-weight: 600;
    font-size: 0.8125rem;
    color: inherit;
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.cp-drv-cadena-matriz tr.cp-cad-seccion-mp .cp-cad-driver-name {
    color: var(--cp-cad-mp-text);
}
.cp-drv-cadena-matriz tr.cp-cad-seccion-pr .cp-cad-driver-name {
    color: var(--cp-cad-pr-text);
}
.cp-drv-cadena-matriz tr.cp-cad-seccion-vt .cp-cad-driver-name {
    color: var(--cp-cad-vt-text);
}
.cp-drv-cadena-matriz tr.cp-cad-seccion-in .cp-cad-driver-name {
    color: var(--cp-cad-in-text);
}
.cp-drv-cadena-matriz tr.cp-cad-seccion-ratio .cp-cad-driver-name {
    color: var(--cp-cad-ratio-text);
}
.cp-cad-info-modal-body {
    font-size: 0.9375rem;
    line-height: 1.45;
    color: #1f2937;
}
.cp-cad-info-stack {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.cp-cad-info-section-title {
    font-size: 0.9375rem;
    font-weight: 600;
    color: #1f2937;
    letter-spacing: 0.01em;
}
.cp-cad-info-meta-card {
    background: #f8fafc;
    border: 1px solid #e5e7eb;
    border-radius: 0.5rem;
    padding: 0.85rem 1rem;
}
.cp-cad-info-dl-row {
    display: grid;
    grid-template-columns: 6.25rem 1fr;
    gap: 0.35rem 0.75rem;
    padding: 0.35rem 0;
    border-bottom: 1px solid #eef2f6;
}
.cp-cad-info-dl-row:last-child {
    border-bottom: none;
    padding-bottom: 0;
}
.cp-cad-info-dl-row dt {
    margin: 0;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #64748b;
}
.cp-cad-info-dl-row dd {
    margin: 0;
    font-size: 0.9375rem;
    color: #1f2937;
}
.cp-cad-info-formula-card {
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-radius: 0.5rem;
    padding: 0.75rem 1rem;
}
.cp-cad-info-formula-expr {
    font-size: 1rem;
    font-weight: 600;
    color: #92400e;
}
.cp-cad-info-stat-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.65rem;
    margin-top: 0;
}
.cp-cad-info-stat {
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 0.45rem;
    padding: 0.65rem 0.75rem;
    min-height: 4.25rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 0.2rem;
}
.cp-cad-info-stat-highlight {
    grid-column: 1 / -1;
    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
    border-color: #cbd5e1;
}
.cp-cad-info-stat-label {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #64748b;
}
.cp-cad-info-stat-val {
    font-size: 1.125rem;
    font-weight: 700;
    color: #111827;
    font-variant-numeric: tabular-nums;
    line-height: 1.2;
}
.cp-cad-info-table-wrap {
    border: 1px solid #e5e7eb;
    border-radius: 0.5rem;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.05);
}
.cp-cad-info-meses-table {
    margin-bottom: 0;
    font-size: 0.9375rem;
    border-collapse: collapse;
    width: 100%;
}
.cp-cad-info-meses-table thead th {
    background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
    font-weight: 600;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: #64748b;
    border-bottom: 1px solid #e2e8f0;
    padding: 0.6rem 0.85rem;
    white-space: nowrap;
}
.cp-cad-info-meses-table tbody td {
    border-color: #eef2f6;
    padding: 0.5rem 0.85rem;
    vertical-align: middle;
}
.cp-cad-info-meses-table tbody tr.cp-cad-info-mes-row:nth-child(even) td {
    background-color: #fafbfc;
}
.cp-cad-info-meses-table tbody tr.cp-cad-info-mes-row:hover td {
    background-color: #f4f7fb;
}
.cp-cad-info-mes-label {
    color: #374151;
    font-weight: 600;
    font-size: 0.9375rem;
    width: 42%;
}
.cp-cad-info-mes-val {
    font-variant-numeric: tabular-nums;
    color: #111827;
    font-size: 1rem;
    font-weight: 500;
    min-width: 6.5rem;
}
.cp-cad-info-total-row .cp-cad-info-total-cell {
    background-color: #f3f4f6 !important;
    border-top: 1px solid #e5e7eb;
    font-weight: 700;
    font-size: 1.0625rem;
    color: #111827;
    padding-top: 0.65rem;
    padding-bottom: 0.65rem;
}
.cp-cad-info-total-row .cp-cad-info-total-label {
    letter-spacing: 0.02em;
}
.cp-cad-info-total-row .cp-cad-info-total-val {
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.01em;
    font-size: 1.125rem;
}
#cp-drivers-form-modal .modal-dialog.modal-xl {
    max-width: 52rem;
}
.cp-cad-fila-info {
    line-height: 1;
    text-decoration: none !important;
    vertical-align: middle;
}
.cp-cad-fila-info-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 0.95rem;
    height: 0.95rem;
    border-radius: 50%;
    border: 1px solid #6c757d;
    font-size: 0.62rem;
    font-weight: 700;
    font-style: italic;
    font-family: Georgia, "Times New Roman", serif;
    line-height: 1;
    color: #6c757d;
    background: #fff;
}
.cp-cad-fila-info:hover .cp-cad-fila-info-icon,
.cp-cad-fila-info:focus .cp-cad-fila-info-icon {
    background: #6c757d;
    color: #fff;
    border-color: #6c757d;
}
.cp-cad-driver-unidad {
    display: inline-block;
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    opacity: 0.85;
    padding: 0.08rem 0.4rem;
    border-radius: 999px;
    border: 1px solid rgba(0, 0, 0, 0.1);
    line-height: 1.3;
    color: inherit;
    vertical-align: middle;
}
.cp-cad-driver-moneda-select {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    background-color: transparent;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m4 6 4 4 4-4'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: right 0.28rem center;
    background-size: 0.55rem 0.55rem;
    padding-right: 1rem;
    min-width: 3rem;
    max-width: 4.25rem;
    width: auto;
    height: auto;
    min-height: 0;
    margin: 0;
    cursor: pointer;
    box-shadow: none;
    outline: none;
}
.cp-cad-driver-moneda-select:focus {
    border-color: rgba(0, 0, 0, 0.22);
    box-shadow: none;
    outline: none;
}
.cp-cad-driver-moneda-select:disabled {
    opacity: 0.55;
    cursor: not-allowed;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-mp > td {
    background-color: var(--cp-cad-mp-bg);
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-pr > td {
    background-color: var(--cp-cad-pr-bg);
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-vt > td {
    background-color: var(--cp-cad-vt-bg);
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-in > td {
    background-color: var(--cp-cad-in-bg);
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-ratio > td {
    background-color: var(--cp-cad-ratio-bg);
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-mp > td {
    background-color: var(--cp-cad-mp-bg-total);
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-pr > td {
    background-color: var(--cp-cad-pr-bg-total);
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-vt > td {
    background-color: var(--cp-cad-vt-bg-total);
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-in > td {
    background-color: var(--cp-cad-in-bg-total);
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-ratio > td {
    background-color: var(--cp-cad-ratio-bg-total);
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-mp:not(.cp-cad-total-row):hover > td,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-mp:not(.cp-cad-total-row):hover > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-mp:not(.cp-cad-total-row):hover > td.cp-cad-driver-col {
    background-color: #fff6eb !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-pr:not(.cp-cad-total-row):hover > td,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-pr:not(.cp-cad-total-row):hover > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-pr:not(.cp-cad-total-row):hover > td.cp-cad-driver-col {
    background-color: #eef9fd !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-vt:not(.cp-cad-total-row):hover > td,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-vt:not(.cp-cad-total-row):hover > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-vt:not(.cp-cad-total-row):hover > td.cp-cad-driver-col {
    background-color: #f7eef9 !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-in:not(.cp-cad-total-row):hover > td,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-in:not(.cp-cad-total-row):hover > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-in:not(.cp-cad-total-row):hover > td.cp-cad-driver-col {
    background-color: #fef1e8 !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-ratio:not(.cp-cad-total-row):hover > td,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-ratio:not(.cp-cad-total-row):hover > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-seccion-ratio:not(.cp-cad-total-row):hover > td.cp-cad-driver-col {
    background-color: #f1f3f4 !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-mp:hover > td,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-mp:hover > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-mp:hover > td.cp-cad-driver-col {
    background-color: #fff3e0 !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-pr:hover > td,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-pr:hover > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-pr:hover > td.cp-cad-driver-col {
    background-color: #e3f5fc !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-vt:hover > td,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-vt:hover > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-vt:hover > td.cp-cad-driver-col {
    background-color: #f3e5f5 !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-in:hover > td,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-in:hover > td.cp-cad-row-num,
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row.cp-cad-seccion-in:hover > td.cp-cad-driver-col {
    background-color: #ffe8d9 !important;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-data-row:hover > td {
    background-color: #fafbfd;
}
.cp-drv-cadena-matriz .cp-cad-num-cell {
    vertical-align: middle;
}
.cp-drv-cadena-matriz .cp-cad-valor-group .form-control {
    text-align: right;
    min-width: 0;
    width: 100%;
    max-width: 100%;
    font-variant-numeric: tabular-nums;
    padding-left: 0.35rem;
    padding-right: 0.35rem;
    box-sizing: border-box;
}
.cp-drv-cadena-matriz .cp-cad-ratio-cell {
    cursor: pointer;
}
.cp-drv-cadena-matriz .cp-cad-ratio-cell:hover {
    background-color: rgba(55, 71, 79, 0.08);
}
.cp-drv-cadena-matriz .cp-cad-ratio-cell .cp-cad-readonly-val {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.cp-drv-cadena-matriz .cp-cad-readonly-val {
    display: block;
    text-align: right;
    font-variant-numeric: tabular-nums;
    padding: 0.15rem 0.35rem;
    font-size: 0.8125rem;
}
.cp-cad-seccion-header td {
    font-weight: 700;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding-top: 0.45rem;
    padding-bottom: 0.45rem;
    background: #f3f4f6 !important;
    color: #4b5563;
    border-top: 1px solid #e5e7eb;
    box-shadow: none;
}
.cp-drv-cadena-matriz tbody tr.cp-cad-total-row > td {
    font-weight: 600;
    font-size: 0.8125rem;
    border-top: 1px dashed rgba(0, 0, 0, 0.1);
    box-shadow: none !important;
}
.cp-drv-cadena-matriz thead th.cp-cad-row-num-col,
.cp-drv-cadena-matriz thead th.cp-cad-driver-col-h {
    position: sticky !important;
    top: 0 !important;
    z-index: 10 !important;
    background-color: #f6f8fc !important;
    background-image: none !important;
    opacity: 1 !important;
}
.cp-drv-cadena-matriz thead th.cp-cad-row-num-col {
    left: 0 !important;
}
.cp-drv-cadena-matriz thead th.cp-cad-driver-col-h {
    left: var(--cp-cad-row-num-width) !important;
    box-shadow: 2px 0 4px rgba(0, 0, 0, 0.06), inset 0 -1px 0 #dbe3f0;
}
/* Meses/totales debajo de # y Concepto al scrollear en horizontal. */
.cp-drv-cadena-matriz thead th.cp-cad-mes-col,
.cp-drv-cadena-matriz thead th.cp-cad-total-anual-col,
.cp-drv-cadena-matriz thead th.cp-cad-proy-col-h {
    z-index: 6;
}
.cp-drv-cadena-matriz .sticky-col.cp-cad-seccion-title {
    position: sticky;
    left: 0;
    z-index: 2;
    background-color: #f3f4f6 !important;
    opacity: 1;
}
.cp-drv-forecast-acc .accordion-button {
    font-size: 0.875rem;
    background: var(--bs-light, #f8f9fa);
}
/* No aplicar left:0 a cabeceras # / Concepto (rompia el sticky dual). */
.cp-drv-cadena-matriz .sticky-col:not(.cp-cad-row-num):not(.cp-cad-driver-col):not(.cp-cad-seccion-title):not(.cp-cad-row-num-col):not(.cp-cad-driver-col-h) {
    position: sticky;
    left: 0;
    z-index: 2;
    background-color: #fff !important;
    opacity: 1;
    box-shadow: 2px 0 4px rgba(0, 0, 0, 0.04);
}

/* Modal fases escenario (estilo panel similar a asignar gerencias) */
#cp-scenario-fases-modal .cp-scenario-fases-content {
	width: 90% !important;
	max-width: 720px;
	margin: 0 auto;
}
#cp-scenario-fases-modal .cp-scenario-fases-panel {
	border: 1px solid #dbe7f3;
	border-radius: 10px;
	background-color: #fff;
	overflow: hidden;
	box-shadow: 0 3px 12px rgba(0, 0, 0, 0.05);
}
#cp-scenario-fases-modal .cp-scenario-fases-panel-title {
	background: linear-gradient(90deg, #eaf5ff 0%, #f3f9ff 100%);
	border-bottom: 1px solid #d6e6f7;
	padding: 0.6rem 0.85rem;
	font-weight: 600;
	color: #1f2a37;
	font-size: 0.88rem;
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.35rem;
}
#cp-scenario-fases-modal .cp-scenario-fases-panel-body {
	padding: 0.85rem;
	background: #fafbfd;
}
#cp-scenario-fases-modal .cp-scenario-fases-list {
	max-height: 320px;
	overflow: auto;
	padding: 0.35rem 0.5rem;
	background: #fafbfd;
}
#cp-scenario-fases-modal .cp-scenario-fases-empty {
	padding: 1rem 0.75rem;
	font-size: 0.9rem;
}
#cp-scenario-fases-modal .cp-scenario-fase-item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	padding: 0.65rem 0.5rem;
	border-bottom: 1px solid #e8eef5;
	border-radius: 6px;
}
#cp-scenario-fases-modal .cp-scenario-fase-item:last-child {
	border-bottom: none;
}
#cp-scenario-fase-edit-modal .cp-scenario-fase-edit-content {
	max-width: 480px;
	margin: 0 auto;
}
#cp-scenario-fase-edit-modal .cp-fase-edit-banner {
	background: #e7f1ff;
	border: 1px solid #9ec5fe;
	border-radius: 8px;
	padding: 0.55rem 0.75rem;
	font-size: 0.86rem;
	color: #1f2a37;
	line-height: 1.35;
}
#cp-scenario-fases-modal .cp-scenario-fase-item.is-selected {
	background-color: #e8f1ff;
	border: 1px solid #9ec5fe;
	box-shadow: inset 3px 0 0 #0d6efd;
}
#cp-scenario-fases-modal .cp-fase-edit-banner {
	background: #e7f1ff;
	border: 1px solid #9ec5fe;
	border-radius: 8px;
	padding: 0.55rem 0.75rem;
	margin-bottom: 0.75rem;
	font-size: 0.86rem;
	color: #1f2a37;
	line-height: 1.35;
}
#cp-scenario-fases-modal .cp-scenario-fases-panel.is-editing {
	border-color: #9ec5fe;
	box-shadow: 0 0 0 2px rgba(13, 110, 253, 0.12);
}
#cp-scenario-fases-modal .cp-scenario-fases-panel.is-editing .cp-scenario-fases-panel-title {
	background: linear-gradient(90deg, #dcecff 0%, #eef5ff 100%);
	color: #0b3d91;
}
#cp-scenario-fases-modal .cp-scenario-fase-name {
	font-weight: 600;
	color: #1f2a37;
	font-size: 0.92rem;
}
#cp-scenario-fases-modal .cp-scenario-fase-meta {
	margin-top: 0.15rem;
}
#cp-scenario-fases-modal .cp-scenario-fase-actions {
	flex-shrink: 0;
	white-space: nowrap;
}
#cp-scenario-fases-modal .cp-scenario-fase-actions .btn,
#cp-scenario-fases-modal .cp-fase-action-btn {
	margin-left: 0.15rem;
	color: #000 !important;
}
#cp-scenario-fases-modal .cp-scenario-fase-actions .btn:hover,
#cp-scenario-fases-modal .cp-fase-action-btn:hover,
#cp-scenario-fases-modal .cp-scenario-fase-actions .btn:focus,
#cp-scenario-fases-modal .cp-fase-action-btn:focus {
	color: #fff !important;
}

/* ===== Matriz pantalla completa (Ingreso / Drivers) ===== */
html.lp-matrix-fs-open,
body.lp-matrix-fs-open {
	overflow: hidden !important;
}
.lp-matrix-fs-placeholder {
	box-sizing: border-box;
	border: 1px dashed #d7deea;
	border-radius: 12px;
	background: repeating-linear-gradient(
		-45deg,
		#f8fafc,
		#f8fafc 8px,
		#f1f5f9 8px,
		#f1f5f9 16px
	);
	opacity: 0.85;
}
.lp-matrix-fs-root {
	position: fixed;
	inset: 0;
	z-index: 1200;
	display: flex;
	align-items: stretch;
	justify-content: stretch;
	padding: 12px;
	box-sizing: border-box;
}
.lp-matrix-fs-backdrop {
	position: absolute;
	inset: 0;
	background: rgba(15, 23, 42, 0.45);
}
.lp-matrix-fs-panel {
	position: relative;
	z-index: 1;
	flex: 1;
	min-height: 0;
	display: flex;
	flex-direction: column;
	background: #fff;
	border-radius: 16px;
	box-shadow: 0 18px 48px rgba(15, 23, 42, 0.28);
	overflow: hidden;
}
.lp-matrix-fs-body {
	flex: 1 1 auto;
	min-height: 0;
	display: flex;
	padding: 12px 12px 8px;
	box-sizing: border-box;
	overflow: hidden;
}
.lp-matrix-fs-body .cp-ip-grid-shell,
.lp-matrix-fs-body .cp-matrix-grid-shell,
.lp-matrix-fs-body .cp-drv-cad-grid-shell {
	flex: 1 1 auto;
	width: 100%;
	height: 100%;
	max-height: none;
	align-items: stretch;
	min-height: 0;
}
.lp-matrix-fs-body .lp-matrix-shell,
.lp-matrix-fs-body .cp-ip-grid-scroll,
.lp-matrix-fs-body .cp-drv-cadena-matriz-scroll {
	flex: 1 1 auto;
	width: 100%;
	height: 100% !important;
	max-height: none !important;
	min-height: 0;
}
.lp-matrix-fs-toolbar {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 10px 14px;
	border-top: 1px solid #e5eaf1;
	background: rgba(255, 255, 255, 0.98);
	box-shadow: 0 -8px 20px rgba(16, 24, 40, 0.06);
}
.lp-matrix-fs-toolbar__main {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	align-items: center;
}
.lp-matrix-fs-toolbar__main .lp-sticky-actions,
.lp-matrix-fs-toolbar__main .cp-ip-actions-bar,
.lp-matrix-fs-toolbar__main .cp-drv-cadena-toolbar {
	margin: 0;
	width: 100%;
	position: static;
	box-shadow: none;
	border: 0;
	background: transparent;
	padding: 0;
	backdrop-filter: none;
}
.lp-matrix-fs-exit {
	flex: 0 0 auto;
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	white-space: nowrap;
}
.cp-ip-grid-nav-btn.is-active,
.cp-ip-grid-nav-btn[aria-pressed="true"] {
	background: #e8f0ff;
	color: #155eef;
	border-color: #b8d0ff;
}
.lp-app #cp-drv-cad-grid-wrap .cp-drv-cad-grid-shell {
	display: flex;
	align-items: center;
	gap: 0.55rem;
	width: 100%;
	max-width: 100%;
	box-sizing: border-box;
}
.lp-app #cp-drv-cad-grid-wrap .cp-drv-cadena-matriz-scroll {
	flex: 1 1 auto;
	min-width: 0;
}
.lp-app #cp-drv-cad-grid-wrap .cp-matrix-grid-nav {
	flex: 0 0 auto;
	align-self: center;
}

/* Fullscreen Drivers: Concepto al doble de ancho para leer etiquetas completas */
#lp-matrix-fs-root .cp-drv-cadena-matriz,
.lp-matrix-fs-body .cp-drv-cadena-matriz {
	--cp-cad-driver-col-width: 24rem;
}
#lp-matrix-fs-root .cp-drv-cadena-matriz .cp-cad-driver-col-h,
#lp-matrix-fs-root .cp-drv-cadena-matriz .cp-cad-driver-col,
.lp-matrix-fs-body .cp-drv-cadena-matriz .cp-cad-driver-col-h,
.lp-matrix-fs-body .cp-drv-cadena-matriz .cp-cad-driver-col {
	width: 24rem !important;
	min-width: 24rem !important;
	max-width: 24rem !important;
}
#lp-matrix-fs-root .lp-matrix.lp-matrix--drivers th.cp-cad-driver-col-h.lp-matrix__sticky,
#lp-matrix-fs-root .lp-matrix.lp-matrix--drivers td.cp-cad-driver-col.lp-matrix__sticky,
.lp-matrix-fs-body .lp-matrix.lp-matrix--drivers th.cp-cad-driver-col-h.lp-matrix__sticky,
.lp-matrix-fs-body .lp-matrix.lp-matrix--drivers td.cp-cad-driver-col.lp-matrix__sticky {
	min-width: 24rem !important;
	width: 24rem !important;
	max-width: 24rem !important;
}
#lp-matrix-fs-root .cp-drv-cadena-matriz .cp-cad-driver-col,
.lp-matrix-fs-body .cp-drv-cadena-matriz .cp-cad-driver-col {
	overflow: visible;
	white-space: normal;
	word-break: break-word;
	line-height: 1.35;
}
#lp-matrix-fs-root .cp-drv-cadena-matriz .cp-cad-driver-name,
#lp-matrix-fs-root .cp-drv-cadena-matriz .cp-cad-driver-label,
.lp-matrix-fs-body .cp-drv-cadena-matriz .cp-cad-driver-name,
.lp-matrix-fs-body .cp-drv-cadena-matriz .cp-cad-driver-label {
	white-space: normal !important;
	overflow: visible !important;
	text-overflow: clip !important;
	word-break: break-word;
	max-width: none !important;
}


/* Modal item driver — UX guiada */
.cp-drv-item-form { display: flex; flex-direction: column; gap: 1rem; }
.cp-drv-item-section {
	border: 1px solid rgba(15, 23, 42, 0.08);
	border-radius: 12px;
	padding: 0.9rem 1rem 1rem;
	background: #fafbfc;
}
.cp-drv-item-section__title {
	font-size: 0.95rem;
	font-weight: 650;
	margin: 0 0 0.25rem;
	color: #0f172a;
}
.cp-drv-item-section__hint {
	font-size: 0.82rem;
	color: #64748b;
	margin: 0 0 0.75rem;
	line-height: 1.4;
}
.cp-drv-item-preview__card {
	border-radius: 12px;
	padding: 0.85rem 1rem;
	background: linear-gradient(135deg, #eef6ff 0%, #f8fafc 70%);
	border: 1px solid #cfe0f5;
}
.cp-drv-item-preview__card.is-hijo {
	background: linear-gradient(135deg, #f3faf4 0%, #f8fafc 70%);
	border-color: #c9e6d0;
}
.cp-drv-item-preview__kicker {
	display: block;
	font-size: 0.7rem;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: #64748b;
	margin-bottom: 0.35rem;
}
.cp-drv-item-preview__tree {
	display: flex;
	flex-direction: column;
	gap: 0.2rem;
	margin-bottom: 0.4rem;
}
.cp-drv-item-preview__node.is-parent { font-weight: 650; color: #0f172a; }
.cp-drv-item-preview__node.is-child,
.cp-drv-item-preview__kids { color: #334155; font-size: 0.92rem; }
.cp-drv-item-role-cards {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 0.65rem;
}
@media (max-width: 560px) {
	.cp-drv-item-role-cards { grid-template-columns: 1fr; }
}
.cp-drv-item-role-card {
	text-align: left;
	border: 1.5px solid #dbe3ee;
	border-radius: 12px;
	background: #fff;
	padding: 0.75rem 0.85rem;
	cursor: pointer;
	transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.12s ease;
}
.cp-drv-item-role-card:hover {
	border-color: #94a3b8;
	transform: translateY(-1px);
}
.cp-drv-item-role-card.is-active {
	border-color: #2563eb;
	box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.15);
	background: #f8fbff;
}
.cp-drv-item-role-card__badge {
	display: inline-block;
	font-size: 0.68rem;
	font-weight: 650;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	color: #2563eb;
	margin-bottom: 0.2rem;
}
.cp-drv-item-role-card__title {
	display: block;
	font-weight: 650;
	color: #0f172a;
	margin-bottom: 0.2rem;
}
.cp-drv-item-role-card__desc {
	display: block;
	font-size: 0.78rem;
	color: #64748b;
	line-height: 1.35;
}
.cp-drv-item-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.4rem;
}
.cp-drv-item-chip {
	border: 1px solid #d0d7e2;
	background: #fff;
	border-radius: 999px;
	padding: 0.28rem 0.7rem;
	font-size: 0.8rem;
	color: #334155;
	cursor: pointer;
}
.cp-drv-item-chip:hover { border-color: #94a3b8; }
.cp-drv-item-chip.is-active {
	background: #2563eb;
	border-color: #2563eb;
	color: #fff;
}
.cp-drv-item-advanced {
	border: 1px dashed #cbd5e1;
	border-radius: 10px;
	padding: 0.55rem 0.85rem;
	background: #fff;
}
.cp-drv-item-advanced > summary {
	cursor: pointer;
	font-weight: 600;
	font-size: 0.88rem;
	color: #475569;
	list-style: none;
}
.cp-drv-item-advanced > summary::-webkit-details-marker { display: none; }
.cp-drv-item-advanced__body { margin-top: 0.75rem; }
