/* =========================================================================
   estilos.css — Estilos compartidos Premios NovaGob 2026
   Imagen institucional: rosa oficial #CE6BA0 sobre fondo blanco.
   ========================================================================= */

:root {
  --nova-rosa: #CE6BA0;
  --nova-rosa-osc: #A8447A;
  --nova-rosa-claro: #FBEFF5;
  --nova-tinta: #2B2B30;
  --nova-tinta-suave: #54545C;
  --nova-ambar: #E9A23B;
  --nova-gris: #6B6B72;
  --nova-borde: #E7E1E6;
}

body { background: #fff; }

/* ---- Footer siempre al fondo (sticky footer) --------------------------- */
/* El body de bslib ya es flex column (html-fill-container); con min-height
   de viewport + margin-top:auto en el footer, este se ancla al fondo aunque
   la página tenga poco contenido, sin solaparse cuando hay mucho.            */
html { height: 100%; }
body.bslib-page-navbar {
  min-height: 100vh !important;
  display: flex !important;
  flex-direction: column !important;
}
/* El contenedor de contenido (que aloja al footer) crece para llenar el alto;
   dentro de él, margin-top:auto ancla el footer al fondo aun con poco contenido. */
body.bslib-page-navbar > .container-fluid {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 0 auto !important;
}
.nova-footer { margin-top: auto !important; }

/* ---- Navbar ------------------------------------------------------------- */
.navbar {
  background: #fff !important;
  border-bottom: 1px solid var(--nova-borde);
  box-shadow: 0 1px 0 rgba(0,0,0,.03);
}
.navbar-brand { display: inline-flex; align-items: center; padding-top: .2rem; padding-bottom: .2rem; }
.navbar-brand img { display: block; }
.navbar .nav-link { font-weight: 600; }
.navbar .nav-link.active { color: var(--nova-rosa) !important; }

/* ---- Hero --------------------------------------------------------------- */
.nova-hero {
  background: linear-gradient(180deg, #fff 0%, var(--nova-rosa-claro) 100%);
  border-bottom: 1px solid var(--nova-borde);
  padding: 3.5rem 0 2.5rem;
}
.nova-hero h1 {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: clamp(2rem, 4vw, 3.2rem);
  line-height: 1.05;
  letter-spacing: -.02em;
  color: var(--nova-tinta);
  margin-bottom: .75rem;
}
.nova-hero .lead { color: var(--nova-gris); font-size: 1.15rem; max-width: 46ch; }
.nova-hero .eyebrow {
  text-transform: uppercase;
  letter-spacing: .14em;
  font-weight: 700;
  font-size: .8rem;
  color: var(--nova-rosa);
  margin-bottom: .6rem;
}

/* ---- Tarjetas estadística ---------------------------------------------- */
.nova-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 1rem;
  margin-top: 2.5rem;
}
.nova-stat {
  background: #fff;
  border: 1px solid var(--nova-borde);
  border-radius: .9rem;
  padding: 1.25rem 1rem;
  text-align: center;
}
.nova-stat-num {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  font-size: 2rem;
  color: var(--nova-tinta);
  line-height: 1;
  margin-top: .4rem;
}
.nova-stat-lab { color: var(--nova-gris); font-size: .85rem; margin-top: .3rem; }

/* ---- Badges (rectangulares para que el texto largo no se salga) -------- */
.nova-badge {
  display: inline-block;
  color: #fff;
  font-size: .76rem;
  font-weight: 600;
  padding: .3rem .55rem;
  border-radius: .35rem;
  margin: 0 .3rem .3rem 0;
  line-height: 1.3;
  white-space: normal;
}
.nova-badge-outline {
  background: transparent !important;
  color: var(--nova-tinta) !important;
  border: 1px solid var(--nova-borde);
}

/* ---- Cards de dimensión ------------------------------------------------- */
.nova-card-dim { margin-bottom: 1.1rem; box-shadow: 0 1px 3px rgba(43,43,48,.05); }
.nova-card-dim .card-header {
  background: #fff;
  border-bottom: 2px solid var(--nova-rosa);
  padding: .9rem 1.25rem;
}
/* Encabezado de sección: ícono + título, grande y alineado a la izquierda. */
.nova-dim-head {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: .65rem;
  text-align: left;
}
.nova-dim-icono { display: inline-flex; line-height: 0; }
.nova-dim-icono svg { height: 5.8em !important; width: auto !important; }
.nova-dim-titulo {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 1.5rem;
  line-height: 1.1;
  color: var(--nova-tinta);
}
/* Texto formateado dentro de las cards de dimensión */
.nova-card-dim .card-body p { line-height: 1.7; margin-bottom: .9rem; }
.nova-card-dim .card-body p:last-child { margin-bottom: 0; }
.nova-card-dim .card-body p.nova-subtit {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-size: 1.15rem;
  color: var(--nova-rosa-osc);
  margin: 1.1rem 0 .4rem;
}
.nova-card-dim .card-body ol.nova-lista,
.nova-card-dim .card-body ul.nova-lista { margin: .2rem 0 1rem 1.3rem; }
.nova-card-dim .card-body ol.nova-lista li,
.nova-card-dim .card-body ul.nova-lista li { line-height: 1.6; margin-bottom: .35rem; padding-left: .2rem; }
.nova-card-dim .card-body ol.nova-lista li::marker { color: var(--nova-rosa); font-weight: 700; }

/* ---- Encabezado de ficha (micrositio del proyecto) --------------------- */
.nova-ficha-head {
  background: linear-gradient(135deg, var(--nova-rosa) 0%, var(--nova-rosa-osc) 100%);
  color: #fff;
  border-radius: 1rem;
  padding: 1.75rem 2rem;
  margin-bottom: 1.5rem;
}
.nova-ficha-head h2 {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  margin: .4rem 0 .6rem;
}
.nova-ficha-head .institucion { color: rgba(255,255,255,.9); font-size: 1.05rem; }
.nova-ficha-head .nova-badge-outline {
  color: #fff !important;
  border-color: rgba(255,255,255,.55) !important;
}

/* ---- Enlaces ------------------------------------------------------------ */
.nova-enlaces { padding-left: 1.1rem; }
.nova-enlaces li { margin-bottom: .3rem; word-break: break-all; }
.nova-enlaces a { color: var(--nova-rosa-osc); }

/* ---- Botón volver (resaltado en rosa de marca) ------------------------- */
.nova-volver {
  margin-bottom: 1rem;
  color: var(--nova-rosa-osc) !important;
  border-color: var(--nova-rosa) !important;
  font-weight: 600;
}
.nova-volver:hover,
.nova-volver:focus,
.nova-volver:active {
  background: var(--nova-rosa) !important;
  border-color: var(--nova-rosa) !important;
  color: #fff !important;
}

/* ---- Sección genérica --------------------------------------------------- */
.nova-seccion { padding: 2.5rem 0; }

/* ---- Premios NovaGob 2026 (portada y distintivos de ficha) -------------- */
.nova-premios {
  background: #fff;
  border-bottom: 1px solid var(--nova-borde);
}
.nova-premios .eyebrow {
  text-transform: uppercase;
  letter-spacing: .14em;
  font-weight: 700;
  font-size: .8rem;
  color: var(--nova-rosa);
  margin-bottom: .6rem;
}
.nova-premios-titulo {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 800;
  letter-spacing: -.01em;
  color: var(--nova-tinta);
  margin-bottom: .75rem;
}
.nova-premios-intro { max-width: 78ch; margin-bottom: 1.75rem; }
.nova-premio-card {
  height: 100%;
  background: #fff;
  border: 1px solid var(--nova-borde);
  border-radius: .9rem;
  padding: 1.25rem 1.4rem;
  box-shadow: 0 1px 3px rgba(43,43,48,.05);
}
.nova-premio-cat {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  font-size: 1.05rem;
  color: var(--nova-rosa-osc);
  border-bottom: 1px solid var(--nova-borde);
  padding-bottom: .55rem;
  margin-bottom: .9rem;
}
.nova-premio-fila {
  display: flex;
  align-items: flex-start;
  gap: .7rem;
  margin-bottom: .85rem;
}
.nova-premio-chip {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  font-size: .74rem;
  font-weight: 700;
  padding: .28rem .6rem;
  border-radius: 2rem;
  line-height: 1.2;
  white-space: nowrap;
}
.nova-premio-chip svg { height: .9em; width: auto; }
.nova-premio-oro {
  background: linear-gradient(135deg, #F9E29C 0%, #E4B93E 100%);
  color: #4A3A07;
}
.nova-premio-oro svg { fill: #4A3A07; }
.nova-premio-plata {
  background: linear-gradient(135deg, #EFEFF2 0%, #C3C3CC 100%);
  color: #3C3C44;
}
.nova-premio-plata svg { fill: #3C3C44; }
.nova-premio-mencion {
  background: linear-gradient(135deg, #F6E3D3 0%, #DDAF87 100%);
  color: #59391D;
}
.nova-premio-mencion svg { fill: #59391D; }
.nova-premio-info { min-width: 0; }
.nova-premio-link,
.nova-premio-nombre { font-weight: 600; color: var(--nova-tinta); }
.nova-premio-link { color: var(--nova-rosa-osc); text-decoration: underline; }
.nova-premio-link:hover { color: var(--nova-rosa); }
.nova-premio-inst { color: var(--nova-gris); font-size: .85rem; margin-top: .15rem; }
.nova-premio-nota {
  color: var(--nova-gris);
  font-size: .85rem;
  font-style: italic;
  margin: -.25rem 0 .85rem;
}
.nova-premio-menciones {
  border-top: 1px dashed var(--nova-borde);
  padding-top: .7rem;
  margin-top: .2rem;
}
.nova-premio-menc-tit {
  font-weight: 700;
  font-size: .82rem;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: var(--nova-tinta-suave);
  margin-bottom: .45rem;
}
.nova-premio-menciones ul { margin: 0; padding-left: 1.1rem; }
.nova-premio-menciones li { margin-bottom: .35rem; font-size: .92rem; line-height: 1.45; }
.nova-premio-menc-inst { color: var(--nova-gris); font-size: .85rem; }
/* Distintivo dentro del encabezado rosa de la ficha: mismo chip, un poco más
   grande y con margen; el degradado dorado/plateado contrasta con el fondo. */
.nova-premio-distintivos { margin-top: .35rem; }
.nova-premio-chip-ficha {
  font-size: .84rem;
  margin: .35rem .45rem .1rem 0;
  white-space: normal;
  box-shadow: 0 1px 3px rgba(43,43,48,.25);
}
.nova-seccion h3 {
  font-family: "Plus Jakarta Sans", sans-serif;
  font-weight: 700;
  color: var(--nova-tinta);
  margin-bottom: 1rem;
}

/* ---- Texto resaltado (rosa de marca) ----------------------------------- */
.nova-resaltado {
  background: var(--nova-rosa-claro);
  color: var(--nova-rosa-osc);
  font-weight: 600;
  padding: 0.05em 0.28em;
  border-radius: 4px;
}

/* ---- Invitación a registrar un proyecto nuevo -------------------------- */
.nova-cta-registro {
  background: var(--nova-rosa-claro);
  border: 1px solid var(--nova-borde);
  border-radius: .8rem;
  padding: 2rem 2.2rem;
  margin-top: 1.5rem;
  text-align: center;
}
.nova-cta-registro h3 {
  color: var(--nova-rosa-osc);
  margin-bottom: 1rem;
}
.nova-cta-registro p {
  color: var(--nova-tinta-suave);
  max-width: 46rem;
  margin-left: auto;
  margin-right: auto;
}
.nova-cta-boton { margin-top: .8rem; }

/* ---- Panel de evaluación (jurado) -------------------------------------- */
.nova-eval-criterio {
  background: #fff;
  border: 1px solid var(--nova-borde);
  border-left: 4px solid var(--nova-rosa);
  border-radius: .6rem;
  padding: 1rem 1.1rem;
  margin-bottom: 1rem;
}
.nova-eval-criterio .guia { color: var(--nova-gris); font-size: .85rem; margin-bottom: .5rem; }

/* Doble panel con scroll independiente: contenido (izq) y evaluación (der).
   Cada columna ocupa el alto disponible del viewport y scrollea por separado.
   Solo en pantallas grandes; al apilarse (< lg) vuelve al flujo normal. */
@media (min-width: 992px) {
  .nova-eval-split {
    height: calc(100vh - 13rem);
    overflow: hidden;
  }
  .nova-eval-split > .nova-eval-col {
    height: 100%;
    overflow-y: auto;
    /* deja espacio para que la barra de scroll no tape el contenido */
    padding-bottom: 1rem;
  }
}
.nova-estado-evaluado { color: var(--nova-rosa-osc); font-weight: 700; }
.nova-estado-pendiente { color: var(--nova-ambar); font-weight: 700; }

/* ---- Footer institucional (rosa, con logo NovaGob blanco) -------------- */
footer.nova-footer {
  background: var(--nova-rosa);
  color: rgba(255,255,255,.92);
  padding: 1.75rem 0;
  font-size: .9rem;
}
footer.nova-footer a { color: #fff; }
.nova-footer-inner {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  flex-wrap: wrap;
  justify-content: center;
  text-align: center;
}
.nova-footer-logo { height: 28px !important; max-height: 28px; width: auto; opacity: .95; }
.nova-footer-sep { width: 1px; height: 30px; background: rgba(255,255,255,.4); }

/* ---- Botones primarios: texto blanco ----------------------------------- */
.btn-primary,
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active { color: #fff !important; }

/* ---- Tags informativos en el encabezado de ficha ----------------------- */
.nova-tags { display: flex; flex-wrap: wrap; gap: .4rem; }
.nova-tag {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  margin: 0;
  font-weight: 500;
}
.nova-ficha-head .nova-tag {
  color: #fff !important;
  border-color: rgba(255,255,255,.5) !important;
  background: rgba(255,255,255,.08) !important;
}

/* ---- Separador suave (sección "Sobre los Premios") --------------------- */
.nova-sep { border: 0; border-top: 1px solid var(--nova-borde); margin: 1.5rem 0; }

/* ---- Buscador de la tabla (reactable): alineado a la izquierda --------- */
.nova-tabla .rt-search {
  align-self: flex-start !important;   /* reactable la alinea a la derecha por defecto */
  margin: 0 0 .85rem 0 !important;
  width: 100%;
  max-width: 420px;
  min-width: 260px;
}

/* Negritas reales en las celdas marcadas (nombres de proyecto/jurado) */
.nova-tabla .rt-td strong { font-weight: 700; }

/* En la pantalla de evaluación del jurado, los íconos junto a los subtítulos
   de sección van a la mitad del tamaño de la ficha pública (5.8em -> 2.9em) */
.nova-eval-split .nova-dim-icono svg { height: 2.9em !important; }

/* ============================================================
   Micrositios a medida por proyecto
   ============================================================ */
.nova-micrositio { margin-top: 1.2rem; }

/* Cuerpo (markdown renderizado) */
.nova-micro-cuerpo { font-size: 1.05rem; line-height: 1.7; color: var(--nova-tinta); }
.nova-micro-cuerpo h1,
.nova-micro-cuerpo h2,
.nova-micro-cuerpo h3 { color: var(--nova-rosa-osc); margin-top: 1.6rem; margin-bottom: .6rem; }
.nova-micro-cuerpo h1 { font-size: 1.6rem; }
.nova-micro-cuerpo h2 { font-size: 1.35rem; }
.nova-micro-cuerpo h3 { font-size: 1.15rem; }
.nova-micro-cuerpo p { margin-bottom: 1rem; }
.nova-micro-cuerpo ul,
.nova-micro-cuerpo ol { margin-bottom: 1rem; padding-left: 1.4rem; }
.nova-micro-cuerpo blockquote {
  border-left: 3px solid var(--nova-rosa);
  padding: .2rem 0 .2rem 1rem; margin: 1rem 0; color: var(--nova-tinta-suave);
  background: var(--nova-rosa-claro);
}
.nova-micro-cuerpo img {
  display: block; max-width: 100%; height: auto; margin: 1.2rem auto;
  border-radius: 12px; box-shadow: 0 4px 18px rgba(43,43,48,.12);
}
.nova-micro-cuerpo em { color: var(--nova-tinta-suave); }

/* Bloques (galería, mapa, enlaces) */
.nova-micro-bloque { margin-top: 2rem; }
.nova-micro-subt {
  font-size: 1.2rem; color: var(--nova-rosa-osc);
  border-bottom: 2px solid var(--nova-rosa-claro);
  padding-bottom: .4rem; margin-bottom: 1rem;
}
.nova-micro-ficha-titulo { margin-top: 2.6rem; }
.nova-micro-cap { font-size: .85rem; color: var(--nova-gris); margin-top: .5rem; }

/* Galería en cuadrícula */
.nova-galeria {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: .6rem;
}
.nova-galeria-item {
  display: block; aspect-ratio: 4 / 3; overflow: hidden;
  border-radius: 10px; border: 1px solid var(--nova-borde);
}
.nova-galeria-item img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform .25s ease;
}
.nova-galeria-item:hover img { transform: scale(1.06); }

/* Mapa */
.nova-micro-mapa {
  height: 380px; border-radius: 12px; overflow: hidden;
  border: 1px solid var(--nova-borde);
}
.nova-micro-mapa .leaflet-container { height: 380px; }

/* Video propio del micrositio */
.nova-micro-video-wrap { margin-bottom: 1.2rem; }
.nova-micro-video {
  width: 100%; max-height: 70vh; display: block;
  border: 1px solid var(--nova-borde); border-radius: 12px;
  background: #000;
}

/* Enlaces / iframes */
.nova-micro-enlaces { display: flex; flex-wrap: wrap; gap: .6rem; margin-bottom: 1rem; }
.nova-micro-enlace { border-radius: 999px; }
.nova-micro-iframe-wrap { margin-bottom: 1.2rem; }
.nova-micro-iframe {
  width: 100%; height: 520px; border: 1px solid var(--nova-borde);
  border-radius: 12px; background: #fff;
}

/* ============================================================
   Mapa de portada (todas las candidaturas)
   ============================================================ */
.nova-mapa-titulo { color: var(--nova-rosa-osc); margin-bottom: .4rem; }
.nova-mapa-inicio {
  height: 460px; border-radius: 14px; overflow: hidden;
  border: 1px solid var(--nova-borde);
  box-shadow: 0 4px 18px rgba(43,43,48,.08);
}
.nova-mapa-inicio .leaflet-container { height: 460px; font: inherit; }

/* Popup de cada punto */
.nova-map-pop { min-width: 180px; max-width: 260px; overflow-wrap: break-word; }
.nova-map-tit { font-weight: 700; color: var(--nova-rosa-osc); font-size: .95rem; margin-bottom: .2rem; }
.nova-map-inst { color: var(--nova-tinta); font-size: .85rem; }
.nova-map-lug { color: var(--nova-gris); font-size: .8rem; margin-top: .15rem; }
.nova-map-aprox {
  margin-top: .35rem; font-size: .72rem; color: var(--nova-gris);
  font-style: italic;
}

/* Etiqueta al pasar el cursor.
   Leaflet trae `.leaflet-tooltip { white-space: nowrap }`, así que un nombre
   largo se dibujaba en una sola línea más ancha que la ventana. El !important
   es necesario: leaflet.css se carga después de estilos.css y la regla propia
   perdería por orden aunque la especificidad alcance.
   `width: max-content` es indispensable: la etiqueta está posicionada en
   absoluto, así que al quitarle el nowrap se encogía al ancho mínimo (una
   columna de letras). Con max-content toma el ancho natural del texto y solo
   entonces max-width la obliga a partirse en varias líneas.
   El corte es `break-word` y no `anywhere` porque `anywhere` también reduce el
   ancho mínimo intrínseco y reintroduce ese mismo colapso. */
.leaflet-tooltip.nova-map-label {
  white-space: normal !important;
  width: max-content;
  max-width: 260px;
  padding: .4rem .55rem;
  border: 1px solid var(--nova-borde);
  border-radius: 8px;
  box-shadow: 0 3px 12px rgba(43, 43, 48, .14);
  overflow-wrap: break-word;
}
.nova-map-lab-tit {
  font-weight: 700; color: var(--nova-rosa-osc);
  font-size: .85rem; line-height: 1.25;
}
.nova-map-lab-inst {
  color: var(--nova-gris); font-size: .75rem;
  line-height: 1.25; margin-top: .15rem;
}
