:root{
  --black:#000; --grey:#6d6d6d; --grey-xl:#f4f4f4; --line:#dcdcdc; --text:#111;
  --red:#d32f2f; --red-bg:#fdecec; --yellow:#c98a00; --yellow-bg:#fff6e0;
  /* Text-Varianten für Schrift auf hellen Tint-Flächen (WCAG-AA ≥4.5). Die
     helleren --red/--yellow bleiben für Swatches, Rahmen und Icons erhalten. */
  --red-text:#c62222; --yellow-text:#8a5d00;
  --green:#2e7d32; --green-bg:#e8f5e9; --blue:#1565c0; --blue-bg:#e7f0fb;
  --neutral:#9e9e9e; --neutral-bg:#f2f2f2; --violet:#6a1b9a; --violet-bg:#f2e9fb;
  --text-light:#6d6d6d; --grey-m:#ececec;
  --font:'Helvetica Neue',Helvetica,Arial,sans-serif;
  /* Vorgeschlagene 5-Stufen-Typoskala (Prototyp – noch nicht flächig verdrahtet).
     Ziel: die ~10 Ad-hoc-Größen zwischen 8–14,5px auf feste Stufen abbilden. */
  --fs-meta:11px;   /* Captions, Hinweise, Sub-Badges          */
  --fs-sm:13px;     /* dichte Fließtexte, Tabellenzellen, Chips */
  --fs-base:15px;   /* Standard-Fließtext                       */
  --fs-h2:17px;     /* Abschnittsüberschriften                  */
  --fs-title:22px;  /* Seiten-/Modal-Titel                      */
  /* Radius-Token: 4-Stufen-Skala + Pille (Kreise bleiben 50%). */
  --radius-xs:4px; --radius-sm:6px; --radius-md:8px; --radius-lg:12px; --radius-card:14px; --radius-pill:999px;
}
*{box-sizing:border-box;}
html{scrollbar-gutter:stable;}
body{margin:0;font-family:var(--font);color:var(--text);background:var(--grey-xl);font-size:var(--fs-base);line-height:1.55;}
header{background:#fff;border-bottom:2px solid var(--black);padding:14px 28px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:50;}
.brand{display:flex;align-items:center;gap:16px;}
.brand svg{height:34px;width:auto;display:block;}
.brand .divider{width:1px;height:30px;background:var(--line);}
.brand .app-title{font-size:var(--fs-base);font-weight:600;}
.brand .app-sub{font-size:var(--fs-meta);color:var(--grey);letter-spacing:.06em;text-transform:uppercase;}
.header-right{display:flex;align-items:center;gap:18px;flex-wrap:wrap;}
.login-box{display:flex;align-items:center;gap:6px;font-size:var(--fs-sm);font-weight:600;}
.login-box input{width:180px;padding:6px 9px;border:1px solid var(--line);border-radius:var(--radius-sm);font-size:var(--fs-sm);}
.login-box input:focus{outline:none;border-color:var(--black);}
.lang-toggle{display:inline-flex;align-items:center;gap:2px;background:var(--grey-xl);border:1px solid var(--line);border-radius:var(--radius-md);padding:3px 5px 3px 9px;}
.lang-toggle .lang-globe{color:var(--grey);margin-right:5px;flex:none;}
.lang-toggle button{display:inline-flex;align-items:center;cursor:pointer;user-select:none;background:transparent;padding:5px 10px;border-radius:var(--radius-sm);border:none;transition:background .12s,color .12s,box-shadow .12s;font-size:var(--fs-sm);font-family:var(--font);color:var(--grey);font-weight:700;letter-spacing:.02em;}
.lang-toggle button:hover{color:var(--black);}
.lang-toggle button.active{color:var(--black);background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.12);}
.shell{max-width:1560px;margin:0 auto;padding:0 20px;display:flex;align-items:flex-start;gap:22px;}
body.clinic-idle { overflow: hidden; }
body.clinic-idle .shell { align-items: stretch; height: calc(100vh - 80px); }
body.clinic-idle main { display: flex; flex-direction: column; overflow: hidden; padding-bottom: 20px; max-width: none; margin: 0; flex: 1; min-width: 0; }
body.clinic-idle #list-card { display: flex; flex-direction: column; flex: 1; min-height: 0; margin-bottom: 0; }
body.clinic-idle #patient-list { display: flex; flex-direction: column; flex: 1; min-height: 0; }
main{flex:1 1 auto;min-width:0;max-width:1080px;margin:0 auto;padding:24px 0 90px;}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius-card);padding:22px 24px;margin-bottom:22px;scroll-margin-top:78px;}
.card h2{margin:0 0 4px;font-size:var(--fs-h2);font-weight:700;}
.card h2.sec-h{display:flex;align-items:center;}
.card h2.sec-h .price-info-btn{margin-left:auto;}
.card .card-desc{color:var(--grey);font-size:var(--fs-sm);margin-bottom:18px;}
.step-badge{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;background:var(--black);color:#fff;border-radius:var(--radius-md);font-size:var(--fs-sm);font-weight:700;margin-right:10px;}
.grid{display:grid;gap:16px;} .g4{grid-template-columns:repeat(4,1fr);} .g3{grid-template-columns:repeat(3,1fr);} .g2{grid-template-columns:repeat(2,1fr);}
label.fld{display:block;font-size:var(--fs-sm);font-weight:600;margin-bottom:5px;color:#333;}
/* Mehrspaltige Formularraster: Eingabefelder sauber ausrichten, auch wenn Labels ein-/zweizeilig sind.
   Jede Zelle ist eine Flex-Spalte; das Label wächst, sodass die Eingabefelder auf gleicher Höhe stehen. */
/* Feld über zwei Rasterspalten – hält Folgezeilen bündig zum 3-Spalten-Raster darüber,
   statt sie auf ein eigenes 2-Spalten-Raster zu setzen. */
.grid-span2{grid-column:span 2;}
@media(max-width:640px){ .grid-span2{grid-column:span 1;} }
.grid > div{display:flex;flex-direction:column;}
.grid > div > label.fld{flex:1 1 auto;line-height:1.25;}
/* Immunstatus: unter einzelnen Feldern können VacCheck-Ergebnisboxen erscheinen. Zellen oben
   ausrichten, damit die Eingabefelder in einer Reihe bleiben und nicht nach unten rutschen,
   sobald rechts (z. B. bei Auswahl einer chronischen Erkrankung) eine Box eingeblendet wird. */
#step3 .grid{align-items:start;}
#step3 .grid > div > label.fld{flex:0 0 auto;min-height:2.5em;}
/* Reise: gleiche Ausrichtung wie Immunstatus – sonst schieben unterschiedlich hohe Zellen
   (Hint-Zeilen unter Datum/Reiseziel) die Eingabefelder vertikal auseinander. */
#step2 .grid{align-items:start;}
#step2 .grid > div > label.fld{flex:0 0 auto;min-height:2.5em;}
/* Kiosk: Pflichtfeld-Markierung + deaktivierter Weiter-Button. */
.kiosk-bar .btn:disabled{opacity:.4;cursor:not-allowed;}
.field-missing{border-color:var(--red)!important;box-shadow:0 0 0 2px rgba(211,47,47,.15);}
.card-sub{font-size:var(--fs-meta);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--grey);padding-bottom:6px;margin-bottom:14px;border-bottom:1px solid var(--line);}
.chk-grid{display:flex;flex-wrap:wrap;gap:8px;}
.chk-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px;}
/* align-items:center statt flex-start: die Kästchen haben eine Mindesthöhe von 46 px,
   bei einzeiliger Beschriftung klebten Kästchen und Text dadurch oben und ließen darunter
   einen leeren Streifen – das sah verrutscht aus. Jetzt sitzt beides mittig, ein- wie
   zweizeilig. Das margin-top am Kästchen war nur eine Korrektur der alten Ausrichtung. */
.chk-row .chk-chip{flex:1 1 0;min-width:190px;justify-content:flex-start;align-items:center;min-height:46px;line-height:1.35;}
.chk-row .chk-chip input[type=checkbox]{flex:0 0 auto;}
.chk-chip{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:var(--radius-md);padding:9px 13px;cursor:pointer;font-size:var(--fs-sm);background:#fff;transition:border-color .12s,background .12s;user-select:none;}
.chk-chip:hover{border-color:#aaa;}
.chk-chip:has(input:checked){border-color:var(--black);background:var(--grey-xl);font-weight:600;}
input[type=text],input[type=date],input[type=number],input[type=email],input[type=password],select,textarea{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);font-family:var(--font);font-size:16px;background:#fff;}
input[type=text],input[type=date],input[type=number],input[type=email],input[type=password],select{height:44px;}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--black);}
input[type=checkbox]{width:19px;height:19px;cursor:pointer;accent-color:#000;vertical-align:middle;}
.hint{font-size:var(--fs-meta);color:var(--grey);margin-top:3px;}
.age-box{display:flex;align-items:center;gap:8px;margin-top:6px;padding:7px 12px;background:var(--black);color:#fff;border-radius:var(--radius-sm);font-weight:700;font-size:var(--fs-base);min-height:36px;}
.age-box.empty{background:var(--grey-xl);color:var(--grey);font-weight:500;font-size:var(--fs-sm);}
.age-box .yob{font-weight:400;font-size:var(--fs-meta);opacity:.85;}
.age-box.child{background:#0d3b66;}
h2 .age-box{margin-top:0;padding:5px 12px;font-size:var(--fs-sm);min-height:32px;font-weight:700;}
h2 .age-box.empty{font-size:var(--fs-meta);font-weight:500;}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.chip{background:var(--black);color:#fff;border-radius:var(--radius-lg);padding:4px 10px 4px 12px;font-size:var(--fs-sm);display:flex;align-items:center;gap:7px;}
.chip span{cursor:pointer;font-weight:700;opacity:.75;} .chip span:hover{opacity:1;} .chip.mand{background:var(--red);}
.btn{background:var(--black);color:#fff;border:none;border-radius:var(--radius-sm);padding:10px 18px;font-size:var(--fs-sm);font-weight:600;cursor:pointer;font-family:var(--font);}
.btn:hover{background:#333;} .btn.sec{background:#fff;color:var(--black);border:1px solid var(--black);} .btn.sec:hover{background:var(--grey-xl);}
.btn.danger{background:#fff;color:var(--red);border:1px solid var(--red);} .btn.danger:hover{background:var(--red-bg);} .btn.sm{padding:6px 12px;font-size:var(--fs-sm);}
.row-flex{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;}
.pae-toggle{display:none;margin-top:14px;padding:11px 15px;background:#eaf2fb;border:1px solid #bcd6f2;border-radius:var(--radius-md);font-size:var(--fs-sm);align-items:center;gap:10px;}
.pae-toggle.show{display:flex;}
.legend{display:flex;flex-wrap:wrap;gap:14px;margin:6px 0 16px;font-size:var(--fs-sm);}
.legend .lg{display:flex;align-items:center;gap:6px;}
.dot{width:13px;height:13px;border-radius:var(--radius-xs);border:1px solid rgba(0,0,0,.15);}
.dot.red{background:var(--red);} .dot.yellow{background:var(--yellow);} .dot.green{background:var(--green);} .dot.grey{background:var(--neutral);} .dot.blue{background:var(--blue);} .dot.violet{background:var(--violet);}
/* Impfstatus-Tabelle im hellen Karten-Stil (kohärent mit dem übrigen UI): heller Kopf statt schwarzer Balken, gerundeter Rahmen. */
table.vax{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--fs-sm);table-layout:fixed;border:1px solid #e6e6e6;border-radius:var(--radius-lg);overflow:hidden;background:#fff;}
table.vax th,table.vax td{border-bottom:1px solid #f2f2f2;padding:12px 14px;text-align:left;vertical-align:top;}
table.vax thead th{font-size:var(--fs-meta);text-transform:uppercase;letter-spacing:.05em;color:#9a9a9a;font-weight:700;background:#fafafa;border-bottom:1px solid #eee;vertical-align:middle;}
table.vax tbody tr:last-child td{border-bottom:none;}
table.vax th:nth-child(1), table.vax td:nth-child(1) { width: 25%; }
table.vax th:nth-child(2), table.vax td:nth-child(2) { width: 31%; }
table.vax th:nth-child(3), table.vax td:nth-child(3) { width: 17%; }
table.vax th:nth-child(4), table.vax td:nth-child(4) { width: 27%; }
table.vax tbody tr:hover{background:#f6f8fb;}
table.vax tbody tr{transition:background .1s;}
/* Kompaktere, ruhigere Eingaben in der Impfstatus-Tabelle */
table.vax input[type=text],table.vax input[type=number],table.vax select{height:38px;max-width:160px;border-radius:var(--radius-sm);}
table.vax input:focus,table.vax select:focus{outline:none;border-color:var(--black);box-shadow:0 0 0 3px rgba(0,0,0,.05);}
table.vax input::placeholder{color:#cfcfcf;letter-spacing:.06em;}
table.vax .age-box{max-width:none;}
.combo-row{background:#fafafa;}
.badge{display:inline-block;padding:3px 9px;border-radius:var(--radius-lg);font-size:var(--fs-meta);font-weight:700;white-space:nowrap;}
.badge.red{background:var(--red-bg);color:var(--red-text);} .badge.yellow{background:var(--yellow-bg);color:var(--yellow-text);} .badge.green{background:var(--green-bg);color:var(--green);} .badge.grey{background:var(--neutral-bg);color:#666;} .badge.blue{background:var(--blue-bg);color:var(--blue);} .badge.violet{background:var(--violet-bg);color:var(--violet);} .badge.red-strong{background:var(--red);color:#fff;}
.badge.mand{background:var(--red);color:#fff;margin-left:5px;} .badge.live{background:#efe6fb;color:#5b2a9e;margin-left:5px;}
/* Empfehlungs-Skala im Impfstatus: farbiger Punkt vor dem Label (Pflicht = solide, ohne Punkt) */
table.vax .status .badge{display:inline-flex;align-items:center;gap:6px;}
table.vax .status .badge::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;flex:none;}
table.vax .status .badge.red-strong::before,table.vax .status .badge.grey::before{opacity:.55;}
table.vax .status .badge.mand::before,table.vax .status .badge.plan::before,table.vax .status .badge.live::before{display:none;}
.badge.plan{border:1px dashed var(--violet);color:var(--violet);background:#fff;margin-left:5px;}
.badge.plan.today{border-color:var(--green);color:var(--green);}
.sub-badge{display:flex;align-items:center;gap:6px;margin-bottom:3px;font-size:var(--fs-meta);}
.sub-badge b{min-width:42px;display:inline-block;}
.comp-badges{display:flex;flex-wrap:wrap;gap:4px;}
.comp{display:inline-flex;align-items:center;border-radius:var(--radius-sm);padding:3px 7px;font-size:var(--fs-meta);font-weight:700;min-width:32px;justify-content:center;}
.comp.red{background:var(--red-bg);color:var(--red-text);} .comp.yellow{background:var(--yellow-bg);color:var(--yellow-text);} .comp.green{background:var(--green-bg);color:var(--green);} .comp.blue{background:var(--blue-bg);color:var(--blue);} .comp.grey{background:var(--neutral-bg);color:#666;}
.vax .vname{font-weight:600;font-size:var(--fs-sm);} .vax .vsub{font-size:var(--fs-meta);color:var(--grey);}
.vax .reason{font-size:var(--fs-meta);color:var(--grey);margin-top:3px;} .vax .status .reason{max-width:230px;}
.dose-chips{display:flex;flex-wrap:wrap;gap:4px;max-width:180px;}
.dose-chip{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 11px;font-size:var(--fs-sm);cursor:pointer;color:#555;user-select:none;min-width:38px;min-height:38px;text-align:center;}
.dose-chip:hover{border-color:var(--black);} .dose-chip.selected{background:var(--black);color:#fff;border-color:var(--black);font-weight:700;}
.year-in{width:150px;max-width:100%;padding:6px 8px;font-size:var(--fs-base);text-align:center;border:1px solid var(--line);border-radius:var(--radius-sm);box-sizing:border-box;}
.year-in:focus{outline:none;border-color:var(--black);}
.hexa-sel{width:56px;padding:6px 6px;font-size:var(--fs-base);border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff;}
.yr-row{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.yr-row span{color:var(--grey);}
/* Tdap-IPV/Polio-Eingabe: Grundimmunisierung + letzte Auffrischung als Chips (kohärent mit dem UI) */
.tdap-lbl{font-size:var(--fs-meta);font-weight:700;color:#555;text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;}
.tdap-hint{font-size:var(--fs-meta);color:var(--grey);}
.seg-group{display:inline-flex;flex-wrap:wrap;gap:6px;}
.seg-chip{border:1px solid var(--line);background:#fff;color:var(--grey);border-radius:var(--radius-sm);padding:5px 11px;font-size:var(--fs-meta);font-weight:600;cursor:pointer;font-family:var(--font);transition:border-color .12s,background .12s,color .12s;}
.seg-chip:hover{border-color:#aaa;color:var(--text);}
.seg-chip.on{background:var(--black);color:#fff;border-color:var(--black);}
.tdap-yrs{display:flex;flex-direction:column;gap:6px;margin-top:2px;}
.tdap-yrs .yr-row span{min-width:32px;font-size:var(--fs-meta);font-weight:600;color:var(--grey);}
.tdap-yrs .year-in{width:100%;max-width:120px;}
/* Einheitliche Aktions-Icons (Stift/X) für Impfstatus-Terminplan + Patientenliste */
/* Klickfläche mind. ~38px (Tablet-tauglich, WCAG-2.2 Zielgröße) – Glyph bleibt 15px. */
.icon-btn{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;color:var(--grey);opacity:.55;padding:4px;min-width:38px;min-height:38px;background:none;border:none;font-size:var(--fs-base);line-height:1;transition:opacity .15s,color .15s;}
.icon-btn:hover{opacity:1;}
.icon-btn.del:hover{color:var(--red);}
.icon-btn.invite:hover{color:var(--blue);}
/* Einheitliche Dropdowns (Breite via Klasse; Padding/Schrift erben von der Basisregel) */
select.year{width:100px;} select.prod,select.mini{width:100%;max-width:240px;margin-top:6px;}
.appt-row{display:flex;flex-wrap:wrap;gap:4px;max-width:230px;}
.appt-chip{border:1px solid var(--line);border-radius:var(--radius-lg);padding:4px 10px;font-size:var(--fs-meta);cursor:pointer;color:#555;user-select:none;white-space:nowrap;}
.appt-chip:hover{border-color:var(--black);}
.hep-appt{margin-bottom:7px;} .hep-appt .hep-lbl{font-size:var(--fs-meta);font-weight:700;display:block;margin-bottom:2px;}
.ext-btn{margin-top:7px;border:1px solid var(--line);background:#fff;border-radius:var(--radius-lg);padding:5px 12px;font-size:var(--fs-meta);cursor:pointer;color:#555;font-family:var(--font);}
.ext-btn:hover{border-color:var(--black);color:var(--black);} .ext-btn.on{background:var(--black);color:#fff;border-color:var(--black);font-weight:700;}
.appt-overview{margin-top:18px;}
.ao-title{font-size:var(--fs-sm);font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;}
.ao-slot{border-left:4px solid var(--line);background:#fafafa;border-radius:0 6px 6px 0;padding:8px 12px;margin-bottom:7px;}
.ao-head{font-weight:700;font-size:var(--fs-sm);} .ao-head .ao-gap{font-weight:400;font-size:var(--fs-meta);color:var(--grey);}
.ao-prov{font-size:var(--fs-sm);margin-top:2px;} .ao-prov span{font-weight:700;}
.ao-dep{margin-top:8px;font-size:var(--fs-sm);background:#eef5fc;border:1px solid #bcd6f2;border-radius:var(--radius-sm);padding:8px 12px;}
.chk-line{display:flex;align-items:center;gap:6px;font-size:var(--fs-meta);margin-top:6px;color:#333;cursor:pointer;}
.prov-label{font-size:var(--fs-meta);color:var(--grey);margin-top:6px;text-transform:uppercase;letter-spacing:.03em;}
.info-btn{display:inline-flex;align-items:center;justify-content:center;margin-left:8px;background:none;border:none;padding:1px;cursor:pointer;color:var(--grey);vertical-align:middle;}
.info-btn:hover{color:var(--black);}
.info-btn svg{width:19px;height:19px;}
.ctrl-box{margin-top:8px;font-size:var(--fs-meta);font-weight:normal;color:#333;}
.today-chk{width:20px;height:20px;cursor:pointer;accent-color:#2e7d32;}
.warn-box{border-left:4px solid var(--red);background:var(--red-bg);padding:12px 16px;border-radius:var(--radius-sm);margin-top:14px;font-size:var(--fs-sm);}
.warn-box.amber{border-color:var(--yellow);background:var(--yellow-bg);} .warn-box.info{border-color:var(--blue);background:var(--blue-bg);} .warn-box.grey{border-color:var(--grey);background:var(--grey-xl);}
.warn-box h4{margin:0 0 6px;font-size:var(--fs-sm);} .warn-box ul{margin:4px 0 0;padding-left:18px;}
.today-warn{margin:0 0 14px;padding:11px 16px;border-radius:var(--radius-sm);font-size:var(--fs-sm);font-weight:600;display:none;}
.today-warn.show{display:block;}
.today-warn.yellow{background:var(--yellow-bg);color:var(--yellow);border-left:4px solid var(--yellow);}
.today-warn.red{background:var(--red-bg);color:var(--red);border-left:4px solid var(--red);}
.editing-banner{display:none !important;}
/* Schwarzes Patienten-Kontextbanner am Kopf des Behandlungsfensters */
.patient-banner-ctx{display:flex;align-items:center;gap:14px;background:var(--black);color:#fff;border-radius:var(--radius-lg);padding:13px 18px;margin:0 0 16px;scroll-margin-top:78px;}
.patient-banner-ctx .pbn-av{flex:none;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--radius-md);color:#fff;font-size:13px;font-weight:700;}
.patient-banner-ctx .pbn-main{flex:1 1 auto;min-width:0;}
.patient-banner-ctx .pbn-nm-row{display:flex;align-items:baseline;gap:9px;flex-wrap:wrap;}
.patient-banner-ctx .pbn-nm{font-size:var(--fs-h2);font-weight:700;letter-spacing:-.01em;}
.patient-banner-ctx .pbn-sub{font-size:var(--fs-sm);color:#b9b9b9;}
.patient-banner-ctx .pbn-status{font-size:var(--fs-sm);color:#b9b9b9;margin-top:2px;}
.patient-banner-ctx .pbn-ctx{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:6px;}
.patient-banner-ctx .pbn-ctxtxt{font-size:var(--fs-meta);color:#cfcfcf;}
.patient-banner-ctx .pbn-flag{font-size:var(--fs-meta);font-weight:700;background:rgba(255,183,77,.18);color:#ffcf87;border-radius:var(--radius-sm);padding:2px 8px;}
.patient-banner-ctx .pbn-type{flex:none;font-size:var(--fs-meta);font-weight:700;border-radius:var(--radius-sm);padding:4px 10px;background:var(--blue);color:#fff;}
.patient-banner-ctx .pbn-type.folgeimpfung{background:#0e9e8e;}
.patient-banner-ctx .pbn-btn{flex:none;background:#fff;color:var(--black);border:none;border-radius:var(--radius-sm);padding:9px 16px;font-size:var(--fs-sm);font-weight:600;cursor:pointer;font-family:var(--font);}
.patient-banner-ctx .pbn-btn:hover{background:var(--grey-xl);}
.patient-banner-ctx .pbn-btn.ghost{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.4);}
.patient-banner-ctx .pbn-btn.ghost:hover{background:rgba(255,255,255,.12);}

/* Folgeimpfung: „Fällig heute"-Fokusbanner für erkannte Wiederkehrer */
.folge-banner{display:none;}
.folge-banner.show{display:block;margin:0 0 16px;padding:14px 16px;border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:var(--radius-md);background:var(--blue-bg);}
.folge-banner .fb-head{display:flex;align-items:center;gap:7px;font-weight:700;font-size:var(--fs-base);color:var(--blue);margin-bottom:8px;}
.folge-banner .fb-list{list-style:none;margin:0 0 6px;padding:0;display:flex;flex-direction:column;gap:5px;}
.folge-banner .fb-list li{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:var(--fs-base);color:var(--text);}
.folge-banner .fb-dot{width:8px;height:8px;border-radius:50%;background:var(--blue);flex:0 0 auto;}
.folge-banner .fb-li-warn .fb-dot{background:var(--red);}
.folge-banner .fb-nm{font-weight:600;}
.folge-banner .fb-warn{font-size:var(--fs-sm);font-weight:600;color:var(--red);background:var(--red-bg);border:1px solid #f5c2c2;border-radius:var(--radius-sm);padding:2px 8px;}
.folge-banner .fb-ext{margin-left:auto;background:#fff;border:1px solid var(--line);color:var(--grey);border-radius:var(--radius-sm);padding:2px 9px;font-size:var(--fs-meta);font-weight:600;cursor:pointer;font-family:var(--font);white-space:nowrap;}
.folge-banner .fb-ext:hover{border-color:var(--blue);color:var(--blue);}
.folge-banner .fb-next{font-size:var(--fs-sm);color:var(--grey);margin-top:2px;}
.folge-banner .fb-next strong{color:var(--text);}
.folge-banner .fb-prev{margin-top:9px;padding-top:9px;border-top:1px dashed var(--line);font-size:var(--fs-sm);color:var(--grey);}
.folge-banner .fb-prev-l{font-weight:600;color:var(--grey);margin-right:4px;}
.folge-banner .fb-chip{display:inline-block;background:var(--green-bg);color:var(--green);border:1px solid #bfe0c2;border-radius:var(--radius-sm);padding:2px 8px;margin:2px 3px 0 0;font-weight:600;}
.folge-banner .fb-prevbtn{margin-left:auto;background:#fff;border:1px solid var(--blue);color:var(--blue);border-radius:var(--radius-sm);padding:4px 10px;font-size:var(--fs-sm);font-weight:600;cursor:pointer;font-family:var(--font);}
.folge-banner .fb-prevbtn:hover{background:var(--blue);color:#fff;}

/* Folgeimpfung: Nur-Lese-Ansicht der letzten Konsultation */
.folge-prev-bg{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;padding:24px;}
.folge-prev-modal{background:#fff;border-radius:var(--radius-lg);max-width:560px;width:100%;max-height:86vh;overflow:auto;box-shadow:0 12px 44px rgba(0,0,0,.22);}
.folge-prev-modal .fp-head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line);position:sticky;top:0;background:#fff;border-radius:var(--radius-lg) 14px 0 0;}
.folge-prev-modal .fp-title{font-weight:700;font-size:var(--fs-base);}
.folge-prev-modal .fp-x{margin-left:auto;background:none;border:none;font-size:18px;color:var(--grey);cursor:pointer;line-height:1;padding:2px 6px;}
.folge-prev-modal .fp-x:hover{color:var(--text);}
.folge-prev-modal .fp-note{padding:10px 20px 0;font-size:var(--fs-sm);color:var(--grey);}
.folge-prev-modal .fp-body{padding:8px 20px 20px;}
.folge-prev-modal .fp-sec-h{display:flex;align-items:center;gap:8px;margin:16px 0 8px;font-weight:700;font-size:var(--fs-sm);color:var(--text);}
.folge-prev-modal .fp-badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;background:var(--grey-xl);border:1px solid var(--line);font-size:var(--fs-meta);font-weight:700;color:var(--grey);}
.folge-prev-modal .fp-row{display:flex;gap:12px;padding:5px 0;border-bottom:1px dashed var(--line);font-size:var(--fs-sm);}
.folge-prev-modal .fp-k{flex:0 0 42%;color:var(--grey);}
.folge-prev-modal .fp-v{flex:1;color:var(--text);}
.folge-prev-modal .fp-given{display:flex;flex-wrap:wrap;gap:6px;}
.folge-prev-modal .fp-chip{display:inline-block;background:var(--green-bg);color:var(--green);border:1px solid #bfe0c2;border-radius:var(--radius-sm);padding:3px 9px;font-size:var(--fs-sm);font-weight:600;}
.folge-prev-modal .fp-none{color:var(--grey);font-size:var(--fs-sm);}
.folge-prev-modal .fp-statrow .fp-v{display:flex;align-items:center;flex-wrap:wrap;gap:7px;justify-content:flex-end;}
.folge-prev-modal .fp-statrow .fp-v-detail{flex:1 1 auto;color:var(--text);}
.folge-prev-modal .fp-statrow-given{background:var(--green-bg);border-radius:var(--radius-sm);margin:0 -6px;padding-left:6px;padding-right:6px;}
.folge-prev-modal .fp-given-tag{font-size:var(--fs-meta);font-weight:700;color:var(--green);white-space:nowrap;}
.folge-prev-modal .fp-prot{font-size:var(--fs-meta);font-weight:700;border-radius:var(--radius-pill);padding:2px 9px;white-space:nowrap;}
.folge-prev-modal .fp-prot-green{background:var(--green-bg);color:var(--green);border:1px solid #bfe0c2;}
.folge-prev-modal .fp-prot-yellow{background:var(--yellow-bg);color:var(--yellow-text);border:1px solid #f0d98a;}
.folge-prev-modal .fp-prot-red{background:var(--red-bg);color:var(--red-text);border:1px solid #f5c2c2;}
.folge-prev-modal .fp-hint{font-size:var(--fs-meta);color:var(--grey);font-style:italic;margin-top:6px;}

/* Neuer Patient: Grund-des-Besuchs-Auswahl (Beratung / Folgeimpfung) */
.intake-bar{display:none;}
.intake-bar.show{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 16px;padding:12px 16px;border:1px solid var(--line);border-left:4px solid var(--black);border-radius:var(--radius-md);background:var(--grey-xl);}
.intake-bar .ib-label{font-weight:600;font-size:var(--fs-sm);color:var(--text);}
.intake-bar .ib-seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden;background:#fff;}
.intake-bar .ib-seg button{border:none;background:#fff;padding:7px 18px;font-size:var(--fs-sm);font-weight:600;cursor:pointer;font-family:var(--font);color:var(--grey);}
.intake-bar .ib-seg button+button{border-left:1px solid var(--line);}
.intake-bar .ib-seg button.active{background:var(--black);color:#fff;}
.intake-bar .ib-seg button:disabled{opacity:.4;cursor:not-allowed;}

/* Schwebende Aktions-Buttons unten rechts (nur während Bearbeitung im Klinik-Modus) */
.edit-cancel,.finish-treat{position:fixed;right:26px;z-index:60;width:52px;height:52px;border-radius:50%;
  border:none;color:#fff;font-size:24px;line-height:1;cursor:pointer;display:none;align-items:center;
  justify-content:center;box-shadow:0 4px 16px rgba(0,0,0,.2);transition:background .15s,transform .15s;font-family:var(--font);}
.edit-cancel{bottom:26px;background:#8a8f98;}
.edit-cancel:hover{background:#6b7280;transform:scale(1.06);}
.finish-treat{bottom:90px;background:var(--green,#1f9d55);font-weight:700;}
.finish-treat:hover{background:#188045;transform:scale(1.06);}
body.clinic:not(.clinic-idle) .edit-cancel,
body.clinic:not(.clinic-idle) .finish-treat{display:flex;}
/* Locked forms */
.card.locked { opacity: 0.95; }
.card.locked .fld { color: var(--text-light); }
.card.locked input, .card.locked select, .card.locked textarea, .card.locked .chk-chip, .card.locked .radio-group, .card.locked .icon-btn, .card.locked .vname,
.card.locked label, .card.locked .chk-line, .card.locked .chk-grid, .card.locked .chk-row, .card.locked .ctrl-box, .card.locked .chip, .card.locked .age-box {
  pointer-events: none !important;
}
.card.locked input, .card.locked select, .card.locked textarea {
  background-color: var(--grey-xl) !important;
  border-color: transparent !important;
  color: var(--text) !important;
}
/* tick-box fields: grey them out like the text fields until the pencil is clicked */
.card.locked .chk-chip, .card.locked .chk-line, .card.locked label, .card.locked .ctrl-box { color: var(--text-light) !important; }
.card.locked .chk-chip { background-color: var(--grey-xl) !important; border-color: transparent !important; }
.card.locked input[type=checkbox], .card.locked input[type=radio] { opacity: .45; }
.lock-btn {
  position: absolute;
  top: 20px;
  right: 20px;
  background: transparent;
  border: 1px solid transparent;
  font-size: 16px;
  color: var(--text-light);
  cursor: pointer;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  transition: all 0.2s;
  display: flex;
  align-items: center;
  justify-content: center;
}
.lock-btn:hover { background: var(--grey-m); color: var(--black); }
.lock-btn.active { background: var(--blue); color: #fff; border-color: var(--blue); box-shadow: 0 2px 6px rgba(0,113,227,0.3); }
/* Patienten (Kiosk) brauchen keinen Bearbeiten-Stift – sie füllen die Felder ohnehin direkt aus */
body.kiosk .lock-btn { display: none !important; }
/* Ambulanzliste und Sektionen 1–5 nie gleichzeitig anzeigen */
body.clinic:not(.clinic-idle) #list-card{display:none !important;}
/* „Zurück zur Ambulanzliste"-Button im linken Behandlungsfeld */
.tp-home{display:flex;align-items:center;gap:8px;width:100%;background:var(--black);color:#fff;border:none;
  border-radius:var(--radius-md);padding:10px 12px;font-size:var(--fs-sm);font-weight:600;cursor:pointer;font-family:var(--font);
  margin-bottom:10px;transition:background .12s;}
.tp-home:hover{background:#333;}

/* Linkes Behandlungsfeld des Arztes (Patienten in Behandlung + Sektions-Navigation) */
.treat-panel{position:sticky;top:80px;flex:0 0 208px;display:none;flex-direction:column;gap:6px;
  padding:14px;margin-top:24px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-md);
  /* Bei vielen Patienten/Abschnitten kann die Leiste höher als der Bildschirm werden. Als sticky-Element
     wäre der untere Teil (z. B. Abschnitt 7) sonst NICHT erreichbar → intern scrollbar machen. */
  max-height:calc(100vh - 96px);overflow-y:auto;overflow-x:hidden;}
.treat-panel.show{display:flex;}
body.clinic-idle .treat-panel { margin-bottom: 20px; }
/* Ambulanzliste (list view only): dock the In-Behandlung/Behandelt panel flush onto the
   central Ambulanzliste box so they read as one component — a grey sidebar next to the
   white list. Treating-patient view keeps the free-standing left column. */
body.clinic-idle .shell { gap: 0; max-width: 1180px; }
body.clinic-idle .treat-panel {
  margin: 24px 0 20px;          /* matches main's 24px top / 20px bottom so both boxes align */
  flex: 0 0 212px;
  padding: 20px 16px;
  background: #fff;
  border-right: none;
  border-top-right-radius: 0; border-bottom-right-radius: 0;
}
body.clinic-idle #list-card { border-top-left-radius: 0; border-bottom-left-radius: 0; margin-top: 0; }
/* „Zurück zur Ambulanzliste" oben links im Behandlungs-Menü */
.tp-back{display:inline-flex;align-items:center;gap:7px;width:100%;justify-content:flex-start;background:var(--black);color:#fff;border:none;border-radius:var(--radius-md);padding:9px 12px;font-family:var(--font);font-size:var(--fs-sm);font-weight:600;cursor:pointer;margin-bottom:12px;transition:background .12s;}
.tp-back:hover{background:#333;}
.tp-back svg{flex:none;}
/* Patienten-Badge in der linken Leiste (ersetzt das schwarze Kopf-Banner) */
.tp-badge{background:#fff;border:1px solid var(--line);border-radius:var(--radius-md);padding:9px 11px;margin-bottom:10px;box-shadow:0 1px 2px rgba(0,0,0,.04);}
.tp-badge .tpb-hd{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px;}
.tp-badge .tpb-av{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:var(--radius-sm);color:#fff;font-size:11px;font-weight:700;flex:none;}
.tp-badge .tpb-type{font-size:10px;font-weight:700;letter-spacing:.02em;border-radius:var(--radius-sm);padding:3px 8px;background:var(--blue);color:#fff;white-space:nowrap;}
.tp-badge .tpb-type.folgeimpfung{background:#0e9e8e;}
.tp-badge .tpb-nm{font-size:var(--fs-sm);font-weight:700;letter-spacing:-.01em;line-height:1.25;}
.tp-badge .tpb-age{font-size:var(--fs-sm);font-weight:500;color:var(--grey);}
.tp-badge .tpb-meta{font-size:var(--fs-meta);color:var(--grey);margin-top:2px;}
.tp-badge .tpb-ctx{margin-top:8px;display:flex;flex-direction:column;gap:3px;}
.tp-badge .tpb-line{display:flex;align-items:center;gap:5px;font-size:var(--fs-meta);color:var(--text);line-height:1.3;}
.tp-badge .tpb-line svg{flex:none;color:var(--grey);}
.tp-badge .tpb-dep{color:var(--grey);padding-left:17px;}
.tp-badge .tpb-flags{margin-top:8px;display:flex;flex-wrap:wrap;gap:4px;}
.tp-badge .tpb-flag{font-size:10px;font-weight:700;background:#fff4e0;color:#9a6a00;border-radius:var(--radius-sm);padding:2px 7px;}
/* Menü-Titel oben in der linken Leiste (zeigt, in welchem Menü man ist) */
.tp-menu-h{font-size:var(--fs-meta);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--neutral);margin:2px 0 8px;}
/* Kompakte Umschalt-Badges für weitere gleichzeitig behandelte Patienten (Familie, bis ~5) */
.tp-switch{display:flex;flex-direction:column;gap:5px;margin-bottom:10px;}
.tp-switch-h{display:flex;align-items:center;gap:6px;font-size:var(--fs-meta);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--neutral);margin-bottom:1px;}
.tp-switch-h .count-pill{background:none;color:var(--neutral);border:1px solid var(--line);border-radius:var(--radius-pill);padding:0 7px;min-width:20px;text-align:center;line-height:16px;margin-left:0;}
.tp-mini{display:flex;align-items:center;gap:8px;padding:6px 9px;border:1px solid var(--line);border-radius:var(--radius-md);background:#fff;cursor:pointer;transition:border-color .12s,background .12s;}
.tp-mini:hover{background:var(--grey-xl);}
.tp-mini.active{border-color:var(--blue);background:#eef4ff;}
.tp-mini .tpm-av{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:var(--radius-sm);color:#fff;font-size:10px;font-weight:700;flex:none;}
.tp-mini .tpm-nm{font-size:var(--fs-sm);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;}
.tp-mini .tpm-age{font-size:var(--fs-meta);color:var(--grey);flex:none;}
.tp-mini .tpm-dot{width:8px;height:8px;border-radius:50%;flex:none;background:var(--blue);}
.tp-mini .tpm-dot.folgeimpfung{background:#0e9e8e;}
.tp-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:8px;border-bottom:1px solid var(--line);margin-bottom:2px;}
.tp-title{font-size:var(--fs-meta);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--grey);}
.tp-list{display:flex;flex-direction:column;gap:4px;}
.tp-empty{font-size:var(--fs-sm);color:var(--grey);padding:4px 2px;}
.tp-item{display:flex;align-items:center;width:100%;background:none;border:1px solid transparent;
  border-radius:var(--radius-md);padding:8px 10px;cursor:pointer;font-family:var(--font);text-align:left;transition:background .12s,border-color .12s;}
.tp-item:hover{background:var(--grey-xl);}
.tp-item.active{background:#eef4ff;border-color:var(--blue);}
.tp-item .tp-nm{font-size:var(--fs-sm);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tp-group{border:1px dashed var(--violet);border-radius:var(--radius-md);padding:6px;background:#faf7fd;display:flex;flex-direction:column;gap:3px;}
.tp-group .tp-gname{font-size:var(--fs-meta);font-weight:700;color:var(--violet);text-transform:uppercase;letter-spacing:.03em;padding:2px 4px;}
.tp-sep{height:1px;background:var(--line);margin:8px 0 4px;}
.tp-sections{display:flex;flex-direction:column;gap:3px;}
/* Abschnitts-Navigator: gleiche Formsprache wie die Step-Badges (gerundetes Quadrat),
   aktive Sektion als klare „Du bist hier"-Pille. */
.tp-sections button{display:flex;align-items:center;gap:10px;background:none;border:none;cursor:pointer;
  padding:6px 8px;border-radius:var(--radius-md);font-family:var(--font);color:var(--grey);text-align:left;
  transition:background .12s,color .12s;width:100%;position:relative;}
.tp-sections button:hover{background:var(--grey-xl);color:var(--text);}
.tp-sections button:hover .sn-dot{border-color:#aaa;color:var(--text);}
.tp-sections .sn-dot{flex:0 0 22px;width:22px;height:22px;border-radius:var(--radius-sm);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;font-size:var(--fs-meta);font-weight:700;background:#fff;color:var(--grey);
  transition:background .12s,color .12s,border-color .12s;}
.tp-sections .sn-lbl{font-size:var(--fs-sm);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tp-sections button.active{color:var(--text);background:var(--grey-xl);}
.tp-sections button.active::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--black);}
.tp-sections button.active .sn-dot{background:var(--black);color:#fff;border-color:var(--black);}
.tp-sections button.active .sn-lbl{font-weight:700;}
@media(max-width:1200px){.treat-panel{display:none !important;}}

/* Dialoge im App-Design */
.ui-dialog-bg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:120;align-items:center;justify-content:center;padding:20px;}
.ui-dialog-bg.show{display:flex;}
.ui-dialog{background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);max-width:420px;width:100%;padding:22px 24px 20px;box-shadow:0 12px 44px rgba(0,0,0,.22);}
.ui-dialog-title{font-size:16px;font-weight:700;margin-bottom:8px;}
.ui-dialog-msg{font-size:var(--fs-base);line-height:1.55;color:var(--text);}
.ui-dialog-input{width:100%;margin-top:14px;}
.ui-dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px;}
.patient-list{list-style:none;margin:0;padding:0;}
.patient-item{border:1px solid var(--line);border-radius:var(--radius-md);margin-bottom:10px;overflow:hidden;background:#fff;}
.patient-head{display:flex;align-items:center;gap:14px;padding:12px 16px;cursor:pointer;}
.patient-head:hover{background:var(--grey-xl);}
.patient-head .pl-name{font-weight:700;font-size:var(--fs-base);} .patient-head .pl-meta{color:var(--grey);font-size:var(--fs-sm);} .patient-head .pl-spacer{flex:1;} .patient-head .caret{color:var(--grey);transition:transform .15s;font-size:var(--fs-sm);}
.patient-item.open .caret{transform:rotate(90deg);}
.patient-body{display:none;padding:4px 16px 16px;border-top:1px solid var(--line);}
.patient-item.open .patient-body{display:block;}
.pl-tag{display:inline-block;background:var(--grey-xl);border:1px solid var(--line);border-radius:var(--radius-sm);padding:2px 8px;font-size:var(--fs-meta);margin:2px 4px 2px 0;}
.pl-tag.today{background:var(--green-bg);border-color:#bfe0c2;color:var(--green);}
.modal-bg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:100;align-items:center;justify-content:center;padding:20px;}
.modal-bg.show{display:flex;}
.modal{background:#fff;border-radius:var(--radius-md);max-width:560px;width:100%;max-height:85vh;overflow-y:auto;padding:24px 26px;}
.modal h3{margin:0 0 2px;font-size:19px;} .modal .m-sub{color:var(--grey);font-size:var(--fs-sm);margin-bottom:16px;}
.modal .m-sec{margin-bottom:14px;} .modal .m-sec h4{margin:0 0 4px;font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.05em;} .modal .m-sec p{margin:0;font-size:var(--fs-sm);}
.modal-close{float:right;background:none;border:none;font-size:var(--fs-title);cursor:pointer;color:var(--grey);line-height:1;}
.empty{color:var(--grey);font-size:var(--fs-sm);text-align:center;padding:26px;}
.mini-note{font-size:var(--fs-meta);color:var(--grey);margin-top:2px;}
.disclaimer{font-size:var(--fs-meta);color:var(--grey);background:#fff;border:1px dashed var(--line);border-radius:var(--radius-md);padding:12px 16px;margin-bottom:12px;}
.source-bar{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;font-size:var(--fs-sm);background:#fff;border:1px solid var(--line);border-left:4px solid var(--black);border-radius:var(--radius-md);padding:10px 16px;margin-bottom:22px;}
.source-bar span{font-weight:700;}
.source-bar a{color:var(--blue);text-decoration:none;font-weight:600;}
.source-bar a:hover{text-decoration:underline;}
.count-pill{background:var(--black);color:#fff;border-radius:var(--radius-lg);padding:1px 9px;font-size:var(--fs-meta);margin-left:8px;}
.aa-link{display:inline-block;margin-top:6px;font-size:var(--fs-sm);color:var(--blue);text-decoration:none;font-weight:600;} .aa-link:hover{text-decoration:underline;}
.health-snap{margin-top:8px;font-size:var(--fs-sm);background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;} .health-snap .hs-date{font-size:var(--fs-meta);color:var(--grey);}
@media(max-width:900px){.g4{grid-template-columns:repeat(2,1fr);}.g3{grid-template-columns:1fr 1fr;}}
@media(max-width:600px){
  .g4,.g3,.g2{grid-template-columns:1fr;}
  header{padding:10px 14px;flex-wrap:wrap;gap:8px;}
  .brand svg{height:26px;}
  main{padding:16px 12px 70px;}
  .card{padding:16px 14px;}
  .brand .app-title{font-size:var(--fs-base);}
  .brand .app-sub{font-size:var(--fs-meta);}
  
  /* Responsive Table */
  table.vax, table.vax tbody, table.vax tr, table.vax td { display: block; width: 100%; }
  table.vax thead { display: none; }
  table.vax tr { border: 1px solid var(--line); margin-bottom: 12px; border-radius: 8px; padding: 12px; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,0.05); }
  table.vax td { border: none; padding: 10px 0; display: flex; flex-direction: column; align-items: flex-start; }
  table.vax td:not(:last-child) { border-bottom: 1px dashed var(--line); }
  table.vax td::before {
      content: attr(data-label);
      font-weight: 700;
      font-size: 11px;
      text-transform: uppercase;
      color: var(--grey);
      margin-bottom: 6px;
      display: block;
      width: 100%;
  }
  .vax .vname { font-size: 15px; }
  
  /* Make inline elements full width on mobile for better touch targets */
  .dose-chips { width: 100%; max-width: 100%; justify-content: flex-start; }
  .dose-chip { flex: 1; min-width: 40px; padding: 10px 5px; font-size: 14px; }
}

/* Hepatitis New Grid Styles */
.hep-group { background: transparent; border: none; border-bottom: 1px solid var(--line); border-radius: 0; padding: 8px 0; margin-bottom: 2px; }
.hep-group:last-child { border-bottom: none; }
.hep-group-title { font-weight: 600; font-size: 12.5px; margin-bottom: 8px; }
.hep-group-title span { font-weight: 400; color: var(--grey); margin-left: 6px; font-size: 11px; }
.hep-group-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.hep-group-row { flex-wrap: nowrap; }
.hep-doses { flex: 1; min-width: 0; }
.hep-year { flex-shrink: 0; text-align: left; }
.hep-year .year-in, .hep-year input { width: 150px; max-width: 100%; text-align: center; }
/* Lebendimpfstoff-Kennung (violetter Kreis „L") */
.live-dot{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#5b2a9e;color:#fff;font-size:var(--fs-meta);font-weight:700;margin-left:6px;flex-shrink:0;vertical-align:middle;}
/* Info-/Karten-Buttons ganz rechts in der Statusspalte */
table.vax td.status{position:relative;padding-right:46px;}
.row-info{position:absolute;top:12px;right:10px;display:flex;gap:5px;}
.row-info .info-btn,.row-info .map-btn{margin-left:0;}
/* Hep-Statuslabel (statt farbiger Hep-A/B-Badges) */
.hep-stat{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.hep-stat-lbl{font-size:var(--fs-meta);font-weight:700;color:var(--grey);min-width:40px;}
/* New toggle styles for Planen */
.plan-pill:hover { filter: brightness(0.95); transform: translateY(-1px); }

/* New Scheduler UI */
.sched-bucket {
  background: #fff; border: 1px solid var(--line); border-radius: 10px; margin-bottom: 14px; overflow: hidden; transition: box-shadow .12s;
}
.sched-bucket:hover { box-shadow: 0 3px 12px rgba(0,0,0,.05); }
.sched-bucket[data-offset="0"] { border-color: #cfe6cf; }
.sched-header {
  background: #fafbfc; padding: 11px 16px; border-bottom: 1px solid var(--line);
  display: flex; align-items: center; justify-content: space-between; gap: 12px; font-weight: 700; font-size: 14px;
}
.sched-bucket[data-offset="0"] .sched-header { background: #f2f9f2; }
.sched-body { padding: 6px 16px 10px; }
.sched-item {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 8px; margin: 0 -8px; border-bottom: 1px dashed var(--line); border-radius: 7px; transition: background .1s;
}
.sched-item:hover { background: #f6f8fb; }
.sched-item:last-child { border-bottom: none; }
.sched-date-input { width: 140px; }

/* Info-Popup: schlicht, ohne farbige Boxen */
.modal .m-sec { margin: 0 0 14px; padding: 0 0 12px; border-bottom: 1px solid var(--line); }
.modal .m-sec:last-of-type { border-bottom: none; padding-bottom: 0; }
.modal .m-sec h4 { margin: 0 0 5px; font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--grey); font-weight: 700; }
.modal .m-sec p { margin: 0; font-size: 13.5px; line-height: 1.6; color: var(--black); }
/* Button "Verbreitungskarte ansehen" im Info-Popup */
.m-mapbtn { margin-top: 8px; background: var(--black); color: #fff; border: none; border-radius: 7px; padding: 9px 15px; font-size: 13px; font-weight: 600; cursor: pointer; font-family: var(--font); }
.m-mapbtn:hover { background: #333; }
/* "K"-Button neben dem Info-Button */
.map-btn { display:inline-flex; align-items:center; justify-content:center; margin-left:5px; background:#fff; border:1px solid var(--line); border-radius:50%; width:20px; height:20px; font-size:var(--fs-meta); font-weight:700; cursor:pointer; color:var(--blue); vertical-align:middle; }
.map-btn:hover { border-color:var(--blue); background:var(--blue-bg); }
/* Große Karten-Lightbox */
.map-bg { display:none; position:fixed; inset:0; background:rgba(0,0,0,.82); z-index:200; align-items:center; justify-content:center; padding:10px; }
.map-bg.show { display:flex; }
.map-inner { display:flex; flex-direction:column; align-items:center; max-width:98vw; max-height:96vh; }
.map-head { color:#fff; font-size:var(--fs-base); font-weight:600; margin-bottom:10px; text-align:center; }
.map-full { max-width:98vw; max-height:84vh; width:auto; height:auto; object-fit:contain; background:#fff; border-radius:var(--radius-md); box-shadow:0 8px 40px rgba(0,0,0,.5); }
.map-foot { color:rgba(255,255,255,.72); font-size:var(--fs-sm); margin-top:10px; }
.map-missing { background:#fff; color:#555; border-radius:var(--radius-md); padding:48px 40px; font-size:var(--fs-base); text-align:center; box-shadow:0 8px 40px rgba(0,0,0,.5); }
.map-close { position:fixed; top:18px; right:24px; background:rgba(255,255,255,.14); border:none; color:#fff; font-size:26px; line-height:1; width:44px; height:44px; border-radius:50%; cursor:pointer; }
.map-close:hover { background:rgba(255,255,255,.28); }

/* ===== Auth / Rollen / Admin ===== */
/* Kompaktes Nutzer-Menü oben rechts: Avatar + Name/Rolle als ein Chip, öffnet ein Dropdown. */
.user-menu{position:relative;}
.user-menu-btn{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-md);padding:5px 10px 5px 6px;cursor:pointer;font-family:var(--font);transition:border-color .12s,background .12s;}
.user-menu-btn:hover{border-color:var(--black);background:var(--grey-xl);}
.user-menu-btn .user-meta{display:flex;flex-direction:column;line-height:1.2;text-align:left;}
.user-menu-btn #user-name{font-size:var(--fs-sm);font-weight:700;color:var(--text);}
.user-menu-btn .user-role{font-size:var(--fs-meta);color:var(--grey);text-transform:capitalize;}
.user-menu-btn .um-caret{color:var(--grey);flex:0 0 auto;transition:transform .15s;}
.user-menu.open .user-menu-btn .um-caret{transform:rotate(180deg);}
.user-avatar-btn{display:inline-flex;}
.user-avatar-btn .ini-circle{width:30px;height:30px;font-size:var(--fs-sm);border-radius:var(--radius-md);}
.user-menu-drop{display:none;position:absolute;top:calc(100% + 8px);right:0;min-width:190px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:0 10px 30px rgba(0,0,0,.12);padding:6px;z-index:70;}
.user-menu.open .user-menu-drop{display:block;}
.user-menu-drop .um-item{display:flex;align-items:center;gap:10px;width:100%;background:none;border:none;border-radius:var(--radius-md);padding:9px 11px;font-size:var(--fs-sm);font-weight:600;color:var(--text);cursor:pointer;font-family:var(--font);text-align:left;}
.user-menu-drop .um-item svg{color:var(--grey);flex:0 0 auto;}
.user-menu-drop .um-item:hover{background:var(--grey-xl);}
.user-menu-drop .um-logout{color:var(--red);}
.user-menu-drop .um-logout svg{color:var(--red);}
.user-menu-drop .um-logout:hover{background:var(--red-bg);}
/* Admin-Panel (Vollbild) */
.admin-panel{display:none;position:fixed;inset:0;background:var(--grey-xl);z-index:120;overflow-y:auto;}
.admin-panel.show{display:block;}
.admin-bar{position:sticky;top:0;background:#fff;border-bottom:2px solid var(--black);display:flex;align-items:center;gap:18px;padding:14px 28px;z-index:2;}
.admin-back{background:none;border:none;font-size:var(--fs-base);font-weight:600;cursor:pointer;color:var(--black);padding:6px 10px;border-radius:var(--radius-sm);}
.admin-back:hover{background:var(--grey-xl);}
.admin-title{font-size:16px;font-weight:700;}
.admin-body{max-width:1000px;margin:0 auto;padding:24px 20px 80px;}
.admin-table th,.admin-table td{font-size:var(--fs-sm);}
.msg{font-size:var(--fs-sm);padding:9px 13px;border-radius:var(--radius-md);margin-bottom:14px;}
.msg.err{background:var(--red-bg);color:var(--red);border:1px solid #f5c2c2;}
.msg.ok{background:var(--green-bg);color:var(--green);border:1px solid #bfe0c2;}
/* Kiosk (Patientenaccount) */
.kiosk-bar{display:none;position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:2px solid var(--black);padding:12px 24px;align-items:center;justify-content:space-between;gap:16px;z-index:60;}
.kiosk-bar.show{display:flex;}
.kiosk-bar .kiosk-hint{font-size:var(--fs-sm);color:var(--grey);}
.kiosk-bar .btn{padding:12px 26px;font-size:var(--fs-base);}
body.kiosk main{padding-bottom:110px;}
body.kiosk .lang-toggle{display:flex;}
/* Klinik-Workflow: Abschnitte einklappen bis Patient gewählt */
body.clinic-idle #step1, body.clinic-idle #step2, body.clinic-idle #step3, body.clinic-idle #step4, body.clinic-idle #step5, body.clinic-idle #step6{display:none !important;}
.clinic-back{background:#fff;border:1px solid var(--line);border-left:3px solid var(--black);border-radius:var(--radius-md);padding:11px 15px;margin-bottom:16px;font-size:var(--fs-sm);font-weight:600;cursor:pointer;color:var(--black);}
.clinic-back:hover{background:var(--grey-xl);}
/* Admin-Nutzerliste (gruppiert) */
/* Nutzer-Board (Freischaltung per Drag&Drop) – vertikale Rollen-Abschnitte */
.admin-board{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px;align-items:start;}
/* Ruhigere Zähler im Board: outline statt schwarzer Punkt */
.admin-board .count-pill{background:none;color:var(--neutral);border:1px solid var(--line);border-radius:var(--radius-pill);padding:0 8px;min-width:22px;text-align:center;font-weight:600;line-height:18px;}
.ab-sec{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:#fff;display:flex;flex-direction:column;}
.ab-sec:not(.ab-pending):not(.ab-deleted){min-height:112px;}
.ab-sec.ab-pending{grid-column:1/-1;border-color:#ecdca0;background:#fffdf6;}
.ab-sec.ab-pending .count-pill{border-color:#e6d089;color:#8a6d3b;}
.ab-sec.ab-deleted{grid-column:1/-1;}
.ab-sec.drag-over{outline:2px dashed var(--blue);outline-offset:-3px;border-color:var(--blue);}
.ab-sec-h{display:flex;align-items:center;gap:8px;padding:12px 16px;font-size:var(--fs-meta);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--neutral);border-bottom:1px solid var(--line);}
.ab-sec.ab-pending .ab-sec-h{color:#8a6d3b;border-bottom-color:#efe3bd;}
.ab-rows{display:flex;flex-direction:column;padding:12px;gap:8px;min-height:0;}
.ab-empty{font-size:var(--fs-sm);color:var(--neutral);padding:18px 8px;text-align:center;border:1px dashed var(--line);border-radius:var(--radius-md);}
.ab-sec.ab-pending .ab-empty{border:none;padding:6px 8px;}
.ab-row{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-md);padding:11px 14px;cursor:grab;transition:border-color .12s,box-shadow .12s;}
.ab-row .ini-circle{width:30px;height:30px;font-size:11px;border-radius:var(--radius-md);}
.card{background:#fff;border-radius:var(--radius-lg);padding:24px;margin-bottom:16px;box-shadow:0 1px 3px rgba(0,0,0,0.05);position:relative;}
.ab-row:hover{border-color:#c4c4c4;box-shadow:0 2px 7px rgba(0,0,0,.05);}
.ab-row:active{cursor:grabbing;}
.ab-row .ab-main{flex:1;min-width:0;}
.ab-row .ab-name{font-size:var(--fs-sm);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ab-row .ab-sub{font-size:var(--fs-meta);color:var(--grey);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px;}
.ab-row .icon-btn{flex-shrink:0;opacity:.28;min-width:30px;min-height:30px;border-radius:50%;transition:opacity .12s,background .12s;}
.ab-row:hover .icon-btn{opacity:.55;}
.ab-row .icon-btn.del:hover{opacity:1;background:#fdecec;}
@media(max-width:720px){.admin-board{grid-template-columns:1fr;}}
/* Admin-Einstellungen: Reiter (Nutzerverwaltung / Statistik / Testing / Quellen) */
.admin-tabs{ display:flex; gap:2px; border-bottom:1px solid var(--line); margin:0 0 20px; flex-wrap:wrap; }
.admin-tabs button{ background:none; border:none; border-bottom:2px solid transparent; padding:10px 15px; font-family:var(--font); font-size:var(--fs-base); font-weight:600; color:var(--grey); cursor:pointer; margin-bottom:-1px; transition:color .12s,border-color .12s; }
.admin-tabs button:hover{ color:var(--text); }
.admin-tabs button.active{ color:var(--text); border-bottom-color:var(--black); }

.admin-group{margin-bottom:18px;}
.admin-group-h{font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.05em;color:var(--grey);font-weight:700;padding:0 0 6px;border-bottom:1px solid var(--line);margin-bottom:4px;}
.admin-group-h span{color:var(--neutral);font-weight:600;}
.admin-row{display:flex;align-items:center;gap:12px;padding:9px 4px;border-bottom:1px solid var(--grey-xl);}
.admin-row .ar-main{flex:1;min-width:0;}
.admin-row .ar-name{font-size:var(--fs-base);font-weight:600;}
.admin-row .ar-sub{font-size:var(--fs-meta);color:var(--grey);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.admin-row .ar-status{flex-shrink:0;}
/* Medikamenten-Pillen (ein Feld) */
.med-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;}
.med-pill{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-lg);padding:4px 6px 4px 12px;font-size:var(--fs-sm);}
.med-pill.immuno{background:var(--red-bg);border-color:#f0b3b3;color:var(--red);font-weight:600;}
.med-pill .mx{cursor:pointer;color:var(--grey);font-weight:700;font-size:var(--fs-sm);padding:0 3px;line-height:1;}
.med-pill .mx:hover{color:var(--red);}
.med-pill.immuno .mx{color:var(--red);opacity:.7;} .med-pill.immuno .mx:hover{opacity:1;}
/* VacCheck: Medikamenten-Übersicht (nur Personal) */
.med-vaccheck{margin-top:14px;}
.med-vaccheck .vc-title{font-size:var(--fs-meta);text-transform:uppercase;letter-spacing:.05em;color:var(--grey);font-weight:700;margin-bottom:8px;}
.vc-card{border:1px solid var(--line);border-left-width:4px;border-radius:var(--radius-md);padding:10px 13px;margin-bottom:8px;background:#fff;font-size:var(--fs-sm);}
.vc-card.green{border-left-color:var(--green);background:#f4faf4;}
.vc-card.red{border-left-color:var(--red);background:#fdf3f3;}
.vc-card.grey{border-left-color:var(--neutral);background:var(--grey-xl);}
.vc-h{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.vc-name{font-weight:700;font-size:var(--fs-base);}
.vc-brands{font-weight:400;color:var(--grey);font-size:var(--fs-sm);}
.vc-badge{font-size:var(--fs-meta);font-weight:700;border-radius:var(--radius-lg);padding:2px 10px;white-space:nowrap;}
.vc-badge.green{background:var(--green-bg);color:var(--green);}
.vc-badge.red{background:var(--red-bg);color:var(--red);}
.vc-badge.grey{background:var(--neutral-bg);color:#666;}
.vc-card.amber{border-left-color:#e08600;background:#fff8ef;}
.vc-badge.amber{background:#fdecd0;color:#9a5b00;}
.vc-cat{color:var(--grey);font-size:var(--fs-meta);margin-top:3px;}
.vc-desc{color:#444;font-size:var(--fs-sm);margin-top:3px;line-height:1.45;}
.vc-note{color:var(--grey);font-size:var(--fs-sm);margin-top:4px;}
.vc-row{margin-top:6px;}
.vc-abstract{font-size:var(--fs-sm);font-style:italic;color:#555;margin-top:3px;line-height:1.5;}
.vc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:8px;font-size:var(--fs-sm);}
@media(max-width:640px){.vc-grid{grid-template-columns:1fr;}}
.vc-hr{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.vc-rm{background:none;border:none;color:var(--grey);cursor:pointer;font-size:var(--fs-base);font-weight:700;line-height:1;padding:0 2px;}
.vc-rm:hover{color:var(--red);}
.vc-card.plain{border-left-width:1px;padding:9px 13px;}
.vc-card.plain .vc-name{font-weight:600;font-size:var(--fs-sm);}
/* Fazit (Impfrelevanz) klar von der Medikamentenliste abgetrennt */
#immuno-warn:not(:empty){margin-top:18px;padding-top:16px;border-top:2px solid var(--line);}
/* Medikamenten-Autocomplete */
.med-inp-wrap{position:relative;}
.med-ac{display:none;position:absolute;left:0;right:0;top:calc(100% + 2px);z-index:40;background:#fff;border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:0 6px 20px rgba(0,0,0,.1);max-height:240px;overflow-y:auto;}
.med-ac-item{padding:9px 12px;font-size:var(--fs-sm);cursor:pointer;border-bottom:1px solid var(--grey-xl);}
.med-ac-item:last-child{border-bottom:none;}
.med-ac-item:hover,.med-ac-item.active{background:var(--blue-bg);}
/* Runde Länderflaggen */
.flag{width:18px;height:18px;border-radius:50%;object-fit:cover;vertical-align:middle;margin-right:7px;box-shadow:0 0 0 1px rgba(0,0,0,.15);}
.chip .flag{width:17px;height:17px;box-shadow:0 0 0 1px rgba(255,255,255,.45);}
h4 .flag{width:20px;height:20px;}
/* Ambulanzliste: Toolbar, Status-Spalten, Drag&Drop, Gruppen */
.list-h2{display:flex;align-items:center;gap:8px;margin-bottom:16px;}
.amb-toolbar{display:flex;flex-wrap:wrap;gap:8px 10px;align-items:center;margin-bottom:18px;}
.amb-day{display:flex;align-items:center;gap:6px;}
.amb-filter-slot{display:flex;align-items:center;gap:6px;}
.amb-tools-right{display:flex;align-items:center;gap:8px;margin-left:auto;justify-content:flex-end;}
.amb-search{width:260px;max-width:38vw;}
.amb-tools-right #new-patient-btn{white-space:nowrap;flex-shrink:0;}
/* Einheitliche Höhe & Typografie aller Toolbar-Bedienelemente */
.amb-toolbar .btn,
.amb-toolbar .amb-filter,
.amb-toolbar input[type=text],
.amb-toolbar input[type=date]{
  height:38px; box-sizing:border-box; font-size:var(--fs-sm);
  display:inline-flex; align-items:center; margin:0;
}
.amb-toolbar input[type=text],
.amb-toolbar input[type=date]{ padding:0 12px; width:auto; }
.amb-toolbar .amb-search{ width:260px; }
.amb-toolbar .amb-filter{ padding:0 15px; border-radius:var(--radius-md); }
.amb-toolbar .btn{ padding:0 15px; }
.amb-toolbar .btn.sec.sm,
.amb-toolbar .btn.sm{ font-size:var(--fs-sm); }
/* Segmentierte Typ-Umschaltung (Alle / Beratung / Folgeimpfung) – wie im Design:
   grauer Track, aktives Segment weiß mit weichem Schatten. */
.amb-toolbar .amb-filter-slot{ height:38px; padding:3px; gap:2px; background:#ededed; border-radius:var(--radius-md); box-sizing:border-box; }
.amb-toolbar .amb-filter{ height:auto; align-self:stretch; padding:0 14px; border:none; background:transparent; color:var(--grey); border-radius:var(--radius-sm); font-weight:600; }
.amb-toolbar .amb-filter:hover{ color:var(--text); background:transparent; }
.amb-toolbar .amb-filter.active{ background:#fff; color:#111; border:none; box-shadow:0 1px 2px rgba(0,0,0,.12); }
/* Typ-Gruppe (Beratung / Folgeimpfung) verbindet Wartend + In Behandlung */
.amb-typegroup{border:1px solid var(--line);border-radius:var(--radius-md);margin-bottom:16px;overflow:hidden;background:#fff;display:flex;flex-direction:column;min-height:0;}
.amb-typegroup.beratung{border-left:3px solid #2563eb;}
.amb-typegroup.folgeimpfung{border-left:3px solid #0e9e8e;}
.amb-board2{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:stretch;flex:1;min-height:0;margin-bottom:16px;}
@media(max-width:820px){.amb-board2{grid-template-columns:1fr;height:auto;}}
.amb-tg-h{display:flex;align-items:center;gap:9px;padding:11px 14px;font-weight:800;font-size:var(--fs-base);border-bottom:1px solid var(--line);flex-shrink:0;}
.amb-tg-count{margin-left:auto;background:var(--grey-xl);color:var(--grey);font-size:var(--fs-sm);font-weight:700;border-radius:var(--radius-lg);padding:2px 10px;}
.amb-typegroup .amb-section.amb-lane{border:none;border-radius:0;margin:0;background:transparent;overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0;}
.amb-typegroup .amb-section.amb-lane + .amb-section.amb-lane{border-top:1px solid var(--line);}
.amb-typegroup .amb-lane>.amb-sec-h{background:#fafbfc;font-size:var(--fs-sm);font-weight:600;padding:8px 14px 8px 18px;color:var(--text);flex-shrink:0;}
.amb-typegroup .amb-lane[data-status=treatment]>.amb-sec-h{background:#f4f8fd;}

.amb-section{margin-bottom:14px;border:1px solid var(--line);border-radius:var(--radius-md);overflow:hidden;background:#fff;}
.amb-sec-h{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:var(--grey-xl);font-weight:700;font-size:var(--fs-sm);cursor:pointer;}
.amb-sec-h .amb-toggle{color:var(--grey);transition:transform .15s;}
.amb-section.collapsed .amb-toggle{transform:rotate(-90deg);}
.amb-section.collapsed .drop-zone{display:none;}
.amb-section[data-status=treatment] .amb-sec-h{background:#eaf2fb;}
.amb-section[data-status=done] .amb-sec-h{background:#eaf5ea;}
.drop-zone{min-height:46px;padding:8px;display:flex;flex-direction:column;gap:8px;flex:1;overflow-y:auto;}
.drop-zone.drag-over{background:#e3f2fd;outline:2px dashed var(--blue);outline-offset:-4px;}
.drop-zone .patient-item{margin-bottom:0; flex-shrink: 0;}
.amb-empty{color:var(--grey);font-size:var(--fs-sm);font-style:italic;padding:10px;text-align:center;}
.patient-item[draggable=true] .patient-head{cursor:grab;}
.amb-move{padding:4px 9px !important;font-size:var(--fs-meta) !important;}
.grp-badge{display:inline-block;background:var(--violet-bg);color:var(--violet);border-radius:var(--radius-md);padding:1px 8px;font-size:var(--fs-meta);font-weight:600;margin-left:8px;}
.amb-group{border:1px dashed var(--violet);border-radius:var(--radius-md);padding:8px;background:#faf7fd;display:flex;flex-direction:column;gap:8px;}
.amb-group-h{font-size:var(--fs-meta);font-weight:700;color:var(--violet);text-transform:uppercase;letter-spacing:.04em;display:flex;align-items:center;gap:10px;}
.amb-group-h>span:first-child{flex:1;min-width:0;}
.amb-group-act{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.amb-ungroup{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--violet);cursor:pointer;opacity:.55;transition:opacity .12s,background .12s,border-color .12s;padding:0;}
.amb-group:hover .amb-ungroup{opacity:.85;}
.amb-ungroup:hover{opacity:1;background:#fff;border-color:var(--violet);}
/* Rechter Pfeil „in Behandlung nehmen" */
.amb-arrow{flex-shrink:0;width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:#fff;
  color:var(--black);font-size:16px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;
  justify-content:center;transition:background .12s,color .12s,border-color .12s;font-family:var(--font);}
.amb-arrow:hover{background:var(--black);color:#fff;border-color:var(--black);}
/* „Behandeln"-Button (wartende Patienten/Gruppen) */
.amb-behandeln{flex-shrink:0;background:var(--black);color:#fff;border:1px solid var(--black);
  padding:6px 14px;font-size:var(--fs-sm);font-weight:600;border-radius:var(--radius-sm);cursor:pointer;font-family:var(--font);
  transition:background .12s;white-space:nowrap;}
.amb-behandeln:hover{background:#333;}
/* Typ-Kennung Beratung (B) / Folgeimpfung (F) */
.type-badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:var(--fs-meta);font-weight:700;flex-shrink:0;}
.type-badge.beratung{background:#e8f0fe;color:#2563eb;}
.type-badge.folgeimpfung{background:#e3f6f2;color:#0e9e8e;}

/* Patienten-Auswahl (Kiosk) */
.intake-choice{position:fixed;inset:0;z-index:80;background:#fff;display:none;flex-direction:column;padding:32px;}
.intake-choice.show{display:flex;}
.ic-lang{position:absolute;top:24px;right:28px;display:flex;gap:6px;}
.ic-lang button{border:1px solid var(--line);background:#fff;border-radius:var(--radius-md);padding:8px 13px;font-weight:700;font-size:var(--fs-sm);cursor:pointer;color:var(--grey);font-family:var(--font);transition:background .12s,color .12s,border-color .12s;}
.ic-lang button.active{background:var(--black);color:#fff;border-color:var(--black);}
.ic-inner{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;max-width:920px;margin:0 auto;text-align:center;width:100%;}
.ic-title{font-size:26px;font-weight:700;margin:0 0 6px;letter-spacing:-.01em;}
.ic-sub{font-size:var(--fs-base);color:var(--grey);margin:0 0 30px;}
.ic-cards{display:flex;gap:24px;width:100%;justify-content:center;flex-wrap:wrap;}
.ic-card{flex:1 1 320px;max-width:390px;background:#fff;border:2px solid var(--line);border-radius:var(--radius-lg);padding:40px 30px;display:flex;flex-direction:column;align-items:center;gap:14px;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .1s;font-family:var(--font);text-align:center;}
.ic-card:hover{border-color:var(--black);box-shadow:0 12px 32px rgba(0,0,0,.09);transform:translateY(-2px);}
.ic-card:focus-visible{border-color:var(--black);outline:2px solid var(--black);outline-offset:3px;}
.ic-card .ic-icon{color:var(--black);line-height:0;margin-bottom:6px;}
.ic-card .ic-icon svg{width:92px;height:92px;}
.ic-card .ic-name{font-size:var(--fs-title);font-weight:700;}
.ic-card .ic-desc{font-size:var(--fs-base);color:var(--grey);line-height:1.55;}
@media(max-width:600px){.ic-title{font-size:21px;}.ic-card{padding:28px 22px;}.ic-card .ic-icon svg{width:72px;height:72px;}}
.patient-item{position:relative;}
.patient-item.mine{border-left:4px solid var(--blue);}
.patient-item.group-target{outline:2px dashed var(--violet);outline-offset:-3px;background:#faf7fd;}
.amb-move.primary{background:var(--black);color:#fff;border-color:var(--black);}
.amb-move.primary:hover{background:#333;}
.card-menu{display:none;position:absolute;right:10px;top:40px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:0 6px 20px rgba(0,0,0,.12);z-index:35;min-width:150px;overflow:hidden;}
.card-menu button{display:block;width:100%;text-align:left;padding:10px 13px;border:none;background:none;cursor:pointer;font-size:var(--fs-sm);font-family:var(--font);}
.card-menu button:hover{background:var(--grey-xl);}
.card-menu button.danger{color:var(--red);}
.amb-group[draggable=true] .amb-group-h{cursor:grab;}
.amb-group-hint{font-weight:400;color:var(--grey);font-size:var(--fs-meta);text-transform:none;letter-spacing:0;margin-left:4px;}
.pb-actions{display:flex;gap:8px;flex-wrap:wrap;flex-shrink:0;}
.pb-actions .btn{padding:6px 14px;font-size:var(--fs-sm);}
/* Schnellansicht – strukturierte Infofelder */
.patient-body{padding:12px 16px 14px;}
.pb-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:11px 20px;margin-bottom:12px;}
.pb-field{display:flex;flex-direction:column;gap:2px;min-width:0;}
.pb-lbl{font-size:var(--fs-meta);text-transform:uppercase;letter-spacing:.05em;color:var(--grey);font-weight:700;}
.pb-val{font-size:var(--fs-sm);color:var(--text);word-break:break-word;}
.pb-comment{display:flex;flex-direction:column;gap:2px;margin-top:10px;}
.pb-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px;padding-top:11px;border-top:1px solid var(--line);flex-wrap:wrap;}
.pb-stamp{font-size:var(--fs-meta);color:var(--grey);min-width:0;}
.ini-circle{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--radius-sm);background:var(--black);color:#fff;font-size:9.5px;font-weight:700;flex-shrink:0;}
.admin-row .ini-circle{margin-right:10px;}
.patient-head .caret{cursor:pointer;padding:2px 4px;border-radius:var(--radius-xs);}
.patient-head .caret:hover{background:var(--grey-xl);}

/* Drag and Drop styles */
.sched-item.dragging { opacity: 0.5; background: #f9f9f9; }
.sched-body.drag-over { background: #e3f2fd; border-radius: 4px; border: 1px dashed var(--blue); }

/* --- Kohärenz-Politur Impfstatus (Aufgabe 2) --- */
table.vax td.status .badge{ font-size:var(--fs-sm); padding:5px 12px; margin-bottom:6px; }
table.vax td.status .comp-badges{ margin-bottom:6px; }
table.vax td.status{ line-height:1.45; }
table.vax td.status .reason{ font-size:var(--fs-meta); line-height:1.45; }
.vax .reason + .reason{ margin-top:4px; }
/* Einheitliche Komponenten-Chips (Hep A/B, T/D/aP/IPV) etwas luftiger */
.comp{ padding:4px 9px; font-size:var(--fs-meta); }.handlers-circles { display:inline-flex; align-items:center; }
.handlers-circles .ini-circle { margin-left:-5px; box-shadow:0 0 0 1.5px #fff; z-index:1; position:relative; }
.handlers-circles .ini-circle:first-child { margin-left:0; z-index:0; }
.handlers-circles .ini-circle:nth-child(2) { z-index:1; }
.handlers-circles .ini-circle:nth-child(3) { z-index:2; }
.handlers-circles .ini-circle:nth-child(4) { z-index:3; }
.handlers-circles .ini-circle:nth-child(5) { z-index:4; }
/* Sektion 6 – Leistungen */
.leistung-vax{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;}
.leistung-empty{font-size:var(--fs-sm);color:var(--grey);font-style:italic;}
.leistung-chip{display:inline-flex;align-items:center;gap:8px;background:var(--grey-xl);border:1px solid var(--line);border-radius:var(--radius-lg);padding:5px 12px;font-size:var(--fs-sm);}
.leistung-chip .lc-x{cursor:pointer;color:var(--grey);font-weight:700;font-size:var(--fs-sm);}
.leistung-chip .lc-x:hover{color:var(--red);}
.leistung-group{display:flex;flex-direction:column;align-items:flex-start;gap:8px;margin-top:8px;}
.leistung-group .chk-chip em{font-style:normal;color:var(--grey);font-weight:400;margin-left:4px;}
.chk-chip.leistung-auto{opacity:.65;cursor:default;}
.leistung-warn{margin-top:16px;padding:11px 15px;border-radius:var(--radius-md);background:var(--red-bg);color:var(--red);border:1px solid #f5c2c2;font-weight:600;font-size:var(--fs-sm);}

.treat-record{ margin-top:16px; padding-top:12px; border-top:1px solid var(--line); font-size:var(--fs-sm); }
.treat-record:empty{ display:none; }
.treat-record .tr-row{ margin:2px 0; color:var(--text); }
.treat-record .tr-lbl{ font-weight:700; color:var(--grey); text-transform:uppercase; font-size:var(--fs-meta); letter-spacing:.03em; }
.treat-record .tr-ts{ color:var(--grey); }
.m-doc{ margin-top:16px; padding-top:14px; border-top:1px solid var(--line); }
/* Masern-Bescheinigung: Auswahl im Modal */
.mc-opts{ display:flex; flex-direction:column; gap:8px; margin:14px 0 4px; }
.mc-opt{ display:flex; align-items:flex-start; gap:11px; padding:12px 14px; border:1px solid var(--line); border-radius:var(--radius-md); cursor:pointer; transition:border-color .12s, background .12s; }
.mc-opt:hover{ border-color:#aaa; }
.mc-opt:has(input:checked){ border-color:var(--black); background:var(--grey-xl); }
.mc-opt input{ margin-top:2px; flex:none; width:17px; height:17px; accent-color:var(--black); }
.mc-opt-txt{ display:flex; flex-direction:column; gap:2px; }
.mc-opt .mc-de{ font-size:var(--fs-sm); font-weight:600; color:var(--text); line-height:1.35; }
.mc-opt .mc-en{ font-size:var(--fs-sm); color:var(--grey); font-style:italic; line-height:1.3; }
.mc-actions{ display:flex; justify-content:space-between; gap:12px; margin-top:18px; }
.change-log { margin-top:20px; font-size:var(--fs-sm); color:var(--grey); border-top:1px dashed var(--line); padding-top:12px; }
.change-log:empty { display:none; }
.log-title { font-size:var(--fs-meta); text-transform:uppercase; letter-spacing:.05em; font-weight:700; color:var(--grey); margin-bottom:6px; }
.log-entry { margin-bottom:4px; line-height:1.5; }
.log-ts { font-weight:600; color:var(--text); margin-right:6px; }
.log-who { color:var(--text); margin-right:6px; }
.log-fields { color:var(--grey); }
/* Änderungsprotokoll in der Schnellansicht */
.pb-log { margin-top:12px; padding-top:10px; border-top:1px dashed var(--line); }
.pb-log .pb-lbl { margin-bottom:4px; }
.pb-log-row { font-size:var(--fs-meta); color:var(--grey); line-height:1.5; }
.pb-log-row.del { color:var(--red); font-weight:600; }

.white-pill-wrap { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.white-pill { display: inline-flex; align-items: center; gap: 8px; background: #fff; border: 1px solid var(--line); border-radius: 20px; padding: 6px 14px; font-size: 14px; font-weight: 500; }
.white-pill .vc-rm { background: #eee; color: #555; border-radius: 50%; width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; font-size: 12px; cursor: pointer; border: none; padding: 0; }
.white-pill .vc-rm:hover { background: #e0e0e0; color: #000; }

.tp-tooltip {
  position: fixed;
  z-index: 10000;
  background: #fff;
  border: 1px solid var(--line);
  box-shadow: 0 4px 16px rgba(0,0,0,0.1);
  border-radius: 8px;
  padding: 12px;
  width: 260px;
  font-size: 12px;
  display: none;
  pointer-events: none;
}
.tp-tooltip .pb-field { margin-bottom: 4px; }
.tp-tooltip .pb-lbl { font-weight: 600; color: var(--grey); font-size: 11px; display: block; margin-bottom: 2px;}
.tp-tooltip .pb-val { font-size: 13px; color: var(--text); }

/* ===== Kasse: Abrechnungsblock (Sektion 6) ===== */
.kasse-billing{margin-top:20px;border-top:1px solid var(--line);padding-top:16px;}
.kasse-billing:empty{display:none;}
.kb-title{font-size:var(--fs-sm);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--grey);margin-bottom:10px;}
/* Gruppen-Umschalter an der Kasse */
.kb-group{border:1px dashed var(--violet);background:#faf7fd;border-radius:var(--radius-md);padding:12px 14px;margin-bottom:16px;}
.kb-group-h{font-size:var(--fs-meta);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--violet);margin-bottom:9px;}
.kb-group-members{display:flex;flex-wrap:wrap;gap:8px;}
.kb-gm{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;border-radius:var(--radius-pill);padding:6px 13px;font-size:var(--fs-sm);font-weight:500;font-family:var(--font);color:var(--text);cursor:pointer;transition:border-color .12s,background .12s;}
.kb-gm:hover{border-color:var(--violet);}
.kb-gm.cur{border-color:var(--violet);background:#f3ebfb;font-weight:700;cursor:default;}
.kb-gm-dot{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;font-size:var(--fs-meta);font-weight:700;background:var(--grey-xl);color:var(--grey);}
.kb-gm.paid .kb-gm-dot{background:var(--green-bg);color:var(--green);}
.kb-gm.settled .kb-gm-dot{background:var(--blue-bg);color:var(--blue);}
.kb-gm.open .kb-gm-dot{background:var(--yellow-bg);color:var(--yellow);}
.kb-group-hint{font-size:var(--fs-meta);color:var(--grey);line-height:1.45;margin-top:9px;}
.kb-rows{display:flex;flex-direction:column;gap:2px;margin-bottom:6px;}
/* Zwischenüberschriften Leistungen / Impfstoffe – gleiche Gliederung wie auf der Rechnung */
.kb-sub{font-size:var(--fs-xs,11px);font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--grey);margin:10px 0 4px 10px;}
.kb-sub:first-of-type{margin-top:2px;}
.kb-row{display:flex;justify-content:space-between;gap:12px;padding:7px 10px;border-radius:var(--radius-sm);font-size:var(--fs-base);}
.kb-row:nth-child(odd){background:var(--grey-xl);}
.kb-l{color:var(--text);}
.kb-p{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600;}
.kb-manual{color:var(--grey);font-weight:400;font-style:italic;}
.kb-total{display:flex;justify-content:space-between;align-items:center;margin-top:10px;padding:12px 16px;background:var(--black);color:#fff;border-radius:var(--radius-md);font-weight:700;}
.kb-total-val{font-size:20px;font-variant-numeric:tabular-nums;}
.kb-note{font-size:var(--fs-sm);color:var(--grey);margin-top:6px;line-height:1.5;}
.kb-pay-title{font-size:var(--fs-sm);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--grey);margin:18px 0 8px;}
.kb-pay{display:flex;gap:10px;flex-wrap:wrap;}
.kb-row .kb-p{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap;}
.kb-row .kb-l{min-width:0;color:var(--text);}
.kb-total{box-shadow:0 4px 14px rgba(0,0,0,.12);}
.kb-pay .chk-chip{padding:11px 16px;font-size:var(--fs-sm);}

/* ===== Einklappbare Abschnitte (Kasse-Ansicht) ===== */
.card.foldable > h2{cursor:pointer;padding-right:46px;}   /* Platz für den absoluten Stift rechts */
.card.foldable > h2::after{content:'\25BE';color:var(--grey);font-size:var(--fs-sm);font-weight:400;margin-left:auto;padding-left:14px;}
/* Wenn ein „€ Preise"-Button im Kopf sitzt (Sektion 7), schiebt DER den Inhalt nach rechts –
   der Aufklapp-Pfeil folgt direkt dahinter, statt mit einem zweiten margin:auto den Button in die Mitte zu ziehen. */
.card.foldable > h2:has(.price-info-btn)::after{margin-left:10px;padding-left:0;}
.card.foldable.folded > h2::after{content:'\25B8';}
.card.folded > :not(h2):not(.lock-btn){display:none !important;}
.card.folded{padding-bottom:16px;}

/* ===== Kasse-Zwischenstufe in der linken Spalte ===== */
.tp-kasse-zone{border-top:1px solid var(--line);padding-top:12px;}
.tp-item.tp-static{cursor:default;}
.tp-item.tp-static:hover{background:none;}

/* Abrechnungsblock bleibt auch in der gesperrten Sektion 6 bedienbar (Kasse wählt Zahlungsart ohne Stift) */
.card.locked .kasse-billing, .card.locked .kasse-billing *{ pointer-events:auto !important; }
.card.locked .kasse-billing .chk-chip{ background:#fff !important; border-color:var(--line) !important; color:var(--text) !important; }
.card.locked .kasse-billing .chk-chip:has(input:checked){ border-color:var(--black) !important; background:var(--grey-xl) !important; }
.card.locked .kasse-billing input[type=radio]{ opacity:1 !important; }

/* === Kasse-Verfeinerungen === */
/* 1: Age-Box im eingeklappten Abschnitt ausblenden */
.card.folded .age-box{ display:none !important; }
/* 6: Leistungen kompakter nebeneinander */
.leistung-group{ flex-direction:row; flex-wrap:wrap; align-items:stretch; }
.leistung-group .chk-chip{ flex:0 1 auto; }
/* 5: P-Preis-Button + Preisübersicht-Modal */
.price-info-btn{ display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 15px;border-radius:var(--radius-lg);border:1.5px solid var(--black);background:#fff;color:var(--black);font-weight:600;font-size:var(--fs-sm);letter-spacing:.01em;cursor:pointer;font-family:var(--font);line-height:1;flex:none;transition:background .12s,color .12s; }
.price-info-btn span:first-child{ font-weight:800; }
.price-info-btn:hover{ background:var(--black);color:#fff; }
.pi-h{ margin:0 0 18px;font-size:18px; }
.pi-2col{ display:grid;grid-template-columns:1fr 1fr;gap:20px 40px;align-items:start; }
.pi-vaxgrid{ display:grid;grid-template-columns:1fr 1fr;gap:0 32px; }
.pi-sub{ font-size:var(--fs-meta);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--grey);margin-bottom:10px;border-bottom:1px solid var(--line);padding-bottom:6px; }
.pi-row{ display:flex;justify-content:space-between;align-items:baseline;gap:16px;font-size:var(--fs-sm);line-height:1.4;padding:5px 0;border-bottom:1px solid #f2f2f2; }
.pi-row span:first-child{ color:var(--text); }
.pi-row span:last-child{ font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap;color:var(--text); }
@media(max-width:640px){ .pi-2col{ grid-template-columns:1fr; } .pi-vaxgrid{ grid-template-columns:1fr; } }
/* 7+8: Behandler-Icon + Zahlungs-Badge in der Behandelt-Liste */
.tp-item.tp-done{ display:flex;align-items:center; }
.tp-item.tp-done .tp-nm{ flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.tp-icons{ display:inline-flex;align-items:center;gap:4px;margin-left:auto;padding-left:6px; }
.pay-badge{ display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:var(--radius-sm);font-size:var(--fs-meta);border:1px solid;flex-shrink:0; }
.pay-badge.paid{ background:var(--green-bg);color:var(--green);border-color:#bfe0c2; }
.pay-badge.unpaid{ background:var(--grey-xl);color:var(--grey);border-color:var(--line); }
/* 11a: Bezahlt/Nicht bezahlt farbige Auswahl */
.kb-paid-paid:has(input:checked){ border-color:var(--green)!important;background:var(--green-bg)!important; }
.kb-paid-unpaid:has(input:checked){ border-color:var(--grey)!important; }
/* 11b: Rechte Spalte „Im Dienst" */
.shift-panel{ display:none; }
body.clinic-idle .shell{ max-width:1340px; }
body.clinic-idle .shift-panel.show{ display:flex;flex-direction:column;flex:0 0 190px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-md);margin:24px 0 20px 16px;padding:16px 14px;overflow-y:auto; }
.shift-group{ margin-bottom:14px; }
.shift-role{ font-size:var(--fs-meta);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--grey);padding-bottom:5px;margin-bottom:6px;border-bottom:1px solid var(--line); }
.shift-person{ display:flex;align-items:center;gap:8px;padding:3px 0; }
.shift-nm{ font-size:var(--fs-sm);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.shift-empty{ font-size:var(--fs-sm);color:var(--grey);padding:2px 0; }

/* === Kasse/Layout Feinschliff v2 === */
/* Kasse-Warteschlange darf nicht wachsen (sonst „zu lang"), Behandelt bekommt den Platz */
.tp-kasse-list{ flex:0 0 auto !important; min-height:48px; max-height:36%; }
/* Zahlungs-/Behandler-Icons gleich groß wie das Personal-Icon (20px, rundes Quadrat) */
.pay-badge{ width:20px; height:20px; font-size:var(--fs-meta); }
.pay-badge b{ font-size:var(--fs-sm); }
/* Grünes „Bezahlt"-Feld unten rechts in Sektion 6 */
.kb-code{font-size:11px;color:var(--grey);font-weight:600;margin-left:6px;white-space:nowrap;}
.kb-paid-field{ display:block; width:fit-content; margin:16px 0 0 auto; background:var(--green); color:#fff; border-radius:var(--radius-md); padding:9px 20px; font-weight:700; font-size:var(--fs-base); letter-spacing:.02em; }
/* Rechte Spalte „Im Dienst" an die Ambulanzliste andocken (nicht mehr freistehend) */
body.clinic-idle #list-card{ border-top-right-radius:0; border-bottom-right-radius:0; }
body.clinic-idle .shift-panel.show{ margin:24px 0 20px 0; border-left:none; border-top-left-radius:0; border-bottom-left-radius:0; padding:20px 16px; }
/* „Im Dienst" klar vom ersten Rollen-Header trennen */
.shift-panel .tp-head{ margin-bottom:18px; padding-bottom:10px; }
.shift-panel .tp-title{ font-size:var(--fs-sm); color:var(--text); }
.shift-group{ margin-bottom:22px; }
.shift-role{ margin-bottom:9px; }
/* Preisliste: Leistungen links, Impfstoffe rechts (zweispaltig) */
.modal.pi-modal{ max-width:880px; }
.pi-2col{ grid-template-columns:0.9fr 1.5fr; }
.pi-h{ font-size:19px; }
.pi-sub{ font-size:var(--fs-sm); }
/* Sektion 4: Altersfeld in eigener Zeile unter der Überschrift (kein Kollidieren mit Stift/Caret) */
.s4-agebar{ display:flex; justify-content:flex-end; margin:0 0 18px; }
/* Altersanzeige als dezenter Chip statt schwarzem Kasten (kohärent); Kinder weiterhin farblich hervorgehoben. */
.s4-agebar .age-box{ margin-top:0; background:var(--grey-xl); color:var(--text); border:1px solid var(--line); font-weight:700; }
.s4-agebar .age-box .yob{ color:var(--grey); opacity:1; }
.s4-agebar .age-box.child{ background:#e7f0fb; color:#1565c0; border-color:#b9d3ef; }
.s4-agebar .age-box.child .yob{ color:#1565c0; opacity:.8; }
.s4-agebar .age-box.empty{ background:var(--grey-xl); color:var(--grey); border-color:var(--line); font-weight:500; }
/* Etwas mehr Luft zwischen Überschrift+Nummer und Inhalt in allen Abschnitten */
.card h2{ margin-bottom:12px; }

/* === „Im Dienst" jetzt unten in der linken Spalte (rechte Spalte entfernt) === */
.tp-shift-zone{ flex:0 0 auto; margin-top:16px; padding-top:14px; border-top:1px solid var(--line); }
.tp-shift-zone .tp-head{ margin-bottom:14px; }
.tp-shift-zone .tp-title{ font-size:var(--fs-sm); color:var(--text); }
/* Ohne rechte Spalte: Liste wieder schmaler + rechte Ecken der Ambulanzliste gerundet */
body.clinic-idle .shell{ max-width:1180px; }
body.clinic-idle #list-card{ border-top-right-radius:8px; border-bottom-right-radius:8px; }

/* Gesperrte Sektion: NICHTS ist bedienbar (Pillen/Chips/Dosen/Listen), außer Überschrift (Auf-/Zuklappen),
   Stift, schreibgeschützte Info-/Karten-Buttons und der Abrechnungsblock. */
.card.locked > :not(h2):not(.lock-btn){ pointer-events:none; }
.card.locked > h2, .card.locked .lock-btn{ pointer-events:auto; }
.card.locked .info-btn, .card.locked .map-btn, .card.locked .row-info{ pointer-events:auto; }
/* Malaria-Karten-Viewer: Welt + Regionalkarten gestapelt, so groß wie möglich */
.mal-map-scroll{ width:97vw; max-width:1900px; max-height:94vh; overflow:auto; }
.mal-map-fig{ margin:0 0 10px; }
.mal-map-cap{ font-size:var(--fs-sm); font-weight:600; color:#fff; margin:0 0 5px; }
.mal-map-fig .map-full{ width:100%; height:auto; max-width:none; max-height:none; border:1px solid var(--line); border-radius:var(--radius-sm); display:block; background:#fff; }
/* im Malaria-Viewer Kopf/Fuß kompakt halten, damit die Karte maximal groß ist */
.mal-map-scroll .map-head{ margin-bottom:4px; }
/* Länder- & Gesundheitshinweise (nur Info + externe Links) bleiben immer klickbar, auch bei gesperrter Reise-Sektion */
.card.locked #notes-block, .card.locked #notes-block *, .card.locked .aa-link{ pointer-events:auto !important; }
.card.locked .kasse-billing, .card.locked .kasse-billing *{ pointer-events:auto; }
/* Chips/Dosen im gesperrten Zustand ausgegraut wie die übrigen Felder */
.card.locked .dose-chip, .card.locked .leistung-chip{ opacity:.55; }

/* ===== Ambulanzliste als Fluss-Board (Wartend → In Behandlung → Kasse → Behandelt) ===== */
.amb-filterbar{ display:flex; gap:6px; margin:0 0 12px; flex:0 0 auto; }
.amb-filter{ font-size:var(--fs-sm); padding:5px 13px; border:0.5px solid var(--line); border-radius:var(--radius-md); background:#fff; cursor:pointer; color:var(--grey); font-family:var(--font); }
.amb-filter:hover{ border-color:#aaa; color:var(--text); }
.amb-filter.active{ background:var(--black); color:#fff; border-color:var(--black); font-weight:600; }
.amb-flow{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; flex:1 1 auto; min-height:0; }
/* Offene Spalten (kein Kasten): getönte Icon-Quadrate, umrandete Zähl-Pillen, farbige Oberkante der Kartenzone. */
.amb-col{ display:flex; flex-direction:column; min-height:0; background:transparent; border:none; border-radius:0; overflow:visible; }
.amb-col-h{ display:flex; align-items:center; gap:9px; padding:2px 4px 12px; background:transparent; border:none; flex:0 0 auto; }
.amb-col .drop-zone{ flex:1 1 auto; min-height:300px; border-top:2px solid #cdd3da; padding:10px 2px 24px; overflow-y:auto; background:transparent; }
.amb-col-treatment .drop-zone{ border-top-color:#1565c0; }
.amb-col-kasse     .drop-zone{ border-top-color:#d59a3a; }
.amb-col-done      .drop-zone{ border-top-color:#4c9e50; }
.amb-col .drop-zone.drag-over{ background:#f0f6ff; border-radius:0 0 10px 10px; }

/* ===== iPad-/Tablet-Kiosk: große, klare Touch-Ziele für die Patienten-Selbstanmeldung ===== */
body.kiosk main{ max-width:840px; margin:0 auto; padding:24px 20px 130px; }
body.kiosk .card{ padding:26px 30px; border-radius:var(--radius-lg); margin-bottom:20px; }
body.kiosk .card h2{ font-size:21px; }
body.kiosk .card .card-desc{ font-size:var(--fs-base); }
body.kiosk label.fld{ font-size:var(--fs-base); margin-bottom:8px; }
body.kiosk input[type=text],body.kiosk input[type=date],body.kiosk input[type=email],body.kiosk input[type=number],body.kiosk select{ font-size:var(--fs-h2); height:56px; padding:12px 16px; border-radius:var(--radius-md); }
body.kiosk textarea{ font-size:var(--fs-h2); min-height:96px; padding:12px 16px; border-radius:var(--radius-md); }
body.kiosk .chk-chip{ font-size:var(--fs-base); padding:15px 18px; border-radius:var(--radius-md); }
body.kiosk .chk-row .chk-chip{ min-width:220px; min-height:56px; }
/* Kiosk/iPad: größere Touch-Ziele (≥44px) für Patienteneingabe am Tablet */
body.kiosk input[type=text], body.kiosk input[type=date], body.kiosk input[type=number], body.kiosk select, body.kiosk textarea{ min-height:48px; font-size:var(--fs-base); }
body.kiosk input[type=checkbox], body.kiosk input[type=radio]{ width:22px; height:22px; }
body.kiosk input[type=checkbox]{ width:24px; height:24px; }
body.kiosk .chip{ font-size:var(--fs-base); padding:6px 12px 6px 14px; }
body.kiosk .grid{ gap:20px; }
body.kiosk .kiosk-bar{ padding:16px 28px; }
body.kiosk .kiosk-bar .btn{ padding:16px 34px; font-size:var(--fs-h2); border-radius:var(--radius-md); }
body.kiosk .kiosk-bar .kiosk-hint{ font-size:var(--fs-base); }
body.kiosk .med-ac{ font-size:16px; }

/* ===== Fluss-Board v2: volle Breite (kein linkes Panel in der Liste), Im-Dienst-Zeile, Icons ===== */
body.clinic-idle #list-card{ border-radius:var(--radius-card); }
body.clinic-idle .shell{ max-width:1280px; }
.patient-item .patient-head{ cursor:pointer; }
.amb-col-title{ display:inline-flex; align-items:center; gap:9px; white-space:nowrap; font-size:var(--fs-meta); font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:#111; }
.amb-col-ic{ display:inline-flex; align-items:center; justify-content:center; width:28px; height:28px; border-radius:var(--radius-md); background:#eef0f3; color:#5b6572; flex:none; }
.amb-col-treatment .amb-col-ic{ background:#e8f0fb; color:#1565c0; }
.amb-col-kasse     .amb-col-ic{ background:#faf1e0; color:#b45309; }
.amb-col-done      .amb-col-ic{ background:#e8f3e9; color:#2e7d32; }
/* Zähl-Pille im Spaltenkopf: umrandet, statusfarbig (überschreibt die globale schwarze Pille) */
.amb-col-h .count-pill{ margin-left:auto; background:transparent; color:#5b6572; border:1px solid #d5d9df; border-radius:20px; padding:1px 9px; font-size:var(--fs-meta); font-weight:700; }
.amb-col-treatment .amb-col-h .count-pill{ color:#1565c0; border-color:#b9d3ef; }
.amb-col-kasse     .amb-col-h .count-pill{ color:#b45309; border-color:#eccfa1; }
.amb-col-done      .amb-col-h .count-pill{ color:#2e7d32; border-color:#bfe0c2; }
/* „Im Dienst" – schlichte Fußzeile unten links, nach Funktion gruppiert (kein Kasten) */
.amb-shift-row{ display:flex; align-items:flex-start; flex-wrap:wrap; gap:8px 26px; margin-top:20px; padding-top:14px; border-top:1px solid #eee; flex:0 0 auto; }
.shift-row-title{ font-size:var(--fs-meta); font-weight:800; text-transform:uppercase; letter-spacing:.07em; color:#9a9a9a; line-height:26px; }
.shift-row-group{ display:inline-flex; align-items:center; flex-wrap:wrap; gap:8px; }
.shift-row-role{ font-size:var(--fs-meta); font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#c9ccd1; line-height:26px; }
.shift-row-person{ display:inline-flex; align-items:center; gap:6px; font-size:var(--fs-sm); color:#333; }
.shift-row-nm{ white-space:nowrap; }
.shift-row-empty{ font-size:var(--fs-sm); color:#bcbcbc; }

/* ===== Standardisierte 2-Zeilen-Karten im Fluss-Board ===== */
.amb-flow .patient-item{ position:relative; background:#fff; border:1px solid #e7e7e7; border-radius:10px; box-shadow:0 1px 2px rgba(0,0,0,.04); margin-bottom:9px; transition:box-shadow .12s; }
.amb-flow .patient-item:hover{ box-shadow:0 4px 14px rgba(0,0,0,.10); }
.amb-col-done .patient-item{ opacity:.94; }
.amb-flow .patient-head{ display:flex; flex-direction:column; align-items:stretch; gap:9px; padding:12px 13px; cursor:pointer; }
.amb-flow .patient-head .ph-row1{ display:flex; align-items:center; gap:6px; min-height:20px; }
.amb-flow .patient-head .pl-name{ font-weight:700; font-size:var(--fs-base); letter-spacing:-.01em; line-height:1.2; white-space:normal; }
.amb-flow .patient-head .pl-age{ font-weight:400; font-size:var(--fs-sm); color:#8a8a8a; white-space:nowrap; }
.amb-flow .patient-head .pl-spacer{ flex:1 1 auto; }
.amb-flow .patient-head .ph-row1 .ini-circle,.amb-flow .patient-head .ph-row1 .pay-badge{ align-self:center; }
/* Zeile 2: B/F-Badge ganz links, Ziel, dann Uhrzeit/Preis rechts – immer gleiche Position */
.amb-flow .patient-head .ph-row2{ display:flex; align-items:center; gap:7px; font-size:var(--fs-meta); color:var(--grey); line-height:1.35; }
.amb-flow .type-badge{ flex:none; width:auto; height:auto; padding:2px 8px; border-radius:var(--radius-sm); font-size:var(--fs-meta); font-weight:700; }
.amb-flow .patient-head .ph-meta{ display:inline-flex; align-items:center; gap:4px; flex:1 1 auto; min-width:0; color:var(--grey); }
.amb-flow .patient-head .ph-meta > span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.amb-flow .patient-head .ph-meta svg{ flex:none; opacity:.65; }
.amb-flow .patient-head .ph-spacer{ flex:0 0 0; }
.amb-flow .patient-head .ph-time{ flex:none; display:inline-flex; align-items:center; gap:4px; color:var(--grey); }
.amb-flow .patient-head .ph-time svg{ opacity:.85; }
.amb-flow .patient-head .ph-time.wait-neutral{ padding:2px 7px; border-radius:var(--radius-sm); background:var(--neutral-bg); color:#6d6d6d; font-weight:700; }
.amb-flow .patient-head .ph-time.wait-amber{ padding:2px 7px; border-radius:var(--radius-sm); background:var(--yellow-bg); color:var(--yellow-text); font-weight:700; }
.amb-flow .patient-head .ph-time.wait-red{ padding:2px 7px; border-radius:var(--radius-sm); background:var(--red-bg); color:var(--red-text); font-weight:700; }
.amb-flow .patient-head .ph-time.treat{ color:var(--blue); font-weight:600; }
.amb-flow .patient-head .ph-time.paid{ color:var(--green); font-weight:700; }
.amb-flow .patient-head .ph-price{ flex:none; font-size:var(--fs-base); font-weight:700; color:var(--text); font-variant-numeric:tabular-nums; }
.amb-flow .patient-head .ini-circle{ flex:none; width:24px; height:24px; border-radius:7px; font-size:10px; }
/* Kasse: „Zahlung offen"-Leiste unter Zeile 2 */
.amb-flow .patient-head .ph-payrow{ display:flex; align-items:center; gap:6px; font-size:var(--fs-meta); font-weight:700; color:#b45309; background:#faf1e0; border-radius:var(--radius-sm); padding:5px 8px; }

/* Löschzone (untere Zeile) – nur beim Ziehen sichtbar; Patient/Gruppe hierher ziehen zum Löschen */
.amb-trash-zone{ display:none; }
/* Als fixierte Leiste am unteren Rand einblenden – reflowt das Board beim Ziehen NICHT
   (sonst verschiebt sich die unterste Karte und lässt sich nicht mehr greifen). */
body.amb-dragging .amb-trash-zone{ display:flex; position:fixed; left:50%; transform:translateX(-50%); bottom:18px; z-index:200; align-items:center; justify-content:center; gap:10px; padding:12px 26px; border:2px dashed var(--red); border-radius:var(--radius-pill); color:var(--red); font-size:var(--fs-sm); font-weight:600; background:rgba(255,255,255,.97); box-shadow:0 6px 20px rgba(0,0,0,.14); transition:background .12s, border-color .12s; }
.amb-trash-zone.over{ background:rgba(220,38,38,.16); border-color:#b91c1c; }
.amb-trash-zone svg{ pointer-events:none; }
.amb-trash-zone span{ pointer-events:none; }

/* ===== Statistik (Kasse & Admin) ===== */
#stats-sec .st-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
#stats-sec .st-head h2{ margin:0; }
.st-kpis{ display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:16px; }
.st-kpi{ background:var(--grey-xl); border:1px solid var(--line); border-radius:var(--radius-lg); padding:15px 18px; }
.st-kpi-v{ font-size:25px; font-weight:800; letter-spacing:-.01em; line-height:1.1; }
.st-kpi-l{ font-size:var(--fs-sm); color:var(--grey); margin-top:3px; }
.st-grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px; }
.st-box{ background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:14px 16px; }
.st-box.st-wide{ grid-column:1 / -1; }
.st-box-h{ font-size:var(--fs-meta); font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--grey); margin-bottom:10px; }
.st-box-h-nav{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
.st-navrow{ display:inline-flex; align-items:center; gap:8px; }
.st-navlbl{ font-size:var(--fs-sm); font-weight:700; color:var(--text); text-transform:none; letter-spacing:0; min-width:110px; text-align:center; }
.st-nav{ border:1px solid var(--line); background:#fff; width:26px; height:26px; border-radius:var(--radius-sm); cursor:pointer; font-size:var(--fs-base); line-height:1; color:var(--text); display:inline-flex; align-items:center; justify-content:center; }
.st-nav:hover:not(:disabled){ border-color:var(--black); }
.st-nav:disabled{ opacity:.35; cursor:default; }
.st-sub2{ font-size:var(--fs-sm); color:var(--grey); margin:-2px 0 12px; }
.st-bar-sun .st-bar-fill{ opacity:.5; }
.st-box-h .st-sub{ font-weight:400; text-transform:none; letter-spacing:0; }
.st-rows{ display:flex; flex-direction:column; }
.st-row{ display:flex; justify-content:space-between; gap:10px; font-size:var(--fs-sm); padding:5px 0; border-bottom:1px solid var(--grey-xl); }
.st-row:last-child{ border-bottom:none; }
.st-num{ font-weight:700; font-variant-numeric:tabular-nums; }
.st-empty{ color:var(--grey); font-size:var(--fs-sm); padding:4px 0; }
.st-hrow{ display:flex; align-items:center; gap:10px; margin:7px 0; font-size:var(--fs-sm); }
.st-hlbl{ flex:0 0 34%; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.st-hbar{ flex:1; height:9px; background:var(--grey-xl); border-radius:var(--radius-sm); overflow:hidden; }
.st-hbar>span{ display:block; height:100%; background:var(--blue); border-radius:var(--radius-sm); }
.st-chart-wrap{ display:flex; gap:8px; }
.st-yaxis{ display:flex; flex-direction:column; justify-content:space-between; height:130px; width:48px; flex:none; padding-top:2px; }
.st-yt{ font-size:9px; color:var(--grey); text-align:right; line-height:1; font-variant-numeric:tabular-nums; }
.st-chart-wrap .st-chart{ flex:1; border-left:1px solid var(--line); border-bottom:1px solid var(--line); }
.st-chart-grid{ background-image:linear-gradient(to top, transparent, transparent calc(25% - 1px), var(--grey-xl) 25%, transparent calc(25% + 1px)), linear-gradient(to top, transparent, transparent calc(50% - 1px), var(--grey-xl) 50%, transparent calc(50% + 1px)), linear-gradient(to top, transparent, transparent calc(75% - 1px), var(--grey-xl) 75%, transparent calc(75% + 1px)); }
.st-chart{ display:flex; align-items:flex-end; gap:3px; height:130px; padding-top:6px; }
.st-bar{ flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; height:100%; }
.st-bar-fill{ width:68%; background:var(--blue); border-radius:var(--radius-xs) 3px 0 0; }
.st-bar-x{ font-size:8px; color:var(--grey); margin-top:3px; }
.st-table{ width:100%; border-collapse:collapse; font-size:var(--fs-sm); }
.st-table th,.st-table td{ text-align:left; padding:6px 8px; border-bottom:1px solid var(--grey-xl); }
.st-table th{ font-size:var(--fs-meta); text-transform:uppercase; letter-spacing:.03em; color:var(--grey); }
.st-groups{ display:flex; align-items:flex-end; gap:5px; height:118px; padding-top:6px; }
.st-gcol{ flex:1; display:flex; flex-direction:column; align-items:center; justify-content:flex-end; height:100%; }
.st-gbars{ display:flex; align-items:flex-end; justify-content:center; gap:2px; height:100%; width:100%; }
.st-gbar{ width:6px; border-radius:var(--radius-xs) 2px 0 0; min-height:2px; }
.st-gbar.st-gbar-x{ background:transparent!important; min-height:0; }
.st-gcol .st-bar-x{ font-size:9px; color:var(--grey); margin-top:4px; }
.st-legend{ display:flex; flex-wrap:wrap; gap:6px 14px; margin:11px 0 4px; }
.st-leg{ display:inline-flex; align-items:center; gap:5px; font-size:var(--fs-meta); color:var(--text); }
.st-leg-dot{ width:9px; height:9px; border-radius:var(--radius-xs); display:inline-block; flex:none; margin-right:4px; }
.st-section-lbl{ font-size:var(--fs-meta); font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--grey); margin:0 0 10px; }
.st-section-lbl.st-sep{ margin-top:22px; padding-top:16px; border-top:1px solid var(--line); }
@media(max-width:720px){ .st-kpis{grid-template-columns:1fr;} .st-grid{grid-template-columns:1fr;} }

/* ===== Verwendete Quellen ===== */
#sources-sec .st-head{ margin-bottom:14px; }
#sources-sec .st-head h2{ margin:0; }
.src-groups{ column-count:2; column-gap:16px; }
@media(max-width:720px){ .src-groups{ column-count:1; } }
.src-group{ break-inside:avoid; -webkit-column-break-inside:avoid; page-break-inside:avoid; display:inline-block; width:100%; margin:0 0 16px; background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:14px 16px; box-shadow:0 1px 2px rgba(0,0,0,.03); }
.src-group-h{ display:flex; align-items:center; justify-content:space-between; gap:10px; font-size:var(--fs-base); font-weight:700; margin:0 0 8px; padding-bottom:9px; border-bottom:2px solid var(--grey-xl); }
.src-badge{ font-size:var(--fs-meta); font-weight:700; text-transform:uppercase; letter-spacing:.04em; padding:2px 9px; border-radius:var(--radius-pill); white-space:nowrap; }
.src-badge.active{ background:var(--green-bg); color:var(--green); }
.src-badge.planned{ background:var(--yellow-bg); color:var(--yellow); }
.src-row{ display:flex; justify-content:space-between; gap:12px; padding:9px 0; border-top:1px solid var(--grey-xl); }
.src-row:first-of-type{ border-top:none; padding-top:3px; }
.src-main{ min-width:0; }
.src-link{ font-size:var(--fs-sm); font-weight:600; color:var(--blue); text-decoration:none; }
.src-link:hover{ text-decoration:underline; }
.src-name{ font-size:var(--fs-sm); font-weight:600; color:var(--text); }
.src-use{ font-size:var(--fs-meta); color:var(--grey); line-height:1.4; margin-top:2px; }
.src-stand{ font-size:var(--fs-meta); color:var(--grey); flex:none; text-align:right; align-self:flex-start; max-width:40%; line-height:1.35; }
.src-foot{ font-size:var(--fs-meta); color:var(--grey); margin-top:14px; padding-top:12px; border-top:1px solid var(--line); }

/* ===== Malaria & Expositionsprophylaxe ===== */
#stepM .mal-summary{ background:var(--grey-xl); border-radius:var(--radius-md); padding:10px 13px; margin-bottom:14px; }
.mal-sum-head{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.mal-sum-note{ font-size:var(--fs-meta); color:var(--grey); }
.mal-badge{ font-size:var(--fs-meta); font-weight:700; text-transform:uppercase; letter-spacing:.03em; padding:2px 9px; border-radius:var(--radius-pill); white-space:nowrap; }
.mal-badge.high{ background:var(--red-bg); color:var(--red); }
.mal-badge.mid{ background:var(--yellow-bg); color:var(--yellow); }
.mal-badge.low{ background:#fff; color:var(--grey); border:1px solid var(--line); }
.mal-badge.std{ background:var(--blue-bg); color:var(--blue); }
.mal-dests{ display:flex; flex-wrap:wrap; gap:6px; margin-top:9px; }
.mal-dest{ font-size:var(--fs-sm); color:var(--text); background:#fff; border:1px solid var(--line); border-radius:var(--radius-sm); padding:2px 8px; }
.mal-cnotes{ margin-top:9px; display:flex; flex-direction:column; gap:5px; }
.mal-cnote{ font-size:var(--fs-sm); color:var(--text); background:#fff; border:1px solid var(--line); border-left:3px solid var(--blue); border-radius:var(--radius-sm); padding:5px 9px; line-height:1.35; }
.mal-row{ display:flex; align-items:center; gap:12px; margin-bottom:12px; }
.mal-lbl{ font-size:var(--fs-sm); font-weight:600; }
.mal-days{ display:flex; align-items:center; gap:7px; }
.mal-days input{ width:82px; height:38px; text-align:center; }
.mal-days span{ font-size:var(--fs-sm); color:var(--grey); }
.mal-rec{ display:flex; gap:11px; align-items:flex-start; border-radius:var(--radius-md); padding:11px 14px; margin-bottom:14px; }
.mal-rec.high{ background:var(--blue-bg); }
.mal-rec.mid{ background:var(--yellow-bg); }
.mal-rec.low{ background:var(--grey-xl); }
.mal-rec-ic{ flex:none; margin-top:1px; }
.mal-rec.high .mal-rec-ic,.mal-rec.high .mal-rec-t{ color:var(--blue); }
.mal-rec.mid .mal-rec-ic,.mal-rec.mid .mal-rec-t{ color:var(--yellow-text); }
.mal-rec.low .mal-rec-ic{ color:var(--grey); }
.mal-rec-t{ font-size:var(--fs-base); font-weight:700; }
.mal-rec-s{ font-size:var(--fs-sm); line-height:1.5; color:var(--text); margin-top:2px; }
/* Ohne Überschrift stehen in der Karte mehrere gleichrangige Sätze untereinander –
   die brauchen etwas Luft, sonst lesen sie sich als ein Block. */
.mal-rec-s + .mal-rec-s{ margin-top:7px; }
/* Zahlen-Stepper */
.mal-step{ display:inline-flex; align-items:center; }
.mal-step button{ width:34px; height:38px; border:1px solid var(--line); background:#fff; cursor:pointer; font-size:var(--fs-h2); line-height:1; color:var(--text); font-family:var(--font); }
.mal-step button:first-of-type{ border-radius:var(--radius-md) 0 0 8px; border-right:none; }
.mal-step button:last-of-type{ border-radius:0 8px 8px 0; border-left:none; }
.mal-step button:hover{ background:var(--grey-xl); }
.mal-step input{ width:62px; height:38px; text-align:center; border:1px solid var(--line); border-radius:0; -moz-appearance:textfield; }
.mal-step input::-webkit-outer-spin-button,.mal-step input::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }
.mal-step-unit{ font-size:var(--fs-sm); color:var(--grey); margin-left:8px; }
body.clinic-idle #stepM{ display:none !important; }
.mal-none{ font-size:var(--fs-sm); color:var(--grey); display:flex; align-items:center; line-height:1.5; margin-bottom:14px; }
#stepM.foldable > h2{ cursor:pointer; }
#stepM.foldable > h2::after{ content:'▾'; margin-left:auto; color:var(--grey); font-size:var(--fs-sm); transition:transform .15s; }
#stepM.folded > h2::after{ transform:rotate(-90deg); }
/* Patientenspezifische Warnung (z. B. Niereninsuffizienz → Malarone) */
.mal-warn{ display:flex; gap:8px; align-items:flex-start; background:#fdecea; border:1px solid #e6b0aa; color:#922b21; border-radius:8px; padding:9px 11px; margin:10px 0; font-size:var(--fs-sm); line-height:1.4; }
.mal-warn svg{ flex:0 0 auto; margin-top:1px; color:#c0392b; }
.mal-drug.renal-cave{ border-color:#e6b0aa; box-shadow:0 0 0 1px #e6b0aa inset; }
.mal-fld.renal{ color:#922b21; font-weight:600; }
.mal-fld.renal .mal-fld-l{ color:#922b21; }
.mal-map-btn{ display:inline-flex; align-items:center; justify-content:center; margin-left:10px; background:#fff; border:1px solid var(--line); border-radius:50%; width:24px; height:24px; cursor:pointer; color:var(--blue); flex:none; }
.mal-map-btn:hover{ border-color:var(--blue); }
.mm-list{ display:flex; flex-direction:column; gap:8px; margin:14px 0; }
.mm-row{ display:flex; align-items:center; gap:10px; padding:9px 12px; border:1px solid var(--line); border-radius:var(--radius-md); }
.mm-c{ font-weight:600; font-size:var(--fs-base); flex:1; }
.mm-row .btn{ flex:none; }
.mm-none{ font-size:var(--fs-sm); color:var(--grey); margin:14px 0; }
.mm-actions{ display:flex; gap:10px; flex-wrap:wrap; margin-top:6px; }
/* Testdaten-Generator */
#testgen-sec .tg-row{ display:flex; align-items:center; gap:12px; margin-bottom:12px; flex-wrap:wrap; }
#testgen-sec .tg-lbl{ font-size:var(--fs-sm); font-weight:600; min-width:120px; }
#testgen-sec select{ height:38px; }
#testgen-sec .mal-step input{ width:56px; }
.tg-log{ margin-top:14px; font-size:var(--fs-sm); max-height:260px; overflow:auto; }
.tg-log div{ padding:2px 0; }
.tg-log .tg-ok{ color:var(--green); }
.tg-log .tg-err{ color:var(--red); }
/* Gelöschte Patienten (Einstellungen) */
#deleted-sec .del-list{ display:flex; flex-direction:column; }
.del-row{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 0; border-top:1px solid var(--grey-xl); }
.del-row:first-child{ border-top:none; }
.del-main{ min-width:0; }
.del-name{ font-size:var(--fs-base); font-weight:600; }
.del-sub{ font-size:var(--fs-meta); color:var(--grey); margin-top:1px; }
.del-row .btn{ flex:none; }
.del-acts{ display:flex; gap:8px; flex:none; }
.del-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
.del-head h2{ margin:0; }
.btn-purge{ display:inline-flex; align-items:center; gap:7px; flex:none; font-family:var(--font); font-size:var(--fs-sm); font-weight:600; color:var(--red); background:#fff; border:1px solid var(--red); border-radius:var(--radius-md); padding:7px 13px; cursor:pointer; transition:background .12s,color .12s; }
.btn-purge:hover{ background:var(--red); color:#fff; }
.btn-purge svg{ flex:none; }
.del-empty{ font-size:var(--fs-sm); color:var(--grey); padding:6px 0; }
.del-foot{ display:flex; justify-content:flex-end; margin-top:16px; padding-top:14px; border-top:1px solid var(--line); }
/* .mal-standby ist entfallen – der Standby-Text steht jetzt als Zeile in der
   Empfehlungskarte (.mal-rec-note), statt als zweiter gelber Kasten mit gleichem Titel. */
.mal-drug-h{ font-size:var(--fs-sm); color:var(--grey); margin-bottom:8px; }
.mal-drugs{ display:flex; flex-direction:column; gap:10px; margin-bottom:14px; }
.mal-drug{ border:1px solid var(--line); border-radius:var(--radius-lg); padding:12px 14px; cursor:pointer; background:#fff; transition:border-color .12s; }
.mal-drug:hover{ border-color:#aaa; }
.mal-drug.sel{ border:2px solid var(--blue); }
.mal-drug-top{ display:flex; align-items:center; gap:8px; }
.mal-chk{ color:var(--blue); flex:none; }
.mal-drug-nm{ font-weight:700; font-size:var(--fs-base); }
.mal-drug-tag{ font-size:var(--fs-sm); color:var(--grey); margin-left:auto; }
.mal-drug-body{ margin-top:11px; border-top:1px solid var(--line); padding-top:11px; display:flex; flex-direction:column; gap:8px; }
/* Hängender Einzug statt Flex: bei mehrzeiligen Werten (z. B. „Einnahme") fiel die
   Folgezeile bisher unter das Label zurück. Flex wäre hier falsch – die Werte enthalten
   Auszeichnungen wie <strong>, die dann jeweils zu eigenen Flex-Spalten würden.
   74 px Labelbreite + 8 px Abstand = 82 px Einzug. */
.mal-fld{ font-size:var(--fs-sm); line-height:1.42; padding-left:82px; text-indent:-82px; }
/* text-indent:0 ist zwingend: der negative Einzug der Zeile wird sonst an das inline-block
   des Labels vererbt und zieht es ein zweites Mal nach links – aus der Karte heraus. */
.mal-fld-l{ display:inline-block; min-width:74px; text-indent:0; font-size:var(--fs-meta); text-transform:uppercase; letter-spacing:.03em; color:var(--grey); font-weight:700; vertical-align:top; margin-right:8px; }
.mal-fld.cave{ color:#7a1f1f; }
.mal-fld.cave .mal-fld-l{ color:var(--red); }
.mal-calc{ background:var(--grey-xl); border-radius:var(--radius-md); padding:11px 12px; margin-top:4px; }
.mal-calc-row{ display:flex; align-items:center; gap:9px; margin-bottom:10px; }
.mal-calc-row label{ font-size:var(--fs-sm); color:var(--grey); }
.mal-calc-row input{ width:82px; height:36px; text-align:center; }
.mal-calc-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.mal-calc-grid > div{ background:#fff; border-radius:var(--radius-sm); padding:7px 9px; }
.mal-calc-l{ font-size:var(--fs-meta); color:var(--grey); }
.mal-calc-v{ font-size:var(--fs-base); font-weight:700; }
.mal-calc-note{ font-size:var(--fs-meta); color:var(--grey); margin-top:8px; }
/* Hinweis zu P. vivax / P. ovale – hatte bisher gar kein CSS, dadurch klebte das Icon
   direkt am Text und der Block hob sich nicht vom Fließtext ab. Gleiche Bauweise wie
   .mal-standby und .mal-expo: Icon als eigene Flex-Spalte, oben ausgerichtet. */
.mal-tertiana{ display:flex; gap:10px; align-items:flex-start; background:var(--blue-bg,#eaf2fb); border-radius:var(--radius-md); padding:13px 15px; margin:12px 0 14px; font-size:var(--fs-sm); line-height:1.55; color:#1b4a7a; }
.mal-tertiana svg{ flex:none; margin-top:2px; color:var(--blue,#1565c0); }
.mal-expo{ display:flex; gap:10px; align-items:flex-start; background:var(--green-bg); border-radius:var(--radius-md); padding:13px 15px; font-size:var(--fs-sm); line-height:1.55; color:#215c2a; }
.mal-expo svg{ flex:none; margin-top:2px; color:var(--green); }
/* Modus-Umschalter Chemoprophylaxe / Notfallselbstbehandlung (segmentiert) */
.mal-mode-toggle{ display:inline-flex; gap:3px; background:var(--grey-xl); border:1px solid var(--line); border-radius:var(--radius-md); padding:3px; margin-bottom:14px; }
.mal-mode{ border:none; background:transparent; cursor:pointer; font-family:var(--font); font-size:var(--fs-sm); font-weight:600; color:var(--grey); padding:7px 15px; border-radius:var(--radius-sm); transition:background .12s,color .12s,box-shadow .12s; }
.mal-mode:hover{ color:var(--black); }
.mal-mode.active{ background:#fff; color:var(--black); box-shadow:0 1px 3px rgba(0,0,0,.12); }
.mal-drug.sbet{ border:2px solid var(--yellow); }
.mal-drug.sbet .mal-chk{ color:var(--yellow); }
/* Patienteneingabe-Sperre (Tablet) im Admin-Bereich */
.lock-row{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin-top:16px; padding:14px 16px; border:1px solid var(--line); border-radius:var(--radius-md); background:#fafbfc; flex-wrap:wrap; }
.lock-meta{ display:flex; flex-direction:column; gap:3px; min-width:0; }
.lock-title{ font-weight:600; font-size:var(--fs-base); }
.lock-status{ font-size:var(--fs-sm); display:inline-flex; align-items:center; gap:6px; }
.lock-status::before{ content:""; width:8px; height:8px; border-radius:50%; background:currentColor; flex:none; }
.lock-status.open{ color:var(--green); }
.lock-status.locked{ color:var(--red); }
.btn.btn-lock{ border:1.5px solid var(--red); color:var(--red); background:#fff; }
.btn.btn-lock:hover{ background:var(--red); color:#fff; }
.btn.btn-unlock{ border:1.5px solid var(--green); color:var(--green); background:#fff; }
.btn.btn-unlock:hover{ background:var(--green); color:#fff; }
/* Kinder-Hinweisbox in Sektion 6: Überschrift + Punkteliste statt eines langen Absatzes */
.mal-warn-list{ align-items:flex-start; }
.mal-warn-list .mal-warn-h{ font-weight:700; margin-bottom:5px; }
.mal-warn-list ul{ margin:0; padding-left:17px; display:flex; flex-direction:column; gap:4px; }
.mal-warn-list li{ line-height:1.45; }
/* Zusatzzeile in der Malaria-Empfehlungskarte (früher eigener blauer Kasten darüber) */
.mal-rec-note{ font-size:var(--fs-sm); line-height:1.5; margin-top:7px; padding-top:7px; border-top:1px solid rgba(0,0,0,.09); color:var(--text); }
