.chart {
  width: 100%;
  min-height: 400px;
}

:root {
  --color-principal: var(--app-brand-primary, #ffb300);
  /* Derivados para el ribbon (se recalcula vía JS si cambia el color en runtime) */
    --navbar-bg: var(--app-brand-primary, var(--color-principal));
  --navbar-bg-rgb: 255, 179, 0; /* valor inicial base para fallback */
    /* Capas unificadas */
    --z-navbar: 1200;
    --z-ribbon: 1100;
    --z-dropdown: 1300;
    --z-offcanvas: 1400;
    --z-modal-backdrop: 2000;
    --z-modal: 2010;
    --z-popover: 2020;
    --z-tooltip: 2025;
}
.color-principal {
  color: var(--color-principal);
}

/* Personalización botones */
.btn-primary {
  background-color: var(--color-principal) !important;
  border-color: var(--color-principal) !important;
  color: var(--app-brand-primary-contrast, #111827) !important;
}

.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active {
  background-color: color-mix(in srgb, var(--color-principal) 88%, black) !important;
  border-color: color-mix(in srgb, var(--color-principal) 82%, black) !important;
  color: var(--app-brand-primary-contrast, #111827) !important;
}

/* Navbar usa variable en lugar de color inline */
.navbar.app-navbar {
    background-color: var(--navbar-bg) !important;
    z-index: var(--z-navbar) !important;
}

.app-navbar-logo {
    height: 50px !important;
    max-height: 50px !important;
    max-width: 250px !important;
    width: auto !important;
    object-fit: contain !important;
    display: block;
}

/* Clase para aplicar gradiente suave si se desea en futuro */
.navbar.app-navbar.gradient {
    background: linear-gradient(180deg, var(--navbar-bg) 0%, rgba(var(--navbar-bg-rgb),0.92) 60%, rgba(var(--navbar-bg-rgb),0.85) 100%) !important;
}

.campo-error {
  border: 2px solid red !important;
  background-color: #ffe6e6;
}

/* Personalización menú móvil (offcanvas) */
.offcanvas {
    background-color: var(--app-brand-primary, var(--color-principal)) !important;
    color: var(--app-brand-primary-contrast, white) !important;
    z-index: var(--z-offcanvas) !important;
}

.offcanvas .nav-link,
.offcanvas .dropdown-item {
    color: var(--app-brand-primary-contrast, black) !important;
}

/* Submenús (dropdown) dentro del offcanvas */
.offcanvas .dropdown-menu {
    background-color: white !important;
    border: none !important; /* opcional, quita borde gris */
}

.offcanvas .dropdown-menu .dropdown-item {
    color: black !important;
}

/* Hover en los dropdown */
.offcanvas .dropdown-menu .dropdown-item:hover {
    background-color: rgba(255,255,255,0.1) !important;
    color: var(--app-brand-primary, var(--color-principal)) !important;
}

/* Icono del menú hamburguesa en móvil blanco */
.navbar-toggler-icon {
    background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='white' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E") !important;
}


/* Centrar verticalmente todos los links del navbar */
.navbar-nav .nav-link,
.navbar-nav .nav-item .dropdown-toggle {
    display: flex;
    align-items: center;
    padding-top: 0.5rem;   /* ajusta si hace falta */
    padding-bottom: 0.5rem;
    height: 100%;           /* asegura que ocupen toda la altura del navbar */
}

/* Imagen del perfil alineada */
.navbar-nav .nav-link img {
    display: inline-block;
    vertical-align: middle;
    margin-right: 0.5rem;   /* espacio entre imagen y texto */
}

/* Asegura que dropdowns no afecten la alineación */
.navbar-nav .dropdown-menu {
    min-width: 10rem;       /* ajusta según tu diseño */
    z-index: var(--z-dropdown) !important;
}

/* Badges de aviso del menú: no heredar color del dropdown/offcanvas */
.menu-alerta-badge,
.app-navbar .menu-alerta-badge,
.offcanvas .menu-alerta-badge {
    display: inline-block !important;
    min-width: 18px !important;
    height: 18px !important;
    padding: 0 5px !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    line-height: 18px !important;
    text-align: center !important;
    vertical-align: middle !important;
    margin-left: 4px !important;
    border-radius: 50% !important;
    box-shadow: 0 1px 2px rgba(60, 64, 67, .3) !important;
    flex-shrink: 0 !important;
    background: var(--app-brand-badge-color, #D93025) !important;
    color: var(--app-brand-badge-contrast, #FFFFFF) !important;
}

/* Asegurar que los diálogos no queden ocultos tras navbar fijo */
/* Eliminado margin-top forzado para permitir superposición total sobre navbar */

/* Z-INDEX FIX unificado */
.ribbon-bar { z-index: var(--z-ribbon) !important; }
.modal-backdrop { z-index: var(--z-modal-backdrop) !important; }
.modal { z-index: var(--z-modal) !important; }
.popover { z-index: var(--z-popover) !important; }
.tooltip { z-index: var(--z-tooltip) !important; }

/* Ribbon buttons reusable styles */
.ribbon-content {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}

.ribbon-bar .ribbon-text-link {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    padding: 0.25rem 0.55rem;
    border-radius: 8px;
    border: 1px solid rgba(0,0,0,0.08);
    background: linear-gradient(180deg, #ffffff, #f4f4f4);
    color: #222;
    font-weight: 600;
    font-size: 0.9rem;
    text-decoration: none;
    letter-spacing: 0.01em;
    transition: background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
    box-shadow: 0 4px 10px rgba(0,0,0,0.08);
}

.ribbon-bar .ribbon-text-link:hover,
.ribbon-bar .ribbon-text-link:focus {
    background: linear-gradient(180deg, var(--app-brand-primary) 0%, color-mix(in srgb, var(--app-brand-primary) 82%, black) 100%);
    color: var(--app-brand-primary-contrast) !important;
    border-color: color-mix(in srgb, var(--app-brand-primary) 78%, black);
    transform: translateY(-1px);
    box-shadow: 0 8px 16px rgba(0,0,0,0.15);
}

.ribbon-bar .ribbon-text-link.active {
    background: linear-gradient(180deg, #111, #2a2a2a);
    color: #fff !important;
    border-color: #111;
    box-shadow: 0 8px 18px rgba(0,0,0,0.3);
    transform: translateY(-1px);
}

.ribbon-divider {
    width: 1px;
    height: 28px;
    background-color: rgba(0,0,0,0.15);
    display: inline-block;
    margin: 0 0.75rem;
    align-self: center;
}

.cliente-autocomplete-wrapper,
.select-autocomplete-wrapper {
    position: relative;
}

.cliente-suggestions,
.select-autocomplete-suggestions {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    z-index: 1050;
    max-height: 220px;
    overflow-y: auto;
    box-shadow: 0 0.5rem 1rem rgba(0,0,0,.15);
}

.cliente-suggestions button,
.select-autocomplete-suggestions button {
    text-align: left;
    white-space: normal;
}

@media (max-width: 991.98px) {
    .ribbon-bar {
        position: static;
        top: auto;
        left: 0;
        width: 100%;
        box-shadow: none;
    }
    body.ribbon-visible {
        padding-top: var(--nav-height, 56px);
    }
}

@media (max-width: 768px) {
    .ribbon-bar {
        padding: 0.45rem 0.6rem;
    }
    .ribbon-content {
        flex-wrap: wrap;
        overflow: visible;
        gap: 0.35rem;
        padding-bottom: 0;
        flex-direction: column;
        align-items: stretch;
    }
    .ribbon-bar .ribbon-text-link {
        width: 100%;
        justify-content: center;
        padding: 0.35rem 0.55rem;
        font-size: 0.88rem;
    }
    .ribbon-divider {
        display: none;
    }
}

/* DataTables: paginacion alineada con el color corporativo */
.dataTables_wrapper .dataTables_paginate .pagination {
    gap: 0.25rem;
}

.dataTables_wrapper .dataTables_paginate .page-link {
    border-radius: 0.65rem;
    border: 1px solid color-mix(in srgb, var(--color-principal) 45%, #d0d5dd);
    color: var(--color-principal);
    background: color-mix(in srgb, var(--color-principal) 10%, white);
    box-shadow: 0 4px 12px color-mix(in srgb, var(--color-principal) 14%, transparent);
    padding: 0.42rem 0.8rem;
    font-weight: 600;
}

.dataTables_wrapper .dataTables_paginate .page-link:hover {
    color: var(--app-brand-primary-contrast, #111827);
    background: color-mix(in srgb, var(--color-principal) 22%, white);
    border-color: var(--color-principal);
}

.dataTables_wrapper .dataTables_paginate .page-item.active .page-link {
    color: var(--app-brand-primary-contrast, #111827) !important;
    background: var(--color-principal) !important;
    border-color: var(--color-principal) !important;
    box-shadow: 0 8px 18px color-mix(in srgb, var(--color-principal) 28%, transparent);
}

.dataTables_wrapper .dataTables_paginate .page-item.disabled .page-link {
    color: #98a2b3;
    background: #f8fafc;
    border-color: #e4e7ec;
    box-shadow: none;
}
