/*
 * Тема вёрстки книжных страниц "default" — фолбэк, если у книги не задана
 * или не найдена своя тема (books_own.layout_theme). Подключается только
 * на страницах конкретной книги (views/redesign/text/pub-book-read*.php),
 * не глобально. Классы .dropcap/.smcap/.gesp/.xsm расставляет Pandoc
 * (admin.borisey.ru pandoc/site-markdown.lua) — здесь только их визуальное
 * оформление. Владелец, 2026-10-11: "сделать красивую... буквицу...
 * уникальную оригинальную верстку".
 *
 * Новая тема — отдельный файл web/css/book-themes/<slug>.css с теми же
 * классами (можно переопределить любое правило) + books_own.layout_theme=<slug>.
 */

/* .dropcap — владелец, 2026-10-12: "вижу две буквицы... одна была
   изначально установлена, а вторую мы добавили самостоятельно... оставь
   одну, вторую убери". Сайт уже рисует буквицу автоматически для первого
   абзаца любого .prose через ::first-letter (components.css,
   alexeyborisov.ru#246) — наш явный span.dropcap (Pandoc оборачивает
   первую букву главы) получал ВТОРОЕ, дублирующее оформление поверх
   этого. Правило .book-prose .dropcap убрано — буква остаётся обычным
   текстом внутри span, сайтовый ::first-letter рисует единственную
   буквицу сам. */

.book-prose .smcap {
    font-variant-caps: small-caps;
    letter-spacing: 0.02em;
}

/* .gesp — владелец, 2026-10-12: "и вторая буква... сделана в виде
   буквицы... так не годится. Оставить ту, которая была" — убрано
   кастомное оформление (letter-spacing делал "HE" после "T" похожим на
   вторую буквицу), текст рендерится как обычный, без надстройки. */

.book-prose .xsm {
    font-size: 0.85em;
}

.book-prose {
    font-family: var(--font-serif, Georgia, serif);
    font-size: 1.05rem;
    line-height: 1.7;
}

/* Общие стили страницы могут сбрасывать отступы у <p>. Для книжного
   ридера абзацный интервал — часть разметки издания, поэтому задаём его
   явно, не полагаясь на Bootstrap или тему сайта. */
.book-prose > p {
    margin: 0 0 1.25rem;
}

.book-prose > p:last-child {
    margin-bottom: 0;
}

.book-prose h1,
.book-prose h2,
.book-prose h3 {
    font-family: var(--font-display, Georgia, serif);
}

.book-prose sup {
    line-height: 0;
}

/* .para-anchor — permalink на нумерованный пункт (владелец, 2026-10-13:
   "можем каждый параграф выводить на самостоятельной отдельной
   странице?" → решено дать якорь-ссылку вместо отдельных страниц, см.
   ConverterService::anchorNumberedParagraphs). Невидим, пока не наведён
   курсор на сам абзац — не отвлекает при обычном чтении. scroll-margin-top
   компенсирует фиксированную шапку сайта при переходе по #p<N>. */
.book-prose [id^="p"] {
    scroll-margin-top: 90px;
}

.book-prose .para-anchor {
    opacity: 0;
    text-decoration: none;
    margin-right: 0.3em;
    color: var(--accent-bright, inherit);
    transition: opacity 0.15s ease;
}

.book-prose p:hover > .para-anchor,
.book-prose .para-anchor:focus {
    opacity: 1;
}

/* .page-break — кадр скана оригинала (владелец, 2026-11-08: номера кадров
   нельзя выдавать за печатные страницы издания). Это permalink на границу
   страницы PDF-скана, см.
   ConverterService::anchorPageBreaks. В отличие от .para-anchor, видим
   всегда (приглушённо) — это справочная информация о положении в
   оригинале, не инструмент только для цитирования.
   Владелец, 2026-10-13 (тот же день, два уточнения подряд): сначала
   "страницы должны отображаться отдельно от сносок... сделать какой-то
   разделитель" (не superscript), затем — "почему номер страниц в
   предложении? почему не перенести на новую строку... чтобы чётко
   знать, где началась и закончилась 35-я страница? сейчас всё равно
   похоже на сноску". Разрыв страницы в оригинале часто приходится на
   середину предложения (сам текст при этом НЕ меняем — абзац остаётся
   одним целым в DOM/данных, это сугубо отображение), поэтому .page-break
   — `display: block` вместо прежнего "чипа" внутри строки: номер
   страницы оказывается на собственной строке, между тонкими линиями
   слева и справа, как разделитель страниц в факсимильных изданиях. */
.book-prose .page-break {
    display: flex;
    align-items: center;
    margin: 0.5em 0;
    color: var(--text-muted, #999);
}

.book-prose .page-break::before,
.book-prose .page-break::after {
    content: "";
    flex: 1 1 auto;
    border-top: 1px solid var(--border, #ccc);
}

.book-prose .page-break-label {
    font-family: var(--font-sans, sans-serif);
    font-size: 0.75em;
    font-weight: 600;
    color: var(--text-muted, #999);
    user-select: none;
    margin: 0 0.6em;
    white-space: nowrap;
}

/* .book-back-to-top — владелец, 2026-10-13: "кнопка JS удобная, которая
   бы перемещала пользователя к оглавлению... тяжело так долго листать" —
   плавающая кнопка возврата наверх страницы (где живут блоки "Разделы"/
   "Пункты"/"Страницы оригинала"), см. js/redesign/book-back-to-top.js.
   Появляется только после прокрутки (скрипт переключает [hidden]). */
.book-back-to-top {
    position: fixed;
    right: 20px;
    bottom: 20px;
    z-index: 1000;
    font-family: var(--font-sans, sans-serif);
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--bg, #fff);
    background: var(--accent-bright, #333);
    border: none;
    border-radius: 999px;
    padding: 0.6em 1.1em;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
    cursor: pointer;
}

.book-back-to-top:hover,
.book-back-to-top:focus {
    opacity: 0.9;
}
