/* -------------------------------------------------------------
   circuits.css — DexterLab Neon Wiring System
   Pure creative code: animated wires, pulses, node rings
------------------------------------------------------------- */

#wiring-area {
    position: relative;
}

/* SVG overlay for wires */
#wire-overlay {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    overflow: visible;
}

/* Base wire appearance */
.wire {
    fill: none;
    stroke: var(--wire-color, #33e1ff);
    stroke-width: 4;
    stroke-linecap: round;
    stroke-linejoin: round;
    filter: url(#neon-glow);
    stroke-dasharray: 10 12;
    opacity: 0.9;
    animation: neonPulse 2.2s linear infinite;
}

/* Wire "hit" area for hover/click (invisible, wide) */
.wire-hit {
    fill: none;
    stroke: transparent;
    stroke-width: 20;
    pointer-events: auto;
}

/* Node rings around systems */
.node-ring {
    fill: none;
    stroke: #33e1ff;
    stroke-width: 3;
    filter: url(#neon-glow);
    opacity: 0.7;
    transition: 0.2s ease;
}

/* Hover / inspect styles */
.node-ring.is-hovered,
.node-ring.is-inspected {
    stroke-width: 5;
    opacity: 1;
}

.wire.is-hovered {
    stroke-width: 5;
    animation-duration: 1.2s;
    filter: url(#neon-glow-strong);
}

.wire.is-inspected {
    stroke-width: 6;
    opacity: 1;
}

/* Status-driven colors */
.wire.online,
.node-ring.online {
    --wire-color: #39ff14;
}
.wire.warning,
.node-ring.warning {
    --wire-color: #ffea00;
}
.wire.offline,
.node-ring.offline {
    --wire-color: #ff3131;
}

/* Keyframes */
@keyframes neonPulse {
    0%   { stroke-dashoffset: 0; }
    100% { stroke-dashoffset: -160; }
}

@keyframes wiggle {
    0% { transform: rotate(0deg); }
    25% { transform: rotate(0.6deg); }
    50% { transform: rotate(-0.6deg); }
    100% { transform: rotate(0deg); }
}

/* Stronger glow for hover */
svg defs #neon-glow-strong feGaussianBlur {
    stdDeviation: 5;
}