@page {
  size: A4 portrait;
  margin: 1.5cm;
}

@media print {

  /* КРИТИЧНО: при тёмной теме экранные переменные навязывают тёмный фон.
     Принудительно сбрасываем все цветовые переменные на светлые ровно
     на время печати — независимо от body.theme-dark. */
  html, body, body.theme-dark {
    --color-bg: #ffffff !important;
    --color-fg: #333333 !important;       /* было #000 — серый ради экономии краски */
    --color-line: #555555 !important;
    --color-block: #ececec !important;    /* блок-клетки светло-серые (меньше тонера) */
    --color-cell-bg: #ffffff !important;
    --color-cell-border: #5a5a5a !important;
    --color-num: #555555 !important;
    --color-panel-bg: #ffffff !important;
  }

  html, body {
    background: white !important;
    color: #333 !important;               /* тёмно-серый вместо чёрного */
    font: 11pt "Times New Roman", serif !important;
  }
  body.theme-skyrim::before,
  body.theme-skyrim::after {
    content: none !important;
    display: none !important;
    background: none !important;
  }

  .controls,
  .ctrl-buttons,
  .ctrl-grid,
  .app-title,
  .app-sub,
  .status,
  #btn-toggle-answers,
  #btn-print,
  #btn-reset-history,
  #btn-generate {
    display: none !important;
  }

  /* Кинематографика/декор — НЕ печатать: свечи+виньетка, 3D-дракон, заставка,
     снег, угли, canvas огня/частиц, fly-дракон. Иначе они лезут на лист
     тёплыми пятнами и тёмной виньеткой (это и был «пиздец» при печати).
     Чистая ч/б-страница: серая сетка + вопросы + печать Тёмного Братства + заголовок. */
  .snow-layer,
  .ember-layer,
  .skyrim-ambiance,
  #dragon-cinematic-stage,
  .dragon-cinematic-stage,
  #dragon-loading-screen,
  .dragon-loading-screen,
  .dragon-flight,
  .dragon-svg,
  .scroll-fire-canvas,
  .scroll-fx-canvas {
    display: none !important;
  }

  main {
    margin: 0 !important;
    padding: 0 !important;
    max-width: none !important;
  }

  .puzzle-title {
    text-align: center;
    position: relative;
    margin: 0 0 6mm !important;
    font: 700 13pt "Times New Roman", serif !important;
    page-break-after: avoid;
  }
  body.theme-skyrim .puzzle-title::after,
  .puzzle-title::after {
    content: "" !important;
    display: block !important;
    width: 24mm;
    height: 24mm;
    margin: 3mm auto 0;
    background: url("../assets/images/dark-brotherhood-wax-seal.png?v=1") center / contain no-repeat !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }

  .grid-container {
    margin: 0 auto 6mm !important;
    page-break-inside: avoid;
    display: flex;
    justify-content: center;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
  }
  body.theme-skyrim .grid-container,
  body.theme-skyrim .scroll-paper {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
  }
  .scroll-paper {
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
  }
  .scroll-rod-top,
  .scroll-rod-bottom,
  .scroll-wand,
  .wax-seal {
    display: none !important;
  }

  .grid {
    display: grid;
    margin: 0 auto;
    border: 1.2pt solid #555 !important;
    background: white !important;
    page-break-inside: avoid;
    /* АДАПТИВНЫЙ размер клетки: вписываем сетку в ширину печати (176mm =
       A4 210mm − поля 2×15mm − запас). Маленькие сетки не раздуваем (max 11mm).
       Решает «сетка не влезает на 1 страницу» для больших размеров. */
    --grid-cell-mm: min(11mm, calc(176mm / var(--grid-size, 13)));
    grid-template-columns: repeat(var(--grid-size), var(--grid-cell-mm)) !important;
    grid-template-rows: repeat(var(--grid-size), var(--grid-cell-mm)) !important;
  }
  .cell {
    width: var(--grid-cell-mm) !important;
    height: var(--grid-cell-mm) !important;
  }

  .cell {
    border: 0.4pt solid #6a6a6a !important;
    background: white !important;
    color: #333 !important;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
    color-adjust: exact;
    font-family: "Times New Roman", serif !important;
    font-weight: 700 !important;
    font-size: var(--grid-letter-print-pt) !important;
    line-height: 1 !important;
    text-transform: uppercase;
  }

  .cell.block {
    background: #ececec !important;   /* было #d8d8d8 — светлее, экономит тонер */
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
    color-adjust: exact;
  }

  /* Подсветка проверки (зелёный/красный/закреплённый фон) НЕ печатается. */
  .cell.solve-error,
  .cell.solve-correct,
  .cell.solve-locked {
    background: white !important;
  }

  .cell .num {
    font: 400 6pt Arial, sans-serif !important;
    color: #666 !important;
    top: 0.3mm !important;
    left: 0.5mm !important;
  }

  /* На основной странице ответы не показываются */
  .grid-container .cell .ans { display: none !important; }

  /* Введённые пользователем буквы не печатаются — печатаем чистую сетку
     даже если в браузере она частично заполнена. */
  .cell .user-letter { display: none !important; }

  /* Список определений — 2 колонки под сеткой */
  .clues-container {
    display: block !important;
    column-count: 2;
    column-gap: 8mm;
    column-rule: 1px dotted #888;
    font-family: "Times New Roman", serif !important;
    font-size: var(--clue-print-pt) !important;
  }
  .clues-container > div {
    break-inside: avoid;
    margin-bottom: 5mm;
  }
  .clues-container h3 {
    font-family: "Times New Roman", serif !important;
    font-weight: 700 !important;
    font-size: var(--clue-h3-print-pt) !important;
    margin: 0 0 3mm !important;
    page-break-after: avoid;
  }
  .clues-container ol {
    padding-left: 7mm !important;
    margin: 0 !important;
  }
  .clues-container li {
    break-inside: avoid;
    margin-bottom: 1.5mm !important;
    line-height: 1.3 !important;
  }

  /* Страница с ответами — на новом листе */
  .answer-key {
    display: block !important;
    page-break-before: always !important;
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
  }
  .answer-key h3 {
    text-align: center;
    font-family: "Times New Roman", serif !important;
    font-weight: 700 !important;
    font-size: var(--clue-h3-print-pt) !important;
    margin: 0 0 6mm !important;
  }
  .answer-key .cell .ans {
    display: block !important;
    font-family: "Times New Roman", serif !important;
    font-weight: 700 !important;
    font-size: var(--grid-letter-print-pt) !important;
    text-align: center;
    line-height: 1 !important;
  }
  .answer-key .cell .num { display: none !important; }
  .answer-key .cell.block { background: #ececec !important; }
  .answer-key .cell .ans { color: #333 !important; }

  /* Режим «спрятать ответы при печати» */
  body.no-print-answers .answer-key { display: none !important; }

  /* Режим «уместить на 1 листе»: ответы на той же странице, тише поля */
  body.fit-a4 .answer-key {
    page-break-before: auto !important;
    margin-top: 4mm !important;
  }
  body.fit-a4 .answer-key h3 {
    font-size: 10pt !important;
    margin: 0 0 2mm !important;
  }
  body.fit-a4 .clues-container > div {
    margin-bottom: 2mm !important;
  }
  body.fit-a4 .clues-container li {
    margin-bottom: 0.5mm !important;
    line-height: 1.2 !important;
  }
  body.fit-a4 .puzzle-title {
    margin: 0 0 3mm !important;
    font-size: 11pt !important;
  }
  body.fit-a4 .grid-container {
    margin-bottom: 3mm !important;
  }

  /* ===== Раздельная печать ===== */

  /* Только сетка: скрываем блок вопросов и ключ ответов */
  body.print-only-grid .clues-container,
  body.print-only-grid .answer-key {
    display: none !important;
  }

  /* Только вопросы: скрываем сетку и заголовок головоломки;
     увеличиваем шрифт списка вопросов; одна колонка для ещё большего размера. */
  body.print-only-clues .grid-container,
  body.print-only-clues .puzzle-title,
  body.print-only-clues .answer-key {
    display: none !important;
  }
  body.print-only-clues .clues-container {
    column-count: 1 !important;
    font-size: 18pt !important;
  }
  body.print-only-clues .clues-container h3 {
    font-size: 20pt !important;
    margin: 0 0 4mm !important;
    padding-top: 4mm !important;
  }
  body.print-only-clues .clues-container li {
    margin-bottom: 3mm !important;
    line-height: 1.4 !important;
    page-break-inside: avoid;
  }
  body.print-only-clues .clues-container ol {
    padding-left: 10mm !important;
  }

  /* Кредит автора — печатается внизу страницы кроссворда (#site-credit) */
  .site-credit {
    display: block !important;
    text-align: center !important;
    margin: 8mm auto 0 !important;
    padding-top: 3mm !important;
    border-top: 0.5pt solid #aaa !important;
    color: #666 !important;
    font: 8.5pt "Times New Roman", serif !important;
    page-break-inside: avoid;
  }
  .site-credit .credit-caption,
  .site-credit .credit-ico { display: none !important; }
  .site-credit .credit-links { display: block !important; }
  .site-credit a,
  .site-credit a.credit-link {
    color: #666 !important;
    text-decoration: none !important;
    display: inline !important;
    padding: 0 6px !important;
    background: none !important;
    border: 0 !important;
    box-shadow: none !important;
  }
  .site-credit a.credit-link::before,
  .site-credit a.credit-link::after { display: none !important; }

  /* ===== Перебиваем кинематографическую тему theme-skyrim при печати =====
     Экранные правила `body.theme-skyrim …` специфичнее низкоуровневых выше,
     поэтому при печати побеждали они (чёрные клетки, золотой заголовок-градиент,
     декоративная рамка). Дублируем с той же специфичностью — print.css грузится
     последним, поэтому выигрывает. */
  body.theme-skyrim {
    background: #ffffff !important;
    background-image: none !important;
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
  }
  body.theme-skyrim main {
    background: transparent !important;
    background-image: none !important;
    border: none !important;
    box-shadow: none !important;
    outline: none !important;
  }
  /* Свиток в кинематографике сворачивается clip-path/animation (intro-play /
     is-revealing / is-rolled) и несёт PNG-фон пергамента (!important, ID-специфичность).
     В печати принудительно разворачиваем его в плоский видимый блок без текстуры —
     иначе сетка пропадает (свёрнутый clip-path) или печатается тёмная текстура. */
  body.theme-skyrim .grid-container,
  body.theme-skyrim #grid-container,
  body.theme-skyrim .grid-container .scroll-paper,
  body.theme-skyrim #grid-container .scroll-paper,
  body.theme-skyrim #grid-container.is-rolled .scroll-paper,
  body.theme-skyrim #grid-container.is-rolled:not(.is-empty-scroll) .scroll-paper,
  body.theme-skyrim #grid-container.is-revealing .scroll-paper,
  body.theme-skyrim .grid-container.intro-play .scroll-paper,
  body.theme-skyrim #grid-container.is-empty-scroll .scroll-paper {
    clip-path: none !important;
    -webkit-clip-path: none !important;
    animation: none !important;
    transform: none !important;
    opacity: 1 !important;
    visibility: visible !important;
    height: auto !important;
    max-height: none !important;
    min-height: 0 !important;
    overflow: visible !important;
    background: transparent !important;
    background-image: none !important;
    filter: none !important;
    box-shadow: none !important;
    border: none !important;
    padding: 0 !important;
    outline: none !important;
  }
  body.theme-skyrim .cell.block,
  body.theme-skyrim .answer-key .cell.block {
    background: #ececec !important;       /* светло-серые блок-клетки вместо чёрных */
    background-image: none !important;
    box-shadow: none !important;
    border-color: #6a6a6a !important;
  }
  body.theme-skyrim .puzzle-title {
    color: #333 !important;
    -webkit-text-fill-color: #333 !important;  /* убираем золотой градиент-текст */
    background: none !important;
    text-shadow: none !important;
    font: 700 13pt "Times New Roman", serif !important;
    font-variant: normal !important;
    letter-spacing: normal !important;
    position: relative !important;
    transform: none !important;
    top: auto !important;
    margin: 0 0 6mm !important;
    padding: 0 !important;
  }
  /* Снимаем декоративную золотую рамку и псевдо-украшения заголовка,
     НО восковую печать оставляем (она у .puzzle-title::after выше). */
  body.theme-skyrim .puzzle-title::before {
    content: none !important;
    display: none !important;
  }
  body.theme-skyrim .grid-container::before,
  body.theme-skyrim .grid-container::after,
  body.theme-skyrim .scroll-paper::before,
  body.theme-skyrim .scroll-paper::after {
    content: none !important;
    display: none !important;
    background: none !important;
    border: none !important;
    box-shadow: none !important;
  }

  /* Печать не должна зависеть от состояния загрузки 3D-дракона: экранное
     правило `…dragon-cinematic-loading main { opacity:0 }` прячет кроссворд на
     время сплэша — при печати в этот момент выходил пустой тёмный лист.
     Форсируем видимость контента и белый фон независимо от стадии загрузки. */
  body.dragon-cinematic-loading main,
  body.theme-skyrim.dragon-mode-cinematic.dragon-cinematic-loading main {
    opacity: 1 !important;
    transform: none !important;
    visibility: visible !important;
  }
  body.dragon-cinematic-loading .dragon-loading-screen,
  body.theme-skyrim .dragon-loading-screen,
  #dragon-loading-screen {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
  }
}
