/* 58mm 热敏小票（浏览器打印） */
.print-area {
  display: flex;
  justify-content: center;
  margin: 1.5rem 0;
}

.print-slip {
  --slip-min-h: 115mm;
  --slip-half-h: 57.5mm;
  --slip-note-gap: 0.45mm;
  --slip-notes-shift: 35mm;
  --slip-qrcode-size: 76px;
  width: 58mm;
  max-width: 58mm;
  min-height: var(--slip-min-h);
  padding: 3mm 2mm 2mm;
  font-family: "Microsoft YaHei", "PingFang SC", sans-serif;
  font-size: 11px;
  line-height: 1.45;
  color: #000;
  background: #fff;
  border: 1px dashed #ccc;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
}

.print-slip-main {
  flex: 1 1 auto;
  min-height: var(--slip-half-h);
  display: flex;
  flex-direction: column;
}

.print-slip-head {
  flex-shrink: 0;
  text-align: center;
  border-bottom: 1px dashed #999;
  padding-bottom: 2mm;
  margin-bottom: 2mm;
}

.print-slip-title {
  margin: 1mm 0;
  font-size: 14px;
  font-weight: 700;
}

.print-slip-shop {
  font-weight: 700;
  margin: 0;
}

.print-slip-shop-row {
  display: flex;
  align-items: center;
  gap: 1.5mm;
  flex-wrap: wrap;
  margin: 0 0 2mm;
  font-size: inherit;
  font-weight: 700;
}

.print-slip-shop-row--center {
  justify-content: center;
  text-align: center;
}

.print-slip-logo-inline {
  height: 1em;
  width: auto;
  max-width: 2.8em;
  object-fit: contain;
  vertical-align: middle;
  display: inline-block;
}

.print-slip-icon-inline {
  height: 1em;
  width: auto;
  max-width: 1.4em;
  object-fit: contain;
  vertical-align: middle;
  display: inline-block;
}

.print-slip-memo--queue {
  text-align: center;
}

.print-slip-memo--queue .print-slip-shop-row {
  margin-bottom: 3mm;
  font-size: 13px;
}

.print-slip-memo--queue .print-slip-queue-code {
  margin: 0 0 2mm;
  padding: 0;
  border: none;
}

.print-slip-memo--queue .print-slip-queue-no {
  font-size: 2.4rem;
  margin: 2mm 0;
}

.print-slip-queue-item {
  font-size: 12px;
  margin: 0 0 3mm;
  line-height: 1.45;
}

.print-slip-queue-notes {
  text-align: center;
  margin-top: 2mm;
}

.print-slip-queue-time {
  text-align: center;
  font-size: 11px;
  margin: 3mm 0 0;
  color: #444;
}
  margin: 0;
  font-size: 12px;
  font-weight: 600;
}

.print-slip-meta {
  margin: 0.5mm 0 0;
  font-size: 9px;
  color: #333;
}

.print-slip-code-block {
  flex-shrink: 0;
  text-align: center;
  margin: 3mm 0;
  padding: 2mm 0;
  border: 2px solid #000;
}

.print-slip-code-label,
.print-slip-code-label + .print-slip-appt-time {
  margin: 0;
}

.print-slip-code-label {
  font-size: 10px;
}

.print-slip-code {
  margin: 1mm 0 0;
  font-size: 22px;
  font-weight: 800;
  letter-spacing: 0.08em;
}

.print-slip-appt-time {
  font-size: 16px;
  font-weight: 700;
}

.print-slip-shelf {
  margin: 1mm 0 0;
  font-size: 10px;
}

.print-slip-body {
  flex: 1 1 auto;
  min-height: 0;
}

.print-slip-body p {
  margin: 1.5mm 0;
  word-break: break-all;
}

.print-slip-body p:last-child {
  margin-bottom: 0;
}

.print-slip-k {
  color: #555;
}

.print-slip-foot {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  margin-top: calc(-1 * var(--slip-notes-shift));
  padding-top: var(--slip-note-gap);
  padding-bottom: 0;
  border-top: 1px dashed #999;
  font-size: 9px;
  color: #444;
  background: #fff;
}

/* 有网店二维码：取消页脚上移，避免与正文重叠 */
.print-slip--with-qrcode {
  min-height: auto;
}

.print-slip--with-qrcode.print-slip--compact {
  font-size: 10px;
}

.print-slip--with-qrcode.print-slip--compact .print-slip-title {
  font-size: 13px;
}

.print-slip--with-qrcode.print-slip--compact .print-slip-code {
  font-size: 20px;
}

.print-slip--with-qrcode.print-slip--compact .print-slip-body p {
  margin: 1mm 0;
}

.print-slip--with-qrcode.print-slip--tight,
.print-slip--auto-tight {
  font-size: 9px;
}

.print-slip--auto-tight .print-slip-title {
  font-size: 12px;
}

.print-slip--auto-tight .print-slip-code {
  font-size: 18px;
}

.print-slip--auto-tight .print-slip-body p {
  margin: 0.75mm 0;
}

.print-slip--auto-tight .print-slip-hint,
.print-slip--auto-tight .print-slip-disclaimer {
  font-size: 7px;
  line-height: 1.15;
}

.print-slip--auto-tight .print-slip-sign-name {
  font-size: 10px;
}

.print-slip--auto-tight .print-slip-time,
.print-slip--auto-tight .print-slip-powered {
  font-size: 7px;
}

.print-slip-foot-notes {
  flex-shrink: 0;
}

.print-slip-hint {
  margin: 0 0 var(--slip-note-gap);
  text-align: left;
}

.print-slip-hint-email {
  margin-top: var(--slip-note-gap);
}

.print-slip-disclaimer {
  margin: 0;
  text-align: left;
  font-size: 8px;
  color: #666;
  line-height: 1.2;
}

.print-slip-sign-block {
  flex-shrink: 0;
  margin: 1mm 0 0;
  padding-top: 1mm;
  padding-bottom: 1mm;
  border-top: 1px dashed #999;
  text-align: center;
}

.print-slip-sign {
  margin: 0;
  padding: 0;
  border: none;
  text-align: center;
}

.print-slip-sign-name {
  margin: 0;
  font-size: 12px;
  font-weight: 700;
}

.print-slip-sign-phone,
.print-slip-sign-addr {
  margin: 0.5mm 0 0;
  font-size: 9px;
  color: #333;
}

.print-slip-time {
  margin: 1mm 0 0;
  padding: 0;
  text-align: center;
  font-size: 8px;
  color: #666;
}

.print-slip-powered-wrap {
  width: 100%;
  box-sizing: border-box;
  flex-shrink: 0;
  margin: 2mm 0 0;
  padding-top: 2mm;
  border-top: 1px dashed #999;
  text-align: left;
}

.print-slip-foot .print-slip-powered-wrap {
  margin-top: 1mm;
}

.print-slip-powered {
  margin: 0;
  padding: 0;
  text-align: left;
  font-size: 8px;
  color: #666;
  line-height: 1.2;
}

.print-slip-powered-wrap--compact {
  flex-shrink: 0;
  margin-top: auto;
  padding-top: 1.5mm;
}

.print-slip-powered-wrap--compact .print-slip-powered {
  font-size: 7px;
  line-height: 1.15;
  text-align: center;
  word-break: keep-all;
}

.print-gap-label .print-slip-powered-wrap,
.print-gap-label .print-slip-powered-wrap--compact {
  flex-shrink: 0;
}

.print-gap-label .print-slip-powered-wrap .print-slip-powered,
.print-gap-label .print-slip-powered-wrap--compact .print-slip-powered {
  font-size: 7px;
  text-align: center;
}

.print-slip-price-thermal .print-slip-powered-wrap--compact .print-slip-powered {
  text-align: center;
}

.print-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
  margin-top: 1rem;
}

.print-hints {
  margin: 0.75rem 0 0;
}

.print-hint {
  margin: 0.35rem 0;
}

.print-hint-ios {
  display: none;
}

.print-ui-ios .print-hint-ios {
  display: block;
}

.print-ui-no-bluetooth #btn-print-bluetooth {
  display: none;
}

.print-ui-no-bluetooth.print-ui-mobile #btn-print-slip {
  /* 无蓝牙时移动端仍可用系统打印（部分机型支持） */
}

.print-status {
  margin: 0.75rem 0 0;
  font-size: 0.9rem;
}

.print-status--ok {
  color: #389e0d;
}

.print-status--error {
  color: #cf1322;
}

.print-status--info {
  color: #096dd9;
}

/* 手机：蓝牙打印排最前（HTML 已设 primary） */
.print-ui-mobile #btn-print-bluetooth {
  order: -1;
}

body.page-print:not(.print-ui-mobile) #btn-print-slip {
  order: -1;
}

/* 多版式热敏 */
.print-slip-staff,
.print-slip-code-strip,
.print-slip-memo,
.print-slip-price-thermal {
  display: flex;
  flex-direction: column;
}

.print-slip-staff .print-slip-powered-wrap,
.print-slip-code-strip .print-slip-powered-wrap,
.print-slip-memo .print-slip-powered-wrap,
.print-slip-price-thermal .print-slip-powered-wrap {
  margin-top: auto;
}

.print-slip-staff { min-height: 80mm; padding: 2mm; }
.print-slip-staff-tag { text-align: center; font-size: 10px; margin: 0 0 2mm; }
.print-slip-code-block-staff { margin: 2mm 0; }
.print-slip-code-strip { min-height: 35mm; text-align: center; padding: 4mm 2mm; }
.print-slip-code-strip-code { font-size: 26px; font-weight: 800; margin: 0; letter-spacing: 0.06em; }
.print-slip-code-strip-meta { font-size: 11px; margin: 2mm 0 0; }
.print-slip-memo { min-height: 90mm; }
.print-slip-memo-body { margin: 3mm 0; }
.print-slip-memo-item { font-size: 12px; line-height: 1.45; margin: 0; }
.print-slip-memo-notes { font-size: 11px; color: #444; margin: 2mm 0 0; }
.print-slip-price-thermal { text-align: center; min-height: 50mm; padding: 4mm 2mm; }
.print-slip-price-name { font-size: 13px; font-weight: 700; margin: 0; }
.print-slip-price-value { font-size: 22px; font-weight: 800; margin: 2mm 0; }
.print-slip-price-note { font-size: 10px; margin: 0; }

.print-variant-picker { margin: 0.75rem 0; }
.print-variant-btns { display: flex; flex-wrap: wrap; gap: 0.35rem; margin-top: 0.5rem; }
.print-variant-btn.is-active { background: var(--accent, #fa8919); color: #fff; border-color: var(--accent, #fa8919); }

.print-slip-logo { text-align: center; margin: 0 0 2mm; }
.print-slip-logo img { max-width: 42mm; max-height: 12mm; object-fit: contain; }

/* 间隙标签 40×30 / 50×30（竖向吊牌：30mm 宽 × 40/50mm 高，沿走纸方向） */
.print-gap-label {
  box-sizing: border-box;
  font-family: "Microsoft YaHei", "PingFang SC", sans-serif;
  color: #000;
  background: #fff;
  border: 1px dashed #999;
  overflow: visible;
  display: flex;
  flex-direction: column;
}

.print-gap-label-inner {
  display: flex;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 100%;
  width: 100%;
}

.print-gap-label .print-slip-powered-wrap {
  margin-top: auto;
  padding-top: 1mm;
  flex-shrink: 0;
}

.print-gap-label .print-slip-powered {
  font-size: 7px;
  text-align: center;
}
.print-gap-label .print-slip-logo img {
  max-width: 26mm;
  max-height: 8mm;
  object-fit: contain;
}

.print-gap-40x30 {
  width: 30mm;
  max-width: 30mm;
  min-height: 40mm;
  padding: 2mm 1.5mm;
}

.print-gap-50x30 {
  width: 30mm;
  max-width: 30mm;
  min-height: 50mm;
  padding: 2mm 1.5mm;
}
.print-gap-headline { font-size: 11px; font-weight: 700; margin: 0 0 1mm; text-align: center; line-height: 1.25; }
.print-gap-body { font-size: 9px; margin: 0; text-align: center; line-height: 1.3; }
.print-gap-note { font-size: 12px; font-weight: 700; margin: 1mm 0; text-align: center; }
.print-gap-meta, .print-gap-shop { font-size: 8px; color: #444; margin: 1mm 0 0; text-align: center; }

@media print {
  .print-area[data-paper^="gap_"] .print-gap-label { border: none; }
}

@media print {
  body.page-print * {
    visibility: hidden;
  }

  body.page-print #print-area,
  body.page-print #print-area * {
    visibility: visible;
  }

  body.page-print #print-area {
    position: absolute;
    left: 0;
    top: 0;
    width: 58mm;
    margin: 0;
  }

  body.page-print .print-slip {
    border: none;
    width: 58mm;
    min-height: var(--slip-min-h);
  }

  .no-print {
    display: none !important;
  }

  .site-header,
  .site-footer,
  .quota-banner {
    display: none !important;
  }
}

.print-slip-barcode,
.print-slip-qrcode,
.print-slip-icon,
.print-slip-extra-image {
  text-align: center;
  margin: 0.35rem 0;
}

.print-slip-barcode-text {
  margin: 0.15rem 0 0;
  font-size: 0.75rem;
  letter-spacing: 0.05em;
}

.print-slip-icon img,
.print-slip-extra-image img {
  max-width: 100%;
  height: auto;
  object-fit: contain;
}

.print-slip-icon img { max-height: 48px; }
.print-slip-extra-image img { max-height: 96px; }

.print-slip-qrcode img {
  width: var(--slip-qrcode-size, 76px);
  height: var(--slip-qrcode-size, 76px);
  object-fit: contain;
}

.print-slip-footer-qrcode {
  margin: 1mm 0 0;
  padding-top: 0.5mm;
}

.print-slip-foot .print-slip-footer-qrcode {
  margin-top: 0.5mm;
}

.print-slip-foot .print-slip-footer-qrcode img,
.print-slip-foot .print-slip-footer-qrcode .print-qrcode-svg {
  width: var(--slip-qrcode-size, 76px);
  height: var(--slip-qrcode-size, 76px);
  max-width: 100%;
}

.print-qrcode-svg {
  display: block;
  margin: 0 auto;
}

.print-slip-barcode-ean13 {
  max-width: 100%;
  overflow: hidden;
}

.print-slip-barcode-ean13 .print-barcode-svg {
  max-width: 100%;
  height: auto;
}

.print-setup-hint {
  margin: 0.5rem 0 0;
  padding: 0.5rem 0.75rem;
  border-left: 3px solid var(--accent, #fa8919);
  background: var(--surface-muted, #f7f7f7);
}

.print-barcode-svg {
  display: block;
  margin: 0 auto;
  max-width: 100%;
}

/* 访客试填：仅顶部可见，下方马赛克占位（不渲染真实编号/明细） */
.guest-slip-preview-slip {
  display: flex;
  justify-content: center;
  margin: 1rem 0;
  user-select: none;
  -webkit-user-select: none;
}

.guest-slip-preview-slip .print-slip[data-guest-preview="1"] {
  min-height: auto;
  max-height: none;
}

.guest-slip-preview-main {
  min-height: auto;
}

.guest-slip-preview-head {
  border-bottom: none;
  margin-bottom: 0;
  padding-bottom: 1mm;
}

.guest-slip-preview-masked {
  position: relative;
  flex: 1 1 auto;
  min-height: 52mm;
  margin-top: 2mm;
  padding: 2mm;
  overflow: hidden;
  border-top: 1px dashed #999;
  pointer-events: none;
}

.guest-slip-preview-fake-body {
  filter: blur(7px);
  opacity: 0.55;
  transform: scale(1.02);
}

.guest-slip-preview-fake-code {
  height: 14mm;
  margin: 2mm auto 3mm;
  max-width: 85%;
  border-radius: 2px;
  background: repeating-linear-gradient(
    -45deg,
    #c8c8c8 0,
    #c8c8c8 3px,
    #e8e8e8 3px,
    #e8e8e8 6px
  );
}

.guest-slip-preview-fake-lines {
  display: flex;
  flex-direction: column;
  gap: 2.5mm;
  padding: 0 1mm;
}

.guest-slip-preview-fake-line {
  display: block;
  height: 3mm;
  border-radius: 1px;
  background: repeating-linear-gradient(
    90deg,
    #bbb 0,
    #bbb 4px,
    #ddd 4px,
    #ddd 8px
  );
}

.guest-slip-preview-masked::after {
  content: "";
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    0deg,
    rgba(0, 0, 0, 0.06) 0,
    rgba(0, 0, 0, 0.06) 6px,
    rgba(255, 255, 255, 0.08) 6px,
    rgba(255, 255, 255, 0.08) 12px
  ),
  repeating-linear-gradient(
    90deg,
    rgba(0, 0, 0, 0.05) 0,
    rgba(0, 0, 0, 0.05) 6px,
    rgba(255, 255, 255, 0.06) 6px,
    rgba(255, 255, 255, 0.06) 12px
  );
  pointer-events: none;
}

.guest-slip-preview-mask-notice {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  z-index: 2;
  margin: 0;
  padding: 2mm 3mm;
  max-width: 90%;
  text-align: center;
  font-size: 10px;
  line-height: 1.45;
  color: #333;
  background: rgba(255, 255, 255, 0.92);
  border: 1px solid #ccc;
  border-radius: 3px;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
  pointer-events: none;
}
