    /* ── Переменные из исходника ─────────────────────────────── */
    :root {
        --zb:#0f1117;--zb2:#161922;--zb3:#1e2330;
        --zbr:#2a3040;--zbr2:#3a4560;
        --za:#c8a96e;--za2:#e8c98e;
        --zt:#f0f2f8;--zt2:#aab4c8;--zt3:#6a7a94;
        --ev-header-h:56px; /* высота фиксированной чёрной шапки меню */
    }

    /* ── Глобальная страховка от выезда за края экрана ──────────────
       overflow-x:clip, а НЕ hidden: clip не создаёт скролл-контейнер,
       поэтому не ломает position:sticky и scrollIntoView у потомков
       (именно на этом раньше спотыкалась прокрутка к форме заявки). */
    html, body { overflow-x:clip; max-width:100%; }
    main img, main svg, main iframe, main table { max-width:100%; }
    main { overflow-wrap:break-word; }

    /* ── Мобильное меню ────────────────────────────────────────── */
    .mmenu-bar { display:none;position:fixed;top:0;left:0;right:0;height:56px;background:#000;z-index:9000;align-items:stretch;justify-content:space-between;box-sizing:border-box; }
    .mmenu-btn { background:none;border:none;cursor:pointer;width:56px;height:56px;display:flex;align-items:center;justify-content:center;flex-shrink:0;-webkit-tap-highlight-color:transparent;outline:none; }
    .mmenu-btn:focus,.mmenu-btn:active,.mmenu-btn:focus-visible,.mmenu-btn:focus-within { background:none !important;outline:none !important;box-shadow:none !important;border:none !important; }
    .mmenu-call { color:#fff;font-weight:600;font-size:14px;text-decoration:none;text-transform:uppercase;background:#69BB60;padding:0 15px;outline:none;display:block;height:56px;line-height:56px;box-sizing:border-box;white-space:nowrap;flex-shrink:0; }
    .mmenu-call:hover  { color:#fff;background:#71C967;text-decoration:none; }
    .mmenu-call:active { color:#fff;background:#53A14A;text-decoration:none; }
    .mmenu-list { display:none;position:fixed;top:56px;left:0;right:0;background:#000;z-index:8999;flex-direction:column;max-height:calc(100vh - 56px);overflow-y:auto; }
    .mmenu-list.is-open { display:flex; }
    .mmenu-list a { display:block;padding:14px 20px;color:#fff;text-decoration:none;font-size:14px;font-family:Helvetica,Arial,sans-serif;text-transform:uppercase;letter-spacing:.04em;font-weight:400;border-bottom:1px solid #1a1a1a;-webkit-tap-highlight-color:transparent; }
    .mmenu-list a:hover { background:#69BB60;color:#fff;text-decoration:none; }

    /* ── Прилипающее и основное меню ──────────────────────────── */
    .sticky-menu { position:fixed;top:0;left:0;right:0;background:#000;z-index:1001;transform:translateY(-100%);transition:transform 0.3s ease;height:56px;display:flex;align-items:stretch;width:100%; }
    .sticky-menu.visible { transform:translateY(0); }
    nav.desktop-menu { display:flex;justify-content:flex-start;align-items:stretch;background:#000;padding:0;margin:0;height:56px;flex-wrap:nowrap;position:relative;z-index:1; }
    nav.desktop-menu span { margin:0;padding:0; }
    nav.desktop-menu span a { color:white;text-decoration:none;transition:background 0.3s;white-space:nowrap;height:56px;line-height:56px;display:inline-block;box-sizing:border-box; }
    nav.desktop-menu span a:hover { background:#69BB60; }
    nav.desktop-menu .block-btn { margin-left:auto;margin-right:0; }
    nav.desktop-menu .block-btn a { background:#69BB60;color:white;text-decoration:none;transition:background 0.3s;height:56px;line-height:56px;display:block;box-sizing:border-box; }
    nav.desktop-menu .block-btn a:hover { background:#71C967; }
    body header nav.desktop-menu span a:hover { background:#69BB60; }
    body .sticky-menu .desktop-menu span { margin:0;padding:0;border:0;vertical-align:baseline; }
    body .sticky-menu .desktop-menu { margin:0;padding:0;border:0;font-size:0;display:block; }
    body .sticky-menu .desktop-menu span a { font-size:14px; }
    body .sticky-menu .desktop-menu .block-btn a,
    body .sticky-menu .desktop-menu .block-btn a.btn-green,
    body .sticky-menu .block-btn a.btn-green,
    body .sticky-menu a.btn-green { margin:0; }

    /* ── Соцдок-футер ──────────────────────────────────────────── */
    .social-proof-footer { background:linear-gradient(135deg,#69BB60 0%,#5da552 100%);padding:30px 0;color:white;margin:0; }
    .social-proof-footer .container { max-width:1240px !important;margin:0 auto !important;padding:0 20px !important;width:100% !important;box-sizing:border-box !important; }
    .social-proof-content { display:flex;align-items:center;justify-content:space-between;gap:40px; }
    .stats-compact { display:flex;gap:30px;flex-shrink:0; }
    .stat-mini { display:flex;flex-direction:column;gap:4px; }
    .stat-mini strong { font-size:54px;font-weight:700;line-height:1; }
    .stat-mini span { font-size:14px;opacity:.95;white-space:nowrap; }
    .reviews-slider { position:relative;min-height:110px;overflow:hidden;padding:12px 20px;background:rgba(255,255,255,.25);border-radius:6px;flex:0 1 550px; }
    .review-slide { position:absolute;top:12px;left:20px;right:20px;opacity:0;transition:opacity .6s ease; }
    .review-slide.active { opacity:1; }
    .review-slide .stars { font-size:16px;margin-bottom:8px;line-height:1; }
    .review-text { font-size:14px;line-height:1.4;margin:0 0 6px;font-style:italic; }
    .review-author { font-size:12px;opacity:.9; }
    .cta-compact { flex-shrink:0;display:flex;flex-direction:column;gap:10px;align-items:center; }
    .btn-compact,.btn-reviews { background:transparent;color:white;border:2px solid white;padding:12px 24px;border-radius:6px;font-size:14px;font-weight:700;text-transform:uppercase;text-decoration:none;display:inline-block;transition:all .3s;white-space:nowrap;text-align:center;min-width:220px; }
    .btn-compact:hover,.btn-reviews:hover { background:white;color:#69BB60;text-decoration:none;transform:translateY(-2px); }

    /* ── Медиа ─────────────────────────────────────────────────── */
    @media (max-width:1300px) {
        .mmenu-bar { display:flex; }
        header .header { display:none; }
        nav.desktop-menu { display:none !important; }
        .sticky-menu { display:none !important; }
        body { padding-top:56px; }
    }
    @media (min-width:1301px) {
        .mmenu-bar { display:none !important; }
        .mmenu-list { display:none !important; }
        body { padding-top:0; }
    }
    @media (max-width:768px) {
        .social-proof-content { flex-direction:column;gap:20px;text-align:center; }
        .stats-compact { justify-content:space-around;width:100%;gap:12px;padding-bottom:15px;border-bottom:1px solid rgba(255,255,255,.2); }
        .stat-mini { align-items:center;min-width:0; }
        .reviews-slider { width:100%;flex:none;min-height:120px;box-sizing:border-box; }
    }
    @media (max-width:480px) {
        .stat-mini strong { font-size:38px; }
        /* nowrap на подписях («профильных программ обучения») делал блок
           шире экрана — на узких экранах переносим по словам. */
        .stat-mini span { white-space:normal;font-size:12px;line-height:1.3; }
        .btn-compact,.btn-reviews { min-width:0;width:100%;max-width:100%;white-space:normal; }
        .cta-compact .btn-compact { min-width:0 !important; }
    }

    /* ══════════════════════════════════════════════════════════════
       HERO — общий для листинга и детальных страниц
    ══════════════════════════════════════════════════════════════ */
    .ev-hero {
        position:relative;
        overflow:hidden;
        background:linear-gradient(135deg,#f8fdf9 0%,#e8f5e9 50%,#fff8e1 100%);
        margin:0;
        padding:0;
    }
    .ev-hero::before {
        content:'';
        position:absolute;top:-50%;right:-20%;
        width:80%;height:150%;
        background:radial-gradient(circle,rgba(105,187,96,.12) 0%,transparent 70%);
        pointer-events:none;
    }
    .ev-hero::after {
        content:'';
        position:absolute;bottom:-30%;left:-10%;
        width:50%;height:100%;
        background:radial-gradient(circle,rgba(240,200,8,.08) 0%,transparent 60%);
        pointer-events:none;
    }
    .ev-hero-inner {
        position:relative;z-index:2;
        padding:56px 25px 108px;
        box-sizing:border-box;
        max-width:100%;
        display:flex; align-items:flex-start; justify-content:space-between; gap:24px; flex-wrap:wrap;
    }
    .ev-hero-inner > div { min-width:0; max-width:100%; }
    .ev-hero h1 {
        font-size:clamp(22px,3.8vw,46px);
        font-weight:300;
        color:#2e3440;
        margin:0;
        line-height:1.2;
        letter-spacing:-.02em;
        max-width:760px;
        /* Длинные названия курсов — одно слово может быть шире экрана.
           hyphens намеренно НЕ включаем: браузер рвал слова по слогам
           («сотрудни-ков»), в заголовке это выглядит неряшливо.
           break-word сработает только если слово вообще не помещается. */
        overflow-wrap:break-word;
        hyphens:none;
    }
    .ev-hero h1 strong { font-weight:700; }
    .ev-hero-cta {
        display:inline-block;
        flex-shrink:0;
        padding:14px 28px;
        background:transparent;
        color:#1a2330;
        border:2px solid #1a2330;
        border-radius:6px;
        font-size:13px;
        font-weight:600;
        text-transform:uppercase;
        letter-spacing:.05em;
        text-decoration:none;
        white-space:nowrap;
        transition:all .2s;
        margin-top:4px;
    }
    .ev-hero-cta:hover { background:#1a2330; color:#fff; text-decoration:none; }
    .ev-hero-wave {
        position:absolute;bottom:0;left:0;right:0;z-index:3;
        height:88px;overflow:hidden;pointer-events:none;
    }
    .ev-hero-wave svg { width:100%;height:100%;display:block; }

    @media (max-width:768px) {
        .ev-hero-inner { padding:36px 20px 90px; }
        .ev-hero h1 { font-size:clamp(20px,6vw,30px); }
        .ev-hero-wave { height:60px; }
    }
    @media (max-width:480px) {
        .ev-hero-inner { padding:28px 16px 76px; }
        /* nowrap на кнопке «Индивидуальная программа» шире 320px-экрана */
        .co-hero-btns { width:100%; }
        .ev-hero-cta { white-space:normal; padding:13px 18px; }
    }

    /* ══════════════════════════════════════════════════════════════
       БЕЛАЯ ЗОНА С НАПЛЫВАЮЩИМ ФОТО (паттерн со страницы /poisk/)
       Используется на детальных страницах мероприятий — фото лектора.
    ══════════════════════════════════════════════════════════════ */
    /* max-width:100vw включал ширину вертикальной полосы прокрутки и сам
       давал лишние ~15px по горизонтали на десктопе — заменено на 100%.
       Своего overflow здесь больше нет: любой overflow у предка мешает
       position:sticky у формы заявки. Горизонтальный выезд ловится
       глобальным overflow-x:clip на html/body (см. начало файла). */
    .ev-zone-outer { background:transparent; max-width:100%; }
    .ev-zone {
        max-width:1240px;
        margin:0 auto;
        background:#ffffff;
        box-sizing:border-box;
        padding:48px 25px 90px;
        position:relative;
    }
    .ev-zone-photo-link {
        position:absolute !important;
        right:0 !important;
        bottom:0 !important;
        top:auto !important;
        left:auto !important;
        width:380px !important;
        max-width:38% !important;
        display:block;
        z-index:50;
        pointer-events:auto;
        margin:0 !important;
        float:none !important;
        line-height:0;
    }
    .ev-zone-photo { display:block;width:100%;height:auto;margin:0;border-radius:4px 4px 0 0; }
    .ev-zone-photo-caption {
        position:absolute;
        left:0; right:0; bottom:0;
        background:rgba(255,255,255,.94);
        padding:14px 16px;
        text-align:center;
        font-family:system-ui,sans-serif;
    }
    .ev-zone-photo-caption .name {
        font-size:19px; font-weight:700; color:#c8a96e;
        display:block; line-height:1.3;
    }
    .ev-zone-photo-caption .role {
        font-size:14px; font-weight:400; color:#5a6472;
        display:block; line-height:1.3; margin-top:2px;
    }
    .ev-zone-content { max-width:640px; }
    @media (max-width:900px) {
        .ev-zone-photo-link { position:static !important; width:220px !important; max-width:60% !important; margin:0 auto 28px !important; }
        .ev-zone-content { max-width:100%; }
    }
    /* Блок «С этим курсом также смотрят» — раньше отступы были прописаны
       inline на самом элементе и поэтому не уменьшались на телефоне. */
    .ev-zone--related { padding:4px 25px 40px; }
    @media (max-width:768px) {
        .ev-zone-outer { padding:0; }
        .ev-zone { padding:28px 16px 60px; }
        .ev-zone--related { padding:4px 16px 32px; }
    }
    @media (max-width:480px) {
        .ev-zone { padding:22px 12px 48px; }
        .ev-zone--related { padding:4px 12px 28px; }
    }

    /* ══════════════════════════════════════════════════════════════
       ДВУХКОЛОНОЧНАЯ РАСКЛАДКА — общая для /seminar/ и /seminar/{slug}/
       ЛЕВАЯ колонка меняется: список мероприятий (index.php) ИЛИ
       цены/условия конкретного мероприятия (event.php).
       ПРАВАЯ колонка тоже общая: фото лектора + форма заявки.
    ══════════════════════════════════════════════════════════════ */
    /* align-items:stretch — правая колонка тянется на всю высоту ряда.
       Это «дорожка», по которой едет липкий синий блок заявки (см. ниже). */
    .ev-split { display:flex; align-items:stretch; gap:44px; }
    .ev-split-left { flex:1 1 0%; min-width:0; max-width:100%; }
    /* Сама колонка НЕ sticky и НЕ имеет собственной полосы прокрутки —
       именно из-за этого раньше прокрутка к форме уезжала внутрь колонки
       и останавливалась на подписи под фото лектора. Липким сделан
       только синий блок с формой. */
    .ev-split-right {
        width:480px; flex-shrink:0; max-width:100%; min-width:0; padding-top:12px;
    }
    .ev-split-heading {
        font-weight:300; font-size:clamp(20px,2.6vw,28px); letter-spacing:-.02em;
        color:#2e3440; margin:0 0 22px; text-align:center;
    }
    @media (max-width:1300px) {
        /* align-items:flex-start из базового правила в колоночном режиме
           даёт колонкам ширину по содержимому (fit-content) вместо 100% —
           отсюда и разъезжались карусель, таблица цен и программа. */
        .ev-split { flex-direction:column; align-items:stretch; gap:28px; }
        .ev-split-left, .ev-split-right { flex:0 0 auto; width:100%; max-width:100%; }
    }

    /* ── Слот с большим фото лектора (справа). На /seminar/ — Евсташенков
       (из партиала), на /seminar/{slug}/ — лектор конкретного мероприятия.
       Один и тот же view-transition-name на обеих страницах даёт браузеру
       (десктопный Chrome/Edge) анимировать переход между ними как единое
       фото при обычной ссылочной навигации — без единой строчки JS. ── */
    .ev-photo-slot {
        position:relative;
        border-radius:10px 10px 0 0;
        overflow:hidden;
        line-height:0;
        view-transition-name: ev-lecturer-photo;
    }
    .ev-photo-slot img { display:block; width:100%; height:auto; }
    .ev-photo-slot-caption {
        position:absolute; left:0; right:0; bottom:0;
        background:rgba(255,255,255,.94);
        padding:14px 16px;
        text-align:center;
        font-family:system-ui,sans-serif;
        box-sizing:border-box;
    }
    .ev-photo-slot-caption .name { display:block; font-size:19px; font-weight:700; color:#c8a96e; line-height:1.3; }
    .ev-photo-slot-caption .role { display:block; font-size:15px; font-weight:400; color:#5a6472; line-height:1.3; margin-top:2px; }

    /* ── Синяя подложка с формой заявки, под фото ── */
    .ev-form-section { margin-top:0; background:#185FA5; border-radius:10px; padding:24px; box-sizing:border-box; max-width:100%; }
    @media (max-width:480px) { .ev-form-section { padding:14px; } }

    /* ── Липкая форма заявки (только десктоп) ────────────────────
       Фото лектора уезжает вверх при прокрутке, а синий блок заявки
       остаётся на экране и «упирается» в низ .ev-split — то есть
       останавливается ровно перед блоком «С этим курсом также
       смотрят». Липкий именно блок формы, а не вся колонка: колонка
       вместе с фото выше любого окна, и sticky на ней делал бы низ
       формы недостижимым (прежнее поведение).
       max-height + overflow-y — страховка для невысоких окон: если
       форма не помещается целиком, она листается внутри себя, а не
       обрезается снизу вместе с кнопкой «Подать заявку». */
    @media (min-width:1301px) {
        /* Только правая колонка: на /edu/seminar форма стоит в ЛЕВОЙ
           колонке как основное содержимое страницы, и липкой ей быть
           незачем. */
        .ev-split-right .ev-form-section {
            position:sticky;
            top:calc(var(--ev-header-h) + 16px);
            max-height:calc(100vh - var(--ev-header-h) - 32px);
            overflow-y:auto;
            overscroll-behavior:contain;
        }
    }

    /* ══════════════════════════════════════════════════════════════
       ФОРМА ЗАЯВКИ — синяя тема (общий партиал application-form.php)
    ══════════════════════════════════════════════════════════════ */
    .ev-app-card { background:#fff; border-radius:10px; overflow:hidden; }
    .ev-app-header { background:#123f6e; padding:16px 22px; text-align:center; }
    .ev-app-header h3 { margin:0 0 4px; font-size:18px; font-weight:700; color:#fff; text-transform:uppercase; letter-spacing:.03em; }
    .ev-app-header p { margin:0; font-size:13px; color:rgba(255,255,255,.8); }
    .ev-app-body { padding:20px; }
    .ev-app-form { display:flex; flex-direction:column; gap:14px; }
    .ev-app-field { display:flex; flex-direction:column; gap:6px; }
    .ev-app-label { font-size:13px; font-weight:700; color:#1a2330; }
    .ev-app-select, .ev-app-input {
        all:revert;
        display:block; width:100% !important; box-sizing:border-box !important;
        padding:10px 12px !important; border:2px solid #185FA5 !important; border-radius:6px !important;
        font-size:14px !important; font-family:inherit !important; color:#1a2330 !important; background:#fff !important;
        line-height:1.4 !important; margin:0 !important;
    }
    .ev-app-select:focus, .ev-app-input:focus { outline:none !important; border-color:#123f6e !important; box-shadow:0 0 0 3px rgba(24,95,165,.15); }
    .ev-app-input::placeholder { color:#9aa5b1; opacity:1; }
    /* Свободное поле заявки на /edu/seminar — те же рамка и типографика,
       что у обычных полей, плюс высота под несколько строк. */
    .ev-app-textarea {
        min-height:150px !important; line-height:1.5 !important;
        resize:vertical !important; overflow:auto !important;
        display:block !important;
    }
    .ev-app-events { display:flex; flex-direction:column; gap:8px; border:1px solid #d9e6f2; border-radius:8px; padding:10px 12px; background:#f4f8fc; }
    .ev-app-check { display:flex; align-items:flex-start; gap:8px; font-size:13.5px; color:#1a2330; cursor:pointer; line-height:1.4; }
    .ev-app-check-name { flex:1; min-width:0; }
    .ev-app-date { color:#185FA5; font-weight:600; flex-shrink:0; text-align:right; white-space:nowrap; }
    .ev-app-check input[type="checkbox"] {
        all:revert;
        appearance:none; -webkit-appearance:none; -moz-appearance:none;
        display:inline-block !important;
        margin:2px 0 0 0 !important; flex-shrink:0;
        width:19px !important; height:19px !important;
        border:2px solid #185FA5 !important; border-radius:4px !important;
        background:#fff !important; cursor:pointer;
        position:relative; transition:background .15s, border-color .15s;
        box-sizing:border-box;
    }
    .ev-app-check input[type="checkbox"]:checked { background:#185FA5 !important; border-color:#185FA5 !important; }
    .ev-app-check input[type="checkbox"]:checked::after {
        content:''; position:absolute; left:5px; top:1px;
        width:5px; height:10px;
        border:solid #fff; border-width:0 2px 2px 0;
        transform:rotate(45deg);
    }
    .ev-app-check input[type="checkbox"]:focus-visible { outline:2px solid #123f6e; outline-offset:2px; }
    .ev-app-hint { font-size:12px; color:#5a6472; }
    .ev-app-conflict-note { background:#fff4e5; border:1px solid #f0c808; border-radius:6px; padding:10px 12px; font-size:12.5px; color:#8a5a00; line-height:1.5; }
    .ev-app-price-box { border:2px solid #185FA5; border-radius:8px; padding:14px 16px; background:#f4f8fc; }
    .ev-app-price-box h4 { margin:0 0 10px; font-size:14px; color:#1a2330; }
    .ev-app-price-line { display:flex; justify-content:space-between; align-items:flex-start; font-size:13px; color:#3a4560; margin:4px 0; gap:10px; }
    .ev-app-price-line > span:first-child { flex:1; min-width:0; }
    .ev-app-price-line > span:last-child { flex-shrink:0; white-space:nowrap; text-align:right; }
    .ev-app-price-line .ev-app-price-date { color:#185FA5; font-weight:600; }
    .ev-app-price-line.total { border-top:2px solid #d9e6f2; margin-top:8px; padding-top:8px; font-size:16px; font-weight:700; color:#1a2330; }
    .ev-app-price-line.total .ev-app-amount { color:#185FA5; font-size:19px; }
    .ev-app-muted { color:#999; font-size:13px; }
    .ev-app-consent { display:flex; align-items:flex-start; gap:10px; font-size:13px; color:#5a6472; cursor:pointer; }
    .ev-app-consent input[type="checkbox"] {
        all:revert;
        appearance:none; -webkit-appearance:none; -moz-appearance:none;
        display:inline-block !important;
        margin:3px 0 0 0 !important; flex-shrink:0;
        width:18px !important; height:18px !important;
        border:2px solid #185FA5 !important; border-radius:4px !important;
        background:#fff !important; cursor:pointer;
        position:relative; box-sizing:border-box;
    }
    .ev-app-consent input[type="checkbox"]:checked { background:#185FA5 !important; border-color:#185FA5 !important; }
    .ev-app-consent input[type="checkbox"]:checked::after {
        content:''; position:absolute; left:5px; top:2px;
        width:4px; height:9px;
        border:solid #fff; border-width:0 2px 2px 0;
        transform:rotate(45deg);
    }
    .ev-app-consent a { color:#185FA5; text-decoration:underline; }
    .ev-app-submit {
        background:rgb(212,75,56); color:#fff; border:1px solid rgb(212,75,56); border-radius:6px; padding:14px;
        font-size:13px; font-weight:700; text-transform:uppercase; letter-spacing:.05em;
        cursor:pointer; transition:all .2s ease;
    }
    .ev-app-submit:hover:not(:disabled) { background:rgb(232,95,76); border-color:rgb(232,95,76); }
    .ev-app-submit:active:not(:disabled) { background:rgb(152,15,0); border-color:rgb(152,15,0); }
    .ev-app-submit:disabled { opacity:.5; cursor:not-allowed; }
    .ev-app-status { font-size:13px; text-align:center; min-height:16px; }

    /* ══════════════════════════════════════════════════════════════
       МЕСТО ПРОВЕДЕНИЯ — общий блок (partials/venue-section.php)
    ══════════════════════════════════════════════════════════════ */
    .ev-venue-section { margin:36px 0 0; }
    /* ── Единый стиль подзаголовков секций: «Программа мероприятия»,
       «Место проведения» — без подложек и подчёркивания. ── */
    .ev-program-heading, .ev-venue-heading {
        font-size:clamp(20px,2.4vw,26px);
        font-weight:300;
        color:#1a2330;
        margin:0 0 20px;
        text-align:center;
        letter-spacing:-.01em;
    }
    .ev-venue-card { background:#fff; border:2px solid #e8f5e9; border-radius:12px; overflow:hidden; display:flex; flex-direction:column; }
    .ev-venue-photo { width:100%; height:auto; max-height:400px; object-fit:contain; object-position:center; display:block; flex-shrink:0; background:#f0f4f0; }
    .ev-venue-info { padding:18px 22px; display:flex; flex-wrap:wrap; align-items:center; gap:14px; }
    .ev-venue-name { font-size:19px; font-weight:700; color:#2e3440; flex-basis:100%; margin:0; }
    .ev-venue-address, .ev-venue-metro { display:flex; align-items:center; gap:7px; font-size:15px; color:#555; }
    .ev-venue-address svg, .ev-venue-metro svg { color:#69BB60; flex-shrink:0; }
    .ev-venue-map-link { display:inline-flex; align-items:center; gap:6px; color:#69BB60; text-decoration:none; font-size:14px; font-weight:600; margin-left:auto; }
    .ev-venue-map-link:hover { color:#5aa850; }
    .ev-venue-note { padding:0 22px 18px; font-size:13px; color:#888; }
    .ev-venue-tbd { border:2px dashed #d9e6f2; border-radius:12px; padding:40px 24px; text-align:center; background:#f4f8fc; }
    .ev-venue-tbd p { font-size:15px; color:#3a4560; margin:0 0 8px; }
    .ev-venue-tbd .note { font-size:13px; color:#888; }
    @media (max-width:640px) {
        .ev-venue-map-link { margin-left:0; }
    }


/* ═══════════════════════════════════════════════════════════════
   Ниже — CSS, перенесённый сюда из инлайновых $extra_css в index.php
   и course.php (было по одному большому <style> на каждой странице,
   сгенерированному заново при каждой загрузке — вынесено в общий
   кэшируемый файл, дубли между двумя страницами убраны).
   ═══════════════════════════════════════════════════════════════ */

/* ── Кнопки hero: стек, одинаковая ширина (общее для index.php и course.php) ── */
.co-hero-btns { display:inline-flex; flex-direction:column; align-items:stretch; gap:10px; }
.co-hero-btns .ev-hero-cta { text-align:center; box-sizing:border-box; margin-top:0; }

/* ── Курсы друг под другом на главной — точная копия строк /seminar/index.php ── */
.ev-row {
    display:flex;
    align-items:center;
    gap:18px;
    background:#fff;
    border:1px solid #eceff4;
    border-radius:10px;
    padding:16px 22px;
    margin-bottom:14px;
}
.ev-row-photo {
    flex-shrink:0;
    width:56px; height:56px;
    border-radius:50%;
    object-fit:cover;
    background:#e6e9f0;
}
.ev-row-main { flex:1; min-width:0; }
.ev-row-label { font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:#888; margin-bottom:6px; }
.ev-row-title { font-size:17px; font-weight:700; color:#1a2330; line-height:1.3; margin-bottom:6px; }
.ev-row-meta { font-size:13px; color:#5a6472; line-height:1.5; }

.ev-row-side { flex-shrink:0; text-align:right; }
.ev-row-price { font-size:15px; font-weight:700; color:#1a2330; margin-bottom:10px; white-space:normal; text-align:right; line-height:1.3; }
.ev-row-btn {
    display:inline-block;
    padding:9px 18px;
    font-size:12.5px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.04em;
    text-decoration:none;
    border-radius:6px;
    background:#fff;
    color:#69BB60;
    border:2px solid #69BB60;
    white-space:nowrap;
    transition:all .2s;
    box-sizing:border-box;
}
.ev-row-btn:hover { background:#f2f9f1; color:#5aa850; border-color:#5aa850; text-decoration:none; }

.ev-row-btns { display:flex; flex-direction:row; gap:8px; align-items:center; flex-wrap:wrap; justify-content:flex-end; }
.ev-row-btn-join {
    display:inline-block;
    padding:9px 18px;
    font-size:12.5px;
    font-weight:600;
    text-transform:uppercase;
    letter-spacing:.04em;
    text-decoration:none;
    border-radius:6px;
    background:#69BB60;
    color:#fff;
    white-space:nowrap;
    border:2px solid #69BB60;
    cursor:pointer;
    transition:all .2s;
    box-sizing:border-box;
}
.ev-row-btn-join:hover { background:#5aa850; border-color:#5aa850; color:#fff; text-decoration:none; }

.co-direction-heading { font-size:15px; font-weight:700; text-transform:uppercase; letter-spacing:.04em; color:#8a6d2f; margin:28px 0 12px; }
.co-direction-heading:first-child { margin-top:0; }

@media (max-width:1300px) {
    .ev-row { flex-wrap:wrap; align-items:center; row-gap:14px; }
    .ev-row-main { flex-basis:0; }
    .ev-row-side { flex-basis:100%; text-align:left; }
    .ev-row-price { text-align:left; }
    .ev-row-btns { justify-content:stretch; width:100%; }
    .ev-row-btn, .ev-row-btn-join { flex:1; text-align:center; }
}
@media (max-width:480px) {
    .ev-row { padding:14px 16px; gap:14px; }
    .ev-row-title { font-size:16px; }
}

/* ── Страница курса: шапка (дата/часы/название документа) ── */
.co-hero-alt { font-size:clamp(14px,2vw,17px); font-weight:400; color:#5a6472; margin-top:10px; }
.co-hero-hours { font-size:15px; font-weight:600; color:#5a6472; margin-top:6px; }
.ev-hero-dates { font-size:clamp(20px,2.4vw,26px); font-weight:300; color:#1a2330; margin-top:14px; letter-spacing:-.01em; }
.co-price-line { font-size:22px; font-weight:700; color:#1a2330; margin:18px 0; }

/* ── Сетка цен — точная копия из event.php ── */
.ev-pricing-block { border:2px solid #e8f5e9; border-radius:12px 12px 0 0; border-bottom:none; overflow:hidden; max-width:100%; box-sizing:border-box; }
.ev-pricing-header { background:#d44b38; padding:clamp(8px,2.6vw,11px) clamp(10px,4vw,20px); text-align:center; }
.ev-pricing-header-title { font-size:clamp(10.5px,3vw,13px); font-weight:600; color:#fff; text-transform:uppercase; letter-spacing:.06em; margin:0; }
/* Ровно три колонки в одну строку на ЛЮБОЙ ширине — колонки не
   переносятся друг под друга, а ужимаются вместе с экраном.
   minmax(0,1fr) вместо 1fr обязателен: у 1fr минимум = min-content, и
   неразрывная цена «150 000 ₽» распирала бы сетку шире экрана.
   Все размеры внутри — на clamp() с vw, чтобы содержимое ужималось
   пропорционально: на 360px цена выходит ~13px и спокойно влезает в
   колонку ~110px, на десктопе остаётся прежние 24px.
   Разделители — не border у ячеек, а gap:1px по фону сетки. */
.ev-pricing-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); background:#e8f5e9; gap:1px; }
.ev-pricing-col { background:#fff; padding:clamp(7px,2.4vw,18px) clamp(4px,1.4vw,14px); display:flex; flex-direction:column; gap:clamp(2px,.8vw,6px); text-align:center; align-items:center; min-width:0; box-sizing:border-box; }
.ev-pricing-col-value { font-size:clamp(11px,3.5vw,24px); font-weight:700; color:#2e3440; line-height:1.2; white-space:nowrap; }
.ev-pricing-col-old { font-size:clamp(8px,2vw,13px); color:#dc2626; font-weight:600; text-decoration:line-through; white-space:nowrap; }
.ev-pricing-col-label { font-size:clamp(8.5px,1.9vw,12px); color:#666; font-weight:400; line-height:1.35; max-width:100%; overflow-wrap:anywhere; hyphens:auto; }
.ev-pricing-col-badge { display:inline-block; font-size:clamp(8px,1.7vw,11px); font-weight:700; padding:2px clamp(4px,1.4vw,10px); border-radius:20px; white-space:nowrap; }
.ev-pricing-col-badge.orange { background:#fff3e0; color:#e65100; }
.ev-pricing-col-badge.green { background:#e8f5e9; color:#2e7d32; }

.ev-detail-conditions { list-style:none; margin:0 0 26px; padding:0; }
.ev-media-carousel {
    /* display:grid + minmax(0,1fr) — единственный надёжный способ не дать
       широкой ленте (width:max-content) раздуть саму карусель и всю
       колонку: без этого max-content ленты просачивался наверх по цепочке
       и весь левый блок становился шире экрана. */
    position:relative; display:grid; grid-template-columns:minmax(0,1fr);
    width:100%; max-width:100%; min-width:0; overflow:hidden;
    background:#eef1f5; box-sizing:border-box;
}
.ev-media-track {
    display:flex; gap:12px; width:max-content; min-width:0;
    animation:ev-media-scroll 28s linear infinite;
    animation-play-state:paused; /* запускаем через JS только когда блок виден */
}
.ev-media-track img {
    flex:0 0 auto; display:block;
    width:clamp(140px, 22vw, 220px); height:auto; aspect-ratio:16/9;
    object-fit:cover; max-width:none;
}
/* Крупный вариант ленты — /edu/seminar, во всю ширину белой зоны. */
.ev-media-carousel--lg { margin-top:8px; }
.ev-media-carousel--lg .ev-media-track { gap:16px; }
.ev-media-carousel--lg .ev-media-track img { width:clamp(190px,26vw,320px); }

@keyframes ev-media-scroll {
    from { transform:translateX(0); }
    to   { transform:translateX(-50%); } /* ровно половина — второй набор дублирует первый, переход бесшовный */
}
@media (prefers-reduced-motion:reduce) {
    .ev-media-track { animation:none; }
}

.co-savings-note {
    background:#fff8e1; border:2px solid #f0d98c; border-radius:0 0 12px 12px;
    padding:12px 16px; margin:0 0 24px; font-size:13.5px; color:#7a5c00; line-height:1.55;
}
.ev-detail-conditions li { position:relative; padding-left:26px; margin-bottom:10px; font-size:14px; color:#3a4560; line-height:1.5; }
.ev-detail-conditions li::before { content:'✓'; position:absolute; left:0; top:0; color:#69BB60; font-weight:700; }
.ev-detail-btns { display:flex; gap:12px; flex-wrap:wrap; }
.ev-btn-primary, .ev-btn-secondary {
    padding:14px 28px; font-size:13px; font-weight:600; text-transform:uppercase;
    letter-spacing:.05em; border-radius:6px; text-decoration:none; display:inline-block;
    transition:all .2s; box-sizing:border-box;
}
.ev-btn-primary { background:#69BB60; color:#fff; border:2px solid #69BB60; }
.ev-btn-primary:hover { background:#5aa850; border-color:#5aa850; color:#fff; text-decoration:none; }
.ev-btn-secondary { background:transparent; color:#1a2330; border:2px solid #1a2330; }
.ev-btn-secondary:hover { background:#1a2330; color:#fff; text-decoration:none; }

/* Раскладка колонок цен теперь целиком на auto-fit (см. выше) —
   отдельный медиазапрос со сменой числа колонок больше не нужен. */

/* ── Программа курса — точная копия из event.php ── */
.ev-program-section { margin:36px 0 0; max-width:100%; }
.ev-program-block { border:2px solid #e8f5e9; border-radius:12px; overflow:hidden; max-width:100%; box-sizing:border-box; }
.ev-program-item { background:#fff; padding:18px 22px; border-bottom:1px solid #e8f5e9; box-sizing:border-box; }
.ev-program-item:last-child { border-bottom:none; }
.ev-program-item-head { display:flex; align-items:flex-start; gap:14px; margin-bottom:8px; min-width:0; }
.ev-program-num {
    background:#69BB60; color:#fff; border-radius:50%; width:32px; height:32px;
    display:flex; align-items:center; justify-content:center; font-size:14px;
    font-weight:700; flex-shrink:0;
}
/* min-width:0 обязателен: у flex-элемента по умолчанию min-width:auto, и
   одно длинное слово в заголовке пункта распирало строку шире контейнера —
   именно так «таблица с программой курса» выезжала за край экрана. */
.ev-program-item h3 { font-size:16px; font-weight:700; margin:0; color:#1a2330; flex:1 1 auto; min-width:0; overflow-wrap:anywhere; line-height:1.35; }
.ev-program-item p { font-size:14px; color:#3a4560; line-height:1.65; margin:0; padding-left:46px; overflow-wrap:anywhere; }
.ev-program-note {
    font-size:12px; color:#888; font-style:italic; padding:14px 22px;
    background:#f8fdf9; border-top:1px solid #e8f5e9;
}
@media (max-width:640px) {
    .ev-program-item p { padding-left:0; margin-top:8px; }
    .ev-program-item { padding:14px 14px; }
    .ev-program-note { padding:12px 14px; }
    .ev-program-item-head { gap:10px; }
    .ev-program-num { width:28px; height:28px; font-size:13px; }
}

/* ── «С этим курсом также смотрят» — карусель, 3 карточки на экран ── */
.co-related-wrap { display:flex; align-items:center; gap:12px; }
.co-related-track {
    flex:1 1 0%; min-width:0;
    display:grid; grid-auto-flow:column; grid-auto-columns:calc((100% - 2*16px)/3);
    gap:16px; overflow-x:auto; scroll-snap-type:x mandatory; scroll-behavior:smooth;
    padding-bottom:4px;
}
.co-related-track::-webkit-scrollbar { height:6px; }
.co-related-track::-webkit-scrollbar-thumb { background:#d8e3d6; border-radius:3px; }
.co-related-card {
    scroll-snap-align:start; background:#d44b38; border:1px solid #d44b38; border-radius:10px;
    padding:18px 16px; text-align:center; display:flex; flex-direction:column; align-items:center; gap:6px;
}
.co-related-photo { width:64px; height:64px; border-radius:50%; object-fit:cover; background:#fff; border:2px solid #fff; }
.co-related-lect { font-size:13px; font-weight:600; color:#fff; }
.co-related-title { font-size:13px; font-weight:700; color:#fff; line-height:1.35; margin-top:4px; }
.co-related-title strong { font-weight:700; }
.co-related-price { font-size:15px; font-weight:700; color:#fff; margin-top:2px; }
.co-related-meta { font-size:11px; color:rgba(255,255,255,.85); margin-top:2px; }
.co-related-btn { margin-top:8px; padding:8px 16px; font-size:11.5px; background:#69BB60; color:#fff; border-color:#69BB60; }
.co-related-btn:hover { background:#5aa850; color:#fff; border-color:#5aa850; }
.co-related-arrow {
    flex-shrink:0; width:36px; height:36px; border-radius:50%; border:2px solid #1a2330;
    background:#fff; color:#1a2330; cursor:pointer; padding:0;
    box-sizing:border-box; display:flex; align-items:center; justify-content:center; transition:all .2s;
    /* Обнуляем текстовые метрики: раньше стрелки были символами ‹ и ›, а у
       них видимая часть глифа лежит выше базовой линии и не совпадает с
       центром строки — кружок центрировал строку, а не саму стрелку, и
       она визуально уезжала вниз. Костыль transform:translateY(-1px) это
       не лечил, потому что величина смещения зависит от шрифта.
       Теперь внутри симметричный SVG: flex-центрирование блока с заданными
       размерами даёт точный центр независимо от шрифта. */
    font-size:0; line-height:0;
}
.co-related-arrow svg { display:block; width:16px; height:16px; }
.co-related-arrow:hover { background:#1a2330; color:#fff; }
@media (max-width:900px) {
    .co-related-track { grid-auto-columns:calc((100% - 16px)/2); }
}
@media (max-width:560px) {
    .co-related-track { grid-auto-columns:86%; }
    /* На телефоне карусель листается пальцем — стрелки только отъедали
       по 48px ширины у карточек. */
    .co-related-arrow { display:none; }
    .co-related-wrap { gap:0; }
}
.co-related-wrap { max-width:100%; min-width:0; }
.co-related-card { min-width:0; box-sizing:border-box; overflow-wrap:anywhere; }


/* ══════════════════════════════════════════════════════════════
   DUO-плашка (−25% при обучении по двум программам).
   Раньше эти правила дублировались inline-блоками <style> внутри
   index.php и course.php с разными значениями — расходились между
   страницами и генерировались заново при каждой загрузке.
   ══════════════════════════════════════════════════════════════ */
.duo-hero-block {
    position:relative; box-sizing:border-box; max-width:100%;
    background:linear-gradient(135deg,#69BB60 0%,#5aab51 50%,#4a9d47 100%);
    padding:50px 40px; margin:24px 0 0; border-radius:12px; overflow:hidden;
    min-height:220px; display:flex; align-items:center; justify-content:center;
    text-decoration:none;
}
.duo-hero-block::before {
    content:'DUO'; position:absolute; top:50%; left:50%;
    transform:translate(-50%,-50%);
    font-size:clamp(100px,26vw,200px); font-weight:900;
    color:rgba(255,255,255,.12); line-height:1; z-index:0;
    letter-spacing:-.06em; pointer-events:none;
}
.duo-hero-content { position:relative; z-index:1; max-width:800px; width:100%; text-align:center; }
.duo-discount-badge {
    display:inline-block; background:rgba(255,255,255,.2);
    padding:12px 30px; border-radius:50px;
    border:2px solid rgba(255,255,255,.3); margin-bottom:20px;
}
.duo-discount-value { font-size:clamp(32px,7vw,42px); font-weight:900; color:#fff; line-height:1; text-shadow:2px 2px 4px rgba(0,0,0,.2); }
.duo-hero-title { font-size:clamp(20px,4.5vw,28px); font-weight:700; color:#fff; margin:0 0 15px; text-shadow:2px 2px 4px rgba(0,0,0,.15); }
.duo-hero-subtitle { font-size:clamp(15px,2.4vw,17px); color:rgba(255,255,255,.95); line-height:1.5; margin:0; }
@media (max-width:768px) { .duo-hero-block { padding:40px 25px; min-height:200px; } }
@media (max-width:480px) {
    .duo-hero-block { padding:30px 20px; min-height:180px; }
    .duo-discount-badge { padding:10px 25px; }
}

/* ══════════════════════════════════════════════════════════════
   Прокрутка к форме заявки по кнопкам «Подать заявку» / «Записаться»
   ══════════════════════════════════════════════════════════════ */
#ev-application-form,
#ev-app-program-field {
    /* Запас под фиксированную чёрную шапку (56px) — иначе верх формы
       уезжает под неё. Работает и для нативного перехода по якорю,
       если JS не отработал. */
    scroll-margin-top:calc(var(--ev-header-h) + 16px);
}
#ev-application-form.is-jump-target {
    animation:ev-form-flash 1.4s ease-out 1;
}
@keyframes ev-form-flash {
    0%   { box-shadow:0 0 0 0 rgba(240,200,8,0); }
    18%  { box-shadow:0 0 0 5px rgba(240,200,8,.85); }
    100% { box-shadow:0 0 0 0 rgba(240,200,8,0); }
}
@media (prefers-reduced-motion:reduce) {
    #ev-application-form.is-jump-target { animation:none; }
}


/* ══════════════════════════════════════════════════════════════
   /edu/seminar — слева форма, справа фото руководителя, а под
   ними во всю ширину лента упоминаний. Фото стоит НА ленте так же,
   как на /edu/ оно стоит на синем блоке формы: колонка прижата к
   низу ряда, у зоны снят нижний отступ, лента идёт вплотную.
   ══════════════════════════════════════════════════════════════ */
.co-seminar-zone { padding-bottom:0 !important; }
/* Лента вынесена из .ev-zone, чтобы обойти её боковые отступы и встать
   вровень с блоком предупреждения о копировании — те же 1240px.
   Используется и на /edu/seminar, и на /edu/ (каталог курсов). */
.co-media-band { max-width:1240px; margin:0 auto; background:#fff; }
.co-media-band .ev-media-carousel { margin-top:0; }

@media (min-width:1301px) {
    /* flex-end — иначе фото «висит в воздухе» над лентой, когда форма
       выше него. Правило в медиазапросе, чтобы не перебить
       align-items:stretch колоночной раскладки. */
    .co-seminar-split { align-items:flex-end; }
    /* Форма уже левой колонки — на всю её ширину она выглядела
       разреженной, поля тянулись почти на 700px. */
    .co-seminar-split .ev-split-left { max-width:600px; }
    /* На ленте стоит только фото; форму от неё отбиваем. Именно
       padding-bottom, а не margin: при align-items:flex-end низ колонки
       прижат к низу ряда, и отступ надо создавать внутри неё. */
    .co-seminar-split .ev-split-left { padding-bottom:40px; }
    .co-seminar-split .ev-split-right { padding-top:0; }
}
@media (max-width:1300px) {
    /* В колонку: форма, под ней фото, под ним лента — фото по-прежнему
       стоит на ленте, но во всю ширину экрана было бы великовато. */
    .co-seminar-split .ev-split-right { max-width:340px; margin:0 auto; padding-top:0; }
}
