/*
    Стопка листов документа на публичной странице работы.

    Каждый лист А4 (.tl-a4-page.doc-stack__sheet) — position: sticky с двумя
    ограничителями сразу. Нижний (bottom, отрицательный на высоту листа минус
    «выглядывание») держит ещё не прочитанные листы у нижнего края окна
    стопкой: каждый следующий выглядывает на шаг меньше предыдущего, и по
    кромкам видно, сколько листов осталось. Верхний (top) держит прочитанный
    лист под шапкой — следующий выезжает из стопки и накрывает его (z-index
    растёт с номером). Прочитанные листы лежат с тем же шагом, поэтому
    сверху собирается такая же стопка уже прочитанного, а лист с двумя
    стопками всегда ровно заполняет окно.

    Лист уменьшается до высоты, при которой он вместе с обеими стопками
    помещается под шапкой, — но не трансформацией, а по-настоящему: коробка
    меньше, внутренние отступы ужаты пропорционально (--doc-k), а шрифты
    ужимаются лишь до нижней границы, чтобы текст оставался читаемым.
    Делить длины в CSS нельзя, поэтому размер, коэффициент и номера листов
    ставит скрипт из front._partials.doc-stack — он же включает стопку
    классом .doc-stack--ready. Без него листы идут обычным потоком.

    Разметка: колонка .doc-stack (она же контейнер для sticky), в ней прямо
    лежит титульный лист, а все остальные — в обёртке .doc-stack__rest.
    Sticky-элемент не может подняться выше начала своего контейнера,
    поэтому стопка появляется только из-под нижнего края титульного, а не
    висит у нижнего края окна с самого верха страницы, где до листов ещё
    далеко. У типов без титульного (маркетинговая стратегия и т.п.) в
    обёртке лежат все листы — стопка появляется вместе с первым из них.

    На телефоне (≤768px) листы не похожи на листы — без рамки, тени и
    фиксированной высоты (style-inner.css), — стопка там не включается.
*/
@media (min-width: 769px) {
    .doc-stack--ready {
        /* На сколько выглядывает каждый следующий лист из стопки: кромки
           едва заметны, сама стопка почти не отнимает места у листа.
           Та же величина в скрипте — он по ней считает размер листа */
        --doc-step: 4px;
    }

    .doc-stack--ready .doc-stack__sheet {
        /* Сколько выглядывает этот лист, пока лежит в стопке внизу */
        --doc-peek: calc((var(--doc-n) - var(--doc-i)) * var(--doc-step));

        position: sticky;
        top: calc(var(--doc-top) + var(--doc-i) * var(--doc-step));
        bottom: calc(var(--doc-peek) - var(--doc-h));
        z-index: calc(var(--doc-i) + 1);
        /* Размер под окно — ставит скрипт */
        width: var(--doc-w);
        height: var(--doc-h);
        padding: calc(20mm * var(--doc-k));
        /* Просвет между листами в потоке: пока он не пройден, прочитанный
           лист лежит один, и только потом следующий выезжает из стопки */
        margin: 0 auto 20vh !important;
        box-shadow: none;
    }

    /* Титульный: в нижней стопке он не лежит — до него страница идёт обычным
       потоком, иначе его кромка торчала бы у нижнего края окна с самого
       открытия страницы. Контейнер остальных листов начинается прямо под
       его нижней кромкой, чтобы стопка выглядывала именно из-под него.
       Пауза перед вторым листом — распоркой внутри обёртки, а не отступом
       титульного */
    .doc-stack--ready > .doc-stack__sheet {
        bottom: auto;
        margin-bottom: 0 !important;
    }

    .doc-stack--ready .doc-stack__rest {
        /* Отступы листов внутри не схлопываются наружу: конец обёртки
           совпадает с концом колонки, и титульный уезжает вместе со всеми */
        display: flow-root;
    }

    .doc-stack--ready > .doc-stack__sheet + .doc-stack__rest::before {
        content: '';
        display: block;
        height: 20vh;
    }

    /* Последний лист (обычно список литературы) — без нижнего отступа. Sticky
       не выпускает лист за границу контейнера вместе с его margin, и в конце
       страницы последний лист останавливался на 20vh выше низа колонки, а
       титульный, у которого отступа нет, доходил до самого низа и выглядывал
       из-под стопки. Просвет до подвала — отступом самой колонки: она
       flex-элемент, отступ обёртки внутри неё не схлопнулся бы наружу, и
       титульный снова опускался бы ниже остальных */
    .doc-stack--ready .doc-stack__rest > .doc-stack__sheet:last-child {
        margin-bottom: 0 !important;
    }

    .doc-stack--ready {
        margin-bottom: 20vh;
    }

    /* --- Титульный лист --- */
    .doc-stack--ready .tl-a4-page-main {
        gap: calc(30mm * var(--doc-k));
    }

    .doc-stack--ready .doc-stack__sheet .tl-heading-h1 {
        font-size: max(1.5rem, 2.5rem * var(--doc-k));
    }

    .doc-stack--ready .doc-stack__sheet .tl-heading-h2 {
        font-size: max(1.2rem, 1.8rem * var(--doc-k));
    }

    .doc-stack--ready .doc-stack__sheet .tl-heading-h3 {
        font-size: max(1.05rem, 1.5rem * var(--doc-k));
    }

    .doc-stack--ready .doc-stack__sheet .tl-heading-h4 {
        font-size: max(0.95rem, 1.2rem * var(--doc-k));
    }

    .doc-stack--ready .doc-stack__sheet .tl-details-row {
        margin-bottom: calc(1rem * var(--doc-k));
    }

    /* --- Содержание --- */
    .doc-stack--ready .tl-a4-page-contents h2 {
        font-size: max(1.4rem, 2rem * var(--doc-k));
        margin-bottom: calc(25mm * var(--doc-k));
    }

    .doc-stack--ready .doc-stack__sheet .tl-contents-item {
        font-size: max(0.95rem, 1.1rem * var(--doc-k));
    }

    /* --- Закрытый раздел --- */
    .doc-stack--ready .doc-stack__sheet .tl-locked-page-main-heading {
        top: calc(20mm * var(--doc-k));
        font-size: max(1.3rem, 2.2rem * var(--doc-k));
    }

    .doc-stack--ready .doc-stack__sheet .tl-lock-centered-icon-container .lock-icon {
        font-size: max(3rem, 5rem * var(--doc-k));
    }

    /* Плашка спозиционирована абсолютно с left: 50% — без явной ширины она
       ужимается до половины листа, и на уменьшенном листе описание идёт
       узким столбиком с рваной выключкой, налезая на заголовок */
    .doc-stack--ready .doc-stack__sheet .tl-overlay-locked-content-v2 {
        width: 86%;
    }

    /* Описание раздела — основной текст закрытого листа, его не ужимаем,
       а наоборот чуть увеличиваем относительно обычных 0.8rem */
    .doc-stack--ready .doc-stack__sheet .tl-overlay-locked-content-v2 p {
        font-size: 0.9rem;
    }

    /* --- Список литературы (library-page) --- */
    /* В style-inner.css у этого листа высота по содержимому, но в стопке все
       листы одной высоты — иначе кромки разъедутся. Длинный список
       прокручивается внутри листа */
    .doc-stack--ready .tl-a4-page-library {
        min-height: 0;
        overflow-y: auto;
    }

    .doc-stack--ready .doc-stack__sheet .tl-library-list {
        font-size: max(0.9rem, 1.05rem * var(--doc-k));
    }

    .doc-stack--ready .doc-stack__sheet .tl-library-item {
        margin-bottom: calc(0.6rem * var(--doc-k));
    }

    /* Диаграмма раздела не должна вытолкнуть описание за края листа
       (ширина 80% стоит у картинки в атрибуте style) */
    .doc-stack--ready .doc-stack__sheet .tl-overlay-locked-content-v2 img {
        width: auto !important;
        max-width: 80%;
        max-height: calc(var(--doc-h) * 0.3);
    }
}
