/**
 * custom.css
 * Стили, вынесенные из inline-атрибутов style="..." в PHP-шаблонах темы.
 *
 * Подключается в functions.php после megadim-style (зависимость обязательна),
 * поэтому при равной специфичности правила отсюда перебивают style.css.
 *
 * Правила ведения файла:
 *  - значения переносятся 1-в-1, без визуальных изменений (чистый рефакторинг);
 *  - если подходящий класс уже есть в style.css — он переиспользуется в разметке,
 *    дубль здесь не создаётся;
 *  - секции сгруппированы по файлу-источнику.
 */


/* ==========================================================================
   single-articles.php
   ========================================================================== */

.article-single {
    max-width: 900px;
    margin: 0 auto;
    padding: 40px 20px;
}

/* Хлебные крошки.
   Контейнер, разделители и текущий пункт оформлены общими классами из style.css
   (.breadcrumbs / .breadcrumb-separator / .breadcrumb-current) — значения совпали
   один в один. Здесь только зелёный акцент ссылок вместо синего .breadcrumbs a. */
.article-breadcrumbs a {
    color: #99b34e;
    text-decoration: none;
}

/* Перебивает .breadcrumbs a:hover { text-decoration: underline } из style.css.
   У статей подчёркивания при наведении не было: инлайновый text-decoration:none
   выигрывал у любого правила в таблице стилей. Сохраняем прежнее поведение. */
.article-breadcrumbs a:hover {
    text-decoration: none;
}

/* Шапка статьи */
.article-header {
    margin-bottom: 40px;
    text-align: center;
    padding-bottom: 30px;
    border-bottom: 2px solid #f0f0f0;
}

.article-topic {
    margin-bottom: 15px;
}

/* Зелёный аналог .news-topic a из style.css.
   Без transition — в инлайновом стиле его не было. */
.article-topic a {
    display: inline-block;
    background: #99b34e;
    color: white;
    padding: 6px 15px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 600;
    text-transform: uppercase;
    text-decoration: none;
    letter-spacing: 0.5px;
}

.article-title {
    font-size: 2.5em;
    font-weight: 600;
    line-height: 1.2;
    margin-bottom: 20px;
    color: #333;
}

.article-meta {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px;
    flex-wrap: wrap;
    color: #888;
    font-size: 15px;
}

/* Отметка «Рекомендуемая статья» в мета-строке */
.article-featured-label {
    color: #99b34e;
    font-weight: 600;
}

/* Основное изображение */
.article-featured-image {
    margin-bottom: 40px;
    border-radius: 15px;
    overflow: hidden;
    box-shadow: 0 8px 25px rgba(0,0,0,0.1);
}

/* Заменяет 'style' в the_post_thumbnail(). Селектор по потомку, а не 'class' =>,
   чтобы не затереть служебные классы WordPress (attachment-large size-large). */
.article-featured-image img {
    width: 100%;
    height: auto;
    display: block;
}

/* Контент статьи.
   Не .news-content из style.css: там дополнительно margin-bottom: 50px,
   которого в инлайновом стиле не было. */
.article-content {
    font-size: 18px;
    line-height: 1.7;
    color: #333;
}

/* Подвал статьи */
.article-footer {
    margin-top: 50px;
    padding-top: 30px;
    border-top: 2px solid #f0f0f0;
}

.article-topics,
.article-categories {
    margin-bottom: 20px;
}

.article-topics h4,
.article-categories h4 {
    color: #666;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
}

/* Зелёный аналог .category-tag из style.css (там он синий).
   Теги тематик используют общий .topic-tag — значения совпали. */
.article-category-tag {
    background: #99b34e;
    color: white;
    padding: 5px 12px;
    border-radius: 15px;
    font-size: 13px;
    text-decoration: none;
    transition: all 0.3s;
}

/* Навигация по статьям.
   Не .news-navigation из style.css: там margin-bottom: 60px вместо margin-top: 40px.
   Сетка внутри — общий .navigation-grid, значения совпали. */
.article-navigation {
    margin-top: 40px;
    padding: 30px;
    background: #f8f9fa;
    border-radius: 15px;
}

/* Не .nav-label из style.css: там ещё display: block и margin-bottom: 5px,
   которых в инлайновом стиле не было (отступ даёт margin-top ссылки). */
.article-nav-label {
    font-size: 12px;
    color: #888;
    text-transform: uppercase;
    font-weight: 600;
}

/* Не .nav-title из style.css: там нет display: block и margin-top. */
.article-nav-title {
    display: block;
    color: #333;
    text-decoration: none;
    font-weight: 600;
    margin-top: 5px;
    line-height: 1.3;
}

/* Похожие статьи.
   Сетка, карточки и их внутренности используют общие классы из style.css
   (.related-grid / .related-card / .related-image / .related-content) —
   значения совпали один в один. */
.related-articles {
    margin-top: 60px;
}

.related-articles h3 {
    font-size: 1.8em;
    margin-bottom: 30px;
    color: #333;
    text-align: center;
}


/* ==========================================================================
   archive-news.php
   ========================================================================== */

/* Почти вся разметка этого архива уже покрыта готовыми классами из style.css
   (блок «=== АРХИВ НОВОСТЕЙ (home.php) ===», строки 2255–2530): .news-hero,
   .news-content, .news-filter, .filter-btn, .important-*, .card-*, .all-news,
   .news-item-*, .news-pagination, .no-news*. Они переиспользованы в разметке,
   здесь описано только то, чего в них нет.

   Модификатор --company нужен там, где значения этого архива отличаются от
   общих классов: home.php использует те же классы и ту же обёртку
   .news-archive-page, и глобальные правила изменили бы его вид. */

/* Фон hero: в style.css у .news-hero он закомментирован, приходил из инлайна */
.news-hero--company {
    background: linear-gradient(135deg, #2c5aa0 0%, #1e3a5f 100%);
}

/* Фон секции: в style.css у .news-section он закомментирован */
.news-section--company {
    background: #f8f9fa;
}

/* --- Значения, отличающиеся от готовых классов style.css --- */

/* .news-item-date там зелёная (#99B34E), в этом архиве дата была синей */
.news-archive-date {
    font-size: 14px;
    color: #2c5aa0;
    font-weight: 600;
}

/* .news-item-link там тёмно-зелёная (#2E3D28), здесь ссылка была синей.
   Ховера у неё нет — его не было и в инлайновом варианте. */
.news-archive-link {
    color: #2c5aa0;
    font-weight: 600;
    text-decoration: none;
    font-size: 14px;
    transition: color 0.3s;
}

/* Текст внутри блока «Новых новостей пока нет» (.no-news) */
.no-news p {
    font-size: 1.1em;
}

/* Фильтр по тематикам.
   Действующее объявление .filter-btn — style.css:3064 (объявление на 2305
   перекрыто им же): padding 8px 20px, background #f0f0f0, border-radius 25px,
   border 1px solid #e0e0e0. Инлайн задавал другую геометрию и синюю гамму —
   возвращаем её. Ограничено модификатором --company: home.php использует
   тот же .filter-btn, но без инлайна, и его вид меняться не должен.
   font-size и font-weight не трогаем — инлайн их не задавал. */
.news-section--company .filter-btn {
    padding: 12px 24px;
    margin: 5px;
    background: #f8f9fa;
    border-radius: 30px;
    border: 2px solid #2c5aa0;
}

.news-section--company .filter-btn.active {
    background: #2c5aa0;
    color: #fff;
}


/* ==========================================================================
   archive-articles.php
   ========================================================================== */

/* В style.css классов для этого архива нет — блок написан с нуля.
   Переиспользованы только .filter-btn и .featured-badge: они существуют,
   но в синей гамме, поэтому цвета переопределены точечно ниже. */

.articles-hero {
    background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
    padding: 80px 0;
}

/* Перебивает max-width Bootstrap-контейнера, как это делал инлайновый стиль */
.articles-hero .container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
    text-align: center;
}

.articles-hero h1 {
    font-size: 2.8em;
    font-weight: 600;
    margin-bottom: 20px;
    color: #333;
}

.articles-hero p {
    font-size: 1.3em;
    color: #666;
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.5;
}

.articles-content {
    padding: 60px 0;
}

.articles-content .container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

/* Фильтр по тематикам.
   ВНИМАНИЕ: .filter-btn объявлен в style.css дважды вне медиазапросов —
   на строке 2305 и на 3064. Действует последнее: padding 8px 20px,
   background #f0f0f0, border-radius 25px, border 1px solid #e0e0e0,
   font-size 14px, font-weight 600. Инлайн задавал другую геометрию и зелёную
   гамму, поэтому возвращаем размеры, отступ и цвета.
   font-size и font-weight не трогаем — инлайн их не задавал, они приходили
   из класса и до рефакторинга.
   Порядок важен: правило для .active идёт вторым и по специфичности выше. */
.articles-filter {
    margin-bottom: 50px;
    text-align: center;
}

.articles-archive-page .filter-btn {
    padding: 12px 24px;
    margin: 5px;
    background: #f8f9fa;
    color: #333;
    border-radius: 30px;
    border: 2px solid #99b34e;
}

.articles-archive-page .filter-btn.active {
    background: #99b34e;
    color: #fff;
}

/* --- Рекомендуемые статьи (карточка на зелёном градиенте) --- */

.featured-articles {
    margin-bottom: 60px;
}

.featured-articles h2 {
    text-align: center;
    font-size: 2em;
    margin-bottom: 30px;
    color: #333;
}

.featured-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
    gap: 30px;
}

.featured-card {
    background: linear-gradient(135deg, #99b34e, #7da333);
    color: white;
    border-radius: 15px;
    overflow: hidden;
    box-shadow: 0 8px 25px rgba(153, 179, 78, 0.3);
    transition: transform 0.3s ease;
}

.featured-card a {
    display: block;
    text-decoration: none;
    color: inherit;
}

.featured-card__media {
    height: 200px;
    overflow: hidden;
    position: relative;
}

/* Без transition — в инлайновом стиле его не было, картинка меняла масштаб
   рывком (ховер .featured-card:hover img задан в самом шаблоне) */
.featured-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0.9;
}

/* .featured-badge из style.css подходит целиком, кроме цветов:
   там синий бейдж на белом тексте, здесь наоборот */
.featured-card .featured-badge {
    background: rgba(255,255,255,0.9);
    color: #99b34e;
}

.featured-card__body {
    padding: 25px;
}

/* Цвет не задаётся: текст наследует белый от .featured-card */
.featured-card__topic {
    font-size: 12px;
    opacity: 0.8;
    font-weight: 600;
    text-transform: uppercase;
    margin-bottom: 10px;
    letter-spacing: 1px;
}

.featured-card h3 {
    margin: 0 0 12px 0;
    font-size: 22px;
    font-weight: 600;
    line-height: 1.3;
}

.featured-card__excerpt {
    font-size: 15px;
    opacity: 0.9;
    line-height: 1.5;
    margin-bottom: 15px;
}

.featured-card__meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 14px;
}

.featured-card__date {
    opacity: 0.8;
}

.featured-card__more {
    font-weight: 600;
}

/* --- Все статьи (обычная белая карточка) --- */

.all-articles h2 {
    font-size: 1.6em;
    margin-bottom: 30px;
    color: #333;
    padding-bottom: 10px;
    border-bottom: 3px solid #99b34e;
    display: inline-block;
}

.articles-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 30px;
    margin-bottom: 50px;
}

.article-card {
    background: #fff;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 15px rgba(0,0,0,0.08);
    transition: all 0.3s ease;
    border: 1px solid #f0f0f0;
}

.article-card a {
    display: block;
    text-decoration: none;
    color: inherit;
}

.article-card__media {
    height: 220px;
    overflow: hidden;
    position: relative;
}

.article-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.3s ease;
}

.article-card__body {
    padding: 25px;
}

.article-card__topic {
    font-size: 12px;
    color: #99b34e;
    font-weight: 600;
    text-transform: uppercase;
    margin-bottom: 10px;
    letter-spacing: 0.5px;
}

.article-card h3 {
    margin: 0 0 12px 0;
    font-size: 20px;
    font-weight: 600;
    line-height: 1.3;
    color: #333;
}

.article-card__date {
    font-size: 14px;
    color: #888;
    margin-bottom: 12px;
}

.article-card__excerpt {
    font-size: 15px;
    color: #666;
    line-height: 1.5;
    margin-bottom: 18px;
}

.article-card__more {
    font-size: 14px;
    color: #99b34e;
    font-weight: 600;
}

/* --- Пустой архив --- */

.articles-empty {
    text-align: center;
    padding: 80px 20px;
}

.articles-empty h3 {
    color: #666;
    margin-bottom: 20px;
    font-size: 1.5em;
}

.articles-empty p {
    color: #888;
    font-size: 1.1em;
}


/* ==========================================================================
   archive-post.php
   ========================================================================== */

/* Готовых классов для архива блога в style.css нет — блок написан с нуля.
   Похожий .no-news-message намеренно НЕ переиспользован: его правила для h3 и p
   задают ещё font-size (1.5em и 1.1em), которого в инлайновом варианте не было. */

.blog-hero {
    background: linear-gradient(135deg, #99b34e 0%, #7da333 100%);
    color: white;
    padding: 80px 0;
}

/* Перебивает max-width Bootstrap-контейнера, как это делал инлайновый стиль */
.blog-hero .container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
    text-align: center;
}

.blog-hero h1 {
    font-size: 2.8em;
    font-weight: 600;
    margin-bottom: 20px;
}

.blog-hero p {
    font-size: 1.3em;
    opacity: 0.9;
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.5;
}

.blog-content {
    padding: 60px 0;
    background: #f8f9fa;
}

.blog-content .container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

/* --- Карточки записей --- */

.blog-posts {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
    gap: 30px;
}

.blog-card {
    background: white;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 4px 15px rgba(0,0,0,0.08);
    transition: transform 0.3s ease;
}

.blog-card a {
    display: block;
    text-decoration: none;
    color: inherit;
}

.blog-card__media {
    height: 200px;
    overflow: hidden;
}

.blog-card__media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.blog-card__body {
    padding: 25px;
}

.blog-card__date,
.blog-card__more {
    font-size: 14px;
    color: #99b34e;
    font-weight: 600;
}

.blog-card__date {
    margin-bottom: 10px;
}

.blog-card h3 {
    margin: 0 0 12px 0;
    font-size: 20px;
    font-weight: 600;
    line-height: 1.3;
}

.blog-card__excerpt {
    font-size: 15px;
    color: #666;
    line-height: 1.5;
    margin-bottom: 15px;
}

/* --- Пагинация и пустой архив --- */

.blog-pagination {
    margin-top: 50px;
}

.blog-empty {
    text-align: center;
    padding: 80px 20px;
    background: white;
    border-radius: 15px;
}

.blog-empty h3 {
    color: #666;
    margin-bottom: 20px;
}

.blog-empty p {
    color: #888;
}


/* ==========================================================================
   taxonomy-topics.php
   ========================================================================== */

/* Обработана только PHP-разметка. Ещё 15 инлайновых стилей в этом шаблоне
   лежат внутри <script> (JS собирает карточки строками) — их трогать нельзя
   по запрету №3 CLAUDE.md, см. отчёт. */

.topic-hero {
    background: linear-gradient(135deg, #99b34e 0%, #7da333 100%);
    color: white;
    padding: 80px 0;
}

/* Перебивает max-width Bootstrap-контейнера, как это делал инлайновый стиль */
.topic-hero .container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
    text-align: center;
}

.topic-hero h1 {
    font-size: 2.8em;
    font-weight: 600;
    margin-bottom: 20px;
}

.topic-hero p {
    font-size: 1.3em;
    opacity: 0.9;
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.5;
}

.topic-content {
    max-width: 1200px;
    margin: 0 auto;
    padding: 60px 20px;
}

/* Переключатель типов материалов.
   Кнопки дополнительно управляются из JS этого шаблона: обработчики пишут
   element.style.background/color напрямую и переключают класс .active.
   Инлайн от JS всегда перебивает класс, а обработчики выставляют оба
   состояния явно (#99b34e и #f0f0f0), поэтому вынос безопасен: начальный
   вид даёт класс, дальнейшие переключения — как и раньше, JS. */
.content-nav {
    margin-bottom: 50px;
    text-align: center;
}

.nav-btn {
    padding: 12px 25px;
    margin: 5px;
    background: #f0f0f0;
    color: #333;
    border: none;
    border-radius: 25px;
    cursor: pointer;
    font-weight: 600;
    transition: all 0.3s;
}

.nav-btn.active {
    background: #99b34e;
    color: white;
}

/* Заглушка на время загрузки. Правило намеренно ограничено .topic-content:
   .loading — слишком общее имя, глобальное правило могло бы задеть плагины. */
.topic-content .loading {
    text-align: center;
    padding: 40px;
}

/* --- Карточки, которые собирает JS этого шаблона ---
   Правились только атрибуты style="..." → class="..." внутри шаблонных строк,
   логика скрипта не тронута.

   На <article> остаётся уже стоявший там .content-card из style.css (фон,
   overflow, transition). Он же задаёт border-radius: 8px и box-shadow 0 2px 8px,
   а инлайн ставил 12px и 0 4px 15px — эти два свойства возвращает .topic-card.
   Остальные элементы карточки названы .topic-card__*, чтобы не пересекаться
   с системой .content-card__* из style.css: у неё другие размеры, а у
   .content-card--featured .content-card__topic есть ::after с текстом
   «⭐ РЕКОМЕНДУЕМ», который здесь продублировал бы подпись из JS. */

.topic-section-title {
    margin-bottom: 30px;
    font-size: 1.8em;
    color: #333;
}

.topic-empty {
    text-align: center;
    padding: 40px;
    color: #888;
}

.content-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 25px;
}

.topic-card {
    border-radius: 12px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
}

.topic-card__link {
    display: block;
    text-decoration: none;
    color: inherit;
}

.topic-card__media {
    height: 200px;
    overflow: hidden;
}

.topic-card__img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.topic-card__body {
    padding: 20px;
}

.topic-card__label {
    font-size: 11px;
    color: #99b34e;
    font-weight: 700;
    text-transform: uppercase;
    margin-bottom: 8px;
    letter-spacing: 1px;
}

.topic-card h3 {
    margin: 0 0 10px 0;
    font-size: 18px;
    font-weight: 600;
    line-height: 1.3;
}

.topic-card__date {
    font-size: 14px;
    color: #888;
    margin-bottom: 10px;
}

.topic-card__excerpt {
    font-size: 14px;
    color: #666;
    line-height: 1.5;
    margin-bottom: 15px;
}

.topic-card__more {
    font-size: 14px;
    color: #99b34e;
    font-weight: 600;
}


/* ==========================================================================
   archive-projects.php
   ========================================================================== */

/* Ховеры и адаптив для этой страницы уже есть в style.css (строки 2196–2235:
   .project-card:hover, .project-card:hover .project-image img,
   .project-card:hover .project-link, медиазапросы для .projects-grid,
   .projects-hero h1, .filter-btn, .container). Здесь только базовые значения,
   которые раньше приходили из инлайна.

   ACF-секция в начале шаблона (.principles-section / .section-row*) чистая,
   инлайна там не было — не трогалась. */

.projects-hero {
    background: #f8f9fa;
    padding: 60px 0;
}

/* Перебивает max-width Bootstrap-контейнера, как это делал инлайновый стиль */
.projects-hero .container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
    text-align: center;
}

.projects-hero h1 {
    font-size: 2.5em;
    font-weight: 600;
    margin-bottom: 20px;
}

.projects-hero p {
    font-size: 1.2em;
    color: #666;
    max-width: 600px;
    margin: 0 auto;
}

.projects-content {
    padding: 60px 0;
}

.projects-content .container {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 20px;
}

/* Фильтр. Действующее объявление .filter-btn — style.css:3064 (не 2305, оно
   перекрыто): padding 8px 20px, background #f0f0f0, border-radius 25px,
   border 1px solid #e0e0e0, font-size 14px, font-weight 600.
   Инлайн отличался только отступами и фоном — их и возвращаем.
   Рамку и font-weight НЕ трогаем: инлайн их не задавал, они приходили
   из класса и до рефакторинга.
   Порядок важен: правило для .active идёт вторым и по специфичности выше. */
.projects-filter {
    margin-bottom: 40px;
    text-align: center;
}

.projects-archive-page .filter-btn {
    padding: 6px 20px;
    margin: 5px;
    background: #f0f0f0;
    font-size: 14px;
    border-radius: 25px;
}

.projects-archive-page .filter-btn.active {
    background: #99b34e;
    color: #fff;
}

/* --- Карточки проектов --- */

.projects-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 30px;
    margin-bottom: 50px;
}

/* Правила для .project-card ограничены страницей: тот же класс стоит
   в taxonomy-project_category.php, но с другими значениями (фон #f6f8f5,
   радиус 12px, другая тень). */
.projects-archive-page .project-card {
    background: #fff;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
    transition: transform 0.3s ease;
}

.projects-archive-page .project-card a {
    display: block;
    text-decoration: none;
    color: inherit;
}

.project-image {
    height: 240px;
    overflow: hidden;
}

.project-image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.3s ease;
}

.project-content {
    padding: 25px;
}

.project-topic {
    font-size: 12px;
    color: #99b34e;
    font-weight: 600;
    text-transform: uppercase;
    margin-bottom: 10px;
    letter-spacing: 0.5px;
}

.project-title {
    margin: 0 0 12px 0;
    font-size: 20px;
    font-weight: 600;
    line-height: 1.2;
}

.project-date {
    font-size: 14px;
    color: #888;
    margin-bottom: 12px;
}

.project-excerpt {
    font-size: 14px;
    color: #666;
    line-height: 1.5;
    margin-bottom: 15px;
}

.project-link {
    font-size: 14px;
    color: #99b34e;
    font-weight: 600;
}

/* Ховеры карточки заданы в style.css: подъём и тень 0 8px 25px
   (.project-card:hover), цвет ссылки #7da333 и увеличение картинки.
   Раньше тень и цвет глушил инлайн — теперь работают все три.

   Тень приходится повторять здесь: базовое правило выше ограничено страницей
   и имеет специфичность (0,2,0) — столько же, сколько .project-card:hover
   (псевдокласс весит как класс), а custom.css грузится позже и перебил бы его.
   Селектор ниже даёт (0,3,0) и возвращает авторское значение. */
.projects-archive-page .project-card:hover {
    box-shadow: 0 8px 25px rgba(0,0,0,0.15);
}

/* --- Пустой архив --- */

.projects-empty {
    text-align: center;
    padding: 60px 20px;
}

.projects-empty h3 {
    color: #666;
    margin-bottom: 20px;
}

.projects-empty p {
    color: #888;
}

.projects-empty__link {
    color: #99b34e;
    text-decoration: none;
    font-weight: 600;
}


/* ==========================================================================
   single-projects.php
   ========================================================================== */

/* Класс .site-main на <main> общий с page.php и page-contacts.php, поэтому
   размеры страницы вынесены в добавленный рядом .project-single. */
.project-single {
    max-width: 900px;
    margin: 0 auto;
    padding: 30px 0;
}

.project-single__title {
    font-size: 2.2em;
    font-weight: 400;
}

.project-single__meta {
    color: #888;
    font-size: 0.95em;
    margin-bottom: 18px;
}

.project-single__content {
    margin-bottom: 35px;
    font-size: 1.17em;
}

.project-single__categories {
    font-size: 0.85em;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #777;
}

.project-category-link {
    color: #7da333;
    text-decoration: underline;
}

/* --- Галерея --- */

.project-gallery {
    margin-bottom: 28px;
    position: relative;
}

.project-gallery__viewport {
    width: 100%;
    height: 430px;
    overflow: hidden;
    position: relative;
}

/* display у слайдов сюда НЕ вынесен: его задаёт PHP ($i == 0 ? block : none)
   и переключает JS-карусель этого шаблона (img.style.display). */
.gallery-image {
    width: 100%;
    height: 430px;
    object-fit: cover;
}

.gallery-prev,
.gallery-next {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    font-size: 28px;
    cursor: pointer;
}

.gallery-prev {
    left: 10px;
}

.gallery-next {
    right: 10px;
}

.project-gallery__dots {
    text-align: center;
    margin-top: 10px;
}

/* background здесь — начальное значение. Точки выводятся только когда
   изображений больше одного, а в этом случае при загрузке отрабатывает show(0)
   и сразу проставляет фон инлайном всем точкам (#7da333 активной, #bbb прочим). */
.gallery-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #bbb;
    margin: 0 3px;
    cursor: pointer;
}


/* ==========================================================================
   taxonomy-project_category.php
   ========================================================================== */

/* Класс .project-card здесь тот же, что в archive-projects.php, но значения
   другие (фон #f6f8f5, радиус 12px, тень 0 1px 7px #ddd), поэтому правила
   ограничены обёрткой .project-category-archive — её пришлось добавить на
   <main>, у которого раньше вообще не было класса.
   Имя не путать с .project-category-link из single-projects.php: это разные
   классы, пересечения в селекторах нет. */

.project-category-archive {
    max-width: 1100px;
    margin: 0 auto;
    padding: 40px 0;
}

.project-category-archive__title {
    font-size: 2.2em;
    font-weight: 600;
    margin-bottom: 35px;
}

.project-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
    gap: 32px;
}

.project-category-archive .project-card {
    background: #f6f8f5;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 1px 7px #ddd;
}

/* Инлайн задавал у ссылки только display: block — text-decoration и color
   здесь не сбрасывались, ссылка оформлена стилями темы. */
.project-category-archive .project-card a {
    display: block;
}

/* Заменяет ключ 'style' в the_post_thumbnail() */
.project-category-archive .project-card img {
    width: 100%;
    height: 240px;
    object-fit: cover;
}

.project-card__body {
    padding: 18px;
}

.project-card__title {
    font-size: 1.2em;
    font-weight: 600;
}

.project-card__date {
    color: #888;
    font-size: 0.97em;
    margin-top: 6px;
}

/* Ховер .project-card:hover (подъём + тень 0 8px 25px) задан в style.css.
   Раньше тень глушил инлайн. Повтор нужен по той же причине, что и в блоке
   archive-projects.php: базовое правило выше имеет ту же специфичность, что
   и .project-card:hover, и перебило бы его как более позднее. */
.project-category-archive .project-card:hover {
    box-shadow: 0 8px 25px rgba(0,0,0,0.15);
}


/* ==========================================================================
   single-products.php
   ========================================================================== */

/* Часть стилей этого шаблона уже была в style.css и просто дублировалась
   инлайном — там правила совпали посимвольно, инлайн удалён без замены:
     основное изображение → .product-gallery .main-image img (style.css:1902)
     миниатюры            → .thumbnail-img                   (style.css:1502)

   Два style="display: none;" на #orderModal и #imageModal НЕ вынесены:
   скрипт открывает и закрывает окна через modal.style.display, то есть инлайн
   работает там флагом состояния, а не оформлением. См. комментарии в шаблоне. */

/* Первая колонка таблицы характеристик */
.product-spec-name {
    width: 60%;
}

/* Чертежи открываются в модальном окне по клику (onclick в разметке) */
.product-drawing {
    cursor: pointer;
}

/* Иконка документа в списке документов */
.document-icon span {
    font-size: 24px;
    color: #dc3545;
}

/* Заменяет ключ 'style' в the_post_thumbnail() внутри окна заказа */
.product-image-small img {
    width: 80px;
    height: 80px;
    object-fit: cover;
    border-radius: 8px;
}


/* ==========================================================================
   header.php
   ========================================================================== */

/* В style.css у .site-header фон белый (строка 136), а инлайн ставил #fafbfa —
   и выигрывал. Возвращаем фактический цвет; custom.css грузится позже, так что
   при равной специфичности это правило перебивает style.css. */
.site-header {
    background: #fafbfa;
}

.site-header__bar {
    min-height: 70px;
}

/* Логотип в шапке. Класс .header-logo img из style.css НЕ переиспользован:
   он добавляет max-height: 46px и display: block, которых в инлайне не было. */
.site-logo {
    max-width: 220px;
    height: auto;
}

/* Зелёная линия под шапкой. Толщину и цвет задаёт .site-header hr (style.css:217),
   но там margin: 0 0 2px 0, а инлайн ставил отступ сверху 10px и выигрывал.
   Селектор с тегом нужен, чтобы сравняться по специфичности с .site-header hr.
   border-color из инлайна не переносился: он дублировал цвет, который уже задан
   в border-bottom, а остальные стороны скрыты через border: none. */
hr.site-header__divider {
    margin: 10px 0 2px 0;
}


/* ==========================================================================
   footer.php
   ========================================================================== */

.footer-logo {
    max-width: 220px;
}

/* Инлайновый style="display: none;" на #estimateModal НЕ вынесен: скрипт
   в этом же файле читает его напрямую — if (modal.style.display !== 'none'),
   строка 92, — то есть это флаг состояния для JS. Оформление окна и так
   задано классом .estimate-modal в style.css (строка 3385), включая display. */


/* ==========================================================================
   page.php
   ========================================================================== */

/* Отладочные блоки вывода ACF-полей */
.acf-debug-box {
    border: 1px solid #ccc;
    padding: 12px;
    margin: 16px 0;
}

.acf-debug-box--group {
    background: #ffe;
}

.acf-debug-box--root {
    background: #e9ffe9;
}


/* ==========================================================================
   front-static.php
   ========================================================================== */

.home-news-section {
    padding: 40px 0;
}

/* Класс уже стоял в разметке, но правила под него не было — заводим его здесь,
   отдельный класс не плодим. */
.page-content-section {
    padding: 60px 0;
}
