:root {
  --bg: #f7f8fa;
  --ink: #1d2433;
  --muted: #5b6472;
  --line: #d7dce3;
  --base: #2563eb;
  --supp: #d97706;
  --terms: #059669;
  --appt: #7c3aed;
  --other: #64748b;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  padding: 0 1rem 1rem;
  background: var(--bg);
  color: var(--ink);
  font: 16px/1.5 system-ui, -apple-system, "Segoe UI", sans-serif;
}

header p, footer { color: var(--muted); font-size: 0.875rem; }

form {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}

form label {
  flex-basis: 100%;
  font-size: 0.875rem;
  color: var(--muted);
}

input,
button {
  font: inherit;
  padding: 0.5rem 0.75rem;
  border: 1px solid var(--line);
  border-radius: 6px;
}

input {
  flex: 1 1 12rem;
  min-width: 0;
}

button {
  cursor: pointer;
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}

#status {
  margin: 0.75rem 0;
  color: var(--muted);
  font-size: 0.875rem;
}

.layout {
  display: flex;
  gap: 1rem;
  align-items: stretch;
}

.results {
  flex: 0 0 18rem;
  margin: 0;
  padding: 0;
  list-style: none;
  max-height: 60vh;
  overflow-y: auto;
}

.results button {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.125rem;
  width: 100%;
  margin-bottom: 0.5rem;
  text-align: left;
  background: #fff;
  color: var(--ink);
  border-color: var(--line);
}

.results button span { font-size: 0.8125rem; color: var(--muted); }

.graph {
  flex: 1 1 auto;
  min-height: 24rem;
  height: 60vh;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 8px;
}

/* Nodo del grafo: color por tipo de documento. */
.doc-node {
  position: relative;
  width: 11rem;
  padding: 0.5rem 0.75rem;
  background: #fff;
  border: 1px solid var(--line);
  border-left: 6px solid var(--other);
  border-radius: 6px;
  box-shadow: 0 1px 3px rgb(15 23 42 / 12%);
  font-size: 0.8125rem;
}

.doc-node strong, .doc-node span { display: block; }

.doc-node span {
  color: var(--muted);
  font-size: 0.75rem;
}

.type-BPRO { border-left-color: var(--base); }
.type-SUPP { border-left-color: var(--supp); }
.type-FTWS { border-left-color: var(--terms); }
.type-APPT { border-left-color: var(--appt); }

.doc-node .tooltip {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 10;
  min-width: 12rem;
  flex-direction: column;
  gap: 0.125rem;
  padding: 0.5rem 0.75rem;
  background: var(--ink);
  color: #fff;
  border-radius: 6px;
}

.doc-node .tooltip span {
  color: #e5e7eb;
}

.doc-node .tooltip a {
  color: #93c5fd;
}

.doc-node:hover .tooltip,
.doc-node:focus-within .tooltip {
  display: flex;
}

@media (max-width: 720px) {
  .layout {
    flex-direction: column;
  }

  .results {
    flex-basis: auto;
    max-height: 30vh;
  }

  .graph {
    height: 50vh;
    min-height: 20rem;
  }

  .doc-node .tooltip {
    right: 0;
  }
}
