:root {
    --cable-color: #FFEA00;
    /* Vivid Yellow */
    --cable-width: 3px;
    --pulse-speed: 2s;
}

body {
    margin: 0;
    padding: 0;
    background-color: transparent;
    /* Transparent */
    font-family: 'Outfit', sans-serif;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 100vh;
}

.interactive-container {
    width: 100%;
    max-width: 1200px;
    padding: 0;
    box-sizing: border-box;
    background: transparent;
    border-radius: 0;
    box-shadow: none;
    border: none;
}

#svg-container svg {
    width: 100%;
    height: auto;
    display: block;
}

/* Data-name is from the SVG file "Ebene 1" usually */
svg .cls-1 {
    stroke: var(--cable-color) !important;
    stroke-width: var(--cable-width) !important;
    stroke-dasharray: none;
    /* Solid line */
    stroke-linecap: round;
    /* Remove 'animation' here if we only want the @keyframes to be defined but used elsewhere, 
       but currently it was used here. We keep it as is. */
    animation: pulsate var(--pulse-speed) ease-in-out infinite;
}

/* Hotspots (Blue Dots) */
svg .cls-2 {
    fill: #292a86;
    /* Ensure default color */
    fill-opacity: 0.8;
    transform-origin: center;
    transform-box: fill-box;
    cursor: pointer;
    stroke: none;
    animation: pulsate-blue 2s ease-in-out infinite;
}

/* Hover effect for hotspots */
svg .cls-2:hover {
    filter: drop-shadow(0 0 15px rgba(41, 42, 134, 1));
    transform: scale(1.4);
    fill-opacity: 1;
    transition: all 0.3s ease;
}

@keyframes pulsate-blue {
    0% {
        transform: scale(0.9);
        filter: drop-shadow(0 0 5px rgba(41, 42, 134, 0.5));
        fill-opacity: 0.7;
    }

    50% {
        transform: scale(1.3);
        filter: drop-shadow(0 0 20px rgba(41, 42, 134, 0.8));
        fill-opacity: 0.9;
    }

    100% {
        transform: scale(0.9);
        filter: drop-shadow(0 0 5px rgba(41, 42, 134, 0.5));
        fill-opacity: 0.7;
    }
}

@keyframes pulsate {

    0%,
    100% {
        filter: drop-shadow(0 0 2px rgba(255, 234, 0, 0.5));
        stroke-opacity: 0.8;
    }

    50% {
        filter: drop-shadow(0 0 10px rgba(255, 234, 0, 0.9));
        stroke-opacity: 1;
    }
}

/* Particle Flow Overlay */
.energy-flow {
    fill: none;
    stroke: white;
    stroke-width: var(--cable-width);
    stroke-linecap: round;
    stroke-dasharray: 10 30;
    /* 10px particle, 30px gap */
    stroke-opacity: 0.8;
    pointer-events: none;
    /* Let clicks pass through */
    animation: flow 1s linear infinite;
}

@keyframes flow {
    to {
        stroke-dashoffset: -40;
    }
}

@keyframes flow-reverse {
    to {
        stroke-dashoffset: 40;
    }
}

.energy-flow.reverse {
    animation-name: flow-reverse;
}

/* Optional: Stronger glow on hover */
.interactive-container:hover svg .cls-1 {
    filter: drop-shadow(0 0 15px rgba(255, 234, 0, 1));
}

/* Hotspot Modal */
.hotspot-modal {
    position: fixed;
    background: rgba(255, 255, 255, 0.95);
    padding: 12px 16px;
    border-radius: 8px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
    pointer-events: none;
    z-index: 1000;
    display: none;
    font-size: 14px;
    color: #333;
    font-weight: 500;
    backdrop-filter: blur(5px);
    border: 1px solid rgba(0, 0, 0, 0.05);
    transform: translate(10px, 10px);
    /* Offset from cursor */
}