/* ==========================================================================
   TSC Design System v2 · «Deep Market» — OVERRIDES GLOBALES DE MUDBLAZOR 7.16
   Restila los componentes nativos sin tocar sus parámetros. Es el ÚNICO
   fichero donde se permite !important (y se usa solo cuando MudBlazor o
   Bootstrap ganarían por especificidad/orden). Se carga tras MudBlazor,
   Bootstrap y app.css. Guía §3.
   Mapeo de paleta (AppThemes.V2):
     Primary   = --tsc-primary (cian: marca, enlaces, foco, iconos activos)
     Secondary = --tsc-accent  (lima: acción)
     Filled+Primary se repinta aquí como CTA lima (--tsc-accent / --tsc-on-accent)
   ========================================================================== */

/* ---------- Base / Bootstrap ---------- */
body {
    background-color: var(--tsc-bg-0) !important;
    color: var(--tsc-text-1);
    font-family: var(--tsc-font-sans) !important;
}

a:not([class]) {
    color: var(--tsc-primary);
}

::selection {
    background: var(--tsc-primary-soft);
}

:focus-visible {
    outline: 2px solid var(--tsc-primary);
    outline-offset: 2px;
}

/* VER004 · MudBlazor.min.css declara button:focus / a:focus-visible { outline: none } (especificidad 0,1,1),
   que anulaba el anillo global anterior en botones, enlaces y NavLinks. :is() sube la especificidad a 0,2,0.
   Los campos de texto quedan fuera: Mud ya marca el foco con el borde del input. */
:is(a, button, summary, [role="button"], [role="tab"], [role="menuitem"], [role="switch"]):focus-visible {
    outline: 2px solid var(--tsc-primary);
    outline-offset: 2px;
}

.mud-typography {
    font-family: var(--tsc-font-sans);
}

/* Scrollbars finas */
* {
    scrollbar-width: thin;
    scrollbar-color: var(--tsc-border-strong) transparent;
}

*::-webkit-scrollbar {
    width: 8px;
    height: 8px;
}

*::-webkit-scrollbar-track {
    background: transparent;
}

*::-webkit-scrollbar-thumb {
    background: var(--tsc-border-strong);
    border-radius: var(--tsc-r-pill);
    border: 2px solid transparent;
    background-clip: padding-box;
}

/* Transición de tema (solo superficies principales, nunca layout) */
.tsc-root,
.mud-appbar,
.mud-drawer,
.mud-paper,
.mud-main-content {
    transition: background-color var(--tsc-dur-base) var(--tsc-ease-in-out), color var(--tsc-dur-base) var(--tsc-ease-in-out), border-color var(--tsc-dur-base) var(--tsc-ease-in-out);
}

/* ---------- AppBar (vidrio) ---------- */
.mud-appbar {
    background-color: transparent !important;
    background-image: var(--tsc-grad-appbar);
    -webkit-backdrop-filter: blur(var(--tsc-glass-blur)) saturate(140%);
    backdrop-filter: blur(var(--tsc-glass-blur)) saturate(140%);
    border-bottom: 1px solid var(--tsc-border);
    box-shadow: none !important;
    color: var(--tsc-text-1) !important;
}

/* ---------- Drawer ---------- */
.mud-drawer {
    background-color: var(--tsc-bg-1) !important;
    border-right: 1px solid var(--tsc-border);
    box-shadow: none !important;
}

.mud-drawer-content {
    scrollbar-gutter: stable;
}

/* ---------- Paper / Card ---------- */
.mud-paper:not(.mud-paper-square):not(.mud-popover):not(.mud-snackbar):not(.mud-table):not(.mud-appbar) {
    border-radius: var(--tsc-r-md);
}

.mud-paper:not(.mud-paper-outlined):not(.mud-elevation-0):not(.mud-popover) {
    border: 1px solid var(--tsc-border);
}

.mud-paper-outlined {
    border-color: var(--tsc-border) !important;
}

.mud-card {
    border-radius: var(--tsc-r-md);
    overflow: hidden;
}

.mud-card-header {
    padding: var(--tsc-sp-4) var(--tsc-sp-5) var(--tsc-sp-2);
}

.mud-card-content {
    padding: var(--tsc-sp-4) var(--tsc-sp-5);
}

.mud-card-actions {
    padding: var(--tsc-sp-2) var(--tsc-sp-4) var(--tsc-sp-4);
    gap: var(--tsc-sp-2);
}

.mud-divider {
    border-color: var(--tsc-border) !important;
}

/* ---------- Botones ---------- */
.mud-button-root.mud-button {
    border-radius: var(--tsc-r-sm);
    letter-spacing: .01em;
    transition: background-color var(--tsc-dur-fast) var(--tsc-ease), box-shadow var(--tsc-dur-fast) var(--tsc-ease), border-color var(--tsc-dur-fast) var(--tsc-ease), transform var(--tsc-dur-fast) var(--tsc-ease), filter var(--tsc-dur-fast) var(--tsc-ease);
}

.mud-button-root.mud-button.mud-button-size-medium {
    min-height: 40px;
    padding-left: var(--tsc-sp-4);
    padding-right: var(--tsc-sp-4);
}

.mud-button-root.mud-button.mud-button-size-large {
    min-height: 48px;
    padding-left: var(--tsc-sp-5);
    padding-right: var(--tsc-sp-5);
}

/* CTA: Filled + Primary = lima con texto oscuro */
.mud-button-filled.mud-button-filled-primary {
    background-color: var(--tsc-accent) !important;
    color: var(--tsc-on-accent) !important;
    box-shadow: 0 0 0 1px rgba(var(--tsc-accent-rgb), .35), 0 6px 18px rgba(var(--tsc-accent-rgb), .18);
}

.mud-button-filled.mud-button-filled-primary:hover {
    filter: brightness(1.06);
    box-shadow: 0 0 0 1px rgba(var(--tsc-accent-rgb), .55), 0 10px 24px rgba(var(--tsc-accent-rgb), .26);
}

.mud-button-filled.mud-button-filled-primary:active {
    transform: translateY(1px);
}

.mud-button-filled.mud-button-filled-primary .mud-icon-root {
    color: inherit;
}

.mud-button-filled:disabled,
.mud-button-filled.mud-button-filled-primary:disabled {
    background-color: var(--tsc-bg-2) !important;
    color: var(--tsc-text-3) !important;
    box-shadow: none;
    filter: none;
}

.mud-button-outlined {
    border-color: var(--tsc-border-strong);
}

.mud-button-outlined.mud-button-outlined-default,
.mud-button-outlined.mud-inherit-text {
    color: var(--tsc-text-1);
}

.mud-button-outlined:hover {
    background-color: var(--tsc-primary-soft);
}

.mud-icon-button {
    transition: background-color var(--tsc-dur-fast) var(--tsc-ease), color var(--tsc-dur-fast) var(--tsc-ease);
}

.mud-button-group-root .mud-button-root.mud-button {
    border-radius: 0;
}

/* ---------- Inputs / Select / Autocomplete ---------- */
.mud-input.mud-input-outlined {
    background-color: var(--tsc-bg-2);
    border-radius: var(--tsc-r-sm);
}

.mud-input.mud-input-outlined .mud-input-outlined-border {
    border-color: var(--tsc-border-strong);
    border-radius: var(--tsc-r-sm);
    transition: border-color var(--tsc-dur-base) var(--tsc-ease), box-shadow var(--tsc-dur-base) var(--tsc-ease);
}

.mud-input.mud-input-outlined:not(.mud-disabled):hover .mud-input-outlined-border {
    border-color: var(--tsc-text-3);
}

.mud-input.mud-input-outlined:focus-within .mud-input-outlined-border,
.mud-input.mud-input-outlined.mud-input-adorned-start:focus-within .mud-input-outlined-border {
    border-color: var(--tsc-primary) !important;
    border-width: 1px !important;
    box-shadow: 0 0 0 2px rgba(var(--tsc-primary-rgb), .35);
}

.mud-input.mud-input-outlined.mud-input-error .mud-input-outlined-border {
    border-color: var(--tsc-error) !important;
}

.mud-input-control .mud-input-label-outlined {
    background-color: transparent;
}

.mud-input-control .mud-input-label-outlined.mud-input-label-inputcontrol {
    color: var(--tsc-text-2);
}

.mud-input-control:focus-within .mud-input-label-outlined {
    color: var(--tsc-primary);
}

.mud-input-helper-text.mud-input-error,
.mud-input-error .mud-input-helper-text {
    color: var(--tsc-error);
}

.mud-input.mud-input-underline:after {
    border-bottom-color: var(--tsc-primary);
}

input,
textarea,
select {
    font-family: inherit;
}

/* ---------- Tablas / DataGrid ---------- */
.mud-table {
    border: 1px solid var(--tsc-border);
    border-radius: var(--tsc-r-md);
    overflow: hidden;
}

.mud-table.mud-elevation-0 {
    border: 1px solid var(--tsc-border);
}

.mud-table-container {
    scrollbar-gutter: auto;
}

.mud-table-head .mud-table-cell,
.mud-data-grid .mud-table-head .mud-table-cell {
    background-color: var(--tsc-bg-2);
    color: var(--tsc-text-2);
    font-size: var(--tsc-fs-12);
    font-weight: 600;
    letter-spacing: .04em;
    border-bottom: 1px solid var(--tsc-border-strong);
}

.mud-table-sticky-header .mud-table-head .mud-table-cell {
    background-color: var(--tsc-bg-2) !important;
}

.mud-table-head .mud-table-cell .mud-table-sort-label,
.mud-table-head .mud-table-cell .mud-button-root {
    color: inherit;
}

.mud-table-body .mud-table-cell {
    font-size: var(--tsc-fs-14);
    border-bottom: 1px solid var(--tsc-border);
    font-variant-numeric: tabular-nums;
}

.mud-table-cell.mud-table-cell-align-right,
.mud-table-cell .tsc-num {
    font-family: var(--tsc-font-mono);
    font-variant-numeric: tabular-nums;
}

.mud-table-hover .mud-table-container .mud-table-root .mud-table-body .mud-table-row:hover,
.mud-data-grid .mud-table-body .mud-table-row:hover {
    background-color: var(--tsc-bg-3);
}

/* zebra desactivada: la jerarquía la marcan bordes y hover */
.mud-table-striped .mud-table-container .mud-table-root .mud-table-body .mud-table-row:nth-of-type(odd):not(:hover) {
    background-color: transparent;
}

.mud-table-pagination-toolbar,
.mud-table-toolbar {
    border-color: var(--tsc-border);
    color: var(--tsc-text-2);
}

.mud-table-foot .mud-table-cell {
    background-color: var(--tsc-bg-2);
    font-weight: 600;
}

/* ---------- Diálogos (vidrio) ---------- */
.mud-overlay .mud-overlay-scrim.mud-overlay-dark {
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
}

.mud-dialog {
    background-color: var(--tsc-glass-bg) !important;
    -webkit-backdrop-filter: blur(var(--tsc-glass-blur)) saturate(140%);
    backdrop-filter: blur(var(--tsc-glass-blur)) saturate(140%);
    border: 1px solid var(--tsc-border);
    border-radius: var(--tsc-r-lg) !important;
    box-shadow: var(--tsc-shadow-2) !important;
    color: var(--tsc-text-1);
    animation: tsc-dialog-in var(--tsc-dur-slow) var(--tsc-ease) both;
}

.mud-dialog .mud-dialog-title {
    padding: var(--tsc-sp-4) var(--tsc-sp-5);
    border-bottom: 1px solid var(--tsc-border);
    font-weight: 600;
}

/* VER004 · Diálogos abiertos con título vacío (p. ej. EficientPortfolioDialog) y CloseButton: sin barra ni separador vacíos */
.mud-dialog .mud-dialog-title:has(> .mud-typography:empty) {
    padding-block: var(--tsc-sp-2) 0;
    border-bottom-color: transparent;
}

.mud-dialog .mud-dialog-content {
    padding-top: var(--tsc-sp-4);
}

.mud-dialog .mud-dialog-actions {
    padding: var(--tsc-sp-3) var(--tsc-sp-5) var(--tsc-sp-4);
    gap: var(--tsc-sp-2);
    border-top: 1px solid var(--tsc-border);
}

@keyframes tsc-dialog-in {
    from {
        opacity: 0;
        transform: translateY(8px) scale(.985);
    }

    to {
        opacity: 1;
        transform: none;
    }
}

/* ---------- Chips (soft + pill) ---------- */
.mud-chip {
    border-radius: var(--tsc-r-pill);
    font-weight: 500;
    letter-spacing: .01em;
}

.mud-chip.mud-chip-filled.mud-chip-color-default {
    background-color: var(--tsc-bg-2);
    color: var(--tsc-text-1);
    border: 1px solid var(--tsc-border);
}

.mud-chip.mud-chip-filled.mud-chip-color-default:hover {
    background-color: var(--tsc-bg-3);
}

.mud-chip.mud-chip-filled.mud-chip-color-primary { background-color: var(--tsc-primary-soft); color: var(--tsc-primary); border: 1px solid rgba(var(--tsc-primary-rgb), .3); }
.mud-chip.mud-chip-filled.mud-chip-color-secondary { background-color: var(--tsc-accent-soft); color: var(--tsc-accent); border: 1px solid rgba(var(--tsc-accent-rgb), .3); }
.mud-chip.mud-chip-filled.mud-chip-color-success { background-color: var(--tsc-success-soft); color: var(--tsc-success); border: 1px solid color-mix(in srgb, var(--tsc-success) 30%, transparent); }
.mud-chip.mud-chip-filled.mud-chip-color-warning { background-color: var(--tsc-warning-soft); color: var(--tsc-warning); border: 1px solid color-mix(in srgb, var(--tsc-warning) 30%, transparent); }
.mud-chip.mud-chip-filled.mud-chip-color-error { background-color: var(--tsc-error-soft); color: var(--tsc-error); border: 1px solid color-mix(in srgb, var(--tsc-error) 30%, transparent); }
.mud-chip.mud-chip-filled.mud-chip-color-info { background-color: var(--tsc-info-soft); color: var(--tsc-info); border: 1px solid color-mix(in srgb, var(--tsc-info) 30%, transparent); }
.mud-chip.mud-chip-filled.mud-chip-color-tertiary { background-color: color-mix(in srgb, var(--tsc-violet) 16%, transparent); color: var(--tsc-violet); border: 1px solid color-mix(in srgb, var(--tsc-violet) 30%, transparent); }
.mud-chip.mud-chip-filled.mud-chip-color-dark { background-color: var(--tsc-muted-soft); color: var(--tsc-text-2); border: 1px solid var(--tsc-border); }

.mud-chip.mud-chip-filled .mud-chip-icon {
    color: inherit;
}

.mud-chip.mud-chip-outlined {
    border-color: var(--tsc-border-strong);
}

/* ---------- Tabs ---------- */
.mud-tabs-tabbar {
    background-color: transparent;
    border-bottom: 1px solid var(--tsc-border);
}

.mud-tabs-tabbar.mud-tabs-tabbar-primary,
.mud-tabs-tabbar.mud-tabs-tabbar-secondary,
.mud-tabs-tabbar.mud-tabs-tabbar-dark,
.mud-tabs-tabbar.mud-tabs-tabbar-info {
    background-color: var(--tsc-bg-1);
    color: var(--tsc-text-1);
}

.mud-tabs-rounded .mud-tabs-tabbar,
.mud-tabs-rounded .mud-tabs-panels {
    border-radius: var(--tsc-r-md);
}

.mud-tab {
    min-height: 44px;
    text-transform: none;
    font-weight: 500;
    letter-spacing: .01em;
    color: var(--tsc-text-2);
    transition: color var(--tsc-dur-base) var(--tsc-ease), background-color var(--tsc-dur-base) var(--tsc-ease);
}

.mud-tab:hover {
    color: var(--tsc-text-1);
    background-color: var(--tsc-primary-soft);
}

.mud-tab.mud-tab-active {
    color: var(--tsc-primary);
}

.mud-tab-slider {
    background: var(--tsc-grad-brand) !important;
    height: 2px;
}

/* ---------- Expansion panels ---------- */
.mud-expand-panel {
    background-color: var(--tsc-bg-1);
    color: var(--tsc-text-1);
}

.mud-expansion-panels:not(.mud-expansion-panels-square) .mud-expand-panel:first-child {
    border-top-left-radius: var(--tsc-r-md);
    border-top-right-radius: var(--tsc-r-md);
}

.mud-expansion-panels:not(.mud-expansion-panels-square) .mud-expand-panel:last-child {
    border-bottom-left-radius: var(--tsc-r-md);
    border-bottom-right-radius: var(--tsc-r-md);
}

.mud-expand-panel.mud-expand-panel-border {
    border-bottom: 1px solid var(--tsc-border);
}

.mud-expand-panel .mud-expand-panel-header {
    transition: background-color var(--tsc-dur-fast) var(--tsc-ease);
}

.mud-expand-panel .mud-expand-panel-header:hover {
    background-color: var(--tsc-bg-3);
}

.mud-expand-panel .mud-expand-panel-icon {
    color: var(--tsc-text-3);
}

/* ---------- Alertas (soft + borde izquierdo 3px) ---------- */
.mud-alert {
    border-radius: var(--tsc-r-sm);
    border: 1px solid var(--tsc-border);
    border-left-width: 3px;
    color: var(--tsc-text-1);
    background: linear-gradient(var(--tsc-alert-soft, var(--tsc-muted-soft)), var(--tsc-alert-soft, var(--tsc-muted-soft))), var(--tsc-bg-1);
}

.mud-alert .mud-alert-icon .mud-icon-root {
    font-size: 20px;
    color: var(--tsc-alert-c, var(--tsc-text-2));
}

.mud-alert .mud-alert-message {
    color: var(--tsc-text-1);
}

.mud-alert-text-normal, .mud-alert-filled-normal, .mud-alert-outlined-normal,
.mud-alert-text-dark, .mud-alert-filled-dark, .mud-alert-outlined-dark { --tsc-alert-c: var(--tsc-text-2); --tsc-alert-soft: var(--tsc-muted-soft); border-left-color: var(--tsc-text-3); }
.mud-alert-text-info, .mud-alert-filled-info, .mud-alert-outlined-info,
.mud-alert-text-primary, .mud-alert-filled-primary, .mud-alert-outlined-primary { --tsc-alert-c: var(--tsc-info); --tsc-alert-soft: var(--tsc-info-soft); border-left-color: var(--tsc-info); }
.mud-alert-text-success, .mud-alert-filled-success, .mud-alert-outlined-success,
.mud-alert-text-secondary, .mud-alert-filled-secondary, .mud-alert-outlined-secondary { --tsc-alert-c: var(--tsc-success); --tsc-alert-soft: var(--tsc-success-soft); border-left-color: var(--tsc-success); }
.mud-alert-text-warning, .mud-alert-filled-warning, .mud-alert-outlined-warning { --tsc-alert-c: var(--tsc-warning); --tsc-alert-soft: var(--tsc-warning-soft); border-left-color: var(--tsc-warning); }
.mud-alert-text-error, .mud-alert-filled-error, .mud-alert-outlined-error { --tsc-alert-c: var(--tsc-error); --tsc-alert-soft: var(--tsc-error-soft); border-left-color: var(--tsc-error); }

/* ---------- Snackbar (vidrio sólido) ---------- */
.mud-snackbar {
    border-radius: var(--tsc-r-md);
    box-shadow: var(--tsc-shadow-2);
    font-family: var(--tsc-font-sans);
    -webkit-backdrop-filter: blur(var(--tsc-glass-blur));
    backdrop-filter: blur(var(--tsc-glass-blur));
}

/* ---------- Menús / Popovers ---------- */
.mud-popover.mud-paper {
    background-color: var(--tsc-glass-bg);
    -webkit-backdrop-filter: blur(var(--tsc-glass-blur)) saturate(140%);
    backdrop-filter: blur(var(--tsc-glass-blur)) saturate(140%);
    border: 1px solid var(--tsc-border);
    border-radius: var(--tsc-r-md);
    box-shadow: var(--tsc-shadow-2);
}

.mud-popover .mud-list-item {
    border-radius: var(--tsc-r-sm);
    transition: background-color var(--tsc-dur-fast) var(--tsc-ease);
}

.mud-popover .mud-list {
    padding: var(--tsc-sp-1);
}

.mud-list-item:hover,
.mud-list-item-clickable:hover {
    background-color: var(--tsc-bg-3);
}

.mud-selected-item {
    background-color: var(--tsc-primary-soft) !important;
    color: var(--tsc-primary);
}

/* ---------- Progreso ---------- */
.mud-progress-linear {
    border-radius: var(--tsc-r-pill);
    overflow: hidden;
}

.mud-progress-linear .mud-progress-linear-bar {
    border-radius: var(--tsc-r-pill);
}

/* ---------- Tooltip (invertido en ambos temas) ---------- */
.mud-tooltip.mud-tooltip-default {
    background-color: var(--tsc-text-1);
    color: var(--tsc-bg-1);
    font-size: var(--tsc-fs-12);
    font-weight: 500;
    border-radius: var(--tsc-r-sm);
    padding: 6px 10px;
    box-shadow: var(--tsc-shadow-2);
}

/* ---------- Badge ---------- */
.mud-badge {
    font-family: var(--tsc-font-mono);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

/* ---------- Switch / Checkbox / Radio ---------- */
.mud-switch .mud-switch-track {
    background-color: var(--tsc-border-strong);
    opacity: 1;
}

.mud-checkbox .mud-button-root:focus-visible,
.mud-radio .mud-button-root:focus-visible,
.mud-switch .mud-switch-base:focus-visible {
    outline: 2px solid var(--tsc-primary);
    outline-offset: 1px;
}

/* ---------- Nav (base; la composición vive en components.css .tsc-nav) ---------- */
.mud-navmenu .mud-nav-link {
    font-family: var(--tsc-font-sans);
    text-decoration: none;
}

/* ---------- Impresión / PDF (migrado desde MainLayout y FooterLinks) ---------- */
@media print {
    .mud-appbar,
    .mud-drawer,
    footer,
    .tsc-footer,
    .cookie-consent-bar,
    .tsc-cookie-bar,
    .mud-overlay,
    .mud-dialog-container,
    .mud-paper[role="dialog"],
    .tsc-root__glow {
        display: none !important;
    }

    .mud-main-content {
        margin-top: 0 !important;
        padding: 0 !important;
    }

    .tsc-root,
    body {
        background: #ffffff !important;
    }
}

/* ---------- Movimiento reducido: todo a 0 ms (complementa motion.css) ---------- */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0ms !important;
        animation-delay: 0ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0ms !important;
        scroll-behavior: auto !important;
    }
}

/* ---------- Correcciones post-VER004 (revisión del usuario 2026-10-28) ---------- */
/* Popovers de select/autocomplete: un único scroll (el del popover), nunca dos. */
.mud-popover .mud-list {
    max-height: none !important;
    overflow: visible !important;
}

/* Tablas Mud con .tsc-table: las reglas de cabecera nowrap de components.css son para
   tablas nativas; en Mud las cabeceras pueden partir línea y las celdas se compactan
   para que la tabla encaje en su contenedor sin scroll horizontal innecesario. */
.mud-table.tsc-table .mud-table-head .mud-table-cell,
.mud-data-grid.tsc-table .mud-table-head .mud-table-cell {
    white-space: normal !important;
    line-height: 1.25;
    vertical-align: bottom;
}

.mud-table.tsc-table .mud-table-cell,
.mud-data-grid.tsc-table .mud-table-cell {
    padding: 6px 8px !important;
}

/* Celdas de acciones con varios botones de icono: siempre en una fila. */
.mud-table-cell:has(> .mud-icon-button + .mud-icon-button),
.mud-table-cell:has(> .d-flex > .mud-icon-button + .mud-icon-button) {
    white-space: nowrap !important;
    width: 1%;
}
