/*
 * KursMap — компоненты публичной части поверх темы DigiCMS.
 * Перенос design/assets/edu.css (EM-003) как есть; токены `--edu-*` —
 * в resources/css/tokens.css. Инлайн-стилей нет (CSP `style-src 'self'`).
 */

/* ---------------------------------------------------------------- общее */
.edu-section { margin-block: var(--digi-space-8); }
.edu-section > h2 { font-size: 1.25rem; line-height: var(--digi-line-tight); margin: 0 0 var(--digi-space-4); }
.edu-section__head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: var(--digi-space-2) var(--digi-space-4); margin-bottom: var(--digi-space-4); }
.edu-section__head h2 { font-size: 1.25rem; line-height: var(--digi-line-tight); margin: 0; }
.edu-h1 { font-size: 1.5rem; line-height: var(--digi-line-tight); margin: 0 0 var(--digi-space-2); overflow-wrap: anywhere; }
.edu-lead { color: var(--digi-color-muted); margin: 0 0 var(--digi-space-4); }
.edu-muted { color: var(--digi-color-muted); }
.edu-small { font-size: var(--digi-text-small); }
.edu-list-plain { list-style: none; margin: 0; padding: 0; }
@media (min-width: 40em) { .edu-h1 { font-size: 2rem; } }

/* Кнопка во всю ширину своей ячейки и минимальная зона нажатия 44 px. */
.edu-btn-block { display: block; width: 100%; text-align: center; }
.digi-button, .edu-chip, .edu-toggle a, .edu-iconbtn { min-height: 2.75rem; }
.digi-button { line-height: 1.25; }
.digi-button[disabled], .digi-button[aria-disabled="true"] { opacity: .6; cursor: not-allowed; }

/* ---------------------------------------------------------------- поиск «что / где» */
.edu-hero { padding-block: var(--digi-space-6) var(--digi-space-8); }
.edu-hero h1 { font-size: 1.75rem; line-height: var(--digi-line-tight); margin: 0 0 var(--digi-space-2); }
.edu-hero p { margin: 0 0 var(--digi-space-6); color: var(--digi-color-muted); }
@media (min-width: 40em) { .edu-hero h1 { font-size: 2.5rem; } }

.edu-search {
    display: grid;
    gap: var(--digi-space-3);
    background: var(--digi-color-surface);
    border: 1px solid var(--digi-color-border);
    border-radius: var(--digi-radius);
    padding: var(--digi-space-4);
}
.edu-search label { display: block; font-weight: 600; margin-bottom: var(--digi-space-1); }
.edu-search input {
    width: 100%; min-height: 3rem; padding: var(--digi-space-3); font: inherit;
    color: var(--digi-color-fg); background: var(--digi-color-bg);
    border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius-sm);
}
.edu-search button { width: 100%; min-height: 3rem; }
.edu-search__field { position: relative; }
@media (min-width: 48em) {
    .edu-search { grid-template-columns: 1fr 1fr auto; align-items: end; }
    .edu-search button { width: auto; }
}

/* Подсказки: combobox + listbox (ARIA 1.2). Без JS поле — обычный GET. */
.edu-suggest {
    position: absolute; inset-inline: 0; top: 100%; z-index: 20;
    margin-top: var(--digi-space-1);
    background: var(--digi-color-bg);
    border: 1px solid var(--digi-color-border);
    border-radius: var(--digi-radius);
    box-shadow: var(--digi-shadow);
    max-height: 22rem; overflow-y: auto;
    list-style: none; padding: var(--digi-space-2) 0; margin-inline: 0;
}
.edu-suggest--static { position: static; }
.edu-suggest__group { padding: var(--digi-space-2) var(--digi-space-4) var(--digi-space-1); font-size: var(--digi-text-small); color: var(--digi-color-muted); font-weight: 600; }
.edu-suggest [role="option"] { display: flex; justify-content: space-between; gap: var(--digi-space-3); padding: var(--digi-space-3) var(--digi-space-4); cursor: pointer; }
.edu-suggest [role="option"][aria-selected="true"] { background: var(--digi-color-surface); outline: 2px solid var(--digi-color-focus); outline-offset: -2px; }
.edu-suggest mark { background: none; color: inherit; font-weight: 700; }
.edu-suggest__hint { color: var(--digi-color-muted); font-size: var(--digi-text-small); white-space: nowrap; }
.edu-suggest__empty { padding: var(--digi-space-3) var(--digi-space-4); color: var(--digi-color-muted); }

/* ---------------------------------------------------------------- плитки категорий и городов */
.edu-tiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--digi-space-3); list-style: none; margin: 0; padding: 0; }
@media (min-width: 40em) { .edu-tiles { grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); } }
.edu-tile {
    display: flex; flex-direction: column; gap: var(--digi-space-1);
    min-height: 4.5rem; padding: var(--digi-space-3) var(--digi-space-4);
    border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius);
    background: var(--digi-color-bg); color: var(--digi-color-fg); text-decoration: none;
}
.edu-tile:hover { border-color: var(--digi-color-primary); }
.edu-tile strong { overflow-wrap: anywhere; }
.edu-tile span { font-size: var(--digi-text-small); color: var(--digi-color-muted); }

.edu-chips { display: flex; flex-wrap: wrap; gap: var(--digi-space-2); list-style: none; margin: 0; padding: 0; }
.edu-chip {
    display: inline-flex; align-items: center; gap: var(--digi-space-2);
    padding: var(--digi-space-2) var(--digi-space-3);
    border: 1px solid var(--digi-color-border); border-radius: 999px;
    background: var(--digi-color-bg); color: var(--digi-color-fg);
    font-size: var(--digi-text-small); text-decoration: none;
}
.edu-chip--active { background: var(--digi-color-surface); border-color: var(--digi-color-fg); }
.edu-chip__x { font-weight: 700; }

/* ---------------------------------------------------------------- карточка выдачи */
.edu-results { display: grid; gap: var(--digi-space-4); list-style: none; margin: 0; padding: 0; }

.edu-card {
    display: grid;
    grid-template-columns: 3.5rem minmax(0, 1fr);
    grid-template-areas:
        "logo id"
        "body body"
        "actions actions";
    gap: var(--digi-space-3) var(--digi-space-3);
    padding: var(--digi-space-4);
    background: var(--digi-color-bg);
    border: 1px solid var(--digi-color-border);
    border-radius: var(--digi-radius);
}
.edu-card__logo { grid-area: logo; }
.edu-card__id { grid-area: id; min-width: 0; }
.edu-card__body { grid-area: body; display: grid; gap: var(--digi-space-2); min-width: 0; }
.edu-card__actions { grid-area: actions; display: grid; grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); gap: var(--digi-space-2); align-items: start; }

.edu-card__type { margin: 0 0 var(--digi-space-1); font-size: var(--digi-text-small); color: var(--digi-color-muted); }
.edu-card__title { margin: 0; font-size: 1.0625rem; line-height: var(--digi-line-tight); overflow-wrap: anywhere; }
.edu-card__title a { color: var(--digi-color-fg); text-decoration: none; }
.edu-card__title a:hover { text-decoration: underline; }
.edu-card__place { margin: var(--digi-space-1) 0 0; font-size: var(--digi-text-small); color: var(--digi-color-muted); }
.edu-card__course { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.edu-card__facts { display: flex; flex-wrap: wrap; gap: var(--digi-space-1) var(--digi-space-4); align-items: baseline; }
.edu-card__more { font-size: var(--digi-text-small); }
.edu-card__tools { display: flex; gap: var(--digi-space-2); }

@media (min-width: 40em) {
    .edu-card {
        grid-template-columns: 4rem minmax(0, 1fr) 13rem;
        grid-template-areas:
            "logo id actions"
            "logo body actions";
        gap: var(--digi-space-2) var(--digi-space-4);
        padding: var(--digi-space-4) var(--digi-space-6);
    }
    .edu-card__actions { grid-template-columns: 1fr; align-content: start; }
}

/* Рекламная карточка (EM-017): та же карточка + фон, рамка 2px и метка с текстом.
   Метка — первый потомок в DOM и отдельная строка сетки, а не position:absolute: при тексте 150 %
   абсолютная метка UZ закрывала логотип, при 200 % — название (замер @designer, Playwright 360 px).
   Строка метки есть с первого кадра — сдвигаться нечему (CLS = 0). */
.edu-card--ad {
    position: static;
    padding-top: var(--digi-space-3);
    background: var(--edu-ad-bg);
    border: 2px solid var(--edu-ad-border);
    grid-template-areas:
        "label label"
        "logo id"
        "body body"
        "actions actions";
}
.edu-card--ad.edu-card--plain { grid-template-areas: "label label" "logo id" "body body"; }
.edu-card--ad > .edu-ad-label { grid-area: label; justify-self: end; position: static; max-width: 100%; }
@media (min-width: 40em) {
    .edu-card--ad {
        padding-top: var(--digi-space-3);
        grid-template-areas:
            "label label label"
            "logo id actions"
            "logo body actions";
    }
    .edu-card--ad.edu-card--plain { grid-template-areas: "label label" "logo id" "logo body"; }
}
.edu-card__course--creative { font-weight: 600; }
.edu-card__course--creative a { color: var(--digi-color-fg); }

.edu-ad-label {
    display: inline-flex; align-items: center; gap: var(--digi-space-1);
    padding: 0 var(--digi-space-2);
    min-height: 1.5rem;
    font-size: var(--digi-text-small); font-weight: 700; line-height: 1.5rem;
    color: var(--edu-ad-fg); background: var(--digi-color-bg);
    border: 1px solid var(--edu-ad-border); border-radius: var(--digi-radius-sm);
}
.edu-ad-label__who { font-weight: 400; }
.edu-card--ad > .edu-ad-label { flex-wrap: wrap; white-space: normal; line-height: 1.25rem; padding-block: .125rem; }

/* Логотип: картинка 1:1 с width/height или монограмма. */
.edu-logo {
    display: grid; place-items: center;
    width: 3.5rem; height: 3.5rem; border-radius: var(--digi-radius);
    background: var(--digi-color-surface); border: 1px solid var(--digi-color-border);
    overflow: hidden; font-weight: 700; color: var(--digi-color-muted); font-size: 1.125rem;
}
.edu-logo img { width: 100%; height: 100%; object-fit: cover; }
.edu-logo--lg { width: 4.5rem; height: 4.5rem; font-size: 1.5rem; }
@media (min-width: 40em) { .edu-card .edu-logo { width: 4rem; height: 4rem; } }

/* Теги формата/условий */
.edu-tags { display: flex; flex-wrap: wrap; gap: var(--digi-space-1) var(--digi-space-2); list-style: none; margin: 0; padding: 0; }
.edu-tag { font-size: var(--digi-text-small); padding: 0 var(--digi-space-2); border-radius: var(--digi-radius-sm); background: var(--digi-color-surface); color: var(--digi-color-fg); line-height: 1.75rem; }
.edu-tag--plus { border: 1px solid var(--digi-color-success); color: var(--digi-color-success); background: transparent; }

/* ---------------------------------------------------------------- цена */
.edu-price { margin: 0; }
.edu-price { white-space: nowrap; }
.edu-price strong { font-size: 1.0625rem; }
.edu-price--unknown { white-space: normal; }
.edu-price__unit { color: var(--digi-color-muted); font-size: var(--digi-text-small); }
.edu-price--unknown { color: var(--digi-color-muted); font-style: normal; }
.edu-price--unknown strong { font-weight: 600; color: var(--digi-color-fg); font-size: 1rem; }

/* ---------------------------------------------------------------- рейтинг */
.edu-rating { margin: 0; display: inline-flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--digi-space-1); }
.edu-rating__star { color: var(--edu-star); }
.edu-rating__count { font-size: var(--digi-text-small); }
.edu-rating--few, .edu-rating--none { color: var(--digi-color-muted); font-size: var(--digi-text-small); }

/* ---------------------------------------------------------------- доверие: проверка и свежесть */
.edu-trust { display: flex; flex-wrap: wrap; gap: var(--digi-space-1) var(--digi-space-3); margin: 0; font-size: var(--digi-text-small); }
.edu-badge { display: inline-flex; align-items: center; gap: var(--digi-space-1); font-weight: 600; }
.edu-badge--verified { color: var(--digi-color-success); }
.edu-badge--unverified { color: var(--digi-color-muted); font-weight: 400; }
.edu-badge__icon { display: inline-grid; place-items: center; width: 1.125rem; height: 1.125rem; border-radius: 50%; border: 1.5px solid currentColor; font-size: .75rem; line-height: 1; }
.edu-fresh { color: var(--digi-color-muted); }

/* ---------------------------------------------------------------- скрытый телефон */
.edu-phone { display: grid; gap: var(--digi-space-2); }
.edu-phone__btn {
    display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline; gap: 0 var(--digi-space-2);
    width: 100%; min-height: 2.75rem; padding: var(--digi-space-2) var(--digi-space-3);
    font: inherit; cursor: pointer;
    color: var(--digi-color-primary); background: var(--digi-color-bg);
    border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius);
}
.edu-phone__btn:hover { border-color: var(--digi-color-primary); }
.edu-phone__mask { font-variant-numeric: tabular-nums; color: var(--digi-color-fg); white-space: nowrap; }
.edu-phone__action { font-weight: 600; white-space: nowrap; }
.edu-phone__btn[aria-busy="true"] { cursor: progress; color: var(--digi-color-muted); }
.edu-phone__number {
    display: block; text-align: center; padding: var(--digi-space-2) var(--digi-space-3);
    font-size: 1.125rem; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap;
    border: 1px solid var(--digi-color-success); border-radius: var(--digi-radius);
    user-select: all;
}
.edu-phone__call { display: block; text-align: center; }
.edu-phone__msg { margin: 0; font-size: var(--digi-text-small); }
.edu-phone__msg--error { color: var(--digi-color-error); }
/* Кнопка «Позвонить» (tel:) — только на телефоне: на компьютере tel: открывает чужое приложение. */
@media (min-width: 48em) { .edu-phone__call { display: none; } }

.edu-spinner { display: inline-block; width: 1em; height: 1em; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: edu-spin .8s linear infinite; vertical-align: -0.15em; }
@keyframes edu-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .edu-spinner { animation-duration: 2.4s; } }

/* ---------------------------------------------------------------- иконочные кнопки (избранное, сравнить) */
.edu-iconbtn {
    display: inline-flex; align-items: center; justify-content: center; gap: var(--digi-space-1);
    min-width: 2.75rem; padding: 0 var(--digi-space-2); font: inherit; font-size: var(--digi-text-small);
    color: var(--digi-color-muted); background: transparent; border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius);
    cursor: pointer;
}
.edu-iconbtn[aria-pressed="true"] { color: var(--digi-color-primary); border-color: var(--digi-color-primary); }

/* ---------------------------------------------------------------- листинг: панель и фильтры */
.edu-listing { display: grid; gap: var(--digi-space-6); }
/* Элементы сетки не растягиваются по неразрывному содержимому (цена, маска телефона). */
.edu-listing > *, .edu-profile > *, .edu-map-layout > *, .edu-results > li { min-width: 0; }
@media (min-width: 64em) {
    .edu-listing { grid-template-columns: 16rem minmax(0, 1fr); align-items: start; }
}
@media (min-width: 80em) { .edu-listing--with-aside { grid-template-columns: 16rem minmax(0, 1fr) 15rem; } }

.edu-toolbar { display: flex; flex-wrap: wrap; gap: var(--digi-space-2) var(--digi-space-3); align-items: center; justify-content: space-between; margin-bottom: var(--digi-space-4); }
.edu-toolbar__count { margin: 0; font-weight: 600; }
.edu-toolbar__right { display: flex; flex-wrap: wrap; gap: var(--digi-space-2); align-items: center; }
.edu-sort { display: flex; align-items: center; gap: var(--digi-space-2); font-size: var(--digi-text-small); }
.edu-sort select { font: inherit; min-height: 2.75rem; padding: 0 var(--digi-space-2); border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius-sm); background: var(--digi-color-bg); color: var(--digi-color-fg); }
.edu-sort__note { display: block; color: var(--digi-color-muted); font-size: var(--digi-text-small); }

/* Переключатель «Список / Карта»: две ссылки, у текущей aria-current. */
.edu-toggle { display: inline-flex; border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius); overflow: hidden; }
.edu-toggle a { display: inline-flex; align-items: center; padding: 0 var(--digi-space-4); color: var(--digi-color-fg); text-decoration: none; background: var(--digi-color-bg); }
.edu-toggle a + a { border-inline-start: 1px solid var(--digi-color-border); }
.edu-toggle a[aria-current="page"] { background: var(--digi-color-fg); color: var(--digi-color-bg); font-weight: 600; }

/* Кнопка «Фильтры» видна только на узком экране. */
.edu-filters-open { display: inline-flex; align-items: center; gap: var(--digi-space-2); }
.edu-filters-open__count { display: inline-grid; place-items: center; min-width: 1.5rem; height: 1.5rem; border-radius: 999px; background: var(--digi-color-primary-fg); color: var(--digi-color-primary); font-size: .8125rem; font-weight: 700; }
@media (min-width: 64em) { .edu-filters-open { display: none; } }

/* Панель фильтров. Узкий экран: полноэкранный лист по :target (#filters) —
   работает без JS; JS добавляет перехват фокуса и Esc. Широкий: колонка. */
.edu-filters { background: var(--digi-color-bg); }
.edu-filters__head { display: flex; justify-content: space-between; align-items: center; gap: var(--digi-space-3); margin-bottom: var(--digi-space-4); }
.edu-filters__head h2 { margin: 0; font-size: 1.125rem; }
.edu-filters fieldset { border: 0; border-top: 1px solid var(--digi-color-border); margin: 0; padding: var(--digi-space-4) 0; min-width: 0; }
.edu-filters legend { font-weight: 600; padding: 0; margin-bottom: var(--digi-space-2); }
.edu-filters label { display: flex; gap: var(--digi-space-2); align-items: flex-start; padding-block: var(--digi-space-1); min-height: 2.75rem; align-items: center; }
.edu-filters input[type="checkbox"], .edu-filters input[type="radio"] { width: 1.25rem; height: 1.25rem; flex: none; accent-color: var(--digi-color-primary); }
.edu-filters select, .edu-filters input[type="number"] { width: 100%; min-height: 2.75rem; font: inherit; padding: 0 var(--digi-space-2); border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius-sm); background: var(--digi-color-bg); color: var(--digi-color-fg); }
.edu-filters__range { display: grid; grid-template-columns: 1fr 1fr; gap: var(--digi-space-2); }
.edu-filters__range label { display: block; min-height: 0; font-size: var(--digi-text-small); color: var(--digi-color-muted); }
.edu-filters__count { margin-inline-start: auto; color: var(--digi-color-muted); font-size: var(--digi-text-small); }
.edu-filters__foot { display: grid; grid-template-columns: 1fr 1fr; gap: var(--digi-space-2); padding-top: var(--digi-space-4); border-top: 1px solid var(--digi-color-border); }
.edu-filters__foot > * { display: flex; align-items: center; justify-content: center; text-align: center; }
.edu-filters__close { display: inline-flex; }

@media (max-width: 63.99em) {
    .edu-filters { display: none; }
    .edu-filters:target, .edu-filters--open {
        display: block; position: fixed; inset: 0; z-index: 50;
        overflow-y: auto; padding: var(--digi-space-4) var(--digi-space-4) 0;
    }
    .edu-filters:target .edu-filters__head, .edu-filters--open .edu-filters__head {
        position: sticky; top: 0; z-index: 1; background: var(--digi-color-bg); padding-block: var(--digi-space-2); margin-bottom: 0;
    }
    .edu-filters:target .edu-filters__foot, .edu-filters--open .edu-filters__foot {
        position: sticky; bottom: 0; background: var(--digi-color-bg); padding-bottom: var(--digi-space-4);
    }
}
@media (min-width: 64em) {
    .edu-filters { position: sticky; top: var(--digi-space-4); }
    .edu-filters__close { display: none; }
    .edu-filters__foot { grid-template-columns: 1fr; }
}

.edu-active-filters { margin-bottom: var(--digi-space-4); }

/* Подпись ослабленного результата: показали не то, что спросили, и говорим об этом. */
.edu-notice {
    display: grid; gap: var(--digi-space-2);
    padding: var(--digi-space-3) var(--digi-space-4);
    border: 1px solid var(--digi-color-border); border-inline-start: 4px solid var(--digi-color-primary);
    border-radius: var(--digi-radius-sm); background: var(--digi-color-surface);
    margin-bottom: var(--digi-space-4);
}
.edu-notice p { margin: 0; }
.edu-notice--error { border-inline-start-color: var(--digi-color-error); }
.edu-notice--success { border-inline-start-color: var(--digi-color-success); }

/* Пустое состояние и ошибка — на базе .digi-empty, с действиями. */
.edu-empty { text-align: start; max-width: none; color: var(--digi-color-fg); }
.edu-empty h2 { font-size: 1.125rem; margin: 0 0 var(--digi-space-2); }
.edu-empty p { color: var(--digi-color-muted); margin: 0 0 var(--digi-space-4); }
.edu-empty .edu-chips { margin-bottom: var(--digi-space-4); }

/* Боковое рекламное место: место зарезервировано заранее (CLS), на узком экране не выводится. */
.edu-aside-slot { display: none; }
@media (min-width: 80em) {
    .edu-aside-slot { display: block; position: sticky; top: var(--digi-space-4); min-height: 25rem; }
}

/* Скелетон загрузки: те же габариты, что у карточки (без прыжка). */
.edu-skel { display: block; background: var(--edu-skeleton); border-radius: var(--digi-radius-sm); height: 1rem; }
.edu-skel--title { height: 1.25rem; width: 70%; }
.edu-skel--line { width: 50%; }
.edu-skel--short { width: 30%; }
.edu-skel--logo { width: 3.5rem; height: 3.5rem; border-radius: var(--digi-radius); }
.edu-skel--btn { height: 2.75rem; border-radius: var(--digi-radius); }
.edu-card--skeleton { pointer-events: none; }
@media (prefers-reduced-motion: no-preference) {
    .edu-skel { animation: edu-pulse 1.4s ease-in-out infinite; }
    @keyframes edu-pulse { 50% { opacity: .55; } }
}

/* ---------------------------------------------------------------- карта */
.edu-map { position: relative; height: 60vh; min-height: 22rem; border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius); overflow: hidden; background: var(--digi-color-surface); }
@media (min-width: 64em) { .edu-map { height: 70vh; } }
.edu-map__redo { position: absolute; top: var(--digi-space-3); left: 50%; transform: translateX(-50%); z-index: 5; box-shadow: var(--digi-shadow); white-space: nowrap; }
.edu-map__loading { position: absolute; top: 0; inset-inline: 0; height: 3px; background: var(--digi-color-primary); z-index: 6; }
.edu-map__attrib { position: absolute; bottom: 0; inset-inline-end: 0; font-size: .6875rem; padding: 0 var(--digi-space-1); background: var(--digi-color-bg); color: var(--digi-color-muted); }
.edu-pin {
    position: absolute; z-index: 3; transform: translate(-50%, -100%);
    min-width: 2.75rem; min-height: 2.75rem; display: grid; place-items: center;
    padding: 0 var(--digi-space-2); border-radius: 999px; border: 2px solid var(--digi-color-bg);
    background: var(--digi-color-primary); color: var(--digi-color-primary-fg); font-weight: 700; font-size: var(--digi-text-small);
    box-shadow: var(--digi-shadow); cursor: pointer;
}
.edu-pin--cluster { background: var(--digi-color-fg); color: var(--digi-color-bg); }
.edu-pin--ad { background: var(--edu-ad-bg); color: var(--edu-ad-fg); border-color: var(--edu-ad-border); }
.edu-pin[aria-pressed="true"] { outline: 3px solid var(--digi-color-focus); }
.edu-map__popup { position: absolute; z-index: 8; inset-inline: var(--digi-space-3); bottom: var(--digi-space-3); }
@media (min-width: 40em) { .edu-map__popup { inset-inline: auto var(--digi-space-3); width: 24rem; } }
.edu-map-layout { display: grid; gap: var(--digi-space-4); }
@media (min-width: 64em) { .edu-map-layout { grid-template-columns: minmax(0, 1fr) 26rem; align-items: start; } .edu-map-layout .edu-results { max-height: 70vh; overflow-y: auto; padding-inline-end: var(--digi-space-2); } }

/* ---------------------------------------------------------------- профиль (бренд, филиал, предложение, репетитор) */
.edu-cover { aspect-ratio: 16 / 6; background: var(--digi-color-surface); border-radius: var(--digi-radius); overflow: hidden; margin-bottom: var(--digi-space-4); }
.edu-cover img { width: 100%; height: 100%; object-fit: cover; }
.edu-profile-head { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--digi-space-3) var(--digi-space-4); align-items: start; margin-bottom: var(--digi-space-4); }
.edu-profile-head__info { display: grid; gap: var(--digi-space-2); min-width: 0; }
.edu-profile-head__info .edu-h1 { margin: 0; }
.edu-profile-head__sub { margin: 0; color: var(--digi-color-muted); }

.edu-profile { display: grid; gap: var(--digi-space-6); }
@media (min-width: 64em) { .edu-profile { grid-template-columns: minmax(0, 1fr) 20rem; align-items: start; } }

/* Блок контактов: на широком экране — липкая колонка, на узком — внизу + липкая панель. */
.edu-contact-box { display: grid; gap: var(--digi-space-3); padding: var(--digi-space-4); border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius); background: var(--digi-color-bg); }
.edu-contact-box h2 { font-size: 1.0625rem; margin: 0; }
@media (min-width: 64em) { .edu-contact-box { position: sticky; top: var(--digi-space-4); } }
.edu-channels { display: grid; grid-template-columns: repeat(auto-fit, minmax(7.5rem, 1fr)); gap: var(--digi-space-2); list-style: none; margin: 0; padding: 0; }
.edu-channels a { display: flex; align-items: center; justify-content: center; min-height: 2.75rem; padding: 0 var(--digi-space-2); border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius); color: var(--digi-color-fg); text-decoration: none; font-size: var(--digi-text-small); text-align: center; }
.edu-channels a:hover { border-color: var(--digi-color-primary); }

/* Липкая панель действий на телефоне (профили). Высота резервируется отступом body. */
.edu-sticky-cta {
    position: fixed; inset-inline: 0; bottom: 0; z-index: 40;
    display: grid; grid-template-columns: 1fr 1fr; gap: var(--digi-space-2);
    padding: var(--digi-space-2) var(--digi-space-4) calc(var(--digi-space-2) + env(safe-area-inset-bottom));
    background: var(--digi-color-bg); border-top: 1px solid var(--digi-color-border);
}
.edu-sticky-cta .digi-button, .edu-sticky-cta .edu-phone__btn { padding-inline: var(--digi-space-2); }
.edu-has-sticky { padding-bottom: 4.5rem; }
@media (min-width: 64em) { .edu-sticky-cta { display: none; } .edu-has-sticky { padding-bottom: 0; } }

.edu-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: var(--digi-space-3); margin: 0; }
.edu-facts div { padding: var(--digi-space-3); border-radius: var(--digi-radius-sm); background: var(--digi-color-surface); }
.edu-facts dt { font-size: var(--digi-text-small); color: var(--digi-color-muted); }
.edu-facts dd { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.edu-facts dd.edu-nodata { font-weight: 400; color: var(--digi-color-muted); }

.edu-gallery { display: grid; grid-auto-flow: column; grid-auto-columns: 70%; gap: var(--digi-space-2); overflow-x: auto; overscroll-behavior-x: contain; list-style: none; margin: 0; padding: 0 0 var(--digi-space-2); scroll-snap-type: x mandatory; }
.edu-gallery li { scroll-snap-align: start; aspect-ratio: 4 / 3; background: var(--digi-color-surface); border-radius: var(--digi-radius); overflow: hidden; }
@media (min-width: 40em) { .edu-gallery { grid-auto-columns: 32%; } }

/* Таблица-список курсов профиля */
.edu-offers { display: grid; gap: var(--digi-space-3); list-style: none; margin: 0; padding: 0; }
.edu-offer { display: grid; gap: var(--digi-space-2); padding: var(--digi-space-4); border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius); }
.edu-offer h3 { margin: 0; font-size: 1.0625rem; }
.edu-offer__row { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--digi-space-2) var(--digi-space-4); align-items: baseline; }

/* Филиалы */
.edu-branches { display: grid; gap: var(--digi-space-3); list-style: none; margin: 0; padding: 0; }
@media (min-width: 40em) { .edu-branches { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.edu-branch { display: grid; gap: var(--digi-space-2); padding: var(--digi-space-4); border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius); }
.edu-branch h3 { margin: 0; font-size: 1rem; }
.edu-branch p { margin: 0; }
.edu-hours { display: grid; grid-template-columns: auto 1fr; gap: var(--digi-space-1) var(--digi-space-4); margin: 0; }
.edu-hours dt { color: var(--digi-color-muted); }
.edu-hours dd { margin: 0; }

/* Отзывы */
.edu-reviews { display: grid; gap: var(--digi-space-4); list-style: none; margin: 0; padding: 0; }
.edu-review { padding-bottom: var(--digi-space-4); border-bottom: 1px solid var(--digi-color-border); }
.edu-review__head { display: flex; flex-wrap: wrap; gap: var(--digi-space-1) var(--digi-space-3); align-items: baseline; margin-bottom: var(--digi-space-2); }
.edu-review__head strong { font-weight: 600; }
.edu-review p { margin: 0 0 var(--digi-space-2); }
.edu-review__reply { margin: var(--digi-space-2) 0 0; padding: var(--digi-space-3); background: var(--digi-color-surface); border-radius: var(--digi-radius-sm); }
.edu-review__reply p { margin: 0; }
.edu-rating-summary { display: flex; flex-wrap: wrap; gap: var(--digi-space-2) var(--digi-space-6); align-items: center; margin-bottom: var(--digi-space-4); }
.edu-rating-summary__value { font-size: 2rem; font-weight: 700; line-height: 1; }
.edu-external { display: flex; flex-wrap: wrap; gap: var(--digi-space-2); list-style: none; margin: var(--digi-space-3) 0 0; padding: 0; }

/* Служебные ссылки внизу профиля */
.edu-service-links { display: flex; flex-wrap: wrap; gap: var(--digi-space-2) var(--digi-space-6); list-style: none; margin: var(--digi-space-8) 0 0; padding: var(--digi-space-4) 0 0; border-top: 1px solid var(--digi-color-border); font-size: var(--digi-text-small); }

.edu-legal { display: grid; grid-template-columns: minmax(0, 10rem) minmax(0, 1fr); gap: var(--digi-space-1) var(--digi-space-4); margin: 0; font-size: var(--digi-text-small); }
.edu-legal dt { color: var(--digi-color-muted); }
.edu-legal dd { margin: 0; overflow-wrap: anywhere; }

.edu-faq details { border-bottom: 1px solid var(--digi-color-border); padding-block: var(--digi-space-3); }
.edu-faq summary { cursor: pointer; font-weight: 600; min-height: 2.75rem; display: flex; align-items: center; }
.edu-faq p { margin: var(--digi-space-2) 0 0; }

.edu-links { columns: 2 12rem; gap: var(--digi-space-6); list-style: none; margin: 0; padding: 0; }
.edu-links li { padding-block: var(--digi-space-1); break-inside: avoid; }

/* B2B-полоса */
.edu-b2b { display: grid; gap: var(--digi-space-3); padding: var(--digi-space-6); border-radius: var(--digi-radius); background: var(--digi-color-surface); border: 1px solid var(--digi-color-border); }
.edu-b2b h2 { margin: 0; font-size: 1.25rem; }
.edu-b2b p { margin: 0; color: var(--digi-color-muted); }
@media (min-width: 48em) { .edu-b2b { grid-template-columns: 1fr auto; align-items: center; } }

/* ---------------------------------------------------------------- форма заявки и «сообщить об ошибке» */
.edu-form { max-width: 36rem; }
.edu-form .digi-form__help { margin: var(--digi-space-1) 0 0; }
.edu-form [aria-invalid="true"] { border-color: var(--digi-color-error); border-width: 2px; }
.edu-form fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.edu-form legend { font-weight: 600; padding: 0; margin-bottom: var(--digi-space-2); }
.edu-form__choices { display: grid; gap: var(--digi-space-1); }
.edu-form__choices label { display: flex; align-items: center; gap: var(--digi-space-2); min-height: 2.75rem; font-weight: 400; margin: 0; }
.edu-form__choices input { width: 1.25rem; height: 1.25rem; flex: none; accent-color: var(--digi-color-primary); }
.edu-form__context { display: grid; gap: var(--digi-space-1); padding: var(--digi-space-3); border-radius: var(--digi-radius-sm); background: var(--digi-color-bg); border: 1px solid var(--digi-color-border); font-size: var(--digi-text-small); }
.edu-form__context strong { font-size: var(--digi-text-base); }
.edu-form__phone { display: grid; grid-template-columns: auto minmax(0, 1fr); }
.edu-form__phone span { display: grid; place-items: center; padding: 0 var(--digi-space-3); border: 1px solid var(--digi-color-border); border-inline-end: 0; border-radius: var(--digi-radius-sm) 0 0 var(--digi-radius-sm); background: var(--digi-color-surface); font-variant-numeric: tabular-nums; }
.edu-form__phone input[type="tel"] { border-radius: 0 var(--digi-radius-sm) var(--digi-radius-sm) 0; font-variant-numeric: tabular-nums; }
.edu-form button[type="submit"] { width: 100%; min-height: 3rem; }
@media (min-width: 40em) { .edu-form button[type="submit"] { width: auto; } }
.edu-form__consent { display: flex; gap: var(--digi-space-2); align-items: flex-start; font-weight: 400; }
.edu-form__consent input { width: 1.25rem; height: 1.25rem; flex: none; margin-top: .2rem; }
.edu-form__summary { padding: var(--digi-space-3) var(--digi-space-4); border: 2px solid var(--digi-color-error); border-radius: var(--digi-radius-sm); }
.edu-form__summary h2 { font-size: 1rem; margin: 0 0 var(--digi-space-1); color: var(--digi-color-error); }
.edu-form__summary ul { margin: 0; padding-inline-start: var(--digi-space-4); }

.edu-done { display: grid; gap: var(--digi-space-3); max-width: 36rem; padding: var(--digi-space-6); border-radius: var(--digi-radius); background: var(--digi-color-surface); border-inline-start: 4px solid var(--digi-color-success); }
.edu-done h1, .edu-done h2 { margin: 0; font-size: 1.375rem; line-height: var(--digi-line-tight); }
.edu-done p { margin: 0; }
.edu-done ol { margin: 0; padding-inline-start: var(--digi-space-6); }
.edu-done ol li + li { margin-top: var(--digi-space-1); }

/* ---------------------------------------------------------------- B2B «Реклама для центров» (EM-017, design/ads/ads.css) */
.edu-b2b-hero { display: grid; gap: var(--digi-space-6); align-items: center; margin-block: var(--digi-space-6) var(--digi-space-8); }
.edu-b2b-hero h1 { margin: 0 0 var(--digi-space-3); font-size: clamp(1.625rem, 4vw + .5rem, 2.5rem); line-height: var(--digi-line-tight); }
.edu-b2b-hero .edu-lead { font-size: var(--digi-text-lead); max-width: 40rem; }
.edu-b2b-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), max-content)); gap: var(--digi-space-2); margin-block: var(--digi-space-4) var(--digi-space-2); }
.edu-b2b-actions .digi-button { min-height: 3rem; justify-content: center; text-align: center; }
.edu-b2b-small { font-size: var(--digi-text-small); color: var(--digi-color-muted); max-width: 40rem; margin: 0; }
@media (min-width: 64em) { .edu-b2b-hero { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); } }

.edu-b2b-grid { display: grid; gap: var(--digi-space-4); grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); list-style: none; padding: 0; margin: 0; }
.edu-b2b-grid > li { border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius); background: var(--digi-color-surface); padding: var(--digi-space-4); }
.edu-b2b-grid h3 { margin: 0 0 var(--digi-space-2); font-size: 1.0625rem; line-height: var(--digi-line-tight); }
.edu-b2b-grid p { margin: 0; color: var(--digi-color-muted); }

/* Schematic listing (illustration made of HTML so that the words translate). */
.edu-b2b-mock { border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius); padding: var(--digi-space-3); background: var(--digi-color-bg); display: grid; gap: var(--digi-space-2); }
.edu-b2b-mock__row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--digi-space-2); min-height: 3rem; padding: var(--digi-space-2) var(--digi-space-3); border: 1px solid var(--digi-color-border); border-radius: var(--digi-radius-sm); background: var(--digi-color-surface); font-size: var(--digi-text-small); }
.edu-b2b-mock__row--ad { background: var(--edu-ad-bg); border: 2px solid var(--edu-ad-border); }
.edu-b2b-mock__row .edu-ad-label { margin-inline-start: auto; }
.edu-b2b-mock__num { display: inline-grid; place-items: center; min-width: 1.75rem; height: 1.75rem; border-radius: 50%; background: var(--digi-color-fg); color: var(--digi-color-bg); font-weight: 700; font-size: .8125rem; }
.edu-b2b-where { display: grid; gap: var(--digi-space-6); }
.edu-b2b-where p { margin: 0 0 var(--digi-space-3); }
@media (min-width: 64em) { .edu-b2b-where { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; } }

.edu-b2b-rot { width: 100%; border-collapse: collapse; font-size: var(--digi-text-small); }
.edu-b2b-rot caption { text-align: start; font-weight: 600; margin-bottom: var(--digi-space-2); }
.edu-b2b-rot th, .edu-b2b-rot td { border: 1px solid var(--digi-color-border); padding: var(--digi-space-2); text-align: start; vertical-align: top; }
.edu-b2b-rot td.is-shown { background: var(--edu-ad-bg); color: var(--edu-ad-fg); font-weight: 700; }
.edu-b2b-scroll { overflow-x: auto; }

.edu-b2b-steps { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--digi-space-4); grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); counter-reset: step; }
.edu-b2b-steps > li { counter-increment: step; border-top: 3px solid var(--digi-color-primary); padding-top: var(--digi-space-3); }
.edu-b2b-steps > li::before { content: counter(step); display: inline-grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--digi-color-primary); color: var(--digi-color-primary-fg); font-weight: 700; margin-bottom: var(--digi-space-2); }
.edu-b2b-steps h3 { margin: 0 0 var(--digi-space-1); font-size: 1.0625rem; }
.edu-b2b-steps p { margin: 0; color: var(--digi-color-muted); }
.edu-b2b-cta { border-radius: var(--digi-radius); background: var(--digi-color-surface); border: 1px solid var(--digi-color-border); padding: var(--digi-space-6) var(--digi-space-4); text-align: center; }
.edu-b2b-cta h2 { margin-top: 0; }
.edu-b2b-cta .edu-b2b-actions { justify-content: center; }
.edu-b2b-hero .edu-card__title { margin: 0; }
.edu-b2b-cta p { max-width: 40rem; margin-inline: auto; }
.edu-b2b-steps { margin-bottom: var(--digi-space-6); }
