/*
 * Редизайн — компоненты.
 * Часть правил намеренно переопределяет классы Bootstrap 5 (card, breadcrumb,
 * btn, badge, pagination, alert, dropdown, table, list-unstyled) — сами
 * partials (views/_blocks/*) местами общие для старого и нового дизайна
 * (см. config/web.php, $useRedesign), поэтому их разметка не менялась, а
 * внешний вид "переобувается" здесь под новую палитру/шрифты.
 */

/* ---------- header / nav ---------- */
body.redesign .site-header {
    background: var(--navy);
    color: var(--navy-text);
}
body.redesign .site-header .navbar-brand {
    color: var(--navy-text);
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 1.4rem;
    letter-spacing: .01em;
    margin: 0;
    padding: 0;
}

body.redesign .site-header .nav-link {
    color: var(--navy-muted);
    font-size: .92rem;
}

/* .navbar — грид 1fr auto 1fr (бренд/меню/кнопки), см. layouts/main.php.
   Ниже lg меню сворачивается в Bootstrap-collapse (.show при открытии) —
   в средней "auto"-колонке грида оно при открытии осталось бы узким
   (по ширине самих ссылок), а не растянулось на всю ширину под шапкой,
   как обычное мобильное меню. */
@media (max-width: 991.98px) {
    body.redesign .site-header .navbar {
        grid-template-columns: 1fr auto;
    }
    body.redesign .site-header .navbar-collapse {
        grid-column: 1 / -1;
        justify-self: stretch !important;
    }
}

body.redesign .site-header .nav-link:hover,
body.redesign .site-header .nav-link.active {
    color: var(--navy-text);
}

body.redesign .btn-subscribe {
    box-sizing: border-box;
    height: 38px;
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--accent-bright);
    color: var(--accent-bright);
    background: transparent;
    padding: 0 16px;
    border-radius: var(--radius-sm);
    font-size: .85rem;
    font-weight: 600;
    white-space: nowrap;
}

body.redesign .btn-subscribe:hover {
    background: var(--accent-bright);
    color: var(--navy);
    text-decoration: none;
}

body.redesign .btn-login {
    color: var(--navy-muted);
    font-size: .85rem;
}

body.redesign .btn-login:hover { color: var(--navy-text); }

body.redesign .btn-subscription-status {
    font-family: var(--font-sans);
    font-size: .82rem;
    border-radius: var(--radius-sm);
    padding: 6px 12px;
    border: 1px solid var(--accent-bright);
    color: var(--accent-bright);
    background: transparent;
}

body.redesign .navbar-toggler {
    border-color: var(--navy-muted);
}
body.redesign .navbar-toggler-icon {
    filter: invert(1);
}

/* Иконка-переключатель дропдауна профиля — без стрелки Bootstrap (лишняя
   деталь для одной аватарки-иконки) и с явным цветом, а не дефолтным
   Bootstrap-синим для ::after/hover, который не вписывался в палитру. */
body.redesign .site-header .dropdown {
    display: inline-flex;
    align-items: center;
}
body.redesign .user-dropdown-toggle {
    color: var(--navy-muted);
    display: inline-flex;
    align-items: center;
}
body.redesign .user-dropdown-toggle:hover,
body.redesign .user-dropdown-toggle:focus {
    color: var(--navy-text);
}
body.redesign .user-dropdown-toggle img {
    /* Тот же box-sizing:border-box + height, что у .btn-subscribe —
       кружок ровно той же высоты, что и кнопка подписки рядом.
       display:block убирает "инлайновый" зазор снизу картинки. */
    display: block;
    box-sizing: border-box;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    object-fit: cover;
    background: var(--navy-2);
    border: 1px solid var(--accent-bright);
    padding: 6px;
}

body.redesign .dropdown-menu {
    background: var(--surface);
    border: 1px solid var(--border);
    box-shadow: var(--shadow);
}
body.redesign .dropdown-item { color: var(--text); font-size: .9rem; }
body.redesign .dropdown-item:hover,
body.redesign .dropdown-item:focus { background: var(--surface-alt); color: var(--text); }
body.redesign .dropdown-divider { border-color: var(--border); }

/* ---------- breadcrumb ---------- */
body.redesign .breadcrumb {
    font-family: var(--font-sans);
    font-size: .82rem;
    color: var(--text-muted);
    padding: 0;
    margin: 0 0 20px;
    background: transparent;
}
body.redesign .breadcrumb-item + .breadcrumb-item::before { color: var(--text-muted); }
body.redesign .breadcrumb-item a { color: var(--text-muted); }
body.redesign .breadcrumb-item a:hover { color: var(--accent-bright); }
body.redesign .breadcrumb-item.active,
body.redesign .breadcrumb-current { color: var(--text); }

/* ---------- cards ---------- */
body.redesign .card {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}
body.redesign .card-body { padding: 24px; }
body.redesign .card.border-0.shadow-sm { border: 1px solid var(--border) !important; }

/* ---------- buttons ---------- */
body.redesign .btn {
    border-radius: var(--radius-sm);
    font-family: var(--font-sans);
    font-weight: 600;
    font-size: .85rem;
}
body.redesign .btn-dark,
body.redesign .btn-danger {
    background: var(--navy);
    border-color: var(--navy);
    color: var(--accent-bright);
}
body.redesign .btn-dark:hover,
body.redesign .btn-danger:hover {
    background: var(--navy-2);
    border-color: var(--navy-2);
    color: var(--accent-bright);
}
body.redesign .btn-success { background: var(--success); border-color: var(--success); }
body.redesign .btn-danger.btn-sm.btn-subscription-status { background: transparent; }

/* ---------- badges / tags ---------- */
body.redesign .badge {
    font-family: var(--font-sans);
    font-weight: 600;
    background: var(--surface-alt) !important;
    color: var(--text-muted) !important;
    border-radius: 2px;
}
/* Статусные бейджи (история платежей, срок подписки в /profile/) должны
   сохранять цветовой сигнал — предыдущее правило безусловно перекрашивало
   ЛЮБОЙ .badge в один и тот же нейтральный серый, теряя разницу между
   "Успешно"/"Ошибка"/"В ожидании". */
body.redesign .badge.bg-success { background: var(--success) !important; color: #fff !important; }
body.redesign .badge.bg-danger { background: var(--danger) !important; color: #fff !important; }
body.redesign .badge.bg-warning { background: var(--accent-bright) !important; color: var(--navy) !important; }
body.redesign .badge.bg-info { background: var(--navy) !important; color: var(--accent-bright) !important; }

/* ---------- forms ---------- */
body.redesign .form-control,
body.redesign input[type="text"],
body.redesign input[type="search"] {
    background: var(--surface);
    border: 1px solid var(--border);
    color: var(--text);
    border-radius: var(--radius);
}
body.redesign .form-control:focus {
    border-color: var(--accent-bright);
    box-shadow: 0 0 0 .2rem rgba(201, 162, 75, .2);
}

/* ---------- alerts ---------- */
body.redesign .alert { border-radius: var(--radius); font-family: var(--font-sans); font-size: .9rem; }

/* ---------- pagination ---------- */
body.redesign .pagination .page-link {
    color: var(--text);
    border-color: var(--border);
    font-family: var(--font-sans);
    font-size: .88rem;
}
body.redesign .pagination .page-item.active .page-link {
    background: var(--navy);
    border-color: var(--navy);
    color: var(--accent-bright);
}
body.redesign .pagination .page-link:hover { background: var(--surface-alt); }

/* ---------- tables (морфология и т.п.) ---------- */
body.redesign .table { color: var(--text); font-family: var(--font-sans); font-size: .9rem; }
body.redesign .table thead.table-dark { background: var(--navy); color: var(--navy-text); }
body.redesign .table-striped > tbody > tr:nth-of-type(odd) > * { background: var(--surface-alt); }

/* ---------- generic lists inside sidebars/partials ---------- */
body.redesign .list-unstyled a,
body.redesign .contents ul a,
body.redesign .words__list a { color: var(--text); }
body.redesign .list-unstyled a:hover,
body.redesign .contents ul a:hover,
body.redesign .words__list a:hover { color: var(--accent-bright); }
body.redesign .h3-right-block { font-size: 1.05rem; }

/* ---------- закон: оглавление (LawService::buildTreeLinksClient) ---------- */
body.redesign .contents_link,
body.redesign .contents a.contents_link {
    display: block;
    color: var(--text);
    font-family: var(--font-sans);
    font-size: .95rem;
    padding: 8px 0;
}
body.redesign .contents_link:hover { color: var(--accent-bright); text-decoration: none; }
body.redesign .contents > ul {
    list-style: none;
    padding: 0;
    margin: 0;
}
/* "Лесенка" — статья визуально вложена в свою главу, глава — в свой раздел.
   buildTreeLinksClient() (services/LawService.php) кладёт каждый уровень
   дерева в собственный вложенный <ul> сразу после заголовка родителя —
   padding-left на вложенном <ul> задаёт отступ, а поскольку он действует
   на каждый уровень вложенности (не только первый), отступ у более глубоких
   уровней складывается сам по себе через обычную вложенность блоков. */
body.redesign .contents ul ul {
    list-style: none;
    margin: 4px 0 12px;
    padding-left: 20px;
    border-left: 2px solid var(--border);
}
body.redesign .contents h3 {
    font-family: var(--font-sans);
    text-transform: uppercase;
    letter-spacing: .08em;
    font-size: .78rem;
    color: var(--text-muted);
    margin: 20px 0 2px;
}
/* ---------- digest cover widget ----------
   Пропорции повторяют старый дизайн (web/css/site.css) — карточка выглядит
   как обложка PDF (соотношение сторон листа A4, 210×297), а не произвольный
   прямоугольник во всю ширину колонки. */
body.redesign .digest-cover-widget {
    display: flex;
    flex-direction: column;
    aspect-ratio: 210 / 297;
    max-width: 280px;
    width: 100%;
    margin-left: auto;
    margin-right: auto;
    background: var(--navy);
    color: var(--navy-text);
    border-radius: 10px;
    padding: 28px 24px;
    margin-bottom: 24px;
    text-decoration: none;
    box-shadow: var(--shadow);
    transition: transform .15s ease, box-shadow .15s ease;
}
body.redesign .digest-cover-widget:hover,
body.redesign .digest-cover-widget:focus {
    color: var(--navy-text);
    text-decoration: none;
    transform: translateY(-2px);
}
body.redesign .digest-cover-widget__content {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    text-align: left;
    min-height: 0;
}
body.redesign .digest-cover-widget__masthead {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 12px;
    border-bottom: 1px solid rgba(244, 241, 234, .2);
    padding-bottom: 12px;
    margin-bottom: 24px;
    font-family: var(--font-sans);
}
body.redesign .digest-cover-widget__wordmark {
    font-size: .45rem;
    letter-spacing: 1px;
    color: var(--accent-bright);
    font-weight: 700;
    white-space: nowrap;
}
body.redesign .digest-cover-widget__eyebrow {
    font-size: .4rem;
    letter-spacing: .75px;
    color: var(--navy-muted);
    text-align: right;
}
body.redesign .digest-cover-widget__kicker {
    font-family: var(--font-sans);
    font-size: .55rem;
    letter-spacing: 1px;
    color: var(--accent-bright);
    font-weight: 700;
    text-transform: uppercase;
    margin-bottom: 6px;
}
body.redesign .digest-cover-widget__title {
    font-family: var(--font-display);
    color: var(--navy-text);
    font-size: 1.05rem;
    font-weight: 700;
    line-height: 1.25;
    margin: 0 0 10px;
    text-align: left;
    width: 100%;
}
body.redesign .digest-cover-widget__rule {
    width: 32px;
    height: 3px;
    background: var(--accent-bright);
    margin-bottom: 10px;
}
body.redesign .digest-cover-widget__period {
    font-family: var(--font-sans);
    font-size: .65rem;
    color: var(--navy-muted);
    margin-bottom: 0;
}
body.redesign .digest-cover-widget__footer {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    gap: 12px;
    font-family: var(--font-sans);
}
body.redesign .digest-cover-widget__signature {
    font-size: .55rem;
    color: var(--navy-muted);
    line-height: 1.4;
}
body.redesign .digest-cover-widget__download {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: .8rem;
    color: var(--accent-bright);
    font-weight: 600;
    white-space: nowrap;
}

/* ---------- footer ---------- */
body.redesign .site-footer {
    background: var(--navy);
    color: var(--navy-muted);
    margin-top: 80px;
}
body.redesign .site-footer a { color: var(--navy-muted); }
body.redesign .site-footer a:hover { color: var(--navy-text); }
body.redesign .site-footer .site-footer__brand { color: var(--navy-text); font-weight: 600; }

/* ---------- баннер согласия на cookies ---------- */
body.redesign .cookie-consent {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1000;
    background: var(--navy);
    color: var(--navy-text);
    box-shadow: 0 -4px 20px rgba(0, 0, 0, .25);
}
body.redesign .cookie-consent[hidden] { display: none; }
body.redesign .cookie-consent__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    flex-wrap: wrap;
    padding: 16px 24px;
}
body.redesign .cookie-consent__text {
    margin: 0;
    max-width: 780px;
    font-size: .82rem;
    color: var(--navy-muted);
}
body.redesign .cookie-consent__text a { color: var(--accent-bright); }
body.redesign .cookie-consent .btn-subscribe { flex: 0 0 auto; white-space: nowrap; }
