:root{--s-ink:#585858;--s-ink2:#636363;--s-ink3:#6A6A6A;--s-chrome:#787878;--s-coral:#FF8562;--s-peach:#FFBE98;--s-bg:#FAFAFA;--s-white:#FFFFFF;--s-line:#EEEEEE;--s-line2:#E3E3E3;--s-green:#2F875C}
/* F251/T002 (/start/) — хром раздела по замеру САЙТА projects.familyland.ru (getComputedStyle, 09.10,
   start-design/ref/site-measure*.json). Содержание страниц стилизуют сами элементы виджетов (инлайн).
   Значения ниже — только замеры сайта; своих промежуточных нет. */
@font-face { font-family: "WorkSans"; src: url("/start/assets/WorkSans-Regular.woff") format("woff"); font-weight: 400; font-display: swap; }
@font-face { font-family: "WorkSans"; src: url("/start/assets/WorkSans-Medium.woff") format("woff"); font-weight: 500; font-display: swap; }
@font-face { font-family: "WorkSans"; src: url("/start/assets/WorkSans-Semibold.woff") format("woff"); font-weight: 600; font-display: swap; }
/* Шрифт содержания — тот же, что у виджетов (next/font Manrope, переменная --w-font: src/app/fonts/widget-font.ts). */
@font-face { font-family: "Manrope"; src: url("/start/assets/manrope-var.woff2") format("woff2"); font-weight: 200 800; font-display: swap; }
:root { --w-font: "Manrope"; }
*, *::before, *::after { box-sizing: border-box; }
/* Фон страницы = артборд сайта rgb(250,250,250) (подвал и мобильная шапка, замер). */
html, body { margin: 0; padding: 0; background: var(--s-bg); }
body { overflow-x: hidden; font-family: var(--w-font), system-ui, -apple-system, "Segoe UI", Arial, sans-serif; }
img { max-width: 100%; }
/* Сетка сайта: 1322 px (поля 59 px при 1440, замер шапки и подвала). */
.site-wrap { max-width: 1322px; margin: 0 auto; padding: 0 20px; }
@media (min-width: 1362px) { .site-wrap { padding: 0; } }
.main { padding-top: 24px; padding-bottom: 64px; }

/* ── шапка сайта (замер 1440: высота 143, фон var(--s-peach), лого 200×93 @59,20; пункты WorkSans 20/500 var(--s-white)
      @x 377/544/745/932 (= +318/+485/+686/+873 от сетки), y 61; кнопка 252×55 @1130,44, 16/600 var(--s-chrome),
      фон var(--s-white), 1px solid var(--s-chrome), radius 0) ── */
.site-header { background: var(--s-peach); font-family: "WorkSans", Arial, sans-serif; }
.site-header-row { position: relative; height: 143px; }
.site-logo { position: absolute; left: 0; top: 20px; display: block; }
.site-logo img { width: 200px; height: 93px; object-fit: contain; display: block; }
.site-nav a { position: absolute; top: 61px; color: var(--s-white); text-decoration: none; font-size: 20px; font-weight: 500; line-height: 24px; white-space: nowrap; }
.site-nav a:nth-child(1) { left: 318px; } .site-nav a:nth-child(2) { left: 485px; } .site-nav a:nth-child(3) { left: 686px; } .site-nav a:nth-child(4) { left: 873px; }
.site-cta { position: absolute; right: 0; top: 44px; width: 252px; height: 55px; display: flex; align-items: center; justify-content: center;
  background: var(--s-white); color: var(--s-chrome); border: 1px solid var(--s-chrome); border-radius: 0; font-size: 16px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.site-burger { display: none; }

/* ── мобильная шапка (замер 390: полоса 87 px var(--s-peach), лого 100×47 @20,20, бургер 22×14 @348,36 — 3 белые линии;
      меню: панель var(--s-peach) во всю ширину под полосой, пункты по центру WorkSans 18/400 var(--s-white) шаг 42 px,
      кнопка 14/600 var(--s-chrome) на var(--s-white), 1px solid var(--s-chrome), поля 11.7×30; открытая — бургер становится ✕) ── */
@media (max-width: 979px) {
  .site-header { position: sticky; top: 0; z-index: 30; }
  .site-header-row { height: 87px; }
  .site-logo { top: 20px; left: 20px; }
  .site-logo img { width: 100px; height: 47px; }
  .site-nav, .site-cta { display: none; }
  .site-burger { display: block; position: absolute; right: 0; top: 0; height: 87px; width: 62px; }
  .site-burger > summary { list-style: none; cursor: pointer; position: absolute; right: 10px; top: 26px; width: 42px; height: 34px; padding: 10px; }
  .site-burger > summary::-webkit-details-marker { display: none; }
  .site-burger > summary span { position: absolute; left: 10px; width: 22px; height: 2px; background: var(--s-white); transition: transform .2s, opacity .2s; }
  .site-burger > summary span:nth-child(1) { top: 10px; } .site-burger > summary span:nth-child(2) { top: 16px; } .site-burger > summary span:nth-child(3) { top: 22px; }
  .site-burger[open] > summary span:nth-child(1) { top: 16px; transform: rotate(45deg); }
  .site-burger[open] > summary span:nth-child(2) { opacity: 0; }
  .site-burger[open] > summary span:nth-child(3) { top: 16px; transform: rotate(-45deg); }
  .site-burger > nav { position: fixed; left: 0; right: 0; top: 87px; background: var(--s-peach); padding: 21px 0 53px; display: flex; flex-direction: column; align-items: center; }
  .site-burger > nav a { color: var(--s-white); text-decoration: none; font-size: 18px; font-weight: 400; line-height: 42px; }
  .site-burger > nav a.site-burger-cta { margin-top: 29px; color: var(--s-chrome); background: var(--s-white); border: 1px solid var(--s-chrome); border-radius: 0; font-size: 14px; font-weight: 600; line-height: 1.55; padding: 11.7px 30px; }
}
@media (max-width: 1361px) and (min-width: 980px) {
  /* между 980 и 1322 сайт масштабирует зеро-блок; держим пропорции сетки 1322 */
  .site-nav a:nth-child(1) { left: 24%; } .site-nav a:nth-child(2) { left: 36.7%; } .site-nav a:nth-child(3) { left: 51.9%; } .site-nav a:nth-child(4) { left: 66%; }
  .site-nav a { font-size: 18px; } .site-cta { width: 230px; font-size: 15px; }
}

/* ── крошки как на /students/bookclub: 15/400, ссылки var(--s-coral), разделитель «—», текущая var(--s-chrome) ── */
.crumbs { font: 400 15px/1.2 "WorkSans", Arial, sans-serif; color: var(--s-chrome); }
.crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; padding: 0; margin: 0 0 28px; color: var(--s-chrome); }
.crumbs li:last-child { min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.crumbs li + li::before { content: "—"; margin: 0 14px 0 8px; color: var(--s-chrome); }
.crumbs a { color: var(--s-coral); text-decoration: none; }

/* ── СЕТКА = подвал сайта: контейнер 1322, 3 колонки (414,7), промежуток 39 → 2/1 = 868 | 39 | 415 (подвал 867 | 39 | 416).
      Ряды — во всю ширину, 2/1, 1/2, 1/1/1 (владелец 09.10). Между рядами — тот же промежуток 39 (сайт: блоки /students, /supervisors). ── */
.grid3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 39px; row-gap: 39px; align-items: start; }
.span1 { grid-column: span 1; } .span2 { grid-column: span 2; }
.main > * + * { margin-top: 39px; }
.main > .crumbs + * { margin-top: 0; }

/* ── РЕДАКЦИЯ 6: лаконичная композиция в сетке сайта (без тильдовских полос, 41/47 и полей 39 внутри).
      Масштаб: H1 32/600 · H2 20/600 · заголовок плитки 18/600 · основной 15/1.55 · мелкий 13 · метка 12 прописные · цена 20/600.
      Цвета текста — палитра виджетов (контраст AA, F119): var(--s-ink) / var(--s-ink2) / var(--s-ink3); рамки и кнопки сайта — 1px var(--s-chrome), radius 0. ── */
ul.grid3 { list-style: none; margin: 0; padding: 0; }
.grid2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 39px; row-gap: 39px; list-style: none; margin: 0; padding: 0; }
.row + .row, .row + .blk, .main > .grid3 + .blk { margin-top: 56px; }
.span3 { grid-column: 1 / -1; }
.t-h1 { font: 600 32px/1.2 "WorkSans", Arial, sans-serif; color: var(--s-ink); margin: 8px 0 0; overflow-wrap: break-word; }
.t-h2 { font: 600 20px/1.3 "WorkSans", Arial, sans-serif; color: var(--s-ink); margin: 0 0 14px; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.t-count { font: 400 13px/1.4 "WorkSans", Arial, sans-serif; color: var(--s-ink3); }
.t-link { font: 500 13px/1.4 "WorkSans", Arial, sans-serif; color: var(--s-coral); text-decoration: none; margin-left: auto; }
.t-title { font: 600 18px/1.3 "WorkSans", Arial, sans-serif; color: var(--s-ink); margin: 0; }
.t-title a { color: inherit; text-decoration: none; }
.t-title a::after { content: ""; position: absolute; inset: 0; }
.t-title-lg { font-size: 22px; }
.t-lead { font: 400 16px/1.55 "WorkSans", Arial, sans-serif; color: var(--s-ink2); margin: 12px 0 0; }
.t-lead > div { margin-top: 0 !important; }
.t-body { font: 400 15px/1.55 "WorkSans", Arial, sans-serif; color: var(--s-ink2); margin: 0; }
.t-strong { font: 600 15px/1.45 "WorkSans", Arial, sans-serif; color: var(--s-ink); margin: 0; }
.t-small { font: 400 13px/1.45 "WorkSans", Arial, sans-serif; color: var(--s-ink3); margin: 0; }
.t-meta { display: inline-flex; align-items: center; gap: 8px; font: 600 12px/1.3 "WorkSans", Arial, sans-serif; letter-spacing: .06em; text-transform: uppercase; color: var(--s-ink3); }
.t-price { font: 600 20px/1.1 "WorkSans", Arial, sans-serif; color: var(--s-ink); }
.t-price-lg { font-size: 28px; }
.t-more { font: 600 14px/1.2 "WorkSans", Arial, sans-serif; color: var(--s-ink); text-decoration: none; white-space: nowrap; border-bottom: 1px solid var(--s-chrome); padding-bottom: 2px; }
.row-head { margin-bottom: 24px; }
.b-side { position: relative; }
.b-sticky { position: sticky; top: 24px; display: flex; flex-direction: column; gap: 20px; }
.sticky { position: sticky; top: 24px; }

/* категории (= переключатель «Новых стартов» кабинета) — радиокнопки + CSS, без JS */
.cat-r { position: absolute; opacity: 0; pointer-events: none; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 32px; }
.chips-v { flex-direction: column; align-items: stretch; margin: 20px 0 0; }
.chip { display: inline-flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 40px; padding: 8px 14px; border: 1px solid var(--s-chrome); border-radius: 0; background: var(--s-white);
  font: 500 14px/1.2 "WorkSans", Arial, sans-serif; color: var(--s-ink); cursor: pointer; user-select: none; }
.chip span { color: var(--s-ink3); font-weight: 400; }
#cat-all:checked ~ * .chip-all, #cat-programmy:checked ~ * .chip-programmy, #cat-gruppovaya-terapiya:checked ~ * .chip-gruppovaya-terapiya,
#cat-vstrechi:checked ~ * .chip-vstrechi, #cat-sobytiya:checked ~ * .chip-sobytiya,
#cat-all:checked ~ .chips .chip-all, #cat-programmy:checked ~ .chips .chip-programmy, #cat-gruppovaya-terapiya:checked ~ .chips .chip-gruppovaya-terapiya,
#cat-vstrechi:checked ~ .chips .chip-vstrechi, #cat-sobytiya:checked ~ .chips .chip-sobytiya { background: var(--s-chrome); color: var(--s-white); }
#cat-all:checked ~ * .chip-all span, #cat-all:checked ~ .chips .chip-all span { color: var(--s-white); }
#cat-programmy:checked ~ * .cat:not(.cat-programmy), #cat-programmy:checked ~ .cats .cat:not(.cat-programmy),
#cat-gruppovaya-terapiya:checked ~ * .cat:not(.cat-gruppovaya-terapiya), #cat-gruppovaya-terapiya:checked ~ .cats .cat:not(.cat-gruppovaya-terapiya),
#cat-vstrechi:checked ~ * .cat:not(.cat-vstrechi), #cat-vstrechi:checked ~ .cats .cat:not(.cat-vstrechi),
#cat-sobytiya:checked ~ * .cat:not(.cat-sobytiya), #cat-sobytiya:checked ~ .cats .cat:not(.cat-sobytiya) { display: none; }
.cat-r:focus-visible + * , .cat-r:focus-visible ~ .chips .chip { outline: none; }
.cats { display: flex; flex-direction: column; gap: 40px; }

/* плитки (= плитки «Новых стартов» кабинета) — белые с тенью сайта, radius 0; ряд одной высоты, «цена + Подробнее» внизу */
.tiles { align-items: stretch; }
.tile { position: relative; background: var(--s-white); box-shadow: 10px 10px 30px 0 rgba(232, 202, 202, 0.5); border-radius: 0; padding: 22px 24px; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.tile .t-title { margin-top: 2px; }
.tile-foot { margin-top: auto; padding-top: 14px; border-top: 1px solid var(--s-line); display: flex; justify-content: space-between; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.tile-spots { color: var(--s-green); }
.tile:hover { box-shadow: 10px 10px 30px 0 rgba(232, 202, 202, 0.5), inset 0 0 0 1px var(--s-chrome); }
.tile-program { display: grid; grid-template-columns: 2fr 1fr; column-gap: 39px; padding: 26px 28px; }
.tile-program.span2 { grid-template-columns: 1fr; }
.tp-main { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.tp-facts { display: flex; gap: 32px; align-items: flex-start; flex-wrap: wrap; margin-top: 6px; }
.tp-date { display: flex; flex-direction: column; }
.tp-day { font: 600 56px/1 "WorkSans", Arial, sans-serif; color: var(--s-coral); }
.tp-money { display: flex; flex-direction: column; gap: 8px; border-left: 1px solid var(--s-line); padding-left: 28px; justify-content: center; }
.tile-program.span2 .tp-money { border-left: 0; padding-left: 0; border-top: 1px solid var(--s-line); padding-top: 14px; margin-top: 14px; }
/* F251 fix (владелец 09.10: «клик именно на «Подробнее» не работает»): «Подробнее →» в плитке — подпись, не ссылка;
   ссылка — заголовок, растянутый на всю плитку (.t-title a::after). Своего position/z-index у подписи нет, иначе она
   ложится поверх ссылки и забирает клик. */
.tp-money .t-more { align-self: flex-start; margin-top: 6px; }

/* факты */
.facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 39px; margin: 20px 0 0; }
.facts > div { border-top: 1px solid var(--s-line2); padding-top: 10px; }
.facts dt { font: 600 12px/1.3 "WorkSans", Arial, sans-serif; letter-spacing: .06em; text-transform: uppercase; color: var(--s-ink3); margin: 0 0 4px; }
.facts dd { font: 400 15px/1.45 "WorkSans", Arial, sans-serif; color: var(--s-ink); margin: 0; }
.b-sticky .facts { grid-template-columns: minmax(0, 1fr); gap: 12px; margin: 0; }
.tp-facts .facts { margin: 0; flex: 1; grid-template-columns: repeat(3, minmax(0, 1fr)); }

/* запись */
.enroll { border: 1px solid var(--s-chrome); border-radius: 0; background: var(--s-white); padding: 22px 24px 24px; }
.enroll-lines { display: flex; flex-direction: column; gap: 4px; margin-top: 10px; }
.enroll a:not([data-start-action]) { color: var(--s-coral); }

/* блоки страницы */
.blk + .blk { margin-top: 40px; }
.page-head { margin-bottom: 4px; }
.acc-a { padding: 0 0 16px; }
.plan { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--s-line2); }
.plan > li { display: grid; grid-template-columns: 52px minmax(0, 1fr) 190px; gap: 16px; align-items: start; padding: 12px 0; border-bottom: 1px solid var(--s-line); }
.plan-n { font: 700 12px/1.6 "WorkSans", Arial, sans-serif; color: var(--s-coral); letter-spacing: .04em; }
.plan-date { text-align: right; display: flex; flex-direction: column; gap: 2px; }
.plan-time { color: var(--s-ink3); }
details.dates { margin-top: 10px; }
details.dates > summary { list-style: none; cursor: pointer; display: inline-block; }
details.dates > summary::-webkit-details-marker { display: none; }
details.dates[open] > summary { margin-bottom: 10px; }
.plan-body > * + * { margin-top: 2px; }
.sess { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--s-line2); }
.sess > li { display: grid; grid-template-columns: 22px 1fr auto; gap: 10px; align-items: baseline; padding: 7px 0; border-bottom: 1px solid var(--s-line); }
.teacher { display: flex; gap: 14px; align-items: flex-start; }
.teacher + .teacher { margin-top: 18px; }
.ava { width: 48px; height: 48px; border-radius: 50%; border: 1px solid var(--s-line2); display: flex; align-items: center; justify-content: center; font: 400 17px "WorkSans", Arial, sans-serif; color: var(--s-ink3); flex-shrink: 0; background: var(--s-white); }

/* «много текста» без JS: StaticClamp (src/lib/static-render.tsx) — текст целиком в HTML, обрезка CSS, раскрытие чекбоксом */
.sclamp { position: relative; }
.sclamp-cb { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; pointer-events: none; }
.sclamp-cb:not(:checked) ~ .sclamp-body { display: -webkit-box; -webkit-line-clamp: var(--sclamp-lines); -webkit-box-orient: vertical; overflow: hidden; }
.sclamp-cb:not(:checked) ~ .sclamp-body * { margin-top: 0; }
.sclamp-less { display: none; }
.sclamp-cb:checked ~ .sclamp-toggle .sclamp-more { display: none; }
.sclamp-cb:checked ~ .sclamp-toggle .sclamp-less { display: inline; }
.sclamp-cb:focus-visible ~ .sclamp-toggle { outline: 2px solid var(--s-coral); outline-offset: 2px; }
.sclamp-toggle { user-select: none; }
.sclamp-inline { display: grid; grid-template-columns: 1fr auto; gap: 10px; align-items: start; }
.sclamp-inline .sclamp-toggle { grid-column: 2; grid-row: 1; padding: 0 2px; }
.sclamp-inline .sclamp-body { grid-column: 1; grid-row: 1; }

/* ── ДЕЙСТВИЕ (запись): виджет в режиме view=action. 1440 — в колонке 1/3 (вместо стопки боковых блоков);
      телефон — панель на весь экран под шапкой (как меню и панели сайта). start.js ── */
.action-panel { position: sticky; top: 24px; height: calc(100vh - 48px); background: var(--s-white); box-shadow: 10px 10px 30px 0 rgba(232, 202, 202, 0.5); border-top: 4px solid var(--s-peach); }
.action-panel iframe, .action-panel img { width: 100%; height: 100%; border: 0; display: block; object-fit: cover; object-position: top; }
.action-close { position: absolute; top: -40px; right: 0; }
@media (max-width: 979px) {
  .action-panel { position: fixed; left: 0; right: 0; top: 87px; bottom: 0; height: auto; z-index: 40; box-shadow: none; }
  .action-close { top: 8px; right: 8px; z-index: 2; }
}
.enroll-bar { display: none; }

/* аккордеоны AccordionList в статичном режиме (<details>) — вид кнопки прежний */
details.acc > summary { list-style: none; }
details.acc > summary::-webkit-details-marker { display: none; }
details.acc > summary .acc-plus { transition: transform .18s ease; }
details.acc[open] > summary .acc-plus { transform: rotate(45deg); }
details.acc > summary:focus-visible, .site-burger > summary:focus-visible { outline: 2px solid var(--s-coral); outline-offset: 2px; }
details.bio > summary::-webkit-details-marker { display: none; }
details.bio[open] .bio-teaser, details.bio[open] .bio-more { display: none !important; }

/* ── подвал (замер 1440: артборд var(--s-bg); два белых блока 867×408 @59 и 416×408 @965, тень 10px 10px 30px rgba(232,202,202,.5),
      radius 0; заголовки WorkSans 17/600 uppercase var(--s-chrome) @y39, ссылки 16/400 var(--s-chrome) lh 24.8 шаг ~37 с y102;
      колонки @+39/+316/+593; лого 195×63 @+41,273; соцсети 58×58 @y276 шаг 72;
      ниже @y525 15/400 var(--s-chrome); дисклеймер 9/400 var(--s-chrome), ссылка var(--s-coral)) ── */
.site-footer { margin-top: 24px; padding: 0 0 48px; background: var(--s-bg); font-family: "WorkSans", Arial, sans-serif; color: var(--s-chrome); }
.foot-boxes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 39px; }  /* та же сетка: блок навигации 2, контакты 1 */
.foot-box-nav { grid-column: span 2; }
.foot-box { background: var(--s-white); border-radius: 0; box-shadow: 10px 10px 30px 0 rgba(232, 202, 202, 0.5); min-height: 408px; padding: 39px 39px 32px; position: relative; }
.foot-cols { display: grid; grid-template-columns: 277px 277px 1fr; }
.foot-h { margin: 0 0 37px; font-size: 17px; font-weight: 600; line-height: 26.35px; text-transform: uppercase; color: var(--s-chrome); }
.site-footer ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; font-size: 16px; line-height: 24.8px; }
.site-footer a { color: var(--s-chrome); text-decoration: none; }
.foot-cols .foot-col:nth-child(3) li:nth-child(n+5) { font-size: 17px; line-height: 26.35px; }
.foot-logo { position: absolute; left: 41px; top: 273px; width: 195px; height: 63px; }
.foot-org { font-weight: 600; }
.foot-box-contacts { padding-right: 20px; } /* у сайта строка «Институт…» 354 px заходит в правое поле блока */
.foot-social { display: flex; gap: 14px; margin-top: 39px; }
.foot-social img { width: 58px; height: 58px; display: block; }
.foot-legal { padding-top: 107px; }
.foot-legal-links { margin: 0 0 13px 39px; font-size: 15px; line-height: 23.25px; }
.foot-legal-links a { margin-left: 0; }  /* как у сайта: первый пункт строки по полю блока (x 98 = 59 + 39); «Версии для слабовидящих» у нас нет */
.foot-disclaimer { margin: 0 0 0 38px; font-size: 9px; line-height: 13.95px; color: var(--s-chrome); max-width: 1281px; }
.foot-disclaimer a { color: var(--s-coral); }

@media (max-width: 1361px) {
  .foot-cols { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
}
/* ── подвал 390 (замер: блоки 327 px @x31, сначала «Контакты» (h212), через 31 — навигация (h515);
      заголовки 17–18/600, ссылки 13/400 lh 20.15, шаг 22; соцсети 29; лого 80×26; ниже 12/400, дисклеймер 9) ── */
@media (max-width: 979px) {
  /* 390: одна колонка */
  .grid3, .grid2, .facts, .tp-facts .facts { grid-template-columns: minmax(0, 1fr); row-gap: 20px; }
  .span1, .span2, .span3 { grid-column: auto; }
  .sticky, .b-sticky { position: static; }
  .row + .row, .row + .blk { margin-top: 40px; }
  .t-h1 { font-size: 26px; }
  .tile-program { grid-template-columns: minmax(0, 1fr); padding: 22px 20px; }
  .tp-money { border-left: 0; padding-left: 0; border-top: 1px solid var(--s-line); padding-top: 14px; margin-top: 14px; }
  .tp-day { font-size: 44px; }
  .chips { flex-wrap: nowrap; overflow-x: auto; margin-right: -20px; padding-right: 20px; }
  .chip { flex-shrink: 0; }
  .chips-v { flex-direction: row; }
  .plan > li { grid-template-columns: 44px minmax(0, 1fr); }
  .plan-date { grid-column: 2; text-align: left; flex-direction: row; flex-wrap: wrap; gap: 0 8px; }
  .side-stack [data-start-action], .enroll [data-start-action] { display: none !important; }
  .foot-boxes { grid-template-columns: minmax(0, 1fr); gap: 31px; padding: 0 31px; }
  .foot-box-nav { grid-column: auto; }
  .foot-box-contacts { order: -1; min-height: 212px; padding: 26px 32px 21px; }
  .foot-box-nav { min-height: 515px; padding: 30px 32px 24px; }
  .foot-cols { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .foot-h { margin: 0 0 13px; font-size: 17px; }
  .foot-box-contacts .foot-h { font-size: 18px; line-height: 27.9px; margin-bottom: 9px; }
  .site-footer ul { font-size: 13px; line-height: 20.15px; gap: 2px; }
  .foot-cols .foot-col:nth-child(3) li:nth-child(n+5) { font-size: 13px; line-height: 20.15px; }
  .foot-org { font-size: 13px; }
  .foot-social { margin-top: 9px; gap: 6px; }
  .foot-social img { width: 29px; height: 29px; }
  .foot-logo { position: static; display: block; width: 80px; height: 26px; margin-top: 16px; }
  .foot-legal { padding: 54px 63px 0; }
  .foot-legal-links { margin: 0 0 18px; font-size: 12px; line-height: 18.6px; }
  .foot-legal-links a { margin-left: 0; }
  .foot-disclaimer { margin: 0; }
  .enroll-bar { display: block; position: sticky; bottom: 0; z-index: 5; margin: 24px -20px 0; padding: 12px 20px calc(12px + env(safe-area-inset-bottom));
    background: var(--s-bg); border-top: 1px solid var(--s-chrome); }
}
@media (prefers-reduced-motion: reduce) { * { transition: none !important; } }

/* описания (ClampText «каретка» в статичном режиме) — как в виджете: N строк с «…» и каретка, нажатие раскрывает; текст в HTML */
details.sdesc > summary::-webkit-details-marker { display: none; }
details.sdesc:not([open]) .sdesc-text { max-height: calc(var(--sdesc-lines, 1) * 1.45em); overflow: hidden; position: relative; }
details.sdesc[data-lines="1"]:not([open]) .sdesc-text { max-height: none; }
details.sdesc[data-lines="1"]:not([open]) .sdesc-text > * { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0; }
details.sdesc[data-lines="1"]:not([open]) .sdesc-text > * + * { display: none; }
details.sdesc:not([open]) .sdesc-text * { margin-top: 0 !important; }
details.sdesc[open] .sdesc-caret svg { transform: rotate(180deg); }
details.sdesc > summary:focus-visible { outline: 2px solid var(--s-coral); outline-offset: 2px; }

/* ── Редакция 7: лаконичные аккордеоны (AccordionList виджета), компактный план, боковая колонка ── */
.side { display: flex; flex-direction: column; gap: 32px; }
.side .blk + .blk, .side > * + .blk { margin-top: 0; }
.lean details.acc { border-top: 1px solid var(--s-line) !important; }
.lean details.acc > summary { padding: 9px 0 !important; min-height: 40px !important; font-size: 15px !important; font-weight: 500 !important; line-height: 1.35 !important; align-items: center !important; }
.lean details.acc > summary h3 { font-weight: 500 !important; }
.lean .acc-plus { width: 14px !important; height: 14px !important; font-size: 15px !important; }
.lean details.acc > div > div { padding-bottom: 12px !important; }
.lean .acc-a { padding: 0 0 12px; font-size: 14.5px; }
.lean-list { border-bottom: 1px solid var(--s-line); }
.lean-list details.more { border-top: 1px solid var(--s-line); }
.lean-list details.more > summary { list-style: none; cursor: pointer; display: inline-block; margin: 10px 0; }
.lean-list details.more > summary::-webkit-details-marker { display: none; }
.lean-list details.more[open] > summary { display: none; }
.about > div > div:first-child { margin-bottom: 4px; }
.about div[style*="border-bottom"] { border-bottom-color: var(--s-line) !important; }
/* план: «№ · тема · дата», первые N видно, остальное по «Все … ↓» (чекбокс, без JS) */
.plan > li { grid-template-columns: 40px minmax(0, 1fr) auto !important; gap: 12px !important; padding: 8px 0 !important; }
.plan-topic { font: 500 15px/1.35 "WorkSans", Arial, sans-serif; color: var(--s-ink); margin: 0; }
.plan-cb { position: absolute; opacity: 0; pointer-events: none; }
.plan-wrap { position: relative; }
.plan-cb:not(:checked) ~ ol .plan-more { display: none !important; }
.plan-toggle { display: inline-block; margin-top: 10px; cursor: pointer; user-select: none; }
.plan-toggle .pl { display: none; }
.plan-cb:checked ~ .plan-toggle .pm { display: none; }
.plan-cb:checked ~ .plan-toggle .pl { display: inline; }
.plan-cb:focus-visible ~ .plan-toggle { outline: 2px solid var(--s-coral); outline-offset: 2px; }
.side .plan > li { grid-template-columns: 34px minmax(0, 1fr) !important; }
.side .plan-date { grid-column: 2; text-align: left !important; flex-direction: row !important; flex-wrap: wrap; gap: 0 8px !important; }
.side .sess > li { padding: 6px 0; }

/* ── Владелец 09.10: «на белых плитках» — весь контент в плитках сайта; на сером только крошки и заголовок ── */
.card, .enroll { background: var(--s-white); box-shadow: 10px 10px 30px 0 rgba(232, 202, 202, 0.5); border: 0; border-radius: 0; padding: 24px 28px 26px; min-width: 0; }
.card .t-h2, .enroll .t-h2 { margin-bottom: 12px; }
.card .facts { margin-top: 16px; }
.card > .t-body:first-of-type { margin-top: 0; }
.enroll { border-top: 4px solid var(--s-coral); }
.page-title { margin: 0 0 24px; }
.stack { display: flex; flex-direction: column; gap: 39px; }
.stack > :last-child { flex: 1; }
.stack > .action-panel { flex: none; } /* F251: панель записи — высотой экрана, не тянется и не сжимается */
.grid3.row { align-items: stretch; }
.grid3.row > .card { height: 100%; box-sizing: border-box; }
.main > .row, .main > .row-full { margin-top: 39px; }
.main > .page-title + .row { margin-top: 0; }
.row-full .card { width: 100%; box-sizing: border-box; }
.main > .blk { margin-top: 48px; }
.plan-all .plan-more { display: grid; }
.side .plan > li, .stack .plan > li { grid-template-columns: 34px minmax(0, 1fr) !important; }
.stack .plan-date { grid-column: 2; text-align: left !important; flex-direction: row !important; flex-wrap: wrap; gap: 0 8px !important; }
.span2 .plan > li { grid-template-columns: 40px minmax(0, 1fr) auto !important; }
.span2 .plan-date { grid-column: auto; text-align: right !important; flex-direction: column !important; }
@media (max-width: 979px) {
  .card, .enroll { padding: 20px; }
  .stack { gap: 20px; }
  .main > .row, .main > .row-full { margin-top: 20px; }
}
@media (max-width: 979px) {
  .crumbs { font-size: 14px; }
  .crumbs li { white-space: nowrap; }          /* «—» не отрывается от слова */
  .crumbs li:last-child { display: none; }     /* текущая страница = заголовок ниже */
}

/* ── р7b: без пустот — био чистым текстом в 2 строки; факты в «Записи» одним столбцом ── */
details.bio2 > summary { list-style: none; cursor: pointer; display: block; margin-top: 6px; }
details.bio2 > summary::-webkit-details-marker { display: none; }
.bio2-clamp { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bio2-more { display: inline-block; margin-top: 6px; font-size: 13px; }
details.bio2[open] > summary { display: none; }
.enroll .facts { grid-template-columns: minmax(0, 1fr); gap: 8px; margin-top: 16px; }
.enroll .facts > div { padding-top: 8px; }

/* ── р8: без квадратов-точек, FAQ одной плиткой в три колонки, «Ближайшие семинары», встречи в две колонки, порядок на телефоне ── */
.faq-cols { row-gap: 0; align-items: start; }
.faq-cols .lean-list { border-bottom: 1px solid var(--s-line); }
.plan-past { margin: -4px 0 8px; }
.sess2 { list-style: none; margin: 0; padding: 0; columns: 2; column-gap: 39px; }
.sess2 > li { break-inside: avoid; display: grid; grid-template-columns: 22px 1fr; gap: 8px; align-items: baseline; padding: 7px 0; border-top: 1px solid var(--s-line); }
.plan-cb:not(:checked) ~ ol.sess2 .plan-more { display: none !important; }
.bio2-text { display: block; margin-top: 6px; }
.bio2-full { margin-top: 6px; }
@media (max-width: 979px) {
  .r-main { display: flex; flex-direction: column; gap: 20px; }
  .r-main .stack { display: contents; }
  .o1 { order: 1; } .o2 { order: 2; } .o3 { order: 3; } .o4 { order: 4; }
  .sess2 { columns: 1; }
  .faq-cols { row-gap: 0; }
  .faq-cols .lean-list { border-bottom: 0; }
}

.enroll-sub { font-size: 16px !important; margin: 22px 0 0 !important; }
.enroll .facts + p, .enroll .t-more { position: relative; }
.sess3 { columns: 3; }
@media (max-width: 979px) { .sess3 { columns: 1; } }

/* ── р8b (судья): ведущий во всю ширину — строка текста не шире 2/3; FAQ — поле справа у колонок; крошки 390 — тире в конце строки ── */
.faq-cols .lean-list { margin-right: 20px; }
@media (max-width: 979px) {
  .faq-cols .lean-list { margin-right: 0; }
  .crumbs li + li::before { content: none; }
  .crumbs li:not(:last-child)::after { content: "—"; margin: 0 4px 0 8px; color: var(--s-chrome); }
  .crumbs li:nth-last-child(2)::after { content: none; }   /* последняя видимая крошка — без тире (текущая страница скрыта) */
}

/* ── р9b: раскрытие без пустот — ряд остаётся 2/1; start.js досветляет обрезанные блоки короткой колонки (см. balance). ── */
.r-main .o1 { order: 1; } .r-main .o2 { order: 2; } .r-main .o3 { order: 3; } .r-main .o4 { order: 4; }
.r-main .stack > .o2 { flex: 0 0 auto; }
details.bio2[open] .bio2-full { columns: 2; column-gap: 39px; max-width: none; }
/* FAQ: один список в три колонки (CSS columns) — раскрытый вопрос перераспределяет колонки сам */
.faq-flow > div { display: block !important; columns: 3; column-gap: 39px; }
.faq-flow details.acc { break-inside: avoid; }
@media (max-width: 979px) {
  .faq-flow > div { columns: 1; }
  details.bio2[open] .bio2-full { columns: 1; }
}

/* ══ Редакция 10 — полировка (разбор координатора 1–15). База — раскладка р8; текст в плитке на всю её ширину. ══ */
/* 15. ритм: между плитками 39, поля плитки 28/32, внутренние блоки 20 */
.card, .enroll, .tile { padding: 28px 32px; }
.card .t-h2, .enroll .t-h2 { margin-bottom: 16px; }
.row + .row, .row + .blk, .main > .grid3 + .blk, .main > .blk, .main > .row, .main > .row-full { margin-top: 39px; }
.main > .page-title + .row { margin-top: 0; }
.cats { gap: 39px; }
.card .kv, .card .fact-line, .card .plan-wrap { margin-top: 20px; }
.card > h2 + .plan-wrap, .card > h2 + .fact-line, .card > .plan-past + .plan-wrap { margin-top: 0; }
.card > .fact-line + .plan-wrap { margin-top: 16px; }
/* 1. один акцент — коралл только у действий: «Записаться», «Подробнее →», наведение на ссылку */
.crumbs a, .t-link, .enroll a:not([data-start-action]), .plan-n { color: var(--s-ink3); }
.crumbs a:hover, .t-link:hover, .enroll a:not([data-start-action]):hover { color: var(--s-coral); }
.enroll-link a { text-decoration: underline; text-underline-offset: 3px; font: 400 14px/1.45 "WorkSans", Arial, sans-serif; }
.plan-n { font-weight: 600; letter-spacing: 0; font-size: 13px; }
.t-hot { color: var(--s-coral); }
.tile .t-more, .tp-money .t-more { color: var(--s-coral); border-bottom-color: var(--s-coral); }
.t-count, .tile-spots { display: none; }
/* 2–3. меньше капса: прописные только у надзаголовка над H1 и у меток плиток каталога */
.page-title .t-meta { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; display: block; }
.kv { margin: 20px 0 0; display: flex; flex-direction: column; gap: 6px; }
.kv > div { font: 400 15px/1.5 "WorkSans", Arial, sans-serif; color: var(--s-ink); }
.kv dt { display: inline; color: var(--s-ink3); }
.kv dd { display: inline; margin: 0; }
.fact-line { font: 400 14px/1.5 "WorkSans", Arial, sans-serif; color: var(--s-ink3); }
/* 4. «О программе»: лид 17/1.55 + строка фактов */
.t-lead-17, .t-lead-17 * { font-size: 17px !important; line-height: 1.55 !important; }
.t-lead-17 { color: var(--s-ink); }
/* 6–8. запись: цена крупно сверху, строки, кнопка, мелкое примечание; коралловая полоса — только здесь */
.enroll-price { margin: 0 0 12px; font: 400 15px/1.3 "WorkSans", Arial, sans-serif; color: var(--s-ink3); }
.enroll-price b { font: 600 28px/1.1 "WorkSans", Arial, sans-serif; color: var(--s-ink); }
.enroll-line { color: var(--s-ink); }
.enroll-line + .enroll-line { margin-top: 4px; }
.enroll-btn { margin-top: 20px; }
.enroll-note { margin-top: 8px; }
.enroll-dates { list-style: none; margin: 0; padding: 0; }
.enroll-dates li { padding: 2px 0; }
.enroll .kv { margin-top: 12px; }
.enroll-sub { margin: 24px 0 0 !important; padding-top: 20px; border-top: 1px solid var(--s-line); font: 600 16px/1.3 "WorkSans", Arial, sans-serif !important; color: var(--s-ink); }
.enroll-link { margin: 10px 0 0; }
/* 9. каталог: единый компактный блок даты слева сверху у всех плиток */
.tile-head { display: flex; gap: 14px; align-items: flex-start; }
.tile-head-text { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.tdate { flex: 0 0 52px; display: flex; flex-direction: column; align-items: center; border: 1px solid var(--s-chrome); padding: 5px 0 6px; font-family: "WorkSans", Arial, sans-serif; color: var(--s-ink); }
.tdate b { font: 600 22px/1 "WorkSans", Arial, sans-serif; }
.tdate span { font: 400 12px/1.2 "WorkSans", Arial, sans-serif; color: var(--s-ink3); margin-top: 2px; }
.tile .t-title { margin-top: 0; }
.tile-program { padding: 28px 32px; }
.tp-money { justify-content: flex-start; gap: 6px; }
/* 10. вся плитка — ссылка; фокус — кольцо по плитке */
.tile a:focus-visible { outline: none; }
.tile:has(a:focus-visible) { outline: 2px solid var(--s-coral); outline-offset: 3px; }
.tile:hover .t-more { border-bottom-width: 2px; padding-bottom: 1px; }
/* 12. ведущий без кружка-заглушки: имя, роль, био под именем на всю ширину плитки */
.teacher { display: block; }
.teacher .t-small { margin-top: 2px; }
/* 13. план: справа одна строка «10 окт · 16:30» */
.plan-date, .span2 .plan-date { display: block !important; white-space: nowrap; text-align: right !important; font-size: 14px; color: var(--s-ink3); }
/* 14. «·»-строки кабинета → список */
.card .t-body ul { margin: 8px 0; padding-left: 20px; }
/* р9b/р10: шаги досветления start.js (специфичность выше правила скрытия) */
.plan-cb:not(:checked) ~ ol .plan-more.js-shown, .plan-cb:not(:checked) ~ ol.sess2 .plan-more.js-shown { display: grid !important; }
@media (max-width: 979px) {
  .card, .enroll, .tile, .tile-program { padding: 24px 20px; }
  .row + .row, .row + .blk, .main > .grid3 + .blk, .main > .blk, .main > .row, .main > .row-full { margin-top: 20px; }
  .cats { gap: 32px; }
  .t-h1 { font: 600 26px/1.2 "WorkSans", Arial, sans-serif; }
  .plan-date, .span2 .plan-date { grid-column: 2; text-align: left !important; }
  .enroll-price b { font-size: 26px; }
}
/* 2. «Показать полностью» — без капса, как остальные «Подробнее ↓ / Все … ↓» */
.main .sclamp-toggle { text-transform: none !important; letter-spacing: 0 !important; font: 600 14px/1.2 "WorkSans", Arial, sans-serif !important; color: var(--s-ink) !important; padding: 0 0 2px !important; margin-top: 12px !important; border-bottom: 1px solid var(--s-chrome); text-decoration: none !important; }
.main .sclamp-toggle * { text-decoration: none !important; font: inherit !important; letter-spacing: 0 !important; text-transform: none !important; }
@media (max-width: 979px) { .t-h1.t-h1-long { font-size: 24px; } }
.main .sclamp-toggle * { border: 0 !important; padding: 0 !important; }
@media (max-width: 979px) { .t-title-lg { font-size: 18px; } .tile-program .tile-head { gap: 12px; } }

/* ══ р10b ══ */
/* 2. раскрывать в короткой колонке нечего — она липнет в своей ячейке (start.js ставит .is-sticky), плитка не растягивается */
@media (min-width: 980px) {
  .row-x > .is-sticky { position: sticky; top: 24px; align-self: start; height: auto !important; }
  .row-x > .is-sticky > :last-child { flex: 0 0 auto; }
  /* без JS: «показать полностью» в «О группе» — «Запись» тоже липнет */
  html:not(.js) .r-run:has(.sclamp-cb:checked) > aside { position: sticky; top: 24px; align-self: start; }
  html:not(.js) .r-run:has(.sclamp-cb:checked) > aside > :last-child { flex: 0 0 auto; }
}
/* 1. длинное био: 3 строки в плитке, полностью — в боковой панели (вид панели записи); без JS — секция внизу страницы */
.bio3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; margin-top: 8px; }
.bio-open { display: inline-block; margin-top: 10px; }
.js .bio-sec { display: none; }
.bio-sec .t-h2 { margin: 6px 0 4px; }
.bio-sec-text { margin-top: 16px; max-width: none; }
.side-panel { position: fixed; z-index: 45; top: 24px; bottom: 24px; right: max(24px, calc((100vw - 1322px) / 2)); width: min(414.7px, calc(100vw - 48px));
  background: var(--s-white); box-shadow: 10px 10px 30px 0 rgba(232, 202, 202, 0.5), 0 0 0 1px rgba(120, 120, 120, .08); border-top: 4px solid var(--s-peach); display: flex; flex-direction: column; }
.side-body { overflow: auto; padding: 28px 32px 32px; }
.side-body .t-h2 { margin: 6px 0 4px; }
.side-close { position: absolute; top: 10px; right: 10px; width: 40px; height: 40px; border: 0; background: var(--s-white); color: var(--s-ink); cursor: pointer; display: flex; align-items: center; justify-content: center; }
.side-close:focus-visible { outline: 2px solid var(--s-coral); outline-offset: 2px; }
@media (max-width: 979px) {
  .side-panel { top: 87px; bottom: 0; left: 0; right: 0; width: auto; box-shadow: none; }
  .side-body { padding: 24px 20px 32px; }
}
/* 5. плитка программы во всю ширину: название в одну строку, факты и план под ним, цена узкой колонкой справа */
.tile-program { grid-template-columns: minmax(0, 1fr) 260px; }
.tp-main { gap: 8px; }
.tp-main .tile-head + p { margin-top: 6px; }
.tp-main > p { padding-left: 66px; }
.tp-money { justify-content: center; }
@media (max-width: 979px) { .tile-program { grid-template-columns: minmax(0, 1fr); } .tp-main > p { padding-left: 0; } }
/* р10b: без квадратных блоков даты — дата текстом под ведущим (владелец) */
.tp-main > p { padding-left: 0; }
.tile > .t-meta + .t-title { margin-top: 0; }
/* р10b: FAQ — раскрытый вопрос не оставляет пустоты в соседних колонках: ответ может перетечь в следующую колонку,
   колонки выравниваются по высоте (column-fill: balance); вопрос не отрывается от начала ответа */
.faq-flow > div { column-fill: balance; }
.faq-flow details.acc { break-inside: auto !important; }
.faq-flow details.acc > summary { break-inside: avoid; break-after: avoid; }
.faq-flow details.acc, .faq-flow details.acc * { orphans: 1; widows: 1; }
.faq-flow details.acc > summary { break-after: auto; padding: 8px 0 !important; min-height: 38px !important; }
.plan-wrap.all-shown > .plan-cb:not(:checked) ~ .plan-toggle { display: none; }

/* ── 404 (тексты спеки §11) ── */
.nf-h { font-family: var(--w-font), Arial, sans-serif; font-weight: 700; font-size: clamp(30px, 4.2vw, 44px); line-height: 1.05; color: var(--s-ink); margin: 24px 0 12px; letter-spacing: -0.01em; }
.nf-p { font-family: var(--w-font), Arial, sans-serif; font-size: 15px; color: var(--s-ink2); }
.nf-p a { color: var(--s-coral); }

/* ── F251 fix (владелец 09.10: «знаки раскрытия вопроса в FAQ не очень хорошо себя ведут»): знак аккордеона ──
   Как в виджетном AccordionList: строка вопроса — вся зона нажатия (≥ 44), знак справа на линии ПЕРВОЙ строки
   (не по центру многострочного вопроса), не сжимается и не переносится; длинный вопрос переносится сам.
   Знак рисуется двумя полосками: «+» закрыт, «−» открыт — того же размера, без поворота. Без JS — так же (<details>).
   Селекторы с `body .lean` — сильнее правил `.lean` выше (там !important). */
body details.acc > summary, body .lean details.acc > summary, body .faq-flow details.acc > summary {
  display: flex !important; align-items: flex-start !important; justify-content: space-between; gap: 16px !important;
  min-height: 44px !important; padding: 12px 0 !important; line-height: 20px !important; box-sizing: border-box; cursor: pointer; }
body details.acc > summary > :first-child { flex: 1 1 auto; min-width: 0; overflow-wrap: anywhere; line-height: 20px; }
body details.acc > summary .acc-plus, body .lean details.acc > summary .acc-plus {
  position: relative; flex: 0 0 14px; width: 14px !important; height: 20px !important; font-size: 0 !important; line-height: 0; transform: none !important; }
body details.acc > summary .acc-plus > * { display: none; }
body details.acc > summary .acc-plus::before, body details.acc > summary .acc-plus::after {
  content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 1.5px; margin-top: -0.75px; background: currentColor; border-radius: 1px; transition: transform .18s ease; }
body details.acc > summary .acc-plus::after { transform: rotate(90deg); }
body details.acc[open] > summary .acc-plus::after { transform: rotate(90deg) scaleX(0); }
@media (prefers-reduced-motion: reduce) { body details.acc > summary .acc-plus::after { transition: none; } }

/* ── F251 fix (владелец 09.10: «отступ после вопросов до меню [подвала] — как все остальные отступы между рядами»):
   последний ряд страницы → подвал = шаг рядов: 39 на компьютере, 20 на телефоне (было 64 + 24). На телефоне липкая
   полоса «Записаться» стоит в этом шаге: 20 до неё и 20 после. ── */
.main { padding-bottom: 39px; }
.site-footer { margin-top: 0; }
@media (max-width: 979px) {
  .main { padding-bottom: 20px; }
  .enroll-bar { margin-top: 20px; }
}

/* ── F251/T017 (владелец 09.10, разбор прода): ведущий и встречи у всех групп ── */
/* «Встречи» при малом числе встреч (≤ 4) — один столбец, все даты сразу (без «Все даты»). */
.sess1 { list-style: none; margin: 0; padding: 0; }
.sess1 > li { display: grid; grid-template-columns: 22px 1fr; gap: 8px; align-items: baseline; padding: 7px 0; border-top: 1px solid var(--s-line); }
/* Ведущий: фото из кабинета (если есть) — квадрат 64, кадрирование по центру, radius 0; имя и роль рядом. */
.teacher-head { display: flex; gap: 14px; align-items: center; }
.t-photo { width: 64px; height: 64px; flex: none; object-fit: cover; object-position: center; border-radius: 0; display: block; }
