/* Warm dark coffee theme — D3 graph styles */
#map-svg {
    cursor: grab;
}
#map-svg:active {
    cursor: grabbing;
}

.node-circle {
    cursor: pointer;
    transition: opacity 0.2s;
}
.node-label {
    pointer-events: none;
    user-select: none;
}
.edge-line {
    fill: none;
    pointer-events: none;
}
/* Coffee-palette edges */
.edge-line.gateway_server { stroke: #b07c4f; stroke-width: 2.5; stroke-opacity: 0.4; }
.edge-line.domain_project { stroke: #c8956c; stroke-width: 1.5; stroke-opacity: 0.25; stroke-dasharray: 4 3; }
.edge-line.domain_gateway { stroke: #8fad6e; stroke-width: 1.8; stroke-opacity: 0.35; }
.edge-line.domain_server  { stroke: #d4a57e; stroke-width: 1.8; stroke-opacity: 0.35; }

/* Highlight states */
.graph-dimmed .node-group { opacity: 0.12; }
.graph-dimmed .edge-line { opacity: 0.04; }
.graph-dimmed .node-group.highlighted { opacity: 1; }
.graph-dimmed .edge-line.highlighted { opacity: 0.7; }

/* Health status ring */
.health-ring { fill: none; stroke-width: 3; }
.health-ring.up { stroke: #4ade80; stroke-opacity: 0.7; }
.health-ring.down { stroke: #f87171; stroke-opacity: 0.8; }
.health-ring.error { stroke: #f87171; stroke-opacity: 0.8; }
.health-ring.unknown { stroke: #443d35; stroke-dasharray: 3 3; }

/* Renewal pulse */
@keyframes pulse-danger {
    0%, 100% { stroke-opacity: 0.9; }
    50% { stroke-opacity: 0.2; }
}
.renew-danger .health-ring { stroke: #f87171; animation: pulse-danger 1.5s infinite; }
.renew-warn .health-ring { stroke: #fbbf24; stroke-opacity: 0.7; }

/* Scrollbar — warm dark */
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #332e28; border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: #443d35; }

/* Selection — coffee tint */
::selection { background: rgba(200, 149, 108, 0.3); }
