/** BMCPC Print Framework — reusable, opt-in print utilities. */

@media print {
  body.bmcpc-print-active :is(
    [role="tablist"],
    .bmcpc-print-tab-controls,
    [data-bmcpc-print-tab-controls]
  ) {
    display: none !important;
  }

  body.bmcpc-print-active [data-bmcpc-print-tab-state="inactive"] {
    display: none !important;
  }

  body.bmcpc-print-active .bmcpc-print-active-tab[data-bmcpc-print-tab-state="active"] {
    display: block !important;
    position: static !important;
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    visibility: visible !important;
    opacity: 1 !important;
    transform: none !important;
  }

  body.bmcpc-print-active .bmcpc-print-break-before {
    break-before: page;
    page-break-before: always;
  }

  body.bmcpc-print-active .bmcpc-print-break-after {
    break-after: page;
    page-break-after: always;
  }

  body.bmcpc-print-active .bmcpc-print-avoid-break {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  body.bmcpc-print-active .bmcpc-print-allow-break {
    break-inside: auto;
    page-break-inside: auto;
  }

  body.bmcpc-print-active .bmcpc-print-overflow-visible {
    height: auto !important; /* Override Elementor animation/scroll containers. */
    min-height: 0 !important;
    max-height: none !important;
    overflow: visible !important;
    transform: none !important;
  }

  body.bmcpc-print-active :is(
    .bmcpc-print-table,
    table[data-bmcpc-print-columns]
  ) {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 0 4mm;
    overflow: visible !important;
    break-inside: auto;
    page-break-inside: auto;
  }

  body.bmcpc-print-active table.bmcpc-print-table {
    border-collapse: collapse;
    border-spacing: 0;
    table-layout: auto;
  }

  body.bmcpc-print-active table.bmcpc-print-table :is(th, td) {
    padding: 2mm 2.5mm;
    border: 1px solid var(--bmcpc-print-border);
    vertical-align: top;
    overflow-wrap: anywhere;
  }

  body.bmcpc-print-active table.bmcpc-print-table :is(th, thead td, [data-bmcpc-print-table-header]) {
    background: #e9f2ef !important;
    color: #111 !important;
    font-weight: 700;
  }

  body.bmcpc-print-active table.bmcpc-print-table :is(tr, .bmcpc-print-table-row) {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* Set the fake-table grid count from the documented data attribute. */
  body.bmcpc-print-active [data-bmcpc-print-columns="1"] { --bmcpc-print-columns: 1; }
  body.bmcpc-print-active [data-bmcpc-print-columns="2"] { --bmcpc-print-columns: 2; }
  body.bmcpc-print-active [data-bmcpc-print-columns="3"] { --bmcpc-print-columns: 3; }
  body.bmcpc-print-active [data-bmcpc-print-columns="4"] { --bmcpc-print-columns: 4; }
  body.bmcpc-print-active [data-bmcpc-print-columns="5"] { --bmcpc-print-columns: 5; }
  body.bmcpc-print-active [data-bmcpc-print-columns="6"] { --bmcpc-print-columns: 6; }
  body.bmcpc-print-active [data-bmcpc-print-columns="7"] { --bmcpc-print-columns: 7; }
  body.bmcpc-print-active [data-bmcpc-print-columns="8"] { --bmcpc-print-columns: 8; }
  body.bmcpc-print-active [data-bmcpc-print-columns="9"] { --bmcpc-print-columns: 9; }
  body.bmcpc-print-active [data-bmcpc-print-columns="10"] { --bmcpc-print-columns: 10; }
  body.bmcpc-print-active [data-bmcpc-print-columns="11"] { --bmcpc-print-columns: 11; }
  body.bmcpc-print-active [data-bmcpc-print-columns="12"] { --bmcpc-print-columns: 12; }

  /* Fake tables preserve the source desktop geometry. The adapter assigns
     this class to one canonical grid whose direct children are cells; outer
     Elementor shell grids must never receive the cell-grid role. */
  body.bmcpc-print-active .bmcpc-print-table-grid {
    display: grid !important;
    grid-template-columns: var(--bmcpc-print-grid-template, repeat(var(--bmcpc-print-columns, 2), minmax(0, 1fr))) !important;
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    min-height: 0 !important;
    max-height: none !important;
    overflow: visible !important;
  }

  body.bmcpc-print-active .bmcpc-print-table-grid > * {
    min-width: 0 !important;
    min-height: 0 !important;
    overflow: visible !important;
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* The visual-table adapter records direct-cell source geometry and the
     safe visual tokens that Elementor breakpoint rules commonly replace. */
  body.bmcpc-print-active .bmcpc-print-table-grid > [data-bmcpc-print-table-cell="1"] {
    grid-column: var(--bmcpc-print-cell-grid-column, auto) !important;
    grid-row: var(--bmcpc-print-cell-grid-row, auto) !important;
    align-self: var(--bmcpc-print-cell-align-self, stretch) !important;
    padding: var(--bmcpc-print-cell-padding, 0) !important;
    padding-top: min(var(--bmcpc-print-cell-padding-top, 0px), 1.8mm) !important;
    padding-right: var(--bmcpc-print-cell-padding-right, 0px) !important;
    padding-bottom: min(var(--bmcpc-print-cell-padding-bottom, 0px), 1.8mm) !important;
    padding-left: var(--bmcpc-print-cell-padding-left, 0px) !important;
    border: var(--bmcpc-print-cell-border, 0) !important;
    background: var(--bmcpc-print-cell-background, transparent) !important;
    text-align: var(--bmcpc-print-cell-text-align, start) !important;
    font-size: 8.5pt !important;
    line-height: 1.25 !important;
  }

  body.bmcpc-print-active :is(
    [data-bmcpc-print-duplicate="responsive"],
    .bmcpc-print-table .elementor-hidden-desktop.elementor-hidden-tablet
  ) {
    display: none !important;
  }

  body.bmcpc-print-active .bmcpc-print-table .elementor-hidden-desktop.elementor-hidden-tablet {
    display: none !important; /* Do not print mobile/tablet duplicate cells. */
  }

  body.bmcpc-print-active .bmcpc-print-table :is(.elementor-hidden-mobile, .elementor-hidden-mobile.e-grid) {
    display: grid !important;
  }

  body.bmcpc-print-active .bmcpc-print-image-grid {
    display: grid !important;
    grid-template-columns: repeat(var(--bmcpc-print-image-columns, 3), minmax(0, 1fr));
    gap: 4mm;
    width: 100%;
  }

  body.bmcpc-print-active .bmcpc-print-image-grid :is(figure, .bmcpc-print-image-item) {
    min-width: 0;
    margin: 0;
    break-inside: avoid;
    page-break-inside: avoid;
  }

  body.bmcpc-print-active .bmcpc-print-image-grid img {
    display: block;
    width: 100%;
    max-width: 100%;
    height: auto;
    object-fit: contain;
  }

  body.bmcpc-print-active .bmcpc-print-image-grid figcaption {
    margin-top: 1.5mm;
    color: var(--bmcpc-print-muted);
    font-size: 9pt;
    line-height: 1.35;
  }
}
