/* Estilos propios de atlas-bd. La base (colores, tarjetas, botones) es
   style.css, copiado de atlas-nucleo para que las dos apps se vean igual. */
.bd-cabecera {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 1rem;
}
.bd-cabecera h1 { margin: 0; }

.bd-vacio {
  text-align: center;
  padding: 2.5rem 1rem;
}

.bd-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}
.bd-item h2 { margin: 0 0 0.25rem; }
.bd-cifras { display: flex; gap: 1rem; color: var(--muted); font-size: 0.9rem; }

.btn:disabled, .btn[disabled] { opacity: 0.45; cursor: not-allowed; }
a.btn { text-decoration: none; display: inline-block; }
.bd-acciones { display: flex; gap: 0.6rem; flex-wrap: wrap; }
.bd-enlace { color: inherit; text-decoration: none; }
.bd-enlace:hover { border-color: var(--accent); }
.bd-donde { font-size: 0.85rem; margin-top: 2rem; }

/* Asistente de migración */
.bd-pasos { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-bottom: 1rem; font-size: 0.85rem; }
.bd-paso { padding: 0.25rem 0.7rem; border-radius: 999px; border: 1px solid var(--border); color: var(--muted); }
.bd-paso.activo { background: var(--accent); color: var(--accent-contrast); border-color: var(--accent); }
.bd-paso.hecho { color: var(--ok); border-color: var(--ok); }
.bd-fichero { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; }
.bd-cargando::before {
  content: ""; display: inline-block; width: 0.9rem; height: 0.9rem; margin-right: 0.5rem;
  border: 2px solid var(--border); border-top-color: var(--accent); border-radius: 50%;
  animation: bd-giro 0.8s linear infinite; vertical-align: -2px;
}
@keyframes bd-giro { to { transform: rotate(360deg); } }
.alert-aviso { background: var(--warn-bg); color: var(--warn-fg); }

/* Revisión */
.bd-resumen { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 0.75rem; }
.bd-cifra { text-align: center; }
.bd-cifra strong { display: block; font-size: 1.5rem; }
.bd-tabla-scroll { overflow-x: auto; }
.bd-avisos li { margin-bottom: 0.35rem; }
.bd-nivel-error { color: var(--bad); }
.bd-nivel-aviso { color: var(--warn-fg); }
td.num, th.num { text-align: right; }
.bd-informe { list-style: none; padding-left: 0; }
.bd-informe li { margin-bottom: 0.45rem; }
label.btn { display: inline-block; width: auto; }

/* Páginas con tablas anchas: más espacio y el texto largo se parte en
   varias líneas en vez de salirse. */
body.bd-ancho main { max-width: 90rem; }
.bd-tabla-scroll td, .bd-tabla-scroll th { overflow-wrap: break-word; vertical-align: top; }
.bd-tabla-scroll td.bd-corto { white-space: nowrap; }
.bd-tabla-scroll code { overflow-wrap: break-word; }
.bd-campos-rel div + div { margin-top: 0.2rem; }

/* Botones flotantes "Subir" y "Bajar" */
.bd-flotantes {
  position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 20;
  display: flex; flex-direction: column; gap: 0.5rem; align-items: stretch;
}
.bd-flotante { box-shadow: var(--shadow); display: none; }
.bd-flotante.visible { display: block; }

/* Ficha de tabla */
.bd-barra-datos { display: flex; gap: 0.75rem; align-items: center; flex-wrap: wrap; margin-bottom: 0.75rem; }
.bd-barra-datos input[type=search] { flex: 1 1 16rem; font: inherit; padding: 0.45rem 0.7rem;
  border: 1px solid var(--border); border-radius: 0.6rem; background: var(--card-bg); color: var(--fg); }
.bd-barra-datos .bd-acciones { margin-left: auto; }
.bd-datos td { white-space: nowrap; max-width: 24rem; overflow: hidden; text-overflow: ellipsis; }
.bd-datos { max-height: 70vh; overflow: auto; }
.bd-datos thead th { position: sticky; top: 0; background: var(--bg); z-index: 1; }

/* Ficha de relación */
.bd-rel-esquema { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; justify-content: center; }
.bd-rel-lado { display: flex; flex-direction: column; gap: 0.2rem; padding: 0.8rem 1rem;
  border: 1px solid var(--border); border-radius: 0.8rem; min-width: 12rem; }
.bd-rel-flecha { display: flex; flex-direction: column; align-items: center; color: var(--muted); font-size: 0.9rem; }
.bd-rel-flecha span:last-child { font-size: 1.6rem; color: var(--accent); }
.bd-abrir-ficha { margin-top: 0.75rem; }

/* Diagrama: todo el ancho de la ventana, barra lateral estrecha (los
   nombres largos pasan a dos líneas) y lienzo más grande. */
body.bd-completo main { max-width: none; }
body.bd-completo .schema-sidebar { flex: 0 0 190px; max-width: 190px; }
body.bd-completo .schema-entity-item span:last-of-type { min-width: 0; overflow-wrap: anywhere; line-height: 1.25; }
body.bd-completo .schema-entity-item { align-items: flex-start; }
body.bd-completo .schema-entity-list { max-height: 72vh; }
body.bd-completo .schema-canvas-col { min-width: 0; }
body.bd-completo .schema-canvas-wrap { height: 72vh; }
.bd-selector { display: flex; align-items: center; gap: 0.35rem; font-size: 0.8rem; width: 100%; }
.bd-selector select { flex: 1; font: inherit; padding: 0.25rem; }
body.bd-completo .schema-domain-heading { display: flex; align-items: center; gap: 0.35rem; cursor: pointer; user-select: none; }
body.bd-completo .schema-domain-heading:hover { color: var(--fg); }
.bd-grupo-flecha { width: 0.8rem; }
.bd-grupo-nombre { flex: 1; }
.bd-grupo-cuenta { font-weight: 400; text-transform: none; letter-spacing: 0; }
.bd-grupo-solo { font-size: 0.65rem; padding: 0.05rem 0.35rem; margin: 0; text-transform: none; cursor: pointer; }
.schema-entity-item[hidden] { display: none; }
.bd-grupos-acciones { display: flex; align-items: center; gap: 0.3rem; font-size: 0.78rem; color: var(--muted); width: 100%; }

/* Separador arrastrable entre la columna de tablas y el lienzo */
body.bd-completo .schema-layout { gap: 0; align-items: stretch; }
body.bd-completo .schema-sidebar { padding-right: 0.5rem; }
body.bd-completo .schema-canvas-col { padding-left: 0.5rem; }
.bd-separador { flex: 0 0 8px; cursor: col-resize; border-radius: 4px; position: relative; }
.bd-separador::after { content: ""; position: absolute; top: 0; bottom: 0; left: 3px; width: 2px; background: var(--border); }
.bd-separador:hover::after, .bd-separador.activo::after { background: var(--accent); width: 3px; }
.schema-sidebar-actions button.bd-activo { background: var(--accent); color: var(--accent-contrast); border-color: var(--accent); }

/* Sin acceso (el menú de Atlas no da permiso) */
.bd-sin-acceso { position: fixed; inset: 0; z-index: 100; display: flex; align-items: center; justify-content: center;
  background: var(--bg); padding: 1rem; }
.bd-sin-acceso .card { max-width: 30rem; text-align: center; }
