/* ═══════════════════════════════════════════════════════════════════
   СЛОЙ ОТЧЁТА — общий для платных документов Нумефай
   ───────────────────────────────────────────────────────────────────
   Здесь живёт то, что одинаково у матрицы, совместимости и будущих
   отчётов: словарь токенов документа и компоненты, не привязанные к
   предмету разбора.

   ⚠️ ВСЁ СКОУПЛЕНО ПОД .rpt И ЭТО ОБЯЗАТЕЛЬНО. Две причины:
   1. Имена вроде .page и .part слишком общие — класс .page используется
      в одиннадцати вьюхах, включая демо-страницы пар.
   2. Токены с именами --purple/--ink-1 уже ломали сайт: когда они попали
      в общий asset-pipeline, розовая тема пары стала фиолетовой. Об этом
      предупреждает комментарий в v3.html.erb. На .rpt они видны только
      внутри отчёта — custom properties наследуются вниз по дереву.

   Значения — псевдонимы токенов hv.css. Собственных цветов здесь нет:
   единственный источник цвета у сайта один.
   ═══════════════════════════════════════════════════════════════════ */

.rpt {
  --purple: var(--hv-plum2); --purple-light: #9d84c4; --purple-soft: var(--hv-lilacs); --purple-bg: var(--hv-cream);
  --indigo: var(--hv-plum3); --pink: #c9527d;
  --gold: var(--hv-gold); --gold-deco: var(--hv-gold-deco); --gold-light: var(--hv-goldb); --gold-soft: var(--hv-golds);
  --emerald: #2b8257; --emerald-soft: #d8f0e4;
  --red: #c0392b; --red-soft: #f7e0dc;
  --blue: #3a6ecc; --blue-soft: #dde8f8;
  --teal: #4a7f96;
  --ink-1: var(--hv-ink); --ink-2: #3a2c40; --ink-3: var(--hv-ink2); --ink-4: var(--hv-ink3); --ink-5: #9a8ea3;
  --line: var(--hv-line); --line-2: var(--hv-cream2); --bg: var(--hv-paper);
  --grad-brand: linear-gradient(135deg, #4c2168 0%, #6b3a8f 100%);
  --grad-brand-soft: linear-gradient(135deg, rgba(76,33,104,0.05) 0%, rgba(107,58,143,0.05) 100%);
  --grad-gold: linear-gradient(135deg, #d9b45a, #a8842b);
  --grad-rose: linear-gradient(135deg, #d1746a, #c05f83);
  --grad-emerald: linear-gradient(135deg, #4f9c78, #2f7d5a);
}

/* ── Разделитель частей ──────────────────────────────────────────────
   Шмуцтитул между стопками листов: номер части капителью золотом и её
   название курсивным серифом. Приём .part из отчёта-прогноза. */
.rpt .part { width: 210mm; max-width: 100%; margin: 22px auto 4px; text-align: center; padding: 6px 20px; }
.rpt .part-n { font-family: var(--hv-sans); font-size: 8pt; font-weight: 800; letter-spacing: 0.3em; text-transform: uppercase; color: var(--gold); }
.rpt .part-t { font-family: var(--hv-serif); font-style: italic; font-weight: 600; font-size: 21pt; color: var(--purple); margin-top: 5px; text-wrap: balance; }
.rpt .part-t span { color: var(--gold-deco); margin: 0 12px; font-style: normal; }
@media (max-width: 900px) {
  .rpt .part { width: 100%; padding: 4px 16px; }
  .rpt .part-t { font-size: 16pt; }
}
@media print { .rpt .part { break-after: avoid; page-break-after: avoid; } }

/* ── Карточка оффера ─────────────────────────────────────────────────
   Врезка на бумаге с золотым кантом. Варианты разводятся акцентом, а не
   заливкой: бесплатное продолжение сливовое, платная услуга золотая. */
.rpt .offer { max-width: 160mm; margin: 0 auto; padding: 8mm;
  background: var(--bg); border: 1px solid rgba(168,132,43,0.4);
  border-radius: 12pt; box-shadow: 0 4px 18px rgba(51,22,63,0.07); }
.rpt .offer + .offer { margin-top: 7mm; }
.rpt .offer-eyebrow { display: inline-block; font-size: 8.5pt; font-weight: 700;
  letter-spacing: 0.16em; text-transform: uppercase; margin-bottom: 3mm; }
.rpt .offer.free .offer-eyebrow { color: var(--purple); }
.rpt .offer.expert .offer-eyebrow { color: var(--gold); }
.rpt .offer-title { font-family: var(--hv-serif); font-size: 13pt; font-weight: 700;
  color: var(--ink-1); margin-bottom: 2.5mm; line-height: 1.25; }
.rpt .offer-lead { font-size: 10.5pt; line-height: 1.6; color: var(--ink-2); margin: 0 0 4.5mm; }
.rpt .offer-list { display: grid; gap: 2mm; margin-bottom: 6mm; font-size: 10pt; line-height: 1.45; color: var(--ink-2); }
.rpt .offer-list div { display: flex; gap: 3mm; }
.rpt .offer-list i { font-style: normal; font-weight: 800; flex-shrink: 0; }
.rpt .offer.free .offer-list i { color: var(--purple); }
.rpt .offer.expert .offer-list i { color: var(--gold-deco); }
.rpt .offer-price { font-size: 11pt; font-weight: 700; color: var(--ink-1); margin-bottom: 4mm; }
.rpt .offer-price b { color: var(--gold); font-weight: 800; }
.rpt .offer-cta { display: inline-flex; align-items: center; gap: 6pt; justify-content: center;
  padding: 9pt 22pt; line-height: 1.3; text-align: center;
  font-family: var(--hv-serif); font-weight: 700; font-size: 11pt; letter-spacing: 0.01em;
  text-decoration: none; border-radius: 9pt; }
.rpt .offer.free .offer-cta { background: var(--grad-brand); color: #fff; box-shadow: 0 3pt 12pt rgba(76,33,104,0.26); }
.rpt .offer.expert .offer-cta { background: linear-gradient(135deg,#d9b45a,#a8842b); color: #2a1136; box-shadow: 0 3pt 12pt rgba(168,132,43,0.3); }
.rpt .offer-note { font-size: 9pt; color: var(--ink-4); margin-top: 3.5mm; }

/* ── Врезки-подсказки в три колонки ──────────────────────────────────
   Кегль живёт на контейнере, абзацы наследуют его ЯВНО: глобальное
   правило `p` адресует элемент напрямую и иначе бьёт наследование. */
.rpt .cal-tips { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 4mm; font-size: 9pt; line-height: 1.5; }
.rpt .cal-tip { padding: 3mm 4mm; border-radius: 4pt; border-left: 3pt solid var(--c); background: var(--cbg); }
.rpt .cal-tip.purple { --c: var(--purple); --cbg: rgba(76,33,104,0.05); }
.rpt .cal-tip.gold   { --c: var(--gold);   --cbg: rgba(168,132,43,0.05); }
.rpt .cal-tip.green  { --c: var(--emerald); --cbg: rgba(47,125,90,0.05); }
.rpt .cal-tip-h { font-weight: 800; font-size: 10pt; margin-bottom: 1.5mm; color: var(--c); }
.rpt .cal-tip p { margin: 0; color: var(--ink-2); font-size: inherit; line-height: inherit; }
