/* Veritop — эталонные стили компонентов. Только переменные из tokens.css; типографика — классы t-*. */
body { margin: 0; font-family: var(--font-sans); background: var(--bg); color: var(--ink); }
a { color: var(--link); text-decoration: none; }
a:hover { color: var(--gold-hover); text-decoration: underline; }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
:root { scrollbar-color: var(--line-strong) transparent; } /* тёмные полосы прокрутки; тёмные системные части полей — color-scheme у самих полей ниже */
.vt-visually-hidden { position: absolute; width: 1px; height: 1px; padding: 0; border: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; } /* скрыт визуально, читается скринридером; 1px — приём, а не размер дизайна */

.vt-demo { display: flex; flex-wrap: wrap; gap: var(--space-4); align-items: flex-start; padding: var(--space-4); }
.vt-demo--col { flex-direction: column; align-items: stretch; }
.vt-demo--mobile { width: 390px; box-sizing: border-box; } /* только для превью: ширина телефона */
/* только для превью: в коде пары X / X-compact подменяет сборка CSS уже bp-compact, а vt-wide-only / vt-compact-only тоже генерирует она */
.vt-demo--mobile { --control-h: var(--control-h-compact); --header-h: var(--header-h-compact); --grid-pitch: var(--grid-pitch-compact); --admin-gutter: var(--admin-gutter-compact); --page-gutter: var(--page-gutter-compact); --check-col-w: var(--check-col-w-compact); --form-col-w: var(--form-col-w-compact); --touch-min: var(--touch-min-compact); --subsection-title-basis: var(--subsection-title-basis-compact); --aside-w: var(--aside-w-compact); --promo-card-w: var(--promo-card-w-compact); --plaque-w: var(--plaque-w-compact); --server-body-min-w: var(--server-body-min-w-compact); }
.vt-demo--wide { width: 1280px; box-sizing: border-box; } /* только для превью: ширина ноутбука */
.vt-demo--mobile .vt-wide-only, .vt-demo--wide .vt-compact-only { display: none; }
.vt-demo-frame { padding: 0; border: 1px solid var(--line); } /* только для превью: рамка экрана страницы */
.vt-demo-label { margin: 0; color: var(--ink-muted); } /* только для превью: подпись над экраном */
.vt-demo-frame .vt-site, .vt-demo-frame .vt-center { min-height: 0; } /* только для превью: экран страницы не растягивается на высоту карточки */

.vt-icon { width: var(--icon-s); height: var(--icon-s); flex-shrink: 0; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.vt-icon--m { width: var(--icon-m); height: var(--icon-m); }

/* Button */
.vt-btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); height: var(--control-h-l); padding: 0 var(--space-5); box-sizing: border-box; border: 1px solid var(--line-strong); border-radius: var(--radius-md); background: transparent; color: var(--ink); font-family: inherit; font-weight: 600; cursor: pointer; text-decoration: none; }
.vt-btn:hover { border-color: var(--ink-muted); color: var(--ink); text-decoration: none; }
.vt-btn--primary { background: var(--gold); border-color: var(--gold); color: var(--on-gold); font-weight: 700; }
.vt-btn--primary:hover { background: var(--gold-hover); border-color: var(--gold-hover); color: var(--on-gold); }
.vt-btn--accent { border-color: var(--gold); color: var(--gold); }
.vt-btn--accent:hover { color: var(--gold-hover); border-color: var(--gold-hover); }
.vt-btn--s { height: var(--control-h); padding: 0 var(--space-4); }
.vt-btn--quiet { border-color: transparent; color: var(--ink-muted); }
.vt-btn--quiet:hover { border-color: transparent; color: var(--ink); }
.vt-linkbtn { display: inline-flex; align-items: center; justify-content: center; min-height: var(--touch-min); min-width: var(--touch-min); padding: 0; background: none; border: 0; color: var(--link); font: inherit; cursor: pointer; }
.vt-linkbtn:hover { color: var(--gold-hover); text-decoration: underline; }
.vt-btn-group { display: inline-flex; flex-direction: column; align-items: center; gap: var(--space-1); }
.vt-btn-hint { color: var(--ink-muted); }

/* Fields */
.vt-field { display: flex; flex-direction: column; gap: var(--space-2); color: var(--ink-muted); }
.vt-input, .vt-select { height: var(--control-h); box-sizing: border-box; padding: 0 var(--space-3); background: var(--field); color: var(--ink); border: 1px solid var(--line-strong); border-radius: var(--radius-md); font-family: inherit; }
.vt-textarea { min-height: var(--textarea-min-h); box-sizing: border-box; padding: var(--space-2) var(--space-3); background: var(--field); color: var(--ink); border: 1px solid var(--line-strong); border-radius: var(--radius-md); font-family: inherit; resize: vertical; }
.vt-input[aria-invalid="true"], .vt-select[aria-invalid="true"], .vt-textarea[aria-invalid="true"] { border-color: var(--error); }
.vt-field__label { color: var(--ink-muted); }
.vt-field__req { margin-left: var(--space-half); color: var(--error); }
.vt-field__hint { margin: 0; color: var(--ink-muted); }
.vt-field__error { display: flex; align-items: flex-start; gap: var(--space-1); margin: 0; color: var(--error); }
.vt-field__error .vt-icon { margin-top: var(--space-half); }
.vt-field__url { color: var(--ink-soft); overflow-wrap: anywhere; }
.vt-field__url-slug { color: var(--ink); font-weight: 600; }
.vt-search { display: flex; align-items: center; gap: var(--space-2); height: var(--control-h); box-sizing: border-box; padding: 0 var(--space-4); background: var(--field); border: 1px solid var(--line-strong); border-radius: var(--radius-pill); color: var(--ink-muted); }
.vt-search input { flex-grow: 1; min-width: 0; background: transparent; border: 0; color: var(--ink); font-family: inherit; outline: none; }
.vt-search:focus-within { outline: 2px solid var(--focus); outline-offset: 2px; }
.vt-check { display: flex; align-items: center; gap: var(--space-2); min-height: var(--control-h); color: var(--ink); }
.vt-check input { width: var(--icon-m); height: var(--icon-m); accent-color: var(--gold); }
.vt-input, .vt-select, .vt-textarea, .vt-check input, .vt-affix input { color-scheme: dark; } /* тёмные календарь, выпадающий список и неотмеченный флажок */
.vt-check__meta { color: var(--ink-muted); }
.vt-filterbar { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--space-4); padding: var(--space-4) 0; border-top: 2px solid var(--gold); border-bottom: 1px solid var(--line); }
.vt-filterbar--stacked { flex-direction: column; flex-wrap: nowrap; align-items: stretch; }
.vt-filterbar--stacked .vt-input, .vt-filterbar--stacked .vt-select { width: 100%; }
/* Диапазон «от–до» (Опыт): fieldset + legend, два поля с префиксом «x» */
.vt-range { display: flex; flex-direction: column; gap: var(--space-2); min-width: 0; margin: 0; padding: 0; border: 0; color: var(--ink-muted); }
.vt-range__legend { float: left; width: 100%; margin: 0; padding: 0; color: var(--ink-muted); }
.vt-range__ends { display: flex; align-items: center; gap: var(--space-3); }
.vt-range__end { display: flex; align-items: center; gap: var(--space-2); min-width: 0; }
.vt-affix { display: flex; align-items: center; gap: var(--space-1); width: var(--range-input-w); min-width: 0; height: var(--control-h); box-sizing: border-box; padding: 0 var(--space-3); background: var(--field); border: 1px solid var(--line-strong); border-radius: var(--radius-md); color: var(--ink-muted); }
.vt-affix input { flex-grow: 1; width: 100%; min-width: 0; padding: 0; background: transparent; border: 0; color: var(--ink); font: inherit; outline: none; }
.vt-affix:focus-within { outline: 2px solid var(--focus); outline-offset: 2px; }
.vt-affix:has([aria-invalid="true"]) { border-color: var(--error); }
.vt-filterbar--stacked .vt-range__end { flex: 1 1 0; }
.vt-filterbar--stacked .vt-affix { flex-grow: 1; width: auto; }
.vt-filterbar__error { flex-basis: 100%; order: 1; } /* ошибка поля строки фильтров: шире bp-compact — под всей строкой, выравнивание полей не ломается */
.vt-filterbar--stacked .vt-filterbar__error { order: 0; flex-basis: auto; } /* в панели на телефоне — сразу под своим полем */

/* Filter toggle — кнопка «Фильтры · N» и панель фильтров в компактной раскладке */
.vt-filter-toggle[aria-expanded="true"] { background: var(--tag-bg); }
.vt-filter-toggle__count { font-weight: 700; }
.vt-filter-panel { display: flex; flex-direction: column; gap: var(--space-4); padding: var(--space-4); background: var(--surface); border-radius: var(--radius-lg); }
.vt-filter-panel[hidden] { display: none; }
.vt-filter-panel__title { margin: 0; }
.vt-filter-panel__actions { display: flex; gap: var(--space-2); }
.vt-filter-panel__actions .vt-btn { flex-grow: 1; }

/* Tag, promo */
.vt-tag { display: inline-flex; align-items: center; padding: var(--space-half) var(--space-2); background: var(--tag-bg); color: var(--tag-ink); border-radius: var(--radius-sm); }
.vt-tags { display: flex; flex-wrap: wrap; gap: var(--space-1); }
.vt-promo { display: inline-flex; align-items: center; padding: var(--space-half) var(--space-2); background: var(--promo); color: var(--on-promo); border-radius: var(--radius-sm); text-transform: uppercase; }

/* Rate plaque */
.vt-rate { display: flex; flex-direction: column; align-items: center; gap: var(--space-half); width: var(--plaque-w); box-sizing: border-box; padding: var(--space-2) var(--space-1); background: var(--bg); border: 1px solid var(--line); border-radius: var(--radius-md); text-align: center; }
.vt-rate__value { color: var(--gold); }
.vt-rate__meta { color: var(--ink-muted); }
.vt-rate--hero { width: auto; padding: var(--space-3) var(--space-4); }
.vt-rate--compact { width: auto; padding: var(--space-1) var(--space-3); }
.vt-rate-text { color: var(--gold); font-weight: 700; } /* рейт внутри строки текста: «Nordheim MU x100» */
.vt-rate--no-data .vt-rate__value { color: var(--ink-muted); } /* главного рейта нет: вместо числа текст «рейт не указан» (t-caption) */

/* Server card */
/* Одна разметка на любой ширине: плашка · содержимое · значение справа; уже bp-compact плашка уже, значение переносится под содержимое */
.vt-server { display: flex; flex-wrap: wrap; align-items: flex-start; gap: var(--space-3) var(--space-5); padding: var(--space-3) var(--space-4); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.vt-server > .vt-rate { flex: 0 0 var(--plaque-w); width: auto; }
.vt-server > .vt-metric, .vt-server > .vt-trust { margin-left: auto; }
.vt-server--promoted { background: var(--surface-raised); border-color: var(--promo); }
.vt-server__body { display: flex; flex-direction: column; gap: var(--space-2); flex: 1 1 var(--server-body-min-w); min-width: 0; }
.vt-server__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-2); }
.vt-server__title { margin: 0; }
.vt-server__title a { color: var(--ink); }
.vt-server__facts { margin: 0; color: var(--ink-soft); }

/* Signals */
.vt-flag { display: flex; align-items: flex-start; gap: var(--space-2); margin: 0; color: var(--flag); }
.vt-flag .vt-icon { margin-top: var(--space-half); }
.vt-conflict { display: inline-flex; align-items: center; gap: var(--space-1); color: var(--conflict); }
.vt-status { display: inline-flex; align-items: center; gap: var(--space-2); padding: var(--space-half) var(--space-3); background: var(--status-open-bg); color: var(--status-open-ink); border: 1px solid transparent; border-radius: var(--radius-pill); font-weight: 600; }
.vt-status--neutral { background: var(--tag-bg); color: var(--tag-ink); }
.vt-status--outline { background: transparent; border-color: var(--line-strong); color: var(--ink-soft); }
.vt-status--muted { background: transparent; border-color: var(--line); color: var(--ink-muted); font-weight: 500; }
.vt-status__dot { width: var(--space-2); height: var(--space-2); border-radius: var(--radius-pill); background: var(--status-open-dot); }

/* Trust */
.vt-trust { display: flex; flex-direction: column; align-items: flex-end; gap: var(--space-half); text-align: right; }
.vt-trust__label { color: var(--ink-muted); }
.vt-trust__value { color: var(--ink); font-weight: 600; }
.vt-trust--no-data .vt-trust__value { color: var(--ink-muted); font-weight: 400; }
.vt-trust--inline { flex-direction: row; align-items: baseline; gap: var(--space-1); text-align: left; }

/* Uptime */
.vt-uptime { display: grid; grid-template-columns: var(--uptime-label-w) minmax(0, 1fr) auto; gap: var(--space-4); align-items: center; }
.vt-uptime__label { color: var(--ink-soft); }
.vt-uptime__bars { display: flex; gap: var(--space-half); }
.vt-uptime__bar { flex-grow: 1; height: var(--bar-h); border-radius: var(--radius-xs); background: var(--uptime-ok); }
.vt-uptime__bar--fail { background: var(--uptime-fail); }
.vt-uptime__bar--none { box-sizing: border-box; background: transparent; border: 1px solid var(--line-strong); } /* день без замеров: пустой контур — отличается формой, а не только цветом */
.vt-uptime__empty { grid-column: 2 / -1; color: var(--ink-muted); } /* вместо полоски и процента: «порт не указан», «порт не проверен» */
.vt-legend { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-4); color: var(--ink-muted); }
.vt-legend__item { display: flex; align-items: center; gap: var(--space-2); }
.vt-legend__swatch { width: var(--space-3); height: var(--space-3); border-radius: var(--radius-xs); background: var(--uptime-ok); }
.vt-legend__swatch--fail { background: var(--uptime-fail); }
.vt-legend__swatch--none { box-sizing: border-box; background: transparent; border: 1px solid var(--line-strong); }

/* Activity */
.vt-activity { display: flex; align-items: flex-end; gap: var(--space-1); height: var(--chart-h); padding: var(--space-3) var(--space-3) 0; box-sizing: border-box; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.vt-activity__bar { flex-grow: 1; background: var(--gold); border-radius: var(--radius-xs) var(--radius-xs) 0 0; opacity: var(--opacity-past); }
.vt-activity__bar--today { opacity: 1; }

/* Openings */
.vt-opening { display: grid; grid-template-columns: var(--opening-date-w) minmax(0, 1fr); gap: var(--space-3); align-items: baseline; padding-bottom: var(--space-3); border-bottom: 1px solid var(--line); color: var(--ink); }
.vt-opening:hover { color: var(--ink); text-decoration: none; }
.vt-opening__date { color: var(--gold); }
.vt-opening__main { display: flex; flex-direction: column; gap: var(--space-half); }
.vt-opening__meta { color: var(--ink-muted); }

/* Launch history */
.vt-launches { list-style: none; margin: 0; padding: 0; }
.vt-launch { display: grid; grid-template-columns: var(--space-6) var(--launch-title-w) minmax(0, 1fr) auto; gap: var(--space-4); align-items: center; padding: var(--space-3) 0; border-bottom: 1px solid var(--line); }
.vt-launch__dot { width: var(--space-3); height: var(--space-3); border-radius: var(--radius-pill); background: var(--timeline-past); }
.vt-launch__period { color: var(--ink-soft); }
.vt-launch__end { color: var(--ink-muted); }
.vt-launch--current .vt-launch__dot { background: var(--gold); }
.vt-launch--current .vt-launch__end { color: var(--ink); }

/* Key facts */
.vt-facts { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--fact-min-w)), 1fr)); gap: var(--space-3); margin: 0; }
.vt-fact { display: flex; flex-direction: column; gap: var(--space-1); padding: var(--space-3) var(--space-4); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md); }
.vt-fact dt, .vt-fact dd { margin: 0; }
.vt-fact__label { color: var(--ink-muted); }
.vt-fact__period { color: var(--ink-muted); }
.vt-fact--no-data .vt-fact__value { color: var(--ink-muted); }

/* Page hero */
.vt-grid-bg { background-color: var(--bg); background-image: linear-gradient(var(--pattern-line) 1px, transparent 1px), linear-gradient(90deg, var(--pattern-line) 1px, transparent 1px); background-size: var(--grid-pitch) var(--grid-pitch); }
.vt-crumbs { display: flex; flex-wrap: wrap; gap: var(--space-2); color: var(--ink-muted); }
.vt-crumbs a { color: var(--ink-muted); }
.vt-crumbs [aria-current="page"] { color: var(--ink); }
.vt-hero { padding: var(--space-10) 0 var(--space-6); }
.vt-hero__inner { display: flex; flex-direction: column; gap: var(--space-3); }
.vt-hero__title { margin: 0; }
.vt-hero__lede { margin: 0; max-width: var(--lede-max-w); color: var(--ink-soft); text-wrap: pretty; }

/* ===== Админка ===== */

/* Brand */
.vt-brand { display: flex; align-items: baseline; gap: var(--space-2); color: var(--ink); }
.vt-brand:hover { color: var(--ink); text-decoration: none; }
.vt-brand__name { margin: 0; }
.vt-brand__suffix { color: var(--ink-muted); }

/* Admin shell */
.vt-admin { display: flex; min-height: var(--screen-min-h); background: var(--bg); }
.vt-sidebar { display: flex; flex-direction: column; gap: var(--space-6); flex: 0 0 var(--sidebar-w); box-sizing: border-box; padding: var(--space-5) var(--space-3); background: var(--bg-deep); border-right: 1px solid var(--line); }
.vt-sidebar .vt-brand { padding: 0 var(--space-3); }
.vt-sidebar__foot { display: flex; align-items: center; gap: var(--space-2); margin-top: auto; padding: var(--space-3); border-top: 1px solid var(--line); }
.vt-sidebar__who { flex-grow: 1; color: var(--ink-muted); }
.vt-admin__body { display: flex; flex-direction: column; flex-grow: 1; min-width: 0; }
.vt-admin__main { display: flex; flex-direction: column; gap: var(--space-5); min-width: 0; padding: var(--admin-gutter); }
.vt-admin-bar { display: flex; align-items: center; gap: var(--space-2); height: var(--header-h); box-sizing: border-box; padding: 0 var(--admin-gutter); background: var(--bg-deep); border-bottom: 1px solid var(--line); }
.vt-admin-bar .vt-brand { flex-grow: 1; }
.vt-admin-menu { display: flex; flex-direction: column; gap: var(--space-3); padding: var(--space-3) var(--admin-gutter) var(--space-4); background: var(--bg-deep); border-bottom: 1px solid var(--line); }
.vt-admin-menu[hidden] { display: none; }
.vt-nav { display: flex; flex-direction: column; gap: var(--space-1); }
.vt-nav__item { display: flex; align-items: center; gap: var(--space-2); min-height: var(--control-h-l); padding: 0 var(--space-3); border-radius: var(--radius-md); color: var(--ink-soft); }
.vt-nav__item:hover { background: var(--surface); color: var(--ink); text-decoration: none; }
.vt-nav__item[aria-current="page"] { background: var(--surface); color: var(--ink); font-weight: 600; }
.vt-nav__label { flex-grow: 1; }
.vt-nav__count { padding: var(--space-half) var(--space-2); background: var(--tag-bg); color: var(--gold); border-radius: var(--radius-sm); font-weight: 600; }

/* Page head */
.vt-page-head { display: flex; flex-wrap: wrap; align-items: flex-end; gap: var(--space-4); }
.vt-page-head__main { display: flex; flex-direction: column; gap: var(--space-2); flex-grow: 1; min-width: 0; }
.vt-page-head__title { margin: 0; }
.vt-page-head__lede { margin: 0; max-width: var(--lede-max-w); color: var(--ink-soft); }
.vt-page-head__facts { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-2); margin: 0; color: var(--ink-soft); }
.vt-page-head__actions { display: flex; flex-wrap: wrap; gap: var(--space-2); }

/* Data table */
.vt-table-wrap { overflow-x: auto; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.vt-table { width: 100%; border-collapse: collapse; }
.vt-table th { padding: var(--space-3) var(--space-4); background: var(--field); color: var(--ink-muted); font-weight: 500; text-align: left; white-space: nowrap; }
.vt-table td { padding: var(--space-3) var(--space-4); border-top: 1px solid var(--line); color: var(--ink-soft); vertical-align: middle; }
.vt-table__sort { color: inherit; }
.vt-table__sort:hover { color: var(--ink); }
.vt-table th[aria-sort] .vt-table__sort { color: var(--ink); }
.vt-table__actions { text-align: right; white-space: nowrap; }
.vt-table__actions > * + * { margin-left: var(--space-2); }
/* POST-действие строки — <form> с одной кнопкой: в таблице в ряд с соседними, в карточке на телефоне кнопка во всю ширину формы */
.vt-table__actions form { display: inline-flex; vertical-align: middle; }
.vt-rowcard__actions form { display: flex; }
.vt-rowcard__actions form > .vt-btn { flex-grow: 1; }
.vt-cell { display: flex; flex-direction: column; gap: var(--space-half); }
.vt-cell__main { color: var(--ink); font-weight: 600; }
.vt-cell__main a { color: var(--ink); }
.vt-cell__sub { color: var(--ink-muted); }
.vt-rowcards { display: flex; flex-direction: column; gap: var(--space-3); margin: 0; padding: 0; list-style: none; }
.vt-rowcard { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-4); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.vt-rowcard__title { margin: 0; font-weight: 600; }
.vt-rowcard__title a { color: var(--ink); }
.vt-rowcard__meta { color: var(--ink-muted); }
.vt-rowcard__facts { display: grid; grid-template-columns: auto minmax(0, 1fr); column-gap: var(--space-3); row-gap: var(--space-1); margin: 0; }
.vt-rowcard__facts dt { color: var(--ink-muted); }
.vt-rowcard__facts dd { margin: 0; color: var(--ink-soft); }
.vt-rowcard__actions { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.vt-rowcard__actions > * { flex-grow: 1; }

/* Notice */
.vt-notice { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-2) var(--space-2) var(--space-2) var(--space-4); background: var(--surface); border: 1px solid var(--line-strong); border-radius: var(--radius-lg); color: var(--ink); }
.vt-notice__icon { color: var(--gold); }
.vt-notice__text { display: flex; flex-direction: column; gap: var(--space-half); flex-grow: 1; min-width: 0; }
.vt-notice__title { margin: 0; }
.vt-notice__body { margin: 0; color: var(--ink-soft); }
.vt-notice--error { background: var(--error-bg); border-color: var(--error-bg); }
.vt-notice--error .vt-notice__icon, .vt-notice--error .vt-notice__title { color: var(--error); }
.vt-notice--error .vt-notice__title { font-weight: 600; }
.vt-notice[hidden] { display: none; }

/* Empty state */
.vt-empty { display: flex; flex-direction: column; align-items: center; gap: var(--space-3); padding: var(--space-8); background: var(--surface); border: 1px dashed var(--line-strong); border-radius: var(--radius-lg); text-align: center; }
.vt-empty--filtered { padding: var(--space-6); border-style: solid; border-color: var(--line); }
.vt-empty__title { margin: 0; }
.vt-empty__text { margin: 0; max-width: var(--lede-max-w); color: var(--ink-soft); }

/* Auth */
.vt-auth, .vt-center { display: flex; align-items: center; justify-content: center; min-height: var(--screen-min-h); box-sizing: border-box; padding: var(--admin-gutter); }
.vt-auth__card, .vt-center__card { display: flex; flex-direction: column; gap: var(--space-5); flex: 0 1 var(--login-w); box-sizing: border-box; padding: var(--space-8); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.vt-auth__title { margin: 0; }
.vt-auth__note { margin: 0; color: var(--ink-muted); }

/* Form */
.vt-form { display: flex; flex-direction: column; gap: var(--space-5); max-width: var(--form-max-w); }
.vt-form__row { display: flex; flex-wrap: wrap; gap: var(--space-4); }
.vt-form__row > .vt-field { flex: 1 1 var(--field-min-w); }
.vt-form__actions { display: flex; flex-wrap: wrap; gap: var(--space-2); padding-top: var(--space-2); }
.vt-form__req-note { margin: 0; color: var(--ink-muted); }
.vt-form__context { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--space-2) var(--space-4); margin: 0; padding: var(--space-4); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.vt-form__context dt { color: var(--ink-muted); }
.vt-form__context dd { margin: 0; color: var(--ink); }

/* Form split — форма в две колонки; колонки сами складываются в одну, если не помещаются (уже bp-compact — всегда) */
.vt-form--split { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--form-col-w)), 1fr)); gap: var(--space-8) var(--space-12); align-items: start; max-width: var(--form-split-max-w); }
.vt-form--split > :not(.vt-form__col) { grid-column: 1 / -1; }
.vt-form--split > .vt-form__actions { padding-top: 0; }
.vt-form__col { display: flex; flex-direction: column; gap: var(--space-5); min-width: 0; max-width: var(--form-max-w); }

/* Form section — раздел формы: fieldset + legend с заголовком h2 */
.vt-form__section { display: flex; flex-direction: column; min-width: 0; margin: 0; padding: 0; border: 0; }
.vt-form > * + .vt-form__section, .vt-form__col > * + .vt-form__section { margin-top: var(--space-3); }
.vt-form__legend { float: left; width: 100%; margin: 0; padding: 0; color: var(--ink); }
.vt-form__title { margin: 0; }
.vt-form__intro { margin: 0; color: var(--ink-soft); }
.vt-form__section > * + * { margin-top: var(--space-5); }
.vt-form__section > .vt-form__legend + .vt-form__intro { margin-top: var(--space-2); }

/* Check group — группа флажков: fieldset + legend; короткий список колонками, длинный — с фильтром и прокруткой */
.vt-checkgroup { display: flex; flex-direction: column; gap: var(--space-2); min-width: 0; margin: 0; padding: 0; border: 0; color: var(--ink-muted); }
.vt-checkgroup__legend { float: left; width: 100%; margin: 0; padding: 0; color: var(--ink-muted); }
.vt-checkgroup__options { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--check-col-w)), 1fr)); column-gap: var(--space-4); }
.vt-checkgroup__selected { margin: 0; color: var(--ink-muted); }
.vt-checkgroup__selected-values { color: var(--ink); }
.vt-checkgroup__list { max-height: var(--checklist-max-h); overflow-y: auto; box-sizing: border-box; padding: var(--space-1) var(--space-3); scroll-padding-block: var(--space-2); border: 1px solid var(--line); border-radius: var(--radius-md); }
.vt-checkgroup__list:has([aria-invalid="true"]) { border-color: var(--error); }
.vt-checkgroup__empty { margin: 0; color: var(--ink-soft); }
.vt-checkgroup__empty:not(:empty) { padding: var(--space-2) 0; }
.vt-check[hidden], .vt-search[hidden], .vt-field[hidden], .vt-select[hidden], .vt-btn[hidden] { display: none; }

/* Опасная кнопка — необратимое действие (отмена записи журнала) */
.vt-btn--danger { border-color: var(--error); color: var(--error); }
.vt-btn--danger:hover { background: var(--error-bg); border-color: var(--error); color: var(--error); }

/* DateField — дата события с точностью */
.vt-datefield { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; margin: 0; padding: 0; border: 0; }
.vt-datefield__legend { float: left; width: 100%; margin: 0; padding: 0; color: var(--ink-muted); }
.vt-datefield__precision { display: flex; flex-wrap: wrap; column-gap: var(--space-4); }
.vt-datefield__parts { display: flex; flex-wrap: wrap; gap: var(--space-4); }
.vt-datefield__parts > .vt-field { flex: 1 1 var(--field-min-w); }

/* Journal — журнал жизненного цикла сервера */
.vt-journal { display: flex; flex-direction: column; gap: var(--space-4); }
.vt-jlaunch { display: flex; flex-direction: column; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.vt-jlaunch__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); padding: var(--space-4); }
.vt-jlaunch__title { margin: 0; }
.vt-jlaunch__meta { color: var(--ink-muted); }
.vt-jlaunch__actions { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-left: auto; }
.vt-jlaunch__toggle { margin-left: auto; color: var(--link); }
.vt-jlaunch__empty { margin: 0; padding: var(--space-4); border-top: 1px solid var(--line); color: var(--ink-soft); }
details.vt-jlaunch > summary { list-style: none; cursor: pointer; }
details.vt-jlaunch > summary::-webkit-details-marker { display: none; }
details.vt-jlaunch[open] > summary { border-bottom: 1px solid var(--line); }
.vt-jentries { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--line); }
details.vt-jlaunch > .vt-jentries { border-top: 0; }
.vt-jentry { display: flex; flex-wrap: wrap; align-items: flex-start; gap: var(--space-2) var(--space-4); padding: var(--space-3) var(--space-4); }
.vt-jentry + .vt-jentry { border-top: 1px solid var(--line); }
.vt-jentry__time { flex: 0 0 var(--jentry-time-w); color: var(--ink-muted); }
.vt-jentry__body { display: flex; flex-direction: column; gap: var(--space-1); flex: 1 1 var(--jentry-body-min-w); min-width: 0; }
.vt-jentry__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-2); }
.vt-jentry__type { color: var(--ink); font-weight: 600; }
.vt-jentry__date { color: var(--ink); }
.vt-jentry__date--cancelled { color: var(--ink-muted); text-decoration: line-through; }
.vt-jentry__facts { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-3); margin: 0; color: var(--ink-soft); }
.vt-jentry__url { color: var(--ink-muted); overflow-wrap: anywhere; }
.vt-jentry__actions { display: flex; flex-wrap: wrap; gap: var(--space-2); }

/* Combobox — один выбор из длинного списка с поиском поверх обычного select */
.vt-combobox { position: relative; display: flex; flex-direction: column; }
.vt-combobox[hidden] { display: none; }
.vt-combobox__control { display: flex; align-items: center; gap: var(--space-2); height: var(--control-h); box-sizing: border-box; padding: 0 var(--space-3); background: var(--field); border: 1px solid var(--line-strong); border-radius: var(--radius-md); color: var(--ink); }
.vt-combobox__control:focus-within { outline: 2px solid var(--focus); outline-offset: 2px; }
.vt-combobox__control:has([aria-invalid="true"]) { border-color: var(--error); }
.vt-combobox__control:has(:disabled) { background: transparent; border-color: var(--line); color: var(--ink-muted); }
.vt-combobox__input { flex-grow: 1; min-width: 0; padding: 0; background: transparent; border: 0; color: inherit; font-family: inherit; outline: none; }
.vt-combobox__input::placeholder { color: var(--ink-muted); }
.vt-combobox__caret { color: var(--ink-muted); }
.vt-combobox__popup { position: absolute; top: 100%; left: 0; right: 0; z-index: 1; margin-top: var(--space-1); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md); overflow: hidden; }
.vt-combobox__popup[hidden] { display: none; }
.vt-combobox__list { max-height: var(--checklist-max-h); overflow-y: auto; margin: 0; padding: var(--space-1) 0; list-style: none; }
.vt-combobox__option { display: flex; align-items: center; gap: var(--space-2); min-height: var(--control-h); box-sizing: border-box; padding: 0 var(--space-3); color: var(--ink-soft); cursor: pointer; }
.vt-combobox__option:hover { background: var(--tag-bg); }
.vt-combobox__option[aria-selected="true"] { color: var(--ink); font-weight: 600; }
.vt-combobox__option--active { background: var(--tag-bg); outline: 2px solid var(--focus); outline-offset: -2px; }
.vt-combobox__mark { margin-left: auto; color: var(--ink-muted); font-weight: 400; }
.vt-combobox__empty { margin: 0; color: var(--ink-soft); }
.vt-combobox__empty:not(:empty) { padding: var(--space-2) var(--space-3); }

/* SubSection — подраздел страницы админки: заголовок · действия · содержимое */
.vt-subsection { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; }
.vt-subsection__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-4); }
.vt-subsection__title { flex: 1 1 var(--subsection-title-basis); min-width: 0; margin: 0; }
.vt-subsection__actions { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.vt-subsection__empty { margin: 0; color: var(--ink-soft); }

/* ===== Публичная часть ===== */

/* SiteShell — каркас публичной страницы: шапка, навигация, язык, подвал */
.vt-site { display: flex; flex-direction: column; min-height: var(--screen-min-h); background: var(--bg); }
.vt-wrap { box-sizing: border-box; width: 100%; max-width: var(--page-max-w); margin-inline: auto; padding-inline: var(--page-gutter); }
.vt-site-header { background: var(--bg-deep); border-bottom: 1px solid var(--line); }
.vt-site-header__bar { display: flex; align-items: center; gap: var(--space-10); height: var(--header-h); }
.vt-site-header .vt-brand { flex-shrink: 0; }
.vt-site-nav { display: flex; gap: var(--space-6); flex-grow: 1; min-width: 0; }
.vt-site-nav__item { display: inline-flex; align-items: center; min-height: var(--control-h-l); color: var(--ink-muted); white-space: nowrap; }
.vt-site-nav__item:hover { color: var(--ink); text-decoration: none; }
.vt-site-nav__item[aria-current] { color: var(--ink); font-weight: 600; box-shadow: inset 0 -2px 0 var(--gold); }
.vt-site-nav--row { gap: var(--space-2); overflow-x: auto; border-top: 1px solid var(--line); }
.vt-site-nav--row .vt-site-nav__item { flex: 1 0 auto; justify-content: center; }
.vt-lang { display: flex; gap: var(--space-1); margin-left: auto; }
.vt-lang__item { display: inline-flex; align-items: center; justify-content: center; min-width: var(--control-h); min-height: var(--control-h); border-radius: var(--radius-md); color: var(--ink-muted); font-weight: 600; }
.vt-lang__item:hover { background: var(--surface); color: var(--ink); text-decoration: none; }
.vt-lang__item[aria-current] { background: var(--surface); color: var(--ink); }
.vt-site-main { flex-grow: 1; }
.vt-site-footer { margin-top: var(--space-12); padding-block: var(--space-6); background: var(--bg-deep); border-top: 1px solid var(--line); color: var(--ink-muted); }
.vt-site-footer__inner { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-6); }
.vt-site-footer__nav { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-5); }
.vt-site-footer__nav a { display: inline-flex; align-items: center; min-height: var(--touch-min); color: var(--ink-soft); }

/* Раскладка содержимого: основная колонка и боковая; боковая уходит вниз, если основной не хватает main-min-w */
.vt-page { display: flex; flex-direction: column; gap: var(--space-8); padding-top: var(--space-6); }
.vt-layout { display: flex; flex-wrap: wrap; align-items: flex-start; gap: var(--space-8) var(--space-12); }
.vt-layout__main { display: flex; flex-direction: column; gap: var(--space-8); flex: 1 1 var(--main-min-w); min-width: 0; }
.vt-layout__aside { display: flex; flex-direction: column; gap: var(--space-8); flex: 0 0 var(--aside-w); min-width: 0; }

/* ListBlock — блок списка: заголовок, пометка, список, «Показать все» */
.vt-block { display: flex; flex-direction: column; gap: var(--space-4); min-width: 0; }
.vt-block[hidden] { display: none; }
.vt-block__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-1) var(--space-3); }
.vt-block__title { margin: 0; }
.vt-block__note { margin: 0; color: var(--ink-muted); }
.vt-block__list { display: flex; flex-direction: column; gap: var(--space-3); margin: 0; padding: 0; list-style: none; }
.vt-block__more { align-self: flex-start; display: inline-flex; align-items: center; min-height: var(--touch-min); }
.vt-block--aside { gap: var(--space-3); padding: var(--space-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.vt-block--aside .vt-block__list { gap: var(--space-3); }
.vt-tz-wait .vt-tz-block { visibility: hidden; } /* до скрипта часового пояса: место блока сохраняется, раскладка не прыгает */

/* LocalTime — время в поясе посетителя; время по анонсу — при наведении, фокусе и нажатии */
.vt-time { position: relative; display: inline-flex; }
.vt-time__btn { display: inline-flex; align-items: center; min-height: var(--touch-min); padding: 0; background: none; border: 0; color: inherit; font: inherit; cursor: help; text-decoration: underline dotted var(--ink-muted); }
.vt-time__tip { position: absolute; top: 100%; left: 0; z-index: 1; display: none; width: max-content; max-width: var(--tip-max-w); margin-top: var(--space-1); padding: var(--space-2) var(--space-3); background: var(--bg-deep); border: 1px solid var(--line-strong); border-radius: var(--radius-md); color: var(--ink); font-weight: 400; }
.vt-time:not(.vt-time--closed):hover .vt-time__tip, .vt-time:not(.vt-time--closed) .vt-time__btn:focus-visible + .vt-time__tip, .vt-time__btn[aria-expanded="true"] + .vt-time__tip { display: block; } /* vt-time--closed ставит скрипт по Esc и повторному нажатию */
.vt-tz-note { margin: 0; color: var(--ink-muted); }

/* EventMark — пометки событий и запусков */
.vt-mark { display: inline-flex; align-items: center; gap: var(--space-1); padding: var(--space-half) var(--space-2); border: 1px solid var(--line-strong); border-radius: var(--radius-sm); color: var(--ink-soft); }
.vt-mark--conflict { border-color: var(--conflict); color: var(--conflict); }
.vt-mark--cancelled { border-color: var(--line); color: var(--ink-muted); }
.vt-marks { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-2); }
.vt-marks__link, .vt-chips__reset { display: inline-flex; align-items: center; min-height: var(--touch-min); } /* отдельно стоящие мелкие ссылки: на телефоне зона нажатия 44px */

/* OpeningItem — полная строка открытия («Открытия», архив, главная) */
.vt-opening--full { grid-template-columns: var(--opening-when-w) minmax(0, 1fr); align-items: start; padding: var(--space-3) var(--space-4); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.vt-opening--full .vt-opening__main { gap: var(--space-1); min-width: 0; }
.vt-opening--promoted { background: var(--surface-raised); border-color: var(--promo); }
.vt-opening__when { display: flex; flex-direction: column; gap: var(--space-half); min-width: 0; }
.vt-opening__when-main { color: var(--gold); }
.vt-opening__when-sub { color: var(--ink-muted); }
.vt-opening__when--vague .vt-opening__when-main { color: var(--ink-soft); }
.vt-opening__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-2); }
.vt-opening__title { margin: 0; font-weight: 600; }
.vt-opening__title a { color: var(--ink); }
.vt-opening__fate { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-2); margin: 0; color: var(--ink-soft); }
.vt-opening__note { margin: 0; color: var(--ink-soft); }

/* ListToolbar — строка управления над списком: сортировка, флажки, пометка */
.vt-controls { display: flex; flex-direction: column; gap: var(--space-4); min-width: 0; }
.vt-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3) var(--space-5); }
.vt-toolbar__group { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-4); min-width: 0; }
.vt-toolbar__end { margin-left: auto; }
.vt-toolbar__label { color: var(--ink-muted); }
.vt-toolbar__note { flex-basis: 100%; margin: 0; color: var(--ink-muted); }
.vt-toolbar .vt-select { flex-grow: 1; }
.vt-sort { display: inline-flex; flex-wrap: wrap; gap: var(--space-1); }
.vt-sort__item { display: inline-flex; align-items: center; min-height: var(--control-h); box-sizing: border-box; padding: 0 var(--space-3); border: 1px solid var(--line); border-radius: var(--radius-pill); color: var(--ink-soft); }
.vt-sort__item:hover { border-color: var(--line-strong); color: var(--ink); text-decoration: none; }
.vt-sort__item[aria-current] { background: var(--tag-bg); border-color: var(--gold); color: var(--ink); font-weight: 600; }

/* FilterChips — применённые фильтры, каждый снимается одним нажатием */
.vt-chips { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.vt-chip { display: inline-flex; align-items: center; gap: var(--space-2); min-height: var(--touch-min); box-sizing: border-box; padding: var(--space-1) var(--space-3); background: var(--tag-bg); color: var(--ink); border-radius: var(--radius-pill); }
.vt-chip:hover { background: var(--line); color: var(--ink); text-decoration: none; }
.vt-chip__x { color: var(--ink-muted); }
.vt-chip:hover .vt-chip__x { color: var(--ink); }

/* Dropdown — выпадающая панель фильтра на details/summary */
.vt-dropdown { position: relative; }
.vt-dropdown > summary { display: flex; align-items: center; gap: var(--space-2); height: var(--control-h); box-sizing: border-box; padding: 0 var(--space-3); background: var(--field); color: var(--ink); border: 1px solid var(--line-strong); border-radius: var(--radius-md); cursor: pointer; list-style: none; }
.vt-dropdown > summary::-webkit-details-marker { display: none; }
.vt-dropdown[open] > summary { border-color: var(--gold); }
.vt-dropdown__value { flex-grow: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vt-dropdown__caret { color: var(--ink-muted); }
.vt-dropdown__panel { position: absolute; top: 100%; left: 0; z-index: 1; display: flex; flex-direction: column; gap: var(--space-3); width: var(--dropdown-w); box-sizing: border-box; margin-top: var(--space-1); padding: var(--space-4); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-md); }
.vt-dropdown__actions { display: flex; gap: var(--space-2); }

/* PromoBlock — блоки «Продвижение»: верхний (лента), «справа снизу», вставка в список на телефоне */
.vt-promo-block { display: flex; flex-direction: column; gap: var(--space-2); min-width: 0; }
.vt-promo-block__title { margin: 0; color: var(--ink-muted); }
.vt-promo-row { display: flex; gap: var(--space-3); margin: 0; padding: 0; list-style: none; overflow-x: auto; scroll-snap-type: x mandatory; }
.vt-promo-row > li { display: flex; flex: 1 0 var(--promo-card-w); min-width: 0; scroll-snap-align: start; }
.vt-promo-list { display: flex; flex-direction: column; gap: var(--space-3); margin: 0; padding: 0; list-style: none; }
.vt-promo-card { display: flex; flex-direction: column; gap: var(--space-2); flex-grow: 1; min-width: 0; box-sizing: border-box; padding: var(--space-3) var(--space-4); background: var(--surface-raised); border: 1px solid var(--promo); border-radius: var(--radius-lg); }
.vt-promo-card__top { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
.vt-promo-card__rate { color: var(--gold); }
.vt-promo-card__title { margin: 0; font-weight: 600; }
.vt-promo-card__title a { color: var(--ink); }
.vt-promo-card__facts { margin: 0; color: var(--ink-soft); }

/* ServerCard — значение сортировки справа (вместо индекса доверия) */
.vt-metric { display: flex; flex-direction: column; align-items: flex-end; gap: var(--space-half); text-align: right; }
.vt-metric__label { color: var(--ink-muted); }
.vt-metric__value { color: var(--ink); }
.vt-metric__row { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: baseline; gap: 0 var(--space-2); }
.vt-metric__period { color: var(--ink-muted); }
.vt-metric--no-data .vt-metric__value { color: var(--ink-muted); font-weight: 400; }

/* ServerRow — строка сервера в боковом блоке и в списке прошлых серверов */
.vt-srow { display: flex; align-items: center; gap: var(--space-3); padding-bottom: var(--space-3); border-bottom: 1px solid var(--line); color: var(--ink); }
.vt-srow__main { display: flex; flex-direction: column; gap: var(--space-half); flex-grow: 1; min-width: 0; }
.vt-srow__name { margin: 0; font-weight: 600; }
.vt-srow__fate { margin: 0; }
.vt-srow__name a { color: var(--ink); }
.vt-srow__meta { color: var(--ink-muted); }
.vt-srow__value { display: flex; flex-direction: column; align-items: flex-end; gap: var(--space-half); flex-shrink: 0; text-align: right; }
.vt-srow__period { color: var(--ink-muted); }
.vt-srow__value--no-data { flex-shrink: 1; min-width: 0; color: var(--ink-muted); } /* значения нет: «мало данных», «сайт не указан», «замеры начнутся с открытия»; длинный текст переносится, название не сжимается */

/* MonthNav — архив по месяцам: соседние месяцы и список месяцев по годам */
.vt-pager { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-4); }
.vt-pager__link { display: inline-flex; align-items: center; gap: var(--space-2); min-height: var(--control-h); }
.vt-pager__next { margin-left: auto; }
.vt-months { display: flex; flex-direction: column; gap: var(--space-3); }
.vt-months__year { margin: 0; color: var(--ink-muted); }
.vt-months__list { display: flex; flex-wrap: wrap; gap: var(--space-1); margin: 0; padding: 0; list-style: none; }
.vt-months__item { display: inline-flex; align-items: center; justify-content: center; min-height: var(--control-h); box-sizing: border-box; padding: 0 var(--space-3); border-radius: var(--radius-md); color: var(--ink-soft); }
.vt-months__item:hover { background: var(--tag-bg); color: var(--ink); text-decoration: none; }
.vt-months__item[aria-current] { background: var(--tag-bg); color: var(--ink); font-weight: 600; }

/* Pagination — страницы списка каталога: сводка над списком, номера страниц под ним */
.vt-results { display: flex; flex-direction: column; gap: var(--space-4); min-width: 0; }
.vt-results__summary { margin: 0; color: var(--ink-soft); }
.vt-results__body { display: flex; flex-direction: column; gap: var(--space-4); min-width: 0; }
.vt-pagination { padding-top: var(--space-2); }
.vt-pagination__list { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1); margin: 0; padding: 0; list-style: none; }
.vt-pagination__link { display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2); min-width: var(--control-h); min-height: var(--control-h); box-sizing: border-box; padding: 0 var(--space-2); border: 1px solid var(--line); border-radius: var(--radius-md); color: var(--ink-soft); }
.vt-pagination__link:hover { border-color: var(--line-strong); color: var(--ink); text-decoration: none; }
.vt-pagination__link[aria-current] { background: var(--tag-bg); border-color: var(--gold); color: var(--ink); font-weight: 600; }
.vt-pagination__step { padding: 0 var(--space-3); }
.vt-pagination__gap { display: inline-flex; align-items: center; justify-content: center; min-width: var(--control-h); min-height: var(--control-h); color: var(--ink-muted); }
.vt-pagination__compact { display: flex; align-items: center; gap: var(--space-3); }
.vt-pagination__status { color: var(--ink-soft); }
.vt-pagination__next { margin-left: auto; }

/* ServerHead — шапка страницы сервера внутри PageHero */
.vt-shead { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-4) var(--space-6); }
.vt-shead__main { display: flex; flex-direction: column; gap: var(--space-2); flex: 1 1 var(--main-min-w); min-width: 0; }
.vt-shead__title-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); }
.vt-shead__title { margin: 0; }
.vt-shead__facts { margin: 0; color: var(--ink-soft); }
.vt-shead__side { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3) var(--space-4); }

/* HistoryFeed — публичная лента истории сервера по запускам */
.vt-history { display: flex; flex-direction: column; gap: var(--space-4); }
.vt-hlaunch { display: flex; flex-direction: column; background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.vt-hlaunch__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-1) var(--space-3); padding: var(--space-4); }
.vt-hlaunch__title { margin: 0; }
.vt-hlaunch__summary { color: var(--ink-soft); }
.vt-hlaunch__toggle { margin-left: auto; color: var(--link); }
details.vt-hlaunch > summary { list-style: none; cursor: pointer; }
details.vt-hlaunch > summary::-webkit-details-marker { display: none; }
details.vt-hlaunch[open] > summary { border-bottom: 1px solid var(--line); }
.vt-hevents { margin: 0; padding: var(--space-2) 0; list-style: none; border-top: 1px solid var(--line); }
details.vt-hlaunch > .vt-hevents { border-top: 0; }
.vt-hevent { display: grid; grid-template-columns: var(--space-6) minmax(0, 1fr); gap: var(--space-2); padding: var(--space-2) var(--space-4); }
.vt-hevent__dot { width: var(--space-3); height: var(--space-3); box-sizing: border-box; margin-top: var(--space-1); border: 2px solid var(--timeline-past); border-radius: var(--radius-pill); background: var(--timeline-past); }
.vt-hevent--future .vt-hevent__dot { border-color: var(--gold); background: transparent; }
.vt-hevent--cancelled .vt-hevent__dot { border-color: var(--line-strong); background: transparent; }
.vt-hevent__body { display: flex; flex-direction: column; gap: var(--space-1); min-width: 0; }
.vt-hevent__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-1) var(--space-3); }
.vt-hevent__type { color: var(--ink); font-weight: 600; }
.vt-hevent__date { color: var(--ink); }
.vt-hevent--cancelled .vt-hevent__date { color: var(--ink-muted); text-decoration: line-through; }
.vt-hevent__line { margin: 0; color: var(--ink-soft); }
.vt-hevent__source { margin: 0; color: var(--ink-muted); overflow-wrap: anywhere; }

/* Prose — длинный текст (политика приватности) и текст лендинга */
.vt-prose { max-width: var(--lede-max-w); color: var(--ink-soft); }
.vt-prose > * { margin: 0; }
.vt-prose > * + * { margin-top: var(--space-4); }
.vt-prose > h2 { margin-top: var(--space-8); color: var(--ink); }
.vt-prose > h3 { margin-top: var(--space-6); color: var(--ink); }
.vt-prose ul, .vt-prose ol { padding-left: var(--space-6); }
.vt-prose li + li { margin-top: var(--space-2); }
.vt-prose strong { color: var(--ink); }
.vt-toc { display: flex; flex-direction: column; gap: var(--space-2); max-width: var(--lede-max-w); box-sizing: border-box; padding: var(--space-4) var(--space-5); background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius-lg); }
.vt-toc__title { margin: 0; color: var(--ink); font-weight: 600; }
.vt-toc__list { display: flex; flex-direction: column; gap: var(--space-1); margin: 0; padding-left: var(--space-5); color: var(--ink-muted); }
.vt-toc__list a { display: inline-flex; align-items: center; min-height: var(--touch-min); }

/* ErrorPage — 404 и 500: карточка по центру экрана (раскладка vt-center общая с AuthCard) */
.vt-error__code { margin: 0; color: var(--gold); }
.vt-error__title { margin: 0; }
.vt-error__text { margin: 0; color: var(--ink-soft); }
.vt-error__actions { display: flex; flex-wrap: wrap; gap: var(--space-2); }
