:root { --rot: #c0392b; --gruen: #1e8449; --blau: #1f4e79; --grau: #f2f4f7; --rand: #d5dbe3; --text: #1c2430; --muted: #66707d; }
* { box-sizing: border-box; }
body { margin: 0; font: 15px/1.45 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; color: var(--text); background: #eef1f5; }
a { color: var(--blau); }
.wrap { max-width: 1400px; margin: 0 auto; padding: 0 16px; }
.top { background: var(--blau); color: #fff; }
.kopf { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; min-height: 56px; }
.brand { color: #fff; text-decoration: none; display: flex; flex-direction: column; line-height: 1.15; }
.brand small { opacity: .8; font-size: 12px; }
.top nav { display: flex; gap: 4px; flex: 1; }
.top nav a, .me a { color: #fff; text-decoration: none; padding: 6px 10px; border-radius: 4px; }
.top nav a:hover { background: rgba(255,255,255,.15); }
.me { display: flex; align-items: center; gap: 8px; }
.me form { margin: 0; }
.linkbtn { background: none; border: 0; color: inherit; cursor: pointer; text-decoration: underline; font: inherit; padding: 0; }
.top .linkbtn { color: #fff; }
main { padding: 18px 16px 40px; }
h1 { font-size: 24px; margin: 4px 0 6px; } h2 { font-size: 18px; margin: 0 0 10px; }
.card { background: #fff; border: 1px solid var(--rand); border-radius: 8px; padding: 16px; margin: 0 0 16px; }
.card.login { max-width: 420px; margin: 40px auto; }
.muted { color: var(--muted); } .klein { font-size: 12px; } .rot-text { color: var(--rot); } .warn-text { color: #b9770e; font-weight: 600; }
.flash { padding: 10px 14px; border-radius: 6px; margin: 0 0 14px; background: #e8f6ee; border: 1px solid #b7e1c7; }
.flash.err { background: #fdecea; border-color: #f5c2bd; } .flash.warn { background: #fef5e7; border-color: #f8d9a4; }
.btn { display: inline-block; background: var(--blau); color: #fff; border: 0; border-radius: 6px; padding: 9px 16px; font: inherit; font-weight: 600; cursor: pointer; text-decoration: none; }
.btn:disabled { opacity: .6; cursor: wait; }
.btn.sec { background: #fff; color: var(--blau); border: 1px solid var(--blau); }
.btn.rot { background: var(--rot); } .btn.gross { font-size: 17px; padding: 12px 26px; }
.btn.small { padding: 4px 10px; font-size: 13px; }
.fld { display: flex; flex-direction: column; gap: 3px; margin: 0 0 10px; flex: 1 1 200px; }
.fld > span { font-size: 13px; font-weight: 600; color: #3a4553; }
.fld small { color: var(--muted); font-size: 12px; }
input, select, textarea { font: inherit; padding: 8px 10px; border: 1px solid #b8c2cf; border-radius: 6px; background: #fff; width: 100%; }
input:focus, select:focus { outline: 2px solid #8fb3db; border-color: var(--blau); }
input[type=checkbox], input[type=radio] { width: auto; margin: 0; }
.reihe { display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end; }
.reihe .breit { flex: 2 1 320px; position: relative; }
.reihe > .btn { margin-bottom: 10px; }
.knopfreihe { align-items: center; gap: 18px; }
.check { display: flex; gap: 6px; align-items: center; }
.meldung { font-weight: 600; } .meldung.ok { color: var(--gruen); } .meldung.err { color: var(--rot); }
.anruf { border-left: 5px solid var(--rot); }
.vorschlaege { position: absolute; top: 100%; left: 0; right: 0; z-index: 10; background: #fff; border: 1px solid #b8c2cf; border-radius: 6px; box-shadow: 0 6px 18px rgba(0,0,0,.12); margin-top: -8px; }
.vorschlaege[hidden] { display: none; }
.vorschlaege div { padding: 8px 12px; cursor: pointer; } .vorschlaege div small { color: var(--muted); }
.vorschlaege div.aktiv { background: #e3edf8; } .vorschlaege div.schon { color: #b9770e; } .vorschlaege .leer { color: var(--muted); cursor: default; }
.tabelle { overflow-x: auto; }
table.list { border-collapse: collapse; width: 100%; font-size: 14px; }
.list th { text-align: left; font-size: 12px; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); border-bottom: 2px solid var(--rand); padding: 6px 8px; white-space: nowrap; }
.list td { border-bottom: 1px solid #e7ebf0; padding: 7px 8px; vertical-align: top; }
.list tr.fehlt td { background: #fff8f0; } .list tr.grau td { color: #9aa3ae; }
.list td select, .list td input[type=time] { width: auto; padding: 4px 6px; }
.zeile { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.ukopf { display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; align-items: center; }
.ukopf form { margin: 0; }
.tabs { display: flex; gap: 4px; border-bottom: 2px solid var(--rand); margin: 6px 0 16px; flex-wrap: wrap; }
.tabs a { padding: 8px 14px; text-decoration: none; border-radius: 6px 6px 0 0; color: var(--text); }
.tabs a.on { background: var(--blau); color: #fff; }
.chip { display: inline-block; font-size: 12px; padding: 1px 8px; border-radius: 10px; background: #e3edf8; }
.chip.grau { background: #e5e7ea; } .chip.gruen { background: #d4efdf; }
.kacheln { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; margin-bottom: 16px; }
.kachel { text-decoration: none; color: inherit; margin: 0; } .kachel:hover { border-color: var(--blau); }
.kzs { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; margin: 0 0 16px; }
.kz { background: #fff; border: 1px solid var(--rand); border-radius: 8px; padding: 12px; display: flex; flex-direction: column; }
.kz b { font-size: 26px; } .kz b small { font-size: 14px; font-weight: 400; } .kz span { color: var(--muted); font-size: 13px; }
.filter { max-width: 320px; margin-bottom: 10px; }
form.inline { display: inline-flex; gap: 4px; margin: 0; } form.inline input { width: 170px; padding: 4px 6px; }
.foot { background: #373737; color: #e9eaee; font-size: 12px; padding: 16px; text-align: center; margin-top: 24px; }
.foot .copyright { margin: 8px 0 0; font-size: 12px; opacity: .85; }
.foot .copyright img { vertical-align: middle; margin: 0 2px; }
.foot a { color: #e9eaee; }
#karte { height: 560px; border-radius: 6px; border: 1px solid var(--rand); }
.karte-schalter { display: flex; gap: 14px; flex-wrap: wrap; margin: 0 0 8px; }
.karte-legende { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px 24px; margin: 12px 0 4px; padding: 12px 14px; background: var(--grau); border-radius: 6px; }
.karte-legende h3 { font-size: 14px; margin: 0 0 2px; }
.karte-legende p { margin: 0 0 6px; font-size: 12px; }
.karte-legende ul { list-style: none; margin: 0; padding: 0; }
.karte-legende li { display: flex; align-items: center; gap: 8px; font-size: 13px; padding: 2px 0; }
.karte-legende li span { flex: 1; }
.karte-legende i { flex: 0 0 auto; display: inline-block; width: 16px; height: 16px; border: 1px solid #222; }
.karte-legende i.flaeche { width: 22px; height: 14px; border-width: 2px; border-radius: 3px; }
.karte-legende i.punkt { border-radius: 50%; }
.karte-legende i.stern { display: none; }
@media print { .no-print { display: none !important; } #karte { height: 160mm; page-break-inside: avoid; } .leaflet-control-zoom, .leaflet-control-layers { display: none; } body { background: #fff; } .card { border: 0; padding: 0; } .list { font-size: 11px; } a { color: inherit; text-decoration: none; } }
/* Legendenfarben – gleiche Reihenfolge wie farben[] in app.js (bis 15/30/45/60 Min.) */
.karte-legende i.st0 { background: #1a9850; } .karte-legende i.st1 { background: #91cf60; } .karte-legende i.st2 { background: #fee08b; } .karte-legende i.st3 { background: #fc8d59; }
.karte-legende i.flaeche.st0 { background: rgba(26,152,80,.25); border-color: #1a9850; } .karte-legende i.flaeche.st1 { background: rgba(145,207,96,.25); border-color: #91cf60; }
.karte-legende i.flaeche.st2 { background: rgba(254,224,139,.35); border-color: #e6c35c; } .karte-legende i.flaeche.st3 { background: rgba(252,141,89,.25); border-color: #fc8d59; }
.karte-legende i.st-aussen { background: #fff; border-color: #999; } .karte-legende i.st-ueber { background: #7b1113; } .karte-legende i.st-ohne { background: #7f8c8d; }
.ziel-stern { font-size: 26px; line-height: 26px; text-shadow: 0 0 3px #fff, 0 0 3px #fff; text-align: center; }
@media print { .karte-legende i { -webkit-print-color-adjust: exact; print-color-adjust: exact; } }
