

/* Start:/local/components/custom/guide.detail/templates/.default/style.css?17873458166120*/
/* Ювелирный гид: детальная статья /guide/<slug>/.
   Токены — из local/templates/box/style/constructor.css (палитра mercury-монохром):
   заголовки/навигация — var(--font-family-display) (Manrope), текст статьи и
   карточки — var(--font-family-serif) (Inter). Жёстких имён шрифтов не оставляем —
   Jost подключён глобально (footer.php, шапка/меню), но в токены шаблона не входит.
   Крошки — только сайтовый блок шаблона страницы (один источник, см. visual-review
   B3): свой видимый nav убран, JSON-LD BreadcrumbList ниже по файлу — invisible SEO,
   не трогаем. Тот же подход, что и в guide.list/templates/.default/style.css.
   Никаких новых hex — только переменные. */

.guide-article {
    max-width: 680px;
    margin: 0 auto;
    padding: 0 20px 64px;
}

.guide-article__title {
    margin: 0 0 24px;
    font-family: var(--font-family-display);
    font-size: 34px;
    font-weight: 500;
    line-height: 1.2;
    color: var(--text-color);
}

.guide-article__cover {
    display: block;
    width: 100%;
    height: auto;
    margin: 0 0 32px;
    border-radius: 4px;
}

/* Типографика самого текста статьи — в общем local/templates/box/css/prose.css
   (класс .zt-prose), он же обслуживает справочные страницы. Подключается из
   template.php через addExternalCss. Здесь остаётся только то, что есть у статьи
   и нет у страницы: обложка, FAQ, витрина товаров. */

/* FAQ и товары — разделы статьи, визуально отбиты хайрлайном сверху. */
.guide-article__faq,
.guide-article__products {
    margin-top: 56px;
    padding-top: 40px;
    border-top: 1px solid var(--border-color);
}

.guide-article__faq h2,
.guide-article__products h2 {
    margin: 0 0 20px;
    font-family: var(--font-family-display);
    font-size: 24px;
    font-weight: 500;
    color: var(--text-color);
}

.guide-article__faq-item {
    padding: 16px 0;
    border-bottom: 1px solid var(--border-color);
}

.guide-article__faq-item summary {
    font-family: var(--font-family-serif);
    font-size: 16px;
    font-weight: 500;
    color: var(--text-color);
    cursor: pointer;
    list-style: none;
}

.guide-article__faq-item summary::-webkit-details-marker {
    display: none;
}

.guide-article__faq-item summary::after {
    content: '+';
    float: right;
    color: var(--text-color-4);
}

.guide-article__faq-item[open] summary::after {
    content: '−';
}

.guide-article__faq-item p {
    margin: 12px 0 0;
    font-family: var(--font-family-serif);
    font-size: 15px;
    line-height: 1.55;
    color: var(--text-color-2);
}

/* Витрина товаров статьи — скромная карточка (картинка+название+цена), без выбора
   размера и «Добавить в корзину»: это ссылка на карточку товара, не блок допродажи,
   поэтому JS не нужен (в отличие от zt-bundle на карточке товара). Выборка ограничена
   4 товарами (component.php: zottyGuideLoadProducts($articles, 4)) — auto-fill вместо
   repeat(2, 1fr) даёт до 4 колонок на десктопе и не растягивает карточку на всю
   половину контейнера, если товар всего один (visual-review B3: было 310px на
   десктопе / 149px на мобиле с пустой половиной справа). */
.guide-article__products-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 20px;
}

.guide-article__product {
    display: flex;
    flex-direction: column;
    gap: 8px;
    text-decoration: none;
}

.guide-article__product-pic {
    display: block;
    aspect-ratio: 1 / 1;
    background: var(--main-color-5);
    border: 1px solid var(--border-color);
    border-radius: 4px;
    overflow: hidden;
}

.guide-article__product-pic img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    mix-blend-mode: multiply;
}

.guide-article__product-name {
    font-family: var(--font-family-serif);
    font-size: 14px;
    line-height: 1.43;
    color: var(--text-color);
}

.guide-article__product:hover .guide-article__product-name {
    color: var(--accent);
}

.guide-article__product-price {
    font-family: var(--font-family-serif);
    font-size: 15px;
    font-weight: 500;
    color: var(--text-color);
}

@media (max-width: 640px) {
    .guide-article__title {
        font-size: 26px;
    }

    .guide-article__products-grid {
        /* На мобиле — фиксированные 2 колонки на всю ширину контейнера (не auto-fill:
           при 1-2 товарах карточка должна занимать половину экрана, а не 140px). */
        grid-template-columns: 1fr 1fr;
        gap: 16px;
    }
}

/* Анимация раскрытия FAQ. Высоту задаёт скрипт шаблона (script.js): <details>
   штатно не анимируется — при закрытии браузер прячет содержимое мгновенно,
   и чистым CSS это не лечится. Без JS правило безвредно: height не задан,
   контейнер живёт по содержимому. */
.guide-article__faq-answer {
    overflow: hidden;
}

.guide-article__faq-answer[data-zt-faq-animating] {
    transition: height .22s ease;
}

@media (prefers-reduced-motion: reduce) {
    .guide-article__faq-answer[data-zt-faq-animating] {
        transition: none;
    }
}

/* End */


/* Start:/local/templates/box/css/prose.css?17873458164113*/
/* Типографика длинного текста, пришедшего HTML из кабинета (markdown → html).
   Общая для «Ювелирного гида» (guide.detail) и справочных страниц (page.text):
   раньше эти правила жили только в style.css гида, и вторая копия в новом
   компоненте разошлась бы с первой на первой же правке.

   Файл лежит в шаблоне, а не в папке компонента, потому что компонентов-потребителей
   несколько — тот же приём, что у related-blocks.css. Подключается из template.php
   каждого через $this->addExternalCss(SITE_TEMPLATE_PATH . '/css/prose.css').

   Токены — из local/templates/box/style/constructor.css (mercury-монохром).
   Никаких новых hex: только переменные. */

.zt-prose {
    font-family: var(--font-family-serif);
    font-size: 16px;
    font-weight: 400;
    line-height: 1.6;
    color: var(--text-color-2);
}

.zt-prose p {
    margin: 0 0 20px;
}

.zt-prose h2,
.zt-prose h3 {
    font-family: var(--font-family-display);
    font-weight: 500;
    color: var(--text-color);
    margin: 40px 0 16px;
}

.zt-prose h2 {
    font-size: 24px;
}

.zt-prose h3 {
    font-size: 20px;
}

.zt-prose img {
    max-width: 100%;
    height: auto;
    border-radius: 4px;
    margin: 24px 0;
}

.zt-prose ul,
.zt-prose ol {
    margin: 0 0 20px;
    padding-left: 22px;
}

.zt-prose li {
    margin-bottom: 8px;
}

.zt-prose a {
    color: var(--text-color);
    text-decoration-color: var(--border-color);
}

.zt-prose a:hover {
    color: var(--accent);
    text-decoration-color: var(--accent);
}

/* Таблицы markdown-редактор умеет вставлять, и в справочных страницах они
   встречаются (сроки доставки, тарифы). Без правил ниже таблица приезжает
   голой и распирает контейнер на мобиле. */
.zt-prose table {
    width: 100%;
    margin: 0 0 24px;
    border-collapse: collapse;
    font-size: 15px;
}

.zt-prose th,
.zt-prose td {
    padding: 10px 12px;
    text-align: left;
    border-bottom: 1px solid var(--border-color);
}

.zt-prose th {
    font-weight: 500;
    color: var(--text-color);
}

/* Обёртка на случай широкой таблицы: горизонтальная прокрутка внутри блока,
   а не у всей страницы. */
.zt-prose__scroll {
    overflow-x: auto;
}

/* Ряд логотипов (платёжные системы на «Доставке и оплате») — абзац, в котором
   несколько картинок подряд. Без ограничения высоты они приезжают в натуральную
   величину: у visa.png это 300×300 с прозрачными полями вокруг маленького знака,
   и ряд рассыпается по высоте. markdown размеры задать не даёт, поэтому решаем
   CSS: одна высота на все, поля обрезаются сами. */
.zt-prose p:has(img + img) {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 20px;
}

.zt-prose p:has(img + img) img {
    /* Рамка, а не фиксированная высота: у visa/mastercard/jcb знак занимает малую
       часть квадратного файла (прозрачные поля), у mir.png полей нет. Ограничение
       по обеим сторонам уравнивает их визуально — знаки выходят соразмерными,
       как на прежней вёрстке страницы. */
    max-height: 40px;
    max-width: 90px;
    width: auto;
    margin: 0;
    border-radius: 0;
    object-fit: contain;
}

/* End */
/* /local/components/custom/guide.detail/templates/.default/style.css?17873458166120 */
/* /local/templates/box/css/prose.css?17873458164113 */
