:root{--grund:#070b18;--flaeche:#0d1428;--flaeche2:#121b35;--linie:rgba(130,190,255,.14);--text:#e8eefc;--leise:#8fa0c4;--akzent:#5fe6ff;
  --gut:#3dff9a;--warn:#ff5a7a;--gelb:#ffc35a;--rund:14px;color-scheme:dark}
*{box-sizing:border-box}
html,body{margin:0;background:var(--grund);color:var(--text);font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;-webkit-font-smoothing:antialiased}
body{min-height:100vh;background:radial-gradient(1200px 600px at 70% -10%,rgba(40,120,255,.14),transparent),var(--grund)}
a{color:var(--akzent)}
button,input,select,textarea{font:inherit;color:inherit}
.zahl,td.r,.kz b{font-variant-numeric:tabular-nums}
.gut{color:var(--gut)}.warn{color:var(--warn)}.leise{color:var(--leise)}
.knopf{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;padding:9px 15px;border:0;border-radius:10px;background:var(--akzent);color:#04131c;font-weight:700;cursor:pointer}
.knopf.zweit{background:rgba(255,255,255,.08);color:var(--text);font-weight:600;box-shadow:inset 0 0 0 1px var(--linie)}
.knopf.klein{padding:5px 10px;font-size:13px;border-radius:8px}
.knopf.gefahr{background:rgba(255,90,122,.15);color:var(--warn);box-shadow:inset 0 0 0 1px rgba(255,90,122,.4)}
.knopf:disabled{opacity:.5;cursor:default}
input[type=text],input[type=password],input[type=number],input[type=search],select,textarea{width:100%;padding:10px 12px;border-radius:10px;border:0;
  background:rgba(255,255,255,.06);box-shadow:inset 0 0 0 1px var(--linie);outline:none}
input:focus,select:focus,textarea:focus{box-shadow:inset 0 0 0 1.5px var(--akzent)}
label{display:block;font-size:13px;color:var(--leise);margin:12px 0 5px}

/* Kopf + Reiter */
.kopf{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;padding:12px 20px;background:rgba(7,11,24,.85);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--linie)}
.marke{display:flex;align-items:center;gap:9px;font:800 15px/1 ui-monospace,Menlo,monospace;letter-spacing:.2em}
.marke img{width:26px;height:26px}
.reiter{display:flex;gap:4px;margin-left:12px;overflow-x:auto;scrollbar-width:none}
.reiter a{padding:8px 13px;border-radius:9px;color:var(--leise);text-decoration:none;font-weight:600;white-space:nowrap}
.reiter a.aktiv,.reiter a:hover{background:rgba(255,255,255,.07);color:var(--text)}
.kopf .rechts{margin-left:auto;display:flex;gap:8px;align-items:center}
.glocke{position:relative}
.glocke i{position:absolute;top:-4px;right:-4px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--warn);color:#fff;font:700 10px/17px sans-serif;font-style:normal;text-align:center}
.glocke-liste{position:absolute;right:16px;top:58px;width:min(380px,calc(100vw - 32px));max-height:70vh;overflow:auto;z-index:30;background:var(--flaeche);
  border-radius:var(--rund);box-shadow:0 0 0 1px var(--linie),0 20px 50px rgba(0,0,0,.6);padding:10px}
.glocke-liste div{padding:9px 10px;border-radius:9px}
.glocke-liste div.neu{background:rgba(95,230,255,.07)}
.glocke-liste small{color:var(--leise)}

main{max-width:1400px;margin:0 auto;padding:20px}
h1{font-size:22px;margin:4px 0 16px}
h2{font-size:15px;margin:0 0 12px;color:var(--leise);font-weight:600;text-transform:uppercase;letter-spacing:.08em}
.raster{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.karte{background:var(--flaeche);border-radius:var(--rund);padding:18px;box-shadow:0 0 0 1px var(--linie)}
.karte.breit{grid-column:1/-1}
.kz{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin-bottom:14px}
.kz div{background:var(--flaeche);border-radius:var(--rund);padding:14px 16px;box-shadow:0 0 0 1px var(--linie)}
.kz small{display:block;color:var(--leise);font-size:12.5px}
.kz b{display:block;font-size:24px;margin-top:3px}
.kz span{font-size:13px}
.chips{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 14px}
.chips button{padding:6px 12px;border:0;border-radius:999px;background:rgba(255,255,255,.06);color:var(--leise);cursor:pointer;font-weight:600}
.chips button.aktiv{background:var(--akzent);color:#04131c}
table{width:100%;border-collapse:collapse;font-size:14px}
th{text-align:left;color:var(--leise);font-weight:600;font-size:12.5px;padding:8px;border-bottom:1px solid var(--linie);white-space:nowrap;cursor:pointer}
td{padding:9px 8px;border-bottom:1px solid rgba(130,190,255,.07);vertical-align:top}
td.r,th.r{text-align:right}
tr.klickbar{cursor:pointer}tr.klickbar:hover td{background:rgba(255,255,255,.03)}
.tabelle{overflow-x:auto}
.balken{display:flex;height:10px;border-radius:5px;overflow:hidden;margin:6px 0 10px;background:rgba(255,255,255,.05)}
.legende{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px;color:var(--leise)}
.legende i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px}
.hinweis{font-size:12.5px;color:var(--leise);margin-top:10px}
.meldung{padding:10px 12px;border-radius:10px;background:rgba(255,195,90,.1);color:var(--gelb);margin:10px 0}
.meldung.rot{background:rgba(255,90,122,.1);color:var(--warn)}
.meldung.gruen{background:rgba(61,255,154,.08);color:var(--gut)}
.leer{color:var(--leise);padding:10px 0}
.zeile{display:flex;gap:10px;align-items:end;flex-wrap:wrap}
.zeile>*{flex:1;min-width:140px}
.zeile>.knopf{flex:0 0 auto}
.ablage{border:1.5px dashed var(--linie);border-radius:var(--rund);padding:22px;text-align:center;color:var(--leise);cursor:pointer}
.ablage.drueber{border-color:var(--akzent);color:var(--text)}
.eins{padding:12px 0;border-bottom:1px solid rgba(130,190,255,.07)}
.eins b{color:var(--text)}
.marke-wert{display:inline-block;padding:1px 8px;border-radius:6px;background:rgba(95,230,255,.12);color:var(--akzent);font-size:12.5px;font-weight:700}
.marke-wert.eigen{background:rgba(255,195,90,.16);color:var(--gelb)}

/* Chat */
.chat{display:flex;flex-direction:column;gap:10px;max-height:58vh;overflow:auto;padding:4px}
.blase{max-width:85%;padding:10px 14px;border-radius:14px;background:var(--flaeche2);white-space:pre-wrap}
.blase.ich{align-self:flex-end;background:rgba(95,230,255,.14)}
.blase .werkzeug{display:block;font:11px ui-monospace,Menlo,monospace;color:var(--leise)}
.text-md p{margin:0 0 8px}.text-md ul{margin:0 0 8px;padding-left:20px}

/* Zentrale */
.zt-kopf{display:flex;gap:18px;flex-wrap:wrap;align-items:baseline;margin-bottom:10px;color:var(--leise)}
.zt-kopf b{color:var(--text);font-size:20px;margin-right:4px}
.zt-buehne{position:relative;height:max(600px,calc(100vh - 210px));border-radius:var(--rund);overflow:hidden;background:#070b18;box-shadow:0 0 0 1px var(--linie)}
.zt3-host{position:absolute;inset:0;z-index:0;isolation:isolate}
.zt3-host canvas{display:block;width:100%;height:100%;cursor:grab}
.zt3-etiketten{position:absolute;inset:0;pointer-events:none}
.zt3-tabs{position:absolute;z-index:4;left:12px;right:12px;bottom:12px;display:flex;gap:6px;overflow-x:auto;padding:6px;border-radius:12px;background:rgba(8,12,26,.78);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 0 0 1px rgba(255,255,255,.08);scrollbar-width:none}
.zt3-tabs button{flex-shrink:0;display:flex;align-items:center;gap:6px;padding:6px 11px;border:0;border-radius:8px;background:none;color:#aab8d6;font:600 12.5px -apple-system,sans-serif;cursor:pointer}
.zt3-tabs button.aktiv,.zt3-tabs button:hover{background:rgba(255,255,255,.1);color:#fff}
.zt3-tabs i{width:8px;height:8px;border-radius:50%}
.zt3-tabs b{font:700 10px/16px ui-monospace,monospace;min-width:16px;height:16px;border-radius:8px;background:#ff2bd6;color:#fff;text-align:center}
.zt3-schild{display:flex;align-items:center;gap:9px;padding:6px 11px 6px 7px;border-radius:11px;background:rgba(14,20,42,.86);color:#fff;white-space:nowrap;
  box-shadow:0 0 0 1px rgba(130,190,255,.22),0 6px 20px rgba(0,0,0,.5);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);font-size:12px;line-height:1.25;transition:opacity .3s}
.zt3-schild b{display:block;font:700 12.5px -apple-system,sans-serif}
.zt3-schild span{display:flex;align-items:center;gap:5px;color:#9fb0cf;font-size:10.5px}
.zt3-schild span i{width:6px;height:6px;border-radius:50%;display:inline-block}
.zt3-punkt{width:24px;height:24px;border-radius:7px;flex-shrink:0}
.zt-badge{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#ff2bd6;color:#fff;font:700 10px/18px ui-monospace,monospace;font-style:normal;text-align:center}
.zt-badge.rot{background:var(--warn)}
.zt3-person{padding:5px 9px;border-radius:9px;background:rgba(10,15,34,.9);box-shadow:0 0 0 1px rgba(130,190,255,.2);color:#fff;font-size:11px;line-height:1.25;white-space:nowrap;transition:opacity .3s}
.zt3-person b{display:block}
.zt3-person span{display:block;color:#a9b6d3;font-size:10px}
.zt3-person em{display:block;font:normal 9.5px ui-monospace,Menlo,monospace;color:#5fe6ff}
.zt3-mitte{display:flex;align-items:center;gap:7px;padding:6px 14px;border-radius:999px;background:rgba(20,110,230,.35);color:#e8f6ff;white-space:nowrap;
  box-shadow:0 0 0 1px rgba(110,200,255,.45),0 0 24px rgba(40,160,255,.35);font:600 11.5px -apple-system,sans-serif}
.zt3-mitte i{width:7px;height:7px;border-radius:50%;background:#5fe6ff;box-shadow:0 0 8px #5fe6ff}
.zt3-mitte span{color:#9fd4ff;font-weight:500}
.zt-panel{position:absolute;z-index:5;top:12px;right:12px;bottom:70px;width:min(380px,calc(100% - 24px));overflow:auto;padding:16px;border-radius:var(--rund);
  background:rgba(10,15,32,.92);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 0 0 1px var(--linie),0 20px 50px rgba(0,0,0,.5)}
.zt-panel h3{margin:0 0 4px;font-size:18px}
.zt-panel .zu{position:absolute;top:10px;right:10px}
.zt-panel ul{list-style:none;padding:0;margin:8px 0 14px}
.zt-panel li{padding:7px 0;border-bottom:1px solid rgba(130,190,255,.08);font-size:13.5px}
.zt-panel li small{color:var(--leise);margin-right:8px;font-family:ui-monospace,Menlo,monospace}

/* Anmelden */
.tor{min-height:100vh;display:grid;place-items:center;padding:20px}
.tor .karte{width:min(420px,100%);padding:28px}
.tor h1{display:flex;align-items:center;gap:10px}
.tor .knopf{width:100%;justify-content:center;margin-top:18px;padding:12px}
.haken{display:flex;align-items:center;gap:8px;margin-top:12px;color:var(--leise);font-size:14px}
.haken input{width:auto}
.qr{background:#fff;border-radius:12px;padding:8px;display:grid;place-items:center;margin:10px 0}
.qr svg{width:220px;height:220px}
code.geheim{display:block;padding:10px;border-radius:9px;background:rgba(255,255,255,.06);font:14px ui-monospace,Menlo,monospace;letter-spacing:.05em;word-break:break-all}

@media (max-width:720px){
  main{padding:12px}
  .kopf{padding:10px 12px;flex-wrap:wrap}
  .reiter{order:3;width:100%;margin:0}
  .zt-buehne{height:72vh}
  .zt-panel{top:auto;bottom:66px;max-height:52%}
  .kz b{font-size:20px}
  .ausblenden-mobil{display:none}
}
@media (max-width:720px){.kz{grid-template-columns:1fr 1fr}.kz b{font-size:18px}}

/* Charts (chart.js aus Leons Butler) */
.ch{display:block;overflow:visible;touch-action:pan-y}
.ch-gitter{stroke:var(--linie);stroke-width:1;stroke-dasharray:2 4}
.ch-achse{fill:var(--leise);font:11px ui-monospace,Menlo,monospace}
.ch-kreuz{stroke:rgba(255,255,255,.3);stroke-width:1}
.ch-tipbox{fill:var(--flaeche2);stroke:var(--linie)}
.ch-tip1{fill:var(--text);font:600 13px ui-monospace,Menlo,monospace}
.ch-tip2{fill:var(--leise);font:11px -apple-system,sans-serif}
.ch-flaeche{cursor:crosshair}
.ch-legende{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:12.5px;margin-bottom:6px;align-items:center}
.ch-legende span{display:flex;align-items:center;gap:6px}
.ch-legende i{width:12px;height:3px;border-radius:2px;display:inline-block}
.ch-legende b{font:600 12.5px ui-monospace,Menlo,monospace}
.ch-glow{filter:drop-shadow(0 0 6px rgba(94,200,232,.55))}

/* Analyse */
.saeulen{display:flex;align-items:flex-end;gap:6px;height:150px;margin:10px 0 4px}
.saeulen div{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;font-size:11px;color:var(--leise)}
.saeulen span{width:100%;border-radius:6px 6px 2px 2px;background:linear-gradient(#facc15,#b98b0a);min-height:2px}
.saeulen div.jetzt span{background:linear-gradient(#5fe6ff,#2f9bff)}
.liste-balken div{display:grid;grid-template-columns:minmax(90px,1.3fr) 3fr 64px;gap:10px;align-items:center;padding:4px 0;font-size:13.5px}
.liste-balken i{display:block;height:8px;border-radius:4px;background:var(--akzent)}
.liste-balken b{text-align:right;font-variant-numeric:tabular-nums}
.klein-tag{display:inline-block;padding:1px 7px;border-radius:6px;font-size:11.5px;background:rgba(255,255,255,.07);color:var(--leise)}
.klein-tag.warn{background:rgba(255,195,90,.14);color:var(--gelb)}

/* Bericht zum Drucken (als PDF sichern) */
.bericht{max-width:900px;margin:0 auto}
.bericht h1{display:flex;justify-content:space-between;align-items:baseline}
@media print{
  @page{margin:14mm}
  body{background:#fff!important;color:#111}
  .kopf,.glocke-liste,.nicht-drucken{display:none!important}
  main{padding:0;max-width:none}
  .karte,.kz div{background:#fff!important;box-shadow:none!important;border:1px solid #ddd;break-inside:avoid}
  .leise,.hinweis,th,.kz small{color:#555!important}
  .gut{color:#0a7a3e!important}.warn{color:#b3123b!important}
  td{border-bottom-color:#eee}
  .liste-balken i{background:#2f6bff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
}

/* Immobilien */
.im3-buehne{position:relative;height:min(480px,62vh)}
.im3-legende{position:absolute;z-index:3;left:12px;bottom:10px;display:flex;flex-wrap:wrap;gap:6px 14px;padding:7px 12px;border-radius:10px;background:rgba(8,12,26,.75);font-size:12px}
.im3-legende i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px}
.im3-schild{padding:4px 9px;border-radius:9px;background:rgba(10,15,34,.85);box-shadow:0 0 0 1px rgba(130,190,255,.22);color:#fff;font-size:11px;line-height:1.25;white-space:nowrap;text-align:center;transition:transform .2s}
.im3-schild b{display:block;font-size:10.5px;font-weight:600}.im3-schild span{display:none;color:#a9b6d3;font-size:10.5px}
.im3-schild.hover span,.im3-schild.an span{display:block}.im3-schild.hover,.im3-schild.an{z-index:5;background:rgba(10,15,34,.95)}
.im3-schild.an{box-shadow:0 0 0 1.5px #5fe6ff,0 0 18px rgba(95,230,255,.5);transform:scale(1.12)}
tr.gewaehlt td{background:rgba(95,230,255,.08)}
code{font:12.5px ui-monospace,Menlo,monospace;background:rgba(255,255,255,.06);padding:1px 5px;border-radius:5px}
@media (max-width:720px){.im3-buehne{height:340px}}
@media (max-width:720px){.im3-schild:not(.an):not(.hover){display:none}}

.mk-feld{width:30px;height:26px;border:0;border-radius:7px;font-weight:700;cursor:pointer;background:rgba(255,255,255,.06);color:var(--leise)}
.mk-feld.bezahlt{background:rgba(61,255,154,.16);color:var(--gut)}.mk-feld.offen{background:rgba(255,90,122,.18);color:var(--warn)}
table.mk th .knopf{margin-top:4px;padding:2px 6px;font-size:10.5px}
#nk-tabelle input,#nk-tabelle select{padding:7px 9px}
@media print{.nk-brief{page-break-after:always;border:0!important}.nk-brief:last-of-type{page-break-after:auto}}
[hidden]{display:none!important}
