/* ============================================================
   Konkurs.UI.Shared — bespoke дизайн-система платформы (M-UI.0).
   Канон = grant-platform-design/grant-platform-design2/styles.css (v2);
   снизу дописан блок «АДАПТАЦИЯ ПОД РЕАЛЬНУЮ ФОРМУ» (боевые контролы:
   нативный <select>, asp-валидация, read-only, Alpine-списки).
   Раздаётся всем сервисам: _content/Konkurs.UI.Shared/css/grant-design.css.
   Правки вносить ЗДЕСЬ (не в макетах).

   Направление: «тёплый премиум» govtech — спокойно, воздушно,
   мягкие тени, приглушённый янтарный акцент, без тяжёлых рамок.
   Все цвета/отступы — через переменные.
   ============================================================ */

:root {
  /* Поверхности — тёплые, светлые, спокойные */
  --color-bg: #faf8f4;
  --color-surface: #ffffff;
  --color-surface-muted: #f6f1ea;
  --color-border: #ece7dd;
  --color-border-strong: #ddd5c7;

  /* Текст */
  --color-text: #21262d;
  --color-text-muted: #6c7280;
  --color-text-soft: #9c9488;

  /* Акцент — приглушённый янтарь */
  --color-primary: #c2620e;
  --color-primary-hover: #a4530b;
  --color-primary-soft: #fbf1e6;
  --color-primary-tint: #fdf8f2;
  --color-primary-light: #d9772a;
  --color-primary-line: #f0dcc6;

  /* Семантика статусов (приглушённые) */
  --color-success: #2f8a4e; --color-success-soft: #edf5ee; --color-success-line: #cfe6d4;
  --color-warning: #b07d1a; --color-warning-soft: #f9f1df; --color-warning-line: #ecdcbb;
  --color-danger:  #c23b2e; --color-danger-soft:  #f9eeeb; --color-danger-line:  #eecdc6;
  --color-info:    #2358c4; --color-info-soft:    #eef2fb; --color-info-line:    #d4def4;

  /* Типографика */
  --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --fs-display: 26px; --fs-h2: 21px; --fs-h3: 16px;
  --fs-body: 15px; --fs-sm: 13px; --fs-xs: 12px;
  --lh-base: 1.6;

  /* Отступы (8px-ритм) */
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px;
  --space-5: 20px; --space-6: 24px; --space-7: 28px; --space-8: 32px; --space-10: 40px;

  /* Радиусы */
  --radius-ctrl: 10px; --radius-sm: 10px; --radius-md: 14px; --radius-lg: 16px; --radius-xl: 20px;

  /* Тени — мягкие, рассеянные */
  --shadow-card: 0 1px 2px rgba(33, 27, 16, 0.04), 0 1px 3px rgba(33, 27, 16, 0.03);
  --shadow-sm: 0 1px 2px rgba(33, 27, 16, 0.05);
  --shadow-md: 0 10px 30px rgba(33, 27, 16, 0.08);

  /* Каркас */
  --sidebar-width: 288px;
  --right-panel-width: 348px;
  --topbar-height: 66px;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--font-sans);
  font-size: var(--fs-body);
  line-height: var(--lh-base);
  color: var(--color-text);
  background: var(--color-bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
.svg-sprite { display: none; }

.icon {
  width: 18px; height: 18px;
  fill: none; stroke: currentColor;
  stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round;
  flex: none;
}

/* ============ КНОПКИ ============ */
.btn {
  font-family: inherit; font-size: var(--fs-sm); font-weight: 600;
  display: inline-flex; align-items: center; gap: var(--space-2);
  padding: 9px var(--space-4);
  border-radius: var(--radius-ctrl); border: 1px solid transparent;
  cursor: pointer; white-space: nowrap; text-decoration: none;
  transition: background .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease;
}
.btn:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.btn--primary { background: var(--color-primary); color: #fff; box-shadow: 0 1px 2px rgba(120, 60, 10, .25); }
.btn--primary:hover { background: var(--color-primary-hover); }
.btn--primary:disabled { background: #d9d2c6; color: #fff; cursor: not-allowed; box-shadow: none; }
.btn--secondary { background: var(--color-surface); color: var(--color-text); border-color: var(--color-border-strong); box-shadow: var(--shadow-sm); }
.btn--secondary:hover { background: var(--color-surface-muted); border-color: var(--color-text-soft); }
.btn--ghost { background: transparent; color: var(--color-text-muted); }
.btn--ghost:hover { background: var(--color-surface-muted); color: var(--color-text); }
.btn--block { width: 100%; justify-content: center; }
.btn--add { color: var(--color-primary); margin-top: var(--space-3); padding-left: var(--space-2); }
.btn--add:hover { background: var(--color-primary-soft); }
.btn--warning { background: var(--color-surface); color: var(--color-warning); border-color: var(--color-warning-line); }
.btn--warning:hover { background: var(--color-warning-soft); border-color: var(--color-warning); }
.btn:disabled, .btn[disabled] { opacity: .5; cursor: not-allowed; box-shadow: none; }
.btn .icon { width: 16px; height: 16px; }

/* ============ TOPBAR ============ */
.topbar {
  position: sticky; top: 0; z-index: 50;
  height: var(--topbar-height);
  display: flex; align-items: center; gap: var(--space-5);
  padding: 0 var(--space-6);
  background: rgba(255, 255, 255, .9);
  backdrop-filter: saturate(1.1) blur(8px);
  border-bottom: 1px solid var(--color-border);
}
.topbar__brand { display: flex; align-items: center; gap: var(--space-3); }
.topbar__logo {
  width: 36px; height: 36px; border-radius: var(--radius-ctrl);
  background: linear-gradient(135deg, var(--color-primary), var(--color-primary-light));
  color: #fff; display: grid; place-items: center; font-weight: 700; font-size: var(--fs-sm);
  box-shadow: 0 2px 6px rgba(150, 70, 10, .25);
}
.topbar__brandtext { display: flex; flex-direction: column; line-height: 1.25; }
.topbar__brandtext strong { font-size: var(--fs-body); letter-spacing: -.01em; }
.topbar__brandtext span { font-size: var(--fs-xs); color: var(--color-text-soft); }

.topbar__contest { display: flex; flex-direction: column; gap: 2px; min-width: 0; padding-left: var(--space-5); border-left: 1px solid var(--color-border); }
.topbar__contestcap { font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .05em; color: var(--color-text-soft); line-height: 1; }
.topbar__contestname { font-size: var(--fs-sm); color: var(--color-text); font-weight: 500; max-width: 460px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.topbar__search {
  margin-left: auto; display: flex; align-items: center; gap: var(--space-2);
  background: var(--color-surface-muted); border: 1px solid var(--color-border);
  border-radius: var(--radius-ctrl); padding: 8px var(--space-3);
  color: var(--color-text-soft); width: 288px;
  transition: border-color .15s, background .15s;
}
.topbar__search:focus-within { border-color: var(--color-primary); background: #fff; }
.topbar__search input { border: 0; background: transparent; outline: none; font: inherit; font-size: var(--fs-sm); color: var(--color-text); width: 100%; }
.topbar__actions { display: flex; align-items: center; gap: var(--space-2); }
.topbar__profile {
  width: 38px; height: 38px; border-radius: 50%;
  border: 1px solid var(--color-border-strong); background: var(--color-surface);
  display: grid; place-items: center; cursor: pointer; color: var(--color-text-muted);
}
.topbar__profile:hover { background: var(--color-surface-muted); }

/* ============ ШАПКА ЗАЯВКИ ============ */
.appheader {
  display: flex; align-items: center; gap: var(--space-6);
  padding: var(--space-5) var(--space-6);
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
}
.appheader__title h1 { margin: 0; font-size: var(--fs-h3); letter-spacing: -.01em; }
.appheader__title p { margin: 3px 0 0; color: var(--color-text-muted); font-size: var(--fs-sm); }
/* Печатная версия заявки (PDF) — иконка слева от названия (экономия места). */
.appheader__titlerow { display: flex; align-items: center; gap: var(--space-5); }
.appheader__titletext { min-width: 0; }
.appprint { display: inline-flex; align-items: center; justify-content: center; flex: none;
  color: var(--color-text-muted); text-decoration: none; }
.appprint:hover { color: var(--color-primary); }
.appprint .icon { width: 30px; height: 30px; }
.appheader__meta { margin-left: auto; display: flex; gap: var(--space-8); }
.appheader__metaitem { display: flex; flex-direction: column; gap: var(--space-1); max-width: 240px; }
.appheader__label { font-size: var(--fs-xs); color: var(--color-text-soft); text-transform: uppercase; letter-spacing: .04em; }
.appheader__value { font-size: var(--fs-sm); font-weight: 600; }

/* ============ STATUS PILL ============ */
.status-pill {
  display: inline-flex; align-items: center; gap: var(--space-1);
  font-size: var(--fs-xs); font-weight: 600; padding: 4px var(--space-3);
  border-radius: 999px; width: fit-content; border: 1px solid transparent;
}
.status-pill--neutral { background: var(--color-surface-muted); color: var(--color-text-muted); border-color: var(--color-border); }
.status-pill--success { background: var(--color-success-soft); color: var(--color-success); border-color: var(--color-success-line); }
.status-pill--warning { background: var(--color-warning-soft); color: var(--color-warning); border-color: var(--color-warning-line); }
.status-pill--danger  { background: var(--color-danger-soft);  color: var(--color-danger);  border-color: var(--color-danger-line); }
.status-pill--info    { background: var(--color-info-soft);    color: var(--color-info);    border-color: var(--color-info-line); }

/* ============ ПАНЕЛЬ КОНТАКТОВ ============ */
.contacts { background: var(--color-surface); border-bottom: 1px solid var(--color-border); }
.contacts__toggle {
  display: flex; align-items: center; gap: var(--space-2);
  width: 100%; padding: var(--space-3) var(--space-6);
  background: transparent; border: 0; cursor: pointer; color: var(--color-text);
  font: inherit; font-size: var(--fs-sm); font-weight: 600;
}
.contacts__toggle .icon { color: var(--color-text-soft); }
.contacts__chevron { margin-left: auto; transition: transform .2s; color: var(--color-text-soft); }
.contacts.is-open .contacts__chevron { transform: rotate(180deg); }
.contacts__body { display: none; gap: var(--space-8); padding: 0 var(--space-6) var(--space-4); }
.contacts.is-open .contacts__body { display: flex; flex-wrap: wrap; }
.contacts__item { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-sm); color: var(--color-text-muted); }
.contacts__role { font-size: var(--fs-xs); color: var(--color-text-soft); margin-right: var(--space-1); }
.contacts__item .icon { width: 16px; height: 16px; color: var(--color-text-soft); }

/* ============ КАРКАС ============ */
.layout {
  display: grid;
  grid-template-columns: var(--sidebar-width) minmax(0, 1fr) var(--right-panel-width);
  align-items: start;
}

/* ============ ЛЕВОЕ МЕНЮ ============ */
.sidebar {
  position: sticky; top: var(--topbar-height); align-self: start;
  height: calc(100vh - var(--topbar-height)); overflow-y: auto;
  background: var(--color-surface); border-right: 1px solid var(--color-border);
  padding: var(--space-5) var(--space-3);
}
.sidebar__group {
  font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .05em;
  color: var(--color-text-soft); font-weight: 600;
  padding: var(--space-2) var(--space-3) var(--space-3);
}
.sidebar__nav { display: flex; flex-direction: column; gap: var(--space-1); }
.navitem {
  display: flex; gap: var(--space-3); align-items: flex-start;
  padding: var(--space-3); border-radius: var(--radius-md);
  text-decoration: none; color: var(--color-text);
  position: relative; transition: background .15s;
}
.navitem:hover { background: var(--color-surface-muted); }
.navitem:focus { outline: none; }
.navitem:focus-visible { outline: 2px solid var(--color-primary); outline-offset: -3px; }
.navitem--active { background: var(--color-primary-tint); }
.navitem--active::before {
  content: ""; position: absolute; left: 0; top: 10px; bottom: 10px;
  width: 3px; border-radius: 0 3px 3px 0; background: var(--color-primary);
}
.navitem.is-locked { opacity: .55; cursor: not-allowed; }
.navitem__status {
  width: 26px; height: 26px; border-radius: 50%; flex: none;
  display: grid; place-items: center;
  background: var(--color-surface-muted); color: var(--color-text-soft);
  border: 1px solid var(--color-border);
}
.navitem__status .icon { width: 14px; height: 14px; }
.navitem.is-done    .navitem__status { background: var(--color-success-soft); color: var(--color-success); border-color: var(--color-success-line); }
.navitem.is-warning .navitem__status { background: var(--color-warning-soft); color: var(--color-warning); border-color: var(--color-warning-line); }
.navitem.is-error   .navitem__status { background: var(--color-danger-soft);  color: var(--color-danger);  border-color: var(--color-danger-line); }
.navitem.is-progress .navitem__status { background: var(--color-primary-soft); color: var(--color-primary); border-color: var(--color-primary-line); }
.navitem--active .navitem__status { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.navitem__body { display: flex; flex-direction: column; gap: 6px; min-width: 0; flex: 1; padding-top: 1px; }
.navitem__name { font-size: var(--fs-sm); font-weight: 600; letter-spacing: -.005em; }
.navitem__meta { font-size: var(--fs-xs); color: var(--color-text-soft); }
.navitem__bar { display: block; height: 4px; border-radius: 999px; background: var(--color-border); overflow: hidden; }
.navitem__bar i { display: block; height: 100%; background: var(--color-text-soft); border-radius: 999px; transition: width .3s ease; }
.navitem.is-done    .navitem__bar i { background: var(--color-success); }
.navitem.is-warning .navitem__bar i { background: var(--color-warning); }
.navitem.is-error   .navitem__bar i { background: var(--color-danger); }
.navitem--active .navitem__bar i, .navitem.is-progress .navitem__bar i { background: var(--color-primary); }

/* ============ ЦЕНТР ============ */
.main { padding: var(--space-7) var(--space-8); min-width: 0; }
.pagehead {
  display: flex; align-items: flex-start; justify-content: space-between; gap: var(--space-4);
  position: sticky; top: var(--topbar-height); z-index: 12;
  background: var(--color-bg);
  margin: calc(-1 * var(--space-7)) calc(-1 * var(--space-8)) var(--space-6);
  padding: var(--space-5) var(--space-8);
  border-bottom: 1px solid var(--color-border);
}
.pagehead__title { margin: 0; font-size: var(--fs-h2); letter-spacing: -.015em; }
.pagehead__sub { margin: 6px 0 0; font-size: var(--fs-sm); color: var(--color-text-muted); }

/* ============ ПОЛЯ ФОРМЫ (без цветных полос) ============ */
.field {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5) var(--space-6);
  margin-bottom: var(--space-4);
  box-shadow: var(--shadow-card);
  transition: border-color .15s, box-shadow .15s;
}
.field:focus-within { border-color: var(--color-border-strong); box-shadow: var(--shadow-sm); }
.field.is-warning { border-color: var(--color-warning-line); }
.field.is-error   { border-color: var(--color-danger-line); }
.field__label {
  display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap;
  font-size: var(--fs-sm); font-weight: 600; margin-bottom: var(--space-4); letter-spacing: -.005em;
}
.field__num {
  display: inline-grid; place-items: center;
  width: 24px; height: 24px; border-radius: 8px;
  background: var(--color-surface-muted); color: var(--color-text-muted);
  font-size: var(--fs-xs); font-weight: 700;
}
.field.is-filled  .field__num { background: var(--color-success-soft); color: var(--color-success); }
.field.is-warning .field__num { background: var(--color-warning-soft); color: var(--color-warning); }
.field.is-error   .field__num { background: var(--color-danger-soft);  color: var(--color-danger); }
.field__req { color: var(--color-danger); font-weight: 700; }
.field__help {
  width: 18px; height: 18px; border-radius: 50%; border: 1px solid var(--color-border-strong);
  background: var(--color-surface); color: var(--color-text-soft);
  font-size: var(--fs-xs); cursor: help; line-height: 1; padding: 0;
}
.field__help:hover { color: var(--color-primary); border-color: var(--color-primary); }
.field__sub { display: block; font-size: var(--fs-xs); color: var(--color-text-soft); margin-bottom: 6px; }
.field__row { display: flex; gap: var(--space-4); }
.field__cell { flex: 1; }
.field__foot { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); margin-top: var(--space-3); }
.field__msg { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--fs-xs); }
.field__msg .icon { width: 14px; height: 14px; }
.field__msg--error   { color: var(--color-danger); }
.field__msg--warning { color: var(--color-warning); }
.field__msg--info    { color: var(--color-info); }

/* Контролы */
.control {
  width: 100%; font: inherit; font-size: var(--fs-body); color: var(--color-text);
  background: var(--color-surface); border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-ctrl); padding: 11px var(--space-3);
  transition: border-color .15s, box-shadow .15s;
}
textarea.control { resize: vertical; line-height: var(--lh-base); min-height: 64px; }
.control::placeholder { color: var(--color-text-soft); }
.control:hover { border-color: var(--color-text-soft); }
.control:focus { outline: none; border-color: var(--color-primary); box-shadow: 0 0 0 3px var(--color-primary-soft); }
.field.is-error .control { border-color: var(--color-danger-line); }
.field.is-error .control:focus { border-color: var(--color-danger); box-shadow: 0 0 0 3px var(--color-danger-soft); }
.field.is-warning .control { border-color: var(--color-warning-line); }
.field.is-warning .control:focus { border-color: var(--color-warning); box-shadow: 0 0 0 3px var(--color-warning-soft); }

.counter { font-size: var(--fs-xs); color: var(--color-text-soft); margin-left: auto; font-variant-numeric: tabular-nums; }
.counter.is-near { color: var(--color-warning); }
.counter.is-over { color: var(--color-danger); }

/* ============ ПОЗИТИВНАЯ ОБРАТНАЯ СВЯЗЬ: галочка у заполненных обязательных полей ============ */
/* Только для is-filled; при is-warning / is-error — правило не применяется */
.field.is-filled .field__label::after {
  content: "✓";
  margin-left: auto;
  color: var(--color-success);
  font-weight: 700;
  font-size: var(--fs-sm);
}

/* ============ ПОДСКАЗКА ЭКСПЕРТА ============ */
.tip { margin-top: var(--space-4); background: var(--color-info-soft); border: 1px solid var(--color-info-line); border-radius: var(--radius-md); }
.tip__head {
  display: flex; align-items: center; gap: var(--space-2); width: 100%;
  padding: var(--space-3); background: transparent; border: 0;
  cursor: pointer; font: inherit; font-size: var(--fs-xs); font-weight: 600; color: var(--color-info); text-align: left;
}
.tip__head .icon { width: 15px; height: 15px; }
.tip__chevron { margin-left: auto; transition: transform .2s; }
.tip.is-open .tip__chevron { transform: rotate(180deg); }
.tip__body { display: none; padding: 0 var(--space-3) var(--space-3) calc(var(--space-3) + 23px); font-size: var(--fs-sm); color: var(--color-text-muted); }
.tip.is-open .tip__body { display: block; }
.tip__body em { color: var(--color-text); font-style: normal; font-weight: 600; }

/* ============ ПОВТОРЯЕМЫЕ СУЩНОСТИ ============ */
.repeat { display: flex; flex-direction: column; gap: var(--space-2); }
.repeat__item {
  display: flex; align-items: center; gap: var(--space-3);
  background: var(--color-surface-muted); border: 1px solid var(--color-border);
  border-radius: var(--radius-ctrl); padding: var(--space-3) var(--space-4);
  transition: border-color .15s, background .15s;
}
.repeat__item:hover { border-color: var(--color-border-strong); }
.repeat__text { flex: 1; font-size: var(--fs-sm); }
.repeat__del { border: 0; background: transparent; color: var(--color-text-soft); cursor: pointer; padding: var(--space-1); border-radius: 8px; display: grid; place-items: center; }
.repeat__del:hover { color: var(--color-danger); background: var(--color-danger-soft); }
.repeat__del .icon { width: 16px; height: 16px; }
.repeat__item--edit { background: var(--color-surface); border-color: var(--color-primary); box-shadow: 0 0 0 3px var(--color-primary-soft); }
.repeat__input { flex: 1; font: inherit; font-size: var(--fs-sm); border: 0; background: transparent; outline: none; color: var(--color-text); padding: 0; }
.repeat__input::placeholder { color: var(--color-text-soft); }
.repeat__ok { font: inherit; font-size: var(--fs-xs); font-weight: 600; color: #fff; background: var(--color-primary); border: 0; border-radius: 8px; padding: 5px var(--space-3); cursor: pointer; }
.repeat__ok:hover { background: var(--color-primary-hover); }
.repeat__cancel { border: 0; background: transparent; color: var(--color-text-soft); cursor: pointer; font-size: 18px; line-height: 1; padding: 0 var(--space-1); }
.repeat__cancel:hover { color: var(--color-danger); }

/* ============ ПАРТНЁРЫ ============ */
.partner { border: 1px solid var(--color-border); border-radius: var(--radius-md); margin-bottom: var(--space-2); overflow: hidden; background: var(--color-surface); }
.partner__head {
  display: flex; align-items: center; gap: var(--space-3); width: 100%;
  padding: var(--space-3) var(--space-4); background: var(--color-surface-muted);
  border: 0; cursor: pointer; font: inherit; text-align: left; color: var(--color-text);
}
.partner__head strong { font-size: var(--fs-sm); }
.partner__chevron { margin-left: auto; transition: transform .2s; color: var(--color-text-soft); }
.partner.is-open .partner__chevron { transform: rotate(180deg); }
.partner__body { display: none; padding: var(--space-4); flex-direction: column; gap: var(--space-3); }
.partner.is-open .partner__body { display: flex; }
.partner__nameinput { flex: 1; }
.chips { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.chip {
  font: inherit; font-size: var(--fs-xs); padding: 5px var(--space-3);
  border-radius: 999px; border: 1px solid var(--color-border-strong);
  background: var(--color-surface); color: var(--color-text-muted); cursor: pointer;
  transition: .15s;
}
.chip:hover { border-color: var(--color-primary); color: var(--color-primary); }
.chip.is-on { background: var(--color-primary-soft); border-color: #eccfa9; color: var(--color-primary-hover); font-weight: 600; }
.partner__doc { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--fs-xs); }
.partner__doc .icon { width: 15px; height: 15px; }
.partner__doc--ok { color: var(--color-success); }
.partner__doc--warn { color: var(--color-warning); }

/* ============ КАСТОМНЫЙ ДРОПДАУН ============ */
.dropdown { position: relative; }
.dropdown__btn {
  width: 100%; display: flex; align-items: center; gap: var(--space-2);
  font: inherit; font-size: var(--fs-body); color: var(--color-text); text-align: left;
  background: var(--color-surface); border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-ctrl); padding: 11px var(--space-3); cursor: pointer;
  transition: border-color .15s, box-shadow .15s;
}
.dropdown__btn:hover { border-color: var(--color-text-soft); }
.dropdown.is-open .dropdown__btn { border-color: var(--color-primary); box-shadow: 0 0 0 3px var(--color-primary-soft); }
.dropdown__value { flex: 1; }
.dropdown__chev { flex: none; color: var(--color-text-soft); transition: transform .2s; }
.dropdown.is-open .dropdown__chev { transform: rotate(180deg); }
.dropdown__menu {
  position: absolute; z-index: 30; top: calc(100% + 6px); left: 0; right: 0;
  margin: 0; padding: var(--space-1); list-style: none;
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: var(--radius-md); box-shadow: var(--shadow-md);
  max-height: 280px; overflow: auto; display: none;
}
.dropdown.is-open .dropdown__menu { display: block; }
.dropdown__opt {
  display: flex; align-items: center; gap: var(--space-2);
  padding: 9px var(--space-3); border-radius: 8px;
  font-size: var(--fs-body); cursor: pointer;
}
.dropdown__opt::before { content: ""; width: 16px; flex: none; color: var(--color-primary); font-weight: 700; }
.dropdown__opt.is-sel::before { content: "✓"; }
.dropdown__opt:hover { background: var(--color-surface-muted); }
.dropdown__opt.is-sel { color: var(--color-primary-hover); font-weight: 600; }

/* ============ ЗАГЛУШКА ============ */
.placeholder { display: grid; place-items: center; min-height: 50vh; }
.placeholder__box { text-align: center; max-width: 440px; }
.placeholder__icon { width: 40px; height: 40px; color: var(--color-text-soft); margin-bottom: var(--space-3); }
.placeholder__box h2 { margin: 0 0 var(--space-2); }
.placeholder__box p { color: var(--color-text-muted); font-size: var(--fs-sm); margin-bottom: var(--space-5); }
.placeholder code { background: var(--color-surface-muted); padding: 2px 6px; border-radius: 6px; font-size: var(--fs-xs); }

/* ============ ПРАВАЯ СТАТУСНАЯ ПАНЕЛЬ ============ */
.status {
  position: sticky; top: var(--topbar-height); align-self: start;
  height: calc(100vh - var(--topbar-height)); overflow-y: auto;
  background: transparent; border-left: 1px solid var(--color-border);
  padding: var(--space-6) var(--space-5);
  display: flex; flex-direction: column; gap: var(--space-4);
}
.card { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: var(--space-5); box-shadow: var(--shadow-card); }
.card__title { display: flex; align-items: center; gap: var(--space-2); margin: 0 0 var(--space-4); font-size: var(--fs-sm); }
.card__title .icon { width: 16px; height: 16px; }

/* Общий статус + кольцо */
.status__overall { display: flex; align-items: center; gap: var(--space-4); }
.ring { position: relative; width: 84px; height: 84px; flex: none; }
.ring svg { width: 84px; height: 84px; transform: rotate(-90deg); }
.ring__track { fill: none; stroke: var(--color-border); stroke-width: 8; }
.ring__value { fill: none; stroke: var(--color-primary); stroke-width: 8; stroke-linecap: round;
  stroke-dasharray: 214; stroke-dashoffset: 47; transition: stroke-dashoffset .45s ease; }
.ring__num { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); display: flex; align-items: baseline; gap: 1px; line-height: 1; color: var(--color-text-muted); }
.ring__num b { font-size: var(--fs-h2); color: var(--color-text); line-height: 1; }
.ring__num i { font-style: normal; font-size: var(--fs-sm); line-height: 1; }
.status__overallinfo { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.status__caption { font-size: var(--fs-sm); font-weight: 600; }
.status__req { font-size: var(--fs-xs); color: var(--color-text-muted); }
.progress { display: block; height: 6px; border-radius: 999px; background: var(--color-border); overflow: hidden; margin-top: 6px; }
.progress i { display: block; height: 100%; background: var(--color-primary); border-radius: 999px; transition: width .45s; }

/* Чек-лист разделов */
.checklist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-3); }
.checklist__item { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-sm); color: var(--color-text-muted); }
.checklist__item .icon { width: 16px; height: 16px; color: var(--color-text-soft); }
.checklist__item span { margin-left: auto; font-size: var(--fs-xs); }
.checklist__item.is-done    { color: var(--color-text); } .checklist__item.is-done .icon    { color: var(--color-success); }
.checklist__item.is-warning .icon { color: var(--color-warning); }
.checklist__item.is-error   { color: var(--color-text); } .checklist__item.is-error .icon   { color: var(--color-danger); }
.checklist__item.is-error span { color: var(--color-danger); font-weight: 600; }
.checklist__item.is-progress .icon { color: var(--color-primary); }

/* Карточки сообщений */
.msg-card--error   { border-color: var(--color-danger-line);  background: var(--color-danger-soft); }
.msg-card--error .card__title   { color: var(--color-danger); }
.msg-card--warning { border-color: var(--color-warning-line); background: var(--color-warning-soft); }
.msg-card--warning .card__title { color: var(--color-warning); }
.msglist { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--space-2); font-size: var(--fs-sm); }
.msglist a { color: var(--color-danger); text-decoration: none; }
.msglist a:hover { text-decoration: underline; }
.msg-card--warning .msglist { color: var(--color-text); }

/* Следующее действие */
.nextaction { background: var(--color-primary-tint); border-color: var(--color-primary-line); }
.nextaction__cap { font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .04em; color: var(--color-primary-hover); font-weight: 700; }
.nextaction__text { margin: var(--space-2) 0 var(--space-4); font-size: var(--fs-sm); line-height: 1.5; }

/* Дедлайн */
.deadline { display: flex; align-items: center; gap: var(--space-3); background: var(--color-warning-soft); border-color: var(--color-warning-line); }
.deadline .icon { color: var(--color-warning); width: 22px; height: 22px; }
.deadline__cap { display: block; font-size: var(--fs-xs); color: var(--color-text-muted); }
.deadline__val { font-size: var(--fs-sm); color: var(--color-text); font-weight: 600; }

/* ============ ТОСТ ============ */
.toast {
  position: fixed; bottom: var(--space-6); left: 50%; transform: translateX(-50%) translateY(20px);
  background: var(--color-text); color: #fff; padding: var(--space-3) var(--space-5);
  border-radius: var(--radius-ctrl); font-size: var(--fs-sm); box-shadow: var(--shadow-md);
  opacity: 0; pointer-events: none; transition: .25s ease; z-index: 100;
}
.toast.is-show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ============ ИНДИКАТОР АВТОСОХРАНЕНИЯ ============ */
.savestate { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-xs); color: var(--color-text-soft); margin-right: var(--space-3); white-space: nowrap; transition: color .2s; }
.savestate .icon { width: 14px; height: 14px; color: var(--color-success); }
.savestate.is-saving { color: var(--color-text-soft); }
.savestate.is-saving .icon { color: var(--color-text-soft); }

/* ============ АВТО-РОСТ TEXTAREA ============ */
textarea.control { overflow: hidden; }

/* ============ ПУЛЬС ПРИ ПЕРЕХОДЕ К ПОЛЮ ============ */
@keyframes fieldpulse {
  0%   { box-shadow: 0 0 0 0 rgba(194, 98, 14, .35); }
  35%  { box-shadow: 0 0 0 5px var(--color-primary-soft); }
  100% { box-shadow: 0 0 0 0 rgba(194, 98, 14, 0); }
}
.field.is-pulse { animation: fieldpulse 1.1s ease; border-color: var(--color-primary); }

/* ============ РЕДАКТИРУЕМЫЙ ПОВТОРЯЕМЫЙ ПУНКТ ============ */
.repeat__text { cursor: text; }
.repeat__edit { opacity: 0; border: 0; background: transparent; color: var(--color-text-soft); cursor: pointer; padding: var(--space-1); border-radius: 8px; display: grid; place-items: center; transition: opacity .15s, color .15s, background .15s; }
.repeat__item:hover .repeat__edit { opacity: 1; }
.repeat__edit:hover { color: var(--color-primary); background: var(--color-primary-soft); }
.repeat__edit .icon { width: 15px; height: 15px; }

/* ============ ПОДСВЕТКА ОПЦИИ ДРОПДАУНА (клавиатура) ============ */
.dropdown__opt.is-hl { background: var(--color-surface-muted); }

/* ============ АДАПТАЦИЯ ============ */
@media (max-width: 1440px) {
  :root { --sidebar-width: 256px; --right-panel-width: 312px; }
  .appheader__meta { gap: var(--space-6); }
  .main { padding: var(--space-6); }
  .pagehead { margin: calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) var(--space-6); padding: var(--space-4) var(--space-6); }
}
@media (max-width: 1200px) {
  .layout { grid-template-columns: var(--sidebar-width) minmax(0, 1fr); }
  .status { display: none; }
  .appheader__meta { display: none; }
}

/* ============================================================
   ОПЕРАТОР · РАБОЧАЯ ПАНЕЛЬ (screens/admin_work_panel.html)
   Хаб жизненного цикла конкурса с метриками. Та же дизайн-система,
   собственный двухзонный каркас (меню модулей + рабочая область).
   Исправляем критику аудита 3.10: плитки получают счётчики, дубли
   «(до 2021 г.)» убраны, добавлены сводка и блок «Требуют внимания».
   ============================================================ */

/* ---- Профиль в топбаре (роль + имя + аватар) ---- */
.topbar__svc { margin-left: auto; }
.topbar__user {
  display: flex; align-items: center; gap: var(--space-3);
  padding-left: var(--space-3); background: none; border: 0; cursor: pointer;
  font: inherit; color: var(--color-text); border-radius: var(--radius-ctrl);
}
.topbar__user:hover { background: var(--color-surface-muted); }
.topbar__userinfo { display: flex; flex-direction: column; line-height: 1.25; text-align: right; }
.topbar__userrole { font-size: var(--fs-xs); color: var(--color-text-soft); }
.topbar__username { font-size: var(--fs-sm); font-weight: 600; }
.topbar__avatar {
  width: 38px; height: 38px; border-radius: 50%; flex: none;
  background: linear-gradient(135deg, #7b8694, #4b525c); color: #fff;
  display: grid; place-items: center; font-weight: 700; font-size: var(--fs-sm);
}
/* Колокольчик уведомлений с точкой */
.topbar__bell { position: relative; }
.topbar__bell .dot {
  position: absolute; top: 7px; right: 8px; width: 8px; height: 8px;
  border-radius: 50%; background: var(--color-danger); border: 2px solid var(--color-surface);
}
/* Контекст-конкурс как переключатель (сброс нативной кнопки) */
.topbar__contest--switch {
  cursor: pointer; font: inherit; color: inherit; text-align: left;
  background: transparent; border: 0; border-left: 1px solid var(--color-border);
  border-radius: 0; padding: 8px var(--space-4) 8px var(--space-5);
  transition: background .15s;
}
.topbar__contest--switch:hover { background: var(--color-surface-muted); }
.topbar__contest--switch:focus-visible { outline: 2px solid var(--color-primary); outline-offset: -2px; }
.topbar__contest--switch .topbar__contestname { display: inline-flex; align-items: center; gap: var(--space-2); }
.topbar__contest--switch .icon { width: 14px; height: 14px; color: var(--color-text-soft); }

/* ---- Двухзонный каркас рабочей панели ---- */
.workspace {
  display: grid;
  grid-template-columns: var(--sidebar-width) minmax(0, 1fr);
  align-items: start;
}

/* ---- Боковое меню модулей оператора ---- */
.sidemenu {
  position: sticky; top: var(--topbar-height); align-self: start;
  height: calc(100vh - var(--topbar-height)); overflow-y: auto;
  background: var(--color-surface); border-right: 1px solid var(--color-border);
  padding: var(--space-5) var(--space-3);
  display: flex; flex-direction: column; gap: var(--space-1);
}
.sidemenu__group {
  font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .05em;
  color: var(--color-text-soft); font-weight: 600;
  padding: var(--space-3) var(--space-3) var(--space-2);
}
.sidemenu__group:first-child { padding-top: 0; }
.sidelink {
  display: flex; align-items: center; gap: var(--space-3);
  padding: 10px var(--space-3); border-radius: var(--radius-md);
  text-decoration: none; color: var(--color-text);
  font-size: var(--fs-sm); font-weight: 500; position: relative;
  transition: background .15s;
}
.sidelink:hover { background: var(--color-surface-muted); }
.sidelink:focus-visible { outline: 2px solid var(--color-primary); outline-offset: -3px; }
.sidelink .icon { width: 18px; height: 18px; color: var(--color-text-soft); flex: none; }
.sidelink span:first-of-type { flex: 1; min-width: 0; }
.sidelink--active { background: var(--color-primary-tint); font-weight: 600; }
.sidelink--active .icon { color: var(--color-primary); }
.sidelink--active::before {
  content: ""; position: absolute; left: 0; top: 9px; bottom: 9px;
  width: 3px; border-radius: 0 3px 3px 0; background: var(--color-primary);
}
.sidelink__count {
  font-size: var(--fs-xs); font-weight: 700; padding: 1px 7px; border-radius: 999px;
  background: var(--color-surface-muted); color: var(--color-text-muted);
  border: 1px solid var(--color-border); flex: none;
}
.sidelink__count--accent { background: var(--color-primary-soft); color: var(--color-primary-hover); border-color: var(--color-primary-line); }
.sidemenu__sep { height: 1px; background: var(--color-border); margin: var(--space-3) var(--space-3); }

/* ---- Рабочая область ---- */
.workmain { padding: var(--space-7) var(--space-8); min-width: 0; }
.workmain__head { margin-bottom: var(--space-5); }
.workmain__head h1 { margin: 0; font-size: var(--fs-h2); letter-spacing: -.015em; }
.workmain__head p { margin: 6px 0 0; font-size: var(--fs-sm); color: var(--color-text-muted); }

/* Контекст-полоса: фаза / сроки / дедлайн */
.contextbar { display: flex; align-items: center; gap: var(--space-3); flex-wrap: wrap; margin-bottom: var(--space-6); }
.contextbar__item { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--fs-sm); color: var(--color-text-muted); }
.contextbar__item .icon { width: 16px; height: 16px; color: var(--color-text-soft); }
.contextbar__sep { width: 1px; height: 16px; background: var(--color-border-strong); }
.contextbar__deadline { color: var(--color-warning); font-weight: 600; }
.contextbar__deadline .icon { color: var(--color-warning); }

/* ---- Блок-заголовок секции ---- */
.sectioncap {
  display: flex; align-items: center; gap: var(--space-3);
  font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .05em;
  color: var(--color-text-soft); font-weight: 700; margin: 0 0 var(--space-3);
}
.sectioncap::after { content: ""; flex: 1; height: 1px; background: var(--color-border); }

/* ---- Сводка: метрики ---- */
.metricstrip { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: var(--space-4); margin-bottom: var(--space-7); }
.metric {
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: var(--radius-md); padding: var(--space-4) var(--space-5);
  box-shadow: var(--shadow-card); display: flex; flex-direction: column; gap: var(--space-1);
  text-decoration: none; color: inherit; transition: border-color .15s, box-shadow .15s;
}
a.metric:hover { border-color: var(--color-border-strong); box-shadow: var(--shadow-sm); }
a.metric:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.metric__num { font-size: 28px; font-weight: 700; letter-spacing: -.02em; line-height: 1.1; font-variant-numeric: tabular-nums; }
.metric__label { font-size: var(--fs-xs); color: var(--color-text-muted); }
.metric__delta { display: inline-flex; align-items: center; gap: 4px; font-size: var(--fs-xs); color: var(--color-text-soft); margin-top: 2px; }
.metric__delta .icon { width: 13px; height: 13px; }
.metric--warning .metric__num { color: var(--color-warning); }
.metric--danger  .metric__num { color: var(--color-danger); }
.metric--success .metric__num { color: var(--color-success); }
.metric--info    .metric__num { color: var(--color-info); }
.metric--accent  .metric__num { color: var(--color-primary); }
.metric--accent  { background: var(--color-primary-tint); border-color: var(--color-primary-line); }
/* Перенос строки, когда метрик больше 5 (мультитенант/суперадмин-панель) */
.metricstrip--wrap { grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); }

/* ---- «Требуют вашего внимания» ---- */
.attention { margin-bottom: var(--space-7); }
.attention__head { display: flex; align-items: center; gap: var(--space-2); margin: 0 0 var(--space-3); font-size: var(--fs-h3); }
.attention__head .icon { width: 18px; height: 18px; color: var(--color-warning); }
.attention__head span { margin-left: auto; font-size: var(--fs-xs); font-weight: 600; color: var(--color-text-soft); }
.attention__list { list-style: none; margin: 0; padding: 0; }
.attention__item { display: flex; align-items: center; gap: var(--space-4); padding: var(--space-4) 0; border-top: 1px solid var(--color-border); }
.attention__item:first-child { border-top: 0; padding-top: 0; }
.attention__ic { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; flex: none; border: 1px solid transparent; }
.attention__ic .icon { width: 16px; height: 16px; }
.attention__ic--danger  { background: var(--color-danger-soft);  color: var(--color-danger);  border-color: var(--color-danger-line); }
.attention__ic--warning { background: var(--color-warning-soft); color: var(--color-warning); border-color: var(--color-warning-line); }
.attention__ic--info    { background: var(--color-info-soft);    color: var(--color-info);    border-color: var(--color-info-line); }
.attention__text { flex: 1; min-width: 0; font-size: var(--fs-sm); }
.attention__text b { font-weight: 700; }
.attention__meta { display: block; font-size: var(--fs-xs); color: var(--color-text-soft); margin-top: 2px; }
.attention__go { flex: none; }

/* ---- Группы модулей и плитки ---- */
.modules { display: flex; flex-direction: column; gap: var(--space-7); }
.modgroup__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-4); }

.tile {
  display: flex; gap: var(--space-4); align-items: flex-start;
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: var(--radius-lg); padding: var(--space-5);
  box-shadow: var(--shadow-card); text-decoration: none; color: var(--color-text);
  transition: border-color .15s, box-shadow .15s, transform .12s;
}
.tile:hover { border-color: var(--color-border-strong); box-shadow: var(--shadow-md); transform: translateY(-1px); }
.tile:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.tile__icon {
  width: 42px; height: 42px; border-radius: var(--radius-md); flex: none;
  background: var(--color-surface-muted); color: var(--color-text-muted);
  border: 1px solid var(--color-border); display: grid; place-items: center;
}
.tile__icon .icon { width: 21px; height: 21px; }
.tile__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.tile__name { font-size: var(--fs-sm); font-weight: 600; letter-spacing: -.005em; }
.tile__metric { display: flex; align-items: baseline; gap: var(--space-2); }
.tile__num { font-size: var(--fs-h2); font-weight: 700; line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.tile__unit { font-size: var(--fs-xs); color: var(--color-text-soft); }
.tile__sub { font-size: var(--fs-xs); color: var(--color-text-muted); }
.tile__pill { margin-top: 2px; }
.tile__arrow { color: var(--color-text-soft); align-self: center; flex: none; transition: transform .15s, color .15s; }
.tile:hover .tile__arrow { color: var(--color-primary); transform: translateX(2px); }

/* Варианты плиток по приоритету */
.tile--attention { border-color: var(--color-warning-line); }
.tile--attention .tile__icon { background: var(--color-warning-soft); color: var(--color-warning); border-color: var(--color-warning-line); }
.tile--attention .tile__num { color: var(--color-warning); }
.tile--alert { border-color: var(--color-danger-line); }
.tile--alert .tile__icon { background: var(--color-danger-soft); color: var(--color-danger); border-color: var(--color-danger-line); }
.tile--alert .tile__num { color: var(--color-danger); }
.tile--accent .tile__icon { background: var(--color-primary-soft); color: var(--color-primary); border-color: var(--color-primary-line); }

/* Пустая плитка (0 / этап не начат) */
.tile--empty .tile__num, .tile--empty .tile__name { color: var(--color-text-muted); }
.tile--empty .tile__icon { color: var(--color-text-soft); }

/* Заблокированная плитка (этап не наступил) */
.tile--locked { background: var(--color-surface-muted); box-shadow: none; cursor: not-allowed; }
.tile--locked:hover { transform: none; box-shadow: none; border-color: var(--color-border); }
.tile--locked .tile__icon { color: var(--color-text-soft); background: var(--color-surface); }
.tile--locked .tile__name { color: var(--color-text-muted); }
.tile--locked .tile__arrow { display: none; }
.tile--locked .tile__lock { display: inline-flex; align-items: center; gap: 6px; font-size: var(--fs-xs); color: var(--color-text-soft); }
.tile--locked .tile__lock .icon { width: 14px; height: 14px; }

/* ---- Адаптация рабочей панели ---- */
@media (max-width: 1440px) {
  .metricstrip { gap: var(--space-3); }
  .modgroup__grid { gap: var(--space-3); }
  .workmain { padding: var(--space-6); }
}
@media (max-width: 1200px) {
  .workspace { grid-template-columns: minmax(0, 1fr); }
  .sidemenu { display: none; }
  .metricstrip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .modgroup__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ============================================================
   РАБОЧАЯ ПАНЕЛЬ v2 — авторское видение
   Добавляет: ленту жизненного цикла (pipeline), 3-зонный каркас
   с правой контекст-колонкой (дедлайн, прогресс, лента событий).
   Всё на тех же токенах; существующие экраны не затрагиваются.
   ============================================================ */

/* 3-зонный каркас: меню | рабочая область | контекст-колонка */
.workspace--rail { grid-template-columns: var(--sidebar-width) minmax(0, 1fr) var(--right-panel-width); }

/* ---- Лента жизненного цикла конкурса ---- */
.pipeline {
  display: flex; align-items: flex-start;
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: var(--radius-md); box-shadow: var(--shadow-card);
  padding: var(--space-5) var(--space-4); margin-bottom: var(--space-6); overflow-x: auto;
}
.pstep { flex: 1; min-width: 92px; position: relative; display: flex; flex-direction: column; align-items: center; gap: 7px; text-align: center; padding: 0 var(--space-2); }
.pstep::before {
  content: ""; position: absolute; top: 15px; left: -50%; width: 100%; height: 2px;
  background: var(--color-border); z-index: 0;
}
.pstep:first-child::before { display: none; }
.pstep__dot {
  width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; z-index: 1;
  background: var(--color-surface-muted); color: var(--color-text-soft); border: 1px solid var(--color-border);
}
.pstep__dot .icon { width: 15px; height: 15px; }
.pstep__label { font-size: var(--fs-xs); font-weight: 600; color: var(--color-text-soft); letter-spacing: -.005em; }
.pstep__meta { font-size: 11px; color: var(--color-text-soft); }
.pstep.is-done .pstep__dot { background: var(--color-success-soft); color: var(--color-success); border-color: var(--color-success-line); }
.pstep.is-done .pstep__label { color: var(--color-text); }
.pstep.is-done::before { background: var(--color-success-line); }
.pstep.is-current .pstep__dot { background: var(--color-primary); color: #fff; border-color: var(--color-primary); box-shadow: 0 0 0 4px var(--color-primary-soft); }
.pstep.is-current .pstep__label { color: var(--color-primary-hover); }
.pstep.is-current::before { background: var(--color-success-line); }
.pstep.is-current .pstep__meta { color: var(--color-primary-hover); font-weight: 600; }

/* ---- Правая контекст-колонка ---- */
.workrail {
  position: sticky; top: var(--topbar-height); align-self: start;
  height: calc(100vh - var(--topbar-height)); overflow-y: auto;
  border-left: 1px solid var(--color-border); padding: var(--space-6) var(--space-5);
  display: flex; flex-direction: column; gap: var(--space-4);
}
.railprogress__row { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: var(--space-2); }
.railprogress__big { font-size: var(--fs-h2); font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.railprogress__of { font-size: var(--fs-sm); color: var(--color-text-muted); }
.railprogress__cap { font-size: var(--fs-xs); color: var(--color-text-soft); margin-top: var(--space-2); }

/* ---- Лента событий ---- */
.feed { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.feed__item { display: flex; gap: var(--space-3); padding: var(--space-3) 0; border-top: 1px solid var(--color-border); }
.feed__item:first-child { border-top: 0; padding-top: 0; }
.feed__time { flex: none; width: 38px; font-size: var(--fs-xs); color: var(--color-text-soft); font-variant-numeric: tabular-nums; padding-top: 1px; }
.feed__body { flex: 1; min-width: 0; font-size: var(--fs-sm); color: var(--color-text-muted); }
.feed__body b { color: var(--color-text); font-weight: 600; }
.feed__tag { display: inline-flex; align-items: center; gap: 5px; }
.feed__tag::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--color-text-soft); flex: none; }
.feed__tag--success::before { background: var(--color-success); }
.feed__tag--info::before    { background: var(--color-info); }
.feed__tag--warning::before { background: var(--color-warning); }

/* Адаптация v2: контекст-колонку прячем раньше, чем меню */
@media (max-width: 1380px) {
  .workspace--rail { grid-template-columns: var(--sidebar-width) minmax(0, 1fr); }
  .workrail { display: none; }
}

/* ============================================================
   ОБЩИЕ КОМПОНЕНТЫ: ПУБЛИЧНЫЙ САЙТ + КАБИНЕТ ЗАЯВИТЕЛЯ
   Используются экранами screens/public_*.html и screens/applicant_*.html.
   Горизонтальная site-навигация (.sitenav/.sitelink), центрированный
   контейнер, таблица заявок, профиль (deflist), простые формы.
   ============================================================ */

/* ---- Горизонтальная навигация сайта ---- */
.sitenav {
  position: sticky; top: 0; z-index: 50;
  display: flex; align-items: center; gap: var(--space-5);
  height: var(--topbar-height); padding: 0 var(--space-8);
  background: rgba(255, 255, 255, .92); backdrop-filter: saturate(1.1) blur(8px);
  border-bottom: 1px solid var(--color-border);
}
.sitenav__brand { display: flex; align-items: center; gap: var(--space-3); text-decoration: none; color: var(--color-text); }
.sitenav__links { display: flex; align-items: center; gap: 2px; }
.sitelink {
  padding: 8px var(--space-3); border-radius: var(--radius-ctrl);
  font-size: var(--fs-sm); font-weight: 500; color: var(--color-text-muted);
  text-decoration: none; white-space: nowrap; transition: background .15s, color .15s;
}
.sitelink:hover { background: var(--color-surface-muted); color: var(--color-text); }
.sitelink--active { color: var(--color-primary-hover); font-weight: 600; background: var(--color-primary-soft); }
.sitenav__account { margin-left: auto; display: flex; align-items: center; gap: var(--space-3); }
.sitenav__user { display: flex; flex-direction: column; line-height: 1.2; text-align: right; }
.sitenav__user b { font-size: var(--fs-sm); font-weight: 600; }
.sitenav__user span { font-size: var(--fs-xs); color: var(--color-text-soft); }
.sitenav__avatar {
  width: 36px; height: 36px; border-radius: 50%; flex: none;
  background: var(--color-primary-soft); color: var(--color-primary-hover);
  display: grid; place-items: center; font-weight: 700; font-size: var(--fs-sm);
  border: 1px solid var(--color-primary-line);
}

/* ---- Центрированный контейнер страницы ---- */
.sitewrap { max-width: 1180px; margin: 0 auto; padding: var(--space-8); }
.sitehead { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-6); }
.sitehead h1 { margin: 0; font-size: var(--fs-h2); letter-spacing: -.015em; }
.sitehead p { margin: 4px 0 0; font-size: var(--fs-sm); color: var(--color-text-muted); }
.siteback { margin-bottom: var(--space-5); }

/* ---- Кабинет: 2 колонки (под-навигация + контент) ---- */
.cabinet { display: grid; grid-template-columns: 248px minmax(0, 1fr); gap: var(--space-6); align-items: start; }
.cabinet__nav { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); box-shadow: var(--shadow-card); padding: var(--space-3); }
.cabinet__navhead { font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .05em; color: var(--color-text-soft); font-weight: 700; padding: var(--space-2) var(--space-3) var(--space-3); }

/* ---- Карточка контента кабинета ---- */
.panel { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); box-shadow: var(--shadow-card); overflow: hidden; }
.panel__head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); padding: var(--space-4) var(--space-5); border-bottom: 1px solid var(--color-border); background: var(--color-surface-muted); }
.panel__head h1, .panel__head h2 { margin: 0; font-size: var(--fs-h3); font-weight: 600; }
.panel__body { padding: var(--space-5); }

/* ---- Список полей профиля ---- */
.deflist { display: flex; flex-direction: column; }
.deflist__row { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: var(--space-4); padding: var(--space-3) 0; border-top: 1px solid var(--color-border); }
.deflist__row:first-child { border-top: 0; }
.deflist__label { font-size: var(--fs-sm); font-weight: 600; color: var(--color-text); }
.deflist__value { font-size: var(--fs-sm); color: var(--color-text); display: inline-flex; align-items: center; gap: var(--space-2); }
.deflist__value .icon { width: 15px; height: 15px; color: var(--color-text-soft); }
.deflist__value--empty { color: var(--color-text-soft); font-style: italic; }

/* ---- Таблица данных (заявки, реестры) ---- */
.dtable { width: 100%; border-collapse: collapse; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); overflow: hidden; box-shadow: var(--shadow-card); }
.dtable thead th {
  text-align: left; font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .04em;
  color: var(--color-text-soft); font-weight: 700; padding: var(--space-3) var(--space-4);
  background: var(--color-surface-muted); border-bottom: 1px solid var(--color-border);
}
.dtable tbody td { padding: var(--space-4); font-size: var(--fs-sm); border-top: 1px solid var(--color-border); vertical-align: middle; }
.dtable tbody tr:first-child td { border-top: 0; }
.dtable tbody tr:hover { background: var(--color-surface-muted); }
.dtable__num { font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
.dtable__muted { color: var(--color-text-soft); }
.dtable__actions { text-align: right; white-space: nowrap; }

/* ---- Простая форма (создание заявки) ---- */
.formgroup { margin-bottom: var(--space-5); }
.formgroup:last-child { margin-bottom: 0; }
.formlabel { display: block; font-size: var(--fs-sm); font-weight: 600; margin-bottom: var(--space-2); }
.formhint { display: block; font-size: var(--fs-xs); color: var(--color-text-soft); margin-top: 6px; }
select.control { appearance: none; -webkit-appearance: none; background-repeat: no-repeat; background-position: right var(--space-3) center; padding-right: var(--space-8);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239c9488' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); }
.formactions { display: flex; gap: var(--space-3); margin-top: var(--space-6); }
.sitehead .formactions { margin-top: 0; flex-wrap: wrap; justify-content: flex-end; }
.formcard { max-width: 680px; }

/* ---- Адаптация ---- */
@media (max-width: 980px) {
  .cabinet { grid-template-columns: minmax(0, 1fr); }
  .sitenav__links { display: none; }
  .sitewrap { padding: var(--space-5); }
}

/* ============================================================
   АДМИН: КОНКУРСЫ / РЕЕСТР ЗАЯВОК / КОНСТРУКТОР ШАБЛОНА
   Малые кнопки, danger-кнопка, switch-тумблер, табличные
   фильтры/пагинация, конструктор полей формы.
   ============================================================ */

/* ---- Утилита скрытия (вместо Bootstrap .d-none для JS-тоглов) ---- */
.is-hidden { display: none !important; }

/* ---- Валидация форм (asp-validation-for / summary) + формовая сетка ---- */
.formerror, .field-validation-error { display: block; font-size: var(--fs-xs); color: var(--color-danger); margin-top: 4px; }
.input-validation-error { border-color: var(--color-danger) !important; }
.validation-summary-errors { color: var(--color-danger); font-size: var(--fs-sm); background: var(--color-danger-soft); border: 1px solid var(--color-danger-line); border-radius: var(--radius-md); padding: var(--space-3) var(--space-4); margin-bottom: var(--space-4); }
.validation-summary-errors ul { margin: 0; padding-left: 18px; }
.formrow { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-4); }
@media (max-width: 720px) { .formrow { grid-template-columns: 1fr; } }

/* ---- Горизонтальная панель фильтров (реестры admin) ---- */
.filterbar { display: flex; flex-wrap: wrap; gap: var(--space-3); align-items: flex-end; margin-bottom: var(--space-5); padding: var(--space-4); background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); box-shadow: var(--shadow-card); }
.filterbar__field { display: flex; flex-direction: column; gap: 6px; min-width: 150px; flex: 1; }
.filterbar__field--grow { flex: 2.5; }
.filterbar__label { font-size: var(--fs-xs); font-weight: 600; color: var(--color-text-soft); text-transform: uppercase; letter-spacing: .04em; }
.filterbar__actions { display: flex; gap: var(--space-2); align-items: flex-end; }

/* ---- Кнопки: малая + danger (для табличных действий) ---- */
.btn--sm { padding: 5px var(--space-3); font-size: var(--fs-xs); border-radius: 8px; gap: 5px; }
.btn--sm .icon { width: 14px; height: 14px; }
.btn--danger { background: var(--color-surface); color: var(--color-danger); border-color: var(--color-danger-line); }
.btn--danger:hover { background: var(--color-danger-soft); border-color: var(--color-danger); }

/* ---- Малый контрол (фильтры/конструктор) ---- */
.control--sm { padding: 6px var(--space-2); font-size: var(--fs-sm); border-radius: 8px; }

/* ---- Switch-тумблер ---- */
.switch { position: relative; display: inline-flex; align-items: center; cursor: pointer; }
.switch input { position: absolute; opacity: 0; width: 0; height: 0; }
.switch__track { position: relative; width: 36px; height: 20px; border-radius: 999px; background: var(--color-border-strong); transition: background .15s; flex: none; }
.switch__track::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: var(--shadow-sm); transition: transform .15s; }
.switch input:checked + .switch__track { background: var(--color-primary); }
.switch input:checked + .switch__track::after { transform: translateX(16px); }
.switch input:focus-visible + .switch__track { outline: 2px solid var(--color-primary); outline-offset: 2px; }

/* ---- Обёртка таблицы с футером ---- */
.tablewrap { border: 1px solid var(--color-border); border-radius: var(--radius-md); overflow: hidden; box-shadow: var(--shadow-card); background: var(--color-surface); }
.tablewrap .dtable { border: 0; border-radius: 0; box-shadow: none; }

/* Сортируемые заголовки + строка фильтров */
.dtable th .sort { color: var(--color-text-soft); margin-left: 4px; }
.dtable__filters th { padding-top: 0; padding-bottom: var(--space-3); background: var(--color-surface-muted); border-bottom: 1px solid var(--color-border); }
.dtable__filters .control { width: 100%; }
.dtable__rowactions { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; }

/* Футер таблицы / пагинация */
.tablefoot { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); padding: var(--space-3) var(--space-4); border-top: 1px solid var(--color-border); background: var(--color-surface); flex-wrap: wrap; }
.pagesize { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-sm); color: var(--color-text-muted); }
.pagesize select { width: auto; }
.pager { display: flex; align-items: center; gap: 6px; }
.pager .btn:disabled { color: var(--color-text-soft); cursor: not-allowed; }
.pager__cur { min-width: 30px; height: 30px; display: grid; place-items: center; border-radius: 8px; background: var(--color-primary); color: #fff; font-size: var(--fs-sm); font-weight: 600; }

/* ---- Конструктор шаблона ---- */
.builder { display: grid; grid-template-columns: 300px minmax(0, 1fr); gap: var(--space-6); align-items: start; }
.builder__aside { display: flex; flex-direction: column; gap: var(--space-4); }
.addtpl { display: flex; flex-direction: column; gap: var(--space-3); }

/* Строка-поле конструктора */
.tfield { display: flex; align-items: center; gap: var(--space-4); padding: var(--space-3) var(--space-4); border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface); margin-bottom: var(--space-2); transition: border-color .15s, box-shadow .15s; }
.tfield:hover { border-color: var(--color-border-strong); box-shadow: var(--shadow-sm); }
.tfield.is-off { opacity: .6; }
.tfield__handle { color: var(--color-text-soft); cursor: grab; flex: none; display: grid; place-items: center; }
.tfield__main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.tfield__name { font-size: var(--fs-sm); font-weight: 600; display: flex; align-items: center; gap: var(--space-2); }
.tfield__meta { font-size: var(--fs-xs); color: var(--color-text-soft); display: flex; gap: var(--space-3); flex-wrap: wrap; }
.tfield__controls { display: flex; align-items: flex-end; gap: var(--space-5); flex: none; }
.tfield__ctl { display: flex; flex-direction: column; align-items: center; gap: 5px; }
.tfield__ctl > span { font-size: 11px; color: var(--color-text-soft); }
.tfield__order { width: 60px; text-align: center; }

@media (max-width: 1100px) {
  .builder { grid-template-columns: minmax(0, 1fr); }
  .tfield__controls { gap: var(--space-3); }
}

/* ============================================================
   ВИТРИНА (HUB) + СКВОЗНОЙ НАВИГАТОР ДЕМО
   ============================================================ */
.hub { max-width: 1180px; margin: 0 auto; padding: var(--space-8) var(--space-6) var(--space-10); }
.hub__hero { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-xl); padding: var(--space-8); box-shadow: var(--shadow-card); }
.hub__hero h1 { margin: 0 0 var(--space-2); font-size: var(--fs-display); letter-spacing: -.02em; }
.hub__hero p { margin: 0; color: var(--color-text-muted); max-width: 720px; }
.hub__hint { display: inline-flex; align-items: center; gap: var(--space-2); margin-top: var(--space-4); font-size: var(--fs-sm); color: var(--color-primary-hover); background: var(--color-primary-soft); border-radius: 999px; padding: 6px 14px; }
.hub__group { margin-top: var(--space-8); }
.hub__grouptitle { font-size: var(--fs-sm); text-transform: uppercase; letter-spacing: .05em; color: var(--color-text-soft); font-weight: 600; margin-bottom: var(--space-3); }
.hub__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(256px, 1fr)); gap: var(--space-4); }
.tile { display: flex; flex-direction: column; gap: 6px; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-5); box-shadow: var(--shadow-card); text-decoration: none; color: var(--color-text); transition: border-color .15s, box-shadow .15s, transform .15s; }
.tile:hover { border-color: var(--color-primary); box-shadow: var(--shadow-md); transform: translateY(-2px); }
.tile__role { font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .04em; color: var(--color-text-soft); font-weight: 600; }
.tile__title { font-size: var(--fs-h3); font-weight: 600; }
.tile__desc { font-size: var(--fs-sm); color: var(--color-text-muted); line-height: 1.5; }
.tile__go { margin-top: auto; font-size: var(--fs-sm); color: var(--color-primary); font-weight: 600; }
.tile--soon { opacity: .55; pointer-events: none; }
.tile--soon .tile__go { color: var(--color-text-soft); }

/* Сквозной навигатор */
.demonav { position: fixed; right: 20px; bottom: 20px; z-index: 1000; }
.demonav__btn { font: inherit; font-size: var(--fs-sm); font-weight: 600; color: #fff; background: var(--color-text); border: 0; border-radius: 999px; padding: 10px 18px; cursor: pointer; box-shadow: var(--shadow-md); }
.demonav__btn:hover { background: #000; }
.demonav__panel { position: absolute; right: 0; bottom: 54px; width: 288px; max-height: 72vh; overflow: auto; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); box-shadow: var(--shadow-md); padding: var(--space-2); display: none; }
.demonav.is-open .demonav__panel { display: block; }
.demonav__head { display: flex; align-items: center; justify-content: space-between; padding: var(--space-2) var(--space-2) var(--space-3); }
.demonav__close { border: 0; background: transparent; font-size: 20px; line-height: 1; cursor: pointer; color: var(--color-text-soft); }
.demonav__home { display: block; padding: var(--space-2) var(--space-3); margin-bottom: var(--space-2); border-radius: 8px; background: var(--color-primary-soft); color: var(--color-primary-hover); font-weight: 600; font-size: var(--fs-sm); text-decoration: none; }
.demonav__group { font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .04em; color: var(--color-text-soft); font-weight: 600; padding: var(--space-3) var(--space-3) var(--space-1); }
.demonav__link { display: block; padding: 7px var(--space-3); border-radius: 8px; color: var(--color-text); text-decoration: none; font-size: var(--fs-sm); }
.demonav__link:hover { background: var(--color-surface-muted); }
.demonav__link.is-current { background: var(--color-primary-tint); color: var(--color-primary-hover); font-weight: 600; }
/* ============================================================
   АДАПТАЦИЯ ПОД РЕАЛЬНУЮ ФОРМУ (примерка дизайна, design/about-tryon)
   Дополнения к прототипной дизайн-системе для боевых контролов:
   нативный <select>, сообщения валидации asp-*, read-only, Alpine-списки.
   ============================================================ */

/* Нативный select под вид .control */
select.control {
  appearance: none; -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%236c7280' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right var(--space-3) center; background-size: 18px;
  padding-right: calc(var(--space-3) * 2 + 18px); cursor: pointer;
}

/* Сообщения валидации ASP.NET (asp-validation-for / summary) */
.text-danger { color: var(--color-danger); }
.small { font-size: var(--fs-xs); }
.field-validation-error,
span.text-danger { display: inline-flex; align-items: center; gap: var(--space-1); font-size: var(--fs-xs); color: var(--color-danger); margin-top: var(--space-2); }
.validation-summary-errors ul { margin: 0; padding-left: var(--space-5); }

/* Алерты в дизайне (status/error сообщения формы) */
.alert { border-radius: var(--radius-md); padding: var(--space-3) var(--space-4); font-size: var(--fs-sm); margin-bottom: var(--space-4); border: 1px solid transparent; }
.alert-success { background: var(--color-success-soft); color: var(--color-success); border-color: var(--color-success-line); }
.alert-danger  { background: var(--color-danger-soft);  color: var(--color-danger);  border-color: var(--color-danger-line); }
.alert-warning { background: var(--color-warning-soft); color: var(--color-warning); border-color: var(--color-warning-line); }

/* Режим «только просмотр»: задизейбленный fieldset */
fieldset:disabled { opacity: .85; }
fieldset:disabled .control, fieldset:disabled .btn { cursor: not-allowed; }

/* Назад к списку заявок */
.appback { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--fs-sm); color: var(--color-text-muted); text-decoration: none; }
.appback:hover { color: var(--color-primary); }
.appback .icon { width: 16px; height: 16px; transform: rotate(180deg); }

/* Повторяемые сущности с боевыми инпутами (Alpine x-for) */
.repeat__item--form { flex-direction: column; align-items: stretch; gap: var(--space-2); }
.repeat__grid { display: flex; gap: var(--space-2); align-items: flex-start; }
.repeat__grid .control { flex: 1; }
.repeat__grid .repeat__del { margin-top: 6px; }
.chips--check { gap: var(--space-2); }
.chip input { position: absolute; opacity: 0; pointer-events: none; }
.chip:has(input:checked) { background: var(--color-primary-soft); border-color: #eccfa9; color: var(--color-primary-hover); font-weight: 600; }
.chip { user-select: none; }

/* Кнопка подачи в правой панели/низ формы */
.formfoot { display: flex; align-items: center; gap: var(--space-3); margin-top: var(--space-5); }
.formfoot .text-muted { color: var(--color-text-soft); font-size: var(--fs-xs); }
.text-muted { color: var(--color-text-muted); }

/* ============================================================
   ГРУППЫ ПОЛЕЙ / ЧЕКБОКС / ФАЙЛОВОЕ ПОЛЕ (M-UI.1b — разделы заявки)
   ============================================================ */

/* Заголовок-разделитель группы полей внутри формы (ФИО, Паспорт, Образование…) */
.formgroup__title { margin: var(--space-7) 0 var(--space-4); font-size: var(--fs-h3); font-weight: 700; color: var(--color-text); letter-spacing: -.01em; }
.formgroup__title:first-of-type { margin-top: 0; }

/* Инлайн-чекбокс (нет отчества / есть учёная степень / сейчас) */
.field__check { display: inline-flex; align-items: center; gap: var(--space-2); margin-top: var(--space-2); font-size: var(--fs-sm); color: var(--color-text-muted); cursor: pointer; user-select: none; }
.field__check input { width: 16px; height: 16px; accent-color: var(--color-primary); cursor: pointer; }

/* Подсказка под полем (короткая, без раскрытия) */
.field__hint { font-size: var(--fs-xs); color: var(--color-text-muted); margin-top: var(--space-2); }

/* Файловое поле (_FileField): список загруженных + загрузка */
.filelist { list-style: none; margin: 0 0 var(--space-2); padding: 0; display: flex; flex-direction: column; gap: var(--space-2); }
.filelist__item { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding: var(--space-2) var(--space-3); background: var(--color-surface-muted); border: 1px solid var(--color-border); border-radius: var(--radius-sm); }
.filelist__name { display: inline-flex; align-items: center; gap: var(--space-2); color: var(--color-primary); text-decoration: none; font-size: var(--fs-sm); word-break: break-all; }
.filelist__name:hover { text-decoration: underline; }
.filelist__name .icon { width: 16px; height: 16px; flex: 0 0 auto; }
.filelist__meta { display: inline-flex; align-items: center; gap: var(--space-2); white-space: nowrap; color: var(--color-text-soft); font-size: var(--fs-xs); }
.fileupload { display: flex; gap: var(--space-2); align-items: center; flex-wrap: wrap; }
.fileupload .control { padding: var(--space-2) var(--space-3); flex: 1; min-width: 220px; }
.filenote { padding: var(--space-2) var(--space-3); background: var(--color-surface-muted); border: 1px dashed var(--color-border-strong); border-radius: var(--radius-sm); font-size: var(--fs-sm); color: var(--color-text-muted); }

/* Карточка повторяемой сущности с под-блоками (член команды — M-UI.1c) */
.membercard { border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: var(--space-5); margin-bottom: var(--space-4); background: var(--color-surface); box-shadow: var(--shadow-sm); }
.membercard__head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); margin-bottom: var(--space-4); padding-bottom: var(--space-3); border-bottom: 1px solid var(--color-border); }
.membercard__num { font-weight: 700; font-size: var(--fs-h3); color: var(--color-text); }
.membercard__sub { margin: var(--space-5) 0 var(--space-3); font-weight: 700; font-size: var(--fs-sm); color: var(--color-text-muted); }

/* ============================================================
   БЮДЖЕТ (M-UI.1f): сводка сумм + таблица строк по статьям
   ============================================================ */
.sumstrip { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-4); margin-bottom: var(--space-6); }
.sumcard { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); box-shadow: var(--shadow-card); padding: var(--space-4) var(--space-5); text-align: center; }
.sumcard__cap { font-size: var(--fs-xs); color: var(--color-text-muted); text-transform: uppercase; letter-spacing: .04em; }
.sumcard__val { font-size: var(--fs-h2); font-weight: 700; margin-top: 6px; font-variant-numeric: tabular-nums; color: var(--color-text); }
.sumcard__sub { font-size: var(--fs-xs); color: var(--color-text-soft); margin-top: 2px; }

.budgetgroup { margin-bottom: var(--space-6); }
.budgetgroup__title { font-size: var(--fs-h3); font-weight: 700; margin-bottom: var(--space-3); }
.budgettable-wrap { overflow-x: auto; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface); }
.budgettable { width: 100%; border-collapse: collapse; min-width: 760px; }
.budgettable thead th { text-align: left; font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .03em; color: var(--color-text-soft); font-weight: 700; padding: var(--space-2) var(--space-3); background: var(--color-surface-muted); border-bottom: 1px solid var(--color-border); white-space: nowrap; }
.budgettable td { padding: var(--space-2) var(--space-3); border-top: 1px solid var(--color-border); font-size: var(--fs-sm); vertical-align: middle; }
.budgettable .control { padding: var(--space-2); }
.budgettable .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.budgettable tr.budgettable__total td { font-weight: 700; background: var(--color-surface-muted); }

@media (max-width: 1100px) { .sumstrip { grid-template-columns: 1fr; } }

/* Лента комментариев валидатора/эксперта (read-only) */
.commentnote { padding: var(--space-2) var(--space-3); background: var(--color-surface-muted); border: 1px solid var(--color-border); border-radius: var(--radius-sm); font-size: var(--fs-sm); margin-bottom: var(--space-2); }
.commentnote__meta { font-size: var(--fs-xs); color: var(--color-text-soft); margin-bottom: 2px; }

/* ============================================================
   ПЛОТНОСТЬ ФОРМЫ (compact) — компактная вёрстка разделов заявки.
   Все переопределения отступов в одном месте (легко крутить/откатить).
   Блок идёт последним → побеждает исходные правила по порядку.
   ============================================================ */
.main { padding: var(--space-5) var(--space-6); }
.pagehead { margin: calc(-1 * var(--space-5)) calc(-1 * var(--space-6)) var(--space-4); padding: var(--space-3) var(--space-6); }
.pagehead__title { font-size: var(--fs-h3); }

.field { padding: var(--space-3) var(--space-4); margin-bottom: var(--space-2); border-radius: var(--radius-md); }
.field__label { margin-bottom: var(--space-2); }
.field__num { width: 20px; height: 20px; }
.field__row { gap: var(--space-3); }
.field__foot { margin-top: var(--space-2); }

.control { padding: 7px var(--space-3); }
textarea.control { min-height: 48px; }

/* Заголовок группы полей — компактный uppercase-лейбл вместо крупного h3 */
.formgroup__title { margin: var(--space-4) 0 var(--space-2); font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--color-text-soft); }
.formgroup__title:first-of-type { margin-top: var(--space-1); }

.membercard { padding: var(--space-4); margin-bottom: var(--space-3); }
.membercard__head { margin-bottom: var(--space-3); padding-bottom: var(--space-2); }
.membercard__sub { margin: var(--space-3) 0 var(--space-2); }

.repeat__item { margin-bottom: var(--space-2); }
.sumstrip { margin-bottom: var(--space-4); gap: var(--space-3); }
.sumcard { padding: var(--space-3) var(--space-4); }
.budgetgroup { margin-bottom: var(--space-4); }
.budgetgroup__title { font-size: var(--fs-sm); }

/* ============================================================
   ОБЩИЙ ХРОМ: ПОДВАЛ САЙТА (.lfoot)
   Брендовый подвал витрины/ЛК/login (RCL _BrandChrome). Канон —
   grant-platform-design2/screens/public_landing.html (инлайн-стили
   .lfoot вынесены сюда как общий хром).
   ============================================================ */
.lfoot { background: var(--color-surface); border-top: 1px solid var(--color-border); padding: var(--space-8) 0; }
.lfoot__inner {
  max-width: 1180px; margin: 0 auto; padding: 0 var(--space-8);
  display: grid; grid-template-columns: 2fr 1fr 1fr; gap: var(--space-8);
}
.lfoot__inner--2col { grid-template-columns: 2fr 1fr; }
.lfoot__brand { display: flex; align-items: center; gap: var(--space-3); margin-bottom: var(--space-4); }
.lfoot__desc { font-size: var(--fs-sm); color: var(--color-text-muted); line-height: 1.6; margin: 0; }
.lfoot__contact { display: flex; flex-direction: column; gap: var(--space-2); margin-top: var(--space-4); }
.lfoot__contact a { font-size: var(--fs-sm); color: var(--color-primary); text-decoration: none; }
.lfoot__contact a:hover { text-decoration: underline; }
.lfoot__contact span { font-size: var(--fs-xs); color: var(--color-text-soft); }
.lfoot__col { display: flex; flex-direction: column; gap: var(--space-2); }
.lfoot__col h4 { margin: 0 0 var(--space-2); font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .06em; color: var(--color-text-soft); font-weight: 700; }
.lfoot__col a { font-size: var(--fs-sm); color: var(--color-text-muted); text-decoration: none; }
.lfoot__col a:hover { color: var(--color-text); }
.lfoot__bottom {
  max-width: 1180px; margin: var(--space-7) auto 0; padding: var(--space-5) var(--space-8) 0;
  border-top: 1px solid var(--color-border);
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: var(--space-3);
  font-size: var(--fs-xs); color: var(--color-text-soft);
}
@media (max-width: 980px) {
  .lfoot__inner, .lfoot__inner--2col { grid-template-columns: minmax(0, 1fr); gap: var(--space-6); }
}

/* ============================================================
   ВИТРИНА: РЕЕСТР ПРОЕКТОВ (/projects)
   Канон — grant-platform-design2/screens/public_projects.html
   (page-inline стили вынесены сюда как общий хром витрины).
   ============================================================ */
.regwrap { max-width: 1280px; margin: 0 auto; padding: var(--space-7) var(--space-8) var(--space-10); }
.reghead { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--space-4); margin-bottom: var(--space-6); flex-wrap: wrap; }
.reghead__eyebrow { font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .07em; color: var(--color-primary-hover); font-weight: 700; margin-bottom: var(--space-2); }
.reghead__title { margin: 0; font-size: 26px; font-weight: 800; letter-spacing: -.02em; }
.reghead__count { display: inline-flex; align-items: baseline; gap: var(--space-2); margin-top: var(--space-2); }
.reghead__num { font-size: var(--fs-h2); font-weight: 700; color: var(--color-primary); font-variant-numeric: tabular-nums; }
.reghead__sub { font-size: var(--fs-sm); color: var(--color-text-muted); }

.reglayout { display: grid; grid-template-columns: minmax(0, 1fr) 296px; gap: var(--space-6); align-items: start; }
.reglayout > main { order: 1; min-width: 0; }
.reglayout > .filters { order: 2; }

.filters { position: sticky; top: calc(var(--topbar-height) + var(--space-5)); background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); overflow: hidden; }
.filters__head { display: flex; align-items: center; justify-content: space-between; padding: var(--space-4) var(--space-5); border-bottom: 1px solid var(--color-border); background: var(--color-surface-muted); }
.filters__head h3 { margin: 0; font-size: var(--fs-body); }
.filters__reset { font: inherit; font-size: var(--fs-xs); font-weight: 600; color: var(--color-primary); background: transparent; border: 0; cursor: pointer; padding: 4px 8px; border-radius: 8px; transition: background .15s; text-decoration: none; }
.filters__reset:hover { background: var(--color-primary-soft); }
.filters__body { padding: var(--space-4) var(--space-5); display: flex; flex-direction: column; gap: var(--space-5); }
.fgroup__label { display: block; font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .05em; color: var(--color-text-soft); font-weight: 700; margin-bottom: var(--space-3); }
.fsearch { display: flex; align-items: center; gap: var(--space-2); background: var(--color-surface-muted); border: 1px solid var(--color-border-strong); border-radius: var(--radius-ctrl); padding: 9px var(--space-3); transition: border-color .15s, background .15s, box-shadow .15s; }
.fsearch:focus-within { border-color: var(--color-primary); background: #fff; box-shadow: 0 0 0 3px var(--color-primary-soft); }
.fsearch svg { width: 16px; height: 16px; color: var(--color-text-soft); flex: none; }
.fsearch input { border: 0; background: transparent; outline: none; font: inherit; font-size: var(--fs-sm); color: var(--color-text); width: 100%; }
.fsearch input::placeholder { color: var(--color-text-soft); }
.fselect select.control { width: 100%; }
.filteractions { display: flex; flex-direction: column; gap: var(--space-2); }

.pgrid { display: grid; grid-template-columns: 1fr; gap: var(--space-3); }
.pcard { position: relative; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); overflow: hidden; display: grid; grid-template-columns: 1fr minmax(220px, 268px); transition: border-color .15s, box-shadow .15s, transform .12s; text-decoration: none; color: inherit; }
.pcard:hover { border-color: var(--color-primary-line); box-shadow: var(--shadow-md); transform: translateY(-1px); }
.pcard:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; }
.pcard::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 5px; background: var(--color-border-strong); }
.pcard--accent::before { background: var(--color-primary); }
.pcard__top { padding: var(--space-5) var(--space-5) var(--space-5) var(--space-6); display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.pcard__meta { display: flex; align-items: center; gap: var(--space-3); }
.pcard__dir { font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--color-primary-hover); }
.pcard__num { font-size: var(--fs-xs); color: var(--color-text-soft); font-variant-numeric: tabular-nums; font-weight: 600; }
.pcard__title { font-size: var(--fs-h3); font-weight: 700; line-height: 1.35; margin: 2px 0 0; color: var(--color-text); }
.pcard__desc { font-size: var(--fs-sm); color: var(--color-text-muted); line-height: 1.5; margin: 2px 0 0; max-width: 720px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.pcard__geo { font-size: var(--fs-xs); color: var(--color-text-soft); display: flex; align-items: center; gap: var(--space-1); margin-top: 2px; }
.pcard__geo svg { width: 13px; height: 13px; flex: none; }
.pcard__foot { border-left: 1px solid var(--color-border); padding: var(--space-5); display: flex; flex-direction: column; align-items: flex-end; justify-content: center; gap: var(--space-3); text-align: right; }
.pcard__grant { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
.pcard__grantlabel { font-size: 11px; color: var(--color-text-soft); text-transform: uppercase; letter-spacing: .04em; }
.pcard__grantval { font-size: var(--fs-h2); font-weight: 800; color: var(--color-text); font-variant-numeric: tabular-nums; letter-spacing: -.01em; }
.pcard__result { font-size: var(--fs-xs); font-weight: 700; border-radius: 999px; padding: 3px 10px; background: var(--color-success-soft); color: var(--color-success); border: 1px solid var(--color-success-line); }
.pcard__result--muted { background: var(--color-surface-muted); color: var(--color-text-muted); border-color: var(--color-border); }
.pcard__result--info { background: var(--color-info-soft); color: var(--color-info); border-color: var(--color-info-line); }

.pempty { grid-column: 1 / -1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 80px var(--space-8); text-align: center; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); gap: var(--space-4); }
.pempty__icon { width: 48px; height: 48px; color: var(--color-text-soft); }
.pempty h3 { margin: 0; font-size: var(--fs-h3); }
.pempty p { margin: 0; font-size: var(--fs-sm); color: var(--color-text-muted); max-width: 320px; }

@media (max-width: 960px) {
  .reglayout { grid-template-columns: minmax(0, 1fr); }
  .reglayout > .filters { order: 1; position: static; }
  .reglayout > main { order: 2; }
}
@media (max-width: 720px) {
  .pcard { grid-template-columns: 1fr; }
  .pcard__foot { border-left: none; border-top: 1px solid var(--color-border); align-items: flex-start; text-align: left; }
  .pcard__grant { align-items: flex-start; }
}

/* ============================================================
   ВИТРИНА: КАРТОЧКА ПРОЕКТА (/projects/{id})
   Канон — grant-platform-design2/screens/public_project.html.
   ============================================================ */
.pwrap { max-width: 1280px; margin: 0 auto; padding: var(--space-7) var(--space-8) var(--space-10); }
.pcrumbs { display: flex; align-items: center; gap: var(--space-2); font-size: var(--fs-sm); color: var(--color-text-soft); margin-bottom: var(--space-5); flex-wrap: wrap; }
.pcrumbs a { color: var(--color-text-muted); text-decoration: none; }
.pcrumbs a:hover { color: var(--color-primary); }
.pcrumbs__sep { color: var(--color-border-strong); }

.phero { display: grid; grid-template-columns: minmax(0, 1fr) minmax(360px, 440px) minmax(0, 1fr); gap: var(--space-6); align-items: start; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); padding: var(--space-6); margin-bottom: var(--space-5); }
.phero__center { display: flex; flex-direction: column; align-items: center; gap: var(--space-4); text-align: center; }
.phero__status { font-size: var(--fs-sm); color: var(--color-text-muted); }
.phero__status b { color: var(--color-success); font-weight: 700; }
.phero__status.is-rejected b { color: var(--color-text-soft); }
.phero__status.is-expertise b { color: var(--color-warning); }
.phero__title { margin: 0; font-size: 26px; font-weight: 800; letter-spacing: -.02em; line-height: 1.2; }

.moneyring { position: relative; width: 360px; height: 360px; max-width: 100%; display: grid; place-items: center; }
.moneyring svg { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
.moneyring__track { fill: none; stroke: var(--color-border); stroke-width: 14; }
.moneyring__req { fill: none; stroke: var(--color-primary); stroke-width: 14; stroke-linecap: round; }
.moneyring__co { fill: none; stroke: var(--color-text-soft); stroke-width: 14; stroke-linecap: round; }
.moneyring__inner { position: relative; display: flex; flex-direction: column; align-items: center; gap: 14px; padding: var(--space-6); text-align: center; }
.moneyring__cap { font-size: var(--fs-sm); color: var(--color-text-muted); }
.moneyring__val { font-size: 22px; font-weight: 800; letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
.moneyring__val--req { color: var(--color-text); }
.moneyring__val--co { color: var(--color-text-soft); font-weight: 700; }
.moneyring__divider { width: 80px; height: 1px; background: var(--color-border); }

.pinfo { display: flex; flex-direction: column; gap: var(--space-5); }
.pinfo--right { align-items: flex-end; text-align: right; }
.pinfo__row { display: flex; flex-direction: column; gap: 4px; }
.pinfo__lbl { font-size: var(--fs-xs); color: var(--color-text-soft); text-transform: uppercase; letter-spacing: .04em; font-weight: 700; }
.pinfo__val { font-size: var(--fs-sm); color: var(--color-text); line-height: 1.4; }
.pinfo__val--strong { font-weight: 700; }

.psection { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); padding: var(--space-6); margin-bottom: var(--space-4); }
.psection__title { margin: 0 0 var(--space-4); font-size: var(--fs-h2); font-weight: 700; letter-spacing: -.01em; }
.psection__body { font-size: var(--fs-body); line-height: 1.6; color: var(--color-text); }
.psection__body p { margin: 0 0 var(--space-3); }
.psection__body p:last-child { margin-bottom: 0; }
.psection__body ol, .psection__body ul { margin: 0 0 var(--space-3); padding-left: 22px; }
.psection__body li { margin-bottom: 6px; }

@media (max-width: 1100px) {
  .phero { grid-template-columns: 1fr; gap: var(--space-5); }
  .pinfo--right { align-items: flex-start; text-align: left; }
  .moneyring { width: 320px; height: 320px; }
  .phero__center { order: -1; }
}

/* ============================================================
   ВИТРИНА: ЛЕНДИНГ / КОНКУРСЫ (hero, секции, карточки конкурсов, новости)
   Канон — grant-platform-design2/screens/public_landing.html.
   ============================================================ */
.hero { background: linear-gradient(150deg, #fff9f3 0%, var(--color-bg) 60%); border-bottom: 1px solid var(--color-border); padding: var(--space-10) 0 64px; }
.hero__inner { max-width: 1100px; margin: 0 auto; padding: 0 var(--space-8); display: grid; grid-template-columns: minmax(0, 1fr) 420px; gap: 64px; align-items: center; }
.hero__inner--solo { grid-template-columns: minmax(0, 1fr); }
.hero__eyebrow { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--fs-xs); font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--color-primary-hover); background: var(--color-primary-soft); border: 1px solid var(--color-primary-line); border-radius: 999px; padding: 5px 14px; margin-bottom: var(--space-5); }
.hero__title { margin: 0 0 var(--space-4); font-size: 38px; font-weight: 800; line-height: 1.2; letter-spacing: -.025em; color: var(--color-text); }
.hero__sub { font-size: 18px; color: var(--color-text-muted); line-height: 1.6; margin: 0 0 var(--space-7); }
.hero__actions { display: flex; align-items: center; gap: var(--space-4); flex-wrap: wrap; }
.hero__actions .btn { padding: 13px 28px; font-size: var(--fs-body); }

.lpage { max-width: 1100px; margin: 0 auto; padding: 0 var(--space-8); }
.lsection { padding: 56px 0; border-bottom: 1px solid var(--color-border); }
.lsection:last-of-type { border-bottom: 0; }
.lsection__head { margin-bottom: var(--space-7); }
.lsection__eyebrow { font-size: var(--fs-xs); text-transform: uppercase; letter-spacing: .07em; color: var(--color-primary-hover); font-weight: 700; margin-bottom: var(--space-2); }
.lsection__title { margin: 0; font-size: 28px; font-weight: 700; letter-spacing: -.02em; line-height: 1.25; }
.lsection__sub { margin: var(--space-3) 0 0; font-size: var(--fs-body); color: var(--color-text-muted); }

/* Карточки конкурсов */
.ccards { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: var(--space-5); }
.ccard { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-6); box-shadow: var(--shadow-card); display: flex; flex-direction: column; gap: var(--space-3); transition: border-color .15s, box-shadow .15s, transform .12s; }
.ccard:hover { border-color: var(--color-border-strong); box-shadow: var(--shadow-md); transform: translateY(-2px); }
.ccard__title { font-size: var(--fs-h3); font-weight: 700; letter-spacing: -.005em; margin: 0; line-height: 1.35; }
.ccard__title a { color: inherit; text-decoration: none; }
.ccard__title a:hover { color: var(--color-primary); }
.ccard__sub { font-size: var(--fs-sm); color: var(--color-text-muted); margin: 0; line-height: 1.5; }
.ccard__meta { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; font-size: var(--fs-sm); color: var(--color-text-muted); }
.ccard__meta li { display: flex; gap: var(--space-2); }
.ccard__meta b { color: var(--color-text); font-weight: 600; font-variant-numeric: tabular-nums; }
.ccard__cta { margin-top: auto; padding-top: var(--space-2); }
.ccard__empty { background: var(--color-surface); border: 1px dashed var(--color-border-strong); border-radius: var(--radius-md); padding: var(--space-6); color: var(--color-text-muted); font-size: var(--fs-sm); text-align: center; }

/* Карточки новостей */
.newslist { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--space-5); }
.newscard { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: var(--space-6); box-shadow: var(--shadow-card); display: flex; flex-direction: column; gap: var(--space-3); text-decoration: none; color: var(--color-text); transition: border-color .15s, box-shadow .15s, transform .12s; }
.newscard:hover { border-color: var(--color-border-strong); box-shadow: var(--shadow-md); transform: translateY(-2px); }
.newscard__date { font-size: var(--fs-xs); color: var(--color-text-soft); font-variant-numeric: tabular-nums; }
.newscard__title { font-size: var(--fs-body); font-weight: 700; line-height: 1.4; margin: 0; }
.newscard__text { font-size: var(--fs-sm); color: var(--color-text-muted); line-height: 1.55; margin: 0; }
.newscard__more { margin-top: auto; font-size: var(--fs-sm); font-weight: 600; color: var(--color-primary); }

@media (max-width: 1100px) {
  .hero__inner { grid-template-columns: minmax(0, 1fr); gap: var(--space-6); }
}

/* ============================================================
   ВИТРИНА: CMS-СТРАНИЦЫ (новости/документы/эксперты/FAQ)
   Без отдельных макетов — на общих примитивах дизайн-системы.
   ============================================================ */
/* Типографика длинного контента (тело новости/страницы) */
.prose { font-size: var(--fs-body); line-height: 1.7; color: var(--color-text); }
.prose > :first-child { margin-top: 0; }
.prose > :last-child { margin-bottom: 0; }
.prose p { margin: 0 0 var(--space-4); }
.prose h2 { font-size: var(--fs-h2); margin: var(--space-6) 0 var(--space-3); letter-spacing: -.01em; }
.prose h3 { font-size: var(--fs-h3); margin: var(--space-5) 0 var(--space-2); }
.prose ul, .prose ol { margin: 0 0 var(--space-4); padding-left: 22px; }
.prose li { margin-bottom: 6px; }
.prose img { max-width: 100%; height: auto; border-radius: var(--radius-md); }
.prose a { color: var(--color-primary); }

/* Пейджер (новости) */
.pagerow { display: flex; justify-content: center; gap: 6px; margin-top: var(--space-7); flex-wrap: wrap; }
.pagerow a, .pagerow span { min-width: 34px; height: 34px; display: inline-grid; place-items: center; padding: 0 var(--space-2); border-radius: 8px; font-size: var(--fs-sm); font-weight: 600; text-decoration: none; border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-text-muted); }
.pagerow a:hover { border-color: var(--color-border-strong); color: var(--color-text); }
.pagerow .is-active { background: var(--color-primary); color: #fff; border-color: var(--color-primary); }
.pagerow .is-disabled { opacity: .45; pointer-events: none; }

/* Сетка людей (эксперты) */
.persons { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: var(--space-6); }
.persons--lead { justify-content: center; }
.person { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 6px; }
.person__photo { width: 104px; height: 104px; border-radius: 50%; object-fit: cover; border: 1px solid var(--color-border); }
.person__photo--ph { display: grid; place-items: center; background: var(--color-primary-soft); color: var(--color-primary-hover); font-size: 34px; font-weight: 700; border-color: var(--color-primary-line); }
.person__name { font-weight: 700; font-size: var(--fs-sm); margin: var(--space-2) 0 0; }
.person__role { font-size: var(--fs-xs); color: var(--color-text-muted); white-space: pre-line; line-height: 1.45; margin: 0; }

/* FAQ — нативные <details> */
.faq { display: flex; flex-direction: column; gap: var(--space-2); }
.faq__item { background: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); box-shadow: var(--shadow-card); overflow: hidden; }
.faq__q { list-style: none; cursor: pointer; padding: var(--space-4) var(--space-5); font-weight: 600; font-size: var(--fs-body); display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
.faq__q::-webkit-details-marker { display: none; }
.faq__q::after { content: "+"; font-size: 18px; color: var(--color-text-soft); flex: none; }
.faq__item[open] .faq__q::after { content: "−"; color: var(--color-primary); }
.faq__item[open] .faq__q { color: var(--color-primary-hover); }
.faq__a { padding: 0 var(--space-5) var(--space-4); font-size: var(--fs-sm); line-height: 1.6; color: var(--color-text-muted); }

/* Документы — строки-файлы */
.doclist { display: flex; flex-direction: column; }
.docrow { display: flex; align-items: center; gap: var(--space-4); padding: var(--space-4); border-top: 1px solid var(--color-border); }
.docrow:first-child { border-top: 0; }
.doc__type { flex: none; min-width: 46px; text-align: center; font-size: 11px; font-weight: 700; text-transform: uppercase; padding: 4px 8px; border-radius: 8px; background: var(--color-primary-soft); color: var(--color-primary-hover); border: 1px solid var(--color-primary-line); }
.doc__main { min-width: 0; flex: 1; }
.doc__title { font-weight: 600; font-size: var(--fs-sm); }
.doc__meta { font-size: var(--fs-xs); color: var(--color-text-soft); }
.doc__desc { font-size: var(--fs-sm); color: var(--color-text-muted); flex: 1; min-width: 0; }
.cmstabs { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-5); }

/* ============================================================
   Загрузка файла — drag-and-drop зона (Alpine: fileDrop).
   Поверх нативного <input type=file>; серверный контракт не меняется.
   ============================================================ */
.fileupload { display: flex; flex-direction: column; gap: var(--space-3); align-items: flex-start; }

.dropzone {
  position: relative;
  width: 100%; box-sizing: border-box;
  display: flex; align-items: center; gap: var(--space-3);
  padding: var(--space-4) var(--space-5);
  cursor: pointer;
  background: var(--color-surface);
  border: 1.5px dashed var(--color-border-strong);
  border-radius: var(--radius-md);
  color: var(--color-text-muted);
  transition: border-color .15s, background .15s, box-shadow .15s;
}
.dropzone:hover { border-color: var(--color-primary-light); background: var(--color-primary-tint); }
.dropzone.is-over {
  border-color: var(--color-primary); border-style: solid;
  background: var(--color-primary-soft);
  box-shadow: 0 0 0 3px var(--color-primary-soft);
}
.dropzone.is-filled {
  border-style: solid; border-color: var(--color-success-line);
  background: var(--color-success-soft);
}
.dropzone__input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.dropzone .icon { width: 20px; height: 20px; flex: none; color: var(--color-primary); }
.dropzone.is-filled .icon { color: var(--color-success); }

.dropzone__prompt { display: flex; align-items: center; gap: var(--space-3); }
.dropzone__texts { display: flex; flex-direction: column; line-height: 1.3; }
.dropzone__texts strong { color: var(--color-text); font-weight: 600; }
.dropzone__hint { font-size: var(--fs-xs); color: var(--color-text-soft); margin-top: 2px; }

.dropzone__file { display: flex; align-items: center; gap: var(--space-2); width: 100%; }
.dropzone__fname {
  font-weight: 600; color: var(--color-text);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 360px;
}
.dropzone__fsize { font-size: var(--fs-xs); color: var(--color-text-soft); }
.dropzone__clear {
  margin-left: auto; background: transparent; border: 0; cursor: pointer;
  color: var(--color-text-soft); padding: 4px; border-radius: 8px;
  display: grid; place-items: center;
}
.dropzone__clear:hover { color: var(--color-danger); background: var(--color-danger-soft); }
.dropzone__clear .icon { width: 16px; height: 16px; color: inherit; }
.dropzone__error { color: var(--color-danger); font-size: var(--fs-xs); }

.dropzone.is-uploading { cursor: default; pointer-events: none; border-style: solid; border-color: var(--color-primary-line); background: var(--color-primary-tint); }
.dropzone__uploading { display: flex; align-items: center; gap: var(--space-2); color: var(--color-primary-hover); font-weight: 500; }
.dropzone__uploading .icon { color: var(--color-primary); animation: dz-spin 1s linear infinite; }
@keyframes dz-spin { to { transform: rotate(360deg); } }

/* ============================================================
   Модальное подтверждение (window.confirmDialog / htmx:confirm).
   Брендовая замена нативному confirm(). Нативный <dialog>: фокус-трап,
   Esc, backdrop — из коробки; стилизуем под дизайн-систему.
   ============================================================ */
.modal {
  border: 0; padding: 0; background: transparent;
  width: min(440px, calc(100vw - 2 * var(--space-5)));
  border-radius: var(--radius-lg);
  color: var(--color-text);
}
.modal::backdrop { background: rgba(33, 27, 16, .45); backdrop-filter: blur(2px); }
.modal__card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
  padding: var(--space-6);
  display: grid; grid-template-columns: auto 1fr; gap: var(--space-2) var(--space-4); align-items: start;
}
.modal[open] .modal__card { animation: modal-in .16s ease-out; }
@keyframes modal-in { from { opacity: 0; transform: translateY(8px) scale(.985); } to { opacity: 1; transform: none; } }

.modal__icon { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; flex: none; }
.modal__icon .icon { width: 20px; height: 20px; }
.modal__icon--danger  { background: var(--color-danger-soft);  color: var(--color-danger);  border: 1px solid var(--color-danger-line); }
.modal__icon--primary { background: var(--color-primary-soft); color: var(--color-primary); border: 1px solid var(--color-primary-line); }

.modal__body { min-width: 0; align-self: center; }
.modal__title { margin: 0; font-size: var(--fs-h3); font-weight: 700; color: var(--color-text); }
.modal__text  { margin: 6px 0 0; font-size: var(--fs-sm); color: var(--color-text-muted); line-height: var(--lh-base); }

.modal__actions { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: var(--space-3); margin-top: var(--space-4); }
/* сплошная «опасная» кнопка подтверждения — заметнее, чем контурный .btn--danger */
.modal__ok--danger { background: var(--color-danger); color: #fff; border-color: var(--color-danger); box-shadow: 0 1px 2px rgba(120, 30, 20, .25); }
.modal__ok--danger:hover { background: #a82f24; border-color: #a82f24; }

/* ── Меню пользователя в шапке (дропдаун, _UserMenu) ───────────────────────── */
.usermenu { position: relative; }
.usermenu__btn {
    list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: var(--space-2, .5rem);
    padding: var(--space-1, .35rem) var(--space-3, .7rem); border: 1px solid var(--color-border, #e5e3df);
    border-radius: 999px; user-select: none; background: #fff; transition: border-color .15s;
}
.usermenu__btn:hover { border-color: var(--brand, #8a5a44); }
.usermenu__btn::-webkit-details-marker { display: none; }
.usermenu__btn::marker { content: ""; }
.usermenu__avatar {
    width: 30px; height: 30px; border-radius: 50%; flex: none; display: inline-flex; align-items: center;
    justify-content: center; font-size: 12px; font-weight: 700; color: var(--brand, #8a5a44);
    background: color-mix(in srgb, var(--brand, #8a5a44) 14%, #fff); border: 1px solid color-mix(in srgb, var(--brand, #8a5a44) 30%, #fff);
}
.usermenu__name { font-weight: 600; line-height: 1; }
.usermenu__chev { color: var(--color-text-muted, #8a8780); transition: transform .15s; flex: none; }
.usermenu[open] .usermenu__chev { transform: rotate(180deg); }
.usermenu__menu {
    position: absolute; right: 0; top: calc(100% + var(--space-2, .5rem)); min-width: 230px;
    background: #fff; border: 1px solid var(--color-border, #e5e3df); border-radius: 14px;
    box-shadow: 0 12px 34px rgba(0,0,0,.14); padding: var(--space-2, .4rem); z-index: 60;
    display: flex; flex-direction: column;
}
.usermenu__item {
    padding: var(--space-3, .6rem) var(--space-4, .85rem); border-radius: 9px; text-decoration: none;
    color: var(--color-text, #2b2925); font-weight: 500; white-space: nowrap;
}
.usermenu__item:hover { background: var(--color-surface-2, #f6f4f0); }
.usermenu__item--logout {
    border-top: 1px solid var(--color-border, #e5e3df); margin-top: var(--space-2, .35rem);
    padding-top: var(--space-3, .6rem); color: #b3261e;
}
