.graph-page { width: var(--measure); margin: 0 auto; padding: clamp(2rem, 6vw, 5rem) 0; }
.graph-intro { max-width: 42rem; margin-bottom: 2rem; }
.graph-intro h1 { margin: .35rem 0 .7rem; font-family: "Cormorant Garamond", serif; font-size: clamp(3rem, 8vw, 6.5rem); line-height: .9; }
.graph-intro p:last-child { max-width: 38rem; color: var(--text-soft); font-size: 1.05rem; }
.graph-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.graph-filters { display: flex; flex-wrap: wrap; gap: .4rem; }
.graph-layers { display: flex; flex-wrap: wrap; gap: .4rem; }
.graph-filter { border: 1px solid var(--line); border-radius: 999px; padding: .5rem .75rem; color: var(--text-soft); background: transparent; font: inherit; cursor: pointer; }
.graph-filter:hover, .graph-filter:focus-visible, .graph-filter.is-active { border-color: var(--gold-line); color: var(--text); background: var(--gold-soft); }
.graph-status { margin: 0; color: var(--text-muted); font: .72rem/1.2 "IBM Plex Mono", monospace; text-transform: uppercase; letter-spacing: .08em; white-space: nowrap; }
.graph-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(15rem, 20rem); gap: 1rem; align-items: start; }
.graph-stage, .graph-detail { border: 1px solid var(--line); background: rgba(7, 16, 13, .45); }
.graph-stage { min-height: 460px; position: relative; overflow: hidden; background: radial-gradient(circle at 50% 50%, rgba(52, 167, 132, .12), transparent 44%), rgba(7, 16, 13, .55); }
.archive-graph { display: block; width: 100%; min-height: 460px; }
.graph-edge { stroke: var(--line); stroke-width: 1; opacity: .7; }
.graph-edge--conceptual { stroke: var(--gold); stroke-dasharray: 3 5; opacity: .5; }
.graph-node { cursor: pointer; text-decoration: none; }
.graph-node circle { stroke: rgba(245, 239, 227, .55); stroke-width: 1; transition: r .2s, stroke .2s, stroke-width .2s; }
.graph-node:hover circle, .graph-node:focus-visible circle, .graph-node.is-selected circle { stroke: var(--text); stroke-width: 3; }
.graph-node text { fill: var(--text-muted); font: 10px "IBM Plex Mono", monospace; pointer-events: none; }
.graph-node:hover text, .graph-node:focus-visible text, .graph-node.is-selected text { fill: var(--text); }
.graph-node.is-dimmed, .graph-edge.is-dimmed { opacity: .12; }
.graph-stage { touch-action: none; }
.graph-detail { min-height: 13rem; padding: 1.25rem; position: sticky; top: 5rem; }
.graph-detail h2 { margin: .55rem 0 .65rem; font-family: "Cormorant Garamond", serif; font-size: 2rem; line-height: 1; }
.graph-detail p:not(.archive-card__label) { color: var(--text-soft); }
.graph-detail .button { display: inline-flex; margin-top: 1rem; }
.graph-empty { position: absolute; inset: 50% auto auto 50%; transform: translate(-50%, -50%); color: var(--text-muted); }
@media (max-width: 760px) { .graph-toolbar, .graph-layout { grid-template-columns: 1fr; display: grid; } .graph-status { white-space: normal; } .graph-detail { position: static; } .graph-stage, .archive-graph { min-height: 420px; } }
@media (prefers-reduced-motion: reduce) { .graph-node circle { transition: none; } }
