/* =========================================================
   Tema "Académico / Investigación" — Productividad científica
   Bootstrap 5 + Select2. Único archivo de estilos del proyecto.
   ========================================================= */

:root {
  --pc-azul-primario: #1B3A6B;
  --pc-azul-secundario: #2F5FA3;
  --pc-azul-claro: #EAF1FB;
  --pc-fondo: #F5F8FC;
  --pc-texto: #1E2630;
  --pc-texto-secundario: #5A6B7B;
  --pc-borde: #D8E2EE;

  --pc-estatus-enviado: #3D7DD6;
  --pc-estatus-revision: #C98A1F;
  --pc-estatus-aceptado: #1C8C7C;
  --pc-estatus-publicado: #2E7D4F;
  --pc-estatus-rechazado: #B3473B;

  --bs-primary: var(--pc-azul-secundario);
  --bs-primary-rgb: 47, 95, 163;
}

html, body {
  height: 100%;
}

body {
  background-color: var(--pc-fondo);
  color: var(--pc-texto);
}

/* -------------------- Navbar -------------------- */

.pc-navbar {
  background-color: var(--pc-azul-primario);
}

.pc-navbar .navbar-brand,
.pc-navbar .nav-link {
  color: #ffffff;
}

.pc-navbar .nav-link:hover,
.pc-navbar .nav-link:focus {
  color: var(--pc-azul-claro);
}

.pc-navbar .navbar-brand {
  font-weight: 600;
  letter-spacing: .02em;
}

.pc-navbar .nav-link.active {
  font-weight: 600;
  border-bottom: 2px solid #ffffff;
}

/* -------------------- Layout general -------------------- */

.pc-main {
  flex: 1 0 auto;
  padding-top: 1.5rem;
  padding-bottom: 3rem;
}

.pc-footer {
  flex-shrink: 0;
  background-color: #ffffff;
  border-top: 1px solid var(--pc-borde);
  color: var(--pc-texto-secundario);
  font-size: .85rem;
}

/* -------------------- Tarjetas / contenedores -------------------- */

.pc-card {
  background: #ffffff;
  border: 1px solid var(--pc-borde);
  border-radius: .5rem;
  padding: 1.5rem;
  box-shadow: 0 1px 2px rgba(27, 58, 107, .06);
}

h1, h2, h3 {
  color: var(--pc-azul-primario);
}

h1 {
  font-weight: 600;
  font-size: 1.6rem;
  margin-bottom: 1.25rem;
}

/* -------------------- Botones -------------------- */

.btn-primary {
  background-color: var(--pc-azul-secundario);
  border-color: var(--pc-azul-secundario);
}

.btn-primary:hover,
.btn-primary:focus {
  background-color: var(--pc-azul-primario);
  border-color: var(--pc-azul-primario);
}

.btn-success {
  background-color: var(--pc-estatus-publicado);
  border-color: var(--pc-estatus-publicado);
}

.btn-success:hover,
.btn-success:focus {
  filter: brightness(0.92);
}

.btn-danger {
  background-color: var(--pc-estatus-rechazado);
  border-color: var(--pc-estatus-rechazado);
}

.btn-danger:hover,
.btn-danger:focus {
  filter: brightness(0.92);
}

.btn-outline-secondary,
.btn-default {
  color: var(--pc-texto-secundario);
  border-color: var(--pc-borde);
  background-color: #ffffff;
}

.btn-outline-secondary:hover,
.btn-default:hover {
  background-color: var(--pc-azul-claro);
  color: var(--pc-azul-primario);
}

/* -------------------- Tablas (GridView, uso puntual) -------------------- */

.table.pc-grid {
  background-color: #ffffff;
  border: 1px solid var(--pc-borde);
}

.table.pc-grid thead th {
  background-color: var(--pc-azul-claro);
  color: var(--pc-azul-primario);
  font-weight: 600;
  border-bottom: 2px solid var(--pc-borde);
  white-space: nowrap;
}

.table.pc-grid tbody tr:nth-child(even) {
  background-color: var(--pc-fondo);
}

.table.pc-grid tbody tr:hover {
  background-color: var(--pc-azul-claro);
}

.table.pc-grid td,
.table.pc-grid th {
  border-color: var(--pc-borde);
  vertical-align: middle;
}

/* -------------------- Toolbar del listado -------------------- */

.pc-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1rem;
}

.pc-toolbar h1 {
  margin-bottom: 0;
}

/* -------------------- Panel de filtros -------------------- */

.pc-filter-toggle {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
}

.pc-list-summary {
  color: var(--pc-texto-secundario);
  font-size: .85rem;
  margin-bottom: .75rem;
}

/* -------------------- Listado como tarjetas -------------------- */

.pc-item-list {
  display: flex;
  flex-direction: column;
  gap: .9rem;
}

.pc-item-card {
  background: #ffffff;
  border: 1px solid var(--pc-borde);
  border-left: 4px solid var(--pc-azul-secundario);
  border-radius: .5rem;
  padding: 1rem 1.25rem;
  box-shadow: 0 1px 2px rgba(27, 58, 107, .05);
  transition: box-shadow .15s ease, transform .15s ease;
}

.pc-item-card:hover {
  box-shadow: 0 4px 14px rgba(27, 58, 107, .10);
}

.pc-item-top {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-start;
  gap: .75rem;
}

.pc-item-title {
  font-size: 1.05rem;
  font-weight: 600;
  margin: 0 0 .5rem;
  color: var(--pc-texto);
  flex: 1 1 auto;
  min-width: 220px;
}

.pc-item-title a {
  color: var(--pc-texto);
  text-decoration: none;
}

.pc-item-title a:hover {
  color: var(--pc-azul-secundario);
  text-decoration: underline;
}

.pc-item-actions {
  display: flex;
  gap: .35rem;
  flex-shrink: 0;
}

.pc-item-badges {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
  margin-bottom: .6rem;
}

.pc-chip {
  display: inline-block;
  padding: .25em .6em;
  border-radius: .35rem;
  font-size: .76rem;
  font-weight: 500;
  background-color: var(--pc-fondo);
  color: var(--pc-texto-secundario);
  border: 1px solid var(--pc-borde);
}

.pc-chip-highlight {
  background-color: var(--pc-azul-claro);
  color: var(--pc-azul-primario);
  border-color: var(--pc-azul-secundario);
  font-weight: 600;
}

.pc-item-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem 1rem;
  font-size: .85rem;
  color: var(--pc-texto-secundario);
}

.pc-meta-item i {
  color: var(--pc-azul-secundario);
  margin-right: .2rem;
}

.pc-empty {
  text-align: center;
  padding: 3rem 1rem;
  color: var(--pc-texto-secundario);
}

.pc-empty i {
  font-size: 2rem;
  color: var(--pc-borde);
  display: block;
  margin-bottom: .5rem;
}

/* -------------------- Paginación -------------------- */

.pagination .page-link {
  color: var(--pc-azul-secundario);
  border-color: var(--pc-borde);
}

.pagination .page-item.active .page-link {
  background-color: var(--pc-azul-secundario);
  border-color: var(--pc-azul-secundario);
}

/* -------------------- Vista de detalle -------------------- */

.pc-view-header {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1rem;
  align-items: flex-start;
}

.pc-view-title {
  font-size: 1.35rem;
  margin-bottom: 0;
}

.pc-view-actions {
  flex-shrink: 0;
}

.pc-info-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1.1rem;
  margin: 1.25rem 0;
}

.pc-info-label {
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .03em;
  color: var(--pc-texto-secundario);
  font-weight: 600;
  margin-bottom: .2rem;
}

.pc-info-label i {
  color: var(--pc-azul-secundario);
  margin-right: .25rem;
}

.pc-info-value {
  font-size: .95rem;
  color: var(--pc-texto);
}

.pc-notes {
  background-color: var(--pc-fondo);
  border: 1px solid var(--pc-borde);
  border-radius: .5rem;
  padding: 1rem 1.25rem;
  margin-bottom: 1.25rem;
}

.pc-notes p {
  margin: .4rem 0 0;
}

.pc-view-footer {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  font-size: .8rem;
  color: var(--pc-texto-secundario);
  border-top: 1px solid var(--pc-borde);
  padding-top: .75rem;
}

/* -------------------- Dashboard -------------------- */

.pc-stat-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 1rem;
  margin-bottom: 1.5rem;
}

.pc-stat-card {
  display: flex;
  align-items: center;
  gap: .9rem;
  background: #ffffff;
  border: 1px solid var(--pc-borde);
  border-radius: .5rem;
  padding: 1.1rem 1.25rem;
  box-shadow: 0 1px 2px rgba(27, 58, 107, .05);
}

.pc-stat-icon {
  width: 2.75rem;
  height: 2.75rem;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: .5rem;
  background-color: var(--pc-azul-claro);
  color: var(--pc-azul-primario);
  font-size: 1.3rem;
}

.pc-stat-value {
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--pc-azul-primario);
  line-height: 1.1;
}

.pc-stat-label {
  font-size: .8rem;
  color: var(--pc-texto-secundario);
}

.pc-chart-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 1.25rem;
  margin-bottom: 1.5rem;
}

.pc-chart-card {
  background: #ffffff;
  border: 1px solid var(--pc-borde);
  border-radius: .5rem;
  padding: 1.25rem;
  box-shadow: 0 1px 2px rgba(27, 58, 107, .05);
}

.pc-chart-card h2 {
  font-size: 1rem;
  margin-bottom: 1rem;
}

.pc-chart-card-wide {
  grid-column: 1 / -1;
}

.pc-chart-canvas-wrap {
  position: relative;
  height: 260px;
}

.pc-recent-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: .6rem;
}

.pc-recent-list li {
  display: flex;
  align-items: center;
  gap: .6rem;
  font-size: .9rem;
}

.pc-recent-list a {
  color: var(--pc-texto);
  text-decoration: none;
}

.pc-recent-list a:hover {
  color: var(--pc-azul-secundario);
  text-decoration: underline;
}

/* -------------------- Badges de estatus -------------------- */

.pc-badge {
  display: inline-block;
  padding: .3em .65em;
  border-radius: .35rem;
  font-size: .78rem;
  font-weight: 600;
}

.pc-badge-enviado {
  background-color: rgba(61, 125, 214, .12);
  color: var(--pc-estatus-enviado);
}

.pc-badge-en_revision {
  background-color: rgba(201, 138, 31, .14);
  color: var(--pc-estatus-revision);
}

.pc-badge-aceptado {
  background-color: rgba(28, 140, 124, .14);
  color: var(--pc-estatus-aceptado);
}

.pc-badge-publicado {
  background-color: rgba(46, 125, 79, .14);
  color: var(--pc-estatus-publicado);
}

.pc-badge-rechazado {
  background-color: rgba(179, 71, 59, .14);
  color: var(--pc-estatus-rechazado);
}

/* -------------------- Formularios -------------------- */

.form-label {
  color: var(--pc-texto-secundario);
  font-weight: 500;
}

.form-control:focus,
.form-select:focus {
  border-color: var(--pc-azul-secundario);
  box-shadow: 0 0 0 .2rem rgba(47, 95, 163, .15);
}

/* Select2 alineado al tema */
.select2-container--bootstrap-5 .select2-selection:focus,
.select2-container--bootstrap-5.select2-container--focus .select2-selection {
  border-color: var(--pc-azul-secundario) !important;
  box-shadow: 0 0 0 .2rem rgba(47, 95, 163, .15) !important;
}

.select2-container--bootstrap-5 .select2-results__option--highlighted {
  background-color: var(--pc-azul-secundario) !important;
}

/* -------------------- Alertas / flash messages -------------------- */

.alert-success {
  background-color: rgba(46, 125, 79, .10);
  border-color: var(--pc-estatus-publicado);
  color: var(--pc-estatus-publicado);
}

.alert-danger {
  background-color: rgba(179, 71, 59, .10);
  border-color: var(--pc-estatus-rechazado);
  color: var(--pc-estatus-rechazado);
}

/* -------------------- Breadcrumbs -------------------- */

.breadcrumb {
  background: transparent;
  padding-left: 0;
  font-size: .9rem;
}

.breadcrumb-item a {
  color: var(--pc-azul-secundario);
  text-decoration: none;
}

.breadcrumb-item.active {
  color: var(--pc-texto-secundario);
}
