/* Ajustes sobre el tema de bslib. Lo mínimo: la interfaz debe desaparecer
   detrás de los datos. */

/* El código R es contenido principal, no una nota al pie: se le da aire y un
   fondo propio para que se distinga de la interfaz y se lea como código.

   Los colores salen de las variables de Bootstrap que define bslib, no de
   `prefers-color-scheme`: la app tiene su propio tema, y atarse a la preferencia
   del sistema pintaba el bloque oscuro sobre una interfaz clara.

   Se apunta a `pre` (que es lo que genera verbatimTextOutput) y no a
   `.shiny-text-output` en general: esa clase la llevan también los textOutput
   sueltos, como la nota de la unidad de análisis, que quedaban encajonados. */
pre {
  background-color: var(--bs-secondary-bg, #f6f8fa);
  color: var(--bs-body-color, #212529);
  border: 1px solid var(--bs-border-color, #e1e4e8);
  border-radius: 6px;
  padding: 1rem;
  font-size: 0.85rem;
  line-height: 1.55;
  white-space: pre-wrap;
  word-break: break-word;
  margin-bottom: 0;
}

/* Las etiquetas del censo son preguntas largas: en los selectores conviene que
   no se corten a la mitad de una palabra. */
.selectize-dropdown-content .option {
  white-space: normal;
  line-height: 1.35;
}

/* Las tarjetas de referencia son un dato de contexto, no el protagonista. */
.bslib-value-box .value-box-value {
  font-size: 1.6rem;
}

/* La barra lateral acumula bastantes controles: menos separación vertical hace
   que quepa sin desplazarse tanto. */
.bslib-sidebar-layout > .sidebar .form-group {
  margin-bottom: 0.75rem;
}

.accordion-button {
  padding-top: 0.6rem;
  padding-bottom: 0.6rem;
}

/* Los textos de ayuda quedaban pegados a la etiqueta del control siguiente. */
.bslib-sidebar-layout > .sidebar .help-block,
.bslib-sidebar-layout > .sidebar .form-text {
  display: block;
  margin-bottom: 0.85rem;
  line-height: 1.4;
}

/* Los avisos son para leerse, no para gritar. */
.alert {
  border: none;
  border-left: 3px solid currentColor;
}

/* ── Indicador de carga ─────────────────────────────────────────────────────
   Una consulta al censo tarda segundos, y un mapa de manzanos además descarga
   geometrías: sin señal visible la app parece congelada.

   Se engancha a `html.shiny-busy`, la clase que Shiny mantiene en el elemento
   raíz mientras hay cómputo pendiente. Es lo que cubre justamente el rato que
   importa: el trabajo en el servidor, antes de que llegue cualquier resultado.
   (Los pseudo-elementos sobre `.recalculating` no sirven aquí: en un contenedor
   de htmlwidget no se renderizan.) */
.zona-carga {
  position: relative;
  min-height: 120px;
}

.overlay-carga {
  display: none;
  position: absolute;
  inset: 0;
  z-index: 1500;
  background: rgba(255, 255, 255, 0.82);
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 0.9rem;
  border-radius: 4px;
}

html.shiny-busy .overlay-carga {
  display: flex;
}

.girador {
  width: 42px;
  height: 42px;
  border: 4px solid rgba(44, 110, 155, 0.22);
  border-top-color: #2c6e9b;
  border-radius: 50%;
  animation: girar 0.85s linear infinite;
}

.overlay-carga .texto-carga {
  font-size: 0.9rem;
  color: #4a5560;
}

@keyframes girar {
  to { transform: rotate(360deg); }
}

/* El aviso de progreso de Shiny aparece arriba a la derecha y es fácil no verlo;
   se le da algo más de presencia porque es donde se explica qué está pasando
   (consultando, descargando geometrías, dibujando). */
#shiny-notification-panel {
  width: 320px;
  max-width: 90vw;
}

.shiny-notification {
  font-size: 0.9rem;
  border-left: 3px solid #2c6e9b;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12);
}
