@use 'variables' as *; @use 'mixins' as *; // Graph view .graph-view { @include flex(column); height: 100%; background: $bg-1; border-radius: $radius; overflow: hidden; } .graph-toolbar { @include flex(row, flex-start, center, $space-8); padding: $space-6 $space-8; background: $bg-2; border-bottom: 1px solid $border; } .graph-title { font-size: $font-size-xl; font-weight: $font-weight-semibold; color: $text-0; } .graph-controls { @include flex(row, flex-start, center, $space-4); font-size: $font-size-md; color: $text-1; select { padding: $space-2 20px $space-2 $space-4; font-size: $font-size-base; background: $bg-3; } } .graph-stats { margin-left: auto; font-size: $font-size-base; color: $text-2; } .graph-container { flex: 1; position: relative; @include flex-center; overflow: hidden; background: $bg-0; } .graph-loading, .graph-error, .graph-empty { @include flex(column, center, center, $space-5); padding: 48px; color: $text-2; font-size: $font-size-lg; text-align: center; } .graph-svg { max-width: 100%; max-height: 100%; cursor: grab; } .graph-svg-container { position: relative; width: 100%; height: 100%; } .graph-zoom-controls { position: absolute; top: $space-8; left: $space-8; @include flex(column, flex-start, stretch, $space-4); z-index: 5; } .zoom-btn { width: 36px; height: 36px; border-radius: 6px; background: $bg-2; border: 1px solid $border; color: $text-0; font-size: 18px; font-weight: bold; @include flex-center; cursor: pointer; transition: all $transition-slow; box-shadow: $shadow-sm; &:hover { background: $bg-3; border-color: $border-strong; transform: scale(1.05); } &:active { transform: scale(0.95); } } // Graph elements .graph-edges line { stroke: $border-strong; stroke-width: 1; opacity: 0.6; &.edge-type-wikilink { stroke: $accent; } &.edge-type-embed { stroke: $graph-edge-embed; stroke-dasharray: 4 2; } } .graph-nodes { .graph-node { cursor: pointer; circle { fill: $graph-node-fill; stroke: $graph-node-stroke; stroke-width: 2; transition: fill $transition-slow, stroke $transition-slow; } &:hover circle { fill: $graph-node-hover; } &.selected circle { fill: $accent; stroke: $graph-node-selected; } text { fill: $text-1; font-size: 11px; pointer-events: none; text-anchor: middle; dominant-baseline: central; transform: translateY(16px); } } } // Node details panel .node-details-panel { position: absolute; top: $space-8; right: $space-8; width: 280px; background: $bg-2; border: 1px solid $border; border-radius: $radius; box-shadow: $shadow; z-index: 10; } .node-details-header { @include flex-between; padding: $space-5 14px; border-bottom: 1px solid $border-subtle; h3 { font-size: $font-size-lg; font-weight: $font-weight-semibold; color: $text-0; margin: 0; @include text-truncate; } .close-btn { background: none; border: none; color: $text-2; cursor: pointer; font-size: 14px; padding: $space-1 $space-3; line-height: 1; &:hover { color: $text-0; } } } .node-details-content { padding: 14px; .node-title { font-size: $font-size-md; color: $text-1; margin-bottom: $space-6; } } .node-stats { display: flex; gap: $space-8; margin-bottom: $space-6; .stat { font-size: $font-size-md; color: $text-2; strong { color: $text-0; } } } // Physics controls .physics-controls-panel { position: absolute; top: $space-8; right: $space-8; width: 300px; background: $bg-2; border: 1px solid $border; border-radius: $radius; box-shadow: $shadow; padding: $space-8; z-index: 10; h4 { font-size: $font-size-lg; font-weight: $font-weight-semibold; color: $text-0; margin: 0 0 $space-8 0; padding-bottom: $space-4; border-bottom: 1px solid $border-subtle; } .btn { width: 100%; margin-top: $space-4; } } .control-group { margin-bottom: 14px; label { display: block; font-size: $font-size-base; font-weight: $font-weight-medium; color: $text-1; margin-bottom: 6px; text-transform: uppercase; letter-spacing: $letter-spacing-uppercase; } input[type='range'] { width: 100%; height: 4px; border-radius: $space-2; background: $bg-3; outline: none; -webkit-appearance: none; &::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 14px; height: 14px; border-radius: 50%; background: $accent; cursor: pointer; transition: transform $transition-base; &:hover { transform: scale(1.15); } } &::-moz-range-thumb { width: 14px; height: 14px; border-radius: 50%; background: $accent; cursor: pointer; border: none; transition: transform $transition-base; &:hover { transform: scale(1.15); } } } } .control-value { display: inline-block; margin-top: $space-1; font-size: $font-size-base; color: $text-2; font-family: $font-family-mono; }