/* Единая плитка выбора (Александр 2026-10-10): одна форма для всех групп, ровная сетка. */
.tiles {
  display:grid;
  grid-template-columns:repeat(var(--cols,2),minmax(0,1fr));
  gap:10px
}
/* число колонок по числу вариантов: 2 -> две во всю ширину, 3 -> три, длинные названия -> две */
.tiles.cols-3 {
  --cols:3
}
label.tile {
  position:relative;
  display:flex;
  align-items:center;
  gap:12px;
  min-height:56px;
  padding:10px 14px 10px 12px;
  border:1px solid var(--line);
  border-radius:10px;
  background:#fff;
  cursor:pointer;
  font-size:var(--fs-body,1rem);
  line-height:1.35;
  color:var(--text)
}
.tile:hover {
  border-color:#bdbdb7
}
.tile.on {
  border-color:var(--accent-deep);
  background:var(--accent-soft)
}
.tile input {
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  min-height:0;
  margin:0;
  opacity:0;
  cursor:pointer
}
.tile:has(input:focus-visible) {
  outline:2px solid var(--accent-deep);
  outline-offset:2px
}
.tile-check {
  flex:0 0 20px;
  width:20px;
  height:20px;
  border:1.5px solid #8c8c87;
  border-radius:5px;
  background:#fff;
  display:grid;
  place-items:center
}
.tile.on .tile-check {
  background:var(--ink);
  border-color:var(--ink)
}
.tile.on .tile-check::after {
  content:"";
  width:10px;
  height:5px;
  border:solid #fff;
  border-width:0 0 2px 2px;
  transform:translateY(-1px) rotate(-45deg)
}
.tile-media {
  flex:0 0 64px;
  width:64px;
  height:46px;
  border-radius:6px;
  overflow:hidden;
  background:var(--surface);
  outline:1px solid rgba(0,0,0,.1);
  outline-offset:-1px
}
.tile-media img,.tile-sw {
  width:100%;
  height:100%;
  object-fit:cover;
  display:flex
}
.tile-sw i {
  flex:1
}
.tile-media.small {
  flex-basis:40px;
  width:40px;
  height:28px
}
/* текст над невидимым input: его можно выделить и скопировать, клик по тексту
   всё равно ставит галочку через label */
.tile-text {
  position:relative;
  z-index:1;
  flex:1;
  min-width:0;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:2px
}
.tile-title {
  overflow-wrap:break-word;
  hyphens:manual
}
.tile-sub {
  font-size:var(--fs-note,.875rem);
  color:var(--muted)
}
.tile-dot {
  display:inline-block;
  width:11px;
  height:11px;
  margin-inline-end:7px;
  border-radius:50%;
  outline:1px solid rgba(0,0,0,.3);
  vertical-align:baseline
}
.tile-price {
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
  font-size:var(--fs-note,.875rem);
  color:var(--muted)
}
.tile.on .tile-price {
  color:var(--text);
  font-weight:600
}
/* строки цветов: название цвета слева, варианты справа; строки разделены линией,
   чтобы было видно, какие варианты к какому цвету относятся (Александр 2026-10-10) */
.crows {
  display:grid
}
.crow {
  display:grid;
  grid-template-columns:200px minmax(0,1fr);
  gap:12px;
  align-items:start;
  padding:12px 0
}
.crow+.crow {
  border-top:1px solid var(--line)
}
.crow:first-child {
  padding-top:0
}
.editor-layout .crow .cbase {
  display:flex;
  align-items:center;
  gap:10px;
  min-height:56px;
  font-weight:600
}
.sub-row {
  display:grid;
  grid-template-columns:200px minmax(0,1fr);
  gap:12px;
  align-items:start;
  margin-top:16px;
  padding-top:16px;
  border-top:1px solid var(--line)
}
.sub-row .sub-title {
  min-height:56px;
  display:flex;
  align-items:center;
  font-weight:600;
  font-size:var(--fs-body,1rem)
}
.side-model {
  font-weight:700;
  margin:0 0 4px
}
.side-client {
  margin:0 0 12px;
  color:var(--text)
}
.side-client.missing {
  color:var(--red)
}
@media(max-width:700px) {
  .crow,.sub-row,.tiles,.tiles.cols-3,.cluster-body {
    grid-template-columns:minmax(0,1fr)
  }
}
/* одиночная опция сама занимает ячейку сетки блока */
.option-group.single .tiles {
  --cols:1
}
/* фото - кнопка увеличения поверх невидимого input */
span.tile-media.zoom {
  position:relative;
  z-index:1;
  cursor:zoom-in
}
span.tile-media.zoom:focus-visible {
  outline:2px solid var(--accent-deep);
  outline-offset:2px
}
/* наклейки: картинка во всю ширину над названием */
.tile.stack {
  display:grid;
  grid-template-columns:20px minmax(0,1fr);
  grid-template-areas:"media media" "check text";
  align-items:start;
  gap:10px 12px;
  padding:12px
}
.tile.stack .tile-media {
  grid-area:media;
  width:100%;
  height:auto;
  aspect-ratio:4/3;
  background:#fff
}
.tile.stack .tile-media img {
  object-fit:contain
}
.tile.stack .tile-check {
  grid-area:check;
  margin-top:2px
}
.tile.stack .tile-text {
  grid-area:text
}
