/* ==========================================================================
   print.css — как приложение выглядит на бумаге и в PDF
   --------------------------------------------------------------------------
   ЗАЧЕМ. В предпросмотре печати владелец увидел то, чего там быть не должно:
   поверх страницы модальное окно «Добро пожаловать», внизу cookie-баннер,
   слева каркас меню, а оранжевые кнопки — пустыми плашками. Последнее —
   классика печати: белый текст на цветной заливке исчезает, когда браузер
   печатает без фоновой графики.

   Печать здесь не «на всякий случай»: смету, отчёт по объекту, КП и акт
   сохраняют в PDF, и то, что видно на бумаге, становится документом.

   ЧЕГО ЗДЕСЬ НАМЕРЕННО НЕТ. Первая версия правила содержала
   `* { position: static }` и `[class*="grid"] { display: block }` — и разнесла
   кабинет: он построен на абсолютном позиционировании, декоративные круги
   уехали в центр листа, колонки схлопнулись. Универсальные правила по всем
   элементам на печати опаснее, чем на экране: проверить результат глазами
   труднее, а увидит его сразу клиент. Поэтому ниже — точные адреса.

   Подключается один раз в `_partials/favicons.html`: этот partial включён во
   все головы (кабинет, лендинги, журнал), поэтому правило работает на всём
   продукте, а не на трёх страницах.
   ========================================================================== */

@media print {

    /* ---------- 1. Бумага ---------- */

    html,
    body {
        background: #fff !important;
        background-image: none !important;
        color: #000 !important;
    }

    /* ---------- 2. Что не печатаем ----------
       Навигация, оверлеи и всё, что просит действия: нажать это на бумаге
       нельзя, а место оно занимает. */

    nav,
    aside,
    .navbar,
    .landing-navbar,
    .os-nav,
    .os-rail,
    .sidebar,
    .app-sidebar,
    .mobile-nav,
    .bottom-nav,
    .modal,
    .modal-backdrop,
    .occ-modal,
    .toast,
    .toast-container,
    .float-fab,
    .float-fab-stack,
    .float-chat-single,
    .exit-popup,
    #cookieBanner,
    .cookie-banner,
    .occ-hint,
    .occ-guide,
    .occ-guide-fab,
    #occGuideOverlay,
    #welcomeModal,
    [class*="onboarding"],
    [id*="onboarding"],
    .sticky-cta,
    .scroll-top,
    .skip-link,
    .no-print,
    /* Найдено замером (`.qa/probe_print_layout.py`): именно эти два элемента
       оставались плавать поверх листа в кабинете. */
    #leaderFab,
    .cd-fab,
    #occGuideLauncher,
    .occ-guide-launcher,
    [class*="fab"],
    [class*="launcher"],
    [class*="chat-widget"] {
        display: none !important;
    }

    /* ---------- 2.1. Каркас кабинета ----------
       Лист красил чёрным `div.occ-shell` (rgb(9,10,12)), и он же держал грид
       `240px 1040px` — колонку скрытого меню. Из-за этого контент печатался
       узкой полосой слева на чёрном фоне. Оба свойства снимаем адресно: раньше
       здесь стояло `* { position: static }` и глобальный слом гридов, и это
       разнесло вёрстку. */
    .occ-shell,
    .app-shell,
    .os-shell {
        display: block !important;
        grid-template-columns: none !important;
        background: #fff !important;
        background-image: none !important;
        color: #000 !important;
        width: auto !important;
        max-width: none !important;
    }

    .occ-shell *,
    .app-shell *,
    .os-shell * {
        background-color: transparent !important;
        background-image: none !important;
        color: #000 !important;
        box-shadow: none !important;
        text-shadow: none !important;
    }

    /* Круговые диаграммы рисуются conic-gradient по фону. Снятие фона
       превращало их в чёрный круг поверх цифры — на бумаге оставляем цифру и
       тонкий контур, а не пятно. */
    [class*="donut"],
    [class*="ring"],
    [class*="gauge"],
    [class*="chart"],
    [class*="circle"],
    [class*="progress"],
    [class*="pie"],
    [class*="dial"],
    [class*="score"],
    [style*="conic-gradient"],
    [style*="conic"] {
        background: #fff !important;
        background-image: none !important;
        border: 1px solid #999 !important;
        color: #000 !important;
    }

    /* Внутренние слои круговых индикаторов (маска, «дырка», подложка) тоже
       красятся фоном — без этого в центре остаётся чёрное пятно. */
    [class*="donut"] *,
    [class*="ring"] *,
    [class*="gauge"] *,
    [class*="circle"] * {
        background: transparent !important;
        background-image: none !important;
        border-color: #999 !important;
    }

    /* Декоративные пятна и свечения рисуются псевдоэлементами. На экране это
       атмосфера, на бумаге — серые круги поверх текста. */
    body *::before,
    body *::after {
        background-image: none !important;
        box-shadow: none !important;
    }

    /* ---------- 3. Тёмная тема → бумажная ----------
       Кабинет тёмный: без этого на печать уходит чёрный лист. Красим только
       содержимое, не трогая геометрию. */

    main,
    main *,
    .os-main,
    .os-main *,
    .page-container,
    .page-container *,
    article,
    article *,
    section,
    section * {
        background-color: transparent !important;
        background-image: none !important;
        color: #000 !important;
        text-shadow: none !important;
        box-shadow: none !important;
    }

    /* Рамки должны остаться видимыми: на белом фоне блок без рамки
       превращается в поток текста без структуры. */
    main [class*="card"],
    main [class*="panel"],
    main [class*="tile"],
    main [class*="block"],
    .os-main [class*="card"],
    section [class*="card"],
    article [class*="card"] {
        border: 1px solid #bbb !important;
    }

    /* ---------- 4. Кнопки: текст обязан быть видимым ----------
       Причина «пустых оранжевых плашек» — белый текст на заливке. На бумаге
       делаем наоборот: чернильный текст и рамка. Видно при любых настройках
       печати, включая отключённую фоновую графику. */

    .btn,
    button,
    [class*="btn"],
    [class*="action-"],
    [class*="-action"],
    .jpro-btn,
    .journal-btn,
    .navbar-btn,
    .footer-v2-primary-link,
    a[class*="cta"] {
        background: none !important;
        background-image: none !important;
        color: #000 !important;
        -webkit-text-fill-color: #000 !important;
        border: 1px solid #000 !important;
        padding: 3px 7px !important;
        box-shadow: none !important;
    }

    /* Градиентный текст (`background-clip: text`) на печати исчезает совсем:
       фон не печатается, а сам текст прозрачный. Возвращаем чернила. */
    h1, h2, h3, h4, h5, h6,
    [class*="title"],
    [class*="heading"],
    [class*="value"],
    [class*="metric"] {
        background: none !important;
        background-image: none !important;
        -webkit-text-fill-color: #000 !important;
        color: #000 !important;
    }

    /* ---------- 5. Ссылки ---------- */

    a {
        color: #000 !important;
        text-decoration: underline !important;
    }

    /* Внешний адрес рядом со ссылкой: на бумаге ссылка без адреса бесполезна.
       Только для внешних — внутренние превратили бы текст в мусор. */
    article a[href^="http"]::after,
    .journal-article-main a[href^="http"]::after {
        content: " (" attr(href) ")";
        font-size: 0.78em;
        color: #444;
        word-break: break-all;
    }

    /* ---------- 6. Разрывы страниц ---------- */

    table,
    figure,
    img,
    blockquote,
    [class*="card"],
    .journal-standard,
    .journal-checklist,
    .journal-faq-block {
        break-inside: avoid;
        page-break-inside: avoid;
    }

    h1, h2, h3 {
        break-after: avoid;
        page-break-after: avoid;
    }

    table {
        width: 100% !important;
        border-collapse: collapse !important;
    }

    table th,
    table td {
        border: 1px solid #999 !important;
        padding: 4px 6px !important;
        color: #000 !important;
    }

    /* ---------- 7. Липкие элементы ----------
       Бумага не скроллится: `sticky` и `fixed` оставляют пустые полосы и
       наложения. Снимаем только у тех, кто действительно остался на листе, —
       глобальное `* { position: static }` ломает абсолютную вёрстку кабинета. */

    .sticky-top,
    .position-sticky,
    [class*="sticky"],
    .journal-sidebar,
    .os-topbar,
    .app-topbar {
        position: static !important;
    }

    @page {
        margin: 14mm 12mm;
    }
}
