:root {
  --blau: #1d4e89; --hell: #f4f7fb; --gruen: #1e7d32; --rot: #b3261e;
  --rand: #d6dee8; --text: #1c1c1e;
}
* { box-sizing: border-box; }
body {
  margin: 0; background: var(--hell); color: var(--text);
  font-family: -apple-system, "Segoe UI", Roboto, sans-serif;
  font-size: 17px; line-height: 1.45;
}
main { max-width: 480px; margin: 0 auto; padding: 16px; }
main.breit { max-width: 1100px; }
header.app {
  background: var(--blau); color: #fff; padding: 14px 16px;
  display: flex; justify-content: space-between; align-items: center; gap: 8px;
}
header.app .titel { font-weight: 600; }
header.app a { color: #cfe0f5; text-decoration: none; font-size: 15px; }
h1 { font-size: 22px; } h2 { font-size: 18px; margin-top: 28px; }
.karte {
  background: #fff; border: 1px solid var(--rand); border-radius: 12px;
  padding: 16px; margin: 14px 0;
}
.meldung { border-radius: 10px; padding: 12px 14px; margin: 12px 0; font-weight: 500; }
.meldung.ok { background: #e6f4ea; color: var(--gruen); border: 1px solid #b7dfc0; }
.meldung.fehler { background: #fdeceb; color: var(--rot); border: 1px solid #f3c2bf; }
button, .knopf {
  display: inline-block; border: 0; border-radius: 10px; cursor: pointer;
  background: var(--blau); color: #fff; font-size: 17px; font-weight: 600;
  padding: 12px 18px; text-decoration: none; text-align: center;
}
button.gross { width: 100%; padding: 22px; font-size: 24px; border-radius: 14px; }
button.gruen { background: var(--gruen); }
button.rot { background: var(--rot); }
button.dezent, .knopf.dezent { background: #e8edf4; color: var(--blau); font-weight: 500; }
.namensliste { display: grid; gap: 10px; }
.namensliste .knopf { padding: 18px; font-size: 20px; }
input, select, textarea {
  width: 100%; font-size: 17px; padding: 10px 12px; margin: 4px 0 12px;
  border: 1px solid var(--rand); border-radius: 8px; background: #fff;
}
input.pin { font-size: 28px; text-align: center; letter-spacing: 8px; }
label { font-size: 15px; font-weight: 600; color: #444; }
table { width: 100%; border-collapse: collapse; background: #fff; font-size: 14px; }
th, td { border: 1px solid var(--rand); padding: 6px 8px; text-align: left; white-space: nowrap; }
th { background: #eef2f8; }
td.zahl, th.zahl { text-align: right; }
tr.wochenende td { background: #f7f7f7; color: #777; }
tr.feiertag td, tr.abwesend td { background: #fdf6e3; }
tr.warnung td { background: #fdeceb; }
.plus { color: var(--gruen); font-weight: 600; }
.minus { color: var(--rot); font-weight: 600; }
.saldo-box { font-size: 20px; text-align: center; }
.saldo-box .wert { font-size: 34px; font-weight: 700; display: block; margin-top: 4px; }
nav.admin { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0; }
nav.admin a { background: #fff; border: 1px solid var(--rand); border-radius: 8px;
  padding: 8px 12px; text-decoration: none; color: var(--blau); font-weight: 500; }
nav.admin a.aktiv { background: var(--blau); color: #fff; }
.zeile { display: flex; gap: 10px; align-items: end; flex-wrap: wrap; }
.zeile > div { flex: 1; min-width: 120px; }
.klein { font-size: 14px; color: #666; }
.status-punkt { display: inline-block; width: 12px; height: 12px; border-radius: 50%;
  margin-right: 6px; background: #bbb; }
.status-punkt.da { background: var(--gruen); }

@media print {
  header.app, nav.admin, .kein-druck, .meldung { display: none !important; }
  body { background: #fff; font-size: 12px; }
  main { max-width: none; padding: 0; }
  .karte { border: 0; padding: 0; }
  .druckumbruch { page-break-after: always; }
}
