/* Кафедра ИТиВС — редизайн «Swiss Modernism 2.0» (скилл ui-ux-pro-max) в рамках брандбука МГТУ «СТАНКИН» 2024.
   Принципы: строгая сетка, типографическая иерархия, тонкие линии вместо рамок, один интерактивный цвет (синий),
   красный — только маркер, фирменная полоса — единственный декор. Шрифт ALS Sirius платный → Manrope (кириллица). */
:root{
  /* бренд (брандбук, с. 29) */
  --brand-blue:#052891; --brand-red:#FA235A; --brand-sky:#6491F0; --brand-purple:#820AAA; --brand-pink:#E16AFF; --brand-green:#46C8A0;
  --brand-red-text:#C8103E;   /* фирменный красный для ТЕКСТА и плашек с белым текстом: контраст ≥ 4.5:1 (сам #FA235A — только полосы и маркеры) */
  /* семантические токены */
  --color-primary:var(--brand-blue); --color-primary-hover:#031C66; --color-on-primary:#fff;
  --color-marker:var(--brand-red);
  --color-fg:#14151A; --color-text:#33353B; --color-muted:#5E6068;   /* ≥ 4.5:1 на белом */
  --color-bg:#FFFFFF; --color-subtle:#F5F6F9; --color-line:#E3E5EA; --color-line-strong:#14151A;
  --color-footer:#031C66;
  --stripe:linear-gradient(90deg,var(--brand-sky) 0 22%,var(--brand-red) 22% 36%,var(--brand-blue) 36% 62%,var(--brand-green) 62% 70%,var(--brand-pink) 70% 86%,var(--brand-purple) 86% 100%);
  --font:"Manrope",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  /* сетка и ритм: базовая единица 8 px */
  --u:8px; --menu:264px; --gap:56px; --content:860px; --pad:32px;
  --ease:cubic-bezier(.2,.7,.2,1); --t:180ms;
}
*{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{ margin:0; background:var(--color-bg); color:var(--color-text); font:400 16px/1.6 var(--font); font-feature-settings:"tnum" 0; }
a{ color:var(--color-primary); text-underline-offset:3px; transition:color var(--t) var(--ease); }
a:hover{ color:var(--color-primary-hover); }
img{ max-width:100%; height:auto; }
::selection{ background:var(--color-primary); color:#fff; }
:focus-visible{ outline:2px solid var(--color-primary); outline-offset:3px; border-radius:4px; }
.skip{ position:absolute; left:-9999px; } .skip:focus{ left:16px; top:16px; z-index:100; background:#fff; padding:8px 12px; }
h1,h2,h3{ color:var(--color-fg); font-weight:800; letter-spacing:-.02em; line-height:1.1; margin:0; }
@media (prefers-reduced-motion:reduce){ *{ transition:none !important; animation:none !important; } }

/* общая сетка: левая колонка ≥ меню+зазор, содержание 860 px строго по центру окна */
.grid{ display:grid; padding:0 var(--pad);
  grid-template-columns:minmax(calc(var(--menu) + var(--gap)),1fr) minmax(0,var(--content)) minmax(0,1fr); }
.grid > :first-child{ grid-column:1; justify-self:end; width:var(--menu); margin-right:var(--gap); }
.grid > :nth-child(2){ grid-column:2; min-width:0; }

/* шапка */
.site-header{ position:relative; padding:28px 0 26px; }
.site-header::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:4px; background:var(--stripe); }
.site-header .grid{ align-items:center; }
.brand{ display:block; border-radius:4px; }
.brand img{ display:block; width:220px; height:auto; }
.site-title{ font-size:15px; font-weight:700; color:var(--color-muted); letter-spacing:.01em; line-height:1.35; max-width:30em; }

/* на главной название кафедры — в крупном заголовке, в шапке не дублируем */
.page-home .site-title{ visibility:hidden; }

/* раскладка: без карточек, только сетка */
.layout{ padding-top:calc(var(--u)*6); padding-bottom:calc(var(--u)*10); align-items:start; }
.card{ background:none; border:0; }

/* меню: список с линиями, активный пункт — синяя черта слева */
.side{ padding-top:6px; }
.nav-group{ margin:32px 0 10px; font-size:11px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; color:var(--color-muted); line-height:1.3; }
.nav-group:first-child{ margin-top:0; }
.nav-list{ list-style:none; margin:0; padding:0; border-top:1px solid var(--color-line); }
.nav-list li{ border-bottom:1px solid var(--color-line); }
.nav-item{ position:relative; display:flex; align-items:center; min-height:44px; padding:10px 0 10px 14px; color:var(--color-fg); text-decoration:none; font-size:14.5px; font-weight:500; line-height:1.35;
  transition:color var(--t) var(--ease), padding var(--t) var(--ease); }
.nav-item::before{ content:""; position:absolute; left:0; top:10px; bottom:10px; width:3px; border-radius:2px; background:transparent; transition:background var(--t) var(--ease); }
.nav-item:hover{ color:var(--color-primary); padding-left:18px; }
.nav-item.is-current{ color:var(--color-primary); font-weight:700; }
.nav-item.is-current::before{ background:var(--color-primary); }
.nav-ext{ display:flex; justify-content:space-between; align-items:center; margin:32px 0 0; padding:14px 16px; border-radius:8px; background:var(--color-primary); color:#fff; font-weight:700; font-size:14px; text-decoration:none;
  transition:background var(--t) var(--ease); }
.nav-ext:hover{ background:var(--color-primary-hover); color:#fff; }
.nav-social{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:8px; }
.nav-social a{ display:flex; align-items:center; justify-content:center; gap:8px; min-height:44px; border-radius:8px; border:1px solid var(--color-line); color:var(--color-fg); font-weight:700; font-size:13px; text-decoration:none;
  transition:border-color var(--t) var(--ease), color var(--t) var(--ease); }
.nav-social a:hover{ border-color:var(--color-primary); color:var(--color-primary); }
.nav-social svg{ width:18px; height:18px; }

/* типографика содержимого */
.page-title{ font-size:44px; margin:0 0 calc(var(--u)*5); }
.content p, .content li{ font-size:16px; }
.content ul{ padding-left:20px; } .content ul li::marker{ color:var(--color-marker); }
.prose > p, .prose > ul, .prose > ol, .prose > h2, .prose > h3{ max-width:68ch; }   /* таблицы и списки файлов — на всю ширину */
.prose a{ text-decoration:underline; text-decoration-color:rgba(5,40,145,.3); }
.prose a:hover{ text-decoration-color:currentColor; }
.prose h2{ font-size:24px; margin:40px 0 12px; }
.muted{ color:var(--color-muted); }
.btn{ display:inline-flex; align-items:center; min-height:44px; padding:0 22px; border-radius:8px; background:var(--color-primary); color:#fff; font-weight:700; font-size:15px; text-decoration:none; transition:background var(--t) var(--ease); }
.btn:hover{ background:var(--color-primary-hover); color:#fff; }
.crumbs{ margin:0 0 16px; font-size:14px; font-weight:600; } .crumbs a{ text-decoration:none; }

/* главная: заголовок */
.hero{ padding-bottom:calc(var(--u)*6); }
.eyebrow{ display:flex; align-items:center; gap:10px; margin:0 0 20px; font-size:12px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; color:var(--color-muted); }
.eyebrow::before{ content:""; width:10px; height:10px; border-radius:2px; background:var(--color-marker); flex:none; }
.hero-title{ font-size:clamp(34px,4.2vw,52px); line-height:1.04; letter-spacing:-.03em; max-width:15em; }
.hero-lead{ margin-top:28px; max-width:62ch; }
.hero-lead p{ margin:0 0 12px; font-size:18px; line-height:1.6; color:var(--color-text); }

/* блоки главной: заголовок на жирной линии */
.block{ padding-top:calc(var(--u)*7); }
.block-head{ display:flex; align-items:baseline; justify-content:space-between; gap:16px; border-top:2px solid var(--color-line-strong); padding-top:16px; margin-bottom:8px; }
.block-head h2{ font-size:13px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
.more{ font-weight:700; font-size:14px; text-decoration:none; }
.more::after{ content:" →"; }

/* «Студентам»: нумерованные ссылки 01–06 */
.tasks{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:1fr 1fr; column-gap:32px; }
.tasks li{ border-bottom:1px solid var(--color-line); }
.tasks a{ display:grid; grid-template-columns:44px 1fr 24px; align-items:center; gap:12px; min-height:76px; padding:12px 0; color:var(--color-fg); text-decoration:none; }
.tasks-num{ font-size:13px; font-weight:800; color:var(--color-muted); font-variant-numeric:tabular-nums; letter-spacing:.04em; }
.tasks-label{ font-size:17px; font-weight:700; line-height:1.25; }
.tasks-label small{ display:block; margin-top:3px; font-size:13.5px; font-weight:500; color:var(--color-muted); }
.tasks-arrow{ width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; color:var(--color-muted);
  transition:transform var(--t) var(--ease), color var(--t) var(--ease); }
.tasks a:hover .tasks-label, .tasks a:hover .tasks-arrow{ color:var(--color-primary); }
.tasks a:hover .tasks-arrow{ transform:translate(3px,-3px); }

/* новости: строки с датой слева */
.news-rows{ display:grid; }
.news-row{ display:grid; grid-template-columns:112px 1fr; gap:24px; padding:22px 0; border-bottom:1px solid var(--color-line); }
.news-date{ font-size:13px; font-weight:600; color:var(--color-muted); line-height:1.3; }
.news-date b{ display:block; font-size:32px; font-weight:800; color:var(--color-fg); letter-spacing:-.02em; line-height:1; margin-bottom:4px; font-variant-numeric:tabular-nums; }
.news-body h3{ font-size:20px; line-height:1.25; }
.news-body h3 a{ color:var(--color-fg); text-decoration:none; }
.news-body h3 a:hover{ color:var(--color-primary); }
.news-body p{ margin:8px 0 0; color:var(--color-text); }
.news-tags{ display:flex; flex-wrap:wrap; gap:6px; margin-top:12px; }
.tag{ display:inline-block; padding:3px 9px; border-radius:4px; background:var(--color-subtle); color:var(--color-fg); font-weight:700; font-size:12px; letter-spacing:.02em; }
.news-meta{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; color:var(--color-muted); font-size:14px; margin:-16px 0 24px; }
.chips{ display:flex; flex-wrap:wrap; gap:8px; margin:0 0 8px; }
.chip{ display:inline-flex; align-items:center; min-height:44px; padding:0 16px; border-radius:999px; border:1px solid var(--color-line); color:var(--color-fg); text-decoration:none; font-weight:600; font-size:14px;
  transition:border-color var(--t) var(--ease), background var(--t) var(--ease); }
.chip:hover{ border-color:var(--color-fg); color:var(--color-fg); }
.chip.is-on{ background:var(--color-fg); border-color:var(--color-fg); color:#fff; }

/* направления подготовки: уровень — строка на всю ширину; слева уровень, срок, форма, ссылка; справа — направления */
.program-grid{ display:block; }
.program{ display:grid; grid-template-columns:200px 1fr; gap:32px; padding:28px 0; border-bottom:1px solid var(--color-line); }
.program:first-child{ padding-top:14px; }
.program:last-child{ border-bottom:0; }
.program-head h3{ font-size:24px; margin:0 0 6px; }
.program-meta{ margin:0 0 14px; font-size:14px; color:var(--color-muted); }
.program-link{ display:inline-flex; align-items:center; gap:6px; min-height:44px; font-size:14px; font-weight:700; text-decoration:none; }
.program-link::after{ content:"→"; transition:transform var(--t) var(--ease); }
.program-link:hover::after{ transform:translateX(3px); }
.content ul.dirs, .content ul.dir-profiles{ list-style:none; margin:0; padding:0; }
.dir{ display:grid; grid-template-columns:96px 1fr; column-gap:16px; padding:0 0 18px; }
.dir + .dir{ padding-top:18px; border-top:1px solid var(--color-line); }
.dir:last-child{ padding-bottom:0; }
.dir-code{ grid-row:1 / span 2; font-size:19px; font-weight:800; color:var(--color-primary); letter-spacing:-.01em; font-variant-numeric:tabular-nums; line-height:1.3; }
.dir-name{ font-size:17px; font-weight:700; color:var(--color-fg); line-height:1.35; }
.dir-profiles{ grid-column:2; margin-top:6px !important; }
.content .dir-profiles li{ position:relative; padding-left:16px; margin:4px 0 0; font-size:14.5px; line-height:1.45; color:var(--color-text); }
.dir-profiles li::before{ content:""; position:absolute; left:2px; top:.62em; width:6px; height:6px; border-radius:50%; background:var(--color-marker); }
.program-note, .program-body{ font-size:14.5px; line-height:1.5; color:var(--color-text); }
.program-note{ margin-top:14px; color:var(--color-muted); }
.program-body p, .program-body li{ font-size:14.5px; line-height:1.5; margin:0 0 8px; }
.program-body strong, .program-body b{ display:inline-block; margin-top:8px; font-size:19px; font-weight:800; color:var(--color-primary); font-variant-numeric:tabular-nums; }
@media (max-width:767px){
  .program{ grid-template-columns:1fr; gap:12px; padding:22px 0; }
  .program-head{ display:flex; flex-wrap:wrap; align-items:baseline; column-gap:14px; }
  .program-head h3{ margin:0; }
  .program-meta{ margin:0; }
  .program-link{ flex-basis:100%; min-height:36px; }
  .dir{ grid-template-columns:1fr; }
  .dir-code{ grid-row:auto; font-size:17px; }
  .dir-profiles{ grid-column:1; }
}

/* контакты: список определений */
.facts{ display:grid; grid-template-columns:1fr 1fr; margin:0; }
.facts > div{ padding:18px 24px 18px 0; border-bottom:1px solid var(--color-line); }
.facts .facts-wide{ grid-column:1/-1; }
.facts dt{ font-size:11px; font-weight:800; letter-spacing:.12em; text-transform:uppercase; color:var(--color-muted); margin-bottom:6px; }
.facts dd{ margin:0; font-size:16px; color:var(--color-fg); }
.facts dd p{ margin:0 0 4px; }
.facts dd.contacts > :last-child{ margin-bottom:0; } .facts dd.contacts ul, .facts dd.contacts ol{ margin:4px 0; padding-left:20px; }
.facts dd.contacts a{ overflow-wrap:anywhere; }

/* подвал */
.site-footer{ position:relative; background:var(--color-footer); color:rgba(255,255,255,.82); padding:48px 0 44px; font-size:14px; }
.site-footer::before{ content:""; position:absolute; left:0; right:0; top:0; height:4px; background:var(--stripe); }
.site-footer a{ color:#fff; text-decoration:none; }
.site-footer a:hover{ color:var(--brand-pink); }
.footer-grid{ align-items:start; row-gap:24px; }
.footer-grid > :first-child{ width:var(--menu); line-height:1.7; }
.footer-main img{ display:block; height:36px; width:auto; margin-bottom:16px; }
.footer-main p{ margin:0 0 8px; color:#fff; line-height:1.45; }
.footer-main .copy{ color:rgba(255,255,255,.6); font-size:13px; }
.footer-quick{ grid-column:2; display:flex; flex-wrap:wrap; gap:8px; }
.footer-quick a{ display:inline-flex; align-items:center; min-height:44px; padding:0 14px; border-radius:8px; border:1px solid rgba(255,255,255,.22); font-weight:600; font-size:13.5px; transition:border-color var(--t) var(--ease); }
.footer-quick a:hover{ border-color:#fff; color:#fff; }

/* мобильная шапка и меню — скрыты на десктопе и планшете */
.m-bar, .m-nav{ display:none; }
.m-btn{ display:inline-flex; align-items:center; gap:8px; min-height:44px; padding:0 16px; border:0; border-radius:8px;
  background:var(--color-primary); color:#fff; font:700 14px var(--font); cursor:pointer; }
.m-btn svg{ width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2.4; stroke-linecap:round; }

/* планшет */
@media (max-width:1024px){
  :root{ --menu:212px; --gap:32px; --pad:24px; }
  .brand img{ width:180px; }
  .page-title{ font-size:36px; }
  .tasks{ grid-template-columns:1fr; }
}

/* телефон */
@media (max-width:767px){
  :root{ --pad:20px; }
  .site-header, .side{ display:none; }
  .grid{ display:block; }
  .grid > :first-child, .footer-grid > :first-child{ width:auto; margin:0; }
  body{ padding-top:60px; }
  .m-bar{ display:flex; position:fixed; top:0; left:0; right:0; z-index:50; height:60px; align-items:center; gap:10px; padding:0 10px 0 16px; background:#fff; }
  .m-bar::after{ content:""; position:absolute; left:0; right:0; bottom:-4px; height:4px; background:var(--stripe); }
  .m-brand{ flex:1; display:flex; align-items:center; gap:10px; min-width:0; color:var(--color-fg); text-decoration:none; font-weight:800; font-size:17px; line-height:1.1; }
  .m-brand img{ height:34px; width:auto; }
  .m-brand small{ display:block; font-size:10px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:var(--color-muted); }
  .m-nav{ position:fixed; inset:0; z-index:60; background:#fff; flex-direction:column; }
  .m-nav:not([hidden]){ display:flex; }
  .m-nav-top{ position:relative; flex:0 0 60px; display:flex; align-items:center; gap:10px; padding:0 10px 0 16px; font-weight:800; font-size:17px; color:var(--color-fg); }
  .m-nav-top span:first-of-type{ flex:1; }
  .m-nav-top::after{ content:""; position:absolute; left:0; right:0; bottom:0; height:4px; background:var(--stripe); }
  .m-nav-top img{ height:34px; }
  .m-close{ background:var(--color-subtle); color:var(--color-fg); }
  .m-nav-body{ flex:1; overflow-y:auto; padding:8px 20px 32px; }
  .m-nav .nav-item{ display:flex; align-items:center; min-height:52px; font-size:17px; }
  body.m-lock{ overflow:hidden; }
  .layout{ padding-top:32px; padding-bottom:48px; }
  .hero-title{ font-size:32px; }
  .hero-lead p{ font-size:16px; }
  .page-title{ font-size:32px; }
  .news-row{ grid-template-columns:1fr; gap:6px; }
  .news-date b{ display:inline; font-size:inherit; color:var(--color-muted); font-weight:700; margin-right:4px; }
  .facts{ grid-template-columns:1fr; }
  .footer-grid{ display:flex; flex-direction:column-reverse; gap:28px; }
}

/* --- блоки разделов --- */
.prose + .prose, .content > h2{ margin-top:8px; }
.prose-small p{ font-size:14.5px; line-height:1.55; color:var(--color-text); }
.content .prose h2, .content > .prose ~ h2{ font-size:24px; }
.figure{ margin:24px 0; }
.figure img{ display:block; border-radius:6px; }
.figure figcaption{ margin-top:8px; font-size:13.5px; color:var(--color-muted); }

/* документы: строки «расширение · название · размер» */
.docs{ margin:16px 0 28px; }
.docs-title{ font-size:18px; margin:0 0 8px; }
.docs-list{ list-style:none; margin:0; padding:0; border-top:1px solid var(--color-line); }
.docs-list li{ border-bottom:1px solid var(--color-line); }
.prose .doc, .doc{ text-decoration:none; }
.doc{ display:grid; grid-template-columns:56px 1fr auto; align-items:center; gap:14px; min-height:52px; padding:8px 0; color:var(--color-fg); text-decoration:none; }
.doc-ext{ justify-self:start; padding:3px 7px; border-radius:4px; background:var(--color-subtle); font-size:11px; font-weight:800; letter-spacing:.06em; color:var(--color-primary); }
.doc-name{ font-weight:600; font-size:15px; line-height:1.35; }
.doc-size{ font-size:13px; color:var(--color-muted); font-variant-numeric:tabular-nums; white-space:nowrap; }
.doc:hover .doc-name{ color:var(--color-primary); }
.docs-spoiler{ margin:0; border-bottom:1px solid var(--color-line); }
.docs-spoiler + .docs-spoiler{ margin-top:0; }
.docs-spoiler > summary{ list-style:none; cursor:pointer; display:flex; align-items:center; gap:10px; min-height:48px; margin:0; padding:8px 0; font-size:16px; font-weight:700; line-height:1.35; }
.docs-spoiler > summary::-webkit-details-marker{ display:none; }
.docs-spoiler > summary::before{ content:""; flex:none; width:8px; height:8px; border-right:2px solid currentColor; border-bottom:2px solid currentColor; transform:rotate(-45deg); transition:transform var(--t) var(--ease); }
.docs-spoiler[open] > summary::before{ transform:rotate(45deg); }
.docs-spoiler > summary:hover{ color:var(--color-primary); }
.docs-spoiler > summary:focus-visible{ outline:2px solid var(--color-primary); outline-offset:2px; }
.docs-count{ margin-left:auto; font-size:13px; font-weight:600; color:var(--color-muted); font-variant-numeric:tabular-nums; }
.docs-spoiler .docs-list{ margin:0 0 12px 18px; }

/* PDF во встроенном просмотре */
.pdf{ margin:8px 0 24px; }
.pdf object{ display:block; width:100%; height:78vh; min-height:520px; border:1px solid var(--color-line); border-radius:6px; }
.pdf figcaption{ margin-top:14px; }

/* таблицы */
.table-wrap{ overflow-x:auto; margin:12px 0 32px; border-top:2px solid var(--color-line-strong); }
.table{ width:100%; border-collapse:collapse; font-size:14px; font-variant-numeric:tabular-nums; }
.table th, .table td{ padding:10px 12px; border-bottom:1px solid var(--color-line); text-align:center; vertical-align:top; }
.table thead th{ font-size:12px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--color-muted); }
.table tbody th{ text-align:left; font-weight:600; color:var(--color-fg); min-width:220px; }

/* сотрудники */
.count{ font-size:13px; font-weight:700; color:var(--color-muted); font-variant-numeric:tabular-nums; }
.people{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:1fr 1fr; column-gap:32px; }
.person{ border-bottom:1px solid var(--color-line); }
.person a{ display:grid; grid-template-columns:56px 1fr; align-items:center; gap:14px; min-height:76px; padding:10px 0; color:var(--color-fg); text-decoration:none; }
.person-photo{ width:56px; height:56px; border-radius:50%; object-fit:cover; background:var(--color-subtle); }
.person-initials{ display:grid; place-items:center; font-weight:800; font-size:20px; color:var(--color-primary); }
.person-name{ display:block; font-weight:700; font-size:15.5px; line-height:1.3; }
.person-role{ display:block; margin-top:2px; font-size:13px; color:var(--color-muted); line-height:1.35; }
.person a:hover .person-name{ color:var(--color-primary); }

/* карточка сотрудника */
.profile{ display:grid; grid-template-columns:auto 1fr; gap:28px; align-items:center; margin-bottom:28px; }
.profile-photo{ width:160px; height:160px; border-radius:50%; object-fit:cover; background:var(--color-subtle); }
.profile .person-initials{ font-size:56px; }
.profile-name{ font-size:36px; margin:0; }
.profile-name::after{ display:none; }
.profile-role{ margin:10px 0 0; font-size:17px; font-weight:600; color:var(--color-primary); }
/* под ФИО: должность, учёная степень, учёное звание — «подпись: значение» */
.profile-facts{ display:grid; grid-template-columns:auto 1fr; gap:4px 14px; margin:12px 0 0; font-size:16px; line-height:1.35; }
.profile-facts > div{ display:contents; }
.profile-facts dt{ color:var(--color-muted); font-size:14px; font-weight:600; padding-top:2px; white-space:nowrap; }
.profile-facts dd{ margin:0; color:var(--color-fg); font-weight:600; }
.profile-facts > div:first-child dd{ color:var(--color-primary); }
@media (max-width:767px){ .profile-facts{ grid-template-columns:1fr; gap:0; } .profile-facts dd{ margin-bottom:6px; } }

@media (max-width:1024px){ .people{ grid-template-columns:1fr; } }
@media (max-width:767px){
  .profile{ grid-template-columns:1fr; gap:16px; }
  .profile-photo{ width:112px; height:112px; }
  .profile-name{ font-size:28px; }
  .doc{ grid-template-columns:48px 1fr; }
  .doc-size{ grid-column:2; }
}

/* дисциплины преподавателя (по нагрузке, по убыванию часов) */
.person a{ align-items:start; }
.person-courses{ display:block; margin-top:6px; font-size:13px; line-height:1.4; color:var(--color-text); }
.more-n{ color:var(--color-muted); white-space:nowrap; }
.courses{ list-style:none; margin:0; padding:0; counter-reset:c; }
.courses li{ counter-increment:c; display:grid; grid-template-columns:36px 1fr; padding:12px 0; border-bottom:1px solid var(--color-line); font-size:16px; color:var(--color-fg); }
.courses li::before{ content:counter(c,decimal-leading-zero); font-size:13px; font-weight:800; color:var(--color-muted); font-variant-numeric:tabular-nums; padding-top:2px; }

/* повышение квалификации: год — название, по возрастанию года */
.content .trainings{ list-style:none; margin:0; padding:0; }
.trainings li{ display:grid; grid-template-columns:96px 1fr; gap:16px; padding:12px 0; border-bottom:1px solid var(--color-line); font-size:15.5px; color:var(--color-fg); line-height:1.45; }
.tr-year{ font-weight:800; color:var(--color-primary); font-variant-numeric:tabular-nums; }
@media (max-width:767px){ .trainings li{ grid-template-columns:1fr; gap:2px; } }

/* «Образование и квалификация» на странице преподавателя */
.qual-part{ padding:18px 0 6px; border-bottom:1px solid var(--color-line); }
.qual-part:last-child{ border-bottom:0; }
.qual-part h3{ display:flex; align-items:baseline; gap:10px; margin:0 0 10px; font-size:12px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--color-muted); }
.content .qual-list{ list-style:none; margin:0 0 8px; padding:0; }
.qual-list li{ display:grid; grid-template-columns:96px 1fr; gap:16px; padding:12px 0; border-bottom:1px solid var(--color-line); font-size:16px; color:var(--color-fg); line-height:1.45; }
.qual-list li.is-no-year{ grid-template-columns:1fr; gap:0; }
.qual-list li.is-no-year .tr-body{ grid-column:1; }
.qual-list li:last-child{ border-bottom:0; }
.qual-degree{ margin:0 0 10px; font-size:16px; font-weight:700; color:var(--color-fg); }
.thesis{ margin:0 0 14px; padding-left:14px; border-left:3px solid var(--color-primary); }
.thesis-meta{ margin:0 0 4px !important; font-size:13px !important; color:var(--color-muted); font-variant-numeric:tabular-nums; }
.thesis-title{ margin:0 !important; font-size:16px; line-height:1.45; color:var(--color-fg); }
.tr-body{ display:flex; flex-direction:column; gap:2px; }
.edu-head{ display:block; margin-bottom:2px; font-size:15px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--color-muted); }
.edu-meta{ display:block; font-size:16px; line-height:1.5; color:var(--color-fg); font-weight:400; }
.edu-meta.is-note{ color:var(--color-muted); font-size:14px; }
.tr-kind{ display:block; margin-bottom:2px; font-size:11.5px; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--color-muted); }
.tr-kind.is-retraining{ color:var(--color-primary); }

/* длинные списки (ДПО, охранные документы): старше прошлого года — свёрнуто под «ещё N», раскрывается плавно (высота через grid 0fr → 1fr) */
.more-box{ display:grid; grid-template-rows:0fr; transition:grid-template-rows 450ms var(--ease); }
.more-box.is-open{ grid-template-rows:1fr; }
.more-box > .trainings{ min-height:0; overflow:hidden; }
.more-btn{ display:inline-flex; align-items:center; gap:8px; min-height:44px; margin:4px 0 6px; padding:0; border:0; background:none; cursor:pointer;
  color:var(--color-primary); font:700 14px/1 var(--font); }
.more-btn::after{ content:""; width:7px; height:7px; margin-top:-4px; border-right:2px solid currentColor; border-bottom:2px solid currentColor;
  transform:rotate(45deg); transition:transform var(--t) var(--ease), margin var(--t) var(--ease); }
.more-btn[aria-expanded="true"]::after{ transform:rotate(-135deg); margin-top:4px; }
.more-btn:hover{ color:var(--color-primary-hover); text-decoration:underline; text-underline-offset:3px; }
html:not(.js) .more-box{ grid-template-rows:1fr; }      /* без JavaScript — список целиком */
html:not(.js) .more-btn{ display:none; }

/* --- учебные планы --- */
.curricula{ margin-top:8px; }
.cur-bar{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; margin-bottom:8px; }
.cur-tabs{ display:inline-flex; padding:4px; border-radius:10px; background:var(--color-subtle); gap:4px; }
.cur-tabs [role="tab"]{ min-height:44px; padding:0 18px; border:0; border-radius:8px; background:transparent; color:var(--color-fg);
  font:700 15px var(--font); cursor:pointer; transition:background var(--t) var(--ease), color var(--t) var(--ease); }
.cur-tabs [role="tab"]:hover{ color:var(--color-primary); }
.cur-tabs [role="tab"][aria-selected="true"]{ background:#fff; color:var(--color-primary); box-shadow:0 1px 3px rgba(20,21,26,.12); }
.cur-n{ display:inline-block; min-width:22px; margin-left:6px; padding:1px 6px; border-radius:999px; background:rgba(5,40,145,.08); font-size:12px; color:var(--color-primary); }
.cur-year{ margin:0; font-size:13.5px; font-weight:700; color:var(--color-muted); }
.cur-panel-title{ margin:24px 0 4px; font-size:13px !important; font-weight:800; letter-spacing:.12em; text-transform:uppercase; color:var(--color-muted); }
.tabs-on .cur-panel-title{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }   /* при вкладках заголовок только для экранного доступа */

.prog{ padding:24px 0 26px; border-top:2px solid var(--color-line-strong); margin-top:20px; }
.prog-code{ margin:0 0 6px !important; font-size:14px !important; color:var(--color-muted); }
.prog-code span{ display:inline-block; margin-right:6px; padding:2px 8px; border-radius:4px; background:var(--color-primary); color:#fff; font-weight:800; font-size:13px; letter-spacing:.02em; font-variant-numeric:tabular-nums; }
.prog-title{ margin:0 0 10px; font-size:22px !important; line-height:1.2; }
.content .prog-meta{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:6px; }
.prog-meta li{ padding:3px 9px; border:1px solid var(--color-line); border-radius:999px; font-size:12.5px !important; font-weight:600; color:var(--color-text); }
.prog-body{ display:grid; grid-template-columns:1.35fr 1fr; gap:32px; margin-top:20px; }
.prog-body h4{ margin:0 0 8px; font-size:11.5px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--color-muted); }

.content .plans{ list-style:none; margin:0; padding:0; border-top:1px solid var(--color-line); }
.plans li{ border-bottom:1px solid var(--color-line); }
.plan{ display:grid; grid-template-columns:72px 76px 1fr auto; align-items:center; gap:10px; min-height:52px; padding:6px 0; color:var(--color-fg); text-decoration:none; }
.plan-course{ font-weight:800; font-size:15px; }
.plan-group{ font-weight:700; font-size:14px; color:var(--color-primary); font-variant-numeric:tabular-nums; }
.plan-year{ font-size:14px; color:var(--color-muted); }
.plan-file{ display:inline-flex; align-items:center; gap:4px; font-size:12px; font-weight:800; letter-spacing:.06em; color:var(--color-muted); }
.plan-file svg{ width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; transition:transform var(--t) var(--ease); }
.plan:hover .plan-course, .plan:hover .plan-file{ color:var(--color-primary); }
.plan:hover .plan-file svg{ transform:translate(2px,-2px); }
.plans-archive{ margin-top:10px; }
.plans-archive summary{ cursor:pointer; min-height:44px; display:flex; align-items:center; font-size:14px; font-weight:600; color:var(--color-muted); }
.plans-archive summary:hover{ color:var(--color-primary); }

.content .docs-links{ list-style:none; margin:0; padding:0; border-top:1px solid var(--color-line); }
.docs-links li{ border-bottom:1px solid var(--color-line); }
.docs-links a{ display:flex; align-items:center; justify-content:space-between; gap:10px; min-height:44px; padding:6px 0; font-size:14.5px; font-weight:500; color:var(--color-fg); text-decoration:none; }
.docs-links a::after{ content:"↗"; color:var(--color-muted); font-weight:700; }
.docs-links a:hover{ color:var(--color-primary); }
.cur-note{ margin-top:28px !important; padding-top:16px; border-top:1px solid var(--color-line); font-size:13.5px !important; color:var(--color-muted); }

@media (max-width:1024px){ .prog-body{ grid-template-columns:1fr; gap:22px; } }
@media (max-width:767px){
  .cur-tabs{ display:flex; width:100%; } .cur-tabs [role="tab"]{ flex:1; padding:0 8px; }
  .plan{ grid-template-columns:64px 1fr auto; } .plan-year{ display:none; }
  .prog-title{ font-size:19px !important; }
}

.curricula:not(.tabs-on) .cur-tabs{ display:none; }
.prose .plan, .prose .docs-links a{ text-decoration:none; border-bottom:0; }

/* --- Расписание занятий (страница преподавателя) --- */
.rasp-now{ display:grid; grid-template-columns:auto 1fr; gap:4px 18px; align-items:center; margin:6px 0 18px; padding:16px 18px;
  border-radius:10px; background:var(--color-subtle); border-left:4px solid var(--color-primary); }
.rasp-now.is-live{ border-left-color:var(--brand-red); background:#FFF3F6; }
.rasp-now .label{ grid-column:1/-1; font-size:11.5px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--color-muted); }
.rasp-now.is-live .label{ color:var(--brand-red-text); }
.rasp-now .t{ font-size:22px; font-weight:800; color:var(--color-fg); font-variant-numeric:tabular-nums; letter-spacing:-.01em; }
.rasp-now .w{ font-size:15.5px; color:var(--color-fg); line-height:1.4; }
.rasp-now .w small{ display:block; color:var(--color-muted); font-size:13.5px; }
.rasp-bar{ display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; margin-bottom:10px; }
.rasp-weeknav{ display:flex; align-items:center; gap:6px; }
.rasp-arrow, .rasp-today{ min-width:44px; min-height:44px; border:1px solid var(--color-line); border-radius:8px; background:#fff;
  color:var(--color-fg); font:700 18px var(--font); cursor:pointer; }
.rasp-today{ font-size:14px; padding:0 14px; }
.rasp-arrow:hover, .rasp-today:hover{ border-color:var(--color-primary); color:var(--color-primary); }
.rasp-week{ min-width:210px; text-align:center; font-weight:700; font-size:14.5px; color:var(--color-fg); font-variant-numeric:tabular-nums; }
.rasp-week small{ display:block; font-weight:600; font-size:12px; color:var(--color-muted); }
.rasp-day{ display:grid; grid-template-columns:120px 1fr; gap:16px; padding:14px 0; border-top:1px solid var(--color-line); }
.rasp-day:last-child{ border-bottom:1px solid var(--color-line); }
.rasp-day.is-today .rasp-dname{ color:var(--color-primary); }
.rasp-day.is-today .rasp-dname::after{ content:"сегодня"; display:block; margin-top:2px; font-size:11px; font-weight:800; letter-spacing:.08em;
  text-transform:uppercase; color:var(--brand-red-text); }
.rasp-dname{ font-weight:800; font-size:15px; color:var(--color-fg); }
.rasp-dname small{ display:block; font-weight:600; font-size:13px; color:var(--color-muted); }
.rasp-empty{ color:var(--color-muted); font-size:14px; padding-top:2px; }
.rasp-l{ display:grid; grid-template-columns:118px 1fr; gap:14px; padding:8px 0; }
.rasp-l + .rasp-l{ border-top:1px dashed var(--color-line); }
.rasp-l.is-live{ background:#FFF3F6; margin:0 -10px; padding:8px 10px; border-radius:8px; }
.rasp-time{ font-weight:800; font-size:15px; color:var(--color-fg); font-variant-numeric:tabular-nums; }
.rasp-time small{ display:block; font-weight:600; font-size:12px; color:var(--color-muted); }
.rasp-disc{ font-weight:700; font-size:15.5px; color:var(--color-fg); line-height:1.35; }
.rasp-meta{ display:flex; flex-wrap:wrap; gap:6px 10px; margin-top:5px; font-size:13.5px; color:var(--color-text); align-items:center; }
.rasp-chip{ padding:2px 8px; border-radius:4px; background:var(--color-subtle); font-weight:700; font-size:12px; color:var(--color-fg); }
.rasp-room{ font-weight:700; color:var(--color-primary); }
.rasp-remote{ padding:2px 8px; border-radius:4px; background:#EAF6F1; color:#0E6B4E; font-weight:700; font-size:12px; }
.rasp-groups{ color:var(--color-muted); }
.rasp-period{ font-size:12.5px; color:var(--color-muted); }
.rasp-live-badge{ padding:2px 8px; border-radius:4px; background:var(--brand-red-text); color:#fff; font-weight:800; font-size:11px; letter-spacing:.06em; text-transform:uppercase; }
.rasp-src{ margin-top:16px !important; font-size:13.5px !important; color:var(--color-muted); }
.rasp-src a{ font-weight:700; text-decoration:none; }
@media (max-width:767px){
  .rasp-day{ grid-template-columns:1fr; gap:6px; }
  .rasp-l{ grid-template-columns:96px 1fr; gap:10px; } .rasp-time{ font-size:14px; white-space:nowrap; }
  .rasp-weeknav{ width:100%; } .rasp-week{ flex:1; min-width:0; }
  .rasp-now .t{ font-size:19px; }
}

/* --- Курсовые работы (блок CourseworkBlock, страница «Курсовые и лабораторные работы») --- */
.cw-variant{ margin-top:18px; }
.cw-variant + .cw-variant{ margin-top:26px; }
.content .cw-for{ display:flex; flex-wrap:wrap; align-items:center; gap:6px 8px; margin:0 0 8px !important; }
.cw-for-label{ font-size:11.5px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--color-muted); margin-right:4px; }
.cw-group{ padding:2px 8px; border-radius:4px; background:rgba(5,40,145,.08); color:var(--color-primary); font-weight:700; font-size:13px; font-variant-numeric:tabular-nums; }
.content .cw-list{ list-style:none; margin:0; padding:0; border-top:1px solid var(--color-line); }
.cw-row{ display:grid; grid-template-columns:110px 150px 1fr; align-items:center; gap:14px; min-height:56px; padding:8px 0; border-bottom:1px solid var(--color-line); }
.cw-sem{ font-size:14px; color:var(--color-text); line-height:1.25; }
.cw-sem b{ font-size:17px; font-weight:800; color:var(--color-fg); font-variant-numeric:tabular-nums; }
.cw-sem small{ display:block; font-size:12px; color:var(--color-muted); }
.cw-kind{ justify-self:start; padding:3px 9px; border-radius:999px; font-size:12px; font-weight:800; letter-spacing:.02em; white-space:nowrap; }
.cw-kind-kp{ background:var(--color-primary); color:#fff; }
.cw-kind-kr{ border:1px solid var(--color-primary); color:var(--color-primary); }
.cw-disc{ font-size:15.5px; font-weight:600; color:var(--color-fg); line-height:1.35; }
.cw-now{ display:inline-block; margin-left:8px; padding:2px 8px; border-radius:4px; background:var(--brand-red-text); color:#fff; font-size:11.5px; font-weight:800; letter-spacing:.04em; vertical-align:2px; }
.cw-row.is-now{ background:#FFF3F6; margin:0 -12px; padding:8px 12px; border-radius:8px; border-bottom-color:transparent; }
.cw-row.is-done .cw-disc, .cw-row.is-done .cw-sem b{ color:var(--color-muted); font-weight:500; }
.cw-row.is-done .cw-kind{ border-color:var(--color-muted); color:var(--color-muted); }   /* без прозрачности — контраст текста */
.cw-row.is-done .cw-kind-kp{ background:var(--color-muted); color:#fff; }
.content .cw-src{ margin:8px 0 0 !important; font-size:12.5px !important; color:var(--color-muted); }
.content .cw-none{ margin:14px 0 0 !important; padding:14px 16px; border-radius:8px; background:var(--color-subtle); color:var(--color-text); font-size:14.5px !important; }
@media (max-width:767px){
  .cw-row{ grid-template-columns:76px 1fr; gap:6px 12px; }
  .cw-sem{ grid-row:span 2; }
  .cw-kind{ grid-column:2; }
  .cw-disc{ grid-column:2; }
}

/* фото в тексте: портреты не растягиваются на всю колонку, групповые снимки — во всю ширину */
.figure img{ width:auto; max-width:100%; max-height:520px; height:auto; }

/* --- Хронология (TimelineBlock) --- */
.timeline{ margin:8px 0 36px; padding:20px 22px 8px; border-radius:10px; background:var(--color-subtle); }
.timeline-title{ margin:0 0 10px !important; font-size:11.5px !important; font-weight:800; letter-spacing:.12em; text-transform:uppercase; color:var(--color-muted); }
.content .tl{ list-style:none; margin:0; padding:0; }
.tl-item{ position:relative; display:grid; grid-template-columns:104px 1fr; gap:18px; padding:0 0 14px; }
.tl-item::before{ content:""; position:absolute; left:89px; top:6px; width:9px; height:9px; border-radius:50%; background:var(--color-primary); }
.tl-item::after{ content:""; position:absolute; left:93px; top:17px; bottom:-2px; width:1px; background:var(--color-line); }
.tl-item:last-child::after{ display:none; }
.tl-item:last-child::before{ background:var(--brand-red); }
.tl-year{ font-weight:800; font-size:15px; color:var(--color-primary); font-variant-numeric:tabular-nums; white-space:nowrap; padding-right:18px; }
.tl-body{ font-size:15px; line-height:1.4; color:var(--color-fg); }
.tl-body b{ font-weight:700; }
.tl-body small{ display:block; margin-top:2px; font-size:13.5px; color:var(--color-muted); }
@media (max-width:767px){
  .timeline{ padding:16px 14px 4px; }
  .tl-item{ grid-template-columns:78px 1fr; gap:14px; }
  .tl-item::before{ left:64px; } .tl-item::after{ left:68px; }
  .tl-year{ font-size:14px; padding-right:14px; }
}

/* --- Календарный учебный график (блок KugBlock, страница «Календарно-учебный график») --- */
.kug{ --k-theory:#6491F0; --k-attest:#820AAA; --k-session:#FA235A; --k-practice:#46C8A0; --k-gia:#052891; --k-vac:#E16AFF; --k-hol:#9A9BA0; }
.kug-pick{ display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; margin:6px 0 6px; }
.kug-tracks{ display:flex; flex-wrap:wrap; gap:6px; }
.kug-tracks button{ min-height:40px; padding:0 14px; border:1px solid var(--color-line); border-radius:999px; background:#fff;
  font:600 14px var(--font); color:var(--color-fg); cursor:pointer; }
.kug-tracks button small{ margin-left:6px; font-weight:700; font-size:12px; color:var(--color-muted); }
.kug-tracks button:hover{ border-color:var(--color-primary); color:var(--color-primary); }
.kug-tracks button[aria-checked="true"]{ background:var(--color-primary); border-color:var(--color-primary); color:#fff; }
.kug-tracks button[aria-checked="true"] small{ color:rgba(255,255,255,.75); }
.content .kug-for{ margin:4px 0 14px !important; font-size:13.5px !important; color:var(--color-muted); }

.kug-now{ display:grid; grid-template-columns:1fr 1fr; gap:0; margin:0 0 22px; border-radius:10px; overflow:hidden; border:1px solid var(--color-line); }
.kug-now > div{ padding:16px 18px; }
.kug-now > div + div{ border-left:1px solid var(--color-line); }
.kug-now .lbl{ display:block; font-size:11.5px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--color-muted); margin-bottom:6px; }
.kug-now .big{ display:block; font-size:20px; font-weight:800; line-height:1.25; color:var(--color-fg); }
.kug-now .sub{ display:block; margin-top:4px; font-size:14px; color:var(--color-text); }
.kug-now .is-now{ background:var(--color-subtle); border-left:4px solid var(--color-primary); }
.kug-now .tag{ display:inline-block; margin-top:8px; padding:2px 8px; border-radius:3px; border-left:4px solid; background:var(--color-subtle); font-size:12px; font-weight:800; color:var(--color-fg); }
.kug-now .bar{ height:6px; margin-top:10px; border-radius:3px; background:#fff; overflow:hidden; }
.kug-now .bar i{ display:block; height:100%; background:var(--color-primary); }

.kug-year{ position:relative; margin:0 0 26px; padding-top:22px; }
.kug-months{ position:absolute; top:0; left:0; right:0; height:18px; }
.kug-months span{ position:absolute; top:0; font-size:11.5px; font-weight:700; color:var(--color-muted); white-space:nowrap; transform:translateX(2px); }
.kug-months span::before{ content:""; position:absolute; left:-2px; top:14px; width:1px; height:48px; background:var(--color-line); }
.kug-lane{ position:relative; height:36px; margin-bottom:6px; border-radius:6px; background:var(--color-subtle); }
.kug-seg{ position:absolute; top:0; bottom:0; border-radius:4px; overflow:hidden; white-space:nowrap; font-size:11.5px; font-weight:700;
  color:#fff; padding:0 6px 6px; display:flex; align-items:center; cursor:default; }
.kug-seg.past, .kug-ov.past{ opacity:.35; }
.kug-seg{ color:var(--color-fg); } .kug-seg.k-gia{ color:#fff; }   /* контраст надписей на светлых цветах полосы */
/* то, что идёт ВО ВРЕМЯ обучения: модульные недели — вставка снизу полосы обучения, параллельные практики — полоса сверху */
.kug-ov{ position:absolute; border-radius:2px; cursor:default; }
.kug-ov.attest{ bottom:0; height:9px; background:repeating-linear-gradient(135deg, var(--k-attest) 0 4px, #A63CC4 4px 8px); border-radius:0 0 3px 3px; }
.kug-ov.practice{ top:0; height:5px; background:var(--k-practice); border-radius:3px 3px 0 0; }
.kug .sw-attest{ background:repeating-linear-gradient(135deg, var(--k-attest) 0 3px, #A63CC4 3px 6px); }
.kug-legend .sw-par{ height:5px !important; align-self:center; }
.kug-today{ position:absolute; top:20px; bottom:-2px; width:2px; margin-left:-1px; background:var(--color-fg); }   /* линия по центру даты */
.kug-today::after{ content:"сегодня"; position:absolute; bottom:-18px; left:50%; transform:translateX(-50%); font-size:11px; font-weight:800;
  color:var(--color-fg); background:#fff; padding:0 3px; }
.kug-today.edge-r::after{ left:auto; right:0; transform:none; }
.kug-today.edge-l::after{ left:0; transform:none; }
.content .kug-legend{ list-style:none; margin:4px 0 22px !important; padding:0; display:flex; flex-wrap:wrap; gap:6px 16px; }
.kug-legend li{ display:flex; align-items:center; gap:6px; font-size:13px; color:var(--color-text); }
.kug-legend i{ width:12px; height:12px; border-radius:3px; }

.kug-sem{ margin-top:6px; }
.kug-sem h3{ margin:18px 0 6px !important; font-size:11.5px !important; font-weight:800; letter-spacing:.12em; text-transform:uppercase; color:var(--color-muted); }
.kug-row{ display:grid; grid-template-columns:170px 1fr auto; gap:14px; align-items:center; min-height:50px; padding:8px 0; border-top:1px solid var(--color-line); }
.kug-sem .kug-row:last-child{ border-bottom:1px solid var(--color-line); }
.kug-row .dates{ font-weight:800; font-size:14.5px; color:var(--color-fg); font-variant-numeric:tabular-nums; }
.kug-row .dates small{ display:block; font-weight:600; font-size:12px; color:var(--color-muted); }
.kug-row .what{ font-size:15px; font-weight:600; color:var(--color-fg); line-height:1.35; }
.kug-row .what i{ display:inline-block; width:10px; height:10px; border-radius:3px; margin-right:8px; vertical-align:0; }
.kug-row .what small{ display:block; margin-top:2px; font-weight:500; font-size:13px; color:var(--color-muted); }
.kug-row .st{ font-size:12px; font-weight:800; letter-spacing:.04em; white-space:nowrap; }
.kug-row.past .dates, .kug-row.past .what{ color:var(--color-muted); font-weight:500; }
.kug-row.past .st{ color:var(--color-muted); font-weight:600; }
.kug-row.now{ background:#FFF3F6; margin:0 -12px; padding:8px 12px; border-radius:8px; border-top-color:transparent; }
.kug-row.now .st{ padding:2px 8px; border-radius:4px; background:var(--brand-red-text); color:#fff; }
.kug-row.soon .st{ color:var(--color-primary); }
.kug-row.child{ min-height:40px; border-top:1px dashed var(--color-line); padding-left:24px; position:relative; }
.kug-row.child::before{ content:""; position:absolute; left:8px; top:0; bottom:50%; width:10px; border-left:2px solid var(--k-theory); border-bottom:2px solid var(--k-theory); border-bottom-left-radius:6px; }
.kug-row.child .dates{ font-size:13.5px; }
.kug-row.child .what{ font-weight:500; font-size:14px; }
.kug-row.child.now{ margin:0 -12px; padding:8px 12px 8px 36px; }
.kug-row.child.now::before{ left:20px; }
.kug-now .mod{ display:inline-block; margin-top:8px; padding:3px 9px; border-radius:4px; background:#F3E6F7; color:var(--k-attest); font-size:13px; font-weight:700; }
.content .kug-src{ margin-top:20px !important; font-size:13.5px !important; color:var(--color-muted); }
.kug-src a{ font-weight:700; text-decoration:none; }
@media (max-width:767px){
  .kug-now{ grid-template-columns:1fr; } .kug-now > div + div{ border-left:0; border-top:1px solid var(--color-line); }
  .kug-row{ grid-template-columns:1fr auto; gap:4px 10px; } .kug-row .what{ grid-column:1 / -1; grid-row:2; }
  .kug-months span:nth-child(even){ display:none; }
  .kug-seg{ font-size:0; }
}

/* --- Ключевые даты календарного графика в шапке (тег kug_header; по образцу сайта кафедры 2021 г.) --- */
.head-main{ display:flex; align-items:center; justify-content:space-between; gap:24px; min-width:0; }
.kug-head{ flex:0 1 auto; }
.kh-cap{ display:block; margin:0 3px 3px 0; text-align:right; font-size:10.5px; font-weight:800; letter-spacing:.09em; text-transform:uppercase; color:var(--color-muted); text-decoration:none; }
.kh-cap:hover{ color:var(--color-primary); }
.kug-head table{ border-collapse:separate; border-spacing:3px; font-size:11.5px; line-height:1.25; }
.kug-head th{ padding:0 4px; font-size:10.5px; font-weight:800; color:var(--color-muted); white-space:nowrap; }
.kug-head tbody th{ text-align:right; }
.kug-head td{ min-width:112px; padding:0; border-radius:5px; background:var(--color-subtle); }
.kug-head td a{ display:block; padding:4px 8px; border-radius:5px; color:inherit; text-decoration:none; white-space:nowrap; transition:background var(--t) var(--ease); }
.kug-head td a:hover{ background:#E8EDFB; }
.kug-head td a:focus-visible{ outline:2px solid var(--color-primary); outline-offset:1px; }
.kug-head td b{ display:block; font-weight:700; color:var(--color-fg); }
.kug-head td small{ display:block; font-size:11px; font-weight:600; color:var(--color-primary); }
.kug-head td.is-live{ background:#F3E6F7; } .kug-head td.is-live b{ color:#820AAA; }
.kug-head td.na, .kug-head thead td{ background:transparent; }   /* пустые: нет курса и угловая ячейка */
@media (max-width:1240px){ .head-main .site-title{ display:none; } .head-main{ justify-content:flex-end; } }

/* --- Таблицы-матрицы «практика × семестр» (шаблон blocks/table.html, фильтр is_matrix) --- */
.sr{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; }
.table-matrix{ font-size:15px; }
.table-matrix th, .table-matrix td{ padding:12px 10px; vertical-align:middle; }
.table-matrix thead th{ font-size:11.5px; border-bottom:1px solid var(--color-line-strong); white-space:nowrap; }
.table-matrix thead th:first-child{ text-align:left; }
.table-matrix .tm-sem{ font-weight:600; letter-spacing:.04em; text-transform:none; color:var(--color-muted); }
.table-matrix tbody th{ font-weight:600; line-height:1.35; min-width:0; }
.table-matrix thead th:not(:first-child), .table-matrix td{ width:72px; min-width:72px; }
.table-matrix tbody tr:hover > *{ background:var(--color-subtle); }
.table-matrix td{ background-image:linear-gradient(var(--color-line), var(--color-line)); background-size:1px 100%; background-repeat:no-repeat; background-position:0 0; }
/* ссылки на курсы ЭОС в первой колонке: «название-ссылка» или название и ниже «Курс в ЭОС: 09.03.01 ↗ 09.03.04 ↗» */
.table a.pr-link{ color:var(--color-fg); text-decoration:none; border-bottom:1px solid var(--color-line-strong); }
.table a.pr-link:hover{ color:var(--color-primary); border-bottom-color:var(--color-primary); }
.table a.pr-link::after, .table a.pr-chip::after{ content:" ↗"; font-size:.85em; color:var(--color-muted); }
.pr-name{ display:block; }
.pr-eos{ display:block; margin-top:4px; font-size:12.5px; font-weight:600; color:var(--color-muted); }
.table a.pr-chip{ display:inline-block; margin:2px 6px 0 0; padding:1px 8px; border:1px solid var(--color-line); border-radius:999px; color:var(--color-primary); text-decoration:none; font-weight:700; }
.table a.pr-chip:hover{ border-color:var(--color-primary); background:#E8EDFB; }
.table a.pr-chip:hover::after, .table a.pr-link:hover::after{ color:var(--color-primary); }
.mark{ position:relative; display:inline-block; width:26px; height:26px; border-radius:50%; background:var(--color-primary); vertical-align:middle; }
.mark::after{ content:""; position:absolute; left:8px; top:7px; width:10px; height:5px; border-left:2.5px solid #fff; border-bottom:2.5px solid #fff; transform:rotate(-45deg); }
@media (max-width:767px){
  .table-matrix{ font-size:14px; } .table-matrix th, .table-matrix td{ padding:10px 6px; }
  .table-matrix thead th:not(:first-child), .table-matrix td{ width:48px; min-width:48px; }
  .table-matrix .tm-sem{ display:block; letter-spacing:0; } .mark{ width:22px; height:22px; } .mark::after{ left:6px; top:5.5px; width:9px; height:4.5px; }
}

/* Приказы о темах ВКР (блок vkr_orders, js/vkr.js) */
.vkr{ margin-top:8px; }
.vkr-tools{ position:sticky; top:0; z-index:20; background:rgba(255,255,255,.97); border-bottom:1px solid var(--color-line); padding:12px 0 10px; margin-bottom:8px; }
.vkr-row{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.vkr-search{ position:relative; flex:1 1 300px; }
.vkr-search input, .vkr-combo input{ width:100%; height:44px; border:1px solid #C9CCD3; border-radius:8px; padding:0 14px; background:#fff; font:inherit; font-size:15px; color:var(--color-fg); }
.vkr-search input{ padding-left:40px; }
.vkr-search svg{ position:absolute; left:13px; top:13px; width:18px; height:18px; stroke:var(--color-muted); fill:none; stroke-width:2; }
.vkr-combo{ position:relative; flex:0 1 280px; }
.vkr-combo input{ padding-right:34px; }
.vkr-x{ position:absolute; right:6px; top:7px; width:30px; height:30px; border:0; background:none; cursor:pointer; color:var(--color-muted); font-size:20px; line-height:1; display:none; }
.vkr-combo.has .vkr-x{ display:block; }
.vkr-combo ul{ position:absolute; left:0; right:0; top:48px; max-height:340px; overflow:auto; background:#fff; border:1px solid var(--color-line); border-radius:8px; box-shadow:0 12px 30px rgba(20,21,26,.12); list-style:none; margin:0; padding:4px; display:none; z-index:30; }
.vkr-combo.open ul{ display:block; }
.vkr-combo li{ display:flex; justify-content:space-between; gap:10px; padding:8px 10px; border-radius:6px; cursor:pointer; font-size:14px; color:var(--color-fg); }
.vkr-combo li span{ color:var(--color-muted); font-variant-numeric:tabular-nums; }
.vkr-combo li:hover, .vkr-combo li.is-act{ background:var(--color-subtle); }
.vkr-combo li.is-none{ color:var(--color-muted); cursor:default; }
.vkr-seg{ display:inline-flex; border:1px solid #C9CCD3; border-radius:8px; overflow:hidden; height:44px; }
.vkr-seg button{ border:0; background:#fff; padding:0 14px; cursor:pointer; font:inherit; font-weight:600; font-size:14px; color:var(--color-fg); }
.vkr-seg button[aria-pressed="true"]{ background:var(--color-primary); color:#fff; }
.vkr-chips{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-top:10px; }
.vkr-chips .chip{ min-height:36px; padding:0 14px; font:inherit; font-size:13.5px; font-weight:600; background:#fff; cursor:pointer; }
.vkr-chips .chip span{ color:var(--color-muted); font-weight:500; margin-left:4px; }
.vkr-chips .chip.is-on{ background:var(--color-fg); color:#fff; } .vkr-chips .chip.is-on span{ color:#C9CCD3; }
.vkr-found{ margin-left:auto; font-size:13.5px; color:var(--color-muted); }
.vkr button.link{ border:0; background:none; padding:0; color:var(--color-primary); cursor:pointer; font:inherit; text-decoration:underline; }
.vkr-h{ font-size:26px; margin-top:32px; }
.vkr-ord{ margin-top:22px; }
.vkr-ord h3{ font-size:19px; font-weight:800; }
.vkr-meta{ font-size:14px; color:var(--color-muted); margin:4px 0 6px; }
.vkr-pcap{ font-size:14px; margin:14px 0 0; } .vkr-pcap b{ color:var(--color-fg); }
.vkr-t td, .vkr-t th{ text-align:left; }
.vkr-t thead th button{ border:0; background:none; padding:0; font:inherit; letter-spacing:inherit; text-transform:inherit; color:inherit; cursor:pointer; }
.vkr-t thead th[aria-sort="ascending"] button::after{ content:" ↑"; } .vkr-t thead th[aria-sort="descending"] button::after{ content:" ↓"; }
.vkr-t thead th button:hover{ color:var(--color-primary); }
.vkr-n{ width:48px; color:var(--color-muted); } .vkr-tk{ width:96px; white-space:nowrap; }
.vkr-sv{ width:240px; } .vkr-sv small{ display:block; color:var(--color-muted); font-size:12.5px; line-height:1.35; }
.vkr-sv a{ color:var(--color-primary); text-decoration:underline; text-decoration-color:#B9C3E3; text-underline-offset:3px; }
.vkr-supbtn{ border:0; background:none; padding:0 0 0 6px; font:inherit; font-size:12px; font-weight:600; color:var(--color-muted); cursor:pointer; white-space:nowrap; }
.vkr-supbtn:hover{ color:var(--color-primary); text-decoration:underline; }
.vkr mark{ background:#FFE9A8; color:inherit; border-radius:2px; padding:0 1px; }
.vkr-badge{ display:table; margin-top:6px; font-size:12px; font-weight:700; color:var(--brand-red-text); background:#FDECF0; border-radius:4px; padding:2px 7px; text-decoration:none; }
.vkr-badge.is-was{ color:var(--color-primary); background:#E8EDFB; }
a.vkr-badge:hover{ text-decoration:underline; }
.vkr-t tr.is-flash td{ animation:vkr-flash 2.4s ease; }
@keyframes vkr-flash{ 0%,40%{ background:#FFF1B8; } 100%{ background:transparent; } }
.vkr-empty{ padding:32px 0; text-align:center; color:var(--color-muted); }
.vkr-bysup{ margin-top:8px; }
.vkr-person{ border-bottom:1px solid var(--color-line); }
.vkr-person summary{ list-style:none; display:flex; align-items:center; gap:14px; padding:14px 2px; cursor:pointer; }
.vkr-person summary::-webkit-details-marker{ display:none; }
.vkr-person summary:hover b{ color:var(--color-primary); }
.vkr-av{ width:40px; height:40px; flex:none; border-radius:50%; background:var(--color-subtle); display:grid; place-items:center; font-weight:800; color:var(--color-primary); }
.vkr-who b{ display:block; color:var(--color-fg); font-size:16px; } .vkr-who small{ color:var(--color-muted); font-size:13px; }
.vkr-pills{ margin-left:auto; display:flex; flex-wrap:wrap; gap:6px; justify-content:flex-end; align-items:center; }
.vkr-pill{ font-size:12px; border-radius:999px; padding:2px 9px; background:var(--color-subtle); font-weight:600; white-space:nowrap; }
.vkr-pill.is-total{ background:var(--color-primary); color:#fff; }
.vkr-pills::after{ content:""; width:9px; height:9px; margin-left:8px; border-right:2px solid var(--color-muted); border-bottom:2px solid var(--color-muted); transform:rotate(45deg); transition:transform var(--t) var(--ease); }
.vkr-person[open] .vkr-pills::after{ transform:rotate(-135deg); }
.vkr-person ol{ margin:0 0 12px 54px; padding:0; list-style:none; }
.vkr-person li{ padding:8px 0; border-top:1px dashed var(--color-line); font-size:14.5px; }
.vkr-person li small{ display:block; color:var(--color-muted); font-size:12.5px; }
.vkr-more{ display:inline-block; margin:0 0 14px 54px; font-size:14px; }
@media (max-width:767px){
  .vkr-tools{ position:static; }
  .vkr-combo{ flex:1 1 100%; }
  .vkr-chips{ flex-wrap:nowrap; overflow-x:auto; padding-bottom:4px; } .vkr-chips .chip{ white-space:nowrap; flex:none; } .vkr-found{ margin-left:0; white-space:nowrap; }
  .vkr-t thead{ display:none; }
  .vkr-t tr{ display:grid; grid-template-columns:auto 1fr; gap:2px 12px; padding:10px 0; border-bottom:1px solid var(--color-line); }
  .vkr-t tr[hidden]{ display:none; }
  .vkr-t td{ border:0; padding:0; width:auto; } .vkr-n{ grid-row:span 3; } .vkr-tk::before{ content:"билет "; color:var(--color-muted); }
  .vkr-person ol, .vkr-more{ margin-left:0; } .vkr-pills .vkr-pill:not(.is-total){ display:none; }
}

/* Оглавление страницы (блок toc) */
.toc{ display:flex; flex-wrap:wrap; gap:8px; margin:20px 0 4px; }
.toc a{ display:inline-flex; align-items:center; min-height:40px; padding:0 14px; border:1px solid var(--color-line); border-radius:999px;
  color:var(--color-fg); text-decoration:none; font-weight:600; font-size:14px; }
.toc a:hover{ border-color:var(--color-fg); color:var(--color-fg); }
.block[id]{ scroll-margin-top:16px; }

/* Путь к защите (блок vkr_path) */
.path-for{ margin:18px 0 6px; font-size:14px; color:var(--color-muted); } .path-for b{ color:var(--color-fg); }
.path-steps{ list-style:none; margin:0; padding:0; border-top:1px solid var(--color-line); }
.path-steps li{ display:grid; grid-template-columns:56px 1fr; gap:16px; padding:16px 0; border-bottom:1px solid var(--color-line); }
.path-n{ font-weight:800; font-size:15px; color:var(--color-muted); font-variant-numeric:tabular-nums; padding-top:2px; }
.path-steps h3{ font-size:17px; font-weight:800; margin:2px 0 4px; display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.path-when{ margin:0; font-size:13px; font-weight:700; color:var(--color-primary); font-variant-numeric:tabular-nums; }
.path-note{ margin:0; font-size:14.5px; color:var(--color-text); }
.path-steps li.is-done{ opacity:.6; }
.path-steps li.is-now{ background:#FDECF0; margin:0 -16px; padding-left:16px; padding-right:16px; border-radius:8px; border-bottom-color:transparent; }
.path-steps li.is-now .path-n{ color:var(--brand-red-text); }
.path-now{ font-size:12px; font-weight:800; letter-spacing:.04em; color:#fff; background:var(--brand-red-text); border-radius:4px; padding:2px 8px; }
.path-src{ font-size:13px; color:var(--color-muted); margin-top:10px; }

/* Темы ВКР по годам (блок vkr_topics) */
.topics-find{ margin:16px 0 8px; padding:18px; border-radius:12px; background:var(--color-subtle); }
.topics-find > label{ display:block; font-weight:800; color:var(--color-fg); margin-bottom:8px; }
.topics-find > div{ display:flex; gap:8px; flex-wrap:wrap; }
.topics-find input{ flex:1 1 280px; height:44px; border:1px solid #C9CCD3; border-radius:8px; padding:0 14px; font:inherit; background:#fff; color:var(--color-fg); }
.topics-find select{ height:44px; border:1px solid #C9CCD3; border-radius:8px; padding:0 10px; font:inherit; background:#fff; color:var(--color-fg); }
.topics-find .btn{ height:44px; margin:0; border:0; cursor:pointer; font:inherit; font-weight:700; }
.topics-hint{ margin:10px 0 0; font-size:13.5px; color:var(--color-muted); }
.topics-years{ list-style:none; margin:8px 0 0; padding:0; border-top:2px solid var(--color-line-strong); }
.topics-years li{ border-bottom:1px solid var(--color-line); }
.prose .topics-year, .topics-year{ display:grid; grid-template-columns:120px 1fr auto; align-items:center; gap:6px 18px; min-height:56px; padding:10px 0;
  color:var(--color-fg); text-decoration:none; }
.topics-year:hover .topics-y, .topics-year:hover .topics-arrow{ color:var(--color-primary); }
.topics-y{ font-size:18px; font-weight:800; font-variant-numeric:tabular-nums; }
.topics-cnts{ display:flex; flex-wrap:wrap; gap:4px 18px; }
.topics-cnt{ font-size:14px; color:var(--color-text); white-space:nowrap; } .topics-cnt b{ font-variant-numeric:tabular-nums; }
.topics-cnt.is-muted{ color:var(--color-muted); }
.topics-arrow{ font-weight:800; color:var(--color-muted); transition:transform var(--t) var(--ease); }
.topics-year:hover .topics-arrow{ transform:translateX(3px); }
.topics-arch{ margin-top:10px; }
.topics-arch summary{ cursor:pointer; min-height:44px; display:flex; align-items:center; font-size:14px; font-weight:600; color:var(--color-muted); }
.topics-arch summary:hover{ color:var(--color-primary); }
.topics-arch ul{ list-style:none; margin:0 0 8px; padding:0; display:flex; flex-wrap:wrap; gap:8px; }
.prose .topics-arch a, .topics-arch a{ display:inline-flex; gap:6px; align-items:center; min-height:36px; padding:0 12px; border:1px solid var(--color-line);
  border-radius:8px; color:var(--color-fg); text-decoration:none; font-size:14px; font-variant-numeric:tabular-nums; }
.topics-arch a:hover{ border-color:var(--color-fg); }

/* Чек-лист (блок checklist) */
.check-cols{ display:grid; grid-template-columns:1fr 1fr; gap:32px; margin-top:12px; }
.check-cols h3{ font-size:13px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--color-muted); margin:0 0 6px; }
.check-cols ol{ list-style:none; margin:0 0 18px; padding:0; counter-reset:n; border-top:1px solid var(--color-line); }
.check-cols li{ counter-increment:n; display:grid; grid-template-columns:32px 1fr; padding:10px 0; border-bottom:1px solid var(--color-line);
  color:var(--color-fg); font-size:15.5px; margin:0; }
.check-cols li::before{ content:counter(n, decimal-leading-zero); font-weight:800; font-size:13px; color:var(--color-primary); padding-top:3px; }
.check-cols li > span{ min-width:0; }
.check-cols small, .links-block small{ display:block; color:var(--color-muted); font-size:13px; font-weight:500; margin-top:2px; }
.check-tag{ font-size:12px; font-weight:800; color:var(--color-primary); background:#E8EDFB; border-radius:4px; padding:1px 7px; margin-left:6px; white-space:nowrap; }

/* Список ссылок и файлов (блок links) */
.links-block .docs-list{ margin-top:8px; }
.links-block .doc.is-link{ grid-template-columns:1fr auto; }
@media (max-width:767px){
  .prose .topics-year, .topics-year{ grid-template-columns:1fr auto; } .topics-y{ grid-column:1; } .topics-arrow{ grid-column:2; grid-row:1; }
  .topics-cnts{ grid-column:1 / -1; gap:2px 12px; } .topics-cnt{ font-size:13.5px; }
  .check-cols{ grid-template-columns:1fr; gap:0; }
  .path-steps li{ grid-template-columns:40px 1fr; gap:10px; }
  .links-block .doc.is-link{ grid-template-columns:1fr auto; }
}

/* Блоки раздела внутри .prose: заголовок раздела — как во всех блоках (13px капсом), списки без отступа и маркеров */
.prose .block-head h2{ font-size:13px; margin:0; }
.prose .path-block, .prose .topics-block, .prose .checklist, .prose .links-block{ padding-top:calc(var(--u)*5); }
.prose .path-block:first-of-type, .prose > .toc + .block{ padding-top:calc(var(--u)*4); }
.content .path-steps, .content .topics-years, .content .check-cols ol, .content .topics-arch ul, .content .links-block .docs-list{ padding-left:0; }
.content .path-steps li::marker, .content .topics-years li::marker{ content:""; }
.prose .path-steps h3, .prose .check-cols h3{ max-width:none; }
.prose .toc a, .prose .topics-year{ text-decoration:none; }

/* согласие на Яндекс Метрику: небольшая карточка в углу, не перекрывает страницу и не мешает чтению */
.consent{ position:fixed; z-index:60; left:24px; bottom:24px; width:min(380px, calc(100vw - 32px)); padding:18px 20px 16px;
  background:var(--color-bg); color:var(--color-text); border:1px solid var(--color-line); border-radius:12px;
  box-shadow:0 12px 32px rgba(3,28,102,.14); font-size:14px; line-height:1.5; }
.consent::before{ content:""; position:absolute; left:0; right:0; top:0; height:3px; border-radius:12px 12px 0 0; background:var(--stripe); }
.consent[hidden]{ display:none; }
.consent p{ margin:0 0 12px; }
.consent .consent-t{ margin-bottom:4px; font-weight:700; color:var(--color-fg); font-size:15px; }
.consent a{ color:var(--color-primary); font-weight:600; }
.consent-actions{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.consent .btn{ min-height:40px; padding:0 18px; font-size:14px; border:0; cursor:pointer; font-family:inherit; }
.consent-no{ min-height:40px; padding:0 14px; border:1px solid var(--color-line); border-radius:8px; background:var(--color-bg);
  color:var(--color-fg); font:inherit; font-weight:600; cursor:pointer; transition:border-color var(--t) var(--ease); }
.consent-no:hover{ border-color:var(--color-line-strong); }
.consent button:focus-visible{ outline:2px solid var(--color-primary); outline-offset:2px; }
.consent-open{ border:0; background:none; padding:0; font:inherit; color:inherit; cursor:pointer; text-decoration:underline; text-underline-offset:2px; }
.consent-open:hover{ color:var(--brand-pink); }
.footer-legal a{ color:inherit; text-decoration:underline; text-underline-offset:2px; }
@media (max-width:767px){ .consent{ left:16px; right:16px; bottom:16px; width:auto; padding:16px; } }
@media print{ .consent{ display:none !important; } }
