/**
 * Раздел «Словарь трейдера».
 * Отдельный файл, подключается только на страницах словаря.
 * Общие стили сайта (main.min.css, template_styles.css) не редактируются - п. 2.4 ТЗ.
 *
 * Значения взяты из действующего оформления сайта (п. 7.2 ТЗ):
 *   шрифт Montserrat, текст 14px/#484848, H1 30px/700/uppercase/#222,
 *   акцент #ff7d14, синий #5775b9, контейнер 1260px, колонки 55% / 34%.
 */

.vocab,
.vocab-detail {
    --vocab-blue: #5775b9;
    --vocab-blue-dark: #4f6eb6;
    --vocab-orange: #ff7d14;
    --vocab-text: #484848;
    --vocab-light: #9b9b9b;
    --vocab-border: #e5e5e5;
    --vocab-soft: #fafafa;
    --vocab-heading: #222;
    --vocab-radius: 10px;
    --vocab-pill: 40px;

    font: 400 14px/1.3 Montserrat, sans-serif, Arial, Helvetica, Verdana;
    color: var(--vocab-text);
}

.vocab *,
.vocab *::before,
.vocab *::after,
.vocab-detail *,
.vocab-detail *::before,
.vocab-detail *::after {
    box-sizing: border-box;
}

.vocab-icon {
    width: 18px;
    height: 18px;
    fill: currentColor;
    flex: none;
    display: block;
}

/* ------------------------------------------------------------------ шапка */

/* H1 как на сайте: 30px, 700, верхний регистр, #222 (п. 7.2 ТЗ) */
.vocab-h1 {
    font-size: 30px;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--vocab-heading);
    margin: 0 0 20px;
}

.vocab-intro {
    font-size: 15px;
    margin-bottom: 40px;
}

.vocab-intro p {
    line-height: 1.7;
    margin: 0 0 30px;
}

.vocab-intro p:last-child {
    margin-bottom: 0;
}

/* ------------------------------------------------------------------ поиск */

.vocab-search {
    margin-bottom: 22px;
}

.vocab-search__box {
    position: relative;
}

.vocab-search__box input {
    width: 100%;
    padding: 16px 54px 16px 22px;
    border: 1px solid var(--vocab-border);
    border-radius: var(--vocab-radius);
    font-size: 15px;
    font-family: inherit;
    color: var(--vocab-text);
    outline: none;
    transition: border-color .2s ease, box-shadow .2s ease;
}

.vocab-search__box input::placeholder {
    color: var(--vocab-light);
}

.vocab-search__box input:focus {
    border-color: var(--vocab-blue);
    box-shadow: 0 0 0 4px rgba(87, 117, 185, .12);
}

.vocab-search__glass {
    position: absolute;
    right: 22px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--vocab-light);
}

/* крестик сброса появляется, как только в поле что-то введено, и заменяет лупу */
.vocab-search__clear {
    position: absolute;
    right: 14px;
    top: 50%;
    transform: translateY(-50%);
    width: 28px;
    height: 28px;
    border: none;
    background: var(--vocab-soft);
    border-radius: 50%;
    display: none;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--vocab-light);
    transition: background-color .18s ease, color .18s ease;
}

.vocab-search__clear .vocab-icon {
    width: 10px;
    height: 10px;
}

.vocab-search__clear:hover {
    background: var(--vocab-blue);
    color: #fff;
}

.vocab-search__box.has-value .vocab-search__glass {
    display: none;
}

.vocab-search__box.has-value .vocab-search__clear {
    display: flex;
}

.vocab-search__submit {
    margin-top: 10px;
    padding: 10px 24px;
    border: 1px solid var(--vocab-orange);
    background: #fff;
    color: var(--vocab-text);
    font: 600 14px/1 inherit;
    text-transform: uppercase;
    cursor: pointer;
}

/* -------------------------------------------------- подсказки и счётчик */

.vocab-hints {
    font-size: 12.5px;
    color: var(--vocab-light);
    margin: -10px 0 20px;
}

.vocab-hint {
    color: var(--vocab-blue);
    font-weight: 600;
    text-decoration: underline;
    text-decoration-style: dotted;
    text-underline-offset: 2px;
    cursor: pointer;
}

.vocab-hint:hover {
    color: var(--vocab-orange);
}

.vocab-meta {
    font-size: 12.5px;
    color: var(--vocab-light);
    margin: 0 0 16px;
}

.vocab-meta strong {
    color: var(--vocab-text);
    font-weight: 700;
}

/* ------------------------------------------------------- вкладки языков */

.vocab-langs {
    display: inline-flex;
    background: var(--vocab-soft);
    border-radius: var(--vocab-pill);
    padding: 4px;
    margin-bottom: 22px;
}

.vocab-langs__btn {
    border: none;
    background: transparent;
    padding: 9px 26px;
    border-radius: var(--vocab-pill);
    font-family: inherit;
    font-weight: 700;
    font-size: 12.5px;
    letter-spacing: .04em;
    color: var(--vocab-light);
    cursor: pointer;
    text-decoration: none;
    transition: all .2s ease;
}

.vocab-langs__btn.is-active {
    background: var(--vocab-blue);
    color: #fff;
    box-shadow: 0 6px 14px rgba(87, 117, 185, .35);
}

/* ------------------------------------------------------------- алфавит */

/* Алфавит прилипает к верху экрана - но ниже шапки сайта, которая при
   прокрутке становится фиксированной (.header_fixed). Высоту шапки
   подставляет скрипт в переменную --vocab-sticky-top. */
.vocab-alphabet {
    position: sticky;
    top: var(--vocab-sticky-top, 0px);
    z-index: 6;
    background: #fff;
    padding: 14px 0;
    border-bottom: 1px solid var(--vocab-border);
    margin-bottom: 6px;
}

.vocab-alpha-row {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
}

.vocab-letter {
    min-width: 32px;
    height: 32px;
    padding: 0 6px;
    border-radius: 50%;
    border: none;
    background: var(--vocab-soft);
    color: var(--vocab-text);
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 700;
    cursor: pointer;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background-color .18s ease, color .18s ease;
}

.vocab-letter--all {
    width: auto;
    padding: 0 18px;
    border-radius: var(--vocab-pill);
}

.vocab-letter:hover:not(.is-disabled) {
    background: var(--vocab-blue-dark);
    color: #fff;
}

.vocab-letter.is-active {
    background: var(--vocab-blue);
    color: #fff;
}

.vocab-letter.is-disabled {
    opacity: .32;
    cursor: default;
    pointer-events: none;
}

/* на экранах от 1150px весь алфавит помещается в одну строку - п. 5.5 ТЗ */
@media (min-width: 1150px) {
    .vocab-alpha-row {
        flex-wrap: nowrap;
        gap: 5px;
        overflow-x: auto;
        scrollbar-width: none;
    }

    .vocab-alpha-row::-webkit-scrollbar {
        display: none;
    }

    .vocab-letter {
        flex: 0 0 auto;
        min-width: 30px;
        padding: 0 4px;
    }

    .vocab-letter--all {
        padding: 0 16px;
    }
}

/* -------------------------------------------------------- список терминов */

.vocab-list {
    padding-top: 18px;
}

.vocab-group {
    display: flex;
    gap: 30px;
    padding: 28px 0;
    border-bottom: 1px solid var(--vocab-border);
    /* при переходе по букве группа не должна уезжать под шапку и под алфавит */
    scroll-margin-top: calc(var(--vocab-sticky-top, 0px) + var(--vocab-alpha-height, 60px) + 12px);
}

.vocab-group__marker {
    flex: 0 0 50px;
    font-size: 38px;
    font-weight: 800;
    color: var(--vocab-blue);
    line-height: 1;
}

.vocab-grid {
    flex: 1;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 26px 44px;
}

.vocab-card__title {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    font-size: 16px;
    font-weight: 700;
    color: var(--vocab-blue);
    text-decoration: none;
    margin-bottom: 8px;
}

.vocab-card__title:hover {
    color: var(--vocab-orange);
}

.vocab-card__badge {
    position: relative;
    font-size: 9.5px;
    letter-spacing: .03em;
    text-transform: uppercase;
    color: #fff;
    background: var(--vocab-light);
    border-radius: 4px;
    padding: 2px 6px;
    font-weight: 700;
    transition: background-color .18s ease;
}

.vocab-card__badge:hover {
    background: var(--vocab-blue);
}

.vocab-card__badge:hover::after {
    content: attr(data-tip);
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
    bottom: calc(100% + 8px);
    white-space: nowrap;
    z-index: 30;
    background: var(--vocab-heading);
    color: #fff;
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0;
    text-transform: none;
    padding: 7px 11px;
    border-radius: 7px;
    box-shadow: 0 10px 24px rgba(0, 0, 0, .2);
}

/* краткое определение: максимум 3 строки, дальше обрезка - п. 5.6 ТЗ */
.vocab-card__excerpt {
    font-size: 14px;
    line-height: 1.7;
    color: var(--vocab-text);
    margin: 0;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.vocab-empty {
    display: none;
    text-align: center;
    padding: 70px 20px;
    color: var(--vocab-light);
    font-size: 15px;
}

.vocab-empty.is-visible {
    display: block;
}

.vocab-loader {
    text-align: center;
    padding: 26px 20px;
    color: var(--vocab-light);
    font-size: 13px;
}

/* Скрытые элементы: собственный display перебивает браузерное [hidden],
   поэтому гасим явно - иначе постраничная навигация остаётся видимой
   даже после того, как скрипт её отключил. */
.vocab [hidden],
.vocab-detail [hidden],
.vocab-pager[hidden],
.vocab-loader[hidden] {
    display: none !important;
}

/* постраничная навигация: запасной путь без JavaScript - п. 5.7 ТЗ */
.vocab-pager {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 26px 0;
}

.vocab-pager__item {
    min-width: 32px;
    height: 32px;
    padding: 0 8px;
    border-radius: 50%;
    background: var(--vocab-soft);
    color: var(--vocab-text);
    font-size: 12.5px;
    font-weight: 700;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.vocab-pager__item.is-current {
    background: var(--vocab-blue);
    color: #fff;
}

/* ------------------------------------------------------- страница термина */

.vocab-detail__back {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border: none;
    background: none;
    cursor: pointer;
    font-family: inherit;
    font-size: 13px;
    font-weight: 700;
    color: var(--vocab-light);
    text-decoration: none;
    padding: 0;
    margin: 22px 0 20px;
}

.vocab-detail__back .vocab-icon {
    width: 13px;
    height: 13px;
}

.vocab-detail__back:hover {
    color: var(--vocab-blue);
}

.vocab-detail__head {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 14px;
    margin: 0 0 28px;
}

/* У сайта h1 задан width:100% - в строке с бейджем он занимал бы всю ширину
   и выталкивал бейдж на следующую строку. Селектор из трёх классов, чтобы
   перебить правило сайта, не прибегая к !important. */
.vocab-detail .vocab-detail__main .vocab-detail__head h1 {
    font-size: 30px;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--vocab-heading);
    margin: 0;
    width: auto;
    max-width: none;
    display: inline-block;
}

.vocab-detail__badge {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 14px;
    font-weight: 600;
    color: var(--vocab-blue);
    background: rgba(87, 117, 185, .08);
    border: 1px solid rgba(87, 117, 185, .25);
    padding: 5px 14px;
    border-radius: var(--vocab-pill);
}

/* метка языка: 9px были нечитаемы, особенно белым по синему */
.vocab-detail__badge::before {
    content: attr(data-lang);
    font-size: 12px;
    line-height: 1;
    font-weight: 700;
    letter-spacing: .06em;
    color: #fff;
    background: var(--vocab-blue);
    border-radius: 4px;
    padding: 4px 7px;
}

/* Колонки не описываем: страница термина использует сетку сайта
   (.text-row + .text-info.w-100 + .text-right-aside.width-30),
   ту же, что на страницах Журнала - контент 66% / сайдбар 34%. */
.vocab-detail__row {
    padding-top: 22px;
    padding-bottom: 20px;
}

.vocab-detail__body {
    font-size: 15px;
}

.vocab-detail__body p {
    line-height: 1.7;
    color: var(--vocab-text);
    margin: 0 0 30px;
}

/* краткое определение выделенным блоком - п. 6.2 ТЗ */
.vocab-detail__lead {
    font-size: 17px;
    line-height: 1.6;
    font-weight: 500;
    color: var(--vocab-heading);
    border-left: 4px solid var(--vocab-orange);
    padding-left: 18px;
    margin: 0 0 30px;
}

.vocab-detail__text h2 {
    font-size: 20px;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--vocab-heading);
    margin: 34px 0 14px;
}

.vocab-detail__text h2:first-child {
    margin-top: 0;
}

/* сайдбар ведёт себя как в статьях - ширину и отступы задаёт сайт */

/* ------------------------------------------- «Рекомендуем к прочтению»

   Оформление берётся из общих стилей сайта (блок random_news в статьях):
   классы .text-info.w-100 .random_news .article__col и т. д. уже описаны
   в main.min.css и template_styles.css. Здесь - только сетка в три карточки,
   потому что у сайта она задаётся флексом родителя.                        */

.vocab-recs .random_news .article.article_base {
    display: flex;
    flex-wrap: wrap;
}

.vocab-recs .random_news .article.article_base .article__col {
    border-bottom: none;
    margin-bottom: 0;
    padding-bottom: 0;
}

.vocab-recs .random_news .article__item {
    border: none;
    padding: 0;
    background: none;
}


/* ------------------------------------------------------------ адаптивность */

@media (max-width: 900px) {
    .vocab-detail__aside {
        margin-top: 30px;
    }

    .vocab-detail__aside .rand_banners {
        flex-direction: row;
        flex-wrap: wrap;
        gap: 20px;
        max-width: none;
    }

    .vocab-detail__aside .rand_banners .banner_item {
        flex: 1 1 260px;
        margin-bottom: 0;
    }
}

@media (max-width: 700px) {
    .vocab-grid {
        grid-template-columns: 1fr;
    }

    .vocab-group {
        gap: 16px;
    }

    .vocab-group__marker {
        flex-basis: 32px;
        font-size: 26px;
    }

    .vocab-detail__head h1,
    .vocab-h1 {
        font-size: 22px;
    }

    .vocab-intro {
        font-size: 14px;
        margin-bottom: 30px;
    }

    .vocab-hints {
        font-size: 11.5px;
    }

    .vocab-langs {
        display: flex;
        width: 100%;
    }

    .vocab-langs__btn {
        flex: 1;
        text-align: center;
        padding: 9px 10px;
    }

    .vocab-letter {
        min-width: 28px;
        height: 28px;
        font-size: 11.5px;
    }

    .vocab-detail__badge {
        font-size: 12px;
        padding: 4px 10px;
    }

    .vocab-detail__lead {
        font-size: 16px;
    }

    .vocab-also__card {
        flex: 0 0 82%;
    }
}

/* ------------------------------------------- цитаты в тексте термина

   Списки шаблон оформляет утилитарными классами (.ul-style / .ol-style), и компонент
   проставляет их сам. Для цитат такого класса в шаблоне нет: оформление задано только
   селектором `.text blockquote` в main.min.css, а текст термина лежит в своём контейнере.
   Поэтому правила повторены здесь один в один - включая брейкпоинты 768 и 1200 px.
   Источник: /local/templates/main/css/main.min.css, блок `.text blockquote`.
   Путь к иконке абсолютный: в шаблоне он задан относительно папки css.                   */

.vocab-detail__text blockquote {
    position: relative;
    padding: 20px 20px 20px 40px;
    margin-bottom: 20px;
    font-style: italic;
    background-color: #fafafa;
}

.vocab-detail__text blockquote:before {
    content: '';
    position: absolute;
    width: 22px;
    height: 18px;
    left: 8px;
    top: 24px;
    background: center/cover no-repeat url(/local/templates/main/images/icon-quotes.svg);
}

@media only screen and (min-width: 768px) {
    .vocab-detail__text blockquote {
        padding-left: 60px;
    }

    .vocab-detail__text blockquote:before {
        left: 18px;
        top: 22px;
    }
}

@media only screen and (min-width: 1200px) {
    .vocab-detail__text blockquote {
        padding: 30px 54px 30px 136px;
    }

    .vocab-detail__text blockquote:before {
        width: 36px;
        height: 30px;
        left: 50px;
        top: 30px;
    }
}
