:root{--k:340px;--bg:#14202e;--panel:#1d2c3f;--ink:#e8ebef;--mute:#9aa8b8;--sig:#c4cad2;--line:#2e4259}
*{box-sizing:border-box}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--ink);font:16px/1.55 "Segoe UI",Arial,sans-serif}
h1,h2{font-family:"Arial Narrow","Segoe UI",sans-serif;font-stretch:condensed;letter-spacing:.01em;margin:0 0 .4em}
h1{font-size:clamp(2.2rem,6vw,4.2rem);line-height:1.02}a{color:var(--sig)}
.wrap{max-width:1100px;margin:0 auto;padding:2rem 1.2rem}
.hero{border-bottom:6px solid var(--sig);background:var(--panel)}
.hero p{max-width:60ch;color:var(--mute)}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:2rem;margin-top:2rem}
form{display:grid;gap:.7rem}label{font-size:.9rem;color:var(--mute)}
input,textarea,select{width:100%;padding:.6rem .7rem;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:3px;font:inherit}
button{padding:.65rem 1rem;border:0;background:var(--sig);color:#14202e;font-weight:700;border-radius:3px;cursor:pointer;font:inherit;font-weight:700}
:focus-visible{outline:2px solid var(--sig);outline-offset:2px}
.msg{padding:.6rem .8rem;border-left:4px solid var(--sig);background:var(--panel);margin:1rem 0}
.bar{display:flex;gap:.7rem;flex-wrap:wrap;align-items:center;margin-bottom:1.2rem}.bar input,.bar select{width:auto;flex:1 1 180px}
.wrap.wide{max-width:none}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--k)),1fr));gap:1.2rem}
.card{background:var(--panel);border:1px solid var(--line);padding:.7rem;cursor:pointer}
.pair{display:grid;grid-template-columns:1fr 1fr;gap:.5rem}
.pair img,.ph{width:100%;aspect-ratio:4/3;object-fit:contain;background:#0d1620;display:block}
.ph{display:grid;place-items:center;color:var(--mute);font-size:.85rem}
.card b{color:var(--sig);font-size:1.15rem}.card small{color:var(--mute);display:block}
dialog{width:min(1300px,96vw);max-height:96vh;background:var(--panel);color:var(--ink);border:1px solid var(--line);padding:1rem;overflow:auto}
dialog::backdrop{background:#000c}dialog .pair img{aspect-ratio:auto;max-height:70vh}
@media(max-width:640px){dialog .pair{grid-template-columns:1fr}}
.cap span{color:var(--mute);font-size:.85rem;line-height:1.3}
figure{margin:0}figcaption{margin-top:.4rem;color:var(--mute);font-size:.95rem}
dialog .pair img{cursor:zoom-in}
#f{width:100vw;max-width:100vw;height:100vh;max-height:100vh;padding:0;border:0;background:#000;overflow:auto}
#f img{display:block;max-width:100%;max-height:100vh;margin:0 auto;cursor:zoom-in}
#f img.full{max-width:none;max-height:none;cursor:zoom-out}
.zug{margin-top:.7rem;padding:.5rem .8rem;border-left:4px solid var(--sig);background:#16222f}
.zug.rot{border-left-color:var(--mute)}
.zk{font-size:1.05rem}.zk b{color:var(--sig)}.zt{color:var(--mute);font-size:.8rem}
.zr{font-size:1.05rem;margin-top:.15rem}.zv{color:var(--mute);font-size:.9rem}
#di h2{margin-top:1.2rem;font-size:1.3rem}.rt p{max-width:75ch}
.qu,.hint,.kn{color:var(--mute);font-size:.9rem}

body>main{flex:1}
/* HEADER-EINSTELLUNGEN: --titel = Schriftgroesse, --dunkel = Abdunkelung links (0 = keine, .5 = mittel) */
.top{--titel:clamp(1.8rem,4.2vw,2.9rem);--dunkel:.35;position:relative;overflow:hidden;background:var(--panel);border-bottom:0}
.top .collage{position:absolute;inset:0;display:flex}
.top .collage img{flex:1 1 0;min-width:0;height:100%;object-fit:cover;filter:saturate(.9);border-left:3px solid var(--panel)}
.top .collage img:first-child{border-left:0}
.top::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(20,32,46,var(--dunkel)) 0%,rgba(20,32,46,calc(var(--dunkel)*.5)) 50%,rgba(20,32,46,0) 100%)}
.top .wrap{position:relative;z-index:1;padding-top:2.6rem;padding-bottom:2.6rem}
.top h1{margin:0;font-size:var(--titel);font-weight:400;color:#fff;text-shadow:0 1px 3px #000c,0 0 14px #000a}
@media(max-width:700px){.top .collage img:nth-child(n+4){display:none}}
.foot{border-top:1px solid var(--line);background:var(--panel);color:var(--mute);font-size:.95rem}
.foot .wrap{padding-top:1rem;padding-bottom:1rem}
.txt{max-width:820px;margin-left:auto;margin-right:auto}.txt h2{margin-top:1.6rem;font-size:1.3rem}
.wrap{width:100%}
.intro{max-width:70ch;color:var(--mute);margin:0 0 1.2rem;font-size:1.05rem}
.wrap.mid{display:flex;flex-direction:column;justify-content:center}

/* Streckenkarte (dunkel: OSM-Kacheln per Filter abgedunkelt, siehe .zk-base) */
.infogrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.6rem;align-items:start}
.infomap{position:sticky;top:0}.infomap h2{margin-top:1.2rem}
@media(max-width:900px){.infogrid{grid-template-columns:1fr}.infomap{position:static}}
.zk-karte{margin:0}.zk-view{position:relative;height:min(460px,62vh);overflow:hidden;background:var(--bg);border:1px solid var(--line);touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;isolation:isolate}
.zk-view.zk-drag{cursor:grabbing}
.zk-tiles{position:absolute;inset:0}
.zk-tiles img{position:absolute;width:256px;height:256px;max-width:none;pointer-events:none}
.zk-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.zk-svg g{pointer-events:auto}
.zk-lbl{font:600 12px "Segoe UI",Arial,sans-serif;fill:#fff;paint-order:stroke;stroke:#14202e;stroke-width:3.5px;stroke-linejoin:round}
.zk-ctl{position:absolute;top:.5rem;left:.5rem;display:flex;flex-direction:column;gap:2px;z-index:5}
.zk-ctl button{width:30px;height:30px;padding:0;background:var(--panel);color:#fff;border:1px solid var(--line);border-radius:3px;font-size:18px;line-height:1;font-weight:700}
.zk-lay{position:absolute;left:.5rem;bottom:.5rem;z-index:5;background:#1d2c3fe6;color:var(--ink);font-size:.78rem;padding:2px 6px;border-radius:3px;display:flex;align-items:center;gap:.35rem;cursor:pointer}
.zk-lay input{width:auto;padding:0;margin:0}
.zk-att{position:absolute;right:0;bottom:0;z-index:5;background:#14202ecc;color:var(--mute);font-size:.7rem;padding:1px 5px}.zk-att a{color:var(--mute)}
.zkl{list-style:none;margin:.7rem 0 0;padding:0;font-size:.9rem}.zkl li{display:flex;gap:.5rem;margin:.25rem 0}.zkl i{flex:none;width:1.1rem;height:.35rem;margin-top:.5rem;border-radius:2px}
.zk-base{filter:invert(1) hue-rotate(180deg) brightness(.92) contrast(.92) saturate(.7);mix-blend-mode:lighten}.zk-rail{filter:brightness(1.7) saturate(1.3)}
.zk-lbl{fill:#fff;stroke:#0c1520}.zk-stadt{font:500 11.5px "Segoe UI",Arial,sans-serif;fill:#fff;paint-order:stroke;stroke:#0c1520;stroke-width:3px;stroke-linejoin:round}
.zk-ctl button{background:var(--panel);color:#fff;border:1px solid var(--line)}
.zk-lay{background:#14202ecc;color:var(--ink)}.zk-att{background:#14202ecc;color:var(--mute)}.zk-att a{color:var(--mute)}
