/* Business relationships; source definitions appear only without enhancement or in print. */
.data-relations { margin: 24px 0; padding: 24px; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); }
.data-relations[hidden] { display: none; }
.data-map-intro { display: flex; align-items: baseline; justify-content: space-between; gap: 20px; margin-bottom: 24px; }
.data-map-intro p { font-size: 13px; line-height: 1.7; max-width: 550px; }
.data-map-legend { flex-shrink: 0; display: flex; gap: 16px; font: 10px/1.7 var(--mono); color: var(--muted); }
.data-map-legend span { display: flex; align-items: center; gap: 6px; }
.data-map-legend i { width: 9px; height: 9px; border: 1px solid var(--ink); border-radius: 50%; background: var(--accent); }
.data-map-legend span:last-child i { background: #fff; }
.data-map-layout { display: grid; grid-template-columns: minmax(0,1fr) 290px; gap: 28px; align-items: start; }
.data-map-canvas { position: relative; isolation: isolate; }
.data-map-sr-description { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.data-map-lines { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -1; overflow: visible; pointer-events: none; }
.data-map-lines path { fill: none; stroke: #b2b5a8; stroke-width: 1.5; }
.data-map-lines path.is-active { stroke: var(--ink); stroke-width: 2; }
.data-map-lines path.is-muted { opacity: .25; }
.data-map-nodes { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 38px 22px; }
.data-map-node { position: relative; appearance: none; display: flex; flex-direction: column; justify-content: center; gap: 9px; width: 100%; min-height: 86px; padding: 14px 12px; border: 1px solid #d0d3c5; border-radius: 8px; background: #fff; color: var(--ink); font: 600 13px/1.45 var(--sans); text-align: left; overflow-wrap: anywhere; cursor: pointer; }
.data-map-tooltip { display: none; position: absolute; z-index: 4; top: calc(100% + 8px); left: 0; width: 260px; padding: 18px; border-radius: 8px; background: var(--ink); color: #fff; font: 400 13px/1.7 var(--sans); box-shadow: 0 8px 24px #1112; cursor: default; }
.data-map-tooltip::before { content: ''; position: absolute; top: -8px; left: 0; width: 100%; height: 8px; }
.data-map-node:nth-child(3n) .data-map-tooltip { left: auto; right: 0; }
.data-map-node:focus-visible,.data-map-node.is-inspected { z-index: 4; }
.data-map-node:focus-visible .data-map-tooltip,.data-map-node.is-inspected .data-map-tooltip { display: block; }
@media(hover:hover) { .data-map-node:hover { z-index: 4; } .data-map-node:hover .data-map-tooltip { display: block; } }
.data-map-node.is-dismissed .data-map-tooltip { display: none; }
.data-map-node small { color: var(--muted); font: 9px/1.2 var(--mono); }
.data-map-node.is-related { border-color: var(--ink); }
.data-map-node[aria-pressed=true] { background: var(--accent); border-color: var(--ink); }
.data-map-node:focus-visible { outline: 3px solid #1565c0; outline-offset: 4px; }
.data-map-detail { padding: 24px; background: #fff; border: 1px solid var(--line); border-radius: 8px; }
.data-map-detail .eyebrow { font-size: 9px; margin-bottom: 14px; }
.data-map-detail h3 { font-size: 22px; line-height: 1.3; margin-bottom: 14px; overflow-wrap: anywhere; }
.data-map-definition { font-size: 14px; line-height: 1.8; }
.data-map-detail h4 { font: 10px/1.5 var(--mono); text-transform: uppercase; letter-spacing: .06em; margin: 24px 0 10px; }
.data-map-related { list-style: none; margin: 0; padding: 0; }
.data-map-related li + li { border-top: 1px solid var(--line); }
.data-map-related button { appearance: none; display: block; width: 100%; padding: 12px 0; border: 0; background: none; color: var(--ink); font: 13px/1.55 var(--sans); text-align: left; cursor: pointer; }
.data-map-related button span { display: block; color: var(--muted); font-size: 12px; margin-top: 4px; }
.data-map-related button:hover strong { text-decoration: underline; }
.data-map-related button:focus-visible { outline: 2px solid #1565c0; outline-offset: 3px; }
.data-map-note { margin-top: 20px; color: var(--muted); font-size: 12px; line-height: 1.8; }
@media(max-width:1100px) {
 .data-map-layout { grid-template-columns: 1fr; }
 .data-map-detail { display: grid; grid-template-columns: 1fr 1fr; gap: 0 28px; }
 .data-map-detail .data-map-copy { grid-row: 1; }
 .data-map-detail h4 { margin-top: 0; }
}
@media(max-width:700px) {
 .data-relations { padding: 20px 16px; }
 .data-map-intro { display: block; }
 .data-map-legend { margin-top: 14px; }
 .data-map-nodes { gap: 30px 16px; }
 .data-map-node { min-height: 86px; font-size: 12px; }
 .data-map-detail { padding: 20px; gap: 0 20px; }
 .data-map-detail h3 { font-size: 21px; }
}
@media(max-width:560px) {
 .data-map-nodes { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 28px 18px; }
 .data-map-node { padding: 12px 10px; min-height: 100px; font-size: 12px; }
 .data-map-node:nth-child(n) .data-map-tooltip { left: 0; right: auto; width: 248px; }
 .data-map-node:nth-child(2n) .data-map-tooltip { left: auto; right: 0; }
 .data-map-detail { display: block; }
 .data-map-detail h4 { margin-top: 24px; }
 .data-map-intro p { font-size: 12px; }
}
@media(prefers-reduced-motion:reduce) { .data-map-node,.data-map-lines path { transition: none; } }
@media print {
 .data-relations { display: none; }
 .data-source[hidden] { display: block !important; }
}
