/* Archivo, lokal eingebunden (SIL Open Font License, siehe fonts/OFL-Archivo.txt) */
@font-face{font-family:'Archivo';font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(../fonts/archivo-latin-ext-wdth-normal.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Archivo';font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(../fonts/archivo-latin-wdth-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

body{margin:0;background:#FFFFFF}
a{color:#1C2733}a:hover{color:#0F161D}
a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid #1C2733;outline-offset:3px}
.dark a:focus-visible,.dark button:focus-visible{outline-color:#FFFFFF}
.navlinks{display:flex;align-items:center;gap:28px}
.hide-sm{display:inline-flex}
.navlink,.flink{text-decoration:none}
.navlink:hover,.flink:hover{text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:2px}
.lift{transition:transform .18s ease}
.lift:hover{transform:translateY(-2px)}
.blink:hover svg{animation:blinker .7s steps(1,end) infinite}
@keyframes blinker{0%{opacity:1}50%{opacity:0}}
.reveal{animation:reveal .95s cubic-bezier(.2,.7,.1,1) both}
.d2{animation-delay:.12s}
@keyframes reveal{from{transform:translateY(108%)}to{transform:none}}
.rise{animation:rise .9s cubic-bezier(.2,.7,.1,1) both}
.rise2{animation:rise .9s cubic-bezier(.2,.7,.1,1) .25s both}
.rise3{animation:rise .9s cubic-bezier(.2,.7,.1,1) .4s both}
@keyframes rise{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
.ampel-drop{animation:drop 1s cubic-bezier(.2,.7,.1,1) .9s both}
@keyframes drop{from{opacity:0;transform:translateY(-24px)}to{opacity:1;transform:none}}
.draw{transform-origin:left center;animation:draw 1.4s cubic-bezier(.6,0,.2,1) .6s both}
@keyframes draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.lamp-r{animation:lampR 10s linear infinite}
.lamp-y{animation:lampY 10s linear infinite}
.lamp-g{animation:lampG 10s linear infinite}
@keyframes lampR{0%,40%{opacity:1}43%,90%{opacity:0}93%,100%{opacity:1}}
@keyframes lampY{0%,30%{opacity:0}33%,40%{opacity:1}43%,80%{opacity:0}83%,90%{opacity:1}93%,100%{opacity:0}}
@keyframes lampG{0%,40%{opacity:0}43%,80%{opacity:1}83%,100%{opacity:0}}
.pulse{transform-box:fill-box;transform-origin:center;animation:pulse 2.4s ease-out infinite}
@keyframes pulse{0%{transform:scale(.6);opacity:.9}100%{transform:scale(2.6);opacity:0}}
.route{display:none}
.stop:hover .stoplabel,.stop:focus-visible .stoplabel{opacity:1 !important;transform:none !important}
.mbar{display:none}
.mpad{padding-bottom:20px}
@keyframes segfill{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes stopfill{from{background-color:#FFFFFF}to{background-color:var(--akzent)}}
@keyframes stoplabel{0%{opacity:0;transform:translateX(-6px)}20%,80%{opacity:1;transform:none}100%{opacity:0;transform:translateX(-6px)}}
@supports (animation-timeline:view()) and (timeline-scope:none){
@media (min-width:1440px){.route{display:block}}
.segfill{animation:segfill linear both;animation-range:entry 70% cover 40%}
.stopfill{animation:stopfill linear both;animation-range:cover 39% cover 41%}
.stoplabel{animation:stoplabel linear both;animation-range:cover 18% cover 82%}
}
@media (max-width:999px){.ueber-text{order:-1}}
@media (max-width:980px){.navlinks{display:none}}
@media (max-width:760px){.mbar{display:flex}.mpad{padding-bottom:100px}}
@media (max-width:640px){.hide-sm{display:none}}
@media (prefers-reduced-motion:reduce){.reveal,.rise,.rise2,.rise3,.ampel-drop,.draw,.lamp-r,.lamp-y,.lamp-g,.pulse,.blink:hover svg{animation:none}.lamp-y,.lamp-g{opacity:0}.lift{transition:none}}

/* Ergänzungen für die Live-Seite */
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none !important}
html{-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
section[id],main[id]{scroll-margin-top:16px}
img{max-width:100%}
.skip{position:absolute;left:-9999px;top:16px;z-index:100;padding:12px 18px;background:#FFFFFF;color:#1C2733;font-weight:700;text-decoration:none;box-shadow:0 10px 30px -10px rgba(28,39,51,.5)}
.skip:focus{left:16px}
/* Karte: Platzhalter unscharf, bis Google Maps erlaubt ist */
#map{isolation:isolate}
.map-svg{filter:blur(6px) saturate(.6) brightness(.75)}
#map.is-live .map-svg{filter:none}
.map-live{position:absolute;inset:0;z-index:1}
.map-frame{position:absolute;inset:0;width:100%;height:100%;border:0;pointer-events:none;filter:grayscale(1) invert(.92) contrast(.9)}
.map-tint{position:absolute;inset:0;background:#1C2733;mix-blend-mode:color;pointer-events:none}
.map-pin{position:absolute;left:50%;top:50%;width:48px;height:66px;margin:-66px 0 0 -24px;pointer-events:none;overflow:visible}
/* Rechtliche Seiten */
.legal{max-width:780px;margin:0 auto;padding:clamp(40px,6vw,88px) clamp(16px,4vw,48px) clamp(80px,9vw,120px)}
.legal h1{margin:0 0 12px;font-size:clamp(34px,4.6vw,60px);line-height:1;font-weight:800;text-transform:uppercase;font-stretch:118%}
.legal .stand{margin:0 0 40px;color:#56606B;font-size:15px}
.legal h2{margin:44px 0 12px;font-size:clamp(20px,2vw,24px);line-height:1.2;font-weight:800;text-transform:uppercase;font-stretch:118%}
.legal h3{margin:28px 0 8px;font-size:18px;font-weight:700}
.legal p,.legal li{font-size:17px;line-height:1.65;color:#2F3A45}
.legal p{margin:0 0 14px}
.legal ul{margin:0 0 14px;padding-left:22px}
.legal a{color:#1C2733;font-weight:600}
.legal .box{margin:24px 0;padding:20px 22px;background:#F1F3F6;box-shadow:inset 4px 0 0 #D42A2A}
.legal .btn{display:inline-flex;align-items:center;min-height:48px;padding:0 20px;border:2px solid #1C2733;background:#1C2733;color:#FFFFFF;font:inherit;font-size:14px;font-weight:700;letter-spacing:.04em;cursor:pointer}
