/* ============================================================
   ВИЗАРТЪ — «Торги при свечах» и «Афиша торгов»
   Дополняет style.css. Переменные и общие классы берутся оттуда.
   ============================================================ */

/* ---------- Общее для зала и афиши ---------- */

.hall-body {
  background: #1B0308;
  min-height: 100vh;
  /* clip, а не hidden: не создаёт скролл-контейнер и не ломает position: sticky */
  overflow-x: clip;
}
/* Зал темнее витрины: бархат приглушён, луч один */
.hall-body::before { opacity: .32; }
.hall-body::after {
  background: radial-gradient(ellipse 60% 45% at 50% -6%, rgba(201,162,39,.10), transparent 62%);
}
.vignette--hall {
  background:
    radial-gradient(ellipse 70% 60% at 50% 34%, transparent 20%, rgba(4,2,1,.55) 72%, rgba(3,1,1,.9) 100%);
}

/* Латунная табличка — сквозной мотив */
.hall-plate {
  display: inline-block;
  padding: 9px 20px;
  border-radius: 3px;
  background: linear-gradient(168deg, #E8C55F 0%, #C9A227 42%, #8A6420 100%);
  box-shadow:
    inset 0 1px 0 rgba(255,246,214,.75),
    inset 0 -1px 0 rgba(60,38,8,.5),
    0 6px 18px rgba(0,0,0,.5);
  color: #2A1B04;
  font-family: var(--font-num);
  font-size: 15px;
  letter-spacing: .1em;
  text-shadow: 0 1px 0 rgba(255,248,220,.55);
}

.hall-hint {
  font-family: var(--font-serif);
  font-style: italic;
  color: var(--smoke);
  font-size: 15px;
}

/* ============================================================
   Каркас зала: протокол · подиум · конторка
   ============================================================ */

.hall {
  /* Новая запись протокола не должна дёргать страницу под курсором */
  overflow-anchor: none;
  display: grid;
  grid-template-columns: minmax(210px, 20%) minmax(0, 55%) minmax(280px, 25%);
  grid-template-areas: 'protocol podium desk';
  gap: 26px;
  align-items: start;
  max-width: 1720px;
  margin: 0 auto;
  padding: 26px 28px 80px;
}
.podium  { grid-area: podium; }
.desk    { grid-area: desk; }
.protocol{ grid-area: protocol; }

/* ---------- Подиум ---------- */

.podium {
  position: relative;
  display: flex; flex-direction: column; align-items: center;
  padding-top: 8px;
  text-align: center;
}
/* Единственный луч сверху на лот */
.podium__beam {
  position: absolute;
  top: -40px; left: 50%;
  width: 118%; height: 78%;
  transform: translateX(-50%);
  pointer-events: none;
  background:
    conic-gradient(from 180deg at 50% -12%,
      transparent 0deg, transparent 74deg,
      rgba(255,226,160,.16) 82deg,
      rgba(255,226,160,.07) 90deg,
      rgba(255,226,160,.16) 98deg,
      transparent 106deg, transparent 360deg);
  filter: blur(6px);
  opacity: .9;
  animation: beam-breathe 9s ease-in-out infinite;
}
@keyframes beam-breathe {
  0%, 100% { opacity: .78; }
  50%      { opacity: 1; }
}
/* Пылинки в конусе света: редкие искры, а не сетка */
.podium__dust {
  position: absolute; top: -20px; left: 50%; transform: translateX(-50%);
  width: 52%; height: 70%;
  pointer-events: none; opacity: .55;
  background-image:
    radial-gradient(circle 1px at 22% 34%, rgba(255,236,196,.85), transparent 100%),
    radial-gradient(circle 1px at 68% 12%, rgba(255,236,196,.6), transparent 100%),
    radial-gradient(circle 1.5px at 44% 76%, rgba(255,236,196,.5), transparent 100%);
  background-size: 110px 130px, 170px 190px, 90px 150px;
  -webkit-mask-image: radial-gradient(ellipse 70% 60% at 50% 10%, #000 20%, transparent 80%);
  mask-image: radial-gradient(ellipse 70% 60% at 50% 10%, #000 20%, transparent 80%);
  animation: dust-drift 22s linear infinite;
}
@keyframes dust-drift {
  from { background-position: 0 140px, 0 190px, 0 150px; }
  to   { background-position: 12px -130px, -14px -190px, 8px -150px; }
}

.podium__lotno { position: relative; z-index: 2; margin-bottom: 16px; }

.podium__frame {
  position: relative; z-index: 2;
  padding: 18px;
  background:
    linear-gradient(150deg, rgba(232,197,95,.9), rgba(138,100,32,.85) 45%, rgba(90,62,18,.9));
  border-radius: 4px;
  box-shadow:
    inset 0 0 0 1px rgba(255,240,200,.35),
    0 30px 70px rgba(0,0,0,.72),
    0 0 90px rgba(201,162,39,.14);
  max-width: 620px;
}
.podium__canvas {
  position: relative;
  overflow: hidden;
  background: #140308;
  box-shadow: inset 0 0 60px rgba(0,0,0,.75);
}
.podium__canvas img {
  width: 100%; height: auto; display: block;
  filter: brightness(1.04) contrast(1.03);
}
.podium__canvas::after {
  content: '';
  position: absolute; inset: 0;
  background: url('../assets/textures/craquelure.png') center / 620px repeat;
  mix-blend-mode: soft-light; opacity: .3;
  pointer-events: none;
}
.podium__glass {
  position: absolute; inset: 0;
  background: linear-gradient(122deg, rgba(255,240,205,.14) 0%, transparent 34%, transparent 68%, rgba(255,240,205,.06) 100%);
  pointer-events: none;
}

.podium__title {
  position: relative; z-index: 2;
  margin: 26px 0 6px;
  font-family: var(--font-display);
  font-size: clamp(22px, 2.1vw, 32px);
  letter-spacing: .06em;
  color: var(--parchment);
  text-shadow: 0 2px 18px rgba(0,0,0,.8);
  max-width: 680px;
}
.podium__origin {
  position: relative; z-index: 2;
  font-family: var(--font-serif); font-style: italic;
  color: var(--smoke); max-width: 640px;
}

.lot-facts {
  position: relative; z-index: 2;
  margin-top: 22px;
  width: min(640px, 100%);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
  gap: 1px;
  background: rgba(201,162,39,.22);
  border: 1px solid rgba(201,162,39,.28);
}
.lot-facts__cell {
  background: linear-gradient(rgba(74,14,28,.55), rgba(28,6,13,.75));
  padding: 14px 16px;
  text-align: left;
}
.lot-facts__label {
  font-family: var(--font-serif);
  font-size: 12px; letter-spacing: .18em; text-transform: uppercase;
  color: var(--bronze);
}
.lot-facts__value {
  margin-top: 5px; font-size: 16px; line-height: 1.45; color: var(--parchment);
}
.lot-facts__value--num { font-family: var(--font-num); color: var(--gold-hi); }

.podium__passport-link {
  position: relative; z-index: 2;
  margin-top: 18px;
  display: inline-flex; align-items: center; gap: 9px;
  font-family: var(--font-serif); font-size: 17px;
  letter-spacing: .06em; color: var(--gold);
  border-bottom: 1px solid rgba(201,162,39,.4);
  padding-bottom: 3px;
  transition: color .3s var(--ease-lux), border-color .3s;
}
.podium__passport-link:hover { color: var(--gold-hi); border-color: var(--gold-hi); }
.podium__passport-link::after { content: '↗'; font-size: 14px; }

/* ============================================================
   Конторка
   ============================================================ */

.desk {
  position: sticky; top: 74px;
  display: flex; flex-direction: column; gap: 20px;
  padding: 22px 20px 26px;
  background: linear-gradient(168deg, rgba(74,14,28,.62), rgba(24,5,11,.9));
  border: 1px solid rgba(201,162,39,.26);
  border-radius: 3px;
  box-shadow: 0 26px 60px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,240,200,.08);
}
.desk__section + .desk__section { border-top: 1px solid rgba(201,162,39,.16); padding-top: 18px; }

/* ---------- Свеча ---------- */

.candle {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  position: relative;
}
.candle__stage {
  position: relative;
  width: 150px; height: 330px;
  cursor: help;
}
.candle__stage svg { width: 100%; height: 100%; overflow: visible; }
.candle__halo {
  position: absolute; left: 50%; top: 12%;
  width: 200px; height: 200px;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, rgba(255,196,92,.26), rgba(255,170,60,.08) 45%, transparent 70%);
  pointer-events: none;
  animation: halo-breathe 3.4s ease-in-out infinite;
  transition: top .35s linear;
}
@keyframes halo-breathe {
  0%, 100% { opacity: .78; transform: translate(-50%, -50%) scale(1); }
  50%      { opacity: 1;   transform: translate(-50%, -50%) scale(1.08); }
}

.flame { transform-box: fill-box; transform-origin: 50% 100%; }
.flame__outer { animation: flame-dance 1.5s ease-in-out infinite alternate; transform-box: fill-box; transform-origin: 50% 100%; }
.flame__inner { animation: flame-dance 1.1s ease-in-out infinite alternate-reverse; transform-box: fill-box; transform-origin: 50% 100%; }
@keyframes flame-dance {
  0%   { transform: scale(1, 1) skewX(0deg); opacity: .92; }
  35%  { transform: scale(.94, 1.09) skewX(-3deg); opacity: 1; }
  70%  { transform: scale(1.06, .95) skewX(2.5deg); opacity: .88; }
  100% { transform: scale(.97, 1.05) skewX(-1.5deg); opacity: 1; }
}
/* Последняя минута — пламя учащается */
.candle.is-final .flame__outer { animation-duration: .42s; }
.candle.is-final .flame__inner { animation-duration: .3s; }
.candle.is-final .candle__halo { animation-duration: 1s; }

/* Обрыв связи — свеча тускнеет до уголька */
.candle.is-dark .flame { opacity: .18; filter: saturate(.2) brightness(.5); }
.candle.is-dark .candle__halo { opacity: .08; }
.candle.is-dark .candle__wax { filter: brightness(.55) saturate(.5); }

/* Пауза хранителя — свеча под стеклянным колпаком */
.candle.is-paused .candle__stage::after {
  content: '';
  position: absolute; left: 50%; top: 2%;
  width: 128px; height: 96%;
  transform: translateX(-50%);
  border-radius: 64px 64px 8px 8px;
  border: 1px solid rgba(201,162,39,.35);
  background: linear-gradient(118deg, rgba(220,235,255,.13), transparent 42%, rgba(220,235,255,.05));
  pointer-events: none;
}
.candle.is-paused .flame__outer,
.candle.is-paused .flame__inner { animation: none; opacity: .5; }

/* Долив воска */
.candle.is-relit .candle__wax { filter: drop-shadow(0 0 14px rgba(232,197,95,.85)); }
.candle__relit-spark {
  position: absolute; inset: 0; pointer-events: none;
  opacity: 0;
  background: radial-gradient(circle at 50% 26%, rgba(255,232,170,.55), transparent 58%);
}
.candle.is-relit .candle__relit-spark { animation: relit-spark 1.1s var(--ease-lux); }
@keyframes relit-spark {
  0%   { opacity: 0; }
  25%  { opacity: 1; }
  100% { opacity: 0; }
}

/* Капля воска */
.candle__drip {
  opacity: 0;
}
.candle__drip.is-running { animation: wax-drip 3.6s var(--ease-lux); }
@keyframes wax-drip {
  0%   { opacity: 0; transform: translateY(0) scaleY(.6); }
  12%  { opacity: .95; transform: translateY(2px) scaleY(1); }
  85%  { opacity: .9;  transform: translateY(46px) scaleY(1.5); }
  100% { opacity: 0;   transform: translateY(52px) scaleY(1.6); }
}

.candle__clock {
  font-family: var(--font-num);
  font-size: 26px;
  letter-spacing: .06em;
  color: var(--gold-hi);
  text-shadow: 0 0 22px rgba(232,197,95,.35);
}
.candle.is-final .candle__clock { color: #F2D98B; animation: clock-pulse 1s ease-in-out infinite; }
@keyframes clock-pulse { 0%,100% { opacity: 1; } 50% { opacity: .55; } }
.candle__note { font-size: 14px; color: var(--smoke); font-family: var(--font-serif); font-style: italic; text-align: center; }

/* Тултип свечи */
.candle__tip {
  position: absolute; left: 50%; bottom: calc(100% - 14px);
  transform: translate(-50%, 8px);
  width: 290px;
  padding: 14px 16px;
  background: linear-gradient(160deg, rgba(243,231,201,.96), rgba(226,209,170,.94));
  color: var(--parch-ink);
  font-family: var(--font-serif);
  font-size: 15px; line-height: 1.5;
  border: 1px solid rgba(138,100,32,.6);
  box-shadow: 0 18px 40px rgba(0,0,0,.6);
  opacity: 0; visibility: hidden;
  transition: opacity .35s var(--ease-lux), transform .35s var(--ease-lux), visibility .35s;
  z-index: 20;
  pointer-events: none;
}
.candle__stage:hover .candle__tip,
.candle__stage:focus-visible .candle__tip,
.candle__stage.is-tipped .candle__tip {
  opacity: 1; visibility: visible; transform: translate(-50%, 0);
}

/* ---------- Текущая ставка ---------- */

.price__label {
  font-family: var(--font-serif);
  font-size: 13px; letter-spacing: .2em; text-transform: uppercase;
  color: var(--bronze);
}
.price__value {
  font-family: var(--font-num);
  font-size: 40px;
  line-height: 1.15;
  color: var(--gold-hi);
  text-shadow: 0 2px 26px rgba(201,162,39,.35);
  word-break: break-word;
}
.price__value.is-bumped { animation: price-bump .7s var(--ease-lux); }
@keyframes price-bump {
  0%   { transform: scale(1); }
  30%  { transform: scale(1.08); text-shadow: 0 2px 40px rgba(232,197,95,.8); }
  100% { transform: scale(1); }
}
.price__word {
  margin-top: 8px;
  font-family: var(--font-serif); font-style: italic;
  font-size: 17px; color: var(--parchment);
}
.price__word.is-mine { color: var(--gold); }
.price__meta { margin-top: 6px; font-size: 14px; color: var(--smoke); }

/* ---------- Сургучная печать-кнопка ---------- */

.wax-seal {
  position: relative;
  display: flex; flex-direction: column; align-items: center; gap: 12px;
  width: 100%;
  padding: 6px 0 2px;
  background: none; border: 0; cursor: pointer;
  font: inherit; color: inherit;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
  user-select: none;
}
.wax-seal__disc {
  position: relative;
  width: 128px; height: 128px;
  display: grid; place-items: center;
  border-radius: 50%;
  background:
    radial-gradient(circle at 34% 28%, #9E2233, #6E1B2E 42%, #4A0E1C 78%, #330914 100%);
  box-shadow:
    inset 0 2px 6px rgba(255,190,190,.22),
    inset 0 -6px 14px rgba(0,0,0,.6),
    0 14px 28px rgba(0,0,0,.6),
    0 0 0 1px rgba(201,162,39,.35);
  transition: transform .25s var(--ease-lux), box-shadow .25s var(--ease-lux), filter .3s;
}
.wax-seal__disc::before {
  content: '';
  position: absolute; inset: 9px;
  border-radius: 50%;
  border: 1px dashed rgba(232,197,95,.35);
}
.wax-seal__monogram {
  font-family: var(--font-display);
  font-size: 34px; letter-spacing: .06em;
  color: rgba(243,231,201,.86);
  text-shadow: 0 1px 0 rgba(0,0,0,.6), 0 -1px 0 rgba(255,200,200,.25);
  pointer-events: none;
}
/* Растекающийся сургуч из-под печати */
.wax-seal__wax {
  position: absolute; left: 50%; top: 50%;
  width: 128px; height: 128px;
  transform: translate(-50%, -50%) scale(var(--wax, 0));
  border-radius: 46% 54% 52% 48% / 50% 46% 54% 50%;
  background: radial-gradient(circle, rgba(110,27,46,.92), rgba(74,14,28,.65) 60%, rgba(74,14,28,0) 78%);
  filter: blur(1px);
  opacity: calc(var(--press, 0) * .95);
  pointer-events: none;
  z-index: -1;
}
.wax-seal__ring { position: absolute; inset: -9px; transform: rotate(-90deg); pointer-events: none; }
.wax-seal__ring circle { fill: none; stroke-width: 2.5; }
.wax-seal__ring .track { stroke: rgba(201,162,39,.18); }
.wax-seal__ring .bar { stroke: var(--gold-hi); stroke-linecap: round; filter: drop-shadow(0 0 6px rgba(232,197,95,.7)); }

.wax-seal.is-pressing .wax-seal__disc {
  transform: scale(.94) translateY(3px);
  box-shadow:
    inset 0 3px 12px rgba(0,0,0,.55),
    inset 0 -2px 6px rgba(255,190,190,.14),
    0 4px 10px rgba(0,0,0,.5),
    0 0 0 1px rgba(232,197,95,.5);
}
.wax-seal.is-done .wax-seal__disc { animation: seal-done .8s var(--ease-lux); }
@keyframes seal-done {
  0%   { transform: scale(.94); }
  40%  { transform: scale(1.06); box-shadow: 0 0 40px rgba(232,197,95,.6), 0 0 0 1px rgba(232,197,95,.8); }
  100% { transform: scale(1); }
}
/* Печать трескается — отказ */
.wax-seal.is-cracked .wax-seal__disc {
  animation: seal-crack .7s ease-out;
}
.wax-seal.is-cracked .wax-seal__disc::after {
  content: '';
  position: absolute; inset: 0;
  border-radius: 50%;
  background: url('../assets/textures/craquelure.png') center / 190px no-repeat;
  mix-blend-mode: overlay;
  opacity: .95;
  animation: crack-fade 1.8s ease-out forwards;
}
@keyframes seal-crack {
  0%   { transform: scale(1); }
  18%  { transform: scale(1.03) rotate(-2deg); }
  38%  { transform: scale(.97) rotate(2deg); }
  60%  { transform: scale(1.01) rotate(-1deg); }
  100% { transform: scale(1); }
}
@keyframes crack-fade { from { opacity: .95; } to { opacity: 0; } }

.wax-seal__caption {
  font-family: var(--font-serif);
  font-size: 18px; letter-spacing: .05em;
  color: var(--parchment);
  text-align: center;
}
.wax-seal__sub {
  font-family: var(--font-serif); font-style: italic;
  font-size: 14px; color: var(--smoke);
  min-height: 1.3em; text-align: center;
}
.wax-seal[disabled] { cursor: not-allowed; }
.wax-seal[disabled] .wax-seal__disc { filter: grayscale(.7) brightness(.5); box-shadow: none; }
.wax-seal[disabled] .wax-seal__caption { color: #7d6a51; }
/* Ваше слово последнее — печать не гаснет, а тихо светится золотом */
.wax-seal.is-leading[disabled] .wax-seal__disc {
  filter: grayscale(.1) brightness(.92);
  box-shadow: inset 0 -6px 14px rgba(0,0,0,.55), 0 0 0 1px rgba(232,197,95,.6),
              0 0 26px rgba(201,162,39,.22);
}
.wax-seal.is-leading[disabled] .wax-seal__caption { color: var(--smoke); }
.wax-seal:focus-visible .wax-seal__disc { outline: 2px solid var(--gold-hi); outline-offset: 6px; }

/* ---------- Своя сумма ---------- */

.own-bid { display: flex; flex-direction: column; gap: 8px; }
.own-bid__row { display: flex; gap: 8px; }
.own-bid input {
  flex: 1; min-width: 0;
  padding: 11px 13px;
  background: rgba(12,4,7,.75);
  border: 1px solid rgba(201,162,39,.3);
  border-radius: 2px;
  color: var(--gold-hi);
  font-family: var(--font-num);
  font-size: 18px;
  letter-spacing: .04em;
}
.own-bid input:focus { outline: none; border-color: var(--gold-hi); box-shadow: 0 0 0 3px rgba(201,162,39,.16); }
.own-bid input::placeholder { color: #6e5b40; font-family: var(--font-serif); }
.own-bid__apply {
  padding: 11px 16px;
  background: linear-gradient(170deg, rgba(232,197,95,.22), rgba(138,100,32,.24));
  border: 1px solid rgba(201,162,39,.45);
  border-radius: 2px;
  color: var(--gold-hi);
  font-family: var(--font-serif); font-size: 15px; letter-spacing: .06em;
  cursor: pointer;
  transition: background .3s var(--ease-lux), color .3s;
  min-height: 44px;
}
.own-bid__apply:hover { background: rgba(201,162,39,.32); color: #2A1B04; }
.own-bid__hint { font-size: 14px; color: var(--smoke); font-family: var(--font-serif); font-style: italic; }
.own-bid__hint.is-bad { color: #E1927F; font-style: normal; }

/* ---------- Поручение маклеру ---------- */

.desk__link {
  background: none; border: 0; padding: 6px 0;
  font-family: var(--font-serif); font-size: 16px;
  letter-spacing: .05em; color: var(--gold);
  border-bottom: 1px solid rgba(201,162,39,.35);
  cursor: pointer; align-self: flex-start;
  transition: color .3s var(--ease-lux);
}
.desk__link:hover { color: var(--gold-hi); }
.desk__autobid-state {
  margin-top: 8px; font-size: 14px; color: var(--patina-text, #93b0a1);
  font-family: var(--font-serif); font-style: italic;
}

.presence {
  display: flex; align-items: center; gap: 9px;
  font-family: var(--font-serif); font-style: italic;
  font-size: 15px; color: var(--smoke);
}
.presence__dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 10px rgba(201,162,39,.8);
  animation: presence-pulse 3s ease-in-out infinite;
}
@keyframes presence-pulse { 0%,100% { opacity: .45; } 50% { opacity: 1; } }

/* ============================================================
   Протокол торгов
   ============================================================ */

.protocol {
  position: sticky; top: 74px;
  max-height: calc(100vh - 100px);
  display: flex; flex-direction: column;
  padding: 18px 4px 10px 0;
  border-right: 1px solid rgba(201,162,39,.16);
}
.protocol__title {
  font-family: var(--font-display);
  font-size: 19px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--gold); margin-bottom: 4px;
}
.protocol__sub { font-size: 13px; color: var(--bronze); font-family: var(--font-serif); font-style: italic; margin-bottom: 14px; }
.protocol__feed {
  overflow-y: auto;
  padding-right: 10px;
  display: flex; flex-direction: column; gap: 10px;
  scrollbar-width: thin;
  scrollbar-color: rgba(201,162,39,.35) transparent;
}
.protocol__feed::-webkit-scrollbar { width: 5px; }
.protocol__feed::-webkit-scrollbar-thumb { background: rgba(201,162,39,.3); }

.entry {
  position: relative;
  padding: 11px 13px 11px 15px;
  background: linear-gradient(140deg, rgba(74,14,28,.42), rgba(20,4,9,.6));
  border: 1px solid rgba(201,162,39,.14);
  border-left: 2px solid rgba(201,162,39,.3);
  border-radius: 2px;
}
.entry.is-new { animation: entry-imprint .7s var(--ease-lux); }
@keyframes entry-imprint {
  0%   { opacity: 0; transform: scale(1.14) translateY(-6px); filter: blur(3px); }
  55%  { opacity: 1; transform: scale(.985); filter: blur(0); }
  100% { transform: scale(1); }
}
.entry--mine {
  border: 1px solid rgba(232,197,95,.75);
  border-left: 2px solid var(--gold-hi);
  box-shadow: 0 0 20px rgba(201,162,39,.16), inset 0 0 22px rgba(201,162,39,.08);
}
.entry__sum {
  font-family: var(--font-num);
  font-size: 20px; color: var(--gold-hi);
  letter-spacing: .02em;
}
.entry--mine .entry__sum { color: #F5E3A8; }
.entry__who { margin-top: 3px; font-family: var(--font-serif); font-size: 15px; color: var(--parchment); }
.entry__when { margin-top: 2px; font-size: 13px; color: var(--bronze); font-family: var(--font-serif); font-style: italic; }
.entry__auto {
  display: inline-block; margin-left: 7px;
  font-size: 11px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--patina); border: 1px solid rgba(62,91,76,.7);
  padding: 1px 6px; border-radius: 2px;
  vertical-align: middle;
}
/* Служебные записи протокола */
.entry--note {
  background: linear-gradient(140deg, rgba(6,46,34,.5), rgba(9,20,16,.6));
  border-left-color: var(--patina);
  font-family: var(--font-serif); font-style: italic;
  color: #B8CFC1; font-size: 15px; line-height: 1.45;
}
.entry--note .entry__when { font-style: normal; }
.entry--hammer {
  background: linear-gradient(140deg, rgba(201,162,39,.24), rgba(40,20,4,.7));
  border-left-color: var(--gold-hi);
  color: var(--parchment);
}
.protocol__empty {
  font-family: var(--font-serif); font-style: italic;
  color: var(--smoke); font-size: 15px; line-height: 1.5;
  padding: 10px 2px;
}

/* Мобильный свиток протокола */
.protocol__toggle { display: none; }

/* ============================================================
   Служебные панели зала
   ============================================================ */

/* Связь с залом прервана */
.link-lost {
  position: fixed; left: 50%; bottom: 22px;
  transform: translate(-50%, 140%);
  z-index: 80;
  display: flex; align-items: center; gap: 12px;
  padding: 13px 22px;
  background: linear-gradient(160deg, rgba(74,14,28,.96), rgba(20,4,9,.96));
  border: 1px solid rgba(201,162,39,.4);
  border-radius: 3px;
  box-shadow: 0 20px 50px rgba(0,0,0,.7);
  font-family: var(--font-serif); font-size: 16px; color: var(--parchment);
  transition: transform .5s var(--ease-lux);
  max-width: calc(100vw - 32px);
}
.link-lost.is-shown { transform: translate(-50%, 0); }
.link-lost__ember {
  width: 10px; height: 10px; border-radius: 50%;
  background: radial-gradient(circle, #E8C55F, #8A2A12 70%);
  animation: ember-glow 1.6s ease-in-out infinite;
  flex: 0 0 auto;
}
@keyframes ember-glow { 0%,100% { opacity: .35; } 50% { opacity: 1; } }

/* Колокольчик депеш «Вашу ставку перебили» */
.bell {
  position: fixed; right: 22px; top: 78px;
  z-index: 82;
  display: flex; align-items: flex-start; gap: 12px;
  width: min(340px, calc(100vw - 32px));
  padding: 15px 18px;
  background: linear-gradient(160deg, rgba(243,231,201,.97), rgba(224,206,166,.95));
  color: var(--parch-ink);
  border: 1px solid rgba(138,100,32,.6);
  box-shadow: 0 22px 50px rgba(0,0,0,.6);
  transform: translateX(130%);
  transition: transform .55s var(--ease-lux);
  font-family: var(--font-serif);
}
.bell.is-shown { transform: none; }
.bell__seal {
  flex: 0 0 auto;
  width: 34px; height: 34px; border-radius: 50%;
  background: radial-gradient(circle at 34% 28%, #9E2233, #6E1B2E 55%, #4A0E1C);
  box-shadow: inset 0 -3px 8px rgba(0,0,0,.5);
  animation: bell-swing .9s var(--ease-lux) 2;
}
@keyframes bell-swing {
  0%, 100% { transform: rotate(0); }
  25% { transform: rotate(-11deg); }
  75% { transform: rotate(9deg); }
}
.bell__title { font-family: var(--font-display); font-size: 17px; letter-spacing: .08em; }
.bell__text { font-size: 15px; line-height: 1.45; margin-top: 3px; }

/* Молоток: «Раз… Два… Продано!» */
.hammer {
  position: fixed; inset: 0; z-index: 90;
  display: grid; place-items: center;
  pointer-events: none;
  opacity: 0; visibility: hidden;
  transition: opacity .35s var(--ease-lux), visibility .35s;
  background: radial-gradient(circle at 50% 45%, rgba(30,6,12,.55), rgba(6,2,4,.82));
}
.hammer.is-shown { opacity: 1; visibility: visible; }
.hammer__word {
  font-family: var(--font-display);
  font-size: clamp(46px, 11vw, 128px);
  letter-spacing: .14em;
  color: var(--parchment);
  text-shadow: 0 0 60px rgba(232,197,95,.5), 0 6px 30px rgba(0,0,0,.8);
  animation: hammer-strike .8s var(--ease-lux);
}
@keyframes hammer-strike {
  0%   { opacity: 0; transform: scale(1.35); letter-spacing: .4em; }
  40%  { opacity: 1; transform: scale(1); letter-spacing: .14em; }
  100% { opacity: 1; }
}
.gold-flash {
  position: fixed; inset: 0; z-index: 92;
  pointer-events: none; opacity: 0;
  background: radial-gradient(circle at 50% 45%, rgba(255,235,175,.85), rgba(201,162,39,.35) 45%, transparent 78%);
}
.gold-flash.is-flashing { animation: gold-flash 1.5s var(--ease-lux); }
@keyframes gold-flash {
  0%   { opacity: 0; }
  22%  { opacity: 1; }
  100% { opacity: 0; }
}

/* Полноэкранный лист итога */
.verdict {
  position: fixed; inset: 0; z-index: 95;
  display: grid; place-items: center;
  padding: 24px;
  background: rgba(6,2,4,.88);
  opacity: 0; visibility: hidden;
  transition: opacity .6s var(--ease-lux), visibility .6s;
}
.verdict.is-shown { opacity: 1; visibility: visible; }
.verdict__sheet {
  position: relative;
  width: min(620px, 100%);
  padding: 54px 46px 44px;
  text-align: center;
  background:
    linear-gradient(160deg, rgba(243,231,201,.97), rgba(226,209,170,.95)),
    url('../assets/textures/parchment.png') center / cover;
  color: var(--parch-ink);
  border: 1px solid rgba(138,100,32,.55);
  box-shadow: 0 40px 100px rgba(0,0,0,.75);
  transform: translateY(26px) scale(.97);
  transition: transform .7s var(--ease-lux);
}
.verdict.is-shown .verdict__sheet { transform: none; }
.verdict__sheet .corner { position: absolute; width: 62px; opacity: .55; }
.verdict__kicker {
  font-family: var(--font-serif); font-style: italic;
  letter-spacing: .18em; text-transform: uppercase; font-size: 13px;
  color: #7a5a1c;
}
.verdict__title {
  margin: 14px 0 10px;
  font-family: var(--font-display);
  font-size: clamp(26px, 3.4vw, 40px);
  letter-spacing: .06em;
  color: #3a2410;
}
.verdict__lot { font-family: var(--font-serif); font-size: 19px; font-style: italic; }
.verdict__sum { margin-top: 16px; font-family: var(--font-num); font-size: 34px; color: #6b4f22; }
.verdict__note { margin-top: 14px; font-size: 16px; line-height: 1.55; }
.verdict__actions { margin-top: 26px; display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }
.verdict__stamp {
  position: absolute; right: 26px; bottom: 22px;
  width: 92px; height: 92px; border-radius: 50%;
  display: grid; place-items: center;
  background: radial-gradient(circle at 36% 30%, #9E2233, #6E1B2E 55%, #4A0E1C);
  color: rgba(243,231,201,.9);
  font-family: var(--font-display); font-size: 15px; letter-spacing: .08em;
  transform: rotate(-11deg);
  box-shadow: 0 8px 20px rgba(0,0,0,.4);
  opacity: .92;
  text-align: center; line-height: 1.15; padding: 8px;
}

/* Модал поручения маклеру */
.hall-modal {
  position: fixed; inset: 0; z-index: 88;
  display: grid; place-items: center;
  padding: 20px;
  background: rgba(6,2,4,.82);
}
.hall-modal[hidden] { display: none; }
.hall-modal__sheet {
  position: relative;
  width: min(520px, 100%);
  padding: 38px 34px 30px;
  background: linear-gradient(160deg, rgba(243,231,201,.97), rgba(226,209,170,.95));
  color: var(--parch-ink);
  border: 1px solid rgba(138,100,32,.55);
  box-shadow: 0 34px 80px rgba(0,0,0,.7);
  animation: hall-modal-rise .5s var(--ease-lux);
}
@keyframes hall-modal-rise { from { opacity: 0; transform: translateY(22px); } to { opacity: 1; transform: none; } }
.hall-modal__title { font-family: var(--font-display); font-size: 26px; letter-spacing: .06em; color: #3a2410; }
.hall-modal__text { margin-top: 12px; font-family: var(--font-serif); font-size: 17px; line-height: 1.55; }
.hall-modal__field { margin-top: 20px; display: flex; flex-direction: column; gap: 7px; }
.hall-modal__field label { font-size: 13px; letter-spacing: .16em; text-transform: uppercase; color: #7a5a1c; }
.hall-modal__field input {
  padding: 12px 14px;
  border: 1px solid rgba(138,100,32,.5);
  background: rgba(255,252,242,.75);
  color: #3a2410;
  font-family: var(--font-num); font-size: 20px;
  border-radius: 2px;
}
.hall-modal__field input:focus { outline: none; border-color: #8A6420; box-shadow: 0 0 0 3px rgba(138,100,32,.18); }
.hall-modal__hint { font-family: var(--font-serif); font-style: italic; font-size: 15px; color: #6b563a; }
.hall-modal__hint.is-bad { color: #8d2020; font-style: normal; }
.hall-modal__actions { margin-top: 24px; display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }
.hall-modal__ghost {
  background: none; border: 0; cursor: pointer;
  font-family: var(--font-serif); font-size: 16px; color: #6b563a;
  border-bottom: 1px solid rgba(107,86,58,.45);
  padding: 4px 0;
}
.hall-modal__ghost:hover { color: #3a2410; }
.hall-modal__close {
  position: absolute; top: 10px; right: 12px;
  background: none; border: 0; cursor: pointer;
  font-size: 20px; color: #7a5a1c; line-height: 1;
  width: 44px; height: 44px;
}
.btn-gold--sm { padding: 11px 24px; font-size: 16px; cursor: pointer; }

/* ============================================================
   Афиша торгов
   ============================================================ */

.playbill { max-width: 1500px; margin: 0 auto; padding: 44px 28px 90px; }
.playbill__head { text-align: center; margin-bottom: 18px; }
.playbill__title {
  font-family: var(--font-display);
  font-size: clamp(30px, 4.4vw, 54px);
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--gold-hi);
  text-shadow: 0 2px 30px rgba(0,0,0,.8);
}
.playbill__sub { font-family: var(--font-serif); font-style: italic; color: var(--smoke); font-size: 18px; margin-top: 6px; }

.shelf { margin-top: 54px; }
.shelf__head { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; margin-bottom: 6px; }
.shelf__title {
  font-family: var(--font-display);
  font-size: 26px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--gold);
}
.shelf__count { font-family: var(--font-num); font-size: 15px; color: var(--bronze); }
.shelf__rule { width: min(280px, 60%); margin: 6px 0 24px; }
.shelf__rule img { width: 100%; filter: drop-shadow(0 1px 6px rgba(201,163,92,.3)); }
.shelf__grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 26px;
}

.bill-card {
  position: relative;
  display: flex; flex-direction: column;
  background: linear-gradient(168deg, rgba(74,14,28,.55), rgba(20,4,9,.85));
  border: 1px solid rgba(201,162,39,.22);
  border-radius: 3px;
  overflow: hidden;
  transition: transform .5s var(--ease-lux), box-shadow .5s var(--ease-lux), border-color .4s;
}
.bill-card:hover {
  transform: translateY(-5px);
  border-color: rgba(201,162,39,.5);
  box-shadow: 0 26px 54px rgba(0,0,0,.6), 0 0 46px rgba(201,162,39,.12);
}
.bill-card--coins { background: linear-gradient(168deg, rgba(6,46,34,.6), rgba(7,18,14,.88)); }
.bill-card__stage { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: #140308; }
.bill-card__stage img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s var(--ease-lux); }
.bill-card:hover .bill-card__stage img { transform: scale(1.05); }
.bill-card__stage::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(15,3,7,.92), transparent 55%),
              radial-gradient(ellipse at 50% 0%, rgba(255,226,160,.14), transparent 60%);
}
.bill-card__body { padding: 18px 20px 22px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.bill-card__title {
  font-family: var(--font-serif);
  font-size: 20px; line-height: 1.3; color: var(--parchment);
}
.bill-card__meta { font-size: 14px; color: var(--smoke); font-family: var(--font-serif); font-style: italic; }
.bill-card__price { font-family: var(--font-num); font-size: 25px; color: var(--gold-hi); }
.bill-card__price small { display: block; font-family: var(--font-serif); font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: var(--bronze); font-style: normal; }
.bill-card__foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.bill-card__enter {
  display: inline-block; padding: 10px 20px; min-height: 44px; line-height: 24px;
  border: 1px solid rgba(201,162,39,.5);
  color: var(--gold-hi);
  font-family: var(--font-serif); font-size: 15px; letter-spacing: .06em;
  border-radius: 2px;
  transition: background .35s var(--ease-lux), color .35s;
}
.bill-card__enter:hover { background: rgba(201,162,39,.9); color: #2A1B04; }
.bill-card__watch {
  background: none; border: 0; cursor: pointer;
  font-family: var(--font-serif); font-size: 15px; color: var(--gold);
  border-bottom: 1px solid rgba(201,162,39,.35); padding: 4px 0;
  min-height: 44px;
}
.bill-card__watch:hover { color: var(--gold-hi); }
.bill-card__watch[disabled] { color: var(--patina); border-color: transparent; cursor: default; }

/* Печать статуса на афише */
.bill-seal {
  position: absolute; top: 14px; right: 14px; z-index: 3;
  width: 62px; height: 62px; border-radius: 50%;
  display: grid; place-items: center; text-align: center;
  font-family: var(--font-serif); font-size: 11px; letter-spacing: .1em;
  text-transform: uppercase; line-height: 1.1;
  color: rgba(243,231,201,.92);
  box-shadow: inset 0 -4px 10px rgba(0,0,0,.5), 0 8px 18px rgba(0,0,0,.5);
  padding: 6px;
}
.bill-seal--live {
  background: radial-gradient(circle at 34% 28%, #9E2233, #6E1B2E 55%, #4A0E1C);
  box-shadow: inset 0 -4px 10px rgba(0,0,0,.5), 0 0 0 1px rgba(232,197,95,.65), 0 8px 18px rgba(0,0,0,.5);
  animation: seal-pulse 3s ease-in-out infinite;
}
@keyframes seal-pulse {
  0%, 100% { box-shadow: inset 0 -4px 10px rgba(0,0,0,.5), 0 0 0 1px rgba(232,197,95,.5), 0 8px 18px rgba(0,0,0,.5); }
  50%      { box-shadow: inset 0 -4px 10px rgba(0,0,0,.5), 0 0 0 1px rgba(232,197,95,.95), 0 0 26px rgba(232,197,95,.45), 0 8px 18px rgba(0,0,0,.5); }
}
.bill-seal--scheduled { background: radial-gradient(circle at 34% 28%, #4E6E5C, #3E5B4C 55%, #26382E); }
.bill-seal--closed { background: radial-gradient(circle at 34% 28%, #A3803A, #8A6420 55%, #4E3A12); }

.bill-card__clock {
  display: inline-flex; align-items: baseline; gap: 8px;
  font-family: var(--font-num); font-size: 19px; color: var(--gold-hi);
}
.bill-card__clock small { font-family: var(--font-serif); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--bronze); }
.bill-card__clock.is-final { color: #F2D98B; animation: clock-pulse 1s ease-in-out infinite; }

.shelf__empty {
  padding: 34px 26px;
  border: 1px dashed rgba(201,162,39,.3);
  border-radius: 3px;
  text-align: center;
  font-family: var(--font-serif); font-style: italic;
  color: var(--smoke); font-size: 18px; line-height: 1.6;
}

.hall-skeleton-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 26px; }
.hall-skeleton {
  height: 320px; border-radius: 3px;
  background: linear-gradient(100deg, rgba(74,14,28,.5) 30%, rgba(201,162,39,.14) 50%, rgba(74,14,28,.5) 70%);
  background-size: 220% 100%;
  animation: hall-skeleton-sheen 2.2s linear infinite;
}
@keyframes hall-skeleton-sheen { from { background-position: 120% 0; } to { background-position: -60% 0; } }

.hall-footer {
  text-align: center; padding: 36px 20px 60px;
  color: #7a6a50; font-size: 14px; font-family: var(--font-serif);
}

/* ============================================================
   Адаптив
   ============================================================ */

@media (max-width: 1180px) {
  .hall {
    grid-template-columns: 1fr;
    grid-template-areas: 'podium' 'desk' 'protocol';
    gap: 30px;
    padding: 20px 16px 90px;
  }
  .desk, .protocol { position: static; max-height: none; }
  .protocol { border-right: 0; border-top: 1px solid rgba(201,162,39,.16); padding: 18px 0 0; }
  .desk { max-width: 560px; width: 100%; margin: 0 auto; }
  .protocol__feed { max-height: 60vh; }

  /* Протокол — выдвижной свиток */
  .protocol__toggle {
    display: block; width: 100%;
    padding: 14px 16px; min-height: 44px;
    background: linear-gradient(160deg, rgba(74,14,28,.6), rgba(20,4,9,.8));
    border: 1px solid rgba(201,162,39,.3);
    color: var(--gold); cursor: pointer;
    font-family: var(--font-display); font-size: 17px; letter-spacing: .12em;
    text-transform: uppercase; border-radius: 2px;
  }
  .protocol__toggle::after { content: ' ▾'; }
  .protocol.is-open .protocol__toggle::after { content: ' ▴'; }
  .protocol__title, .protocol__sub { display: none; }
  .protocol__feed { display: none; margin-top: 14px; }
  .protocol.is-open .protocol__feed { display: flex; }
}

@media (max-width: 760px) {
  .podium__title { font-size: 22px; }
  .podium__frame { padding: 12px; }
  .price__value { font-size: 34px; }
  .candle__stage { width: 128px; height: 280px; }
  .candle__tip { width: min(280px, calc(100vw - 48px)); }
  .verdict__sheet { padding: 40px 22px 34px; }
  .verdict__stamp { right: 12px; bottom: 12px; width: 74px; height: 74px; font-size: 12px; }
  .bell { right: 12px; left: 12px; width: auto; }
  .playbill { padding: 30px 16px 70px; }
  .shelf__grid, .hall-skeleton-row { grid-template-columns: 1fr; }
}

/* ============================================================
   Спокойный режим
   ============================================================ */

@media (prefers-reduced-motion: reduce) {
  .flame__outer, .flame__inner, .candle__halo,
  .podium__beam, .podium__dust, .presence__dot,
  .bill-seal--live, .hall-skeleton, .candle__clock,
  .bill-card__clock.is-final { animation: none !important; }
  .entry.is-new { animation: none !important; }
  .wax-seal__wax { display: none; }
  .hammer__word { animation: none !important; }
  .gold-flash.is-flashing { animation: none !important; opacity: .35; transition: opacity .4s; }
  .candle__drip.is-running { animation: none !important; }
}
