:root{--grund:#f4f6f9;--flaeche:#fff;--text:#1c2330;--leise:#5b6475;--linie:#d8dde6;--akzent:#1f63d6;
--akzent-text:#fff;--gefahr:#c62828;--ok:#1b7f3b;--warn:#a35f00;--kopf:#17314f;--kopf-text:#fff;--key:#7d1d1d;
color-scheme:light dark}
@media (prefers-color-scheme:dark){:root{--grund:#10141b;--flaeche:#19202a;--text:#e5e9f0;--leise:#9ca6b6;
--linie:#2d3543;--akzent:#5a95ff;--akzent-text:#0d1420;--gefahr:#ef5350;--ok:#4caf50;--warn:#ffb74d;
--kopf:#0c1e31;--key:#5b1313}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:16px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--grund);
color:var(--text)}
a{color:var(--akzent)}
header.kopf{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1.25rem;padding:.6rem 1rem;
background:var(--kopf);color:var(--kopf-text)}
header.kopf a{color:inherit;text-decoration:none}
.marke{font-weight:700;font-size:1.15rem;white-space:nowrap}
header.kopf nav{display:flex;flex-wrap:wrap;gap:.25rem 1rem;flex:1}
header.kopf nav a{padding:.2rem 0;border-bottom:2px solid transparent}
header.kopf nav a.aktiv,header.kopf nav a:hover{border-color:currentColor}
.wer{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.wer button{background:transparent;border-color:currentColor;color:inherit}
.firmenname{font-weight:600}
body.key header.kopf{background:var(--key)}
.schild{background:var(--key);color:#fff;padding:.45rem 1rem;font-size:.9rem;letter-spacing:.02em}
main{max-width:1280px;margin:0 auto;padding:1rem}
h1{font-size:1.5rem;margin:.3rem 0 1rem}
h2{font-size:1.15rem;margin:1.6rem 0 .6rem}
.pfad{font-size:.9rem;color:var(--leise);margin-bottom:.4rem}
.pfad a{color:inherit}
.karte{background:var(--flaeche);border:1px solid var(--linie);border-radius:10px;padding:1rem;margin-bottom:1rem}
.rollen{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--linie);border-radius:10px;
background:var(--flaeche)}
table{border-collapse:collapse;width:100%}
th,td{padding:.45rem .6rem;border-bottom:1px solid var(--linie);text-align:left;vertical-align:top}
tr:last-child td{border-bottom:none}
th{font-weight:600;white-space:nowrap;background:var(--flaeche)}
th a{color:inherit;text-decoration:none}
th a.aktiv{text-decoration:underline}
td.zahl,th.zahl{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
tbody tr:hover td{background:rgba(127,127,127,.07)}
.leer{color:var(--leise);padding:1rem}
button,.knopf{display:inline-flex;align-items:center;justify-content:center;gap:.3rem;font:inherit;
padding:.4rem .9rem;border-radius:7px;border:1px solid var(--akzent);background:var(--akzent);
color:var(--akzent-text);cursor:pointer;text-decoration:none;min-height:2.4rem;white-space:nowrap}
button.zweit,.knopf.zweit{background:transparent;color:var(--akzent)}
button.gefahr{background:var(--gefahr);border-color:var(--gefahr);color:#fff}
button.klein,.knopf.klein{padding:.15rem .55rem;min-height:2rem;font-size:.9rem}
button:focus-visible,.knopf:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,
textarea:focus-visible{outline:3px solid var(--akzent);outline-offset:2px}
input,select,textarea{font:inherit;padding:.4rem .55rem;border:1px solid var(--linie);border-radius:6px;
background:var(--flaeche);color:var(--text);min-height:2.4rem;max-width:100%}
input[type=color]{padding:.1rem;width:3rem;height:2.4rem}
input[type=checkbox],input[type=radio]{min-height:auto;width:1.15rem;height:1.15rem;vertical-align:-.2rem}
input[type=number]{width:6rem}
textarea{width:100%;min-height:6rem}
label{display:block;font-size:.9rem;color:var(--leise);margin-bottom:.2rem}
label.wahl{display:inline-flex;gap:.35rem;align-items:center;color:var(--text);font-size:1rem;margin-right:1rem;
white-space:nowrap}
.felder{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.8rem 1rem;align-items:end}
.felder .breit{grid-column:1/-1}
.felder input,.felder select{width:100%}
.zeile{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.zeile+.zeile{margin-top:.6rem}
tr.code-zeile .zeile{flex-wrap:nowrap}
tr.code-zeile input[type=text]{min-width:8rem}
form.inline{display:inline-flex;gap:.3rem;align-items:center;margin:0}
.aktionen{display:flex;flex-wrap:wrap;gap:.3rem}
.reiter{display:flex;flex-wrap:wrap;gap:.25rem;border-bottom:1px solid var(--linie);margin:0 0 1rem}
.reiter a{padding:.5rem .9rem;border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;
text-decoration:none;color:var(--leise)}
.reiter a.aktiv{background:var(--flaeche);border-color:var(--linie);color:var(--text);margin-bottom:-1px}
.meldung{padding:.7rem 1rem;border-radius:8px;margin-bottom:1rem;border:1px solid;background:var(--flaeche)}
.meldung.ok{border-color:var(--ok);color:var(--ok)}
.meldung.fehler{border-color:var(--gefahr);color:var(--gefahr)}
.meldung.hinweis{border-color:var(--warn);color:var(--warn)}
.leise{color:var(--leise);font-size:.9rem}
.farbe{width:1.1rem;height:1.1rem;vertical-align:-.2rem;margin-right:.35rem}
.status{display:inline-block;padding:0 .55rem;border-radius:999px;font-size:.85rem;border:1px solid;white-space:nowrap}
.status.aktiv,.status.frei{color:var(--ok);border-color:var(--ok)}
.status.abgelaufen,.status.verbraucht,.status.benutzt{color:var(--warn);border-color:var(--warn)}
.status.gesperrt{color:var(--gefahr);border-color:var(--gefahr)}
.galerie{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.8rem}
.galerie figure{margin:0;background:var(--flaeche);border:1px solid var(--linie);border-radius:8px;overflow:hidden}
.galerie img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:var(--linie)}
.galerie figcaption{padding:.4rem .6rem;font-size:.85rem;overflow-wrap:anywhere}
.grossbild{display:block;max-width:100%;max-height:75vh;margin:0 auto 1rem;border-radius:8px}
.schluessel{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:clamp(1.7rem,6vw,3rem);
letter-spacing:.12em;padding:1rem;border:2px dashed var(--key);border-radius:10px;text-align:center;
user-select:all;overflow-wrap:anywhere;background:var(--flaeche);margin:.5rem 0 1rem}
code,.token{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.95em}
.token{font-size:1.05rem;letter-spacing:.06em;user-select:all;white-space:nowrap}
meter{width:10rem;height:1rem;vertical-align:middle}
ul.regeln{list-style:none;padding:0;margin:.4rem 0 0;font-size:.9rem;color:var(--leise)}
ul.regeln li::before{content:"○ ";color:var(--leise)}
ul.regeln li.erfuellt{color:var(--ok)}
ul.regeln li.erfuellt::before{content:"✓ ";color:var(--ok)}
.anmelden{max-width:26rem;margin:7vh auto}
.anmelden input{width:100%}
.anmelden button{width:100%;margin-top:1rem}
@media (max-width:700px){main{padding:.6rem}th,td{padding:.35rem .45rem}header.kopf nav{order:3;width:100%}}