/* Impfmodul (pages/impfen.js) */
.impf { max-width: 1100px; margin: auto; }
.impf-head, .impf-tabs, .impf-actions, .impf-row-flex, .impf-filter, .impf-case-head { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.impf-head { justify-content: space-between; margin-bottom: 12px; }
.impf-head h2 { margin: 0 0 4px; }
.impf-head p { margin: 0; color: var(--v2-text-muted); }
.impf-tabs { margin-bottom: 12px; }
.impf-tabs .active { border-color: #9ACD32; background: #9acd3222; }
.impf-error { color: var(--v2-danger, #c0392b); font-weight: 600; }
.impf-filter { margin-bottom: 12px; align-items: flex-end; }
.impf-filter label, .impf-form label { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--v2-text-secondary); }
.impf input, .impf select, .impf textarea, .impf-patient input, .impf-patient select, .impf-patient textarea {
  font: inherit; padding: 8px 10px; border: 1px solid var(--v2-border-default, #8886); border-radius: 8px; background: var(--v2-bg-surface); color: var(--v2-text-primary); }
.impf-row { width: 100%; display: grid; grid-template-columns: 130px 1fr 190px 210px; gap: 12px; align-items: center; text-align: left; padding: 12px 14px; margin: 4px 0;
  border: 1px solid var(--v2-border-subtle, #8884); border-radius: 9px; background: var(--v2-bg-surface); color: inherit; cursor: pointer; font: inherit; }
.impf-row:hover { border-color: #9ACD32; background: #9acd3212; }
.impf-nr { font-weight: 700; }
.impf-when { color: var(--v2-text-muted); font-size: 13px; }
.impf-badge { display: inline-block; padding: 3px 10px; border-radius: 99px; font-size: 12px; font-weight: 600; background: var(--v2-bg-sunken); }
.impf-s-patient, .impf-s-pruefung { background: #fff3bf; color: #5c4400; }
.impf-s-freigegeben { background: #dbeafe; color: #1e3a8a; }
.impf-s-abgeschlossen { background: #dcfce7; color: #14532d; }
.impf-s-nicht_geimpft { background: #f3f4f6; color: #374151; }
.impf-test { color: #b00000; font-style: normal; font-size: 12px; border: 1px dashed #b00000; padding: 0 6px; border-radius: 6px; }
.impf-warn, .impf-no { color: #b00000; font-weight: 700; }
.impf-ok { color: #15803d; font-weight: 600; }
.impf-empty, .impf-hint { color: var(--v2-text-muted); font-size: 13px; }
.impf-box { border: 1px solid var(--v2-border-subtle, #8884); border-radius: 10px; padding: 14px 16px; margin: 12px 0; background: var(--v2-bg-surface); }
.impf-box h4 { margin: 4px 0 10px; }
.impf-box summary { cursor: pointer; font-weight: 600; }
.impf-warnbox { border: 1px solid #f59e0b; background: #fffbeb; color: #5c4400; border-radius: 8px; padding: 10px 12px; margin: 8px 0; }
.impf-start { border-color: #9ACD32; }
.impf-big { font-size: 16px; padding: 12px 22px; }
.impf-case-head h3 { margin: 0; }
.impf-form { display: flex; flex-direction: column; gap: 12px; }
.impf-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.impf-grid .impf-wide { grid-column: span 2; }
.impf-check { flex-direction: row !important; align-items: center; gap: 10px !important; font-size: 15px !important; color: var(--v2-text-primary) !important; }
.impf-check input { width: 22px; height: 22px; }
.impf-sigwrap { display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; }
.impf-sig { max-width: 100%; height: auto; background: #fff; border: 2px dashed #9998; border-radius: 8px; touch-action: none; display: block; }
.impf-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.impf-table th, .impf-table td { padding: 7px 8px; border-bottom: 1px solid var(--v2-border-subtle, #8883); text-align: left; vertical-align: top; }
.impf-kv th { width: 200px; color: var(--v2-text-secondary); font-weight: 600; }
.impf-scroll { overflow-x: auto; }
.impf-doc { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin: 6px 0; }

/* Patientenmodus: Vollbild über dem Dashboard, große Bedienelemente fürs iPad */
body.impf-patient-open { overflow: hidden; }
.impf-patient [hidden], .impf [hidden] { display: none !important; }
.impf-patient { position: fixed; inset: 0; z-index: 10000; background: #f7f9f2; color: #1a1a1a; overflow-y: auto; -webkit-overflow-scrolling: touch; font-size: 17px; }
.impf-p-inner { max-width: 860px; margin: 0 auto; padding: 20px 20px 80px; }
.impf-p-top { display: flex; justify-content: space-between; align-items: center; gap: 12px; border-bottom: 3px solid #9ACD32; padding-bottom: 10px; margin-bottom: 18px; font-size: 14px; }
.impf-hold { border: 1px solid #bbb; background: #fff; color: #666; border-radius: 8px; padding: 8px 12px; font-size: 12px; position: relative; overflow: hidden; user-select: none; -webkit-user-select: none; }
.impf-hold.holding::after { content: ""; position: absolute; left: 0; bottom: 0; height: 3px; background: #9ACD32; animation: impf-hold 2s linear forwards; }
@keyframes impf-hold { from { width: 0; } to { width: 100%; } }
.impf-patient h2 { font-size: 26px; margin: 6px 0; }
.impf-patient h3 { font-size: 19px; margin: 0 0 12px; padding: 4px 10px; background: #eef5dc; border-left: 4px solid #9ACD32; }
.impf-patient section { background: #fff; border-radius: 12px; padding: 16px 18px; margin: 16px 0; box-shadow: 0 1px 3px #0001; }
.impf-patient label { display: flex; flex-direction: column; gap: 6px; font-size: 15px; color: #333; }
.impf-patient input, .impf-patient select, .impf-patient textarea { font-size: 18px; padding: 12px; background: #fff; color: #111; border-color: #bbb; }
.impf-p-lead { color: #555; }
.impf-yn { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 12px 0; border-bottom: 1px solid #eee; }
.impf-yn > span { flex: 1; }
.impf-yn-btns { display: flex; gap: 8px; }
.impf-yn-btns button { min-width: 76px; min-height: 48px; font-size: 17px; border-radius: 10px; border: 2px solid #ccc; background: #fff; color: #333; }
.impf-yn-btns button.on[data-yn-val="ja"] { border-color: #b45309; background: #fef3c7; color: #78350f; font-weight: 700; }
.impf-yn-btns button.on[data-yn-val="nein"] { border-color: #65a30d; background: #ecfccb; color: #365314; font-weight: 700; }
.impf-consent { display: flex; flex-direction: column; gap: 10px; }
.impf-consent label { flex-direction: row; align-items: flex-start; gap: 12px; font-size: 17px; color: #111; padding: 12px; border: 2px solid #ddd; border-radius: 10px; }
.impf-consent input { width: 24px; height: 24px; margin-top: 2px; }
.impf-p-check { font-size: 17px !important; color: #111 !important; }
.impf-p-submit { width: 100%; font-size: 20px; padding: 16px; margin-top: 8px; }
.impf-p-done { text-align: center; padding: 80px 20px; }
.impf-p-done h2 { font-size: 34px; color: #4d7c0f; }
@media (max-width: 720px) {
  .impf-row { grid-template-columns: 1fr; gap: 4px; }
  .impf-grid .impf-wide { grid-column: auto; }
  .impf-yn { flex-direction: column; align-items: stretch; }
}
