/* Top100 Digital — собрано scripts/build-css.js из design-system/project; руками не править */

@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fonts/inter-cyrillic-400-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fonts/inter-latin-ext-400-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fonts/inter-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fonts/inter-cyrillic-500-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fonts/inter-latin-ext-500-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fonts/inter-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/fonts/inter-cyrillic-600-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/fonts/inter-latin-ext-600-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:600;src:url(/assets/fonts/inter-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/fonts/inter-cyrillic-700-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/fonts/inter-latin-ext-700-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-display:swap;font-weight:700;src:url(/assets/fonts/inter-latin-700-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fonts/jetbrains-mono-cyrillic-400-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fonts/jetbrains-mono-latin-ext-400-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/fonts/jetbrains-mono-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fonts/jetbrains-mono-cyrillic-500-normal.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fonts/jetbrains-mono-latin-ext-500-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"JetBrains Mono";font-style:normal;font-display:swap;font-weight:500;src:url(/assets/fonts/jetbrains-mono-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

@font-face{font-family:"Inter Fallback A";font-weight:400;src:local("Arial"),local("ArialMT");size-adjust:106.11%;ascent-override:91.30%;descent-override:22.73%;line-gap-override:0%}
@font-face{font-family:"Inter Fallback A";font-weight:700;src:local("Arial Bold"),local("Arial-BoldMT");size-adjust:102.96%;ascent-override:94.09%;descent-override:23.43%;line-gap-override:0%}
@font-face{font-family:"Inter Fallback R";font-weight:400;src:local("Roboto"),local("Roboto-Regular");size-adjust:104.95%;ascent-override:92.30%;descent-override:22.98%;line-gap-override:0%}
@font-face{font-family:"Inter Fallback R";font-weight:700;src:local("Roboto Bold"),local("Roboto-Bold");size-adjust:107.20%;ascent-override:90.37%;descent-override:22.50%;line-gap-override:0%}
@font-face{font-family:"JetBrains Mono Fallback";src:local("Courier New"),local("CourierNewPSMT");size-adjust:100%;ascent-override:102.02%;descent-override:30%;line-gap-override:0%}

:root, [data-theme="light"] {
  --paper: #f4f5f3;
  --card: #ffffff;
  --card-2: #eceeea;
  --card-3: #e2e5df;
  --ink: #151a22;
  --ink-2: #3c444f;
  --muted: #636b77;
  --line: #d9dcd6;
  --line-2: #bfc4bc;
  --line-strong: #7f8979;
  --stamp: #3a36b8;
  --on-stamp: #ffffff;
  --stamp-soft: #e6e6f7;
  --budget: #1e7549;
  --budget-soft: #e2f0e8;
  --nodata: #76694f;
  --nodata-soft: #f2ede2;
  --stop: #a33526;
  --stop-soft: #f7e7e4;
  --grid: rgba(21,26,34,0.05);
  --focus-ring: var(--stamp);
  --shadow-lift: 0 1px 2px rgba(21,26,34,0.05), 0 14px 34px -24px rgba(21,26,34,0.45);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --paper: #0e1218;
    --card: #161b23;
    --card-2: #1e242e;
    --card-3: #262d38;
    --ink: #e9ecef;
    --ink-2: #c2c8d0;
    --muted: #8f98a4;
    --line: #2a313b;
    --line-2: #3b4450;
    --line-strong: #637286;
    --stamp: #8b87f0;
    --on-stamp: #0e1218;
    --stamp-soft: #1f2140;
    --budget: #6fc39a;
    --budget-soft: #15271f;
    --nodata: #c4b48c;
    --nodata-soft: #262218;
    --stop: #e08574;
    --stop-soft: #2c1b18;
    --grid: rgba(233,236,239,0.05);
    --focus-ring: var(--stamp);
    --shadow-lift: 0 1px 2px rgba(0,0,0,0.45), 0 16px 38px -26px rgba(0,0,0,0.95);
  }
}
[data-theme="dark"] {
  --paper: #0e1218;
  --card: #161b23;
  --card-2: #1e242e;
  --card-3: #262d38;
  --ink: #e9ecef;
  --ink-2: #c2c8d0;
  --muted: #8f98a4;
  --line: #2a313b;
  --line-2: #3b4450;
  --line-strong: #637286;
  --stamp: #8b87f0;
  --on-stamp: #0e1218;
  --stamp-soft: #1f2140;
  --budget: #6fc39a;
  --budget-soft: #15271f;
  --nodata: #c4b48c;
  --nodata-soft: #262218;
  --stop: #e08574;
  --stop-soft: #2c1b18;
  --grid: rgba(233,236,239,0.05);
  --focus-ring: var(--stamp);
  --shadow-lift: 0 1px 2px rgba(0,0,0,0.45), 0 16px 38px -26px rgba(0,0,0,0.95);
}
:root {
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-7: 28px;
  --space-10: 40px;
  --radius-none: 0px;
  --touch-min: 44px;
  --chip-min: 40px;
  --page-max: 1120px;
  --measure: 66ch;
  --font-display: "Inter", "Inter Fallback A", "Inter Fallback R", system-ui, sans-serif;
  --font-sans: "Inter", "Inter Fallback A", "Inter Fallback R", "Segoe UI", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", "JetBrains Mono Fallback", ui-monospace, "SF Mono", Menlo, monospace;
  color-scheme: light dark;
}


/* Top100 Digital — стили компонентов каталога колледжей.
   Цвета, отступы, размеры и гарнитуры — только токены из tokens.css; своих значений цвета здесь нет.
   Имена: блок, элемент через «__», вариант через «--» (.fact, .fact__v, .fact--empty).
   Перестройка под ширину — по контейнеру (@container), а не по окну: компонент одинаково ведёт себя
   в колонке, в боковой панели и в превью. База — узкий вид от 360 px, широкий включается запросом.
   Шрифты: в превью дизайн-системы — Google Fonts (строка @import выше); на сайте её заменяют
   @font-face со своего домена. */

/* ---------- основа ---------- */

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
  margin: 0;
  background-color: var(--paper);
  background-image:
    linear-gradient(var(--grid) 1px, transparent 1px),
    linear-gradient(90deg, var(--grid) 1px, transparent 1px);
  background-size: 28px 28px;
  color: var(--ink);
  font: 400 16px/24px var(--font-sans);
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, h4, p, dl, dd, figure, blockquote { margin: 0; }
ul[class], ol[class] { list-style: none; margin: 0; padding: 0; }
a { color: var(--stamp); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { text-decoration-thickness: 2px; }
:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
input, button { font: inherit; color: inherit; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.num { font-variant-numeric: tabular-nums; }
mark { background: none; color: inherit; text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

/* Колонка страницы и раздел */
.page {
  max-width: var(--page-max); margin: 0 auto;
  padding: var(--space-5) var(--space-4) var(--space-10);
  display: flex; flex-direction: column; gap: var(--space-7);
}
@media (min-width: 768px) { .page { padding-inline: var(--space-7); gap: var(--space-10); } }
.sec { display: flex; flex-direction: column; gap: var(--space-3); }
.sec__h { font: 700 22px/28px var(--font-sans); text-wrap: balance; }               /* t-h2 */
.sec__more { font: 400 14px/21px var(--font-sans); }
.with-side { display: grid; gap: var(--space-7); grid-template-columns: minmax(0, 1fr); }
@media (min-width: 900px) { .with-side { grid-template-columns: minmax(0, 1fr) 17.5rem; } }

/* ---------- TopBar: шапка сайта ---------- */

.topbar { container: topbar / inline-size; background: var(--card-2); border-bottom: 1px solid var(--line); }
.topbar__in {
  max-width: var(--page-max); margin: 0 auto; padding: var(--space-2) var(--space-4);
  display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-5);
}
.topbar__brand {
  font: 700 16px/20px var(--font-display); letter-spacing: -0.01em;
  color: var(--ink); text-decoration: none; white-space: nowrap; padding: 12px 0;
}
.topbar__nav { display: none; gap: var(--space-5); }
.topbar__nav a { font: 400 14px/20px var(--font-sans); color: var(--ink-2); text-decoration: none; padding: 12px 0; white-space: nowrap; }
.topbar__nav a:hover { color: var(--ink); text-decoration: underline; }
.topbar__nav a[aria-current="page"] { color: var(--stamp); font-weight: 600; }
.topbar__menu { position: relative; margin-left: auto; }
.topbar__menu > summary {
  list-style: none; display: flex; align-items: center; min-height: var(--touch-min);
  padding: 0 var(--space-3); border: 1px solid var(--line-strong); background: var(--card);
  font: 600 14px/20px var(--font-sans); cursor: pointer;
}
.topbar__menu > summary::-webkit-details-marker { display: none; }
.topbar__menu[open] > summary { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.topbar__menu > nav {
  position: absolute; right: 0; top: calc(100% + var(--space-2)); z-index: 10; min-width: 15rem;
  display: flex; flex-direction: column;
  background: var(--card); border: 1px solid var(--line-2); box-shadow: var(--shadow-lift);
}
.topbar__menu > nav a {
  display: flex; align-items: center; min-height: var(--touch-min); padding: 0 var(--space-4);
  color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--line);
}
.topbar__menu > nav a:last-child { border-bottom: 0; }
.topbar__menu > nav a[aria-current="page"] { color: var(--stamp); font-weight: 600; }
.topbar__search { order: 3; flex: 1 0 100%; padding-bottom: var(--space-1); }
.topbar__search input {
  width: 100%; min-height: var(--touch-min); padding: 0 var(--space-3);
  border: 1px solid var(--line-strong); border-radius: 0; background: var(--card);
  font: 400 16px/24px var(--font-sans); -webkit-appearance: none; appearance: none;
}
.topbar__search input::placeholder { color: var(--muted); opacity: 1; }
@container topbar (min-width: 600px) {
  .topbar__in { flex-wrap: nowrap; }
  .topbar__search { order: 0; flex: 1 1 12rem; max-width: 16rem; min-width: 10rem; margin-left: auto; padding-bottom: 0; }
  .topbar__menu { margin-left: 0; }
}
@container topbar (min-width: 980px) {
  .topbar__nav { display: flex; }
  .topbar__menu { display: none; }
}

/* ---------- Breadcrumbs: хлебные крошки ---------- */

.crumbs { container: crumbs / inline-size; }
.crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0 var(--space-2); font: 400 14px/21px var(--font-sans); color: var(--muted); }
.crumbs li { display: inline-flex; gap: var(--space-2); }
.crumbs li + li::before { content: "·"; color: var(--muted); }
.crumbs a { color: var(--muted); text-decoration: underline; text-decoration-color: var(--line-strong); }
.crumbs a:hover { color: var(--ink); text-decoration-color: currentColor; }
.crumbs [aria-current="page"] { display: none; color: var(--ink-2); }
@container crumbs (min-width: 720px) { .crumbs [aria-current="page"] { display: inline-flex; } }

/* ---------- PageHeader: шапка страницы ---------- */

.phead { container: phead / inline-size; display: flex; flex-direction: column; gap: var(--space-3); }
.phead__title {
  font: 700 24px/30px var(--font-display); letter-spacing: -0.02em;                  /* t-display-sm */
  text-wrap: balance; hyphens: auto; overflow-wrap: break-word;
}
.phead__legal { font: 400 14px/21px var(--font-sans); color: var(--muted); max-width: var(--measure); }
.phead__sub { font: 400 16px/24px var(--font-sans); color: var(--ink-2); }
.phead__sub b { color: var(--ink); font-weight: 600; font-variant-numeric: tabular-nums; }
@container phead (min-width: 720px) { .phead__title { font-size: 32px; line-height: 38px; } }   /* t-display */

/* ---------- Hero: первый экран главной ---------- */

.hero { container: hero / inline-size; display: flex; flex-direction: column; gap: var(--space-4); }
.hero__title { font: 700 24px/30px var(--font-display); letter-spacing: -0.02em; text-wrap: balance; }
.hero__title em { font-style: normal; color: var(--stamp); font-variant-numeric: tabular-nums; white-space: nowrap; }
@container hero (min-width: 720px) { .hero__title { font-size: 40px; line-height: 44px; letter-spacing: -0.03em; } }  /* t-num-hero */

/* ---------- SearchBox: поиск ---------- */

.search { position: relative; }
.search__form { display: flex; border: 2px solid var(--ink); background: var(--card); }
.search__form:focus-within { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
.search__field {
  flex: 1; min-width: 0; min-height: 48px; padding: 0 var(--space-3);
  border: 0; border-radius: 0; background: transparent;
  font: 400 16px/24px var(--font-sans); -webkit-appearance: none; appearance: none;
}
.search__field::placeholder { color: var(--muted); opacity: 1; }
.search__field:focus-visible { outline: none; }
.search__go {
  border: 0; border-radius: 0; background: var(--ink); color: var(--paper);
  min-height: var(--touch-min); padding: 0 var(--space-5); font: 600 16px/24px var(--font-sans); cursor: pointer;
}
.search__go:hover, .search__go:focus-visible { text-decoration: underline; text-underline-offset: 3px; }
.search__go:focus-visible { outline: none; }        /* кольцо уже на форме: :focus-within */
.search__hint { margin-top: var(--space-2); font: 400 14px/21px var(--font-sans); color: var(--muted); }
.search__list {
  position: absolute; left: 0; right: 0; top: calc(100% + var(--space-1)); z-index: 10;
  background: var(--card); border: 1px solid var(--line-2); box-shadow: var(--shadow-lift);
}
.search__opt {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 0 var(--space-3);
  min-height: var(--touch-min); padding: 10px var(--space-3);
  color: var(--ink); border-bottom: 1px solid var(--line); cursor: pointer;
}
.search__opt:last-child { border-bottom: 0; }
.search__opt:hover, .search__opt[aria-selected="true"] { background: var(--card-2); }
.search__opt[aria-selected="true"] { box-shadow: inset 2px 0 0 var(--ink); }
.search__list b { font-weight: 600; }
.search__list span { font: 400 14px/21px var(--font-sans); color: var(--muted); }

/* ---------- Doors: развилка «после 9 / после 11» ---------- */

.doors { display: grid; gap: var(--space-3); grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); }
.door {
  display: flex; flex-direction: column; gap: var(--space-1); min-height: var(--touch-min);
  padding: var(--space-3) var(--space-4); border: 1px solid var(--line-2); background: var(--card-2);
  color: var(--ink); text-decoration: none;
}
.door__t { font: 600 18px/26px var(--font-sans); }
.door__s { font: 400 14px/21px var(--font-sans); color: var(--muted); }
.door:hover .door__t { text-decoration: underline; text-underline-offset: 4px; }
.door--main { background: var(--stamp-soft); border-color: var(--stamp); }
.door--main .door__t { color: var(--stamp); }
.door--main .door__s { color: var(--ink-2); }        /* muted на stamp-soft — 4,4:1, мало */

/* ---------- Tiles: плитки ---------- */

.tiles {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 9.5rem), 1fr));
  border-top: 1px solid var(--line); border-left: 1px solid var(--line);
}
.tiles > li { display: flex; }
.tile {
  flex: 1; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline;
  gap: 2px var(--space-2); min-height: var(--touch-min); padding: 10px var(--space-3);
  background: var(--card); border-right: 1px solid var(--line); border-bottom: 1px solid var(--line);
  color: var(--ink); text-decoration: none;
}
.tile__t { font: 600 16px/24px var(--font-sans); overflow-wrap: anywhere; hyphens: auto; }
.tile__n { font: 500 14px/20px var(--font-mono); color: var(--muted); font-variant-numeric: tabular-nums; }
a.tile:hover .tile__t { text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }

/* ---------- FactPlate: плашка фактов ---------- */

.facts {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 9.5rem), 1fr));
  border-top: 1px solid var(--line); border-left: 1px solid var(--line);
}
.fact {
  display: flex; flex-direction: column; gap: var(--space-1); padding: var(--space-3);
  background: var(--card); border-right: 1px solid var(--line); border-bottom: 1px solid var(--line);
}
.fact__v {
  order: -1; font: 700 24px/26px var(--font-display); letter-spacing: -0.01em;          /* t-num-fact */
  font-variant-numeric: tabular-nums; color: var(--ink); overflow-wrap: break-word;
}
.fact__k { font: 400 14px/21px var(--font-sans); color: var(--muted); }
.fact__src { margin-top: auto; padding-top: var(--space-1); font: 400 12px/16px var(--font-mono); letter-spacing: 0.02em; color: var(--muted); }
.fact__src a { color: inherit; text-decoration: underline; text-decoration-color: var(--line-strong); }
.fact--empty .fact__v { font: 600 16px/26px var(--font-sans); letter-spacing: 0; color: var(--nodata); }

/* ---------- SourceNote: источник и дата ---------- */

.src { font: 400 12px/16px var(--font-mono); letter-spacing: 0.02em; color: var(--muted); }    /* t-source */
.src a { color: inherit; text-decoration: underline; text-decoration-color: var(--line-strong); }
.src a:hover { color: var(--ink); }

/* ---------- Badge: бейдж состояния ---------- */

.badges { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); }
.badge {
  display: inline-flex; align-items: center; padding: 3px var(--space-2);
  border: 1px solid currentColor; font: 600 13px/18px var(--font-sans);                 /* t-label */
}
.badge--budget { color: var(--budget); background: var(--budget-soft); }
.badge--info   { color: var(--ink-2);  background: var(--card-2); border-color: var(--line-strong); }
.badge--nodata { color: var(--nodata); background: var(--nodata-soft); }
.badge--stop   { color: var(--stop);   background: var(--stop-soft); }

/* ---------- FilterChips: срезы ---------- */

.chips { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.chip {
  display: inline-flex; align-items: center; gap: var(--space-2); min-height: var(--chip-min);
  padding: 0 var(--space-3); border: 1px solid var(--line-strong); background: var(--card);
  color: var(--ink); font: 600 14px/20px var(--font-sans); text-decoration: none;
}
.chip__n { font: 500 13px/18px var(--font-mono); color: var(--muted); font-variant-numeric: tabular-nums; }
.chip:hover { border-color: var(--ink); }
.chip[aria-current="page"] { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.chip[aria-current="page"] .chip__n { color: var(--paper); }

/* ---------- CollegeList: список колледжей ---------- */

.clist { display: flex; flex-direction: column; gap: 1px; background: var(--line); border: 1px solid var(--line); }
.citem { position: relative; display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-3) var(--space-4); background: var(--card); }
.citem__name {
  font: 600 18px/26px var(--font-sans); color: var(--ink); text-decoration: none;       /* t-h3 */
  hyphens: auto; overflow-wrap: break-word;
}
.citem__name::after { content: ""; position: absolute; inset: 0; }
.citem:hover .citem__name { text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 4px; }
.citem__meta { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-4); font: 400 14px/21px var(--font-sans); color: var(--muted); }
.citem__rate { font-family: var(--font-mono); font-weight: 500; color: var(--ink-2); font-variant-numeric: tabular-nums; }

/* ---------- PromoListing: премиальное размещение в выдаче ---------- */

/* реклама над обычным списком: пометка первой строкой, фон card-2 и рамка line-2, как у PartnerBlock — отделена от данных,
   но не кричит; порядок обычного списка не меняется. Кнопка — над растянутой ссылкой названия (z-index) */
/* Реклама выделена цветом штемпеля, а не спрятана в серое (решение Александра 07.10: креативы должны выделяться
   из выдачи): пометка — оттиск штемпеля, пункт — на stamp-soft в рамке stamp. Подписи — ink-2: muted на stamp-soft
   даёт 4,4:1. Тени нет: блоки данных отделяются рамкой. */
.promo { display: flex; flex-direction: column; gap: var(--space-2); }
.promo__tag {
  align-self: flex-start; padding: 2px var(--space-2);
  font: 500 12px/16px var(--font-mono); letter-spacing: 0.12em; text-transform: uppercase;    /* t-eyebrow */
  color: var(--on-stamp); background: var(--stamp);
}
.clist--promo { gap: 2px; background: var(--stamp); border: 2px solid var(--stamp); }
.citem--promo { background: var(--stamp-soft); padding: var(--space-4); }
.citem--promo .citem__meta { color: var(--ink-2); }
.citem__pitch { font: 500 16px/24px var(--font-sans); color: var(--ink); max-width: 54ch; }
.citem__cta { position: relative; z-index: 1; align-self: flex-start; }
.citem__legal { font: 400 12px/16px var(--font-mono); letter-spacing: 0.02em; color: var(--ink-2); }   /* t-source */
.citem--preview .citem__legal { color: var(--stop); }   /* превью без маркировки видно сразу: на сайт так не выходит */

/* ---------- SideList: боковая колонка ---------- */

.side { display: flex; flex-direction: column; gap: var(--space-5); }
.side__h {
  margin-bottom: var(--space-1); font: 500 12px/16px var(--font-mono);                   /* t-eyebrow */
  letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted);
}
.side__l li { display: flex; justify-content: space-between; align-items: center; gap: var(--space-3); border-bottom: 1px solid var(--line); }
.side__l a {
  flex: 1; display: flex; align-items: center; min-height: var(--touch-min);
  font: 400 14px/21px var(--font-sans); color: var(--ink); text-decoration: none;
}
.side__l a:hover { text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }
.side__n { font: 500 13px/18px var(--font-mono); color: var(--muted); font-variant-numeric: tabular-nums; }

/* ---------- ProgramTable: таблица программ ---------- */

.ptable { container: ptable / inline-size; }
.ptable__t { display: block; width: 100%; border-collapse: collapse; background: var(--card); border: 1px solid var(--line); }
.ptable__t caption { display: block; text-align: left; padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--line); background: var(--card-2); font: 400 14px/21px var(--font-sans); color: var(--ink-2); }
.ptable__t thead {
  display: block; position: absolute; width: 1px; height: 1px; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;
}
.ptable__t tbody { display: block; }
.ptable__t tr {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-2) var(--space-3);
  padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--line);
}
.ptable__t tbody tr:last-child { border-bottom: 0; }
.ptable__t td, .ptable__t th { display: block; padding: 0; text-align: left; font: 400 16px/24px var(--font-sans); }
.ptable__t td[data-label]::before {
  content: attr(data-label); display: block; font: 500 12px/16px var(--font-mono);
  letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted);
}
.ptable__code, .ptable__name, .ptable__wide { grid-column: 1 / -1; }
.ptable__t .ptable__code { font: 500 14px/20px var(--font-mono); white-space: nowrap; }   /* t-code */
.ptable__code a, .ptable__code span { color: var(--stamp); }
.ptable__t .ptable__name { font-weight: 500; hyphens: auto; overflow-wrap: break-word; }
.ptable__meta { display: block; font: 400 14px/21px var(--font-sans); color: var(--muted); }
.ptable__t .nd { font: 400 14px/21px var(--font-sans); color: var(--nodata); }
.ptable__t td.nd::before { color: var(--muted); }
.ptable__t tr:has(+ .ptable__sub) { border-bottom: 0; padding-bottom: 0; }
.ptable__more { font: 400 14px/21px var(--font-sans); color: var(--ink-2); max-width: var(--measure); }
/* специальности из реестра без данных о приёме: раскрывающийся список под таблицей, как вопрос в Faq;
   внутри — фраза, откуда они и что делать, и строки SpecialtyRow с названиями */
.ptable__extra { border-bottom: 1px solid var(--line); }
.ptable__extra[open] { border-bottom: 0; }
.ptable__extra > summary {
  list-style: none; display: flex; justify-content: space-between; align-items: center; gap: var(--space-4);
  min-height: var(--touch-min); padding: 10px 0; font: 500 16px/24px var(--font-sans); color: var(--ink); cursor: pointer;
}
.ptable__extra > summary::-webkit-details-marker { display: none; }
.ptable__extra > summary::after { content: "+"; flex: none; font: 500 18px/24px var(--font-mono); color: var(--stamp); }
.ptable__extra[open] > summary::after { content: "−"; }
.ptable__extra > summary:hover { text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }
.ptable__extra > .ptable__more { margin-bottom: var(--space-3); }
.ptable__sub td { grid-column: 1 / -1; }
@container ptable (min-width: 640px) {
  .ptable__t { display: table; }
  .ptable__t caption { display: table-caption; }
  .ptable__t thead { display: table-header-group; position: static; width: auto; height: auto; margin: 0; overflow: visible; clip: auto; white-space: normal; }
  .ptable__t tbody { display: table-row-group; }
  .ptable__t tr { display: table-row; padding: 0; }
  .ptable__t td, .ptable__t th { display: table-cell; padding: 10px var(--space-3); border-bottom: 1px solid var(--line); vertical-align: top; }
  .ptable__t tbody tr:last-child > * { border-bottom: 0; }
  .ptable__t td[data-label]::before { content: none; }
  .ptable__t thead th {
    background: var(--card-2); font: 500 12px/16px var(--font-mono); letter-spacing: 0.12em;  /* t-eyebrow */
    text-transform: uppercase; color: var(--muted); white-space: nowrap;
  }
  .ptable__t .ptable__n { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
  .ptable__t tr:has(+ .ptable__sub) > * { border-bottom: 0; }
  .ptable__sub td { padding-top: 0; }
}

/* ---------- Pagination: страницы списка ---------- */

.pager { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.pager a {
  display: inline-flex; align-items: center; justify-content: center; min-width: var(--touch-min); min-height: var(--touch-min);
  padding: 0 var(--space-3); border: 1px solid var(--line-strong); background: var(--card); color: var(--ink);
  font: 500 16px/24px var(--font-sans); font-variant-numeric: tabular-nums; text-decoration: none;
}
.pager a:hover { border-color: var(--ink); }
.pager a[aria-current="page"] { background: var(--ink); border-color: var(--ink); color: var(--paper); }

/* ---------- SpecialtyRow: строка специальности ---------- */

.srows { border-top: 1px solid var(--line); }
.srow {
  display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: var(--space-1) var(--space-3);
  align-items: baseline; padding: 10px 0; border-bottom: 1px solid var(--line);
}
.srow__code { font: 500 14px/20px var(--font-mono); color: var(--stamp); white-space: nowrap; }
.srow__name { font: 400 16px/24px var(--font-sans); color: var(--ink); hyphens: auto; overflow-wrap: break-word; }
a.srow__name { text-decoration: none; }
a.srow__name:hover { text-decoration: underline; text-decoration-color: var(--line-strong); }
.srow__meta { display: block; font: 400 14px/21px var(--font-sans); color: var(--muted); }
.srow__val { font: 500 14px/20px var(--font-mono); color: var(--ink-2); white-space: nowrap; font-variant-numeric: tabular-nums; }
.srow__val.nd { font-family: var(--font-sans); font-weight: 400; color: var(--nodata); }

/* ---------- BudgetSplit: разбивка бюджетных мест ---------- */

.bsplit { display: flex; flex-direction: column; gap: var(--space-2); }
.bsplit__total { font: 400 14px/21px var(--font-sans); color: var(--ink-2); }
.bsplit__total b { font: 700 16px/24px var(--font-sans); color: var(--ink); font-variant-numeric: tabular-nums; }
.bsplit__bar { display: flex; gap: 2px; height: 10px; padding: 1px; border: 1px solid var(--budget); background: var(--card); }
.bsplit__bar > span { flex: var(--n, 1) 1 0; min-width: 2px; background: var(--budget); }
.bsplit__bar > span + span { background: var(--budget-soft); }
.bsplit__l { display: flex; flex-direction: column; gap: var(--space-1); }
.bsplit__l > div { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-3); font: 400 14px/21px var(--font-sans); }
.bsplit__l dt { display: inline-flex; align-items: baseline; gap: var(--space-2); color: var(--ink-2); }
.bsplit__l dt::before { content: ""; flex: none; width: 10px; height: 10px; border: 1px solid var(--budget); background: var(--budget); }
.bsplit__l > div + div dt::before { background: var(--budget-soft); }
.bsplit__l dd { font: 500 14px/20px var(--font-mono); color: var(--ink); font-variant-numeric: tabular-nums; }

/* ---------- OfficialDocs: официальные документы ---------- */

.docs {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
  border-top: 1px solid var(--line); border-left: 1px solid var(--line);
}
.doc { display: flex; flex-direction: column; gap: 2px; padding: var(--space-3); background: var(--card); border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.doc dt { font: 400 14px/21px var(--font-sans); color: var(--muted); }
.doc dd { font: 500 14px/20px var(--font-mono); color: var(--ink); overflow-wrap: anywhere; }
.doc .badge { align-self: flex-start; margin-top: var(--space-1); }
/* кампус по данным колледжа: чьё свидетельство показано ниже */
.docs__note { font: 400 14px/21px var(--font-sans); color: var(--ink-2); max-width: var(--measure); margin-bottom: var(--space-3); }

/* ---------- StudyFacts: поступление и учёба ---------- */

.study {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr));
  border-top: 1px solid var(--line); border-left: 1px solid var(--line);
}
.study__i { display: flex; flex-direction: column; gap: var(--space-1); padding: var(--space-3); background: var(--card); border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.study__i dt { font: 400 14px/21px var(--font-sans); color: var(--muted); }
.study__v { font: 600 16px/24px var(--font-sans); color: var(--ink); }
.study__x { font: 400 14px/21px var(--font-sans); color: var(--ink-2); }
.study__more { font: 400 14px/21px var(--font-sans); }
.study__i .src { margin-top: auto; padding-top: var(--space-1); }

/* ---------- LookFor: «На что смотреть» ---------- */

.look { max-width: var(--measure); border-top: 1px solid var(--line); }
.look__i { padding: var(--space-3) 0; border-bottom: 1px solid var(--line); font: 400 16px/24px var(--font-sans); color: var(--ink-2); }

/* ---------- AdmissionContacts: контакты приёмной ---------- */

.contacts { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-3); padding: var(--space-4); border: 1px solid var(--line-2); background: var(--card); }
.contacts__h { font: 600 18px/26px var(--font-sans); }                                    /* t-h3 */
.contacts__phone { font: 600 18px/26px var(--font-sans); font-variant-numeric: tabular-nums; white-space: nowrap; }
.contacts__l { align-self: stretch; display: grid; gap: var(--space-3) var(--space-5); grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); }
.contacts__l dt { font: 400 14px/21px var(--font-sans); color: var(--muted); }
.contacts__l dd { font: 400 16px/24px var(--font-sans); color: var(--ink); overflow-wrap: anywhere; }
.contacts__note { font: 400 14px/21px var(--font-sans); color: var(--ink-2); max-width: var(--measure); }

/* ---------- Dormitory: общежитие ---------- */

.dorm { display: flex; flex-direction: column; gap: var(--space-3); }
.dorm__h { font: 600 18px/26px var(--font-sans); }
.dorm__state { font: 400 16px/24px var(--font-sans); color: var(--ink-2); max-width: var(--measure); }
.dorm__state b { color: var(--ink); font-weight: 600; }
.dorm__state--nodata b { color: var(--nodata); }
.dorm__q { padding: var(--space-3) var(--space-4); border: 1px solid var(--line); background: var(--card); display: flex; flex-direction: column; gap: var(--space-2); }
.dorm__q blockquote { margin: 0; font: 400 16px/24px var(--font-sans); color: var(--ink-2); max-width: var(--measure); }

/* ---------- EmptyState: честная пустота ---------- */

.empty { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-2); padding: var(--space-4); border: 1px solid var(--nodata); background: var(--nodata-soft); }
.empty__t { font: 600 16px/24px var(--font-sans); color: var(--nodata); }
.empty__x { font: 400 16px/24px var(--font-sans); color: var(--ink-2); max-width: var(--measure); }

/* ---------- Prose: текст от редакции ---------- */

.prose { display: flex; flex-direction: column; gap: var(--space-3); max-width: var(--measure); }
.prose p { font: 400 16px/24px var(--font-sans); color: var(--ink-2); }

/* Статья журнала: те же абзацы плюс короткий ответ, подзаголовки, списки и источники */
.prose--article { gap: var(--space-4); }
.prose--article .sec__h { margin-top: var(--space-4); }
.prose .prose__lead { font: 400 20px/30px var(--font-sans); color: var(--ink); }          /* t-lead; весомее .prose p */
/* цитата из первоисточника: линия слева, подпись — откуда */
.prose blockquote { margin: 0; padding: var(--space-1) 0 var(--space-1) var(--space-4); border-left: 2px solid var(--line-strong); display: flex; flex-direction: column; gap: var(--space-2); }
.prose blockquote p { font: 400 18px/28px var(--font-sans); color: var(--ink); }
.prose blockquote .prose__cite { font: 400 13px/20px var(--font-mono); color: var(--muted); }
/* пример из жизни: подложка и тёмная линия слева, подпись — как шапка таблицы. Не штемпель: им помечена реклама.
   Подпись «Пример» рисует ::before — в тексте её нет, в доступном имени — aria-label */
.prose .example { margin: 0; padding: var(--space-3) var(--space-4); background: var(--card-2); border-left: 3px solid var(--ink-2); display: flex; flex-direction: column; gap: var(--space-2); }
.prose .example::before { content: "Пример"; font: 500 12px/18px var(--font-mono); letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.prose .example p { color: var(--ink); }
/* таблица-шпаргалка: шапка как подписи справочника, строки между линиями, своя прокрутка на узком экране */
.prose__table { overflow-x: auto; border-top: 1px solid var(--line-strong); }
.prose__table table { width: 100%; border-collapse: collapse; font: 400 15px/22px var(--font-sans); color: var(--ink-2); }
.prose__table th { text-align: left; padding: var(--space-2) var(--space-3) var(--space-2) 0; border-bottom: 1px solid var(--line); font: 500 12px/18px var(--font-mono); letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.prose__table td { padding: var(--space-2) var(--space-3) var(--space-2) 0; border-bottom: 1px solid var(--line); vertical-align: top; }
.prose__table td:first-child { color: var(--ink); font-weight: 500; }
.prose strong { font-weight: 600; color: var(--ink); }
.prose ul, .prose ol { display: flex; flex-direction: column; gap: var(--space-2); margin: 0; padding-left: 1.25em; font: 400 16px/24px var(--font-sans); color: var(--ink-2); }
.prose li::marker { color: var(--muted); }
.prose__sources { display: flex; flex-direction: column; gap: var(--space-3); margin-top: var(--space-4); padding-top: var(--space-4); border-top: 1px solid var(--line); }
.prose__sources .sec__h { margin-top: 0; }
.prose__sources ul { font: 400 14px/21px var(--font-sans); }

/* ---------- Figure: картинка статьи журнала ---------- */

/* иллюстрация — лист в клетку на бумаге страницы: рамка line, углы прямые; подпись — как сноска справочника */
.figure { margin: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.figure picture { display: block; border: 1px solid var(--line); background: var(--card); }
.figure img { display: block; width: 100%; height: auto; }
.figure__cap { font: 400 14px/21px var(--font-sans); color: var(--muted); max-width: var(--measure); }   /* t-small */
.prose--article .figure { margin: var(--space-2) 0; }
.prose--article .figure--cover { margin: 0 0 var(--space-2); }

/* ---------- JournalList: указатель журнала ---------- */

.jlist { container: jlist / inline-size; list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.jlist__i { position: relative; display: grid; grid-template-columns: minmax(0, 1fr); align-content: start; gap: var(--space-1); padding: var(--space-4) 0; border-bottom: 1px solid var(--line); }
.jlist__t { font: 600 18px/26px var(--font-sans); color: var(--ink); text-decoration: none; text-wrap: balance; }   /* t-h3 */
.jlist__t:hover { text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 4px; }
.jlist__t::after { content: ""; position: absolute; inset: 0; }   /* ссылка на весь пункт: по миниатюре тоже переходят */
.jlist__x { font: 400 16px/24px var(--font-sans); color: var(--ink-2); max-width: var(--measure); }
.jlist__m { font: 400 13px/20px var(--font-mono); color: var(--muted); }
/* миниатюра — обложка статьи 2:1: на узком экране над заголовком во всю ширину, на широком — справа 15rem */
.jlist__img { order: -1; display: block; margin-bottom: var(--space-2); border: 1px solid var(--line); background: var(--card); }
.jlist__img img { display: block; width: 100%; height: auto; }
@container jlist (min-width: 560px) {
  .jlist__i--img { grid-template-columns: minmax(0, 1fr) 15rem; grid-template-rows: auto auto 1fr; column-gap: var(--space-5); }
  .jlist__i--img > :not(.jlist__img) { grid-column: 1; }
  .jlist__img { order: 0; grid-column: 2; grid-row: 1 / span 3; margin: 0; }
}

/* ---------- Faq: вопросы и ответы ---------- */

.faq { border-top: 1px solid var(--line); }
.faq__i { border-bottom: 1px solid var(--line); }
.faq__i > summary {
  list-style: none; display: flex; justify-content: space-between; align-items: center; gap: var(--space-4);
  min-height: var(--touch-min); padding: 10px 0; font: 600 16px/24px var(--font-sans); cursor: pointer;
}
.faq__i > summary::-webkit-details-marker { display: none; }
.faq__i > summary::after { content: "+"; flex: none; font: 500 18px/24px var(--font-mono); color: var(--stamp); }
.faq__i[open] > summary::after { content: "−"; }
.faq__i > summary:hover { text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }
.faq__a { padding: 0 0 var(--space-4); font: 400 16px/24px var(--font-sans); color: var(--ink-2); max-width: var(--measure); }

/* ---------- PartnerBlock: реклама партнёра ---------- */

.partner { display: flex; flex-direction: column; align-items: flex-start; gap: var(--space-2); padding: var(--space-4); border: 2px solid var(--stamp); background: var(--stamp-soft); }
.partner__tag {   /* t-eyebrow оттиском штемпеля, как у PromoListing */
  padding: 2px var(--space-2); font: 500 12px/16px var(--font-mono); letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--on-stamp); background: var(--stamp);
}
.partner__title { font: 600 18px/26px var(--font-sans); color: var(--ink); }
.partner__text { font: 400 16px/24px var(--font-sans); color: var(--ink-2); max-width: 54ch; }
.partner__legal { margin-top: var(--space-1); font: 400 12px/16px var(--font-mono); letter-spacing: 0.02em; color: var(--ink-2); }
.partner .btn { margin-top: var(--space-1); }
.partner--preview .partner__legal { color: var(--stop); }   /* превью без erid — только в сборке SITE_PROMO_PREVIEW=1 */

/* ---------- Button: кнопки ---------- */

.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  min-height: var(--touch-min); padding: 10px var(--space-4); border: 1px solid transparent; border-radius: 0;
  font: 600 16px/22px var(--font-sans); text-align: center; text-decoration: none; cursor: pointer;
}
.btn:hover { text-decoration: underline; text-underline-offset: 3px; }
.btn:active { transform: translateY(1px); }
.btn--primary { background: var(--stamp); border-color: var(--stamp); color: var(--on-stamp); }
.btn--ink { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.btn--line { background: var(--card); border-color: var(--line-strong); color: var(--ink); }
.btn--line:hover { border-color: var(--ink); }
.btn--block { display: flex; width: 100%; }

/* ---------- Footer: подвал ---------- */

.foot { background: var(--card-2); border-top: 1px solid var(--line); }
.foot__in { max-width: var(--page-max); margin: 0 auto; padding: var(--space-4) var(--space-4) var(--space-5); display: flex; flex-direction: column; gap: var(--space-2); }
.foot__nav { display: flex; flex-wrap: wrap; gap: 0 var(--space-5); }
.foot__nav a { display: inline-flex; align-items: center; min-height: var(--touch-min); font: 400 14px/21px var(--font-sans); color: var(--ink-2); }
.foot__nav a:hover { color: var(--ink); }

/* ---------- CookieNote: уведомление о cookie ---------- */

.cookie { position: fixed; left: 0; right: 0; bottom: 0; z-index: 50; background: var(--card); border-top: 1px solid var(--line-strong); }
.cookie[hidden] { display: none; }
.cookie__in { max-width: var(--page-max); margin: 0 auto; padding: var(--space-3) var(--space-4); display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3) var(--space-5); }
.cookie__t { flex: 1 1 280px; margin: 0; font: 400 14px/21px var(--font-sans); color: var(--ink-2); }
.cookie .btn { flex: 0 0 auto; min-width: 8rem; }
@media (max-width: 479px) { .cookie .btn { width: 100%; } }


/* Сайт поверх дизайн-системы: то, что есть на страницах, но не в компонентах.
   Цвета, отступы и шрифты — только токены. */

/* Переход к содержанию: первый элемент для клавиатуры и экранного диктора */
.skip {
  position: absolute; left: var(--space-2); top: -100px; z-index: 20;
  padding: var(--space-2) var(--space-3); background: var(--ink); color: var(--paper);
  font: 600 16px/24px var(--font-sans);
}
.skip:focus { top: var(--space-2); }

/* Указатели /goroda/ и /specialnosti/: разделы в две колонки на широком экране */
.index-grid {
  display: grid; gap: var(--space-7) var(--space-10); align-items: start;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 30rem), 1fr));
}
.sec__h a { color: inherit; text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 4px; }
.sec__h a:hover { text-decoration-color: currentColor; }
.badges:empty { display: none; }
.prose h2 { margin-top: var(--space-3); }

/* «Ещё N колледжей»: остаток списка в разметке страницы, раскрывается без скриптов */
.more > summary {
  list-style: none; display: inline-flex; align-items: center; min-height: var(--touch-min);
  padding: 10px var(--space-4); border: 1px solid var(--line-strong); background: var(--card);
  font: 600 16px/22px var(--font-sans); cursor: pointer;
}
.more > summary::-webkit-details-marker { display: none; }
.more > summary:hover { border-color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
.more[open] > summary { display: none; }
.more > :not(summary) + * { margin-top: var(--space-3); }

/* Направление в указателе специальностей: на телефоне свёрнуто, раскрыты первые */
.dir > summary { list-style: none; cursor: pointer; }
.dir > summary::-webkit-details-marker { display: none; }
.dir > summary .sec__h::after { content: " +"; font: 500 18px/24px var(--font-mono); color: var(--stamp); }
.dir[open] > summary .sec__h::after { content: " −"; }
.dir > summary + * { margin-top: var(--space-3); }

/* Площадки колледжа в карточке: адреса строками между линиями */
.sites { border-top: 1px solid var(--line); }
.sites li { display: flex; flex-direction: column; gap: 2px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.sites__name { font: 600 16px/24px var(--font-sans); color: var(--ink); }
.sites__addr { font: 400 14px/21px var(--font-sans); color: var(--muted); }

/* Результаты поиска: состояние до запуска скрипта и пустой ответ */
.found { display: flex; flex-direction: column; gap: var(--space-3); }
.found__state { font: 400 16px/24px var(--font-sans); color: var(--ink-2); }

/* Пропуск в длинной пагинации: «1 … 4 5 6 … 12» */
.pager__gap { display: inline-flex; align-items: center; justify-content: center; min-width: var(--touch-min); min-height: var(--touch-min); color: var(--muted); }
