/* Rastreabilidade completa: os termos tecnicos (DAG, MinIO, layout signature)
   vivem aqui, um nivel abaixo da home. */

.lineage[data-visible="false"] { display: none; }

.lineage {
  margin-bottom: var(--space-16);
  padding: var(--space-8);
  border: 1px solid var(--border);
  border-radius: var(--radius-xl);
  background: var(--surface-1);
  backdrop-filter: var(--blur-card);
  -webkit-backdrop-filter: var(--blur-card);
  box-shadow: var(--shadow-1);
}

.lineage-top { display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-6); }

.lineage-top-actions { flex: 0 0 auto; display: flex; align-items: center; gap: var(--space-3); }
.lineage-top h2 { font-size: var(--text-xl); font-weight: 620; letter-spacing: -.02em; }
.lineage-top p { margin-top: var(--space-2); color: var(--text-secondary); font-size: var(--text-sm); }

.lineage-status {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  padding: var(--space-2) var(--space-4);
  border: 1px solid var(--border);
  border-radius: var(--radius-pill);
  background: color-mix(in srgb, var(--surface-solid) 60%, transparent);
  color: var(--text-secondary);
  font-size: var(--text-xs);
  font-weight: 550;
}
.lineage-status i { width: .45rem; height: .45rem; border-radius: 50%; background: var(--text-tertiary); }
.lineage-status.polling i { background: var(--purple); animation: pulse-dot 1.9s var(--ease-out) infinite; }
.lineage-status.failed { border-color: var(--red-line); background: var(--red-soft); color: var(--red); }
.lineage-status.failed i { background: var(--red); }

.lineage-details {
  display: grid;
  grid-template-rows: 0fr;
  opacity: 0;
  transition: grid-template-rows var(--duration-slow) var(--ease-standard),
              opacity var(--duration-base) var(--ease-out);
}
.lineage-details[data-open="true"] { grid-template-rows: 1fr; opacity: 1; }
.lineage-details > div { overflow: hidden; min-height: 0; }

.lineage-legend { display: flex; flex-wrap: wrap; gap: var(--space-4); margin: var(--space-6) 0 var(--space-4); color: var(--text-tertiary); font-size: var(--text-2xs); }
.legend-item { display: inline-flex; align-items: center; gap: var(--space-2); }
.legend-line { width: 1.25rem; height: 1px; background: var(--purple); }
.legend-line.dashed { height: 0; border-top: 1px dashed var(--amber); }

.lineage-scroller { overflow-x: auto; padding-bottom: var(--space-2); }
.lineage-graph {
  position: relative;
  min-width: 62rem;
  height: 19rem;
  border: 1px solid var(--hairline);
  border-radius: var(--radius-lg);
  background: var(--surface-sunken);
}
.lineage-edges { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.edge-main { fill: none; stroke: var(--purple); stroke-width: 1.5; opacity: .45; }
.edge-fallback { fill: none; stroke: var(--amber); stroke-width: 1.5; stroke-dasharray: 5 5; opacity: .6; }

.lineage-node {
  position: absolute;
  width: 16.5%;
  min-height: 6.25rem;
  padding: var(--space-4);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  background: color-mix(in srgb, var(--surface-solid) 82%, transparent);
  box-shadow: var(--shadow-1);
  transition: border-color var(--duration-base) var(--ease-out),
              box-shadow var(--duration-base) var(--ease-out),
              transform var(--duration-base) var(--ease-spring);
}
.lineage-node:hover { transform: translateY(-2px); border-color: var(--purple-line); box-shadow: var(--shadow-2); }
.lineage-node.current {
  border-color: var(--purple-line);
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--purple) 8%, transparent), var(--shadow-2);
  animation: pulse-glow 2.6s var(--ease-out) infinite;
}
.lineage-node.queued { border-color: var(--green-line); background: color-mix(in srgb, var(--green-soft) 70%, transparent); }
.lineage-node.optional { border-style: dashed; border-color: var(--amber-line); background: color-mix(in srgb, var(--amber-soft) 70%, transparent); }
.lineage-node.failed { border-color: var(--red-line); background: var(--red-soft); animation: none; }

.node-origin { left: 2%; top: 2.5rem; }
.node-extraction { left: 22%; top: 2.5rem; }
.node-evidence { left: 42%; top: 2.5rem; }
.node-resolution { left: 62%; top: 2.5rem; }
.node-result { left: 82%; top: 2.5rem; }
.node-fallback { left: 62%; top: 11.5rem; }

.node-kind { display: block; margin-bottom: var(--space-2); color: var(--purple); font-size: var(--text-2xs); font-weight: 650; line-height: 1; letter-spacing: .09em; }
.node-fallback .node-kind { color: var(--amber); }
.lineage-node h3 { font-size: var(--text-xs); font-weight: 600; line-height: 1.3; }
.lineage-node p { margin-top: var(--space-1); color: var(--text-secondary); font-size: var(--text-2xs); line-height: 1.45; }

.edge-label {
  position: absolute;
  left: 69%;
  top: 9.6rem;
  padding: .15rem var(--space-2);
  border: 1px solid var(--amber-line);
  border-radius: var(--radius-sm);
  background: var(--amber-soft);
  color: var(--amber);
  font-size: var(--text-2xs);
  font-weight: 600;
}

@media (max-width: 880px) {
  .lineage { padding: var(--space-6); }
  .lineage-top { display: block; }
  .lineage-top-actions { margin-top: var(--space-4); }
}
