/* «Куда доставить» (заказы, шаг 6.5; эталон `layout.css` и `components.css` — `.address-*`, `.dialog--wide`): окно адреса —
   «Мои адреса» карточками и новый адрес в два шага; поля шапки доставки — два рядом по одной сетке. */

.dialog--wide { width: min(100%, calc(var(--space-8) * 12)); }
.dialog__part { display: grid; gap: var(--space-3); min-width: 0; }
.dialog__part-title { margin: 0; font-size: var(--title-sm); }

/* Карточки адресов: радио слева, подпись («Дом», «Работа»), адрес и подробности. */
.address-dialog .points { display: grid; gap: var(--space-2); margin: 0; padding: 0; border: 0; min-width: 0; }
.choice-card {
  display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: start; gap: var(--space-3);
  padding: var(--space-3) var(--space-4); border: 1px solid var(--border2); border-radius: var(--radius-lg);
  background: var(--panel); cursor: pointer;
}
.choice-card:has(input:checked) { border-color: var(--accent); }
/* Значки у адреса окна (Р219, Р220): «Изменить» — справа сверху, «Удалить» — справа снизу, поверх края карточки; место
   под них карточка держит сама — слова до значков не доходят. */
.address-pick-row { position: relative; min-width: 0; }
.address-pick-row > .address-pick {
  min-height: calc(var(--control-md) * 2 + var(--space-3)); padding-right: calc(var(--control-md) + var(--space-4));
}
.address-pick__tools {
  position: absolute; top: var(--space-1); right: var(--space-1); bottom: var(--space-1);
  display: flex; flex-direction: column; justify-content: space-between; align-items: center;
}
.address-pick__tools .icon-btn { width: var(--control-md); height: var(--control-md); color: var(--muted); }
.address-pick__tools .icon-btn svg { width: var(--icon-md); height: var(--icon-md); }
.address-pick__tools .address-pick__delete { color: var(--err); }
/* Телефон: значки — во весь палец (`--tap`), карточка — не ниже двух значков. */
@media (max-width: 767px) {
  .address-pick-row > .address-pick { min-height: calc(var(--tap) * 2 + var(--space-2)); padding-right: calc(var(--tap) + var(--space-3)); }
  .address-pick__tools .icon-btn { width: var(--tap); height: var(--tap); }
}
.address-pick-gone {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-1) var(--space-3);
  padding: var(--space-3) var(--space-4); border: 1px dashed var(--border2); border-radius: var(--radius-lg); color: var(--muted);
}
.choice-card__text { display: grid; gap: var(--space-1); min-width: 0; overflow-wrap: anywhere; }
.choice-card__sub { color: var(--muted); font-size: var(--text-sm); }
/* Недоступная карточка (эталон `components.css`, `.choice-card.is-off`): адрес вне зоны, без места или без дома. */
.choice-card.is-off { background: var(--card); cursor: not-allowed; }
.choice-card.is-off b { color: var(--muted); }
/* Условия зоны у адреса (И108); пока служба отвечает — строка уже занята: карточка не прыгает. */
.address-pick__terms { min-height: 1lh; font-size: var(--text-sm); }
.address-pick__terms.is-off { color: var(--err); }
/* Подпись — заголовком карточки (Р216): крупнее и жирнее адреса, со значком; адрес под ней — простым текстом. */
.address-pick__label, .address-card__label {
  display: inline-flex; align-items: center; gap: var(--space-2); justify-self: start; max-width: 100%;
  color: var(--ink); font-size: var(--text-lg); font-weight: var(--weight-semibold); line-height: var(--leading-title);
}
.address-pick__label svg, .address-card__label svg { flex: none; width: var(--icon-md); height: var(--icon-md); color: var(--accent); }
.address-pick__line, .address-card__line { color: var(--ink); font-weight: var(--weight-regular); }
.choice-card.is-off .address-pick__line { color: var(--muted); }
/* «Своя» подпись (Р210): слова и значок из набора — сеткой квадратных кнопок, выбранный — цветом сайта. */
.address-form__own { display: grid; gap: var(--space-3); }
.address-form__own[hidden] { display: none; }
.address-icons { display: grid; grid-template-columns: repeat(auto-fill, minmax(44px, 1fr)); gap: var(--space-2); }
.address-icons__item {
  display: grid; place-items: center; height: 44px; min-height: 0; margin: 0; padding: 0;
  border: 1px solid var(--border2); border-radius: var(--radius-md); background: var(--panel); background-image: none;
  color: var(--ink); box-shadow: none; animation: none; cursor: pointer;
}
.address-icons__item[aria-pressed="true"] { border-color: var(--accent); background: var(--tint); color: var(--accent); }
.address-icons__item:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.address-new { justify-self: start; }

/* Новый адрес: шаги строкой, подсказки — выпадающим списком во всю ширину поля, квартирные поля — сеткой. */
.address-form { display: grid; gap: var(--space-4); min-width: 0; }
.address-steps {
  display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-4); margin: 0; padding: 0; list-style: none;
  color: var(--muted); font-size: var(--text-sm); counter-reset: step;
}
.address-steps li { counter-increment: step; }
.address-steps li::before { content: counter(step) ". "; }
.address-steps .is-current { color: var(--ink); font-weight: var(--weight-semibold); }
.address-suggest { position: relative; display: grid; gap: var(--space-1); }
/* Подсказки — частью формы под полем, а не поверх: тело окна прокручивается, и плавающий список им обрезался бы. */
.address-suggest__list { position: static; max-width: none; margin: 0; padding: var(--space-1); list-style: none; }
.address-suggest__list[hidden] { display: none; }
.address-suggest__item { min-height: var(--control-lg); white-space: normal; cursor: pointer; }
.address-suggest__item[aria-selected="true"] { background: var(--tint); }
/* Подсказка своей базы без дома (И258): пометка второй строкой — тише адреса. */
.address-suggest__item.is-mark { display: grid; align-content: center; gap: 2px; }
.address-suggest__note { color: var(--muted); font-size: var(--text-sm); }
/* Подсказки из своей базы (Р228) — одна тихая строка под списком: откуда они и что делать, если дома нет. */
.address-suggest__source { margin: 0; color: var(--muted); font-size: var(--text-sm); }
.address-suggest__source[hidden] { display: none; }
/* Улица без дома (И258): выбранная улица, номер дома и отметка на карте — тем же столбцом, что и поле адреса. */
.address-mark { display: grid; gap: var(--space-3); min-width: 0; }
.address-mark .address-form__text span { line-height: var(--leading-text); }
.address-mark__number .input { max-width: calc(var(--space-8) * 3); }
.address-mark__tap {
  margin: 0; padding: var(--space-2) var(--space-3); border: 1px dashed var(--border2); border-radius: var(--radius-md);
  color: var(--ink); font-size: var(--text-sm);
}
.address-mark__tap.is-done { border-style: solid; border-color: var(--accent); background: var(--tint); }
.address-mark__tap.is-wanted { border-style: solid; border-color: var(--err); color: var(--err); }
.address-form__details { display: grid; gap: var(--space-4); min-width: 0; }
.address-form__line {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--space-2) var(--space-3);
  margin: 0; overflow-wrap: anywhere;
}
.address-form__text { display: grid; gap: var(--space-1); min-width: 0; line-height: var(--leading-title); }
.address-form__text span { color: var(--muted); font-size: var(--text-sm); }
.address-form__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-3); }
.address-form__grid[hidden] { display: none; }
.address-form__grid .field { align-content: start; }
.address-form__labels { justify-self: start; }
.address-form__say:empty { display: none; }
@media (max-width: 767px) { .address-form__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* Шапка доставки: «Куда доставить» и «Когда доставить» — рядом, поровну. На узком планшете «Доставка ⌄» и «Когда» —
   пополам, как у самовывоза, а адрес — своим рядом во всю ширину (симметрия, владелец 06.10). */
.ww--two > .ww__field { flex: 1 1 0; min-width: 0; }
@media (min-width: 768px) and (max-width: 899px) {
  .scenario--delivery #where-field { grid-column: 1 / -1; grid-row: 2; }
}

/* «Мои адреса» кабинета (шаг 6.5; эталон `layout.css`, «.address-card»): карточка — текст слева, значки справа:
   «Изменить» сверху, «Удалить» снизу (Р219, Р220 — как в окне адреса). Удалённый — строкой «… удалён · Вернуть». */
.address-intro { font-size: var(--text-sm); }
.address-list { display: grid; gap: var(--space-3); margin: 0; padding: 0; list-style: none; }
.address-card {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: start; gap: var(--space-2) var(--space-4);
  padding: var(--space-4) var(--space-5); border: 1px solid var(--border2); border-radius: var(--radius-lg); background: var(--panel);
}
.address-card__text { display: grid; gap: var(--space-1); justify-items: start; min-width: 0; overflow-wrap: anywhere; }
.address-card__details, .address-card__comment { color: var(--muted); font-size: var(--text-sm); }
.address-card__actions {
  display: flex; flex-direction: column; justify-content: space-between; align-self: stretch; gap: var(--space-2);
  margin: calc(var(--space-2) * -1) calc(var(--space-3) * -1) calc(var(--space-2) * -1) 0;
}
.address-card__actions .icon-btn { width: var(--control-md); height: var(--control-md); color: var(--muted); }
.address-card__actions .icon-btn svg { width: var(--icon-md); height: var(--icon-md); }
.address-card__actions .address-card__delete { color: var(--err); }
.address-card--removed { align-items: center; color: var(--muted); }
.address-add { justify-self: start; }
.myaddresses__status:empty { display: none; }
@media (max-width: 767px) {
  .address-card { padding: var(--space-4); }
  .address-card__actions .icon-btn { width: var(--tap); height: var(--tap); }
}

/* Карта зон доставки (Р175, Р208; эталон `components.css` — `.addr-layout`, `.zone-map`). Окно адреса с картой — почти во
   весь экран: слева адреса своей прокруткой (и при 4+ адресах всё на виду), справа карта на всю высоту; на телефоне — во
   весь экран, карта сверху, адреса под ней. Цвета зон — темы клиента; выделена зона адреса. */
.addr-layout { display: grid; gap: var(--space-4); min-width: 0; }
.addr-layout__part { min-width: 0; }
.dialog--address { width: min(100%, 1280px); height: calc(100vh - var(--space-7)); height: calc(100dvh - var(--space-7)); max-height: none; }
/* На компьютере — на пятую часть ниже экрана (Р221; владелец 08.10: «окно на компе я бы сделал по вертикали на процентов
   20 поменьше»): страница видна сверху и снизу. */
@media (min-width: 768px) {
  .dialog--address { height: calc((100vh - var(--space-7)) * 0.8); height: calc((100dvh - var(--space-7)) * 0.8); }
}
.dialog--address .dialog__body { display: flex; flex-direction: column; padding: 0; overflow: hidden; }
.dialog--address .addr-layout { flex: 1 1 auto; min-height: 0; gap: 0; }
.dialog--address .addr-layout__part { min-height: 0; padding: var(--space-5); overflow: auto; overscroll-behavior: contain; }
.dialog--address .addr-layout--map { grid-template-columns: minmax(340px, 440px) minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); }
.zone-map { --map-pad: 0px; position: relative; display: grid; min-width: 0; min-height: 0; }
.dialog--address .zone-map { --map-pad: var(--space-3); height: 100%; padding: var(--map-pad); }
.zone-map__art {
  position: relative; aspect-ratio: 16 / 10; max-width: 100%; overflow: hidden;
  border: 1px solid var(--border2); border-radius: var(--radius-lg); background: var(--cream);
}
.dialog--address .zone-map__art { height: 100%; aspect-ratio: auto; }
@media (max-width: 767px) {
  .dialog--address { height: 100vh; height: 100dvh; border-radius: 0; }
  .dialog--address .addr-layout--map { grid-template-columns: minmax(0, 1fr); grid-template-rows: 45% minmax(0, 1fr); }
  /* Новый адрес, шаг «Улица и дом»: дом выбирают и нажатием на карту — ей больше места (Р217). */
  .dialog--address.is-picking-place .addr-layout--map { grid-template-rows: 58% minmax(0, 1fr); }
  .dialog--address .zone-map { --map-pad: 0px; order: -1; }
  .dialog--address .zone-map__art { border-width: 1px 0; border-radius: 0; }
}
.zone-map__failed {
  position: absolute; inset: 0; display: grid; place-items: center; margin: 0; padding: var(--space-4);
  color: var(--muted); font-size: var(--text-sm); text-align: center;
}
.zone-map__pin { display: grid; color: var(--accent); filter: drop-shadow(0 1px 1px rgb(0 0 0 / 0.35)); }
.zone-map__pin svg { width: 28px; height: 28px; fill: var(--panel); }
.zone-map__pin.is-out { color: var(--err); }
/* Раскраска зон (Р214) — своим слоем над улицами и под метками; нажатия — карте. */
.zone-map__paint { position: absolute; top: 0; left: 0; pointer-events: none; }
.zone-map__paint[hidden] { display: none; }
/* Условия нажатой зоны — одна плашка внизу слева над строкой «© участники OpenStreetMap», со «Закрыть» (Р217): других
   слов поверх карты нет — на телефоне карта иначе тонула в подписях. */
.zone-map__info {
  position: absolute; left: calc(var(--map-pad) + var(--space-3)); right: calc(var(--map-pad) + var(--space-3));
  bottom: calc(var(--map-pad) + var(--space-6)); justify-self: start; display: flex; align-items: center; gap: var(--space-2);
  width: fit-content; max-width: calc(100% - var(--map-pad) * 2 - var(--space-6)); margin: 0;
  padding: var(--space-1) var(--space-1) var(--space-1) var(--space-3); border-radius: var(--radius-md, 8px);
  background: var(--panel); box-shadow: 0 0 0 1px var(--border2), var(--shadow-1, 0 1px 3px rgb(0 0 0 / 0.12));
  color: var(--ink); font-size: var(--text-sm); font-weight: var(--weight-semibold);
}
.zone-map__info[hidden] { display: none; }
.zone-map__terms { min-width: 0; overflow-wrap: anywhere; }
.zone-map__shut {
  display: grid; place-items: center; flex: none; width: var(--control-sm); height: var(--control-sm); min-height: 0; margin: 0;
  padding: 0; border: 0; border-radius: var(--radius-md, 8px); background: transparent; color: var(--muted); box-shadow: none;
}
.zone-map__shut:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
/* Шаг «Улица и дом» нового адреса: нажатие на карту выбирает место (владелец 08.10) — подсказка у поля и крестик. */
.zone-map__art.is-picking .maplibregl-canvas { cursor: crosshair; }
/* Отметка дома (И258, М10 аудита): крестик посередине карты — дом под ним ставит «Отметить по центру карты». */
.zone-map__art.is-marking::after {
  content: ""; position: absolute; top: 50%; left: 50%; width: 28px; height: 28px; margin: -14px 0 0 -14px;
  pointer-events: none; z-index: 2;
  background:
    linear-gradient(var(--ink), var(--ink)) center / 2px 100% no-repeat,
    linear-gradient(var(--ink), var(--ink)) center / 100% 2px no-repeat;
  opacity: 0.6;
}
.address-mark__centre { justify-self: start; }
.address-mark__centre[hidden] { display: none; }
/* Кнопки карты — спокойные, а не кнопки сайта: карта — справка, а не действие окна. «Зоны» прячет раскраску (Р209). */
/* Кнопки «Приблизить» и «Отдалить» — общие для карт сайта (`components.css`); «Зоны» — в том же виде. */
.zone-map__zones { border-radius: var(--radius-md); background: var(--panel); box-shadow: 0 0 0 1px var(--border2), var(--shadow-1); }
.zone-map__zones {
  display: inline-flex; align-items: center; gap: var(--space-1); height: 32px; min-height: 0; margin: 0;
  padding: 0 var(--space-3); border: 0; background-image: none; color: var(--ink); font-size: var(--text-sm);
  font-weight: var(--weight-semibold); animation: none; cursor: pointer;
}
.zone-map__zones svg { width: 18px; height: 18px; color: var(--accent); }
/* Выключенная — та же подложка (общее правило переключателей сайта её снимало), слова и значок — приглушённые. */
.zone-map .zone-map__zones[aria-pressed] { background: var(--panel); }
.zone-map__zones[aria-pressed="false"] { color: var(--muted); }
.zone-map__zones[aria-pressed="false"] svg { color: var(--muted); }
@media (pointer: coarse) {
  .zone-map__zones { height: 40px; }
}
.zone-map__zones:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
.zone-map .maplibregl-ctrl-attrib { font-size: var(--text-xs); }

/* Условия доставки (Р187): строкой под адресом и «Подробнее»; в окне — столбиком «подпись — значение». */
.zone-line { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0 var(--space-2); margin: 0; color: var(--muted); font-size: var(--text-sm); }
.zone-line .zone-line__more { min-height: 0; padding: 0; font-size: var(--text-sm); }
.terms-dialog { display: grid; gap: var(--space-3); align-content: start; }
.terms-dialog p { margin: 0; }
.terms-rows { display: grid; grid-template-columns: max-content minmax(0, 1fr); align-content: start; gap: var(--space-2) var(--space-4); margin: 0; }
.terms-rows dt { color: var(--muted); }
.terms-rows dd { margin: 0; font-weight: var(--weight-semibold); overflow-wrap: anywhere; }
