/*
  Automatic A4 print fitting.
  Loaded after the existing styles so it can normalize every report page.
*/

/* Move the page padding to one scalable inner canvas without changing the
   on-screen A4 appearance. The wrapper is inserted by print-a4-fix.js. */
.paper.a4-fit-page {
  padding: 0 !important;
}

.paper.a4-fit-page > .a4-fit-inner {
  box-sizing: border-box;
  width: 100%;
  min-height: 297mm;
  padding: 11.5mm 12.5mm 9mm;
  background: #fff;
  transform-origin: top center;
}

/* Temporary measurement mode used immediately before printing. */
html.a4-print-preparing .paper.a4-fit-page {
  position: relative;
  width: 210mm !important;
  height: 297mm !important;
  min-height: 297mm !important;
  max-height: 297mm !important;
  margin: 0 !important;
  overflow: hidden !important;
}

@page {
  size: A4 portrait;
  margin: 0;
}

@media print {
  html,
  body {
    width: auto !important;
    min-width: 0 !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
  }

  .page-shell {
    width: 210mm !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: visible !important;
  }

  .form-stack {
    display: block !important;
    width: 210mm !important;
    margin: 0 !important;
    padding: 0 !important;
    gap: 0 !important;
  }

  .paper.a4-fit-page {
    position: relative;
    display: block !important;
    width: 210mm !important;
    height: 297mm !important;
    min-height: 297mm !important;
    max-height: 297mm !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    box-shadow: none !important;
    break-before: auto;
    break-after: page !important;
    break-inside: avoid-page !important;
    page-break-after: always !important;
    page-break-inside: avoid !important;
  }

  .paper.a4-fit-page:last-of-type {
    break-after: auto !important;
    page-break-after: auto !important;
  }

  .paper.a4-fit-page > .a4-fit-inner {
    box-sizing: border-box;
    width: 210mm !important;
    min-height: 297mm;
    margin: 0 auto !important;
    padding: 11.5mm 12.5mm 9mm !important;
    background: #fff !important;
    transform-origin: top center;
    transform: scale(var(--a4-fit-scale, 1));
  }

  /* Keep printed borders, images and backgrounds faithful to the form. */
  .paper,
  .paper * {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
}
