/* Rotpunkt, die Bauzaun-Karte des SPD-Unterbezirks Hersfeld-Rotenburg
   Die Karte ist die Bühne, die Bedienelemente liegen als Glasflächen darüber.
   Rot ist Signal (Marke, Hauptaktion), die Statusfarben tragen Bedeutung: in Pins,
   Filtern und Kennzeichen immer dieselbe Farbe. */

:root {
  --rot:#E3000F; --rot2:#b80000;
  --ink:#1b2130; --text:#1e2330; --muted:#6b7280; --faint:#9aa1ad;
  --line:rgba(27,33,48,.10); --line2:rgba(27,33,48,.18);
  --bg2:#f3f4f7; --border:#e4e6ea;
  --glass:rgba(255,255,255,.86); --glass-strong:rgba(255,255,255,.96);
  --sw:316px; --rw:390px; --gap:14px; --hd:56px;
  --radius:12px; --radius-lg:20px;
  --shadow:0 12px 32px rgba(17,24,39,.16), 0 2px 6px rgba(17,24,39,.08);
  --shadow-sm:0 2px 8px rgba(17,24,39,.10);
  --safe-bottom:env(safe-area-inset-bottom, 0px);
  --safe-top:env(safe-area-inset-top, 0px);
  --ok:#1f9d55; --err:#c81e3a;
}
* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
html, body { height:100%; font-family:'Roboto',sans-serif; color:var(--text); background:#9aa5b1; overflow:hidden; touch-action:manipulation; }
button, input, select, textarea { font-family:inherit; font-size:inherit; }
button { cursor:pointer; }
.mono { font-family:'Roboto Mono', Menlo, Consolas, monospace; font-size:.9em; letter-spacing:.02em; }
.muted { color:var(--muted); }
.noscript-box { padding:40px; background:#fff; }
.app { display:none; }
.app.on { display:block; }
.adm { display:none !important; }
body.admin .adm { display:flex !important; }

/* Glas */
.sidebar, .mob-hd, .sh, .dp, .ed, .pick-banner { background:var(--glass); -webkit-backdrop-filter:blur(18px) saturate(1.3); backdrop-filter:blur(18px) saturate(1.3); }

/* KARTE */
#map { position:fixed; inset:0; z-index:0; touch-action:none; }
.map-unavailable { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:30px; text-align:center; background:#dfe3e8; color:var(--ink); }
.map-unavailable span { color:var(--muted); font-size:.85rem; max-width:420px; }
.mapboxgl-ctrl-top-right { top:var(--gap)!important; right:var(--gap)!important; transition:right .25s; }
.mapboxgl-ctrl-bottom-right { bottom:var(--gap)!important; right:var(--gap)!important; transition:right .25s; }
body.panel-open .mapboxgl-ctrl-top-right, body.panel-open .mapboxgl-ctrl-bottom-right { right:calc(var(--rw) + var(--gap) * 2)!important; }
.mapboxgl-ctrl-group { border-radius:12px!important; box-shadow:var(--shadow-sm)!important; overflow:hidden; }
.mapboxgl-ctrl-group button { width:36px!important; height:36px!important; }
.mapboxgl-ctrl-attrib.mapboxgl-compact { border-radius:12px; font-size:10px; }
.map-ctl-btn { display:flex; align-items:center; justify-content:center; }
.map-ctl-btn svg { width:18px; height:18px; stroke:#333; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.pin-tip .mapboxgl-popup-content { padding:7px 10px; border-radius:10px; box-shadow:var(--shadow-sm); font-size:.74rem; }
.pin-tip .mapboxgl-popup-tip { display:none; }
.pin-tip-k { display:block; font-weight:700; color:var(--ink); }
.pin-tip-t { display:block; color:var(--muted); }
.pick-marker { width:30px; height:42px; background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 54'><path d='M20 2C11.2 2 4 9.2 4 18c0 12.5 16 30 16 30S36 30.5 36 18C36 9.2 28.8 2 20 2z' fill='%23E3000F' stroke='white' stroke-width='3'/><circle cx='20' cy='17.5' r='6' fill='white'/></svg>") no-repeat center/contain; cursor:grab; filter:drop-shadow(0 3px 4px rgba(0,0,0,.4)); }
.pick-cross { display:none; position:fixed; left:50%; top:50%; width:34px; height:34px; margin:-17px 0 0 -17px; z-index:150; pointer-events:none; }
.pick-cross::before, .pick-cross::after { content:''; position:absolute; background:rgba(255,255,255,.95); box-shadow:0 0 0 1px rgba(0,0,0,.35); }
.pick-cross::before { left:16px; top:0; width:2px; height:34px; }
.pick-cross::after { top:16px; left:0; height:2px; width:34px; }
body.picking .pick-cross { display:block; }
.pick-banner { display:none; position:fixed; top:var(--gap); left:50%; transform:translateX(-50%); z-index:400; width:min(560px, calc(100vw - 28px)); padding:10px 14px; border-radius:var(--radius); box-shadow:var(--shadow); border:1px solid rgba(255,255,255,.7); font-size:.8rem; }
body.picking .pick-banner { display:block; }
.pick-txt { line-height:1.4; margin-bottom:8px; }
.pick-txt .mono { display:block; color:var(--muted); margin-top:2px; }
.pick-actions { display:flex; gap:8px; flex-wrap:wrap; }
body.picking .ed, body.picking .dp, body.picking .sidebar { visibility:hidden; }
body.picking .mapboxgl-ctrl-top-right, body.picking .mapboxgl-ctrl-bottom-right { right:var(--gap)!important; }

/* MELDUNG */
.toast { position:fixed; top:calc(var(--gap) + var(--safe-top)); left:50%; transform:translate(-50%, -20px); z-index:9999; max-width:min(92vw, 560px); padding:8px 16px; border-radius:999px; font-size:.78rem; font-weight:600; color:#fff; background:#333; box-shadow:0 4px 16px rgba(0,0,0,.25); opacity:0; pointer-events:none; transition:opacity .25s, transform .25s; text-align:center; }
.toast.show { opacity:1; transform:translate(-50%, 0); }
.toast.ok { background:var(--ok); } .toast.warn { background:#b7791f; } .toast.error { background:var(--err); }
body.picking .toast { top:120px; }

/* ZUGANG */
.gate { display:none; position:fixed; inset:0; z-index:5000; background:radial-gradient(1200px 700px at 30% 20%, #ff5a5f 0%, var(--rot) 45%, #8f000a 100%); padding:20px; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.gate.on { display:flex; }
.gate-c { margin:auto; width:min(400px, 100%); background:#fff; border-radius:var(--radius-lg); padding:28px 26px 20px; box-shadow:0 30px 60px rgba(0,0,0,.35); text-align:center; }
.gate-logo { display:block; width:96px; height:96px; margin:0 auto 16px; border-radius:20px; box-shadow:0 8px 20px rgba(227,0,15,.25); }
.gate-sub { color:var(--muted); font-size:.82rem; margin:4px 0 0; line-height:1.45; }
.gate-claim { font-family:'Roboto Slab',serif; font-weight:700; font-size:.9rem; color:var(--rot); margin:6px 0 18px; }
.gate-label { display:block; text-align:left; font-size:.72rem; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.06em; margin-bottom:5px; }
.gate .fi { font-size:1.05rem; padding:12px 14px; }
.gate-err { min-height:1.2em; color:var(--err); font-size:.8rem; font-weight:600; margin:8px 0 6px; }
.gate-err.neutral { color:var(--ok); }
.gate-hint { color:var(--faint); font-size:.72rem; margin-top:14px; line-height:1.45; }
.gate-legal { margin-top:14px; font-size:.7rem; color:var(--faint); }
.gate-legal button { background:none; border:0; color:var(--muted); font-size:.7rem; padding:4px 6px; }
.gate-legal button:hover { color:var(--rot); }

/* FORMULAR-GRUNDLAGEN */
.fi { width:100%; padding:9px 11px; border:1.5px solid var(--border); border-radius:10px; background:#fff; color:var(--text); font-size:.9rem; outline:none; transition:border-color .15s, box-shadow .15s; -webkit-appearance:none; appearance:none; }
.fi:focus { border-color:var(--rot); box-shadow:0 0 0 3px rgba(227,0,15,.12); }
textarea.fi { resize:vertical; line-height:1.4; }
select.fi { background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'><path d='M6 9l6 6 6-6'/></svg>"); background-repeat:no-repeat; background-position:right 10px center; background-size:16px; padding-right:32px; }
.fr { margin-bottom:10px; }
.fr label { display:block; font-size:.7rem; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; margin-bottom:4px; }
.fr-2 { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.fsec { font-family:'Roboto Slab',serif; font-weight:700; font-size:.82rem; color:var(--ink); margin:18px 0 8px; padding-bottom:5px; border-bottom:1px solid var(--line); }
.fsec:first-child { margin-top:0; }
.btn { display:inline-flex; align-items:center; justify-content:center; gap:7px; padding:9px 14px; border-radius:10px; border:1.5px solid var(--line2); background:#fff; color:var(--ink); font-size:.82rem; font-weight:600; text-decoration:none; transition:background .15s, border-color .15s, transform .1s; white-space:nowrap; }
.btn:hover { border-color:var(--ink); }
.btn:active { transform:scale(.98); }
.btn:disabled { opacity:.5; cursor:default; }
.btn svg { width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; }
.btn-p { background:var(--rot); border-color:var(--rot); color:#fff; }
.btn-p:hover { background:var(--rot2); border-color:var(--rot2); }
.btn-big { width:100%; padding:12px 16px; font-size:.95rem; }
.btn-sm { padding:6px 11px; font-size:.76rem; }
.btn-danger { color:var(--err); border-color:rgba(200,30,58,.4); margin-left:auto; }
.btn-danger:hover { background:rgba(200,30,58,.06); border-color:var(--err); }
.btn-edit { background:var(--ink); border-color:var(--ink); color:#fff; }
.x { width:34px; height:34px; border:0; background:var(--bg2); border-radius:50%; font-size:1.3rem; line-height:1; color:var(--muted); display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.x:hover { background:var(--line2); color:var(--ink); }
.lnk { background:none; border:0; color:var(--muted); font-size:.7rem; font-weight:600; padding:2px 6px; border-radius:6px; }
.lnk:hover { color:var(--ink); background:var(--line); }

/* Schalter */
.sw { display:flex; align-items:center; gap:9px; font-size:.78rem; color:var(--text); cursor:pointer; padding:6px 0; user-select:none; }
.sw input { position:absolute; opacity:0; width:0; height:0; }
.sw span { width:34px; height:20px; border-radius:999px; background:#cfd3da; position:relative; flex-shrink:0; transition:background .2s; }
.sw span::after { content:''; position:absolute; top:2px; left:2px; width:16px; height:16px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.3); transition:transform .2s; }
.sw input:checked + span { background:var(--ok); }
.sw input:checked + span::after { transform:translateX(14px); }
.sw-big { font-size:.9rem; font-weight:600; padding:8px 0; }
.sw-big span { width:44px; height:26px; } .sw-big span::after { width:22px; height:22px; } .sw-big input:checked + span::after { transform:translateX(18px); }

/* Kennzeichen */
.tg { display:inline-block; font-size:.66rem; font-weight:600; padding:2px 7px; border-radius:999px; background:var(--bg2); color:var(--muted); font-style:normal; margin:2px 4px 0 0; white-space:nowrap; }
.tg-auf { background:rgba(31,157,85,.14); color:#15713d; }
.tg-ok { background:rgba(31,157,85,.14); color:#15713d; }
.tg-foto { background:rgba(47,128,237,.12); color:#1d5fb8; }
.tg-grob { background:rgba(245,158,11,.16); color:#8a5a00; }
.tg-aufbau { background:rgba(27,33,48,.08); color:var(--ink); }
.badge { display:inline-flex; align-items:center; gap:6px; font-size:.7rem; font-weight:700; padding:4px 10px 4px 8px; border-radius:999px; background:var(--bg2); background:color-mix(in srgb, var(--c) 14%, #fff); color:var(--c); white-space:nowrap; flex-shrink:0; }
.badge i { width:9px; height:9px; border-radius:50%; background:var(--c); }

/* SEITENLEISTE */
.sidebar { position:fixed; top:var(--gap); left:var(--gap); bottom:var(--gap); width:var(--sw); display:flex; flex-direction:column; z-index:200; border-radius:var(--radius-lg); border:1px solid rgba(255,255,255,.7); box-shadow:var(--shadow); overflow:hidden; }
.sb-hd { padding:14px 14px 10px; display:flex; align-items:center; gap:10px; border-bottom:1px solid var(--line); }
.sb-logo, .mob-logo { width:44px; height:44px; flex-shrink:0; border-radius:10px; display:block; object-fit:cover; }
.sb-ttl { flex:1; min-width:0; }
.sb-ttl h1 { font-family:'Roboto Slab',serif; font-size:1.05rem; font-weight:900; color:var(--ink); line-height:1.15; }
.sb-ttl small { display:block; font-size:.68rem; color:var(--muted); margin-top:2px; }
.role { font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); background:var(--bg2); padding:3px 7px; border-radius:6px; }
body.admin .role { background:var(--ink); color:#fff; }
.sb-search, .sh-search { padding:10px 14px 6px; }
.sb-search .fi, .sh-search .fi { padding:8px 11px; font-size:.84rem; border-radius:999px; }
.sb-body, .sh-body { overflow-y:auto; flex:1; -webkit-overflow-scrolling:touch; scrollbar-width:thin; scrollbar-color:rgba(27,33,48,.18) transparent; }
.sb-body::-webkit-scrollbar { width:5px; } .sb-body::-webkit-scrollbar-thumb { background:rgba(27,33,48,.18); border-radius:3px; }
.sec { padding:10px 14px; }
.sec + .sec { border-top:1px solid var(--line); }
.sec-hd { display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; }
.sec-hd h3 { font-family:'Roboto Slab',serif; font-size:.78rem; font-weight:700; color:var(--ink); }
.sec-list { padding:6px 8px 14px; }
.stats { display:grid; grid-template-columns:repeat(4, 1fr); gap:6px; padding:10px 14px 4px; }
.stats div { background:rgba(255,255,255,.7); border:1px solid var(--line); border-radius:10px; padding:7px 4px; text-align:center; }
.stats b { display:block; font-family:'Roboto Slab',serif; font-size:1.05rem; color:var(--ink); line-height:1.1; }
.stats span { font-size:.6rem; color:var(--muted); text-transform:uppercase; letter-spacing:.04em; }
.stats .st-gen b { color:var(--ok); }
.stats-hint { font-size:.68rem; color:#8a5a00; padding:4px 14px 6px; }
.chips { display:flex; flex-wrap:wrap; gap:5px; margin-bottom:4px; }
.chip { display:inline-flex; align-items:center; gap:6px; padding:4px 9px 4px 7px; border-radius:999px; border:1.5px solid var(--line2); background:#fff; font-size:.7rem; font-weight:600; color:var(--muted); transition:all .15s; }
.chip i { width:9px; height:9px; border-radius:50%; background:var(--c); opacity:.45; }
.chip em { font-style:normal; font-weight:700; font-size:.64rem; color:var(--faint); }
.chip.on { background:var(--bg2); background:color-mix(in srgb, var(--c) 12%, #fff); border-color:var(--c); color:var(--ink); }
.chip.on i { opacity:1; } .chip.on em { color:var(--c); }
.empty { padding:24px 14px; text-align:center; color:var(--muted); font-size:.8rem; }
.grp { margin-bottom:4px; }
.grp-hd { width:100%; display:flex; align-items:center; gap:7px; padding:8px 8px; background:none; border:0; border-radius:8px; text-align:left; }
.grp-hd:hover { background:rgba(27,33,48,.05); }
.grp-arrow { width:0; height:0; border-left:5px solid transparent; border-right:5px solid transparent; border-top:6px solid var(--muted); transition:transform .15s; }
.grp.c .grp-arrow { transform:rotate(-90deg); }
.grp-name { font-family:'Roboto Slab',serif; font-weight:700; font-size:.8rem; color:var(--ink); flex:1; }
.grp-cnt { font-size:.68rem; color:var(--muted); } .grp-cnt b { color:var(--ok); font-weight:700; }
.grp.c .grp-body { display:none; }
.item { width:100%; display:flex; align-items:flex-start; gap:9px; padding:8px 8px 8px 10px; background:none; border:0; border-radius:10px; text-align:left; transition:background .12s; }
.item:hover { background:rgba(255,255,255,.75); }
.item.sel { background:#fff; box-shadow:inset 3px 0 0 var(--rot), var(--shadow-sm); }
.item .dot { width:11px; height:11px; border-radius:50%; flex-shrink:0; margin-top:4px; box-shadow:0 0 0 2px #fff; }
.it-main { flex:1; min-width:0; }
.it-t { display:block; font-weight:700; font-size:.82rem; color:var(--ink); }
.it-s { display:block; font-size:.72rem; color:var(--muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.it-tags { display:block; }
.it-img { width:46px; height:46px; border-radius:8px; object-fit:cover; flex-shrink:0; border:1px solid var(--line); }
.sb-admin { padding:10px 14px; border-top:1px solid var(--line); gap:8px; }
.sb-admin .btn-p { flex:1; }
.sb-footer, .sh-footer { padding:8px 14px calc(8px + var(--safe-bottom)); border-top:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; gap:8px; font-size:.64rem; color:var(--faint); }
.sb-ver { white-space:nowrap; }
.sb-links { display:flex; align-items:center; gap:4px; }
.sb-links button { background:none; border:0; color:var(--muted); font-size:.66rem; padding:3px 4px; border-radius:5px; }
.sb-links button:hover { color:var(--rot); }

/* MOBILER KOPF UND BLATT */
.mob-hd, .sh, .sh-ov { display:none; }
.mob-hd { position:fixed; top:0; left:0; right:0; height:calc(var(--hd) + var(--safe-top)); padding:var(--safe-top) 10px 0 12px; z-index:300; align-items:center; gap:10px; box-shadow:0 2px 10px rgba(0,0,0,.12); }
.mob-logo { width:36px; height:36px; }
.mob-ttl { flex:1; min-width:0; font-family:'Roboto Slab',serif; font-weight:900; font-size:1rem; color:var(--ink); line-height:1.1; }
.mob-ttl small { display:block; font-family:'Roboto',sans-serif; font-weight:400; font-size:.64rem; color:var(--muted); margin-top:1px; }
.mob-btn { padding:8px 12px; border-radius:999px; border:1.5px solid var(--line2); background:#fff; font-size:.76rem; font-weight:700; color:var(--ink); }
.mob-btn.adm { background:var(--rot); border-color:var(--rot); color:#fff; }
.sh-ov { position:fixed; inset:0; z-index:390; background:rgba(0,0,0,.3); }
.sh { position:fixed; left:0; right:0; bottom:0; height:min(78vh, 680px); z-index:395; border-radius:var(--radius-lg) var(--radius-lg) 0 0; flex-direction:column; box-shadow:0 -10px 30px rgba(0,0,0,.2); transform:translateY(105%); transition:transform .28s cubic-bezier(.2,.8,.2,1); }
body.sheet-open .sh { transform:none; }
body.sheet-open .sh-ov { display:block; }
.sh-hd { padding:8px 12px 6px 16px; display:flex; align-items:center; gap:8px; position:relative; }
.sh-handle { position:absolute; top:6px; left:50%; width:38px; height:4px; margin-left:-19px; border-radius:2px; background:#c9ccd3; }
.sh-ttl { flex:1; font-family:'Roboto Slab',serif; font-weight:900; font-size:1rem; color:var(--ink); padding-top:8px; }
.sh-cnt { font-size:.7rem; font-weight:700; color:var(--muted); background:var(--bg2); border-radius:999px; padding:2px 8px; margin-left:4px; }
.sh .x { margin-top:6px; }

/* DETAIL */
.dp, .ed { position:fixed; top:var(--gap); right:var(--gap); bottom:var(--gap); width:var(--rw); z-index:250; border-radius:var(--radius-lg); border:1px solid rgba(255,255,255,.7); box-shadow:var(--shadow); display:none; flex-direction:column; overflow:hidden; background:var(--glass-strong); }
.dp.open, .ed.open { display:flex; }
.dp-bar { display:flex; justify-content:flex-end; padding:8px 10px 0; position:relative; }
.dp-handle { display:none; }
.dp-content { overflow-y:auto; flex:1; -webkit-overflow-scrolling:touch; }
.dp-gal { display:flex; gap:6px; overflow-x:auto; padding:4px 14px 8px; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; }
.dp-gal-i { flex:0 0 auto; width:150px; height:112px; border:0; padding:0; border-radius:10px; overflow:hidden; background:var(--bg2); scroll-snap-align:start; }
.dp-gal-i.first { width:260px; height:180px; }
.dp-gal-i img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .2s; }
.dp-gal-i:hover img { transform:scale(1.03); }
.dp-nofoto { margin:4px 14px 8px; height:110px; border-radius:10px; background:var(--bg2); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; color:var(--faint); font-size:.74rem; }
.dp-nofoto svg { width:28px; height:28px; stroke:currentColor; fill:none; stroke-width:1.6; }
.dp-body { padding:6px 16px 18px; }
.dp-head { display:flex; align-items:center; justify-content:space-between; gap:10px; }
.dp-title { font-family:'Roboto Slab',serif; font-weight:900; font-size:1.35rem; color:var(--ink); }
.dp-place { font-size:.86rem; color:var(--muted); margin:2px 0 12px; }
.dp-rows { display:flex; flex-direction:column; gap:7px; }
.dp-row { display:grid; grid-template-columns:96px 1fr; gap:8px; font-size:.82rem; align-items:baseline; }
.dp-k { font-size:.66rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--faint); padding-top:2px; }
.dp-v { color:var(--text); line-height:1.4; }
.dp-hint { margin-top:12px; padding:9px 11px; border-radius:10px; background:var(--bg2); background:color-mix(in srgb, var(--c) 9%, #fff); border-left:3px solid var(--c); font-size:.74rem; color:var(--text); line-height:1.45; }
.dp-note { margin-top:10px; padding:9px 11px; border-radius:10px; background:#fff8dc; font-size:.78rem; line-height:1.45; }
.dp-note b { display:block; font-size:.64rem; text-transform:uppercase; letter-spacing:.05em; color:#8a5a00; margin-bottom:3px; }
.dp-actions { display:flex; flex-wrap:wrap; gap:7px; margin-top:16px; }
.dp-actions .btn { padding:8px 12px; font-size:.78rem; }
.dp-actions .btn-edit { width:100%; margin-top:4px; }
.dp-meta { margin-top:12px; font-size:.66rem; color:var(--faint); }

/* BEARBEITEN */
.ed-hd { display:flex; align-items:center; justify-content:space-between; padding:14px 14px 10px 18px; border-bottom:1px solid var(--line); }
.ed-hd h2 { font-family:'Roboto Slab',serif; font-weight:900; font-size:1.05rem; color:var(--ink); }
.ed-body { overflow-y:auto; flex:1; padding:14px 18px calc(18px + var(--safe-bottom)); -webkit-overflow-scrolling:touch; }
.ed-pos { font-size:.84rem; margin-bottom:8px; min-height:1.4em; }
.ed-posbtns, .ed-fotobtns { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:8px; }
.ed-posbtns .btn, .ed-fotobtns .btn { flex:1; min-width:150px; }
.gps-box { background:#fff; border:1.5px solid var(--line2); border-radius:10px; padding:10px 12px; margin-bottom:8px; }
.gps-info { font-size:.78rem; line-height:1.45; margin-bottom:8px; }
.gps-btns { display:flex; gap:8px; flex-wrap:wrap; }
.ed-manual { margin-top:4px; }
.ed-manual summary { font-size:.74rem; color:var(--muted); cursor:pointer; padding:4px 0 8px; }
.ed-prog { font-size:.76rem; font-weight:600; color:var(--rot); padding:6px 0; }
.ed-fotos { display:grid; grid-template-columns:repeat(auto-fill, minmax(120px, 1fr)); gap:8px; }
.ed-nofoto { grid-column:1/-1; font-size:.74rem; color:var(--muted); background:var(--bg2); border-radius:10px; padding:10px 12px; line-height:1.45; }
.ed-foto { border-radius:10px; overflow:hidden; background:var(--bg2); border:1px solid var(--line); }
.ed-foto img { width:100%; height:92px; object-fit:cover; display:block; }
.ed-foto-b { display:flex; justify-content:space-between; align-items:center; padding:4px 6px; gap:4px; }
.ed-foto-b button { background:none; border:0; font-size:.66rem; font-weight:700; color:var(--muted); padding:3px 4px; }
.ed-foto-b button.del { color:var(--err); }
.ed-foto-first { font-size:.62rem; font-weight:700; color:var(--ok); }
.ed-actions { display:flex; gap:8px; flex-wrap:wrap; margin-top:20px; align-items:center; }
.ed-actions .btn-big { width:auto; flex:1; }
.ed-msg { min-height:1.2em; margin-top:8px; font-size:.76rem; font-weight:600; color:var(--err); }

/* LIGHTBOX */
.lb { display:none; position:fixed; inset:0; z-index:6000; background:rgba(10,12,18,.94); align-items:center; justify-content:center; }
.lb.on { display:flex; }
.lb img { max-width:96vw; max-height:88vh; object-fit:contain; border-radius:6px; box-shadow:0 10px 40px rgba(0,0,0,.5); }
.lb-x { position:absolute; top:calc(14px + var(--safe-top)); right:14px; width:42px; height:42px; border-radius:50%; border:0; background:rgba(255,255,255,.15); color:#fff; font-size:1.6rem; }
.lb-nav { position:absolute; top:50%; transform:translateY(-50%); width:46px; height:60px; border:0; background:rgba(255,255,255,.12); color:#fff; font-size:2rem; border-radius:10px; }
.lb-prev { left:10px; } .lb-next { right:10px; }
.lb-cnt { position:absolute; bottom:calc(16px + var(--safe-bottom)); left:50%; transform:translateX(-50%); color:#fff; font-size:.78rem; background:rgba(255,255,255,.15); padding:4px 12px; border-radius:999px; }

/* EINSTELLUNGEN, IMPRESSUM */
.set-ov, .legal-ov { display:none; position:fixed; inset:0; z-index:7000; background:rgba(17,24,39,.55); padding:16px; overflow-y:auto; -webkit-overflow-scrolling:touch; }
.set-ov.on, .legal-ov.on { display:flex; }
.set-m, .legal-m { margin:auto; width:min(560px, 100%); max-height:calc(100% - 32px); background:#fff; border-radius:var(--radius-lg); box-shadow:var(--shadow); display:flex; flex-direction:column; overflow:hidden; }
.set-hd, .legal-hd { display:flex; align-items:center; justify-content:space-between; padding:14px 14px 10px 20px; border-bottom:1px solid var(--line); }
.set-hd h2, .legal-hd h2 { font-family:'Roboto Slab',serif; font-weight:900; font-size:1.1rem; color:var(--ink); }
.set-bd, .legal-bd { overflow-y:auto; padding:14px 20px 20px; font-size:.84rem; line-height:1.5; }
.set-m { width:min(640px, 100%); }
.set-tabs { display:flex; gap:4px; padding:8px 12px 0; border-bottom:1px solid var(--line); overflow-x:auto; }
.set-tab { border:0; background:none; padding:9px 12px; font-size:.8rem; font-weight:700; color:var(--muted); border-bottom:2px solid transparent; margin-bottom:-1px; white-space:nowrap; }
.set-tab.on { color:var(--rot); border-bottom-color:var(--rot); }
.set-tab:hover { color:var(--ink); }
.sp { display:none; } .sp.on { display:block; }
.set-row { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin:6px 0; }
.set-row .fi { flex:1; min-width:160px; }
.hint { font-size:.68rem; color:var(--faint); margin-top:3px; }
.sw-sm { font-size:.72rem; padding:2px 0; }
.sw-sm span { width:30px; height:18px; } .sw-sm span::after { width:14px; height:14px; } .sw-sm input:checked + span::after { transform:translateX(12px); }
.st-row { display:flex; gap:10px; align-items:flex-start; padding:10px 0; border-bottom:1px solid var(--line); }
.st-row input[type="color"], .set-row input[type="color"] { width:38px; height:38px; border:1.5px solid var(--border); border-radius:10px; padding:2px; background:#fff; cursor:pointer; flex-shrink:0; }
.st-fields { flex:1; min-width:0; display:flex; flex-direction:column; gap:6px; }
.st-fields .fi { padding:7px 10px; font-size:.82rem; }
.st-tools { display:flex; flex-direction:column; align-items:flex-end; gap:2px; flex-shrink:0; }
.st-use { font-size:.66rem; color:var(--faint); white-space:nowrap; }
.st-tools .lnk { font-size:.72rem; }
.st-tools .lnk:disabled { opacity:.35; cursor:default; }
.st-del { color:var(--err); }
.sh-set { font-size:.7rem; padding:7px 10px; margin-top:6px; }
.ab-nums { display:flex; gap:10px; flex-wrap:wrap; }
.ab-nums label, .ab-new-el { display:flex; align-items:center; gap:6px; font-size:.72rem; color:var(--muted); }
.ab-nums .fi, .ab-new-el .fi { width:70px; padding:6px 8px; }
.set-info { font-size:.8rem; color:var(--muted); }
.set-box { background:var(--bg2); border-radius:10px; padding:12px; margin-bottom:10px; }
.set-box h4 { font-size:.8rem; margin-bottom:8px; color:var(--ink); }
.set-msg { min-height:1.2em; font-size:.78rem; font-weight:600; color:var(--ink); margin:6px 0; }
.set-txt { font-size:.76rem; color:var(--muted); margin:8px 0; }
.set-txt code, .legal-bd code { font-family:'Roboto Mono', Menlo, monospace; font-size:.9em; background:var(--bg2); padding:1px 5px; border-radius:4px; }
.legal-bd h3 { font-family:'Roboto Slab',serif; font-size:.9rem; margin:14px 0 4px; color:var(--ink); }
.legal-bd h3:first-child { margin-top:0; }
.legal-bd p { margin-bottom:8px; }
.legal-bd a { color:var(--rot); }
.legal-ver { color:var(--faint); font-size:.72rem; margin-top:14px; }

/* MOBIL */
@media (max-width: 859px) {
  .sidebar { display:none; }
  .mob-hd { display:flex; }
  .sh { display:flex; }
  .mapboxgl-ctrl-top-right { top:calc(var(--hd) + var(--safe-top) + 10px)!important; right:10px!important; }
  .mapboxgl-ctrl-bottom-right { bottom:calc(10px + var(--safe-bottom))!important; right:10px!important; }
  body.panel-open .mapboxgl-ctrl-top-right { right:10px!important; }
  body.panel-open .mapboxgl-ctrl-bottom-right { display:none; }
  .pick-banner { top:calc(var(--hd) + var(--safe-top) + 8px); }
  body.picking .mob-hd { visibility:hidden; }
  .toast { top:calc(var(--hd) + var(--safe-top) + 8px); }
  .dp { top:auto; left:0; right:0; bottom:0; width:auto; max-height:72vh; border-radius:var(--radius-lg) var(--radius-lg) 0 0; border:0; }
  .dp-bar { padding:6px 10px 0; justify-content:flex-end; }
  .dp-handle { display:block; position:absolute; top:6px; left:50%; width:38px; height:4px; margin-left:-19px; border-radius:2px; background:#c9ccd3; }
  .dp .x { width:30px; height:30px; font-size:1.1rem; }
  .dp-content { padding-bottom:var(--safe-bottom); }
  .dp-gal-i.first { width:200px; height:140px; }
  .ed { top:0; left:0; right:0; bottom:0; width:auto; border-radius:0; border:0; z-index:450; }
  .ed-hd { padding-top:calc(12px + var(--safe-top)); }
}
@media (max-width: 380px) {
  .fr-2 { grid-template-columns:1fr; gap:0; }
  .mob-ttl small { display:none; }
}
@media (prefers-reduced-motion: reduce) {
  .sh, .toast, .item, .btn { transition:none; }
}

/* WORTMARKE: "Rotpunkt", das o ist der rote Punkt */
.wm { display:inline-flex; align-items:center; font-family:'Roboto Slab',serif; font-weight:900; color:var(--ink); letter-spacing:-.01em; line-height:1; }
.wm-txt { display:inline-block; white-space:nowrap; }
.wm-dot { display:inline-block; width:.58em; height:.58em; margin:0 .035em; border-radius:50%; background:var(--rot); vertical-align:-.015em; box-shadow:inset 0 0 0 .07em var(--rot), inset 0 0 0 .13em rgba(255,255,255,.95); }
.wm-gate { display:flex; justify-content:center; font-size:2.1rem; margin:4px 0 2px; }
.wm-sb { font-size:1.15rem; }
.wm-mob { font-size:1.05rem; }
.sw-note { display:block; font-size:.66rem; font-weight:400; color:var(--muted); margin-top:1px; }
.btn-sub { font-weight:500; opacity:.85; font-size:.72rem; }

/* FORTSCHRITT */
.prog { display:flex; align-items:center; gap:12px; padding:12px 14px 6px; }
.ring { width:60px; height:60px; flex-shrink:0; transform:rotate(-90deg); }
.ring-bg { fill:none; stroke:rgba(27,33,48,.12); stroke-width:6; }
.ring-fg { fill:none; stroke:var(--ok); stroke-width:6; stroke-linecap:round; transition:stroke-dasharray .6s; }
.ring text { transform:rotate(90deg); transform-origin:30px 30px; font-family:'Roboto Slab',serif; font-weight:700; font-size:13px; fill:var(--ink); }
.prog-txt { font-size:.84rem; color:var(--text); line-height:1.3; }
.prog-txt b { font-family:'Roboto Slab',serif; font-size:1rem; color:var(--ink); }
.prog-txt small { display:block; font-size:.68rem; color:var(--rot); font-weight:600; margin-top:3px; }
.prog-sub { display:block; font-size:.66rem; color:var(--muted); }
.grp-bar { height:3px; margin:0 8px 2px 24px; border-radius:2px; background:rgba(27,33,48,.08); overflow:hidden; }
.grp-bar i { display:block; height:100%; background:var(--ok); border-radius:2px; transition:width .5s; }
.crown { display:inline-flex; margin-left:6px; vertical-align:-2px; color:var(--rot); }
.crown svg { width:16px; height:16px; fill:currentColor; }
.near-hd { padding:8px 10px 6px; }
.near-hd b { display:block; font-family:'Roboto Slab',serif; font-size:.8rem; color:var(--ink); }
.near-hd span { font-size:.68rem; color:var(--muted); }
.it-dist { float:right; font-style:normal; font-weight:700; font-size:.7rem; color:var(--rot); background:rgba(227,0,15,.08); padding:1px 7px; border-radius:999px; margin-left:6px; }

/* START-CHOREOGRAFIE */
.kick { position:fixed; left:calc(var(--sw) + var(--gap) * 2); right:var(--gap); top:0; bottom:0; z-index:180; display:flex; flex-direction:column; align-items:center; justify-content:center; padding-bottom:10vh; text-align:center; pointer-events:none; opacity:0; transition:opacity .5s; color:#fff; text-shadow:0 2px 14px rgba(0,0,0,.55), 0 0 2px rgba(0,0,0,.6); }
.kick::before { content:''; position:absolute; left:50%; top:50%; width:min(90vw, 760px); height:min(90vh, 560px); transform:translate(-50%, -56%); background:radial-gradient(closest-side, rgba(10,14,24,.55), rgba(10,14,24,0)); z-index:-1; }
.kick.on { opacity:1; }
.kick-name { font-size:4rem; color:#fff; margin-top:6px; opacity:0; transform:translateY(12px); transition:opacity .6s, transform .6s; }
.kick.on .kick-name { opacity:1; transform:none; transition-delay:.9s; }
.kick-dot { box-shadow:0 0 0 .07em #fff, 0 .15em .5em rgba(0,0,0,.45); transform:scale(5); opacity:0; }
.kick.on .kick-dot { animation:dotDrop .8s cubic-bezier(.2,.9,.3,1.25) 1.4s forwards; }
@keyframes dotDrop { 0% { transform:scale(5); opacity:0; } 40% { opacity:1; } 100% { transform:scale(1); opacity:1; } }
.kick-line { font-size:1.05rem; font-weight:500; opacity:0; transition:opacity .6s; margin-top:2px; }
.kick.on .kick-line { opacity:1; transition-delay:2.2s; }
.kick-stats { display:flex; gap:26px; margin-top:22px; opacity:0; transition:opacity .6s; }
.kick.on .kick-stats { opacity:1; transition-delay:2.6s; }
.kick-stats b { display:block; font-family:'Roboto Slab',serif; font-weight:900; font-size:2rem; line-height:1; }
.kick-stats span { font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; font-weight:600; }
body.intro .mapboxgl-ctrl-top-right, body.intro .mapboxgl-ctrl-bottom-right { opacity:0; transition:opacity .4s; }
@media (max-width: 859px) {
  .kick { left:0; right:0; top:var(--hd); padding:0 20px; }
  .kick-name { font-size:3rem; }
  .kick-stats { gap:18px; }
  .kick-stats b { font-size:1.6rem; }
}
@media (prefers-reduced-motion: reduce) {
  .kick, .kick-name, .kick-line, .kick-stats, .ring-fg, .grp-bar i { transition:none; }
  .kick.on .kick-dot { animation:none; transform:none; opacity:1; }
}
