/* ============================================================
   ПЕЧАТЬ: изоляция карточек от остального сайта.
   Инструмент встроен в общий layout сайта (шапка, меню, футер,
   заголовок страницы). При обычном window.print() всё это лезло
   на печать. Здесь мы прячем ВЕСЬ сайт и печатаем только
   .print-area с карточками.

   Все правила ограничены body:has(.cards-tool-page), поэтому
   печать других страниц сайта не затрагивается.
   Ориентацию (портрет/альбом) задаёт JS через #dynPage → @page.
   ============================================================ */

@media print {
  /* 1. Прячем весь хром сайта и служебные виджеты. */
  body:has(.cards-tool-page) .app-header,
  body:has(.cards-tool-page) #sidebar,
  body:has(.cards-tool-page) .sidebar,
  body:has(.cards-tool-page) footer,
  body:has(.cards-tool-page) .page-header,
  body:has(.cards-tool-page) .card-preview-popup,
  body:has(.cards-tool-page) .selector-panel,
  body:has(.cards-tool-page) .loader-panel,
  body:has(.cards-tool-page) .presets-row,
  body:has(.cards-tool-page) .pagemap-panel,
  body:has(.cards-tool-page) .stats-bar,
  body:has(.cards-tool-page) #statsBar,
  body:has(.cards-tool-page) #pagemapPanel,
  body:has(.cards-tool-page) #presetsRow,
  body:has(.cards-tool-page) .mode-tabs,
  body:has(.cards-tool-page) #vampireWidget,
  body:has(.cards-tool-page) #vampireSpeech,
  body:has(.cards-tool-page) #vampireToggle,
  body:has(.cards-tool-page) #batWidget-container {
    display: none !important;
  }

  /* 2. Обнуляем отступы/фоны у всех контейнеров-обёрток,
        чтобы область печати встала в самый верх листа. */
  html:has(.cards-tool-page),
  body:has(.cards-tool-page),
  body:has(.cards-tool-page) .main-layout,
  body:has(.cards-tool-page) .content-area,
  body:has(.cards-tool-page) .cards-tool-page,
  body:has(.cards-tool-page) .mode-print-wrapper,
  body:has(.cards-tool-page) .mode-print,
  body:has(.cards-tool-page) .print-area {
    display: block !important;
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
    width: auto !important;
    max-width: none !important;
    min-height: 0 !important;
    height: auto !important;
    overflow: visible !important;
    position: static !important;
    border: none !important;
    box-shadow: none !important;
  }

  /* 2b. Сброс мобильного масштабирования.
        На телефоне JS оборачивает каждый лист в .page-scale-wrap и
        применяет transform: scale(<1) для показа на узком экране.
        При печати это обрезало и съедало карточки — обнуляем. */
  body:has(.cards-tool-page) .page-scale-wrap {
    display: block !important;
    width: auto !important;
    height: auto !important;
    overflow: visible !important;
    margin: 0 !important;
    transform: none !important;
  }

  /* 3. Каждая A4-страница — ровно один лист, без рамок и разрывов внутри. */
  body:has(.cards-tool-page) .print-page {
    transform: none !important;
    transform-origin: initial !important;
    border: none !important;
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
    break-inside: avoid;
    page-break-inside: avoid;
    /* Размеры листа берутся из inline-стилей, которые JS
       выставляет под текущую ориентацию (портрет/альбом). */
  }
  /* Разрыв между листами, но не после последнего (пустой лист в конце). */
  body:has(.cards-tool-page) .print-page {
    page-break-after: always;
    break-after: page;
  }
  body:has(.cards-tool-page) .print-page:last-of-type {
    page-break-after: auto;
    break-after: auto;
  }

  /* 3b. На печати карточки начинаются от верхнего левого угла листа.
        Сам лист всегда остаётся полным A4, как в превью. */
  body:has(.cards-tool-page) .print-page {
    display: flex !important;
    flex-wrap: wrap !important;
    justify-content: flex-start !important;
    align-content: flex-start !important;
    align-items: flex-start !important;
  }
  /* Книжная (или десктоп-альбомная без поворота): лист на весь A4. */
  body[data-cards-orient="portrait"]:has(.cards-tool-page) .print-page {
    height: 297mm !important;
    width: 210mm !important;
  }
  body[data-print-rotate="no"][data-cards-orient="landscape"]:has(.cards-tool-page) .print-page {
    height: 210mm !important;
    width: 297mm !important;
  }

  /* 4. Точная передача цвета карточек на печати. */
  body:has(.cards-tool-page) .print-page,
  body:has(.cards-tool-page) .card,
  body:has(.cards-tool-page) .card-slot,
  body:has(.cards-tool-page) .card-slot *,
  body:has(.cards-tool-page) [class$="-scope"],
  body:has(.cards-tool-page) [class$="-scope"] * {
    -webkit-print-color-adjust: exact !important;
    print-color-adjust: exact !important;
    color-adjust: exact !important;
  }

  /* 5. Карточка не должна разрываться между страницами. */
  body:has(.cards-tool-page) .card,
  body:has(.cards-tool-page) .card-slot {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  /* Ориентация (книжная/альбомная) задаётся нативно через
     @page{size:...} (см. #dynPage в page-builder.js). И десктоп, и
     современный мобильный Chrome честно разворачивают лист.
     CSS-повороты убраны: в реальных телефонах они ломали вёрстку. */
}
