.chart {
  width: 100%;
  min-height: 400px;
}

:root {
  --color-principal: #ffb300;
  /* Derivados para el ribbon (se recalcula vía JS si cambia el color en runtime) */
  --navbar-bg: 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;
  color: black !important;
}

/* Navbar usa variable en lugar de color inline */
.navbar.app-navbar {
    background-color: var(--navbar-bg) !important;
    z-index: var(--z-navbar) !important;
}

/* 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(--color-principal) !important;
    color: white !important;
    z-index: var(--z-offcanvas) !important;
}

.offcanvas .nav-link,
.offcanvas .dropdown-item {
    color: 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(--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;
}

/* 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(--color-principal, #ffd369), #ffcb40);
    color: #111 !important;
    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;
}

@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;
    }
}
