# -*- coding: utf-8 -*-
"""Український текст для Level 4 A12 — «Народження Спасителя».

Зимова розсилка: чотири теми — звістки ангела, наказ імператора, відвідини
пастухів, дари мудреців.

Ключі — `p<сторінка>b<блок>`, як їх дає `extract.py`.
Специфікації:
    {'flow': ...}   — абзац з автопереносом ({sN} перемикає стиль)
    {'lines': [...]}— зберегти сітку рядків: рядок → сегменти (текст, стиль[, x])
    {'drop': True}  — тільки стерти

Біблійні цитати — переклад Огієнка. Рішення замовника від 2 вересня
(доти був Турконяк); діє на всі буклети програми.

Не перекладається: бренд `bibletime`, `bes`, `www.besweb.com`, реєстраційні
дані, номери сторінок, бокси балів. Маркер завдання лишається «Q:».

`journey` — це **подорож**, а не «дорога». Різниця, яку показав Редактор:
мається на увазі не шлях як об'єкт, а рух ним, тобто процес. «Дорога»
лишається там, де вона справді річ: «спитати дорогу», «дорога назад до
Бога», «стерегти дорогу до дерева життя» (останнє — ще й цитата, її взагалі
чіпати не можна).

Милі переведено в кілометри: у тексті вони служать відчуттю відстані, а не
цитуванню, і українська дитина миль не уявляє. 70 миль → «близько 110
кілометрів», 6 миль → «близько десяти кілометрів», масштаб карти
50 miles → «80 км».
"""

from lessons import MARKS_ROW_UP, hide_cover_rule, marks_bonus

TR = {}
POST = []
WIPES = []


def Q(key, *text_lines, qs=0, ts=1, tail=()):
    """Блок завдання. «Q:» — окремий рядок шаблону (§2.4, правило 2)."""
    TR[key] = {'lines': [[('Q:', qs)]] + [[(t, ts)] for t in text_lines]
               + [[seg] for seg in tail]}


# Табуляція в тексті не переживає перенабору: гліфа `\t` в Arial немає, і
# замість відступу друкується порожній квадратик. У шаблоні вона трапляється
# в переліках («1. \tНазва краю…») — замінюємо пробілами.
def rows(key, *text_lines, s=0):
    """Кілька рядків одного стилю, по одному сегменту на рядок."""
    TR[key] = {'lines': [[(t, s)] for t in text_lines]}


def _centred(text, style, font, size, cx):
    """Рядок, центрований на заданій осі: сегмент із явним `x`."""
    import fitz
    from lessons import FONTFILES
    w = fitz.Font(fontfile=FONTFILES[font]).text_length(text, size)
    return [(text, style, cx - w / 2)]


def header_small(page, block, with_name=False):
    """Шапка сторінок 2–8: bible|time, підпис рівня, номер серії."""
    lines = []
    if with_name:
        lines.append([("Ім'я:", 0)])
    i = 1 if with_name else 0
    lines.append([('bible', i), ('time', i + 1)])
    lines.append([('Рівень 4 — біблійні історії', i + 2)])
    lines.append([('A12', i + 3)])
    TR[f'p{page}b{block}'] = {'lines': lines}


def study(key, n, title, s0=0, s1=1):
    TR[key] = {'lines': [[(f'ТЕМА {n}:', s0), (f' {title}', s1)]]}


# Написи в намальованих боксах центруються на боксі й міряються по його
# правому краю: український напис довший за англійський, а бокс намальований.
# Доти тут стояла тільки права межа, і напис ужимався до 6.7 pt — усередині,
# але помітно дрібніший за сусідній «ЧИТАЙ». Центрування дає 7.7 pt.
KV_BOX = (471.1, 538.1)
READ_BOX = (399.6, 466.7)
BOX_PAD = 1.5


def keyverse(key, *refs, label='ЗОЛОТИЙ ВІРШ:', box=KV_BOX):
    TR[key] = {'lines': [[(label, 0)]] + [[(r, 1)] for r in refs],
               'center': True, 'right': box[1] - BOX_PAD}


def read(key, *refs, box=READ_BOX):
    TR[key] = {'lines': [[('ЧИТАЙ:', 0)]] + [[(r, 1)] for r in refs],
               'center': True, 'right': box[1] - BOX_PAD}


# ═══════════════════════════════════════════════════════════ сторінка 1
TR['p0b0'] = {'lines': [
    [('bible', 0), ('time', 1)],
    [('www.besweb.com', 2)],
    [('Рівень 4 — біблійні історії', 3)],
    [('A12', 4)],
]}
TR['p0b1'] = {'lines': [[('Рівень 4', 0)]]}
rows('p0b2', 'Впиши тут своє імʼя та адресу.', 'Вік:', "Ім'я:", 'Адреса:')
for _i, _t in enumerate(('Вік:', "Ім'я:", 'Адреса:'), start=1):
    TR['p0b2']['lines'][_i][0] = (_t, 1)
rows('p0b3', 'Вчитель:', 'Використовується переклад Біблії Огієнка.')
# Цитата на обкладинці. `center: True` центрує кожен рядок на його
# ДЖЕРЕЛЬНОМУ спані, а вони тут різної довжини й розкидані по всій плашці —
# останній рядок оригіналу («their sins.») стоїть біля самого краю, і
# український рядок, центрований на ньому, вилазив за сторінку. Тому рядки
# центруються на середині плашки, порахованій по шрифту.
_COVER_CX = 443.0
TR['p0b4'] = {'lines': [
    _centred('«І вона вродить Сина, ти ж', 0, 'Arial-BoldMT', 14.0, _COVER_CX),
    _centred('даси Йому ймення Ісус, бо', 0, 'Arial-BoldMT', 14.0, _COVER_CX),
    _centred('спасе Він людей Своїх від', 0, 'Arial-BoldMT', 14.0, _COVER_CX),
    _centred('їхніх гріхів».', 0, 'Arial-BoldMT', 14.0, _COVER_CX),
    _centred('Матвія 1:21', 1, 'ArialMT', 11.0, _COVER_CX),
]}
# У блоці ТЕМИ є службовий уламок «He» під картинкою (s2) — стираємо його
# разом із рештою блока, нічого не малюючи на його місці.
TR['p0b5'] = {'lines': [
    [('ТЕМА 1:', 0), (' Народження Спасителя', 1)],
    [('', 2)],
    [('Звістки ангела', 3)],
]}
keyverse('p0b7', 'Матвія 1:21')
read('p0b9', 'Матвія 1:18-25', 'Луки 1:26-38')
TR['p0b13'] = {'lines': [[('Радимо прочитати також: • 1 Тимофія 1:15 • Євреїв 1:1-3 • 1 Івана 4:14', 0)]]}
TR['p0b14'] = {'flow': (
    'Сьогодні, завдяки сучасним засобам звʼязку, новини про великі події '
    'облітають світ із дивовижною швидкістю. Тож не дивно, що Бог сповістив '
    'про народження Спасителя ще до того, як воно сталося. І зробив Він це '
    'у дуже особливий спосіб!')}
# «1.» і «2.» — окремі рядки шаблону, а не два сегменти одного: якщо злити
# їх в один рядок, другий втрачає свою якірну координату і приклеюється до
# першого («1.2.»). Те саме в p4b20 і p7b13.
TR['p0b15'] = {'lines': [
    [('Q:', 0)],
    [('Назви двох людей, яким Бог сповістив про це у прочитаних уривках.', 1)],
    [('1.', 1)],
    [('2.', 1)],
]}
Q('p0b16', 'Ким ці двоє були одне одному на той час?')
Q('p0b17',
  'Дізнавшись, що його наречена чекає дитину, що надумав зробити',
  'Йосип?')
Q('p0b18', 'Що сказав йому ангел, коли він про це роздумував?')
TR['p0b19'] = {'flow': (
    'Бог навчав Йосипа, що Спаситель, який мав невдовзі народитися, — це '
    'набагато більше, ніж звичайна людина. Тому Він мав увійти в цей світ '
    'у дуже особливий спосіб.')}
Q('p0b20', 'Яке імʼя Йосип мав дати Дитині?')

# ═══════════════════════════════════════════════════════════ сторінка 2
TR['p1b1'] = {'lines': [[('УСЬОГО:', 0)]]}
header_small(1, 2)
Q('p1b7',
  'Памʼятаючи, що це імʼя означає «СПАСИТЕЛЬ», напиши речення, чому воно',
  'дуже добре Йому підходить.')
TR['p1b8'] = {'flow': (
    'У всьому цьому справджувалися Божі обітниці, дані одному з Його пророків '
    'за сотні років до того.')}
Q('p1b9', 'Випиши з вірша 23, що сказав пророк.')
TR['p1b10'] = {'flow': (
    'Коли ангел зʼявився Марії (Луки 1:26-38), він сказав їй багато '
    'дивовижного.')}
Q('p1b11',
  'За цими підказками впиши відповіді в СІТКУ СЛІВ',
  'під номерами 1-7. (Дивись Луки 1:26-38)')
rows('p1b12',
     '1.  Назва краю, де був Назарет.',
     '2.  Місто, у якому жила Марія.',
     '3.  Що сталося з Марією, коли',
     'вона побачила ангела.',
     '4.  Слово, яким названо Спасителя,',
     'що мав народитися.',
     '5.  Це ніколи не скінчиться.',
     '6.  Імʼя, яке Марія мала дати Синові.',
     '7.  Імʼя родички Марії.')
Q('p1b13', 'Напиши імʼя ангела, який зʼявився Марії.')
TR['p1b14'] = {'flow': (
    'Ангелова звістка важлива й для нас сьогодні: кожному з нас треба '
    'спастися від своїх гріхів (дивись золотий вірш). Через велику любов до '
    'нас Бог дав Свого Сина, щоб Він став нашим Спасителем.')}
TR['p1b15'] = {'lines': [
    [('Чи прийняв ти Його для себе, впустивши Його у своє серце й життя?', 0)]]}
# Підказка в стовпчику 3: «ЗА» від ЗАТРИВОЖИЛАСЬ. Два готові блоки стоять
# рівно в перших двох клітинках нового стовпчика, тож переносити нічого не
# треба — лише літери інші, ніж були за Турконяка.
TR['p1b17'] = {'lines': [[('З', 0)]]}
TR['p1b16'] = {'lines': [[('А', 0)]]}
# Номери стовпчиків малює `draw_cols` — старі прибираємо.
for _k in (18, 19, 20):
    TR[f'p1b{_k}'] = {'drop': True}

# ═══════════════════════════════════════════════════════════ сторінка 3
header_small(2, 1, with_name=True)
study('p2b2', 2, 'Народження Спасителя')
TR['p2b3'] = {'lines': [[('Наказ імператора', 0)]]}
keyverse('p2b5', 'Луки 2:7')
read('p2b7', 'Луки 2:1-7')
rows('p2b13',
     'Радимо прочитати також: • Приповідок 21:1 • Даниїла 4:34 і 35',
     '• Филипʼян 2:5-7')
TR['p2b14'] = {'flow': (
    'Багато років великою Римською імперією правили один за одним дуже '
    'могутні імператори, яких звали «кесарями». Кожен кесар жив у Римі, в '
    'імператорському палаці, за багато сотень кілометрів від маленької '
    'країни, де жили юдеї.')}
Q('p2b15',
  'Напиши імʼя кесаря, який був при владі',
  'у час народження Господа Ісуса.')
TR['p2b16'] = {'flow': (
    'Щоб збирати податки зі своїх підданих, він звелів, аби всі пройшли '
    'перепис. І видав наказ, або указ.')}
Q('p2b17', 'Заповни пропуски в цьому', 'уявному указі.')
TR['p2b18'] = {'flow': (
    'Щоб виконати наказ імператора, люди мали повернутися туди, де '
    'народилися. Біблійний текст розповідає про ДВОХ людей, яким довелося '
    'вирушити в таку дорогу.'), 'right': 282.0}
Q('p2b19', 'Як їх звали?')
rows('p2b20', '1.', '2.')
TR['p2b21'] = {'lines': [[('Q:', 0)], [('Познач на карті:', 1)]]}
rows('p2b22',
     '1.',
     'Місце (2) і край (1), звідки вони',
     'вирушили.',
     '2.',
     'Місце (4) і край (3), куди вони',
     'прийшли.')
Q('p2b23',
  'Від якого славетного царя в юдейській',
  'історії Йосип вів свій рід?')
TR['p2b24'] = {'lines': [[('Цьому цареві Бог дав чудові обітниці.', 0)]]}
TR['p2b25'] = {'lines': [[('Земля Ізраїлю', 0)]]}
# Карта: підказкова літера в кожній назві своя, бо українські слова коротші
# за англійські. ГАЛІЛЕЯ, НАЗАРЕТ, ЮДЕЯ, ВИФЛЕЄМ.
TR['p2b26'] = {'lines': [[('2.  _ _ _ _ Р _ _', 0)]]}
TR['p2b27'] = {'lines': [[('4.  _ _ Ф _ _ _ _', 0)]]}
TR['p2b28'] = {'lines': [
    [('1.  Г _ _ І _ _ _', 0)],
    [('Середземне', 0)],
    [('море', 0)],
]}
rows('p2b29', 'Мертве', 'море')
# ЮДЕЯ: підказкова літера — перша, а не друга. Один самотній «_» перед
# літерою полем не стає (детектор рахує пропуском лише два підкреслення й
# більше), тож у інтерактиві перша літера була б невводимою.
TR['p2b30'] = {'lines': [[('3.  Ю _ _ _', 0)]]}
TR['p2b31'] = {'lines': [[('80 км', 0)]]}
# Шапка указу центрується по ПЛОСКІЙ частині свитка, між двома завитками.
# Обміряно по самому малюнку: лівий завиток 287.5…330.3, правий
# 469.9…501.5 — отже плоска частина 330.3…469.9, її середина 400.1.
#
# Спершу стояло 396 і кегль 9: напис виходив завширшки 131 pt, тобто впритул
# до завитків, і перша літера торкалася лівого. Редактор це помітив. Кегль
# 8.5 дає 124 pt — по 8 pt просвіту з кожного боку.
#
# «З», а не «ІЗ»: перед голосною милозвучним є саме «з»
# («з імператорського палацу»). Правка Редактора.
_DECREE_CX = 400.0
TR['p2b32'] = {'lines': [
    _centred('З', 0, 'Arial-BoldMT', 6.0, _DECREE_CX),
    {'segs': _centred('ІМПЕРАТОРСЬКОГО ПАЛАЦУ', 1, 'Arial-BoldMT', 8.5,
                      _DECREE_CX), 'size': 8.5},
], 'right': 480.0}
TR['p2b33'] = {'lines': [[('            у ______________________', 0)]]}
TR['p2b34'] = {'lines': [[('          До _____________________', 0)]]}
TR['p2b35'] = {'lines': [[('      Наказую ______________', 0)]]}
TR['p2b36'] = {'lines': [[('       _____________________', 0)]]}
TR['p2b37'] = {'lines': [[('     ______________________', 0)]]}
TR['p2b38'] = {'lines': [[(' Підписав _________________', 0)]]}
# Підпис під рядком «До ____» опущено на 3 pt: в оригіналі він стоїть майже
# впритул до підкреслень, і поле вводу на цей рядок не ставилося — детектор
# бачив у ньому друкований текст і пропускав (один бал з чотирьох).
TR['p2b39'] = {'lines': [{'segs': [('НАМІСНИК СИРІЇ', 0)], 'y': 441.9}]}

# ═══════════════════════════════════════════════════════════ сторінка 4
TR['p3b1'] = {'lines': [[('УСЬОГО:', 0)]]}
header_small(3, 2)
Q('p3b8', 'Випиши, що Бог сказав цьому цареві у 2 Самуїла 7:16.')
TR['p3b9'] = {'lines': [[('Усі ці обітниці зрештою справдяться в Господі Ісусі.', 0)]]}
Q('p3b10',
  'Поміркуй, чому та подорож (близько 110 кілометрів) була б важкою',
  'для Марії.')
TR['p3b11'] = {'flow': (
    'Ми ніколи не повинні забувати, що за всіма цими подіями стояла сила, '
    'більша за силу кесаря. Сам Бог тримав усе у Своїх руках, коли '
    'наближалася велика мить приходу Божого Сина у світ. За сотні років до '
    'того Бог через Свого пророка Михея сповістив, що Спаситель народиться '
    'у Вифлеємі.'), 'right': 285.0}
Q('p3b12', 'Знайди Михея 5:2 і випиши цей вірш.')
TR['p3b13'] = {'flow': (
    'Кесар Август у далекому Римі й гадки не мав, як Бог використовує його '
    'указ, щоб Господь Ісус народився у Вифлеємі — саме так, як Бог і '
    'визначив. Спаситель народився не лише в потрібному місці, а й у '
    'потрібний час. Бог так влаштував світові події, щоб час народження '
    'Спасителя був якраз слушний!')}
Q('p3b14', 'Випиши, що про це говорить Галатів 4:4.')
TR['p3b15'] = {'lines': [
    [('Біблійний текст дуже просто й прямо розповідає, що сталося у Вифлеємі.', 0)]]}
Q('p3b16',
  'Прочитай ще раз Луки 2, вірші 6 і 7. Випиши золотий вірш, ПІДКРЕСЛИВШИ',
  'слова, які показують, чому Його поклали в ясла.')
TR['p3b17'] = {'flow': (
    'Велика подія сталася. Божий Син зійшов із неба, став справжньою людиною '
    'і помер за наші гріхи. Сьогодні Він може і хоче спасти кожного, хто Йому '
    'довіриться. Тож подбаймо, щоб у наших серцях і в нашому житті знайшлося '
    '«місце» для Нього.')}

# ═══════════════════════════════════════════════════════════ сторінка 5
header_small(4, 1, with_name=True)
study('p4b2', 3, 'Народження Спасителя')
TR['p4b3'] = {'lines': [[('Відвідини пастухів', 0)]]}
keyverse('p4b5', 'Луки 2:11')
read('p4b7', 'Луки 2:8-20')
TR['p4b15'] = {'lines': [
    [('Радимо прочитати також: • Івана 5:24 • 2 Коринтян 6:2', 0)]]}
TR['p4b16'] = {'flow': (
    'Щасливе народження дитини — це зазвичай привід для радості. Новина '
    'швидко розходиться, і невдовзі приходять гості з побажаннями, а може, '
    'і з подарунком.')}
Q('p4b17', 'Хто, за біблійним текстом, першим прийшов до Немовляти Ісуса?')
Q('p4b18', 'Як вони дізналися про Його народження?')
Q('p4b19', 'Що вони робили, коли їх застала звістка про Його народження?')
TR['p4b20'] = {'lines': [
    [('Q:', 0)],
    [('Уважно прочитай слова ангела і знайди в них ТРИ ТИТУЛИ,', 1)],
    [('якими він назвав Ісуса. Випиши їх нижче.', 1)],
    [('1.', 1)],
    [('2.', 1)],
    [('3.', 1)],
]}
Q('p4b21',
  'Ось ЗНАЧЕННЯ цих трьох титулів, але вони в НЕПРАВИЛЬНОМУ порядку.',
  'Впиши в клітинки номер титулу, який відповідає значенню.')
rows('p4b22',
     'Найвищий Володар.',
     'Визволитель, або Рятівник від гріха.',
     'Месія, або Помазаник.')
Q('p4b23',
  'Ангел дав пастухам ДВІ прикмети, за якими вони могли знайти Немовля.',
  'Які саме?')
TR['p4b24'] = {'flow': (
    'Щойно ангел закінчив свою звістку, до нього раптом долучилося велике '
    'воїнство небесних вісників.')}
Q('p4b25', 'Випиши, що вони сказали.')

# ═══════════════════════════════════════════════════════════ сторінка 6
TR['p5b1'] = {'lines': [[('УСЬОГО:', 0)]]}
header_small(5, 2)
TR['p5b8'] = {'lines': [
    [('Розповідь про відвідини пастухів має ТРИ важливі уроки для нас сьогодні:', 0)]]}
TR['p5b9'] = {'lines': [
    [('1. Як важливо ПОЧУТИ про Спасителя.', 0)],
    [('Якби вони не почули про Нього, то ніколи не прийшли б Його побачити!', 1)],
    [('Для нас це так само важливо.', 1)],
]}
Q('p5b10',
  'Подивись, що Римлян 10:17 каже про слухання Божого Слова (тобто Біблії).',
  'Випиши цей вірш.')
TR['p5b11'] = {'lines': [
    [('2. Як важливо ПРИСЛУХАТИСЯ до почутого.', 0)],
    [('Пастухи вчинили за тим, що почули.', 1)],
]}
Q('p5b12',
  'Випиши з Луки 2:15, що вони сказали одне одному, коли ангели відійшли.')
TR['p5b13'] = {'flow': (
    'Нам теж треба зважати на те, що каже Бог. Чути й не зважати — це ніколи '
    'не приведе нас на небо!')}
Q('p5b14', 'Чого, за Євреїв 2:3, ми не повинні залишати без уваги?')
TR['p5b15'] = {'lines': [
    [('3. Як важливо ПОСПІШИТИ зробити те, що Бог каже.', 0)]]}
Q('p5b16',
  'Який вислів у вірші 16 біблійного тексту показує, що пастухи',
  'НЕ ГАЯЛИ ЧАСУ, вирушаючи до Вифлеєма?')
TR['p5b17'] = {'flow': (
    'Є багато причин, чому не варто зволікати з довірою до Господа Ісуса. '
    'Ми всі знаємо, яке непевне наше земне життя, а Біблія навчає, що прихід '
    'Господа Ісуса вже близько. Тож не змарнуймо нагоди прийти до Господа '
    'Ісуса і зробити Його своїм Господом і Спасителем.'), 'right': 334.0}
Q('p5b18', 'Випиши, що сказав Господь Ісус у Луки 13:24.')

# ═══════════════════════════════════════════════════════════ сторінка 7
header_small(6, 1, with_name=True)
study('p6b2', 4, 'Народження Спасителя')
TR['p6b3'] = {'lines': [[('Дари мудреців', 0)]]}
keyverse('p6b5', 'Матвія 2:11')
read('p6b7', 'Матвія 2:1-23')
TR['p6b11'] = {'lines': [
    [('Радимо прочитати також: • 1 Хронік 29:9-17 • Луки 21:1-4', 0)]]}
# Перший рядок обходить картинку (x = 119.4), тому блок набирається рядками,
# а не потоком: потік почав би від лівого краю бокса й наїхав на ілюстрацію
# (§2.4a).
TR['p6b12'] = {'lines': [
    [('Згодом до Господа Ісуса прийшли інші відвідувачі. Їх часто', 0)],
    [('називають «мудрецями», або «волхвами». Це були люди, які вивчали зорі,', 0)],
    [('уважно стежачи за їхнім рухом небом. На відміну від пастухів, вони прийшли здалеку.', 0)],
]}
TR['p6b13'] = {'lines': [
    [('Q:', 0)],
    [('Впиши на дороговказі,', 1)],
    [('звідки вони прийшли і до', 1)],
    [('якого міста потрапили', 1)],
    [('спершу.', 1)],
]}
Q('p6b14', 'Що вело їх у цій довгій подорожі?')
TR['p6b15'] = {'flow': (
    'Прийшовши до міста, вони запитали: «Де народжений Цар Юдейський?» Це '
    'запитання дуже стривожило царя, який тоді правив.')}
Q('p6b16', 'Хто був той цар?')
Q('p6b17', 'Як він відреагував?')
TR['p6b18'] = {'flow': (
    'Щоб знайти відповідь на запитання мудреців, цар покликав знавців давніх '
    'юдейських Писань (які ми звемо «Старим Заповітом»).')}
Q('p6b19', 'Яку відповідь вони змогли дати цареві?')
Q('p6b20', 'Випиши вірш (із пророка Михея), на якому вони цю відповідь заснували.')
TR['p6b21'] = {'flow': (
    'Довідавшись про це, мудреці подолали ще близько десяти кілометрів до '
    'Вифлеєма. Там, у домі, вони знайшли Дитятко з Марією та Йосипом. Вони '
    'поклонилися Йому й піднесли Йому свої дорогоцінні скарби.')}

# ═══════════════════════════════════════════════════════════ сторінка 8
TR['p7b0'] = {'lines': [[('Бали', 0), (' (вписує вчитель)', 1)]]}
for _i in range(1, 5):
    TR[f'p7b{_i}'] = {'lines': [[(f'ТЕМА {_i}:', 0)]]}
# «Разом» переїхало на порожній рядок вище; на його місце
# `marks_bonus()` домальовує «Додаткові бали» (див. lessons.py).
TR['p7b5'] = {'lines': [{'segs': [('Разом', 0)], 'y': MARKS_ROW_UP}]}
TR['p7b6'] = {'lines': [[('Загалом', 0)]]}
rows('p7b7', 'Коментар учителя:', 'Надішли свої уроки на адресу:')
TR['p7b8'] = {'lines': [[('УСЬОГО:', 0)]]}
TR['p7b9'] = {'lines': [
    [('©', 0), (' Bible Educational Services. Відвідай ', 1), ('www.besweb.com', 2),
     (' або телефонуй +44 (0) 28 6632 2462.', 1)],
    [('Registered Charity UK CIO 1186004', 1)],
    [('РІВЕНЬ 4 A12', 3)],
    [('12/2025', 4)],
]}
TR['p7b13'] = {'lines': [
    [('Q:', 0)],
    [('Які дари вони Йому піднесли?', 1)],
    [('1.', 1)],
    [('2.', 1)],
    [('3.', 1)],
]}
Q('p7b14', 'За цими підказками заповни сітку слів.')

# ── акростих ──────────────────────────────────────────────────────────────
# Оригінал складає по перших літерах TREASURES (скарби). Українською слово
# з тими самими дев'ятьма відповідями не збирається: перші літери задані
# самими словами, і жодне осмислене слово в них не лягає. Тож бралося з
# іншого боку — спершу слово, потім підказки під нього. Слово ПОДАРУНОК теж
# із дев'яти літер (бали /9 лишаються ті самі) і теж по темі: тема
# називається «Дари мудреців». Усі дев'ять відповідей — з Матвія 2:1-23,
# як і в оригіналі; п'ять підказок збігаються з англійськими.
ACROSTIC = [
    ('П', 'ПИСАННЯ',   'Інша назва Біблії — «Святі …………».'),
    ('О', 'ОСТЕРЕЖЕННЯ', 'Те, що мудреці отримали уві сні, вклонившись '
                         'Дитятку. (вірш 12)'),
    ('Д', 'ДОРОГОЮ',   'Мудреці повернулися додому іншою .............. .'),
    ('А', 'АРХЕЛАЙ',   'Син Ірода, який почав царювати в Юдеї замість батька.'),
    ('Р', 'РАМА',      'Пророк Єремія писав про великий плач у цьому місці.'),
    ('У', 'УВІЙШЛИ',   'Що зробили мудреці, коли дійшли до оселі. (вірш 11)'),
    ('Н', 'НАЗАРЕТ',   'Місто, де оселилася родина, повернувшись із Єгипту.'),
    ('О', 'ОКОЛИЦІ',   'Ірод звелів повбивати дітей у Віфлеємі та по всій '
                       'тій ………… . (вірш 16)'),
    ('К', 'КНИЖНИКИ',  'Знавці Писань, яких Ірод покликав до себе.'),
]
TR['p7b15'] = {'lines': [
    [(letter, 0), (' = ', 1), (clue, 1)] for letter, _w, clue in ACROSTIC]}
for _i, (_letter, _w, _c) in enumerate(ACROSTIC):
    TR[f'p7b{16 + _i}'] = {'lines': [[(_letter, 0)]]}

TR['p7b25'] = {'flow': (
    'Підносячи Господу Ісусові свої коштовні дари, мудреці показували, як '
    'високо вони Його цінують. Бог навчив їх, який ОСОБЛИВИЙ цей '
    'новонароджений Цар, і вони знали, що Він гідний найкращих скарбів, '
    'які в них були.')}
TR['p7b26'] = {'flow': (
    'Кожен із нас має запитати себе: наскільки дорогий Він МЕНІ? Чи високо я '
    'Його ціную? Чи справді Він МІЙ Спаситель і МІЙ Господь?')}
Q('p7b27', 'Обміркувавши ці запитання, випиши Римлян 12:1.')


# ═══════════════════════════════════════════════ сітки слів
#
# Обидві сітки намальовані векторами під англійські довжини слів, тому
# переносяться не координати, а механіка (§2.6): стару сітку закриваємо,
# нову малюємо під українські відповіді.
from puzzlekit import cover, draw_cols, draw_rows                 # noqa: E402

BLUE = (0.18799, 0.33500, 0.63799)      # фірмовий колір рівня 4, як у сітках

# Стор. 2, Луки 1:26-38 — відповіді пишуться згори вниз.
#
# Слова взяті з ОГІЄНКА, вірш за віршем. Спершу сітку зібрали під
# Турконяка, і два слова з семи не збіглися — Редактор це помітив:
#   3. «Вона ж ЗАТРИВОЖИЛАСЬ словом» (1:29) — було СТРИВОЖЕНА, 10 літер;
#   5. «ЦАРЮВАННЮ Його не буде кінця» (1:33) — було ЦАРСТВО, 7 літер.
# Довжини змінилися, тож стовпчики перемальовано, а не просто переписано.
#
#   1 ГАЛІЛЕЯ (7)       «у галілейське місто… Назарет» (1:26)
#   2 НАЗАРЕТ (7)       там само
#   3 ЗАТРИВОЖИЛАСЬ (13) «Вона ж затривожилась словом» (1:29)
#   4 ВЕЛИКИЙ (7)       «Він же буде Великий» (1:32)
#   5 ЦАРЮВАННЯ (9)     «царюванню Його не буде кінця» (1:33)
#   6 ІСУС (4)          «даси Йому ймення Ісус» (1:31)
#   7 ЄЛИСАВЕТА (9)     «твоя родичка Єлисавета» (1:36)
P2_LENGTHS = [7, 7, 13, 7, 9, 4, 9]
P2_AT = (377.5, 473.3)                  # початок старої сітки, крок той самий
P2_CELL = 16.01

# Стор. 8, акростих ПОДАРУНОК: перша клітинка кожного рядка вже з літерою.
P8_LENGTHS = [len(w) for _l, w, _c in ACROSTIC]
P8_AT = (189.3, 237.0)
P8_CELL = 18.84

COVERS = {
    1: [(370.0, 452.0, 494.0, 670.0)],          # стовпчикова сітка + номери
    7: [(186.0, 233.0, 400.0, 410.0)],          # акростих
}


def apply_covers(page):
    """Закрити стару графіку ДО набору тексту (§2.1, правило 1)."""
    if page.number == 0:
        hide_cover_rule(page, wipes=WIPES)
    rects = COVERS.get(page.number)
    if rects:
        cover(page, rects, WIPES)


def _draw_puzzles(doc, only=None):
    def want(pno):
        return only is None or pno in only

    if only is None:
        marks_bonus(doc[7])   # рядок «Додаткові бали»

    if want(1):
        draw_cols(doc[1], P2_AT, P2_CELL, P2_LENGTHS, BLUE)
        print(f'  стор. 2: {len(P2_LENGTHS)} стовпчиків, найдовший {max(P2_LENGTHS)}')
    if want(7):
        draw_rows(doc[7], P8_AT, P8_CELL, P8_LENGTHS, BLUE, numbers=False)
        print(f'  стор. 8: акростих {"".join(l for l, _w, _c in ACROSTIC)}, '
              f'найдовше слово {max(P8_LENGTHS)}')


POST.append(_draw_puzzles)


# ═══════════════════════════════════════════════ поля, яких геометрія не бачить
#
# «Впиши на дороговказі, звідки вони прийшли і до якого міста потрапили
# спершу» — дитина пише просто на двох стрілках дороговказу. Порожніх рамок
# там немає, тож детектор не мав за що зачепитися і ставив завданню чекбокс
# «виконано» — тобто два бали ставали невиконуваними. Стрілки обміряні по
# рендеру сторінки.
EXTRA_FIELDS = [
    {'page': 6, 'task': 1, 'type': 'text', 'rect': [254.0, 277.0, 349.0, 299.0]},
    {'page': 6, 'task': 1, 'type': 'text', 'rect': [392.0, 277.0, 474.0, 299.0]},
]

# ═══════════════════════════════════════════════ цитати, які звіряються
#
# `quotes_check.py` бере текст названого блока й порівнює з Огієнком
# дослівно. Прощається лише оформлення — лапки, розриви рядків, крапка
# наприкінці; жодне слово не прощається.
QUOTES = [
    ('p0b4', 'Матвія 1:21'),
    ('p6b15', 'Матвія 2:2', 'Де народжений Цар Юдейський?'),
]
