/* Jagdkarte v3 – Design angelehnt an Revier-Apps: ruhige weisse Flächen, Waldgrün, Orange als Aktionsfarbe */
:root{
  --green:#20462f; --green2:#2f6b45; --green-l:#e7efe9; --orange:#f08a24; --red:#c62828; --blue:#1d6fd6;
  --fg:#1b221e; --muted:#66716a; --line:#dfe5e1; --card:#ffffff; --bg:#f4f6f4;
  --r:16px; --sh:0 4px 18px rgba(16,32,22,.18);
  --safe-b:env(safe-area-inset-bottom,0px); --safe-t:env(safe-area-inset-top,0px);
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;height:100%;font:15px/1.35 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--fg);background:var(--bg);overscroll-behavior:none;-webkit-tap-highlight-color:transparent}
#map{position:fixed;inset:0;background:#e9ece8}
button{font:inherit;border:1px solid var(--line);background:#fff;color:var(--fg);border-radius:12px;padding:10px 14px;cursor:pointer;touch-action:manipulation}
button:active{transform:scale(.98)}
button.primary{background:var(--green);color:#fff;border-color:var(--green)}
button.go{background:#2e7d32;color:#fff;border-color:#2e7d32}
button.danger{color:var(--red);border-color:#f0c4c4}
button.mini{padding:6px 10px;font-size:14px;border-radius:10px}
button.wide{width:100%;margin:4px 0}
.ib{border:0;background:transparent;padding:6px;width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;font-size:20px;border-radius:12px}
.ib svg{width:24px;height:24px;stroke:var(--fg);stroke-width:2.2;fill:none;stroke-linecap:round}
input,select,textarea{font:inherit;width:100%;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--fg)}
input[type=checkbox],input[type=radio]{width:auto}
input[type=range]{padding:0}
label{display:block;margin:8px 0;font-weight:600;font-size:14px}
label.chk{display:flex;gap:8px;align-items:center;font-weight:500}
.hint{color:var(--muted);font-size:13px;margin:6px 0}
.row{display:flex;gap:8px;align-items:center;margin:8px 0}
.row>*{flex:1}
.badge{display:inline-block;min-width:18px;font-size:11px;font-weight:700;background:var(--red);color:#fff;border-radius:9px;padding:1px 6px;margin-left:4px}

/* Kopf */
#top{position:fixed;top:calc(8px + var(--safe-t));left:8px;right:8px;z-index:1000;display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.97);border-radius:var(--r);padding:4px 12px 4px 4px;box-shadow:var(--sh)}
#top .ttl{flex:1;min-width:0}
#title{font-weight:800;color:var(--green);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#sub{font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#clock{font-variant-numeric:tabular-nums;font-weight:800;font-size:15px;color:var(--green)}
.dot{width:11px;height:11px;border-radius:50%;background:#2e7d32;flex:none}
.dot.off{background:var(--red)}

/* Gruppenleiste */
#groupbar{position:fixed;top:calc(64px + var(--safe-t));left:8px;right:8px;z-index:999;display:flex;gap:6px;overflow-x:auto;scrollbar-width:none}
#groupbar::-webkit-scrollbar{display:none}
.chip{flex:none;display:flex;align-items:center;gap:6px;background:#fff;border-radius:20px;padding:5px 11px 5px 7px;font-size:13px;font-weight:700;box-shadow:0 2px 8px rgba(0,0,0,.15);white-space:nowrap}
.chip .cdot{width:14px;height:14px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.2)}
.chip small{font-weight:600;color:var(--muted)}
.chip.st-laeuft{outline:2px solid #2e7d32}.chip.st-halt,.chip.st-wartet{outline:2px solid var(--orange)}.chip.st-fertig{opacity:.75}
.chip.timer{background:var(--green);color:#fff}
.chip.timer.warn{background:var(--orange)}
.chip.timer.over{background:var(--red)}

/* Banner (quittierpflichtig) */
#banners{position:fixed;top:calc(104px + var(--safe-t));left:8px;right:8px;z-index:1003;display:flex;flex-direction:column;gap:6px;pointer-events:none}
body:not(:has(#groupbar:not([hidden]))) #banners{top:calc(66px + var(--safe-t))}
.bn{pointer-events:auto;display:flex;gap:10px;align-items:center;background:var(--green);color:#fff;border-radius:14px;padding:10px 12px;box-shadow:var(--sh);font-weight:700;animation:tin .2s}
.bn .bt{flex:1;min-width:0}
.bn small{display:block;font-weight:500;opacity:.85}
.bn button{border:0;background:rgba(255,255,255,.95);color:var(--fg);font-weight:800;padding:8px 12px}
.bn.sig-an{background:#2e7d32}.bn.sig-ende,.bn.sos,.bn.zone-rot,.bn.over{background:var(--red)}
.bn.zone-gelb,.bn.warn,.bn.tl{background:var(--orange)}
.bn.info{background:#1d4f8f}
.bn.pulse{animation:bpulse 1s infinite}
@keyframes bpulse{50%{box-shadow:0 0 0 8px rgba(198,40,40,.35)}}

/* Kartensteuerung rechts */
#ctrl{position:fixed;right:10px;top:calc(110px + var(--safe-t));z-index:998;display:flex;flex-direction:column;gap:8px}
.cb{width:46px;height:46px;border-radius:50%;padding:0;border:0;background:#fff;box-shadow:var(--sh);display:flex;flex-direction:column;align-items:center;justify-content:center}
.cb svg{width:24px;height:24px;stroke:var(--green);stroke-width:2;fill:none}
#btnCompass svg{width:40px;height:40px;stroke:none;transition:transform .2s}
.cb.on{background:var(--green)}.cb.on svg{stroke:#fff}
#btnFollow{width:46px;height:54px;border-radius:23px}
#btnFollow span{font-size:9px;font-weight:800;color:var(--green);margin-top:-2px}
#btnFollow.on span{color:#fff}
.leaflet-top.leaflet-left{top:calc(104px + var(--safe-t))}

/* Aktionen unten */
#actions{position:fixed;right:10px;left:10px;bottom:calc(40px + var(--safe-b));z-index:1000;display:flex;justify-content:flex-end;flex-wrap:wrap-reverse;gap:8px;pointer-events:none}
.ab{pointer-events:auto;border:0;border-radius:26px;padding:13px 18px;font-weight:800;font-size:16px;box-shadow:var(--sh)}
.ab.orange{background:var(--orange);color:#fff}.ab.dark{background:var(--green);color:#fff}.ab.red{background:#b3261e;color:#fff}
#navbar{position:fixed;left:8px;right:8px;bottom:calc(98px + var(--safe-b));z-index:999;display:flex;gap:8px;align-items:center;background:rgba(29,79,143,.95);color:#fff;border-radius:14px;padding:8px 12px;font-weight:700}
#navtext{flex:1}
#tape{position:fixed;left:0;right:0;bottom:calc(31px + var(--safe-b));height:30px;z-index:997;background:rgba(20,28,24,.82);overflow:hidden;color:#fff}
#tapeInner{position:absolute;top:0;height:30px;white-space:nowrap;font:700 11px system-ui}
#tapeInner span{position:absolute;top:2px;transform:translateX(-50%)}
#tapeInner i{position:absolute;bottom:0;width:1px;background:#fff;opacity:.7}
#tapeMark{position:absolute;left:50%;top:0;width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-top:9px solid #ff4b4b;transform:translateX(-50%)}
#status{position:fixed;left:0;right:0;bottom:0;z-index:1000;display:flex;justify-content:space-between;align-items:center;gap:10px;background:rgba(255,255,255,.97);padding:6px 12px calc(6px + var(--safe-b));font-size:12.5px;border-top:1px solid var(--line)}
#coord{font-variant-numeric:tabular-nums}
#status .share{margin:0;font-weight:700;display:flex;gap:6px;align-items:center;font-size:12.5px}

/* Planungsleiste */
#planbar{position:fixed;top:calc(64px + var(--safe-t));left:8px;right:8px;z-index:1004;background:#fff;border-radius:var(--r);padding:8px;box-shadow:var(--sh);display:flex;flex-direction:column;gap:6px}
#planbar .row1,#planbar .row2,#planbar .row3{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
#planbar select{width:auto;flex:1;min-width:100px;padding:7px}
#planbar .draft{background:var(--orange);color:#fff;font-weight:800;font-size:11px;border-radius:6px;padding:3px 6px}
.tool{padding:7px 10px;font-size:13.5px;font-weight:700}
.tool.on{background:var(--green);color:#fff}
#planbar .row3{justify-content:flex-end}
body.planning #ctrl,body.planning #actions,body.planning #groupbar,body.planning #banners{display:none}

/* Bottom-Sheet */
#sheet{position:fixed;left:0;right:0;bottom:0;z-index:2100;background:#fff;border-radius:20px 20px 0 0;box-shadow:0 -6px 24px rgba(0,0,0,.25);max-height:70vh;overflow:auto;padding:4px 14px calc(14px + var(--safe-b));animation:sin .18s}
@keyframes sin{from{transform:translateY(40px);opacity:0}}
@media(min-width:760px){#sheet{left:auto;right:12px;bottom:12px;width:400px;border-radius:20px;max-height:80vh}}
.grip{width:44px;height:5px;border-radius:3px;background:#ccd3ce;margin:6px auto}
.sh-head{display:flex;align-items:center;gap:8px}
#shTitle{flex:1;font-weight:800;font-size:17px;color:var(--green)}
#shBody{font-size:14.5px}
#shBody table{width:100%;border-collapse:collapse;margin:6px 0}
#shBody td{padding:4px 2px;border-bottom:1px solid var(--line)}
#shBody td:first-child{color:var(--muted);width:42%}
#shActions{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
#shActions button{flex:1 1 45%}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:8px 0}
.stats div{background:var(--green-l);border-radius:10px;padding:6px 4px;text-align:center}
.stats b{display:block;font-size:18px;color:var(--green)}
.stats small{font-size:11px;color:var(--muted)}
.person{display:flex;align-items:center;gap:8px;margin-top:6px}
.person .av{width:34px;height:34px;border-radius:50%;background:var(--green);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800}
.form label{margin:6px 0}
.form .row label{margin:0}

/* Menü */
#drawer{position:fixed;top:0;left:0;bottom:0;width:min(370px,90vw);z-index:2200;background:var(--bg);overflow:auto;padding:calc(10px + var(--safe-t)) 14px calc(20px + var(--safe-b));box-shadow:2px 0 24px rgba(0,0,0,.3)}
.dh{display:flex;justify-content:space-between;align-items:center;gap:8px}
.dh .row{margin:0;flex:none}
.dsec{background:#fff;border-radius:14px;padding:6px 12px;margin:10px 0}
.dsec h4{margin:6px 0;color:var(--green)}
.item{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px dashed var(--line)}
.item:last-child{border-bottom:0}
.item .sw{width:14px;height:14px;border-radius:4px;flex:none}
.item .grow{flex:1;min-width:0}
.item small{color:var(--muted)}
.item button{padding:5px 9px;font-size:13px}
.item.alert{background:#fff4ea;border-radius:8px;padding-left:6px}
.item.sos{background:#fdecec;border-radius:8px;padding-left:6px}
.lead-only,.admin-only{display:none}
body.can-lead .lead-only{display:block}
body.is-admin .admin-only{display:block}
.stt{display:inline-block;border-radius:8px;padding:1px 7px;font-size:11.5px;font-weight:700;color:#fff;background:#777;white-space:nowrap}
.stt.laeuft{background:#2e7d32}.stt.beendet{background:#555}.stt.geplant{background:#9aa59e}
.stt.abgeschlossen{background:#2e7d32}.stt.abholen{background:var(--orange)}.stt.warten{background:var(--blue)}.stt.notfall{background:var(--red)}.stt.unterwegs{background:#6b7a70}.stt.abgeholt{background:#555}

/* Dialoge */
dialog{border:0;border-radius:20px;padding:16px;width:min(460px,94vw);max-height:90vh;overflow:auto;box-shadow:0 10px 40px rgba(0,0,0,.35)}
dialog.wide{width:min(900px,96vw)}
dialog.full{width:98vw;max-width:1400px;height:92vh}
dialog::backdrop{background:rgba(10,20,14,.4)}
dialog h3{margin:0 0 8px;color:var(--green)}
dialog h4{margin:12px 0 6px;color:var(--green)}
.cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:700px){.cols{grid-template-columns:1fr}}
.seg{display:flex;gap:6px;margin:6px 0}.seg button{flex:1;padding:9px 4px}
.seg button.on{background:var(--green);color:#fff;border-color:var(--green)}
.seg4{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.seg4 button.on{background:var(--green);color:#fff}
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:8px 0}
.grid button{padding:9px 2px;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:12.5px}
.grid button span{font-size:24px}
.grid button.on{outline:3px solid var(--orange);background:#fff4ea}
.grid button.sos{color:var(--red);font-weight:800}
.rose{display:grid;grid-template-columns:repeat(3,64px);grid-template-rows:repeat(3,48px);gap:6px;justify-content:center}
.rose button{padding:0;font-weight:800}
.rose button.on{background:var(--orange);color:#fff;border-color:var(--orange)}
.stepper{display:inline-flex;align-items:center;gap:10px;margin-left:10px}
.stepper button{width:40px;padding:6px 0}
.stgrid,.tmgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0}
.stgrid button,.tmgrid button{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 6px;font-size:24px;border-width:2px}
.stgrid button b,.tmgrid button b{font-size:14px}
.stgrid button small{font-size:12px;color:var(--muted)}
.tmgrid button.go{background:#e7f4e8;color:var(--fg);border-color:#2e7d32}.tmgrid button.stop{border-color:var(--red)}
.st-ok{border-color:#2e7d32}.st-pick{border-color:var(--orange)}.st-wait{border-color:var(--blue)}.st-sos{border-color:var(--red);background:#fdecec}
.stgrid button.on{outline:4px solid var(--orange)}
.sigs{display:grid;gap:6px}.sigs button{font-weight:800;padding:12px}
.sig-an{background:#e7f4e8;border-color:#2e7d32}.sig-ende{background:#fdecec;border-color:var(--red)}
.quick{display:flex;flex-wrap:wrap;gap:6px}.quick button{font-size:13px;padding:6px 10px}
.occ{display:flex;align-items:center;gap:8px;margin:12px 0}.occ b{font-size:20px;min-width:70px;text-align:center}
.qrs{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
.qrs figure{margin:8px;text-align:center;width:200px}
.qrs svg{width:180px;height:180px}
.qrs small{word-break:break-all;color:var(--muted)}
.tblwrap{overflow:auto;max-height:calc(92vh - 90px)}
table.t{border-collapse:collapse;width:100%;font-size:13px}
table.t th{position:sticky;top:0;background:var(--green);color:#fff;text-align:left;padding:6px;white-space:nowrap}
table.t td{padding:5px 6px;border-bottom:1px solid var(--line);white-space:nowrap}
table.t tr:nth-child(even) td{background:#f7f9f7}
table.t td.n{text-align:right;font-variant-numeric:tabular-nums}
.ok{color:#2e7d32;font-weight:700}.bad{color:var(--red);font-weight:700}

#toasts{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(150px + var(--safe-b));z-index:3000;display:flex;flex-direction:column;gap:6px;width:min(440px,92vw);pointer-events:none}
.toast{background:rgba(27,31,28,.93);color:#fff;padding:10px 14px;border-radius:14px;font-weight:600;box-shadow:var(--sh);animation:tin .2s}
.toast.sos{background:var(--red)}.toast.warn{background:var(--orange)}
@keyframes tin{from{opacity:0;transform:translateY(8px)}}

/* Kartensymbole */
.pm,.st2,.sm,.flag,.rp,.veh,.pk,.ringlbl{background:none;border:0}
.pm .lbl{position:absolute;left:50%;transform:translateX(-50%);top:36px;white-space:nowrap;font:700 11.5px system-ui;color:#111;background:rgba(255,255,255,.88);padding:0 4px;border-radius:4px}
.pm.stale{opacity:.5}
.st2 .lb{position:absolute;left:18px;top:-11px;white-space:nowrap;font:800 13.5px system-ui;background:rgba(255,255,255,.92);padding:0 4px;border-radius:3px;line-height:18px}
.st2.mine .lb{outline:3px solid var(--orange)}
.st2.alarm svg rect{stroke:#c62828;stroke-width:3}
.st2 .as{position:absolute;left:18px;top:8px;white-space:nowrap;font:600 11px system-ui;color:#333;background:rgba(255,255,255,.88);padding:0 3px;border-radius:3px}
.sm span{display:inline-block;transform:translate(-50%,-50%);font:800 14px system-ui;background:rgba(255,255,255,.94);border:2px solid currentColor;border-radius:6px;padding:1px 7px;white-space:nowrap}
.pk div{width:26px;height:26px;border-radius:6px;background:#1d4f8f;color:#fff;font:900 16px system-ui;display:flex;align-items:center;justify-content:center;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.4)}
.pk span{position:absolute;left:30px;top:4px;white-space:nowrap;font:700 11px system-ui;background:rgba(255,255,255,.9);padding:0 3px;border-radius:3px}
.pk.tp div{background:#7b4a12}
.flag .fl{font-size:30px;line-height:30px;filter:drop-shadow(0 1px 2px rgba(0,0,0,.5))}
.flag .fl.pulse{animation:bpulse 1s infinite;border-radius:50%}
.flag .lbl{position:absolute;left:24px;top:2px;white-space:nowrap;font:700 12px system-ui;background:rgba(255,255,255,.94);border-radius:4px;padding:0 4px}
.rp .ring{width:34px;height:34px;border-radius:50%;background:#fff;border:3px solid var(--orange);display:flex;align-items:center;justify-content:center;font-size:19px;box-shadow:0 1px 6px rgba(0,0,0,.35)}
.rp.old{opacity:.55}
.rp.sos .ring{border-color:var(--red);animation:bpulse 1s infinite}
.veh .vb{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px;border:3px solid #fff;box-shadow:0 1px 6px rgba(0,0,0,.45)}
.veh .lbl{position:absolute;left:40px;top:2px;white-space:nowrap;font:700 11px system-ui;background:rgba(255,255,255,.92);border-radius:4px;padding:1px 4px;line-height:1.25}
.ringlbl span{white-space:nowrap;display:inline-block;transform:translate(-50%,-50%);font:800 11px system-ui;color:#fff;background:rgba(20,28,24,.75);border-radius:6px;padding:0 4px}
.leaflet-popup-content{font-size:14px}
.leaflet-control-attribution{font-size:10px}

@media print{
  body *{visibility:hidden}
  #dlgShare,#dlgShare *{visibility:visible}
  #dlgShare{position:absolute;inset:0;box-shadow:none}
  #dlgShare button{display:none}
}

/* ---- Wake Lock-Anzeige ---- */
#status .wk{padding:3px 9px;border-radius:10px;font-size:12px;font-weight:800;line-height:1.2;color:var(--muted);background:#fff}
#status .wk.on{background:var(--green-l);color:var(--green);border-color:#bcd3c4}
#status .wk.warn{background:#fff3e6;color:#a85a0c;border-color:#f3cfa5}

/* ---- Touchsperre ---- */
#lock{position:fixed;inset:0;z-index:9000;background:#000;color:#8fa596;display:flex;flex-direction:column;align-items:center;padding:calc(28px + var(--safe-t)) 18px calc(22px + var(--safe-b));touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;overscroll-behavior:none}
#lock[hidden]{display:none}
#lock.see{background:rgba(0,0,0,.28);color:#fff}
#lock.see #lkInfo,#lock.see .lkt,#lock.see #lkClock{text-shadow:0 1px 3px #000}
#lock.see #lkInfo{background:rgba(0,0,0,.55);border-radius:12px;padding:8px 12px}
#lock.see #lkAlert{display:none} /* Banner sind dann direkt sichtbar */
#lkClock{font-size:64px;font-weight:200;font-variant-numeric:tabular-nums;color:#cfd8d2;line-height:1}
.lkt{margin-top:6px;font-weight:700;letter-spacing:.04em}
#lkInfo{margin-top:18px;display:flex;flex-direction:column;align-items:center;gap:4px;font-size:15px;text-align:center}
#lkInfo .ok{color:#6fbf86}#lkInfo .bad{color:#ff8a65}
#lkAlert{margin-top:16px;width:100%;max-width:460px;display:flex;flex-direction:column;gap:6px}
.lka{background:#1d4f8f;color:#fff;border-radius:12px;padding:10px 12px;font-weight:700}
.lka.sig-an{background:#2e7d32}.lka.sig-ende,.lka.sos,.lka.zone-rot,.lka.over{background:var(--red)}
.lka.zone-gelb,.lka.warn,.lka.tl{background:var(--orange)}
.lka.pulse{animation:bpulse 1s infinite}
.lka small{display:block;font-weight:500;opacity:.85}
.lka button{display:none}
.lkh{font-size:13px;text-align:center;opacity:.85;margin-top:4px}
.lkbottom{margin-top:auto;display:flex;flex-direction:column;align-items:center;gap:10px}
#lkHold{position:relative;width:96px;height:96px;border-radius:50%;padding:0;border:0;background:#111;touch-action:none}
#lkHold span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:34px}
#lkHold svg{position:absolute;inset:8px;width:80px;height:80px;transform:rotate(-90deg)}
#lkHold circle{fill:none;stroke-width:5}
#lkHold .trk{stroke:#2a332d}
#lkHold .prg{stroke:#6fbf86;stroke-dasharray:226.2;stroke-dashoffset:226.2;transition:stroke-dashoffset .15s linear}
#lkHold.holding .prg{stroke-dashoffset:0;transition:stroke-dashoffset 1.5s linear}
#lkSee{background:transparent;color:inherit;border:1px solid #2a332d;font-size:13px;padding:6px 12px}
#lkConfirm{position:absolute;width:170px;height:60px;border:0;border-radius:30px;background:var(--green2);color:#fff;font-weight:800;font-size:18px;box-shadow:0 0 0 3px #6fbf86}
body.locked{overflow:hidden}
#status .share{white-space:nowrap;flex:none}
#status .wk{flex:none}
