/*
  Стиль портала воскресных школ.
  Учтены правки фронтенд-ревизии под пожилую аудиторию:
   - базовый шрифт 17px, вторичный не мельче 14px;
   - контраст доведён до WCAG AA (тёмный ink-3);
   - тап-таргеты >= 44px, кнопки не зависят от hover;
   - адаптив: на телефоне расписание сворачивается в свою колонку.
*/
:root{
  --ink:#1a2028; --ink-2:#3d4757; --ink-3:#5b6675; --ink-4:#7a8698;
  --line:#dde2e9; --bg:#f5f6f8; --card:#fff;
  --accent:#7a2e3a; --accent-d:#5f2029; --accent-soft:#f3e7ea;
  --gold:#8a6a1c; --ok:#256b46; --ok-soft:#e6f1ea;
  --warn:#8c4a4a; --warn-soft:#f8eded; --blue:#3a567f; --blue-soft:#eaf0f8;
  --r:12px;
}
*{box-sizing:border-box}
/* Корень в процентах, а не в пикселях: только так работает
   настройка размера шрифта в браузере. Все размеры ниже — в rem,
   поэтому они масштабируются вместе с выбором пользователя. */
html{font-size:106.25%}
body{margin:0;background:var(--bg);color:var(--ink);font-size:1.118rem;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  line-height:1.6;-webkit-text-size-adjust:100%}
h1,h2,h3,h4{font-family:Georgia,"Times New Roman",serif;font-weight:600;letter-spacing:-.01em;margin:0;line-height:1.25}
a{color:var(--accent)}
img{max-width:100%}
.wrap{max-width:1040px;margin:0 auto;padding:0 18px}
.mt{margin-top:26px}

/* ---- шапка ---- */
.site-head{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}
.site-head .wrap{display:flex;align-items:center;gap:18px;min-height:64px;flex-wrap:wrap}
.logo{font-family:Georgia,serif;font-size:1.118rem;font-weight:600;line-height:1.15;text-decoration:none;color:var(--ink)}
.logo span{display:block;font-family:inherit;font-size:0.882rem;color:var(--ink-3);font-weight:400;
  letter-spacing:.05em;text-transform:uppercase}
nav.main{display:flex;gap:4px;margin-left:auto;flex-wrap:wrap}
nav.main a{text-decoration:none;color:var(--ink-2);padding:10px 12px;border-radius:8px;font-size:0.882rem;min-height:44px;display:inline-flex;align-items:center}
nav.main a:hover,nav.main a:focus{background:var(--accent-soft);color:var(--accent)}
nav.main a.active{color:var(--accent);font-weight:600}
.burger{display:none;margin-left:auto;background:none;border:1px solid var(--line);border-radius:8px;
  width:48px;height:44px;font-size:1.176rem;cursor:pointer;color:var(--ink-2)}

/* ---- кнопки ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--accent);
  color:#fff;border:0;border-radius:9px;padding:12px 20px;font:inherit;font-size:0.941rem;font-weight:500;
  cursor:pointer;text-decoration:none;min-height:48px}
.btn:hover,.btn:focus{background:var(--accent-d)}
.btn.ghost{background:#fff;color:var(--accent);border:1.5px solid #d6bcc2}
.btn.ghost:hover{background:var(--accent-soft)}
.btn.lg{font-size:1.059rem;padding:14px 26px}
.btn.sm{font-size:0.882rem;padding:8px 14px;min-height:40px}
.btn.block{width:100%}

/* ---- карточки ---- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.muted{color:var(--ink-3)}
.pill{display:inline-block;font-size:0.882rem;padding:4px 11px;border-radius:20px;white-space:nowrap}
.pill.rec{background:var(--accent-soft);color:var(--accent)}
.pill.done{background:var(--ok-soft);color:var(--ok)}
.pill.soon{background:#eef0f3;color:var(--ink-3)}
.pill.cancel{background:var(--warn-soft);color:var(--warn)}
.pill.moved{background:var(--blue-soft);color:var(--blue)}

/* ---- расписание как Excel ---- */
.sched-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--card)}
table.sched{width:100%;border-collapse:collapse;font-size:0.882rem;min-width:640px}
table.sched th{background:#eef1f5;font-weight:600;font-size:0.882rem;padding:11px 10px;border:1px solid var(--line);text-align:center;color:var(--ink)}
table.sched th.mine{background:var(--accent);color:#fff}
table.sched td{border:1px solid #e3e7ee;padding:9px 11px;vertical-align:top;line-height:1.45}
table.sched td.dt{font-weight:600;text-align:center;background:#f8f9fb;white-space:nowrap;font-family:Georgia,serif;vertical-align:middle}
table.sched td.wd{text-align:center;color:var(--ink-3);background:#f8f9fb;font-size:0.882rem;vertical-align:middle}
table.sched td.hr{white-space:nowrap;color:var(--ink-2);font-size:0.882rem;background:#fcfcfd;text-align:center}
table.sched td.empty{color:#c6ccd6;text-align:center}
table.sched td.mine{background:#fdf9fa}
table.sched td.cancel{background:var(--warn-soft)}
table.sched td.cancel .nm{text-decoration:line-through;color:var(--warn)}
table.sched tr.mon td{background:var(--ink);color:#fff;font-family:Georgia,serif;text-transform:capitalize;
  padding:6px 10px;letter-spacing:.03em}
table.sched tr.sp td{background:#fdf6e6;color:var(--gold);text-align:center;font-weight:600;font-size:0.882rem}
/* Каждый второй учебный день — лёгкая заливка, чтобы дни не сливались.
   Смысловые цвета сильнее полоски: свой курс и отменённое занятие
   сохраняют свою окраску. */
table.sched tr.alt td{background:#f2f4f7}
table.sched tr.alt td.dt, table.sched tr.alt td.wd{background:#e9ecf2}
table.sched tr.alt td.hr{background:#eef0f5}
table.sched tr.alt td.mine{background:#f8f2f4}
table.sched tr.alt td.cancel{background:var(--warn-soft)}
.nm{font-weight:500}
.chg{display:inline-block;font-size:0.882rem;padding:2px 7px;border-radius:5px;background:#fdf0d5;color:var(--gold);margin-left:6px}
.chg.b{background:var(--blue-soft);color:var(--blue)}
.chg.g{background:var(--ok-soft);color:var(--ok)}
.play-btn{display:inline-flex;align-items:center;gap:6px;margin-top:6px;background:var(--accent);color:#fff;
  font-size:0.882rem;padding:6px 13px;border-radius:20px;text-decoration:none;min-height:38px}
.play-btn:hover,.play-btn:focus{background:var(--accent-d)}
.norec{display:block;margin-top:5px;font-size:0.882rem;color:var(--ink-3)}

/* ---- недельная навигация / переключатели ---- */
.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:18px 0}
select,input[type=text],input[type=email],input[type=password],input[type=file],textarea{
  padding:12px 13px;border:1.5px solid #cdd4de;border-radius:9px;font:inherit;font-size:0.941rem;background:#fff;width:100%;max-width:100%}
select{width:auto;min-width:180px}
label{display:block;font-size:0.882rem;color:var(--ink-2);margin:0 0 6px;font-weight:500}
input:focus,select:focus,textarea:focus{outline:3px solid #d9c2c7;border-color:var(--accent)}

/* ---- баннер изменений ---- */
.banner{display:flex;gap:12px;align-items:flex-start;background:#fffaea;border:1px solid #ecdca8;
  border-left:4px solid var(--gold);border-radius:10px;padding:14px 16px;color:#5f4f22;font-size:0.882rem}

/* ---- вход ---- */
.auth{max-width:420px;margin:44px auto;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:32px}
.auth h1{font-size:1.471rem;margin-bottom:6px}
.auth .sub{color:var(--ink-3);font-size:0.882rem;margin:0 0 22px}
.field{margin-bottom:18px}
.pw-row{position:relative}
.pw-row button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:0;
  color:var(--ink-3);cursor:pointer;font-size:0.882rem;padding:8px;min-height:40px}
.hint{font-size:0.882rem;color:var(--ink-3);text-align:center;margin-top:18px;line-height:1.7}
.err{background:var(--warn-soft);border:1px solid #e6c9c9;color:var(--warn);padding:11px 14px;border-radius:9px;font-size:0.882rem;margin-bottom:16px}

/* ---- герой публичной главной ---- */
.hero{background:linear-gradient(165deg,#fff,var(--bg));border-bottom:1px solid var(--line);padding:52px 0 42px}
.hero h1{font-size:2.0rem;line-height:1.18;max-width:640px}
.hero p{color:var(--ink-2);font-size:1.059rem;max-width:600px;margin:16px 0 26px}
.sec-title{font-size:1.353rem;margin:36px 0 16px}

/* ---- новости / события ---- */
.news-item{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;margin-bottom:14px}
.news-item h3{font-size:1.118rem;margin-bottom:5px}
.news-item .date{color:var(--accent);font-family:Georgia,serif;font-size:0.882rem}
.events{background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.ev{display:flex;gap:16px;padding:14px 18px;border-bottom:1px solid var(--line);align-items:baseline;flex-wrap:wrap}
.ev:last-child{border:0}
.ev .d{font-family:Georgia,serif;color:var(--accent);font-size:0.882rem;min-width:110px}

/* ---- плеер ---- */
.player-box{background:var(--ink);border-radius:var(--r);padding:22px;color:#e8ecf2}
.player-box audio,.player-box video{width:100%;border-radius:8px;background:#000}
.player-note{font-size:0.882rem;color:#93a0b3;margin-bottom:14px;display:flex;gap:8px;align-items:center}
.lsn-head h1{font-size:1.529rem;margin-bottom:6px}
.lsn-head .meta{color:var(--ink-3);font-size:0.882rem;margin-bottom:20px}
.back{display:inline-block;color:var(--ink-2);text-decoration:none;font-size:0.882rem;margin-bottom:14px;min-height:40px}
.back:hover{color:var(--accent)}

/* ---- вкладки кабинета ---- */
.tabs{display:flex;gap:2px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:8px}
.tabs a{padding:12px 16px;text-decoration:none;color:var(--ink-2);font-size:0.882rem;border-bottom:3px solid transparent;min-height:46px;display:inline-flex;align-items:center}
.tabs a.active{color:var(--accent);border-color:var(--accent);font-weight:600}
.who{display:flex;align-items:center;gap:12px;padding:16px 0 6px}
.ava{width:42px;height:42px;border-radius:50%;background:var(--accent-soft);color:var(--accent);
  display:grid;place-items:center;font-weight:600;font-size:0.882rem;flex:none}

/* ---- подвал ---- */
.site-foot{margin-top:50px;background:#1a2028;color:#aab4c2;padding:28px 0;font-size:0.882rem}
.site-foot a{color:#d9c2c7}

/* ---- текст-контроль размера ---- */
/* Жёсткие width/height 38px тут стояли раньше и не давали кнопке в шапке
   вырасти под подпись — размер задаётся ниже, в блоке про шапку. */
.textsize{display:flex;gap:6px;align-items:center;font-size:0.882rem;color:var(--ink-3)}
body.big{font-size:1.118rem}
body.big table.sched{font-size:0.971rem}

.form-grid{display:grid;grid-template-columns:1fr 320px;gap:22px}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:0.882rem;color:var(--ink-3);margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.legend span{display:inline-flex;align-items:center;gap:6px}
table.data{width:100%;border-collapse:collapse;font-size:0.882rem;background:var(--card);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
table.data th{text-align:left;font-size:0.882rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-3);padding:11px 13px;border-bottom:1px solid var(--line)}
table.data td{padding:11px 13px;border-bottom:1px solid var(--line);vertical-align:top}
.tag{font-size:0.882rem;padding:3px 9px;border-radius:5px}
.tag.ok{background:var(--ok-soft);color:var(--ok)}
.tag.man{background:#fdf0d5;color:var(--gold)}
.note{background:#fffaea;border:1px solid #ecdca8;border-left:4px solid var(--gold);border-radius:9px;
  padding:12px 15px;font-size:0.882rem;color:#5f4f22;margin:16px 0}

/* Кнопка «Меню» включается уже с планшета, а не только с телефона:
   между 760 и 1000 точек ссылки не помещались в строку и шапка
   разрасталась до полутора сотен точек, съедая экран. */
@media(max-width:1023px){
  nav.main{display:none;order:3;width:100%;flex-direction:column}
  nav.main.open{display:flex}
  .burger{display:block}
}

@media(max-width:760px){
  html{font-size:0.941rem}
  .grid2,.form-grid{grid-template-columns:1fr}
  .hero h1{font-size:1.588rem}
  /* расписание на телефоне: прячем чужие курсы, оставляем свой */
  table.sched.only-mine td:not(.mine):not(.dt):not(.wd):not(.hr),
  table.sched.only-mine th:not(.mine):first-child ~ th:not(.mine){display:none}
}

/* ── Преподаватели ─────────────────────────────────────────────────
   Крупные карточки с фото: аудитория пожилая, мелкие превью не годятся.
   Сетка сама подстраивается под ширину экрана, на телефоне — одна колонка. */
.teachers{
  display:grid; gap:18px; margin-top:14px;
  grid-template-columns:repeat(auto-fill, minmax(240px, 1fr));
}
.tcard{
  display:flex; flex-direction:column; text-decoration:none; color:inherit;
  background:#fff; border:1px solid var(--line, #d8d2c6); border-radius:10px;
  overflow:hidden; transition:box-shadow .15s, transform .15s;
}
.tcard:hover, .tcard:focus{ box-shadow:0 4px 14px rgba(0,0,0,.13); transform:translateY(-2px); }
.tcard:focus-visible{ outline:3px solid var(--accent, #7a5c2e); outline-offset:2px; }
.tcard img{ width:100%; aspect-ratio:3/4; object-fit:cover; object-position:center top; display:block; }
.tcard-noimg{
  width:100%; aspect-ratio:3/4; display:flex; align-items:center; justify-content:center;
  background:#efe9dd; color:#8a7a5c; font-size:3.765rem; font-weight:600;
}
.tcard-body{ padding:12px 14px 16px; }
.tcard-body h3{ margin:0 0 4px; font-size:1.059rem; line-height:1.3; }
.tcard-body p{ margin:0; font-size:0.882rem; }
.trole{ color:var(--accent, #7a5c2e); font-weight:600; margin:0 0 6px; }

/* страница одного преподавателя */
.tprofile{ display:flex; gap:24px; flex-wrap:wrap; align-items:flex-start; margin-bottom:18px; }
.tphoto{
  width:260px; max-width:100%; aspect-ratio:3/4; object-fit:cover; object-position:center top;
  border-radius:10px; border:1px solid var(--line, #d8d2c6);
}
.tbio{ max-width:70ch; font-size:1.0rem; line-height:1.65; }

@media (max-width:600px){
  .teachers{ grid-template-columns:1fr; }
  .tphoto{ width:100%; aspect-ratio:4/3; }
}

/* ── Основатель школы ──────────────────────────────────────────────
   Отдельная страница памяти: спокойная, без «карточной» пестроты. */
.founder{ display:flex; gap:28px; align-items:flex-start; flex-wrap:wrap; margin:10px 0 8px; }
.fphoto{
  width:280px; max-width:100%; aspect-ratio:1/1; object-fit:cover; object-position:center top;
  border-radius:10px; border:1px solid var(--line,#d8d2c6);
}
.fhead h1{ margin:2px 0 6px; }
.fkicker{ margin:0; color:var(--accent,#7a5c2e); font-weight:600; letter-spacing:.02em; }
.fyears{ margin:0 0 10px; font-size:1.118rem; color:#5b5347; }
.ftext{ max-width:70ch; font-size:1.0rem; line-height:1.7; }
.ftext p{ margin:0 0 1em; }

@media (max-width:600px){ .fphoto{ width:100%; aspect-ratio:4/3; } }

/* ── Карточка школы на главной ───────────────────────────────────── */
.school-meta{ margin:10px 0 12px; font-size:0.941rem; line-height:1.55; }
.school-meta div{ margin:3px 0; }
.school-meta .lbl{ color:#6b6355; }

/* ══════════════════════════════════════════════════════════════════════
   Главная страница: экран-приглашение → две школы → новости
   Блок преподавателей с главной убран, витрина живёт на /teachers/.
   ══════════════════════════════════════════════════════════════════════ */

/* --- гербы школ на экране-приглашении --- */
.hero-marks{display:flex;gap:18px;margin-bottom:22px}
.hero-marks img{width:96px;height:96px;display:block;
  filter:drop-shadow(0 2px 6px rgba(0,0,0,.14))}
.hero-lead{color:var(--ink-2);font-size:1.059rem;max-width:640px;margin:16px 0 26px}
.hero-cta{display:flex;gap:10px;flex-wrap:wrap}

/* --- три факта под приглашением --- */
.facts{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);
  gap:16px;margin:34px 0 0;padding:0}
.facts li{background:#fff;border:1px solid var(--line);border-radius:var(--r);
  padding:16px 18px}
.facts b{display:block;font-family:Georgia,serif;font-size:1.059rem;margin-bottom:4px}
.facts span{color:var(--ink-3);font-size:0.882rem;line-height:1.45}

.sec-lead{color:var(--ink-3);margin:-8px 0 18px;font-size:0.941rem}

/* --- карточка школы --- */
/* карточки школ тянутся до одной высоты — так ряд выглядит ровным */
.schools-grid{align-items:stretch}
.schools-grid .school-card{height:100%}
.school-card{background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;display:flex;flex-direction:column}
.sc-cover{position:relative;line-height:0}
.sc-cover img:not(.sc-badge){width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
/* Пока фотографии храма нет — спокойная заливка вместо пустоты. */
.sc-cover-empty{width:100%;aspect-ratio:16/9;
  background:linear-gradient(160deg,#e9ecf3,#d8dde8)}
.sc-badge{position:absolute;left:18px;bottom:-30px;width:74px;height:74px;
  border-radius:50%;background:#fff;padding:3px;
  box-shadow:0 2px 10px rgba(0,0,0,.18)}
.sc-body{padding:42px 20px 20px;display:flex;flex-direction:column;gap:12px;flex:1}
.sc-body h3{font-size:1.176rem;line-height:1.3}
.sc-text{color:var(--ink-2);margin:0;font-size:0.941rem}
.sc-meta{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0;font-size:0.882rem}
.sc-meta dt{color:var(--ink-4)}
.sc-meta dd{margin:0;color:var(--ink-2)}
.sc-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:auto;padding-top:6px}

/* --- новости плиткой --- */
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.ncard{display:block;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;text-decoration:none;color:inherit;
  transition:box-shadow .15s,transform .15s}
.ncard:hover,.ncard:focus{box-shadow:0 4px 14px rgba(0,0,0,.13);transform:translateY(-2px)}
.ncard:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.ncard img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block}
.ncard-body{padding:14px 16px 18px}
.ncard-body h3{font-size:1.059rem;line-height:1.3;margin:4px 0 6px}
.ncard-body p{margin:0;font-size:0.882rem}

/* --- приглашение внизу --- */
.invite{margin:40px 0 10px;background:var(--accent-soft);
  border:1px solid #e3cdd2;border-radius:var(--r);padding:26px 24px;text-align:center}
.invite h2{font-size:1.294rem;margin-bottom:6px}
.invite p{color:var(--ink-2);margin:0 0 16px}

@media (max-width:860px){
  .facts{grid-template-columns:1fr}
  .news-grid{grid-template-columns:1fr}
  .hero-marks img{width:74px;height:74px}
}


/* ══════════════════════════════════════════════════════════════════════
   ОБЛИК ПОРТАЛА — «ночное небо и золото»
   Взято из утверждённого герба: индигово-сливовая ночь, звёзды,
   золото оклада, багрянец. Фон страниц — тёплый пергамент вместо
   холодного серого: сайт про веру, а не про госуслуги.
   Контраст сохранён на уровне AA — аудитория немолодая.
   ══════════════════════════════════════════════════════════════════════ */
:root{
  --bg:#f7f4ee;                    /* тёплый пергамент */
  --line:#e6e0d5;
  --night-1:#8083c1; --night-2:#3b3f88; --night-3:#241f4f;
  --gold:#c9a03d; --gold-lt:#e3c877; --gold-dk:#8a6a1c;
  --cream:#f4efe2;
}

/* ── экран-приглашение: ночное небо ─────────────────────────────────── */
.hero-night{
  position:relative;overflow:hidden;border-bottom:none;
  background:
    radial-gradient(120% 90% at 50% 0%, #4a4a96 0%, #322c6f 45%, #241f4f 100%);
  background-color:#241f4f;
  padding:0;color:var(--cream);
}
.hero-night::before{            /* звёзды */
  content:"";position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(circle 1.1px at 8.76% 75.18%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 52.31% 43.83%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 89.21% 48.54%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 73.9% 63.69%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 55.06% 85.72%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 94.69% 66.43%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 97.19% 85.03%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 5.81% 51.33%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 10.22% 92.71%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 78.53% 13.51%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 2.58% 33.81%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 53.72% 55.24%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 26.75% 59.93%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 93.07% 32.08%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 38.27% 79.46%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 69.4% 65.57%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 56.4% 45.02%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 94.06% 50.56%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 58.61% 44.12%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 72.12% 4.45%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 48.05% 61.66%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 83.91% 24.56%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 19.79% 48.35%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 42.92% 43.49%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 59.47% 92.59%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 96.06% 53.82%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 98.75% 39.17%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 0.89% 33.29%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 14.22% 4.13%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 58.56% 66.67%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 93.28% 58.25%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 86.03% 76.39%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 50.1% 87.66%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 43.9% 14.73%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 44.29% 23.05%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 96.1% 53.71%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 28.87% 28.23%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 99.3% 38.95%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 89.81% 67.73%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 27.97% 60.93%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 79.63% 9.44%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 31.02% 36.03%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 44.45% 11.18%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 78.15% 81.02%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 46.56% 49.82%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 34.06% 71.43%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 16.36% 84.83%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 4.18% 89.44%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 70.55% 97.57%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 30.15% 35.48%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 26.25% 34.29%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 61.5% 62.03%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 77.92% 12.25%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 25.03% 43.22%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 14.86% 22.83%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 60.73% 90.59%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 28.9% 84.16%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 12.07% 94.19%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 29.53% 81.8%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 2.55% 89.52%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 87.05% 35.13%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 69.83% 50.06%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 49.63% 73.75%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 13.2% 91.05%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 61.85% 69.82%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 89.1% 79.97%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 81.74% 2.39%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 78.5% 66.96%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 71.76% 11.47%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 1.1px at 0.05% 4.66%, rgba(240,233,192,0.85) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 76.08% 19.23%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 63.62% 96.26%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 30.91% 23.3%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 62.7% 63.43%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 95.03% 72.21%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 48.56% 85.63%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 55.05% 72.28%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 9.66% 71.3%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 11.5% 90.48%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 43.8% 29.34%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 91.7% 92.88%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 6.51% 33.08%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 85.74% 23.23%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 45.1% 57.61%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 26.71% 81.73%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 79.96% 4.65%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 40.86% 16.31%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 95.46% 90.31%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 86.96% 44.0%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 86.91% 99.12%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 28.34% 6.59%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 76.52% 26.97%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 55.86% 0.65%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 99.52% 27.31%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 1.46% 65.68%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 50.69% 1.44%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 59.47% 15.86%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%),
    radial-gradient(circle 2px at 35.45% 50.18%, rgba(240,233,192,0.55) 0%, rgba(240,233,192,0) 100%);
}
.hero-night::after{             /* мягкое сияние снизу, как от лампады */
  content:"";position:absolute;left:50%;bottom:-30%;width:120%;height:70%;
  transform:translateX(-50%);pointer-events:none;
  background:radial-gradient(ellipse at center, rgba(201,160,61,.22) 0%, rgba(201,160,61,0) 65%);
}
.hero-inner{position:relative;z-index:2;padding:56px 18px 60px;text-align:center}

.hero-marks{display:flex;gap:26px;justify-content:center;margin:0 0 26px}
.hero-marks img{width:112px;height:112px;display:block;
  filter:drop-shadow(0 4px 18px rgba(0,0,0,.45))}

.hero-kicker{margin:0 0 14px;font-size:0.882rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--gold-lt)}

.hero-night h1{font-size:2.588rem;line-height:1.14;color:#fff;margin:0;
  text-shadow:0 2px 20px rgba(0,0,0,.35)}

/* строка Писания — смысловой центр экрана */
.hero-verse{margin:22px auto 0;max-width:620px;border:0;padding:0}
.hero-verse p{font-family:Georgia,"Times New Roman",serif;font-style:italic;
  font-size:1.235rem;line-height:1.5;color:var(--gold-lt);margin:0}
.hero-verse cite{display:block;margin-top:8px;font-style:normal;font-size:0.882rem;
  letter-spacing:.12em;color:rgba(244,239,226,.62)}

.hero-lead{color:rgba(244,239,226,.9);font-size:1.059rem;max-width:660px;
  margin:26px auto 30px;text-align:center}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.hero-night .btn{background:var(--gold);color:#241f4f;border:1.5px solid var(--gold)}
.hero-night .btn:hover,.hero-night .btn:focus{background:var(--gold-lt);border-color:var(--gold-lt)}
.hero-night .btn.ghost{background:transparent;color:var(--cream);border:1.5px solid rgba(227,200,119,.6)}
.hero-night .btn.ghost:hover,.hero-night .btn.ghost:focus{background:rgba(227,200,119,.14);color:#fff}

/* золотая линия-орнамент с крестиком — отделяет небо от земли */
.rule-gold{display:flex;align-items:center;gap:14px;justify-content:center;
  margin:36px 0 0;color:var(--gold)}
.rule-gold::before,.rule-gold::after{content:"";height:1px;flex:1;max-width:220px;
  background:linear-gradient(90deg,rgba(201,160,61,0),var(--gold),rgba(201,160,61,0))}
.rule-gold span{font-size:0.882rem;line-height:1}

/* ── заголовки разделов с золотым штрихом ───────────────────────────── */
.sec-title{position:relative;padding-top:14px}
.sec-title::before{content:"";position:absolute;top:0;left:0;width:46px;height:3px;
  background:linear-gradient(90deg,var(--gold),rgba(201,160,61,.15));border-radius:2px}

/* ── три факта: тёплые карточки с золотой цифрой ────────────────────── */
.facts li{background:#fffdf8;border-color:#ece4d3}
.facts b{color:var(--gold-dk)}

/* ── карточки школ ──────────────────────────────────────────────────── */
.school-card{border-color:#e9e1d2;box-shadow:0 1px 2px rgba(36,31,79,.05)}
.sc-cover-empty{background:
  radial-gradient(120% 100% at 50% 0%, #4a4a96 0%, #322c6f 50%, #241f4f 100%)}
.sc-badge{box-shadow:0 3px 14px rgba(36,31,79,.35)}

/* ── приглашение внизу ──────────────────────────────────────────────── */
.invite{background:
  radial-gradient(120% 140% at 50% 0%, #3b3f88 0%, #241f4f 100%);
  border:1px solid #241f4f;color:var(--cream);position:relative;overflow:hidden}
.invite h2{color:#fff}
.invite p{color:rgba(244,239,226,.85)}
.invite .btn{background:var(--gold);color:#241f4f;border:1.5px solid var(--gold)}
.invite .btn:hover,.invite .btn:focus{background:var(--gold-lt);border-color:var(--gold-lt)}

/* ── подвал в тон ───────────────────────────────────────────────────── */
.site-foot{background:#241f4f}

@media (max-width:860px){
  .hero-night h1{font-size:1.824rem}
  .hero-verse p{font-size:1.059rem}
  .hero-marks img{width:84px;height:84px}
  .hero-marks{gap:16px}
  .hero-inner{padding:40px 18px 44px}
}

/* Правки после первой примерки ночного экрана.
   Старое правило «.hero p» (0,1,1) специфичнее классов «.hero-lead»
   и «.hero-kicker» (0,1,0) и красило их тёмным по тёмному — текст
   пропадал. Поднимаем специфичность, а заодно центрируем заголовок:
   у «.hero h1» стоял max-width без авто-полей. */
.hero-night .hero-kicker{color:#e8d79a;font-size:0.882rem}
.hero-night .hero-lead{color:#efe9db;font-size:1.059rem}
.hero-night h1{max-width:840px;margin:0 auto}
.hero-night .hero-verse p{color:#f0dda2}
.hero-marks img{width:132px;height:132px}
@media (max-width:860px){ .hero-marks img{width:88px;height:88px} }

/* «.hero p» задавал ещё и max-width:600px с нулевыми боковыми полями —
   из-за этого описание прижималось влево. Возвращаем центрирование. */
.hero-night .hero-lead{max-width:680px;margin:26px auto 30px}

/* ── шапка в тон ночному небу ────────────────────────────────────────
   Светлая шапка над тёмным экраном выглядела как чужая деталь.
   Контраст кремового по индиго — с запасом по AA. */
.site-head{background:#241f4f;border-bottom:1px solid #37306b}
.site-head .logo{color:#f4efe2}
.site-head .logo span{color:#c9a03d}
nav.main a{color:#ded7c8}
nav.main a:hover,nav.main a:focus{background:rgba(227,200,119,.14);color:#fff}
nav.main a.active{color:#e3c877}
.burger{color:#f4efe2;border-color:#4a4383}

/* ══════════════════════════════════════════════════════════════════════
   ИСПРАВЛЕНИЯ ЧИТАЕМОСТИ (по разбору WCAG 2.2, уровень AA)
   ══════════════════════════════════════════════════════════════════════ */

/* Светло-серый --ink-4 давал 3,7:1 на белом при норме 4,5 — и стоял на
   подписях «Адрес/Занятия/Телефон» в карточках школ на ГЛАВНОЙ. */
:root{ --ink-4:#5b6675; }

/* Метки изменений в расписании после смены золотого цвета получили
   контраст 2,2:1. Это ровно та информация, ради которой люди заходят. */
.chg, .tag.man, table.sched tr.sp td{ color:var(--gold-dk); }

/* Рамки полей и «призрачных» кнопок: было 1,5–1,8:1 при норме 3:1 для
   границ элементов управления. Пожилой человек просто не видел, где поле. */
input,select,textarea{ border-color:#8a93a3; }
.btn.ghost{ border-color:#a8848c; }

/* Кольцо фокуса заменяло системное на почти невидимое (1,7:1).
   Возвращаем контрастное — это единственный ориентир при работе с клавиатуры. */
input:focus,select:focus,textarea:focus,
a:focus-visible,button:focus-visible{
  outline:3px solid var(--accent); outline-offset:2px;
}

/* Ссылка «Перейти к содержанию»: в шапке 6–10 пунктов, и без неё
   клавиатурный пользователь проходит их заново на каждой странице. */
.skip{position:absolute;left:-9999px;top:0;background:#fff;color:var(--accent);
  padding:.7rem 1.1rem;border:2px solid var(--accent);border-radius:0 0 8px 0;z-index:100}
.skip:focus{left:0}

/* Карточки больше не подпрыгивают под курсором: при треморе ряд карточек
   «дёргается», и человек не понимает, работает сайт или сломался. */
@media (prefers-reduced-motion:reduce){ *{transition:none!important;animation:none!important} }
.tcard:hover,.tcard:focus,.ncard:hover,.ncard:focus{ transform:none; }

/* Цифры и даты — моноширинные и одной высоты. Georgia отдаёт минускульные
   цифры: в колонке дат 3, 4, 5, 7, 9 уходят под строку, столбец «пляшет». */
table.sched td.dt, table.sched tr.mon td, .news-item .date, .ev .d, .ncard-body .date{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  font-variant-numeric:tabular-nums lining-nums;
}

/* ══════════════════════════════════════════════════════════════════════
   НОВЫЕ РАЗДЕЛЫ: Поступление и Программа
   ══════════════════════════════════════════════════════════════════════ */

/* ── тёмная шапка внутренней страницы ── */
.pagehead{background:radial-gradient(120% 90% at 50% 0%, #4a4a96 0%, #322c6f 45%, #241f4f 100%);
  color:var(--cream);padding:2.6rem 0 2.4rem;text-align:center;position:relative;overflow:hidden}
.pagehead::after{content:"";position:absolute;left:50%;bottom:-40%;width:120%;height:80%;
  transform:translateX(-50%);pointer-events:none;
  background:radial-gradient(ellipse at center, rgba(201,160,61,.2), rgba(201,160,61,0) 65%)}
.pagehead .wrap{position:relative;z-index:2}
.pagehead h1{font-size:2rem;color:#fff;max-width:22ch;margin:0 auto}
.pagehead p{color:#efe9db;max-width:56ch;margin:.9rem auto 0}
.pagehead .kicker{font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;
  color:#e8d79a;margin:0 0 .6rem}

/* ── Поступление ── */
.terms{list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));
  gap:1rem;margin:1.8rem 0 0;padding:0}
.terms li{background:#fffdf8;border:1px solid #ece4d3;border-radius:var(--r);padding:1.1rem 1.2rem}
.terms b{display:block;font-family:Georgia,serif;font-size:1.15rem;color:var(--gold-dk);margin-bottom:.25rem}
.terms .big{font-size:1.45rem}
.steps{list-style:none;counter-reset:s;padding:0;margin:0;max-width:62ch}
.steps li{counter-increment:s;position:relative;padding:0 0 1.3rem 3.2rem;
  border-left:2px solid var(--line);margin-left:1.1rem}
.steps li:last-child{border-left-color:transparent;padding-bottom:0}
.steps li::before{content:counter(s);position:absolute;left:-1.15rem;top:-.15rem;
  width:2.2rem;height:2.2rem;border-radius:50%;background:#241f4f;color:var(--gold-lt);
  display:grid;place-items:center;font-family:Georgia,serif;font-variant-numeric:lining-nums}
.steps h3{font-size:1.1rem;margin-bottom:.2rem}
.steps p{margin:.1rem 0 0;color:var(--ink-2)}
.docs{list-style:none;padding:0;margin:0;display:grid;gap:.6rem;max-width:40rem}
.docs a{display:flex;align-items:center;gap:.9rem;background:#fff;border:1px solid var(--line);
  border-radius:10px;padding:.9rem 1.1rem;text-decoration:none;color:var(--ink);min-height:48px}
.docs a:hover,.docs a:focus-visible{border-color:var(--gold);background:#fffdf8}
.docs .kind{font-size:.85rem;letter-spacing:.06em;color:var(--ink-3);
  border:1px solid var(--line);border-radius:6px;padding:.15rem .5rem;flex:none}
.docs .nm{font-weight:600}

/* ── Программа: витрина предметов ── */
.group{margin-bottom:2rem}
.group-title{font-size:1.15rem;color:var(--ink-2);margin:0 0 .7rem;
  padding-bottom:.4rem;border-bottom:1px solid var(--line)}
.subjects{display:grid;grid-template-columns:repeat(auto-fill,minmax(15.5rem,1fr));gap:.9rem}
.subj{display:flex;gap:.9rem;align-items:center;background:#fff;border:1px solid var(--line);
  border-radius:var(--r);padding:.85rem 1rem;text-decoration:none;color:inherit;min-height:5rem}
.subj:hover,.subj:focus-visible{border-color:var(--gold);box-shadow:0 3px 12px rgba(36,31,79,.1)}
.cap{flex:none;width:3.4rem;height:3.4rem;border-radius:10px;display:grid;place-items:center;
  background:radial-gradient(120% 120% at 30% 0%, #4a4a96, #241f4f);
  color:var(--gold-lt);font-family:Georgia,serif;font-size:1.7rem;line-height:1}
.subj .t{font-family:Georgia,serif;font-size:1.05rem;line-height:1.25}
.subj .n{display:block;font-size:.88rem;color:var(--ink-3);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;margin-top:.2rem}

/* ── страница предмета ── */
.subj-grid{display:grid;grid-template-columns:1fr 17rem;gap:2rem;align-items:start;margin-top:.5rem}
.deffn{background:#fffdf8;border-left:4px solid var(--gold);border-radius:0 10px 10px 0;
  padding:1rem 1.2rem;margin-bottom:1.6rem}
.deffn p{margin:0 0 .6rem;color:var(--ink-2)}
.deffn p:last-child{margin-bottom:0}
.quote{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1.3rem 1.4rem}
.quote p{margin:0 0 .8rem}
.quote p:last-of-type{margin-bottom:0}
.quote .who{display:flex;gap:.8rem;align-items:center;margin-top:1rem;
  padding-top:.9rem;border-top:1px solid var(--line)}
.quote .who img{width:3rem;height:3rem;border-radius:50%;object-fit:cover;flex:none}
.quote .who .ava{width:3rem;height:3rem;border-radius:50%;flex:none;display:grid;place-items:center;
  background:radial-gradient(120% 120% at 30% 0%, #4a4a96, #241f4f);
  color:var(--gold-lt);font-family:Georgia,serif;font-size:1.3rem}
.quote .who b{display:block;font-family:Georgia,serif}
.quote .who span span{font-size:.9rem;color:var(--ink-3)}
.biblio{list-style:none;padding:0;margin:0;counter-reset:b}
.biblio li{counter-increment:b;display:flex;gap:.9rem;padding:.75rem 0;border-bottom:1px solid var(--line)}
.biblio li::before{content:counter(b) ".";font-variant-numeric:tabular-nums;color:var(--gold-dk);
  font-family:Georgia,serif;flex:none;min-width:1.6rem}
.biblio .au{color:var(--ink-3);font-size:.9rem;display:block}
.aside{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1.1rem 1.2rem}
.aside h3{margin:0 0 .6rem;font-size:1.05rem}
.aside dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:.35rem .8rem;font-size:.95rem}
.aside dt{color:var(--ink-3)}
.aside dd{margin:0}

@media (max-width:860px){
  .subj-grid{grid-template-columns:1fr}
  .pagehead h1{font-size:1.6rem}
}


/* Регулятор размера текста. Раньше он вешал класс на body и менял кегль
   только у текста БЕЗ собственного размера — то есть у трёх-четырёх
   абзацев из сорока. Теперь класс на корне и все размеры в rem, поэтому
   один множитель увеличивает страницу целиком. Шаг +25%: прибавка в 12%,
   как было (17→19px), при пресбиопии просто не замечается. */
html.big{ font-size:132%; }

/* Кнопка переехала из подвала в шапку: до подвала человек с плохим
   зрением не долистает, а если долистает — уже намучившись. Шапка
   липкая, значит кнопка доступна с любого места страницы. */
.textsize button{ display:inline-flex; align-items:center; justify-content:center;
  gap:.35rem; min-width:44px; min-height:44px; padding:.35rem .6rem;
  cursor:pointer; font:inherit; font-size:.95rem; font-weight:600;
  border-radius:8px; border:1px solid var(--line); background:#fff;
  color:var(--ink-2); }
.textsize .ts-a{ font-family:Georgia,serif; font-size:1.15rem; line-height:1;
  letter-spacing:-.02em; white-space:nowrap; }

/* В шапке кнопка одна и без подписи: шире её ставить некуда — меню
   тут же переезжает на вторую строку и шапка съедает пол-экрана.
   Полное название кнопка сообщает диктору и всплывающей подсказкой,
   а подробный, подписанный словами переключатель остался ещё и в подвале. */
/* Кнопка приколочена к правому верхнему углу шапки и не участвует
   в перестроении строки. Иначе получалось так: человек нажимает «А+»,
   всё вырастает, меню переезжает на вторую строку — и кнопка уезжает
   в другое место. Найти её снова, чтобы вернуть обычный размер, пожилому
   человеку тяжело. Место под кнопку отведено отступом справа, поэтому
   меню под неё не залезает. */
.site-head .wrap{ position:relative; padding-right:60px; }
.site-head .textsize{ position:absolute; right:10px; top:8px; margin:0; flex:none; }
/* Размер кнопки задан в точках, а не в rem: она одна на сайте не должна
   расти вместе с текстом, иначе после нажатия сама уезжает с места.
   48 точек — больше нормы в 44, палец попадает. */
.site-head .textsize button{ width:48px; height:48px; min-width:0; padding:0; }
.site-head .textsize .ts-a{ font-size:19px; }
/* Название при нехватке места переносится по словам, а не залезает
   под кнопки: они лежат поверх строки и текст бы просто ушёл под них. */
.site-head .logo{ min-width:0; overflow-wrap:break-word; }

@media (max-width:1023px){
  /* На телефоне и планшете рядом стоит «Меню» — обе кнопки в том же углу,
     и обе остаются на месте при увеличении. */
  .site-head .wrap{ padding-right:118px; }
  .site-head .textsize{ right:66px; }
  .burger{ position:absolute; right:10px; top:8px; margin:0; height:48px; }
}
@media (max-width:420px){
  .site-head .wrap{ padding-right:112px; }
  .site-head .textsize{ right:60px; }
}
.site-head .textsize button{ border-color:#4a4383;
  background:rgba(255,255,255,.07); color:#f4efe2; }
.site-head .textsize button:hover{ background:rgba(227,200,119,.16); }
.textsize button[aria-pressed="true"]{ background:#e3c877; color:#241f4f;
  border-color:#e3c877; }
/* Включённое состояние важнее наведения: иначе, пока курсор стоит на
   кнопке, она выглядит выключенной и человек жмёт второй раз. */
.site-head .textsize button[aria-pressed="true"],
.site-head .textsize button[aria-pressed="true"]:hover{
  background:#e3c877; color:#241f4f; border-color:#e3c877; }
.site-head .textsize .ts-w{ display:none; }

/* Текст только для экранного диктора: на виду его нет, но в озвучке
   кнопка называется полностью, а не одной буквой «А». */
.vh{ position:absolute; width:1px; height:1px; margin:-1px; padding:0;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }

/* Меню больше не отжимает шапку вправо само — это делает кнопка
   размера, стоящая перед ним. */
.site-head nav.main{ margin-left:0; }

/* Видеозаписи в «Открытых лекциях»: тот же список, что и документы,
   но со значком воспроизведения вместо подписи формата. */
.videos .play{flex:none;width:2.6rem;height:2.6rem;border-radius:50%;
  display:grid;place-items:center;font-size:1rem;
  background:radial-gradient(120% 120% at 30% 0%, #4a4a96, #241f4f);color:var(--gold-lt)}
.videos .nm{display:block}
.videos .au{display:block;font-size:.9rem;color:var(--ink-3);margin-top:.15rem}

/* Новая подпись длиннее прежней, и на ноутбуке меню переносилось
   на вторую строку — шапка становилась вдвое выше и съедала экран.
   Ужимаем ровно настолько, чтобы всё встало в одну строку, не опускаясь
   ниже 15px и сохраняя тап-таргет 44px. */
@media (min-width:1024px){
  .site-head .logo{font-size:1.05rem}
  .site-head .logo span{font-size:.72rem;letter-spacing:.04em}
  /* Ужато ещё немного, чтобы кнопка размера текста встала с меню
     в одну строку: шапка держится в 65 точек на всех ширинах от 1024.
     Высота ссылки остаётся 44 точки — палец попадает. */
  nav.main a{font-size:.9rem;padding:.5rem .35rem}
  .site-head .wrap{gap:10px}
}

/* ══════════════════════════════════════════════════════════════════════
   ФОТОГАЛЕРЕЯ
   Раньше галерея выводила все снимки всех альбомов на одной странице.
   С архивом в три сотни фотографий это десятки мегабайт: с телефона —
   минуты ожидания и чужой оплаченный трафик. Теперь список альбомов,
   внутри — сетка миниатюр, полный кадр только по нажатию.
   ══════════════════════════════════════════════════════════════════════ */
.alb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  gap:1.1rem;margin:1.4rem 0}
.alb{display:block;background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);overflow:hidden;text-decoration:none;color:inherit;
  transition:box-shadow .15s,transform .15s}
.alb:hover,.alb:focus{box-shadow:0 4px 14px rgba(0,0,0,.13);transform:translateY(-2px)}
.alb:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
/* height:auto обязателен: в разметке у снимков стоят width/height —
   они держат место до загрузки, но без сброса перебивают aspect-ratio
   и карточка вытягивается. */
.alb img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;display:block;background:#ece7dd}
.alb-body{padding:.85rem 1rem 1.1rem}
.alb-body h3{font-size:1.06rem;line-height:1.3;margin:.2rem 0 .35rem}
.alb-body p{margin:0;font-size:.88rem}
.alb-body .date{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  font-variant-numeric:tabular-nums lining-nums;font-size:.82rem;color:var(--ink-3)}

.ph-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));
  gap:.6rem;margin:1.4rem 0}
.ph-grid a{display:block;border-radius:10px;overflow:hidden;background:#ece7dd}
.ph-grid a:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.ph-grid img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;display:block}

@media (prefers-reduced-motion:reduce){ .alb:hover,.alb:focus{transform:none} }
@media (max-width:860px){
  .alb-grid{grid-template-columns:1fr}
  .ph-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
}


/* Шапка на телефоне: логотип, кнопка размера текста и «Меню» в одну
   строку. Кнопка размера видна всегда — не спрятана внутри меню,
   потому что нужна она раньше, чем человек решит куда-то перейти. */
@media (max-width:860px){
  /* На телефоне в строку должны уместиться логотип, кнопка размера и
     «Меню». Считано по iPhone SE (360): подпись под названием занимала
     269 точек — на телефоне её убираем, то же самое написано первой
     строкой на главной. Само название остаётся. */
  .site-head .wrap{ gap:8px; }
  .site-head .logo span{ display:none; }
  .textsize{ margin-left:auto; order:2; }
  .burger{ margin-left:0; order:2; }
  nav.main{ order:3; }
}

/* Самые узкие телефоны (360 точек и меньше): слово «Меню» рядом со
   значком уже не помещается, остаётся значок с подписью для диктора. */
@media (max-width:420px){
  .burger{ width:44px; font-size:0; }
  .burger::before{ content:"\2630"; font-size:1.35rem; }
}

/* Ссылка «Фотогалерея» в тёмной шапке страницы альбома шла базовым
   багряным цветом — по индиго это почти нечитаемо. Возвращаем золото. */
.pagehead .kicker a{ color:#e3c877; text-decoration:underline; }
.pagehead .kicker a:hover{ color:#fff; }

/* ══════════════════════════════════════════════════════════════════════
   ПРОСМОТР ФОТОГРАФИИ ПОВЕРХ СТРАНИЦЫ
   Снимок разворачивается над сайтом, стрелки листают альбом. Кнопки
   крупные (56 точек) и с подписями там, где место позволяет: аудитория
   немолодая, попадать в маленький крестик пальцем тяжело.
   ══════════════════════════════════════════════════════════════════════ */
html.lb-open, html.lb-open body{ overflow:hidden; }   /* фон не прокручивается

   Снимок показывается по центру, подпись и счётчик — внизу. Полоски
   сверху и снизу не перекрывают кадр: он ужимается под них сам. */
.lb{ display:none; position:fixed; inset:0; z-index:100;
  background:rgba(13,11,30,.985); }
.lb.on{ display:block; }
/* flex, а не grid: у grid-ячейки высота считается по содержимому,
   и max-height:100% у снимка не срабатывал — кадр вылезал за экран. */
.lb-stage{ position:absolute; inset:64px 12px 64px;
  display:flex; align-items:center; justify-content:center; }
.lb-stage img{ max-width:100%; max-height:100%; width:auto; height:auto;
  display:block; border-radius:8px; box-shadow:0 10px 40px rgba(0,0,0,.5); }
.lb-spin{ position:absolute; color:#ded7c8; font-size:.95rem; }

.lb-close{ position:absolute; top:10px; right:12px; z-index:2;
  display:inline-flex; align-items:center; gap:.4rem;
  min-height:44px; padding:.5rem .9rem; cursor:pointer;
  font:inherit; font-size:.95rem; border-radius:8px;
  border:1px solid #4a4383; background:rgba(255,255,255,.1); color:#f4efe2; }
.lb-close:hover{ background:rgba(227,200,119,.2); }

/* Сама кнопка — широкая прозрачная полоса во всю высоту кадра, видимый
   кружок нарисован внутри. Промах мимо кружка всё равно листает: попасть
   пальцем в круг 56 точек на ходу тяжело, а раньше промах ещё и закрывал
   просмотр. */
.lb-nav{ position:absolute; top:64px; bottom:64px; z-index:2;
  width:110px; padding:0; border:0; background:none; cursor:pointer;
  display:flex; align-items:center; justify-content:center; }
.lb-nav .lb-ic{ width:56px; height:56px; border-radius:50%;
  border:1px solid #4a4383; background:rgba(255,255,255,.1); color:#f4efe2;
  font-size:2rem; line-height:1; display:grid; place-items:center; }
.lb-nav:hover .lb-ic{ background:rgba(227,200,119,.2); }
.lb-nav[hidden]{ display:none; }
.lb-prev{ left:0; }
.lb-next{ right:0; }

.lb-bar{ position:absolute; left:0; right:0; bottom:0; min-height:56px;
  display:flex; align-items:center; justify-content:center; gap:1rem;
  padding:.8rem 1rem; color:#ded7c8; font-size:.95rem; text-align:center; }
.lb-num{ font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  font-variant-numeric:tabular-nums lining-nums; color:#e3c877; white-space:nowrap; }

.lb button:focus-visible{ outline:3px solid #e3c877; outline-offset:2px; }

@media (max-width:860px){
  /* На телефоне стрелки опускаем вниз, к большому пальцу, и уводим
     с самого кадра — иначе они закрывают лица на снимке. */
  .lb-stage{ inset:60px 6px 104px; }
  /* На телефоне полосы листания лежат внизу и занимают почти половину
     ширины каждая — мимо не промахнёшься. */
  .lb-nav{ top:auto; bottom:0; height:96px; width:46%; align-items:center; }
  .lb-nav .lb-ic{ width:76px; height:56px; border-radius:12px; }
  .lb-prev{ left:0; }
  .lb-next{ right:0; }
  .lb-bar{ bottom:76px; min-height:0; padding:.4rem 1rem; }
  .lb-close{ font-size:.9rem; }
}

/* ══════════════════════════════════════════════════════════════════════
   ПРОСМОТР ДОКУМЕНТА ПОВЕРХ СТРАНИЦЫ
   Устроен так же, как просмотр фотографии: сверху полоса с названием,
   кнопками «Скачать» и «Закрыть», ниже — сам документ во всю высоту.
   Закрывает только кнопка и Esc: нажатие мимо ничего не делает, чтобы
   человек не вылетал из документа случайным касанием.
   ══════════════════════════════════════════════════════════════════════ */
.dv{ display:none; position:fixed; inset:0; z-index:100; background:#241f4f; }
.dv.on{ display:flex; flex-direction:column; }
.dv-bar{ flex:none; display:flex; align-items:center; gap:.6rem;
  padding:8px 10px; background:#1b1740; border-bottom:1px solid #37306b; }
.dv-title{ flex:1 1 auto; min-width:0; color:#f4efe2; font-size:1rem;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; padding-left:.4rem; }
.dv-btn{ flex:none; display:inline-flex; align-items:center; gap:.35rem;
  min-height:44px; padding:.5rem .9rem; cursor:pointer; text-decoration:none;
  font:inherit; font-size:.95rem; border-radius:8px;
  border:1px solid #4a4383; background:rgba(255,255,255,.1); color:#f4efe2; }
.dv-btn:hover{ background:rgba(227,200,119,.2); color:#fff; }
.dv-btn:focus-visible{ outline:3px solid #e3c877; outline-offset:2px; }
.dv-frame{ flex:1 1 auto; width:100%; border:0; background:#f7f4ee; }
.dv-hint{ flex:none; margin:0; padding:.55rem 1rem; text-align:center;
  background:#1b1740; color:#ded7c8; font-size:.85rem; }

@media (max-width:520px){
  .dv-title{ font-size:.9rem; }
  .dv-btn{ padding:.5rem .7rem; font-size:.88rem; }
}

/* ── «Выйти» ──
   Выход обязан отправляться формой (Django 5 на ссылку отвечает 405),
   но человек не должен видеть разницы: кнопка выглядит и ведёт себя
   как соседние пункты меню. */
nav.main form.exit{ display:inline-flex; margin:0; }
nav.main form.exit button{ font:inherit; font-size:0.882rem; color:var(--ink-2);
  background:none; border:0; cursor:pointer; padding:10px 12px; border-radius:8px;
  min-height:44px; display:inline-flex; align-items:center; }
nav.main form.exit button:hover, nav.main form.exit button:focus{
  background:var(--accent-soft); color:var(--accent); }
.site-head nav.main form.exit button{ color:#ded7c8; }
.site-head nav.main form.exit button:hover,
.site-head nav.main form.exit button:focus{
  background:rgba(227,200,119,.14); color:#fff; }
@media (max-width:1023px){
  /* в раскрытом меню пункты идут столбиком — кнопка тоже */
  nav.main form.exit{ display:flex; }
  nav.main form.exit button{ width:100%; justify-content:flex-start; }
}


/* ── Объявление о наборе: узкая полоса над шапкой ────────────────────
   Временное. Тот же «ночь и золото», что и главный экран, но тонкой
   лентой: видно сразу на любой странице и на любом экране, а по виду
   понятно, что это объявление, а не часть сайта. Не липкое — на телефоне
   уезжает при прокрутке и не отнимает места у страницы. */
.adm-strip{background:linear-gradient(90deg,#241f4f,#3b3f88 50%,#241f4f);
  border-bottom:2px solid var(--gold);color:var(--cream)}
.adm-strip-in{display:flex;align-items:center;gap:18px;padding-top:14px;padding-bottom:14px}
/* Крупнее обычного текста сайта: читают люди немолодые (владелец, 30.09). */
.adm-strip p{margin:0;flex:1 1 auto;font-size:1.176rem;line-height:1.45}
.adm-strip b{color:#fff;font-weight:600}
.adm-star{color:var(--gold-lt);font-size:1.5rem;flex:0 0 auto}
.adm-left-s{display:block;color:var(--gold-lt);font-size:1.059rem;margin-top:2px}
.adm-strip-btn{flex:0 0 auto;background:var(--gold);color:#241f4f;font-weight:700;
  font-size:1.059rem;padding:12px 26px;border-radius:26px;text-decoration:none;
  min-height:48px;display:inline-flex;align-items:center}
.adm-strip-btn:hover,.adm-strip-btn:focus{background:var(--gold-lt);color:#241f4f}
.adm-strip.last{border-bottom-color:var(--gold-lt)}
@media(max-width:760px){
  .adm-strip-in{flex-wrap:wrap;gap:8px 10px;padding-top:10px;padding-bottom:10px}
  .adm-star{display:none}
  .adm-strip p{flex-basis:100%;font-size:1.059rem}
  .adm-strip-btn{width:100%;justify-content:center}
}
.adm-note{background:#fffaea;border:1px solid #ecdca8;border-left:4px solid var(--gold);
  border-radius:9px;padding:10px 14px;color:#5f4f22;font-size:.95rem;margin:10px 0 16px}
