/* ==========================================================================
   CSS KHUSUS PENCETAKAN THERMAL PRINTER (58mm, 80mm & CUSTOM)
   Strict Print Media Queries untuk Hasil Cetak Bersih, Tajam & Presisi
   ========================================================================== */

@media print {

  /* 1. Reset Margin Halaman Printer menjadi 0 */
  @page {
    margin: 0 !important;
    size: auto;
  }

  /* 2. Sembunyikan Seluruh Elemen Antarmuka Web (UI) */
  html,
  body {
    margin: 0 !important;
    padding: 0 !important;
    background: #ffffff !important;
    color: #000000 !important;
    height: auto !important;
    min-height: auto !important;
    overflow: visible !important;
  }

  /* Sembunyikan elemen non-cetak */
  .app-navbar,
  .control-panel,
  .preview-toolbar,
  .modal-overlay,
  .toast-container,
  button,
  input,
  select,
  textarea,
  .no-print {
    display: none !important;
    visibility: hidden !important;
  }

  .main-layout {
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    max-width: none !important;
  }

  .preview-column {
    position: static !important;
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  .preview-container-box {
    background: none !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    min-height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    display: block !important;
  }

  /* 3. Pengaturan Kertas Nota Cetak */
  .receipt-paper {
    position: relative !important;
    margin: 0 !important;
    padding: 1mm 1mm 4mm 1mm !important;
    box-shadow: none !important;
    border: none !important;
    border-radius: 0 !important;
    background: #ffffff !important;
    color: #000000 !important;
    page-break-after: always;
    page-break-inside: avoid;
    word-break: normal !important;
    overflow-wrap: break-word !important;
    box-sizing: border-box !important;
  }

  /* Hilangkan efek dekorasi bergerigi layar */
  .receipt-paper::after {
    display: none !important;
  }

  /* --- Rekomendasi 1: Kertas Thermal 58mm (Lebar cetak efektif ~42mm presisi anti-potong) --- */
  .receipt-paper.paper-58mm,
  body.print-58mm .receipt-paper {
    width: 42mm !important;
    max-width: 42mm !important;
    padding: 1mm 1mm 4mm 1mm !important;
    font-family: 'Consolas', 'Courier New', Courier, monospace !important;
    font-size: 9.5px !important;
    line-height: 1.25 !important;
    letter-spacing: -0.2px !important;
    box-sizing: border-box !important;
  }

  body.print-58mm .receipt-store-name {
    font-size: 11px !important;
    font-weight: 700 !important;
    margin-bottom: 2px !important;
  }

  body.print-58mm .receipt-store-address,
  body.print-58mm .receipt-store-phone,
  body.print-58mm .receipt-footer-notes {
    font-size: 8.5px !important;
    line-height: 1.2 !important;
  }

  body.print-58mm .receipt-meta {
    font-size: 8.5px !important;
    line-height: 1.25 !important;
  }

  body.print-58mm .receipt-item-name {
    font-size: 9px !important;
    font-weight: 700 !important;
  }

  body.print-58mm .receipt-item-details {
    font-size: 8.5px !important;
  }

  body.print-58mm .receipt-totals {
    font-size: 8.5px !important;
    line-height: 1.3 !important;
  }

  body.print-58mm .receipt-total-row.grand {
    font-size: 10px !important;
    font-weight: 700 !important;
  }

  /* --- Rekomendasi 2: Kertas Thermal 80mm (Lebar cetak efektif ~70mm presisi) --- */
  .receipt-paper.paper-80mm,
  body.print-80mm .receipt-paper {
    width: 70mm !important;
    max-width: 70mm !important;
    padding: 2mm 2mm 6mm 2mm !important;
    font-family: 'Consolas', 'Courier New', Courier, monospace !important;
    font-size: 11px !important;
    line-height: 1.3 !important;
    letter-spacing: -0.1px !important;
    box-sizing: border-box !important;
  }

  body.print-80mm .receipt-store-name {
    font-size: 13.5px !important;
    font-weight: 700 !important;
  }

  body.print-80mm .receipt-store-address,
  body.print-80mm .receipt-store-phone,
  body.print-80mm .receipt-meta,
  body.print-80mm .receipt-footer-notes {
    font-size: 10px !important;
    line-height: 1.25 !important;
  }

  body.print-80mm .receipt-item-name {
    font-size: 10.5px !important;
    font-weight: 700 !important;
  }

  body.print-80mm .receipt-item-details,
  body.print-80mm .receipt-totals {
    font-size: 10px !important;
  }

  body.print-80mm .receipt-total-row.grand {
    font-size: 11.5px !important;
    font-weight: 700 !important;
  }

  /* --- Opsi Kustom (Custom Width) --- */
  .receipt-paper.paper-custom,
  body.print-custom .receipt-paper {
    padding: 2mm 2mm 6mm 2mm !important;
    font-family: 'Consolas', 'Courier New', Courier, monospace !important;
    font-size: 10px !important;
    line-height: 1.25 !important;
    box-sizing: border-box !important;
  }

  /* Fleksibilitas Baris Transaksi agar Pas & Rapi */
  .receipt-meta-row,
  .receipt-item-details,
  .receipt-total-row {
    display: flex !important;
    justify-content: space-between !important;
    align-items: flex-start !important;
    gap: 4px !important;
    width: 100% !important;
    box-sizing: border-box !important;
  }

  .receipt-meta-row>span:last-child,
  .receipt-meta-row>strong:last-child,
  .receipt-item-details>span:last-child,
  .receipt-total-row>span:last-child {
    text-align: right !important;
    white-space: nowrap !important;
    flex-shrink: 0 !important;
  }

  /* 4. Formatting Garis & Pemisah Khusus Thermal (Dot / Dashed) */
  .receipt-divider {
    border: none !important;
    border-top: 1px dashed #000000 !important;
    margin: 4px 0 !important;
    height: 0 !important;
  }

  .receipt-divider-double {
    border: none !important;
    border-top: 2px dashed #000000 !important;
    margin: 5px 0 !important;
    height: 0 !important;
  }

  .receipt-table th {
    border-top: 1px dashed #000000 !important;
    border-bottom: 1px dashed #000000 !important;
    padding: 2px 0 !important;
  }

  /* 5. Optimasi Gambar Logo & Stempel untuk Head Thermal */
  /* Sembunyikan Logo & Container HANYA jika tidak ada logo */
  .no-logo .receipt-logo-container,
  .no-logo .receipt-logo,
  .receipt-logo-container.no-logo,
  .receipt-logo.no-logo,
  .receipt-logo:not([src]),
  .receipt-logo[src=""],
  .receipt-logo-container[style*="display: none"],
  .receipt-logo[style*="display: none"] {
    display: none !important;
    visibility: hidden !important;
    height: 0 !important;
    width: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    outline: none !important;
  }

  /* Tampilkan Logo & Container jika ADA logo (has-logo) */
  .receipt-logo-container.has-logo,
  .has-logo .receipt-logo-container,
  .receipt-logo.has-logo,
  .has-logo .receipt-logo {
    display: block !important;
    visibility: visible !important;
  }

  .receipt-logo.has-logo,
  .has-logo .receipt-logo {
    filter: grayscale(100%) contrast(250%) !important;
    object-fit: contain !important;
  }

  /* Posisi Header jika lebar kertas > 100mm:
     - Jika ADA logo: Logo di sebelah kiri, tulisan header align center
     - Jika TANPA logo: Header block biasa dengan text-align center */
  body.paper-gt-100mm.has-logo .receipt-header,
  .receipt-paper.paper-gt-100mm.has-logo .receipt-header {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    gap: 12px !important;
    margin-bottom: 6px !important;
  }

  body.paper-gt-100mm.has-logo .receipt-logo-container.has-logo,
  .receipt-paper.paper-gt-100mm.has-logo .receipt-logo-container.has-logo {
    display: block !important;
    visibility: visible !important;
    margin: 0 !important;
    max-width: 80px !important;
    max-height: 65px !important;
    flex-shrink: 0 !important;
  }

  body.paper-gt-100mm .receipt-logo.has-logo,
  .receipt-paper.paper-gt-100mm .receipt-logo.has-logo,
  .receipt-paper.paper-gt-100mm.has-logo .receipt-logo {
    display: block !important;
    visibility: visible !important;
    margin: 0 !important;
    max-width: 80px !important;
    max-height: 65px !important;
    flex-shrink: 0 !important;
  }

  body.paper-gt-100mm .receipt-store-info,
  .receipt-paper.paper-gt-100mm .receipt-store-info {
    flex: 1 !important;
    text-align: center !important;
  }

  body.paper-gt-100mm .receipt-store-name,
  body.paper-gt-100mm .receipt-store-address,
  body.paper-gt-100mm .receipt-store-phone,
  .receipt-paper.paper-gt-100mm .receipt-store-name,
  .receipt-paper.paper-gt-100mm .receipt-store-address,
  .receipt-paper.paper-gt-100mm .receipt-store-phone {
    text-align: center !important;
  }

  /* Default (<= 100mm seperti 58mm & 80mm ATAU TANPA logo): Header selalu center */
  body:not(.paper-gt-100mm) .receipt-header,
  .receipt-paper:not(.paper-gt-100mm) .receipt-header,
  body.no-logo .receipt-header,
  .receipt-paper.no-logo .receipt-header {
    display: block !important;
    text-align: center !important;
  }

  /* Tampilkan container dan logo di tengah HANYA jika ada logo yang valid */
  body:not(.paper-gt-100mm) .receipt-logo-container.has-logo,
  .receipt-paper:not(.paper-gt-100mm) .receipt-logo-container.has-logo,
  .has-logo .receipt-logo-container {
    display: block !important;
    visibility: visible !important;
    margin: 0 auto 6px auto !important;
    text-align: center !important;
  }

  body:not(.paper-gt-100mm) .receipt-logo.has-logo,
  .receipt-paper:not(.paper-gt-100mm) .receipt-logo.has-logo,
  .has-logo .receipt-logo {
    margin: 0 auto 6px auto !important;
    max-width: 65px !important;
    max-height: 55px !important;
    display: block !important;
    visibility: visible !important;
  }

  body:not(.paper-gt-100mm) .receipt-store-info,
  .receipt-paper:not(.paper-gt-100mm) .receipt-store-info {
    text-align: center !important;
  }

  /* Pengaturan Format Cetak Stempel (Berwarna vs Hitam Putih) */
  body.stamp-mode-color .stamp-img,
  .stamp-img.stamp-color {
    filter: none !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    color-adjust: exact !important;
  }

  body.stamp-mode-monochrome .stamp-img,
  body:not(.stamp-mode-color) .stamp-img,
  .stamp-img.stamp-monochrome {
    filter: grayscale(100%) contrast(250%) !important;
  }

  /* 6. Hilangkan Warna Background & Pastikan Border-Box agar tidak terpotong */
  *,
  *::before,
  *::after {
    box-sizing: border-box !important;
    color: #000000 !important;
    background-color: transparent !important;
    text-shadow: none !important;
    box-shadow: none !important;
  }
}