/* ============================================================
   ВИЗАРТЪ · «ЗАЛЪ ЗАСѢДАНІЙ» — консилиум фронтир-моделей

   Три состояния одного листа:
     1) совет не собирался — латунная строка и созыв (хранителю);
     2) заседание идёт     — стол совета, шесть кресел, тёплый луч
                             на том, кто уже высказался;
     3) протокол выпущен   — гербовый лист на кремовой бумаге.

   Все имена начинаются с cons- : лист не спорит ни с platform.css,
   ни с evidence.css, ни с cabinet.css.

   Правило вёрстки, вытекающее из этики: расхождение набрано КРУПНЕЕ
   согласия. Единогласный пункт — строка в 16 пикселей под золотой
   печатью; особое мнение — заголовок в тридцать. Это не украшение,
   это порядок чтения.
   ============================================================ */

:root {
  /* Бумага протокола: кремовая, тёплая, без единого чистого белого */
  --cons-paper:   #efe3c6;
  --cons-paper-2: #e4d4ae;
  --cons-paper-3: #f6ecd4;
  --cons-ink:     #241a0b;   /* основной текст по бумаге — контраст 12:1 */
  --cons-ink-2:   #4a3616;   /* подписи и метаданные — контраст 7:1 */
  --cons-ink-3:   #6b5326;   /* самое тихое, что дозволено */
  --cons-hair:    rgba(70, 48, 14, .26);
  --cons-hair-2:  rgba(70, 48, 14, .5);

  /* Тёмная латунь — для кромок и теней гравировки. Текста на ней не бывает. */
  --cons-brass: linear-gradient(180deg, #a9853f 0%, #7c5a27 18%, #5d4319 52%,
                                #7a5926 84%, #4a340f 100%);
  /* Полированная латунь — всё, что НЕСЁТ гравированный текст. Светлее тёмной
     ровно настолько, чтобы чёрная гравировка держала контраст 6:1 и читалась
     на солнце, а не только в полумраке анфилады. */
  --cons-brass-plate: linear-gradient(180deg, #dcc98f 0%, #c6af71 22%, #b39a58 55%,
                                      #c6af71 85%, #8f7735 100%);
  --cons-engrave: #241a0b;

  --cons-gold:    #C9A227;
  --cons-gold-hi: #E8C55F;
  --cons-patina:  #3E5B4C;
  --cons-shadow:  0 18px 44px rgba(0, 0, 0, .58);
}

/* ============================================================
   0. Общие мелочи листа
   ============================================================ */

/* Кнопка-сургуч в кремовом зале: тёмная гравировка по латуни */
.cons-btn {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 44px;
  padding: 9px 20px 10px;
  border: 1px solid rgba(240, 211, 139, .55);
  border-radius: 2px;
  background: var(--cons-brass-plate);
  box-shadow:
    inset 0 1px 0 rgba(255, 244, 208, .5),
    inset 0 -3px 8px rgba(0, 0, 0, .38),
    0 6px 15px rgba(0, 0, 0, .45);
  font-family: var(--font-serif);
  font-size: 13px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--cons-engrave);
  text-shadow: 0 1px 0 rgba(255, 246, 214, .45);
  cursor: pointer;
  transition: transform .4s var(--ease-lux), filter .4s var(--ease-lux);
}
.cons-btn:hover { filter: brightness(1.13); transform: translateY(-1px); }
.cons-btn:focus-visible { outline: 2px solid var(--cons-gold-hi); outline-offset: 3px; }
.cons-btn[disabled],
.cons-btn.is-busy { opacity: .55; pointer-events: none; }

.cons-btn--quiet {
  background: transparent;
  border: 1px solid var(--cons-hair-2);
  box-shadow: none;
  color: var(--cons-ink-2);
  text-shadow: none;
}
.cons-btn--quiet:hover { background: rgba(70, 48, 14, .07); filter: none; }

/* Тот же тихий вариант, но по бархату (тёмный фон) */
.cons-btn--dark {
  background: transparent;
  border: 1px solid rgba(201, 162, 39, .45);
  box-shadow: none;
  color: var(--gold-hi);
  text-shadow: none;
}
.cons-btn--dark:hover { background: rgba(201, 162, 39, .12); filter: none; }

/* ============================================================
   1. Латунная табличка на витрине лота (блок «А»)
   ============================================================ */

.cons-plate {
  position: relative;
  margin-top: 26px;
  padding: 15px 17px 16px;
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  gap: 14px;
  align-items: center;
  border: 1px solid rgba(240, 211, 139, .42);
  border-radius: 3px;
  background: var(--cons-brass-plate);
  box-shadow:
    inset 0 1px 0 rgba(255, 244, 208, .4),
    inset 0 -4px 10px rgba(0, 0, 0, .42),
    0 10px 26px rgba(0, 0, 0, .5);
}

/* Оттиск совета: шесть точек по кругу — шесть кресел */
.cons-plate__mark {
  width: 46px; height: 46px;
  border-radius: 50%;
  position: relative;
  background: radial-gradient(circle at 34% 28%, #f0d78b, #c9a227 56%, #8a6420);
  box-shadow:
    inset 0 1px 0 rgba(255, 250, 224, .8),
    inset 0 -3px 7px rgba(0, 0, 0, .35),
    0 3px 9px rgba(0, 0, 0, .45);
}
.cons-plate__mark::after {
  content: '';
  position: absolute; inset: 8px;
  border-radius: 50%;
  border: 1px solid rgba(58, 42, 16, .5);
  background:
    radial-gradient(circle at 50% 12%, rgba(58,42,16,.75) 0 1.6px, transparent 1.9px),
    radial-gradient(circle at 84% 32%, rgba(58,42,16,.75) 0 1.6px, transparent 1.9px),
    radial-gradient(circle at 84% 68%, rgba(58,42,16,.75) 0 1.6px, transparent 1.9px),
    radial-gradient(circle at 50% 88%, rgba(58,42,16,.75) 0 1.6px, transparent 1.9px),
    radial-gradient(circle at 16% 68%, rgba(58,42,16,.75) 0 1.6px, transparent 1.9px),
    radial-gradient(circle at 16% 32%, rgba(58,42,16,.75) 0 1.6px, transparent 1.9px);
}
/* Патиновый оттиск: заседание было, протокола наружу нет */
.cons-plate--quiet .cons-plate__mark {
  background: radial-gradient(circle at 34% 28%, #5c7d6b, #3E5B4C 56%, #21382c);
}

.cons-plate__line {
  font-family: var(--font-serif);
  font-size: 14.5px;
  letter-spacing: .07em;
  color: var(--cons-engrave);
  text-shadow: 0 1px 0 rgba(255, 246, 214, .42);
}
.cons-plate__sub {
  margin-top: 3px;
  font-family: var(--font-text);
  font-size: 13.5px;
  line-height: 1.45;
  color: #3f2d10;
}
.cons-plate__acts {
  grid-column: 1 / -1;
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  margin-top: 4px;
}
.cons-plate__acts .cons-btn {
  background: rgba(255, 246, 214, .22);
  border-color: rgba(58, 42, 16, .45);
  box-shadow: inset 0 1px 0 rgba(255, 250, 224, .4);
}

/* ---------- Тихая строка для гостя: совет не собирался ---------- */

.cons-ask {
  margin-top: 26px;
  padding: 15px 17px 16px;
  border: 1px solid rgba(201, 162, 39, .26);
  border-left: 2px solid rgba(201, 162, 39, .5);
  background: rgba(43, 6, 15, .42);
}
.cons-ask__title {
  font-family: var(--font-serif);
  font-size: 13px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--gold);
}
.cons-ask__text {
  margin: 7px 0 0;
  font-family: var(--font-text);
  font-size: 15.5px;
  line-height: 1.6;
  color: var(--parchment);
}
.cons-ask__count {
  margin-top: 7px;
  font-family: var(--font-serif);
  font-size: 13.5px;
  letter-spacing: .06em;
  color: var(--smoke);
}
.cons-ask__acts { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 9px; }

/* ============================================================
   2. Созыв: панель хранителя
   ============================================================ */

.cons-call {
  margin-top: 26px;
  padding: 18px 18px 20px;
  border: 1px solid rgba(201, 162, 39, .3);
  background:
    linear-gradient(rgba(43, 6, 15, .78), rgba(20, 4, 9, .82));
  box-shadow: inset 0 1px 0 rgba(201, 162, 39, .16);
}
.cons-call__title {
  font-family: var(--font-display);
  font-size: 19px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gold-hi);
}
.cons-call__note {
  margin: 6px 0 14px;
  font-family: var(--font-text);
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--smoke);
}

.cons-modes {
  display: grid;
  gap: 9px;
  margin: 0 0 13px;
  padding: 0;
  border: 0;
}
.cons-mode {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 4px 12px;
  align-items: baseline;
  padding: 11px 13px 12px;
  border: 1px solid rgba(201, 162, 39, .26);
  background: rgba(10, 6, 4, .45);
  cursor: pointer;
  transition: border-color .3s var(--ease-lux), background .3s var(--ease-lux);
}
.cons-mode:hover { border-color: rgba(201, 162, 39, .5); }
.cons-mode input { position: absolute; opacity: 0; pointer-events: none; }
.cons-mode__name {
  font-family: var(--font-serif);
  font-size: 15.5px;
  letter-spacing: .07em;
  color: var(--parchment);
}
.cons-mode__cost {
  font-family: var(--font-num);
  font-size: 17px;
  color: var(--gold);
  white-space: nowrap;
}
.cons-mode__why {
  grid-column: 1 / -1;
  font-family: var(--font-text);
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--smoke);
}
.cons-mode:has(input:checked) {
  border-color: var(--gold);
  background: rgba(110, 27, 46, .3);
  box-shadow: inset 0 0 0 1px rgba(232, 197, 95, .2);
}
.cons-mode:has(input:focus-visible) { outline: 2px solid var(--gold-hi); outline-offset: 2px; }

.cons-call__row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 20px;
  margin-bottom: 12px;
}
.cons-check {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 34px;
  font-family: var(--font-text);
  font-size: 14.5px;
  color: var(--parchment);
  cursor: pointer;
}
.cons-check input { width: 17px; height: 17px; accent-color: var(--gold); }

.cons-call label.cons-field {
  display: block;
  margin-bottom: 12px;
  font-family: var(--font-serif);
  font-size: 12.5px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--smoke);
}
.cons-call textarea,
.cons-call select {
  width: 100%;
  margin-top: 6px;
  padding: 10px 12px;
  min-height: 44px;
  border: 1px solid rgba(201, 162, 39, .32);
  border-radius: 2px;
  background: rgba(10, 6, 4, .55);
  font-family: var(--font-text);
  font-size: 15.5px;
  line-height: 1.5;
  color: var(--parchment);
  text-transform: none;
  letter-spacing: normal;
}
.cons-call textarea { min-height: 74px; resize: vertical; }
.cons-call textarea:focus-visible,
.cons-call select:focus-visible { outline: 2px solid var(--gold-hi); outline-offset: 2px; }

.cons-estimate {
  margin: 4px 0 14px;
  padding: 11px 13px 12px;
  border: 1px solid rgba(201, 162, 39, .3);
  border-left: 2px solid var(--gold);
  background: rgba(10, 6, 4, .5);
}
.cons-estimate__sum {
  font-family: var(--font-num);
  font-size: 21px;
  color: var(--gold-hi);
}
.cons-estimate__line {
  margin-top: 4px;
  font-family: var(--font-text);
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--smoke);
}
.cons-estimate--tight { border-left-color: var(--patina); }

/* ============================================================
   3. Разворот: полотнище под витриной
   ============================================================ */

.cons-sheet {
  margin: 46px 0 0;
  position: relative;
}
.cons-sheet[hidden] { display: none; }

/* Створки разворота открываются мягко, но без прыжка вёрстки */
.cons-sheet__body { position: relative; }

.cons-sheet__toggle {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  margin-bottom: 16px;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
  text-align: left;
}
.cons-sheet__toggle::after {
  content: '';
  flex: 1 1 auto;
  height: 1px;
  background: linear-gradient(90deg, rgba(201, 162, 39, .55), transparent);
}
.cons-sheet__toggle span {
  font-family: var(--font-display);
  font-size: clamp(19px, 2.4vw, 25px);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gold-hi);
}
.cons-sheet__toggle:focus-visible { outline: 2px solid var(--gold-hi); outline-offset: 4px; }

/* ============================================================
   4. ЗАЛ ЗАСЕДАНИЙ: стол, шесть кресел, тёплый луч
   ============================================================ */

.cons-hall {
  position: relative;
  padding: 26px 24px 30px;
  border: 1px solid rgba(201, 162, 39, .28);
  background:
    radial-gradient(ellipse at 50% -6%, rgba(201, 162, 39, .17), transparent 62%),
    linear-gradient(rgba(43, 6, 15, .86), rgba(14, 4, 8, .93));
  box-shadow: inset 0 1px 0 rgba(201, 162, 39, .14), var(--cons-shadow);
  overflow: hidden;
}
.cons-hall::before {
  content: '';
  position: absolute; inset: 0;
  background-image: url('/assets/textures/craquelure.webp');
  background-size: 620px;
  opacity: .05;
  pointer-events: none;
}

.cons-hall__head {
  position: relative;
  text-align: center;
  margin-bottom: 12px;
}
.cons-hall__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(22px, 3vw, 32px);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--gold-hi);
}
.cons-hall__status {
  margin: 8px 0 0;
  font-family: var(--font-text);
  font-size: clamp(15px, 1.6vw, 17px);
  line-height: 1.5;
  color: var(--parchment);
}
.cons-hall__meta {
  margin: 7px 0 0;
  font-family: var(--font-serif);
  font-size: 13.5px;
  letter-spacing: .1em;
  color: var(--smoke);
}
.cons-hall__meta b { font-family: var(--font-num); color: var(--gold); font-weight: 400; }

/* ---------- Овальный стол ---------- */

/* Кресло стоит НАД своей точкой на овале и свисает под неё на половину
   высоты — потому у стола снизу отведено поле, иначе нижнее кресло сядет
   на строку расхода. */
.cons-table {
  position: relative;
  width: 100%;
  max-width: 940px;
  margin: 6px auto 58px;
  aspect-ratio: 15 / 9;
  min-height: 430px;
}

.cons-table__oval {
  position: absolute;
  left: 18%; right: 18%; top: 27%; bottom: 27%;
  border-radius: 50%;
  border: 1px solid rgba(201, 162, 39, .4);
  background:
    radial-gradient(ellipse at 42% 26%, rgba(201, 162, 39, .2), transparent 66%),
    linear-gradient(160deg, #3a1420 0%, #24080f 55%, #180509 100%);
  box-shadow:
    inset 0 2px 0 rgba(232, 197, 95, .22),
    inset 0 -14px 34px rgba(0, 0, 0, .6),
    0 22px 46px rgba(0, 0, 0, .6);
  overflow: hidden;
}
/* Сукно стола: та же кракелюрная фактура, что на карточках */
.cons-table__oval::before {
  content: '';
  position: absolute; inset: 0;
  background-image: url('/assets/textures/velvet-dark.webp');
  background-size: cover;
  opacity: .5;
  mix-blend-mode: overlay;
}
/* Волна «совет знакомится с мнениями друг друга» */
.cons-table__oval::after {
  content: '';
  position: absolute;
  top: 0; bottom: 0; left: -40%;
  width: 40%;
  background: linear-gradient(90deg, transparent,
              rgba(232, 197, 95, .22) 45%, rgba(232, 197, 95, .3) 55%, transparent);
  opacity: 0;
  pointer-events: none;
}
.cons-hall.is-wave .cons-table__oval::after {
  opacity: 1;
  animation: cons-wave 2.6s var(--ease-lux) infinite;
}
@keyframes cons-wave {
  0%   { transform: translateX(0); }
  100% { transform: translateX(350%); }
}

/* Надпись посреди стола */
.cons-table__word {
  position: absolute;
  left: 22%; right: 22%; top: 50%;
  transform: translateY(-50%);
  text-align: center;
  font-family: var(--font-serif);
  font-size: 13.5px;
  letter-spacing: .2em;
  text-transform: uppercase;
  line-height: 1.6;
  color: var(--smoke);
  pointer-events: none;
}
.cons-table__word b {
  display: block;
  font-family: var(--font-num);
  font-size: 25px;
  letter-spacing: .04em;
  text-transform: none;
  color: var(--gold-hi);
  font-weight: 400;
}

/* ---------- Кресло ---------- */

.cons-seat {
  position: absolute;
  width: 168px;
  margin-left: -84px;
  margin-top: -62px;
  text-align: center;
}
/* Шесть точек по овалу: атрибутор наверху, оппонент прямо напротив */
.cons-seat[data-pos="0"] { left: 50%; top: 11%; }
.cons-seat[data-pos="1"] { left: 88%;  top: 31%; }
.cons-seat[data-pos="2"] { left: 88%;  top: 71%; }
.cons-seat[data-pos="3"] { left: 50%;  top: 90%; }
.cons-seat[data-pos="4"] { left: 12%;  top: 71%; }
.cons-seat[data-pos="5"] { left: 12%;  top: 31%; }

/* Камея кресла */
.cons-seat__cameo {
  position: relative;
  width: 74px; height: 74px;
  margin: 0 auto 9px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: radial-gradient(circle at 34% 26%, #7d5f30, #55401a 58%, #2c2009);
  box-shadow:
    inset 0 1px 0 rgba(255, 240, 200, .22),
    inset 0 -4px 9px rgba(0, 0, 0, .5),
    0 5px 14px rgba(0, 0, 0, .5);
  transition: background .8s var(--ease-lux), box-shadow .8s var(--ease-lux),
              transform .8s var(--ease-lux);
}
.cons-seat__cameo::before {
  content: '';
  position: absolute; inset: 6px;
  border-radius: 50%;
  border: 1px solid rgba(255, 240, 200, .16);
}
.cons-seat__numeral {
  font-family: var(--font-num);
  font-size: 21px;
  letter-spacing: .03em;
  color: rgba(243, 231, 201, .55);
  text-shadow: 0 1px 0 rgba(0, 0, 0, .55);
  transition: color .8s var(--ease-lux);
}

.cons-seat__plate {
  display: inline-block;
  padding: 3px 11px 4px;
  border: 1px solid rgba(240, 211, 139, .34);
  border-radius: 2px;
  background: var(--cons-brass-plate);
  box-shadow: inset 0 1px 0 rgba(255, 244, 208, .34), 0 3px 8px rgba(0, 0, 0, .45);
  font-family: var(--font-serif);
  font-size: 13px;
  letter-spacing: .12em;
  color: var(--cons-engrave);
  text-shadow: 0 1px 0 rgba(255, 246, 214, .4);
}
.cons-seat__model {
  margin-top: 5px;
  font-family: var(--font-text);
  font-size: 11.5px;
  line-height: 1.35;
  letter-spacing: .02em;
  color: var(--smoke);
  overflow-wrap: anywhere;
}
.cons-seat__state {
  margin-top: 4px;
  font-family: var(--font-serif);
  font-size: 12px;
  letter-spacing: .16em;
  text-transform: lowercase;
  color: var(--bronze);
  min-height: 16px;
}

/* Ждущее кресло: тусклая бронза, «размышляет» */
.cons-seat--waiting .cons-seat__state { color: var(--smoke); }
.cons-seat--waiting .cons-seat__cameo {
  animation: cons-breathe 3.4s ease-in-out infinite;
}
@keyframes cons-breathe {
  0%, 100% { box-shadow: inset 0 1px 0 rgba(255,240,200,.22),
                         inset 0 -4px 9px rgba(0,0,0,.5),
                         0 5px 14px rgba(0,0,0,.5); }
  50%      { box-shadow: inset 0 1px 0 rgba(255,240,200,.3),
                         inset 0 -4px 9px rgba(0,0,0,.5),
                         0 5px 20px rgba(201, 162, 39, .3); }
}

/* Высказавшееся кресло: тёплый луч включён */
.cons-seat--spoke .cons-seat__cameo {
  background: radial-gradient(circle at 34% 26%, #f2dc9a, #c9a227 56%, #7d6415);
  box-shadow:
    inset 0 1px 0 rgba(255, 250, 224, .8),
    inset 0 -3px 8px rgba(0, 0, 0, .35),
    0 0 26px rgba(232, 197, 95, .45),
    0 6px 16px rgba(0, 0, 0, .5);
  transform: translateY(-2px);
}
.cons-seat--spoke .cons-seat__numeral { color: #3a2a06; text-shadow: 0 1px 0 rgba(255,250,224,.6); }
.cons-seat--spoke .cons-seat__state { color: var(--gold-hi); }

/* Кресло, которое пришло дублёром */
.cons-seat--fallback .cons-seat__plate::after {
  content: ' · дублёръ';
  color: #4a3616;
  letter-spacing: .06em;
}

/* Пустое кресло: остаётся в тени, и это печатается */
.cons-seat--empty .cons-seat__cameo {
  background: rgba(20, 12, 6, .6);
  border: 1px dashed rgba(168, 143, 106, .5);
  box-shadow: inset 0 2px 8px rgba(0, 0, 0, .5);
  animation: none;
}
.cons-seat--empty .cons-seat__numeral { color: rgba(168, 143, 106, .5); }
.cons-seat--empty .cons-seat__plate { filter: grayscale(.5) brightness(.8); }
.cons-seat--empty .cons-seat__state { color: var(--patina); }

/* Появление кресла: медальон проступает, а не выскакивает */
.cons-seat { animation: cons-emerge .9s var(--ease-lux) both; }
@keyframes cons-emerge {
  from { opacity: 0; transform: translateY(9px); }
  to   { opacity: 1; transform: none; }
}

/* Смета и расход под столом */
.cons-hall__foot {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 10px 26px;
  margin-top: 16px;
  padding-top: 15px;
  border-top: 1px solid rgba(201, 162, 39, .2);
  font-family: var(--font-serif);
  font-size: 13.5px;
  letter-spacing: .08em;
  color: var(--smoke);
}
.cons-hall__foot b { font-family: var(--font-num); font-weight: 400; color: var(--gold); }

/* ============================================================
   5. ПРОТОКОЛ: гербовый лист
   ============================================================ */

.cons-prot {
  position: relative;
  padding: 0 0 4px;
  background:
    linear-gradient(180deg, var(--cons-paper-3), var(--cons-paper) 22%,
                    var(--cons-paper-2) 100%);
  border: 1px solid rgba(70, 48, 14, .45);
  box-shadow:
    inset 0 0 0 1px rgba(255, 250, 224, .5),
    var(--cons-shadow);
}
.cons-prot::before {
  content: '';
  position: absolute; inset: 0;
  background-image: url('/assets/textures/parchment.webp');
  background-size: 560px;
  opacity: .3;
  mix-blend-mode: multiply;
  pointer-events: none;
}
/* Гильошная золотая рамка в двух миллиметрах от края листа */
.cons-prot::after {
  content: '';
  position: absolute;
  inset: 9px;
  border: 1px solid rgba(138, 100, 32, .5);
  box-shadow: inset 0 0 0 3px rgba(201, 162, 39, .14);
  pointer-events: none;
}
.cons-prot > * { position: relative; z-index: 1; }

.cons-prot__inner { padding: 34px clamp(18px, 4vw, 54px) 40px; }

/* ---------- Шапка ---------- */

.cons-prot__head { text-align: center; }

.cons-prot__crest {
  width: 96px; height: 96px;
  margin: 0 auto 12px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  border: 1px solid rgba(138, 100, 32, .55);
  background:
    radial-gradient(circle at 36% 28%, rgba(255, 250, 224, .8), transparent 60%),
    radial-gradient(circle at 50% 50%, rgba(201, 162, 39, .3), rgba(138, 100, 32, .16));
  box-shadow: inset 0 1px 0 rgba(255, 250, 224, .7), 0 3px 10px rgba(70, 48, 14, .25);
}
.cons-prot__crest span {
  font-family: var(--font-display);
  font-size: 30px;
  letter-spacing: .04em;
  color: #6b5014;
  text-shadow: 0 1px 0 rgba(255, 250, 224, .8);
}

.cons-prot__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: clamp(27px, 4.4vw, 48px);
  line-height: 1.1;
  letter-spacing: .1em;
  color: #4a3413;
  text-shadow: 0 1px 0 rgba(255, 250, 224, .75);
}
.cons-prot__no {
  margin-top: 4px;
  font-family: var(--font-num);
  font-size: clamp(19px, 2.4vw, 26px);
  color: #6b5014;
}
.cons-prot__subject {
  margin: 12px auto 0;
  max-width: 46em;
  font-family: var(--font-text);
  font-size: clamp(16px, 1.7vw, 18px);
  line-height: 1.6;
  color: var(--cons-ink);
}
.cons-prot__meta {
  margin: 8px auto 0;
  max-width: 46em;
  font-family: var(--font-serif);
  font-size: 14px;
  letter-spacing: .06em;
  color: var(--cons-ink-2);
}
.cons-prot__divider {
  display: block;
  width: min(280px, 70%);
  margin: 18px auto 4px;
  opacity: .75;
}

/* ---------- Плашки ---------- */

.cons-plaque {
  margin: 20px 0 0;
  padding: 15px 17px 16px;
  border: 1px solid rgba(70, 48, 14, .5);
  border-left: 3px solid #8a6420;
  background: rgba(255, 247, 219, .58);
  font-family: var(--font-text);
  font-size: 15.5px;
  line-height: 1.62;
  color: var(--cons-ink);
}
.cons-plaque b { font-weight: 600; }
.cons-plaque em { color: var(--cons-ink-2); }

.cons-plaque--draft {
  border-left-color: var(--cons-patina);
  background: rgba(62, 91, 76, .16);
}
.cons-plaque--draft strong {
  display: block;
  font-family: var(--font-serif);
  font-size: 13px;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: #2c4438;
  margin-bottom: 4px;
}

/* Несъёмная нижняя плашка — та, ради которой всё и печатается */
.cons-plaque--final {
  margin-top: 26px;
  border: 1px solid rgba(70, 48, 14, .55);
  border-left-width: 3px;
  background: rgba(70, 48, 14, .1);
  text-align: center;
  font-family: var(--font-serif);
  font-size: clamp(14px, 1.6vw, 16px);
  letter-spacing: .1em;
  color: var(--cons-ink);
}

/* ---------- Разделы ---------- */

.cons-sec { margin-top: 30px; }

.cons-sec__title {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin: 0 0 4px;
  font-family: var(--font-display);
  font-size: clamp(17px, 2.1vw, 22px);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: #4a3413;
}
.cons-sec__title::after {
  content: '';
  flex: 1 1 auto;
  height: 1px;
  background: linear-gradient(90deg, rgba(70, 48, 14, .45), transparent);
}
.cons-sec__no {
  font-family: var(--font-num);
  font-size: .9em;
  color: #7c5c22;
}
.cons-sec__lead {
  margin: 0 0 14px;
  font-family: var(--font-text);
  font-size: 15px;
  line-height: 1.6;
  color: var(--cons-ink-2);
  max-width: 62em;
}

/* ---------- 1. Состав присутствовавших: шесть камей ---------- */

.cons-roster {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(154px, 1fr));
  gap: 16px 12px;
  margin: 4px 0 0;
  padding: 0;
  list-style: none;
}
.cons-cameo { text-align: center; }

.cons-cameo__disc {
  position: relative;
  width: 78px; height: 78px;
  margin: 0 auto 9px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: radial-gradient(circle at 34% 26%, #c9a45e, #8a6420 56%, #4d3910);
  box-shadow:
    inset 0 1px 0 rgba(255, 240, 200, .45),
    inset 0 -3px 8px rgba(0, 0, 0, .4),
    0 3px 10px rgba(70, 48, 14, .4);
}
.cons-cameo__disc::before {
  content: '';
  position: absolute; inset: 7px;
  border-radius: 50%;
  border: 1px solid rgba(255, 244, 208, .28);
}
.cons-cameo__disc span {
  font-family: var(--font-num);
  font-size: 22px;
  color: #f4e6c2;
  text-shadow: 0 1px 2px rgba(0, 0, 0, .5);
}
/* Кресло, чей голос попал в протокол, отлито из светлой бронзы */
.cons-cameo--present .cons-cameo__disc {
  background: radial-gradient(circle at 34% 26%, #f0d78b, #c9a227 56%, #8a6420);
}
.cons-cameo--present .cons-cameo__disc span { color: #3a2a06; text-shadow: 0 1px 0 rgba(255,250,224,.6); }
/* Пустое кресло: пунктир, как пустой оттиск реестра. Не порок — отсутствие. */
.cons-cameo--empty .cons-cameo__disc {
  background: rgba(255, 244, 208, .12);
  border: 1px dashed rgba(70, 48, 14, .55);
  box-shadow: inset 0 2px 6px rgba(70, 48, 14, .16);
}
.cons-cameo--empty .cons-cameo__disc span { color: #6b5326; text-shadow: none; }

.cons-cameo__name {
  font-family: var(--font-serif);
  font-size: 15px;
  letter-spacing: .08em;
  color: var(--cons-ink);
}
.cons-cameo__duty {
  margin-top: 2px;
  font-family: var(--font-text);
  font-size: 12.5px;
  line-height: 1.4;
  color: var(--cons-ink-2);
}
.cons-cameo__model {
  margin-top: 4px;
  font-family: var(--font-text);
  font-size: 11.5px;
  line-height: 1.35;
  color: var(--cons-ink-3);
  overflow-wrap: anywhere;
}
.cons-cameo__rounds {
  margin-top: 4px;
  font-family: var(--font-serif);
  font-size: 11.5px;
  letter-spacing: .1em;
  color: var(--cons-ink-2);
}
.cons-cameo__why {
  margin-top: 5px;
  font-family: var(--font-text);
  font-style: italic;
  font-size: 12.5px;
  line-height: 1.45;
  color: #56421c;
}

/* ---------- Линейка веков ---------- */

.cons-ruler {
  margin-top: 18px;
  padding: 15px 15px 12px;
  border: 1px solid rgba(70, 48, 14, .3);
  background: rgba(255, 247, 219, .42);
  overflow-x: auto;
}
.cons-ruler svg { display: block; min-width: 460px; width: 100%; height: auto; }
.cons-ruler__cap {
  margin: 8px 0 0;
  font-family: var(--font-text);
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--cons-ink-2);
}
.cons-ruler .cn-band { fill: #C9A227; }
.cons-ruler .cn-band--out { fill: #3E5B4C; }
.cons-ruler .cn-core { fill: rgba(201, 162, 39, .22); stroke: #8a6420; stroke-dasharray: 3 3; }
.cons-ruler .cn-tick { stroke: rgba(70, 48, 14, .45); }
.cons-ruler .cn-label {
  font-family: var(--font-serif);
  font-size: 11.5px;
  fill: #4a3616;
}
.cons-ruler .cn-year {
  font-family: var(--font-num);
  font-size: 11.5px;
  fill: #4a3616;
}

/* ---------- 3. Единогласно: золотая печать ---------- */

.cons-agreed { list-style: none; margin: 0; padding: 0; }
.cons-agreed li {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  gap: 13px;
  align-items: start;
  padding: 12px 0;
  border-bottom: 1px solid var(--cons-hair);
}
.cons-agreed li:last-child { border-bottom: none; }

.cons-seal-gold {
  width: 46px; height: 46px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  text-align: center;
  background: radial-gradient(circle at 34% 28%, #f0d78b, #c9a227 55%, #8a6420);
  box-shadow:
    inset 0 1px 0 rgba(255, 250, 224, .8),
    inset 0 -3px 7px rgba(0, 0, 0, .32),
    0 3px 9px rgba(70, 48, 14, .4);
  font-family: var(--font-serif);
  font-size: 9.5px;
  letter-spacing: .06em;
  text-transform: uppercase;
  line-height: 1.15;
  color: #3a2a06;
  text-shadow: 0 1px 0 rgba(255, 250, 224, .55);
}

.cons-agreed__text {
  font-family: var(--font-text);
  font-size: 16px;
  line-height: 1.55;
  color: var(--cons-ink);
}
.cons-agreed__meta {
  margin-top: 4px;
  font-family: var(--font-serif);
  font-size: 12.5px;
  letter-spacing: .06em;
  color: var(--cons-ink-2);
}

/* ---------- 4. РАСХОЖДЕНИЯ: главное на листе ---------- */

.cons-disputes { display: grid; gap: 20px; }

.cons-disp {
  position: relative;
  padding: 20px clamp(15px, 2.4vw, 26px) 20px;
  border: 1px solid rgba(70, 48, 14, .42);
  border-top: 3px solid #8a6420;
  background: rgba(255, 247, 219, .55);
  box-shadow: 0 4px 14px rgba(70, 48, 14, .12);
}
/* Устоявшее во втором круге возражение — латунная кромка слева */
.cons-disp--persisted { border-left: 3px solid var(--cons-gold); }

.cons-disp__axis {
  display: inline-block;
  padding: 3px 10px 4px;
  border: 1px solid rgba(70, 48, 14, .4);
  border-radius: 2px;
  background: rgba(70, 48, 14, .1);
  font-family: var(--font-serif);
  font-size: 11.5px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: #4a3413;
}
.cons-disp__weight {
  float: right;
  font-family: var(--font-num);
  font-size: 12.5px;
  color: var(--cons-ink-3);
}

/* Крупный кегль — здесь и нигде больше */
.cons-disp__title {
  margin: 11px 0 0;
  font-family: var(--font-display);
  font-size: clamp(21px, 2.9vw, 32px);
  line-height: 1.22;
  letter-spacing: .015em;
  color: #33240c;
}

.cons-disp__cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  margin-top: 16px;
  border: 1px solid rgba(70, 48, 14, .28);
  background: rgba(255, 250, 228, .5);
}
.cons-disp__col { padding: 14px 16px 15px; }
.cons-disp__col + .cons-disp__col { border-left: 1px solid rgba(70, 48, 14, .28); }

/* Ни одна из колонок не окрашена «правильной». Разница — только в кромке. */
.cons-disp__col--many { border-top: 2px solid rgba(138, 100, 32, .55); }
.cons-disp__col--one  { border-top: 2px solid var(--cons-patina); }

.cons-disp__who {
  font-family: var(--font-serif);
  font-size: 12px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: #4a3413;
}
.cons-disp__count {
  margin-top: 3px;
  font-family: var(--font-num);
  font-size: 15px;
  color: #6b5014;
}
/* Мнение большинства и особое мнение набраны ОДНИМ кеглем — правило §3.5 */
.cons-disp__body {
  margin: 9px 0 0;
  font-family: var(--font-text);
  font-size: 16.5px;
  line-height: 1.58;
  color: var(--cons-ink);
}
.cons-disp__seats {
  margin: 9px 0 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 5px 7px;
}
.cons-disp__seats li {
  padding: 2px 8px 3px;
  border: 1px solid rgba(70, 48, 14, .32);
  border-radius: 2px;
  font-family: var(--font-serif);
  font-size: 12px;
  letter-spacing: .06em;
  color: #4a3413;
  background: rgba(255, 250, 228, .6);
}

.cons-disp__stood {
  margin-top: 11px;
  padding: 9px 12px 10px;
  border-left: 2px solid var(--cons-gold);
  background: rgba(201, 162, 39, .12);
  font-family: var(--font-text);
  font-style: italic;
  font-size: 15px;
  line-height: 1.5;
  color: #3d2b0f;
}
.cons-disp__stood--yielded {
  border-left-color: var(--cons-patina);
  background: rgba(62, 91, 76, .12);
}

.cons-disp__refuted {
  margin-top: 15px;
  padding: 13px 15px 14px;
  border: 1px dashed rgba(70, 48, 14, .5);
  background: rgba(255, 250, 228, .55);
  font-family: var(--font-text);
  font-size: 15.5px;
  line-height: 1.58;
  color: var(--cons-ink);
}
.cons-disp__refuted b {
  display: block;
  margin-bottom: 3px;
  font-family: var(--font-serif);
  font-size: 12px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: #4a3413;
  font-weight: 400;
}

.cons-disp__acts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
}

/* Довод, снятый хранителем: остаётся на листе зачёркнутым */
.cons-disp--struck .cons-disp__title,
.cons-disp--struck .cons-disp__body { text-decoration: line-through; opacity: .72; }
.cons-disp--struck { border-top-color: var(--cons-patina); }

.cons-note {
  margin-top: 12px;
  padding: 11px 14px 12px;
  border-left: 2px solid #8a6420;
  background: rgba(70, 48, 14, .08);
  font-family: var(--font-text);
  font-size: 15px;
  line-height: 1.55;
  color: var(--cons-ink);
}
.cons-note__who {
  display: block;
  margin-bottom: 3px;
  font-family: var(--font-serif);
  font-size: 11.5px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: #4a3413;
}
.cons-note--seller { border-left-color: var(--cons-patina); }

/* Форма пометы: хранитель приписывает своё под доводом, но слов моделей
   не касается — потому это отдельное поле внизу карточки, а не правка текста. */
.cons-note--form { border-left-color: var(--cons-gold); }
.cons-note--form textarea {
  width: 100%;
  margin-top: 6px;
  padding: 9px 11px;
  min-height: 74px;
  border: 1px solid rgba(70, 48, 14, .45);
  border-radius: 2px;
  background: rgba(255, 250, 228, .7);
  font-family: var(--font-text);
  font-size: 15.5px;
  line-height: 1.5;
  color: var(--cons-ink);
  resize: vertical;
}
.cons-note--form textarea:focus-visible { outline: 2px solid #8a6420; outline-offset: 2px; }
.cons-note--form .cons-lens__acts { margin-top: 9px; }

/* ---------- 5. Сопоставимые продажи ---------- */

.cons-table-wrap { overflow-x: auto; }
.cons-comps {
  width: 100%;
  min-width: 560px;
  border-collapse: collapse;
  font-family: var(--font-text);
  font-size: 15px;
  color: var(--cons-ink);
}
.cons-comps th {
  padding: 8px 10px;
  border-bottom: 1px solid var(--cons-hair-2);
  text-align: left;
  font-family: var(--font-serif);
  font-size: 11.5px;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: #4a3413;
  font-weight: 400;
}
.cons-comps td {
  padding: 10px;
  border-bottom: 1px solid var(--cons-hair);
  vertical-align: top;
  line-height: 1.5;
}
.cons-comps td.cons-num { font-family: var(--font-num); white-space: nowrap; }
.cons-comps a { color: #6b4f14; text-decoration: underline; text-underline-offset: 3px; }
.cons-comps a:hover { color: #3d2b0f; }
/* Непроверенная ссылка: строка серая и в медиану не идёт */
.cons-comps tr.is-unverified td { color: #6b5326; }
.cons-src {
  display: inline-block;
  margin-top: 3px;
  font-family: var(--font-serif);
  font-size: 11.5px;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.cons-src--checked   { color: #3d5a2b; }
.cons-src--unverified{ color: #6b5326; }

/* ---------- 6. Очный осмотр ---------- */

.cons-inperson { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.cons-inperson li {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr);
  gap: 11px;
  padding: 11px 13px 12px;
  border: 1px solid rgba(70, 48, 14, .3);
  background: rgba(255, 250, 228, .5);
  font-family: var(--font-text);
  font-size: 16px;
  line-height: 1.55;
  color: var(--cons-ink);
}
.cons-inperson li::before {
  content: '';
  width: 16px; height: 16px;
  margin-top: 4px;
  border-radius: 50%;
  border: 1px solid rgba(70, 48, 14, .5);
  background: radial-gradient(circle at 35% 30%, #5c7d6b, #3E5B4C);
}

/* ---------- 7. Вмешательства фильтра ---------- */

.cons-guard {
  padding: 14px 16px 15px;
  border: 1px solid rgba(70, 48, 14, .4);
  background: rgba(62, 91, 76, .12);
  font-family: var(--font-text);
  font-size: 15.5px;
  line-height: 1.6;
  color: var(--cons-ink);
}
.cons-guard ul { margin: 8px 0 0; padding-left: 20px; }
.cons-guard li { margin-top: 4px; }

/* ---------- 8. Подписи ---------- */

.cons-sign { list-style: none; margin: 0; padding: 0; }
.cons-sign li {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  align-items: baseline;
  padding: 9px 0;
  border-bottom: 1px solid var(--cons-hair);
  font-family: var(--font-text);
  font-size: 14.5px;
  color: var(--cons-ink-2);
}
.cons-sign li b {
  font-family: var(--font-serif);
  font-size: 14px;
  letter-spacing: .1em;
  color: var(--cons-ink);
  font-weight: 400;
  min-width: 132px;
}
.cons-sign .cons-num { font-family: var(--font-num); color: var(--cons-ink); }

.cons-human {
  margin-top: 16px;
  padding: 15px 17px 16px;
  border: 1px solid rgba(70, 48, 14, .45);
  background: rgba(255, 247, 219, .6);
  font-family: var(--font-text);
  font-size: 16px;
  line-height: 1.6;
  color: var(--cons-ink);
}
.cons-human em { font-style: italic; color: #4a3616; }
.cons-human__rule {
  margin-top: 9px;
  padding-top: 9px;
  border-top: 1px solid var(--cons-hair);
  font-family: var(--font-serif);
  font-size: 13.5px;
  letter-spacing: .06em;
  color: var(--cons-ink-2);
}

/* Панель хранителя внутри протокола */
.cons-keeperbar {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  align-items: center;
  margin-top: 18px;
  padding: 13px 15px 14px;
  border: 1px dashed rgba(70, 48, 14, .5);
  background: rgba(70, 48, 14, .07);
}
.cons-keeperbar__label {
  font-family: var(--font-serif);
  font-size: 12px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: #4a3413;
  margin-right: 4px;
}

/* ============================================================
   6. Подсветка ячейки на витрине (блок «D»)
   ============================================================ */

/* Рамка ячейки сетки 6×4 поверх фотографии.
   Затемнение вокруг делается разлётом тени — один узел, ноль оверлеев. */
.cons-cell {
  position: absolute;
  z-index: 5;
  border: 1px solid var(--gold-hi);
  box-shadow:
    0 0 0 1px rgba(43, 6, 15, .8),
    0 0 22px rgba(232, 197, 95, .5),
    0 0 0 4000px rgba(12, 4, 8, .62);
  pointer-events: none;
  opacity: 0;
  transition: opacity .5s var(--ease-lux), left .5s var(--ease-lux),
              top .5s var(--ease-lux), width .5s var(--ease-lux),
              height .5s var(--ease-lux);
}
.cons-cell.is-on { opacity: 1; }
/* Подпись ячейки живёт ВНУТРИ рамки: у витрины overflow:hidden,
   и всё, что вынесено наружу, будет отрезано рамой. */
.cons-cell::after {
  content: attr(data-cell);
  position: absolute;
  left: 3px; bottom: 3px;
  padding: 2px 8px 3px;
  border: 1px solid rgba(201, 162, 39, .5);
  background: rgba(20, 5, 10, .88);
  font-family: var(--font-num);
  font-size: 12px;
  letter-spacing: .06em;
  color: var(--gold-hi);
  white-space: nowrap;
}

/* Плашка «вы смотрите довод» — всплывает под витриной */
.cons-lens {
  margin-top: 12px;
  padding: 12px 14px 13px;
  border: 1px solid rgba(201, 162, 39, .4);
  border-left: 2px solid var(--gold);
  background: rgba(20, 5, 10, .82);
}
.cons-lens__who {
  font-family: var(--font-serif);
  font-size: 11.5px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--gold);
}
.cons-lens__text {
  margin: 6px 0 0;
  font-family: var(--font-text);
  font-size: 15px;
  line-height: 1.55;
  color: var(--parchment);
}
.cons-lens__whisper {
  margin: 9px 0 0;
  padding-top: 9px;
  border-top: 1px solid rgba(201, 162, 39, .24);
  font-family: var(--font-text);
  font-style: italic;
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--smoke);
}
.cons-lens__acts { margin-top: 11px; display: flex; flex-wrap: wrap; gap: 8px; }

/* ============================================================
   7. Состояния загрузки и отказа
   ============================================================ */

.cons-loading,
.cons-fail {
  margin-top: 24px;
  padding: 14px 16px;
  border: 1px solid rgba(201, 162, 39, .24);
  background: rgba(43, 6, 15, .45);
  font-family: var(--font-text);
  font-size: 15px;
  line-height: 1.55;
  color: var(--smoke);
}

.cons-demo {
  margin-bottom: 14px;
  padding: 9px 14px 10px;
  border: 1px dashed var(--gold);
  background: rgba(110, 27, 46, .35);
  font-family: var(--font-serif);
  font-size: 12.5px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--gold-hi);
  text-align: center;
}

/* ============================================================
   8. Мобильная раскладка: 768 и 390
   ============================================================ */

@media (max-width: 980px) {
  /* Стол не влезает — кресла становятся рядом медальонов.
     Порядок кресел сохраняется: он и есть состав совета. */
  .cons-table {
    aspect-ratio: auto;
    min-height: 0;
    max-width: none;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 20px 10px;
    padding: 4px 0 0;
  }
  .cons-table__oval {
    position: static;
    grid-column: 1 / -1;
    order: -1;
    height: 78px;
    border-radius: 60px;
    margin-bottom: 6px;
  }
  /* Овал стал латунной полосой поверху — надпись переезжает в неё,
     иначе «Кругъ первый» ляжет поверх табличек с должностями. */
  .cons-table__word {
    left: 8%; right: 8%;
    top: 39px;
    font-size: 11.5px;
    letter-spacing: .16em;
  }
  .cons-table__word b { font-size: 19px; display: inline; margin-right: 10px; }
  .cons-seat {
    position: static;
    width: auto;
    margin: 0;
  }
  .cons-seat__cameo { width: 62px; height: 62px; }
}

@media (max-width: 768px) {
  .cons-prot__inner { padding: 26px 18px 30px; }
  .cons-prot::after { inset: 6px; }

  /* Две колонки расхождения превращаются в две карточки друг под другом.
     Кегль не уменьшается: расхождение — главное и на телефоне. */
  .cons-disp__cols { grid-template-columns: 1fr; }
  .cons-disp__col + .cons-disp__col {
    border-left: 0;
    border-top: 1px solid rgba(70, 48, 14, .28);
  }
  .cons-disp__col--one { border-top: 2px solid var(--cons-patina); }

  .cons-roster { grid-template-columns: repeat(auto-fit, minmax(132px, 1fr)); gap: 14px 8px; }
  .cons-hall { padding: 20px 14px 24px; }
  .cons-sheet { margin-top: 34px; }
}

@media (max-width: 520px) {
  .cons-table { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cons-table__oval { height: 66px; }
  .cons-table__word b { font-size: 20px; }
  .cons-table__word { font-size: 12px; letter-spacing: .14em; }

  .cons-prot__inner { padding: 22px 13px 26px; }
  .cons-prot__crest { width: 74px; height: 74px; }
  .cons-prot__crest span { font-size: 23px; }
  .cons-disp { padding: 16px 13px 17px; }
  .cons-disp__weight { float: none; display: block; margin-top: 6px; }

  .cons-agreed li { grid-template-columns: 38px minmax(0, 1fr); gap: 10px; }
  .cons-seal-gold { width: 38px; height: 38px; font-size: 8.5px; }

  .cons-plate { grid-template-columns: 38px minmax(0, 1fr); gap: 11px; padding: 13px 13px 14px; }
  .cons-plate__mark { width: 38px; height: 38px; }
  .cons-plate__acts .cons-btn { width: 100%; justify-content: center; }

  .cons-sign li b { min-width: 100%; }
  .cons-mode { grid-template-columns: 1fr; }
  .cons-mode__cost { justify-self: start; }
}

/* ============================================================
   9. prefers-reduced-motion: те же состояния, без движения
   ============================================================ */

@media (prefers-reduced-motion: reduce) {
  .cons-seat,
  .cons-seat__cameo,
  .cons-hall.is-wave .cons-table__oval::after {
    animation: none !important;
  }
  .cons-seat__cameo,
  .cons-cell,
  .cons-btn { transition: none !important; }
  .cons-hall.is-wave .cons-table__oval::after { opacity: .16; transform: translateX(120%); }
  .cons-seat--spoke .cons-seat__cameo { transform: none; }
}

/* ============================================================
   10. Печать: протокол — документ, и печатается как документ
   ============================================================ */

@media print {
  .cons-hall, .cons-call, .cons-ask, .cons-keeperbar,
  .cons-disp__acts, .cons-sheet__toggle, .cons-demo { display: none !important; }
  .cons-prot {
    box-shadow: none;
    border: 1px solid #8a6420;
    background: #fff;
  }
  .cons-prot::before { display: none; }
  .cons-disp { break-inside: avoid; background: none; }
  .cons-plaque--final { break-before: auto; }
}
