:root{
  --paper:#F6F6F7; --card:#FFFFFF; --ink:#16171A; --muted:#6B6E76; --faint:#9A9DA6;
  --rule:#DFE0E4; --accent:#C1121F; --accent-soft:#EBD3D5; --accent-ghost:#F6E7E8;
  --warn:#9A6206; --warn-bg:#F7EDDC;
  --shadow:0 1px 2px rgba(20,22,26,.05), 0 8px 24px -16px rgba(20,22,26,.25);
  --display:"Archivo","Helvetica Neue",Arial,sans-serif;
  --body:"Source Serif 4",Georgia,"Times New Roman",serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --paper:#131417; --card:#1A1C20; --ink:#ECEDEF; --muted:#9AA0A8; --faint:#71767E;
    --rule:#2A2D33; --accent:#E8505E; --accent-soft:#4A2328; --accent-ghost:#25191C;
    --warn:#E0A94A; --warn-bg:#2C2419;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -16px rgba(0,0,0,.8);
  }
}
:root[data-theme="dark"]{
  --paper:#131417; --card:#1A1C20; --ink:#ECEDEF; --muted:#9AA0A8; --faint:#71767E;
  --rule:#2A2D33; --accent:#E8505E; --accent-soft:#4A2328; --accent-ghost:#25191C;
  --warn:#E0A94A; --warn-bg:#2C2419;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 8px 24px -16px rgba(0,0,0,.8);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:var(--body);font-size:16.5px;line-height:1.6;-webkit-font-smoothing:antialiased;
}
a{color:var(--accent)}
.wrap{max-width:1060px;margin:0 auto;padding:0 22px 80px;display:flex;flex-direction:column;gap:38px}

/* Kopf */
header.top{border-bottom:2px solid var(--ink);padding:26px 0 0;margin-bottom:6px}
.brand{
  font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--accent);display:flex;align-items:center;gap:10px;
}
.brand::before{content:"";width:22px;height:3px;background:var(--accent);border-radius:2px}
h1{font-family:var(--display);font-weight:700;font-size:clamp(26px,4.4vw,38px);
   line-height:1.05;letter-spacing:-.024em;margin:10px 0 16px;text-wrap:balance}
nav{display:flex;flex-wrap:wrap;gap:2px}
nav a{
  font-family:var(--display);font-size:14px;font-weight:600;text-decoration:none;color:var(--muted);
  padding:9px 14px;border-radius:6px 6px 0 0;border-bottom:2px solid transparent;
}
nav a:hover{color:var(--ink);background:var(--accent-ghost)}
nav a.on{color:var(--ink);border-bottom-color:var(--accent)}
.abmelden{margin-left:auto;font-family:var(--mono)!important;font-size:12px!important;font-weight:400!important}

/* Filterleiste */
.filter{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
label{display:flex;flex-direction:column;gap:5px;font-family:var(--mono);font-size:11px;
  letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
select,input[type=text],input[type=password]{
  font-family:var(--body);font-size:15px;padding:8px 11px;border:1px solid var(--rule);
  border-radius:6px;background:var(--card);color:var(--ink);min-width:190px;
}
select:focus,input:focus,button:focus{outline:2px solid var(--accent);outline-offset:1px}
button{
  font-family:var(--display);font-weight:600;font-size:14px;padding:9px 18px;border:none;
  border-radius:6px;background:var(--accent);color:#fff;cursor:pointer;
}
button:hover{filter:brightness(1.08)}

/* Abschnitte */
section{display:flex;flex-direction:column;gap:16px}
h2{font-family:var(--display);font-weight:600;font-size:13px;letter-spacing:.14em;
   text-transform:uppercase;color:var(--muted);margin:0;padding-bottom:9px;border-bottom:1px solid var(--rule)}
p{margin:0;max-width:66ch}
.hint{font-size:14.5px;color:var(--muted)}

/* Kennzahlen */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:1px;
  background:var(--rule);border:1px solid var(--rule);border-radius:8px;overflow:hidden}
.kpi{background:var(--card);padding:18px 16px;display:flex;flex-direction:column;gap:3px}
.kpi .zahl{font-family:var(--display);font-weight:700;font-size:34px;line-height:1;
  letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.kpi .zahl small{font-size:17px;font-weight:600;color:var(--muted);margin-left:2px}
.kpi .label{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}

/* Diagramm */
.chartbox{background:var(--card);border:1px solid var(--rule);border-radius:8px;
  padding:20px 18px 12px;box-shadow:var(--shadow)}
.chartwrap{overflow-x:auto}
svg{display:block;width:100%;min-width:560px;height:auto}
.bar{fill:var(--accent)}
.bar:hover{opacity:.75}
.gridline{stroke:var(--rule)}
.axlabel,.daylabel{font-family:"IBM Plex Mono",monospace;font-size:10px;fill:var(--faint)}
.daylabel.wd{fill:var(--muted)}
.nulltag{font-family:"IBM Plex Mono",monospace;font-size:10px;fill:var(--warn)}

/* Tabellen */
.tablewrap{overflow-x:auto;border:1px solid var(--rule);border-radius:8px;background:var(--card)}
table{border-collapse:collapse;width:100%;font-size:15px}
th,td{padding:9px 14px;text-align:left;border-bottom:1px solid var(--rule)}
thead th{font-family:var(--mono);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--muted);font-weight:400;background:var(--paper)}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:var(--accent-ghost)}
td.num,th.num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:14px}
td.name{font-weight:600;font-family:var(--display);font-size:15px}
.nr{font-family:var(--mono);font-size:12.5px;color:var(--faint)}
.balken{display:block;height:5px;border-radius:3px;background:var(--accent);min-width:3px}
.balkenzelle{width:100px;padding-right:16px}
.tag{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.05em;
  text-transform:uppercase;padding:2px 7px;border-radius:99px;white-space:nowrap}
.tag.gast{background:var(--accent-soft);color:var(--accent)}
.tag.ohne{background:var(--warn-bg);color:var(--warn)}
.bem{font-size:13px;color:var(--muted);max-width:38ch}

.duo{display:grid;grid-template-columns:1fr 1fr;gap:24px}
@media(max-width:720px){.duo{grid-template-columns:1fr}}

.leer{padding:34px;text-align:center;color:var(--muted);background:var(--card);
  border:1px dashed var(--rule);border-radius:8px}

/* Login */
.loginbox{max-width:380px;margin:14vh auto;background:var(--card);border:1px solid var(--rule);
  border-radius:10px;padding:30px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:16px}
.fehler{background:var(--warn-bg);border-left:3px solid var(--warn);padding:11px 15px;
  border-radius:0 5px 5px 0;font-size:15px}

footer{border-top:1px solid var(--rule);padding-top:18px;font-size:13.5px;color:var(--muted)}

/* ---------- Benutzer, Formulare, Meldungen ---------- */
.wer{margin-left:auto;align-self:center;font-family:var(--mono);font-size:12px;color:var(--muted);
  display:flex;align-items:center;gap:6px;padding:0 4px}
.wer a{color:var(--muted);text-decoration:none;border-bottom:1px solid var(--rule)}
.wer a:hover{color:var(--accent);border-bottom-color:var(--accent)}

.hinweisbox{background:var(--accent-ghost);border-left:3px solid var(--accent);
  padding:13px 17px;border-radius:0 6px 6px 0;font-size:15.5px}
.hinweisbox code{font-family:var(--mono);font-size:13.5px}

.formkarte{background:var(--card);border:1px solid var(--rule);border-radius:8px;padding:20px;
  display:flex;flex-direction:column;gap:15px;box-shadow:var(--shadow);max-width:460px}
.formkarte .filter{max-width:none}
section > .formkarte{max-width:640px}

.aktionen{display:flex;flex-wrap:wrap;gap:6px}
.aktionen form{margin:0}
button.klein{font-size:12px;padding:5px 10px;font-family:var(--mono);font-weight:400}
button.still{background:transparent;color:var(--muted);border:1px solid var(--rule)}
button.still:hover{color:var(--accent);border-color:var(--accent);filter:none}

/* ---------- Kopfzeile mit Filter und Aktion ---------- */
.kopfzeile{display:flex;flex-wrap:wrap;gap:16px 24px;align-items:flex-end;justify-content:space-between}
.kopfzeile .filter{margin:0}
.knopf{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--display);font-weight:600;font-size:14px;text-decoration:none;
  padding:9px 18px;border-radius:6px;background:var(--accent);color:#fff;white-space:nowrap;
}
.knopf::before{content:"+";font-size:17px;line-height:1;font-weight:700}
.knopf:hover{filter:brightness(1.08)}
.knopf:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
