/* ===== Exit-permit print — one A4 page, identical to the on-screen preview =====
   The document is a 1000×1414px design canvas (exact A4 ratio). On screen it is
   scaled to fit the viewport (fitScale). For print the SAME canvas is scaled by
   0.7937 so it maps exactly onto a physical A4 sheet (210mm×297mm @96dpi).
   Same canvas, same field coordinates → the printed page matches the preview
   1:1, just rendered at A4 size. Single page, no clipping, no zoom/resize. */
@page {
  size: A4 portrait;
  margin: 0;
}

/* PDF417 — مقاس ثابت بالملم مع تنعيم البكسلات للحدّة */
.pdf417-canvas { image-rendering: pixelated; }

@media print {
  /* إخفاء زر الطباعة العائم وأي عناصر خارج المستند في وضع العرض العام */
  .pv-print-fab{display:none !important;}
  body.public-view .pv-panel{background:#fff !important;}
  /* ضمان طباعة الخلفيات والألوان في كل المتصفحات الحديثة
     (Chrome / Firefox / Edge / Safari) — حتى العناصر التي لم تُذكر
     صراحةً في القواعد أدناه */
  html, body, .doc-page, .cd-page, .do-page, .cd-print-sheet,
  .doc-outer, .doc-scaler, .bg-img, .ov, .cd-ov, .do-ov,
  .do-table-wrap, .do-totals-bar, .do-qr-box, .do-qr-inner,
  .pv-panel, .pv-doc-wrap {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }
  /* Zero out the viewport chrome; let the A4 mount(s) define the page(s).
     overflow is scoped per document type below: the exit permit clips to a
     single page (printing-ep), the customs declaration flows across pages
     (printing-cd) so every continuation page fills its own A4 sheet. */
  html, body {
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
    width: auto !important;
    height: auto !important;
    overflow: visible !important;
  }
  /* Exit permit: single A4 page — clip sub-pixel excess to avoid a blank 2nd page */
  body.printing-ep {
    overflow: hidden !important;
  }
  /* Customs declaration: multi-page A4 — let sheets flow across pages */
  body.printing-cd {
    overflow: visible !important;
  }

  /* Hide every top-level node except the dedicated print mount.
     display:none (not visibility) so hidden chrome consumes no page height. */
  body.printing-ep > *:not(#epPrintMount) {
    display: none !important;
  }

  /* Mount holds one or more A4 sheets (صنف واحد = صفحة؛ صنفان = صفحتان). */
  body.printing-ep #epPrintMount {
    display: block !important;
    position: relative !important;
    top: 0 !important;
    left: 0 !important;
    width: 210mm !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    background: #fff !important;
    direction: ltr !important;
  }

  body.printing-ep #epPrintMount .doc-outer {
    display: block !important;
    position: relative !important;
    top: 0 !important;
    left: 0 !important;
    width: 210mm !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    direction: ltr !important;
    box-shadow: none !important;
  }

  body.printing-ep #epPrintMount .doc-scaler {
    display: block !important;
    position: relative !important;
    top: 0 !important;
    left: 0 !important;
    width: 210mm !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: none !important;
    -webkit-transform: none !important;
  }

  body.printing-ep #epPrintMount .ep-print-sheet {
    display: block !important;
    position: relative !important;
    width: 210mm !important;
    height: 297mm !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    background: #fff !important;
    page-break-after: always !important;
    break-after: page !important;
    page-break-inside: avoid !important;
    break-inside: avoid !important;
  }

  body.printing-ep #epPrintMount .ep-print-sheet:last-child {
    page-break-after: auto !important;
    break-after: auto !important;
  }

  /* 1000×1414 → A4 via zoom so multi-page layout stays consistent */
  body.printing-ep #epPrintMount .doc-page,
  body.printing-ep #epPrintMount .ep-print-sheet .doc-page {
    display: block !important;
    position: relative !important;
    width: 1000px !important;
    height: 1414px !important;
    margin: 0 !important;
    padding: 0 !important;
    box-shadow: none !important;
    overflow: hidden !important;
    background: #fff !important;
    zoom: 0.7937 !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    page-break-inside: avoid !important;
    break-inside: avoid !important;
  }

  body.printing-ep #epPrintMount .doc-page .bg-img {
    display: block !important;
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: fill !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }

  body.printing-ep #epPrintMount .ov,
  body.printing-ep #epPrintMount .cd-ov {
    position: absolute !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }

  body.printing-ep #epPrintMount .ov.code canvas:not(.pdf417-canvas),
  body.printing-ep #epPrintMount .cd-ov.code canvas:not(.pdf417-canvas) {
    width: 100% !important;
    height: 100% !important;
    display: block !important;
  }

  /* Hide edit-mode chrome. */
  body.printing-ep .pos-badge,
  body.printing-ep .resize-handle,
  body.printing-ep #alignBar,
  body.printing-ep #cdAlignBar,
  body.printing-ep .edit-hint {
    display: none !important;
  }

  body.printing-ep .doc-page.edit-mode .ov.editable {
    outline: none !important;
    background: transparent !important;
    overflow: hidden !important;
  }

  body.printing-ep .doc-page .ov {
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-wrap: break-word !important;
  }

  body.printing-ep .doc-page .ov > * {
    display: block !important;
    width: 100% !important;
    min-width: 0 !important;
    max-width: 100% !important;
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-wrap: break-word !important;
  }

  body.printing-ep .doc-page .ov.agent-name {
    display: flex !important;
    flex-direction: column !important;
    overflow: hidden !important;
  }

  /* ===== Customs declaration print — multi-page A4, each page fills the sheet =====
     Same 1000×1414px design canvas as the on-screen preview, scaled by 0.7937
     to map exactly onto a physical A4 sheet (210mm×297mm @96dpi). Each page
     (page 1 + continuation pages 2–4) sits in its own .cd-print-sheet that
     breaks to a fresh A4 page, so every page fills the sheet 1:1 with the
     preview — no empty margins, background fills the whole page. */
  body.printing-cd > *:not(#cdPrintMount) {
    display: none !important;
  }

  body.printing-cd #cdPrintMount {
    display: block !important;
    position: relative !important;
    top: 0 !important;
    left: 0 !important;
    width: 210mm !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
    background: #fff !important;
    direction: ltr !important;
  }

  body.printing-cd #cdPrintMount .cd-print-sheet {
    display: block !important;
    position: relative !important;
    top: 0 !important;
    left: 0 !important;
    width: 210mm !important;
    height: 297mm !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    background: #fff !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    page-break-after: always !important;
    break-after: page !important;
    page-break-inside: avoid !important;
    break-inside: avoid !important;
  }

  body.printing-cd #cdPrintMount .cd-print-sheet:last-child {
    page-break-after: auto !important;
    break-after: auto !important;
  }

  /* 1000×1414 design canvas → A4. zoom (NOT transform) scales layout AND
     paint together, so every page — page 1 and continuation pages 2–4 —
     renders at exactly the same 0.7937 factor and fills its A4 sheet 1:1
     with the on-screen preview. transform:scale only affects paint, not
     layout, which lets Chrome's print engine break/resize pages
     inconsistently across page breaks; zoom keeps every sheet identical. */
  body.printing-cd #cdPrintMount .cd-print-sheet .cd-page,
  body.printing-cd #cdPrintMount .cd-print-sheet .doc-page {
    display: block !important;
    position: relative !important;
    top: 0 !important;
    left: 0 !important;
    width: 1000px !important;
    height: 1414px !important;
    margin: 0 !important;
    padding: 0 !important;
    zoom: 0.7937 !important;
    box-shadow: none !important;
    overflow: hidden !important;
    background: #fff !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }

  body.printing-cd #cdPrintMount .cd-print-sheet .bg-img {
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: fill !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }

  body.printing-cd #cdPrintMount .cd-ov,
  body.printing-cd #cdPrintMount .ov {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }

  body.printing-cd #cdPrintMount .cd-ov.code canvas:not(.pdf417-canvas),
  body.printing-cd #cdPrintMount .ov.code canvas:not(.pdf417-canvas) {
    width: 100% !important;
    height: 100% !important;
    display: block !important;
  }

  /* Hide edit-mode chrome. */
  body.printing-cd .pos-badge,
  body.printing-cd .resize-handle,
  body.printing-cd #alignBar,
  body.printing-cd #cdAlignBar,
  body.printing-cd .edit-hint {
    display: none !important;
  }

  /* Hide page-number overlays on print */
  body.printing-cd [data-cdpos="p1_page_1"],
  body.printing-cd [data-cdpos="p1_page_2"],
  body.printing-cd [data-cdpos="p2h_page_no"] {
    display: none !important;
    visibility: hidden !important;
  }

  body.printing-cd .cd-page.edit-mode .cd-ov.editable,
  body.printing-cd .doc-page.edit-mode .ov.editable {
    outline: none !important;
    background: transparent !important;
    overflow: hidden !important;
  }

  body.printing-cd .cd-page .ov,
  body.printing-cd .doc-page .ov {
    white-space: normal !important;
    overflow-wrap: break-word !important;
    word-wrap: break-word !important;
  }

  /* mount الطباعة اتجاهه LTR لضبط الورقة، لذلك يجب عزل اتجاه حقول البيان
     العربية صراحةً حتى لا تنقلب مواضع العربية والإنجليزية المختلطة */
  body.printing-cd #cdPrintMount .cd-ov:not(.ltr),
  body.printing-cd #cdPrintMount .cd-ov:not(.ltr) > .ar-sh,
  body.printing-cd #cdPrintMount .doc-page .ov:not(.ltr) > .ar-sh {
    direction: rtl !important;
    unicode-bidi: plaintext !important;
  }
  body.printing-cd #cdPrintMount .cd-ov:not(.ltr) > .ar-sh {
    display: block !important;
    width: 100% !important;
  }

  /* PDF417 — مقاس الطباعة يتبع الحجم المضبوط في منظومة التحرير (inline style) */
  .pdf417-canvas { image-rendering: pixelated; }

  /* ===== باركود PDF417 لوصل القبض — الأبعاد ثابتة بالملم في الطباعة و PDF =====
     الموضع (يسار/أعلى) يتبع تجاوزات منظومة التحرير (inline style) لينعكس
     تحريك الباركود في الطباعة مطابقًا للمعاينة. الأبعاد تبقى ثابتة. */
  #pdf417Receipt{
    width:37.20mm !important;
    height:18.77mm !important;
  }
  #pdf417ReceiptFallback{
    width:37.20mm !important;
    height:18.77mm !important;
  }

  /* ===== Delivery Order print — one A4 page, identical to on-screen preview =====
     Same 1000×1414 design canvas + official Base64 background, scaled by 0.7937
     onto a physical A4 sheet. Field % coordinates match preview 1:1. */
  body.printing-do {
    overflow: hidden !important;
  }

  body.printing-do > *:not(#doPrintMount) {
    display: none !important;
  }

  body.printing-do #doPrintMount {
    display: block !important;
    position: relative !important;
    top: 0 !important;
    left: 0 !important;
    width: 210mm !important;
    height: 297mm !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    background: #fff !important;
    direction: ltr !important;
    page-break-inside: avoid !important;
    break-inside: avoid !important;
    page-break-after: avoid !important;
    break-after: avoid !important;
  }

  body.printing-do #doPrintMount .doc-outer {
    display: block !important;
    position: relative !important;
    top: 0 !important;
    left: 0 !important;
    width: 210mm !important;
    height: 297mm !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    direction: ltr !important;
    box-shadow: none !important;
  }

  body.printing-do #doPrintMount .doc-scaler,
  body.printing-do #doPrintMount #doDocScaler,
  body.printing-do #doPrintMount #doPvDocScaler {
    display: block !important;
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 1000px !important;
    height: 1414px !important;
    margin: 0 !important;
    padding: 0 !important;
    transform: scale(0.7937) !important;
    transform-origin: top left !important;
    -webkit-transform: scale(0.7937) !important;
    -webkit-transform-origin: top left !important;
  }

  body.printing-do #doPrintMount .do-page {
    display: block !important;
    position: relative !important;
    width: 1000px !important;
    height: 1414px !important;
    margin: 0 !important;
    padding: 0 !important;
    box-shadow: none !important;
    overflow: hidden !important;
    background: #fff !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    page-break-inside: avoid !important;
    break-inside: avoid !important;
  }

  body.printing-do #doPrintMount .do-page .bg-img {
    display: block !important;
    position: absolute !important;
    inset: 0 !important;
    width: 100% !important;
    height: 100% !important;
    object-fit: fill !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }

  body.printing-do #doPrintMount .do-ov,
  body.printing-do #doPrintMount .do-table-wrap,
  body.printing-do #doPrintMount .do-totals-bar {
    position: absolute !important;
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
  }

  body.printing-do #doPrintMount .do-qr-box,
  body.printing-do #doPrintMount .do-qr-inner,
  body.printing-do #doPrintMount .do-qr-inner svg {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    background: transparent !important;
  }
  body.printing-do #doPrintMount .do-qr-box svg rect,
  body.printing-do #doPrintMount .do-qr-box svg path,
  body.printing-do #doPrintMount .do-qr-inner svg rect,
  body.printing-do #doPrintMount .do-qr-inner svg path {
    fill: #A8322A !important;
  }

  body.printing-do .pos-badge,
  body.printing-do .resize-handle,
  body.printing-do #doAlignBar,
  body.printing-do .edit-hint,
  body.printing-do .do-ts-panel {
    display: none !important;
  }

  body.printing-do .do-page.edit-mode .do-ov.editable {
    outline: none !important;
    background: transparent !important;
    overflow: hidden !important;
  }
}
