/* шапка выставки */
.exhibit-bar{flex-shrink:0;display:flex;align-items:center;gap:1.5rem;
  padding:0.85rem var(--pad);background:var(--surface);border-bottom:1px solid var(--line)}
.eb-back{color:var(--malachite-mid);text-decoration:none;font-size:0.9rem;white-space:nowrap}
.eb-title{font-size:1.15rem;font-weight:600;letter-spacing:-0.02em;white-space:nowrap}
.eb-status{display:inline-flex;align-items:center;gap:0.4rem;font-size:0.72rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.06em;color:var(--live);
  background:rgba(206,82,56,.08);padding:0.25rem 0.65rem;border-radius:var(--pill)}
.eb-dot{width:0.45rem;height:0.45rem;border-radius:50%;background:var(--live);
  animation:pulse 1.7s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}
.eb-meta{font-size:0.85rem;color:var(--muted);white-space:nowrap}
.eb-meta b{color:var(--ink-2);font-weight:600}
.eb-links{display:flex;gap:0.5rem;margin-left:auto}
.eb-link{font-size:0.85rem;color:var(--ink-2);text-decoration:none;padding:0.5rem 1rem;
  border:1px solid var(--line);border-radius:var(--pill);white-space:nowrap;transition:all .15s}
.eb-link:hover{border-color:var(--malachite-line);color:var(--malachite)}
.eb-link.primary{background:var(--malachite);color:var(--surface);border-color:var(--malachite)}
/* Подписи у значков — только на телефоне (см. @media ниже). */
.eb-btn-lbl{display:none}

/* рабочее пространство холла */
.hall{flex:1;position:relative;overflow:hidden;background:
  radial-gradient(circle at 30% 20%, var(--line-soft), var(--stone) 60%)}

/* полотно зала (зумится/пануется) */
.world{position:absolute;top:0;left:0;width:2880px;height:1800px;
  transform-origin:0 0;cursor:grab}
.world.dragging{cursor:grabbing}
.world.dragging *{pointer-events:none}

/* зона-павильон */
.zone{position:absolute;border:1.5px dashed var(--malachite-line);border-radius:16px;
  background:rgba(var(--surface-rgb),.35)}
.zone-label{position:absolute;top:-0.6rem;left:1.2rem;background:var(--stone);
  padding:0.15rem 0.7rem;font-size:0.8rem;font-weight:600;color:var(--malachite);
  letter-spacing:-0.01em;border-radius:var(--pill)}

/* стенд */
.booth{position:absolute;border-radius:11px;background:var(--surface);
  border:1px solid var(--line);cursor:pointer;display:flex;flex-direction:column;
  align-items:flex-start;justify-content:flex-start;gap:5px;padding:11px 12px;overflow:hidden;
  transition:transform .12s,box-shadow .12s,border-color .12s;text-align:left}
.booth:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(var(--ink-rgb),.14);
  border-color:var(--malachite-mid);z-index:5}
.booth.premium{background:var(--malachite);border-color:var(--malachite-deep)}
.booth.premium .booth-logo{background:rgba(var(--surface-rgb),.18);color:var(--surface)}
.booth.premium .booth-name{color:var(--surface)}
.booth.premium .booth-tag{color:var(--malachite-line)}
.booth.premium .booth-foot{color:var(--malachite-line);border-color:rgba(var(--surface-rgb),.15)}
.booth-top{display:flex;align-items:center;gap:8px;width:100%}
.booth-logo{width:2.3rem;height:2.3rem;border-radius:8px;background:var(--malachite-soft);
  color:var(--malachite);display:flex;align-items:center;justify-content:center;
  font-size:0.82rem;font-weight:700;flex-shrink:0}
.booth-head{min-width:0;flex:1}
.booth-name{font-size:0.82rem;font-weight:600;line-height:1.15;letter-spacing:-0.01em;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.booth-tag{font-size:0.68rem;color:var(--muted);line-height:1.2;margin-top:1px;
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.booth-foot{display:flex;align-items:center;gap:0.5rem;width:100%;margin-top:auto;
  padding-top:6px;border-top:1px solid var(--line-soft);font-size:0.6rem;color:var(--muted-2)}
.booth-foot .on{display:inline-flex;align-items:center;gap:0.25rem;color:var(--malachite-mid);font-weight:600}
.booth-foot .on::before{content:"";width:0.42rem;height:0.42rem;border-radius:50%;background:var(--malachite-mid)}
.booth.premium .booth-foot .on{color:var(--malachite-line)}
.booth-live{position:absolute;top:8px;right:8px;width:7px;height:7px;border-radius:50%;
  background:var(--malachite-mid);border:1.5px solid var(--surface)}
.booth.premium .booth-live{border-color:var(--malachite)}
.booth.dim{opacity:.25;filter:saturate(.4)}
.booth.match{outline:2px solid var(--malachite-mid);outline-offset:2px}

/* контролы зума (низ-право) */
.ctrl{position:absolute;right:var(--pad);bottom:var(--pad);display:flex;flex-direction:column;
  gap:6px;z-index:20}
.ctrl button{width:2.6rem;height:2.6rem;border:1px solid var(--line);background:var(--surface);
  border-radius:10px;font-size:1.3rem;color:var(--ink-2);cursor:pointer;display:flex;
  align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(var(--ink-rgb),.06);transition:all .12s}
.ctrl button:hover{border-color:var(--malachite-mid);color:var(--malachite)}

/* легенда (низ-лево) */
.legend{position:absolute;left:var(--pad);bottom:var(--pad);background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r);padding:0.8rem 1rem;z-index:20;
  box-shadow:0 2px 12px rgba(var(--ink-rgb),.06);font-size:0.78rem}
.legend-t{font-weight:600;margin-bottom:0.5rem;color:var(--ink)}
.legend-row{display:flex;align-items:center;gap:0.5rem;color:var(--ink-2);margin-top:0.3rem}
.legend-dot{width:0.7rem;height:0.7rem;border-radius:3px;flex-shrink:0}

/* поиск стенда (верх-лево внутри холла) */
.hall-search{position:absolute;left:var(--pad);top:var(--pad);z-index:20;width:min(20rem,40vw);pointer-events:none}
/* C2 — партнёры выставки. Блок шёл в обычном потоке внутри .hall и ложился
   на строку поиска. Ставим его в свободный правый верхний угол: слева сверху
   поиск, слева снизу легенда, справа снизу управление. */
.hall .partners{position:absolute;right:var(--pad);top:var(--pad);z-index:20;margin:0;
  max-width:min(22rem,42vw);background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r,12px);padding:.7rem .8rem;box-shadow:0 2px .5rem rgba(0,0,0,.06)}
.hall .partners-row{max-height:9rem;overflow:auto}
.hall-search .field{position:relative;pointer-events:auto}
.hall-search input{pointer-events:auto}
.hall-search input{width:100%;height:2.7rem;border:1px solid var(--line);border-radius:var(--pill);
  background:var(--surface);padding:0 1rem 0 2.6rem;font-size:0.9rem;font-family:inherit;
  outline:none;box-shadow:0 2px 12px rgba(var(--ink-rgb),.06);color:var(--ink)}
.hall-search input:focus{border-color:var(--malachite-mid)}
.hall-search .si{position:absolute;left:1rem;top:50%;transform:translateY(-50%);color:var(--muted);
  pointer-events:none;line-height:0}
.hall-search .si svg{width:1rem;height:1rem}
.hall-count{margin-top:0.5rem;font-size:0.75rem;color:var(--muted);padding-left:0.4rem}

/* баннер партнёра (верх-право) */
.partner{position:absolute;right:var(--pad);top:var(--pad);z-index:20;
  width:min(22rem,42vw);background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r);padding:0.75rem 1rem;box-shadow:0 2px 12px rgba(var(--ink-rgb),.06);
  display:flex;align-items:center;gap:0.8rem}
.partner-badge{font-size:0.6rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;
  color:var(--muted-2);writing-mode:vertical-rl;transform:rotate(180deg)}
.partner-box{flex:1;height:3.2rem;border:1px dashed var(--line);border-radius:8px;
  display:flex;align-items:center;justify-content:center;flex-direction:column;color:var(--muted)}
.partner-box .pb1{font-size:0.82rem;font-weight:500}
.partner-box .pb2{font-size:0.68rem;color:var(--muted-2)}

/* карточка стенда (поповер) */
.booth-card{position:absolute;z-index:40;width:19rem;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 12px 40px rgba(var(--ink-rgb),.18);
  overflow:hidden;display:none}
.booth-card.show{display:block}
.bc-cover{height:5.5rem;position:relative;display:flex;align-items:flex-end;padding:0.9rem}
.bc-cover .bc-logo{width:3rem;height:3rem;border-radius:10px;background:rgba(var(--surface-rgb),.92);
  color:var(--malachite);display:flex;align-items:center;justify-content:center;
  font-size:1.05rem;font-weight:700;box-shadow:0 4px 12px rgba(0,0,0,.12)}
.bc-close{position:absolute;top:0.6rem;right:0.6rem;width:1.8rem;height:1.8rem;
  background:rgba(var(--surface-rgb),.9);border:none;border-radius:50%;cursor:pointer;
  font-size:1rem;color:var(--ink-2);display:flex;align-items:center;justify-content:center}
.bc-body{padding:1rem 1.1rem 1.1rem}
.bc-name{font-size:1.05rem;font-weight:600;letter-spacing:-0.02em}
.bc-cat{font-size:0.78rem;color:var(--malachite-mid);font-weight:500;margin-top:0.15rem}
.bc-desc{font-size:0.85rem;color:var(--ink-2);line-height:1.45;margin-top:0.6rem}
.bc-stats{display:flex;gap:1.2rem;margin-top:0.8rem;padding-top:0.8rem;border-top:1px solid var(--line-soft)}
.bc-stat{font-size:0.75rem;color:var(--muted)}
.bc-stat b{display:block;font-size:0.95rem;color:var(--ink);font-weight:600}
.bc-online{display:inline-flex;align-items:center;gap:0.35rem;font-size:0.72rem;
  color:var(--malachite-mid);font-weight:500;margin-top:0.7rem}
.bc-online::before{content:"";width:0.5rem;height:0.5rem;border-radius:50%;background:var(--malachite-mid)}
.bc-btn{display:block;text-align:center;background:var(--malachite);color:var(--surface);
  padding:0.7rem;border-radius:10px;font-size:0.9rem;font-weight:500;cursor:pointer;
  margin-top:0.9rem;text-decoration:none}
.bc-btn:hover{background:var(--malachite-deep)}

/* подсказка-хинт */
.hint{position:absolute;left:50%;bottom:var(--pad);transform:translateX(-50%);z-index:15;
  background:rgba(var(--ink-rgb),.82);color:var(--malachite-soft);font-size:0.75rem;padding:0.5rem 1rem;
  border-radius:var(--pill);pointer-events:none;transition:opacity .4s}

.bc-rep{font-size:.85rem;color:var(--ink-2,var(--ink-2));margin:.3rem 0 .1rem}

/* Логотип на карточке стенда в зале и в боковой карточке — вместо инициалов. */
.booth-logo img,#bc-logo img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}

/* ══════════════════════════════════════════════════════════════
   УЗКИЕ ЭКРАНЫ

   Зал — единственная страница платформы, где правил для телефонов
   не было вовсе. Шапка выставки шла одной строкой из пяти частей с
   запретом переноса: на экране в 390 пикселей она уезжала за край,
   и до кнопок «Программа» и «Обсуждение» было не добраться.

   Само полотно зала (2880×1800) остаётся как есть — его двигают
   пальцем, и уменьшать его бессмысленно. А вот накладки над ним
   при ширине экрана в 40% занимали пол-зала: их ужимаем.
   ══════════════════════════════════════════════════════════════ */

@media (max-width: 760px) {
  /* Шапка переносится по строкам, название занимает всю ширину. */
  .exhibit-bar {
    flex-wrap: wrap;
    gap: 0.5rem 0.75rem;
    padding: 0.7rem var(--pad);
  }
  .eb-title {
    order: 3;
    flex-basis: 100%;
    font-size: 1rem;
    white-space: normal;      /* длинное название переносится, а не режется */
    line-height: 1.3;
  }
  .eb-meta {
    order: 4;
    flex-basis: 100%;
    font-size: 0.8rem;
  }
  .eb-links {
    order: 5;
    flex-basis: 100%;
    margin-left: 0;
    gap: 0.4rem;
    overflow-x: auto;         /* ссылок бывает четыре — уводим в прокрутку */
    scrollbar-width: none;
  }
  .eb-links::-webkit-scrollbar { display: none; }
  .eb-link {
    padding: 0.55rem 0.85rem; /* палец попадает: высота выходит около 40px */
    font-size: 0.8rem;
  }

  /* Значки «Поделиться» и «Сохранить» получают подписи: на телефоне
     всплывающих подсказок нет, и голый значок ничего не объясняет. */
  .eb-btn-lbl { display: inline; margin-left: 0.35rem; font-size: 0.8rem; }
  .eb-share,
  .eb-save {
    display: inline-flex;
    align-items: center;
    padding: 0.55rem 0.85rem;
    width: auto;
    height: auto;
  }

  /* Накладки над залом: поиск во всю ширину, остальное компактнее. */
  .hall-search {
    width: calc(100% - var(--pad) * 2);
    right: var(--pad);
  }
  .partners {
    max-width: none;
    left: var(--pad);
    right: var(--pad);
    top: auto;
    bottom: calc(var(--pad) + 3.5rem);
    max-height: 30vh;
    overflow-y: auto;
  }
  /* Перечень павильонов на телефоне занимал бы треть экрана — прячем.
     Стенды всё равно ищут поиском, а не по цветам. */
  .legend { display: none; }

  /* Кнопки увеличения — в строку внизу, крупнее под палец. */
  .ctrl {
    flex-direction: row;
    right: var(--pad);
    bottom: var(--pad);
  }
  .ctrl button {
    width: 2.6rem;
    height: 2.6rem;
    font-size: 1.1rem;
  }
  .hint {
    bottom: calc(var(--pad) + 3.2rem);
    font-size: 0.75rem;
    max-width: calc(100% - var(--pad) * 2);
    text-align: center;
  }
}

@media (max-width: 460px) {
  .exhibit-bar { gap: 0.4rem 0.6rem; }
  .eb-title { font-size: 0.95rem; }
  .eb-back { font-size: 0.85rem; }
  .partners { bottom: calc(var(--pad) + 3.2rem); max-height: 26vh; }
}

/* ══════════════════════════════════════════════════════════════
   СПИСОК СТЕНДОВ ВМЕСТО ЗАЛА НА ТЕЛЕФОНЕ

   Полотно зала двигают пальцем — на большом экране это наглядно, на
   телефоне мучительно: стенды размером в ноготь, до нужного долго возить.
   Показываем те же стенды списком.
   ══════════════════════════════════════════════════════════════ */

.hall-list { display: none; }

@media (max-width: 760px) {
  /* Полотно и всё, что его обслуживает, прячем. */
  .world,
  .ctrl,
  .hint,
  .legend { display: none !important; }

  .hall {
    overflow-y: auto;
    background: var(--stone);
  }

  .hall-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: calc(var(--pad) + 3.6rem) var(--pad) var(--pad);
  }

  .hl-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    padding: 0.7rem 0.85rem;
    background: var(--surface);
    border: 1px solid var(--line);
    border-radius: 12px;
    font-family: inherit;
    text-align: left;
    cursor: pointer;
  }
  .hl-item:active { background: var(--malachite-soft); }

  .hl-logo {
    flex: none;
    width: 2.6rem;
    height: 2.6rem;
    border-radius: 9px;
    background: var(--malachite-soft);
    color: var(--malachite);
    display: grid;
    place-items: center;
    font-weight: 600;
    font-size: 0.85rem;
    overflow: hidden;
  }
  .hl-logo img { width: 100%; height: 100%; object-fit: cover; }

  .hl-text {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    min-width: 0;
    flex: 1;
  }
  .hl-name {
    font-size: 0.92rem;
    font-weight: 600;
    color: var(--ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .hl-tag {
    font-size: 0.78rem;
    color: var(--muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .hl-on {
    flex: none;
    font-size: 0.68rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--malachite);
    background: var(--malachite-soft);
    padding: 0.2rem 0.5rem;
    border-radius: var(--pill);
  }

  .hl-empty {
    padding: 2rem 1rem;
    text-align: center;
    color: var(--muted);
    font-size: 0.9rem;
  }
}
