/* congreso-registro-app/assets/css/style.css */

/* --- 1. Variables CSS (Colores y Fuentes) --- */
:root {
    --bs-purple: #6f42c1; /* Púrpura base de Bootstrap */
    --bs-purple-light: #7036db; /* Un tono más claro de púrpura */
    --bs-purple-medium: #7e57c2; /* Un tono intermedio */
    --bs-purple-dark: #4b0082;  /* Índigo oscuro para contraste y degradados */
    --bs-purple-gradient-start: #3e1457; /* Púrpura muy oscuro para degradados */
    --bs-purple-gradient-end: #6f42c1;   /* Púrpura Bootstrap para degradados */

    --bs-font-poppins: 'Poppins', sans-serif;

    --bs-transition: all 0.3s ease-in-out; /* Transición suave para efectos hover */
}

/* --- 2. Estilos Globales y Tipografía --- */
body {
    font-family: var(--bs-font-poppins);
    background-color: var(--bs-light); /* Fondo claro de Bootstrap */
    color: #343a40; /* Color de texto base oscuro */
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--bs-font-poppins);
    font-weight: 700; /* Negrita para títulos */
}

.text-purple {
    color: var(--bs-purple) !important;
}

.text-purple-dark {
    color: var(--bs-purple-dark) !important;
}

.text-shadow-sm {
    text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
}

/* --- 3. Navegación (Header) --- */
.navbar {
    background: linear-gradient(90deg, var(--bs-purple-gradient-start) 0%, var(--bs-purple-gradient-end) 100%) !important;
    transition: var(--bs-transition);
}

.navbar-brand {
    font-size: 1.5rem;
    font-weight: 700;
    transition: var(--bs-transition);
}

.navbar-brand:hover {
    color: rgba(255, 255, 255, 0.8) !important;
    transform: scale(1.02);
}

.navbar-nav .nav-link {
    color: rgba(255, 255, 255, 0.7);
    font-weight: 600;
    transition: var(--bs-transition);
    display: flex;
    align-items: center;
}

.navbar-nav .nav-link:hover,
.navbar-nav .nav-link.active {
    color: white !important;
    transform: translateY(-2px); /* Pequeño efecto de elevación */
}

.icon-nav {
    width: 20px;
    height: 20px;
    margin-right: 8px;
    vertical-align: middle;
}

.dropdown-menu {
    border-radius: 0.5rem;
    box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
    border: none;
}

.dropdown-item {
    color: #343a40;
    transition: var(--bs-transition);
}

.dropdown-item:hover {
    background-color: var(--bs-purple-light);
    color: white;
}

.dropdown-item .icon-sm {
    width: 16px;
    height: 16px;
    vertical-align: middle;
}


/* --- 4. Botones y Formularios --- */

/* Degradados para botones */
.btn-purple-gradient {
    background: linear-gradient(90deg, var(--bs-purple-gradient-start) 0%, var(--bs-purple-gradient-end) 100%);
    border: none;
    transition: var(--bs-transition);
    color: white !important;
    position: relative;
    overflow: hidden;
    z-index: 1;
}
.btn-purple-gradient:hover {
    background: linear-gradient(90deg, var(--bs-purple-gradient-end) 0%, var(--bs-purple-gradient-start) 100%);
    box-shadow: 0 0.5rem 1rem rgba(62, 20, 87, 0.3); /* Sombra más fuerte al hover */
    transform: translateY(-2px);
    color: white !important;
}

/* Botones Outline con degradado al hover */
.btn-outline-purple-gradient {
    color: var(--bs-purple-gradient-end);
    border: 2px solid var(--bs-purple-gradient-end);
    background-color: transparent;
    transition: var(--bs-transition);
    position: relative;
    overflow: hidden;
    z-index: 1;
}
.btn-outline-purple-gradient:hover {
    color: white !important;
    background: linear-gradient(90deg, var(--bs-purple-gradient-start) 0%, var(--bs-purple-gradient-end) 100%);
    border-color: var(--bs-purple-gradient-start);
    box-shadow: 0 0.3rem 0.6rem rgba(62, 20, 87, 0.3);
    transform: translateY(-2px);
}

/* Botones de alerta */
.btn-danger-gradient {
    background: linear-gradient(90deg, #dc3545 0%, #c82333 100%);
    border: none;
    color: white !important;
    transition: var(--bs-transition);
}
.btn-danger-gradient:hover {
    background: linear-gradient(90deg, #c82333 0%, #dc3545 100%);
    box-shadow: 0 0.3rem 0.6rem rgba(220, 53, 69, 0.3);
    transform: translateY(-2px);
}

.btn-info-gradient {
    background: linear-gradient(90deg, #0dcaf0 0%, #0a9bba 100%);
    border: none;
    color: white !important;
    transition: var(--bs-transition);
}
.btn-info-gradient:hover {
    background: linear-gradient(90deg, #0a9bba 0%, #0dcaf0 100%);
    box-shadow: 0 0.3rem 0.6rem rgba(13, 202, 240, 0.3);
    transform: translateY(-2px);
}

.btn-light-purple-gradient {
    background: linear-gradient(90deg, var(--bs-purple-light) 0%, var(--bs-purple-medium) 100%);
    border: none;
    color: white !important;
    transition: var(--bs-transition);
}
.btn-light-purple-gradient:hover {
    background: linear-gradient(90deg, var(--bs-purple-medium) 0%, var(--bs-purple-light) 100%);
    box-shadow: 0 0.3rem 0.6rem rgba(138, 99, 210, 0.3);
    transform: translateY(-2px);
}


/* Estilos para inputs personalizados */
.custom-input-purple,
.custom-file-input-purple,
.custom-select-purple {
    border-radius: 0.75rem !important; /* Más redondeado */
    border: 1px solid rgba(111, 66, 193, 0.3); /* Borde sutil */
    transition: var(--bs-transition);
    padding: 0.75rem 1.25rem;
}

.custom-input-purple:focus,
.custom-file-input-purple:focus,
.custom-select-purple:focus {
    border-color: var(--bs-purple-light);
    box-shadow: 0 0 0 0.25rem rgba(111, 66, 193, 0.25);
    outline: none;
}

/* Clase para efecto de foco en inputs manejada por JS */
.border-purple-focus {
    border-color: var(--bs-purple-light) !important;
    box-shadow: 0 0 0 0.25rem rgba(111, 66, 193, 0.25) !important;
}

.bg-light-purple-hover:hover {
    background-color: rgba(111, 66, 193, 0.05); /* Fondo claro al pasar el mouse */
}


/* --- 5. Tarjetas y Listas --- */
.card {
    border-radius: 1rem !important; /* Bordes más redondeados para tarjetas */
    transition: var(--bs-transition);
    overflow: hidden; /* Para asegurar que el gradiente de fondo no se desborde */
}

/* Fondo degradado para tarjetas */
.bg-gradient-purple-light {
    background: linear-gradient(135deg, rgba(138, 99, 210, 0.637) 0%, rgba(110, 66, 193, 0.562) 100%) !important;
}
.bg-gradient-purple-medium {
    background: linear-gradient(135deg, rgba(111,66,193,0.8) 0%, rgba(75,0,130,0.8) 100%) !important;
}
.bg-gradient-purple-dark {
    background: linear-gradient(135deg, rgba(75,0,130,0.9) 0%, rgba(62,20,87,0.9) 100%) !important;
}
.bg-purple-gradient { /* Para headers de card o modales */
    background: linear-gradient(90deg, var(--bs-purple-gradient-start) 0%, var(--bs-purple-gradient-end) 100%) !important;
}

/* Efectos hover para tarjetas (manejados por JS, pero las clases de sombra aquí) */
.shadow-lg-hover {
    box-shadow: 0 1rem 3rem rgba(0,0,0,.175)!important; /* Sombra más pronunciada */
}

/* Enlaces dentro de tarjetas que actúan como botones (ej. dashboard admin/user) */
.card-link-hover {
    color: inherit; /* Heredar color para que los enlaces no se vean azules */
    transition: var(--bs-transition);
}
.card-link-hover:hover {
    transform: translateY(-5px);
    box-shadow: 0 0.8rem 2rem rgba(0, 0, 0, 0.1) !important;
}

.border-purple {
    border-color: var(--bs-purple) !important;
}

.list-group-item {
    background-color: transparent !important;
    border-color: rgba(255, 255, 255, 0.1) !important;
    color: white; /* Para las listas en tarjetas oscuras */
}

.list-group-item:last-child {
    border-bottom-left-radius: 0.75rem;
    border-bottom-right-radius: 0.75rem;
}

.list-group-flush .list-group-item {
    border-left: none;
    border-right: none;
}

.list-group-flush .list-group-item:first-child {
    border-top: none;
}

.list-group-item .badge {
    background-color: var(--bs-purple-light) !important;
}

/* Clases para badges (ej. en tablas de usuarios) */
.badge.bg-primary-gradient {
    background: linear-gradient(45deg, var(--bs-purple-gradient-end) 0%, var(--bs-purple-light) 100%) !important;
    padding: 0.5em 0.8em;
    font-size: 0.85em;
    font-weight: 600;
}


/* --- 6. Iconos --- */
.icon-sm {
    width: 18px;
    height: 18px;
    vertical-align: -3px; /* Ajuste vertical para alineación con texto */
}

.icon-lg {
    width: 48px;
    height: 48px;
    margin-bottom: 15px;
    vertical-align: middle;
}

.icon-feature-large {
    width: 64px;
    height: 64px;
    margin-bottom: 15px;
    color: var(--bs-purple); /* Color de iconos en tarjetas de caracteristicas */
}

.icon-extra-large {
    width: 80px;
    height: 80px;
}

/* --- 7. Tablas --- */
.table-responsive {
    border-radius: 0.75rem;
    overflow: hidden; /* Asegura que los bordes redondeados se vean bien */
}

.table thead th {
    font-weight: 700;
    white-space: nowrap; /* Evita que el texto se rompa en varias líneas */
}

.table-primary-gradient {
    background: linear-gradient(90deg, var(--bs-purple-gradient-start) 0%, var(--bs-purple-gradient-end) 100%);
    color: white;
}

/* Estilos para celdas de acción para que los botones queden bien */
.table td:last-child, .table th:last-child {
    text-align: center;
}
.table td .btn {
    margin: 0.2rem;
}


/* --- 8. Alertas Personalizadas --- */
.alert {
    border-radius: 0.75rem;
    font-weight: 500;
}
/* Clases de animación para alertas (usando Animate.css) */
.animated-alert {
    animation-duration: 0.5s;
    animation-fill-mode: both;
}
/* Estilos para el botón de cierre de alertas blancas en fondos oscuros */
.btn-close-white {
    filter: invert(1); /* Para hacer el ícono de cierre blanco */
}

.card-header h4 {
    font-family: 'Playfair Display', serif;
}

.list-group-item {
    padding: 1.25rem 1.5rem;
    border-left: none;
    border-right: none;
}

.list-group-item strong {
    color: #0d6efd;
}

.accordion-button:not(.collapsed)::after {
    filter: brightness(0) invert(1);
}

.alert-warning {
    background-color: #fff3cd;
    border-left: 4px solid #ffc107;
}

.alert-info {
    background-color: #e7f3ff;
    border-left: 4px solid #0d6efd;
}

/* --- 9. Scrollbar Personalizado (Opcional, para navegadores basados en Webkit) --- */

::-webkit-scrollbar {
    width: 8px;
}

::-webkit-scrollbar-track {
    background: #f1f1f1;
    border-radius: 10px;
}

::-webkit-scrollbar-thumb {
    background: var(--bs-purple-light);
    border-radius: 10px;
}

::-webkit-scrollbar-thumb:hover {
    background: var(--bs-purple);
}


/* --- 10. Responsive Adjustments (Bootstrap handles most, but can add more) --- */
@media (max-width: 768px) {
    .navbar-brand {
        font-size: 1.25rem;
    }
    .icon-extra-large {
        width: 60px;
        height: 60px;
    }
    .display-4 {
        font-size: 2.5rem;
    }
    .fs-5 {
        font-size: 1.15rem !important;
    }
    .fs-6 {
        font-size: 1rem !important;
    }
    .btn-lg {
        font-size: 1rem;
        padding: 0.6rem 1.2rem;
    }
}