.bg3d {
  --primary-300: #86C1FF;
  --primary-400: var(--accent-blue);
  --secondary-200: var(--accent);
  --secondary-300: #CAF000;
  --secondary-50: var(--secondary-200);
  --secondary-100: var(--secondary-300);
  position: fixed;
  inset: 0;
  z-index: -2;
  overflow: hidden;
  pointer-events: none;
}
.bg3d-blur {
  position: fixed;
  inset: 0;
  z-index: -1;
  backdrop-filter: blur(8px) saturate(180%);
  -webkit-backdrop-filter: blur(8px) saturate(180%);
  background-color: rgba(0, 0, 0, 0.3);
  pointer-events: none;
}
.bg3d-scene {
  width: 100%;
  height: 100%;
  perspective: 1000px;
  pointer-events: none;
  opacity: var(--bg3d-scene-opacity, 1);
}
#node-layer {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 0;
  height: 0;
  transform-style: preserve-3d;
  pointer-events: none;
}
.node {
  position: absolute;
  width: 192px;
  height: 192px;
  transform-origin: 0 0;
  pointer-events: none;
}
.node svg { display: none; }
.node::after {
  content: '';
  position: absolute;
  top: -96px;
  left: -96px;
  width: 384px;
  height: 384px;
  border-radius: 50%;
  pointer-events: none;
  background: radial-gradient(circle at 50% 50%,
    #f7fb96 0%,
    currentColor 25%,
    color-mix(in srgb, currentColor 90%, transparent 10%) 30%,
    color-mix(in srgb, currentColor 10%, transparent 90%) 50%,
    color-mix(in srgb, currentColor  1%, transparent 99%) 51%, transparent 90%);
}
.edge {
  position: absolute;
  transform-origin: 0 50%;
  transform-style: preserve-3d;
  height: 2px !important;
  pointer-events: none;
  box-shadow: 0 0 8px var(--edge-source-color, #7dd3fc);
}
.edge-face {
  position: absolute;
  inset: 0;
  transform-style: preserve-3d;
  background: linear-gradient(90deg,
    var(--edge-source-color, #7dd3fc),
    var(--edge-target-color, #7dd3fc));
}
.edge-face:nth-child(2) { transform: rotateX(120deg); }
.edge-face:nth-child(3) { transform: rotateX(240deg); }
.edge-face svg { display: none; }
.bg3d-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: #000810;
  opacity: 1;
  transition: opacity 1.5s ease;
  pointer-events: none;
}
.bg3d-overlay--hidden { opacity: 0; }
