.address-page {
  height: 100vh;
  max-width: 640px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}


/* ==========================================================
   2. Map section (заполняет всё, кроме формы; мин. 250px)
   ========================================================== */
.address-map {
  position: relative;
  width: 100%;
  flex: 1 1 0;
  min-height: 250px !important;
}

.address-map iframe,
.address-map__canvas {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
  z-index: 0;
}

/* Слой поверх карты: пин всегда поверх канваса/iframe Яндекса (изображение в стиле Yandex Maps) */
.address-map__pin {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -100%);
  z-index: 10;
  width: 25px;
  height: 42px;
  pointer-events: none;
  display: flex;
  align-items: center;
  justify-content: center;
}

.address-map__pin-img {
  display: block;
  width: 100%;
  height: 100%;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
  object-fit: contain;
}

/* Mobile: пин выше и крупнее, чтобы точно был виден в видимой области карты */
@media screen and (max-width: 768px) {
  .address-map__pin {
    min-height: auto !important;
  }

  .address-map__pin-img {
    width: 100%;
    height: 100%;
  }
}

.address-map__pin.is-hidden {
  visibility: hidden;
}

/* Сообщение «адрес за пределами зоны доставки» — внизу карты */
.address-map__zone-message {
  position: absolute;
  left: var(--space-sm);
  right: var(--space-sm);
  bottom: 24px;
  min-width: 326px;
  z-index: 5;
  padding: var(--space-sm, 12px) var(--space-md, 16px);
  background: #3C3C3C;
  color: #fff;
  font-size: var(--font-size-sm, 0.875rem);
  line-height: var(--line-height-normal, 1.4);
  border-radius: var(--radius-pill);
  text-align: center;
  pointer-events: none;
}

.address-map__zone-message.is-hidden {
  display: none !important;
}

@media screen and (min-width: 568px) {
  .address-map__zone-message {
    bottom: 42px;
  }
}

/* ==========================================================
   3. Address form (прибита к низу, макс. 460px; при малой высоте — сжимается и скролл)
   ========================================================== */
.address-form {
  position: relative;
  width: 100%;
  margin-top: -16px;
  background: var(--color-white);
  border-top-left-radius: var(--radius-xl);
  border-top-right-radius: var(--radius-xl);
  z-index: 3;
  flex-shrink: 0;
  height: min(460px, calc(100vh - 250px));
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding: var(--space-sm);
}

/* Прокручиваемая часть формы (табы + контент); кнопка остаётся внизу */
.address-form__scroll {
  flex: 1 1 0;
  min-height: 0;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

.address-form__tabs {
  margin-bottom: var(--space-md) !important;
}

.address-form__fields {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.address-form__fields .form-group {
  margin-bottom: 0;
}

/* Обёртка «Дом / Квартира / Этаж / Подъезд / Домофон»: на мобайле — как есть (две строки), на десктопе — одна строка */
.address-form__details {
  display: flex;
  flex-direction: column;
  gap: var(--space-md);
}

.address-min-order {
  margin: 0 0 0 var(--space-md);
  font-size: var(--font-size-sm);
  line-height: 0;
  color: var(--color-gray-600, #6b7280);
}

.address-form__submit {
  flex-shrink: 0;
  padding: var(--space-sm) var(--space-xl) env(safe-area-inset-bottom, 0px);
}

.address-form__submit .btn:disabled {
  background: var(--color-gray-200);
  color: var(--color-text-hint);
  cursor: not-allowed;
  opacity: 0.8;
}


/* ==========================================================
   4. Pickup tab content
   ========================================================== */
.address-pickup {
  display: none;
}

.address-pickup.is-visible {
  display: block;
  padding: var(--space-sm) var(--space-lg);
}

.address-delivery {
  display: block;
}

.address-delivery.is-hidden {
  display: none;
}

/* Title */
.address-pickup__title {
  font-size: var(--font-size-xl);
  font-weight: var(--font-weight-semibold);
  color: var(--color-gray-800);
  margin-bottom: var(--space-sm);
}

/* List */
.address-pickup__list {
  display: flex;
  flex-direction: column;
  gap: 0;
}

/* Item */
.address-pickup__item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-md);
  padding: var(--space-sm) 0;
  cursor: pointer;
  transition: background var(--transition-fast);
}


/* Radio button */
.address-pickup__radio {
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  border-radius: var(--radius-circle);  
  border: 6px solid var(--color-gray-200);
  background: var(--color-gray-200);  
  transition: border-color var(--transition-fast), background var(--transition-fast), box-shadow var(--transition-fast);
  position: relative;
}

.address-pickup__item.is-selected .address-pickup__radio {
  border-color: var(--color-success);
  background: var(--color-white);
  box-shadow: inset 0 0 0 3px var(--color-white);
}

/* Info */
.address-pickup__info {
  flex-grow: 1;
  min-width: 0;
}

.address-pickup__name {
  font-size: var(--font-size-base);
  font-weight: var(--font-weight-medium);
  color: var(--color-text);
  line-height: var(--line-height-normal);
  text-decoration: none;
}

/* Expandable details (hidden by default) */
.address-pickup__details {
  display: none;
  font-size: var(--font-size-sm);
  margin-top: var(--space-xs);
  padding-top: var(--space-xs);
}

.address-pickup__item.is-selected .address-pickup__details {
  display: block;
}

/* Detail rows */
.address-pickup__row {
  display: flex;
  align-items: baseline;
  gap: var(--space-sm);
  padding: 4px 0;
}

.address-pickup__label {  
  color: var(--color-text-secondary);
  min-width: 80px;
  flex-shrink: 0;
}

.address-pickup__value {  
  color: var(--color-text);
}

/* Status badge */
.address-pickup__status {  
  font-weight: var(--font-weight-medium);
  min-width: 80px;
  flex-shrink: 0;
}

.address-pickup__status--open {
  color: var(--color-success);
}

.address-pickup__status--closed {
  color: var(--color-primary);
}

.address-pickup__status--soon-open {
  color: var(--color-accent);
}

/* Phone link */
.address-pickup__phone {  
  color: var(--color-text);
  text-decoration: underline;
  text-underline-offset: 2px;
}


/* ==========================================================
   5. Media Queries
   ========================================================== */

/* Tablet: ≥ 769px */
@media screen and (min-width: 769px) {
  .address-form {
    max-width: 640px;
    margin-left: auto;
    margin-right: auto;
    margin-top: -34px;
    padding: var(--space-xl) var(--space-xl);
    border-radius: var(--radius-xl);
    box-shadow: var(--shadow-lg);
  }

  /* Дом / Квартира / Этаж / Подъезд / Домофон — в одну строку */
  .address-form__details {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: var(--space-sm);
  }

  .address-form__details .form-row {
    display: contents;
  }

  .address-form__details .form-row > * {
    min-width: 0;
  }

  .address-form__submit {
    padding-bottom: max(var(--space-lg), env(safe-area-inset-bottom));
  }
}
