/* ═══ 03.11 «Партнёры» — ЭКСПОНАТЫ 3D + эффекты (partnery_eksponaty.js). Поверх partnery_baraban.css + partnery_vitrina.css (тема A «Кость»).
   Каждый отдел — диорама на своём подиуме-травертине (.pe-pd), верх подиума (.pe-ell) — отражение экспоната, каустика, блик;
   экспонат .pe-ex (стоп-кадр / WebGL-холст качания), полутень соседа — .pe-dk. Карточка .pb-k = точка посадки (0×0) в центре верха подиума.
   Луч — холст .pe-luch за сценой, пылинки — #pbPyl над сценой, выноски — .pe-vyn. Геометрию (--pdw --ry --ph --cy --pbot --bokx --bt --bh,
   у карточки --iw --ih --il --it --ot --om) ставит JS. Анимации — WAAPI. Откат — убрать <link> и вернуть partnery_baraban.js. ═══ */

/* зал: верх темнее (луч читается на светлой теме), к полу светлее, по краям тёплая тень */
.st-media.pb.pb-eks .pb-fon { background:
  radial-gradient(ellipse 70% 46% at 50% calc(var(--pbot, 70%) + 2%), rgba(251, 248, 242, .85), rgba(251, 248, 242, 0) 70%),
  radial-gradient(130% 100% at 50% 30%, rgba(0, 0, 0, 0) 52%, rgba(60, 42, 22, .14) 100%),
  linear-gradient(180deg, #d8ccba 0%, #e3d9ca 30%, #ece5da 58%, #f1ece4 78%, #e7dfd2 100%); }
.pb-eks .pb-luch, .pb-eks .pb-podium, .pb-eks .pb-pyatno, .pb-eks .pb-kontakt, .pb-eks .pb-svet { display: none; }
.pb-eks .pb-znak { color: rgba(var(--shd), .045); top: calc(var(--cy) - var(--pdw) * .28); }
.pe-luch { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }

/* карточка = точка посадки */
.pb-eks .pb-k { width: 0; height: 0; background: none; box-shadow: none; cursor: default; overflow: visible; }
.pb-eks .pb-k > img, .pb-eks .pb-k .pb-ten, .pb-eks .pb-k::after { display: none; }
.pb-eks:not(.pe-ok) .pb-k > * { visibility: hidden; }

/* подиум-травертин (как .pb-podium витрины, но у каждого отдела свой) */
.pe-pd { position: absolute; left: calc(var(--pdw) / -2); top: 0; width: var(--pdw); height: calc(var(--ph) + var(--ry));
  border-radius: 0 0 50% 50% / 0 0 var(--ry) var(--ry); pointer-events: none;
  background: linear-gradient(90deg, #c4b9a8 0%, #e0d8ca 16%, #f4efe6 42%, #fbf8f1 51%, #ebe3d6 66%, #cdc2b0 88%, #b9ad9b 100%);
  box-shadow: 0 calc(var(--ph) * .9) calc(var(--ph) * 1.2) calc(var(--ph) * -.7) rgba(var(--shd), .5); }
/* 03.11 доводка: латунная полоса 2px у низа подиума (первый слой фона) снята — как .podium::after в bar/svet.css; тень к низу осталась */
.pe-pd::after { content: ""; position: absolute; inset: 0; border-radius: inherit;
  background: linear-gradient(180deg, rgba(255, 255, 255, .0) 0, rgba(var(--shd), .0) 40%, rgba(var(--shd), .14) 100%); }
.pe-pd::before { content: ""; position: absolute; left: 0; right: 0; top: calc(var(--ry) * -1); height: calc(var(--ry) * 2); border-radius: 50%;
  background: radial-gradient(60% 64% at 47% 42%, #fffefa, #f3eee4 55%, #ddd3c3 100%);
  box-shadow: inset 0 0 0 1.5px rgba(156, 113, 54, .9), inset 0 0 0 5px rgba(255, 255, 255, .75), inset 0 0 0 6px rgba(156, 113, 54, .3), inset 0 -4px 8px rgba(var(--shd), .12); }
/* полутень подиума соседа (форма цилиндра целиком) */
.pe-pdt { position: absolute; left: 0; right: 0; top: calc(var(--ry) * -1); bottom: 0; border-radius: 50% / var(--ry); background: #5a4630; opacity: 0; }
/* верх подиума: отражение, каустика, блик — обрезаны эллипсом */
.pe-ell { position: absolute; left: calc(var(--pdw) / -2 + 6px); top: calc(var(--ry) * -1 + 3px); width: calc(var(--pdw) - 12px); height: calc(var(--ry) * 2 - 6px);
  border-radius: 50%; overflow: hidden; pointer-events: none; }
.pb-eks .pb-k img.pe-otr { position: absolute; inset: auto; object-fit: fill; box-shadow: none; left: calc(var(--il) + var(--pdw) / 2 - 6px); top: calc(var(--ot) - 3px); width: var(--iw); height: var(--ih); max-width: none;
  transform-origin: 0 0; transform: scaleY(-1); opacity: .3;
  -webkit-mask-image: linear-gradient(180deg, transparent calc(var(--om) - var(--ih) * .15), #000 var(--om), transparent calc(var(--om) + 1px));
          mask-image: linear-gradient(180deg, transparent calc(var(--om) - var(--ih) * .15), #000 var(--om), transparent calc(var(--om) + 1px)); }
.pb-k.pe-zhiv .pe-otr { opacity: 0; }
.pe-kaust { position: absolute; left: 14%; top: 4%; width: 72%; height: 78%; border-radius: 50%; opacity: 0;
  background: radial-gradient(ellipse 36% 30% at 38% 44%, rgba(255, 252, 242, .55), rgba(255, 252, 242, 0)),
              radial-gradient(ellipse 26% 22% at 63% 56%, rgba(255, 246, 226, .45), rgba(255, 246, 226, 0)),
              radial-gradient(ellipse 50% 44% at 50% 50%, rgba(255, 240, 210, .28), rgba(255, 240, 210, 0)); }
.pe-kaust2 { left: 24%; top: 14%; width: 56%; height: 64%;
  background: radial-gradient(ellipse 30% 24% at 58% 38%, rgba(255, 250, 236, .5), rgba(255, 250, 236, 0)),
              radial-gradient(ellipse 20% 16% at 34% 62%, rgba(255, 244, 220, .4), rgba(255, 244, 220, 0)); }
.pe-blik { position: absolute; left: 12%; right: 12%; top: 2%; height: 46%; border-radius: 50%;
  background: radial-gradient(closest-side, rgba(255, 255, 255, .8), rgba(255, 248, 232, .35) 50%, rgba(255, 244, 222, 0)); }
/* пятно тени на полу под подиумом */
.pe-pyatno { position: absolute; left: calc(var(--pdw) * -.82); width: calc(var(--pdw) * 1.64); top: calc(var(--ph) + var(--ry) * .2); height: calc(var(--ry) * 1.7);
  border-radius: 50%; pointer-events: none; background: radial-gradient(closest-side, rgba(var(--shd), .3), rgba(var(--shd), .1) 55%, rgba(var(--shd), 0)); }

/* экспонат */
.pe-ex { position: absolute; left: var(--il); top: var(--it); width: var(--iw); height: var(--ih); pointer-events: none; }
.pb-eks .pb-k img.pe-hero, .pb-eks .pb-k img.pe-dk { position: absolute; inset: auto; left: 0; top: 0; width: 100%; height: 100%; display: block; max-width: none;
  object-fit: fill; box-shadow: none; user-select: none; -webkit-user-drag: none; }
.pb-eks .pb-k img.pe-dk { opacity: 0; }
.pe-sv { position: absolute; left: 0; top: 0; width: 100%; height: 120%; display: block; opacity: 0; }
.pe-hit { position: absolute; left: calc(var(--pdw) * -.43); width: calc(var(--pdw) * .86); top: calc(var(--it) * .8); height: calc(var(--it) * -.8 + var(--ry) + var(--ph) * .5);
  pointer-events: auto; cursor: pointer; }
.pb-eks.pe-tyanu, .pb-eks.pe-tyanu .pe-hit { cursor: grabbing; }
.st-media.pb.pb-eks { touch-action: pan-y; }

/* телефон: экспонат уехал в угол — подиум, отражение и тень гаснут */
.pb-eks .pb-k.c .pe-pd, .pb-eks .pb-k.c .pe-ell, .pb-eks .pb-k.c .pe-pyatno { opacity: calc(1 - var(--razvm)); }

/* подпись, стрелки, подсказка — под подиумом */
.pb-eks .pb-podpis { top: calc(var(--pbot) + 20px); }
.pb-eks .pb-str { top: calc(var(--pbot) + 52px); }
/* 03.11 доводка: стрелки за край подиума — длинное имя отдела («Архитектура и дизайн интерьера») не налезает на них */
.pb-eks .pb-str--l { left: calc(50% - var(--pdw) / 2 - 34px); }
.pb-eks .pb-str--r { left: calc(50% + var(--pdw) / 2 - 18px); }
.pb-eks .pb-kompl span { font-size: .54rem; letter-spacing: .12em; padding: 18px 6px 8px; }
.pb-eks .pb-hint { top: calc(var(--pbot) + 100px); }

/* бока: колонки текста отступают от экспоната (и от колонки выносок) */
.pb-eks .pb-bok { top: var(--bt); height: var(--bh); }
.pb-eks .pb-bok--l { right: calc(50% + var(--bokx)); }
.pb-eks .pb-bok--r { left: calc(50% + var(--bokx)); }
.pb-eks .pb-liniya { display: none; }

/* выноски к предметам композиции */
.pe-vyn { position: absolute; inset: 0; pointer-events: none; z-index: 3; }
.pe-vyn-svg { position: absolute; left: 0; top: 0; width: 100%; height: 100%; overflow: visible; }
.pe-ln { fill: none; stroke: var(--brass); stroke-width: 1; stroke-dasharray: 1; stroke-dashoffset: 0; stroke-linejoin: round; }
.pe-dot { fill: var(--brass); stroke: #fbf8f2; stroke-width: 1.6; transform-box: fill-box; transform-origin: center; }
.pe-halo { fill: none; stroke: var(--brass2); stroke-width: 1; transform-box: fill-box; transform-origin: center; opacity: 0; }
/* 03.11 доводка: подписи крупнее (13–14 px на ПК), строчными — читаются; переносятся в 2 строки по --labw; место ставит JS (разложить()) — left/top = левый верх */
.pe-metka { position: absolute; display: block; width: max-content; max-width: var(--labw, 200px); white-space: normal; padding: 5px 10px 6px; border-radius: 2px;
  font: 500 clamp(12.5px, calc(7px + .36vw), 14px)/1.3 var(--sans); letter-spacing: .02em; color: var(--ink);
  background: rgba(251, 248, 243, .86); box-shadow: 0 0 0 1px rgba(156, 113, 54, .26), 0 6px 16px -10px rgba(var(--shd), .35); }
.pe-metka b { color: var(--brass); font-weight: 600; margin-right: .55em; letter-spacing: .12em; font-size: .86em; }

@media (max-width: 900px), (max-aspect-ratio: 3/4) {
  .pb-eks .pb-podpis { top: calc(var(--pbot) + 10px); }
  .pb-eks .pb-str { top: calc(var(--pbot) + 34px); }
  .pb-eks .pb-hint { top: calc(var(--pbot) + 92px); }
  .pb-eks .pb-podpis { padding: 0 56px; }
  .pb-eks .pb-podpis .pb-t { font-size: 1.32rem; line-height: 1.12; }
  .pb-eks .pb-bok { top: auto; height: auto; }
  .pe-vyn { display: none; }
  .pb-eks .pb-str--l { left: 6px; } .pb-eks .pb-str--r { left: auto; right: 6px; }
}

/* ПК (03.11 доводка): колонка текста фикс. ширины (--bokx от JS), по высоте — от вкладок до кнопок, содержимое по центру без обрезки сверху;
   шрифты крупнее: абзац ~18 px на 1920 (15 px минимум), подзаголовок/номер ~14 px, h4 ~24 px */
@media (min-width: 901px) and (min-aspect-ratio: 3/4) {
  .pb-eks .pb-bok { justify-content: flex-start; }
  .pb-eks .pb-bok > :first-child { margin-top: auto; }
  .pb-eks .pb-bok > :last-child { margin-bottom: auto; }
  .pb-eks .pb-bok > * { width: 100%; }
  .pb-eks .pb-bok h3 { font-size: clamp(1.75rem, 2.3vw, 2.8rem); margin: 10px 0 14px; }
  .pb-eks .pb-bok p { font-size: clamp(15px, calc(6px + .63vw), 18px); line-height: 1.58; margin-bottom: .75em; }
  .pb-eks .pb-bok p.pt-num { font-size: clamp(13px, .78vw, 15px); margin-bottom: 0; }
  .pb-eks .pb-bok p.pt-pod { font-size: clamp(12px, .72vw, 14px); line-height: 1.5; letter-spacing: .16em; }
  .pb-eks .pb-bok h4 { font-size: clamp(1.2rem, 1.28vw, 1.55rem); }
  .pb-eks .pb-bok h4:not(:first-child) { margin-top: 1em; }
  .pb-eks .pb-vrezka figcaption { font-size: clamp(10px, .6vw, 12px); }
  .pb-eks .pb-kompl span { font-size: clamp(9.5px, .56vw, 11px); letter-spacing: .06em; padding: 18px 4px 8px; text-align: center; }
}
/* низкие ПК-экраны: плотнее по высоте, но не мельче 15 px */
@media (max-height: 820px) and (min-width: 901px) and (min-aspect-ratio: 3/4) {
  .pb-eks .pb-bok h3 { font-size: clamp(1.6rem, 2.1vw, 2.3rem); margin: 6px 0 10px; }
  .pb-eks .pb-bok p { line-height: 1.46; margin-bottom: .55em; }
  .pb-eks .pb-bok h4 { font-size: 1.2rem; }
  .pb-eks .pb-bok h4:not(:first-child) { margin-top: .7em; }
}
/* телефон: текст под экспонатом крупнее */
@media (max-width: 900px), (max-aspect-ratio: 3/4) {
  .pb-eks .pb-bok p { font-size: 1rem; line-height: 1.6; }
  .pb-eks .pb-bok p.pt-pod { font-size: .78rem; }
  .pb-eks .pb-bok h4 { font-size: 1.3rem; }
}
