/* CBA 008A3 - overrides cargados después de CSS isolation */

/* ==========================================================================
	 TOKENS DE GEOMETRÍA GLOBAL CBA
	 PageHeader / Toolbar / Search / filtros comparten estas medidas.
	 ========================================================================== */
:root {
	--cba-section-gap: 12px;
	--cba-compact-control-height: 36px;
	--cba-search-width: 220px;
	--cba-year-width: 100px;
	--cba-sticky-top: 92px;
}



/* --------------------------------------------------------------------------
	 Montserrat: MudDataGrid/MudTable aplica estilos propios a sus celdas.
	 Forzamos la familia en el último stylesheet para que el grid use la misma UI.
	 -------------------------------------------------------------------------- */
.mud-table,
.mud-table-root,
.mud-table-container,
.mud-table-head,
.mud-table-body,
.mud-table-row,
.mud-table-cell,
.mud-table-cell *,
.cba-grid,
.cba-grid *,
.cba-users-grid,
.cba-users-grid * {
	font-family:
		"Montserrat",
		"Segoe UI Variable",
		"Segoe UI",
		Arial,
		sans-serif !important;
}

/* Títulos presupuestarios: toda la fila, incluido contenido interno. */
.cba-partidas-grid .mud-table-row.cba-partidas-title-row .mud-table-cell,
.cba-partidas-grid .mud-table-row.cba-partidas-title-row .mud-table-cell * {
	font-weight: 400 !important;
	font-style: normal !important;
}

/* --------------------------------------------------------------------------
	 Paleta unificada para TODOS los dialogs CBA.
	 -------------------------------------------------------------------------- */
.cba-user-dialog {
	--cba-dialog-accent: var(--dialog-accent, #4f8dff);
}

.cba-exception-dialog {
	--cba-dialog-accent: #9474e8;
}

.cba-audit-dialog {
	--cba-dialog-accent: #a78bfa;
}

.cba-reset-dialog {
	--cba-dialog-accent: #ff8a65;
}

.cba-presupuesto-dialog,
.cba-partida-dialog {
	--cba-dialog-accent: var(--dialog-accent, #54b8ff);
}

.cba-borrador-dialog {
	--cba-dialog-accent: #f4c95d;
}

.cba-presupuesto-pdf-dialog {
	--cba-dialog-accent: #69c5e8;
}

.cba-confirm-dialog {
	--cba-dialog-accent: var(--confirm-accent, #ff667d);
}

.cba-status-dialog {
	--cba-dialog-accent: var(--dialog-accent, #62bdf6);
}

:is(
	.cba-user-dialog,
	.cba-exception-dialog,
	.cba-audit-dialog,
	.cba-reset-dialog,
	.cba-presupuesto-dialog,
	.cba-partida-dialog,
	.cba-borrador-dialog,
	.cba-presupuesto-pdf-dialog
) {
	border-color: color-mix(in srgb, var(--cba-dialog-accent) 18%, var(--mud-palette-divider)) !important;
	background:
		linear-gradient(
			145deg,
			color-mix(in srgb, var(--cba-dialog-accent) 5%, var(--mud-palette-surface)),
			var(--mud-palette-surface) 62%,
			color-mix(in srgb, var(--mud-palette-background) 94%, var(--mud-palette-surface))
		) !important;
}

:is(
	.cba-user-dialog-header,
	.cba-exception-dialog-header,
	.cba-audit-dialog-header,
	.cba-reset-dialog-header,
	.cba-presupuesto-dialog-header,
	.cba-partida-dialog-header,
	.cba-borrador-header,
	.cba-presupuesto-pdf-header
) {
	background:
		linear-gradient(
			90deg,
			color-mix(in srgb, var(--cba-dialog-accent) 25%, var(--mud-palette-surface)),
			color-mix(in srgb, var(--cba-dialog-accent) 8%, var(--mud-palette-surface)) 72%,
			var(--mud-palette-surface)
		) !important;
	box-shadow: inset 4px 0 0 var(--cba-dialog-accent) !important;
}

:is(
	.cba-user-dialog-header,
	.cba-exception-dialog-header,
	.cba-audit-dialog-header,
	.cba-reset-dialog-header,
	.cba-presupuesto-dialog-header,
	.cba-partida-dialog-header,
	.cba-borrador-header,
	.cba-presupuesto-pdf-header
) .mud-typography {
	color: color-mix(in srgb, var(--cba-dialog-accent) 28%, var(--mud-palette-text-primary)) !important;
}

:is(
	.cba-user-dialog-actions,
	.cba-exception-dialog-actions,
	.cba-audit-dialog-actions,
	.cba-reset-dialog-actions,
	.cba-presupuesto-dialog-actions,
	.cba-partida-dialog-actions,
	.cba-borrador-actions,
	.cba-presupuesto-pdf-actions
) {
	background: color-mix(in srgb, var(--cba-dialog-accent) 4%, var(--mud-palette-surface)) !important;
	border-top-color: color-mix(in srgb, var(--cba-dialog-accent) 14%, var(--mud-palette-divider)) !important;
}

:is(
	.cba-user-dialog-actions,
	.cba-exception-dialog-actions,
	.cba-audit-dialog-actions,
	.cba-reset-dialog-actions,
	.cba-presupuesto-dialog-actions,
	.cba-partida-dialog-actions,
	.cba-borrador-actions,
	.cba-presupuesto-pdf-actions,
	.cba-confirm-actions
) .mud-button-root,
.cba-status-dialog .mud-button-root {
	min-width: 104px;
	border: 1px solid color-mix(in srgb, var(--cba-dialog-accent) 38%, transparent) !important;
	color: color-mix(in srgb, var(--cba-dialog-accent) 72%, var(--mud-palette-text-primary)) !important;
	background: color-mix(in srgb, var(--cba-dialog-accent) 10%, var(--mud-palette-surface)) !important;
	transition:
		background .14s ease,
		border-color .14s ease,
		box-shadow .14s ease,
		transform .08s ease !important;
}

:is(
	.cba-user-dialog-actions,
	.cba-exception-dialog-actions,
	.cba-audit-dialog-actions,
	.cba-reset-dialog-actions,
	.cba-presupuesto-dialog-actions,
	.cba-partida-dialog-actions,
	.cba-borrador-actions,
	.cba-presupuesto-pdf-actions,
	.cba-confirm-actions
) .mud-button-root:first-child,
.cba-status-dialog .mud-button-root {
	background: color-mix(in srgb, var(--cba-dialog-accent) 24%, var(--mud-palette-surface)) !important;
}

:is(
	.cba-user-dialog-actions,
	.cba-exception-dialog-actions,
	.cba-audit-dialog-actions,
	.cba-reset-dialog-actions,
	.cba-presupuesto-dialog-actions,
	.cba-partida-dialog-actions,
	.cba-borrador-actions,
	.cba-presupuesto-pdf-actions,
	.cba-confirm-actions
) .mud-button-root:hover,
.cba-status-dialog .mud-button-root:hover,
:is(
	.cba-user-dialog-actions,
	.cba-exception-dialog-actions,
	.cba-audit-dialog-actions,
	.cba-reset-dialog-actions,
	.cba-presupuesto-dialog-actions,
	.cba-partida-dialog-actions,
	.cba-borrador-actions,
	.cba-presupuesto-pdf-actions,
	.cba-confirm-actions
) .mud-button-root:focus-visible,
.cba-status-dialog .mud-button-root:focus-visible {
	background: color-mix(in srgb, var(--cba-dialog-accent) 40%, var(--mud-palette-surface)) !important;
	border-color: color-mix(in srgb, var(--cba-dialog-accent) 74%, transparent) !important;
	box-shadow: 0 7px 18px color-mix(in srgb, var(--cba-dialog-accent) 18%, transparent) !important;
}

:is(
	.cba-user-dialog-actions,
	.cba-exception-dialog-actions,
	.cba-audit-dialog-actions,
	.cba-reset-dialog-actions,
	.cba-presupuesto-dialog-actions,
	.cba-partida-dialog-actions,
	.cba-borrador-actions,
	.cba-presupuesto-pdf-actions,
	.cba-confirm-actions
) .mud-button-root:active,
.cba-status-dialog .mud-button-root:active {
	background: color-mix(in srgb, var(--cba-dialog-accent) 56%, var(--mud-palette-surface)) !important;
	transform: translateY(1px);
}

/* --------------------------------------------------------------------------
	 CBA 008A4 - comportamiento visual común
	 -------------------------------------------------------------------------- */




/* Montserrat ocupa más ancho: compactamos levemente todos los grids. */
.cba-grid .mud-table-head .mud-table-cell,
.cba-users-grid .mud-table-head .mud-table-cell {
	font-size: 10.7px !important;
}

.cba-grid .mud-table-body .mud-table-cell,
.cba-users-grid .mud-table-body .mud-table-cell {
	font-size: 11px !important;
	line-height: 1.22 !important;
}

.cba-readonly-badge {
	align-self: center;
	font-size: 10px !important;
	font-weight: 800 !important;
	letter-spacing: .06em;
}

/* Los calendarios se muestran como Dialog y nunca pueden exceder el viewport. */
.mud-dialog .mud-picker-container,
.mud-dialog .mud-picker-content {
	max-width: min(96vw, 420px) !important;
	max-height: min(88vh, 640px) !important;
}


/*
 * Dialogs de presupuesto/movimientos: geometría global compartida.
 * El CSS aislado de PresupuestoEditorDialog no alcanza a los dialogs hermanos.
 */
.cba-presupuesto-dialog {
	width: 100% !important;
	min-width: 0 !important;
	overflow: hidden !important;
}

.cba-presupuesto-dialog-header {
	position: relative !important;
	display: block !important;
	box-sizing: border-box !important;
	min-height: 72px !important;
	padding: 14px 58px 12px 26px !important;
	box-shadow: inset 5px 0 0 var(--dialog-accent, #54B8FF) !important;
}

.cba-presupuesto-dialog-header > div:first-child {
	min-width: 0 !important;
	padding-left: 2px !important;
}

.cba-presupuesto-dialog-header > .mud-icon-button,
.cba-presupuesto-dialog-header > button.mud-icon-button {
	position: absolute !important;
	top: 8px !important;
	right: 10px !important;
	left: auto !important;
	bottom: auto !important;
	margin: 0 !important;
	z-index: 3 !important;
}

.cba-presupuesto-dialog-body {
	box-sizing: border-box !important;
	padding-left: 18px !important;
	padding-right: 18px !important;
}

.cba-presupuesto-dialog-actions {
	box-sizing: border-box !important;
	padding-left: 18px !important;
	padding-right: 18px !important;
}


/* ==========================================================================
	 CBA 008A5d - reglas globales estabilizadas
	 ========================================================================== */

/* Todos los cards acentuados usan la misma banda interior estilo PDF. */
.cba-accent-card {
	position: relative !important;
	overflow: hidden !important;
}

.cba-accent-card::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 5px;
	border-radius: 0;
	background: var(--cba-card-accent, #54B8FF);
	pointer-events: none;
}

/* El PageHeader común es la única fuente de geometría para todos los módulos. */
.cba-page-title-card,
.cba-page-title-card.actions-vertical,
.cba-page-title-actions,
.cba-page-title-actions.vertical {
	box-sizing: border-box;
}

/* ActionBar común: sin sombras artificiales ni offsets por página. */
.cba-actionbar {
	box-shadow: none !important;
}

/* Dialog de selección: la cabecera puede crecer para alojar búsqueda fija. */
.cba-presupuesto-dialog-header.cba-mov-picker-header {
	min-height: 112px !important;
}

/* Los dialogs conservan aire entre contenido y acciones. */
.cba-presupuesto-dialog-body {
	padding-top: 12px !important;
	padding-bottom: 10px !important;
}

.cba-presupuesto-dialog-actions {
	padding-top: 10px !important;
	padding-bottom: 10px !important;
}


/* Los cards de comandos/grilla comparten una única geometría.
 * No hay offsets ni wrappers visuales por página. */
.cba-command-grid-card {
	box-sizing: border-box !important;
	display: flex !important;
	flex-direction: column !important;
	gap: 12px !important;
	width: 100% !important;
	min-width: 0 !important;
	margin: 0 !important;
	padding: 0 0 12px !important;
	overflow: visible !important;
}

/* ActionBar común: ocupa su ancho natural, nunca se comprime ni se recorta. */
.cba-actionbar {
	flex: 0 0 auto !important;
	width: max-content;
	max-width: 100% !important;
	box-shadow: none !important;
}

/* ==========================================================================
	 CBA 008A6 - fondo global sutil + superficies translúcidas
	 ========================================================================== */
:root {
	--cba-page-glow-primary: rgba(58, 132, 246, .10);
	--cba-page-glow-secondary: rgba(40, 208, 184, .065);
	--cba-surface-card-alpha: .93;
	--cba-surface-grid-alpha: .945;
	--cba-surface-toolbar-alpha: .94;
	--cba-glass-blur: 9px;
}

.cba-theme-dark body,
body.cba-theme-dark {
	background:
		radial-gradient(circle at 18% 9%, var(--cba-page-glow-primary), transparent 34rem),
		radial-gradient(circle at 84% 72%, var(--cba-page-glow-secondary), transparent 38rem),
		linear-gradient(145deg, #0b1018 0%, #0d1520 46%, #0a1119 100%) fixed !important;
}

.cba-theme-dark .mud-layout,
.cba-theme-dark .mud-main-content,
.cba-theme-dark .cba-main {
	background: transparent !important;
}

.cba-theme-dark .cba-card {
	background:
		linear-gradient(
			145deg,
			rgba(22, 31, 44, var(--cba-surface-card-alpha)),
			rgba(15, 23, 34, var(--cba-surface-card-alpha))
		) !important;
	backdrop-filter: blur(var(--cba-glass-blur));
}

.cba-theme-dark .cba-toolbar-strip {
	background: rgba(15, 23, 34, var(--cba-surface-toolbar-alpha)) !important;
	backdrop-filter: blur(var(--cba-glass-blur));
}

.cba-theme-dark .cba-grid .mud-table-root,
.cba-theme-dark .cba-users-grid .mud-table-root,
.cba-theme-dark .cba-grid .mud-table-container,
.cba-theme-dark .cba-users-grid .mud-table-container {
	background: rgba(16, 24, 36, var(--cba-surface-grid-alpha)) !important;
	backdrop-filter: blur(7px);
}

.cba-theme-dark .cba-grid .mud-table-body .mud-table-row,
.cba-theme-dark .cba-users-grid .mud-table-body .mud-table-row {
	background: rgba(16, 24, 36, .74);
}

.cba-theme-dark .cba-grid .mud-table-body .mud-table-row:nth-child(even),
.cba-theme-dark .cba-users-grid .mud-table-body .mud-table-row:nth-child(even):nth-child(even) {
	background: rgba(20, 30, 44, .77);
}

.cba-theme-dark .cba-grid .mud-table-head,
.cba-theme-dark .cba-users-grid .mud-table-head {
	background:
		linear-gradient(
			180deg,
			rgba(38, 55, 76, .97),
			rgba(24, 36, 52, .97)
		) !important;
}

/* ==========================================================================
	 CBA 008A6 - Datos Generales / helpers fijos
	 ========================================================================== */
.cba-general-dialog-body {
	padding-top: 16px !important;
	padding-bottom: 16px !important;
}

.cba-general-picker {
	display: flex;
	flex-direction: column;
	width: min(94vw, 980px) !important;
	height: min(84vh, 760px) !important;
	min-height: 520px;
	overflow: hidden !important;
}

.cba-general-picker-header {
	flex: 0 0 auto;
	display: grid !important;
	grid-template-columns: minmax(220px, 1fr) minmax(260px, 360px) 42px;
	align-items: center;
	gap: 18px;
	min-height: 104px !important;
	padding-top: 14px !important;
	padding-bottom: 14px !important;
}

.cba-general-picker-heading {
	min-width: 0;
}

.cba-general-picker-body {
	flex: 1 1 auto;
	min-height: 0;
	overflow: hidden !important;
	padding-top: 12px !important;
	padding-bottom: 12px !important;
}

.cba-general-picker-grid {
	height: 100%;
	min-height: 0;
	overflow: auto;
	padding-top: 6px;
	padding-bottom: 6px;
	overscroll-behavior: contain;
	scrollbar-gutter: stable;
}

.cba-general-picker-grid .mud-table-container {
	max-height: none !important;
}

.cba-general-picker-actions {
	flex: 0 0 auto;
	display: flex;
	align-items: center;
	gap: 10px;
	padding-top: 10px !important;
	padding-bottom: 10px !important;
}

.cba-general-picker-field {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 44px;
	align-items: center;
	gap: 6px;
}

.cba-persona-roles {
	display: flex;
	align-items: center;
	gap: 20px;
	flex-wrap: wrap;
	padding: 2px 2px 0;
}

.cba-persona-role-badges {
	display: flex;
	gap: 5px;
	flex-wrap: wrap;
}

.cba-mini-badge {
	display: inline-flex;
	align-items: center;
	min-height: 21px;
	padding: 2px 7px;
	border-radius: 999px;
	font-size: 8.7px;
	font-weight: 800;
	letter-spacing: .035em;
	color: #a8e5ff;
	background: rgba(84, 184, 255, .11);
	border: 1px solid rgba(84, 184, 255, .23);
}

.cba-mini-badge.alt {
	color: #b7f1d6;
	background: rgba(54, 211, 153, .10);
	border-color: rgba(54, 211, 153, .23);
}

.cba-mini-badge.warm {
	color: #ffe2a3;
	background: rgba(244, 201, 93, .10);
	border-color: rgba(244, 201, 93, .22);
}

@media (max-width: 760px) {
	.cba-general-picker-header {
		grid-template-columns: minmax(0, 1fr) 42px;
		min-height: 148px !important;
	}

	.cba-general-picker-header .cba-compact-search {
		grid-column: 1 / -1;
		grid-row: 2;
		width: 100% !important;
		max-width: none !important;
	}
}

/* ============================================================================
	 CBA 008A6 · Recibos / documento con tabs
	 ============================================================================ */

.cba-rec-header-card {
	padding: 14px 16px;
}

.cba-rec-header-fields {
	display: grid;
	grid-template-columns: minmax(170px, .55fr) minmax(190px, .65fr) minmax(320px, 1.6fr) minmax(360px, 2fr);
	gap: 12px;
	align-items: end;
}

.cba-rec-person-field {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 42px;
	gap: 6px;
	align-items: center;
	min-width: 0;
}

.cba-rec-person-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 10px 22px;
	padding: 8px 4px 0;
	font-size: .76rem;
	color: rgba(218, 228, 241, .68);
}

.cba-rec-person-meta strong {
	color: rgba(242, 247, 253, .92);
	font-weight: 650;
}

.cba-rec-summary-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: var(--cba-section-gap, 12px);
}

.cba-rec-summary-card,
.cba-rec-mini-card {
	position: relative;
	overflow: hidden;
	border: 1px solid rgba(132, 151, 178, .25);
	border-radius: 13px;
	background: rgba(18, 30, 47, var(--cba-surface-card-alpha, .93));
	box-shadow: 0 8px 22px rgba(0, 0, 0, .12);
}

.cba-rec-summary-card::before,
.cba-rec-mini-card::before {
	content: "";
	position: absolute;
	left: 8px;
	top: 9px;
	bottom: 9px;
	width: 4px;
	border-radius: 999px;
	background: var(--accent, #54B8FF);
}

.cba-rec-summary-card {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-rows: auto auto;
	gap: 2px 12px;
	align-items: center;
	min-height: 78px;
	padding: 12px 18px 12px 26px;
}

.cba-rec-summary-card > span {
	grid-column: 1;
	font-size: .70rem;
	font-weight: 750;
	letter-spacing: .055em;
	text-transform: uppercase;
	color: rgba(211, 222, 237, .68);
}

.cba-rec-summary-card > strong {
	grid-column: 1;
	font-size: 1.08rem;
	font-weight: 760;
	color: rgba(248, 251, 255, .96);
}

.cba-rec-summary-card > .mud-icon-root {
	grid-column: 2;
	grid-row: 1 / span 2;
	color: var(--accent, #54B8FF);
	opacity: .92;
}

.cba-rec-summary-card.difference.ok {
	--accent: #36D399;
	background: rgba(23, 63, 53, .80);
}

.cba-rec-summary-card.difference.warning {
	--accent: #FF667D;
	background: rgba(73, 31, 42, .82);
}

.cba-rec-tab-card {
	padding: 0;
	overflow: hidden;
}

.cba-rec-tab-card > .cba-toolbar-strip {
	border-radius: 0;
	border-left: 0;
	border-right: 0;
	border-top: 0;
}

.cba-rec-detail-grid {
	min-height: 350px;
	max-height: calc(100vh - 470px);
}

.cba-rec-regularization-note,
.cba-rec-general-error {
	margin: 0;
}

.cba-rec-mode-badge,
.cba-rec-status {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	white-space: nowrap;
	border: 1px solid currentColor;
	border-radius: 999px;
	font-size: .66rem;
	font-weight: 800;
	letter-spacing: .045em;
	line-height: 1;
	text-transform: uppercase;
}

.cba-rec-mode-badge {
	padding: 5px 10px;
}

.cba-rec-status {
	padding: 4px 8px;
}

.cba-rec-mode-badge.new,
.cba-rec-status.new {
	color: #68D7C8;
	background: rgba(104, 215, 200, .09);
}

.cba-rec-mode-badge.edit,
.cba-rec-status.ok {
	color: #74C7FF;
	background: rgba(84, 184, 255, .09);
}

.cba-rec-mode-badge.warning,
.cba-rec-status.warning {
	color: #F4C95D;
	background: rgba(244, 201, 93, .10);
}

.cba-rec-mode-badge.readonly,
.cba-rec-status.blocked {
	color: #B8A6FF;
	background: rgba(184, 166, 255, .09);
}

.cba-rec-status.anul {
	color: #FF7A8D;
	background: rgba(255, 102, 125, .09);
}

.cba-row-warning td {
	background: rgba(244, 201, 93, .055) !important;
}

.cba-row-anulado td {
	color: rgba(220, 226, 235, .46) !important;
	text-decoration: line-through;
}

.cba-rec-line-dialog-body {
	display: grid;
	gap: 12px;
	padding-top: 16px !important;
	padding-bottom: 16px !important;
}

.cba-rec-teso-dialog-body {
	padding-top: 16px !important;
	padding-bottom: 16px !important;
}

.cba-rec-line-dialog-actions {
	padding-top: 10px !important;
}

.cba-rec-mini-cards {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 8px;
}

.cba-rec-mini-card {
	display: grid;
	gap: 3px;
	min-height: 62px;
	padding: 10px 12px 10px 22px;
}

.cba-rec-mini-card > span {
	font-size: .64rem;
	font-weight: 740;
	letter-spacing: .04em;
	text-transform: uppercase;
	color: rgba(211, 222, 237, .64);
}

.cba-rec-mini-card > strong {
	font-size: .88rem;
	color: rgba(247, 250, 255, .95);
}

@media (max-width: 1180px) {
	.cba-rec-header-fields {
		grid-template-columns: minmax(160px, .6fr) minmax(190px, .7fr) minmax(320px, 1.7fr);
	}

	.cba-rec-header-fields > :last-child {
		grid-column: 1 / -1;
	}
}

@media (max-width: 760px) {
	.cba-rec-header-fields,
	.cba-rec-summary-grid,
	.cba-rec-mini-cards {
		grid-template-columns: 1fr;
	}

	.cba-rec-header-fields > :last-child {
		grid-column: auto;
	}

	.cba-rec-detail-grid {
		max-height: none;
	}
}

/* ==========================================================================
	 CBA 008A6c - cards acentuados, dialogs y helpers normalizados globalmente
	 ========================================================================== */

/* La banda de todos los cards nace exactamente en el borde izquierdo.
 * El overflow del card la recorta con el mismo radio exterior (estilo PDF). */
.cba-accent-card::before,
.cba-rec-summary-card::before,
.cba-rec-mini-card::before {
	left: 0 !important;
	top: 0 !important;
	bottom: 0 !important;
	width: 5px !important;
	border-radius: 0 !important;
	background: var(--cba-card-accent, var(--accent, #54B8FF)) !important;
}

.cba-rec-summary-card.difference.ok {
	--cba-card-accent: #36D399;
}

.cba-rec-summary-card.difference.warning {
	--cba-card-accent: #FF667D;
}

/* El layout de dialog deja cabecera y acciones siempre visibles.
 * Sólo el cuerpo central puede hacer scroll. */
.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog {
	box-sizing: border-box !important;
	width: 100% !important;
	min-width: 0 !important;
	min-height: 0 !important;
	max-height: calc(100dvh - 24px) !important;
	display: flex !important;
	flex-direction: column !important;
	overflow: hidden !important;
	border: 1px solid rgba(255,255,255,.07) !important;
	border-radius: 18px !important;
	background: linear-gradient(145deg,#121d30,#0b1220 62%,#080d17) !important;
	box-shadow: 0 34px 90px rgba(0,0,0,.52) !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header {
	box-sizing: border-box !important;
	flex: 0 0 auto !important;
	min-height: 72px !important;
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
	gap: 14px !important;
	padding: 14px 20px !important;
	background: linear-gradient(90deg,
		color-mix(in srgb,var(--dialog-accent) 22%,#101827),
		color-mix(in srgb,var(--dialog-accent) 5%,#101827)) !important;
	box-shadow: inset 4px 0 0 var(--dialog-accent) !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-body {
	box-sizing: border-box !important;
	flex: 1 1 auto !important;
	min-height: 0 !important;
	overflow-y: auto !important;
	overflow-x: hidden !important;
	padding: 17px 20px !important;
	overscroll-behavior: contain;
	scrollbar-gutter: stable;
}

.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-actions {
	box-sizing: border-box !important;
	flex: 0 0 auto !important;
	display: flex !important;
	align-items: center !important;
	justify-content: flex-start !important;
	flex-wrap: wrap !important;
	gap: 10px !important;
	padding: 11px 20px 14px !important;
	border-top: 1px solid rgba(255,255,255,.055) !important;
	background: rgba(4,8,15,.28) !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-actions .mud-button-root {
	min-width: 104px;
}

/* Los nuevos ABM comparten la misma paleta/geométrica de inputs de los ABM
 * presupuestarios, sin estilos locales que cambien el color del control. */
.mud-dialog.cba-scroll-dialog-host .cba-general-dialog .mud-input-control,
.mud-dialog.cba-scroll-dialog-host .cba-general-dialog .mud-select {
	margin-top: 0 !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-general-dialog .mud-input,
.mud-dialog.cba-scroll-dialog-host .cba-general-dialog .mud-select-input {
	font-size: 13px !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-general-dialog .mud-input-label {
	font-size: 12px !important;
}

/* El helper nunca intenta ser más ancho que el MudDialog que lo contiene.
 * Esto elimina el desplazamiento lateral y conserva footer visible. */
.mud-dialog.cba-scroll-dialog-host .cba-general-picker {
	width: 100% !important;
	max-width: none !important;
	height: min(84dvh,760px) !important;
	max-height: calc(100dvh - 24px) !important;
	min-height: 0 !important;
	margin-inline: auto !important;
}

/* En Recibos la toolbar es un hermano del card/grilla: tabs -> toolbar -> grid. */
.cba-rec-tab-card {
	min-height: 0 !important;
}

.cba-rec-detail-grid {
	min-height: 300px;
	max-height: calc(100dvh - 465px);
}

@media (max-height: 700px) {
	.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header {
		min-height: 58px !important;
		padding-block: 9px !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-body {
		padding-block: 11px !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-actions {
		padding-block: 8px 10px !important;
	}
}

/* Campos meramente informativos: no forman parte del ciclo de foco. */
.cba-readonly-display-no-focus {
	pointer-events: none !important;
}

/* Separación mínima uniforme entre acciones de TODOS los dialogs CBA. */
.cba-presupuesto-dialog-actions,
.cba-partida-dialog-actions,
.cba-borrador-actions,
.cba-presupuesto-pdf-actions,
.cba-user-dialog-actions,
.cba-exception-dialog-actions,
.cba-audit-dialog-actions,
.cba-reset-dialog-actions,
.cba-confirm-actions {
	gap: 10px !important;
}

/* ==========================================================================
	 CBA 008A6d - paginación server-side / localidad predictiva
	 ========================================================================== */
.cba-server-pager {
	justify-content: space-between;
	gap: 12px;
}

.cba-server-pager-actions {
	display: flex;
	align-items: center;
	gap: 5px;
	white-space: nowrap;
}

.cba-server-pager-actions .mud-icon-button {
	padding: 2px !important;
}

.cba-picker-result-status {
	min-width: 0;
	font-size: 10.5px;
	color: var(--mud-palette-text-secondary);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* El error de Localidad aumenta la altura del MudTextField. La lupa queda
 * anclada al borde superior del control y no se desplaza al aparecer ErrorText. */
.cba-general-picker-field {
	align-items: start;
}

.cba-general-picker-field > .mud-icon-button {
	align-self: start;
	margin-top: 2px;
}

@media (max-width: 700px) {
	.cba-server-pager {
		flex-wrap: wrap;
	}

	.cba-picker-result-status {
		display: none;
	}
}

/* ==========================================================================
	 CBA 008A6f - pulido Recibos / helpers / indicador de sección
	 ========================================================================== */

/* Los errores de validación crecen hacia abajo sin mover horizontal/verticalmente
 * los demás controles de cabecera del Recibo. */
.cba-rec-header-fields {
	align-items: start !important;
}

.cba-rec-person-field {
	align-items: start !important;
}

.cba-rec-person-field > .mud-icon-button {
	align-self: start;
	margin-top: 2px;
}

/* Header de helpers: tres zonas reales, sin superposición entre Buscar y Cerrar. */
.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header.cba-general-picker-header {
	display: grid !important;
	grid-template-columns: minmax(190px, 1fr) minmax(380px, 460px) 42px !important;
	align-items: center !important;
	column-gap: 14px !important;
	row-gap: 8px !important;
	width: 100% !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-general-picker-header .cba-general-picker-heading {
	grid-column: 1;
	min-width: 0;
}

.mud-dialog.cba-scroll-dialog-host .cba-general-picker-header .cba-compact-search {
	grid-column: 2;
	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;
	margin-right: 0 !important;
	grid-template-columns: 34px minmax(0, 1fr) 26px;
	column-gap: 4px;
	padding-left: 8px;
}

.mud-dialog.cba-scroll-dialog-host .cba-general-picker-header .cba-compact-search-icon {
	justify-self: center;
}

.mud-dialog.cba-scroll-dialog-host .cba-general-picker-header > .mud-icon-button {
	grid-column: 3;
	justify-self: end;
}

/* Badges combinables del PageHeader de Partidas. */
.cba-partidas-header-badges {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	flex-wrap: wrap;
}

.cba-partidas-section-badge {
	font-weight: 800 !important;
	letter-spacing: .045em !important;
}

@media (max-width: 760px) {
	.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header.cba-general-picker-header {
		grid-template-columns: minmax(0, 1fr) 42px !important;
		min-height: 138px !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-general-picker-header .cba-general-picker-heading {
		grid-column: 1;
		grid-row: 1;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-general-picker-header > .mud-icon-button {
		grid-column: 2;
		grid-row: 1;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-general-picker-header .cba-compact-search {
		grid-column: 1 / -1;
		grid-row: 2;
	}
}

/* 008A6f - helper: título/cierre en primera fila y búsqueda en segunda.
 * La búsqueda gana ancho, comienza alineada al borde útil izquierdo y nunca
 * puede invadir el botón de cierre. */
.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header.cba-general-picker-header {
	display: grid !important;
	grid-template-columns: minmax(0, 1fr) 42px !important;
	grid-template-rows: auto auto !important;
	align-items: center !important;
	column-gap: 12px !important;
	row-gap: 10px !important;
	min-height: 126px !important;
	padding: 12px 18px 14px !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-general-picker-header .cba-general-picker-heading {
	grid-column: 1 !important;
	grid-row: 1 !important;
	min-width: 0 !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-general-picker-header > .mud-icon-button,
.mud-dialog.cba-scroll-dialog-host .cba-general-picker-header > button.mud-icon-button {
	grid-column: 2 !important;
	grid-row: 1 !important;
	position: static !important;
	justify-self: end !important;
	align-self: center !important;
	margin: 0 !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-general-picker-header .cba-compact-search {
	grid-column: 1 / -1 !important;
	grid-row: 2 !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;
	margin: 0 !important;
	grid-template-columns: 34px minmax(0, 1fr) 26px !important;
	column-gap: 7px !important;
	padding-left: 9px !important;
	padding-right: 9px !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-general-picker-header .cba-compact-search-icon {
	justify-self: center !important;
	margin-left: 1px !important;
}

@media (max-width: 760px) {
	.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header.cba-general-picker-header {
		min-height: 120px !important;
		padding-inline: 14px !important;
	}
}

/* 008A7 · filtro contextual reutilizable del helper de Personas */
.cba-persona-role-filter {
	width: 190px;
	min-width: 190px;
}

@media (max-width: 900px) {
	.cba-persona-role-filter {
		width: 100%;
		min-width: 0;
	}
}

/* ============================================================================
	 CBA 008A7 · Órdenes de Compra
	 ============================================================================ */

.cba-oc-status,
.cba-oc-partida-status {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	white-space: nowrap;
	border: 1px solid currentColor;
	border-radius: 999px;
	font-size: .66rem;
	font-weight: 800;
	letter-spacing: .035em;
	line-height: 1;
	padding: 4px 8px;
}

.cba-oc-status.pending {
	color: #FF7A8D;
	background: rgba(255, 102, 125, .09);
}

.cba-oc-status.partial,
.cba-oc-partida-status.critical {
	color: #F4C95D;
	background: rgba(244, 201, 93, .10);
}

.cba-oc-status.paid,
.cba-oc-partida-status.ok {
	color: #36D399;
	background: rgba(54, 211, 153, .09);
}

.cba-oc-status.annulled {
	color: rgba(208, 218, 231, .62);
	background: rgba(155, 169, 188, .08);
}

.cba-oc-partida-status.exceeded,
.cba-oc-negative {
	color: #FF667D !important;
}

.cba-oc-partida-status.exceeded {
	background: rgba(255, 102, 125, .10);
}

.cba-oc-provider-lock {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	color: rgba(244, 201, 93, .86);
}

.cba-oc-partida-filter {
	width: 175px;
	min-width: 175px;
}

.cba-oc-threshold-field {
	width: 130px;
	min-width: 130px;
}

.cba-oc-comp-dialog-body {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
	padding-top: 16px !important;
	padding-bottom: 16px !important;
}

.cba-oc-comp-observaciones,
.cba-oc-comp-error {
	grid-column: 1 / -1;
}

.cba-oc-qr-body {
	display: grid;
	gap: 14px;
	padding-top: 16px !important;
	padding-bottom: 16px !important;
}

.cba-oc-qr-actions {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.cba-oc-qr-video-shell {
	position: relative;
	display: grid;
	place-items: center;
	min-height: 260px;
	overflow: hidden;
	border: 1px dashed rgba(132, 151, 178, .34);
	border-radius: 14px;
	background: rgba(9, 18, 30, .65);
}

.cba-oc-qr-video-shell video {
	display: none;
	width: 100%;
	max-height: 440px;
	object-fit: contain;
}

.cba-oc-qr-video-shell.active video {
	display: block;
}

.cba-oc-qr-placeholder {
	display: grid;
	place-items: center;
	gap: 10px;
	max-width: 360px;
	padding: 30px;
	text-align: center;
	color: rgba(215, 226, 239, .68);
}

.cba-oc-qr-privacy {
	color: rgba(207, 218, 233, .62);
}

@media (max-width: 900px) {
	.cba-oc-partida-filter,
	.cba-oc-threshold-field {
		width: 100%;
		min-width: 0;
	}
}

@media (max-width: 700px) {
	.cba-oc-comp-dialog-body {
		grid-template-columns: 1fr;
	}

	.cba-oc-comp-observaciones,
	.cba-oc-comp-error {
		grid-column: auto;
	}
}


/* ============================================================================
	 CBA 008A8 · ABMC / helpers / responsividad
	 ============================================================================ */

/* Los controles de cabecera nunca fuerzan el ancho de la grilla cuando cambia
 * el zoom o el ancho disponible del panel de contenido. */
.cba-rec-header-fields > *,
.cba-rec-person-field > * {
	min-width: 0 !important;
	max-width: 100% !important;
}

.cba-rec-header-fields .mud-input-control,
.cba-rec-header-fields .mud-input-root,
.cba-rec-header-fields .mud-picker,
.cba-rec-header-fields .mud-picker-input-control {
	box-sizing: border-box;
	width: 100% !important;
	min-width: 0 !important;
	max-width: 100% !important;
}

/* Filtros de helpers: misma superficie visual que Buscar. */
.cba-persona-role-filter {
	width: 230px !important;
	min-width: 230px !important;
	max-width: 100%;
}

.cba-persona-role-filter .mud-input-root,
.cba-oc-partida-filter .mud-input-root {
	min-height: var(--cba-compact-control-height, 36px) !important;
	border-radius: 12px !important;
	background: color-mix(in srgb, var(--mud-palette-surface) 96%, transparent) !important;
}

.cba-persona-role-filter .mud-input-outlined-border,
.cba-oc-partida-filter .mud-input-outlined-border {
	border-color: color-mix(in srgb, var(--mud-palette-text-primary) 24%, transparent) !important;
	border-radius: 12px !important;
}

/* Persona: Buscar + rol comparten una fila útil, sin comprimir el texto del rol. */
.mud-dialog.cba-scroll-dialog-host .cba-persona-picker .cba-general-picker-header {
	grid-template-columns: minmax(0, 1fr) minmax(210px, 230px) 42px !important;
	grid-template-rows: auto auto !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-persona-picker .cba-general-picker-heading {
	grid-column: 1 / 3 !important;
	grid-row: 1 !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-persona-picker .cba-compact-search {
	grid-column: 1 !important;
	grid-row: 2 !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-persona-picker .cba-persona-role-filter {
	grid-column: 2 !important;
	grid-row: 2 !important;
	align-self: center;
}

.mud-dialog.cba-scroll-dialog-host .cba-persona-picker .cba-general-picker-header > .mud-icon-button {
	grid-column: 3 !important;
	grid-row: 1 !important;
}

/* Partidas OC: título arriba; Buscar, filtro y umbral en una fila realmente
 * responsive. El umbral nunca puede quedar fuera del dialog. */
.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header {
	grid-template-columns: minmax(0, 1fr) minmax(175px, 205px) minmax(138px, 158px) 42px !important;
	grid-template-rows: auto auto !important;
	column-gap: 10px !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-heading {
	grid-column: 1 / 4 !important;
	grid-row: 1 !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-compact-search {
	grid-column: 1 !important;
	grid-row: 2 !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-oc-partida-filter {
	grid-column: 2 !important;
	grid-row: 2 !important;
	width: 100% !important;
	min-width: 0 !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-oc-threshold-field {
	grid-column: 3 !important;
	grid-row: 2 !important;
	width: 100% !important;
	min-width: 0 !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header > .mud-icon-button {
	grid-column: 4 !important;
	grid-row: 1 !important;
}

/* Comprobante: punto de venta y número conservan un ancho fiscal razonable. */
.cba-oc-comp-number-row {
	grid-column: 1 / -1;
	display: flex;
	align-items: flex-start;
	gap: 12px;
	min-width: 0;
	max-width: 100%;
	flex-wrap: wrap;
}

.cba-oc-pv-field {
	flex: 0 1 160px;
	width: 160px !important;
	min-width: 120px !important;
	max-width: 100%;
}

.cba-oc-number-field {
	flex: 0 1 210px;
	width: 210px !important;
	min-width: 150px !important;
	max-width: 100%;
}

.cba-oc-qr-manual {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: 10px;
}

.cba-oc-qr-working {
	display: inline-flex;
	align-items: center;
	gap: 9px;
	color: var(--mud-palette-text-secondary);
}

@media (max-width: 1050px) {
	.cba-rec-header-fields {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}

	.cba-rec-header-fields > :last-child {
		grid-column: 1 / -1 !important;
	}
}

@media (max-width: 900px) {
	.mud-dialog.cba-scroll-dialog-host .cba-persona-picker .cba-general-picker-header {
		grid-template-columns: minmax(0, 1fr) minmax(205px, 230px) 42px !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header {
		grid-template-columns: minmax(0, 1fr) minmax(155px, 190px) 42px !important;
		grid-template-rows: auto auto auto !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-heading {
		grid-column: 1 / 3 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header > .mud-icon-button {
		grid-column: 3 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-compact-search {
		grid-column: 1 / 3 !important;
		grid-row: 2 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-oc-partida-filter {
		grid-column: 1 !important;
		grid-row: 3 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-oc-threshold-field {
		grid-column: 2 !important;
		grid-row: 3 !important;
	}
}

@media (max-width: 700px) {
	.cba-persona-role-filter {
		width: 100% !important;
		min-width: 0 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-persona-picker .cba-general-picker-header,
	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header {
		grid-template-columns: minmax(0, 1fr) 42px !important;
		grid-template-rows: auto auto auto auto !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-persona-picker .cba-general-picker-heading,
	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-heading {
		grid-column: 1 !important;
		grid-row: 1 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-persona-picker .cba-general-picker-header > .mud-icon-button,
	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header > .mud-icon-button {
		grid-column: 2 !important;
		grid-row: 1 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-persona-picker .cba-compact-search,
	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-compact-search {
		grid-column: 1 / -1 !important;
		grid-row: 2 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-persona-picker .cba-persona-role-filter,
	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-oc-partida-filter {
		grid-column: 1 / -1 !important;
		grid-row: 3 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-oc-threshold-field {
		grid-column: 1 / -1 !important;
		grid-row: 4 !important;
	}

	.cba-oc-qr-manual {
		grid-template-columns: 1fr;
	}

	.cba-oc-pv-field,
	.cba-oc-number-field {
		flex: 1 1 100%;
		width: 100% !important;
		min-width: 0 !important;
	}
}

@media (max-width: 620px) {
	.cba-rec-header-fields {
		grid-template-columns: 1fr !important;
	}

	.cba-rec-header-fields > :last-child {
		grid-column: auto !important;
	}
}


/* ============================================================================
	 CBA 008A9 · ABMC visible / toast contrast / helper geometry
	 ============================================================================ */

/* Sólo los editores ABMC reciben una banda más visible. Las páginas de
 * navegación conservan exactamente el PageHeader neutro. */
.cba-page-title-card.operation-tinted {
	border-color: color-mix(in srgb, var(--cba-page-header-accent) 36%, var(--mud-palette-divider));
	background:
		linear-gradient(
			100deg,
			color-mix(in srgb, var(--cba-page-header-accent) 18%, var(--mud-palette-surface)),
			color-mix(in srgb, var(--cba-page-header-accent) 9%, var(--mud-palette-surface)) 56%,
			var(--mud-palette-surface) 100%
		);
	box-shadow:
		inset 4px 0 0 color-mix(in srgb, var(--cba-page-header-accent) 82%, transparent),
		0 8px 24px rgba(0, 0, 0, .16);
}

.cba-page-title-card.operation-tinted .cba-page-title-accent {
	background: color-mix(in srgb, var(--cba-page-header-accent) 20%, var(--mud-palette-surface));
	box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--cba-page-header-accent) 42%, transparent);
}

/* El accent que llega desde cada operación A/B/M/C manda en TODO el dialog.
 * No volver a declarar --dialog-accent dentro del header. */
.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog {
	--cba-dialog-accent: var(--dialog-accent, #54B8FF);
	border-color: color-mix(in srgb, var(--cba-dialog-accent) 22%, rgba(255,255,255,.07)) !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header {
	background: linear-gradient(
		90deg,
		color-mix(in srgb, var(--cba-dialog-accent) 25%, #101827),
		color-mix(in srgb, var(--cba-dialog-accent) 7%, #101827) 72%,
		#101827
	) !important;
	box-shadow: inset 4px 0 0 var(--cba-dialog-accent) !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header .mud-typography,
.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header .mud-icon-root {
	color: color-mix(in srgb, var(--cba-dialog-accent) 34%, var(--mud-palette-text-primary)) !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-actions {
	background: linear-gradient(
		90deg,
		color-mix(in srgb, var(--cba-dialog-accent) 7%, var(--mud-palette-surface)),
		var(--mud-palette-surface)
	) !important;
	border-top: 1px solid color-mix(in srgb, var(--cba-dialog-accent) 18%, var(--mud-palette-divider)) !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-actions [data-cba-dialog-accept="true"] {
	border-color: color-mix(in srgb, var(--cba-dialog-accent) 76%, transparent) !important;
	background: color-mix(in srgb, var(--cba-dialog-accent) 82%, #0b1220) !important;
	color: #071018 !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-actions [data-cba-dialog-accept="true"] .mud-icon-root {
	color: inherit !important;
}

.cba-presupuesto-dialog :is(.mud-chip, .cba-dialog-badge, .cba-picker-result-status strong) {
	border-color: color-mix(in srgb, var(--cba-dialog-accent) 48%, transparent) !important;
}

/* Todos los controles compactos del helper miden exactamente lo mismo. */
.cba-persona-role-filter,
.cba-oc-partida-filter,
.cba-oc-threshold-field {
	box-sizing: border-box !important;
	height: var(--cba-compact-control-height, 36px) !important;
	min-height: var(--cba-compact-control-height, 36px) !important;
	max-height: var(--cba-compact-control-height, 36px) !important;
	align-self: center !important;
	margin: 0 !important;
}

.cba-persona-role-filter .mud-input-control,
.cba-persona-role-filter .mud-input-root,
.cba-persona-role-filter .mud-input-slot,
.cba-oc-partida-filter .mud-input-control,
.cba-oc-partida-filter .mud-input-root,
.cba-oc-partida-filter .mud-input-slot,
.cba-oc-threshold-field .mud-input-control,
.cba-oc-threshold-field .mud-input-root,
.cba-oc-threshold-field .mud-input-slot {
	box-sizing: border-box !important;
	height: var(--cba-compact-control-height, 36px) !important;
	min-height: var(--cba-compact-control-height, 36px) !important;
	max-height: var(--cba-compact-control-height, 36px) !important;
	margin: 0 !important;
	align-items: center !important;
}

.cba-persona-role-filter .mud-input,
.cba-oc-partida-filter .mud-input,
.cba-oc-threshold-field .mud-input {
	margin-top: 0 !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header {
	grid-template-columns: minmax(0, 1fr) minmax(175px, 205px) minmax(108px, 122px) 42px !important;
	align-items: center !important;
}

/* Snackbar MudBlazor: fondo tonal con gradiente, texto/icono oscuro y legible. */
#mud-snackbar-container .mud-alert-filled-success,
.mud-snackbar .mud-alert-filled-success {
	background: linear-gradient(110deg, #75e3bc, #b8f1dc) !important;
	color: #103b2e !important;
}

#mud-snackbar-container .mud-alert-filled-warning,
.mud-snackbar .mud-alert-filled-warning {
	background: linear-gradient(110deg, #f4c95d, #f9e3a0) !important;
	color: #493700 !important;
}

#mud-snackbar-container .mud-alert-filled-error,
.mud-snackbar .mud-alert-filled-error {
	background: linear-gradient(110deg, #ff8193, #ffc0c9) !important;
	color: #50131c !important;
}

#mud-snackbar-container .mud-alert-filled-info,
.mud-snackbar .mud-alert-filled-info {
	background: linear-gradient(110deg, #70c8f4, #b8e5fb) !important;
	color: #103a51 !important;
}

#mud-snackbar-container .mud-alert-filled-normal,
.mud-snackbar .mud-alert-filled-normal {
	background: linear-gradient(110deg, #aab8ca, #d7e0ea) !important;
	color: #243140 !important;
}

#mud-snackbar-container .mud-alert :is(.mud-alert-icon, .mud-icon-root, .mud-snackbar-content-message, .mud-icon-button),
.mud-snackbar .mud-alert :is(.mud-alert-icon, .mud-icon-root, .mud-snackbar-content-message, .mud-icon-button) {
	color: inherit !important;
}

@media (max-width: 900px) {
	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header {
		grid-template-columns: minmax(0, 1fr) minmax(108px, 122px) 42px !important;
		grid-template-rows: auto auto auto !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-heading {
		grid-column: 1 / 3 !important;
		grid-row: 1 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header > .mud-icon-button {
		grid-column: 3 !important;
		grid-row: 1 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-compact-search {
		grid-column: 1 / 3 !important;
		grid-row: 2 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-oc-partida-filter {
		grid-column: 1 !important;
		grid-row: 3 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-oc-threshold-field {
		grid-column: 2 !important;
		grid-row: 3 !important;
	}
}

@media (max-width: 700px) {
	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header {
		grid-template-columns: minmax(0, 1fr) 42px !important;
		grid-template-rows: auto auto auto auto !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-heading {
		grid-column: 1 !important;
		grid-row: 1 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header > .mud-icon-button {
		grid-column: 2 !important;
		grid-row: 1 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-compact-search {
		grid-column: 1 / -1 !important;
		grid-row: 2 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-oc-partida-filter {
		grid-column: 1 / -1 !important;
		grid-row: 3 !important;
	}

	.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-oc-threshold-field {
		grid-column: 1 / -1 !important;
		grid-row: 4 !important;
		width: 118px !important;
		min-width: 118px !important;
		justify-self: start !important;
	}
}

/* MudBlazor puede aplicar la severidad al propio nodo .mud-snackbar. */
#mud-snackbar-container .mud-snackbar.mud-alert-filled-success {
	background: linear-gradient(110deg, #75e3bc, #b8f1dc) !important;
	color: #103b2e !important;
}
#mud-snackbar-container .mud-snackbar.mud-alert-filled-warning {
	background: linear-gradient(110deg, #f4c95d, #f9e3a0) !important;
	color: #493700 !important;
}
#mud-snackbar-container .mud-snackbar.mud-alert-filled-error {
	background: linear-gradient(110deg, #ff8193, #ffc0c9) !important;
	color: #50131c !important;
}
#mud-snackbar-container .mud-snackbar.mud-alert-filled-info {
	background: linear-gradient(110deg, #70c8f4, #b8e5fb) !important;
	color: #103a51 !important;
}
#mud-snackbar-container .mud-snackbar.mud-alert-filled-normal {
	background: linear-gradient(110deg, #aab8ca, #d7e0ea) !important;
	color: #243140 !important;
}
#mud-snackbar-container .mud-snackbar :is(.mud-snackbar-content-message, .mud-icon-root, .mud-icon-button, svg) {
	color: inherit !important;
}

/* Botón secundario del dialog: misma familia cromática que la operación. */
.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-actions .mud-button-root:not([data-cba-dialog-accept="true"]) {
	border: 1px solid color-mix(in srgb, var(--cba-dialog-accent) 30%, transparent) !important;
	color: color-mix(in srgb, var(--cba-dialog-accent) 72%, white) !important;
	background: color-mix(in srgb, var(--cba-dialog-accent) 7%, var(--mud-palette-surface)) !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-actions .mud-button-root:hover {
	border-color: color-mix(in srgb, var(--cba-dialog-accent) 66%, transparent) !important;
	background: color-mix(in srgb, var(--cba-dialog-accent) 25%, var(--mud-palette-surface)) !important;
}

/* ==========================================================================
	 CBA 008A10 - autocomplete contextual de Personas
	 ========================================================================== */
.cba-persona-autocomplete-field {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 44px;
	align-items: start;
	gap: 6px;
	min-width: 0;
	width: 100%;
}

.cba-persona-autocomplete-field > .mud-autocomplete {
	min-width: 0;
	width: 100%;
}

.cba-persona-autocomplete-field > .mud-icon-button {
	align-self: start;
	margin-top: 2px;
}

.cba-persona-autocomplete-field .mud-input-root {
	min-width: 0;
}

.cba-persona-autocomplete-field .mud-popover-provider,
.cba-persona-autocomplete-field .mud-popover {
	max-width: min(620px, calc(100vw - 32px));
}

.cba-persona-autocomplete-option {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
	padding: 2px 0;
}

.cba-persona-autocomplete-option strong {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.cba-persona-autocomplete-option span {
	font-size: 10px;
	color: var(--mud-palette-text-secondary);
}

.cba-rec-person-autocomplete-host {
	min-width: 0;
	width: 100%;
}

.cba-rec-header-fields > .cba-rec-person-autocomplete-host {
	max-width: 100%;
}


/* 008A11 · Fondo global visible y geometría responsive común */
.mud-layout.cba-theme-dark {
	background:
		radial-gradient(circle at 12% 10%, rgba(55, 142, 255, .13), transparent 34%),
		radial-gradient(circle at 88% 84%, rgba(83, 220, 192, .09), transparent 32%),
		linear-gradient(145deg, #0b1220 0%, #0d1727 52%, #09111d 100%) !important;
	background-attachment: fixed !important;
}

.mud-layout.cba-theme-dark .mud-main-content,
.mud-layout.cba-theme-dark .cba-main {
	background: transparent !important;
}

.cba-rec-header-fields {
	grid-template-columns: minmax(120px, .52fr) minmax(150px, .62fr) minmax(220px, 1.35fr) minmax(0, 1.8fr) !important;
	width: 100%;
	min-width: 0;
}

.cba-rec-header-fields > *,
.cba-rec-header-fields .mud-input-control,
.cba-rec-header-fields .mud-input-root,
.cba-rec-header-fields .mud-picker,
.cba-rec-header-fields .mud-picker-input-control {
	min-width: 0 !important;
	max-width: 100% !important;
	width: 100% !important;
}

.cba-rec-header-card,
.cba-command-grid-card,
.cba-toolbar-strip,
.cba-toolbar-strip-secondary {
	min-width: 0;
	max-width: 100%;
}

@media (max-width: 1280px) {
	.cba-rec-header-fields {
		grid-template-columns: minmax(150px, .6fr) minmax(170px, .7fr) minmax(0, 1.45fr) !important;
	}

	.cba-rec-header-fields > :last-child {
		grid-column: 1 / -1;
	}
}

@media (max-width: 760px) {
	.cba-rec-header-fields {
		grid-template-columns: minmax(0, 1fr) !important;
	}

	.cba-rec-header-fields > :last-child {
		grid-column: auto;
	}
}


/* 008A12 · Fondo CBA garantizado: capa fija real detrás del layout. */
.cba-page-background {
	position: fixed;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	overflow: hidden;
}

.cba-page-background.dark {
	background:
		radial-gradient(circle at 13% 11%, rgba(62, 143, 255, .24) 0, rgba(62, 143, 255, .13) 18rem, transparent 35rem),
		radial-gradient(circle at 87% 78%, rgba(77, 222, 193, .16) 0, rgba(77, 222, 193, .075) 20rem, transparent 38rem),
		radial-gradient(circle at 54% 108%, rgba(119, 92, 230, .10) 0, transparent 34rem),
		linear-gradient(145deg, #08101b 0%, #0d1828 46%, #09121f 100%);
}

.cba-page-background.dark::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(90deg, rgba(255,255,255,.018), transparent 18%, transparent 82%, rgba(255,255,255,.012)),
		radial-gradient(ellipse at center, transparent 45%, rgba(2,7,14,.22) 100%);
}

.cba-page-background.light {
	background:
		radial-gradient(circle at 13% 11%, rgba(53, 123, 235, .12), transparent 34rem),
		radial-gradient(circle at 87% 78%, rgba(36, 188, 163, .075), transparent 38rem),
		linear-gradient(145deg, #f4f7fb 0%, #eef3f9 52%, #f7f9fc 100%);
}

.mud-layout.cba-theme-dark,
.mud-layout.cba-theme-light {
	position: relative;
	z-index: 1;
	background: transparent !important;
}

.mud-layout.cba-theme-dark .mud-main-content,
.mud-layout.cba-theme-light .mud-main-content,
.mud-layout.cba-theme-dark .cba-main,
.mud-layout.cba-theme-light .cba-main {
	background: transparent !important;
}


/* 008A13 · Alineación semántica de encabezados numéricos y badges */
.cba-grid .mud-table-head th[style*="text-align:right"] .column-header,
.cba-grid .mud-table-head th[style*="text-align: right"] .column-header,
.cba-grid .mud-table-head th[style*="text-align:right"] .mud-table-sort-label,
.cba-grid .mud-table-head th[style*="text-align: right"] .mud-table-sort-label {
	width: 100%;
	justify-content: flex-end;
	text-align: right;
}

.cba-grid .mud-table-head th[style*="text-align:center"] .column-header,
.cba-grid .mud-table-head th[style*="text-align: center"] .column-header,
.cba-grid .mud-table-head th[style*="text-align:center"] .mud-table-sort-label,
.cba-grid .mud-table-head th[style*="text-align: center"] .mud-table-sort-label {
	width: 100%;
	justify-content: center;
	text-align: center;
}


/* Distribuir/Consultar OC: aire visual entre los cards resumen y la grilla. */
.cba-op-distribution-summary {
	margin-bottom: 12px;
}

/* 008A14 · Tesorería integral */
.cba-teso-filter-row,
.cba-teso-conciliacion-filters {
	display:flex;
	align-items:center;
	gap:10px;
	flex-wrap:wrap;
	width:100%;
}
.cba-teso-filter-row > .mud-input-control,
.cba-teso-conciliacion-filters > .mud-input-control { min-width:150px; max-width:210px; }
.cba-teso-conciliacion-filters > .mud-input-control:first-child { min-width:280px; max-width:380px; }
.cba-teso-cheque-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
.cba-teso-cheque-summary > div { padding:10px 12px; border:1px solid rgba(148,116,232,.24); border-radius:12px; background:rgba(148,116,232,.06); }
.cba-teso-cheque-summary span { display:block; font-size:.72rem; opacity:.72; text-transform:uppercase; letter-spacing:.04em; }
.cba-teso-cheque-summary strong { display:block; margin-top:3px; }
.cba-teso-conciliacion-summary { grid-template-columns:repeat(5,minmax(0,1fr)); }
.cba-teso-conciliacion-summary .mud-input-control { margin-top:4px; }
.cba-teso-bulk-check { display:flex; align-items:center; min-height:42px; padding:2px 14px 4px; border-top:1px solid rgba(255,255,255,.05); }
.cba-rejected-checks-content { width:100%; display:flex; align-items:center; justify-content:space-between; gap:16px; }
@media (max-width:1100px){
	.cba-teso-conciliacion-summary{grid-template-columns:repeat(2,minmax(0,1fr));}
	.cba-teso-cheque-summary{grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:700px){
	.cba-teso-filter-row > .mud-input-control,.cba-teso-conciliacion-filters > .mud-input-control,.cba-teso-conciliacion-filters > .mud-input-control:first-child{min-width:100%;max-width:100%;width:100%;}
	.cba-teso-conciliacion-summary,.cba-teso-cheque-summary{grid-template-columns:1fr;}
	.cba-rejected-checks-content{align-items:flex-start;flex-direction:column;}
}


/* 008A14b · Normalización global de grids + Libro Caja/Banco */
:root {
	--cba-grid-cell-padding-x: 14px;
}

/* Todos los grids CBA reciben el mismo aire lateral sin alterar su altura. */
.cba-grid .mud-table-head .mud-table-cell,
.cba-grid .mud-table-body .mud-table-cell,
.cba-users-grid .mud-table-head .mud-table-cell,
.cba-users-grid .mud-table-body .mud-table-cell {
	padding-left: var(--cba-grid-cell-padding-x) !important;
	padding-right: var(--cba-grid-cell-padding-x) !important;
}

/* Sesiones Activas hereda sin excepciones la geometría estándar de cba-grid/cba-users-grid. */

/* Distribución de OC: los cuatro indicadores permanecen en una sola línea. */
.cba-op-distribution-summary {
	grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
}

.cba-teso-book-filters {
	display: grid;
	gap: 10px;
	padding: 12px 14px 4px;
}

.cba-teso-book-filter-row {
	display: grid;
	gap: 10px;
	align-items: center;
	width: 100%;
}

.cba-teso-book-filter-row-dates {
	grid-template-columns: repeat(2, minmax(190px, 240px));
}

.cba-teso-book-filter-row-accounts {
	grid-template-columns: minmax(210px, 1fr) minmax(210px, 1fr) minmax(250px, 1.25fr);
}

.cba-teso-book-filter-error {
	margin: 8px 14px 4px;
}

.cba-teso-book-empty {
	margin: 12px 14px 16px;
	padding: 20px;
	border: 1px dashed rgba(148, 163, 184, .28);
	border-radius: 12px;
	text-align: center;
	opacity: .76;
}

.cba-teso-account-block {
	margin: 12px 14px 18px;
	overflow: hidden;
	border: 1px solid rgba(84, 184, 255, .18);
	border-radius: 13px;
	background: rgba(8, 17, 29, .12);
}

.cba-teso-account-header {
	display: grid;
	grid-template-columns: .85fr 1.35fr 1fr 1fr 1fr 1fr;
	gap: 10px;
	align-items: center;
	padding: 9px 14px;
	border-bottom: 1px solid rgba(84, 184, 255, .18);
	background: linear-gradient(90deg, rgba(84, 184, 255, .09), rgba(148, 116, 232, .045));
}

.cba-teso-account-header > div {
	min-width: 0;
}

.cba-teso-account-header span {
	display: block;
	margin-bottom: 2px;
	font-size: .68rem;
	letter-spacing: .035em;
	text-transform: uppercase;
	opacity: .66;
}

.cba-teso-account-header strong {
	display: block;
	overflow: hidden;
	font-size: .82rem;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.cba-teso-account-balance {
	text-align: right;
}

.cba-teso-book-grid-scroll {
	margin: 0;
}

.cba-teso-book-grid .mud-table-container {
	border-radius: 0 !important;
}

@media (max-width: 1050px) {
	.cba-teso-account-header {
		grid-template-columns: repeat(3, minmax(0, 1fr));
	}
}

@media (max-width: 760px) {
	.cba-op-distribution-summary {
		grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
	}

	.cba-teso-book-filter-row-dates,
	.cba-teso-book-filter-row-accounts,
	.cba-teso-account-header {
		grid-template-columns: minmax(0, 1fr);
	}

	.cba-teso-account-balance {
		text-align: left;
	}
}

.cba-teso-book-summary {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 10px;
	margin: 10px 14px 12px;
}

.cba-teso-book-summary .cba-rec-summary-card {
	padding: 10px 12px;
}

@media (max-width: 760px) {
	.cba-teso-book-summary {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}


/* 008A14d · Transferencias: el ancho mínimo vive en un hijo real del viewport.
	 Así el overflow pertenece al wrapper exterior y la barra horizontal siempre aparece. */
.cba-teso-transfer-grid-scroll {
	width: 100%;
	max-width: 100%;
	overflow-x: auto !important;
	overflow-y: hidden !important;
	-webkit-overflow-scrolling: touch;
}

.cba-teso-transfer-grid-inner {
	min-width: 1510px;
	width: 1510px;
}

.cba-teso-transfer-grid-inner .mud-table-container {
	width: 100% !important;
	overflow: visible !important;
}

.cba-teso-transfer-grid-inner .mud-table-root,
.cba-teso-transfer-grid-inner table,
.cba-teso-transfer-grid {
	min-width: 1510px !important;
	width: 1510px !important;
	table-layout: fixed !important;
}

.cba-teso-inline-actions {
	margin: 8px 14px 10px 14px;
	display: flex;
	align-items: center;
	justify-content: flex-start;
}

.cba-teso-account-header-card {
	width: min(100%, 760px);
	display: grid;
	grid-template-columns: repeat(5, minmax(105px, 1fr));
	gap: 10px;
	padding: 10px 12px;
	border: 1px solid var(--cba-border, rgba(125, 125, 145, .28));
	border-left: 4px solid #54B8FF;
	border-radius: 10px;
	background: color-mix(in srgb, #54B8FF 7%, transparent);
	margin: 0 0 8px 0;
}

.cba-teso-account-header-card > div {
	min-width: 0;
}

.cba-teso-account-header-card span {
	display: block;
	font-size: .68rem;
	text-transform: uppercase;
	opacity: .72;
	margin-bottom: 2px;
}

.cba-teso-account-header-card strong {
	display: block;
	font-size: .82rem;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.cba-teso-book-row-saldo-anterior .mud-table-cell {
	background: color-mix(in srgb, #54B8FF 10%, transparent) !important;
	font-weight: 600;
}

.cba-teso-saldo-badge {
	display: inline-flex;
	align-items: center;
	padding: 2px 8px;
	border-radius: 999px;
	background: color-mix(in srgb, #54B8FF 17%, transparent);
	color: #2E79B7;
	font-weight: 700;
	white-space: nowrap;
}

.cba-teso-account-summary {
	width: min(100%, 660px);
	margin: 8px 0 18px auto;
}

.cba-teso-account-summary table {
	width: 100%;
	border-collapse: collapse;
	font-size: .78rem;
}

.cba-teso-account-summary td {
	padding: 5px 10px;
	border-bottom: 1px solid var(--cba-border, rgba(125,125,145,.2));
}

.cba-teso-account-summary td:last-child {
	text-align: right;
	font-variant-numeric: tabular-nums;
}

.cba-teso-account-summary tr.cba-summary-total td {
	font-weight: 700;
}

.cba-teso-account-summary tr.cba-summary-final td {
	font-weight: 800;
	border-top: 2px solid #9474E8;
}

.cba-teso-general-summary {
	margin: 12px 14px 16px;
	max-width: 720px;
	margin-left: auto;
}

.cba-teso-report-mode {
	display: flex;
	align-items: center;
	margin-left: auto;
}

@media (max-width: 900px) {
	.cba-teso-account-header-card {
		grid-template-columns: repeat(2, minmax(120px, 1fr));
	}
}

/* 008A14d · Historial de cheques sin trazabilidad. */
.cba-teso-history-empty {
	margin: 10px 0 4px;
	padding: 22px 16px;
	border: 1px dashed rgba(148, 163, 184, .38);
	border-radius: 12px;
	text-align: center;
	font-weight: 700;
	opacity: .72;
}

/* 008A14d · Caja Diaria: bloques jerárquicos de documento/detalle. */
.cba-daily-block {
	min-width: 0;
}

.cba-daily-subsection-title {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	margin: 4px 0 7px;
	padding: 7px 12px;
	border: 1px solid rgba(84, 184, 255, .22);
	border-left-width: 4px;
	border-radius: 9px;
	background: color-mix(in srgb, var(--mud-palette-surface) 91%, #54b8ff 9%);
	font-size: 12px;
	letter-spacing: .025em;
}

.cba-daily-two-tier-grid,
.cba-daily-summary-table {
	width: 100%;
	overflow: hidden;
	border: 1px solid var(--mud-palette-table-lines);
	border-radius: 11px;
	background: var(--mud-palette-surface);
}

.cba-daily-main-header,
.cba-daily-main-row {
	display: grid;
	grid-template-columns: minmax(90px, .55fr) minmax(260px, 1.55fr) minmax(280px, 1.7fr);
	align-items: center;
}

.cba-daily-budget-detail-grid {
	display: grid;
	grid-template-columns: minmax(165px, .9fr) minmax(360px, 2.6fr) minmax(145px, .75fr);
	align-items: center;
}

.cba-daily-teso-detail-grid {
	display: grid;
	grid-template-columns: minmax(170px, 1.15fr) minmax(180px, 1.15fr) minmax(170px, 1.1fr) minmax(160px, 1.05fr) minmax(135px, .8fr);
	align-items: center;
}

.cba-daily-main-header,
.cba-daily-detail-header,
.cba-daily-summary-header {
	font-size: 10.7px;
	font-weight: 800;
	text-transform: uppercase;
	background: color-mix(in srgb, var(--mud-palette-surface) 80%, #54b8ff 20%);
	border-bottom: 1px solid var(--mud-palette-table-lines);
}

.cba-daily-detail-header {
	font-size: 10px;
	font-style: italic;
	background: color-mix(in srgb, var(--mud-palette-surface) 90%, #54b8ff 10%);
}

.cba-daily-main-header > *,
.cba-daily-main-row > *,
.cba-daily-detail-header > *,
.cba-daily-detail-row > *,
.cba-daily-medium-subtotal > *,
.cba-daily-document-total > *,
.cba-daily-summary-header > *,
.cba-daily-summary-row > *,
.cba-daily-summary-subtotal > * {
	min-width: 0;
	padding: 7px 14px;
}

.cba-daily-main-row {
	min-height: 38px;
	border-bottom: 1px solid color-mix(in srgb, var(--mud-palette-table-lines) 70%, transparent);
}

.cba-daily-document-block + .cba-daily-document-block {
	margin-top: 10px;
	border-top: 6px solid color-mix(in srgb, var(--mud-palette-background) 72%, transparent);
}

.cba-daily-detail-row {
	min-height: 31px;
	font-size: 11px;
	font-style: italic;
	background: color-mix(in srgb, var(--mud-palette-surface) 96%, #54b8ff 4%);
	border-bottom: 1px solid color-mix(in srgb, var(--mud-palette-table-lines) 58%, transparent);
}

.cba-daily-detail-row:nth-child(even) {
	background: color-mix(in srgb, var(--mud-palette-surface) 92%, #54b8ff 8%);
}

.cba-daily-partida i,
.cba-daily-detail-row i {
	display: inline-block;
	margin-right: 7px;
	opacity: .58;
}

.cba-daily-medium-subtotal,
.cba-daily-document-total {
	min-height: 30px;
	font-size: 10.8px;
	border-bottom: 1px solid color-mix(in srgb, var(--mud-palette-table-lines) 65%, transparent);
	background: color-mix(in srgb, var(--mud-palette-surface) 88%, #9474e8 12%);
}

.cba-daily-medium-subtotal {
	font-style: italic;
	background: color-mix(in srgb, var(--mud-palette-surface) 92%, #36d399 8%);
}

.cba-daily-category-total {
	display: flex;
	justify-content: flex-end;
	align-items: center;
	gap: 18px;
	margin-top: 8px;
	padding: 9px 14px;
	border-left: 4px solid #9474e8;
	border-radius: 8px;
	background: color-mix(in srgb, var(--mud-palette-surface) 86%, #9474e8 14%);
	font-size: 11.5px;
	font-weight: 800;
}

.cba-daily-summary-header,
.cba-daily-summary-row,
.cba-daily-summary-subtotal {
	display: grid;
	align-items: center;
}

.cba-daily-budget-summary-grid .cba-daily-summary-header,
.cba-daily-budget-summary-grid .cba-daily-summary-row {
	grid-template-columns: minmax(165px, .9fr) minmax(360px, 2.6fr) minmax(145px, .75fr);
}

.cba-daily-teso-summary-grid .cba-daily-summary-header,
.cba-daily-teso-summary-grid .cba-daily-summary-row,
.cba-daily-teso-summary-grid .cba-daily-summary-subtotal {
	grid-template-columns: minmax(300px, 2.3fr) minmax(200px, 1.35fr) minmax(140px, .85fr) minmax(140px, .85fr);
}

.cba-daily-transfer-summary-grid .cba-daily-summary-header,
.cba-daily-transfer-summary-grid .cba-daily-summary-row {
	grid-template-columns: minmax(420px, 3fr) minmax(150px, .85fr);
}

.cba-daily-summary-row,
.cba-daily-summary-subtotal {
	min-height: 32px;
	font-size: 11px;
	border-bottom: 1px solid color-mix(in srgb, var(--mud-palette-table-lines) 60%, transparent);
}

.cba-daily-summary-subtotal {
	font-weight: 800;
	background: color-mix(in srgb, var(--mud-palette-surface) 90%, #54b8ff 10%);
}

.cba-daily-bank-grid .mud-table-body .mud-table-row .mud-table-cell:nth-child(2) {
	font-size: 10.2px !important;
}

.cba-teso-daily-section {
	margin-top: 10px;
	padding-bottom: 8px;
}

.cba-teso-daily-section + .cba-teso-daily-section {
	margin-top: 18px;
	border-top: 1px solid color-mix(in srgb, var(--mud-palette-table-lines) 75%, transparent);
	padding-top: 12px;
}

.cba-teso-daily-section .cba-summary-final {
	font-size: 12.5px;
	font-weight: 900;
	letter-spacing: .035em;
	background: color-mix(in srgb, var(--mud-palette-surface) 72%, #9474e8 28%) !important;
	border-top: 2px solid #9474e8;
	border-bottom: 2px solid #9474e8;
}

.cba-num {
	text-align: right !important;
	font-variant-numeric: tabular-nums;
}

@media (max-width: 900px) {
	.cba-daily-two-tier-grid,
	.cba-daily-summary-table {
		overflow-x: auto;
	}

	.cba-daily-main-header,
	.cba-daily-main-row,
	.cba-daily-budget-detail-grid,
	.cba-daily-teso-detail-grid,
	.cba-daily-budget-summary-grid .cba-daily-summary-header,
	.cba-daily-budget-summary-grid .cba-daily-summary-row,
	.cba-daily-teso-summary-grid .cba-daily-summary-header,
	.cba-daily-teso-summary-grid .cba-daily-summary-row,
	.cba-daily-teso-summary-grid .cba-daily-summary-subtotal {
		min-width: 820px;
	}
}

/* ==========================================================================
	 CBA 008A14e - Sesiones, Caja Diaria y acento dinámico por módulo
	 ========================================================================== */

/* El fondo general toma el color del módulo padre seleccionado. */
.cba-page-background {
	--cba-page-accent: #4f8dff;
	--cba-page-accent-hover: #72a7ff;
}

.cba-page-background.dark {
	background:
		radial-gradient(circle at 13% 11%, color-mix(in srgb, var(--cba-page-accent) 24%, transparent) 0, color-mix(in srgb, var(--cba-page-accent) 13%, transparent) 18rem, transparent 35rem),
		radial-gradient(circle at 87% 78%, color-mix(in srgb, var(--cba-page-accent-hover) 16%, transparent) 0, color-mix(in srgb, var(--cba-page-accent-hover) 7.5%, transparent) 20rem, transparent 38rem),
		radial-gradient(circle at 54% 108%, color-mix(in srgb, var(--cba-page-accent) 10%, transparent) 0, transparent 34rem),
		linear-gradient(145deg, #08101b 0%, #0d1828 46%, #09121f 100%) !important;
}

.cba-page-background.light {
	background:
		radial-gradient(circle at 13% 11%, color-mix(in srgb, var(--cba-page-accent) 14%, transparent), transparent 34rem),
		radial-gradient(circle at 87% 78%, color-mix(in srgb, var(--cba-page-accent-hover) 9%, transparent), transparent 38rem),
		linear-gradient(145deg, #f4f7fb 0%, #eef3f9 52%, #f7f9fc 100%) !important;
}

/* El acordeón jerárquico se resuelve en CbaMenuNode.razor.css.
	 No sobrescribir aquí root/child/selected para preservar la escala
	 padre > hijo > nieto y la iluminación de toda la rama. */

/* Caja Diaria: cada documento respeta exactamente la secuencia
	 Header documento -> fila documento -> header detalle -> detalles -> total. */
.cba-daily-document-block {
	overflow: hidden;
}

.cba-daily-document-block + .cba-daily-document-block {
	margin-top: 10px;
	border-top: 6px solid color-mix(in srgb, var(--mud-palette-background) 72%, transparent);
}

.cba-daily-document-total {
	font-weight: 850;
	letter-spacing: .025em;
	background: color-mix(in srgb, var(--mud-palette-surface) 76%, #54b8ff 24%) !important;
	border-left: 4px solid #54b8ff;
	border-bottom: 1px solid color-mix(in srgb, #54b8ff 35%, var(--mud-palette-table-lines));
}

.cba-daily-document-total strong {
	font-weight: 850;
}

/* 008A14e · Sesiones Activas: el contenido del header ocupa toda la altura
	 y se centra únicamente en vertical. Al ser columnas de texto, queda a la izquierda. */
.cba-session-grid .mud-table-head th.mud-table-cell {
	height: 46px !important;
	min-height: 46px !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	vertical-align: middle !important;
	text-align: left !important;
}

.cba-session-grid .mud-table-head th.mud-table-cell > .column-header,
.cba-session-grid .mud-table-head th.mud-table-cell .column-header,
.cba-session-grid .mud-table-head th.mud-table-cell .mud-table-sort-label {
	width: 100% !important;
	min-height: 46px !important;
	height: 46px !important;
	display: flex !important;
	align-items: center !important;
	justify-content: flex-start !important;
	text-align: left !important;
	line-height: 1.1 !important;
}

/* 008A14f · Sesiones Activas: ajuste visual puntual solicitado.
	 Sólo baja el contenido del header; no modifica la alineación horizontal. */
.cba-session-grid .mud-table-head th.mud-table-cell > .column-header,
.cba-session-grid .mud-table-head th.mud-table-cell .column-header,
.cba-session-grid .mud-table-head th.mud-table-cell .mud-table-sort-label {
	transform: translateY(4px) !important;
}

/* ========================================================================== */
/* 008A15 · BALANCES / CONSOLIDADOS                                           */
/* ========================================================================== */

.cba-balance-card {
	overflow: hidden;
}

.cba-balance-filter-row {
	display: flex;
	align-items: center;
	justify-content: flex-start;
	flex-wrap: wrap;
	gap: 12px;
	width: 100%;
}

.cba-balance-filter-row .mud-picker,
.cba-balance-filter-row .mud-input-control {
	width: min(260px, 100%);
}

.cba-balance-error,
.cba-balance-empty {
	margin: 12px 14px 0;
}

.cba-balance-report-tabs {
	display: grid;
	grid-template-columns: repeat(6, minmax(150px, 1fr));
	gap: 8px;
	padding: 14px 14px 8px;
	overflow-x: auto;
}

.cba-balance-report-tab {
	min-height: 54px;
	border: 1px solid rgba(110, 139, 166, .30);
	border-radius: 12px;
	background: rgba(255, 255, 255, .035);
	color: var(--mud-palette-text-primary);
	font-family: inherit;
	font-size: .73rem;
	font-weight: 700;
	line-height: 1.15;
	padding: 8px 10px;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	cursor: pointer;
	transition: background-color .14s ease, border-color .14s ease, transform .14s ease;
	white-space: nowrap;
}

.cba-balance-report-tab:hover {
	background: rgba(84, 184, 255, .09);
	border-color: rgba(84, 184, 255, .48);
	transform: translateY(-1px);
}

.cba-balance-report-tab.selected {
	background: rgba(84, 184, 255, .15);
	border-color: rgba(84, 184, 255, .75);
	box-shadow: inset 0 -3px 0 rgba(84, 184, 255, .85);
}

.cba-balance-inline-actions {
	padding: 2px 14px 8px;
	display: flex;
	justify-content: flex-start;
}

.cba-balance-grid-wrap {
	margin: 0 14px 12px;
	max-width: calc(100% - 28px);
	overflow-x: auto;
	border-radius: 10px;
}

.cba-balance-grid-recursos {
	min-width: 1380px;
}

.cba-balance-grid-erogaciones {
	min-width: 1900px;
}

.cba-balance-grid-consolidado {
	min-width: 1280px;
}

.cba-balance-grid-excedidas {
	min-width: 1040px;
}

.cba-balance-grid-disponibilidades {
	min-width: 1550px;
}

.cba-grid-number {
	width: 100%;
	text-align: right;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.cba-balance-account {
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

.cba-balance-grid tr.cba-balance-title-row > td {
	font-weight: 800 !important;
	font-style: italic;
	background: rgba(84, 184, 255, .085) !important;
}

.cba-balance-grid tr.cba-balance-status-critical > td {
	background: rgba(255, 208, 72, .18) !important;
	color: #9a6b00 !important;
	font-weight: 700;
}

.cba-balance-grid tr.cba-balance-status-exceeded > td {
	background: rgba(255, 91, 91, .16) !important;
	color: #c63737 !important;
	font-weight: 800;
}

[data-theme="dark"] .cba-balance-grid tr.cba-balance-status-critical > td,
.mud-theme-dark .cba-balance-grid tr.cba-balance-status-critical > td {
	color: #ffd35c !important;
}

[data-theme="dark"] .cba-balance-grid tr.cba-balance-status-exceeded > td,
.mud-theme-dark .cba-balance-grid tr.cba-balance-status-exceeded > td {
	color: #ff8585 !important;
}

.cba-balance-exceeded-value {
	font-weight: 900;
}

.cba-balance-legend {
	display: flex;
	justify-content: flex-end;
	gap: 8px;
	padding: 0 0 7px;
}

.cba-balance-legend-item {
	border-radius: 999px;
	padding: 3px 9px;
	font-size: .68rem;
	font-weight: 800;
}

.cba-balance-legend-item.critical {
	background: rgba(255, 208, 72, .20);
	color: #9a6b00;
}

.cba-balance-legend-item.exceeded {
	background: rgba(255, 91, 91, .17);
	color: #c63737;
}

.cba-balance-total-grid,
.cba-balance-total-bar {
	margin-top: 0;
	border: 1px solid rgba(84, 184, 255, .24);
	border-top: 0;
	background: rgba(84, 184, 255, .075);
	padding: 9px 14px;
	display: flex;
	align-items: center;
	justify-content: flex-end;
	flex-wrap: wrap;
	gap: 8px 18px;
	font-size: .72rem;
}

.cba-balance-total-grid > span,
.cba-balance-total-bar > span {
	margin-right: auto;
	font-weight: 900;
	letter-spacing: .025em;
}

.cba-balance-total-bar.danger {
	background: rgba(255, 91, 91, .13);
	border-color: rgba(255, 91, 91, .28);
	color: #c63737;
}

.cba-balance-total-bar.final {
	background: rgba(22, 61, 105, .15);
	border-color: rgba(22, 61, 105, .32);
	font-size: .78rem;
}

.cba-balance-summary-cards {
	display: grid;
	grid-template-columns: repeat(3, minmax(220px, 1fr));
	gap: 10px;
	margin-bottom: 10px;
	min-width: 780px;
}

@media (max-width: 1100px) {
	.cba-balance-report-tabs {
		grid-template-columns: repeat(3, minmax(175px, 1fr));
	}
}

@media (max-width: 720px) {
	.cba-balance-report-tabs {
		grid-template-columns: repeat(2, minmax(180px, 1fr));
	}

	.cba-balance-filter-row {
		align-items: stretch;
	}

	.cba-balance-filter-row .mud-picker,
	.cba-balance-filter-row .mud-input-control {
		width: 100%;
	}
}

/* 008A15 · Estado General de Disponibilidades */
.cba-balance-composition-cards {
	display: grid;
	grid-template-columns: repeat(4, minmax(190px, 1fr));
	gap: 8px;
	margin: 0 0 14px;
	min-width: 820px;
}

.cba-balance-composition-cards > div {
	border: 1px solid rgba(84, 184, 255, .22);
	border-radius: 10px;
	background: rgba(84, 184, 255, .055);
	padding: 9px 12px;
	display: flex;
	flex-direction: column;
	gap: 3px;
}

.cba-balance-composition-cards span {
	font-size: .66rem;
	font-weight: 700;
	opacity: .76;
}

.cba-balance-composition-cards strong {
	font-size: .82rem;
	font-variant-numeric: tabular-nums;
}

.cba-balance-composition-cards > .final {
	background: rgba(22, 61, 105, .13);
	border-color: rgba(22, 61, 105, .30);
}

.cba-balance-section-title {
	margin: 14px 0 6px;
	padding: 7px 10px;
	border-left: 4px solid rgba(84, 184, 255, .78);
	background: rgba(84, 184, 255, .07);
	font-size: .73rem;
	font-weight: 850;
	letter-spacing: .015em;
	text-transform: uppercase;
}

.cba-balance-grid-disponibilidad-analisis {
	min-width: 1180px;
}

.cba-balance-grid-disponibilidad-detalle {
	min-width: 880px;
}

.cba-balance-total-grid.danger {
	background: rgba(255, 91, 91, .13);
	border-color: rgba(255, 91, 91, .28);
	color: #c63737;
}

/* 008A15a · Balance: geometría compacta alineada al grid. */
.cba-balance-toolbar {
	padding: 10px 14px 0;
}

.cba-balance-filter-row {
	width: auto;
}

.cba-balance-filter-row .cba-balance-date-field {
	width: 178px !important;
	min-width: 178px;
	flex: 0 0 178px;
}

.cba-balance-filter-row .cba-balance-threshold-field {
	width: 205px !important;
	min-width: 205px;
	flex: 0 0 205px;
}

.cba-balance-report-tabs-shell {
	padding: 14px 14px 8px;
	min-width: 0;
}

@media (max-width: 720px) {
	.cba-balance-toolbar {
		padding-left: 14px;
		padding-right: 14px;
	}

	.cba-balance-filter-row .cba-balance-date-field,
	.cba-balance-filter-row .cba-balance-threshold-field {
		width: min(205px, 100%) !important;
		min-width: 0;
		flex: 0 1 205px;
	}
}

/* ========================================================================== */
/* 008A15b · Umbral editable + separación de módulos de Ejecución            */
/* ========================================================================== */

/* Helper de partidas: espacio real para porcentaje + spin buttons. */
.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header {
	grid-template-columns: minmax(0, 1fr) minmax(175px, 205px) 150px 42px !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-oc-threshold-field {
	width: 150px !important;
	min-width: 150px !important;
}

/* Balance/Excedidas/Disponibilidades: controles arrancan exactamente en el
	 mismo left (14px) que los grids y comparten eje vertical. */
.cba-balance-controls {
	box-sizing: border-box;
	display: flex;
	align-items: flex-start;
	justify-content: flex-start;
	flex-wrap: wrap;
	gap: 12px;
	width: calc(100% - 28px);
	margin: 10px 14px 0;
	padding: 0;
}

.cba-balance-controls .cba-balance-date-field {
	width: 178px !important;
	min-width: 178px;
	flex: 0 0 178px;
}

.cba-balance-controls .cba-balance-threshold-field {
	width: 205px !important;
	min-width: 205px;
	flex: 0 0 205px;
}

.cba-balance-controls .cba-balance-date-field .mud-input-control,
.cba-balance-controls .cba-balance-threshold-field .mud-input-control {
	margin-top: 0 !important;
}

/* Los cuatro informes de Balance comparten una única línea; si la pantalla
	 queda angosta, la línea conserva su geometría y habilita scroll horizontal. */
.cba-balance-report-tabs-shell.four-tabs .cba-document-tabs {
	display: flex;
	flex-wrap: nowrap;
	overflow-x: auto;
}

.cba-balance-report-tabs-shell.four-tabs .cba-document-tab {
	flex: 1 1 0;
	min-width: 220px;
}

.cba-balance-inline-actions.standalone {
	padding-top: 10px;
}

@media (max-width: 720px) {
	.cba-balance-controls {
		width: calc(100% - 28px);
	}

	.cba-balance-controls .cba-balance-date-field,
	.cba-balance-controls .cba-balance-threshold-field {
		width: min(205px, 100%) !important;
		min-width: 0;
		flex: 0 1 205px;
	}
}

/* 008A15b · Ajuste final de alineación de inputs de Balance. */
.cba-balance-controls > .cba-balance-date-field,
.cba-balance-controls > .cba-balance-threshold-field {
	margin-left: 0 !important;
	margin-right: 0 !important;
}

.cba-balance-controls.single-control {
	justify-content: flex-start !important;
}

/* 008A15c · OP: selector de tipo exclusivo, estilo botón hundido. */
.cba-op-type-field {
	min-width: 250px;
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.cba-op-type-label {
	font-size: .72rem;
	font-weight: 700;
	color: var(--mud-palette-text-secondary);
	padding-left: 2px;
}

.cba-op-type-toggle {
	display: grid;
	grid-template-columns: 1fr 92px;
	gap: 4px;
	min-height: 40px;
	padding: 3px;
	border: 1px solid var(--mud-palette-lines-inputs);
	border-radius: 8px;
	background: color-mix(in srgb, var(--mud-palette-surface) 90%, transparent);
}

.cba-op-type-option {
	border: 0;
	border-radius: 6px;
	background: transparent;
	color: var(--mud-palette-text-secondary);
	font: inherit;
	font-size: .76rem;
	font-weight: 700;
	cursor: pointer;
	transition: background .16s ease, box-shadow .16s ease, color .16s ease, transform .16s ease;
}

.cba-op-type-option:hover:not(:disabled) {
	background: color-mix(in srgb, #54b8ff 9%, var(--mud-palette-surface));
}

.cba-op-type-option.selected {
	color: color-mix(in srgb, #54b8ff 72%, var(--mud-palette-text-primary));
	background: color-mix(in srgb, #54b8ff 16%, var(--mud-palette-surface));
	box-shadow: inset 0 2px 5px rgba(0,0,0,.18), inset 0 0 0 1px color-mix(in srgb, #54b8ff 34%, transparent);
	transform: translateY(1px);
}

.cba-op-type-option:disabled {
	cursor: default;
	opacity: .48;
}

/* Helper de erogaciones: umbral compacto, editable, con spin buttons y %. */
.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-header {
	grid-template-columns: minmax(0, 1fr) minmax(175px, 205px) 82px 42px !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-oc-threshold-field {
	width: 82px !important;
	min-width: 82px !important;
}

/* ========================================================================== */
/* 008A15c · Balance: totales alineados, estados fuertes y disponibilidades   */
/* ========================================================================== */
.cba-balance-aligned-total {
	width: 100%;
	table-layout: fixed;
	border-collapse: collapse;
	border: 1px solid rgba(84, 184, 255, .24);
	border-top: 0;
	background: rgba(84, 184, 255, .075);
	font-size: .72rem;
	font-variant-numeric: tabular-nums;
}

.cba-balance-aligned-total.recursos {
	min-width: 1380px;
}

.cba-balance-aligned-total.erogaciones {
	min-width: 1900px;
}

.cba-balance-aligned-total td {
	padding: 9px 14px;
	text-align: right;
	white-space: nowrap;
	font-weight: 800;
	border-right: 1px solid rgba(84, 184, 255, .10);
}

.cba-balance-aligned-total td.label {
	text-align: left;
	font-weight: 900;
	letter-spacing: .025em;
}

.cba-balance-grid tr.cba-balance-status-critical > td {
	color: #765000 !important;
}

.cba-balance-grid tr.cba-balance-status-exceeded > td {
	color: #a61f2d !important;
}

.cba-balance-total-grid.danger {
	color: #b93645 !important;
	font-weight: 850;
}

.cba-balance-legend-final {
	justify-content: flex-start;
	align-items: center;
	flex-wrap: wrap;
	margin-top: 8px;
	padding: 8px 0 2px;
	font-size: .69rem;
	font-weight: 650;
}

.cba-balance-legend-final .critical {
	color: #765000;
}

.cba-balance-legend-final .exceeded {
	color: #a61f2d;
}

.cba-balance-total-strip {
	margin: 6px 0 0;
	border: 1px solid rgba(22, 61, 105, .30);
	border-radius: 10px;
	background: rgba(22, 61, 105, .12);
	padding: 10px 14px;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas:
		"title value"
		"subtitle value";
	column-gap: 18px;
	align-items: center;
}

.cba-balance-total-strip .title {
	grid-area: title;
	font-size: .76rem;
	font-weight: 900;
	letter-spacing: .025em;
	text-transform: uppercase;
}

.cba-balance-total-strip .subtitle {
	grid-area: subtitle;
	margin-top: 2px;
	font-size: .66rem;
	opacity: .76;
}

.cba-balance-total-strip strong {
	grid-area: value;
	font-size: .88rem;
	font-weight: 900;
	font-style: italic;
	font-variant-numeric: tabular-nums;
	color: #163d69;
	white-space: nowrap;
}

[data-theme="dark"] .cba-balance-total-strip strong,
.mud-theme-dark .cba-balance-total-strip strong {
	color: #8bc4ff;
}

.cba-balance-section-gap {
	height: 12px;
}

.cba-balance-total-strip > div {
	grid-area: title;
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.cba-balance-total-strip > div .title,
.cba-balance-total-strip > div .subtitle {
	grid-area: auto;
}

.cba-balance-total-strip > strong {
	grid-area: value;
}

.cba-balance-total-strip > div .title {
	color: inherit;
	font-style: normal;
	font-size: .76rem;
}

.cba-balance-total-strip > div .subtitle {
	display: block;
}

/* ========================================================================== */
/* 008A15d · Scrollbars globales CBA                                           */
/* ========================================================================== */
:root {
	--cba-scrollbar-thumb: #4b5562;
	--cba-scrollbar-thumb-hover: #36404b;
	--cba-scrollbar-track: rgba(31, 41, 55, .10);
}

html,
body,
* {
	scrollbar-width: thin;
	scrollbar-color: var(--cba-scrollbar-thumb) var(--cba-scrollbar-track);
}

html::-webkit-scrollbar,
body::-webkit-scrollbar,
*::-webkit-scrollbar {
	width: 10px;
	height: 10px;
}

html::-webkit-scrollbar-track,
body::-webkit-scrollbar-track,
*::-webkit-scrollbar-track {
	background: var(--cba-scrollbar-track);
}

html::-webkit-scrollbar-thumb,
body::-webkit-scrollbar-thumb,
*::-webkit-scrollbar-thumb {
	background: var(--cba-scrollbar-thumb);
	border: 2px solid transparent;
	background-clip: padding-box;
	border-radius: 999px;
}

html::-webkit-scrollbar-thumb:hover,
body::-webkit-scrollbar-thumb:hover,
*::-webkit-scrollbar-thumb:hover {
	background: var(--cba-scrollbar-thumb-hover);
	border: 2px solid transparent;
	background-clip: padding-box;
}

/* ========================================================================== */
/* 008A15d · ajuste visual final: UI 008A13 + Balance + PDF                   */
/* ========================================================================== */

/* Scrollbars: una sola identidad grafito para menú, página y grids. */
:root {
	--cba-scrollbar-thumb: #3f4650;
	--cba-scrollbar-thumb-hover: #2e343c;
	--cba-scrollbar-track: rgba(31, 41, 55, .12);
}

/* OP: selector de tipo con la misma caja óptica que los controles Dense. */
.cba-op-type-field {
	position: relative !important;
	display: block !important;
	height: 40px !important;
	min-height: 40px !important;
	min-width: 250px !important;
	margin: 0 !important;
	padding: 0 !important;
}

.cba-op-type-field .cba-op-type-label {
	position: absolute !important;
	z-index: 2;
	left: 10px;
	top: -7px;
	padding: 0 4px;
	margin: 0 !important;
	line-height: 14px;
	font-size: .72rem;
	color: var(--mud-palette-text-secondary);
	background: var(--mud-palette-surface);
}

.cba-op-type-field .cba-op-type-toggle {
	box-sizing: border-box;
	display: grid !important;
	grid-template-columns: minmax(132px, 1fr) 92px !important;
	align-items: stretch !important;
	gap: 4px !important;
	width: 100% !important;
	height: 40px !important;
	min-height: 40px !important;
	padding: 3px !important;
	border: 1px solid var(--mud-palette-lines-inputs) !important;
	border-radius: 4px !important;
	background: transparent !important;
}

.cba-op-type-field .cba-op-type-option {
	height: 32px !important;
	min-height: 32px !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
}

/* Los cuatro cards del Balance conservan CbaDocumentTabBar, pero con texto
	 apenas más chico para que las cuatro funciones respiren en una sola línea. */
.cba-balance-report-tabs-shell .cba-document-tab-text {
	font-size: .70rem !important;
	letter-spacing: .005em;
}

.cba-balance-report-tabs-shell .cba-document-tab-count,
.cba-balance-report-tabs-shell .cba-document-tab-total {
	font-size: .66rem !important;
}

/* Balance: tablas nativas para reproducir fielmente los headers de dos pisos
	 del CBA histórico, incluidos los tres primeros headers con rowspan real. */
.cba-balance-native-scroll {
	width: 100%;
	overflow-x: auto;
	overflow-y: visible;
}

.cba-balance-native-table {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	table-layout: fixed;
	color: var(--mud-palette-text-primary);
	background: color-mix(in srgb, var(--mud-palette-surface) 97%, transparent);
	font-size: .73rem;
	font-variant-numeric: tabular-nums;
}

.cba-balance-native-recursos {
	min-width: 1380px;
}

.cba-balance-native-erogaciones {
	min-width: 1900px;
}

.cba-balance-native-consolidado {
	min-width: 1200px;
}

.cba-balance-native-table.compact {
	font-size: .68rem;
}

.cba-balance-native-table th,
.cba-balance-native-table td {
	box-sizing: border-box;
	padding: 7px 14px;
	border-right: 1px solid rgba(115, 137, 158, .16);
	border-bottom: 1px solid rgba(115, 137, 158, .14);
	overflow: hidden;
	text-overflow: ellipsis;
}

.cba-balance-native-table thead th {
	height: 31px;
	padding-top: 5px;
	padding-bottom: 5px;
	font-size: .66rem;
	font-weight: 850;
	line-height: 1.12;
	text-align: center;
	vertical-align: middle;
	white-space: normal;
}

.cba-balance-native-table.compact thead th {
	font-size: .61rem;
}

.cba-balance-native-table thead th.merged {
	vertical-align: middle !important;
	text-align: center !important;
}

.cba-balance-native-table thead th.group {
	letter-spacing: .025em;
}

.cba-balance-native-table .cba-balance-zone-blue {
	background: #cae0f6;
	color: #194a82;
	border-color: #97badb;
}

.cba-balance-native-table .cba-balance-zone-red {
	background: #f2ccd2;
	color: #822a34;
	border-color: #cf9ea6;
}

.cba-balance-native-table .cba-balance-zone-green {
	background: #cde8d6;
	color: #18603a;
	border-color: #99c6ab;
}

.cba-balance-native-table .cba-balance-zone-amber {
	background: #f6e1b8;
	color: #7a4a0a;
	border-color: #cdad75;
}

.cba-balance-native-table tbody tr:nth-child(even):not(.cba-balance-status-critical):not(.cba-balance-status-exceeded):not(.cba-balance-title-row) td {
	background: rgba(110, 139, 166, .035);
}

.cba-balance-native-table tbody td.number,
.cba-balance-native-table tfoot td.number {
	text-align: right;
	white-space: nowrap;
}

.cba-balance-native-table tbody tr.cba-balance-title-row > td {
	font-weight: 800;
	font-style: italic;
	background: rgba(84, 184, 255, .085) !important;
}

.cba-balance-native-table tbody tr.cba-balance-status-critical > td,
.cba-balance-grid tr.cba-balance-status-critical > td {
	background: rgba(255, 208, 72, .20) !important;
	color: #7c5100 !important;
	font-weight: 750 !important;
}

.cba-balance-native-table tbody tr.cba-balance-status-exceeded > td,
.cba-balance-grid tr.cba-balance-status-exceeded > td {
	background: rgba(255, 91, 91, .18) !important;
	color: #8f1426 !important;
	font-weight: 800 !important;
}

[data-theme="dark"] .cba-balance-native-table tbody tr.cba-balance-status-critical > td,
.mud-theme-dark .cba-balance-native-table tbody tr.cba-balance-status-critical > td,
[data-theme="dark"] .cba-balance-grid tr.cba-balance-status-critical > td,
.mud-theme-dark .cba-balance-grid tr.cba-balance-status-critical > td {
	color: #ffe08a !important;
}

[data-theme="dark"] .cba-balance-native-table tbody tr.cba-balance-status-exceeded > td,
.mud-theme-dark .cba-balance-native-table tbody tr.cba-balance-status-exceeded > td,
[data-theme="dark"] .cba-balance-grid tr.cba-balance-status-exceeded > td,
.mud-theme-dark .cba-balance-grid tr.cba-balance-status-exceeded > td {
	color: #ff9aa8 !important;
}

.cba-balance-native-table tfoot td {
	padding-top: 9px;
	padding-bottom: 9px;
	border-top: 2px solid rgba(54, 112, 176, .55);
	border-bottom: 1px solid rgba(54, 112, 176, .42);
	background: rgba(54, 112, 176, .18);
	color: color-mix(in srgb, #5fa9ff 70%, var(--mud-palette-text-primary));
	font-weight: 900;
}

.cba-balance-native-table tfoot td.label {
	letter-spacing: .035em;
}

/* Partidas excedidas: rojo más legible y total con foreground pastel claro. */
.cba-balance-grid-excedidas tr.cba-balance-status-exceeded > td {
	color: #8a1020 !important;
}

[data-theme="dark"] .cba-balance-grid-excedidas tr.cba-balance-status-exceeded > td,
.mud-theme-dark .cba-balance-grid-excedidas tr.cba-balance-status-exceeded > td {
	color: #ff9aa8 !important;
}

.cba-balance-total-grid.danger,
.cba-balance-total-grid.danger > span,
.cba-balance-total-grid.danger strong {
	color: #ffd9df !important;
}

/* Visor interno: el PDF sigue viniendo del endpoint application/pdf, pero CBA
	 permanece visible y el operador tiene una salida inequívoca. */
.cba-pdf-viewer-page {
	display: flex;
	flex-direction: column;
	gap: 10px;
	min-height: calc(100vh - 122px);
}

.cba-pdf-viewer-toolbar {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 8px 12px;
}

.cba-pdf-viewer-title {
	display: flex;
	flex-direction: column;
	gap: 1px;
	min-width: 0;
	margin-right: auto;
}

.cba-pdf-viewer-title strong {
	font-size: .82rem;
}

.cba-pdf-viewer-title span {
	font-size: .68rem;
	color: var(--mud-palette-text-secondary);
}

.cba-pdf-viewer-frame-wrap {
	flex: 1 1 auto;
	min-height: 640px;
	overflow: hidden;
	border: 1px solid rgba(110, 139, 166, .28);
	border-radius: 10px;
	background: #3a3a3a;
}

.cba-pdf-viewer-frame {
	display: block;
	width: 100%;
	height: calc(100vh - 205px);
	min-height: 640px;
	border: 0;
	background: #3a3a3a;
}

.cba-balance-total-grid.danger,
.cba-balance-total-grid.danger > span,
.cba-balance-total-grid.danger strong {
	text-shadow: 0 1px 1px rgba(70, 0, 12, .55);
}


/* ========================================================================== */
/* 008A15e · OP / scrollbars / Caja Diaria sobria / Balance dark / Dashboard */
/* ========================================================================== */

/* OP: el selector de tipo arranca en el mismo top óptico que los MudInput. */
.cba-op-header-fields > .cba-op-type-field {
  margin-top: 0 !important;
  align-self: end !important;
}

/* Scrollbars globales: grafito bien oscuro en menú, página, grids y dialogs. */
:root {
  --cba-scrollbar-thumb: #252c35;
  --cba-scrollbar-thumb-hover: #151a20;
  --cba-scrollbar-track: #0d1218;
}

html,
body,
.mud-layout,
.mud-main-content,
.cba-main,
.cba-drawer-menu-scroll,
.cba-users-grid-scroll,
.cba-balance-native-scroll,
.mud-table-container,
.mud-dialog-content,
.cba-presupuesto-dialog-body,
.cba-daily-two-tier-grid,
.cba-daily-summary-table,
* {
  scrollbar-width: thin !important;
  scrollbar-color: var(--cba-scrollbar-thumb) var(--cba-scrollbar-track) !important;
}

html::-webkit-scrollbar,
body::-webkit-scrollbar,
.mud-layout::-webkit-scrollbar,
.mud-main-content::-webkit-scrollbar,
.cba-main::-webkit-scrollbar,
.cba-drawer-menu-scroll::-webkit-scrollbar,
.cba-users-grid-scroll::-webkit-scrollbar,
.cba-balance-native-scroll::-webkit-scrollbar,
.mud-table-container::-webkit-scrollbar,
.mud-dialog-content::-webkit-scrollbar,
.cba-presupuesto-dialog-body::-webkit-scrollbar,
*::-webkit-scrollbar {
  width: 10px !important;
  height: 10px !important;
  background: var(--cba-scrollbar-track) !important;
}

html::-webkit-scrollbar-track,
body::-webkit-scrollbar-track,
.mud-layout::-webkit-scrollbar-track,
.mud-main-content::-webkit-scrollbar-track,
.cba-main::-webkit-scrollbar-track,
.cba-drawer-menu-scroll::-webkit-scrollbar-track,
.cba-users-grid-scroll::-webkit-scrollbar-track,
.cba-balance-native-scroll::-webkit-scrollbar-track,
.mud-table-container::-webkit-scrollbar-track,
.mud-dialog-content::-webkit-scrollbar-track,
.cba-presupuesto-dialog-body::-webkit-scrollbar-track,
*::-webkit-scrollbar-track {
  background: var(--cba-scrollbar-track) !important;
}

html::-webkit-scrollbar-thumb,
body::-webkit-scrollbar-thumb,
.mud-layout::-webkit-scrollbar-thumb,
.mud-main-content::-webkit-scrollbar-thumb,
.cba-main::-webkit-scrollbar-thumb,
.cba-drawer-menu-scroll::-webkit-scrollbar-thumb,
.cba-users-grid-scroll::-webkit-scrollbar-thumb,
.cba-balance-native-scroll::-webkit-scrollbar-thumb,
.mud-table-container::-webkit-scrollbar-thumb,
.mud-dialog-content::-webkit-scrollbar-thumb,
.cba-presupuesto-dialog-body::-webkit-scrollbar-thumb,
*::-webkit-scrollbar-thumb {
  background: var(--cba-scrollbar-thumb) !important;
  border: 2px solid var(--cba-scrollbar-track) !important;
  background-clip: padding-box !important;
  border-radius: 999px !important;
}

html::-webkit-scrollbar-thumb:hover,
body::-webkit-scrollbar-thumb:hover,
.mud-layout::-webkit-scrollbar-thumb:hover,
.mud-main-content::-webkit-scrollbar-thumb:hover,
.cba-main::-webkit-scrollbar-thumb:hover,
.cba-drawer-menu-scroll::-webkit-scrollbar-thumb:hover,
.cba-users-grid-scroll::-webkit-scrollbar-thumb:hover,
.cba-balance-native-scroll::-webkit-scrollbar-thumb:hover,
.mud-table-container::-webkit-scrollbar-thumb:hover,
.mud-dialog-content::-webkit-scrollbar-thumb:hover,
.cba-presupuesto-dialog-body::-webkit-scrollbar-thumb:hover,
*::-webkit-scrollbar-thumb:hover {
  background: var(--cba-scrollbar-thumb-hover) !important;
}

/* Balance web: las zonas mantienen la identidad dark; el PDF conserva su paleta pastel. */
.cba-balance-native-table .cba-balance-zone-blue {
  background: #162b43 !important;
  color: #b9d8ff !important;
  border-color: #315272 !important;
}
.cba-balance-native-table .cba-balance-zone-red {
  background: #46232d !important;
  color: #ffb6c0 !important;
  border-color: #71404b !important;
}
.cba-balance-native-table .cba-balance-zone-green {
  background: #18382d !important;
  color: #a9eccb !important;
  border-color: #315c4c !important;
}
.cba-balance-native-table .cba-balance-zone-amber {
  background: #473718 !important;
  color: #f5d28a !important;
  border-color: #715c2b !important;
}

/* Partidas excedidas: mismo foreground rojo-pastel claro que su TOTAL GENERAL. */
.cba-balance-grid-excedidas tr.cba-balance-status-exceeded > td {
  color: #ffd9df !important;
}

/* Caja Diaria: paleta deliberadamente sobria y reducida a dos tonos por bloque. */
.cba-daily-tone-income {
  --cba-daily-main: #36d399;
  --cba-daily-detail: #54b8ff;
}
.cba-daily-tone-expense {
  --cba-daily-main: #ff9f43;
  --cba-daily-detail: #54b8ff;
}
.cba-daily-tone-transfer {
  --cba-daily-main: #9474e8;
  --cba-daily-detail: #54b8ff;
}
.cba-daily-tone-availability {
  --cba-daily-main: #4f8dff;
  --cba-daily-detail: #54b8ff;
}

.cba-daily-tone-income .cba-daily-subsection-title,
.cba-daily-tone-expense .cba-daily-subsection-title,
.cba-daily-tone-transfer .cba-daily-subsection-title,
.cba-daily-tone-availability .cba-daily-subsection-title {
  border-color: color-mix(in srgb, var(--cba-daily-main) 42%, transparent) !important;
  border-left-color: var(--cba-daily-main) !important;
  background: color-mix(in srgb, var(--mud-palette-surface) 88%, var(--cba-daily-main) 12%) !important;
}

.cba-daily-tone-income .cba-daily-main-header,
.cba-daily-tone-expense .cba-daily-main-header,
.cba-daily-tone-transfer .cba-daily-main-header,
.cba-daily-tone-availability .cba-daily-main-header,
.cba-daily-tone-income .cba-daily-summary-header,
.cba-daily-tone-expense .cba-daily-summary-header,
.cba-daily-tone-transfer .cba-daily-summary-header,
.cba-daily-tone-availability .cba-daily-summary-header {
  background: color-mix(in srgb, var(--mud-palette-surface) 76%, var(--cba-daily-main) 24%) !important;
  border-bottom-color: color-mix(in srgb, var(--cba-daily-main) 34%, var(--mud-palette-table-lines)) !important;
}

.cba-daily-tone-income .cba-daily-main-row,
.cba-daily-tone-expense .cba-daily-main-row,
.cba-daily-tone-transfer .cba-daily-main-row,
.cba-daily-tone-availability .cba-daily-main-row {
  background: color-mix(in srgb, var(--mud-palette-surface) 94%, var(--cba-daily-main) 6%) !important;
}

.cba-daily-tone-income .cba-daily-detail-header,
.cba-daily-tone-expense .cba-daily-detail-header,
.cba-daily-tone-transfer .cba-daily-detail-header,
.cba-daily-tone-availability .cba-daily-detail-header {
  background: color-mix(in srgb, var(--mud-palette-surface) 78%, var(--cba-daily-detail) 22%) !important;
}

.cba-daily-tone-income .cba-daily-detail-row,
.cba-daily-tone-expense .cba-daily-detail-row,
.cba-daily-tone-transfer .cba-daily-detail-row,
.cba-daily-tone-availability .cba-daily-detail-row,
.cba-daily-tone-income .cba-daily-summary-row,
.cba-daily-tone-expense .cba-daily-summary-row,
.cba-daily-tone-transfer .cba-daily-summary-row,
.cba-daily-tone-availability .cba-daily-summary-row {
  background: color-mix(in srgb, var(--mud-palette-surface) 94%, var(--cba-daily-detail) 6%) !important;
}

.cba-daily-tone-income .cba-daily-detail-row:nth-child(even),
.cba-daily-tone-expense .cba-daily-detail-row:nth-child(even),
.cba-daily-tone-transfer .cba-daily-detail-row:nth-child(even),
.cba-daily-tone-availability .cba-daily-detail-row:nth-child(even) {
  background: color-mix(in srgb, var(--mud-palette-surface) 90%, var(--cba-daily-detail) 10%) !important;
}

.cba-daily-tone-income .cba-daily-document-total,
.cba-daily-tone-expense .cba-daily-document-total,
.cba-daily-tone-transfer .cba-daily-document-total,
.cba-daily-tone-availability .cba-daily-document-total,
.cba-daily-tone-income .cba-daily-category-total,
.cba-daily-tone-expense .cba-daily-category-total,
.cba-daily-tone-transfer .cba-daily-category-total,
.cba-daily-tone-availability .cba-daily-category-total,
.cba-daily-tone-income .cba-daily-summary-subtotal,
.cba-daily-tone-expense .cba-daily-summary-subtotal,
.cba-daily-tone-transfer .cba-daily-summary-subtotal,
.cba-daily-tone-availability .cba-daily-summary-subtotal {
  border-left-color: var(--cba-daily-main) !important;
  background: color-mix(in srgb, var(--mud-palette-surface) 82%, var(--cba-daily-main) 18%) !important;
}

/* Transferencias: violeta + celeste por columnas, sin arco iris. */
.cba-daily-transfer-grid .mud-table-head .mud-table-cell:nth-child(odd) {
  background: color-mix(in srgb, #171e2a 78%, #9474e8 22%) !important;
  color: #e6dcff !important;
}
.cba-daily-transfer-grid .mud-table-head .mud-table-cell:nth-child(even) {
  background: color-mix(in srgb, #171e2a 78%, #54b8ff 22%) !important;
  color: #d7edff !important;
}
.cba-daily-transfer-grid .mud-table-body .mud-table-cell:nth-child(odd) {
  background: color-mix(in srgb, var(--mud-palette-surface) 96%, #9474e8 4%) !important;
}
.cba-daily-transfer-grid .mud-table-body .mud-table-cell:nth-child(even) {
  background: color-mix(in srgb, var(--mud-palette-surface) 96%, #54b8ff 4%) !important;
}

/* Disponibilidades: azul + celeste. */
.cba-daily-availability-grid .mud-table-head .mud-table-cell:nth-child(odd) {
  background: color-mix(in srgb, #171e2a 76%, #4f8dff 24%) !important;
  color: #dbe8ff !important;
}
.cba-daily-availability-grid .mud-table-head .mud-table-cell:nth-child(even) {
  background: color-mix(in srgb, #171e2a 78%, #54b8ff 22%) !important;
  color: #d7edff !important;
}

/* Dashboard inicial. */
.cba-dashboard-page {
  padding-bottom: 18px;
}

.cba-dashboard-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.cba-dashboard-kpi {
  position: relative;
  overflow: hidden;
  min-height: 116px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-rows: auto auto auto;
  gap: 3px 12px;
  padding: 16px 18px 14px 22px;
  border: 1px solid rgba(132, 151, 178, .22);
  border-radius: 14px;
  color: var(--mud-palette-text-primary);
  text-align: left;
  font: inherit;
  cursor: pointer;
  background: color-mix(in srgb, var(--mud-palette-surface) 94%, var(--kpi) 6%);
  box-shadow: 0 10px 26px rgba(0,0,0,.11);
  transition: transform .15s ease, border-color .15s ease, background .15s ease;
}
.cba-dashboard-kpi::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 5px;
  background: var(--kpi);
}
.cba-dashboard-kpi:hover {
  transform: translateY(-2px);
  border-color: color-mix(in srgb, var(--kpi) 48%, transparent);
  background: color-mix(in srgb, var(--mud-palette-surface) 90%, var(--kpi) 10%);
}
.cba-dashboard-kpi.income { --kpi: #36d399; }
.cba-dashboard-kpi.expense { --kpi: #ff9f43; }
.cba-dashboard-kpi.result { --kpi: #9474e8; }
.cba-dashboard-kpi.availability { --kpi: #54b8ff; }
.cba-dashboard-kpi .label {
  grid-column: 1;
  font-size: .66rem;
  font-weight: 800;
  letter-spacing: .055em;
  color: var(--mud-palette-text-secondary);
}
.cba-dashboard-kpi strong {
  grid-column: 1;
  font-size: 1.22rem;
  font-weight: 800;
  font-variant-numeric: tabular-nums;
}
.cba-dashboard-kpi small {
  grid-column: 1;
  font-size: .65rem;
  color: var(--mud-palette-text-secondary);
}
.cba-dashboard-kpi > .mud-icon-root {
  grid-column: 2;
  grid-row: 1 / 4;
  align-self: center;
  font-size: 2rem;
  color: var(--kpi);
  opacity: .88;
}

.cba-dashboard-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 12px;
}
.cba-dashboard-panel {
  padding: 16px;
  min-width: 0;
}
.cba-dashboard-trend,
.cba-dashboard-execution { grid-column: span 8; }
.cba-dashboard-composition,
.cba-dashboard-alerts { grid-column: span 4; }

.cba-dashboard-panel-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 14px;
}
.cba-dashboard-panel-head > div:first-child {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.cba-dashboard-panel-head .eyebrow {
  font-size: .62rem;
  font-weight: 850;
  letter-spacing: .08em;
  color: var(--mud-palette-primary);
}
.cba-dashboard-panel-head strong { font-size: .94rem; }
.cba-dashboard-panel-head small {
  font-size: .65rem;
  color: var(--mud-palette-text-secondary);
}
.cba-dashboard-legend {
  display: flex;
  gap: 10px;
  font-size: .64rem;
  color: var(--mud-palette-text-secondary);
}
.cba-dashboard-legend span { display: flex; align-items: center; gap: 5px; }
.cba-dashboard-legend i,
.cba-dashboard-composition-list i {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  display: inline-block;
}
.cba-dashboard-legend i.income { background:#36d399; }
.cba-dashboard-legend i.expense { background:#ff9f43; }

.cba-dashboard-chart-area {
  position: relative;
  min-height: 255px;
  padding: 8px 4px 24px 44px;
}
.cba-dashboard-y-label {
  position: absolute;
  top: 3px;
  left: 0;
  width: 40px;
  text-align: right;
  font-size: .58rem;
  color: var(--mud-palette-text-secondary);
}
.cba-dashboard-line-chart {
  width: 100%;
  height: 205px;
  overflow: visible;
}
.cba-dashboard-line-chart .grid {
  stroke: rgba(130,150,175,.18);
  stroke-width: .35;
}
.cba-dashboard-line-chart .series {
  fill: none;
  vector-effect: non-scaling-stroke;
  stroke-width: 2.2;
  stroke-linejoin: round;
  stroke-linecap: round;
}
.cba-dashboard-line-chart .series.income { stroke:#36d399; }
.cba-dashboard-line-chart .series.expense { stroke:#ff9f43; }
.cba-dashboard-x-labels {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 4px;
  font-size: .58rem;
  text-align: center;
  color: var(--mud-palette-text-secondary);
}

.cba-dashboard-donut-wrap {
  display: grid;
  grid-template-columns: 132px 1fr;
  gap: 18px;
  align-items: center;
  min-height: 235px;
}
.cba-dashboard-donut {
  width: 126px;
  aspect-ratio: 1;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: conic-gradient(#54b8ff 0 var(--cba-dashboard-cash), #9474e8 var(--cba-dashboard-cash) 100%);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.04);
}
.cba-dashboard-donut > div {
  width: 78px;
  aspect-ratio: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: var(--mud-palette-surface);
}
.cba-dashboard-donut strong { font-size: .92rem; }
.cba-dashboard-donut span { font-size: .58rem; color:var(--mud-palette-text-secondary); }
.cba-dashboard-composition-list {
  display: grid;
  gap: 8px;
}
.cba-dashboard-composition-list button {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 2px 8px;
  align-items: center;
  padding: 9px 0;
  border: 0;
  border-bottom: 1px solid rgba(132,151,178,.14);
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.cba-dashboard-composition-list i { grid-row: 1 / 3; }
.cba-dashboard-composition-list i.cash { background:#54b8ff; }
.cba-dashboard-composition-list i.bank { background:#9474e8; }
.cba-dashboard-composition-list span { font-size:.66rem; color:var(--mud-palette-text-secondary); }
.cba-dashboard-composition-list strong { font-size:.72rem; font-variant-numeric:tabular-nums; }

.cba-dashboard-progress-list { display:grid; gap:18px; padding:8px 2px; }
.cba-dashboard-progress-row .meta {
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin-bottom:6px;
  font-size:.68rem;
}
.cba-dashboard-progress-row .meta strong { font-variant-numeric:tabular-nums; }
.cba-dashboard-progress-row .track {
  height:9px;
  border-radius:999px;
  overflow:hidden;
  background:rgba(130,150,175,.13);
}
.cba-dashboard-progress-row .track i { display:block; height:100%; border-radius:inherit; background:var(--progress); }
.cba-dashboard-progress-row.income { --progress:#36d399; }
.cba-dashboard-progress-row.commit { --progress:#f4c95d; }
.cba-dashboard-progress-row.expense { --progress:#ff9f43; }

.cba-dashboard-alert-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.cba-dashboard-alert-grid button {
  min-height:86px;
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:8px;
  padding:10px;
  border:1px solid color-mix(in srgb, var(--alert) 28%, transparent);
  border-radius:11px;
  background:color-mix(in srgb, var(--mud-palette-surface) 92%, var(--alert) 8%);
  color:inherit;
  text-align:left;
  cursor:pointer;
}
.cba-dashboard-alert-grid button:disabled { opacity:.45; cursor:default; }
.cba-dashboard-alert-grid button .mud-icon-root { color:var(--alert); }
.cba-dashboard-alert-grid button span { font-size:.64rem; line-height:1.15; }
.cba-dashboard-alert-grid button strong { font-size:1rem; color:var(--alert); }
.cba-dashboard-alert-grid .warning { --alert:#f4c95d; }
.cba-dashboard-alert-grid .danger { --alert:#ff667d; }
.cba-dashboard-alert-grid .violet { --alert:#9474e8; }
.cba-dashboard-alert-grid .cyan { --alert:#54b8ff; }

.cba-dashboard-no-access {
  min-height:150px;
  display:flex;
  align-items:center;
  gap:16px;
  padding:24px;
}
.cba-dashboard-no-access > div { display:flex; flex-direction:column; gap:4px; }
.cba-dashboard-no-access span { color:var(--mud-palette-text-secondary); font-size:.72rem; }

@media (max-width: 1100px) {
  .cba-dashboard-kpis { grid-template-columns:repeat(2, minmax(0,1fr)); }
  .cba-dashboard-trend,
  .cba-dashboard-execution { grid-column:span 7; }
  .cba-dashboard-composition,
  .cba-dashboard-alerts { grid-column:span 5; }
  .cba-dashboard-donut-wrap { grid-template-columns:1fr; justify-items:center; }
  .cba-dashboard-composition-list { width:100%; }
}

@media (max-width: 760px) {
  .cba-dashboard-kpis { grid-template-columns:1fr; }
  .cba-dashboard-grid { grid-template-columns:1fr; }
  .cba-dashboard-trend,
  .cba-dashboard-execution,
  .cba-dashboard-composition,
  .cba-dashboard-alerts { grid-column:1; }
  .cba-dashboard-panel-head { flex-direction:column; }
  .cba-dashboard-alert-grid { grid-template-columns:1fr; }
}

/* 008A15e final · el foreground de Partidas Excedidas coincide con el TOTAL
   también bajo selectores específicos de tema oscuro. */
[data-theme="dark"] .cba-balance-grid-excedidas tr.cba-balance-status-exceeded > td,
.mud-theme-dark .cba-balance-grid-excedidas tr.cba-balance-status-exceeded > td,
.cba-theme-dark .cba-balance-grid-excedidas tr.cba-balance-status-exceeded > td {
  color: #ffd9df !important;
}

/* Disponibilidades de Caja Diaria: azul + celeste también en el cuerpo. */
.cba-daily-availability-grid .mud-table-body .mud-table-cell:nth-child(odd) {
  background: color-mix(in srgb, var(--mud-palette-surface) 95%, #4f8dff 5%) !important;
}
.cba-daily-availability-grid .mud-table-body .mud-table-cell:nth-child(even) {
  background: color-mix(in srgb, var(--mud-palette-surface) 95%, #54b8ff 5%) !important;
}

/* Resumen final de disponibilidades: misma dupla azul/celeste del bloque. */
.cba-daily-tone-availability .cba-teso-general-summary tbody tr:not(.cba-summary-final):nth-child(odd) td {
  background: color-mix(in srgb, var(--mud-palette-surface) 91%, #4f8dff 9%) !important;
}
.cba-daily-tone-availability .cba-teso-general-summary tbody tr:not(.cba-summary-final):nth-child(even) td {
  background: color-mix(in srgb, var(--mud-palette-surface) 91%, #54b8ff 9%) !important;
}
.cba-daily-tone-availability .cba-teso-general-summary .cba-summary-final td {
  background: color-mix(in srgb, var(--mud-palette-surface) 78%, #4f8dff 22%) !important;
  color: #dbe8ff !important;
  font-weight: 900 !important;
}

/* =============================================================================
   008A15f · Listados finales
   ============================================================================= */
.cba-listado-card {
  padding: 14px !important;
  overflow: hidden;
}

.cba-listado-filtros {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: nowrap;
  width: 100%;
  margin: 0 0 8px 0;
}

.cba-listado-filtros-wrap {
  flex-wrap: wrap;
}

.cba-date-compact {
  width: 168px !important;
  min-width: 168px !important;
  max-width: 168px !important;
}

.cba-select-medium {
  width: 215px !important;
  min-width: 215px !important;
}

.cba-person-range {
  width: 310px;
  min-width: 260px;
}

.cba-person-range .cba-persona-autocomplete-field {
  width: 100%;
}

.cba-listado-actions {
  margin: 3px 0 7px 0;
}

.cba-report-scroll {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: visible;
}

.cba-document-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.cba-document-block,
.cba-provider-movement {
  min-width: 850px;
}

.cba-provider-movement + .cba-provider-movement {
  margin-top: 5px;
}

.cba-listing-table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
  table-layout: auto;
  font-size: .77rem;
  color: var(--mud-palette-text-primary);
  background: rgba(16, 23, 31, .60);
}

.cba-listing-table th,
.cba-listing-table td {
  padding: 6px 14px;
  border: 1px solid rgba(148, 163, 184, .20);
  white-space: nowrap;
  vertical-align: middle;
}

.cba-listing-table th {
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .028em;
  text-transform: uppercase;
  text-align: left;
}

.cba-listing-table .num {
  text-align: right;
}

.cba-listing-table .strong,
.cba-listing-table strong {
  font-weight: 800;
}

.cba-listing-table .arrow {
  width: 28px;
  min-width: 28px;
  max-width: 28px;
  padding-left: 8px;
  padding-right: 4px;
  text-align: center;
}

.cba-detail-table {
  margin-top: -1px;
  font-size: .73rem;
}

.cba-detail-table td {
  background: rgba(16, 35, 48, .50);
}

.cba-listing-table.zone-green th,
.cba-listado-total.zone-green,
.cba-person-mini-card.zone-green {
  background: rgba(27, 94, 75, .62);
  color: #d6fff1;
  border-color: rgba(72, 201, 151, .42);
}

.cba-listing-table.zone-orange th,
.cba-listado-total.zone-orange {
  background: rgba(126, 69, 27, .68);
  color: #ffe8d1;
  border-color: rgba(242, 153, 74, .44);
}

.cba-listing-table.zone-violet th,
.cba-listado-total.zone-violet,
.cba-person-mini-card.zone-violet {
  background: rgba(79, 55, 125, .70);
  color: #eee4ff;
  border-color: rgba(181, 140, 255, .45);
}

.cba-listing-table.zone-cyan th {
  background: rgba(31, 79, 96, .72);
  color: #d9f8ff;
  border-color: rgba(88, 190, 214, .42);
}

.cba-row-saldo-anterior td {
  background: rgba(27, 105, 130, .42) !important;
  color: #dffaff;
  font-weight: 800;
}

.cba-listado-total {
  min-width: 360px;
  margin-top: 8px;
  padding: 8px 14px;
  display: flex;
  justify-content: space-between;
  gap: 22px;
  border: 1px solid;
  border-radius: 7px;
  font-size: .77rem;
  font-weight: 800;
  text-transform: uppercase;
}

.cba-listado-total.compact {
  margin-top: -1px;
  border-radius: 0 0 7px 7px;
}

.cba-listado-total.provider-total {
  justify-content: flex-end;
  flex-wrap: wrap;
}

.cba-listado-total.provider-total span {
  margin-right: auto;
}

.cba-person-group {
  min-width: 930px;
  margin-bottom: 10px;
}

.cba-person-mini-card {
  display: grid;
  grid-template-columns: minmax(210px, 1.8fr) minmax(180px, 1.4fr) minmax(140px, 1fr) auto auto;
  gap: 10px 18px;
  align-items: center;
  width: max-content;
  min-width: min(820px, 100%);
  max-width: 100%;
  padding: 8px 14px;
  margin-bottom: 6px;
  border: 1px solid;
  border-left-width: 4px;
  border-radius: 8px;
  font-size: .73rem;
}

.cba-person-mini-card strong {
  font-size: .80rem;
}

@media (max-width: 900px) {
  .cba-listado-filtros,
  .cba-listado-filtros-wrap {
    flex-wrap: wrap;
  }
  .cba-person-range {
    width: min(100%, 330px);
  }
  .cba-person-mini-card {
    grid-template-columns: 1fr 1fr;
  }
}

/* =============================================================================
   008A15g · Tema global light/dark consistente + scrollbars CBA
   ============================================================================= */
:root {
  --cba-scroll-thumb: #252c35;
  --cba-scroll-thumb-hover: #161b21;
  --cba-scroll-track: rgba(104, 118, 137, .13);
}

html, body, .mud-layout, .mud-main-content, .cba-drawer-menu-scroll,
.cba-users-grid-scroll, .cba-report-scroll, .mud-table-container,
.cba-presupuesto-dialog-body, .cba-general-picker-grid, .cba-document-tabs {
  scrollbar-color: var(--cba-scroll-thumb) var(--cba-scroll-track) !important;
  scrollbar-width: thin !important;
}

html::-webkit-scrollbar, body::-webkit-scrollbar,
.mud-layout::-webkit-scrollbar, .mud-main-content::-webkit-scrollbar,
.cba-drawer-menu-scroll::-webkit-scrollbar, .cba-users-grid-scroll::-webkit-scrollbar,
.cba-report-scroll::-webkit-scrollbar, .mud-table-container::-webkit-scrollbar,
.cba-presupuesto-dialog-body::-webkit-scrollbar, .cba-general-picker-grid::-webkit-scrollbar,
.cba-document-tabs::-webkit-scrollbar {
  width: 10px !important;
  height: 10px !important;
}
html::-webkit-scrollbar-track, body::-webkit-scrollbar-track,
.mud-layout::-webkit-scrollbar-track, .mud-main-content::-webkit-scrollbar-track,
.cba-drawer-menu-scroll::-webkit-scrollbar-track, .cba-users-grid-scroll::-webkit-scrollbar-track,
.cba-report-scroll::-webkit-scrollbar-track, .mud-table-container::-webkit-scrollbar-track,
.cba-presupuesto-dialog-body::-webkit-scrollbar-track, .cba-general-picker-grid::-webkit-scrollbar-track,
.cba-document-tabs::-webkit-scrollbar-track {
  background: var(--cba-scroll-track) !important;
}
html::-webkit-scrollbar-thumb, body::-webkit-scrollbar-thumb,
.mud-layout::-webkit-scrollbar-thumb, .mud-main-content::-webkit-scrollbar-thumb,
.cba-drawer-menu-scroll::-webkit-scrollbar-thumb, .cba-users-grid-scroll::-webkit-scrollbar-thumb,
.cba-report-scroll::-webkit-scrollbar-thumb, .mud-table-container::-webkit-scrollbar-thumb,
.cba-presupuesto-dialog-body::-webkit-scrollbar-thumb, .cba-general-picker-grid::-webkit-scrollbar-thumb,
.cba-document-tabs::-webkit-scrollbar-thumb {
  background: var(--cba-scroll-thumb) !important;
  border: 2px solid transparent !important;
  border-radius: 999px !important;
  background-clip: padding-box !important;
}
html::-webkit-scrollbar-thumb:hover, body::-webkit-scrollbar-thumb:hover,
.mud-layout::-webkit-scrollbar-thumb:hover, .mud-main-content::-webkit-scrollbar-thumb:hover,
.cba-drawer-menu-scroll::-webkit-scrollbar-thumb:hover, .cba-users-grid-scroll::-webkit-scrollbar-thumb:hover,
.cba-report-scroll::-webkit-scrollbar-thumb:hover, .mud-table-container::-webkit-scrollbar-thumb:hover,
.cba-presupuesto-dialog-body::-webkit-scrollbar-thumb:hover, .cba-general-picker-grid::-webkit-scrollbar-thumb:hover,
.cba-document-tabs::-webkit-scrollbar-thumb:hover {
  background: var(--cba-scroll-thumb-hover) !important;
  background-clip: padding-box !important;
}

/* El portal de MudDialog no debe aportar una placa rectangular detrás del dialog. */
.mud-dialog.cba-scroll-dialog-host {
  background: transparent !important;
  box-shadow: none !important;
  border-radius: 18px !important;
  overflow: hidden !important;
}

body.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog,
html.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog {
  color: #1d2a3a !important;
  border-color: #ccd7e4 !important;
  background: linear-gradient(145deg, #ffffff, #f7f9fc 62%, #eef3f8) !important;
  box-shadow: 0 28px 70px rgba(45, 62, 84, .24) !important;
}
body.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header,
html.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header {
  background: linear-gradient(90deg,
    color-mix(in srgb, var(--cba-dialog-accent, var(--dialog-accent, #54b8ff)) 13%, #ffffff),
    color-mix(in srgb, var(--cba-dialog-accent, var(--dialog-accent, #54b8ff)) 5%, #f7f9fc)) !important;
  color: #24364b !important;
}
body.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header .mud-typography,
body.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header .mud-icon-root,
html.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header .mud-typography,
html.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-header .mud-icon-root {
  color: #29415a !important;
}
body.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-actions,
html.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-actions {
  border-top-color: #d8e1eb !important;
  background: #f7f9fc !important;
}
body.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-body,
html.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-body {
  background: #ffffff !important;
}

/* Contraste fiable de botones en light. */
body.cba-theme-light .mud-button-root:not(.mud-disabled),
html.cba-theme-light .mud-button-root:not(.mud-disabled) {
  text-shadow: none !important;
}
body.cba-theme-light .mud-button-text:not(.mud-disabled),
html.cba-theme-light .mud-button-text:not(.mud-disabled) {
  color: #31506f !important;
}
body.cba-theme-light .mud-button-outlined:not(.mud-disabled),
html.cba-theme-light .mud-button-outlined:not(.mud-disabled) {
  color: #2d455f !important;
}
body.cba-theme-light .cba-action-button,
html.cba-theme-light .cba-action-button {
  color: #485c73 !important;
}

/* Header principal suave en light, sin bloque azul intenso. */
body.cba-theme-light .cba-appbar,
html.cba-theme-light .cba-appbar {
  color: #25384e !important;
  border-bottom-color: #d7e0ea !important;
  background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(245,248,252,.97)) !important;
  box-shadow: 0 8px 24px rgba(45,62,84,.10) !important;
}
body.cba-theme-light .cba-global-status-strip,
html.cba-theme-light .cba-global-status-strip {
  color: #51667d !important;
  border-top-color: #e2e8f0 !important;
  background: rgba(242,246,250,.94) !important;
}

/* Todas las superficies custom de informes deben obedecer el tema. */
body.cba-theme-light .cba-listing-table,
html.cba-theme-light .cba-listing-table,
body.cba-theme-light .cba-daily-two-tier-grid,
html.cba-theme-light .cba-daily-two-tier-grid,
body.cba-theme-light .cba-daily-summary-table,
html.cba-theme-light .cba-daily-summary-table {
  color: #24364b !important;
  background: #ffffff !important;
}
body.cba-theme-light .cba-listing-table td,
html.cba-theme-light .cba-listing-table td,
body.cba-theme-light .cba-detail-table td,
html.cba-theme-light .cba-detail-table td {
  color: #26394f !important;
  background: #ffffff !important;
  border-color: #d9e2ec !important;
}
body.cba-theme-light .cba-listing-table tbody tr:nth-child(even) td,
html.cba-theme-light .cba-listing-table tbody tr:nth-child(even) td {
  background: #f6f8fb !important;
}
body.cba-theme-light .cba-row-saldo-anterior td,
html.cba-theme-light .cba-row-saldo-anterior td {
  color: #14556c !important;
  background: #dff5fb !important;
}

/* Document tabs/cards: light real; dark conserva el aspecto histórico. */
body.cba-theme-light .cba-document-tab,
html.cba-theme-light .cba-document-tab {
  color: #4d6076 !important;
  border-color: #d3dde8 !important;
  background: linear-gradient(180deg, #ffffff, #f2f6fa) !important;
  box-shadow: 0 5px 14px rgba(45,62,84,.08) !important;
}
body.cba-theme-light .cba-document-tab:hover:not(:disabled),
html.cba-theme-light .cba-document-tab:hover:not(:disabled) {
  color: #24384f !important;
  background: color-mix(in srgb, #ffffff 84%, var(--cba-document-tab-accent, #4f8dff) 16%) !important;
}
body.cba-theme-light .cba-document-tab.selected,
html.cba-theme-light .cba-document-tab.selected {
  color: #1f344b !important;
  border-color: color-mix(in srgb, var(--cba-document-tab-accent, #4f8dff) 52%, #c7d4e3) !important;
  background: color-mix(in srgb, #ffffff 78%, var(--cba-document-tab-accent, #4f8dff) 22%) !important;
}
body.cba-theme-light .cba-document-tab-total,
html.cba-theme-light .cba-document-tab-total { color:#61748a !important; }
body.cba-theme-light .cba-document-tab-count,
html.cba-theme-light .cba-document-tab-count { background:rgba(45,62,84,.08) !important; }

/* Custom grids que antes fijaban fondos dark. */
body.cba-theme-light .cba-grid .mud-table-root,
body.cba-theme-light .cba-grid .mud-table-container,
html.cba-theme-light .cba-grid .mud-table-root,
html.cba-theme-light .cba-grid .mud-table-container {
  color: #26394f !important;
  background: rgba(255,255,255,.96) !important;
}
body.cba-theme-light .cba-grid .mud-table-body .mud-table-row,
html.cba-theme-light .cba-grid .mud-table-body .mud-table-row { background:#ffffff !important; }
body.cba-theme-light .cba-grid .mud-table-body .mud-table-row:nth-child(even),
html.cba-theme-light .cba-grid .mud-table-body .mud-table-row:nth-child(even) { background:#f5f8fb !important; }

/* =============================================================================
   008A15g · Caja Diaria · paleta final aprobada
   ============================================================================= */
.cba-daily-tone-income { --cba-daily-main:#36d399; --cba-daily-detail:#36d399; }
.cba-daily-tone-expense { --cba-daily-main:#ff667d; --cba-daily-detail:#ff9f43; }
.cba-daily-tone-transfer { --cba-daily-main:#9474e8; --cba-daily-detail:#9474e8; }
.cba-daily-tone-availability { --cba-daily-main:#54b8ff; --cba-daily-detail:#54b8ff; }

/* Ingresos: detalle de recibos conserva verde/celeste; sólo el resumen es todo verde. */
.cba-daily-tone-income .cba-daily-document-block .cba-daily-detail-header {
  background:color-mix(in srgb,var(--mud-palette-surface) 78%,#54b8ff 22%) !important;
}
.cba-daily-tone-income .cba-daily-document-block .cba-daily-detail-row {
  background:color-mix(in srgb,var(--mud-palette-surface) 94%,#54b8ff 6%) !important;
}
.cba-daily-tone-income .cba-daily-document-block .cba-daily-detail-row:nth-child(even) {
  background:color-mix(in srgb,var(--mud-palette-surface) 90%,#54b8ff 10%) !important;
}
.cba-daily-tone-income .cba-daily-summary-header,
.cba-daily-tone-income .cba-daily-summary-row,
.cba-daily-tone-income .cba-daily-summary-subtotal,
.cba-daily-tone-income .cba-daily-category-total {
  background:color-mix(in srgb,var(--mud-palette-surface) 82%,#36d399 18%) !important;
  border-color:color-mix(in srgb,#36d399 40%,var(--mud-palette-table-lines)) !important;
}

/* Egresos: cabecera principal roja, detalle naranja, resumen completamente rojo. */
.cba-daily-tone-expense .cba-daily-main-header,
.cba-daily-tone-expense .cba-daily-main-row,
.cba-daily-tone-expense .cba-daily-document-total {
  background:color-mix(in srgb,var(--mud-palette-surface) 80%,#ff667d 20%) !important;
  border-color:color-mix(in srgb,#ff667d 40%,var(--mud-palette-table-lines)) !important;
}
.cba-daily-tone-expense .cba-daily-detail-header {
  background:color-mix(in srgb,var(--mud-palette-surface) 76%,#ff9f43 24%) !important;
}
.cba-daily-tone-expense .cba-daily-detail-row {
  background:color-mix(in srgb,var(--mud-palette-surface) 93%,#ff9f43 7%) !important;
}
.cba-daily-tone-expense .cba-daily-detail-row:nth-child(even) {
  background:color-mix(in srgb,var(--mud-palette-surface) 89%,#ff9f43 11%) !important;
}
.cba-daily-tone-expense .cba-daily-summary-header,
.cba-daily-tone-expense .cba-daily-summary-row,
.cba-daily-tone-expense .cba-daily-summary-subtotal,
.cba-daily-tone-expense .cba-daily-category-total {
  background:color-mix(in srgb,var(--mud-palette-surface) 82%,#ff667d 18%) !important;
  border-color:color-mix(in srgb,#ff667d 40%,var(--mud-palette-table-lines)) !important;
}

/* Transferencias: violeta sobrio en bloque y resumen. */
.cba-daily-transfer-grid .mud-table-head .mud-table-cell,
.cba-daily-transfer-grid .mud-table-body .mud-table-cell {
  background:color-mix(in srgb,var(--mud-palette-surface) 88%,#9474e8 12%) !important;
  color:var(--mud-palette-text-primary) !important;
}
.cba-daily-transfer-grid .mud-table-head .mud-table-cell {
  background:color-mix(in srgb,var(--mud-palette-surface) 72%,#9474e8 28%) !important;
  color:color-mix(in srgb,#9474e8 28%,var(--mud-palette-text-primary)) !important;
}
.cba-daily-tone-transfer .cba-daily-summary-header,
.cba-daily-tone-transfer .cba-daily-summary-row,
.cba-daily-tone-transfer .cba-daily-category-total {
  background:color-mix(in srgb,var(--mud-palette-surface) 82%,#9474e8 18%) !important;
}

/* Disponibilidades: Cajas celeste; Bancos azul; resumen celeste. */
.cba-daily-availability-grid:not(.cba-daily-bank-grid) .mud-table-head .mud-table-cell {
  background:color-mix(in srgb,var(--mud-palette-surface) 72%,#54b8ff 28%) !important;
  color:color-mix(in srgb,#2585c7 52%,var(--mud-palette-text-primary)) !important;
}
.cba-daily-availability-grid:not(.cba-daily-bank-grid) .mud-table-body .mud-table-cell {
  background:color-mix(in srgb,var(--mud-palette-surface) 91%,#54b8ff 9%) !important;
}
.cba-daily-bank-grid .mud-table-head .mud-table-cell {
  background:color-mix(in srgb,var(--mud-palette-surface) 70%,#4f8dff 30%) !important;
  color:color-mix(in srgb,#2f6fd6 54%,var(--mud-palette-text-primary)) !important;
}
.cba-daily-bank-grid .mud-table-body .mud-table-cell {
  background:color-mix(in srgb,var(--mud-palette-surface) 91%,#4f8dff 9%) !important;
}
.cba-daily-tone-availability .cba-teso-general-summary tbody td,
.cba-daily-tone-availability .cba-teso-general-summary .cba-summary-final td {
  background:color-mix(in srgb,var(--mud-palette-surface) 82%,#54b8ff 18%) !important;
  color:var(--mud-palette-text-primary) !important;
}

/* ========================================================================== */
/* 008A15g · Paginación server-side de listados                               */
/* ========================================================================== */
.cba-list-pager {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 48px;
  padding: 7px 14px;
  border-top: 1px solid color-mix(in srgb, var(--mud-palette-lines-default) 70%, transparent);
  color: var(--mud-palette-text-secondary);
}

.cba-list-pager-meta,
.cba-list-pager-controls {
  display: flex;
  align-items: center;
  gap: 7px;
}

.cba-list-pager-meta strong,
.cba-list-pager-page strong {
  color: var(--mud-palette-text-primary);
}

.cba-list-page-size {
  width: 96px !important;
  margin-left: 6px !important;
}

.cba-list-page-size .mud-input-control-input-container,
.cba-list-page-size .mud-input-root {
  min-height: 36px !important;
}

@media (max-width: 720px) {
  .cba-list-pager {
    align-items: flex-start;
    flex-direction: column;
  }
  .cba-list-pager-controls {
    width: 100%;
    flex-wrap: wrap;
  }
}

/* =============================================================================
   008A15g · Cierre visual: alineación OP, scrollbars, Libro Imputaciones,
              Dashboard v2 y superficies light/dark
   ============================================================================= */

/* OP: todos los controles de la fila comienzan en el mismo top. */
.cba-op-header-fields > * {
  align-self: start !important;
}
.cba-op-header-fields > .cba-op-type-field {
  margin-top: 0 !important;
  align-self: start !important;
  transform: none !important;
}

/* Scrollbars: regla final universal para evitar que Chrome/MudBlazor deje
   track/thumb claros en main, drawer o contenedores internos. */
:root {
  --cba-scrollbar-thumb: #222933;
  --cba-scrollbar-thumb-hover: #11161c;
  --cba-scrollbar-track: #0c1117;
}
* {
  scrollbar-width: thin !important;
  scrollbar-color: var(--cba-scrollbar-thumb) var(--cba-scrollbar-track) !important;
}
*::-webkit-scrollbar {
  width: 10px !important;
  height: 10px !important;
  background: var(--cba-scrollbar-track) !important;
}
*::-webkit-scrollbar-track,
*::-webkit-scrollbar-corner {
  background: var(--cba-scrollbar-track) !important;
}
*::-webkit-scrollbar-thumb {
  min-width: 32px;
  min-height: 32px;
  border: 2px solid var(--cba-scrollbar-track) !important;
  border-radius: 999px !important;
  background: var(--cba-scrollbar-thumb) !important;
  background-clip: padding-box !important;
}
*::-webkit-scrollbar-thumb:hover {
  background: var(--cba-scrollbar-thumb-hover) !important;
  background-clip: padding-box !important;
}

/* Libro de Imputaciones */
.cba-libro-imputaciones-card {
  overflow: hidden;
}
.cba-libro-imputaciones-tabs {
  padding: 12px 14px 4px;
}
.cba-libro-imputaciones-filtros {
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 9px;
  padding-left: 14px !important;
  padding-right: 14px !important;
}
.cba-libro-imputaciones-filtros .cba-partida-range-input {
  width: min(340px, 100%) !important;
  min-width: 240px;
}
.cba-libro-imputaciones-list {
  display: grid;
  gap: 18px;
  padding: 0 14px 14px;
}
.cba-imputacion-group {
  display: grid;
  gap: 8px;
  min-width: 0;
}
.cba-imputacion-mini-card {
  width: fit-content;
  max-width: min(780px, 100%);
  display: grid;
  grid-template-columns: minmax(145px, auto) minmax(260px, 1fr) minmax(230px, auto);
  gap: 14px;
  padding: 9px 13px;
  border: 1px solid color-mix(in srgb, var(--imput-accent) 38%, var(--mud-palette-lines-default));
  border-radius: 10px;
  background: color-mix(in srgb, var(--mud-palette-surface) 90%, var(--imput-accent) 10%);
  box-shadow: 0 6px 16px rgba(0,0,0,.08);
}
.cba-imputacion-mini-card.income { --imput-accent:#36d399; }
.cba-imputacion-mini-card.expense { --imput-accent:#ff667d; }
.cba-imputacion-mini-card span {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.cba-imputacion-mini-card small {
  font-size: .62rem;
  color: var(--mud-palette-text-secondary);
}
.cba-imputacion-mini-card strong {
  font-size: .72rem;
  color: var(--mud-palette-text-primary);
}
.cba-imputacion-mini-card .concept strong {
  white-space: normal;
}
.cba-imputacion-table {
  min-width: 1160px;
}
.cba-imputacion-table.expenses {
  min-width: 1580px;
}
.cba-imputacion-table thead th {
  text-align: center !important;
  vertical-align: middle !important;
  font-size: .65rem;
  font-weight: 850;
  letter-spacing: .018em;
}
.cba-imputacion-table.resources thead tr:first-child th:nth-child(4),
.cba-imputacion-table.resources thead tr:nth-child(2) th:nth-child(-n+3) {
  background: color-mix(in srgb, var(--mud-palette-surface) 72%, #36d399 28%) !important;
}
.cba-imputacion-table.resources thead tr:first-child th:last-child,
.cba-imputacion-table.resources thead tr:nth-child(2) th:nth-last-child(-n+2) {
  background: color-mix(in srgb, var(--mud-palette-surface) 72%, #54b8ff 28%) !important;
}
.cba-imputacion-table.expenses thead tr:first-child th:nth-child(4),
.cba-imputacion-table.expenses thead tr:nth-child(2) th:nth-child(-n+4) {
  background: color-mix(in srgb, var(--mud-palette-surface) 72%, #ff9f43 28%) !important;
}
.cba-imputacion-table.expenses thead tr:first-child th:last-child,
.cba-imputacion-table.expenses thead tr:nth-child(2) th:nth-last-child(-n+4) {
  background: color-mix(in srgb, var(--mud-palette-surface) 72%, #9474e8 28%) !important;
}
.cba-imputacion-table td.num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.cba-imputacion-table td.strong {
  font-weight: 850;
}
.cba-imputacion-table tr.opening td {
  color: color-mix(in srgb, #54b8ff 70%, var(--mud-palette-text-primary)) !important;
  background: color-mix(in srgb, var(--mud-palette-surface) 83%, #54b8ff 17%) !important;
  font-weight: 780;
}
.cba-imputacion-table tr.budget-change td {
  color: color-mix(in srgb, #ffb347 68%, var(--mud-palette-text-primary)) !important;
  background: color-mix(in srgb, var(--mud-palette-surface) 82%, #ffb347 18%) !important;
  font-style: italic;
}
.cba-imputacion-table tr.budget-change td small {
  display: block;
  font-size: .56rem;
  opacity: .78;
}
.cba-imputacion-table tr.budget-change td strong {
  display: block;
  font-size: .68rem;
}

/* Dashboard v2 */
.cba-dashboard-budget-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 11px 14px;
}
.cba-dashboard-budget-toolbar > div:first-child {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.cba-dashboard-budget-toolbar .eyebrow {
  color: #54b8ff;
  font-size: .60rem;
  font-weight: 900;
  letter-spacing: .075em;
}
.cba-dashboard-budget-toolbar strong { font-size:.82rem; }
.cba-dashboard-budget-toolbar small { color:var(--mud-palette-text-secondary); font-size:.63rem; }
.cba-dashboard-budget-select { width:min(340px, 100%) !important; flex:0 0 340px; }

.cba-dashboard-line-chart .series {
  fill: none;
  stroke-width: 1.65;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}
.cba-dashboard-line-chart .area {
  stroke: none;
  opacity: .11;
}
.cba-dashboard-line-chart .area.income { fill:#36d399; }
.cba-dashboard-line-chart .area.expense { fill:#ff9f43; }

.cba-dashboard-analysis-grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0,1fr));
  gap: 12px;
}
.cba-dashboard-budget-chart { grid-column: span 6; }
.cba-dashboard-budget-bars { grid-column: span 6; min-width:0; }
.cba-dashboard-budget-donut-layout {
  display: grid;
  grid-template-columns: 178px minmax(0,1fr);
  align-items: center;
  gap: 18px;
  min-height: 190px;
}
.cba-dashboard-budget-donut {
  width: 160px;
  height: 160px;
  border-radius: 50%;
  position: relative;
  box-shadow: 0 0 28px rgba(84,184,255,.08);
}
.cba-dashboard-budget-donut::after {
  content:"";
  position:absolute;
  inset:25px;
  border-radius:50%;
  background:var(--mud-palette-surface);
  border:1px solid color-mix(in srgb,var(--mud-palette-lines-default) 76%,transparent);
}
.cba-dashboard-budget-donut > div {
  position:absolute;
  inset:0;
  z-index:2;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
  pointer-events:none;
}
.cba-dashboard-budget-donut strong { font-size:.82rem; font-variant-numeric:tabular-nums; }
.cba-dashboard-budget-donut span { color:var(--mud-palette-text-secondary); font-size:.56rem; }
.cba-dashboard-budget-legend {
  display:grid;
  gap:5px;
  max-height:190px;
  overflow:auto;
  padding-right:4px;
}
.cba-dashboard-budget-legend > div {
  display:grid;
  grid-template-columns:8px minmax(0,1fr) auto;
  align-items:center;
  gap:7px;
  min-height:25px;
  padding:3px 5px;
  border-radius:6px;
  background:color-mix(in srgb,var(--mud-palette-surface) 94%,var(--mud-palette-text-primary) 6%);
}
.cba-dashboard-budget-legend i { width:8px;height:8px;border-radius:50%; }
.cba-dashboard-budget-legend span { overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.60rem; }
.cba-dashboard-budget-legend span b { font-weight:850; }
.cba-dashboard-budget-legend strong { font-size:.61rem;font-variant-numeric:tabular-nums; }
.cba-dashboard-budget-legend .empty,
.cba-dashboard-principal-bars .empty { color:var(--mud-palette-text-secondary);font-size:.66rem; }

.cba-dashboard-principal-bars {
  display:grid;
  gap:9px;
  max-height:300px;
  overflow:auto;
  padding:2px 4px 2px 0;
}
.cba-dashboard-principal-row { display:grid; gap:4px; }
.cba-dashboard-principal-row .meta {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  align-items:end;
}
.cba-dashboard-principal-row .meta span {
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:.62rem;
}
.cba-dashboard-principal-row .meta small { font-size:.57rem;color:var(--mud-palette-text-secondary);white-space:nowrap; }
.cba-dashboard-principal-row .track {
  display:flex;
  overflow:hidden;
  height:11px;
  border-radius:999px;
  background:color-mix(in srgb,var(--mud-palette-surface) 83%,var(--mud-palette-text-primary) 17%);
}
.cba-dashboard-principal-row .track i { display:block;height:100%; }
.cba-dashboard-principal-bars.commit .track .first { background:#ff9f43; }
.cba-dashboard-principal-bars.commit .track .second { background:#54b8ff; }
.cba-dashboard-principal-bars.paid .track .first { background:#36d399; }
.cba-dashboard-principal-bars.paid .track .second { background:#ff667d; }

/* Light: los nuevos reportes mantienen identidad clara y no heredan superficies dark. */
body.cba-theme-light .cba-libro-imputaciones-card,
html.cba-theme-light .cba-libro-imputaciones-card,
body.cba-theme-light .cba-dashboard-budget-toolbar,
html.cba-theme-light .cba-dashboard-budget-toolbar,
body.cba-theme-light .cba-dashboard-panel,
html.cba-theme-light .cba-dashboard-panel {
  color:#26394f !important;
  background:#ffffff !important;
  border-color:#d7e0ea !important;
}
body.cba-theme-light .cba-imputacion-table td,
html.cba-theme-light .cba-imputacion-table td {
  color:#26394f;
  border-color:#d8e2ec;
}

@media (max-width: 1050px) {
  .cba-dashboard-budget-chart,
  .cba-dashboard-budget-bars { grid-column:span 12; }
}
@media (max-width: 760px) {
  .cba-dashboard-budget-toolbar { align-items:stretch; flex-direction:column; }
  .cba-dashboard-budget-select { width:100% !important; flex:1 1 auto; }
  .cba-dashboard-budget-donut-layout { grid-template-columns:1fr; justify-items:center; }
  .cba-dashboard-budget-legend { width:100%; }
  .cba-imputacion-mini-card { grid-template-columns:1fr; width:100%; }
}

/* 008A15g · Status/confirm dialogs también obedecen light/dark. */
body.cba-theme-light .cba-status-dialog,
html.cba-theme-light .cba-status-dialog {
  color: #1d2a3a !important;
  border-color: #ccd7e4 !important;
  background:
    radial-gradient(circle at 10% 20%, color-mix(in srgb, var(--dialog-accent) 9%, transparent), transparent 36%),
    linear-gradient(145deg, #ffffff, #f7f9fc 62%, #eef3f8) !important;
  box-shadow: 0 28px 70px rgba(45,62,84,.22), 0 0 28px color-mix(in srgb, var(--dialog-accent) 15%, transparent) !important;
}
body.cba-theme-light .cba-status-dialog-title,
html.cba-theme-light .cba-status-dialog-title {
  color: #26394f !important;
}
body.cba-theme-light .cba-status-dialog-message,
html.cba-theme-light .cba-status-dialog-message {
  color: #5d7086 !important;
}
body.cba-theme-light .cba-confirm-dialog,
html.cba-theme-light .cba-confirm-dialog {
  color: #1d2a3a !important;
  border-color: #ccd7e4 !important;
  box-shadow: 0 28px 70px rgba(45,62,84,.22), 0 0 28px color-mix(in srgb, var(--confirm-accent) 15%, transparent) !important;
}

/* --------------------------------------------------------------------------
   008A16 · Notificaciones Etapa 1
   -------------------------------------------------------------------------- */
.cba-notification-bell-shell {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	margin-right: 4px;
}

.cba-notification-count {
	position: absolute;
	top: 2px;
	right: 0;
	min-width: 17px;
	height: 17px;
	padding: 0 4px;
	border: 2px solid var(--mud-palette-appbar-background);
	border-radius: 999px;
	background: #ff5e78;
	color: #fff;
	font-size: 9px;
	font-weight: 800;
	line-height: 13px;
	text-align: center;
	pointer-events: none;
	box-sizing: border-box;
}

.cba-notification-menu .mud-popover,
.cba-notification-menu .mud-menu-list {
	min-width: min(420px, calc(100vw - 24px));
	max-width: min(420px, calc(100vw - 24px));
}

.cba-notification-menu-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	padding: 12px 14px 10px;
}

.cba-notification-menu-head > div:first-child {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.cba-notification-menu-head strong {
	font-size: .93rem;
}

.cba-notification-menu-head small {
	color: var(--mud-palette-text-secondary);
	font-size: .72rem;
}

.cba-notification-menu-empty {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	min-height: 88px;
	padding: 18px;
	color: var(--mud-palette-text-secondary);
	font-size: .78rem;
}

.cba-notification-menu-item {
	height: auto !important;
	min-height: 0 !important;
	padding: 0 !important;
}

.cba-notification-menu-row {
	--notif-accent: #54b8ff;
	display: grid;
	grid-template-columns: 34px minmax(0, 1fr);
	gap: 9px;
	width: 100%;
	padding: 10px 13px;
	border-left: 3px solid var(--notif-accent);
	box-sizing: border-box;
}

.cba-notification-menu-row.priority-alta { --notif-accent: #f4c95d; }
.cba-notification-menu-row.priority-critica { --notif-accent: #ff667d; }
.cba-notification-menu-row.type-exito { --notif-accent: #36d399; }
.cba-notification-menu-row.type-tarea { --notif-accent: #b58cff; }
.cba-notification-menu-row.is-read { opacity: .74; }

.cba-notification-type-icon {
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding-top: 2px;
	color: var(--notif-accent);
}

.cba-notification-menu-copy {
	min-width: 0;
	display: flex;
	flex-direction: column;
	gap: 4px;
}

.cba-notification-menu-title {
	display: flex;
	align-items: center;
	gap: 7px;
	min-width: 0;
}

.cba-notification-menu-title strong {
	overflow: hidden;
	font-size: .78rem;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.cba-notification-unread-dot {
	flex: 0 0 7px;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--notif-accent);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--notif-accent) 18%, transparent);
}

.cba-notification-menu-message {
	display: -webkit-box;
	overflow: hidden;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	color: var(--mud-palette-text-secondary);
	font-size: .71rem;
	line-height: 1.35;
}

.cba-notification-menu-meta {
	display: flex;
	align-items: center;
	gap: 8px;
	color: var(--mud-palette-text-disabled);
	font-size: .66rem;
}

.cba-notification-pending-label,
.cba-notification-resolved-label,
.cba-notification-unread-label {
	display: inline-flex;
	align-items: center;
	min-height: 20px;
	padding: 1px 7px;
	border-radius: 999px;
	font-size: .64rem;
	font-weight: 800;
	letter-spacing: .02em;
}

.cba-notification-pending-label {
	background: color-mix(in srgb, #f4c95d 18%, transparent);
	color: #d6a90f;
}

.cba-notification-resolved-label {
	background: color-mix(in srgb, #36d399 18%, transparent);
	color: #27ad7b;
}

.cba-notification-unread-label {
	background: color-mix(in srgb, #54b8ff 18%, transparent);
	color: #3d9ee5;
}

.cba-notifications-header-actions {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
}

.cba-notifications-card {
	overflow: hidden;
}

.cba-notifications-summary {
	display: grid;
	grid-template-columns: repeat(4, minmax(150px, 1fr));
	gap: 10px;
	padding: 14px;
}

.cba-notifications-filterbar {
	display: flex;
	align-items: center;
	gap: 6px;
	padding: 0 14px 12px;
	overflow-x: auto;
}

.cba-notifications-filter {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	min-height: 34px;
	padding: 5px 11px;
	border: 1px solid var(--mud-palette-lines-default);
	border-radius: 9px;
	background: color-mix(in srgb, var(--mud-palette-surface) 92%, transparent);
	color: var(--mud-palette-text-secondary);
	font: inherit;
	font-size: .75rem;
	font-weight: 700;
	cursor: pointer;
	white-space: nowrap;
	transition: border-color .16s ease, background .16s ease, color .16s ease, transform .16s ease;
}

.cba-notifications-filter:hover {
	border-color: color-mix(in srgb, var(--cba-page-accent, #9474e8) 55%, var(--mud-palette-lines-default));
	color: var(--mud-palette-text-primary);
}

.cba-notifications-filter.selected {
	border-color: color-mix(in srgb, var(--cba-page-accent, #9474e8) 75%, transparent);
	background: color-mix(in srgb, var(--cba-page-accent, #9474e8) 18%, var(--mud-palette-surface));
	color: var(--mud-palette-text-primary);
	box-shadow: inset 0 -2px 0 color-mix(in srgb, var(--cba-page-accent, #9474e8) 80%, transparent);
}

.cba-notifications-list {
	display: flex;
	flex-direction: column;
	gap: 8px;
	padding: 2px 14px 14px;
}

.cba-notification-card {
	--notif-accent: #54b8ff;
	display: grid;
	grid-template-columns: 46px minmax(0, 1fr) auto;
	gap: 12px;
	align-items: start;
	padding: 12px 13px;
	border: 1px solid var(--mud-palette-lines-default);
	border-left: 4px solid var(--notif-accent);
	border-radius: 10px;
	background: color-mix(in srgb, var(--mud-palette-surface) 96%, var(--notif-accent) 4%);
	transition: border-color .16s ease, transform .16s ease, background .16s ease;
}

.cba-notification-card.priority-alta { --notif-accent: #f4c95d; }
.cba-notification-card.priority-critica { --notif-accent: #ff667d; }
.cba-notification-card.type-exito { --notif-accent: #36d399; }
.cba-notification-card.type-tarea { --notif-accent: #b58cff; }
.cba-notification-card.type-usuario { --notif-accent: #e06af2; }
.cba-notification-card.is-read { opacity: .84; }
.cba-notification-card.is-unread {
	background: color-mix(in srgb, var(--mud-palette-surface) 91%, var(--notif-accent) 9%);
}

.cba-notification-card-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 10px;
	background: color-mix(in srgb, var(--notif-accent) 15%, transparent);
	color: var(--notif-accent);
}

.cba-notification-card-body {
	min-width: 0;
}

.cba-notification-card-titleline {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: 12px;
}

.cba-notification-card-titleline > div {
	display: flex;
	align-items: center;
	gap: 7px;
	flex-wrap: wrap;
}

.cba-notification-card-titleline strong {
	font-size: .88rem;
}

.cba-notification-priority {
	flex: 0 0 auto;
	color: var(--notif-accent);
	font-size: .66rem;
	font-weight: 800;
	text-transform: uppercase;
}

.cba-notification-card-body p {
	margin: 5px 0 7px;
	color: var(--mud-palette-text-secondary);
	font-size: .77rem;
	line-height: 1.45;
}

.cba-notification-card-meta {
	display: flex;
	align-items: center;
	gap: 13px;
	flex-wrap: wrap;
	color: var(--mud-palette-text-disabled);
	font-size: .68rem;
}

.cba-notification-card-meta span {
	display: inline-flex;
	align-items: center;
	gap: 4px;
}

.cba-notification-card-actions {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: 6px;
	flex-wrap: wrap;
	max-width: 280px;
}

.cba-notifications-empty {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 6px;
	min-height: 220px;
	padding: 24px;
	color: var(--mud-palette-text-secondary);
	text-align: center;
}

.cba-notifications-empty strong {
	color: var(--mud-palette-text-primary);
}

.cba-notifications-empty span {
	max-width: 520px;
	font-size: .76rem;
}

.cba-notifications-pager {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 12px;
	padding: 0 14px 14px;
	color: var(--mud-palette-text-secondary);
	font-size: .73rem;
}

@media (max-width: 900px) {
	.cba-notifications-summary {
		grid-template-columns: repeat(2, minmax(140px, 1fr));
	}

	.cba-notification-card {
		grid-template-columns: 40px minmax(0, 1fr);
	}

	.cba-notification-card-actions {
		grid-column: 1 / -1;
		justify-content: flex-start;
		max-width: none;
		padding-left: 52px;
	}
}

@media (max-width: 560px) {
	.cba-notifications-summary {
		grid-template-columns: 1fr 1fr;
		padding: 10px;
	}

	.cba-notifications-filterbar,
	.cba-notifications-list {
		padding-left: 10px;
		padding-right: 10px;
	}

	.cba-notification-card {
		padding: 10px;
	}

	.cba-notification-card-titleline {
		flex-direction: column;
		gap: 5px;
	}

	.cba-notification-card-meta {
		align-items: flex-start;
		flex-direction: column;
		gap: 4px;
	}

	.cba-notification-card-actions {
		padding-left: 0;
	}
}


/* 008A16 · Progreso indeterminado real para consultas pesadas. */
.cba-busy-progress {
	width: min(260px, 72vw);
	height: 4px;
	margin-top: 12px;
	overflow: hidden;
	border-radius: 999px;
	background: rgba(255,255,255,.18);
}

.cba-busy-progress > span {
	display: block;
	width: 42%;
	height: 100%;
	border-radius: inherit;
	background: var(--busy-main);
	animation: cba-busy-progress-slide 1.05s ease-in-out infinite alternate;
}

@keyframes cba-busy-progress-slide {
	from { transform: translateX(-8%); }
	to { transform: translateX(152%); }
}


/* 008A16 · Rectificaciones: identificación rápida de Recursos/Erogaciones. */
.cba-presupuesto-seccion-badge {
	display: inline-flex;
	align-items: center;
	margin-left: 7px;
	padding: 2px 7px;
	border-radius: 999px;
	font-size: .67rem;
	font-weight: 800;
	letter-spacing: .01em;
	color: #5f3a86;
	background: rgba(181,140,255,.16);
	border: 1px solid rgba(181,140,255,.32);
}


/* 008A17 · Balance: el umbral conserva su valor configurado; sólo se compacta
   al 50% del ancho original (205px) y comparte exactamente el top de fecha. */
.cba-balance-controls {
  align-items: flex-start !important;
}
.cba-balance-controls .cba-balance-threshold-field {
  width: 103px !important;
  min-width: 103px !important;
  max-width: 103px !important;
  flex: 0 0 103px !important;
  align-self: flex-start !important;
}
.cba-balance-controls .cba-balance-date-field,
.cba-balance-controls .cba-balance-threshold-field,
.cba-balance-controls .cba-balance-date-field .mud-input-control,
.cba-balance-controls .cba-balance-threshold-field .mud-input-control {
  margin-top: 0 !important;
}
@media (max-width: 720px) {
  .cba-balance-controls .cba-balance-threshold-field {
    width: 103px !important;
    min-width: 103px !important;
    flex-basis: 103px !important;
  }
}

/* 008A17 · Paginador compacto: el selector de filas ocupa aproximadamente la
   mitad de la altura anterior sin cambiar el área táctil de navegación. */
.cba-list-pager {
  min-height: 34px !important;
  padding-top: 3px !important;
  padding-bottom: 3px !important;
}
.cba-list-page-size {
  width: 82px !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
.cba-list-page-size .mud-input-control,
.cba-list-page-size .mud-input-control-input-container,
.cba-list-page-size .mud-input-root {
  min-height: 24px !important;
  height: 24px !important;
}
.cba-list-page-size .mud-input-slot {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  min-height: 22px !important;
}
.cba-list-page-size .mud-input-label {
  transform: translate(14px, 4px) scale(.72) !important;
}

/* 008A17 · Navegación REC/OC/OP: prioridad visual a persona/proveedor y concepto. */
.cba-rec-list-grid table { min-width: 1540px !important; }
.cba-oc-list-grid table { min-width: 2020px !important; }
.cba-op-list-grid table { min-width: 1990px !important; }

/* 008A17 · toda card de resumen con acento adopta el movimiento del Dashboard. */
.cba-rec-summary-card,
.cba-accent-card {
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease !important;
}
.cba-rec-summary-card:hover,
.cba-accent-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(0,0,0,.10);
}

/* 008A17 · Partidas Excedidas: header, cuerpo y TOTAL comparten un único
   colgroup; así Crédito Vigente / Comp. Acum. / Tot. Excedido alinean exacto. */
.cba-balance-excedidas-table-scroll {
  width: 100%;
  overflow-x: auto;
}
.cba-balance-excedidas-table {
  width: 100%;
  min-width: 940px;
  border-collapse: separate;
  border-spacing: 0;
  table-layout: fixed;
  font-size: .82rem;
}
.cba-balance-excedidas-table col.account { width: 17%; }
.cba-balance-excedidas-table col.concept { width: 33%; }
.cba-balance-excedidas-table col.money { width: 16.666%; }
.cba-balance-excedidas-table th,
.cba-balance-excedidas-table td {
  padding: 10px 12px;
  border-bottom: 1px solid color-mix(in srgb, var(--mud-palette-lines-default) 70%, transparent);
  vertical-align: middle;
}
.cba-balance-excedidas-table thead th {
  background: color-mix(in srgb, #315d9c 62%, var(--mud-palette-surface));
  color: #fff;
  font-weight: 800;
}
.cba-balance-excedidas-table .num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.cba-balance-excedidas-table tbody tr {
  background: color-mix(in srgb, #ff667d 13%, var(--mud-palette-surface));
}
.cba-balance-excedidas-table tfoot td {
  background: color-mix(in srgb, #ff667d 18%, var(--mud-palette-surface));
  color: #d63c3c;
  font-weight: 850;
  border-top: 1px solid rgba(255,91,91,.34);
}
.cba-balance-excedidas-table .label { text-align: left; }
.cba-balance-excedidas-table .exceeded { color: #e64a4a; font-weight: 850; }


/* ========================================================================== */
/* CBA 008A17e · ajustes finos posteriores a estabilización                   */
/* ========================================================================== */

/* Balance: críticas/excedidas con mayor contraste, conservando tonalidad. */
.cba-balance-native-table tbody tr.cba-balance-status-critical > td,
.cba-balance-grid tr.cba-balance-status-critical > td {
  background: color-mix(in srgb, #f4c95d 42%, var(--mud-palette-surface)) !important;
  color: #7a5100 !important;
  font-weight: 720 !important;
}
.cba-balance-native-table tbody tr.cba-balance-status-exceeded > td,
.cba-balance-grid tr.cba-balance-status-exceeded > td,
.cba-balance-grid-excedidas tr.cba-balance-status-exceeded > td {
  background: color-mix(in srgb, #ff667d 40%, var(--mud-palette-surface)) !important;
  color: #a2162f !important;
  font-weight: 760 !important;
}
[data-theme="dark"] .cba-balance-native-table tbody tr.cba-balance-status-critical > td,
.mud-theme-dark .cba-balance-native-table tbody tr.cba-balance-status-critical > td,
.cba-theme-dark .cba-balance-native-table tbody tr.cba-balance-status-critical > td,
[data-theme="dark"] .cba-balance-grid tr.cba-balance-status-critical > td,
.mud-theme-dark .cba-balance-grid tr.cba-balance-status-critical > td {
  background: color-mix(in srgb, #f4c95d 34%, #171b24) !important;
  color: #ffe49a !important;
}
[data-theme="dark"] .cba-balance-native-table tbody tr.cba-balance-status-exceeded > td,
.mud-theme-dark .cba-balance-native-table tbody tr.cba-balance-status-exceeded > td,
.cba-theme-dark .cba-balance-native-table tbody tr.cba-balance-status-exceeded > td,
[data-theme="dark"] .cba-balance-grid tr.cba-balance-status-exceeded > td,
.mud-theme-dark .cba-balance-grid tr.cba-balance-status-exceeded > td,
.cba-theme-dark .cba-balance-grid-excedidas tr.cba-balance-status-exceeded > td {
  background: color-mix(in srgb, #ff667d 34%, #171b24) !important;
  color: #ffabb8 !important;
}

/* Recibos ABM: la fecha gana unos píxeles para mostrar el año completo. */
.cba-rec-header-fields {
  grid-template-columns: minmax(120px, .50fr) minmax(182px, .74fr) minmax(220px, 1.33fr) minmax(0, 1.8fr) !important;
}
@media (max-width: 1280px) {
  .cba-rec-header-fields {
    grid-template-columns: minmax(150px, .58fr) minmax(188px, .76fr) minmax(0, 1.42fr) !important;
  }
}

/* Pager: 008A17 quedó demasiado comprimido; 34px permite label + valor. */
.cba-list-pager {
  min-height: 42px !important;
  padding-top: 4px !important;
  padding-bottom: 4px !important;
}
.cba-list-page-size {
  width: 88px !important;
}
.cba-list-page-size .mud-input-control,
.cba-list-page-size .mud-input-control-input-container,
.cba-list-page-size .mud-input-root {
  min-height: 34px !important;
  height: 34px !important;
}
.cba-list-page-size .mud-input-slot {
  min-height: 32px !important;
  padding-top: 7px !important;
  padding-bottom: 1px !important;
}
.cba-list-page-size .mud-input-label {
  transform: translate(14px, 5px) scale(.75) !important;
}

/* Navegación: las columnas prioritarias caben primero; el detalle queda al scroll. */
.cba-rec-list-grid table { min-width: 1460px !important; }
.cba-oc-list-grid table { min-width: 1760px !important; }
.cba-op-list-grid table { min-width: 1560px !important; }

/* Totales de informes: mismas celdas y bordes que la grilla. */
.cba-listing-table tfoot.cba-report-total-foot td,
.cba-listing-table .cba-report-total-row td {
  font-weight: 850 !important;
  border-top: 1px solid color-mix(in srgb, currentColor 24%, transparent) !important;
}
.cba-listing-table .cba-report-total-label {
  text-align: left;
  font-weight: 850 !important;
}

/* Logos del shell principal. */
.cba-brand-mark.cba-appbar-municipio-logo,
.cba-drawer-logo.cba-drawer-cba-logo {
  overflow: hidden;
  display: grid;
  place-items: center;
}
.cba-brand-mark.cba-appbar-municipio-logo img,
.cba-drawer-logo.cba-drawer-cba-logo img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
}
.cba-brand-mark.cba-appbar-municipio-logo img {
  padding: 3px;
}
.cba-drawer-logo.cba-drawer-cba-logo img {
  padding: 2px;
}
.cba-drawer-tenant .cba-drawer-system-name {
  font-weight: 800;
  letter-spacing: .03em;
}
.cba-drawer-tenant .cba-drawer-system-subtitle {
  opacity: .78;
}

/* Busy con demora: evita flashes en consultas rápidas. */
@keyframes cba-busy-reveal {
  to { visibility: visible; }
}

/* Proveedores: todas las tablas principales, incluida la fila TOTAL separada del
   modo detallado, comparten exactamente la misma geometría de seis columnas. */
.cba-provider-main-table {
  table-layout: fixed !important;
}
.cba-provider-main-table th:nth-child(1),
.cba-provider-main-table td:nth-child(1) { width: 8.06%; }
.cba-provider-main-table th:nth-child(2),
.cba-provider-main-table td:nth-child(2) { width: 12.90%; }
.cba-provider-main-table th:nth-child(3),
.cba-provider-main-table td:nth-child(3) { width: 41.94%; }
.cba-provider-main-table th:nth-child(4),
.cba-provider-main-table td:nth-child(4) { width: 12.10%; }
.cba-provider-main-table th:nth-child(5),
.cba-provider-main-table td:nth-child(5) { width: 12.10%; }
.cba-provider-main-table th:nth-child(6),
.cba-provider-main-table td:nth-child(6) { width: 12.90%; }

/* ========================================================================== */
/* CBA 008A17f · estabilización visual/funcional fina                         */
/* ========================================================================== */

/* Centro de Trabajo: contenido principal centrado y con ancho cómodo. */
.cba-notifications-page {
  width: min(1440px, 100%) !important;
  margin-left: auto !important;
  margin-right: auto !important;
}

/* Pager de informes: conservar la altura recuperada en 17e, pero bajar el
   valor seleccionado para que no invada el label flotante. */
.cba-list-page-size .mud-select-input {
  padding-top: 11px !important;
  padding-bottom: 0 !important;
  line-height: 17px !important;
  transform: translateY(2px);
}

/* Totales de Contribuyentes/Proveedores: mismo fondo/foreground que el header. */
.cba-listing-table.zone-green .cba-report-total-row > td {
  background: rgba(27, 94, 75, .62) !important;
  color: #d6fff1 !important;
  border-color: rgba(72, 201, 151, .42) !important;
}
.cba-listing-table.zone-violet .cba-report-total-row > td {
  background: rgba(79, 55, 125, .70) !important;
  color: #eee4ff !important;
  border-color: rgba(181, 140, 255, .45) !important;
}
.cba-listing-table .cba-report-total-row > td,
.cba-listing-table .cba-report-total-row > td * {
  font-weight: 850 !important;
}

/* Logos del shell: sólo la imagen, sin tarjeta/cuadrado detrás y sin clipping. */
.cba-brand-mark.cba-appbar-municipio-logo,
.cba-drawer-logo.cba-drawer-cba-logo {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  border-radius: 0 !important;
  overflow: visible !important;
}
.cba-brand-mark.cba-appbar-municipio-logo {
  width: 44px !important;
  height: 44px !important;
}
.cba-drawer-logo.cba-drawer-cba-logo {
  width: 48px !important;
  height: 48px !important;
  flex: 0 0 48px !important;
}
.cba-brand-mark.cba-appbar-municipio-logo img,
.cba-drawer-logo.cba-drawer-cba-logo img {
  width: auto !important;
  height: auto !important;
  max-width: 100% !important;
  max-height: 100% !important;
  padding: 0 !important;
  object-fit: contain !important;
  display: block !important;
}

/* ========================================================================== */
/* CBA 008A17g · Centro de Trabajo centrado + grilla real de destinatarios    */
/* ========================================================================== */

/* En desktop el Centro de Trabajo no ocupa todo el ancho útil: queda centrado
   dentro del área de trabajo, con márgenes simétricos reales. */
.cba-notifications-page {
  width: calc(100% - 36px) !important;
  max-width: 1160px !important;
  margin-inline: auto !important;
  align-self: center !important;
}

@media (max-width: 760px) {
  .cba-notifications-page {
    width: 100% !important;
    max-width: none !important;
  }
}



/* =============================================================================
   008A18e · Listados OC/OP · checks compactos en una sola línea
   ============================================================================= */
.cba-listado-checks-inline {
  display: flex;
  align-items: center;
  flex-wrap: nowrap;
  gap: 4px;
  white-space: nowrap;
  min-width: max-content;
}

.cba-listado-checks-inline .mud-typography,
.cba-listado-checks-inline .mud-checkbox-label {
  font-size: .80rem !important;
}

.cba-sd-period-table {
  min-width: 1040px;
}

.cba-sd-period-table tbody tr {
  cursor: pointer;
}

/* 008A18i · avisos de licencia con mayor contraste conservando gradiente. */
.cba-license-warning.yellow {
  background: linear-gradient(105deg, #9a7111 0%, #73510a 52%, #533907 100%) !important;
  color: #fff5cf !important;
  border-color: rgba(255, 218, 112, .58) !important;
}

.cba-license-warning.red {
  background: linear-gradient(105deg, #a93443 0%, #7d2230 52%, #581722 100%) !important;
  color: #ffe9ec !important;
  border-color: rgba(255, 135, 151, .62) !important;
}

.cba-license-warning.yellow .mud-alert-icon,
.cba-license-warning.red .mud-alert-icon {
  color: currentColor !important;
}

/* 008A18i · Cabeceras Recibos / OC / OP en móviles.
   Primera fila: número + fecha. Persona y concepto bajan a filas completas. */
@media (max-width: 760px) {
  .cba-rec-header-fields {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 10px !important;
  }

  .cba-rec-header-fields > .cba-rec-person-autocomplete-host {
    grid-column: 1 / -1 !important;
  }

  .cba-rec-header-fields > :last-child {
    grid-column: 1 / -1 !important;
  }

  .cba-op-header-fields {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }

  .cba-op-header-fields > .cba-rec-person-autocomplete-host,
  .cba-op-header-fields > .cba-op-type-field,
  .cba-op-header-fields > .cba-op-concept {
    grid-column: 1 / -1 !important;
  }
}

/* 008A18k · Centro de Notificaciones usa el tab estándar CBA. */
.cba-notifications-tabs {
  padding: 0 14px 12px;
}

.cba-notifications-tabs .cba-document-tabs-shell {
  margin: 0;
}

@media (max-width: 560px) {
  .cba-notifications-tabs {
    padding-left: 10px;
    padding-right: 10px;
  }
}


/* =============================================================================
   008A18q · Drawer: scroll sólo en el menú y ancho estable con scrollbar
   ============================================================================= */
.cba-drawer .mud-drawer-content {
  height: 100% !important;
  min-height: 0 !important;
  display: grid !important;
  overflow: hidden !important;
  grid-template-rows: auto auto minmax(0, 1fr) !important;
}

.cba-drawer-menu-scroll {
  min-width: 0 !important;
  min-height: 0 !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  scrollbar-gutter: stable !important;
}

.cba-drawer-menu-scroll > .cba-real-menu {
  box-sizing: border-box;
  width: 100% !important;
  min-width: 0 !important;
}

/* =============================================================================
   008A18r · Ajustes solicitados 20/08/2026
   - drawer realmente acotado al viewport y scrollbar vertical estable;
   - prueba de mayor altura sólo en grid de Presupuesto/Partidas;
   - encabezados de ese grid en mayúsculas;
   - prueba light inspirada en el Portal Tributario de Córdoba sólo para Partidas.
   ============================================================================= */

/* El drawer debe tener una altura física acotada; height:100% sobre un padre sin
   altura explícita dejaba crecer el menú y por eso Chrome no creaba scrollbar. */
.cba-drawer {
  height: 100dvh !important;
  max-height: 100dvh !important;
  overflow: hidden !important;
}

.cba-drawer .mud-drawer-content {
  position: absolute !important;
  inset: 0 !important;
  height: auto !important;
  max-height: none !important;
  min-height: 0 !important;
  display: grid !important;
  grid-template-rows: auto auto minmax(0, 1fr) !important;
  overflow: hidden !important;
}

.cba-drawer-menu-scroll {
  height: 100% !important;
  max-height: 100% !important;
  min-height: 0 !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  overscroll-behavior: contain;
  scrollbar-gutter: stable !important;
}

/* Drawer: el thumb debe ser visible; el gutter queda reservado aun cuando no
   haga falta scroll, por lo que el ancho de los botones nunca salta. */
.cba-theme-dark .cba-drawer-menu-scroll {
  scrollbar-width: thin !important;
  scrollbar-color: #4B5563 #0C1117 !important;
}
.cba-drawer-menu-scroll::-webkit-scrollbar {
  width: 10px !important;
}
.cba-theme-dark .cba-drawer-menu-scroll::-webkit-scrollbar-track {
  background: #0C1117 !important;
}
.cba-theme-dark .cba-drawer-menu-scroll::-webkit-scrollbar-thumb {
  background: #4B5563 !important;
  border-color: #0C1117 !important;
}

.cba-theme-light .cba-drawer-menu-scroll {
  scrollbar-color: #9AA7B5 #EEF2F6 !important;
}
.cba-theme-light .cba-drawer-menu-scroll::-webkit-scrollbar-track {
  background: #EEF2F6 !important;
}
.cba-theme-light .cba-drawer-menu-scroll::-webkit-scrollbar-thumb {
  background: #9AA7B5 !important;
  border-color: #EEF2F6 !important;
}

/* =============================================================================
   008A18s · Light renovado + Partidas Montserrat + drawer robusto

   Objetivos:
   - dark: no modificar la paleta existente;
   - light: marfil/crema suave, texto casi negro y contraste alto sin dureza;
   - Partidas: Montserrat con la geometría de la prueba anterior (58/55 y 16px);
   - drawer: scroll vertical real, ancho estable y comportamiento mobile/tablet.
   ============================================================================= */

/* -----------------------------------------------------------------------------
   PARTIDAS · sólo geometría/tipografía. Los colores los gobierna el tema.
   ----------------------------------------------------------------------------- */
.cba-grid.cba-users-grid.cba-partidas-grid {
  --cba-partidas-header-height: 58px;
  --cba-partidas-row-height: 55px;
  --cba-partidas-header-font-size: 12px;
  --cba-partidas-body-font-size: 14px;
  --cba-partidas-cell-padding-x: 12px;
  --cba-partidas-badge-font-size: 13px;
  font-family: "Montserrat", "Segoe UI Variable", "Segoe UI", Arial, sans-serif !important;
}

.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-root,
.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-container,
.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-head,
.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-body,
.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-row,
.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-cell,
.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-cell * {
  font-family: inherit !important;
}

.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-head .mud-table-row {
  height: var(--cba-partidas-header-height) !important;
  min-height: var(--cba-partidas-header-height) !important;
}

.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-head .mud-table-cell {
  height: var(--cba-partidas-header-height) !important;
  min-height: var(--cba-partidas-header-height) !important;
  padding: 0 var(--cba-partidas-cell-padding-x) !important;
  vertical-align: middle !important;
  font-size: var(--cba-partidas-header-font-size) !important;
  font-weight: 800 !important;
  line-height: 1.2 !important;
  letter-spacing: .025em !important;
  text-transform: uppercase !important;
}

.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-head .column-header,
.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-head .mud-table-sort-label,
.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-head .mud-table-sort-label * {
  font-size: var(--cba-partidas-header-font-size) !important;
  font-weight: 800 !important;
  line-height: 1.2 !important;
  letter-spacing: .025em !important;
  text-transform: uppercase !important;
}

.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-body .mud-table-row {
  height: var(--cba-partidas-row-height) !important;
  min-height: var(--cba-partidas-row-height) !important;
}

.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-body .mud-table-cell {
  height: var(--cba-partidas-row-height) !important;
  min-height: var(--cba-partidas-row-height) !important;
  padding: 0 var(--cba-partidas-cell-padding-x) !important;
  vertical-align: middle !important;
  font-size: var(--cba-partidas-body-font-size) !important;
  line-height: 1.3 !important;
}

.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-body .mud-table-cell > span:not(.cba-partidas-it),
.cba-grid.cba-users-grid.cba-partidas-grid .mud-table-body .mud-table-cell > div {
  font-size: var(--cba-partidas-body-font-size) !important;
  line-height: 1.3 !important;
}

.cba-grid.cba-users-grid.cba-partidas-grid .cba-partidas-it {
  min-width: 84px !important;
  padding: 4px 10px !important;
  font-size: var(--cba-partidas-badge-font-size) !important;
  line-height: 1.2 !important;
}

/* -----------------------------------------------------------------------------
   DRAWER · el content es una columna de altura física; sólo el menú scrollea.
   scrollbar-gutter reserva el canal, por lo que los botones no cambian de ancho
   cuando overflow-y:auto necesita mostrar u ocultar el scrollbar.
   ----------------------------------------------------------------------------- */
.cba-drawer {
  height: 100dvh !important;
  max-height: 100dvh !important;
  overflow: hidden !important;
}

.cba-drawer .mud-drawer-content {
  position: relative !important;
  inset: auto !important;
  width: 100% !important;
  height: 100dvh !important;
  max-height: 100dvh !important;
  min-height: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
}

.cba-drawer-header,
.cba-drawer .mud-divider-root {
  flex: 0 0 auto !important;
}

.cba-drawer-menu-scroll {
  flex: 1 1 auto !important;
  width: 100% !important;
  height: auto !important;
  max-height: none !important;
  min-height: 0 !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  overscroll-behavior: contain;
  scrollbar-gutter: stable !important;
  -webkit-overflow-scrolling: touch;
}

.cba-drawer-menu-scroll > .cba-real-menu {
  box-sizing: border-box !important;
  width: 100% !important;
  min-width: 0 !important;
}

.cba-drawer-close-toggle {
  display: none !important;
  flex: 0 0 auto;
}

/* -----------------------------------------------------------------------------
   LIGHT 008A18s · paleta global nueva.
   ----------------------------------------------------------------------------- */
body.cba-theme-light,
html.cba-theme-light,
.cba-theme-light {
  --cba-light-canvas: #F1ECE3;
  --cba-light-surface: #FBF7EF;
  --cba-light-surface-2: #F6F1E8;
  --cba-light-surface-3: #EEE8DE;
  --cba-light-header: #E5DED2;
  --cba-light-row-alt: #F3EEE5;
  --cba-light-hover: #E3EBF1;
  --cba-light-border: #D2CABD;
  --cba-light-border-strong: #BEB5A7;
  --cba-light-text: #171717;
  --cba-light-text-2: #3F454A;
  --cba-light-muted: #6F7477;
  --cba-scroll-thumb: #8C8F91;
  --cba-scroll-thumb-hover: #686C6F;
  --cba-scroll-track: #E6E0D6;
}

body.cba-theme-light,
html.cba-theme-light body {
  color: var(--cba-light-text) !important;
  background: var(--cba-light-canvas) !important;
}

.cba-page-background.light {
  background:
    radial-gradient(circle at 13% 11%, color-mix(in srgb, var(--cba-page-accent) 9%, transparent), transparent 34rem),
    radial-gradient(circle at 87% 78%, color-mix(in srgb, var(--cba-page-accent-hover) 6%, transparent), transparent 38rem),
    linear-gradient(145deg, #F2EDE4 0%, #ECE6DC 52%, #F6F1E8 100%) !important;
}

body.cba-theme-light .cba-appbar,
html.cba-theme-light .cba-appbar {
  color: var(--cba-light-text) !important;
  border-bottom-color: var(--cba-light-border) !important;
  background: linear-gradient(180deg, #F8F4EC, #F1EBE2) !important;
  box-shadow: 0 7px 20px rgba(65, 56, 44, .11) !important;
}

body.cba-theme-light .cba-global-status-strip,
html.cba-theme-light .cba-global-status-strip {
  color: var(--cba-light-text-2) !important;
  border-top-color: #DDD5C9 !important;
  background: rgba(237, 231, 221, .96) !important;
}

body.cba-theme-light .cba-drawer,
html.cba-theme-light .cba-drawer,
body.cba-theme-light .cba-drawer .mud-drawer-content,
html.cba-theme-light .cba-drawer .mud-drawer-content {
  color: var(--cba-light-text) !important;
  border-right-color: var(--cba-light-border) !important;
  background: #EEE8DE !important;
}

body.cba-theme-light .cba-drawer-system-name,
html.cba-theme-light .cba-drawer-system-name {
  color: #111111 !important;
}

body.cba-theme-light .cba-drawer-system-subtitle,
html.cba-theme-light .cba-drawer-system-subtitle {
  color: #303438;
}

body.cba-theme-light .cba-menu-node-button:not(.selected):not(.has-selection),
html.cba-theme-light .cba-menu-node-button:not(.selected):not(.has-selection),
body.cba-theme-light .cba-real-menu-home:not(.selected),
html.cba-theme-light .cba-real-menu-home:not(.selected) {
  color: #303438;
}

body.cba-theme-light .cba-menu-search-shell,
html.cba-theme-light .cba-menu-search-shell {
  background: #EEE8DE !important;
}

body.cba-theme-light .cba-card,
html.cba-theme-light .cba-card,
body.cba-theme-light .cba-command-grid-card,
html.cba-theme-light .cba-command-grid-card {
  color: var(--cba-light-text) !important;
  border-color: var(--cba-light-border) !important;
  background: linear-gradient(145deg, #FBF7EF, #F5EFE6 72%, #EFE9DF) !important;
  box-shadow: 0 9px 24px rgba(65, 56, 44, .10) !important;
}

body.cba-theme-light .cba-actionbar,
html.cba-theme-light .cba-actionbar {
  border-color: var(--cba-light-border) !important;
  background: linear-gradient(180deg, #F9F5ED, #EFE9DF) !important;
  box-shadow: 0 7px 18px rgba(65, 56, 44, .09) !important;
}

body.cba-theme-light .cba-action-button,
html.cba-theme-light .cba-action-button,
body.cba-theme-light .mud-button-text:not(.mud-disabled),
html.cba-theme-light .mud-button-text:not(.mud-disabled),
body.cba-theme-light .mud-button-outlined:not(.mud-disabled),
html.cba-theme-light .mud-button-outlined:not(.mud-disabled) {
  color: #25282A !important;
}

/* Inputs: superficie marfil clara, borde visible y texto negro. */
body.cba-theme-light .mud-input-root,
html.cba-theme-light .mud-input-root,
body.cba-theme-light .mud-select,
html.cba-theme-light .mud-select {
  color: #171717 !important;
}

body.cba-theme-light .mud-input-root,
html.cba-theme-light .mud-input-root {
  background: rgba(250, 247, 240, .72);
  border-radius: 8px;
}

body.cba-theme-light .mud-input-outlined-border,
html.cba-theme-light .mud-input-outlined-border {
  border-color: #AEA596 !important;
}

body.cba-theme-light .mud-input-root:hover .mud-input-outlined-border,
html.cba-theme-light .mud-input-root:hover .mud-input-outlined-border {
  border-color: #77716A !important;
}

body.cba-theme-light .mud-input-label,
html.cba-theme-light .mud-input-label,
body.cba-theme-light .mud-input-adornment,
html.cba-theme-light .mud-input-adornment {
  color: #3C403F !important;
}

/* Grid CBA: marfil, header arena grisáceo, texto negro real. */
body.cba-theme-light .cba-grid .mud-table-root,
body.cba-theme-light .cba-grid .mud-table-container,
html.cba-theme-light .cba-grid .mud-table-root,
html.cba-theme-light .cba-grid .mud-table-container,
body.cba-theme-light .cba-users-grid-scroll,
html.cba-theme-light .cba-users-grid-scroll {
  color: var(--cba-light-text) !important;
  border-color: var(--cba-light-border) !important;
  background: var(--cba-light-surface) !important;
}

body.cba-theme-light .cba-grid .mud-table-head,
body.cba-theme-light .cba-session-grid .mud-table-head,
body.cba-theme-light .cba-users-grid .mud-table-head,
html.cba-theme-light .cba-grid .mud-table-head,
html.cba-theme-light .cba-session-grid .mud-table-head,
html.cba-theme-light .cba-users-grid .mud-table-head {
  background: linear-gradient(180deg, #E9E3D9, #E2DBCF) !important;
  box-shadow: 0 2px 0 #BEB5A7, 0 6px 14px rgba(65, 56, 44, .08) !important;
}

body.cba-theme-light .cba-grid .mud-table-head .mud-table-cell,
body.cba-theme-light .cba-session-grid .mud-table-head .mud-table-cell,
body.cba-theme-light .cba-users-grid .mud-table-head .mud-table-cell,
html.cba-theme-light .cba-grid .mud-table-head .mud-table-cell,
html.cba-theme-light .cba-session-grid .mud-table-head .mud-table-cell,
html.cba-theme-light .cba-users-grid .mud-table-head .mud-table-cell {
  color: #151515 !important;
  border-bottom-color: #BEB5A7 !important;
}

body.cba-theme-light .cba-grid .mud-table-body .mud-table-row:not(.mud-selected):not(.mud-table-row-selected):not(.cba-selected-row),
html.cba-theme-light .cba-grid .mud-table-body .mud-table-row:not(.mud-selected):not(.mud-table-row-selected):not(.cba-selected-row) {
  background: #FBF7EF !important;
}

body.cba-theme-light .cba-grid .mud-table-body .mud-table-row:nth-child(even):not(.mud-selected):not(.mud-table-row-selected):not(.cba-selected-row),
html.cba-theme-light .cba-grid .mud-table-body .mud-table-row:nth-child(even):not(.mud-selected):not(.mud-table-row-selected):not(.cba-selected-row) {
  background: #F3EEE5 !important;
}

body.cba-theme-light .cba-grid .mud-table-body .mud-table-cell,
html.cba-theme-light .cba-grid .mud-table-body .mud-table-cell {
  color: #171717 !important;
  border-bottom-color: #D6CEC1 !important;
}

body.cba-theme-light .cba-grid .mud-table-body .mud-table-row:hover:not(.mud-selected):not(.mud-table-row-selected):not(.cba-selected-row) .mud-table-cell,
html.cba-theme-light .cba-grid .mud-table-body .mud-table-row:hover:not(.mud-selected):not(.mud-table-row-selected):not(.cba-selected-row) .mud-table-cell {
  color: #111111 !important;
  background: #E3EBF1 !important;
}

/* Partidas conserva la jerarquía de títulos, ahora integrada a la nueva paleta. */
body.cba-theme-light .cba-partidas-grid .mud-table-row.cba-partidas-title-row:not(.cba-selected-row),
html.cba-theme-light .cba-partidas-grid .mud-table-row.cba-partidas-title-row:not(.cba-selected-row) {
  background: linear-gradient(90deg, #E9E4DC, #F2EDE5) !important;
}

/* Informes custom que tenían blanco fijado. */
body.cba-theme-light .cba-listing-table,
html.cba-theme-light .cba-listing-table,
body.cba-theme-light .cba-daily-two-tier-grid,
html.cba-theme-light .cba-daily-two-tier-grid,
body.cba-theme-light .cba-daily-summary-table,
html.cba-theme-light .cba-daily-summary-table {
  color: #171717 !important;
  background: #FBF7EF !important;
}

body.cba-theme-light .cba-listing-table td,
html.cba-theme-light .cba-listing-table td,
body.cba-theme-light .cba-detail-table td,
html.cba-theme-light .cba-detail-table td {
  color: #171717 !important;
  background: #FBF7EF !important;
  border-color: #D6CEC1 !important;
}

body.cba-theme-light .cba-listing-table tbody tr:nth-child(even) td,
html.cba-theme-light .cba-listing-table tbody tr:nth-child(even) td {
  background: #F3EEE5 !important;
}

/* Tabs: pastel muy moderado, con texto oscuro. */
body.cba-theme-light .cba-document-tab,
html.cba-theme-light .cba-document-tab {
  color: #34383B !important;
  border-color: #CBC2B5 !important;
  background: linear-gradient(180deg, #F9F5ED, #EEE8DE) !important;
  box-shadow: 0 4px 12px rgba(65, 56, 44, .08) !important;
}

body.cba-theme-light .cba-document-tab:hover:not(:disabled),
html.cba-theme-light .cba-document-tab:hover:not(:disabled) {
  color: #151515 !important;
  background: color-mix(in srgb, #F7F2E9 84%, var(--cba-document-tab-accent, #4f8dff) 16%) !important;
}

body.cba-theme-light .cba-document-tab.selected,
html.cba-theme-light .cba-document-tab.selected {
  color: #111111 !important;
  border-color: color-mix(in srgb, var(--cba-document-tab-accent, #4f8dff) 48%, #BFB6A8) !important;
  background: color-mix(in srgb, #F6F1E8 77%, var(--cba-document-tab-accent, #4f8dff) 23%) !important;
}

/* Dialogs: sin blanco puro y con contraste fuerte. */
body.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog,
html.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog,
body.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-general-dialog,
html.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-general-dialog {
  color: #171717 !important;
  border-color: #C8BFB2 !important;
  background: linear-gradient(145deg, #FBF7EF, #F2ECE2 68%, #EDE6DB) !important;
  box-shadow: 0 28px 70px rgba(55, 48, 38, .26) !important;
}

body.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-body,
html.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-body {
  background: #F8F3EA !important;
}

body.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-actions,
html.cba-theme-light .mud-dialog.cba-scroll-dialog-host .cba-presupuesto-dialog-actions {
  border-top-color: #D3CABC !important;
  background: #EEE8DE !important;
}

/* -----------------------------------------------------------------------------
   MOBILE / TABLET · drawer casi a ancho completo, más alto y control propio.
   ----------------------------------------------------------------------------- */
@media (max-width: 959.98px) {
  .mud-drawer.cba-drawer {
    width: min(92vw, 820px) !important;
    max-width: calc(100vw - 12px) !important;
  }

  .cba-drawer-header {
    min-height: 92px !important;
    height: 92px !important;
    padding: 16px 12px 16px 18px !important;
    gap: 13px !important;
  }

  .cba-drawer-close-toggle {
    display: inline-flex !important;
    margin-left: auto !important;
  }

  .cba-drawer-logo.cba-drawer-cba-logo {
    width: 54px !important;
    height: 54px !important;
    flex-basis: 54px !important;
  }

  .cba-drawer-system-name {
    font-size: 1.16rem !important;
  }

  .cba-drawer-system-subtitle {
    font-size: .82rem !important;
  }
}

@media (max-width: 600px) {
  .mud-drawer.cba-drawer {
    width: calc(100vw - 12px) !important;
    max-width: calc(100vw - 12px) !important;
  }
}


/* =============================================================================
   008A18t · Ajustes finales sobre 008A18s
   - scrollbar sólo cuando existe overflow; gutter estable para no mover botones;
   - drawer compacto cerrado completamente;
   - filas Título sin negrita ni italic;
   - selección violeta restaurada en light;
   - geometría Partidas: 58/55, header 14px, body 15px.
   ============================================================================= */

/* Si no hay overflow no debe verse scrollbar ni flechas. El gutter sigue
   reservado, por lo que el ancho útil del menú no cambia cuando aparece. */
.cba-drawer-menu-scroll {
  overflow-y: auto !important;
  scrollbar-gutter: stable !important;
}

/* MudDrawer Responsive puede dejar una franja visible cuando su ancho se
   sobreescribe en móvil. Esta clase depende de nuestro propio estado Open y
   fuerza el drawer compacto completamente fuera del viewport. */
@media (max-width: 959.98px) {
  .mud-drawer.cba-drawer.cba-drawer-compact-closed {
    transform: translate3d(-105%, 0, 0) !important;
    visibility: hidden !important;
    pointer-events: none !important;
  }
}

/* Prueba solicitada: los títulos mantienen su fondo jerárquico, pero el texto
   pasa a peso normal y sin italic. */
.cba-partidas-grid .mud-table-row.cba-partidas-title-row .mud-table-cell,
.cba-partidas-grid .mud-table-row.cba-partidas-title-row .mud-table-cell > span:not(.cba-partidas-it),
.cba-partidas-grid .mud-table-row.cba-partidas-title-row .mud-table-cell > div {
  font-weight: 400 !important;
  font-style: normal !important;
}
.cba-partidas-grid .mud-table-row.cba-partidas-title-row .cba-partidas-it {
  font-style: normal !important;
}

/* La paleta light global tenía reglas posteriores que tapaban la selección
   violeta definida en app.css. Se restaura explícitamente al final. */
body.cba-theme-light .cba-users-grid .mud-table-row.mud-selected,
body.cba-theme-light .cba-users-grid .mud-table-row.mud-selected:hover,
body.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected,
body.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected:hover,
body.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row,
body.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row:hover,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-selected,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-selected:hover,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected:hover,
html.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row,
html.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row:hover {
  background: linear-gradient(90deg, #8D56E8 0%, #7650D0 50%, #5E47B8 100%) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.18),
    inset 0 -1px 0 rgba(57,35,105,.20) !important;
}

body.cba-theme-light .cba-users-grid .mud-table-row.mud-selected .mud-table-cell,
body.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected .mud-table-cell,
body.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row .mud-table-cell,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-selected .mud-table-cell,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected .mud-table-cell,
html.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row .mud-table-cell {
  color: #FFFFFF !important;
  background: transparent !important;
}

/* ActionBar global: iconografía ligeramente mayor, desktop y móvil. */
.cba-action-button .cba-action-icon .mud-icon-root {
  font-size: 28px !important;
  width: 28px !important;
  height: 28px !important;
}


/* =============================================================================
   008A18u · Geometría global de grids + scrollbars + tablet
   - todos los grids CBA: header 58/12px, filas 55/14px, padding X 12px;
   - conserva colores, estados y comportamiento propios de cada grid;
   - Partidas: badge e importe siempre en negrita;
   - scrollbar de página idéntico al del acordeón según el tema;
   - tablet grande: drawer con ancho máximo para no sobredimensionarse.
   ============================================================================= */

/* Geometría/tipografía global. Se aplica al contrato común .cba-grid.
   Los estilos cromáticos y semánticos específicos siguen siendo de cada módulo. */
.cba-grid {
  --cba-grid-header-height: 58px;
  --cba-grid-row-height: 55px;
  --cba-grid-header-font-size: 12px;
  --cba-grid-body-font-size: 14px;
  --cba-grid-cell-padding-x: 12px;
  font-family: "Montserrat", "Segoe UI Variable", "Segoe UI", Arial, sans-serif !important;
}

.cba-grid .mud-table-root,
.cba-grid .mud-table-container,
.cba-grid .mud-table-head,
.cba-grid .mud-table-body,
.cba-grid .mud-table-row,
.cba-grid .mud-table-cell,
.cba-grid .mud-table-cell * {
  font-family: inherit !important;
}

.cba-grid .mud-table-head .mud-table-row {
  height: var(--cba-grid-header-height) !important;
  min-height: var(--cba-grid-header-height) !important;
}

.cba-grid .mud-table-head .mud-table-cell {
  height: var(--cba-grid-header-height) !important;
  min-height: var(--cba-grid-header-height) !important;
  padding-left: var(--cba-grid-cell-padding-x) !important;
  padding-right: var(--cba-grid-cell-padding-x) !important;
  font-size: var(--cba-grid-header-font-size) !important;
  vertical-align: middle !important;
}

.cba-grid .mud-table-head .column-header,
.cba-grid .mud-table-head .mud-table-sort-label,
.cba-grid .mud-table-head .mud-table-sort-label * {
  font-size: var(--cba-grid-header-font-size) !important;
}

.cba-grid .mud-table-body .mud-table-row {
  height: var(--cba-grid-row-height) !important;
  min-height: var(--cba-grid-row-height) !important;
}

.cba-grid .mud-table-body .mud-table-cell {
  height: var(--cba-grid-row-height) !important;
  min-height: var(--cba-grid-row-height) !important;
  padding-left: var(--cba-grid-cell-padding-x) !important;
  padding-right: var(--cba-grid-cell-padding-x) !important;
  font-size: var(--cba-grid-body-font-size) !important;
  vertical-align: middle !important;
}

/* MudDataGrid suele envolver texto/plantillas dentro de spans/divs con tamaño
   propio. Heredan 14px salvo componentes semánticos que tengan una regla más específica. */
.cba-grid .mud-table-body .mud-table-cell > span,
.cba-grid .mud-table-body .mud-table-cell > div {
  font-size: var(--cba-grid-body-font-size) !important;
}

/* Partidas conserva sus variables explícitas para que Mauricio pueda seguir
   probando el grid desde el mismo bloque, ahora con los valores aprobados. */
.cba-grid.cba-users-grid.cba-partidas-grid {
  --cba-partidas-header-height: 58px;
  --cba-partidas-row-height: 55px;
  --cba-partidas-header-font-size: 12px;
  --cba-partidas-body-font-size: 14px;
  --cba-partidas-cell-padding-x: 12px;
  --cba-partidas-badge-font-size: 13px;
  font-family: "Montserrat", "Segoe UI Variable", "Segoe UI", Arial, sans-serif !important;
}

/* Badge e importe de Partidas: siempre con peso fuerte, incluso en filas Título. */
.cba-partidas-grid .cba-partidas-it,
.cba-partidas-grid .mud-table-row.cba-partidas-title-row .cba-partidas-it {
  font-weight: 800 !important;
}

.cba-partidas-grid .cba-partidas-amount,
.cba-partidas-grid .mud-table-row.cba-partidas-title-row .cba-partidas-amount {
  font-weight: 800 !important;
}

/* Scroll vertical de página: exactamente la misma paleta y geometría que el
   scrollbar del acordeón. No se cambia el comportamiento de aparición. */
.cba-theme-dark:is(html, body),
html.cba-theme-dark,
body.cba-theme-dark,
.cba-theme-dark .mud-layout,
.cba-theme-dark .mud-main-content,
.cba-theme-dark .cba-main {
  scrollbar-width: thin !important;
  scrollbar-color: #4B5563 #0C1117 !important;
}

html.cba-theme-dark::-webkit-scrollbar,
body.cba-theme-dark::-webkit-scrollbar,
.cba-theme-dark .mud-layout::-webkit-scrollbar,
.cba-theme-dark .mud-main-content::-webkit-scrollbar,
.cba-theme-dark .cba-main::-webkit-scrollbar {
  width: 10px !important;
  height: 10px !important;
  background: #0C1117 !important;
}

html.cba-theme-dark::-webkit-scrollbar-track,
body.cba-theme-dark::-webkit-scrollbar-track,
.cba-theme-dark .mud-layout::-webkit-scrollbar-track,
.cba-theme-dark .mud-main-content::-webkit-scrollbar-track,
.cba-theme-dark .cba-main::-webkit-scrollbar-track {
  background: #0C1117 !important;
}

html.cba-theme-dark::-webkit-scrollbar-thumb,
body.cba-theme-dark::-webkit-scrollbar-thumb,
.cba-theme-dark .mud-layout::-webkit-scrollbar-thumb,
.cba-theme-dark .mud-main-content::-webkit-scrollbar-thumb,
.cba-theme-dark .cba-main::-webkit-scrollbar-thumb {
  background: #4B5563 !important;
  border: 2px solid #0C1117 !important;
  border-radius: 999px !important;
  background-clip: padding-box !important;
}

html.cba-theme-dark::-webkit-scrollbar-thumb:hover,
body.cba-theme-dark::-webkit-scrollbar-thumb:hover,
.cba-theme-dark .mud-layout::-webkit-scrollbar-thumb:hover,
.cba-theme-dark .mud-main-content::-webkit-scrollbar-thumb:hover,
.cba-theme-dark .cba-main::-webkit-scrollbar-thumb:hover {
  background: #667085 !important;
  background-clip: padding-box !important;
}

html.cba-theme-light,
body.cba-theme-light,
.cba-theme-light .mud-layout,
.cba-theme-light .mud-main-content,
.cba-theme-light .cba-main {
  scrollbar-width: thin !important;
  scrollbar-color: #9AA7B5 #EEF2F6 !important;
}

html.cba-theme-light::-webkit-scrollbar,
body.cba-theme-light::-webkit-scrollbar,
.cba-theme-light .mud-layout::-webkit-scrollbar,
.cba-theme-light .mud-main-content::-webkit-scrollbar,
.cba-theme-light .cba-main::-webkit-scrollbar {
  width: 10px !important;
  height: 10px !important;
  background: #EEF2F6 !important;
}

html.cba-theme-light::-webkit-scrollbar-track,
body.cba-theme-light::-webkit-scrollbar-track,
.cba-theme-light .mud-layout::-webkit-scrollbar-track,
.cba-theme-light .mud-main-content::-webkit-scrollbar-track,
.cba-theme-light .cba-main::-webkit-scrollbar-track {
  background: #EEF2F6 !important;
}

html.cba-theme-light::-webkit-scrollbar-thumb,
body.cba-theme-light::-webkit-scrollbar-thumb,
.cba-theme-light .mud-layout::-webkit-scrollbar-thumb,
.cba-theme-light .mud-main-content::-webkit-scrollbar-thumb,
.cba-theme-light .cba-main::-webkit-scrollbar-thumb {
  background: #9AA7B5 !important;
  border: 2px solid #EEF2F6 !important;
  border-radius: 999px !important;
  background-clip: padding-box !important;
}

html.cba-theme-light::-webkit-scrollbar-thumb:hover,
body.cba-theme-light::-webkit-scrollbar-thumb:hover,
.cba-theme-light .mud-layout::-webkit-scrollbar-thumb:hover,
.cba-theme-light .mud-main-content::-webkit-scrollbar-thumb:hover,
.cba-theme-light .cba-main::-webkit-scrollbar-thumb:hover {
  background: #7F8C9A !important;
  background-clip: padding-box !important;
}

/* Tablets grandes en modo compacto: el drawer sigue siendo cómodo pero ya no
   escala hasta 820px. Los teléfonos conservan casi todo el ancho disponible. */
@media (min-width: 601px) and (max-width: 959.98px) {
  .mud-drawer.cba-drawer {
    width: min(72vw, 560px) !important;
    max-width: 560px !important;
  }
}

/* =============================================================================
   008A18v · Refinamiento global de grids, light selection y navegación
   - headers de todos los grids CBA en mayúsculas;
   - Presupuesto e indicador/badge de Partidas siempre en negrita;
   - selección violeta light más clara y legible;
   - scrollbars de toda la aplicación idénticos al del acordeón por tema;
   - elimina outlines nativos negros sobre filas/containers seleccionables;
   - tablet grande: drawer 30% menor que 008A18u.
   ============================================================================= */

/* Todos los headers de grids CBA en mayúsculas. */
.cba-grid .mud-table-head .mud-table-cell,
.cba-grid .mud-table-head .column-header,
.cba-grid .mud-table-head .mud-table-sort-label,
.cba-grid .mud-table-head .mud-table-sort-label * {
  text-transform: uppercase !important;
}

/* Partidas: badge e importe/presupuesto siempre en negrita, incluso en filas
   Título donde el texto general se dejó deliberadamente en peso normal. */
.cba-partidas-grid .mud-table-row .mud-table-cell .cba-partidas-it,
.cba-partidas-grid .mud-table-row .mud-table-cell span.cba-partidas-amount,
.cba-partidas-grid .mud-table-row.cba-partidas-title-row .mud-table-cell .cba-partidas-it,
.cba-partidas-grid .mud-table-row.cba-partidas-title-row .mud-table-cell span.cba-partidas-amount {
  font-weight: 800 !important;
}

/* Light: violeta pastel, más claro que 008A18u, con texto ciruela oscuro para
   mantener contraste alto sobre la selección. */
body.cba-theme-light .cba-users-grid .mud-table-row.mud-selected,
body.cba-theme-light .cba-users-grid .mud-table-row.mud-selected:hover,
body.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected,
body.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected:hover,
body.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row,
body.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row:hover,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-selected,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-selected:hover,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected:hover,
html.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row,
html.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row:hover {
  background: linear-gradient(90deg, #C9B4F2 0%, #B99FEB 52%, #A98BE2 100%) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.42),
    inset 0 -1px 0 rgba(89,61,137,.18) !important;
}

body.cba-theme-light .cba-users-grid .mud-table-row.mud-selected .mud-table-cell,
body.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected .mud-table-cell,
body.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row .mud-table-cell,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-selected .mud-table-cell,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected .mud-table-cell,
html.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row .mud-table-cell {
  color: #271B39 !important;
  background: transparent !important;
}

/* Los grids que reciben foco por teclado no deben mostrar el outline negro
   nativo encima de la barra violeta. La selección de fila ya constituye el
   indicador visual; el container conserva un ring CBA muy sutil. */
.cba-users-grid-scroll:focus,
.cba-users-grid-scroll:focus-visible,
.cba-users-grid .mud-table-row:focus,
.cba-users-grid .mud-table-row:focus-visible,
.cba-users-grid .mud-table-cell:focus,
.cba-users-grid .mud-table-cell:focus-visible {
  outline: none !important;
}

.cba-users-grid-scroll:focus-visible {
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--cba-page-accent, #54B8FF) 28%, transparent) !important;
}

/* Un único contrato cromático de scrollbar por tema. Se aplica también a
   scroll containers internos que antes podían caer en reglas históricas. */
html.cba-theme-dark,
body.cba-theme-dark,
html.cba-theme-dark *,
body.cba-theme-dark * {
  scrollbar-width: thin !important;
  scrollbar-color: #4B5563 #0C1117 !important;
}

html.cba-theme-dark::-webkit-scrollbar,
body.cba-theme-dark::-webkit-scrollbar,
html.cba-theme-dark *::-webkit-scrollbar,
body.cba-theme-dark *::-webkit-scrollbar {
  width: 10px !important;
  height: 10px !important;
  background: #0C1117 !important;
}

html.cba-theme-dark::-webkit-scrollbar-track,
body.cba-theme-dark::-webkit-scrollbar-track,
html.cba-theme-dark *::-webkit-scrollbar-track,
body.cba-theme-dark *::-webkit-scrollbar-track {
  background: #0C1117 !important;
}

html.cba-theme-dark::-webkit-scrollbar-thumb,
body.cba-theme-dark::-webkit-scrollbar-thumb,
html.cba-theme-dark *::-webkit-scrollbar-thumb,
body.cba-theme-dark *::-webkit-scrollbar-thumb {
  background: #4B5563 !important;
  border: 2px solid #0C1117 !important;
  border-radius: 999px !important;
  background-clip: padding-box !important;
}

html.cba-theme-dark::-webkit-scrollbar-thumb:hover,
body.cba-theme-dark::-webkit-scrollbar-thumb:hover,
html.cba-theme-dark *::-webkit-scrollbar-thumb:hover,
body.cba-theme-dark *::-webkit-scrollbar-thumb:hover {
  background: #667085 !important;
  background-clip: padding-box !important;
}

html.cba-theme-light,
body.cba-theme-light,
html.cba-theme-light *,
body.cba-theme-light * {
  scrollbar-width: thin !important;
  scrollbar-color: #9AA7B5 #EEF2F6 !important;
}

html.cba-theme-light::-webkit-scrollbar,
body.cba-theme-light::-webkit-scrollbar,
html.cba-theme-light *::-webkit-scrollbar,
body.cba-theme-light *::-webkit-scrollbar {
  width: 10px !important;
  height: 10px !important;
  background: #EEF2F6 !important;
}

html.cba-theme-light::-webkit-scrollbar-track,
body.cba-theme-light::-webkit-scrollbar-track,
html.cba-theme-light *::-webkit-scrollbar-track,
body.cba-theme-light *::-webkit-scrollbar-track {
  background: #EEF2F6 !important;
}

html.cba-theme-light::-webkit-scrollbar-thumb,
body.cba-theme-light::-webkit-scrollbar-thumb,
html.cba-theme-light *::-webkit-scrollbar-thumb,
body.cba-theme-light *::-webkit-scrollbar-thumb {
  background: #9AA7B5 !important;
  border: 2px solid #EEF2F6 !important;
  border-radius: 999px !important;
  background-clip: padding-box !important;
}

html.cba-theme-light::-webkit-scrollbar-thumb:hover,
body.cba-theme-light::-webkit-scrollbar-thumb:hover,
html.cba-theme-light *::-webkit-scrollbar-thumb:hover,
body.cba-theme-light *::-webkit-scrollbar-thumb:hover {
  background: #7F8C9A !important;
  background-clip: padding-box !important;
}

/* Tablet grande (aprox. 8–11+ pulgadas): 30% menos que 008A18u.
   Tablets menores conservan la geometría de 008A18u y teléfonos su regla propia. */
@media (min-width: 768px) and (max-width: 959.98px) {
  .mud-drawer.cba-drawer {
    width: min(50.4vw, 392px) !important;
    max-width: 392px !important;
  }
}

/* =============================================================================
   008A18w · Legibilidad global + light negro + grids táctiles
   - body de todos los grids con Montserrat 550: más cuerpo sin llegar a negrita;
   - en light, textos de header/body en negro puro;
   - en móvil táctil se oculta el scrollbar físico de los grids, manteniendo
     desplazamiento horizontal por gesto (evita que el thumb invada la fila);
   ============================================================================= */

/* Montserrat variable permite 550: intermedio entre Regular/Medium y Semibold. */
.cba-grid .mud-table-body .mud-table-cell {
  font-weight: 550 !important;
}

/* Light: negro real para la tipografía base de encabezado y cuerpo.
   Componentes semánticos con color propio (badges/estados) conservan su regla. */
body.cba-theme-light .cba-grid .mud-table-head .mud-table-cell,
html.cba-theme-light .cba-grid .mud-table-head .mud-table-cell,
body.cba-theme-light .cba-grid .mud-table-head .column-header,
html.cba-theme-light .cba-grid .mud-table-head .column-header,
body.cba-theme-light .cba-grid .mud-table-head .mud-table-sort-label,
html.cba-theme-light .cba-grid .mud-table-head .mud-table-sort-label,
body.cba-theme-light .cba-grid .mud-table-body .mud-table-cell,
html.cba-theme-light .cba-grid .mud-table-body .mud-table-cell,
body.cba-theme-light .cba-users-grid .mud-table-row.mud-selected .mud-table-cell,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-selected .mud-table-cell,
body.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected .mud-table-cell,
html.cba-theme-light .cba-users-grid .mud-table-row.mud-table-row-selected .mud-table-cell,
body.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row .mud-table-cell,
html.cba-theme-light .cba-users-grid .mud-table-row.cba-selected-row .mud-table-cell {
  color: #000000 !important;
}

/* Android/Chrome dibuja el scrollbar horizontal como overlay sobre la última
   fila del MudDataGrid. En pantallas táctiles pequeñas no aporta navegación:
   el usuario desplaza con el dedo. Se oculta sólo la representación visual,
   no el overflow ni el gesto de desplazamiento. */
@media (max-width: 767.98px) and (pointer: coarse) {
  .cba-users-grid-scroll,
  .cba-users-grid-scroll .mud-table-container {
    scrollbar-width: none !important;
    -ms-overflow-style: none !important;
    -webkit-overflow-scrolling: touch;
  }

  .cba-users-grid-scroll::-webkit-scrollbar,
  .cba-users-grid-scroll .mud-table-container::-webkit-scrollbar {
    width: 0 !important;
    height: 0 !important;
    display: none !important;
    background: transparent !important;
  }

  .cba-users-grid-scroll::-webkit-scrollbar-track,
  .cba-users-grid-scroll::-webkit-scrollbar-thumb,
  .cba-users-grid-scroll .mud-table-container::-webkit-scrollbar-track,
  .cba-users-grid-scroll .mud-table-container::-webkit-scrollbar-thumb {
    display: none !important;
    background: transparent !important;
    border: 0 !important;
  }
}

/* =============================================================================
   008A18y · Helper de partidas de Erogaciones
   - aprovecha el ancho útil del dialog hasta el borde derecho;
   - Cuenta más compacta;
   - todo el espacio recuperado queda para Concepto.
   ============================================================================= */
.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-body {
  padding-right: 4px !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .cba-general-picker-grid {
  box-sizing: border-box !important;
  width: 100% !important;
  max-width: none !important;
  margin-right: 0 !important;
  padding-right: 0 !important;
  scrollbar-gutter: auto !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .mud-table-root {
  width: 100% !important;
  min-width: 0 !important;
  table-layout: fixed !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .mud-table-cell:nth-child(1) {
  width: 138px !important;
  min-width: 138px !important;
  max-width: 138px !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .mud-table-cell:nth-child(2) {
  width: auto !important;
  min-width: 0 !important;
  max-width: none !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .mud-table-cell:nth-child(3),
.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .mud-table-cell:nth-child(4),
.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .mud-table-cell:nth-child(5) {
  width: 145px !important;
  min-width: 145px !important;
  max-width: 145px !important;
}

.mud-dialog.cba-scroll-dialog-host .cba-oc-partida-picker .mud-table-cell:nth-child(6) {
  width: 115px !important;
  min-width: 115px !important;
  max-width: 115px !important;
}

/* 008A19a · el menú filtrado nunca debe centrarse verticalmente. */
.cba-drawer-menu-scroll {
  display: block !important;
  padding-top: 0 !important;
  align-content: start !important;
  justify-content: start !important;
}

.cba-drawer-menu-scroll > .cba-real-menu {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
  justify-content: flex-start !important;
  align-content: flex-start !important;
}

/* ============================================================================
   008A19a · Sueldos · naturaleza de conceptos
   Los badges se definen globalmente porque se usan tanto en el picker como en
   los diálogos de conceptos habituales del empleado.
   ============================================================================ */
.cba-sd-nature-badge {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 2px 8px;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: .68rem;
  font-weight: 800;
  white-space: nowrap;
}

.cba-sd-nature-badge.haber { color: #2CC58C; }
.cba-sd-nature-badge.asignacion { color: #5799F2; }
.cba-sd-nature-badge.deduccion { color: #F05A73; }
.cba-sd-nature-badge.patronal { color: #D99832; }
