/* ПГИ — оформление по CONTRACT.md. Цвет, кегли и сетка меняются только в токенах ниже;
   режим для слабовидящих (ГОСТ Р 52872-2019) переопределяет токены атрибутами на <html>. */

:root {
  --paper: #F7F2E8; --paper-2: #EFE8D9; --ink: #1B1917; --ink-2: #3A342D;
  --muted: #6A6255; --line: #CFC5B1; --cinnabar: #C0301B; --on-ink: #F7F2E8; --on-ink-muted: #B5AA97;

  --display: 'Old Standard TT', Georgia, serif;
  --text: 'Alegreya', Georgia, serif;
  --caps: 'Alegreya SC', 'Alegreya', Georgia, serif;
  --sans: 'Alegreya Sans', Arial, sans-serif;

  /* кегль: телефон (600 px) → компьютер (1024 px); --k — увеличение в режиме для слабовидящих */
  --k: 1;
  --fs-h1: calc(clamp(38px, 6.87px + 5.19vw, 60px) * var(--k));
  --fs-h2: calc(clamp(30px, 15.85px + 2.36vw, 40px) * var(--k));
  --fs-h3: calc(clamp(21px, 16.75px + .71vw, 24px) * var(--k));
  --fs-lead: calc(clamp(20px, 15.75px + .71vw, 23px) * var(--k));
  --fs-body: calc(clamp(18px, 15.17px + .47vw, 20px) * var(--k));
  --fs-label: calc(clamp(14px, 12.58px + .24vw, 15px) * var(--k));
  --fs-meta: calc(clamp(14px, 12.58px + .24vw, 15px) * var(--k));
  --fs-nav: calc(clamp(18px, 16.58px + .24vw, 19px) * var(--k));
  --fs-mark: calc(clamp(32px, 15.02px + 2.83vw, 44px) * var(--k));

  --page: 1200px; --measure: 660px; --wide: 960px;
  --gut: clamp(16px, 7.55vw - 29.3px, 48px);
  --sec: clamp(56px, 9.4vw, 96px);
}

/* режим для слабовидящих */
:root[data-size="125"] { --k: 1.25; --measure: 780px; }
:root[data-size="150"] { --k: 1.5; --measure: 900px; }
:root[data-scheme="bw"] { --paper: #FFF; --paper-2: #FFF; --ink: #000; --ink-2: #000; --muted: #000; --line: #000; --cinnabar: #000; --on-ink: #FFF; --on-ink-muted: #FFF; }
:root[data-scheme="wb"] { --paper: #000; --paper-2: #000; --ink: #FFF; --ink-2: #FFF; --muted: #FFF; --line: #FFF; --cinnabar: #FFF; --on-ink: #000; --on-ink-muted: #000; }
:root[data-images="off"] .plate, :root[data-images="off"] .slider, :root[data-images="off"] .strip, :root[data-images="off"] .orn, :root[data-images="off"] .roster__portrait, :root[data-images="off"] .head-person__portrait { display: none; }
:root[data-images="off"] .head-person { grid-template-columns: 1fr; }
:root[data-scheme] .drop::first-letter { color: inherit; }

/* основа */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0; background: var(--paper); color: var(--ink);
  font: 400 var(--fs-body)/1.6 var(--text); font-kerning: normal; text-rendering: optimizeLegibility;
}
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
a:hover { color: var(--cinnabar); }
:focus-visible { outline: 2px solid var(--cinnabar); outline-offset: 3px; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
.vh { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: absolute; left: -9999px; }
.skip:focus { left: 16px; top: 16px; z-index: 10; padding: 10px 16px; background: var(--ink); color: var(--on-ink); }
.linklike { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .2em; }

.wrap { width: 100%; max-width: calc(var(--page) + 2 * var(--gut)); margin-inline: auto; padding-inline: var(--gut); }
.wrap.measure { max-width: calc(var(--measure) + 2 * var(--gut)); }
.wrap.wide { max-width: calc(var(--wide) + 2 * var(--gut)); }
.measure:not(.wrap) { max-width: var(--measure); margin-inline: auto; }
.center { text-align: center; }

h1, h2 { font-family: var(--display); font-weight: 400; text-wrap: balance; margin: 0; }
h1 { font-size: var(--fs-h1); line-height: 1.08; margin-bottom: 24px; }
h2 { font-size: var(--fs-h2); line-height: 1.15; margin-bottom: 40px; }
h3 { font: 500 var(--fs-h3)/1.3 var(--text); margin: 0 0 16px; }
p { margin: 0 0 1em; }
.lead { font-size: var(--fs-lead); line-height: 1.5; color: var(--ink-2); text-wrap: pretty; }
.meta { font: 400 var(--fs-meta)/1.45 var(--sans); color: var(--muted); }
.num { text-align: right; font-variant-numeric: lining-nums tabular-nums; }

/* рубрика: капитель между двойными линейками */
.rubric {
  display: flex; align-items: center; gap: 20px; max-width: var(--measure); margin: 0 auto 16px;
  font: 500 var(--fs-label)/1.2 var(--caps); letter-spacing: .08em; color: var(--cinnabar);
}
.rubric::before, .rubric::after { content: ""; flex: 1; border-top: 3px double var(--ink); }

/* верхняя строка и режим для слабовидящих */
.topbar { border-bottom: 1px solid var(--line); font: 400 var(--fs-meta)/1.3 var(--sans); }
.topbar__in { display: flex; justify-content: space-between; align-items: center; gap: 16px;
  max-width: calc(var(--page) + 2 * var(--gut)); margin-inline: auto; padding: 7px var(--gut); }
.topbar__church { font-family: var(--caps); letter-spacing: .06em; color: var(--muted); }
.topbar__tools { display: flex; align-items: center; gap: 24px; }
.topbar__cabinet { text-decoration: none; }
.topbar__cabinet:hover { text-decoration: underline; }
.a11y-toggle { display: flex; align-items: center; padding: 4px; }
.a11y-toggle svg { fill: none; stroke: currentColor; stroke-width: 1.6; }
.a11y-toggle[aria-expanded="true"] { color: var(--cinnabar); }
.a11y { border-top: 1px solid var(--line); background: var(--paper-2); }
.a11y__in { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 40px;
  max-width: calc(var(--page) + 2 * var(--gut)); margin-inline: auto; padding: 14px var(--gut); }
.a11y__group { display: flex; align-items: center; gap: 6px; }
.a11y__group > span { margin-right: 6px; color: var(--muted); }
.a11y button[data-set] { padding: 6px 12px; border: 1px solid var(--ink); }
.a11y button[aria-pressed="true"] { background: var(--ink); color: var(--paper); }
.a11y__reset { text-decoration: underline; text-underline-offset: .2em; margin-left: auto; }

/* шапка как в v1 (решение 27.10): слева герб и название, справа меню по линии «ПГИ», под шапкой линейка */
.masthead { border-bottom: 1px solid var(--ink); }
.masthead__in { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: last baseline; gap: 14px 32px;
  max-width: calc(var(--page) + 2 * var(--gut)); margin-inline: auto; padding: 22px var(--gut) 18px; }
.brand { display: inline-flex; align-items: center; gap: 18px; text-decoration: none; color: var(--ink); }
.brand:hover { color: var(--ink); }
.brand__crest { display: grid; place-items: center; width: 56px; height: 66px; flex-shrink: 0; background: var(--paper-2);
  outline: 1px solid var(--line); outline-offset: -5px; font: italic 400 12px/1 var(--sans); color: var(--muted); }
.brand__crest--image { background: none; outline: none; }
.brand__crest img { width: 100%; height: 100%; object-fit: contain; }
:root[data-images="off"] .brand__crest--image { display: none; }
.brand__text { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; text-align: left; }
.brand__full { font: 500 var(--fs-label)/1.3 var(--caps); letter-spacing: .08em; color: var(--ink-2); }
.brand__mark { font: 400 var(--fs-mark)/1 var(--display); letter-spacing: .18em; margin-right: -.18em; }
.menu ul { display: flex; flex-wrap: wrap; gap: 6px 28px; margin: 0; padding: 0; list-style: none; }
.menu a { font: 400 var(--fs-nav)/1.2 var(--text); text-decoration: none; }
.menu a[aria-current="page"] { color: var(--cinnabar); text-decoration: underline; text-underline-offset: .35em; }

/* путь */
.crumbs { display: flex; gap: 10px; padding-top: 20px; font: 400 var(--fs-meta)/1.3 var(--sans); color: var(--muted); }

/* первый экран */
.hero { padding-top: clamp(48px, 7vw, 80px); }
.hero .lead { margin-bottom: 48px; }
.hero--title { padding-top: clamp(28px, 3.4vw, 44px); }
.hero--title h1 { margin-bottom: 20px; }
.hero--title .lead { max-width: 760px; margin-bottom: 0; }
.hero--page { padding-top: clamp(32px, 4vw, 48px); }
.hero--page .lead { margin-bottom: 32px; }

/* доска под иллюстрацию */
.plate { position: relative; background: var(--paper-2); overflow: hidden; }
.plate--wide { aspect-ratio: 16 / 9; }
.plate--std { aspect-ratio: 4 / 3; }
.plate img { width: 100%; height: 100%; object-fit: cover; }
.plate--empty { display: grid; place-items: center; outline: 1px solid var(--line); outline-offset: -10px; }
.plate--empty span { max-width: 70%; text-align: center; font: italic 400 var(--fs-meta)/1.4 var(--sans); color: var(--muted); }

/* оттиски из «Апостола» 1564 года: заставка над заголовком главной, концовка в конце страницы */
.orn { display: block; height: auto; margin-inline: auto; }
.orn--head { width: min(420px, 100%); margin-bottom: 28px; }
.orn--tail { width: 150px; }
.end { margin: 64px 0 0; }
:root[data-scheme="wb"] .orn { filter: invert(1); }
.hero--title h1 { color: var(--cinnabar); }

/* слайдер разворотом: слева кадр, справа «страница» — номер, подпись, риски, листание */
.slider__nav { display: flex; align-items: center; gap: 14px; white-space: nowrap; }
.slider__nav button { font: 400 22px/1 var(--text); padding: 2px 6px; color: var(--ink); }
.slider__nav button:hover { color: var(--cinnabar); }
.spread { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 48px; margin: 40px auto 0; }
.spread__frames { position: relative; aspect-ratio: 16 / 10; }
.spread__frame { position: absolute; inset: 0; opacity: 0; transition: opacity .4s ease; }
.spread__frame.is-on { opacity: 1; }
.spread__frame .plate { height: 100%; }
.spread__page { display: flex; flex-direction: column; padding-top: 20px; border-top: 3px double var(--ink); border-bottom: 1px solid var(--line); }
.spread__n { display: flex; align-items: baseline; gap: 14px; margin: 0 0 20px; font: 400 calc(var(--fs-h1) * 1.6)/1 var(--display); }
.spread__of { font: 500 var(--fs-label)/1 var(--caps); letter-spacing: .08em; color: var(--muted); }
.spread__cap { margin: 0; font: italic 400 calc(var(--fs-h3) * 1.15)/1.3 var(--text); text-wrap: balance; }
.spread__list { margin: auto 0 0; padding: 28px 0 0; list-style: none; }
.spread__list li { border-top: 1px solid var(--line); }
.spread__list button { display: flex; gap: 10px; width: 100%; padding: 8px 0; text-align: left;
  font-size: calc(var(--fs-body) * .85); line-height: 1.35; color: var(--muted); }
.spread__list button span { flex: 0 0 2.4em; font-family: var(--display); }
.spread__list button:hover, .spread__list .is-on { color: var(--ink); }
.spread__list .is-on span { color: var(--cinnabar); }
.spread__foot { padding: 12px 0 14px; border-top: 1px solid var(--line); }
.spread__nav { display: flex; justify-content: space-between; }
.spread__nav button { font: 400 var(--fs-nav)/1.3 var(--text); padding: 4px 0; }
.spread__nav button:hover { color: var(--cinnabar); }

/* разделы */
.section { padding-block: var(--sec); }
.section--rule { border-top: 1px solid var(--line); }
.section--plate { background: var(--paper-2); }
.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 32px; margin: 48px 0 0; }
.actions.center, .center > .actions { justify-content: center; }
.hero--page .actions { margin-top: 0; justify-content: center; }
.btn { display: inline-block; padding: 15px 28px; background: var(--cinnabar); color: var(--paper);
  font: 500 calc(17px * var(--k))/1.2 var(--sans); letter-spacing: .02em; text-decoration: none; border: 0; }
.btn:hover { background: var(--ink); color: var(--paper); }
.btn:disabled { opacity: .6; cursor: progress; }
.btn--line { padding: 14px 27px; background: none; color: var(--ink); border: 1px solid var(--ink); }
.more { font: 400 var(--fs-body)/1.3 var(--text); }

/* условия курса */
.facts { display: grid; grid-template-columns: repeat(4, 1fr); margin: 0 0 64px; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--line); }
.facts > div { padding: 18px 24px 20px; border-left: 1px solid var(--line); }
.facts > div:first-child { border-left: 0; padding-left: 0; }
.facts dt { font: 500 var(--fs-label)/1.2 var(--caps); letter-spacing: .08em; color: var(--muted); margin-bottom: 8px; }
.facts dd { margin: 0; font: 400 var(--fs-h3)/1.25 var(--display); text-wrap: balance; }
.facts--main dd { font-size: calc(var(--fs-h2) * .72); line-height: 1.2; }
.facts--big { margin: 56px auto 0; }
.facts--big dt { font: 400 calc(var(--fs-h1) * .8)/1 var(--display); letter-spacing: 0; color: var(--ink); margin-bottom: 10px; }
.facts--big dd { font: 400 var(--fs-meta)/1.4 var(--sans); color: var(--muted); }

.split { display: grid; grid-template-columns: 1.3fr 1fr; gap: 72px; }
.split h3:not(:first-child) { margin-top: 48px; }

table.plan { width: 100%; border-collapse: collapse; font-size: calc(var(--fs-body) * .95); }
.plan th { font: 500 var(--fs-label)/1.2 var(--caps); letter-spacing: .08em; color: var(--muted); text-align: left; padding: 0 0 10px; border-bottom: 1px solid var(--ink); }
.plan th.num { text-align: right; }
.plan td { padding: 11px 16px 11px 0; border-bottom: 1px solid var(--line); vertical-align: baseline; line-height: 1.4; }
.plan td:nth-child(2) { color: var(--muted); font-family: var(--sans); font-size: var(--fs-meta); }
.plan td.num, .plan tfoot .num { padding-right: 0; }
.plan tfoot th, .plan tfoot td { border-top: 3px double var(--ink); border-bottom: 0; padding: 12px 0 0; vertical-align: baseline; }
.plan tfoot .num { font: 500 var(--fs-h3)/1 var(--text); font-variant-numeric: lining-nums tabular-nums; }

.blocks { list-style: none; margin: 0; padding: 0; }
/* рядом с учебным планом блоки тянутся до его итога: обе колонки кончаются одной линией */
.split__side { display: flex; flex-direction: column; }
.split__side .blocks { flex: 1; display: flex; flex-direction: column; }
.split__side .blocks li { flex: 1 1 auto; align-content: start; }
.blocks li { display: grid; grid-template-columns: 11em 1fr; gap: 16px; padding: 11px 0; border-bottom: 1px solid var(--line); line-height: 1.4; }
.blocks li:first-child { border-top: 1px solid var(--ink); }
.blocks__when { font: 400 var(--fs-meta)/1.5 var(--sans); color: var(--muted); }
/* как устроено обучение: заголовок на поле слева, четыре шага в строку, итоговый контроль под ними */
.howto { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: 16px 48px; margin-top: 72px; padding-top: 24px; border-top: 1px solid var(--ink); }
.howto h3 { margin: 0; }
.steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px 32px; list-style: none; margin: 0 0 24px; padding: 0; }
.steps li { line-height: 1.4; }
.steps__n { display: block; margin-bottom: 10px; font: 400 calc(var(--fs-h2) * 1.1)/1 var(--display); }
.steps + .meta { margin: 0; padding-top: 14px; border-top: 1px solid var(--line); }

/* история */
.drop { margin: 0 auto 64px; }
.drop::first-letter { float: left; font: 400 calc(var(--fs-lead) * 3.9)/.8 var(--display); color: var(--cinnabar); margin: .06em .12em 0 0; }
.today { margin-top: 32px; padding-top: 24px; border-top: 3px double var(--ink); }
.today__label { font: 500 var(--fs-label)/1.2 var(--caps); letter-spacing: .08em; color: var(--cinnabar); margin-bottom: 10px; }

/* чернильная полоса — одна на страницу: те же токены, вывернутые на тёмное */
.band { --paper: #1B1917; --paper-2: #3A342D; --ink: #F7F2E8; --ink-2: #EFE8D9; --muted: #B5AA97; --line: #6A6255;
  background: var(--paper); color: var(--ink); }
.band .rubric, .band .today__label { color: var(--ink); }
:root[data-scheme="bw"] .band { --paper: #FFF; --paper-2: #FFF; --ink: #000; --ink-2: #000; --muted: #000; --line: #000; }
:root[data-scheme="wb"] .band { --paper: #000; --paper-2: #000; --ink: #FFF; --ink-2: #FFF; --muted: #FFF; --line: #FFF; }

/* линия дат: год крупно над риской киноварью */
.timeline { display: grid; grid-template-columns: repeat(6, 1fr); margin: 0; padding: 0; list-style: none; }
.timeline li { position: relative; padding: 26px 24px 0 0; border-top: 1px solid var(--muted); }
.timeline li::before { content: ""; position: absolute; left: 0; top: -8px; height: 15px; border-left: 2px solid var(--cinnabar); }
.timeline__when { display: block; margin-bottom: 12px; font: 400 calc(var(--fs-h2) * .85)/1.1 var(--display); font-variant-numeric: lining-nums; white-space: nowrap; }
.timeline__what { display: block; font-size: calc(var(--fs-body) * .85); line-height: 1.45; color: var(--ink-2); }
.band .today { margin-top: 72px; }

/* лента фото: от края колонки до края окна */
.strip__head { display: flex; justify-content: space-between; align-items: baseline; padding-bottom: 14px; margin-bottom: 32px; border-bottom: 3px double var(--ink); }
.strip__head h2 { margin: 0; }
.strip__list { --edge: max(var(--gut), (100% - var(--page)) / 2);
  display: grid; grid-auto-flow: column; grid-auto-columns: clamp(250px, 29vw, 400px); gap: 32px;
  margin: 0; padding: 0 var(--edge); scroll-padding-inline: var(--edge); list-style: none;
  overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
.strip__list::-webkit-scrollbar { display: none; }
.strip__list li { scroll-snap-align: start; }
.strip figure { margin: 0; }
.strip figcaption { display: flex; gap: 12px; align-items: baseline; padding-top: 14px; font-size: calc(var(--fs-body) * .9); line-height: 1.4; color: var(--ink-2); }
.strip__n { flex: 0 0 auto; font: 400 var(--fs-h3)/1 var(--display); color: var(--muted); }

/* преподаватели оглавлением: имя, отточие, дисциплина и часы */
.roster { max-width: 880px; margin: 0 auto 40px; padding: 0; list-style: none; border-top: 1px solid var(--ink); }
.roster li { display: flex; align-items: center; gap: 24px; padding: 16px 0; border-bottom: 1px solid var(--line); }
.roster__portrait { flex: 0 0 auto; width: 88px; height: 110px; object-fit: cover; }
.roster__entry { display: flex; align-items: baseline; flex: 1; min-width: 0; gap: 14px; }
.head-person { display: grid; grid-template-columns: 160px 1fr; align-items: start; gap: 32px; }
.head-person__portrait { margin-inline: auto; width: 160px; height: 200px; object-fit: cover; }
.roster__name { flex: 0 0 auto; font: 500 calc(var(--fs-h3) * .9)/1.3 var(--text); }
.roster__dots { flex: 1 1 24px; border-bottom: 2px dotted var(--line); }
.roster__what { text-align: right; font-style: italic; line-height: 1.35; color: var(--ink-2); }
.roster__h { display: inline-block; min-width: 3.2em; margin-left: 12px; font: 400 var(--fs-h3)/1 var(--display); color: var(--ink); white-space: nowrap; }

/* преподаватели */
.teachers { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 48px; list-style: none; margin: 0 0 40px; padding: 0; }
.teachers li { padding: 16px 0 20px; border-top: 1px solid var(--line); }
.teachers__name { display: block; font: 500 calc(var(--fs-h3) * .9)/1.3 var(--text); }
.teachers__what { display: block; margin-top: 4px; font: 400 var(--fs-meta)/1.4 var(--sans); color: var(--muted); }

/* материалы, контакты, слушателям */
.index__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 56px; }
.index .rubric { margin-bottom: 24px; }
.index__links { list-style: none; margin: 0; padding: 0; }
.index__links li { padding: 0 0 16px; margin-bottom: 16px; border-bottom: 1px solid var(--line); }
.index__links a { display: block; font: 400 calc(var(--fs-h3) * 1.1)/1.2 var(--display); text-decoration: none; margin-bottom: 4px; }
.index__links span { display: block; font: 400 var(--fs-meta)/1.4 var(--sans); color: var(--muted); }

/* календарь потока */
.gantt { margin-top: 40px; }
.gantt__months { display: grid; grid-template-columns: repeat(var(--months), 1fr); border-bottom: 1px solid var(--ink); }
.gantt__months span { padding: 0 0 8px 8px; border-left: 1px solid var(--line); font: 500 var(--fs-label)/1.2 var(--caps); letter-spacing: .08em; color: var(--muted); }
.gantt__rows { list-style: none; margin: 0; padding: 0; }
.gantt__rows li { display: grid; grid-template-columns: repeat(var(--months), 1fr); padding: 8px 0; border-bottom: 1px solid var(--line); }
.gantt__bar { grid-column: var(--from) / var(--to); padding: 10px 14px 12px; background: var(--paper-2); border: 1px solid var(--ink); }
.gantt__title { display: block; line-height: 1.3; }
.gantt__h { display: block; margin-top: 4px; font: 400 var(--fs-meta)/1.4 var(--sans); color: var(--muted); }

/* учебный план с раскрытием */
.ledger { max-width: 900px; margin: 0 auto 24px; }
.ledger { --cols: 64px 1fr 72px 28px; }
.ledger__head, .ledger summary, .ledger__total { display: grid; grid-template-columns: var(--cols); gap: 16px; align-items: baseline; }
.ledger__head span:first-child { font-family: var(--text); }
.ledger__head { padding-bottom: 10px; border-bottom: 1px solid var(--ink); font: 500 var(--fs-label)/1.2 var(--caps); letter-spacing: .08em; color: var(--muted); }
.ledger__row { border-bottom: 1px solid var(--line); }
.ledger summary { padding: 16px 0; cursor: pointer; list-style: none; }
.ledger summary::-webkit-details-marker { display: none; }
.ledger summary::after { content: "+"; font: 400 24px/1 var(--text); color: var(--muted); text-align: right; }
.ledger__row[open] summary::after { content: "−"; }
.ledger summary:hover .ledger__title, .ledger__row[open] .ledger__title { color: var(--cinnabar); }
.ledger__n { font: 400 calc(var(--fs-h3) * .95)/1 var(--display); color: var(--muted); }
.ledger__title { display: block; font: 500 calc(var(--fs-h3) * .9)/1.3 var(--text); }
.ledger__who { display: block; margin-top: 2px; font: 400 var(--fs-meta)/1.4 var(--sans); color: var(--muted); }
.ledger summary .num, .ledger__total .num { font: 400 var(--fs-h3)/1 var(--display); }
.ledger__more { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin: 0; padding: 0 0 20px 80px; }
.ledger__more dt { font: 500 var(--fs-label)/1.2 var(--caps); letter-spacing: .08em; color: var(--muted); margin-bottom: 4px; }
.ledger__more dd { margin: 0; line-height: 1.4; }
.ledger__total { padding: 14px 0; border-top: 3px double var(--ink); font: 500 var(--fs-label)/1.2 var(--caps); letter-spacing: .08em; }

/* вопросы и ответы */
.faq details { border-bottom: 1px solid var(--line); }
.faq details:first-child { border-top: 1px solid var(--ink); }
.faq summary { position: relative; padding: 18px 40px 18px 0; cursor: pointer; list-style: none; font: 500 calc(var(--fs-h3) * .9)/1.35 var(--text); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; position: absolute; right: 4px; top: 16px; font: 400 26px/1 var(--text); color: var(--muted); }
.faq details[open] summary::after { content: "−"; }
.faq details p { padding-bottom: 20px; margin: 0; color: var(--ink-2); }

/* форма */
.form { display: grid; gap: 20px; margin-top: 40px; }
.form__pair { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.form .meta { margin: -8px 0 0; }
.field { display: grid; gap: 6px; font: 400 var(--fs-meta)/1.3 var(--sans); color: var(--muted); }
.field input, .field textarea, .field select { width: 100%; padding: 12px 14px; border: 1px solid var(--ink); border-radius: 0; background: var(--paper);
  font: 400 var(--fs-body)/1.3 var(--text); color: var(--ink); }
.field textarea { line-height: 1.45; resize: vertical; }
.field :focus-visible { outline-offset: 0; }
.choice { display: flex; flex-wrap: wrap; gap: 10px 28px; margin: 0; padding: 0; border: 0; }
.choice legend { padding: 0; margin-bottom: 8px; font: 400 var(--fs-meta)/1.3 var(--sans); color: var(--muted); }
.check { display: flex; gap: 12px; align-items: flex-start; line-height: 1.45; cursor: pointer; }
.check input { flex: 0 0 auto; width: 20px; height: 20px; margin: 4px 0 0; accent-color: var(--cinnabar); }
.hp { position: absolute; left: -9999px; }
.form__error { margin: 0; color: var(--cinnabar); font: 500 var(--fs-meta)/1.4 var(--sans); }
.form .actions { margin-top: 8px; justify-content: center; }
.form__done { margin-top: 40px; padding-top: 24px; border-top: 3px double var(--ink); text-align: center; }
.form__done-title { font: 400 var(--fs-h2)/1.15 var(--display); margin-bottom: 12px; }

/* подвал */
.footer { background: var(--ink); color: var(--on-ink); padding: 64px 0 48px; }
.footer__in { max-width: calc(var(--page) + 2 * var(--gut)); margin-inline: auto; padding-inline: var(--gut); }
.footer__name { font: 400 calc(var(--fs-h3) * 1.1)/1.3 var(--display); max-width: 640px; margin-bottom: 32px; }
.footer__nav { display: flex; flex-wrap: wrap; gap: 10px 32px; padding: 20px 0; border-top: 1px solid var(--on-ink-muted); border-bottom: 1px solid var(--on-ink-muted); }
.footer__nav a, .footer__service a, .footer__service button { color: var(--on-ink); font: 400 var(--fs-nav)/1.3 var(--text); }
.footer__nav a { text-decoration: none; }
.footer__nav a:hover, .footer__service a:hover, .footer__service button:hover { color: var(--on-ink); text-decoration: underline; }
.footer__service { display: flex; flex-wrap: wrap; gap: 10px 32px; margin: 20px 0 32px; }
.footer__source { margin: 0 0 16px; font: 400 var(--fs-meta)/1.45 var(--sans); color: var(--on-ink-muted); }
.footer__church { font: 500 var(--fs-label)/1.2 var(--caps); letter-spacing: .08em; color: var(--on-ink-muted); margin: 0; }

/* иллюстрация с подписью */
.figure { margin: 48px auto 0; }
.hero > .figure:last-child { margin-bottom: clamp(56px, 7vw, 88px); }
.measure > .drop { margin-bottom: 1em; }
.figure figcaption { padding-top: 12px; text-align: center; font: 400 var(--fs-meta)/1.45 var(--sans); color: var(--muted); }
.pair { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; max-width: var(--wide); margin: 48px auto 0; }
.pair .figure { margin: 0; }

/* «Об институте»: оглавление хронологии, эпохи, летопись дат */
.toc { margin-top: 48px; border-top: 1px solid var(--ink); }
.toc__label { margin: 14px 0 10px; font: 500 var(--fs-label)/1.2 var(--caps); letter-spacing: .08em; color: var(--muted); }
.toc ol { display: flex; flex-wrap: wrap; gap: 8px 28px; margin: 0; padding: 0; list-style: none; }
.toc a { font: 400 var(--fs-nav)/1.3 var(--text); text-decoration: none; }
.toc a:hover { text-decoration: underline; }
.toc__n { margin-right: 8px; font-family: var(--display); color: var(--muted); }
.epoch { padding-top: var(--sec); }
.epoch__head { margin-bottom: 32px; }
.epoch__n { margin: 0 0 10px; font: 400 calc(var(--fs-h2) * .9)/1 var(--display); color: var(--muted); }
.epoch__label { margin: 0; font: 500 var(--fs-label)/1.2 var(--caps); letter-spacing: .08em; color: var(--muted); }
.epoch__title { margin: 10px auto 0; max-width: 820px; font: 400 calc(var(--fs-h2) * .8)/1.2 var(--display); text-wrap: balance; }
.chronicle { max-width: calc(var(--measure) + 232px); margin: 40px auto 0; padding: 0; list-style: none; }
.chronicle li { display: grid; grid-template-columns: 200px 1fr; gap: 32px; padding: 20px 0 22px; border-top: 1px solid var(--line); }
.chronicle li:first-child { border-top-color: var(--ink); }
.chronicle__when { text-align: right; font: 400 calc(var(--fs-h2) * .75)/1.1 var(--display); font-variant-numeric: lining-nums; }
.chronicle__what { margin: 0 0 6px; font: 500 calc(var(--fs-h3) * .9)/1.3 var(--text); }
.chronicle li p:last-child { margin: 0; color: var(--ink-2); line-height: 1.55; }
.person { margin: 0 0 12px; font: 400 calc(var(--fs-h3) * 1.2)/1.3 var(--display); }

/* «Абитуриенту»: перспективные модули */
.modules { display: grid; grid-template-columns: 1fr 1fr; gap: 0 56px; margin: 0; padding: 0; list-style: none; }
.modules li { display: grid; grid-template-columns: 48px 1fr; gap: 16px; padding: 20px 0 24px; border-top: 1px solid var(--line); }
.modules li:nth-child(-n+2) { border-top-color: var(--ink); }
.modules__n { font: 400 var(--fs-h3)/1.3 var(--display); color: var(--muted); }
.modules h3 { margin: 0 0 6px; }
.modules p { margin: 0; color: var(--ink-2); line-height: 1.5; }
.subscribe { margin-top: 72px; padding-top: 32px; border-top: 3px double var(--ink); text-align: center; }
.subscribe .form { margin-top: 24px; text-align: left; }

/* «Материалы»: фотоальбом и документы */
.album { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px 32px; margin: 0; padding: 0; list-style: none; }
.album figure { margin: 0; }
.album figcaption { padding-top: 12px; font: 500 calc(var(--fs-h3) * .85)/1.35 var(--text); }
.album__date { display: block; margin-top: 2px; font: 400 var(--fs-meta)/1.4 var(--sans); color: var(--muted); }
.docs { margin: 0; padding: 0; list-style: none; }
.docs li { display: flex; justify-content: space-between; align-items: baseline; gap: 24px; padding: 15px 0; border-bottom: 1px solid var(--line); line-height: 1.4; }
.docs li:first-child { border-top: 1px solid var(--ink); }
.docs__title { color: var(--ink-2); }
.docs__file { flex: 0 0 auto; font: 400 var(--fs-meta)/1.4 var(--sans); color: var(--muted); }

/* строки «название — значение»: контакты, сведения */
.rows { margin: 24px 0; }
.rows > div { display: grid; grid-template-columns: 240px 1fr; gap: 24px; padding: 14px 0; border-bottom: 1px solid var(--line); }
.rows > div:first-child { border-top: 1px solid var(--ink); }
.rows dt { padding-top: 3px; font: 400 var(--fs-meta)/1.45 var(--sans); color: var(--muted); }
.rows dd { margin: 0; line-height: 1.5; }
.rows dd strong { font-weight: 500; }
.rows__note { display: block; margin-top: 6px; font: 400 var(--fs-meta)/1.45 var(--sans); color: var(--muted); }
.split .rows > div { grid-template-columns: 180px 1fr; }

/* «Сведения»: оглавление подразделов сбоку, подразделы по порядку */
.sved { padding-top: 32px; }
.sved__grid { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 72px; align-items: start; }
.sved__toc { position: sticky; top: 24px; }
.sved__toc .toc__label { margin-top: 0; }
.sved__toc ol { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--ink); }
.sved__toc li { border-bottom: 1px solid var(--line); }
.sved__toc a { display: block; padding: 8px 0; font: 400 var(--fs-meta)/1.35 var(--sans); text-decoration: none; }
.sved__body section + section { margin-top: 64px; }
.sved__h { display: flex; gap: 16px; align-items: baseline; margin: 0 0 20px; font-size: calc(var(--fs-h2) * .75); line-height: 1.2; }
.sved__n { flex: 0 0 1.4em; color: var(--muted); }
.sved__body .rows { margin-top: 0; }

/* внутренние страницы (27.10): заставка поменьше, рубрика капителью без линеек, заголовок чернилами */
.hero--page { padding-top: clamp(24px, 3vw, 36px); }
.orn--page { width: min(280px, 72%); margin-bottom: 20px; }
.kicker { margin: 0 0 12px; font: 500 var(--fs-label)/1.2 var(--caps); letter-spacing: .08em; color: var(--cinnabar); }
.band .kicker { color: var(--ink); }

/* заголовок раздела слева, пояснение справа, под ними двойная линейка — как «Фотографии» на главной */
.headline { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 8px 32px;
  padding-bottom: 14px; margin-bottom: 40px; border-bottom: 3px double var(--ink); }
.headline h2 { margin: 0; }
.headline .meta { margin: 0; }

/* раздел с заголовком на поле: слева заголовок и пояснение (держатся при прокрутке), справа содержание */
.margin { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: 24px 72px; align-items: start; }
.margin__head { position: sticky; top: 24px; }
.margin__head h2 { font-size: calc(var(--fs-h2) * .85); margin-bottom: 16px; }
.margin__head p:last-child { margin-bottom: 0; }
.margin + .margin { margin-top: var(--sec); }
.margin p { max-width: var(--measure); }
.margin .ledger { max-width: none; margin: 0; }

/* форма рядом с пояснением */
.formsplit { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.25fr); gap: 32px 80px; align-items: start; }
.formsplit h2 { margin-bottom: 24px; }
.formsplit .form { margin-top: 0; }
.formsplit .form .actions { justify-content: flex-start; }
.formsplit .subscribe { margin-top: 56px; text-align: left; }
.form__policy { margin: -12px 0 0 32px; font: 400 var(--fs-meta)/1.4 var(--sans); }

/* «Слушателям»: календарь на чернильной полосе */
.band .gantt__months { border-bottom-color: var(--muted); }
.band .gantt__bar { border-color: var(--muted); }

/* «Об институте»: эпоха — номер на поле и заголовок над летописью, как начало главы */
.epoch__head { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 0 32px; align-items: end;
  max-width: calc(var(--measure) + 232px); margin: 0 auto; padding-top: 24px; border-top: 3px double var(--ink); }
.epoch__n { grid-row: span 2; margin: 0; text-align: right; font: 400 calc(var(--fs-h1) * 1.25)/.9 var(--display); color: var(--ink); }
.epoch__title { margin: 8px 0 0; max-width: none; text-align: left; }
.epoch__lead { max-width: calc(var(--measure) + 232px); margin: 24px auto 0; padding-left: 232px; color: var(--ink-2); }
.epoch .chronicle { margin-top: 32px; }
.people { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--ink); }
.people li { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); gap: 4px 32px; padding: 16px 0 18px; border-bottom: 1px solid var(--line); }
.people__name { font: 500 calc(var(--fs-h3) * .9)/1.35 var(--text); }
.people__what { font-style: italic; line-height: 1.45; color: var(--ink-2); }
.band__split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 32px 80px; align-items: start; }
.band__split h2 { margin: 0; }
.band__split .lead { color: var(--ink); }

/* «Абитуриенту»: положение одной фразой на полосе */
.statement { max-width: 900px; margin: 0 auto; text-align: center; font: 400 calc(var(--fs-h2) * .9)/1.3 var(--display); text-wrap: balance; }

/* «Контакты»: адрес на полосе */
.address { margin: 0 0 24px; font: 400 calc(var(--fs-h3) * 1.15)/1.4 var(--display); }
.band .rows > div:first-child { border-top-color: var(--muted); }
.band .figure figcaption { color: var(--muted); }

/* «Сведения» и политика — строгие страницы: без оттисков и полосы */
.doc { counter-reset: doc; }
.doc h2 { display: flex; gap: 16px; align-items: baseline; margin: 56px 0 16px; font-size: calc(var(--fs-h2) * .7); line-height: 1.2; }
.doc h2::before { counter-increment: doc; content: counter(doc) "."; flex: 0 0 1.4em; color: var(--muted); }
.doc ul { margin: 0 0 1em; padding-left: 1.2em; }
.doc li { margin-bottom: .4em; }
.doc li::marker { color: var(--muted); }
.doc .rows > div { grid-template-columns: 260px 1fr; }
.doc .rows dt { font: 500 calc(var(--fs-body) * .9)/1.4 var(--text); color: var(--ink); }

/* планшет и телефон */
@media (max-width: 1024px) {
  .teachers { grid-template-columns: repeat(2, 1fr); }
  .timeline { grid-template-columns: repeat(3, 1fr); row-gap: 40px; }
  .howto { grid-template-columns: 1fr; }
  .spread { grid-template-columns: minmax(0, 1fr) 250px; gap: 32px; }
  .split { gap: 48px; }
  .sved__grid { grid-template-columns: 220px minmax(0, 1fr); gap: 40px; }
  .margin { grid-template-columns: 240px minmax(0, 1fr); gap: 24px 48px; }
  .formsplit, .band__split { gap: 32px 48px; }
  .rows > div { grid-template-columns: 180px 1fr; }
}
@media (max-width: 760px) {
  .topbar__church { display: none; }
  .topbar__in { justify-content: flex-end; }
  .masthead__in { padding-block: 16px 14px; }
  .brand { gap: 14px; }
  .brand__crest { width: 52px; height: 62px; }
  .brand__full { font-size: 12px; }
  .menu ul { gap: 4px 20px; }
  .facts { grid-template-columns: 1fr 1fr; }
  .facts > div { border-left: 0; padding: 14px 0 16px; border-bottom: 1px solid var(--line); }
  .facts > div:nth-child(2n) { padding-left: 16px; border-left: 1px solid var(--line); }
  .facts > div:nth-last-child(-n+2) { border-bottom: 0; }
  .split, .index__grid, .teachers, .form__pair, .howto { grid-template-columns: 1fr; }
  .steps { grid-template-columns: 1fr 1fr; }
  .howto { margin-top: 48px; }
  .orn--head { margin-bottom: 28px; }
  .spread { grid-template-columns: 1fr; gap: 0; margin-top: 40px; }
  .spread__page { border-top: 0; padding-top: 14px; }
  .spread__list { display: none; }
  .spread__foot { margin-top: 20px; }
  .spread__n { margin-bottom: 8px; font-size: calc(var(--fs-h1) * 1.1); }
  .timeline { grid-template-columns: 1fr; row-gap: 0; }
  .timeline li { display: grid; grid-template-columns: 7em 1fr; gap: 12px; padding: 16px 0 18px 16px; }
  .timeline li::before { top: 18px; height: 1.1em; }
  .timeline__when { margin: 0; font-size: calc(var(--fs-h3) * 1.05); white-space: normal; }
  .band .today { margin-top: 48px; }
  .roster li { gap: 16px; }
  .roster__portrait { width: 72px; height: 90px; }
  .roster__entry { flex-wrap: wrap; gap: 2px 12px; }
  .head-person { grid-template-columns: 1fr; gap: 24px; }
  .roster__name { flex-basis: 100%; }
  .roster__dots { display: none; }
  .roster__what { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; width: 100%; text-align: left; }
  .strip__list { grid-auto-columns: 80%; gap: 16px; }
  .blocks li { grid-template-columns: 1fr; gap: 2px; }
  .gantt__months { display: none; }
  .gantt__rows li { grid-template-columns: 1fr; }
  .gantt__bar { grid-column: 1 / -1; }
  .ledger__head { display: none; }
  .ledger { --cols: 36px 1fr 40px 16px; }
  .ledger summary, .ledger__total { gap: 10px; }
  .ledger__more { grid-template-columns: 1fr 1fr; padding-left: 0; }
  .pair, .modules, .album, .sved__grid { grid-template-columns: 1fr; }
  .margin, .formsplit, .band__split, .people li { grid-template-columns: 1fr; }
  .margin__head { position: static; }
  .epoch__head { grid-template-columns: 64px minmax(0, 1fr); gap: 0 16px; }
  .epoch__n { text-align: left; font-size: calc(var(--fs-h1) * .9); }
  .epoch__lead { padding-left: 0; }
  .orn--page { margin-bottom: 16px; }
  .modules li:nth-child(2) { border-top-color: var(--line); }
  .chronicle li { grid-template-columns: 1fr; gap: 4px; padding-block: 16px 18px; }
  .chronicle__when { text-align: left; }
  .rows > div, .split .rows > div { grid-template-columns: 1fr; gap: 2px; }
  .sved__toc { position: static; }
  .docs li { flex-wrap: wrap; gap: 2px 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .spread__frame { transition: none; }
}
