/* app.css — heller DRK-Look mit dezentem Glasmorphismus.
   Angelehnt an die Patientenerfassung DRK Kaarst-Buettgen. */
:root {
  --red: #a8362f;
  --red-dark: #832a25;
  --bg1: #f4eef0;
  --bg2: #e9dee1;
  --text: #2a2326;
  --muted: #6f6469;
  --line: #ddd2d5;
  --field: #ffffff;
  --ok-bg: #e7f5ef;   --ok-bd: #9bd3bd;   --ok-fg: #1d6b50;
  --warn-bg: #fdf2e2; --warn-bd: #e9c38a; --warn-fg: #8a5a16;
  --err-bg: #fbe9e7;  --err-bd: #e3a59f;  --err-fg: #a3322c;
}
* { box-sizing: border-box; }
html, body {
  margin: 0; min-height: 100%;
  color: var(--text);
  font: 16px/1.55 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  background: linear-gradient(160deg, var(--bg1), var(--bg2)) fixed;
}
body { display: flex; justify-content: center; padding: 2.5rem 1rem 4rem; }

.wrap { width: 100%; max-width: 30rem; }
.wrap.wide { max-width: 46rem; }

/* Kopfleiste im DRK-Rot */
.appbar {
  background: linear-gradient(135deg, var(--red), var(--red-dark));
  color: #fff;
  border-radius: 16px 16px 0 0;
  padding: 1.1rem 1.4rem;
  box-shadow: 0 10px 30px rgba(131,42,37,.18);
}
.appbar h1 { margin: 0; font-size: 1.3rem; letter-spacing: .2px; }
.appbar .who { margin: .25rem 0 0; font-size: .85rem; opacity: .9; }

/* Karte mit Glas-Effekt */
.card {
  background: rgba(255,255,255,.72);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,.6);
  border-top: 0;
  border-radius: 0 0 16px 16px;
  padding: 1.5rem 1.4rem 1.8rem;
  box-shadow: 0 14px 40px rgba(80,40,40,.10);
}
.card.solo { border-top: 1px solid var(--line); border-radius: 16px; }

h2 { font-size: 1.1rem; margin: 0 0 .6rem; }
.sub { margin: .1rem 0 1.2rem; color: var(--muted); }
.intro { color: var(--muted); font-size: .92rem; margin: 0 0 1.3rem; }
.req { color: var(--red); font-weight: 700; }

/* Nummerierte Fragen */
.q { margin: 0 0 1.5rem; }
.q-head { display: flex; gap: .5rem; align-items: baseline; margin-bottom: .15rem; }
.q-num { color: var(--text); font-weight: 600; min-width: 1.4rem; }
.q-label { font-size: 1.05rem; font-weight: 500; }
.q-hint { color: var(--muted); font-size: .85rem; margin: 0 0 .55rem 1.9rem; }
.q-body { margin-left: 1.9rem; }
.q.has-error .q-body input,
.q.has-error .q-body textarea { border-color: var(--err-bd); background: #fff7f6; }
.field-err { color: var(--err-fg); font-size: .82rem; margin: .3rem 0 0 1.9rem; }

label.block { display: block; margin: 0 0 .9rem; font-size: .9rem; color: var(--muted); }
input, textarea, select {
  width: 100%; margin-top: .35rem;
  padding: .7rem .8rem;
  background: var(--field);
  border: 1px solid var(--line);
  border-radius: 10px;
  color: var(--text); font-size: 1rem; font-family: inherit;
}
textarea { min-height: 5.5rem; resize: vertical; }
input:focus, textarea:focus, select:focus { outline: 2px solid var(--red); outline-offset: 1px; }

/* Radio-Optionen */
.opt { display: flex; align-items: center; gap: .6rem; padding: .45rem 0; cursor: pointer; }
.opt input { width: auto; margin: 0; accent-color: var(--red); }
.opt span { font-size: 1rem; }

/* Checkbox-Zeile (Geburtsdatum unbekannt) */
.check { display: flex; align-items: center; gap: .55rem; margin-top: .6rem; cursor: pointer; }
.check input { width: auto; margin: 0; accent-color: var(--red); }
.check span { font-size: .95rem; color: var(--muted); }

.btn {
  display: inline-block; width: 100%;
  margin-top: .5rem; padding: .85rem 1rem;
  background: linear-gradient(135deg, var(--red), var(--red-dark));
  color: #fff; border: 0; border-radius: 10px;
  font-size: 1.02rem; font-weight: 600;
  text-align: center; text-decoration: none; cursor: pointer;
}
.btn:hover { filter: brightness(1.05); }
.btn.ghost { background: transparent; color: var(--red); border: 1px solid var(--red); }
.btn-row { display: flex; gap: .7rem; flex-wrap: wrap; }
.btn-row .btn { width: auto; flex: 1 1 auto; }

.notice { padding: .75rem .85rem; border-radius: 10px; margin: 0 0 1.1rem; font-size: .92rem; }
.notice.ok  { background: var(--ok-bg);  border: 1px solid var(--ok-bd);  color: var(--ok-fg); }
.notice.warn{ background: var(--warn-bg);border: 1px solid var(--warn-bd);color: var(--warn-fg); }
.notice.err { background: var(--err-bg); border: 1px solid var(--err-bd); color: var(--err-fg); }

.recovery {
  background: #fff; border: 1px dashed var(--red); border-radius: 10px;
  padding: .85rem; font-size: 1.1rem; letter-spacing: 1px;
  text-align: center; user-select: all; word-break: break-all;
}
code { background: #fff; padding: .1rem .35rem; border-radius: 5px; }
a { color: var(--red); }

/* Links in der Kopfleiste */
.appbar a { color: #fff; text-decoration: underline; }
.appbar .who a { opacity: .95; }

.spaced { margin-top: 1.2rem; }

/* ---- App-Shell (Topbar, Inhalt) ---- */
body.centered { display:flex; align-items:flex-start; justify-content:center; padding:7vh 1rem; }
.topbar {
  display:flex; align-items:center; gap:1rem; flex-wrap:wrap;
  padding:.7rem 1rem; background:var(--card); border-bottom:1px solid var(--line);
}
.topbar .brand { font-weight:700; color:var(--fg); text-decoration:none; font-size:1.1rem; }
.topbar nav { display:flex; align-items:center; gap:1rem; margin-left:auto; flex-wrap:wrap; }
.topbar nav a { color:var(--accent); text-decoration:none; }
.topbar nav .who { color:var(--muted); font-size:.85rem; }
.topbar nav .logout { color:var(--muted); }
.wrap { max-width:50rem; margin:0 auto; padding:1.4rem 1rem 3rem; }
.wrap h1 { font-size:1.5rem; margin:.2rem 0 0; }
.wrap h2 { font-size:1.15rem; margin:2rem 0 .6rem; border-top:1px solid var(--line); padding-top:1.2rem; }
.wrap h2.danger-h { color:var(--err); }
.form-note, .muted { color:var(--muted); font-size:.9rem; }
.nowrap { white-space:nowrap; }

/* ---- Frageblock (wie das DRK-Formular) ---- */
.qform { margin-top:1rem; }
.q { margin:0 0 1.6rem; }
.q-head { display:flex; gap:.5rem; align-items:baseline; }
.q-num { color:var(--muted); }
.q-label { font-size:1.05rem; color:var(--fg); }
.req { color:var(--err); }
.q-hint { color:var(--muted); font-size:.88rem; margin:.2rem 0 .5rem; }
.q input[type=text], .q input[type=date], .q input[type=time], .q input[type=number],
.q textarea, .q select {
  width:100%; margin-top:.5rem; padding:.65rem .7rem; background:#0f141b;
  border:1px solid var(--line); border-radius:9px; color:var(--fg); font-size:1rem;
}
.q textarea { resize:vertical; min-height:3rem; }
.q .radios { margin-top:.4rem; display:flex; flex-direction:column; gap:.5rem; }
.opt { display:inline-flex; align-items:center; gap:.5rem; color:var(--fg); font-size:1rem; cursor:pointer; }
.opt.unknown { margin-top:.5rem; color:var(--muted); }
.q.has-error input, .q.has-error textarea, .q.has-error select { border-color:var(--err); }
.q-err { color:var(--err); font-size:.85rem; margin-top:.35rem; }
label.check { display:flex; align-items:center; gap:.5rem; color:var(--fg); margin-bottom:.9rem; }

/* ---- Tabellen / Listen ---- */
.toolbar { display:flex; gap:.6rem; flex-wrap:wrap; margin:1rem 0; }
.table-wrap { overflow-x:auto; }
table.list { width:100%; border-collapse:collapse; font-size:.92rem; }
table.list th, table.list td { text-align:left; padding:.55rem .6rem; border-bottom:1px solid var(--line); vertical-align:top; }
table.list th { color:var(--muted); font-weight:600; }
table.list tr.deleted { opacity:.55; }
.link { color:var(--accent); text-decoration:none; }
form.inline { display:inline; }
dl.kv { display:grid; grid-template-columns:max-content 1fr; gap:.4rem 1rem; margin:1rem 0; }
dl.kv dt { color:var(--muted); }
dl.kv dd { margin:0; }

/* ---- Buttons (Varianten) ---- */
.btn.small { width:auto; margin-top:0; padding:.5rem .9rem; font-size:.9rem; }
.btn.tiny { width:auto; margin-top:0; padding:.3rem .55rem; font-size:.85rem; }
.btn.danger { background:var(--err); color:#1a0606; }
.btn.ghost { background:transparent; color:var(--fg); border:1px solid var(--line); }
.qform .btn.ghost { width:auto; display:inline-block; margin-left:.5rem; }
