.plan { position: relative; width: 100%; color: var(--tinte, #15140f); }
.plan > svg { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; }
.plan-ebene { opacity: 0; will-change: clip-path, opacity; }
.plan path, .plan rect, .plan circle { vector-effect: non-scaling-stroke; }
.plan .flurstueck { fill: none; stroke: var(--tinte, #15140f); stroke-width: 1.25; stroke-dasharray: 10 4 2 4; }
.plan .belegt { stroke: var(--tinte-leise, #5a554b); stroke-width: .75; }
.plan .schraffur-linie { stroke: var(--schraffur, #cbbfa8); stroke-width: 1.4; }
.plan .raster-punkt { fill: var(--schraffur, #cbbfa8); }
.plan .gebiet { stroke: none; }
.plan .gebiet-rand { fill: none; stroke: var(--tinte-leise, #5a554b); stroke-width: 1; stroke-dasharray: 2 4; }
.plan .frei { fill: rgba(180, 74, 22, .07); stroke: var(--akzent-papier, #b44a16); stroke-width: 1.6; }
.plan .kreis { fill: none; stroke: var(--tinte, #15140f); stroke-width: 1; stroke-dasharray: 3 5; }
.plan .umspannwerk { fill: none; stroke: var(--tinte, #15140f); stroke-width: 1.25; }
.plan .station { fill: var(--papier, #f3efe7); stroke: var(--akzent-papier, #b44a16); stroke-width: 1.4; }
.plan .leitung { fill: none; stroke: var(--akzent-papier, #b44a16); stroke-width: 1.6; }
.plan .unterschrift { fill: none; stroke: var(--tinte, #15140f); stroke-width: 1; }
.plan .strasse { fill: none; stroke: var(--plan-haar, #d9d6cf); stroke-width: 1; }
.plan .nordpfeil, .plan .massstab { fill: none; stroke: var(--tinte-leise, #5a554b); stroke-width: 1; }
.plan .kachel { fill: none; stroke: var(--schraffur, #cbbfa8); stroke-width: 1; }
.plan .eigen { fill: rgba(180, 74, 22, .06); stroke: var(--akzent-papier, #b44a16); stroke-width: 1.6; }
.plan-text {
  position: absolute; transform: translateY(4px); opacity: 0; white-space: nowrap;
  font: 400 .6875rem/1.5 var(--mono, monospace); letter-spacing: .06em; color: var(--tinte-leise, #5a554b);
  transition: opacity .3s cubic-bezier(.23, 1, .32, 1), transform .3s cubic-bezier(.23, 1, .32, 1);
  pointer-events: none; background: var(--papier, #f3efe7); padding: 0 3px; margin-left: -3px; z-index: 1;
}
.plan-text.rechts { translate: -100% 0; }
.plan-text.akzent { color: var(--akzent-papier, #b44a16); }
.plan-text.an { opacity: 1; transform: none; }
.plan.ruhig .plan-ebene { transition: opacity .25s linear; }
.plan.ruhig .plan-text { transform: none; }
.plan-text .kurz { display: none; }
@media (max-width: 599px) {
  .plan-text { font-size: .625rem; letter-spacing: .03em; }
  .plan-text .lang { display: none; }
  .plan-text .kurz { display: inline; }
}
