/* Label geometry and typography come from CampusLabelSystem; this layer paints roles. */
.map-area :is(.building-label,.cluster-label,.building-feature)[data-label-role]{transition:none}
.map-area :is(.building-label,.cluster-label)[data-label-role] .label-background{
  fill:var(--label-bg,transparent);fill-opacity:1;stroke:var(--label-border,transparent);
  stroke-width:.8;stroke-opacity:1;filter:none;vector-effect:non-scaling-stroke
}
.map-area :is(.building-label,.cluster-label)[data-label-role] .label-text{
  fill:var(--label-ink,#71344c);stroke:#fff;stroke-width:2.5px;stroke-opacity:.92;
  stroke-linejoin:round;paint-order:stroke fill
}
.map-area .cluster-label[data-label-role="L1"] .label-background{stroke-width:1}
.map-area .cluster-label[data-label-role="L1"] .label-text{stroke:none}
.map-area .building-label[data-label-role="L2"][data-label-kind="block"] .label-background{stroke-width:.6}
.map-area .building-label[data-label-role="L2"][data-label-kind="block"] .label-text{stroke-width:1.8px}
.map-area .building-label[data-label-role="L5"] .label-text{stroke-width:2px}
.map-area .building-label[data-label-kind="metro-station"] .label-text,
.map-area .building-label[data-label-kind="bus-stop"] .label-text{stroke:none}
.map-area :is(.building-label,.cluster-label)[data-label-role]:hover:not(.selected) .label-background{
  fill:#fff;fill-opacity:.94;stroke:var(--label-border,transparent)
}
.map-area :is(.building-label,.cluster-label)[data-label-role].category-emphasis:not(.selected) .label-background{
  fill:#fff;fill-opacity:.96;stroke:var(--label-ink,#71344c);stroke-opacity:.4;stroke-width:.8
}
.map-area :is(.building-label,.cluster-label)[data-label-role].category-emphasis:not(.selected) .label-text{
  fill:var(--label-ink,#71344c);stroke:#fff
}
.map-area :is(.building-label,.cluster-label)[data-label-role].selected .label-background{
  fill:var(--label-bg,#fff);fill-opacity:1;stroke:var(--label-border,transparent);stroke-opacity:1
}
.map-area :is(.building-label,.cluster-label)[data-label-role].selected .label-text{
  fill:var(--label-ink,#71344c);stroke:none
}
.map-area :is(.building-label,.cluster-label)[data-label-role]:focus-visible .label-background{
  fill-opacity:1;stroke:#398d88;stroke-opacity:1;stroke-width:2
}
.map-area .building-feature[data-label-role="L3"] .poi-symbol .poi-dot,
.map-area .building-feature[data-label-role="L4"] .poi-symbol .poi-dot{
  fill:#fff;stroke:var(--label-ink,#776d63);stroke-width:1.15;filter:none
}
.map-area .building-feature[data-label-role="L3"] .poi-symbol .poi-glyph,
.map-area .building-feature[data-label-role="L4"] .poi-symbol .poi-glyph{
  fill:none;stroke:var(--label-ink,#776d63);stroke-width:1.45
}
.map-area .building-feature[data-label-role].selected .poi-symbol .poi-dot{
  fill:var(--label-bg,#fff);stroke:var(--label-border,var(--label-ink,#71344c));stroke-width:1.6
}
.map-area .building-feature[data-label-role].selected .poi-symbol .poi-glyph{stroke:var(--label-ink,#71344c)}
.map-area .building-feature[data-label-role="L5"][data-label-kind="metro-station"] .transit-halo,
.map-area .building-feature[data-label-role="L5"][data-label-kind="bus-stop"] .transit-halo{
  fill:var(--label-ink,#3277a5);stroke:#fff;filter:none
}
.map-area .building-feature[data-label-role="L5"].selected .transit-halo{
  fill:var(--label-bg,#3277a5);stroke:var(--label-border,#fff)
}
.map-area .building-feature[data-label-role="L5"] .metro-exit-symbol:not(.is-closed) .metro-exit-box{
  fill:var(--label-bg,#edf5fa);stroke:var(--label-border,#91b9d1);filter:none
}
.map-area .building-feature[data-label-role="L5"] .metro-exit-symbol:not(.is-closed) .metro-exit-code{fill:var(--label-ink,#285f80)}
.map-area .building-feature[data-label-role="L5"][data-label-kind="bridge"] .bridge-deck{filter:none}
.map-area :is(.label-hit,.label-hit-area,.poi-hit,.metro-exit-hit,.stop-hit){fill:transparent;stroke:none}
.map-area[data-level] .building-feature.place-metro-exit.station-exit-context{opacity:1;pointer-events:auto}
