@font-face{font-family:Roboto;src:url(/fonts/roboto.woff2) format('woff2');font-weight:100 900;font-display:swap}
:root{
  --marke:#881B4C;--bg:#f3f4f6;--karte:#fff;--text:#3C454B;--text2:#5b6469;--rand:#d1d5db;--akzent:var(--marke);
  --gruen:#15803d;--gruen-bg:#dcfce7;--blau:#1d4ed8;--blau-bg:#dbeafe;--gelb:#a16207;--gelb-bg:#fef3c7;
  --violett:#6d28d9;--violett-bg:#ede9fe;--grau:#374151;--grau-bg:#e5e7eb;--rot:#b91c1c;--rot-bg:#fee2e2;
  --radius:14px;--schatten:0 1px 3px rgba(0,0,0,.08);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html{background:#fff}
body{margin:0;font-family:Roboto,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);font-size:17px;line-height:1.35;padding-bottom:env(safe-area-inset-bottom);min-height:100vh}
body.verlauf{background:linear-gradient(to bottom,var(--marke) 0,#fff 1100px) no-repeat #fff}
body.verlauf .inhalt>h2,body.verlauf .inhalt>section>h2{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.25)}
.logo{display:inline-flex;align-items:center;height:44px;max-width:46vw}
.logo img{height:100%;width:auto;max-width:100%;object-fit:contain;display:block}
.kopf h1{color:var(--marke)}
.kopf a.klein{color:var(--marke)}
button{font:inherit;cursor:pointer;border:0;border-radius:12px;padding:12px 16px;background:var(--akzent);color:#fff;font-weight:600;min-height:48px;touch-action:manipulation}
button:disabled{opacity:.45;cursor:not-allowed}
button.zweit{background:#fff;color:var(--text);border:1.5px solid var(--rand)}
button.klein{min-height:38px;padding:6px 12px;font-size:15px;border-radius:10px}
button.gross{min-height:64px;font-size:20px;width:100%}
button.gefahr{background:var(--rot)}
button.gruen{background:var(--gruen)}
button.violett{background:var(--violett)}
input,select{font:inherit;padding:10px 12px;border:1.5px solid var(--rand);border-radius:10px;min-height:48px;background:#fff;color:var(--text);width:100%}
input:focus,select:focus{outline:3px solid #bfdbfe;border-color:var(--akzent)}
label{font-size:14px;color:var(--text2);font-weight:600;display:block;margin-bottom:4px}
h1{font-size:22px;margin:0;font-weight:700}h2{font-size:18px;margin:0 0 10px}h3{font-size:16px;margin:0 0 6px}
.kopf{position:sticky;top:0;z-index:20;background:#fff;border-bottom:3px solid var(--marke);padding:10px 14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-top:calc(10px + env(safe-area-inset-top))}
.kopf .rechts{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.inhalt{padding:14px;max-width:1200px;margin:0 auto}
.karte{background:var(--karte);border-radius:var(--radius);box-shadow:var(--schatten);padding:14px;margin-bottom:14px}
.reihe{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spalten{display:grid;gap:14px;grid-template-columns:1fr}
@media(min-width:900px){.spalten{grid-template-columns:1fr 1fr}.spalten.drei{grid-template-columns:1fr 1fr 1fr}}
.hinweis{font-size:14px;color:var(--text2)}
.leer{color:var(--text2);font-style:italic;padding:8px 0}
/* Limeberry-Hinweis (Kopfzeile bzw. Fußzeile) */
.lb{display:inline-flex;align-items:center;gap:8px;color:var(--text2);font-size:12px;font-weight:600;white-space:nowrap}
.lb img{height:22px;width:auto;display:block}
.kopf .lb{margin-right:6px}
.fuss{display:none;justify-content:center;padding:18px 14px 10px}
@media(max-width:640px){.kopf .lb{display:none}.fuss{display:flex}}
.login .fuss{display:flex;background:rgba(255,255,255,.85);border-radius:999px;padding:8px 16px;margin:14px auto 0;width:max-content}
/* Verbindungsanzeige */
.verbindung{font-size:13px;padding:4px 10px;border-radius:999px;background:var(--gruen-bg);color:var(--gruen);font-weight:600;white-space:nowrap}
.verbindung.getrennt{background:var(--rot-bg);color:var(--rot);animation:blink 1.2s infinite}
.verbindung.warte{background:var(--gelb-bg);color:var(--gelb)}
@keyframes blink{50%{opacity:.55}}
.offline-banner{background:var(--rot);color:#fff;padding:10px 14px;font-weight:700;text-align:center;display:none}
.offline-banner.sichtbar{display:block}
/* Status-Farben (immer zusammen mit Text) */
.st-bereit{--sf:var(--gruen);--sb:var(--gruen-bg)}
.st-belegt{--sf:var(--blau);--sb:var(--blau-bg)}
.st-reinigung_noetig{--sf:var(--gelb);--sb:var(--gelb-bg)}
.st-reinigung_laeuft{--sf:var(--violett);--sb:var(--violett-bg)}
.st-gesperrt{--sf:var(--grau);--sb:var(--grau-bg)}
.status{display:inline-flex;align-items:center;gap:6px;background:var(--sb);color:var(--sf);font-weight:700;padding:4px 10px;border-radius:999px;font-size:14px}
.status .symbol{font-size:15px}
.dringend-marke{display:inline-block;background:var(--rot);color:#fff;font-weight:800;padding:3px 9px;border-radius:8px;font-size:13px;letter-spacing:.3px}
/* Raumkarten */
.raster{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}
.raum{background:#fff;border-radius:var(--radius);box-shadow:var(--schatten);padding:12px;border:3px solid var(--sb);position:relative}
.raum.dringend{border-color:var(--rot);box-shadow:0 0 0 3px var(--rot-bg)}
.raum.gesperrt{background:repeating-linear-gradient(45deg,#f9fafb,#f9fafb 8px,#f3f4f6 8px,#f3f4f6 16px)}
.raum .titel{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px}
.raum .titel b{font-size:19px}
.raum .kap{font-size:13px;color:var(--text2)}
.raum .zeit{font-size:14px;color:var(--text2);margin:6px 0}
.raum .aktionen{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.raum .aktionen button{flex:1 1 auto}
/* Toast */
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#fff;color:var(--text);padding:12px 18px;border-radius:12px;border-left:7px solid var(--marke);font-weight:600;z-index:50;max-width:92vw;box-shadow:0 8px 28px rgba(0,0,0,.28);opacity:0;transition:opacity .2s}
.toast.sichtbar{opacity:1}.toast.fehler{border-left-color:var(--rot);color:var(--rot)}.toast.ok{border-left-color:var(--gruen)}
.dlg-felder{display:flex;flex-wrap:wrap;gap:10px;padding:0 20px 14px}
.dlg-felder>div{flex:1 1 100%}.dlg-felder>div.halb{flex:1 1 calc(50% - 5px)}
.termin-hinweis{margin-top:6px;font-size:14px;font-weight:600;color:var(--marke);background:#fff;border:1.5px dashed var(--marke);border-radius:8px;padding:4px 8px}
.termin-hinweis.reserviert{background:var(--marke);color:#fff;border-style:solid}
.zeile.laeuft{border-color:var(--blau);background:var(--blau-bg)}
.tag-nav{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.tag-nav input{width:auto}
/* Dialoge */
.dlg-hintergrund{position:fixed;inset:0;background:rgba(60,69,75,.55);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;animation:dlgEin .15s ease-out}
.dlg-hintergrund.weg{opacity:0;transition:opacity .12s}
@keyframes dlgEin{from{opacity:0}to{opacity:1}}
.dlg{background:#fff;border-radius:18px;width:100%;max-width:460px;box-shadow:0 20px 60px rgba(0,0,0,.35);overflow:hidden;border-top:7px solid var(--marke);animation:dlgHoch .18s ease-out}
@keyframes dlgHoch{from{transform:translateY(14px)}to{transform:none}}
.dlg-kopf{padding:18px 20px 4px}
.dlg h3{margin:0;font-size:20px;color:var(--marke);font-weight:700}
.dlg-text{padding:6px 20px 14px;color:var(--text);white-space:pre-line;line-height:1.4}
.dlg-eingabe{margin:0 20px 14px;width:calc(100% - 40px)}
.dlg-optionen{display:flex;flex-direction:column;gap:8px;padding:0 20px 14px}
.dlg-knoepfe{display:flex;gap:10px;padding:0 20px 20px}
.dlg-knoepfe button{flex:1}
@media(max-width:520px){.dlg-hintergrund{align-items:flex-end;padding:0}.dlg{max-width:none;border-radius:18px 18px 0 0;padding-bottom:env(safe-area-inset-bottom)}}
/* Banner */
.banner{background:var(--gruen-bg);border:2px solid var(--gruen);color:#14532d;border-radius:var(--radius);padding:12px 14px;margin-bottom:14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-weight:600}
.banner.rot{background:var(--rot-bg);border-color:var(--rot);color:#7f1d1d}
.banner .rechts{margin-left:auto}
/* Zahlenfeld 1–10 */
.zahlen{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:8px 0 10px}
.zahlen button{min-height:60px;font-size:24px;font-weight:700;padding:0}
.zahlen button.aktiv{background:var(--marke);color:#fff;border:1.5px solid var(--marke);box-shadow:0 0 0 3px rgba(0,0,0,.08)}
.zahlen button.mehr{font-size:16px;grid-column:span 1}
.zahlen button.loeschen{color:var(--rot);border-color:#f3c4c4;grid-column:span 2}
/* Zahleneingabe */
.zahl{display:flex;gap:8px;align-items:center}
.zahl input{text-align:center;font-size:28px;font-weight:700;width:110px;min-height:60px}
.zahl button{width:60px;min-height:60px;font-size:28px;padding:0}
/* Listen */
.liste{display:flex;flex-direction:column;gap:10px}
.zeile{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1.5px solid var(--rand);border-radius:12px;background:#fff;flex-wrap:wrap}
.zeile.dringend{border-color:var(--rot);background:#fff5f5}
.zeile .wachsen{flex:1 1 160px}
.vorschlag{border:2px solid var(--rand);border-radius:12px;padding:10px 12px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.vorschlag.empfohlen{border-color:var(--gruen);background:var(--gruen-bg)}
.vorschlag .info{flex:1 1 160px}
.tabelle{width:100%;border-collapse:collapse;font-size:15px}
.tabelle th,.tabelle td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--rand);vertical-align:middle}
.tabelle input,.tabelle select{min-height:40px;padding:6px 8px}
.schalter{display:inline-flex;align-items:center;gap:8px;font-weight:600;cursor:pointer;user-select:none}
.schalter input{width:auto;min-height:0;transform:scale(1.5);margin:0 6px}
details summary{cursor:pointer;font-weight:600;color:var(--akzent);padding:6px 0}
code{background:#eef2ff;padding:2px 6px;border-radius:6px}
.klein{font-size:14px}.dezent{color:var(--text2)}
/* Service: große Karten */
.service-karte{border-radius:16px;padding:14px;background:#fff;box-shadow:var(--schatten);border:3px solid var(--sb);margin-bottom:12px}
.service-karte.dringend{border-color:var(--rot);box-shadow:0 0 0 4px var(--rot-bg)}
.service-karte .kopfzeile{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.service-karte .kopfzeile b{font-size:24px}
.service-karte .knoepfe{display:grid;gap:10px;grid-template-columns:1fr 1fr}
@media(max-width:420px){.service-karte .knoepfe{grid-template-columns:1fr}}
/* Login */
.login{max-width:420px;margin:40px auto;padding:0 16px}
.login .karte{padding:22px}
.login .logo{height:auto;max-width:80%;margin:0 auto 14px;display:flex;justify-content:center;background:#fff;border-radius:14px;padding:12px 22px;box-shadow:var(--schatten)}
.login .logo img{height:64px}
.login .logo img{margin:0 auto}
body.verlauf .login h1,body.verlauf .login .hinweis{color:#fff}
body.verlauf .login .hinweis{opacity:.9}
.login input{font-size:24px;text-align:center;letter-spacing:4px;min-height:60px}
.bereiche{display:grid;gap:10px;grid-template-columns:1fr 1fr}
.bereiche button{min-height:80px;font-size:18px}
