/* ============================================================================
   «Сборник» – экраны руководителя: views/teacher/dashboard.php («Проверка
   статей» – его единственный главный экран, меню у руководителя нет),
   views/teacher/students.php («Мои студенты») и список статей
   views/articles/index.php (администратор и студент; классы sb-al-).
   Подключается layout.php сам (все css/area-*.css), после theme.css.
   Общие компоненты (.sb-table, .sb-status, .sb-notice, .card…) – в theme.css;
   здесь только своё, с приставками sb-te- и sb-al-. Размеры текста – только
   шкала темы (20 / 17 / 15 / 14 / 13 px), скругления – var(--sb-radius*).
   Ссылки-названия и ссылки-переходы – без подчёркивания (п. 42, 53).
   ========================================================================== */

/* Экраны руководителя (/teacher…) – одна колонка по центру шириной списков (72rem),
   по бокам ничего; класс ставит layout.php */
.sb-te-col .sb-wrap { max-width: calc(72rem + 2 * var(--sb-gutter)); }
/* профиль и уведомления руководителя – колонка по центру шириной их страницы (.sb-au-page, 56rem – как у студента) */
.sb-te-narrow .sb-wrap { max-width: calc(56rem + 2 * var(--sb-gutter)); }

/* шапка: «Проверка статей» и срок приёма – одной строкой, как «Моя статья» у студента */
.sb-te-head { align-items: baseline; }
.sb-te-head h1 { margin: 0; }
.sb-te-until { margin: 0; color: var(--sb-muted); white-space: nowrap; }

/* число рядом с заголовком: «Ждут вашей проверки 2», «В сборнике 3» */
.sb-te-n { margin-left: .375rem; font-weight: 400; color: var(--sb-muted); font-variant-numeric: tabular-nums; }

/* тихая строка под заголовком: приём закрыт */
.sb-te-note { margin: 0 0 .5rem; color: var(--sb-ink-2); }
/* пусто: одна строка серым по центру карточки */
.sb-te-empty-line { margin: .25rem 0 0; color: var(--sb-muted); text-align: center; }
.sb-te-empty-line + .sb-te-empty-line { margin-top: .25rem; }
.sb-te-card .sb-card-head { margin-bottom: .75rem; }

/* на экранах руководителя тихие кнопки и переходы не подчёркнуты */
.sb-te-page .btn-sb-quiet, .sb-te-page .btn-sb-quiet:hover { text-decoration: none; }

/* ------------------------------------- очередь и «Новые студенты» -- */
/* название в одну строку с многоточием, сведения под ним, одно действие справа;
   строка очереди нажимается целиком («Проверить» растянута на строку – .stretched-link) */
.sb-te-list { list-style: none; margin: 0; padding: 0; }
.sb-te-row { position: relative; display: flex; align-items: center; gap: .5rem 1.5rem; min-height: 40px; padding: .625rem 0; border-top: 1px solid #eef0f2; }
.sb-te-list > .sb-te-row:first-child { border-top: 0; padding-top: 0; }
.sb-te-list > .sb-te-row:last-child { padding-bottom: 0; }
.sb-te-main { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: .125rem; }
.sb-te-title { font-weight: 600; color: var(--sb-ink); line-height: 1.45; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sb-te-row:has(.stretched-link:hover) .sb-te-title { color: var(--sb-brand-700); }
.sb-te-meta { color: var(--sb-ink-2); font-size: .8125rem; line-height: 1.5; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sb-te-go { flex: none; }

/* «Новые студенты»: ФИО · группа и тихое «Отказаться» справа */
.sb-te-person { flex: 1 1 auto; min-width: 0; color: var(--sb-ink); line-height: 1.5; }
.sb-te-person > b { font-weight: 600; }
.sb-te-sub { color: var(--sb-ink-2); }
.sb-te-sub::before { content: " · "; }
.sb-te-refuse { flex: none; margin: 0 calc(-1 * var(--bs-btn-padding-x, .75rem)) 0 0; }
.sb-te-refuse .btn { --bs-btn-padding-x: .75rem; }

/* --------------------------------- «Статьи студентов» по состояниям -- */
/* группа: точка и слово состояния с числом, под ним – строки «название · автор» */
.sb-te-group + .sb-te-group { margin-top: 1rem; }
.sb-te-group-h { display: flex; align-items: center; margin: 0 0 .25rem; font-size: .875rem; font-weight: 400; line-height: 1.5; }
.sb-te-group-h .sb-status { font-weight: 600; }
.sb-te-arts { list-style: none; margin: 0; padding: 0; }
.sb-te-arts > li + li { border-top: 1px solid #eef0f2; }
.sb-te-art-row {
  display: flex; align-items: center; gap: .125rem 1.5rem; min-height: 40px; padding: .375rem .5rem; margin: 0 -.5rem;
  border-radius: var(--sb-radius); color: var(--sb-ink); text-decoration: none;
}
.sb-te-art-row:hover { background: var(--sb-surface-2); color: var(--sb-ink); text-decoration: none; }
.sb-te-art-row:focus-visible { outline-offset: -2px; }
.sb-te-art-t { flex: 1 1 auto; min-width: 0; font-weight: 500; color: var(--sb-brand-700); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sb-te-art-row:hover .sb-te-art-t { color: var(--sb-brand-800); }
.sb-te-art-t.is-empty { color: var(--sb-muted); font-weight: 400; }
.sb-te-art-who { flex: 0 0 15rem; min-width: 0; color: var(--sb-ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: right; }

/* ------------------------- «Служебные записки» и «Мои студенты» – переходы -- */
/* строка = название слева, что сейчас – справа, стрелка; вся строка нажимается */
.sb-te-links { overflow: hidden; }
.sb-te-links ul { list-style: none; margin: 0; padding: 0; }
.sb-te-links li + li { border-top: 1px solid var(--sb-line); }
.sb-te-li { display: flex; align-items: center; gap: .5rem 1rem; min-height: 52px; padding: .75rem 1.25rem; color: var(--sb-ink); text-decoration: none; }
.sb-te-li:hover { background: var(--sb-surface-2); color: var(--sb-ink); text-decoration: none; }
.sb-te-li:focus-visible { outline-offset: -3px; }
.sb-te-li-name { flex: 1 1 auto; min-width: 0; font-weight: 600; color: var(--sb-brand-700); }
.sb-te-li:hover .sb-te-li-name { color: var(--sb-brand-800); }
.sb-te-li-val { flex: 0 1 auto; min-width: 0; color: var(--sb-ink-2); text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.sb-te-li > .sb-ic { flex: none; width: 1.125rem; height: 1.125rem; color: var(--sb-muted); }

@media (max-width: 767.98px) {
  .sb-te-head { gap: .25rem 1rem; }
  .sb-te-li { flex-wrap: wrap; gap: 0 1rem; position: relative; padding-right: 2.75rem; }
  .sb-te-li-val { flex: none; text-align: left; }
  .sb-te-li > .sb-ic { position: absolute; right: 1.25rem; top: 50%; margin-top: -.5625rem; }
  .sb-te-row { gap: .5rem 1rem; padding: .75rem 0; }
  /* на узком экране рядом с «Проверить» одна строка – обрывок: название в две строки */
  .sb-te-title { white-space: normal; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; }
  .sb-te-meta { white-space: normal; }
  .sb-te-new-row { padding: .5rem 0; }
  .sb-te-sub { display: block; }
  .sb-te-sub::before { content: none; }
  .sb-te-art-row { flex-direction: column; align-items: stretch; justify-content: center; min-height: 52px; padding: .5rem; }
  .sb-te-art-who { flex: none; text-align: left; font-size: .8125rem; }
}

/* ------------------------------------------------------- Мои студенты -- */
/* одна строка на студента: ФИО, группа, статья, состояние */
.sb-te-students .sb-te-c-who { width: 30%; }
.sb-te-students .sb-te-c-group { width: 7.5rem; }
.sb-te-students .sb-te-c-state { width: 10rem; }
.sb-te-students > tbody td { padding-top: .625rem; padding-bottom: .625rem; border-bottom-color: #eef0f2; }
.sb-te-name { font-weight: 600; color: var(--sb-ink); }
.sb-te-art { font-weight: 500; color: var(--sb-brand-700); text-decoration: none; }
.sb-te-art:hover { color: var(--sb-brand-800); text-decoration: none; }
.sb-te-art.is-empty { color: var(--sb-muted); font-weight: 400; }
.sb-te-state { white-space: nowrap; }
.sb-te-noart { color: var(--sb-muted); }
/* у студента несколько статей: следующая строка – продолжение той же записи */
.sb-te-students > tbody > tr:has(+ .sb-te-more) > td { border-bottom: 0; }
.sb-te-students > tbody > tr.sb-te-more > td { padding-top: 0; }
/* группа: на компьютере – своей колонкой, в карточках – после ФИО */
.sb-te-g-in { display: none; color: var(--sb-ink-2); }
@media (max-width: 1199.98px) {
  .sb-te-g-in { display: inline; }
  .sb-te-students > tbody > tr > td.sb-te-group { display: none; }
  .sb-te-students > tbody > tr > td.sb-te-artcell { padding-top: .25rem !important; }
  .sb-te-students > tbody > tr:has(+ .sb-te-more) { border-bottom: 0; padding-bottom: 0; }
  .sb-te-students > tbody > tr.sb-te-more { padding-top: .25rem; }
}

/* ---------------------------------- Список статей (администратор, студент) -- */
/* вкладки по состоянию: переносятся на следующую строку, а не обрезаются */
.sb-al-tabs { margin: 0 0 1rem; border-bottom: 1px solid var(--sb-line-2); }
.sb-al-tabs ul { list-style: none; margin: 0 0 -1px; padding: 0; display: flex; flex-wrap: wrap; gap: 0 1.5rem; }
.sb-al-tabs a {
  display: inline-flex; align-items: center; min-height: 40px; padding: .375rem 0;
  border-bottom: 2px solid transparent; color: var(--sb-ink-2); font-weight: 600; text-decoration: none; white-space: nowrap;
}
.sb-al-tabs a:hover { color: var(--sb-ink); text-decoration: none; border-bottom-color: var(--sb-line-2); }
.sb-al-tabs a.is-on { color: var(--sb-brand-700); border-bottom-color: var(--sb-brand-700); }
.sb-al-tabs a.is-zero:not(.is-on) { color: var(--sb-muted); font-weight: 400; }
.sb-al-n { margin-left: .25rem; font-weight: 400; color: var(--sb-muted); font-variant-numeric: tabular-nums; }

/* поиск (по Enter) и «Сбросить отбор» */
.sb-al-filters { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; margin: 0; }
.sb-al-q { flex: 1 1 20rem; min-width: 0; max-width: 36rem; }
.sb-al-reset { flex: none; text-decoration: none; }
.sb-al-reset:hover { text-decoration: none; }
.sb-al-more { margin: 0 0 1rem; color: var(--sb-ink-2); }

/* названия статей – ссылки без подчёркивания; последняя колонка не прижата к краю шапки */
.sb-al-table .sb-u-name a { font-weight: 600; color: var(--sb-brand-700); text-decoration: none; }
.sb-al-table .sb-u-name a:hover { color: var(--sb-brand-800); text-decoration: none; }
.sb-al-table > tbody td { padding-top: .625rem; padding-bottom: .625rem; border-bottom-color: #eef0f2; }
:is(.sb-al-table, .sb-te-students) > :is(thead, tbody) > tr > :last-child { padding-right: .75rem; }
.sb-al-table .sb-al-c-person { width: 11rem; }
.sb-al-table .sb-al-c-status { width: 9rem; }
.sb-al-table .sb-al-c-date { width: 8rem; }
@media (max-width: 767.98px) {
  .sb-al-tabs a { min-height: 44px; }
  .sb-al-q { flex-basis: 100%; max-width: none; }
  .sb-al-reset { margin-left: calc(-1 * var(--bs-btn-padding-x)); }
}
/* «Мои статьи» студента: строка = название (одна строка, многоточие), руководитель, точка и слово
   состояния; вся строка нажимается, без подчёркивания (п. 42) */
.sb-al-rows { list-style: none; margin: 0; padding: 0; }
.sb-al-rows > li + li { border-top: 1px solid #eef0f2; }
.sb-al-row {
  display: flex; align-items: center; gap: .125rem 1.25rem; min-height: 40px; padding: .375rem .5rem; margin: 0 -.5rem;
  border-radius: var(--sb-radius); color: var(--sb-ink); text-decoration: none;
}
.sb-al-row:hover { background: var(--sb-surface-2); color: var(--sb-ink); text-decoration: none; }
.sb-al-row:focus-visible { outline-offset: -2px; }
.sb-al-row-t { flex: 1 1 auto; min-width: 0; font-weight: 500; color: var(--sb-brand-700); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sb-al-row:hover .sb-al-row-t { color: var(--sb-brand-800); }
.sb-al-row-t.is-empty { color: var(--sb-muted); font-weight: 400; }
.sb-al-row-sup { flex: 0 0 8.5rem; min-width: 0; color: var(--sb-ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sb-al-row-st { flex: 0 0 8.5rem; }
@media (max-width: 575.98px) {
  .sb-al-row { flex-wrap: wrap; min-height: 52px; padding: .5rem; }
  .sb-al-row-t { flex-basis: 100%; }
  .sb-al-row-sup, .sb-al-row-st { flex: 0 1 auto; font-size: .8125rem; }
  .sb-al-row-sup:empty { display: none; }
  .sb-al-row-st .sb-status { font-size: .8125rem; }
}

/* пусто: одна строка серым по центру карточки (+ одно действие) */
.sb-al-empty { margin: .25rem 0 0; color: var(--sb-muted); text-align: center; }
.sb-al-empty-act { margin-top: 1rem; }
