.pmap { position: relative; }
.pmap svg { width: 100%; height: auto; overflow: visible; }
.pmap-dept { font-size: 12px; font-weight: 600; letter-spacing: 0.02em; fill: var(--lb-muted); }
.pmap-rail { stroke: var(--lb-line); stroke-dasharray: 2 6; }
.pmap-link { fill: none; stroke: rgba(0, 0, 0, 0.06); stroke-width: 1.25; transition: stroke 0.8s, opacity 0.3s; }
.pmap-link.lit { stroke: rgba(79, 92, 0, 0.45); stroke-dasharray: 3 7; animation: pmap-flow 1.6s linear infinite; }
.pmap-link.hot { stroke: rgba(22, 22, 22, 0.85); stroke-width: 1.75; }
@keyframes pmap-flow { to { stroke-dashoffset: -20; } }

.pmap-node { cursor: pointer; outline: none; }
.pmap-node .core { fill: transparent; stroke: rgba(0, 0, 0, 0.14); stroke-width: 1; transition: fill 0.9s var(--ease), stroke 0.9s, r 0.4s var(--ease); }
.pmap-node .halo { fill: var(--c); opacity: 0; transition: opacity 1.2s var(--ease); }
.pmap-node .hrs { font-family: var(--mono); font-size: 12px; font-weight: 500; fill: #1d1d1f; opacity: 0; transition: opacity 0.6s 0.3s; pointer-events: none; }
.pmap-node .name { font-size: 12.5px; fill: var(--lb-muted); transition: fill 0.6s; pointer-events: none; }
.pmap-node.lit .core { fill: var(--c); stroke: rgba(22, 22, 22, 0.28); }
.pmap-node.lit .halo { opacity: 0.35; }
.pmap-node.lit .hrs { opacity: 0.85; }
.pmap-node.lit .name { fill: var(--lb-ink); }
.pmap.focus .pmap-node:not(.hot) { opacity: 0.35; }
.pmap.focus .pmap-link:not(.hot) { opacity: 0.25; }
.pmap-node { transition: opacity 0.3s; }
.pmap-node.hot .halo { opacity: 0.8; }
.pmap-node.hot .core { stroke: #1d1d1f; stroke-width: 1.5; }

.pmap-tip {
  position: absolute; z-index: 5; width: 220px; padding: 12px 14px; border-radius: 14px;
  background: #fff;
  box-shadow: var(--shadow-pop), inset 0 0 0 1px var(--line);
  color: var(--lb-ink); font-size: 13px; pointer-events: none;
  opacity: 0; transform: translateY(4px); transition: opacity 0.2s, transform 0.2s var(--ease);
}
.pmap-tip.on { opacity: 1; transform: none; }
.pmap-tip strong { display: block; font-weight: 500; margin-bottom: 6px; }
.pmap-tip .row { display: flex; justify-content: space-between; color: var(--lb-muted); }
.pmap-tip .row b { color: var(--lb-ink); font-weight: 500; font-variant-numeric: tabular-nums; }
.pmap-tip .tools { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.pmap-tip .tools span { font-size: 11px; padding: 2px 8px; border-radius: 99px; background: rgba(118, 118, 128, 0.12); }

.heat-legend { display: flex; align-items: center; gap: 10px; font-size: 12px; color: var(--lb-muted); }
.heat-legend .bar { width: 120px; height: 6px; border-radius: 99px; background: linear-gradient(90deg, var(--heat-0), var(--heat-2), var(--heat-4)); }
