/* ═══════════════════════════════════════════════════════════════════════════
   POS / Kasse (Block B.1)
   Seitlicher Drawer für Kassieren, Beleg-Modal, Payment-Grid
   ═══════════════════════════════════════════════════════════════════════════ */

.pos-drawer-ov {
  position: fixed; inset: 0; background: rgba(14,27,77,.42);
  opacity: 0; pointer-events: none; transition: opacity .22s; z-index: 9600;
}
.pos-drawer-ov.open { opacity: 1; pointer-events: auto; }

.pos-drawer {
  position: fixed; top: 0; right: 0; bottom: 0; width: 440px; max-width: 96vw;
  background: var(--s1); border-left: 1px solid var(--b1);
  box-shadow: -10px 0 36px rgba(14,27,77,.18);
  display: flex; flex-direction: column;
  transform: translateX(100%); transition: transform .24s cubic-bezier(.4,0,.2,1);
  z-index: 9700;
}
.pos-drawer.open { transform: translateX(0); }

.pos-drawer-head {
  padding: 16px 20px; border-bottom: 1px solid var(--b1);
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
  background: linear-gradient(135deg, rgba(224,112,176,.08), rgba(200,149,90,.04));
}
.pos-drawer-title { font-size: 17px; font-weight: 800; color: var(--t1); letter-spacing: -.3px; }
.pos-drawer-sub { font-size: 12px; color: var(--t3); margin-top: 2px; }
.pos-close {
  background: none; border: none; font-size: 20px; color: var(--t3);
  cursor: pointer; padding: 4px 8px; border-radius: 8px; transition: all .15s;
}
.pos-close:hover { background: var(--s2); color: var(--t1); }

.pos-drawer-body {
  flex: 1; overflow-y: auto; padding: 16px 20px;
}

.pos-section-label {
  font-size: 11px; font-weight: 700; color: var(--t3);
  text-transform: uppercase; letter-spacing: .5px; margin: 8px 0 8px;
}

.pos-items { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; }
.pos-item {
  display: grid; grid-template-columns: 1fr auto 28px; gap: 10px; align-items: center;
  padding: 10px 12px; background: var(--s2); border: 1px solid var(--b1); border-radius: 10px;
}
.pos-item-name { font-size: 13.5px; font-weight: 700; color: var(--t1); }
.pos-item-meta { font-size: 11.5px; color: var(--t3); margin-top: 2px; }
.pos-item-total { font-size: 14px; font-weight: 700; color: var(--t1); }
.pos-item-tag {
  display: inline-block; padding: 1px 7px; border-radius: 5px;
  background: rgba(155,111,212,.18); color: #9b6fd4;
  font-size: 10px; font-weight: 700; margin-left: 4px; vertical-align: middle;
}
.pos-tag-tip { background: rgba(29,217,122,.18); color: var(--ng); }
.pos-item-del {
  background: none; border: none; color: var(--t4); font-size: 17px;
  cursor: pointer; border-radius: 6px; width: 26px; height: 26px; line-height: 1;
}
.pos-item-del:hover { background: rgba(217,64,64,.14); color: var(--nd); }
.pos-empty {
  padding: 18px; text-align: center; font-size: 13px; color: var(--t3);
  border: 1px dashed var(--b2); border-radius: 10px; background: var(--s2);
}
.pos-add-btn {
  padding: 9px 12px; border: 1px dashed var(--b2); border-radius: 9px;
  background: transparent; color: var(--t2); font-family: inherit; font-size: 12.5px;
  font-weight: 600; cursor: pointer; transition: all .15s;
}
.pos-add-btn:hover { color: var(--np); border-color: var(--np); background: var(--s2); }

.pos-totals {
  margin: 14px 0; padding: 12px 14px; background: var(--s2);
  border: 1px solid var(--b1); border-radius: 12px;
}
.pos-total-row {
  display: flex; justify-content: space-between; font-size: 13px; padding: 4px 0;
  color: var(--t2);
}
.pos-total-grand {
  font-size: 16px; font-weight: 800; color: var(--t1); border-top: 1px solid var(--b1);
  padding-top: 9px; margin-top: 6px;
}

.pos-pays { display: flex; flex-direction: column; gap: 6px; }
.pos-pay-row {
  display: grid; grid-template-columns: 1fr auto 28px; gap: 10px; align-items: center;
  padding: 8px 12px; background: var(--s2); border: 1px solid var(--b1); border-radius: 9px;
  font-size: 13px; color: var(--t2);
}
.pos-pay-amount { font-weight: 700; color: var(--t1); }
.pos-open-row {
  padding: 9px 12px; background: rgba(212,148,58,.12); border: 1px solid rgba(212,148,58,.3);
  border-radius: 9px; font-size: 13px; color: var(--na); font-weight: 600;
}
.pos-open-ok { background: rgba(29,217,122,.12); border-color: rgba(29,217,122,.3); color: var(--ng); }

.pos-pay-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin: 10px 0;
}
.pos-pay-btn {
  padding: 11px 12px; border: 1.5px solid var(--b2); border-radius: 10px;
  background: var(--s1); color: var(--t2); font-family: inherit; font-size: 13px;
  font-weight: 700; cursor: pointer; transition: all .15s;
}
.pos-pay-btn:hover {
  border-color: var(--np); color: var(--np); background: var(--s2);
}

.pos-pay-split {
  display: grid; grid-template-columns: 1fr 1fr auto; gap: 8px; align-items: center;
}
.pos-input {
  padding: 9px 11px; background: var(--s2); border: 1px solid var(--b2);
  border-radius: 9px; font-family: inherit; font-size: 13px; color: var(--t1);
}
.pos-input:focus { outline: none; border-color: var(--np); background: var(--s1); }

.pos-drawer-foot {
  padding: 12px 20px; border-top: 1px solid var(--b1); background: var(--s2);
  display: flex; gap: 10px; justify-content: flex-end;
}
.pos-finalize-btn {
  min-width: 220px; font-weight: 800;
}

/* ─── Beleg-Modal ─── */
.pos-receipt { padding: 8px 4px; }
.pos-rec-customer { font-size: 15px; font-weight: 800; color: var(--t1); }
.pos-rec-meta { font-size: 12px; color: var(--t3); margin: 2px 0 14px; }
.pos-rec-tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.pos-rec-tbl td { padding: 6px 4px; border-bottom: 1px solid var(--b1); }
.pos-rec-tbl tfoot td { border-bottom: none; padding-top: 10px; color: var(--t2); }
.pos-rec-num { text-align: right; font-variant-numeric: tabular-nums; }
.pos-rec-tse {
  margin-top: 16px; padding: 12px 14px; background: var(--s2);
  border: 1px solid var(--b1); border-radius: 10px; font-size: 12px;
}
.pos-rec-tse-lbl { font-weight: 700; color: var(--t3); text-transform: uppercase; font-size: 10.5px; letter-spacing: .4px; margin-top: 6px; }
.pos-rec-tse-val { font-family: 'SF Mono', Menlo, monospace; font-size: 12px; color: var(--t1); word-break: break-all; margin-top: 2px; }
.pos-rec-qr-wrap {
  margin-top: 12px; padding: 12px; background: #fff; border: 1px solid var(--b2);
  border-radius: 8px; display: flex; flex-direction: column; align-items: center; gap: 6px;
}
.pos-rec-qr-wrap svg { display: block; max-width: 100%; height: auto; }
.pos-rec-qr-hint { font-size: 11px; color: #8a95b5; }
.pos-rec-qr-text {
  font-family: 'SF Mono', Menlo, monospace; font-size: 10.5px;
  color: var(--t2); word-break: break-all; background: var(--s1);
  padding: 10px; border-radius: 6px; border: 1px dashed var(--b2);
}

/* ─── Druck-Optimierung für Kassenbeleg ─── */
@media print {
  body * { visibility: hidden !important; }
  .dlg-bg, .dlg-bg * { visibility: visible !important; }
  .dlg-bg {
    position: absolute !important; inset: 0 !important; background: #fff !important;
    padding: 20mm !important;
  }
  .dlg-box {
    box-shadow: none !important; border: none !important;
    max-width: none !important; width: 80mm !important;
  }
  .dlg-head, .dlg-foot { display: none !important; }
  .pos-rec-qr-wrap { border: none !important; padding: 4px 0 !important; }
  .pos-receipt { font-size: 10pt !important; }
  .pos-rec-tse-val { font-size: 8pt !important; }
}

@media (max-width: 520px) {
  .pos-drawer { width: 100vw; }
  .pos-pay-split { grid-template-columns: 1fr; }
}
