/* Hero-Beschriftung: Symbol → Linie → Feld → Text, für alle Motive. */
.hero .building-label{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .16s ease,visibility 0s linear .16s}
.hero .building-label.is-revealed{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .2s ease .18s,visibility 0s}
.hero .building-label .label-text{display:block}
.hero .building-label .label-number{display:none}
.hero .building-connections path{opacity:0;stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset .25s ease,opacity .12s ease}
.hero .building-connections path.is-revealed{opacity:1;stroke-dashoffset:0}
.hero .building-label.is-revealed .label-text{animation:hero-label-text .24s ease .32s both}
@keyframes hero-label-text{from{color:transparent;clip-path:inset(0 100% 0 0)}to{color:inherit;clip-path:inset(0)}}
@media(max-width:760px){
 .hero .building-hotspot svg,.services-hero .building-hotspot svg{display:block;width:18px;height:18px}
 .hero .building-hotspot .hotspot-number,.services-hero .building-hotspot .hotspot-number{display:none}
 .hero .building-label.is-revealed{display:block;max-width:160px}
 .hero .building-label .label-text{white-space:normal;font-size:13px;line-height:1.3;text-align:left}
}
@media(prefers-reduced-motion:reduce){
 .hero .building-label,.hero .building-label.is-revealed,.hero .building-connections path{transition:none}
 .hero .building-label.is-revealed .label-text{animation:none}
}

/* Opaque fields cover the connector endpoint throughout the text reveal. */
.hero .building-label .label-text{background:var(--paper)}
.hero .building-label.is-active .label-text{background:var(--selected)}
