@use 'breakpoints' as bp; :host { display: block; } .systems-map { display: grid; gap: var(--space-4); } .systems-map-heading, .systems-map-intro, .systems-map-kicker, .systems-map-readout { margin: 0; } .systems-map-heading { font-size: var(--text-xl); line-height: var(--leading-tight); } .systems-map-intro, .systems-map-card-summary, .systems-map-card-relation, .systems-map-readout { color: var(--color-text-muted); } .systems-map-kicker { font-size: var(--text-xs); letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--color-text-subtle); } .systems-map-figure { display: none; } .systems-map-figure svg { display: block; width: 100%; height: auto; border: 1px solid var(--surface-glass-border); border-radius: var(--radius-md); background-color: var(--color-surface-raised); background-image: linear-gradient(var(--color-surface-muted) 1px, transparent 1px), linear-gradient(90deg, var(--color-surface-muted) 1px, transparent 1px); background-size: 1.5rem 1.5rem; } .systems-map-edge { fill: none; stroke: var(--color-accent-cool); stroke-width: 1.25; opacity: 0.7; transition: opacity var(--duration-base) var(--ease-standard); } .systems-map-node { color: var(--color-text); } .systems-map-node circle, .systems-map-node rect { fill: var(--color-surface-overlay); stroke: var(--color-accent); stroke-width: 1.25; transition: opacity var(--duration-base) var(--ease-standard), stroke var(--duration-fast) var(--ease-standard); } .systems-map-node[data-kind='project'] rect, .systems-map-legend [data-kind='project'] { stroke: var(--color-accent-soft); } .systems-map-node[data-kind='ai'] circle, .systems-map-legend [data-kind='ai'] { stroke: var(--color-accent-strong); } .systems-map-node text { fill: currentColor; font-size: 0.75rem; text-anchor: middle; } .systems-map-node.is-connected circle, .systems-map-node.is-connected rect, .systems-map-edge.is-connected { stroke: var(--color-accent-strong); opacity: 1; } .systems-map-node.is-dimmed, .systems-map-edge.is-dimmed { opacity: 0.55; } .systems-map-cards, .systems-map-legend { list-style: none; margin: 0; padding: 0; } .systems-map-cards { display: grid; gap: var(--space-3); } .systems-map-cards a { display: grid; gap: var(--space-1); padding: var(--space-4); border: 1px solid var(--surface-glass-border); border-radius: var(--radius-md); background: var(--color-surface-raised); color: var(--color-text); text-decoration: none; } .systems-map-node:focus-visible, .systems-map-cards a:focus-visible { outline: var(--focus-ring-width) solid var(--focus-ring-color); outline-offset: var(--focus-ring-offset); } .systems-map-node:focus-visible circle, .systems-map-node:focus-visible rect { stroke: var(--focus-ring-color); stroke-width: 3; } .systems-map-card-label { font-weight: 600; } .systems-map-legend { display: flex; flex-wrap: wrap; gap: var(--space-3); font-size: var(--text-sm); } .systems-map-legend li { padding-inline-start: var(--space-3); border-inline-start: 2px solid var(--color-accent); } .systems-map-readout { min-height: var(--text-md); font-size: var(--text-sm); } @media (hover: hover) and (pointer: fine) { .systems-map-node:hover circle, .systems-map-node:hover rect { stroke: var(--color-accent-strong); } .systems-map-cards a:hover { border-color: var(--surface-glass-border-strong); } } @media (prefers-reduced-motion: reduce) { .systems-map-edge, .systems-map-node circle, .systems-map-node rect { transition: none; } } @include bp.respond-to(lg) { .systems-map-figure { display: block; } .systems-map-list { display: none; } }