/* M26-D5 Hotfix 06
   Browser PDF / Save-as-PDF print sanitizer.
   Keep the document templates in control, but stop Chromium from printing
   scroll containers, mobile/PWA chrome, and shell overflow into the final PDF. */

/* Screen view of a print route: hide only ERP/mobile chrome.  Keep each
   document template's own floating Plain / Letterhead / PDF / Print controls. */
body.nx-print-route .mobile-dock,
body.nx-print-route nav.mobile-dock,
body.nx-print-route [data-mobile-dock],
body.nx-print-route .nx-mobile-workflow-strip,
body.nx-print-route .m26-mobile-workflow-strip,
body.nx-print-route .nx-mobile-shortcuts,
body.nx-print-route .m26-mobile-shortcuts,
body.nx-print-route .pwa-install-banner,
body.nx-print-route .pwa-install-button,
body.nx-print-route .pwa-install-toast,
body.nx-print-route .nx-universal-print-toolbar,
body.nx-print-route .nx-print-toolbar {
  display: none !important;
  visibility: hidden !important;
}

body.nx-print-route .floating-actions,
body.nx-print-route .print-actions,
body.nx-print-route .document-actions {
  display: flex !important;
  visibility: visible !important;
}

/* Browser print / Save as PDF.  This is the important layer: Chrome prints the
   final PDF from these rules, not from the ordinary on-screen preview. */
@media print {
  @page { size: A4 portrait; margin: 0; }

  html,
  body {
    margin: 0 !important;
    padding: 0 !important;
    width: 210mm !important;
    min-width: 210mm !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    overflow: visible !important;
    background: #fff !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }

  /* Hide all application chrome and toolbar controls on the paper/PDF only. */
  .mobile-dock,
  nav.mobile-dock,
  [data-mobile-dock],
  .nx-mobile-workflow-strip,
  .m26-mobile-workflow-strip,
  .nx-mobile-shortcuts,
  .m26-mobile-shortcuts,
  .pwa-install-banner,
  .pwa-install-button,
  .pwa-install-toast,
  .app-sidebar,
  .app-topbar,
  .app-footer,
  .offcanvas,
  .offcanvas-backdrop,
  .floating-actions,
  .print-actions,
  .document-actions,
  .nx-universal-print-toolbar,
  .nx-print-toolbar,
  .no-print,
  .d-print-none,
  [data-no-print] {
    display: none !important;
    visibility: hidden !important;
  }

  /* The ERP shell and mobile performance layers deliberately scroll on screen.
     In PDF printing, those scroll containers become grey bars and clip data.
     Flatten the shell back into a plain document flow. */
  body.nx-print-route,
  body.nx-embedded-view,
  .nx-print-route,
  .nx-embedded-view,
  .app-layout,
  .app-main-wrap,
  .app-main,
  .page-content,
  .content-wrapper,
  .main-content,
  .main-panel,
  .container,
  .container-fluid,
  main {
    position: static !important;
    inset: auto !important;
    display: block !important;
    float: none !important;
    width: 210mm !important;
    min-width: 0 !important;
    max-width: 210mm !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
    transform: none !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  /* Remove visible webkit scrollbars from everything.  We keep overflow visible
     on document content below so values print instead of disappearing. */
  * {
    box-sizing: border-box !important;
    scrollbar-width: none !important;
    -ms-overflow-style: none !important;
  }
  *::-webkit-scrollbar,
  *::-webkit-scrollbar-track,
  *::-webkit-scrollbar-thumb,
  *::-webkit-scrollbar-button,
  *::-webkit-scrollbar-corner {
    display: none !important;
    width: 0 !important;
    height: 0 !important;
    opacity: 0 !important;
    background: transparent !important;
  }

  /* Document page collections and page sheets. */
  .qt-doc-pages,
  .inv-doc-pages,
  .rc-doc-pages,
  .print-pages,
  .so-print-shell,
  .delivery-content,
  .po-doc-pages,
  .grn-doc-pages,
  .voucher-print-pages,
  .finance-print-pages,
  .erp-print-pages {
    display: block !important;
    width: 210mm !important;
    max-width: 210mm !important;
    min-width: 0 !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  .qt-doc-page,
  .inv-doc-page,
  .print-page,
  .so-sheet,
  .erp-doc-sheet,
  .voucher-sheet,
  .payment-sheet,
  .receipt-sheet,
  .delivery-sheet,
  .invoice-sheet,
  .quotation-sheet {
    position: relative !important;
    width: 210mm !important;
    max-width: 210mm !important;
    min-width: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
    page-break-inside: avoid;
    break-inside: avoid-page;
  }

  /* IMPORTANT: No scroll containers inside printed documents. */
  .table-responsive,
  .responsive-table,
  .nx-responsive-table,
  .nx-table-scroll,
  .m26-table-scroll,
  .overflow-auto,
  .overflow-x-auto,
  .overflow-y-auto,
  .scroll-container,
  .scroll-x,
  .box,
  .panel,
  .panel-body,
  .top-grid,
  .mid-grid,
  .compact-receipt-head,
  .print-panel,
  .document-panel,
  .meta-panel,
  .payment-details-panel,
  .bank-details-panel,
  .amount-words,
  .notes,
  .doc-table-wrap,
  .items-wrap,
  .lines-wrap,
  .payment-table-wrap,
  .alloc-panel,
  .qt-page-inner,
  .inv-page-inner,
  .inv-page-body,
  .qt-page-body,
  .invoice-content,
  .receipt-content,
  .payment-content {
    max-width: 100% !important;
    min-width: 0 !important;
    max-height: none !important;
    overflow: visible !important;
    overflow-x: visible !important;
    overflow-y: visible !important;
    text-overflow: clip !important;
  }

  /* Tables must fit the printable page.  Internal horizontal scrolling is not
     permitted in a signed accounting document. */
  table,
  .table,
  .meta,
  .totals,
  .items,
  .line-table,
  .payment-details-table,
  .invoice-lines,
  .quotation-lines,
  .delivery-lines,
  .receipt-lines,
  .voucher-lines {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
    table-layout: fixed !important;
    border-collapse: collapse !important;
    overflow: visible !important;
  }

  th,
  td,
  .meta td,
  .totals td,
  .items td,
  .items th,
  .line-table td,
  .line-table th,
  .payment-details-table td,
  .payment-details-table th,
  .kv td,
  .kv th,
  .doc-no,
  .invoice-no,
  .primary-text,
  .ref-block,
  .item-main,
  .item-description,
  .payment-type,
  .voucher-col,
  .address,
  .email,
  .phone,
  .notes,
  .so-note,
  .user-note,
  .terms-text {
    min-width: 0 !important;
    max-width: 100% !important;
    overflow: visible !important;
    text-overflow: clip !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    word-break: normal !important;
  }

  .money,
  .aed-money,
  .amt,
  .qty,
  .rate,
  .num {
    white-space: nowrap !important;
    overflow-wrap: normal !important;
    word-break: normal !important;
  }

  img,
  svg,
  canvas {
    max-width: 100% !important;
  }

  /* Avoid accidental extra blank pages from the application shell.  Individual
     document templates may still force real page breaks between real copies. */
  body::after,
  .app-main::after,
  .page-content::after,
  .qt-doc-pages::after,
  .inv-doc-pages::after,
  .rc-doc-pages::after,
  .print-pages::after {
    content: none !important;
    display: none !important;
  }
}
