/* Lab /lab/galleria — page glue only. Roles layer 2; blocks = card/btn/chip. */

body.lab-page {
  overflow-x: hidden;
  /* grow with content — clip + height quirks left a black void after expand */
  min-height: auto;
  height: auto;
}

.lab-wrap {
  /* Same gutters as site chrome .page-wrap */
  padding: var(--s-6) var(--s-5);
  padding-bottom: calc(var(--s-6) + var(--bottom-nav-space, 76px));
  max-width: none;
  margin-inline: 0;
  width: 100%;
  box-sizing: border-box;
}

@media (max-width: 640px) {
  .lab-wrap {
    padding: var(--s-4) var(--s-3);
    padding-bottom: calc(var(--s-4) + var(--bottom-nav-space, 76px));
  }
}

/* Hero + map: на мобиле скрыта; с 900px — колонка справа */
.lab-hero-shell {
  display: flex;
  flex-direction: column;
  gap: var(--s-3);
  margin: 0 0 var(--s-3);
  min-width: 0;
}

.lab-hero-shell > .lab-hero {
  margin: 0;
}

.lab-hero-shell > .lab-hero-map-wrap {
  display: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  min-height: 0;
}

body.lab-page .lab-hero-shell > .card {
  margin-block-end: 0;
}

.lab-banner {
  margin: 0 0 var(--s-3);
  padding: var(--s-2) var(--s-3);
  font-size: var(--t-caption);
  color: var(--fg-2);
  background: var(--accent-bg);
  border: 1px solid var(--hairline);
  border-radius: var(--radius-card);
  text-align: center;
}

.lab-banner a {
  color: var(--accent);
}

.lab-bc {
  display: flex;
  flex-wrap: wrap;
  gap: var(--s-1) var(--s-2);
  align-items: center;
  margin: 0 0 var(--s-2);
  font-size: var(--t-caption);
  color: var(--fg-2);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.lab-bc a {
  color: var(--fg-2);
  text-decoration: none;
}

/* card = skeleton; lab-card = page glue spacing */
body.lab-page .card.lab-card {
  margin-block-end: var(--s-3);
  padding-block: var(--s-3);
  padding-inline: var(--s-3);
}

body.lab-page .loc-nearby-blk {
  margin-block-end: var(--s-3);
}

.lab-card-hdr {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
  margin-block-end: var(--s-3);
}

.lab-card-title {
  font-size: var(--t-caption);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--fg);
}

.lab-card-meta {
  font-size: var(--t-caption);
  color: var(--fg-2);
}

.lab-card-link {
  font-size: var(--t-caption);
  color: var(--accent);
  text-decoration: none;
}

/* Hero */
.lab-hero-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2);
  margin-block-end: var(--s-3);
}

.lab-metric-chip {
  display: inline-flex;
  align-items: center;
  gap: var(--s-1);
  padding: var(--s-1) var(--s-3);
  border: 1px solid var(--hairline);
  border-radius: 999px;
  background: transparent;
  color: var(--fg);
  font-size: var(--t-caption);
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
  line-height: 1.2;
}

.lab-metric-chip--rating {
  color: var(--dc);
  border-color: color-mix(in srgb, var(--dc) 40%, var(--hairline));
}

.lab-metric-chip--rating .lab-metric-chip__star,
.lab-metric-chip--rating .lab-metric-chip__val {
  color: var(--dc);
}

.lab-metric-chip--rating .lab-metric-chip__pipe {
  color: color-mix(in srgb, var(--dc) 45%, var(--fg-2));
  font-weight: 500;
  margin: 0 1px;
}

.lab-metric-chip--rating .lab-metric-chip__n {
  color: var(--dc);
  font-weight: 500;
  opacity: 0.75;
}

.lab-metric-chip--cta {
  color: var(--accent);
  border-color: color-mix(in srgb, var(--accent) 35%, var(--hairline));
}

.lab-metric-ico {
  flex-shrink: 0;
  color: var(--fg-2);
}

.lab-hero-title {
  margin: 0 0 var(--s-3);
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  color: var(--fg);
}

.lab-hero-city {
  font-size: var(--t-title, var(--t-body));
  font-weight: 700;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  line-height: 1.15;
}

.lab-hero-street {
  font-size: var(--t-body);
  font-weight: 600;
  text-transform: uppercase;
}

.lab-hero-venue {
  font-size: var(--t-caption);
  color: var(--fg-2);
  font-weight: 500;
  text-transform: uppercase;
}

.lab-hero-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-2);
}

body.lab-page .lab-hero-actions .btn {
  width: 100%;
}

/* KPI */
.lab-kpi {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  border-top: 1px solid var(--hairline);
  border-bottom: 1px solid var(--hairline);
  margin-inline: calc(-1 * var(--s-3));
  padding-inline: var(--s-2);
}

.lab-kpi-cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--s-2);
  padding: var(--s-3) var(--s-2);
  border-right: 1px solid var(--hairline);
  min-width: 0;
  text-align: center;
}

.lab-kpi-cell:last-child {
  border-right: none;
}

.lab-ico {
  color: var(--accent);
  flex-shrink: 0;
}

.lab-ico--sun {
  color: var(--dc);
}

.lab-ico--moon {
  color: var(--fg-2);
}

.lab-ico--clock {
  color: var(--warn);
}

.lab-ico--chart {
  color: var(--accent);
}

.lab-kpi-copy {
  display: flex;
  flex-direction: column;
  gap: var(--s-1);
  min-width: 0;
}

.lab-kpi-v {
  font-size: var(--t-body);
  font-weight: 700;
  color: var(--fg);
  line-height: 1.15;
  word-break: break-word;
}

.lab-kpi-conn {
  display: block;
  font-size: var(--t-caption);
  font-weight: 600;
  color: var(--fg);
}

.lab-kpi-now {
  font-size: var(--t-caption);
  color: var(--accent);
}

/* Live free/busy + freshness — line 1 base; line 2 extras (бронь / недоступны) */
.lab-live-bar {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  margin-block-start: var(--s-2);
  min-width: 0;
  text-align: center;
  font-size: var(--t-caption);
  line-height: 1.3;
}

.lab-live-bar__main {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: center;
  align-items: baseline;
  gap: 0 var(--s-2);
  min-width: 0;
  max-width: 100%;
  white-space: nowrap;
}

.lab-live-bar__extra:not([hidden]) {
  display: block;
  color: var(--fg-2);
  font-weight: 500;
  white-space: nowrap;
}

.lab-live-bar__extra[hidden] {
  display: none;
}

body.lab-page .lab-live-bar .lab-live-summary:not([hidden]),
body.lab-page .lab-live-bar .loc-live-freshness:not([hidden]) {
  display: inline;
  width: auto;
  max-width: none;
  margin: 0;
  padding: 0;
  border: none;
  flex: 0 1 auto;
  text-align: inherit;
  font-size: inherit;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--fg-2);
  line-height: inherit;
  box-sizing: border-box;
  white-space: nowrap;
}

body.lab-page .lab-live-bar .lab-live-summary[hidden],
body.lab-page .lab-live-bar .loc-live-freshness[hidden],
body.lab-page .lab-live-bar .loc-live-freshness.loc-live-freshness--hidden {
  display: none;
}

.lab-live-sep {
  color: var(--fg-2);
  flex-shrink: 0;
}

.lab-live-sep[hidden] {
  display: none;
}

.lab-live-summary__free {
  color: var(--live-free);
  font-weight: 600;
}

.lab-live-summary__busy {
  color: var(--live-charging);
  font-weight: 600;
}

/* Tariffs — AC and DC on their own rows; booking and idle only if present */
.lab-tariff-lines {
  display: flex;
  flex-direction: column;
  gap: var(--s-2);
  max-width: 100%;
}

.lab-tariff-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--s-2) var(--s-3);
  max-width: 100%;
}

.lab-tariff-axis {
  font-size: var(--t-caption);
  font-weight: 600;
  color: var(--fg-2);
  letter-spacing: 0.04em;
}

.lab-tariff-bit {
  display: inline-flex;
  align-items: baseline;
  gap: var(--s-1);
  font-size: var(--t-caption);
  color: var(--fg);
  white-space: nowrap;
  flex: 0 0 auto;
  min-width: max-content;
}

.lab-tariff-val {
  font-weight: 700;
  font-size: var(--t-body);
}

.lab-tariff-k {
  color: var(--fg-2);
}

/* Occupancy */
.lab-occ.card {
  padding: 0;
}

.lab-occ-sum {
  list-style: none;
  cursor: pointer;
  padding: var(--s-3);
  color: var(--fg);
  display: flex;
  flex-wrap: nowrap;
  align-items: center;
  gap: var(--s-2);
  min-width: 0;
}

.lab-occ-sum::-webkit-details-marker {
  display: none;
}

.lab-occ-sum-text {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  min-width: 0;
  flex: 1 1 auto;
}

.lab-occ-sum-title {
  font-size: var(--t-caption);
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.lab-occ-open {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  padding: 0;
  border: 1px solid var(--hairline);
  border-radius: var(--radius-card);
  background: transparent;
}

.lab-occ-open-chev {
  color: var(--fg-2);
  font-size: var(--t-body);
  line-height: 1;
}

.lab-occ-cell--now {
  box-shadow: inset 0 0 0 1px var(--fg-2);
}

.lab-occ-body {
  padding: 0 var(--s-3) var(--s-3);
  border-top: 1px solid var(--hairline);
}

.lab-occ-note {
  margin: var(--s-2) 0;
  font-size: var(--t-caption);
  color: var(--fg-2);
}

.lab-occ-secondary {
  margin: var(--s-3) 0 0;
  padding-top: var(--s-2);
  border-top: 1px solid var(--hairline);
  font-size: var(--t-caption);
  font-weight: 500;
  color: var(--fg-2);
}

/* 1 label col + 24 hours */
.lab-occ-matrix {
  display: grid;
  grid-template-columns: 1.6rem repeat(24, minmax(0, 1fr));
  gap: 2px;
  align-items: center;
  min-width: 0;
}

.lab-occ-corner {
  display: block;
}

.lab-occ-h {
  display: block;
  font-size: 8px;
  line-height: 1;
  color: var(--fg-2);
  text-align: center;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}

.lab-occ-h--tick {
  min-height: 0.6rem;
}

.lab-occ-d {
  display: block;
  font-size: var(--t-caption);
  font-weight: 500;
  color: var(--fg-2);
  line-height: 1;
  text-align: start;
}

.lab-occ-cell {
  display: block;
  width: 100%;
  aspect-ratio: 1;
  border-radius: 2px;
  background: color-mix(in srgb, var(--accent) 8%, transparent);
}

/* One hue ladder — accent only */
.lab-occ-cell--l0 {
  background: color-mix(in srgb, var(--accent) 8%, transparent);
}

.lab-occ-cell--l1 {
  background: color-mix(in srgb, var(--accent) 22%, transparent);
}

.lab-occ-cell--l2 {
  background: color-mix(in srgb, var(--accent) 40%, transparent);
}

.lab-occ-cell--l3 {
  background: color-mix(in srgb, var(--accent) 62%, transparent);
}

.lab-occ-cell--l4 {
  background: color-mix(in srgb, var(--accent) 88%, transparent);
}

.lab-occ-cell--peak {
  outline: 1px solid var(--accent);
  outline-offset: 0;
}

.lab-occ-axis {
  display: grid;
  grid-template-columns: 1.6rem repeat(4, minmax(0, 1fr));
  gap: 2px;
  margin-block-start: var(--s-1);
  font-size: 9px;
  color: var(--fg-2);
  text-transform: lowercase;
}

.lab-occ-axis-pad {
  display: block;
}

.lab-occ-axis-seg {
  text-align: center;
}

/* Poles — ONE line; override prod column guns */
.lab-hub {
  margin-block-end: var(--s-3);
  padding: var(--s-3);
  border: 1px solid var(--hairline);
  border-radius: var(--radius-card);
  min-width: 0;
}

.lab-hub-title {
  margin: 0;
  font-family: var(--font);
  font-size: var(--t-caption);
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--fg);
}

.lab-hub-note {
  margin: var(--s-1) 0 0;
  font-family: var(--font);
  font-size: var(--t-caption);
  line-height: var(--lh-body);
  color: var(--fg-2);
}

.lab-hub .lab-poles-list {
  margin-block-start: var(--s-2);
}

.lab-hero-agg {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  margin: 0;
}

.lab-hero-agg-k {
  font-family: var(--font);
  font-size: var(--t-caption);
  color: var(--fg-3);
}

.lab-poles-list {
  display: grid;
  grid-template-columns: var(--s-2) max-content max-content minmax(0, 1fr);
  column-gap: var(--s-2);
  align-items: center;
}

body.lab-page .lab-pole.loc-st-row {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: subgrid;
  align-items: center;
  column-gap: var(--s-2);
  row-gap: 0;
  padding-block: var(--s-2);
  padding-inline: 0;
  margin: 0;
  background: transparent;
  border: none;
  border-radius: 0;
  border-bottom: 1px solid var(--hairline);
  min-width: 0;
  min-height: 0;
}

body.lab-page .lab-pole.loc-st-row:has(.lab-pole-guns .gun-conn-chip:nth-child(4)) {
  align-items: center;
}

/* status slot unused when hidden — keep out of grid flow */
body.lab-page .lab-pole .lab-pole-status[hidden],
body.lab-page .lab-pole .lab-pole-status:empty {
  display: none;
}

/* Collapse extra poles in-list (beats display:flex above) */
body.lab-page .lab-pole.loc-st-row.lab-pole--collapsed {
  display: none;
}

body.lab-page .lab-community {
  position: relative;
  z-index: 1;
  margin-block-start: var(--s-3);
  min-height: 4rem;
}

body.lab-page .lab-pole .lab-pole-dot {
  grid-column: 1;
  align-self: center;
  width: var(--s-2);
  height: var(--s-2);
  border-radius: 50%;
  background: var(--live-free);
}

body.lab-page .lab-pole .lab-pole-num {
  grid-column: 2;
  align-self: center;
}

body.lab-page .lab-pole .lab-pole-kw {
  grid-column: 3;
  align-self: center;
}

.lab-pole--live .lab-pole-dot {
  background: var(--live-charging);
}

.lab-pole--reserved .lab-pole-dot {
  background: var(--warn);
}

.lab-pole--down .lab-pole-dot {
  background: var(--live-idle);
}

/* Unavailable: mute whole row, gray dot — no status text */
body.lab-page .lab-pole.lab-pole--down {
  opacity: 0.4;
}

body.lab-page .lab-pole.lab-pole--down .lab-pole-num,
body.lab-page .lab-pole.lab-pole--down .lab-pole-kw,
body.lab-page .lab-pole.lab-pole--down .gun-conn-chip {
  color: var(--fg-2);
}

body.lab-page .lab-pole.lab-pole--reserved .gun-conn-chip--reserved {
  border-color: color-mix(in srgb, var(--warn) 50%, transparent);
  color: var(--warn);
}

.lab-pole-num {
  font-weight: 700;
  color: var(--fg);
  font-size: var(--t-body);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.lab-pole-kw {
  font-size: var(--t-caption);
  color: var(--fg-2);
  white-space: nowrap;
}

/* Critical: prod .loc-st-guns is column — force row in lab; chips fill leftover */
body.lab-page .lab-pole .lab-pole-guns.loc-st-guns {
  grid-column: 4;
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: stretch;
  justify-content: flex-start;
  gap: var(--s-1);
  margin: 0;
  min-width: 0;
  width: 100%;
  overflow: hidden;
}

body.lab-page .lab-pole .gun-conn-chip {
  width: auto;
  min-width: 0;
  min-height: 0;
  padding: var(--s-1) var(--s-2);
  gap: var(--s-1);
  border-radius: var(--radius-card);
  font-size: var(--t-caption);
  line-height: 1.2;
  flex: 1 1 0;
  justify-content: center;
}

/* 3 guns: slightly tighter so labels still fit on ~360px */
body.lab-page .lab-pole .lab-pole-guns:has(.gun-conn-chip:nth-child(3)):not(:has(.gun-conn-chip:nth-child(4))) .gun-conn-chip {
  padding-inline: var(--s-1);
  gap: 0;
}

/* 4 guns: 2×2 grid; left meta stays vertically centered to the block */
body.lab-page .lab-pole .lab-pole-guns.loc-st-guns:has(.gun-conn-chip:nth-child(4)) {
  flex-wrap: wrap;
  align-content: center;
  align-self: center;
  overflow: visible;
}

body.lab-page .lab-pole .lab-pole-guns:has(.gun-conn-chip:nth-child(4)) .gun-conn-chip {
  flex: 1 1 calc(50% - var(--s-1) / 2);
  max-width: calc(50% - var(--s-1) / 2);
  padding-inline: var(--s-1);
  justify-content: center;
  align-items: center;
}

body.lab-page .lab-pole .gun-conn-chip .gun-pill {
  margin: 0;
  padding: 0;
  border: none;
  background: transparent;
  font-size: inherit;
}

body.lab-page .lab-pole .gun-conn-chip .gun-dot {
  width: var(--s-1);
  height: var(--s-1);
}

/* Idle / down: hide per-gun live tags — status on the right */
body.lab-page .lab-pole--idle .gun-conn-chip .gun-live-tag,
body.lab-page .lab-pole--idle .gun-conn-chip .gun-chip-sep,
body.lab-page .lab-pole--idle .gun-conn-chip .gun-chip-badges,
body.lab-page .lab-pole--down .gun-conn-chip .gun-live-tag,
body.lab-page .lab-pole--down .gun-conn-chip .gun-chip-sep,
body.lab-page .lab-pole--down .gun-conn-chip .gun-chip-badges {
  display: none;
}

/* Live: hide tags on free guns; keep charging tag compact */
body.lab-page .lab-pole--live .gun-conn-chip--available .gun-live-tag,
body.lab-page .lab-pole--live .gun-conn-chip--available .gun-chip-sep,
body.lab-page .lab-pole--live .gun-conn-chip--available .gun-chip-badges,
body.lab-page .lab-pole--live .gun-conn-chip--catalog .gun-live-tag,
body.lab-page .lab-pole--live .gun-conn-chip--catalog .gun-chip-sep {
  display: none;
}

body.lab-page .lab-pole--live .gun-conn-chip--charging .gun-chip-sep,
body.lab-page .lab-pole--live .gun-conn-chip--finishing .gun-chip-sep {
  display: none;
}

body.lab-page .lab-pole--live .gun-conn-chip--charging,
body.lab-page .lab-pole--live .gun-conn-chip--finishing {
  border-color: color-mix(in srgb, var(--live-charging) 50%, transparent);
  color: var(--live-charging);
  animation: lab-chip-charge-pulse 1.15s ease-in-out infinite;
}

@keyframes lab-chip-charge-pulse {
  0%,
  100% {
    opacity: 1;
    background: color-mix(in srgb, var(--live-charging) 14%, transparent);
  }
  50% {
    opacity: 0.72;
    background: color-mix(in srgb, var(--live-charging) 28%, transparent);
  }
}

body.reduced-fx .lab-pole--live .gun-conn-chip--charging,
body.reduced-fx .lab-pole--live .gun-conn-chip--finishing {
  animation: none;
}

.lab-pole-status {
  display: none;
}

.lab-more-btn {
  width: 100%;
  margin-block-start: var(--s-2);
}

.lab-empty {
  margin: 0;
  font-size: var(--t-caption);
  color: var(--fg-2);
}

/* Community — 2+1 CTA grid; content units keep their own CTA below */
.lab-cta-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--s-2);
  margin-block-end: var(--s-3);
}

.lab-cta-grid .lab-cta--signal:only-child,
.lab-cta-grid .lab-cta--review:only-child,
.lab-cta-grid .lab-cta--photo:only-child {
  grid-column: 1 / -1;
}

/* obs + photo (no empty review): observation full row, photo full below */
.lab-cta-grid .lab-cta--signal:has(+ .lab-cta--photo) {
  grid-column: 1 / -1;
}

.lab-cta-grid .lab-cta--photo {
  grid-column: 1 / -1;
}

.lab-cta[hidden] {
  display: none;
}

.lab-cta {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: var(--s-2);
  width: 100%;
  min-height: 2.75rem;
  padding: var(--s-2) var(--s-3);
  border: 1px solid var(--hairline);
  border-radius: var(--radius-card);
  background: var(--surface);
  color: var(--fg);
  font-size: var(--t-caption);
  font-weight: 700;
  text-decoration: none;
  text-align: left;
  cursor: pointer;
  box-sizing: border-box;
}

.lab-cta-ico {
  flex: 0 0 auto;
  display: block;
}

.lab-cta-txt {
  min-width: 0;
  line-height: 1.25;
}

.lab-unit-cta {
  margin: var(--s-2) 0 var(--s-3);
}

.lab-unit-cta--in-blk {
  margin: var(--s-3) 0 0;
}

.lab-cta--signal {
  color: var(--accent);
  border-color: color-mix(in srgb, var(--accent) 35%, var(--hairline));
}

.lab-cta--review {
  color: var(--dc);
  border-color: color-mix(in srgb, var(--dc) 35%, var(--hairline));
}

.lab-cta--photo {
  color: var(--ac);
  border-color: color-mix(in srgb, var(--ac) 35%, var(--hairline));
}

.lab-sig-hint {
  margin: 0 0 var(--s-2);
  font-size: var(--t-caption);
  color: var(--fg-2);
}

/* Form-like 2-col tiles (same look as community-signals modal) */
body.lab-page .lab-sig-matrix.cs-form-chips {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--s-2);
  margin: 0 0 var(--s-3);
}

body.lab-page .lab-sig-tile.cs-form-chip {
  flex: unset;
  max-width: none;
  width: 100%;
  height: 100%;
  min-height: 48px;
  padding: var(--s-2) var(--s-2) var(--s-2) var(--s-2);
  box-shadow: none;
  align-items: stretch;
  gap: var(--s-2);
}

body.lab-page .lab-sig-tile .cs-signal-icon {
  align-self: center;
}

body.lab-page .lab-sig-tile .cs-form-chip-label {
  flex: 1 1 auto;
  min-width: 0;
  align-self: center;
  text-transform: none;
  letter-spacing: 0;
  font-weight: 600;
  line-height: 1.25;
}

body.lab-page .lab-sig-n {
  flex: 0 0 auto;
  align-self: stretch;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 1.35em;
  margin: calc(var(--s-2) * -1) calc(var(--s-2) * -1) calc(var(--s-2) * -1) 0;
  padding: 0 var(--s-2);
  font-size: clamp(1.35rem, 5.5vw, 1.75rem);
  font-weight: 800;
  line-height: 1;
  letter-spacing: 0;
  text-transform: none;
  border-left: 1px solid color-mix(in srgb, currentColor 28%, transparent);
}

body.lab-page .lab-sig-tile--empty {
  opacity: 0.34;
  color: var(--fg-2);
  border-color: color-mix(in srgb, var(--hairline) 70%, transparent);
  background: transparent;
}

body.lab-page .lab-sig-tile--empty .cs-signal-icon {
  opacity: 0.45;
}

body.lab-page .lab-sig-tile--hit.lab-sig-tile--pos {
  opacity: 1;
  color: var(--live-free);
  border-color: color-mix(in srgb, var(--live-free) 55%, var(--hairline));
  background: color-mix(in srgb, var(--live-free) 12%, transparent);
}

body.lab-page .lab-sig-tile--hit.lab-sig-tile--warn {
  opacity: 1;
  color: var(--warn);
  border-color: color-mix(in srgb, var(--warn) 55%, var(--hairline));
  background: color-mix(in srgb, var(--warn) 12%, transparent);
}

body.lab-page .lab-sig-tile--hit.lab-sig-tile--neg {
  opacity: 1;
  color: var(--err);
  border-color: color-mix(in srgb, var(--err) 55%, var(--hairline));
  background: color-mix(in srgb, var(--err) 12%, transparent);
}

/* Prod gallery block inside lab community */
body.lab-page .lab-community .loc-photos-blk {
  margin: 0 0 var(--s-3);
  padding: var(--s-3);
  background: var(--surface);
  border: 1px solid var(--hairline);
  border-radius: var(--radius-card);
}

body.lab-page .lab-community .loc-photos-blk .blk-hdr {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-2);
  margin-block-end: var(--s-2);
}

body.lab-page .lab-community .loc-photos-blk .blk-title {
  font-size: var(--t-caption);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--fg);
}

body.lab-page {
  --loc-photo-strip-h: 160px;
  --loc-pad: var(--s-3);
}

body.lab-page .lab-community .loc-photo-carousel {
  margin-left: calc(-1 * var(--s-3));
  margin-right: calc(-1 * var(--s-3));
  width: calc(100% + 2 * var(--s-3));
}

/* Allow vertical page scroll while finger is on the photo strip */
body.lab-page .lab-community .loc-photo-grid {
  touch-action: pan-x pan-y;
}

body.lab-page .lab-community .lab-unit-cta .loc-photos-add-btn {
  width: 100%;
  margin-block-start: var(--s-3);
}

.lab-feed {
  display: flex;
  flex-direction: column;
  gap: 0;
  background: var(--surface);
  border: 1px solid var(--hairline);
  border-radius: var(--radius-card);
  overflow: hidden;
}

.lab-feed-row {
  display: flex;
  align-items: center;
  gap: var(--s-2);
  padding: var(--s-3);
  border-bottom: 1px solid var(--hairline);
  font-size: var(--t-caption);
}

.lab-feed-row:last-child {
  border-bottom: none;
}

.lab-feed-badge {
  flex-shrink: 0;
  padding: var(--s-1) var(--s-2);
  border-radius: var(--radius-card);
  font-weight: 700;
  font-size: var(--t-caption);
  text-transform: lowercase;
}

.lab-feed-badge--ok {
  color: var(--live-free);
  background: color-mix(in srgb, var(--live-free) 12%, transparent);
}

.lab-feed-badge--warn {
  color: var(--warn);
  background: color-mix(in srgb, var(--warn) 12%, transparent);
}

.lab-feed-badge--neg {
  color: var(--err);
  background: color-mix(in srgb, var(--err) 12%, transparent);
}

.lab-feed-text {
  color: var(--fg-2);
  min-width: 0;
}

@media (min-width: 900px) {
  .lab-hero-shell {
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(220px, 0.9fr);
    gap: var(--s-3);
    align-items: stretch;
  }

  /* Equal-height bio + map: card fills row; actions pin to bottom */
  body.lab-page .lab-hero-shell > .lab-hero.card {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 100%;
    box-sizing: border-box;
  }

  .lab-hero-shell > .lab-hero .lab-hero-actions {
    margin-block-start: auto;
  }

  .lab-hero-shell > .lab-hero-map-wrap {
    display: flex;
    flex-direction: column;
    align-self: stretch;
    height: 100%;
    min-height: 0;
  }

  .lab-hero-shell .loc-hero-map,
  .lab-hero-shell .loc-hero-map.leaflet-container {
    flex: 1 1 auto;
    width: 100%;
    /* Leaflet пишет height в style на контейнере */
    height: 100% !important;
    min-height: 0;
  }

  .lab-hero-title {
    gap: var(--s-2);
  }

  /* KPI: connectors one line; slightly larger type/icons */
  .lab-kpi {
    gap: 0;
  }

  .lab-kpi-cell .lab-ico {
    width: 26px;
    height: 26px;
  }

  .lab-kpi-v {
    font-size: var(--t-body-lg, 16px);
  }

  .lab-kpi-copy--stack {
    flex-direction: row;
    flex-wrap: nowrap;
    justify-content: center;
    align-items: baseline;
    gap: 0;
  }

  .lab-kpi-conn {
    display: inline;
    font-size: var(--t-body);
    white-space: nowrap;
  }

  .lab-kpi-conn + .lab-kpi-conn::before {
    content: "|";
    margin-inline: var(--s-2);
    color: var(--fg-2);
    font-weight: 500;
  }

  /* Power · tariff on one line */
  .lab-kpi-copy:has(.lab-kpi-now) {
    flex-direction: row;
    flex-wrap: nowrap;
    justify-content: center;
    align-items: baseline;
    gap: 0;
  }

  .lab-kpi-v + .lab-kpi-now::before {
    content: "|";
    margin-inline: var(--s-2);
    color: var(--fg-2);
    font-weight: 500;
  }

  .lab-kpi-now {
    font-size: var(--t-body);
    white-space: nowrap;
  }

  .lab-live-bar {
    font-size: var(--t-body);
  }

  /* 4 guns: one row from desktop (mobile keeps 2×2) */
  body.lab-page .lab-pole .lab-pole-guns.loc-st-guns:has(.gun-conn-chip:nth-child(4)) {
    flex-wrap: nowrap;
    overflow: hidden;
  }

  body.lab-page .lab-pole .lab-pole-guns:has(.gun-conn-chip:nth-child(4)) .gun-conn-chip {
    flex: 1 1 0;
    max-width: none;
  }

  body.lab-page .lab-pole.loc-st-row {
    column-gap: var(--s-3);
  }

  /* Community CTAs: one row, equal height */
  .lab-cta-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    max-width: none;
    align-items: stretch;
  }

  .lab-cta-grid .lab-cta--photo,
  .lab-cta-grid .lab-cta--signal:has(+ .lab-cta--photo) {
    grid-column: auto;
  }

  .lab-cta-grid .lab-cta {
    height: 100%;
    min-height: 3rem;
    margin: 0;
    font-size: var(--t-body);
    justify-content: flex-start;
    text-align: left;
  }

  .lab-cta-ico {
    width: 20px;
    height: 20px;
  }

  /* Observations: readable labels + slightly larger icons */
  body.lab-page .lab-sig-matrix.cs-form-chips {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  body.lab-page .lab-sig-tile.cs-form-chip {
    min-height: 52px;
    font-size: var(--t-body);
  }

  body.lab-page .lab-sig-tile .cs-form-chip-label {
    font-size: var(--t-body);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  body.lab-page .lab-sig-tile .cs-signal-icon {
    width: 22px;
    height: 22px;
  }

  body.lab-page .lab-sig-n {
    font-size: clamp(1.5rem, 2vw, 1.85rem);
  }

  .lab-sig-hint {
    font-size: var(--t-body);
  }

  .lab-occ-matrix {
    gap: 3px;
  }
}
