/* ══════════════════════════════════════════════════════════════
   legal.css — v56.1
   Юридический блок платформы:
     1) страница документа (/legal/policy, /legal/consent, /legal/cookies)
        — светлая, «бумажная», сразу пригодная к печати;
     2) шторка документа на форме регистрации (текст подгружается по клику,
        в HTML формы его нет);
     3) новые элементы формы регистрации: подсказка у поля группы, блок
        согласий, ветка несовершеннолетнего.
   Пункты 2–3 живут на тёмном «стеклянном» экране входа (layout student_login),
   поэтому у них своя палитра.
   ══════════════════════════════════════════════════════════════ */

/* ═══ 1. СТРАНИЦА ДОКУМЕНТА ═══════════════════════════════════ */

.legal-body {
  margin: 0;
  background: #eef2f7;
  color: #17222f;
  font-family: 'Nunito', 'Segoe UI', system-ui, -apple-system, sans-serif;
  font-size: 16px;
  line-height: 1.62;
  -webkit-text-size-adjust: 100%;
}

.legal-page {
  max-width: 860px;
  margin: 0 auto;
  padding: 1.5rem 1rem 3rem;
}

.legal-head {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  background: #fff;
  border: 1px solid #dde5ee;
  border-radius: 16px 16px 0 0;
  border-bottom: 2px solid #0ea5e9;
  padding: 1.4rem 1.6rem;
}
.legal-head__platform {
  font-size: .74rem;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
  color: #6b8299;
  margin-bottom: .35rem;
}
.legal-head__title {
  font-size: 1.5rem;
  font-weight: 900;
  line-height: 1.2;
  margin: 0 0 .6rem;
  color: #0f2233;
}
.legal-head__meta { display: flex; flex-wrap: wrap; gap: .4rem; }

.legal-chip {
  display: inline-block;
  padding: .18rem .6rem;
  border-radius: 999px;
  background: #e8f4fd;
  border: 1px solid #bfe0f7;
  color: #0b6a99;
  font-size: .76rem;
  font-weight: 800;
}
.legal-chip--warn { background: #fff5e6; border-color: #ffd9a0; color: #96590c; }

/* v56.3: дата редакции — мелкая подпись, а не «плашка». Номера редакций на
   странице больше нет вовсе (он остался только в журнале согласий). */
.legal-when {
  font-size: .78rem;
  font-weight: 600;
  color: #7a8fa3;
}

.legal-head__actions { display: flex; gap: .5rem; flex-shrink: 0; }

/* Кнопкой может быть и <button>, и <a> («Отдельной страницей»): у ссылки
   браузер сам рисует подчёркивание, и кнопка выглядела как текст со
   ссылкой. Снимаем явно — v56.3. */
.legal-btn {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  padding: .5rem 1rem;
  border-radius: 10px;
  border: 1px solid transparent;
  background: #0ea5e9;
  color: #fff;
  font: inherit;
  font-size: .87rem;
  font-weight: 800;
  text-decoration: none;
  cursor: pointer;
  transition: background .18s, box-shadow .18s, transform .18s;
}
.legal-btn:hover, .legal-btn:focus { text-decoration: none; }
.legal-btn:hover { background: #0284c7; box-shadow: 0 4px 14px rgba(14,165,233,.28); }
.legal-btn:active { transform: translateY(1px); }
.legal-btn--ghost { background: #fff; color: #33566f; border-color: #cfdbe6; }
.legal-btn--ghost:hover { background: #f2f7fb; box-shadow: none; }

.legal-content {
  background: #fff;
  border: 1px solid #dde5ee;
  border-top: none;
  border-radius: 0 0 16px 16px;
  padding: 1.8rem 1.6rem 2.2rem;
}
.legal-content h2 { font-size: 1.2rem; font-weight: 900; margin: 1.6rem 0 .6rem; color: #0f2233; }
.legal-content h3 { font-size: 1.02rem; font-weight: 800; margin: 1.2rem 0 .45rem; color: #1d3245; }
.legal-content h2:first-child, .legal-content h3:first-child { margin-top: 0; }
.legal-content p { margin: 0 0 .85rem; }
.legal-content ul, .legal-content ol { margin: 0 0 .95rem; padding-left: 1.5rem; }
.legal-content li { margin-bottom: .35rem; }
.legal-content table { width: 100%; border-collapse: collapse; margin: 0 0 1rem; font-size: .93rem; }
.legal-content th, .legal-content td { border: 1px solid #dde5ee; padding: .5rem .7rem; text-align: left; vertical-align: top; }
.legal-content th { background: #f4f8fb; font-weight: 800; }
.legal-content a { color: #0b6a99; }
/* Таблица документа на телефоне прокручивается сама, а не растягивает лист:
   три-четыре колонки с длинными словами не помещаются в 389 px, и страница
   политики была на 260 px шире экрана, а текст документа в шторке
   регистрации ездил вбок целиком. */
@media (max-width: 575.98px) {
  .legal-content table,
  .legal-drawer__body table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
}

.legal-stub {
  border: 1px dashed #cbd8e4;
  border-radius: 12px;
  background: #f8fbfe;
  padding: 1.2rem 1.3rem;
}
.legal-stub__title { font-size: 1.1rem; font-weight: 900; margin: 0 0 .7rem; color: #0f2233; }
.legal-stub p { margin: 0 0 .6rem; }
.legal-stub p:last-child { margin-bottom: 0; }

.legal-foot {
  margin-top: 1rem;
  text-align: center;
  font-size: .78rem;
  color: #6b8299;
}

@media print {
  .legal-body { background: #fff; }
  .legal-page { max-width: none; padding: 0; }
  .legal-head { border: none; border-bottom: 2px solid #333; border-radius: 0; padding: 0 0 .6rem; }
  .legal-head__actions { display: none; }   /* кнопки на бумаге не нужны */
  .legal-content { border: none; padding: 1rem 0 0; }
  .legal-chip { border: 1px solid #999; background: none; color: #333; }
  a[href]::after { content: ''; }
}

/* ═══ 2. ШТОРКА ДОКУМЕНТА (на форме регистрации) ══════════════ */
/* Элемент переносится скриптом в конец <body>: у карточки формы есть
   backdrop-filter, а он создаёт систему координат для position:fixed —
   внутри карточки шторка обрезалась бы её границами. */

.legal-drawer {
  position: fixed;
  inset: 0;
  z-index: 3000;
  display: flex;
  justify-content: flex-end;
}
.legal-drawer[hidden] { display: none; }

.legal-drawer__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(2, 13, 28, .68);
  backdrop-filter: blur(3px);
  animation: legal-fade .2s ease both;
}

.legal-drawer__panel {
  position: relative;
  width: min(680px, 100%);
  height: 100%;
  display: flex;
  flex-direction: column;
  background: #fbfdff;
  color: #17222f;
  box-shadow: -20px 0 60px rgba(0, 0, 0, .45);
  animation: legal-slide .26s cubic-bezier(.22, 1, .36, 1) both;
  font-family: 'Nunito', 'Segoe UI', system-ui, sans-serif;
}
@keyframes legal-fade { from { opacity: 0; } to { opacity: 1; } }
@keyframes legal-slide { from { transform: translateX(28px); opacity: .4; } to { transform: none; opacity: 1; } }

.legal-drawer__head {
  display: flex;
  align-items: flex-start;
  gap: .8rem;
  padding: 1rem 1.15rem;
  border-bottom: 1px solid #e2eaf2;
  background: #fff;
}
.legal-drawer__headtext { min-width: 0; }
.legal-drawer__title { font-size: 1.02rem; font-weight: 900; line-height: 1.25; margin: 0 0 .3rem; }
.legal-drawer__meta { display: flex; flex-wrap: wrap; gap: .35rem; }
.legal-drawer__tools { margin-left: auto; display: flex; gap: .4rem; flex-shrink: 0; }

.legal-drawer__body {
  flex: 1;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding: 1.2rem 1.25rem 2rem;
  line-height: 1.6;
}
.legal-drawer__body h2 { font-size: 1.12rem; font-weight: 900; margin: 1.3rem 0 .55rem; }
.legal-drawer__body h3 { font-size: .98rem; font-weight: 800; margin: 1rem 0 .4rem; }
.legal-drawer__body h2:first-child, .legal-drawer__body h3:first-child { margin-top: 0; }
.legal-drawer__body p { margin: 0 0 .8rem; }
.legal-drawer__body ul, .legal-drawer__body ol { margin: 0 0 .9rem; padding-left: 1.4rem; }
.legal-drawer__body li { margin-bottom: .3rem; }
.legal-drawer__body a { color: #0b6a99; }

.legal-drawer__loading, .legal-drawer__error { padding: .4rem 0; font-weight: 700; color: #33566f; }
.legal-drawer__error { color: #b42318; }
.legal-drawer__error a { color: #b42318; font-weight: 800; }

/* v56.3: нижняя полоса шторки удалена вместе с заметкой о печати — кнопка
   «Отдельной страницей» есть в шапке, подпись под ней только повторяла её. */

/* На телефоне название документа и две кнопки в одну строку не встают:
   заголовок ужимался до трёх слов в столбик и налезал на кнопки (поймано
   на снимке приёмки v56.3). Раскладываем шапку в две строки. */
@media (max-width: 560px) {
  .legal-drawer__panel { width: 100%; }
  .legal-drawer__head {
    flex-direction: column;
    align-items: stretch;
    gap: .6rem;
    padding: .85rem .9rem;
  }
  .legal-drawer__title { font-size: .95rem; }
  .legal-drawer__meta { margin-top: .15rem; }
  .legal-drawer__tools { margin-left: 0; }
  .legal-drawer__tools .legal-btn { flex: 1; justify-content: center; padding: .45rem .7rem; font-size: .82rem; }
  .legal-drawer__body { padding: 1rem .9rem 1.6rem; }
}

/* ═══ 3. ФОРМА РЕГИСТРАЦИИ (тёмный «стеклянный» экран) ════════ */

/* Сообщение под полем: видимое и остающееся на месте — в отличие от всплывашки,
   которая улетает раньше, чем человек успел прочитать. */
.reg-msg {
  display: none;
  align-items: flex-start;
  gap: .45rem;
  margin-top: .5rem;
  padding: .5rem .7rem;
  border-radius: 10px;
  font-size: .8rem;
  font-weight: 700;
  line-height: 1.4;
  border: 1px solid transparent;
}
.reg-msg--on { display: flex; }
.reg-msg i { margin-top: .15rem; flex-shrink: 0; }
.reg-msg--info  { background: rgba(14,165,233,.1);  border-color: rgba(14,165,233,.3);  color: #7dd3fc; }
.reg-msg--ok    { background: rgba(16,185,129,.12); border-color: rgba(16,185,129,.32); color: #6ee7b7; }
.reg-msg--warn  { background: rgba(245,158,11,.12); border-color: rgba(245,158,11,.34); color: #fcd34d; }
.reg-msg--error { background: rgba(239,68,68,.12);  border-color: rgba(239,68,68,.34);  color: #fca5a5; }

/* Спокойная подсказка под полем группы — как пользоваться полем */
.reg-hint {
  margin-top: .45rem;
  font-size: .76rem;
  font-weight: 600;
  line-height: 1.4;
  color: rgba(148,200,230,.6);
}

/* Подсказка к PIN: те же три состояния, что и у оценки надёжности */
.pin-hint--warn { color: #fcd34d; }
.pin-hint--ok   { color: #6ee7b7; }

/* Блок согласий */
.reg-legal {
  margin-top: 1.1rem;
  padding: .9rem 1rem;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.045);
}
.reg-legal__title {
  font-size: .71rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: rgba(148,200,230,.75);
  margin-bottom: .7rem;
}

/* Своя галочка: у нативной в тёмной теме не видно ни рамки, ни отметки */
.reg-check {
  display: flex;
  align-items: flex-start;
  gap: .6rem;
  cursor: pointer;
  font-size: .84rem;
  font-weight: 600;
  line-height: 1.45;
  color: rgba(224,242,255,.9);
}
.reg-check + .reg-check { margin-top: .8rem; }
.reg-check input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  flex-shrink: 0;
  width: 22px; height: 22px;
  margin: 0;
  border-radius: 7px;
  border: 1.5px solid rgba(255,255,255,.28);
  background: rgba(255,255,255,.07);
  cursor: pointer;
  position: relative;
  transition: background .18s, border-color .18s, box-shadow .18s;
}
.reg-check input[type="checkbox"]:checked {
  background: linear-gradient(135deg,#0ea5e9,#22d3ee);
  border-color: rgba(34,211,238,.75);
}
.reg-check input[type="checkbox"]:checked::after {
  content: '';
  position: absolute;
  left: 7px; top: 3px;
  width: 6px; height: 11px;
  border: solid #fff;
  border-width: 0 2.5px 2.5px 0;
  transform: rotate(45deg);
}
.reg-check input[type="checkbox"]:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(14,165,233,.32);
}
.reg-check__text .req { color: #f87171; }
.reg-check--invalid input[type="checkbox"] { border-color: rgba(248,113,113,.8); box-shadow: 0 0 0 3px rgba(239,68,68,.16); }

/* v56.3: ссылки на документы — кнопки-таблетки, а не подчёркнутый текст.
   Заказчик: «подчёркнутый текст, хотя это кнопки». Дата редакции стоит
   рядом мелким шрифтом; номера редакции здесь нет. */
.reg-legal__links { margin-top: .6rem; display: flex; flex-direction: column; gap: .45rem; }
.reg-legal__link {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .5rem .7rem;
  border-radius: 10px;
  border: 1px solid rgba(125,211,252,.28);
  background: rgba(125,211,252,.08);
  font-size: .8rem;
  font-weight: 700;
  line-height: 1.35;
  color: #bae6fd;
  text-decoration: none;
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  transition: background .16s, border-color .16s, color .16s;
}
.reg-legal__link:hover,
.reg-legal__link:focus-visible {
  background: rgba(125,211,252,.16);
  border-color: rgba(125,211,252,.5);
  color: #e0f2fe;
  text-decoration: none;
}
.reg-legal__link i { flex-shrink: 0; opacity: .85; }

/* Ветка несовершеннолетнего: появляется, только если снята галочка «мне есть 18» */
.reg-guardian {
  margin-top: .85rem;
  padding-top: .85rem;
  border-top: 1px dashed rgba(255,255,255,.14);
}
.reg-guardian[hidden] { display: none; }
.reg-guardian__hint {
  font-size: .78rem;
  font-weight: 700;
  line-height: 1.45;
  color: #fcd34d;
  background: rgba(245,158,11,.1);
  border: 1px solid rgba(245,158,11,.28);
  border-radius: 10px;
  padding: .5rem .7rem;
  margin-bottom: .75rem;
}
