/* ======================================================================
   ПЕЧАТНЫЙ ЛИСТ РАЗДЕЛА РАСКЛАДОВ
   ======================================================================
   Указка, пик #277, слова владельца дословно:

     «в идеале потом делать принтскрин страницы и можно это хранить как
      копию, а лучше отправить на почту»

   «Хранить как копию» сделано печатью: под готовым разбором появляется
   кнопка, она зовёт печать браузера, и человек выбирает «Сохранить как
   PDF». Ничего никуда не отправляется — расклад остаётся у него.

   ПОЧЕМУ ОТДЕЛЬНЫЙ ФАЙЛ, А НЕ РАЗДЕЛ В rasklady.css. В rasklady.css
   параллельно пишут две другие сессии (правило 8 CLAUDE.md), и класть
   туда ещё один хвост — значит гарантированно с кем-то столкнуться.
   Файл подключён в templates/rasklady/_osnova.html с media="print":
   на экране он не применяется ВООБЩЕ, ни одним правилом, и вид сайта
   (правило 0) им не трогается.

   ПОРЯДОК ПОДКЛЮЧЕНИЯ ВАЖЕН: этот файл идёт ПОСЛЕ rasklady.css и
   rasklady-themes.css. В rasklady.css уже есть свои `@media print`
   (белый фон, чёрный текст, гашение пыльцы и комет) — они остаются в
   силе, а здесь только то, чего там нет: сам лист, раскладка карт на
   бумаге и вычистка всего, что к копии расклада не относится.

   ЧТО ОСТАЁТСЯ НА БУМАГЕ
     — заголовок страницы (h1);
     — дата: её пишет static/js/rasklady_pechat.js, и пишет ТОЛЬКО
       число («23.09.2026»). Слов, которых владелец не давал, здесь
       нет (правило 1);
     — позиции расклада: картинка карты и подпись позиции (вопрос).
       Перевёрнутая карта повёрнута, как на экране;
     — текст разбора, чёрным по белому, Source Serif 4, 12,5 pt;
     — подпись Альбины под разбором и оговорка о развлекательном
       характере: обе стоят внутри готового разбора, и копия без них
       была бы копией не того, что человек читал.

   ЧТО УХОДИТ: шапка, крошки, плитки цен, полоса входа, поле рассказа,
   список вопросов, все кнопки (включая саму кнопку печати), блок с
   астролябией, вопросы-ответы, свиток текста страницы, подвал,
   cookie-баннер, занавес, порог 18+, окно записи и все слои движения —
   ночь, искры, пыльца, свет чтения, стопка неразданных карт.
   ====================================================================== */

/* ----------------------------------------------------------------------
   1. ЛИСТ
   ----------------------------------------------------------------------
   A4, поля 15 мм со всех сторон. Полоса набора выходит 180 мм — от неё
   считается ширина карты в разделе 4.                                  */
@page {
  size: A4;
  margin: 15mm;
}

/* Движение на бумаге не печатается, но переход, застигнутый на
   середине, печатает полупрозрачный кадр. Поэтому гасим всё разом —
   то же самое делает измерительный стенд перед замером (правило 8.9). */
*, *::before, *::after {
  animation: none !important;
  transition: none !important;
  text-shadow: none !important;
  box-shadow: none !important;
}

html, body {
  background: #fff !important;
  color: #000 !important;
  font-family: 'Source Serif 4', Georgia, 'Times New Roman', serif;
  font-size: 12.5pt;
  line-height: 1.5;
}

/* Обёртки страницы на бумаге не нужны ни шириной, ни фоном, ни сеткой:
   лист сам задаёт полосу набора. Сбрасываем их в простой поток, иначе
   двухколоночная обложка уводит стол в правую половину листа. */
.shell,
.rsk-pole,
main.rsk,
.rsk-hero,
.rsk-hero__in,
.rsk-hero__forma,
.rsk-hero__stol,
[data-vp-shag="stol"] {
  display: block !important;
  position: static !important;
  width: auto !important;
  max-width: none !important;
  min-height: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: none !important;
  transform: none !important;
  opacity: 1 !important;
  filter: none !important;
  overflow: visible !important;
}

/* Подложки и виньетки нарисованы псевдоэлементами обёрток. */
.shell::before, .shell::after,
.rsk-pole::before, .rsk-pole::after,
main.rsk::before, main.rsk::after,
.rsk-hero::before, .rsk-hero::after,
.rsk-hero__stol::before, .rsk-hero__stol::after,
.rsk-stol::before, .rsk-stol::after {
  display: none !important;
  content: none !important;
}

/* ----------------------------------------------------------------------
   2. ЧТО НЕ ПЕЧАТАЕТСЯ
   ----------------------------------------------------------------------
   Список нарочно длинный и по именам, а не «спрятать всё и показать
   нужное»: страница раздела собирается из нескольких шаблонов, и
   белый список тихо потерял бы кусок разбора, если бы разметка
   поехала. Потерять лишний блок здесь дешевле, чем потерять текст. */
.zanaves,
.cookie,
.okno,
.rsk-top,
.rsk-crumbs,
.rsk-foot,
.rsk-noch,
.rsk-porog,
.rsk-zov,
.rsk-vo,
.rsk-svitok,
.rsk-priglasi,
.rsk-zakaz-hvost,
.rsk-lichnoe-mesto,
.rsk-rasskaz,
.rsk-schetchik,
.rsk-vybor,
.rsk-hero__deystvie,
.rsk-beda,
.rsk-nad,
.rsk-lead,
.rsk-zhdem,
.rsk-zhdet,
.rsk-predlozhenie,
.rsk-zakaz,
.rsk-vopros-spisok,
.rsk-vopros-dobor,
.rsk-vopros-tarif,
.rsk-pochemu-zaperta,
.rsk-usloviya,
.rsk-golos,
.rsk-iskry,
.rsk-chtenie,
.rsk-pylca,
.rsk-stopka,
.rsk-poz--zhdet,
.btn,
button,
input,
textarea,
select,
[data-vp-shag="rasskaz"],
[data-vp-shag="voprosy"],
[data-vp-shag="zakaz"],
[data-vp-ya],
[data-vp-ochered],
[data-posle],
/* Строка «согласие, которое вы дали при входе, действует» (правило 7.1).
   На экране она обязательна: стоит у кнопки, и без неё человек
   отправляет свою историю, не видя ничего про персональные данные. На
   бумаге отправлять уже нечего — кнопки на листе нет, — а её ссылка
   печаталась бы строкой поверх заголовка. Условие правила 7.1
   выполняется на экране и здесь не отменяется. */
[data-soglasie-deystvuet] {
  display: none !important;
}

/* ----------------------------------------------------------------------
   3. ШАПКА КОПИИ: ЗАГОЛОВОК И ДАТА
   ---------------------------------------------------------------------- */
/* ЗАГОЛОВОК ВОЗВРАЩАЕТСЯ НА БУМАГУ. На готовых раскладах (карта дня)
   надпись обложки уходит, как только расклад пошёл: анимация гасит её,
   а `rasklady.js` (`убратьНадписи`) ставит `hidden`, чтобы она не
   держала место над разбором. Решение владельца, пик #249, и трогать
   его нельзя — на экране всё остаётся как есть.

   Но копия без заголовка — это лист с картами и текстом, по которому
   через месяц не понять, что это вообще было. Поэтому на бумаге
   заголовок раскрывается обратно. Специфичность три класса против двух
   у `.rsk [hidden]`, значит правило работает независимо от порядка
   подключения файлов. Метку и лид не возвращаем: они про то, как
   заказать расклад, а не про сам расклад. */
.rsk .rsk-hero__in .rsk-h1[hidden] {
  display: block !important;
}
.rsk-h1 {
  margin: 0 0 4mm !important;
  max-height: none !important;
  overflow: visible !important;
  opacity: 1 !important;
  transform: none !important;
  font-size: 20pt;
  line-height: 1.2;
  font-weight: 400;
  color: #000 !important;
  break-after: avoid;
}

/* Дата на экране не видна вовсе — она стоит с атрибутом `hidden`, и в
   разделе есть правило `.rsk [hidden] { display: none !important }`.
   Здесь оно перебивается СПЕЦИФИЧНОСТЬЮ (три класса против двух), а не
   порядком файлов: так правило переживёт и перестановку подключений.

   Число ставит скрипт. Пустая дата не печатается: `:empty` оставляет
   её скрытой, и на листе не появляется пустая строка. */
.rsk .rsk-pechat-data[hidden] {
  display: block !important;
}
.rsk .rsk-pechat-data:empty {
  display: none !important;
}
.rsk-pechat-data {
  margin: 0 0 7mm !important;
  font-size: 11pt;
  color: #000 !important;
  break-after: avoid;
}

/* ----------------------------------------------------------------------
   4. КАРТЫ НА БУМАГЕ
   ----------------------------------------------------------------------
   Полоса набора — 180 мм. Карта 40×60 мм (те же 2:3, что у картинок
   колоды), зазор 6 мм: 4 × 40 + 3 × 6 = 178 мм, то есть в строку
   встают четыре одиночные карты. Позиция-триплет (широкий вопрос,
   правило 10) шириной не задаётся вовсе — её ширину даёт ряд из трёх
   карт внутри, 3 × 40 + 2 × 6 = 132 мм, и рядом с ней в строку
   помещается ещё одна карта. Три-четыре карты в строке, как и просили.

   ОДНО ЧИСЛО В ОДНОМ МЕСТЕ (правило 8.7): ширина карты объявлена здесь
   один раз, переменной. Всё остальное — карта, триплет, зазоры — её
   спрашивает. На экране эти переменные не существуют: файл печатный. */
.rsk-stol {
  --pk-w: 40mm;
  --pk-h: 60mm;
  --pk-zazor: 6mm;

  display: flex !important;
  flex-wrap: wrap !important;
  justify-content: center !important;
  align-items: flex-start !important;
  gap: 9mm var(--pk-zazor) !important;
  width: auto !important;
  min-height: 0 !important;
  margin: 0 0 9mm !important;
  padding: 0 !important;
  background: none !important;
  transform: none !important;
}

.rsk-poz {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  position: static !important;
  width: var(--pk-w) !important;
  /* `flex` СИЛЬНЕЕ `width`: у элемента гибкой строки ширину решает
     flex-basis, и пока он стоял из экранных правил (180,4 px на
     позицию), карта в 40 мм болталась в коробке шире себя — зазор между
     позициями выходил 14 мм вместо 6, и в строку вставало три места
     вместо четырёх. Поэтому основа снимается явно, а ширину задаёт
     `width` выше. Правило 8.7: число по-прежнему одно, --pk-w. */
  flex: 0 0 auto !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  /* Коробка вокруг триплета (волосок и подложка, раздел 49 rasklady.css)
     на экране показывает, что три карты — один ответ. На белом листе
     это серая рамка вокруг части карт, и читается она как брак печати.
     Группу на бумаге держит вместе сама раскладка: три карты в ряд и
     одна подпись под ними. */
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  transform: none !important;
  opacity: 1 !important;
  visibility: visible !important;
  break-inside: avoid;
  page-break-inside: avoid;
}
.rsk-poz::before, .rsk-poz::after { display: none !important; content: none !important; }

/* Триплет: ширину даёт ряд карт внутри, отдельного числа у него нет. */
.rsk-poz--triplet { width: auto !important; }
.rsk-poz__karty {
  display: flex !important;
  flex-direction: row !important;
  gap: var(--pk-zazor) !important;
  margin: 0 !important;
}

/* Сама карта. На экране она — две грани, которые поворачиваются вокруг
   оси; на бумаге поворачивать нечего, поэтому рубашка снимается, а лицо
   кладётся плашмя. `backface-visibility` и `rotateY` снимаются явно:
   без этого принтер получает грань, повёрнутую от него спиной, и
   печатает пустой прямоугольник. */
.rsk-karta {
  position: relative !important;
  width: var(--pk-w) !important;
  height: var(--pk-h) !important;
  flex: 0 0 auto !important;
  margin: 0 !important;
  transform: none !important;
  opacity: 1 !important;
  filter: none !important;
  break-inside: avoid;
  page-break-inside: avoid;
}
.rsk-karta::before, .rsk-karta::after { display: none !important; content: none !important; }

.rsk-karta__in {
  position: absolute !important;
  inset: 0 !important;
  transform: none !important;
  transform-style: flat !important;
}
.rsk-karta__in::before, .rsk-karta__in::after { display: none !important; content: none !important; }

.rsk-karta__ryb { display: none !important; }

.rsk-karta__lico {
  position: absolute !important;
  inset: 0 !important;
  transform: none !important;
  backface-visibility: visible !important;
  -webkit-backface-visibility: visible !important;
  overflow: hidden !important;
  border: 1px solid #9a9a9a !important;
  border-radius: 2mm !important;
  background: #fff !important;
}
/* Затемнители и печатная рамка лица нарисованы псевдоэлементами: на
   белом листе это серые полосы поверх картинки. */
.rsk-karta__lico::before, .rsk-karta__lico::after {
  display: none !important;
  content: none !important;
}

/* Картинка карты. `contain` — тот же выбор, что на экране (раздел 30.2
   в rasklady.css): на картинке по краю нарисована рамка, сверху номер,
   снизу название, и обрезать их нельзя. */
.rsk-karta__art {
  display: block !important;
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: contain !important;
  object-position: center !important;
  transform: none;
  opacity: 1 !important;
  print-color-adjust: exact;
  -webkit-print-color-adjust: exact;
}
/* Перевёрнутая карта остаётся перевёрнутой: это часть смысла расклада,
   а не дефект снимка. Правило то же, что на экране (раздел 14). */
.rsk-karta--perevernuta .rsk-karta__art { transform: rotate(180deg) !important; }
.rsk-karta--perevernuta .rsk-karta__ryb .rsk-karta__art { transform: none !important; }

/* Нарисованное лицо-заглушка (колода без картинки): чёрным по белому. */
.rsk-karta__nomer, .rsk-karta__imya {
  color: #000 !important;
  position: relative !important;
  z-index: 2;
}
.rsk-karta__risunok { color: #666 !important; }

/* Подпись позиции — это вопрос человека. Она и есть то, ради чего копия
   имеет смысл: карта без вопроса ничего не говорит. */
.rsk-poz__p {
  width: 100% !important;
  margin: 3mm 0 0 !important;
  min-height: 0 !important;
  font-size: 9pt !important;
  line-height: 1.35 !important;
  color: #000 !important;
  text-align: center;
}
.rsk-poz__p::before, .rsk-poz__p::after { display: none !important; content: none !important; }
.rsk-poz--triplet .rsk-poz__p { width: 0 !important; min-width: 100% !important; }

/* ----------------------------------------------------------------------
   5. РАЗБОР
   ----------------------------------------------------------------------
   Кегль 12,5 pt — середина заказанного коридора 12–13 pt. Первый абзац
   на экране крупнее прочих (буквица и ведущая строка); на бумаге все
   абзацы одного размера: это текст письма, а не обложка. */
.rsk-trakt {
  display: block !important;
  position: static !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: none !important;
  transform: none !important;
  opacity: 1 !important;
}
.rsk-trakt::before, .rsk-trakt::after { display: none !important; content: none !important; }

/* Шапка разбора остаётся: без неё текст начинается с середины мысли. */
.rsk-trakt__l {
  display: block !important;
  margin: 0 0 4mm !important;
  font-size: 9pt !important;
  letter-spacing: .2em;
  color: #000 !important;
  break-after: avoid;
}
.rsk-trakt__l::after { display: none !important; content: none !important; }

.rsk-trakt__tekst { display: block !important; }
.rsk-trakt__tekst p,
.rsk-trakt p {
  margin: 0 0 4mm !important;
  font-size: 12.5pt !important;
  line-height: 1.55 !important;
  color: #000 !important;
  opacity: 1 !important;
  transform: none !important;
  orphans: 3;
  widows: 3;
}
.rsk-trakt__tekst p::first-letter {
  font-size: inherit !important;
  color: #000 !important;
  float: none !important;
}

/* Подпись Альбины под машинным разбором и оговорка о развлекательном
   характере. Обе — её и её же слова из настроек, обе стоят на экране
   вместе с готовым разбором. Копия без них была бы копией не того, что
   человек читал, поэтому на бумаге они остаются. */
.rsk-trakt .rsk-trakt__podpis {
  margin: 6mm 0 0 !important;
  padding-top: 3mm !important;
  border-top: 1px solid #bbb !important;
  font-size: 10pt !important;
  color: #000 !important;
}
.rsk-ogovorka--pod {
  display: block !important;
  margin: 4mm 0 0 !important;
  font-size: 9pt !important;
  line-height: 1.4 !important;
  color: #333 !important;
}
.rsk-ogovorka--pod::before, .rsk-ogovorka--pod::after {
  display: none !important;
  content: none !important;
}

/* Ссылки на бумаге — просто текст: нажимать лист некуда. Адрес рядом с
   ними не печатаем: он длинный и в копии расклада не нужен. */
.rsk a, .rsk a:visited {
  color: #000 !important;
  text-decoration: none !important;
  background-image: none !important;
}
