/* Страница форума, шаблон «Форум» раздела «Сайты». Вид «Медиа-кит» (2.40.0); с 2.42.0 первый экран с годом
   из орнамента, умная шапка, программа таблицей, партнеры со сценой, программы обучения в двух видах.
   С 2.43.0 день и место темно-синей плашкой, линия дня в программе, бейдж участника в регистрации. С 2.44.0
   вступление раздела плашкой, блок «Остались вопросы?», лента орнамента в подвале, ворон «Наверх» на ветке.
   Оформление по медиа-киту ВШЮА и фирменному стилю НИУ ВШЭ.
   Цвета только из набора: основные темно-синий #0f2d69 и синий #234b9b, серые #e6e6e6, #c6c6c6, #929292;
   акцент: одна триада дополнительной палитры, оранжевая (#eb691e, #eb8c3c, #ffdc91), не больше четверти страницы.
   Графика из набора, у каждого элемента свое место: орнамент ВШЮА бледным полем первого экрана, в цвете внутри
   цифр года (на первом экране и на бейдже), лентой над премией и в подвале; ворон на цифрах года и маленький ворон
   «Наверх», который появляется, когда первый экран не виден.
   Красный только у идущей сессии и ошибок.
   Шрифты: HSE Sans для названия, заголовков и текста (Black только в цифрах года); HSE Slab для строки выпуска,
   продолжения названия, вопроса форума, названий сессий и партнеров.
   Читаемость прежде всего (правила 2.37.0): названия обычными буквами, основной текст 18 px и межстрочный 1,55,
   мелкий текст не меньше 16 px, вторичный цвет #3d4a6b, ничего не повернуто.
   Движение: при открытии цифры года поднимаются снизу и на них садится ворон, затем узор в цифрах медленно плывет
   вверх (2.43.0); шапка сжимается при прокрутке; строки
   программы проявляются по очереди, когда таблица показалась в окне; сцена партнеров листает логотипы проявлением;
   карточка программы обучения переворачивается; анкета проявляется при раскрытии. Бокового движения нет;
   при запрете движения в системе его нет совсем. */

@font-face { font-family: "HSE Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("/fonts/hse-sans-regular.woff2") format("woff2"); }
@font-face { font-family: "HSE Sans"; font-style: normal; font-weight: 900; font-display: swap; src: url("/fonts/hse-sans-black.woff2") format("woff2"); }
@font-face { font-family: "HSE Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("/fonts/hse-sans-semibold.woff2") format("woff2"); }
@font-face { font-family: "HSE Slab"; font-style: normal; font-weight: 400; font-display: swap; src: url("/fonts/hse-slab-regular.woff2") format("woff2"); }

:root {
  --navy: #0f2d69; --blue: #234b9b;                         /* основная палитра */
  --orange: #eb691e; --orange2: #eb8c3c; --cream: #ffdc91;  /* оранжевая триада дополнительной палитры */
  --gray: #e6e6e6; --gray2: #c6c6c6; --gray3: #929292;      /* серые основной палитры */
  --ink: var(--navy); --ink2: #3d4a6b; --line: #d9dde6; --soft: #f1f3f7; --soft2: #e9edf5; --danger: #c8102e; --danger2: #a80d26;   /* --danger2: красный на кремовом, 5,8 : 1 */
  --on-navy: #dbe2f1;   /* вторичный текст на темно-синем поле, 10 : 1 */
  --sans: "HSE Sans", "Helvetica Neue", Arial, sans-serif;
  --slab: "HSE Slab", Georgia, "Times New Roman", serif;   /* строка выпуска, продолжение названия, вопрос форума, пленарные сессии */
  --m: max(16px, 4vw, env(safe-area-inset-left, 0px)); --wide: 1200px;
  --ease: cubic-bezier(.22, 1, .36, 1);
  --top-max: 116px; --top-min: 64px;   /* высота шапки вверху страницы и после прокрутки */
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; scroll-padding-top: calc(var(--top-min) + 24px); }
body.lm { background: #fff; color: var(--ink); font: 400 18px/1.55 var(--sans); font-variant-numeric: tabular-nums; overflow-x: hidden; overflow-x: clip; }
.lm :where(a) { color: inherit; text-underline-offset: .2em; }   /* :where, чтобы плитка-ссылка задавала свой цвет текста */
.lm img { max-width: 100%; display: block; }
.lm :where(button) { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }   /* :where, чтобы .lm-btn у кнопки красил ее (2.38.1) */
.lm :where(h1, h2, h3) { font-weight: 600; text-wrap: balance; }
.lm :where(p, li, dd) { text-wrap: pretty; }
.lm :focus-visible { outline: 2px solid var(--navy); outline-offset: 3px; }
.lm ::selection { background: var(--cream); color: var(--navy); }
.lm [hidden] { display: none !important; }
.lm-vh { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.lm-skip { position: absolute; left: -999px; top: 0; z-index: 40; background: var(--navy); color: #fff !important; padding: 12px 16px; }
.lm-skip:focus { left: 16px; top: 16px; }
.lm-draft { background: var(--soft); padding: 8px var(--m); font-size: 16px; }
.lm-w { max-width: calc(var(--wide) + 2 * var(--m)); margin: 0 auto; padding-left: var(--m); padding-right: max(var(--m), env(safe-area-inset-right, 0px)); }
.lm-mute { color: var(--ink2); }

/* кнопки: главная светло-оранжевая #eb8c3c с темно-синим текстом (5,2 : 1), вторая с темно-синей рамкой.
   Текст на оранжевом всегда стоит на #eb8c3c: на чистом #eb691e темно-синий дает 4,1 : 1, этого мало для 18 px */
.lm-btn { display: inline-flex; align-items: center; gap: 12px; min-height: 56px; font: 600 18px/1.2 var(--sans); padding: 8px 24px; text-decoration: none !important;
  background: var(--orange2); color: var(--navy) !important; border: 2px solid var(--orange2);
  transition: background-color .3s var(--ease), border-color .3s var(--ease), color .3s var(--ease); }
@media (hover: hover) { .lm-btn:hover { background: var(--navy); border-color: var(--navy); color: #fff !important; } }
.lm-btn:active { transform: translateY(1px); }
.lm-btn-o { background: transparent; border-color: var(--navy); }
.lm-acts { display: flex; gap: 16px; flex-wrap: wrap; }
.lm-acts:empty { display: none; }

/* графика набора: ворон, силуэт цветом текста */
.lm-bird { display: block; }
.lm-bird-eye { fill: var(--orange); }

/* шапка (2.42.0): вверху страницы высокая, с полным логотипом организатора. При прокрутке она уходит вверх на разницу
   высот и остается низкой полосой: знак ВШЭ с сокращением, меню и кнопка регистрации. Содержимое держится по середине
   видимой части: сдвиг --top-s (сколько шапки ушло за край) задает lm.js. Без скриптов шапка стоит целиком */
.lm-top { position: sticky; top: calc(var(--top-min) - var(--top-max)); z-index: 20; border-bottom: 1px solid var(--line); background: #fff; }
html:not(.lm-js) .lm-top { top: 0; }
.lm-top .lm-w { display: flex; align-items: center; gap: 32px; min-height: var(--top-max); }
/* сдвиг стоит на каждой части шапки, а не на общей обертке: у обертки со сдвигом лист меню узкого экрана (position:
   fixed) считался бы от нее, а не от окна, и был бы виден полоской (так было с 2.42.0 по 2.44.0) */
.lm-top .lm-w > * { transform: translateY(calc(var(--top-s, 0px) / 2)); }
.lm-brand { position: relative; display: flex; align-items: center; flex: 0 1 auto; min-width: 0; text-decoration: none; }
.lm-brand-full { display: block; min-width: 0; transition: opacity .25s var(--ease); }
.lm-org-img { height: clamp(40px, 4.3vw, 62px); width: auto; max-width: 100%; object-fit: contain; object-position: 0 50%; transition: height .25s var(--ease); }
.lm-lock { display: flex; align-items: center; gap: 12px; font-size: 16px; line-height: 1.25; }
.lm-lock img { width: 44px; height: 44px; }
.lm-brand-min { position: absolute; left: 0; top: 50%; display: flex; align-items: center; gap: 12px; margin-top: -22px; opacity: 0; visibility: hidden;
  transition: opacity .25s var(--ease), visibility 0s .25s; }
.lm-brand-min img { width: 44px; height: 44px; }
.lm-brand-min b { font: 600 24px/1 var(--sans); letter-spacing: .01em; }
html:is(.lm-min, .lm-tight) .lm-brand:not(.lm-brand-1) .lm-brand-full { opacity: 0; }
html:is(.lm-min, .lm-tight) .lm-brand-min { opacity: 1; visibility: visible; transition: opacity .25s var(--ease); }
html.lm-min .lm-brand-1 .lm-org-img { height: 36px; }
/* меню разделов (2.45.0): линейка разделов. Названия набраны HSE Slab и стоят над тонкой линией; у начала каждого
   на линии квадратная отметка, как у времени в программе. У раздела, который сейчас в окне, отметка и отрезок линии
   до следующей отметки оранжевые; при наведении и фокусе отрезок темно-синий. Отрезок растет от отметки вправо */
.lm-nav { flex: 1 1 0; max-width: calc(var(--n, 5) * 120px); margin-left: auto; display: flex; white-space: nowrap; border-bottom: 1px solid #b9c2d6; }   /* в одну строку (2.39.1) */
/* линейка занимает место между логотипом и кнопкой, свободное место делится между пунктами поровну; когда пунктов много,
   сжимаются промежутки, и только потом логотип (а если он сжат заметно, вместо него встает знак с сокращением, lm.js) */
.lm-nav > a { flex: 1 1 auto; position: relative; display: block; padding: 8px 14px 13px 0; text-decoration: none; }
.lm-nav > a b { font: 400 clamp(17px, 1.32vw, 19px)/1.25 var(--slab); }
.lm-nav > a small, .lm-nav-foot { display: none; }
.lm-nav > a::before { content: ""; position: absolute; left: 0; bottom: -4px; width: 7px; height: 7px; background: var(--navy); transition: background-color .3s var(--ease); }
.lm-nav > a::after { content: ""; position: absolute; left: 0; right: 0; bottom: -2px; height: 3px; background: var(--navy); transform: scaleX(0); transform-origin: 0 50%;
  transition: transform .45s var(--ease), background-color .3s var(--ease); }
.lm-nav > a:hover::after, .lm-nav > a:focus-visible::after, .lm-nav > a.is-on::after { transform: scaleX(1); }
.lm-nav > a.is-on::before, .lm-nav > a.is-on::after { background: var(--orange); }
.lm-nav > a:focus-visible { outline: none; }   /* контур фокуса стоит вокруг названия, а не вокруг всего отрезка линейки */
.lm-nav > a:focus-visible b { outline: 2px solid var(--navy); outline-offset: 4px; }
.lm-btn-top { flex: none; min-height: 44px; padding: 8px 16px; font-size: 16px; }
.lm-top .lm-btn-top:active { transform: translateY(calc(var(--top-s, 0px) / 2 + 1px)); }
html.lm-hero-on .lm-btn-top:not(:hover) { background: transparent; border-color: var(--navy); }   /* пока видна кнопка первого экрана, кнопка шапки контурная: двух оранжевых рядом нет (lm.js) */
/* кнопка меню узкого экрана: слово и две линии, в открытом меню линии складываются в крест */
.lm-menu { display: none; flex: none; align-items: center; gap: 10px; min-height: 44px; padding: 0 0 0 4px; font: 600 16px/1 var(--sans); }
.lm-menu i { position: relative; flex: none; width: 24px; height: 10px; }
.lm-menu i::before, .lm-menu i::after { content: ""; position: absolute; left: 0; right: 0; height: 2px; background: var(--navy); transition: transform .5s var(--ease); }
.lm-menu i::before { top: 0; }
.lm-menu i::after { top: 8px; }
.lm-open .lm-menu i::before { transform: translateY(4px) rotate(45deg); }
.lm-open .lm-menu i::after { transform: translateY(-4px) rotate(-45deg); }

/* первый экран (2.42.0): белое поле с бледным орнаментом ВШЮА. Название стоит сверху во всю ширину, год отдельно:
   крупные цифры HSE Sans Black, в которых тот же орнамент виден в полном цвете. Плитки фона и цифр совпадают
   (сдвиг считает lm.js), поэтому цифры читаются как окно в узор. На годе сидит ворон. Слева от года продолжение
   названия шрифтом HSE Slab, день, место и кнопка регистрации. При открытии цифры поднимаются снизу, затем садится ворон */
/* плетенка (2.50.0): первый экран кончается тонкой плетеной линией в две нити, темно-синюю и оранжевую, на белой
   полосе. В 2.49.0 здесь стояла лента орнамента в цвете (тесьма): она отделяла первый экран от «О форуме», но была
   тяжелее, чем нужно тонкому переходу. До нее два белых раздела разделяла одна серая линия, и они сливались */
.lm-hero { --tile: clamp(240px, 26vw, 380px); position: relative; padding: clamp(24px, 2.6vw, 40px) 0 calc(clamp(32px, 3.6vw, 52px) + 22px);
  background: #fff url("/img/lm/ornament-pale.svg") 0 0 / var(--tile) var(--tile); }
.lm-hero::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 22px; background: #fff url("/img/lm/braid.svg") 0 50% / 88px 22px repeat-x; }
.lm-hero h1 { font-weight: 400; }
.lm-pre { display: block; margin-bottom: 12px; font: 400 clamp(20px, 1.95vw, 28px)/1.3 var(--slab); }
.lm-name { position: relative; display: block; font: 600 clamp(34px, 5.6vw, 80px)/1.06 var(--sans); letter-spacing: -.02em; }
h1.is-long .lm-name { font-size: clamp(30px, 4.8vw, 64px); line-height: 1.1; }
h1.is-xlong .lm-name { font-size: clamp(28px, 3.8vw, 52px); line-height: 1.14; letter-spacing: -.01em; }
.lm-yrow { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: 1fr auto; align-items: end; gap: 0 clamp(24px, 3.3vw, 48px); margin-top: clamp(22px, 2.6vw, 38px); }
.lm-yrow.is-1 { grid-template-columns: minmax(0, 1fr); }
.lm-sub { grid-column: 1; grid-row: 1; }
.lm-ycol { grid-column: 1; grid-row: 2; min-width: 0; }
.lm-yw { grid-column: 2; grid-row: 1 / 3; position: relative; font: 900 clamp(110px, 21.6vw, 300px)/.8 var(--sans); letter-spacing: -.02em; }
.lm-year { --ox: 0px; --oy: 0px; display: block; color: var(--navy); animation: lm-year-in 1.1s var(--ease) .1s both; }
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  /* узор в цифрах живой (2.43.0): после появления он медленно плывет вверх на одну плитку за 36 с и начинает заново;
     рисунок повторяется через плитку, поэтому шва нет. --ox и --oy: сдвиг, при котором узор цифр совпадает с фоном (lm.js) */
  .lm-year { background: var(--navy) url("/img/lm/ornament.svg") var(--ox) var(--oy) / var(--tile) var(--tile); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
    animation: lm-year-in 1.1s var(--ease) .1s both, lm-year-drift 36s linear 1.2s infinite; }
}
@keyframes lm-year-drift { from { background-position: var(--ox) var(--oy); } to { background-position: var(--ox) calc(var(--oy) - var(--tile)); } }
.lm-yw .lm-bird { position: absolute; right: .03em; bottom: .76em; height: .62em; width: auto; color: var(--navy); pointer-events: none;
  animation: lm-land .7s var(--ease) 1.2s both; }
.lm-yw .lm-bird-eye, .lm-perch .lm-bird-eye { transform-box: fill-box; transform-origin: center; animation: lm-blink 6s 4s infinite; }
@keyframes lm-year-in { from { clip-path: inset(100% 0 0 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes lm-land { from { opacity: 0; transform: translateY(-18px); } }
@keyframes lm-blink { 0%, 96%, 100% { transform: scaleY(1); } 98% { transform: scaleY(.1); } }
/* если года нет, ворон сидит на последнем слове названия (как в 2.41.0) */
.lm-nw { white-space: nowrap; }
.lm-perch { position: relative; display: inline-block; }
.lm-perch .lm-bird { position: absolute; right: -.04em; bottom: .74em; height: 2.2em; width: auto; color: var(--navy); pointer-events: none;
  animation: lm-land .7s var(--ease) .6s both; }
.lm-sub { font: 400 clamp(20px, 1.95vw, 28px)/1.35 var(--slab); text-wrap: balance; }
.lm-where { margin-top: 12px; font-size: 18px; color: var(--ink2); }
/* день и место (2.43.0): темно-синяя плашка из двух ячеек, первая строка ячейки HSE Slab. Раньше это были две
   строки обычного текста на бледном узоре, и главные сведения терялись */
.lm-facts { list-style: none; display: grid; gap: 1px; max-width: 560px; margin-top: 22px; background: #526893; color: #fff; }   /* фон виден только в зазоре: это линия между ячейками */
.lm-facts li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 18px; padding: 12px 22px 14px; background: var(--navy); }
.lm-facts b { font: 400 clamp(22px, 1.9vw, 27px)/1.2 var(--slab); }
.lm-facts span { color: var(--on-navy); }
.lm-facts ::selection { background: var(--orange2); color: var(--navy); }
.lm-hero .lm-acts { align-items: center; gap: 12px 32px; margin-top: 22px; }
.lm-more { display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; text-decoration-thickness: 1.5px; text-underline-offset: .22em; }
.lm-more:hover { text-decoration-thickness: 2.5px; }

/* видео: до запуска главный кадр страницы, кнопка в левом нижнем углу */
.lm-vframe { position: relative; aspect-ratio: 16 / 9; max-width: 100%; background: var(--navy); }
.lm-v { display: block; width: 100%; height: 100%; object-fit: cover; background: var(--navy); }
.lm-vframe.is-playing .lm-v { object-fit: contain; background: #000; }
.lm-vplay { position: absolute; left: 0; bottom: 0; display: flex; gap: 12px; align-items: center; min-height: 56px; padding: 0 24px 0 20px;
  background: var(--orange2); color: var(--navy); font: 600 18px/1.2 var(--sans); transition: background-color .3s var(--ease), color .3s var(--ease); }
.lm-vplay::before { content: ""; border-left: 12px solid currentColor; border-top: 8px solid transparent; border-bottom: 8px solid transparent; }
.lm-vplay:hover { background: #fff; }
.lm-vframe.is-playing .lm-vplay { display: none; }

/* вопрос форума: кремовое поле, вопрос шрифтом HSE Slab, два ответа и итог */
.lm-ask { padding-top: clamp(64px, 8vw, 112px); }
.lm-ask-card { background: var(--cream); }
.lm-ask-in { padding: clamp(24px, 4.4vw, 64px); }
.lm-ask-t { font: 400 clamp(30px, 3.9vw, 54px)/1.16 var(--slab); letter-spacing: -.005em; }
.lm-ask-btns { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; max-width: 640px; margin-top: clamp(24px, 2.4vw, 32px); }
.lm-ask-b { min-height: 64px; padding: 8px 16px; border: 2px solid var(--navy); color: var(--navy); font: 600 clamp(18px, 1.8vw, 24px)/1.2 var(--sans);
  transition: background-color .3s var(--ease), color .3s var(--ease); }
.lm-ask-b:hover, .lm-ask-b[aria-pressed="true"] { background: var(--navy); color: #fff; }
.lm-ask-b:active { transform: translateY(1px); }
.lm-ask-b:disabled { cursor: progress; }
.lm-ask-hint { margin-top: 12px; font-size: 16px; }
.lm-ask-btns:has([aria-pressed="true"]) + .lm-ask-hint { display: none; }
.lm-ask-res { max-width: 640px; margin-top: 24px; }
.lm-ask-nums { display: flex; justify-content: space-between; gap: 16px; font-size: 18px; font-weight: 600; }
.lm-ask-bar { height: 16px; margin-top: 8px; background: var(--orange); overflow: hidden; }   /* темно-синяя доля первого ответа, оранжевая второго */
.lm-ask-fill { display: block; height: 100%; background: var(--navy); transform-origin: 0 50%; transform: scaleX(0); transition: transform .9s var(--ease); }
.lm-ask-after { margin-top: 16px; font-size: 18px; line-height: 1.5; max-width: 34em; }
.lm-ask-res .lm-acts { margin-top: 24px; }
.lm-ask-res .lm-btn { background: var(--navy); border-color: var(--navy); color: #fff !important; }
.lm-ask-res .lm-btn:hover { background: #fff; border-color: #fff; color: var(--navy) !important; }
.lm-ask-res .lm-btn-o { background: transparent; color: var(--navy) !important; }
.lm-ask-res .lm-btn-o:hover { background: var(--navy); border-color: var(--navy); color: #fff !important; }
.lm-ask-err { margin-top: 12px; font-size: 16px; font-weight: 600; color: var(--danger2); }

/* разделы */
.lm-sec { padding-top: clamp(64px, 8vw, 112px); }
.lm-sec h2 { font: 600 clamp(30px, 3.4vw, 48px)/1.1 var(--sans); letter-spacing: -.01em; margin-bottom: 24px; }
.lm-two { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 32px 64px; align-items: start; }
.lm-text p + p { margin-top: 12px; }
.lm-big { font-size: 24px; line-height: 1.4; }

/* о форуме: крупная фраза описания и рядом видео (цветной кадр) */
.lm-intro { padding-top: clamp(48px, 6vw, 88px); }
.lm-lead { font: 400 clamp(21px, 2vw, 28px)/1.4 var(--slab); max-width: 26em; }
.lm-intro-2 { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 32px 64px; align-items: start; }

/* служебный текст (2.44.0). Вступление к разделу: первое предложение описанием HSE Slab, остальное рядом темно-синей
   плашкой, как день и место на первом экране. Короткая пометка: строка 16 px с квадратной меткой */
.lm-lede { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 20px clamp(24px, 4vw, 64px); align-items: start; }
.lm-lede.is-1 { grid-template-columns: minmax(0, 1fr); }
.lm-lede-t { max-width: 30em; font: 400 clamp(20px, 1.8vw, 26px)/1.4 var(--slab); }
.lm-lede-f { padding: 16px 22px 18px; background: var(--navy); color: #fff; line-height: 1.45; }
.lm-lede-f::selection { background: var(--orange2); color: var(--navy); }
.lm-fine { position: relative; padding-left: 22px; font-size: 16px; line-height: 1.5; color: var(--ink2); }
.lm-fine::before { content: ""; position: absolute; left: 0; top: .42em; width: 9px; height: 9px; background: var(--navy); }

/* программа таблицей (2.42.0): строки по времени, колонки по залам. Обычная сессия на белом, пленарная на темно-синем,
   главное событие на оранжевом; цветные ячейки, идущие подряд, разделяет белая полоса 6 px. Пока в зале нет сессий,
   его колонка серая. Названия сессий набраны HSE Slab. Уже 861 px и при пяти и более залах (класс is-list)
   таблица становится списком блоков по времени, см. ниже */
.lm-head { display: flex; justify-content: space-between; align-items: baseline; gap: 8px 32px; flex-wrap: wrap; margin-bottom: clamp(24px, 3vw, 40px); }
.lm-head h2 { margin-bottom: 0; }
.lm-head p { display: flex; align-items: center; gap: 8px 24px; flex-wrap: wrap; font-size: 18px; }
/* листок отрывного календаря (2.49.0): знак даты. Месяц на темно-синей полосе, число HSE Slab. Стоит в кнопке дня
   у программы и на карточке участника */
.lm-leaf { flex: none; display: grid; width: 62px; border: 2px solid var(--navy); background: #fff; color: var(--navy); text-align: center; }
.lm-leaf i { background: var(--navy); color: #fff; font: 600 16px/24px var(--sans); }
.lm-leaf b { font: 400 34px/42px var(--slab); }
/* день программы и «в календарь» одной кнопкой в две строки: раньше это были строка текста и подчеркнутая ссылка */
.lm-day { align-self: center; display: inline-flex; align-items: center; gap: 16px; padding: 8px 20px 8px 8px; border: 1.5px solid var(--navy); color: var(--navy);
  text-decoration: none; transition: background-color .25s var(--ease), color .25s var(--ease); }
.lm-day-t { min-width: 0; }
.lm-day-t b { display: block; font: 400 clamp(20px, 1.6vw, 22px)/1.2 var(--slab); }
.lm-day-t i { display: block; font-style: normal; font-size: 16px; line-height: 1.4; color: var(--ink2); transition: color .25s var(--ease); }
.lm-day-p { position: relative; flex: none; width: 14px; height: 14px; margin-left: 8px; }
.lm-day-p::before, .lm-day-p::after { content: ""; position: absolute; left: 0; top: 6px; width: 14px; height: 2px; background: currentColor; }
.lm-day-p::after { transform: rotate(90deg); }
@media (hover: hover) { .lm-day:hover { background: var(--navy); color: #fff; } .lm-day:hover .lm-day-t i { color: var(--on-navy); } }
.lm-day:active { transform: translateY(1px); }
.lm-head p a { display: inline-flex; align-items: center; min-height: 44px; }
.lm-tb { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; }
.lm-tb th, .lm-tb td { padding: 20px 24px; text-align: left; vertical-align: top; }
.lm-tb thead th { padding-top: 0; padding-bottom: 12px; border-bottom: 2px solid var(--navy); font: 400 clamp(20px, 1.67vw, 24px)/1.25 var(--slab); vertical-align: top; }
.lm-tb thead th span { display: block; margin-top: 2px; font: 400 16px/1.4 var(--sans); color: var(--navy); }
.lm-tb thead .lm-tb-t { padding-top: 6px; font: 400 16px/1.4 var(--sans); color: var(--navy); }
.lm-tb-t { width: 190px; }
/* линия дня (2.43.0): слева от времени квадратная метка начала строки и тонкая линия до следующей метки */
.lm-tb thead th:first-child, .lm-tb tbody th { padding-left: 30px; }
.lm-tb tbody th { position: relative; border-bottom: 1px solid var(--line); font-weight: 400; font-size: 16px; line-height: 1.4; color: var(--ink2); }
.lm-tb tbody th::before { content: ""; position: absolute; left: 0; top: 31px; width: 11px; height: 11px; background: var(--navy); }
.lm-tb tbody th::after { content: ""; position: absolute; left: 5px; top: 42px; bottom: -31px; width: 1px; background: #b9c2d6; }
.lm-tb tbody tr:last-child th::after { display: none; }
.lm-tb tbody tr.is-aw th::before { background: var(--orange2); }
.lm-tb tbody th b { display: block; margin-bottom: 2px; color: var(--navy); font: 400 30px/1.15 var(--slab); }
.lm-tb tbody th span { display: block; }
/* служебный текст программы (2.57.0). Конец строки стоит числом HSE Slab под началом, за тонкой чертой: раньше это
   была серая строка «до 12:30». Перерыв это своя строка через всю таблицу, полоса с бледным орнаментом между двумя
   темно-синими линейками, как в печатной программе: раньше он был серой припиской под временем. Вид сессии и подписи
   в шапке таблицы темно-синие, вид сессии HSE Slab */
.lm-tb tbody th > span { position: relative; margin-top: 10px; padding-left: 16px; font: 400 20px/1.2 var(--slab); color: var(--navy); }
.lm-tb tbody th > span::before { content: ""; position: absolute; left: 0; top: -6px; bottom: 2px; width: 1.5px; background: var(--navy); }
.lm-tb tbody tr.is-gap > th, .lm-tb tbody tr.is-gap > td { border-bottom: 0; }
.lm-tb tbody tr.is-gap > th::after { bottom: -78px; z-index: 1; }   /* линия дня идет сквозь полосу перерыва */
.lm-tb tbody tr.lm-tb-br > td { height: 44px; padding: 0 24px 0 30px; vertical-align: middle; border-left: 0; border-top: 1.5px solid var(--navy); border-bottom: 1.5px solid var(--navy);
  background: #fff url("/img/lm/ornament-pale.svg") 0 50% / 150px auto; color: var(--navy); }
.lm-tb-br b { font: 400 19px/1.2 var(--slab); }
.lm-tb-br span { margin-left: 12px; font-size: 16px; line-height: 1.2; color: var(--ink2); white-space: nowrap; }
/* зал, который ждет, стоит одной ячейкой на несколько строк (2.58.0). Линия снизу у нее своя: строка, в которой
   ячейка записана, может кончаться перерывом, а сама ячейка нет. Если под ней полоса перерыва, линии нет */
.lm-tb tbody tr > td.lm-tb-idle { border-bottom: 1px solid var(--line); }
.lm-tb tbody tr > td.lm-tb-idle.is-br { border-bottom: 0; }
.lm-tb tbody td { border-bottom: 1px solid var(--line); border-left: 1px solid var(--line); transition: background-color .3s var(--ease); }
@media (hover: hover) { .lm-tb tbody td:not(.pl):not(.aw):not(.lm-tb-idle):not(:empty):hover { background: var(--soft); } }
/* стыки цветных ячеек (2.50.0): сессии одного зала, идущие подряд, читаются как отрывные талоны: между ними
   пунктир и полукруглые выемки по краям. Ячейку, над которой стоит цветная ячейка того же зала, сервер помечает
   is-tk. Выемки это белые полукруги внутри самой ячейки, наружу они не выходят. В 2.49.0 здесь была тонкая светлая
   линия, до нее белая полоса 6 px, которая была заметнее самих сессий. Списком (узкий экран, много залов) стыков нет */
.lm-tb td.pl { background: var(--navy); color: #fff; border-left-color: var(--navy); border-bottom: 0; }
.lm-tb td.aw { background: var(--orange2); border-left-color: var(--orange2); border-bottom: 0; }
@media (min-width: 861px) {
  .lm-tb:not(.is-list) td.is-tk { position: relative; border-top: 2px dashed #8fa3cf; }
  .lm-tb:not(.is-list) td.aw.is-tk { border-top-color: var(--navy); }
  .lm-tb:not(.is-list) td.is-tk::before, .lm-tb:not(.is-list) td.is-tk::after { content: ""; position: absolute; top: -11px; width: 10px; height: 20px; background: #fff; }
  .lm-tb:not(.is-list) td.is-tk::before { left: -1px; border-radius: 0 10px 10px 0; }
  .lm-tb:not(.is-list) td.is-tk::after { right: 0; border-radius: 10px 0 0 10px; }
}
/* зал без сессий (2.51.0): белая ячейка, внизу подпись HSE Slab с залом и часом начала и строка о том, где программа
   идет до этого; на верхнем крае первой сессии зала сидит ворон. Он садится, когда таблица показалась в окне, и моргает,
   как ворон на первом экране. Раньше здесь была серая ячейка с мелкой строкой, и она терялась */
.lm-tb-idle { position: relative; vertical-align: bottom !important; padding-bottom: 22px !important; background: #fff; }
.lm-idle { display: block; padding-right: calc(clamp(64px, 6.6vw, 96px) + 24px); }
.lm-idle b { display: block; max-width: 9em; font: 400 clamp(22px, 2.1vw, 30px)/1.2 var(--slab); color: var(--navy); }
.lm-idle b span { white-space: nowrap; }   /* «сессии с 15:00» не рвется */
.lm-idle i { display: block; max-width: 15em; margin-top: 8px; font-style: normal; font-size: 16px; line-height: 1.4; color: var(--ink2); }
.lm-idle-b { position: absolute; right: clamp(16px, 2vw, 30px); bottom: -3px; color: var(--navy); pointer-events: none; }
.lm-idle-b .lm-bird { height: clamp(76px, 7.2vw, 104px); width: auto; }
.lm-idle-b .lm-bird-eye { transform-box: fill-box; transform-origin: center; animation: lm-blink 6s 5s infinite; }
/* встреча воронов: гость сидит левее большого ворона на том же краю сессии; он такого же роста, как ворон «Наверх»
   у края окна, потому что это он и есть. Пока гость в ячейке, ветка у края окна пуста и скрыта */
.lm-idle-g { position: absolute; right: calc(clamp(16px, 2vw, 30px) + clamp(76px, 7.2vw, 104px) * .96 + 4px); bottom: -3px; padding: 0; border: 0; background: none;
  color: var(--navy); cursor: pointer; }
.lm-idle-g[hidden] { display: none; }
.lm-idle-g .lm-bird { display: block; height: 62px; width: auto; }
.lm-idle-g:focus-visible { outline: 2px solid var(--navy); outline-offset: 3px; }
.lm-tb.is-3 .lm-idle-g { display: none; }   /* при трех и четырех залах колонка узкая, встречи нет */
.lm-up.is-on.is-away { opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .15s linear, visibility 0s .15s; }
.lm-tb.lm-wait .lm-idle-b .lm-bird { opacity: 0; }
.lm-tb.is-in .lm-idle-b .lm-bird { animation: lm-perch .7s var(--ease) .65s both; }
.lm-tb.is-3 .lm-idle { padding-right: 0; padding-bottom: 76px; }   /* три и четыре зала: колонка узкая, подпись стоит над вороном */
.lm-idle.is-solo, .lm-tb.is-3 .lm-idle.is-solo { padding-right: 0; padding-bottom: 0; }   /* ворон один на таблицу: в остальных ячейках только подпись */
.lm-tb.is-3 .lm-idle-b .lm-bird { height: 68px; }
.lm-ts { display: flex; flex-direction: column; gap: 4px; }
.lm-ts + .lm-ts { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); }
.lm-ts-w, .lm-now { display: none; }
.lm-ts-k { font: 400 17px/1.35 var(--slab); color: var(--navy); }
/* время и зал сессии в списке на узком экране: начало и конец числами HSE Slab через черту, зал строкой ниже */
.lm-ts-w b { font: 400 26px/1.1 var(--slab); }
.lm-ts-w i { font: 400 19px/1.2 var(--slab); font-style: normal; }
.lm-ts-w i::before { content: ""; display: inline-block; width: 12px; height: 1.5px; margin: 0 7px 6px 4px; background: currentColor; }
.lm-ts-w > span { display: block; margin-top: 2px; font: 400 16px/1.4 var(--sans); color: var(--ink2); }
.lm-tb td.pl .lm-ts-w > span, .lm-ts.pl .lm-ts-w > span { color: var(--on-navy); }
.lm-tb td.aw .lm-ts-w > span, .lm-ts.aw .lm-ts-w > span { color: var(--navy); }
.lm-ts h3 { max-width: 22em; font: 400 clamp(20px, 1.67vw, 24px)/1.3 var(--slab); overflow-wrap: break-word; }
.lm-about { font-size: 16px; line-height: 1.45; color: var(--ink2); }
/* описание сессии (2.61.2): вводка HSE Slab 18 px в цвет названия, подзаголовки блоков HSE Slab 19 px, пункты HSE Sans
   17 px темно-синим, меткой пункта стоит ворон из фирменного стиля с оранжевым глазом (маска web/img/lm/raven-dot.svg
   в цвет текста). Раньше вводка и пункты были серым рубленым 16 px с квадратной меткой */
.lm-ts > .lm-about, .lm-ab > .lm-about:first-child { font: 400 18px/1.4 var(--slab); color: var(--navy); }
/* описание сессии блоками (2.60.0): подзаголовок блока HSE Slab в цвет названия, под ним пункты с квадратной
   меткой, как в справке спикера на обложке */
.lm-ab { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
.lm-ab, .lm-ts > .lm-about { overflow-wrap: break-word; -webkit-hyphens: auto; hyphens: auto; }
/* с 2.61.0 описание стоит в ячейке открыто, под названием сессии; кнопка «Спикеры» идет после него */
.lm-ts > .lm-ab, .lm-ts > .lm-about { margin-top: 6px; }
.lm-ts > .lm-ab .lm-about { margin-top: 0; }
.lm-ab-h { margin-top: 10px; font: 400 19px/1.3 var(--slab); color: var(--navy); }
.lm-ab-ul { display: grid; gap: 6px; list-style: none; }
.lm-ab-ul li { position: relative; padding-left: 28px; font-size: 17px; line-height: 1.45; color: var(--navy); }
.lm-ab-ul li::before { content: ""; position: absolute; left: 0; top: .2em; width: 16px; height: 17px; background: currentColor;
  -webkit-mask: url("/img/lm/raven-dot.svg") no-repeat 0 0 / contain; mask: url("/img/lm/raven-dot.svg") no-repeat 0 0 / contain; }
.lm-ab-ul li::after { content: ""; position: absolute; left: 12px; top: calc(.2em + 1px); width: 2px; height: 2px; border-radius: 50%; background: var(--orange); }
.lm-tb td.pl .lm-ab :is(.lm-about, .lm-ab-h, li), .lm-ts.pl .lm-ab :is(.lm-about, .lm-ab-h, li),
.lm-tb td.pl .lm-ts > .lm-about, .lm-ts.pl > .lm-about { color: #fff; }
.lm-tb td.pl .lm-ab > .lm-about:not(:first-child), .lm-ts.pl .lm-ab > .lm-about:not(:first-child) { color: var(--on-navy); }
.lm-tb td.aw .lm-ab :is(.lm-about, .lm-ab-h, li), .lm-ts.aw .lm-ab :is(.lm-about, .lm-ab-h, li) { color: var(--navy); }
.lm-tb td.pl :is(.lm-ts-k, .lm-about, .lm-ts-ppl small), .lm-ts.pl :is(.lm-ts-k, .lm-about, .lm-ts-ppl small) { color: var(--on-navy); }
.lm-tb td.aw :is(.lm-ts-k, .lm-about, .lm-ts-ppl small), .lm-ts.aw :is(.lm-ts-k, .lm-about, .lm-ts-ppl small) { color: var(--navy); }
/* сессия раскрывается (2.46.0): кнопка «Спикеры: N» с рамкой в цвет текста ячейки и знаком из двух линий (плюс,
   в открытой сессии минус: те же линии, что у кнопки меню). Под кнопкой описание сессии и ее люди строками:
   маленький портрет 4:5, имя, должность; модератор отмечен кремовой плашкой. Строка ведет к спикеру на обложку */
.lm-ts { --rule: var(--line); }
.lm-tb td.pl .lm-ts, .lm-ts.pl { --rule: #40568c; }
.lm-tb td.aw .lm-ts, .lm-ts.aw { --rule: #b87a3c; }
.lm-ts-more { margin-top: 10px; }
.lm-ts-more summary { display: inline-flex; align-items: center; gap: 14px; min-height: 44px; padding: 0 14px 0 16px; border: 1.5px solid currentColor;
  font: 600 16px/1.2 var(--sans); cursor: pointer; list-style: none; -webkit-user-select: none; user-select: none;
  transition: background-color .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease); }
.lm-ts-more summary::-webkit-details-marker { display: none; }
.lm-ts-more summary i { position: relative; flex: none; width: 14px; height: 14px; }
.lm-ts-more summary i::before, .lm-ts-more summary i::after { content: ""; position: absolute; left: 0; top: 6px; width: 14px; height: 2px; background: currentColor;
  transition: transform .3s var(--ease); }
.lm-ts-more summary i::after { transform: rotate(90deg); }
.lm-ts-more[open] summary i::after { transform: rotate(0deg); }
@media (hover: hover) {
  .lm-ts-more summary:hover { background: var(--navy); border-color: var(--navy); color: #fff; }
  .lm-tb td.pl .lm-ts-more summary:hover, .lm-ts.pl .lm-ts-more summary:hover { background: #fff; border-color: #fff; color: var(--navy); }
}
.lm-ts-in { display: grid; gap: 12px; padding-top: 14px; }
.lm-ts-more[open] .lm-ts-in { animation: lm-ink .45s ease-out both; }
.lm-ts-ppl { list-style: none; }
.lm-ts-ppl a { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 14px; align-items: center; min-height: 84px; padding: 8px 0; border-top: 1px solid var(--rule);
  text-decoration: none; }
.lm-ts-ppl li:last-child a { border-bottom: 1px solid var(--rule); }
.lm-ts-ppl a > span > b { display: block; font-weight: 600; line-height: 1.3; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }
.lm-ts-ppl a:hover > span > b { text-decoration-thickness: 2px; }
.lm-ts-ppl small { display: block; margin-top: 2px; font-size: 16px; line-height: 1.4; color: var(--ink2); }
.lm-ts-ppl small b { display: inline-block; margin-right: 10px; padding: 0 8px; background: var(--cream); color: var(--navy); font-weight: 600; }
/* маленький портрет спикера: фото или первые буквы имени буквами из орнамента (в сессии и под обложкой).
   Фото в таком окне берется крупнее, по лицу: портрет по плечи в 44 px дает лицо в несколько точек, а светлый фон
   снимка без рамки сливается с ячейкой, и кажется, что снимок обрезан не там */
/* высота окна задана числом, а снимок стоит в нем абсолютно (2.55.2). Раньше высоту окна давало aspect-ratio, а снимку стояло
   height: 100%: в Safari в строке людей сессии такая высота не считалась, снимок вставал во весь свой рост (960 px при ширине
   окна), и в окне оставался увеличенный клочок волос. В Chrome этого не было, поэтому ошибку не видели проверки */
.lm-th { position: relative; flex: none; display: block; width: 44px; height: 55px; overflow: hidden; border: 1.5px solid var(--navy); background: var(--soft2); font-style: normal; }
.lm-th img { position: absolute; left: 0; top: 0; display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 22%; transform: scale(var(--fz, 2)); transform-origin: var(--fx, 50%) var(--fy, 22%); }
/* без сведений о лице окно берет середину снимка по ширине и полосу от 11 до 61 % по высоте; если лицо у спикера задано
   (--fx, --fy, --fz ставит сервер), окно встает точно по нему */
.lm-th.is-mono { display: grid; place-items: center; background: #fff; }
.lm-ts-ppl .lm-th { width: 52px; height: 65px; }
.lm-th.is-mono b { font: 900 19px/1 var(--sans); letter-spacing: -.03em; color: var(--navy); }
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .lm-th.is-mono b, .lm-cv-pic.is-mono b { background: var(--navy) url("/img/lm/ornament.svg") var(--p, 0 0) / 30px auto; -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; }
}
/* в одной ячейке сессии разного вида: цвет несет сам блок сессии */
.lm-tb td:not(.pl):not(.aw) > .lm-ts.pl { padding: 14px 16px; background: var(--navy); color: #fff; }
.lm-tb td:not(.pl):not(.aw) > .lm-ts.aw { padding: 14px 16px; background: var(--orange2); }
.lm-ts.is-now .lm-now { display: block; margin-top: 4px; font-weight: 600; color: var(--danger2); }
.lm-tb td.pl .lm-now, .lm-ts.pl .lm-now { color: var(--cream); }
.lm-tb td.aw .lm-now, .lm-ts.aw .lm-now { color: var(--navy); }
.lm-ts.is-past { opacity: .55; }
/* «В календарь» у сессии: на компьютере видна при наведении на ячейку и при фокусе, на устройствах без мыши всегда */
.lm-ts-cal { align-self: flex-start; display: inline-flex; align-items: center; min-height: 44px; font-size: 16px; text-decoration: underline; text-underline-offset: .2em; }
.lm-ts-cal:hover { text-decoration-thickness: 2px; }
/* отметка сессии (2.52.0): кнопка с квадратом и словом «Отметить», со скриптами стоит вместо ссылки «В календарь».
   Отмеченные сессии уходят в календарь одним файлом из полосы под программой. Квадрат у отмеченной сессии залит:
   на белой ячейке темно-синим, на темно-синей кремовым */
.lm-ts-pk { align-self: flex-start; display: inline-flex; align-items: center; gap: 9px; min-height: 44px; padding: 0; border: 0; background: none; color: inherit;
  font: 600 16px/1.2 var(--sans); cursor: pointer; }
.lm-ts-pk[hidden], .lm-pk[hidden], .lm-pk-b[hidden] { display: none; }
.lm-ts-pk i { position: relative; flex: none; width: 20px; height: 20px; border: 1.5px solid currentColor; transition: background-color .2s ease-out, border-color .2s ease-out; }
.lm-ts-pk[aria-pressed="true"] i { background: var(--navy); border-color: var(--navy); }
.lm-ts-pk[aria-pressed="true"] i::after { content: ""; position: absolute; left: 5.5px; top: 1.5px; width: 5px; height: 10px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg); }
.lm-tb td.pl .lm-ts-pk[aria-pressed="true"] i, .lm-ts.pl .lm-ts-pk[aria-pressed="true"] i { background: var(--cream); border-color: var(--cream); }
.lm-tb td.pl .lm-ts-pk[aria-pressed="true"] i::after, .lm-ts.pl .lm-ts-pk[aria-pressed="true"] i::after { border-color: var(--navy); }
@media (hover: hover) { .lm-ts-pk:hover span { text-decoration: underline; text-underline-offset: .2em; } }
.lm-picks .lm-ts-cal { display: none; }
.lm-pk-hint { margin: -8px 0 20px; }
.lm-pk-hint[hidden] { display: none; }
/* полоса отмеченных сессий: держится у нижнего края окна, пока программа на экране */
.lm-pk { position: sticky; bottom: 0; z-index: 5; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 24px; margin-top: 20px;
  padding: 10px clamp(16px, 2vw, 24px) calc(12px + env(safe-area-inset-bottom, 0px)); border-top: 3px solid var(--orange); background: var(--navy); color: #fff;
  animation: lm-ink .3s ease-out both; }   /* оранжевая кромка отделяет полосу от темно-синих сессий под ней */
.lm-pk-t { font: 400 clamp(20px, 1.7vw, 24px)/1.2 var(--slab); }
.lm-pk-t b { font-weight: 400; }
.lm-pk-a { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; }
.lm-pk .lm-btn { min-height: 44px; padding: 8px 18px; font-size: 16px; }
.lm-pk-b { min-height: 44px; padding: 0 16px; border: 1.5px solid #fff; background: none; color: #fff; font: 600 16px/1.2 var(--sans); cursor: pointer;
  transition: background-color .2s ease-out, color .2s ease-out; }
@media (hover: hover) { .lm-pk-b:hover { background: #fff; color: var(--navy); } }
.lm-pk :focus-visible { outline-color: #fff; }
html.lm-pk-on .lm-up { bottom: calc(var(--pk-h, 84px) + 8px); }   /* ворон «Наверх» стоит над полосой; ее высоту сообщает lm.js */
@media (hover: hover) and (min-width: 861px) {
  /* в таблице ссылка стоит в правом верхнем углу ячейки и не занимает строку */
  .lm-tb:not(.is-list) tbody td { position: relative; }
  .lm-tb:not(.is-list) .lm-ts-pk { position: absolute; right: 24px; top: 8px; }   /* квадрат и слово встают в строку вида сессии; цель нажатия 44 px */
  .lm-tb:not(.is-list) .lm-ts + .lm-ts .lm-ts-pk { position: static; }
  /* три и четыре зала: колонка узкая, отметка стоит под сессией, место в первой строке ей не нужно */
  .lm-tb.is-3 .lm-ts-pk { position: static; }
  .lm-tb.is-3 .lm-ts:first-child :is(.lm-ts-k, .lm-ts-w + h3) { padding-right: 0; }
  .lm-tb:not(.is-list) .lm-ts:first-child :is(.lm-ts-k, .lm-ts-w + h3) { padding-right: 120px; }   /* место под ссылку в первой строке ячейки */
  .lm-tb:not(.is-list) .lm-ts-cal { position: absolute; right: 24px; top: 8px; opacity: 0; transition: opacity .3s var(--ease); }
  .lm-tb:not(.is-list) .lm-ts + .lm-ts .lm-ts-cal { position: static; }
  .lm-tb td:hover .lm-ts-cal, .lm-ts-cal:focus-visible { opacity: 1; }
}
.lm-tb td.pl :focus-visible { outline-color: #fff; }
.lm-note { margin-top: 32px; }
/* движение: пока таблица не показалась в окне, строки скрыты (класс lm-wait ставит lm.js); затем они проявляются
   по очереди сверху вниз, по ходу дня */
.lm-tb.lm-wait tbody tr { opacity: 0; }
.lm-tb.is-in tbody tr { animation: lm-ink .6s ease-out calc(var(--i, 0) * .1s) both; }
@keyframes lm-ink { from { opacity: 0; } }
@keyframes lm-rise { from { opacity: 0; } }   /* проявление анкеты при раскрытии */
/* список блоков по времени: много залов */
.lm-tb.is-list, .lm-tb.is-list tbody, .lm-tb.is-list tbody td { display: block; }
.lm-tb.is-list { max-width: 820px; }
.lm-tb.is-list thead, .lm-tb.is-list tbody th, .lm-tb.is-list .lm-tb-idle, .lm-tb.is-list td:empty { display: none; }
.lm-tb.is-list tr { display: flex; flex-direction: column; }
.lm-tb.is-list tbody td, .lm-tb.is-list tbody td.pl, .lm-tb.is-list tbody td.aw { order: var(--o, 0); margin-bottom: 8px; padding: 0; border: 0; background: none; color: inherit; }
.lm-tb.is-list .lm-ts { padding: 16px; background: var(--soft2); }
.lm-tb.is-list td.pl .lm-ts, .lm-tb.is-list .lm-ts.pl { background: var(--navy); color: #fff; }
.lm-tb.is-list td.aw .lm-ts, .lm-tb.is-list .lm-ts.aw { background: var(--orange2); }
.lm-tb.is-list .lm-ts + .lm-ts { margin-top: 8px; border-top: 0; }
.lm-tb.is-list .lm-ts-w { display: block; font-size: 16px; font-weight: 600; }
.lm-tb.is-list tbody tr.lm-tb-br > td { display: block; height: auto; margin-bottom: 8px; padding: 9px 16px 10px; }
.lm-tb.is-list .lm-ts-own { display: none; }
.lm-tb.is-list .lm-ts-cal { min-height: 44px; }
@media (max-width: 860px) {
  .lm-tb, .lm-tb tbody, .lm-tb tbody td { display: block; }
  .lm-tb thead, .lm-tb tbody th, .lm-tb .lm-tb-idle, .lm-tb td:empty { display: none; }
  .lm-tb tr { display: flex; flex-direction: column; }
  .lm-tb tbody td, .lm-tb tbody td.pl, .lm-tb tbody td.aw { order: var(--o, 0); margin-bottom: 8px; padding: 0; border: 0; background: none; color: inherit; }
  .lm-tb .lm-ts { padding: 16px; background: var(--soft2); }
  .lm-tb td.pl .lm-ts, .lm-tb .lm-ts.pl { background: var(--navy); color: #fff; }
  .lm-tb td.aw .lm-ts, .lm-tb .lm-ts.aw { background: var(--orange2); }
  .lm-tb .lm-ts + .lm-ts { margin-top: 8px; border-top: 0; }
  .lm-tb .lm-ts-w { display: block; font-size: 16px; font-weight: 600; }
  .lm-tb tbody tr.lm-tb-br > td { display: block; height: auto; margin-bottom: 8px; padding: 9px 16px 10px; }
  .lm-tb .lm-ts-own { display: none; }
  .lm-tb .lm-ts-cal { min-height: 44px; }
}

/* премия (2.45.0): белое поле, афиша из двух рядов. Слева крупное слово, общее для номинаций ряда («Гуру»), буквами
   HSE Sans Black, в которых виден орнамент ВШЮА; справа продолжения названий HSE Slab между оранжевыми линиями.
   Специальная номинация набрана вторым рядом тем же приемом, ее слово занимает ту же ширину (кегль подгоняет lm.js;
   здесь он считается по числу букв --n, с запасом). При появлении слово открывается слева направо, растут линии,
   затем проявляются названия; узор в буквах медленно плывет, как в цифрах года */
.lm-aw h2 { max-width: 20em; }
.lm-aw-when { margin-top: -10px; font: 400 clamp(20px, 1.67vw, 24px)/1.35 var(--slab); }
.lm-aw-about { margin-top: 14px; max-width: 46em; }
.lm-aw-bills { display: grid; gap: clamp(28px, 3.2vw, 46px); margin-top: clamp(28px, 3.4vw, 48px); }
.lm-aw-bill { display: grid; grid-template-columns: minmax(0, 44fr) minmax(0, 56fr); align-items: center; }
.lm-aw-bill.is-plain { grid-template-columns: minmax(0, 820px); }
.lm-aw-word { min-width: 0; padding-right: clamp(12px, 2vw, 28px); white-space: nowrap;
  font: 900 clamp(56px, calc(38vw / (var(--n, 4) * .66)), 250px)/1.16 var(--sans); letter-spacing: -.03em; }
.lm-aw-word span { --tile: .85em; display: inline-block; margin: -.1em 0 -.07em -.045em; padding: 0 .04em .04em 0; color: var(--navy); }
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .lm-aw-word span { background: var(--navy) url("/img/lm/ornament.svg") 0 0 / var(--tile) var(--tile); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
  .lm-aw.is-in .lm-aw-word span { animation: lm-wipe 1s cubic-bezier(.65, 0, .2, 1) both, lm-aw-drift 36s linear 1.2s infinite; }
  .lm-aw.is-in .is-spec .lm-aw-word span { animation-delay: .45s, 1.6s; }
}
@keyframes lm-aw-drift { to { background-position: 0 calc(var(--tile) * -1); } }
.lm-off { animation-play-state: paused !important; }
.lm-aw-list { min-width: 0; }
.lm-aw-cap { margin: 0 0 10px; font: 600 18px/1.3 var(--sans); }
.lm-aw-noms { position: relative; list-style: none; }
.lm-aw-noms::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 2px; background: var(--orange); transform-origin: 50% 0; }
.lm-aw-noms::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background: var(--orange); transform-origin: 0 50%; }
.lm-aw-noms li { position: relative; padding: clamp(13px, 1.6vw, 23px) 16px clamp(15px, 1.8vw, 26px) clamp(20px, 2.5vw, 36px);
  font: 400 clamp(22px, 2.43vw, 35px)/1.3 var(--slab); letter-spacing: -.01em; }
.lm-aw-noms li::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 2px; background: var(--orange); transform-origin: 0 50%; }
.lm-aw-noms li::after { content: ""; position: absolute; left: 2px; right: 0; top: 2px; bottom: 0; background: var(--cream); transform: scaleX(0); transform-origin: 0 50%;
  transition: transform .35s var(--ease); }
.lm-aw-noms li:last-child::after { bottom: 2px; }
@media (hover: hover) { .lm-aw-noms li:hover::after { transform: scaleX(1); } }
.lm-aw-noms li > span { position: relative; z-index: 1; display: block; }
.lm-aw.lm-wait .lm-aw-word span { clip-path: inset(0 100% 0 0); }
.lm-aw.lm-wait .lm-aw-noms::before { transform: scaleY(0); }
.lm-aw.lm-wait .lm-aw-noms::after, .lm-aw.lm-wait .lm-aw-noms li::before { transform: scaleX(0); }
.lm-aw.lm-wait :is(.lm-aw-noms li > span, .lm-aw-cap) { opacity: 0; }
.lm-aw.is-in .lm-aw-noms::before { animation: lm-grow-y .6s var(--ease) .7s both; }
.lm-aw.is-in .lm-aw-noms li::before { animation: lm-grow-x .8s var(--ease) calc(.95s + var(--i, 0) * .14s) both; }
.lm-aw.is-in .lm-aw-noms::after { animation: lm-grow-x .8s var(--ease) 1.5s both; }
.lm-aw.is-in .lm-aw-noms li > span { animation: lm-ink .6s ease-out calc(1.1s + var(--i, 0) * .14s) both; }
.lm-aw.is-in .lm-aw-cap { animation: lm-ink .6s ease-out 1.4s both; }
.lm-foot :focus-visible, .lm-lede-f :focus-visible { outline-color: #fff; }

/* спикеры обложкой (2.46.0). По умолчанию список: у спикера маленький портрет, имя HSE Slab, должность и его
   сессии (узкий экран и страница без скриптов). На экране шире 700 px со скриптами это обложка журнала: один спикер
   крупно (портрет 4:5 и имя HSE Slab до 96 px, оранжевая линия, должность, справка, сессии со ссылками в программу),
   под обложкой строка имен всех спикеров: выбранное имя на кремовом с оранжевой чертой. При смене спикера портрет
   открывается снизу вверх, затем проявляется текст */
.lm-cv-head { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: end; gap: 0 24px; margin-bottom: clamp(20px, 2.4vw, 32px); }
.lm-cv-head h2 { margin-bottom: 0; }
.lm-cv-head .lm-view { grid-column: 2; grid-row: 1; }
.lm-cv-hint { grid-column: 1 / -1; display: none; margin-top: 10px; color: var(--ink2); }
/* все спикеры строками (2.50.0): второй вид раздела, его включает переключатель у заголовка (тот же, что у программ
   обучения; виден со скриптами и когда спикеров больше одного). В строке маленький портрет, имя HSE Slab, должность
   и метки сессий: время и зал, у модератора метка кремовая и со словом. Строка это ссылка, она ставит человека
   на обложку. На экране уже 701 px раздел открывается этим списком: он в несколько раз короче карточек */
.lm-sl { list-style: none; border-top: 2px solid var(--navy); }
.lm-sl li { border-bottom: 1px solid #b9c2d6; }
.lm-sl a { display: grid; grid-template-columns: 56px minmax(0, 1fr); align-items: center; gap: 4px 16px; min-height: 86px; padding: 10px 0; color: var(--navy); text-decoration: none;
  transition: background-color .2s ease-out; }
.lm-sl .lm-th { grid-row: 1 / span 3; align-self: start; width: 56px; height: 70px; }
.lm-sl-n { font: 400 21px/1.2 var(--slab); overflow-wrap: anywhere; }
.lm-sl-j { font-size: 16px; line-height: 1.4; color: var(--ink2); overflow-wrap: anywhere; }
.lm-sl-s { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.lm-sl-s:empty, .lm-sl-j:empty { display: none; }
.lm-sl-c { padding: 1px 9px 2px; background: var(--navy); color: #fff; font: 400 17px/1.4 var(--slab); }
.lm-sl-c.is-mod { background: var(--cream); color: var(--navy); }
.lm-sl a:focus-visible { outline: 2px solid var(--navy); outline-offset: -2px; }
@media (hover: hover) { .lm-sl a:hover { background: var(--soft); } .lm-sl a:hover .lm-sl-n { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .18em; } }
@media (min-width: 701px) {
  .lm-sl a { grid-template-columns: 56px minmax(0, 30%) minmax(0, 1fr) minmax(0, 34%); gap: 6px 24px; padding: 8px 10px 8px 0; }
  .lm-sl .lm-th { grid-row: auto; align-self: center; }
  .lm-sl-n { font-size: clamp(21px, 1.8vw, 26px); }
  .lm-sl-s { justify-content: flex-end; margin-top: 0; }
  .lm-sl-s:empty, .lm-sl-j:empty { display: block; }
}
.lm-cv.is-all .lm-cv-hint { display: none; }
@media (max-width: 560px) {   /* заголовку и переключателю в одной строке тесно: переключатель встает под заголовок, как у программ обучения */
  .lm-cv-head { grid-template-columns: minmax(0, 1fr); }
  .lm-cv-head .lm-view { grid-column: 1; grid-row: 2; justify-self: start; margin-top: 12px; }
}
.lm-cv-mag { border-top: 2px solid var(--navy); }
.lm-cv-c { display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: 0 16px; padding: 20px 0 22px; border-bottom: 1px solid var(--line); }
/* кант орнамента (2.48.0): портрет лежит на листе орнамента ВШЮА, сдвинутом влево и вниз, узор виден двумя
   полосами по левому и нижнему краю. Лист это псевдоэлемент обложки в той же ячейке сетки, что портрет, поэтому
   у портрета, текста и сессий место в сетке задано явно */
.lm-cv-c::before { content: ""; grid-column: 1; grid-row: 1; align-self: start; aspect-ratio: 4 / 5; transform: translate(-7px, 7px);
  background: var(--navy) url("/img/lm/ornament.svg") 35% 60% / 150px auto; pointer-events: none; }
.lm-cv-c > .lm-cv-pic { grid-column: 1; grid-row: 1; position: relative; z-index: 1; }
.lm-cv-c > .lm-cv-txt { grid-column: 2; grid-row: 1; }
.lm-cv-pic { display: block; align-self: start; aspect-ratio: 4 / 5; overflow: hidden; background: var(--soft2); }
.lm-cv-pic img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 22%; }
.lm-cv-pic.is-mono { display: grid; place-items: center; background: #fff; border: 2px solid var(--navy); }
.lm-cv-pic.is-mono b { font: 900 60px/1 var(--sans); letter-spacing: -.03em; color: var(--navy); background-size: 76px auto; }
.lm-cv-txt { min-width: 0; }
.lm-cv-nm { font: 400 28px/1.15 var(--slab); letter-spacing: -.01em; overflow-wrap: anywhere; }
.lm-cv-nm br { display: none; }
.lm-cv-nm:focus { outline: none; }
.lm-cv-job { margin-top: 8px; font-size: 16px; line-height: 1.4; color: var(--ink2); overflow-wrap: anywhere; }
.lm-cv-bio, .lm-cv-idx { display: none; }
/* сессия спикера (2.47.0): темно-синяя плашка сведений, как день и место на первом экране (время, зал с форматом,
   роль; первая строка ячейки HSE Slab, роль модератора на кремовом, как его плашка в программе), под ней тема сессии
   HSE Slab на светлом поле и знак «Сессия в программе» с теми же двумя линиями, что у кнопки «Спикеры». Весь блок
   одна ссылка. Раньше это была подчеркнутая строка рубленым шрифтом, и сведения с темой терялись. В списке блок идет
   во всю ширину под портретом и именем; роль встает в строку плашки, когда плашке хватает ширины */
.lm-cv-ses { grid-column: 1 / -1; grid-row: 2; display: grid; gap: 12px; min-width: 0; margin-top: 18px; list-style: none; }
.lm-cv-s { display: block; color: var(--navy); text-decoration: none; }
.lm-cv-f { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 1px; background: #526893; color: #fff; }   /* фон виден только в зазоре: это линия между ячейками */
.lm-cv-f > span { display: flex; flex-direction: column; justify-content: center; min-width: 0; padding: 10px 16px 12px; background: var(--navy); overflow-wrap: anywhere; }
.lm-cv-f b { font: 400 clamp(22px, 1.9vw, 27px)/1.2 var(--slab); }
.lm-cv-f i { font-style: normal; font-size: 16px; line-height: 1.4; color: var(--on-navy); }
.lm-cv-f .lm-cv-f-r { grid-column: 1 / -1; }
.lm-cv-f .lm-cv-f-r.is-mod { background: var(--cream); color: var(--navy); }
.lm-cv-f ::selection { background: var(--orange2); color: var(--navy); }
.lm-cv-th { display: block; padding: 16px 16px 18px; background: var(--soft2); }
.lm-cv-tt { display: block; max-width: 25em; font: 400 clamp(21px, 1.8vw, 26px)/1.3 var(--slab); overflow-wrap: break-word; text-wrap: pretty; }
.lm-cv-go { display: inline-flex; align-items: center; gap: 14px; min-height: 44px; margin-top: 16px; padding: 0 14px 0 16px; border: 1.5px solid currentColor;
  font: 600 16px/1.2 var(--sans); transition: background-color .25s var(--ease), color .25s var(--ease), border-color .25s var(--ease); }
.lm-cv-go i { position: relative; flex: none; width: 14px; height: 14px; }
.lm-cv-go i::before, .lm-cv-go i::after { content: ""; position: absolute; left: 0; top: 6px; width: 14px; height: 2px; background: currentColor; }
.lm-cv-go i::after { transform: rotate(90deg); }
@media (hover: hover) { .lm-cv-s:hover .lm-cv-go { background: var(--navy); border-color: var(--navy); color: #fff; } }
.lm-cv-s:active .lm-cv-go { transform: translateY(1px); }
@media (min-width: 521px) and (max-width: 700px), (min-width: 1001px) {
  .lm-cv-f { grid-template-columns: auto minmax(0, 1fr) auto; }
  .lm-cv-f > span { padding: 12px 22px 14px; }
  .lm-cv-f .lm-cv-f-r { grid-column: auto; }
  .lm-cv-th { padding: 20px 22px 22px; }
  .lm-cv-go { margin-top: 18px; }
}
@media (min-width: 701px) {
  .lm-cv-ses { grid-column: 2; max-width: 720px; }   /* без скриптов на широком экране: под именем, а не во всю ширину страницы */
  html.lm-js .lm-cv-hint { display: block; }
  html.lm-js .lm-cv-mag { padding-top: clamp(20px, 2.2vw, 32px); }
  /* вторая строка сетки это сессии спикера: при коротком тексте они встают по нижнему краю портрета */
  html.lm-js .lm-cv-c { display: none; grid-template-columns: minmax(0, 39fr) minmax(0, 61fr); grid-template-rows: auto 1fr; gap: 0 clamp(28px, 4.2vw, 60px); align-items: start;
    padding: 0 0 20px; border: 0; }   /* высоту обложки задает портрет 4:5: по его нижнему краю встают сессии; снизу место под кант */
  html.lm-js .lm-cv-c.is-on { display: grid; }
  html.lm-js .lm-cv-c::before { grid-row: 1 / span 2; transform: translate(-20px, 20px); background-size: 300px auto; }
  html.lm-js .lm-cv-c > .lm-cv-pic { grid-row: 1 / span 2; }
  html.lm-js .lm-cv-pic.is-mono b { padding: 0 .04em; font-size: clamp(120px, 17.4vw, 250px); background-size: clamp(130px, 18vw, 260px) auto; }
  html.lm-js .lm-cv-nm { margin-top: -.1em; font-size: clamp(44px, 7.1vw, 96px); line-height: 1.02; letter-spacing: -.02em; -webkit-hyphens: auto; hyphens: auto; }
  html.lm-js .lm-cv-nm br { display: inline; }
  html.lm-js .lm-cv-nm.is-lg { font-size: clamp(34px, 4.45vw, 64px); line-height: 1.08; letter-spacing: -.01em; }
  html.lm-js .lm-cv-job { position: relative; margin-top: clamp(18px, 2.2vw, 32px); padding-top: clamp(14px, 1.5vw, 22px); font-size: clamp(18px, 1.67vw, 24px); line-height: 1.35;
    color: inherit; }
  html.lm-js .lm-cv-job::before { content: ""; position: absolute; left: 0; top: 0; width: 100%; height: 2px; background: var(--orange); transform-origin: 0 50%; }
  html.lm-js .lm-cv-bio { display: block; margin-top: 8px; max-width: 34em; color: var(--ink2); }
  /* справка строками (2.48.0): первая строка вводкой HSE Slab, остальные пунктами с квадратной меткой */
  html.lm-js .lm-cv-bio.is-pts { max-width: 36em; margin-top: 16px; }
  .lm-cv-lead { color: var(--navy); font: 400 clamp(20px, 1.7vw, 24px)/1.35 var(--slab); text-wrap: pretty; }
  .lm-cv-bio ul { margin-top: 10px; list-style: none; }
  .lm-cv-bio li { position: relative; padding: 7px 0 7px 26px; line-height: 1.45; }
  .lm-cv-bio li::before { content: ""; position: absolute; left: 0; top: .95em; width: 9px; height: 9px; background: var(--navy); }
  html.lm-js .lm-cv-ses { align-self: end; max-width: none; margin-top: clamp(20px, 2.5vw, 36px); gap: 14px; }
  /* имена под обложкой: настоящие radio, стрелки на клавиатуре листают обложки */
  /* в строке не больше --cols имен (сервер считает так, чтобы последняя строка не оставалась с одним именем) и не уже 180 px */
  html.lm-js .lm-cv-idx { display: grid; grid-template-columns: repeat(auto-fill, minmax(max(180px, calc(100% / var(--cols, 5) - 24px)), 1fr)); gap: 0 clamp(12px, 1.7vw, 24px); min-width: 0;
    margin-top: clamp(28px, 3.2vw, 46px); padding: 0; border: 0; }
  .lm-cv-idx label { display: block; border-top: 1px solid #b9c2d6; cursor: pointer; }
  .lm-cv-idx input { position: absolute; opacity: 0; width: 1px; height: 1px; }
  .lm-cv-idx span { position: relative; display: flex; align-items: center; gap: 12px; min-height: 76px; padding: 8px 10px 8px 8px; line-height: 1.25; overflow-wrap: anywhere;
    -webkit-hyphens: auto; hyphens: auto; transition: background-color .2s ease-out; }
  .lm-cv-idx span::before { content: ""; position: absolute; left: 0; right: 0; top: -2px; height: 3px; background: var(--orange); transform: scaleX(0); transform-origin: 0 50%;
    transition: transform .35s var(--ease); }
  .lm-cv-idx label:hover span { background: var(--soft); }
  .lm-cv-idx input:checked + span { background: var(--cream); font-weight: 600; }
  .lm-cv-idx input:checked + span::before { transform: scaleX(1); }
  .lm-cv-idx input:focus-visible + span { outline: 2px solid var(--navy); outline-offset: -3px; }
  /* движение: пока раздел не показался в окне, обложка закрыта; затем и при каждой смене спикера она открывается */
  html.lm-js .lm-cv.lm-wait .lm-cv-pic { clip-path: inset(100% 0 0 0); }
  html.lm-js .lm-cv.lm-wait :is(.lm-cv-txt, .lm-cv-ses, .lm-cv-idx) { opacity: 0; }
  html.lm-js .lm-cv.lm-wait .lm-cv-c::before { opacity: 0; }
  html.lm-js .lm-cv:not(.lm-wait) .lm-cv-c.is-on::before { animation: lm-ink .6s ease-out .55s both; }   /* кант проявляется, когда портрет открылся */
  html.lm-js .lm-cv.is-in .lm-cv-idx { animation: lm-ink .6s ease-out .5s both; }
  html.lm-js .lm-cv:not(.lm-wait) .lm-cv-c.is-on .lm-cv-pic { animation: lm-cv-rise .8s var(--ease) both; }
  html.lm-js .lm-cv:not(.lm-wait) .lm-cv-c.is-on .lm-cv-pic img { animation: lm-cv-zoom 14s ease-out both; }
  html.lm-js .lm-cv:not(.lm-wait) .lm-cv-c.is-on .lm-cv-nm { animation: lm-ink .6s ease-out .25s both; }
  html.lm-js .lm-cv:not(.lm-wait) .lm-cv-c.is-on .lm-cv-job { animation: lm-ink .6s ease-out .45s both; }
  html.lm-js .lm-cv:not(.lm-wait) .lm-cv-c.is-on .lm-cv-job::before { animation: lm-grow-x .9s var(--ease) .3s both; }
  html.lm-js .lm-cv:not(.lm-wait) .lm-cv-c.is-on .lm-cv-bio { animation: lm-ink .6s ease-out .55s both; }
  /* плашка сессии заполняется слева направо, как блоки программы по ходу дня; затем проявляется тема */
  html.lm-js .lm-cv:not(.lm-wait) .lm-cv-c.is-on .lm-cv-f { animation: lm-cv-fill .7s var(--ease) .6s both; }
  html.lm-js .lm-cv:not(.lm-wait) .lm-cv-c.is-on .lm-cv-th { animation: lm-ink .6s ease-out .9s both; }
}
@keyframes lm-cv-rise { from { clip-path: inset(100% 0 0 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes lm-cv-zoom { from { transform: scale(1); } to { transform: scale(1.05); } }
@keyframes lm-cv-fill { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }

/* место (2.46.0): фото зала полосой от края до края окна, на нижний край фото заходит кремовый лист адреса. На листе
   место HSE Slab, улица крупно, уточнение к адресу, ссылка на карту, день форума и памятка о входе. Слева под фото
   сведения о зале, дорога от метро, ссылка на схему и подпись к фото. Плашки на фото (radio) меняют зал: фото
   проявляется, сведения меняются. Движение, когда блок показался в окне: фото открывается от середины к краям,
   на него ложится лист, проявляется остальное; затем фото очень медленно приближается */
.lm-pl h2 { margin-bottom: clamp(20px, 2.4vw, 32px); }
.lm-pl-pano { position: relative; height: clamp(240px, 29vw, 430px); overflow: hidden; background: var(--soft2); }
.lm-pl-p { position: absolute; left: 0; top: 0; width: 100%; height: 100%; overflow: hidden; opacity: 0; transition: opacity .8s ease-out; }
.lm-pl-p.is-on { opacity: 1; }
.lm-pl-p img { width: 100%; max-width: none; height: 100%; object-fit: cover; object-position: 38% 58%; }
.lm-pl-p figcaption { display: none; }
.lm-pl-2 { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 0 clamp(24px, 3.4vw, 48px); align-items: start; }
.lm-pl-sheet { grid-area: 1 / 2; position: relative; margin-top: calc(-1 * clamp(110px, 12.5vw, 180px)); padding: clamp(24px, 2.8vw, 40px) clamp(22px, 2.8vw, 40px) clamp(22px, 2.4vw, 34px);
  background: var(--cream); }
.lm-pl.is-nopic .lm-pl-sheet { margin-top: 0; }
.lm-pl-v { font: 400 clamp(22px, 2vw, 28px)/1.3 var(--slab); }
.lm-pl-map { display: block; margin-top: 8px; text-decoration: none; }
.lm-pl-ad { display: block; font-weight: 600; font-size: clamp(32px, 3.6vw, 52px); line-height: 1.16; letter-spacing: -.015em; text-wrap: balance; }
.lm-pl-ad2 { display: block; margin-top: 8px; font-weight: 600; font-size: clamp(20px, 1.7vw, 24px); line-height: 1.3; }
.lm-pl-go { display: inline-flex; align-items: center; min-height: 48px; margin-top: 4px; font-weight: 600; font-size: clamp(18px, 1.5vw, 20px); text-decoration: underline;
  text-decoration-thickness: 2px; text-underline-offset: .22em; }
a.lm-pl-map:hover .lm-pl-go { background: #fff; box-shadow: -8px 0 0 #fff, 8px 0 0 #fff; }
.lm-pl-d { margin-top: 12px; padding-top: 14px; border-top: 1.5px solid var(--navy); font-weight: 600; }
.lm-pl-e { margin-top: 8px; line-height: 1.45; }
.lm-pl-side { grid-area: 1 / 1; position: relative; min-width: 0; }
.lm-pl-tabs { display: flex; margin-top: -52px; }
html:not(.lm-js) .lm-pl-tabs { display: none; }
.lm-pl-tabs input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.lm-pl-tabs span { display: inline-flex; align-items: center; min-height: 52px; padding: 0 22px; background: #fff; font-weight: 600; cursor: pointer;
  transition: background-color .2s ease-out; }
.lm-pl-tabs label:hover span { background: var(--cream); }
.lm-pl-tabs input:checked + span { background: var(--orange2); }
.lm-pl-tabs input:focus-visible + span { outline: 2px solid var(--navy); outline-offset: -5px; }
.lm-pl-facts { display: grid; margin-top: clamp(18px, 2vw, 28px); }
.lm-pl-f { line-height: 1.45; }
.lm-pl-f + .lm-pl-f { margin-top: 18px; }
.lm-pl-f b { display: block; margin-bottom: 4px; font: 400 clamp(24px, 2.2vw, 32px)/1.2 var(--slab); }
.lm-pl-f span { display: block; margin-top: 4px; color: var(--ink2); }
.lm-pl-routes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px clamp(20px, 2.6vw, 36px); list-style: none; margin-top: clamp(18px, 2vw, 28px);
  padding-top: 16px; border-top: 2px solid var(--navy); }
.lm-pl-routes li { line-height: 1.45; }
.lm-pl-routes b { display: block; font-weight: 600; }
.lm-pl-routes span { color: var(--ink2); }
.lm-pl-credit { display: flex; flex-wrap: wrap; gap: 0 28px; margin-top: 10px; font-size: 16px; line-height: 1.3; color: var(--ink2); }
.lm-pl-credit a { display: inline-flex; align-items: center; min-height: 44px; }
.lm-pl.lm-wait .lm-pl-pano { clip-path: inset(0 50% 0 50%); }
.lm-pl.is-in .lm-pl-pano { animation: lm-curtain 1.3s cubic-bezier(.3, .1, .2, 1) .1s both; }
.lm-pl.is-in .lm-pl-p.is-on img { animation: lm-pl-zoom 30s ease-out 1.4s both; }
.lm-pl.lm-wait .lm-pl-sheet { clip-path: inset(0 0 100% 0); }
.lm-pl.is-in .lm-pl-sheet { animation: lm-lay .8s var(--ease) .8s both; }
.lm-pl.lm-wait :is(.lm-pl-tabs, .lm-pl-facts, .lm-pl-routes, .lm-pl-credit) { opacity: 0; }
.lm-pl.is-in :is(.lm-pl-tabs, .lm-pl-facts, .lm-pl-routes, .lm-pl-credit) { animation: lm-ink .6s ease-out 1.1s both; }
.lm-pl.is-nopic.is-in .lm-pl-sheet { animation-delay: .1s; }
.lm-pl.is-nopic.is-in :is(.lm-pl-facts, .lm-pl-routes, .lm-pl-credit) { animation-delay: .4s; }
@keyframes lm-curtain { from { clip-path: inset(0 50% 0 50%); } to { clip-path: inset(0 0 0 0); } }
@keyframes lm-lay { from { clip-path: inset(0 0 100% 0); } to { clip-path: inset(0 0 0 0); } }
@keyframes lm-pl-zoom { to { transform: scale(1.06); } }
@media (min-width: 861px) {
  /* залы с плашками: сведения стоят в одном месте и меняются вместе с фото */
  html.lm-js .lm-pl.is-tabs .lm-pl-f[data-hall] { grid-area: 1 / 1; margin-top: 0; visibility: hidden; opacity: 0; transition: opacity .5s ease-out, visibility 0s .5s; }
  html.lm-js .lm-pl.is-tabs .lm-pl-f[data-hall].is-on { visibility: visible; opacity: 1; transition: opacity .5s ease-out; }
  html.lm-js .lm-pl.is-tabs .lm-pl-f.is-all { margin-top: 18px; }
}
@media (max-width: 860px) {
  .lm-pl-2 { display: block; }
  .lm-pl-pano { display: grid; gap: 4px; height: auto; background: none; }
  .lm-pl-p { position: relative; height: auto; aspect-ratio: 16 / 9; opacity: 1; }
  .lm-pl-p figcaption { display: block; position: absolute; left: 0; top: 0; padding: 6px 12px 8px; background: #fff; font-weight: 600; font-size: 16px; line-height: 1.3; }
  .lm-pl-tabs { display: none; }
  .lm-pl-sheet { margin: -20px 0 0 clamp(16px, 6vw, 48px); }
  .lm-pl.is-nopic .lm-pl-sheet { margin: 0; }
  .lm-pl-facts { display: block; margin-top: 26px; }
}
@media (max-width: 520px), (min-width: 861px) and (max-width: 1100px) {
  .lm-pl-routes { grid-template-columns: minmax(0, 1fr); }   /* узкая колонка: пути друг под другом */
}
/* приглашение партнерам, пока партнеров нет */
.lm-call > :not(h2) { max-width: 44em; }
#partners p + p { margin-top: 16px; }

/* партнеры (2.54.0): все группы стоят «газетной шапкой». Двойная линейка сверху и снизу, как у названия газеты,
   внутри строки партнеров: логотип в своих цветах, справа от тонкой линии название или строка о партнере HSE Slab,
   у правого края адрес сайта. Группы различает подпись: язычок HSE Slab, который стоит прямо на верхней линейке,
   у фирм темно-синий, у изданий кремовый. Раньше подпись была серой строкой 18 px, фирмы стояли в круглых окнах
   с кольцом орнамента (2.45.0), а строками шли только издания (2.48.0) */
.lm-rg-tier { width: max-content; max-width: 100%; margin-top: clamp(36px, 4.2vw, 60px); padding: 7px 18px 8px; background: var(--navy); color: #fff;
  font: 400 clamp(20px, 1.7vw, 24px)/1.25 var(--slab); }
.lm-rg-tier.is-media { background: var(--cream); color: var(--navy); }
/* оргкомитет форума (2.61.0): подписи групп язычками, как у партнеров, люди строками в две-три колонки: портрет 4:5,
   имя HSE Slab, должность. Строка председателя крупнее */
.lm-oc h2 + .lm-rg-tier { margin-top: 4px; }
.lm-oc .lm-rg-tier + .lm-oc-g { margin-top: 0; }
.lm-oc-g { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 360px), 1fr)); column-gap: 40px;
  padding-top: 4px; border-top: 4px solid var(--navy); list-style: none; }
.lm-oc-g li { display: flex; align-items: center; gap: 18px; min-width: 0; padding: 18px 0; border-bottom: 1px solid var(--line); }
.lm-oc-g li > span { min-width: 0; }
.lm-oc-g .lm-th { width: 80px; height: 100px; }
.lm-oc-g b { display: block; color: var(--navy); font: 400 21px/1.25 var(--slab); overflow-wrap: break-word; }
.lm-oc-g small { display: block; margin-top: 4px; font-size: 16px; line-height: 1.4; color: var(--ink2); }
.lm-oc-g.is-lead { grid-template-columns: minmax(0, 1fr); }
.lm-oc-g.is-lead .lm-th { width: 128px; height: 160px; }
.lm-oc-g.is-lead b { font-size: clamp(24px, 2.2vw, 30px); }
.lm-oc-g.is-lead small { max-width: 40em; font-size: 18px; }
.lm-rg h2 + .lm-rg-tier { margin-top: 4px; }
.lm-rg-tier + .lm-mp { margin-top: 0; }
.lm-mp { margin-top: 18px; padding: 4px 0; border-top: 4px solid var(--navy); border-bottom: 4px solid var(--navy); list-style: none; }
.lm-mp li { display: grid; grid-template-columns: 330px minmax(0, 1fr) auto; align-items: center; gap: 8px 44px; padding: 22px 0; border-top: 1px solid var(--navy); }
.lm-mp li:last-child { border-bottom: 1px solid var(--navy); }
/* логотипы одного веса (2.58.0). Файлы у партнеров разные: у одних широкие пустые поля, другие залиты цветом до края,
   поэтому в одинаковом окне одни знаки выходили вдвое крупнее других и стояли кто где. Скрипт (lm.js, logos) находит
   на картинке сам знак и пишет в переменные окна размер картинки и ее поля; здесь поля убираются отрицательными
   отступами и обрезкой, так что в строке стоит только знак. Знаки занимают примерно одну площадь и стоят по середине
   своей колонки, на одной оси. Колонка шире прежней на 80 px, поэтому тонкая линия и текст стоят правее, а у знака
   есть поле с обеих сторон. Без скриптов логотип стоит целиком в окне 240 на 112 px. На узком экране знак меньше
   (--k) и прижат влево, как текст под ним */
.lm-mp-l { --k: 1; display: flex; align-items: center; justify-content: center; height: 112px; }
.lm-mp-l img { display: block; width: 240px; height: 100%; object-fit: contain; }
.lm-mp-l.is-fit img { flex: none; max-width: none; width: calc(var(--iw) * var(--k) * 1px); height: calc(var(--ih) * var(--k) * 1px); object-fit: fill;
  margin: calc(var(--mt) * var(--k) * -1px) calc(var(--mr) * var(--k) * -1px) calc(var(--mb) * var(--k) * -1px) calc(var(--ml) * var(--k) * -1px);
  clip-path: inset(calc(var(--mt) * var(--k) * 1px) calc(var(--mr) * var(--k) * 1px) calc(var(--mb) * var(--k) * 1px) calc(var(--ml) * var(--k) * 1px)); }
.lm-mp-l.is-name { display: flex; align-items: center; height: auto; min-height: 72px; text-align: center; font: 400 clamp(22px, 1.9vw, 27px)/1.2 var(--slab); overflow-wrap: anywhere; }
.lm-mp-t { align-self: stretch; display: flex; flex-direction: column; justify-content: center; min-width: 0; padding-left: 44px; border-left: 1px solid #b9c2d6; }   /* линия идет на всю высоту строки и при коротком тексте */
.lm-mp-t b { display: block; max-width: 22em; font: 400 clamp(21px, 1.8vw, 26px)/1.3 var(--slab); overflow-wrap: break-word; }
.lm-mp-t span { display: block; max-width: 34em; color: var(--ink2); }
.lm-mp-t b + span { margin-top: 8px; }
.lm-mp-t a { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; transition: color .3s var(--ease); }
.lm-mp-t a:hover { color: var(--blue); text-decoration-thickness: 2px; }
.lm-mp-u { display: inline-flex; align-items: center; min-height: 44px; overflow-wrap: anywhere; transition: color .3s var(--ease); }
.lm-mp-u:hover { color: var(--blue); text-decoration-thickness: 2px; }
@media (max-width: 900px) {
  .lm-mp li { grid-template-columns: minmax(0, 1fr); padding: 18px 0; }
  .lm-mp-l { --k: .86; justify-content: flex-start; width: 220px; height: 96px; }
  .lm-mp-l img { width: 100%; object-position: 0 50%; }
  .lm-mp-l.is-name { width: auto; text-align: left; }
  .lm-mp-t { padding-left: 0; border-left: 0; }
  .lm-mp-u { justify-self: start; }
}
.lm-rg.lm-wait :is(.lm-rg-tier, .lm-mp) { opacity: 0; }
.lm-rg.is-in :is(.lm-rg-tier, .lm-mp) { animation: lm-ink .6s ease-out .1s both; }
.lm-rg-join { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: baseline; gap: 6px clamp(24px, 3.4vw, 48px); margin-top: clamp(36px, 4.2vw, 60px); padding-top: 18px; border-top: 1px solid #b9c2d6; }
.lm-rg-join b { font-weight: 600; }
.lm-rg-join p { max-width: 36em; color: var(--ink2); }
.lm-rg-join a { display: inline-flex; align-items: center; min-height: 44px; font-weight: 600; transition: color .3s var(--ease); }
.lm-rg-join a:hover { color: var(--blue); }
@media (max-width: 760px) {
  .lm-aw-bill { grid-template-columns: minmax(0, 1fr); }
  .lm-aw-word { width: 78%; padding-right: 0; margin-bottom: 8px; font-size: clamp(40px, calc(70vw / (var(--n, 4) * .66)), 160px); }
  .lm-aw-noms li { padding-left: 18px; }
}
@media (max-width: 700px) {
  .lm-rg-join { grid-template-columns: minmax(0, 1fr); }
}

/* программы обучения (2.42.0): два вида одного списка, переключатель в заголовке раздела.
   «Карточки»: лицо с обложкой (или темно-синее поле с названием HSE Slab), началом и стоимостью; при наведении и фокусе
   карточка переворачивается, на обороте сроки, длительность, стоимость и кнопка. Уже 1001 px и без мыши переворота нет:
   оборот стоит под лицом. «Подбор»: серая полоса с чипами и строки программ */
/* вступление (2.50.0): белый лист с текстом HSE Slab между двумя лентами орнамента в цвете, условие стоит рядом
   темно-синей ячейкой в тех же лентах. Раньше вступление шло обычной строкой и терялось рядом с плашкой.
   Ленты это две отдельные полосы с одним и тем же срезом узора, нижняя отражена: так рисунок лент не зависит
   от высоты блока */
.lm-lede.lm-cs-lead { position: relative; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: 0; align-items: stretch; margin-bottom: 32px; padding: 12px 0; }
.lm-lede.lm-cs-lead::before, .lm-lede.lm-cs-lead::after { content: ""; position: absolute; left: 0; right: 0; height: 12px;
  background: var(--navy) url("/img/lm/ornament.svg") 0 -12px / 118px auto; }   /* срез по низу колец: ряд дуг */
.lm-lede.lm-cs-lead::before { top: 0; }
.lm-lede.lm-cs-lead::after { bottom: 0; transform: scaleY(-1); }
.lm-lede.lm-cs-lead.is-1 { grid-template-columns: minmax(0, 1fr); }
.lm-cs-lead .lm-lede-t { max-width: none; padding: clamp(20px, 2.4vw, 34px) clamp(20px, 2.6vw, 40px); background: #fff; font-size: clamp(22px, 2.1vw, 30px); line-height: 1.32; text-wrap: pretty; }
.lm-cs-lead .lm-lede-f { display: flex; align-items: center; padding: 18px clamp(20px, 2.2vw, 30px); }
@media (max-width: 860px) { .lm-lede.lm-cs-lead { grid-template-columns: minmax(0, 1fr); } }
.lm-view { display: inline-flex; }
.lm-view-b { min-height: 44px; padding: 0 18px; border: 1.5px solid var(--navy); background: #fff; color: var(--navy); font: 600 16px/1 var(--sans);
  transition: background-color .2s ease-out, color .2s ease-out; }
.lm-view-b + .lm-view-b { margin-left: -1.5px; }
.lm-view-b:hover { background: var(--cream); }
.lm-view-b[aria-pressed="true"] { background: var(--navy); color: #fff; }
.lm-cs { list-style: none; }
.lm-fcs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.lm-fc { --flip: 180deg; height: 470px; perspective: 1600px; }
.lm-fc-turn { position: relative; display: block; height: 100%; transform-style: preserve-3d; transition: transform .7s cubic-bezier(.3, .7, .2, 1); }
.lm-fc:hover .lm-fc-turn, .lm-fc:focus-within .lm-fc-turn { transform: rotateY(var(--flip)); }
.lm-cards.is-in .lm-fc:first-child .lm-fc-turn { animation: lm-peek 4.4s cubic-bezier(.45, 0, .2, 1) .7s; }   /* первая карточка один раз показывает оборот */
.lm-fc-face { position: absolute; left: 0; top: 0; width: 100%; height: 100%; display: flex; flex-direction: column; overflow: hidden;
  backface-visibility: hidden; -webkit-backface-visibility: hidden; }
.lm-fc-front { background: var(--soft); }
.lm-fc-front img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; }
.lm-fc-tx { flex: 1; display: flex; flex-direction: column; padding: 18px 22px 0; }
.lm-c-k { font-size: 16px; color: var(--ink2); }
.lm-c-n { margin-top: 6px; font: 600 20px/1.3 var(--sans); }
.lm-fc-ft { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px 16px; padding: 12px 22px 18px; }
.lm-c-p { font-weight: 600; white-space: nowrap; }
.lm-fc-front.is-text { background: var(--navy); color: #fff; }
.lm-fc-front.is-text .lm-fc-tx { padding-top: 24px; }
.lm-fc-front.is-text .lm-c-k { color: var(--on-navy); }
.lm-fc-front.is-text .lm-c-n { margin-top: 18px; font: 400 clamp(22px, 2.1vw, 30px)/1.3 var(--slab); }
.lm-fc-back { transform: rotateY(var(--flip)); padding: 24px 24px 22px; background: #fff; border: 2px solid var(--navy); }
.lm-fc-back .lm-c-n { font-size: 18px; line-height: 1.3; }
.lm-fc-facts { display: grid; gap: 6px; margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--line); font-weight: 600; }
.lm-fc-facts i { font-style: normal; font-weight: 400; color: var(--ink2); }
.lm-fc-back .lm-btn { align-self: flex-start; min-height: 52px; margin-top: auto; }
@keyframes lm-peek { 0%, 8% { transform: rotateY(0deg); } 24%, 76% { transform: rotateY(180deg); } 92%, 100% { transform: rotateY(0deg); } }
html.lm-js .lm-cs:not(.is-all) .is-more { display: none; }
.lm-cs-more { margin-top: 24px; }
.lm-cards:not([hidden]), .lm-pick:not([hidden]) { animation: lm-ink .4s ease-out both; }
.lm-pick-f { display: grid; gap: 14px; margin-bottom: 28px; padding: 24px 28px; background: var(--soft); }
.lm-pick-g { display: grid; grid-template-columns: 170px minmax(0, 1fr); align-items: center; gap: 10px 16px; }
.lm-pick-l { font: 400 20px/1.25 var(--slab); }
.lm-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.lm-chip { position: relative; display: block; cursor: pointer; }
.lm-chip input { position: absolute; left: 0; top: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; }
.lm-chip span { display: flex; align-items: center; min-height: 48px; padding: 6px 18px; border: 1.5px solid var(--navy); background: #fff; font-weight: 600; line-height: 1.25;
  transition: background-color .2s ease-out, color .2s ease-out; }
.lm-chip:hover span { background: var(--cream); }
.lm-chip input:checked + span { background: var(--navy); color: #fff; }
.lm-chip input:focus-visible + span { outline: 2px solid var(--navy); outline-offset: 3px; }
.lm-pick-n b { font-weight: 600; }
.lm-pick-rows { list-style: none; border-top: 2px solid var(--navy); }
.lm-pick-rows li { border-bottom: 1px solid var(--line); }
.lm-pr { display: grid; grid-template-columns: 170px minmax(0, 1fr) 140px; column-gap: 24px; align-items: baseline; padding: 13px 0; text-decoration: none; }
.lm-pr-d { font: 400 20px/1.3 var(--slab); white-space: nowrap; }
.lm-pr-m b { display: block; font-weight: 600; line-height: 1.3; }
.lm-pr-m span { display: block; margin-top: 4px; font-size: 16px; color: var(--ink2); }
a.lm-pr:hover b { text-decoration: underline; text-underline-offset: .18em; }
.lm-pr-p { font-weight: 600; text-align: right; white-space: nowrap; }
.lm-pick-none { padding: 24px 0; border-top: 2px solid var(--navy); border-bottom: 1px solid var(--line); font: 400 clamp(20px, 1.67vw, 24px)/1.35 var(--slab); }
.lm-pick-more { margin-top: 24px; color: var(--ink2); }
@media (max-width: 1000px), (hover: none) {
  .lm-fcs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .lm-fc { --flip: 0deg; display: flex; height: auto; perspective: none; }
  .lm-fc-turn { flex: 1; display: flex; flex-direction: column; height: auto; transform: none !important; animation: none !important; }
  .lm-fc-face { position: relative; height: auto; }
  .lm-fc-front { flex: 1; }
  .lm-fc-front .lm-fc-tx { padding-bottom: 20px; }
  .lm-fc-ft { display: none; }
  .lm-fc-back { transform: none; padding: 16px 22px 20px; border-top: 0; }
  .lm-fc-back .lm-c-k, .lm-fc-back .lm-c-n { display: none; }
  .lm-fc-facts { margin-top: 0; padding-top: 0; border-top: 0; }
  .lm-fc-back .lm-btn { margin-top: 14px; }
}
@media (max-width: 860px) {
  .lm-pick-f { padding: 16px; }
  .lm-pick-g { grid-template-columns: minmax(0, 1fr); }
  .lm-chip span { min-height: 44px; padding: 6px 14px; }
  .lm-pr { display: block; }
  .lm-pr-d, .lm-pr-p { display: block; }
  .lm-pr-m b { margin-top: 2px; }
  .lm-pr-p { margin-top: 4px; text-align: left; }
}
@media (max-width: 620px) {
  .lm-fcs { grid-template-columns: minmax(0, 1fr); }
}

/* конец страницы (2.44.0): «Остались вопросы?» с почтой организаторов крупной ссылкой; под адресом растет линия */
.lm-qa-t { font-size: clamp(18px, 1.5vw, 22px); color: var(--ink2); }
.lm-qa-m { margin-top: 8px; }
.lm-qa-m a { position: relative; display: inline-block; padding-bottom: .1em; font: 400 clamp(36px, 6.4vw, 92px)/1.1 var(--slab); letter-spacing: -.01em; text-decoration: none; overflow-wrap: anywhere; }
.lm-qa-m a::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: clamp(3px, .35vw, 5px); background: var(--orange); transform-origin: 0 50%; transition: background-color .3s var(--ease); }
.lm-qa-m a:hover::after { background: var(--navy); }
.lm-qa.lm-wait .lm-qa-m a::after { transform: scaleX(0); }
.lm-qa.is-in .lm-qa-m a::after { animation: lm-grow-x 1s var(--ease) .15s both; }
@keyframes lm-grow-x { from { transform: scaleX(0); } }

/* подвал (2.44.0): лента орнамента ВШЮА, линии которой прорисовываются, когда подвал показался в окне; ниже организатор:
   роль подписью и белый логотип (он открывается слева направо), затем название форума и ссылки */
.lm-foot { margin-top: clamp(64px, 8vw, 112px); background: var(--navy); color: var(--on-navy); font-size: 16px; }
.lm-foot-orn { position: relative; height: clamp(96px, 12vw, 172px); overflow: hidden; }
.lm-orn { position: absolute; top: 0; left: 0; display: block; width: 100%; height: 100%; }
.lm-og { transform: scale(1.1); }
.lm-ol { stroke-dasharray: 1; }
.lm-foot.lm-wait .lm-ol { stroke-dashoffset: 1; }
.lm-foot.is-in .lm-ol { animation: lm-draw 2.2s cubic-bezier(.45, 0, .2, 1) .1s both; }
@keyframes lm-draw { from { stroke-dashoffset: 1; } }
.lm-foot .lm-w { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 32px 64px; align-items: end; padding-top: clamp(36px, 4.4vw, 64px); padding-bottom: calc(clamp(40px, 5vw, 72px) + env(safe-area-inset-bottom, 0px)); }
.lm-foot-orgs { list-style: none; display: grid; gap: 28px; }
.lm-foot-cap { display: block; margin-bottom: 14px; font-size: 18px; }
.lm-foot-logo { width: min(100%, 640px); height: auto; }
.lm-foot-name { display: block; font: 400 clamp(22px, 2.2vw, 30px)/1.25 var(--slab); color: #fff; }
.lm-foot.lm-wait :is(.lm-foot-logo, .lm-foot-name) { clip-path: inset(0 100% 0 0); }
.lm-foot.is-in :is(.lm-foot-logo, .lm-foot-name) { animation: lm-wipe 1.1s var(--ease) .9s both; }
.lm-foot.lm-wait .lm-foot-cap { opacity: 0; }
.lm-foot.is-in .lm-foot-cap { animation: lm-ink .6s ease-out .7s both; }
.lm-foot-info { display: grid; gap: 14px; }
.lm-foot-info p:first-child { color: #fff; font: 400 clamp(18px, 1.5vw, 22px)/1.4 var(--slab); }
.lm-foot-links { display: flex; flex-wrap: wrap; gap: 4px 28px; }
.lm-foot-links a { display: inline-flex; align-items: center; min-height: 44px; }
.lm-foot a { color: #fff; }

/* ворон «Наверх» (2.44.0): без плашки и фона. Когда первый экран ушел из окна, ворон прилетает сверху и садится
   на ветку у правого края окна. Силуэт темно-синий со светлой обводкой; над темным полем (lm.js смотрит, что под ним)
   ворон и ветка белеют, обводка темнеет. По нажатию страница возвращается к началу, ворон взлетает. Подпись «Наверх»
   видна при наведении и фокусе */
.lm-up { --halo: #fff; position: fixed; z-index: 15; right: 0; bottom: calc(24px + env(safe-area-inset-bottom, 0px)); width: 96px; height: 88px; padding: 0; color: var(--navy);
  opacity: 0; visibility: hidden; transition: opacity .25s var(--ease), visibility 0s .25s, color .3s var(--ease); }
.lm-up.is-on { opacity: 1; visibility: visible; transition: opacity .25s var(--ease), color .3s var(--ease); }
.lm-up.is-dark { --halo: var(--navy); color: #fff; }
.lm-up .lm-bird { position: absolute; right: 26px; bottom: 11px; height: 62px; width: auto; overflow: visible; }
.lm-up .lm-bird path { stroke: var(--halo); stroke-width: 64; stroke-linejoin: round; paint-order: stroke; transition: stroke .3s var(--ease); }
.lm-up-br { position: absolute; right: 0; bottom: 6px; width: 84px; height: 7px; border: 2px solid var(--halo); border-right: 0; background: currentColor; background-clip: padding-box;
  transition: border-color .3s var(--ease); }
.lm-up-br::before { content: ""; position: absolute; left: 16px; bottom: 100%; width: 3px; height: 9px; background: currentColor; }   /* сучок */
.lm-up.is-on .lm-bird { animation: lm-perch .7s var(--ease) both; }
.lm-up.is-fly .lm-bird { animation: lm-fly .7s cubic-bezier(.5, 0, .9, .4) both; }
@keyframes lm-perch { from { opacity: 0; transform: translateY(-44px); } }
@keyframes lm-fly { to { transform: translateY(-72px); opacity: 0; } }
.lm-up-t { position: absolute; right: 100%; bottom: 22px; margin-right: -6px; padding: 7px 12px; background: var(--navy); color: #fff; font: 600 16px/1.2 var(--sans); white-space: nowrap;
  opacity: 0; transition: opacity .2s var(--ease); pointer-events: none; }
.lm-up.is-dark .lm-up-t { background: #fff; color: var(--navy); }
.lm-up:hover .lm-up-t, .lm-up:focus-visible .lm-up-t { opacity: 1; }
.lm-up:focus-visible { outline-offset: -4px; }
html.lm-open .lm-up { display: none; }

/* опросы ВШЭ (2.38.0): форма в оформлении страницы. Анкета свернута (2.40.0): серая плашка с заголовком, числом
   вопросов и кнопкой, которая называет действие; открытая анкета сворачивается той же кнопкой и кнопкой под формой */
.lm-poll-in > * { max-width: 820px; }   /* форма уже страницы, но стоит по ее левому краю */
.lm-poll-in > p, .lm-poll-in > div > p { max-width: 60ch; }
.lm-fold { background: var(--soft); }
.lm-fold-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px 48px; padding: clamp(24px, 3.4vw, 48px); }
html.lm-js .lm-fold-head { cursor: pointer; }
.lm-fold-head h2 { margin-bottom: 0; }
.lm-fold-note { margin-top: 8px; font-size: 18px; color: var(--ink2); }
.lm-fold.is-done .lm-fold-note { display: none; }
.lm-fold-btn i { flex: none; width: 10px; height: 10px; margin: -6px 2px 0 4px; border: solid currentColor; border-width: 0 2px 2px 0; transform: rotate(45deg); transition: transform .5s var(--ease); }
.lm-fold.is-open .lm-fold-btn i { transform: translateY(6px) rotate(-135deg); }
.lm-fold-body { padding: 0 clamp(24px, 3.4vw, 48px) clamp(24px, 3.4vw, 48px); }
html.lm-js .lm-fold:not(.is-open) .lm-fold-body { display: none; }
html.lm-js .lm-fold.is-open .lm-fold-body { animation: lm-rise .5s var(--ease) both; }
/* регистрация (2.43.0): слева бейдж участника, справа заголовок с кнопкой и анкета. На бейдже форум, день и место,
   а имя, организация и роль появляются по мере заполнения анкеты (lm.js, badge). Пока анкета открыта, бейдж
   остается на виду при прокрутке; под ним полоса: сколько обязательных вопросов заполнено */
.lm-reg { --reg-pad: clamp(24px, 3.4vw, 48px); display: grid; grid-template-columns: minmax(0, 340px) minmax(0, 1fr); gap: 24px clamp(24px, 4.4vw, 64px); align-items: start; padding: var(--reg-pad); }
.lm-reg .lm-fold-head { padding: 0; }
.lm-reg .lm-fold-body { padding: 32px 0 0; }
.lm-reg:not(.is-open) .lm-reg-main { align-self: center; }
.lm-reg-side { position: sticky; top: calc(var(--top-min) + 24px); }
/* бейдж висит на оранжевой ленте: она идет от верхнего края блока и уходит в прорезь бейджа (2.43.1) */
.lm-reg-side::before { content: ""; position: absolute; z-index: 1; left: 50%; top: calc(-1 * var(--reg-pad)); width: 18px; height: calc(var(--reg-pad) + 23px); margin-left: -9px;
  background: var(--orange2); transform-origin: 50% 0; }
.lm-badge { position: relative; display: flex; flex-direction: column; min-height: 380px; padding: 50px 24px 0; background: #fff; border: 2px solid var(--navy); }
.lm-badge::before { content: ""; position: absolute; left: 50%; top: 16px; width: 56px; height: 10px; margin-left: -28px; border: 2px solid var(--navy); border-radius: 5px; }   /* прорезь для ленты, как у настоящего бейджа */
/* шапка бейджа: год цифрами, в которых движется орнамент, как на первом экране, и строка выпуска */
.lm-badge-head { display: block; }
.lm-badge-yr { --tile: 190px; --ox: 0px; --oy: 0px; display: block; width: max-content; color: var(--navy); font: 900 96px/.8 var(--sans); letter-spacing: -.02em; }
@supports ((-webkit-background-clip: text) or (background-clip: text)) {
  .lm-badge-yr { background: var(--navy) url("/img/lm/ornament.svg") var(--ox) var(--oy) / var(--tile) var(--tile); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
    animation: lm-year-drift 30s linear infinite; }
}
.lm-badge-top { display: block; margin-top: 14px; font: 400 18px/1.3 var(--slab); }
.lm-badge-ev { margin-top: 4px; font: 600 20px/1.25 var(--sans); }
.lm-badge-name { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line); font: 600 clamp(28px, 2.5vw, 34px)/1.12 var(--sans); letter-spacing: -.01em; overflow-wrap: anywhere; }
.lm-badge-name.is-empty { color: var(--ink2); }
.lm-badge-name.is-empty::after { content: ""; display: inline-block; width: 2px; height: .82em; margin-left: 5px; vertical-align: -.06em; background: var(--orange); animation: lm-caret 1.1s steps(1) infinite; }   /* курсор: имя появится по мере ввода */
.lm-badge-name.is-new { animation: lm-ink .4s ease-out both; }
.lm-badge-org { margin-top: 8px; font-size: 16px; line-height: 1.35; overflow-wrap: anywhere; }
/* день и место (2.49.0): листок календаря, рядом день недели с часом начала и место; сверху тонкая линия с отступом
   от имени (линия нарисована фоном, чтобы отступ держался и в короткой карточке). Раньше это была одна серая строка */
.lm-badge-when { display: flex; align-items: center; gap: 14px; margin-top: auto; padding: 36px 0 18px;
  background: linear-gradient(var(--line), var(--line)) 0 20px / 100% 1px no-repeat; }
.lm-badge-wt { min-width: 0; }
.lm-badge-wt b { display: block; font: 400 20px/1.25 var(--slab); }
.lm-badge-wt i { display: block; font-style: normal; font-size: 16px; line-height: 1.35; color: var(--ink2); overflow-wrap: anywhere; }
@keyframes lm-caret { 0%, 55% { opacity: 1; } 56%, 100% { opacity: 0; } }
@keyframes lm-grow-y { from { transform: scaleY(0); } }
@keyframes lm-wipe { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
/* бейдж появляется, когда блок показался в окне: сначала спускается лента, затем бейдж встает на место (lm.js) */
.lm-reg.lm-wait .lm-reg-side::before { transform: scaleY(0); }
.lm-reg.lm-wait .lm-badge, .lm-reg.lm-wait .lm-reg-prog { opacity: 0; }
.lm-reg.is-in .lm-reg-side::before { animation: lm-grow-y .5s var(--ease) both; }
.lm-reg.is-in .lm-badge { animation: lm-land .7s var(--ease) .35s both; }
.lm-badge-role.is-new { animation: lm-wipe .5s var(--ease) both; }
.lm-badge-role { margin: 0 -24px; padding: 12px 24px; background: var(--orange2); font-weight: 600; transition: background-color .5s var(--ease), color .5s var(--ease); }
.lm-fold.is-done .lm-badge-role { background: var(--navy); color: #fff; }
.lm-reg-prog { display: grid; gap: 8px; margin-top: 16px; font-size: 16px; color: var(--ink2); }
.lm-reg-bar { display: block; height: 6px; background: var(--line); }
.lm-reg-bar i { display: block; height: 100%; width: 100%; background: var(--navy); transform: scaleX(0); transform-origin: 0 50%; transition: transform .5s var(--ease); }
html:not(.lm-js) .lm-reg-prog, .lm-reg:not(.is-open) .lm-reg-prog { display: none; }
html:not(.lm-js) .lm-fold-btn, html:not(.lm-js) .lm-fold-up, .lm-fold.is-done .lm-fold-btn { display: none; }
.lm-form-acts { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 32px; }
.lm-fold-up { min-height: 44px; font-weight: 600; text-decoration: underline; text-underline-offset: .2em; }
.lm-fold-up:hover { text-decoration-thickness: 2px; }
.lm-poll-note { margin-bottom: 8px; max-width: none !important; }
.lm-form { display: grid; gap: 24px; margin-top: 8px; }
.lm-qblock { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px 20px; align-items: end; }
.lm-qblock > * { grid-column: 1 / -1; }
.lm-qblock > .lm-q:is([data-kind="text"], [data-kind="email"], [data-kind="tel"], [data-kind="date"], [data-kind="select"]) { grid-column: auto; }
.lm-qblock .lm-in { max-width: none; }
.lm-form { counter-reset: lm-blk; }
.lm-blk-h { counter-increment: lm-blk; font: 400 clamp(22px, 2vw, 28px)/1.25 var(--slab); margin-top: 12px; }
.lm-blk-h::before { content: counter(lm-blk) ". "; }
.lm-q { display: grid; gap: 8px; border: 0; min-width: 0; }
.lm-q[hidden] { display: none; }
.lm-q > label, .lm-q > legend { font: 600 18px/1.35 var(--sans); padding: 0; }
.lm-req { color: var(--danger); }
.lm-q-d { font-size: 16px; color: var(--ink2); }
.lm-in { font: 400 18px/1.4 var(--sans); color: var(--ink); caret-color: var(--orange); background: #fff; border: 2px solid var(--gray3); padding: 12px 16px; width: 100%; max-width: 560px; border-radius: 0;
  transition: border-color .3s var(--ease), box-shadow .3s var(--ease); }
textarea.lm-in { max-width: 100%; resize: vertical; }
select.lm-in { appearance: auto; }
.lm-in:hover { border-color: var(--ink2); }
.lm-in:focus { outline: none; border-color: var(--navy); box-shadow: 0 0 0 3px rgba(235, 105, 30, .4); }
.lm-q.is-bad .lm-in { border-color: var(--danger); }
/* варианты ответа плашками: выбранная обведена темно-синим и залита светлым */
.lm-opts { display: flex; flex-wrap: wrap; gap: 8px; }
.lm-opt { display: grid; grid-template-columns: 22px minmax(0, 1fr); gap: 12px; align-items: start; font-size: 18px; line-height: 1.45; cursor: pointer; }
.lm-opts .lm-opt { min-height: 48px; padding: 9px 16px 9px 12px; border: 2px solid var(--gray2); background: #fff; transition: border-color .3s var(--ease), background-color .3s var(--ease); }
.lm-opts .lm-opt:hover { border-color: var(--ink2); }
.lm-opts .lm-opt:has(input:checked) { border-color: var(--navy); background: var(--soft2); }
.lm-opts .lm-opt:has(input:focus-visible) { outline: 2px solid var(--navy); outline-offset: 3px; }
.lm-opt input { width: 20px; height: 20px; margin-top: 3px; accent-color: var(--navy); }
.lm-agree .lm-opt { font-size: 16px; color: var(--ink2); }
.lm-q-err, .lm-form-err { font-size: 16px; color: var(--danger); font-weight: 600; }
.lm-form.is-sending .lm-send { opacity: .7; cursor: progress; }
.lm-form-ok { background: var(--cream); padding: 24px; font-size: 20px; line-height: 1.5; margin-top: 8px; }
.lm-form-ok p + p { margin-top: 12px; }
.lm-form-ok:focus { outline: none; }
.lm-cap { min-height: 100px; }

@media print { .lm-top { position: static; } .lm-menu, .lm-up { display: none; } html.lm-js .lm-fold:not(.is-open) > .lm-fold-body { display: block; } }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .lm *, .lm *::before, .lm *::after { animation: none !important; transition: none !important; }
}
/* меню уже 1120 px: шесть пунктов в строку не помещаются, они уходят под кнопку и открываются листом на весь экран */
@media (max-width: 1120px) {
  .lm-brand { margin-right: auto; }   /* кнопка регистрации и кнопка меню стоят у правого края */
  html:not(.lm-js) .lm-nav { display: none; }
  .lm-menu { display: inline-flex; order: 3; }
  .lm-top .lm-w { gap: 16px; }
  html.lm-open .lm-btn-top { display: none; }   /* в открытом меню кнопка регистрации стоит внизу листа */
  /* лист меню (2.45.0): бумага первого экрана с бледным орнаментом. Линейка разделов здесь стоит вертикально, как
     линия времени в программе: слева линия с квадратными отметками, у пункта название HSE Slab и строка справки.
     Внизу листа регистрация и календарь. Пункты проявляются по одному */
  .lm-top .lm-w > .lm-nav { transform: none; }   /* лист стоит от окна, сдвиг частей шапки к нему не относится */
  .lm-nav { position: fixed; z-index: 19; left: 0; right: 0; top: var(--top-h, 72px); bottom: 0; flex: none; max-width: none; flex-direction: column; margin: 0;
    padding: 12px var(--m) calc(24px + env(safe-area-inset-bottom, 0px)); overflow-y: auto; overscroll-behavior: contain; border-bottom: 0;
    background: #fff url("/img/lm/ornament-pale.svg") 0 0 / 240px 240px; white-space: normal; visibility: hidden; opacity: 0;
    transition: opacity .3s var(--ease), visibility 0s .3s; }
  .lm-open .lm-nav { visibility: visible; opacity: 1; transition: opacity .3s var(--ease); }
  .lm-nav > a { flex: none; display: grid; gap: 2px; padding: 14px 0 16px 30px; opacity: 0; }
  .lm-nav > a b { font-size: clamp(26px, 7.4vw, 34px); line-height: 1.15; }
  .lm-nav > a small { display: block; font: 400 16px/1.4 var(--sans); color: var(--ink2); }
  .lm-nav > a::before { left: 0; top: 27px; bottom: auto; width: 11px; height: 11px; }
  .lm-nav > a::after { left: 5px; right: auto; top: 38px; bottom: -27px; width: 1px; height: auto; background: #b9c2d6; transform: none; }
  .lm-nav > a:nth-last-of-type(1)::after { display: none; }
  .lm-nav > a.is-on::after { background: #b9c2d6; }
  .lm-open .lm-nav > a { opacity: 1; transition: opacity .5s var(--ease); }
  .lm-open .lm-nav > a:nth-of-type(2) { transition-delay: .06s; }
  .lm-open .lm-nav > a:nth-of-type(3) { transition-delay: .12s; }
  .lm-open .lm-nav > a:nth-of-type(4) { transition-delay: .18s; }
  .lm-open .lm-nav > a:nth-of-type(5) { transition-delay: .24s; }
  .lm-open .lm-nav > a:nth-of-type(6) { transition-delay: .3s; }
  .lm-open .lm-nav > a:nth-of-type(n + 7) { transition-delay: .36s; }
  .lm-nav-foot { display: grid; gap: 4px; margin-top: auto; padding-top: 28px; }
  .lm-nav-foot .lm-btn { justify-content: center; }
  .lm-nav-cal { display: inline-flex; align-items: center; justify-self: start; min-height: 44px; font-weight: 600; }
  html.lm-open { overflow: hidden; }
  @media (max-height: 700px) {   /* низкое окно: пункты плотнее, чтобы кнопка регистрации была видна без прокрутки листа */
    .lm-nav > a { padding-top: 9px; padding-bottom: 11px; }
    .lm-nav > a b { font-size: 26px; }
    .lm-nav > a::before { top: 20px; }
    .lm-nav > a::after { top: 31px; bottom: -20px; }
    .lm-nav-foot { padding-top: 16px; }
  }
}
@media (max-width: 860px) {
  body.lm { font-size: 17px; }
  :root { --top-max: 84px; --top-min: 60px; }
  .lm-nav { top: var(--top-h, 60px); }
  .lm-brand-min { margin-top: -18px; gap: 10px; }
  .lm-brand-min img { width: 36px; height: 36px; }
  .lm-brand-min b { font-size: 20px; }
  .lm-two { grid-template-columns: minmax(0, 1fr); }
  .lm-intro-2 { grid-template-columns: minmax(0, 1fr); }
  .lm-foot .lm-w { grid-template-columns: minmax(0, 1fr); }
  .lm-reg { grid-template-columns: minmax(0, 1fr); }
  .lm-reg-main { display: contents; }   /* порядок на узком экране: заголовок с кнопкой, бейдж, анкета */
  .lm-reg .lm-fold-head { order: 1; }
  .lm-reg-side { order: 2; position: static; }
  .lm-reg .lm-fold-body { order: 3; padding-top: 8px; }
  .lm-reg-side::before { display: none; }
  .lm-badge { min-height: 0; }
  .lm-badge-when { margin-top: 0; }
}
/* узкий экран: год стоит под названием во всю ширину, ниже продолжение названия, день, место и кнопка столбцом */
@media (max-width: 760px) {
  .lm-hero { --tile: 240px; }
  .lm-yrow { grid-template-columns: minmax(0, 1fr); grid-template-rows: none; margin-top: 16px; }
  .lm-sub { max-width: 17em; }
  .lm-yw { grid-column: 1; grid-row: 2; justify-self: start; margin-top: 64px; font-size: 34vw; }
  .lm-ycol { grid-row: 3; }
  .lm-yrow.is-1 .lm-ycol { grid-row: 2; }
  .lm-facts { margin-top: 24px; }
  html.lm-hero-on:not(.lm-min) .lm-btn-top { display: none; }   /* вверху страницы место отдано логотипу, кнопка регистрации стоит на первом экране */
  .lm-perch { position: static; }
  .lm-perch .lm-bird { right: 0; bottom: .2em; height: clamp(48px, 17vw, 72px); }
  .lm-hero .lm-acts { flex-direction: column; align-items: stretch; gap: 8px; }
  .lm-hero .lm-btn { justify-content: center; }
  .lm-fold-btn { width: 100%; justify-content: center; }
  .lm-up { width: 76px; height: 72px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); }
  .lm-up .lm-bird { right: 18px; height: 50px; }
  .lm-up-br { width: 64px; }
  .lm-lede { grid-template-columns: minmax(0, 1fr); }
  .lm-qblock { grid-template-columns: minmax(0, 1fr); }
  .lm-qblock > .lm-q { grid-column: 1 / -1 !important; }
  .lm-opts { display: grid; }
  .lm-vplay { min-height: 48px; padding: 0 16px; font-size: 16px; }
  .lm-top .lm-w { gap: 8px; }
  .lm-btn-top { padding: 8px 12px; }
  .lm-ask-in { padding: 24px 16px; }
  .lm-ask-btns { gap: 12px; }
}

/* без скриптов ответить нельзя: кнопки ответа скрыты */
html:not(.lm-js) .lm-ask-btns, html:not(.lm-js) .lm-ask-hint { display: none; }
