/**
 * @file engine.css — вид движка событий поверх Mercury (обычный CSS, пересборка Tailwind не нужна).
 * Все цвета, шрифты и размеры — из токенов (src/theme.css): сайт меняет токены, а не этот файл.
 * Порядок: основа, шапка и крошки, заголовки, сетки карточек, страница мероприятия, формы, подвал.
 */

/* ---------- основа ---------- */
html { scroll-behavior: smooth; }
body {
  background: var(--background);
  color: var(--foreground);
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
/* шкала заголовков h1–h6, абзацы, списки, таблицы, формы — в css/base.css (слой base) */
a { color: var(--primary); text-underline-offset: 0.2em; }
a:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: 3px solid var(--ee-focus); outline-offset: 2px; border-radius: 4px; }
img { max-width: 100%; height: auto; }
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link { position: absolute; left: 1rem; top: -4rem; z-index: 2000; background: var(--background); padding: .5rem 1rem; border-radius: var(--radius); }
.skip-link:focus { top: 1rem; }

/* ---------- шапка, крошки, заголовок страницы ---------- */
header[role="banner"] { border-bottom: 1px solid var(--border); background: var(--background); }
header[role="banner"] > .container { max-width: var(--ee-container); padding-top: .75rem; }
header[role="banner"] > .container h1 {
  font-size: clamp(1.75rem, 1.2rem + 2.4vw, 2.75rem) !important;
  margin: .25rem 0 .5rem;
}
.ee-breadcrumb { max-width: var(--ee-container); margin: .75rem auto 0; font-size: .875rem; }
.ee-breadcrumb ol { display: flex; flex-wrap: wrap; gap: .25rem .5rem; list-style: none; margin: 0; padding: 0; color: var(--muted-foreground); }
.ee-breadcrumb li + li::before { content: "/"; margin-right: .5rem; color: var(--input); }
.ee-breadcrumb a { color: var(--muted-foreground); }
.ee-breadcrumb a:hover { color: var(--primary); }

/* ---------- основной поток (страницы не из Canvas: списки, мероприятие, формы) ---------- */
.layout-content .region-content > *:not(section):not([id^="block-"]),
.layout-content .region-content > .views-element-container {
  max-width: var(--ee-container);
  margin-inline: auto;
  padding: 1.5rem var(--ee-gutter) 3rem;
}
.layout-content .region-content > [id^="block-"] > .views-element-container,
.layout-content .region-content > [id^="block-"] > h2 {
  max-width: var(--ee-container);
  margin-inline: auto;
  padding-inline: var(--ee-gutter);
}
/* блоки-витрины на главной: заголовок и содержимое одним ритмом (--ee-section-gap между блоками) */
.layout-content .region-content > [id^="block-"] > h2 { margin: var(--ee-section-gap) auto 1.25rem; font-size: var(--ee-h2); }
.layout-content .region-content > [id^="block-"] > .views-element-container { padding-bottom: 0; }

/* ---------- сетки карточек (представления) ---------- */
.views-view-grid.horizontal,
.views-view-grid.vertical {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}
@media (min-width: 40rem) { .views-view-grid.horizontal { grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--ee-card-min)), 1fr)); gap: 1.5rem; } }
/* ИСПРАВЛЕНО 2026-09-29: см. тот же докблок в css/cards.css — жёсткие 4 колонки на ≥80rem игнорировали
   --ee-card-min (давали карточку 282px < заявленных 300px). Теперь та же формула, что на 40rem. */
@media (min-width: 80rem) { .views-view-grid.horizontal { grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--ee-card-min)), 1fr)); } }
/* ИСПРАВЛЕНО 2026-09-29, ВЕРСИЯ 3 (в тот же день — версия 1: gap:0/поля:0 «буквально впритык»; версия 2: gap:20px/
   поле:10px по первому прочтению фрагментов оператора «10 отступ с каждой стороны»/«20 на прокрутку»/«4×20+20=
   1300» — «180» из фрагментов в модель не легло, не гадаю про него). Версия 2 НЕ ПОМЕСТИЛАСЬ на реальном вьюпорте
   1280px — проверила Playwright, не поверила на слово арифметике: при виджет-ширине 1280px `body.clientWidth`
   был 1249px, а не 1280 — НАЙДЕНА реальная причина отдельно от самой сетки: у `body` НИКОГДА не обнулялся
   браузерный дефолт `margin: 8px` (обнулял Tailwind-сброс Mercury, убран 27.09 как источник 404 — вместе с ним
   пропал и этот сброс; см. фикс `body { margin: 0 }` в base.css) — съедало 16px без следа на каждой странице,
   незаметно, пока контейнер не придвинулся вплотную к ширине экрана. После фикса margin — 1265px доступно (ещё
   15px уходит на `scrollbar-gutter: stable`, законно зарезервированный под шторку меню, engine.css ниже, не
   убирала — чужой фикс, другая причина). Гэп 20px + поле 10px (версия 2) требовали 1280px — не влезало по 15px
   даже после фикса margin. Сведено к цифрам, которые РЕАЛЬНО помещаются на 1280px (не только на бумаге): гэп
   16px, поле 8px — 4×300+3×16+2×8 = 1264px ≤ 1265px доступных, проверено Playwright на 1280/1440/1920, не впритык
   (реальный, а не нулевой отступ), без переноса на 3 колонки. */
@media (min-width: 80rem) {
  .views-view-grid.horizontal { gap: 1rem; }   /* 16px — .ee-cards: тот же гэп меняется в cards.css (её собственный файл) */
  .layout-content .region-content > .views-element-container:has(.views-view-grid.horizontal),
  .layout-content .region-content > [id^="block-"] > .views-element-container:has(.views-view-grid.horizontal),
  .layout-content .region-content > .views-element-container:has(.ee-cards),
  .layout-content .region-content > [id^="block-"] > .views-element-container:has(.ee-cards) {
    /* QA 29.09: сетка карточек на ту же линию, что шапка/заголовки (контейнер 1200 + боковое поле): раньше 1300/8px давали левый край 8 px против 33 у логотипа.
       4 колонки по 280+ px помещаются в 1200 (4×280+3×16=1168); прежние 300 px требовали 1300 — вариант для решения оператора (см. pm/decisions.md). */
    max-width: var(--ee-container);
    padding-inline: var(--ee-gutter);
  }
  :root { --ee-card-min: 17.5rem; }   /* QA 29.09: на ≥1280 четыре колонки в контейнере 1200 (главная и списки) */
}
/* карточки с текстом (отзывы, вопросы) на телефоне — по одной в ряд: две в 165 px были бы тесными */
@media (max-width: 39.99rem) { .view-reviews-teaser .views-view-grid, .view-reviews-best .views-view-grid, .view-faq-listing .views-view-grid { grid-template-columns: minmax(0, 1fr); } }
.views-view-grid .views-row { display: contents; }
.views-view-grid::before, .views-view-grid::after, .views-view-grid .views-row::before, .views-view-grid .views-row::after { content: none !important; display: none !important; }
.views-view-grid .views-col {
  width: auto !important;
  float: none !important;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: .35rem;
  padding: 0 0 1rem;
  background: var(--ee-card-bg);
  border: 1px solid var(--ee-card-border);
  border-radius: var(--ee-radius-card);
  box-shadow: var(--ee-card-shadow);
  overflow: hidden;
  transition: box-shadow .2s, transform .2s;
}
.views-view-grid .views-col:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.views-view-grid .views-col > .views-field { padding-inline: var(--ee-card-pad); font-size: .9375rem; }
.views-view-grid .views-col > .views-field:first-child:has(img) { padding-inline: 0; }   /* фото — на всю ширину карточки; текст без фото остаётся с полями */
.views-view-grid .views-field-field-event-cover img,
.views-view-grid .views-field-field-practice-cover img,
.views-view-grid .views-col > .views-field:first-child img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; background: var(--muted); }
.views-view-grid .views-field-field-practice-cover img { aspect-ratio: 16 / 9; }
.views-view-grid .views-field-title { font-size: 1.05rem; font-weight: 600; line-height: 1.3; margin-top: .5rem; }
.views-view-grid .views-field-title a { color: var(--foreground); text-decoration: none; }
.views-view-grid .views-field-title a:hover { color: var(--primary); text-decoration: underline; }
.views-view-grid .views-label { display: none; }
.views-view-grid .views-field-field-event-dates { color: var(--muted-foreground); }
.views-view-grid .views-field-field-event-status .field-content {
  display: inline-block;
  padding: .1rem .6rem;
  border-radius: var(--ee-radius-pill);
  background: var(--secondary);
  color: var(--secondary-foreground);
  font-size: .8125rem;
  font-weight: 600;
}
.views-view-grid .views-field-field-price-from .field-content { font-weight: 700; }
.views-view-grid .views-field-field-price-from .field-content::after { content: " ₽"; }
.view-header, .view-footer { margin-block: 1rem; }
.view-empty { padding: 2rem 0; color: var(--muted-foreground); }

/* хаб направлений: плашки с цветной верхней линией (текст всегда тёмный, контраст не зависит от цвета направления) */
.view-directions-hub .views-view-grid.horizontal { display: flex !important; flex-wrap: wrap; gap: .75rem; }
.view-directions-hub .views-col {
  justify-content: center; align-items: center; text-align: center;
  padding: .9rem 1.4rem; min-height: 3.5rem; border-radius: var(--radius); box-shadow: none;
}
.view-directions-hub .views-col:hover { transform: none; box-shadow: var(--shadow-sm); }
.view-directions-hub .views-col > .views-field { padding: 0; font-size: 1rem; }
.view-directions-hub .views-field-name a { color: var(--foreground); font-weight: 600; text-decoration: none; }

/* отзывы, мастера, выпускники, вопросы: без обложки — карточка с текстом */
.view-reviews-teaser .views-col, .view-reviews-best .views-col { padding: 1.25rem 0; }
.view-masters-listing .views-col img, .view-graduates-listing .views-col img, .view-students-graduates .views-col img { aspect-ratio: 1 / 1 !important; }
.view-students-graduates .views-field-name .field-content { display: inline-block; padding: .1rem .7rem; border-radius: var(--ee-radius-pill); background: var(--accent); font-size: .8125rem; font-weight: 600; }
.view-students-graduates .views-field-field-master-city, .view-students-graduates .views-field-field-profile-year { color: var(--muted-foreground); }
.view-faq-listing .views-field-title, .view-faq-listing .views-field-field-answer { padding-inline: 0; }

/* блок «Ссылка на все» и постраничная навигация */
.more-link { margin-top: 1rem; text-align: right; }
.pager__items { display: flex; flex-wrap: wrap; gap: .5rem; list-style: none; padding: 0; justify-content: center; }

/* ---------- страница мероприятия и других материалов ---------- */
.node--view-mode-full { display: block; }
.node__meta { color: var(--muted-foreground); font-size: .875rem; margin-bottom: 1rem; }
/* контейнер полной страницы материала (событие/практика/мастер/статья): в исходной теме Mercury у неё нет предка
   .region-content (тот контейнер — только для регионов со списками/блоками, см. .layout-content .region-content ниже),
   поэтому раньше контента растягивался во всю ширину окна незаметно (обычный текст переносится сам); стало заметно
   только с герое мероприятия (картинка до края экрана) — тот же контейнер, что и у остальной страницы: --ee-container/--ee-gutter (эти два токена существуют в теме с самого начала, не часть отменённой системы оформления). */
.node--view-mode-full .node__content { box-sizing: border-box; max-width: var(--ee-container); margin-inline: auto; padding-inline: var(--ee-gutter); display: grid; gap: 1.25rem; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 60rem) {
  .node--type-event.node--view-mode-full .node__content { grid-template-columns: minmax(0, 22rem) minmax(0, 1fr); align-items: start; column-gap: 2.5rem; }
  /* обложка занимает левую колонку на всю высоту, а строки полей справа не растягиваются под неё (раньше «span 6» раздувал первые строки) */
  .node--type-event.node--view-mode-full .node__content { row-gap: 0; grid-auto-rows: min-content; }
  .node--type-event .field--name-field-event-cover,
  .node--type-event .ee-event-hero { grid-row: 1 / span 40; align-self: start; position: sticky; top: 1rem; margin-bottom: 1.25rem; }
  .node--type-event .node__content > :is(details, .ee-tiers, .field--name-field-event-faq, .field--name-field-event-hosts, .field--name-field-event-gallery) { margin-block: .75rem; }
  .node--type-event .node__content > *:not(.field--name-field-event-cover):not(.ee-event-hero) { grid-column: 2; }
}
.node--type-event .field--name-field-event-cover img,
.node--type-practice .field--name-field-practice-cover img { width: 100%; border-radius: var(--ee-radius-card); box-shadow: var(--shadow-md); display: block; }

/* герой страницы мероприятия: обложка + миниатюры (список вёрстки п.4/5, лайтбокс — js/lightbox.js, css/lightbox.css,
   2026-09-27). Читается из материала в node.html.twig, заменяет обычный вывод field_event_cover/field_event_gallery
   (скрыты списком полей — scripts/hero-gallery-init.php). Позиция и раскладка левой колонки — те же строки выше, что
   были у .field--name-field-event-cover в исходной теме; здесь — только собственная разметка обложки и миниатюр,
   без единого нового токена (только уже существующие --ee-radius-card/--radius/--shadow-md/--ee-btn-accent и сырые
   rem-значения — раскладки той же руки, что и остальной css/engine.css). */
.ee-event-hero { display: flex; flex-direction: column; gap: .5rem; min-width: 0; max-width: 100%; }
.ee-event-hero__main { display: block; min-width: 0; flex: 1 1 auto; border-radius: var(--ee-radius-card); overflow: hidden; box-shadow: var(--shadow-md); cursor: zoom-in; }
.ee-event-hero__main img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.ee-event-hero__thumbs { display: flex; gap: .5rem; overflow-x: auto; }
.ee-event-hero__thumb { flex: 0 0 4.5rem; display: block; border-radius: var(--radius); overflow: hidden; cursor: zoom-in; }
.ee-event-hero__thumb img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.ee-event-hero__thumb:hover img, .ee-event-hero__thumb:focus-visible img { outline: 2px solid var(--ee-btn-accent); outline-offset: -2px; }
@media (min-width: 60rem) {
  /* колонка миниатюр слева от обложки (не под ней) — до 4-5 видно без прокрутки, дальше своя вертикальная прокрутка колонки */
  .ee-event-hero { flex-direction: row-reverse; }
  .ee-event-hero__thumbs { flex-direction: column; overflow-x: visible; overflow-y: auto; max-height: 26rem; }
}
.node__content .field--label-above,
.node__content .field--label-inline { display: grid; grid-template-columns: minmax(0, 11rem) minmax(0, 1fr); gap: .5rem 1rem; padding: .55rem 0; border-bottom: 1px solid var(--border); }
.node__content .field--label-above > .field__label,
.node__content .field--label-inline > .field__label { color: var(--muted-foreground); font-size: .875rem; }
.node__content .field--type-text-long, .node__content .field--type-text-with-summary { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 40rem) {
  .node__content .field--label-above, .node__content .field--label-inline { grid-template-columns: minmax(0, 1fr); gap: .1rem; }
}
.node__content details { border: 1px solid var(--border); border-radius: var(--ee-radius-card); padding: .25rem 1.25rem 1rem; background: var(--background); }
.node__content details > summary { cursor: pointer; font-weight: 700; font-size: 1.125rem; padding: .85rem 0; list-style-position: inside; }
.node__content details > summary::marker { color: var(--primary); }
.node__content details > summary.ee-btn { padding: .55rem 1.5rem; font-size: 1rem; font-weight: 600; list-style: none; }   /* кнопка-раскрывашка («Показать всех»): вид кнопки, а не заголовка блока */
.field--name-field-price-from .field__item { font-weight: 700; }
.date-recur-occurrences { margin: 0; padding-left: 1.1rem; }
.field__items { display: flex; flex-wrap: wrap; gap: .4rem; }
.field--name-field-techniques .field__item,
.field--name-field-directions .field__item a { display: inline-block; padding: .1rem .7rem; border-radius: var(--ee-radius-pill); background: var(--secondary); text-decoration: none; }


/* ступени цены (таблица) и вопросы мероприятия */
.ee-tiers .field__label, .node--type-event .field--name-field-event-faq > .field__label { margin: 1rem 0 .5rem; font-weight: 700; font-size: 1.125rem; color: var(--foreground); }
.ee-tiers, .node--type-event .field--name-field-event-faq, .node--type-event .field--name-field-event-hosts { display: block !important; border-bottom: 0 !important; }
.ee-table { width: 100%; border-collapse: collapse; border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; }
.ee-table th, .ee-table td { padding: .65rem .9rem; text-align: left; border-bottom: 1px solid var(--border); }
.ee-table thead th { background: var(--muted); font-size: .8125rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted-foreground); }
.ee-table__price { font-weight: 700; white-space: nowrap; }
@media (max-width: 40rem) { .ee-table { display: block; overflow-x: auto; } }
.ee-table .field { display: block !important; padding: 0 !important; border: 0 !important; }
.ee-faq-item { border: 1px solid var(--border); border-radius: var(--radius); padding: .25rem 1rem; margin-bottom: .5rem; background: var(--background); }
.ee-faq-item > summary { cursor: pointer; font-weight: 600; padding: .6rem 0; }
.ee-faq-item .field { display: block !important; padding: 0 !important; border: 0 !important; }
.ee-faq-item__answer { padding-bottom: .5rem; color: var(--muted-foreground); }
.node__content details .ee-faq-item { border: 1px solid var(--border); }

/* ---------- формы ---------- */
label { font-weight: 600; font-size: .9375rem; }
.form-required::after, .js-form-required::after { content: " *"; color: var(--destructive); }
input[type="text"], input[type="email"], input[type="tel"], input[type="search"], input[type="url"], input[type="number"], input[type="password"], input[type="date"], input[type="time"], select, textarea {
  width: 100%;
  min-height: 2.75rem;
  padding: .55rem .85rem;
  border: 1px solid var(--input);
  border-radius: var(--radius);
  background: var(--background);
  color: var(--foreground);
  font: inherit;
}
textarea { min-height: 7rem; }
select {   /* стрелка списка без картинок и внешних адресов: два градиента */
  background-image: linear-gradient(45deg, transparent 50%, var(--foreground) 50%), linear-gradient(135deg, var(--foreground) 50%, transparent 50%);
  background-position: calc(100% - 1.3rem) 55%, calc(100% - .9rem) 55%;
  background-size: .4rem .4rem, .4rem .4rem; background-repeat: no-repeat;
}
input:focus, select:focus, textarea:focus { border-color: var(--ee-focus); }
input[type="checkbox"], input[type="radio"] { width: 1.15rem; height: 1.15rem; accent-color: var(--primary); flex: none; margin-top: .25rem; }
.form-item { margin: 0 0 1rem; }
.webform-submission-form { gap: 0; }   /* Mercury даёт форме gap 2rem поверх отступа полей: получались щели по 3rem */
.form-item .description { color: var(--muted-foreground); font-size: .875rem; }
.form-type-checkbox, .form-type-radio { display: flex; gap: .6rem; align-items: flex-start; }
.form-type-checkbox label, .form-type-radio label { font-weight: 400; }
/* кнопки: единая система из трёх уровней — css/buttons.css */
.views-exposed-form { display: flex; flex-wrap: wrap; gap: 1rem; align-items: flex-end; margin-bottom: 1.5rem; }
.views-exposed-form .form-item { margin: 0; min-width: 12rem; }
.views-exposed-form .form-actions { margin: 0; }
.messages, [data-drupal-messages] .messages { padding: .9rem 1.1rem; border-radius: var(--radius); border: 1px solid var(--border); background: var(--card); margin: 1rem 0; }
.messages { border-left-width: 4px; }
.messages--status { border-color: var(--ee-success); background: color-mix(in oklab, var(--ee-success) 8%, var(--background)); }
.messages--warning { border-color: var(--ee-warning); background: color-mix(in oklab, var(--ee-warning) 9%, var(--background)); }
.messages--error { border-color: var(--ee-danger); background: color-mix(in oklab, var(--ee-danger) 8%, var(--background)); }

/* подвал и подписка — components/footer/footer.css */

/* ---------- Canvas-страницы: главная и другие ---------- */
.ee-hero { background: linear-gradient(180deg, var(--card), var(--background)); border-bottom: 1px solid var(--border); }
.ee-hero__inner { max-width: var(--ee-container); margin: 0 auto; padding: 1.5rem var(--ee-gutter) 2rem; display: grid; gap: 1.5rem; align-items: center; }
.ee-hero__media { order: -1; }
.ee-hero__media img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; max-height: 26rem; object-fit: cover; border-radius: calc(var(--ee-radius-card) * 1.5); box-shadow: var(--shadow-lg); }
.ee-hero__text h1, .ee-hero__text h2 { font-size: clamp(2rem, 1.3rem + 3vw, 3.5rem); margin: 0 0 .75rem; }
.ee-hero__text p { font-size: 1.125rem; color: var(--muted-foreground); margin: 0 0 .5rem; max-width: 34rem; }
.ee-hero__cta { margin-top: 1.25rem; }
.ee-hero__cta a { display: inline-flex; align-items: center; min-height: 3rem; padding: .65rem 1.6rem; border-radius: var(--ee-radius-pill); background: var(--primary); color: var(--primary-foreground); font-weight: 600; text-decoration: none; }
.ee-hero__cta a:hover { filter: brightness(1.12); }
@media (min-width: 60rem) {
  .ee-hero__inner { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: 3rem; padding-block: 3rem; }
  .ee-hero__media { order: 0; }
  .ee-hero--full .ee-hero__text h2 { font-size: 3.25rem; }
}
.ee-hero--banner .ee-hero__inner, .layout-content .ee-hero { }

/* списки без сетки Views (unformatted): тоже карточки */
.view-content:has(> .views-row) { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem !important; }
@media (min-width: 40rem) { .view-content:has(> .views-row) { grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--ee-card-min)), 1fr)); gap: 1.5rem !important; } }
/* ИСПРАВЛЕНО 2026-09-29: см. тот же докблок в css/cards.css. */
@media (min-width: 80rem) { .view-content:has(> .views-row) { grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--ee-card-min)), 1fr)); } }
.view-content > .views-row {
  display: flex; flex-direction: column; gap: .35rem; padding: 0 0 1rem; min-width: 0;
  background: var(--ee-card-bg); border: 1px solid var(--ee-card-border); border-radius: var(--ee-radius-card); box-shadow: var(--ee-card-shadow); overflow: hidden;
  transition: box-shadow .2s, transform .2s;
}
.view-content > .views-row:hover { box-shadow: var(--shadow-lg); transform: translateY(-2px); }
.view-content > .views-row > .views-field { padding-inline: 1rem; font-size: .9375rem; }
.view-content > .views-row > .views-field:first-child:has(img) { padding-inline: 0; }
.view-content > .views-row > .views-field:first-child img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.view-practices-teaser .views-field-field-cover img, .view-practices-listing .views-field-field-cover img { aspect-ratio: 16 / 9 !important; }
.view-content > .views-row .views-field-title { font-size: 1.05rem; font-weight: 600; line-height: 1.3; margin-top: .5rem; }
.view-content > .views-row .views-field-title a { color: var(--foreground); text-decoration: none; }
.view-content > .views-row .views-field-title a:hover { color: var(--primary); text-decoration: underline; }
.view-content > .views-row .views-field-field-event-dates { color: var(--muted-foreground); }
.view-content > .views-row .views-field-field-event-status .field-content { display: inline-block; padding: .1rem .6rem; border-radius: var(--ee-radius-pill); background: var(--secondary); font-size: .8125rem; font-weight: 600; }
.view-content > .views-row .views-label { display: none; }

/* отзывы: круглое фото автора, читаемый текст */
.view-reviews-best .views-field-field-review-author-photo, .view-reviews-teaser .views-field-field-review-author-photo { padding: 0 1rem !important; }
.views-field-field-review-author-photo img { width: 3.5rem !important; height: 3.5rem !important; aspect-ratio: 1 !important; border-radius: 50%; object-fit: cover; }
.views-field-field-rating { color: var(--ee-status-warn); letter-spacing: .1em; }
.views-field-field-author-name { font-weight: 600; }

/* таблицы (расписание): на узких экранах — горизонтальная прокрутка внутри таблицы, страница не ползёт */
.view-content table { width: 100%; border-collapse: collapse; }
@media (max-width: 47.99rem) { .view-content table { display: block; overflow-x: auto; } }
.view-content th, .view-content td { text-align: left; padding: .7rem .5rem; border-bottom: 1px solid var(--border); vertical-align: top; }
.view-content th { font-size: .8125rem; text-transform: uppercase; letter-spacing: .05em; color: var(--muted-foreground); }

/* «Мы в соцсетях»: плитка круглых значков (paragraph--social-link.html.twig); ссылки из блока «ссылки на соцсети» (рецепт social-links), пустые не показываются */
.field--name-field-social-links .field__items, .view-social-links .view-content > div { display: flex; flex-wrap: wrap; gap: .75rem 1rem; align-items: flex-start; }
.ee-social__item { margin: 0; }
.ee-social__tile { display: inline-flex; flex-direction: column; align-items: center; gap: .3rem; min-width: 3.5rem; max-width: 7rem; text-align: center; color: var(--foreground); text-decoration: none; }
.ee-social__icon { display: inline-flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border: 2px solid var(--ee-btn-accent); border-radius: 999px; color: var(--ee-btn-accent); background: transparent; transition: background-color .15s, color .15s, border-color .15s; }
.ee-social__tile:hover .ee-social__icon { background: var(--ee-btn-accent); color: var(--ee-btn-accent-fg); }
.ee-social__tile:focus-visible { outline: 3px solid var(--ee-focus); outline-offset: 3px; border-radius: .75rem; }
.ee-social__name { max-width: 100%; font-size: .8125rem; line-height: 1.25; color: var(--muted-foreground); overflow-wrap: break-word; word-break: normal; }
.ee-social__tile:hover .ee-social__name { color: var(--foreground); }

/* фильтр списка: в строку */
.views-exposed-form .form-item { min-width: 0; flex: 1 1 12rem; max-width: 20rem; }
@media (max-width: 40rem) { .views-exposed-form .form-actions, .views-exposed-form .form-actions input { width: 100%; } .views-exposed-form .form-item { max-width: none; } }

/* печать и «меньше движения» */
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; scroll-behavior: auto !important; } }

/* фото галереи мероприятия: сеткой, а не столбцом на весь экран; вопросы мероприятия — столбцом */
.node--type-event .field--name-field-event-gallery { display: block !important; border-bottom: 0 !important; }
.node--type-event .field--name-field-event-gallery > .field__items { display: grid; grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); gap: .75rem; }
.node--type-event .field--name-field-event-gallery img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--radius); }
.node--type-event .field--name-field-event-faq > .field__items { display: block; }

/* статус мероприятия поверх фото карточки (как в макете): белая плашка, текст всегда тёмный — контраст не зависит от фото */
.views-view-grid .views-col:has(.views-field-field-event-cover) { position: relative; }
.views-view-grid .views-col:has(.views-field-field-event-cover) > .views-field-field-event-status { position: absolute; top: .75rem; left: .75rem; padding: 0; z-index: 1; }
.views-view-grid .views-col:has(.views-field-field-event-cover) > .views-field-field-event-status .field-content { background: var(--background); color: var(--foreground); box-shadow: var(--shadow-sm); }

/* плашки направлений: цветная верхняя линия (цвет — из данных направления; точка-образец превращается в линию) */
.view-directions-hub .views-col { position: relative; overflow: hidden; }
.view-directions-hub .views-col { padding-top: 1.05rem; }   /* текст не касается цветной линии */
.view-directions-hub .views-field-field-color { position: absolute; top: 0; left: 0; right: 0; padding: 0 !important; }
.view-directions-hub .color_field__swatch { width: 100% !important; height: 4px !important; border: 0 !important; border-radius: 0 !important; }

/* узкие карточки: перенос длинных слов по слогам; направления на телефоне — по две в ряд */
.views-view-grid .views-field-title { hyphens: auto; overflow-wrap: anywhere; }
@media (max-width: 39.99rem) {
  .view-directions-hub .views-view-grid.horizontal { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
  .view-directions-hub .views-col { padding: 1.05rem .5rem .8rem; }
}

/* ритм секций страниц Canvas: один шаг --ee-section-gap между секциями (у Mercury 1.5–2 rem — теснее, чем у блоков-витрин) */
.layout-content .region-content > section[class~="@container"] { margin-top: var(--ee-section-gap); margin-bottom: 0; }
.layout-content .region-content { padding-bottom: var(--ee-section-gap); }
.layout-content .region-content > section[class~="@container"]:first-child { margin-top: 2rem; }   /* первая секция под шапкой — без лишнего зазора */

/* отзывы: длинный текст — не больше трёх карточек в ряд (в четыре они получаются узкими и очень высокими) */
@media (min-width: 64rem) { .view-reviews-best .views-view-grid.horizontal, .view-reviews-teaser .views-view-grid.horizontal, .view-faq-listing .views-view-grid.horizontal { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* ===== Фасеты поиска (/poisk): компактные «чипы» вместо столбцов ссылок ===== */
.layout-content .region-content > [id^="block-"][class*="block-facet--"] { box-sizing: border-box; max-width: calc(var(--ee-container) + 2 * var(--ee-gutter)); margin: 0 auto 1rem; padding-inline: var(--ee-gutter); }
.layout-content .region-content > [id^="block-"][class*="block-facet--"] > h2 { margin: 0 0 .4rem; padding: 0; font-size: .9375rem; line-height: 1.3; font-weight: 600; color: var(--muted-foreground); }
.facets-widget-links ul { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem; margin: 0; padding: 0; }
.facets-widget-links li { margin: 0; padding: 0; }
.facets-widget-links a {
  display: inline-flex; align-items: center; gap: .35rem; min-height: 2.75rem; padding: .3rem .9rem; border: 1px solid var(--input); border-radius: var(--ee-radius-pill);
  background: var(--background); color: var(--foreground); text-decoration: none; font-size: .9375rem;
}
.facets-widget-links a:hover { background: var(--secondary); }
.facets-widget-links a:focus-visible { outline: 3px solid var(--ee-focus); outline-offset: 2px; }
.facets-widget-links a.is-active { background: var(--primary); border-color: var(--primary); color: var(--primary-foreground); }
.facets-widget-links .facet-item__count { color: inherit; opacity: .8; font-size: .8125rem; }

/* ===== Картинка по ссылке (поле field_image_url): вид как у обложки; скрыта, если есть загруженная обложка/фото ===== */
.field--name-field-image-url { margin: 0 0 1.25rem; }
.field--name-field-image-url img, .ee-linked-img { display: block; width: 100%; height: auto; object-fit: cover; background: var(--muted); border-radius: var(--ee-radius-card); }
.views-view-grid .views-col > .views-field-field-image-url img { border-radius: 0; aspect-ratio: 4 / 5; height: auto; }
.views-view-grid .views-col > .views-field-field-image-url { padding-inline: 0; }
.views-view-grid .views-col > .views-field:has(img):not(.views-field-field-image-url) ~ .views-field-field-image-url { display: none; }   /* есть загруженная обложка — ссылочная не нужна */
.view-masters-listing .views-col .ee-linked-img, .view-graduates-listing .views-col .ee-linked-img, .view-students-graduates .views-col .ee-linked-img { aspect-ratio: 1 / 1; }
.node .field--name-field-event-cover:has(img) ~ .field--name-field-image-url, .node .field--name-field-cover:has(img) ~ .field--name-field-image-url, .node .field--name-field-master-photo:has(img) ~ .field--name-field-image-url { display: none; }
/* страница материала: картинка по ссылке не выше 32rem при любых пропорциях (вертикальный кадр 2:3 иначе занимает больше экрана, панорама остаётся низкой) */
.field--name-field-image-url img { max-height: 32rem; }
/* обложка по ссылке резервирует место до загрузки (4:5, как загруженная обложка): иначе, когда приходит настоящий кадр другой пропорции, страница прыгает (сдвиг макета) */
.node--view-mode-full .field--name-field-image-url .ee-linked-img { aspect-ratio: 4 / 5; }
/* страница термина (направление, раздел, тема): записи выводятся целиком (режим «тизер» с полным набором полей), поэтому один столбец, а не сетка карточек; картинка направления — полоса */
.view-taxonomy-term .view-header .field--name-field-image-url img { max-height: 16rem; }
.view-taxonomy-term .view-content:has(> .views-row) { grid-template-columns: minmax(0, 1fr); max-width: 56rem; }
/* мероприятие на компьютере: картинка по ссылке — в левой колонке, как обложка (правило «колонка 2 для всех полей» выше её не касается) */
@media (min-width: 60rem) { .node--type-event.node--view-mode-full .node__content > .field--name-field-image-url { grid-column: 1; grid-row: 1 / span 40; align-self: start; position: sticky; top: 5.5rem; } }
/* Свой ролик mp4/webm из хранилища (поле «Видеофайлы (по ссылкам)» и компонент «Видео по ссылке»): штатный <video controls>; вертикальный ролик не выше 34rem, пропорции сохраняются */
.ee-video--file video { display: block; width: 100%; max-height: 34rem; object-fit: contain; border-radius: var(--ee-radius-card); background: #000; }
/* Фотографии по ссылкам (поле «Фотографии (по ссылкам)»): сетка превью 4:3; щелчок открывает фото целиком */
.ee-gallery { margin: 0 0 1.25rem; }
.ee-gallery__title { margin: 0 0 .75rem; font-size: 1.25rem; }
.ee-gallery__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(9.5rem, 1fr)); gap: .5rem; }
.ee-gallery__item { display: block; overflow: hidden; border-radius: var(--ee-radius-card); background: var(--muted); }
.ee-gallery__img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 3; object-fit: cover; transition: transform .2s; }
.ee-gallery__item:hover .ee-gallery__img, .ee-gallery__item:focus-visible .ee-gallery__img { transform: scale(1.04); }
.ee-gallery__item:focus-visible { outline: 3px solid var(--ee-focus); outline-offset: 2px; }
/* Картинка на странице Canvas (компонент «Картинка по ссылке», figure.ee-body-img): по ширине колонки, не шире 42,6rem, кадр 4:3 */
.ee-body-img { margin: 1.25rem 0; }
.ee-body-img img { display: block; width: min(100%, 42.6rem); height: auto; aspect-ratio: 4 / 3; object-fit: cover; margin-inline: auto; border-radius: var(--ee-radius-card); }   /* место под картинку резервируется с первого кадра (раньше 0 → 512 px при загрузке: сдвиг макета 0,15 на страницах направлений); кадр 4:3, лишнее обрезается */
.ee-body-img figcaption { margin-top: .4rem; color: var(--muted-foreground); font-size: .875rem; text-align: center; }

/* ---------- ведущие мероприятия (рецепт event-hosts) ---------- */
/* блок «Ведущие» / «Приглашённые мастера» на странице мероприятия: карточки сеткой, до шести сразу, остальные за «Показать всех» */
.node--type-event .field--name-field-event-hosts.ee-hosts { display: block !important; margin-block: 1.25rem; padding: 0; border-bottom: 0 !important; }
.ee-hosts__title { margin: 0 0 .9rem; font-size: var(--ee-h3, 1.25rem); font-weight: 700; line-height: 1.25; color: var(--foreground); }
.ee-hosts__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
@media (min-width: 40rem) { .ee-hosts__grid { grid-template-columns: repeat(auto-fill, minmax(9.5rem, 1fr)); gap: 1rem; } }
.ee-hosts__item { min-width: 0; }
.node__content details.ee-hosts__more { margin-top: 1rem; padding: 0; border: 0; background: none; }
.node__content details.ee-hosts__more > summary { margin: 0 0 1rem; list-style: none; }   /* вид кнопки — система css/buttons.css (вторая) */
.node__content details.ee-hosts__more > summary::-webkit-details-marker { display: none; }
.ee-host-card { position: relative; height: 100%; display: flex; flex-direction: column; background: var(--ee-card-bg); border: 1px solid var(--ee-card-border); border-radius: var(--ee-radius-card); box-shadow: var(--ee-card-shadow); overflow: hidden; }
.ee-host-card:hover { box-shadow: var(--shadow-lg); }
.ee-host-card__link { display: block; color: inherit; text-decoration: none; }
.ee-host-card__link::after { content: ''; position: absolute; inset: 0; }   /* вся карточка — ссылка на страницу профиля */
.ee-host-card__photo { display: block; aspect-ratio: 1 / 1; background: var(--muted); overflow: hidden; }
.ee-host-card__photo img, .ee-host-card__ph { display: block; width: 100%; height: 100%; object-fit: cover; }
.ee-host-card__ph { color: var(--foreground); }
.ee-host-card__name { display: block; padding: .6rem .8rem .15rem; font-weight: 600; line-height: 1.3; hyphens: auto; overflow-wrap: anywhere; }
.ee-host-card__link:hover .ee-host-card__name, .ee-host-card__link:focus-visible .ee-host-card__name { color: var(--primary); text-decoration: underline; }
.ee-host-card__role { padding: 0 .8rem .8rem; color: var(--muted-foreground); font-size: .8125rem; line-height: 1.3; }
.ee-host-card__role .field { display: inline !important; padding: 0 !important; border: 0 !important; }
/* «Ведёт: имена» в карточке афиши: не больше двух строк, сетку не растягивает */
.views-view-grid .views-field-field-event-hosts, .view-content > .views-row .views-field-field-event-hosts { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; color: var(--muted-foreground); font-size: .8125rem; line-height: 1.35; }
.views-field-field-event-hosts .views-label, .views-field-field-event-hosts .field-content { display: inline; font-weight: 400; }
/* «Мероприятия с участием» на странице профиля */
.ee-master-events { margin-top: 2.5rem; }
.ee-master-events__heading { margin: 0 0 1rem; font-size: var(--ee-h2, 1.5rem); line-height: 1.2; }
.ee-master-events__title { margin: 1.5rem 0 .9rem; font-size: 1.125rem; font-weight: 700; color: var(--muted-foreground); }
/* портрет на странице профиля: не на всю ширину (маленький портрет не растягивается в «лицо на весь экран») */
.node--type-master-profile.node--view-mode-full .field--name-field-image-url, .node--type-master-profile.node--view-mode-full .field--name-field-master-photo { max-width: 20rem; }
.node--type-master-profile.node--view-mode-full .ee-linked-img, .node--type-master-profile.node--view-mode-full .field--name-field-master-photo img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; border-radius: var(--ee-radius-card); box-shadow: var(--shadow-md); }

/* ---------- формы: выраженные поля (2026-09-26): видимая рамка, фон отличается от страницы, подписи, состояния, свои флажки и переключатели ---------- */
input[type="text"], input[type="email"], input[type="tel"], input[type="search"], input[type="url"], input[type="number"], input[type="password"], input[type="date"], input[type="time"], select, textarea {
  min-height: 2.75rem; padding: .6rem .9rem; border: 1.5px solid var(--ee-field-border); border-radius: var(--ee-field-radius);
  background-color: var(--ee-field-bg); color: var(--foreground); font: inherit; box-shadow: inset 0 1px 2px hsl(0 0% 0% / .05);
  transition: border-color .15s ease, box-shadow .15s ease;
}
textarea { min-height: 8rem; line-height: 1.5; }
input::placeholder, textarea::placeholder { color: var(--muted-foreground); opacity: 1; }
input[type="text"]:focus, input[type="email"]:focus, input[type="tel"]:focus, input[type="search"]:focus, input[type="url"]:focus, input[type="number"]:focus, input[type="password"]:focus,
input[type="date"]:focus, input[type="time"]:focus, select:focus, textarea:focus {
  outline: 3px solid color-mix(in oklab, var(--ee-field-focus) 40%, transparent); outline-offset: 1px; border-color: var(--ee-field-focus);
}
label, .form-item__label, legend { display: block; margin-bottom: .35rem; font-size: .875rem; font-weight: 600; color: var(--foreground); }
.form-item, .js-form-item { margin-block: 0 1rem; }
.form-item__description, .description { margin-top: .3rem; font-size: .8125rem; line-height: 1.4; color: var(--muted-foreground); }
/* ошибка и успех */
input.error, select.error, textarea.error, .form-item--error input, .form-item--error select, .form-item--error textarea { border-color: var(--destructive); background-color: color-mix(in oklab, var(--destructive) 5%, var(--ee-field-bg)); }
.form-item--error-message, .form-item__error-message { margin-top: .3rem; font-size: .875rem; font-weight: 600; color: var(--destructive); }
.form-item--error .form-item__label, .form-item--error label { color: var(--destructive); }
input.is-valid, .form-item--valid input { border-color: var(--ee-success); }
/* флажки и переключатели: свои, видимые (20 px, рамка, отметка) */
input[type="checkbox"], input[type="radio"] {
  appearance: none; -webkit-appearance: none; flex: none; width: 1.375rem; height: 1.375rem; margin: .1rem .6rem 0 0; padding: 0; min-height: 0; vertical-align: top;
  border: 1.5px solid var(--ee-field-border); background-color: var(--ee-field-bg); background-position: center; background-repeat: no-repeat; background-size: 80%; cursor: pointer;
}
input[type="checkbox"] { border-radius: .35rem; }
input[type="radio"] { border-radius: 50%; }
input[type="checkbox"]:checked { background-color: var(--primary); border-color: var(--primary); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='white' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3.5 8.5 3 3 6-7'/%3E%3C/svg%3E"); }
input[type="radio"]:checked { border-color: var(--primary); background-image: radial-gradient(circle, var(--primary) 0 45%, transparent 50%); }
input[type="checkbox"]:focus-visible, input[type="radio"]:focus-visible { outline: 3px solid color-mix(in oklab, var(--ee-field-focus) 45%, transparent); outline-offset: 2px; }
.form-type-checkbox, .form-type-radio, .js-form-type-checkbox, .js-form-type-radio { display: flex; align-items: flex-start; }
.form-type-checkbox label, .form-type-radio label, .js-form-type-checkbox label, .js-form-type-radio label { margin: 0; font-size: .9375rem; font-weight: 400; line-height: 1.4; }
/* выпадающий список: стрелка своя (у поля с рамкой) */
select { padding-right: 2.5rem; }
/* мелкий текст согласия и подсказки рядом с флажком */
.form-type-checkbox .description, .js-form-type-checkbox .description { margin-left: 2rem; }

/* подвал — components/footer/footer.css (2026-09-27) */

/* ---------- подписи полей: только в таблице «Практическая информация» и заголовками над длинными текстами (2026-09-26) ---------- */
.node__content .field--name-field-event-atmosphere > .field__label, .node__content .field--name-field-program > .field__label, .node__content .field--name-field-what-to-bring > .field__label,
.node__content .field--name-field-registration-terms > .field__label, .node__content .field--name-field-event-includes > .field__label, .node__content .field--name-field-event-excludes > .field__label,
.node__content .field--name-field-price-tiers > .field__label, .node__content .field--name-field-event-faq > .field__label, .node__content .field--name-field-event-gallery > .field__label {
  margin: 1.25rem 0 .6rem; font-size: var(--ee-h3, 1.25rem); font-weight: 700; line-height: 1.25; letter-spacing: 0; text-transform: none; color: var(--foreground);
}
/* строка-сводка мероприятия: значки и «даты · место · цена» (шаблон node.html.twig) */
.ee-event-meta { margin: 0 0 1.25rem; }
.ee-event-meta__badges { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: .6rem; }
.ee-badge { display: inline-flex; align-items: center; padding: .2rem .75rem; border-radius: var(--ee-radius-pill); background: var(--secondary); color: var(--secondary-foreground); font-size: .8125rem; font-weight: 600; line-height: 1.3; }
.ee-badge--dir { background: var(--accent); color: var(--accent-foreground); }
.ee-badge--status { background: var(--background); border: 1px solid currentColor; }
.ee-badge--open { color: var(--ee-status-ok); } .ee-badge--announce, .ee-badge--postponed { color: var(--ee-status-warn); } .ee-badge--cancelled { color: var(--ee-status-bad); } .ee-badge--finished, .ee-badge--going { color: var(--ee-status-done); }
.ee-event-meta__line { margin: 0; font-size: 1.125rem; font-weight: 600; color: var(--foreground); }

/* ---------- единая ширина и боковые поля (2026-09-26) ----------
 * Один контейнер (--ee-container, боковой отступ --ee-gutter) для шапки, героя, секций Canvas, заголовков и подвала: левый край текста и логотипа
 * один и тот же на всех блоках при любой ширине окна (раньше у контейнера Tailwind были ступени по ширине, у внутренних блоков 90 %, у героя свои поля). */
html { scrollbar-gutter: stable; }   /* место под полосу прокрутки резервируется всегда: при открытии шторки (overflow: hidden) страница не прыгает вправо */
.container { max-width: var(--ee-container); padding-inline: var(--ee-gutter); }
.container [class*="max-w-9/10"] { max-width: 100%; }
.region-content { max-width: none; padding-inline: 0; }   /* область содержимого на всю ширину окна (у Mercury она ступенчатая: 640/768/1024/1280/1536): ширину и поля задают контейнеры блоков, поэтому левый край текста один */
.ee-hero__inner { max-width: var(--ee-container); margin-inline: auto; padding-inline: var(--ee-gutter); }   /* полоса героя на всю ширину, текст героя на общей линии с шапкой */


/* --- Контакты и чат (рецепт contacts): лента диалога, форма ответа, подпись «Разрешаю…» под телефоном ---------------------------------------- */
.ee-phone-consent { margin-top: -.5rem; }
.ee-phone-consent label, .ee-phone-consent .form-item__label { font-size: .75rem; line-height: 1.3; color: var(--muted-foreground); font-weight: 400; }
.ee-chat { max-width: 46rem; margin-top: 1.5rem; }
.ee-chat__card { font-size: .875rem; margin: 0 0 1rem; }
.ee-chat__list { display: flex; flex-direction: column; gap: .625rem; }
.ee-msg { max-width: 82%; padding: .625rem .875rem; border-radius: 1rem; background: var(--muted, #f3f4f6); border: 1px solid transparent; }
.ee-msg--in { align-self: flex-start; border-bottom-left-radius: .25rem; }
.ee-msg--out { align-self: flex-end; border-bottom-right-radius: .25rem; background: #e8efff; }
.ee-msg--bot { background: #f1f5f9; }
.ee-msg--failed { border-color: #c0392b; }
.ee-msg__meta { display: flex; flex-wrap: wrap; gap: .5rem; font-size: .75rem; color: var(--muted-foreground); margin-bottom: .25rem; }
.ee-msg__who { font-weight: 600; color: var(--foreground); }
.ee-msg__text { overflow-wrap: anywhere; }
.ee-msg__status { font-size: .6875rem; color: var(--muted-foreground); text-align: right; margin-top: .25rem; }
.ee-msg--failed .ee-msg__status { color: #c0392b; }
.ee-msg--queued .ee-msg__status::before { content: "⏳ "; }
.ee-msg--sent .ee-msg__status::before { content: "✓ "; }
.ee-chat__reply { margin-top: 1.5rem; }
.ee-chat__reply h2 { font-size: 1.125rem; margin: 0 0 .75rem; }
.ee-chat__reply textarea { min-height: 6rem; }

/* FAQ на телефоне — одна колонка (две узкие колонки текста были нечитаемы) */
@media (max-width: 47.99rem) { .view-faq-listing .view-content { grid-template-columns: minmax(0, 1fr) !important; } }

/* карточка с сердечком: заголовок карточки без картинки не заходит под сердечко (было «Участница фестиваля, 20…») */
.views-view-grid .views-col > .views-field:first-child:not(:has(img)), .view-content > .views-row:has(.ee-fav--card) > .views-field:first-child { padding-right: 3.5rem; }

/* --- Пункт меню-раскрывашка («Ещё»): штатный <details>/<summary>, без JS (QA-находка 28.09: пункт был мёртвой ссылкой) --- */
.ee-menu__dropdown > summary::-webkit-details-marker { display: none; }   /* убрать штатный треугольник браузера — свой ee-menu__caret вместо него */
.ee-menu__caret { display: inline-block; font-size: .75em; transition: transform .2s; }
.ee-menu__dropdown[open] > summary .ee-menu__caret { transform: rotate(180deg); }
.ee-menu__submenu { display: flex; flex-direction: column; gap: .125rem; margin: .25rem 0 .5rem; padding: 0; list-style: none; }
.ee-menu__submenu-link { display: block; padding: .5rem .75rem; border-radius: var(--radius); min-height: 44px; display: flex; align-items: center; }
.ee-menu__submenu-link:hover, .ee-menu__submenu-link:focus-visible { background: var(--muted); }
.ee-menu__submenu-link[aria-current="page"] { font-weight: 600; }
@media (min-width: 48rem) {   /* md: на десктопе — настоящая выпадашка поверх контента, не раздвигает шапку */
  .ee-menu__dropdown { position: relative; }
  .ee-menu__submenu {
    position: absolute; top: 100%; left: 0; z-index: 40; min-width: 12rem; margin: .25rem 0 0;
    background: var(--background); border: 1px solid var(--border); border-radius: var(--radius);
    box-shadow: 0 .5rem 1.5rem rgb(0 0 0 / .12); padding: .375rem;
  }
}

/* Событие: как добраться, места, «Поддержать» (модуль event_extras) */
.ee-route, .ee-seats, .ee-support { margin-block: 1.5rem; }
.ee-route__heading, .ee-support__heading { font-size: 1.25rem; margin-block: 0 .5rem; }
.ee-route__links { display: flex; flex-wrap: wrap; gap: .5rem; margin: .5rem 0 0; }
.ee-route__link { display: inline-block; padding: .5rem 1rem; border: 1px solid var(--primary, currentColor); border-radius: var(--ee-radius, 999px); text-decoration: none; }
.ee-route__link:hover, .ee-route__link:focus-visible { background: var(--primary, currentColor); color: var(--primary-foreground, #fff); }
.ee-seats__line { margin: 0 0 .4rem; }
.ee-seats__note { opacity: .7; font-size: .9em; }
.ee-seats__bar { height: .5rem; border-radius: 999px; background: color-mix(in srgb, currentColor 15%, transparent); overflow: hidden; }
.ee-seats__bar > span { display: block; height: 100%; background: var(--primary, currentColor); }
.ee-support__qr { display: block; max-width: 180px; height: auto; background: #fff; padding: .5rem; border-radius: .5rem; }
.ee-support__note { margin: .5rem 0 0; }

/* Заголовок страницы <h1> (SEO): один на страницу, над содержимым региона; тот же контейнер, что у основного потока */
.layout-content .region-content > h1.ee-page-title { padding: 1.5rem var(--ee-gutter) 0; margin-block: 0; max-width: var(--ee-container); margin-inline: auto; }
.layout-content .region-content > h1.ee-page-title + * { padding-top: .75rem; }

/* Якоря страницы мероприятия: Фото · Как добраться · Отзывы (Д27) */
.ee-anchors { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; margin: .5rem 0 0; font-size: .95rem; }
.ee-anchors a { text-decoration: underline; text-underline-offset: 3px; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
[id="ee-gallery"], [id="ee-route"], [id="ee-reviews"] { scroll-margin-top: 5rem; }
/* Карта Яндекса по нажатию (event-map.js) */
.ee-map { margin-block: 1rem; }
.ee-map__note { margin: .4rem 0 0; font-size: .9rem; opacity: .75; }
.ee-map__canvas { width: 100%; height: 22rem; border-radius: var(--ee-radius, .75rem); overflow: hidden; background: color-mix(in srgb, currentColor 8%, transparent); }
.ee-map__pin { width: 1.5rem; height: 1.5rem; border-radius: 50% 50% 50% 0; transform: translate(-50%, -100%) rotate(-45deg); background: var(--primary, #b4552f); border: 2px solid #fff; box-shadow: 0 1px 4px rgba(0,0,0,.35); }
@media (max-width: 40rem) { .ee-map__canvas { height: 18rem; } }

/* Глазик и страницы ошибок (ee-eye, ee-error): цвета — токены --ee-eye-*; у нейтральной темы лучи выключены */
.ee-eye { display: inline-block; max-width: 100%; height: auto; }
.ee-eye__ball { transform-origin: 50px 50px; animation: ee-eye-blink 7s ease-in-out infinite; }
@keyframes ee-eye-blink { 0%, 92%, 100% { transform: scaleY(1); } 95% { transform: scaleY(.08); } }
@media (prefers-reduced-motion: reduce) { .ee-eye__ball { animation: none; } }
.ee-error { text-align: center; max-width: 36rem; margin: 2rem auto; padding-inline: var(--ee-gutter, 1rem); }
.ee-error__eye { margin-bottom: 1rem; }
.ee-error__title { margin: 0 0 .5rem; }
.ee-error__text { margin: 0 0 1.25rem; opacity: .85; }
.ee-error__actions { display: flex; flex-wrap: wrap; gap: .5rem; justify-content: center; margin: 0; }
.layout-content .region-content > .ee-error { max-width: 36rem; }

/* Способ связи в формах: значок перед подписью варианта (маска, окраска цветом текста; те же знаки, что в ee-icon: Simple Icons CC0 и служебные линейные) */
.webform-submission-form label[for^="edit-contact-channel-"]::before { content: ""; display: inline-block; width: 1.15em; height: 1.15em; margin-right: .45em; vertical-align: -.2em; background: currentColor; -webkit-mask: var(--ee-mask) center / contain no-repeat; mask: var(--ee-mask) center / contain no-repeat; }
.webform-submission-form label[for$="contact-channel-telegram"] { --ee-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.962 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z'/%3E%3C/svg%3E"); }
.webform-submission-form label[for$="contact-channel-vk"] { --ee-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='m9.489.004.729-.003h3.564l.73.003.914.01.433.007.418.011.403.014.388.016.374.021.36.025.345.03.333.033c1.74.196 2.933.616 3.833 1.516.9.9 1.32 2.092 1.516 3.833l.034.333.029.346.025.36.02.373.025.588.012.41.013.644.009.915.004.98-.001 3.313-.003.73-.01.914-.007.433-.011.418-.014.403-.016.388-.021.374-.025.36-.03.345-.033.333c-.196 1.74-.616 2.933-1.516 3.833-.9.9-2.092 1.32-3.833 1.516l-.333.034-.346.029-.36.025-.373.02-.588.025-.41.012-.644.013-.915.009-.98.004-3.313-.001-.73-.003-.914-.01-.433-.007-.418-.011-.403-.014-.388-.016-.374-.021-.36-.025-.345-.03-.333-.033c-1.74-.196-2.933-.616-3.833-1.516-.9-.9-1.32-2.092-1.516-3.833l-.034-.333-.029-.346-.025-.36-.02-.373-.025-.588-.012-.41-.013-.644-.009-.915-.004-.98.001-3.313.003-.73.01-.914.007-.433.011-.418.014-.403.016-.388.021-.374.025-.36.03-.345.033-.333c.196-1.74.616-2.933 1.516-3.833.9-.9 2.092-1.32 3.833-1.516l.333-.034.346-.029.36-.025.373-.02.588-.025.41-.012.644-.013.915-.009ZM6.79 7.3H4.05c.13 6.24 3.25 9.99 8.72 9.99h.31v-3.57c2.01.2 3.53 1.67 4.14 3.57h2.84c-.78-2.84-2.83-4.41-4.11-5.01 1.28-.74 3.08-2.54 3.51-4.98h-2.58c-.56 1.98-2.22 3.78-3.8 3.95V7.3H10.5v6.92c-1.6-.4-3.62-2.34-3.71-6.92Z'/%3E%3C/svg%3E"); }
.webform-submission-form label[for$="contact-channel-phone"] { --ee-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E"); }
.webform-submission-form label[for$="contact-channel-email"] { --ee-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'/%3E%3Cpolyline points='22,6 12,13 2,6'/%3E%3C/svg%3E"); }

/* Врезка, таблица, иллюстрация (компоненты callout, data-table, illustration; токены --ee-callout-*, --ee-ill-*) */
.ee-callout { --_c: var(--ee-callout-info, var(--primary, #3b5bdb)); margin-block: 1.5rem; padding: 1rem 1.25rem; border-left: 4px solid var(--_c); border-radius: 0 var(--ee-radius, .75rem) var(--ee-radius, .75rem) 0; background: color-mix(in srgb, var(--_c) 9%, var(--background, #fff)); }
.ee-callout--tip { --_c: var(--ee-callout-tip, #2b8a3e); }
.ee-callout--warning { --_c: var(--ee-callout-warning, #b45309); }
.ee-callout__title { margin: 0 0 .35rem; font-weight: 700; display: flex; flex-wrap: wrap; gap: .25rem .6rem; align-items: baseline; }
.ee-callout__kind { font-size: .8rem; letter-spacing: .04em; text-transform: uppercase; color: var(--_c); filter: brightness(.8); }
.ee-callout__body > :last-child { margin-bottom: 0; }
.ee-table-wrap { margin-block: 1.5rem; overflow-x: auto; border: 1px solid var(--border, currentColor); border-radius: var(--ee-radius, .75rem); }
.ee-table-wrap:focus-visible { outline: 3px solid var(--ee-focus, currentColor); outline-offset: 2px; }
.ee-table { width: 100%; border-collapse: collapse; min-width: 28rem; }
.ee-table caption { text-align: left; font-weight: 700; padding: .75rem 1rem; }
.ee-table th, .ee-table td { padding: .65rem 1rem; text-align: left; vertical-align: top; border-top: 1px solid var(--border, currentColor); }
.ee-table thead th { background: color-mix(in srgb, var(--primary, currentColor) 8%, var(--background, #fff)); border-top: 0; font-weight: 700; }
.ee-table tbody tr:nth-child(even) { background: color-mix(in srgb, currentColor 3%, transparent); }
.ee-table tbody th[scope="row"] { font-weight: 600; }
.ee-illustration { margin: 1.5rem auto; max-width: 30rem; }
.ee-illustration--mandala, .ee-illustration--circle { max-width: 22rem; }
.ee-illustration svg { display: block; width: 100%; height: auto; }
.ee-illustration figcaption { margin-top: .5rem; text-align: center; font-size: .9rem; opacity: .75; }

/* ---------- хаб направлений («рубрики» на главной): ровная сетка плиток 4 в ряд (29.09, замечание оператора «бардак, два ряда по 4») ----------
   Причина прежнего вида: плитки лежали flex-переносом разной ширины (ширина по тексту названия), а внутренние ряды представления (.views-row)
   и инлайн-ширина колонок (style="width:33.33%") мешали сетке. Теперь ряды «растворяются» (display: contents), ширина колонок сбрасывается,
   плитки одной высоты. Планшет и компьютер — 4 колонки (при 8 направлениях получаются два ряда по 4), телефон — 2 колонки. */
.view-directions-hub .views-view-grid.horizontal { display: grid !important; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.view-directions-hub .views-view-grid.horizontal > .views-row { display: contents; }
.view-directions-hub .views-view-grid .views-col { width: auto !important; float: none; margin: 0; min-height: 6rem; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .35rem; text-align: center; padding: 1.25rem .9rem 1rem; border-radius: var(--ee-radius, var(--radius)); transition: border-color .2s, box-shadow .2s; }
@media (min-width: 48rem) { .view-directions-hub .views-view-grid.horizontal { grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); gap: 1rem; } }   /* QA 29.09: 5 плиток в один ряд, без одинокой пятой */
.view-directions-hub .views-field-name { width: 100%; }
.view-directions-hub .views-field-name a { display: block; font-family: var(--ee-font-heading, inherit); font-size: 1.05rem; line-height: 1.3; overflow-wrap: break-word; hyphens: manual; }   /* QA 29.09: без переноса слогов в названиях направлений */
.view-directions-hub .views-col:hover, .view-directions-hub .views-col:focus-within { border-color: var(--primary); box-shadow: var(--shadow-sm); }

/* ---------- логотип в шапке: значок и название в один ряд по центру (29.09, «название съехало») ----------
   Причина: блок логотипа — обычный div с двумя ссылками подряд (значок и название), они стояли по базовой линии; у значка 72 px (логотип Родиона)
   название прижималось к его низу и уезжало вправо-вниз. Теперь блок — flex по центру, высота значка ограничена токеном --ee-logo-h. */
.ee-header__logo > div { display: flex; align-items: center; gap: .6rem; }
.ee-header__logo img { height: var(--ee-logo-h, 2.75rem); width: auto; max-width: none; }

/* ---------- название сайта в шапке: крупнее и стильнее (29.09, просьба оператора) ----------
   Размер по clamp от ширины окна, токены --ee-brand-size-min/-max (дочерняя тема сайта задаёт свои); название не переносится и не сжимается, а колонка логотипа
   в шапке шире содержимого не растёт: поиск и меню остаются на своих местах (проверено числами на ширинах 500–1920). */
.ee-header__logo a[rel=home]:not(:has(> img)) { font-size: clamp(var(--ee-brand-size-min, 1.1rem), .85rem + .7vw, var(--ee-brand-size-max, 1.6rem)); line-height: 1.1; white-space: nowrap; }
.ee-header__logo > div { min-width: 0; }

/* ---------- меню пользователя и «Рубрики» в ряду меню (29.09) ---------- */
.ee-user { position: relative; display: inline-flex; }
.ee-user__toggle { color: inherit; }
.ee-user__panel { position: absolute; top: calc(100% + .35rem); right: 0; z-index: 30; min-width: 13rem; padding: .35rem; background: var(--background); border: 1px solid var(--border); border-radius: var(--ee-radius, .75rem); box-shadow: var(--shadow-md, 0 8px 24px rgba(0,0,0,.14)); }
.ee-user__panel[hidden] { display: none; }
.ee-user__list { list-style: none; margin: 0; padding: 0; }
.ee-user__list--auth, .ee-user__staff, .ee-user__qa { display: none; }
body.ee-user-auth .ee-user__list--auth { display: block; }
body.ee-user-auth .ee-user__list--anon { display: none; }
body.ee-user-staff .ee-user__staff { display: list-item; }
.ee-user__link { display: block; padding: .6rem .8rem; border-radius: calc(var(--ee-radius, .75rem) - 2px); color: var(--foreground); text-decoration: none; font-weight: 500; }
.ee-user__link:hover, .ee-user__link:focus-visible { background: var(--secondary); outline: none; }
.ee-user__link:focus-visible { box-shadow: 0 0 0 3px var(--ee-focus); }
/* «Рубрики» — последний пункт ряда меню: на компьютере пилюля справа от пунктов, на телефоне — строка в бургер-меню */
.ee-shutter__topics { display: inline-flex; align-items: center; gap: .4rem; }
.ee-shutter__topics .ee-header__btn-label { position: static; width: auto; height: auto; clip: auto; overflow: visible; }
@media (min-width: 64rem) {
  .ee-header .ee-shutter--menu .ee-shutter__body { flex-wrap: wrap; align-items: center; }
  .ee-header .ee-shutter__topics { min-height: 2.5rem; padding: .4rem .7rem; font-size: .875rem; font-weight: 600; border-radius: var(--ee-radius-pill); white-space: nowrap; }
  .ee-header .ee-shutter__topics:hover, .ee-header .ee-shutter__topics:focus-visible { background: var(--secondary); }
}
@media (max-width: 63.99rem) {
  .ee-shutter--menu .ee-shutter__topics { width: 100%; justify-content: flex-start; margin-top: .5rem; padding: .8rem 1rem; border: 1px solid var(--border); border-radius: var(--ee-radius, .75rem); font-weight: 600; background: transparent; color: var(--foreground); }
}
.ee-user__toggle { display: inline-flex; align-items: center; justify-content: center; min-width: 2.75rem; min-height: 2.75rem; border-radius: var(--ee-radius-pill); background: transparent; border: 0; cursor: pointer; }
.ee-user__toggle:hover { background: var(--ee-btn-soft, var(--secondary)); box-shadow: inset 0 0 0 1.5px var(--ee-btn-accent, var(--primary)); }
.ee-user__toggle:focus-visible { outline: 3px solid var(--ee-focus); outline-offset: 2px; }

/* ---------- поля форм: рамка и отступы входят в ширину и высоту (29.09, «поле подписки высокое и наезжает на кнопку») ----------
   Причина (измерено): у input/select/textarea стоял box-sizing: content-box (сброс Tailwind в урезанной основе CMS не подключён), а правила темы задают width: 100%
   и min-height: 2.75rem — к ним прибавлялись padding и рамка: поле выступало за свой контейнер на 31 px (554 при контейнере 523) и упиралось в кнопку, высота 65 px
   вместо 44 px кнопки. Тот же дефект был у полей всех форм (заявка, вопрос, поиск): они шире колонки страницы. */
input:not([type="checkbox"]):not([type="radio"]), select, textarea, button { box-sizing: border-box; }

/* ---------- гармошка «Вопросы и ответы» (29.09): один стиль для списка вопросов и блока «Вопросы» на странице мероприятия ----------
   details/summary без скриптов; значок +/− рисуется маской (тот же знак у всех тем), поворот и плавное раскрытие отключаются при «уменьшить движение». */
.view-faq-listing .views-view-grid.horizontal { display: block !important; max-width: 52rem; margin-inline: auto; }
.view-faq-listing .views-view-grid.horizontal > .views-row { display: block; }
.view-faq-listing .views-view-grid .views-col { width: auto !important; float: none; padding: 0; border: 0; background: transparent; box-shadow: none; min-height: 0; }
.view-faq-listing .views-view-grid .views-col:hover { box-shadow: none; transform: none; }
.ee-faq-item { margin: 0 0 .6rem; padding: 0; border: 1px solid var(--border); border-radius: var(--ee-radius, .75rem); background: var(--background); overflow: hidden; }
.ee-faq-item > summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .95rem 1.1rem; cursor: pointer; list-style: none; font-family: var(--ee-font-heading, inherit); font-weight: 600; font-size: 1.05rem; line-height: 1.35; color: var(--foreground); }
.ee-faq-item > summary::-webkit-details-marker { display: none; }
.ee-faq-item > summary::after { content: ""; flex: none; width: 1.25rem; height: 1.25rem; background: var(--primary); transition: transform .25s ease;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E") center / contain no-repeat; }
.ee-faq-item[open] > summary::after { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E"); }
.ee-faq-item > summary:hover { background: color-mix(in srgb, var(--primary) 6%, transparent); }
.ee-faq-item > summary:focus-visible { outline: 3px solid var(--ee-focus); outline-offset: -3px; }
.ee-faq-item[open] { border-color: color-mix(in srgb, var(--primary) 45%, var(--border)); }
.ee-faq-item__answer { padding: 0 1.1rem 1rem; color: var(--foreground); }
.ee-faq-item__answer > :last-child { margin-bottom: 0; }
.ee-faq-tools { max-width: 52rem; margin: 0 auto .75rem; text-align: right; }
@supports (interpolate-size: allow-keywords) { .ee-faq-item { interpolate-size: allow-keywords; } .ee-faq-item::details-content { block-size: 0; overflow: hidden; transition: block-size .25s ease, content-visibility .25s allow-discrete; } .ee-faq-item[open]::details-content { block-size: auto; } }
@media (prefers-reduced-motion: reduce) { .ee-faq-item > summary::after, .ee-faq-item::details-content { transition: none; } }
.ee-faq-item { scroll-margin-top: 8rem; }

.webform-submission-form label[for$="contact-channel-max"] { --ee-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill-rule='evenodd' fill='black' d='M12 2C6.5 2 2 6.1 2 11.2c0 2.9 1.5 5.4 3.8 7.1V22l3.6-2c.8.2 1.6.3 2.6.3 5.5 0 10-4.1 10-9.1S17.5 2 12 2zM7.5 15.5v-7h1.6L12 12l2.9-3.5h1.6v7h-1.6v-4.4L12 14.4 9.1 11.1v4.4z'/%3E%3C/svg%3E"); }
/* ряд главных действий на странице мероприятия: «Записаться» (крупная заливка) и «Спросить» (контур) */
.ee-event-cta { display: flex; flex-wrap: wrap; gap: .6rem; margin: .75rem 0 0; }

/* ---------- страница мероприятия: композиция первого экрана (29.09) ----------
   Причины прежнего вида (Родион, измерено): (1) отображение полей «Картинка по ссылке» / обложка / галерея не было скрыто (скрипт hero-gallery-init.php на Родионе не запускался),
   поэтому та же обложка выводилась дважды — героем и полем: слева 352×440, справа 776×970 (герой сдвигался во вторую колонку сетки); (2) на узкой ширине герой растягивался на всю
   колонку (689×861); (3) содержимое имело второй боковой отступ 16 px относительно заголовка и сводки. Теперь: один герой 22rem в левой колонке рядом с текстом, на узкой ширине —
   не шире 26rem и не выше 60% экрана, боковой отступ один, галерея ниже отдельным блоком с якорем «Фото». */
.node--view-mode-full .node__content { padding-inline: 0; }
.ee-event-hero__main img { max-height: 60vh; }
@media (max-width: 59.99rem) { .node--type-event .ee-event-hero { max-width: 26rem; margin-inline: auto; } .ee-event-hero__main { align-self: center; } }

body.ee-user-qa .ee-user__qa { display: list-item; }

/* ---------- «Мы в соцсетях»: горизонтальные плитки со значком и подписью (29.09, решение оператора) ----------
   Значок + название сети + имя канала; плитка целиком ссылка (aria-label уже у ссылки), одинаковая высота, переносятся по ширине, на телефоне — 2 в ряд;
   наведение и фокус видны. Цвета — токены темы (--ee-btn-accent, --border, --card). */
.ee-social__item { display: flex; }
.ee-social__tile { flex-direction: row; align-items: center; justify-content: flex-start; gap: .7rem; min-width: 0; max-width: none; width: 100%; min-height: 3.5rem; padding: .5rem .9rem .5rem .55rem; text-align: left; border: 1px solid var(--border); border-radius: var(--ee-radius, .75rem); background: var(--card, transparent); transition: border-color .15s, box-shadow .15s, background .15s; }
.ee-social__tile:hover { border-color: var(--ee-btn-accent, var(--primary)); box-shadow: var(--shadow-sm); }
.ee-social__tile:focus-visible { outline: 3px solid var(--ee-focus); outline-offset: 2px; border-radius: var(--ee-radius, .75rem); }
.ee-social__icon { flex: none; width: 2.5rem; height: 2.5rem; }
.ee-social__text { display: flex; flex-direction: column; min-width: 0; gap: .05rem; }
.ee-social__net { font-weight: 700; font-size: .95rem; line-height: 1.2; color: var(--foreground); }
.ee-social__name { font-size: .8125rem; line-height: 1.25; overflow-wrap: anywhere; }
.ee-fcol .view-social-links .view-content, .ee-fcol .view-social-links .views-view-grid, .view-social-links .view-content > div { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; }

/* ---------- окно согласия на куки (Klaro): цвета, шрифт, скругления — токены темы (29.09) ----------
   Кнопки: «Принять всё» (главная, заливка), «Только необходимые» (равнозначная по размеру, контур), «Настроить» (текстовая ссылка). Тёмных паттернов нет: отказ так же заметен, как согласие. */
html .klaro { --klaro-primary-color: var(--ee-btn-accent, var(--primary)); --klaro-button-bg: var(--ee-btn-accent, var(--primary)); --klaro-button-text-color: var(--ee-btn-accent-fg, var(--primary-foreground)); --klaro-button-border: 2px solid var(--ee-btn-accent, var(--primary)); --klaro-button-border-radius: var(--ee-radius-pill, 999px); --klaro-button-bg-hover: var(--background); --klaro-button-text-color-hover: var(--ee-btn-accent, var(--primary)); --klaro-button-border-hover: 2px solid var(--ee-btn-accent, var(--primary)); --klaro-button-focus-outline: 3px solid var(--ee-focus, currentColor); --klaro-slider-bg-active: var(--ee-btn-accent, var(--primary)); --klaro-slider-bg-required: var(--ee-btn-accent, var(--primary)); --font-family: var(--ee-font-body, inherit); --title-font-family: var(--ee-font-heading, inherit); }
html .klaro .cookie-notice .cm-btn.cm-btn-decline, html .klaro .cookie-notice .cm-btn.cm-btn-danger { background: var(--background); color: var(--ee-btn-accent, var(--primary)); border: 2px solid var(--ee-btn-accent, var(--primary)); }
html .klaro .cookie-notice { border-radius: var(--ee-radius, .75rem); background: var(--background); color: var(--foreground); }

/* ---------- верхний блок главной (компонент top-block): «О мастере», «О компании», «Анонс» ---------- */
.ee-top { padding-block: 1.5rem 2rem; }
.ee-top__inner { max-width: var(--ee-container); margin-inline: auto; padding-inline: var(--ee-gutter); display: grid; gap: 1.5rem 3rem; align-items: center; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 48rem) { .ee-top__inner { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); } .ee-top--company .ee-top__inner:not(:has(.ee-top__media)) { grid-template-columns: minmax(0, 1fr); } }
.ee-top__kicker { margin: 0 0 .4rem; font-size: .8125rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--muted-foreground); }
.ee-top__title { margin: 0 0 .75rem; font-size: clamp(1.9rem, 1.2rem + 2.4vw, 3rem); line-height: 1.1; }
.ee-top__title a { color: inherit; text-decoration: none; }
.ee-top__title a:hover, .ee-top__title a:focus-visible { text-decoration: underline; }
.ee-top__lead, .ee-top__meta { margin: 0 0 1.25rem; font-size: 1.15rem; color: var(--muted-foreground); }
.ee-top__meta { color: var(--foreground); font-weight: 600; }
.ee-top__actions { display: flex; flex-wrap: wrap; gap: .6rem; margin: 0; }
.ee-top__stats { display: flex; flex-wrap: wrap; gap: 1rem 2rem; margin: 0 0 1.25rem; padding: 0; list-style: none; }
.ee-top__stats li { display: flex; flex-direction: column; }
.ee-top__stats strong { font-family: var(--ee-font-heading, inherit); font-size: 1.9rem; line-height: 1.1; color: var(--primary); }
.ee-top__stats span { font-size: .9rem; color: var(--muted-foreground); }
.ee-top__media img { display: block; width: 100%; height: auto; max-height: 26rem; object-fit: cover; border-radius: var(--ee-radius-card, 1rem); box-shadow: var(--shadow-md); }
.ee-top--master .ee-top__media img { object-position: center 25%; }

/* практика: единственная обложка не выше 26rem и 60% экрана — текст остаётся на первом экране */
.node--type-practice.node--view-mode-full .field--name-field-image-url img, .node--type-practice.node--view-mode-full .field--name-field-cover img { width: 100%; height: auto; max-height: min(60vh, 26rem); object-fit: cover; border-radius: var(--ee-radius-card, 1rem); }

/* QA 29.09: таблица цен по ступеням не растягивает страницу на телефоне: прокрутка только внутри блока, ячейки переносятся */
.ee-tiers, .field--name-field-registration-terms .field__item { max-width: 100%; overflow-x: auto; }
.ee-tiers table, .field--name-field-registration-terms table { width: 100%; max-width: 100%; }
.ee-tiers :is(th, td) { overflow-wrap: anywhere; }
@media (max-width: 39.99rem) { .ee-tiers :is(th, td), .field--name-field-registration-terms :is(th, td) { padding: .5rem .55rem; } }

/* QA 29.09: регистрации посетителей на сайте нет — приглашение «Войдите, чтобы оставлять комментарии» не показываем */
.comment-forbidden, .links .comment-forbidden, .node .field--name-comment .links { display: none; }

/* QA 29.09: баннер cookie компактнее — на телефоне не больше ~17 % высоты экрана (было 27 %), на широком экране уже и без тяжёлой тени */
@media (max-width: 39.99rem) {
  html .klaro .cookie-notice:not(.cookie-modal-notice) { padding: .6rem .75rem; font-size: .8125rem; line-height: 1.35; }
  html .klaro .cookie-notice:not(.cookie-modal-notice) .cn-body { padding: 0; margin: 0; }
  html .klaro .cookie-notice:not(.cookie-modal-notice) .cn-body p { margin: 0 0 .35rem; font-size: .8125rem; }
  html .klaro .cookie-notice:not(.cookie-modal-notice) .cn-buttons { display: flex; gap: .4rem; margin-top: .35rem; }
  html .klaro .cookie-notice:not(.cookie-modal-notice) .cn-buttons .cm-btn { flex: 1 1 0; min-height: 2.25rem; padding: .3rem .5rem; font-size: .8125rem; margin: 0; }
}
@media (min-width: 40rem) { html .klaro .cookie-notice:not(.cookie-modal-notice) { max-width: 24rem; } }
.ee-faq-item__permalink { margin: .75rem 0 0; font-size: .875rem; }
