/* ==========================================================================
   wizard.css — Мастер карты v3 (вариант G, 11 шагов). Компонентные правила.
   Слой ПОВЕРХ реальных токенов сайта (tokens.css + components.css): все цвета
   берутся из палитры (--bg #0f172a, --bg-card #1e293b, --bg-card2 #162032,
   --border #334155, --primary #2563EB, --accent #10B981, --text #f1f5f9).
   Новых цветов не вводим. Mobile-first; десктоп-сетки — в wizard_scaffold.css.
   Перенесено из .project/design_mockups/wizard_v2/overrides.css (/* Variant G */).
   ========================================================================== */

/* подзаголовок-«надпись» внутри шага */
.wizG-block-label {
  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.09em;
  text-transform: uppercase; color: var(--text-dim);
  margin: 18px 0 8px;
}
.wizG-block-label:first-of-type { margin-top: 4px; }

.wizG-hidden { display: none; }
.wizG-tilesub { font-size: 0.78rem; color: var(--text-dim); margin-top: 8px; }

/* --- карта (шаг 1) --- */
.wizG-mapwrap {
  position: relative; width: 100%; height: 52vh; min-height: 290px;
  border-radius: var(--radius-sm); overflow: hidden;
  border: 1px solid var(--border); background: #aad3df;
}
.wizG-mapwrap #lp-map { width: 100%; height: 100%; }
/* Чип области — справа сверху: слева сверху Leaflet рисует зум +/- (чип
   налезал на кнопки). z-index выше zoom-контролов (Leaflet .leaflet-top ~1000). */
.wizG-mapwrap .wiz-map-chip {
  position: absolute; top: 10px; right: 10px; left: auto; z-index: 1001;
  display: flex; align-items: center; gap: 6px;
  background: rgba(15,23,42,0.88); border: 1px solid var(--border);
  backdrop-filter: blur(8px); border-radius: 999px;
  padding: 6px 12px; font-size: 0.8rem; color: var(--text);
  max-width: calc(100% - 20px);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.wizG-mapwrap .wiz-map-chip b {
  color: var(--primary-light); font-weight: 700;
  overflow: hidden; text-overflow: ellipsis;
}

/* Мобайл 390px (2026-06-12): чип «Область · не выбрана» обрезался
   («…не выб…»). Ужимаем padding/шрифт у верхнего края карты, как в эталоне G
   — чип компактный и помещается целиком. */
@media (max-width: 759px) {
  .wizG-mapwrap .wiz-map-chip {
    top: 8px; right: 8px; gap: 5px;
    padding: 5px 10px; font-size: 0.74rem;
    max-width: calc(100% - 16px);
  }
}

.wizG-confirm {
  display: flex; align-items: center; gap: 9px; margin-top: 12px;
  padding: 11px 14px; background: var(--bg-card2);
  border: 1px solid rgba(16,185,129,0.4); border-radius: var(--radius-sm);
  font-size: 0.88rem; color: var(--text);
}
.wizG-confirm .ok {
  width: 20px; height: 20px; border-radius: 50%; flex-shrink: 0;
  background: var(--accent); color: #fff; display: grid; place-items: center; font-size: 0.7rem;
}
.wizG-confirm b { color: var(--primary-light); }

/* --- сегмент режима ввода (карта / файл) --- */
.wizG-segment {
  display: inline-flex; background: var(--bg-card2);
  border: 1px solid var(--border); border-radius: 999px; padding: 3px; gap: 2px;
  margin-bottom: 12px;
}
.wizG-segment button {
  border: none; background: transparent; color: var(--text-dim);
  cursor: pointer; font-size: 0.82rem; font-weight: 600;
  padding: 8px 16px; border-radius: 999px; font-family: inherit; min-height: 38px;
}
.wizG-segment button.active { background: var(--primary); color: #fff; }

/* Шаг 8 — выбор «Один лист» / «Атлас» пиктограммами */
.wizG-sheetpick {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
  margin-bottom: 8px;
}
.wizG-sheetcard {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 14px 10px 12px; border: 1.5px solid var(--border);
  border-radius: var(--radius-sm); background: var(--bg-card); cursor: pointer;
  color: var(--text-dim); font-family: inherit; text-align: center; min-height: 120px;
  transition: border-color .15s, background .15s, color .15s;
}
.wizG-sheetcard:hover { border-color: var(--primary); }
.wizG-sheetcard.active {
  border-color: var(--primary); background: var(--bg-card2); color: var(--text);
}
.wizG-sheetcard.active .wizG-sheetcard-ic { color: var(--primary); }
.wizG-sheetcard-ic { color: var(--text-dim); line-height: 0; }
.wizG-sheetcard-tt { font-size: 0.92rem; font-weight: 700; color: var(--text); }
.wizG-sheetcard.active .wizG-sheetcard-tt { color: var(--primary-light); }
.wizG-sheetcard-sub { font-size: 0.72rem; color: var(--text-dim); line-height: 1.25; }

/* Оценка числа страниц рядом с пояснением атласа */
.wizG-atlas-est { display: inline-block; margin-left: 6px; font-weight: 700; color: var(--primary-light); }

/* «Мелковато для области» — приглушённая плитка размера (НЕ disabled, выбор остаётся) */
.wizG-chip.wizG-cramped {
  opacity: 0.5; border-style: dashed;
}
.wizG-chip.wizG-cramped.active { opacity: 0.85; }
.wizG-chip.wizG-cramped::after {
  content: "·"; margin-left: 4px; color: #f59e0b; font-weight: 700;
}

/* зона загрузки файла */
.wizG-dropzone {
  border: 2px dashed var(--border); border-radius: var(--radius-sm);
  background: var(--bg-card2); padding: 32px 18px; text-align: center;
  cursor: pointer; transition: border-color .15s ease;
}
.wizG-dropzone:hover { border-color: var(--primary); }
.wizG-dropzone .ico { font-size: 1.8rem; }
.wizG-dropzone .big { font-weight: 700; color: var(--text); margin: 8px 0 4px; }
.wizG-dropzone .sub { font-size: 0.8rem; color: var(--text-dim); }
.wizG-dropzone .formats { font-size: 0.74rem; color: var(--text-dim); margin-top: 8px; font-family: var(--font-mono, monospace); }
.wizG-soon { font-size: 0.7rem; font-weight: 700; color: var(--accent); margin-left: 6px; }

/* --- file-mode: drop-zone состояния (empty / probing / ready / error) --- */
.wizG-dropzone.wizG-dropzone--over { border-color: var(--primary); background: var(--bg-card); }
/* По умолчанию показан блок empty; остальные блоки скрыты, переключение по data-state. */
.wizG-upload .wizG-upload-empty,
.wizG-upload .wizG-upload-probing,
.wizG-upload .wizG-upload-file { display: none; }
.wizG-upload[data-state="empty"] .wizG-upload-empty { display: block; }
.wizG-upload[data-state="probing"] .wizG-upload-probing { display: flex; }
.wizG-upload[data-state="ready"] .wizG-upload-file { display: flex; }
.wizG-upload[data-state="error"] .wizG-upload-empty { display: block; }
.wizG-upload[data-state="error"] { border-color: var(--color-error, #e74c3c); }
.wizG-upload-probing,
.wizG-upload-file {
  align-items: center; justify-content: center; gap: 8px; flex-wrap: wrap;
}
.wizG-upload-file .ico { font-size: 1.4rem; }
.wizG-upload-fname { font-weight: 600; color: var(--text); word-break: break-all; }
.wizG-upload-fmeta { font-size: 0.78rem; color: var(--text-dim); }
.wizG-upload-replace { margin-left: 6px; }
.wizG-spinner {
  width: 16px; height: 16px; border-radius: 50%;
  border: 2px solid var(--border); border-top-color: var(--primary);
  display: inline-block; animation: wizG-spin 0.8s linear infinite;
}
@keyframes wizG-spin { to { transform: rotate(360deg); } }
.wizG-upload-status { font-size: 0.82rem; color: var(--text-dim); margin-top: 8px; min-height: 1em; }
.wizG-upload-error {
  font-size: 0.85rem; color: var(--color-error, #e74c3c); margin-top: 8px;
  padding: 8px 10px; border: 1px solid var(--color-error, #e74c3c);
  border-radius: var(--radius-sm); background: rgba(239,68,68,0.08);
}

/* --- file-mode: гашение неподдерживаемых форматов (шаг 9) --- */
.fmt-btn--upload-disabled { opacity: .4; pointer-events: none; filter: grayscale(.6); }

/* --- file-mode: честная плашка над превью (видна только в file-mode) --- */
.wizG-upload-previewnote { display: none; }
body.wiz-file-mode .wizG-upload-previewnote {
  display: block; font-size: 0.8rem; color: var(--text-dim);
  padding: 8px 10px; margin-bottom: 8px;
  border: 1px dashed var(--border); border-radius: var(--radius-sm);
  background: var(--bg-card2);
}

/* --- file-mode: скрыть нерелевантные шаги (наполненность 2, POI 4) в степпере --- */
body.wiz-file-mode #gPills .wizG-pill[data-step="2"],
body.wiz-file-mode #gPills .wizG-pill[data-step="4"],
body.wiz-file-mode #gDots .d[data-step="2"],
body.wiz-file-mode #gDots .d[data-step="4"] { display: none; }

/* --- поверхности превью --- */
.wizG-preview {
  position: relative; width: 100%; border-radius: var(--radius-sm);
  overflow: hidden; border: 1px solid var(--border); background: #0b1322;
}
.wizG-preview img { width: 100%; height: 100%; object-fit: cover; display: block; }
.wizG-preview.tall { height: 34vh; min-height: 200px; }
.wizG-preview.strip { height: 18vh; min-height: 120px; }
.wizG-preview #wizStackLayers { position: absolute; inset: 0; display: none; }
.wizG-preview .wiz-status {
  position: absolute; left: 10px; bottom: 10px;
  display: inline-flex; align-items: center; gap: 7px;
  background: rgba(15,23,42,0.9); border: 1px solid var(--border);
  border-radius: 999px; padding: 5px 11px;
  font-size: 0.75rem; color: var(--text-dim); backdrop-filter: blur(8px);
}
.wizG-preview .wiz-status .dot {
  width: 7px; height: 7px; border-radius: 50%; background: var(--accent);
  animation: wizG-dot-pulse 1.1s ease-in-out infinite;
}
@keyframes wizG-dot-pulse {
  0%, 100% { opacity: 0.35; transform: scale(0.8); }
  50% { opacity: 1; transform: scale(1.15); }
}

/* w5C: layers-preview (DECISIONS #188) — превью выбранных слоёв на шаге 3.
   Переиспользует .wizG-preview, но со СВОИМ хостом слоёв (id отличается от
   #wizStackLayers, поэтому дублируем правило для своего контейнера). */
.wizG-preview #wizLayersStackLayers { position: absolute; inset: 0; display: none; }
.w5C-layers-preview { cursor: zoom-in; }
.w5C-layers-preview.w5C-zoomed { cursor: zoom-out; }
/* CSS-зум (#188): scale(2) с origin под точкой клика — мгновенно, 0 запросов. */
.w5C-layers-preview #wizLayersStackLayers,
.w5C-layers-preview #wizLayersPreviewImg {
  transition: transform .18s ease;
}
.w5C-zoom-hint {
  position: absolute; right: 10px; top: 10px;
  display: inline-flex; align-items: center; gap: 5px;
  background: rgba(15,23,42,0.78); border: 1px solid var(--border);
  border-radius: 999px; padding: 4px 9px;
  font-size: 0.7rem; color: var(--text-dim); pointer-events: none;
  backdrop-filter: blur(6px);
}
.w5C-zoom-hint::before { content: '🔍'; font-size: 0.8rem; }
.w5C-layers-preview.w5C-zoomed .w5C-zoom-hint { display: none; }
.w5C-layers-preview-bar {
  display: flex; align-items: flex-start; gap: 10px;
  flex-wrap: wrap; margin-bottom: 14px;
}
.w5C-layers-preview-note {
  flex: 1 1 240px; min-width: 200px;
  font-size: 0.72rem; line-height: 1.4; color: var(--text-dim);
}
/* /w5C: layers-preview */

/* --- ряды чипов (пресеты, языки, номера домов, use-cases) --- */
.wizG-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.wizG-chip {
  display: inline-flex; align-items: center; gap: 6px;
  border: 1px solid var(--border); border-radius: 999px;
  background: var(--bg-card2); color: var(--text-dim);
  padding: 8px 13px; font-size: 0.82rem; font-weight: 600;
  cursor: pointer; font-family: inherit; min-height: 38px; white-space: nowrap;
  transition: border-color .15s ease, color .15s ease;
}
.wizG-chip:hover { border-color: var(--primary); }
.wizG-chip.active { background: var(--primary); color: #fff; border-color: var(--primary); }
.wizG-chip .ic { font-size: 0.95rem; }
/* Чип неактивен (например, номера домов при площади ≥25 000 км², правка Jan 2.6) */
.wizG-chip:disabled, .wizG-chip.wizG-disabled {
  opacity: 0.4; cursor: not-allowed; border-color: var(--border);
}
.wizG-chip:disabled:hover, .wizG-chip.wizG-disabled:hover { border-color: var(--border); }

/* ── Шаг 5: язык подписей — капсула выбранного, раскрытие «Все языки», список ── */
/* Капсула выбранного языка (когда он НЕ из быстрого ряда) с крестиком возврата. */
.wizG-langsel { margin-top: 10px; }
.wizG-langcap {
  display: inline-flex; align-items: center; gap: 8px;
  background: var(--primary); color: #fff;
  border-radius: 999px; padding: 7px 8px 7px 14px;
  font-size: 0.82rem; font-weight: 600;
}
.wizG-langcap-x {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; border-radius: 50%;
  border: 0; background: rgba(255,255,255,0.22); color: #fff;
  font-size: 1rem; line-height: 1; cursor: pointer; font-family: inherit;
}
.wizG-langcap-x:hover { background: rgba(255,255,255,0.4); }

/* Кнопка раскрытия списка всех языков. */
.wizG-langall {
  margin-top: 16px; display: inline-flex; align-items: center; gap: 4px;
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: var(--bg-card2); color: var(--text);
  padding: 9px 14px; font-size: 0.84rem; font-weight: 600;
  cursor: pointer; font-family: inherit; min-height: 40px;
}
.wizG-langall:hover { border-color: var(--primary); }
.wizG-langall[aria-expanded="true"] { border-color: var(--primary); }

/* Панель списка: поиск + сгруппированный список со скроллом (мобайл-safe). */
.wizG-langpanel {
  margin-top: 12px; border: 1px solid var(--border);
  border-radius: var(--radius-sm); background: var(--bg-card);
  padding: 10px;
}
.wizG-langpanel .wizG-text { margin-bottom: 8px; }
.wizG-langlist {
  max-height: 320px; overflow-y: auto;
  display: flex; flex-direction: column; gap: 2px;
}
.wizG-langgrp {
  position: sticky; top: 0; z-index: 1;
  background: var(--bg-card);
  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.04em;
  text-transform: uppercase; color: var(--text-dim);
  padding: 8px 6px 4px;
}
.wizG-langopt {
  display: flex; align-items: baseline; gap: 7px; flex-wrap: wrap;
  width: 100%; text-align: left;
  border: 0; background: transparent; color: var(--text);
  padding: 9px 10px; border-radius: 6px;
  font-size: 0.86rem; cursor: pointer; font-family: inherit;
}
.wizG-langopt:hover { background: rgba(59,130,246,0.14); }
.wizG-langopt.active { background: var(--primary); color: #fff; }
.wizG-langopt b { font-weight: 600; }
.wizG-langopt .nm { color: var(--text-dim); }
.wizG-langopt.active .nm { color: rgba(255,255,255,0.85); }
.wizG-langopt small { margin-left: auto; color: var(--text-dim); font-size: 0.72rem; }
.wizG-langopt.active small { color: rgba(255,255,255,0.8); }

/* Честная подсказка про источник подписей. */
.wizG-langnote {
  margin-top: 14px; font-size: 0.78rem; line-height: 1.45;
  color: var(--text-dim);
}

/* w5C: crs — sticky-заголовки групп в модале CRS (мировые/UTM/национальные).
   Переиспользует паттерн .wizG-langgrp (sticky top:0). Подсказка под инпутом. */
.wizG-crsgrp {
  position: sticky; top: 0; z-index: 1;
  background: var(--bg-card);
  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.04em;
  text-transform: uppercase; color: var(--text-dim);
  padding: 8px 6px 4px; list-style: none;
}
.wizG-crs-modal-hint {
  margin-top: 6px; font-size: 0.74rem; line-height: 1.4;
  color: var(--text-dim);
}

/* Активный пресет живого дерева слоёв (layers.js рисует ряд .lt-preset-btn,
   но не маркирует активный) — мастер подсвечивает «По умолчанию» (дефект 2). */
.wizG-shell .lt-preset-btn.active {
  background: var(--primary) !important;
  color: #fff !important;
  border-color: var(--primary) !important;
}

/* --- плитки (наполненность / рельеф / карт. основа) --- */
.wizG-tiles { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-top: 6px; }
.wizG-tiles.three { grid-template-columns: repeat(2, 1fr); }
.wizG-tiles.six { grid-template-columns: repeat(2, 1fr); }
.wizG-tile {
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  overflow: hidden; cursor: pointer; background: var(--bg-card2);
  transition: border-color .15s ease, transform .15s ease; min-height: 44px;
}
.wizG-tile:hover { transform: translateY(-2px); }
.wizG-tile.active { border-color: var(--primary); box-shadow: 0 0 0 1px rgba(37,99,235,0.45); }
.wizG-tile-img { width: 100%; aspect-ratio: 4/3; object-fit: cover; display: block; background: #0b1322; }
.wizG-tile-cap { display: flex; align-items: center; justify-content: space-between; padding: 9px 11px; font-size: 0.85rem; gap: 6px; }
.wizG-tile-cap b { font-weight: 600; color: var(--text); }
.wizG-tile-cap small { color: var(--text-dim); font-size: 0.72rem; }
.wizG-tile.active .wizG-tile-cap b { color: var(--primary-light); }
.wizG-tile-check { width: 17px; height: 17px; border-radius: 50%; border: 1px solid var(--border); flex-shrink: 0; }
.wizG-tile.active .wizG-tile-check { background: var(--primary); border-color: var(--primary); display: grid; place-items: center; }
.wizG-tile.active .wizG-tile-check::after { content:'✓'; color:#fff; font-size:10px; }

/* плитки без картинки (картографическая основа) */
.wizG-tile-text { padding: 12px 13px; }
.wizG-tile-text b { display: block; font-weight: 700; color: var(--text); font-size: 0.92rem; }
.wizG-tile.active .wizG-tile-text b { color: var(--primary-light); }
.wizG-tile-text span { display: block; font-size: 0.76rem; color: var(--text-dim); margin-top: 3px; }

/* бейдж масштаба (шаг 2: город/район/область/страна) */
.wizG-scalebadge {
  display: inline-flex; align-items: center; gap: 6px;
  margin: 2px 0 6px; padding: 7px 12px; border-radius: 999px;
  font-size: 0.8rem; background: var(--bg-card2);
  border: 1px solid var(--border); color: var(--text);
}
.wizG-scalebadge b { color: var(--primary-light); font-weight: 700; }

/* недоступная по масштабу плитка наполненности (#168.1) */
.wizG-tile-na {
  display: none; padding: 0 11px 9px; font-size: 0.68rem; font-weight: 700;
  color: #fbbf24;
}
.wizG-tile.wizG-tile-disabled {
  opacity: 0.5; cursor: not-allowed; pointer-events: auto;
}
.wizG-tile.wizG-tile-disabled:hover { transform: none; border-color: var(--border); }
.wizG-tile.wizG-tile-disabled .wizG-tile-na { display: block; }
.wizG-tile.wizG-tile-disabled .wizG-tile-cap b { color: var(--text-dim); }

/* честная пометка ужатого состава пресета на большой площади (#171):
   мелкий приглушённый текст под подписью плитки; пуста — не занимает места */
.wiz-fill-note {
  display: none; padding: 0 11px 9px; font-size: 0.66rem; line-height: 1.25;
  font-weight: 600; color: var(--text-dim);
}
.wiz-fill-note:not(:empty) { display: block; }

/* honest-placeholder миниатюры (границы / контурная) */
.wizG-tile-img.is-borders {
  background:
    #0b1322
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 90'><path d='M16 14 L96 10 L104 44 L88 78 L34 80 L12 50 Z' fill='none' stroke='%2360a5fa' stroke-width='2.4' stroke-dasharray='6 5' stroke-linejoin='round'/></svg>")
    center / 88% auto no-repeat;
}
.wizG-tile-img.is-contour {
  background:
    #0b1322
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 90'><path d='M16 14 L96 10 L104 44 L88 78 L34 80 L12 50 Z' fill='none' stroke='%2360a5fa' stroke-width='2.2' stroke-dasharray='6 5' stroke-linejoin='round'/><path d='M22 70 C40 56 48 60 60 46 C72 32 84 36 100 22' fill='none' stroke='%23aad3df' stroke-width='3' stroke-linecap='round'/></svg>")
    center / 88% auto no-repeat;
}

/* --- слайдеры --- */
.wizG-slider-row { margin-top: 6px; }
.wizG-slider-row label { display: block; font-size: 0.82rem; color: var(--text); margin-bottom: 7px; font-weight: 600; }
.wizG-slider-row input[type=range] { width: 100%; accent-color: var(--primary); }
.wizG-slider-ticks { display: flex; justify-content: space-between; font-size: 0.66rem; color: var(--text-dim); margin-top: 5px; }

/* --- generic-поля --- */
.wizG-field { margin-top: 12px; }
.wizG-field > label { display: block; font-size: 0.82rem; font-weight: 600; color: var(--text); margin-bottom: 6px; }
.wizG-field .hint { font-size: 0.74rem; color: var(--text-dim); margin-top: 5px; }
.wizG-num, .wizG-select, .wizG-text {
  width: 100%; background: var(--bg-card2); border: 1px solid var(--border);
  color: var(--text); border-radius: var(--radius-sm); padding: 10px 12px;
  font-size: 0.88rem; font-family: inherit; min-height: 42px;
}
/* Подсветка обязательного поля имени при пустом клике «Скачать» (правка Jan 4.6) */
.wizG-text.wizG-input-error {
  border-color: #ef4444; box-shadow: 0 0 0 2px rgba(239,68,68,0.25);
}
.wizG-sub-error { color: #ef4444 !important; font-weight: 600; }
.wizG-inline2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }

/* --- карточки (сетка, кадастр) --- */
.wizG-card {
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: var(--bg-card2); padding: 13px 14px; margin-top: 10px;
}
.wizG-card-head { display: flex; align-items: center; gap: 10px; }
.wizG-card-head .ttl { font-weight: 700; color: var(--text); font-size: 0.9rem; flex: 1; }
.wizG-checkbox {
  width: 18px; height: 18px; border-radius: 4px; border: 1px solid var(--border);
  flex-shrink: 0; cursor: pointer; background: var(--bg-card); display: grid; place-items: center;
}
.wizG-checkbox.on { background: var(--primary); border-color: var(--primary); }
.wizG-checkbox.on::after { content:'✓'; color:#fff; font-size:11px; }
.wizG-badge {
  display: inline-block; font-size: 0.68rem; font-weight: 700;
  padding: 3px 8px; border-radius: 999px; background: rgba(245,158,11,0.15);
  color: #f59e0b; border: 1px solid rgba(245,158,11,0.35); margin-top: 8px;
}
.wizG-badge.ok { background: rgba(16,185,129,0.15); color: var(--accent); border-color: rgba(16,185,129,0.35); }
.wizG-card-sub { font-size: 0.76rem; color: var(--text-dim); margin-top: 6px; }
.wizG-card-body { margin-top: 12px; }

/* info-бейдж кадастра «только растровые форматы» (#174) — нейтральный, не error */
.wiz-cad-info {
  margin-top: 8px; padding: 8px 11px; font-size: 0.76rem; line-height: 1.4;
  border-radius: var(--radius-sm); color: var(--text-dim);
  background: rgba(59,130,246,0.08); border: 1px solid rgba(59,130,246,0.28);
}

/* warning-плашка «кадастр не войдёт в этот формат» на шаге формата (#174) */
.wiz-cad-warn {
  margin: 4px 0 14px; padding: 12px 14px; border-radius: var(--radius-sm);
  background: rgba(245,158,11,0.10); border: 1px solid rgba(245,158,11,0.40);
}
.wiz-cad-warn-msg { font-size: 0.82rem; line-height: 1.45; color: var(--text); }
.wiz-cad-warn-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px; }
/* подсветка совместимых (растровых) форматов по кнопке «Выбрать растровый» */
.cad-raster-suggest {
  outline: 2px solid var(--primary); outline-offset: 1px;
  border-radius: var(--radius-sm);
}

/* ==========================================================================
   Шаг 9 «Формат» — правки Jan 20-22b: быстрый старт, профили, опросник.
   На токенах сайта, без новых цветов. Mobile-first.
   ========================================================================== */

/* Быстрый старт — 4 карточки (USE_CASE_LINKS). 1 колонка на 390px → 2 на десктопе. */
.wizG-quickstart { display: grid; grid-template-columns: 1fr; gap: 10px; margin-top: 6px; }
.wizG-qcard {
  display: flex; align-items: flex-start; gap: 11px; text-align: left;
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: var(--bg-card2); padding: 13px 14px; cursor: pointer;
  font-family: inherit; transition: border-color .15s ease, transform .15s ease;
}
.wizG-qcard:hover { transform: translateY(-2px); border-color: var(--primary); }
.wizG-qcard.active { border-color: var(--primary); box-shadow: 0 0 0 1px rgba(37,99,235,0.45); }
.wizG-qcard-ic { font-size: 1.5rem; line-height: 1; flex-shrink: 0; }
.wizG-qcard-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.wizG-qcard-txt b { font-weight: 700; font-size: 0.92rem; color: var(--text); }
.wizG-qcard.active .wizG-qcard-txt b { color: var(--primary-light); }
.wizG-qcard-txt span { font-size: 0.76rem; line-height: 1.4; color: var(--text-dim); }

/* Опросник «не знаете какой формат?» */
.wizG-quiz-trigger {
  display: block; width: 100%; margin-top: 14px; padding: 11px 14px;
  font-size: 0.85rem; font-weight: 600; color: var(--primary-light);
  border: 1px dashed var(--border); border-radius: var(--radius-sm);
  background: transparent; cursor: pointer; font-family: inherit; text-align: center;
}
.wizG-quiz-trigger:hover { border-color: var(--primary); }
.wizG-quiz {
  margin-top: 12px; padding: 14px; border-radius: var(--radius-sm);
  border: 1px solid var(--primary); background: rgba(37,99,235,0.05);
}
.wizG-quiz-q { font-size: 0.88rem; font-weight: 700; color: var(--text); margin-bottom: 10px; }
.wizG-quiz-result { margin-top: 12px; }
.wizG-quiz-lead { font-size: 0.8rem; color: var(--text-dim); margin-bottom: 8px; }
.wizG-quiz-close {
  margin-top: 14px; padding: 8px 14px; font-size: 0.8rem; font-weight: 600;
  color: var(--text-dim); border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: transparent; cursor: pointer; font-family: inherit;
}
.wizG-quiz-close:hover { border-color: var(--primary); color: var(--text); }

/* Пилюли beta/скоро на кнопках каталога */
.wizG-fmt-pill {
  display: inline-block; margin-left: 6px; padding: 1px 6px; border-radius: 999px;
  font-size: 0.62rem; font-weight: 700; vertical-align: middle;
  background: rgba(245,158,11,0.18); color: #fcd34d; white-space: nowrap;
}
.wizG-fmt-soon { opacity: 0.7; }
.wizG-fmt-soon .wizG-fmt-pill { background: rgba(148,163,184,0.18); color: var(--text-dim); }

/* Десктоп: быстрый старт в 2 колонки. */
@media (min-width: 560px) {
  .wizG-quickstart { grid-template-columns: 1fr 1fr; }
}

/* предупреждение + живой расчёт (атлас) */
.wizG-warn {
  margin-top: 12px; padding: 11px 13px; font-size: 0.8rem;
  background: rgba(245,158,11,0.1); border: 1px solid rgba(245,158,11,0.35);
  border-radius: var(--radius-sm); color: #fcd34d;
}
.wizG-calc {
  margin-top: 12px; padding: 12px 14px; border-radius: var(--radius-sm);
  background: var(--bg-card2); border: 1px solid var(--border);
  display: flex; flex-wrap: wrap; gap: 8px 18px; font-size: 0.84rem;
}
.wizG-calc b { color: var(--primary-light); }
.wizG-calc .k { color: var(--text-dim); }

/* --- <details>-аккордеоны --- */
.wizG-acc {
  border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: var(--bg-card2); margin-top: 12px; overflow: hidden;
}
.wizG-acc > summary {
  list-style: none; cursor: pointer; padding: 13px 14px;
  font-weight: 600; font-size: 0.9rem; color: var(--text);
  display: flex; align-items: center; gap: 10px;
}
.wizG-acc > summary::-webkit-details-marker { display: none; }
.wizG-acc > summary::before {
  content: '▸'; color: var(--text-dim); transition: transform .15s ease; flex-shrink: 0;
}
.wizG-acc[open] > summary::before { transform: rotate(90deg); }
.wizG-acc > summary .sub { color: var(--text-dim); font-weight: 400; font-size: 0.78rem; margin-left: auto; }
.wizG-acc-body { padding: 0 14px 14px; }

/* ==========================================================================
   Подсказки единого поиска (GeodataSearch) на шаге «Область».
   На главной эти классы приходят из style.css, который /wizard НЕ грузит, —
   поэтому выпадающий список рендерился сырым (строки слипались). Переносим
   нужные правила сюда, в CSS-слой мастера, на токенах сайта. Совпадает с
   .geodata-* из style.css (значения через переменные палитры).
   .search-bar (position:relative) и .draw-toolbar — уже в components.css.
   ========================================================================== */
.geodata-results-dropdown {
  position: absolute; top: 100%; left: 0; right: 0; z-index: 1000;
  background: var(--bg-card); border: 1px solid var(--border); border-top: none;
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
  max-height: 360px; overflow-y: auto; box-shadow: 0 8px 24px rgba(0,0,0,0.4);
}
.geodata-result-item {
  display: flex; align-items: center; gap: 10px; padding: 10px 14px;
  cursor: pointer; transition: background .15s ease;
  border-bottom: 1px solid var(--border); min-height: 44px;
}
.geodata-result-item:last-child { border-bottom: none; }
.geodata-result-item:hover,
.geodata-result-item--active { background: var(--border); }
.geodata-result--homonym { border-left: 3px solid #f59e0b; padding-left: 11px; }
.geodata-result--top {
  border-left: 3px solid var(--accent); padding-left: 11px;
  background: rgba(16,185,129,0.07);
}
.geodata-result-top-badge {
  display: inline-block; margin-left: 8px; padding: 1px 6px; border-radius: 4px;
  background: rgba(16,185,129,0.18); color: #34d399; font-size: 0.68rem;
  font-weight: 600; vertical-align: middle; white-space: nowrap;
}
.geodata-result--external .geodata-result-icon { opacity: 0.85; }
.geodata-result-icon { flex-shrink: 0; font-size: 1.1rem; width: 24px; text-align: center; }
.geodata-result-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.geodata-result-name {
  color: var(--text); font-size: 0.9rem; font-weight: 500;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.geodata-result-meta { color: var(--text-dim); font-size: 0.75rem; }
.geodata-result-loading,
.geodata-result-empty {
  padding: 14px 16px; color: var(--text-dim); font-size: 0.85rem; text-align: center;
}
.geodata-nearby-btn {
  display: flex; align-items: center; justify-content: center;
  background: transparent; border: none; border-left: 1px solid var(--border);
  color: var(--text-dim); padding: 0 12px; cursor: pointer;
  transition: color .2s ease; min-width: 44px; min-height: 44px;
}
.geodata-nearby-btn:hover { color: var(--primary-light); }
.geodata-nearby-btn:disabled { opacity: 0.4; cursor: not-allowed; }

/* Дефект мобайла 390px (2026-06-12): geodata_search.js вставляет третью
   кнопку-геолокатор между input и «Найти». На узком экране она выталкивала
   «Найти» за правый край (обрезана). В эталоне G строка = input + «Найти».
   Прячем локатор только на /wizard (этот CSS грузит лишь мастер — главная не
   затронута) и страхуемся min-width:0, чтобы input ужимался, а «Найти» не
   выпадал. */
.wizG-shell .geodata-nearby-btn { display: none; }
.wizG-shell .search-bar input { min-width: 0; }
.wizG-shell .search-btn { flex-shrink: 0; }

/* w5C: feedback — кнопка «Предложить улучшение» в шапке + модалка отзыва.
   Палитра/радиусы только из токенов сайта (--bg-card, --border, --primary,
   --accent, --text, --text-dim, --radius-sm). Новых цветов не вводим. */

/* Кнопка справа вверху шапки. .wizG-head центрирует заголовок (text-align:
   center, max-width+margin:auto) — чтобы НЕ ломать центровку h1, ставим кнопку
   абсолютно в правый верхний угол шапки. */
.wizG-head { position: relative; }
.wizG-fb-btn {
  position: absolute; top: 0; right: 16px;
  display: inline-flex; align-items: center; gap: 6px;
  padding: 7px 12px; border: 1px solid var(--border);
  border-radius: 999px; background: var(--bg-card2);
  color: var(--text-dim); font-family: inherit; font-size: 0.8rem;
  font-weight: 600; cursor: pointer; line-height: 1;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
}
.wizG-fb-btn:hover { border-color: var(--primary); color: var(--text); }
.wizG-fb-btn-ic { font-size: 0.95rem; line-height: 1; }

/* Модалка отзыва */
.wizG-fb-overlay {
  position: fixed; inset: 0; z-index: 10050;
  display: grid; place-items: center; padding: 16px;
  background: rgba(15, 23, 42, 0.72); backdrop-filter: blur(4px);
}
.wizG-fb-dialog {
  width: 100%; max-width: 480px;
  background: var(--bg-card); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: 20px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.45);
}
.wizG-fb-title {
  margin: 0 0 14px; font-size: 1.05rem; font-weight: 800;
  color: var(--text); letter-spacing: -0.01em;
}
.wizG-fb-form { display: flex; flex-direction: column; gap: 10px; }
.wizG-fb-textarea {
  width: 100%; resize: vertical; min-height: 110px;
  padding: 11px 12px; border: 1px solid var(--border);
  border-radius: var(--radius-sm); background: var(--bg-card2);
  color: var(--text); font-family: inherit; font-size: 0.9rem;
  line-height: 1.5;
}
.wizG-fb-textarea:focus { outline: none; border-color: var(--primary); }
.wizG-fb-counter {
  font-size: 0.74rem; color: var(--text-dim); text-align: right; margin-top: -4px;
}
.wizG-fb-contact {
  width: 100%; padding: 10px 12px; border: 1px solid var(--border);
  border-radius: var(--radius-sm); background: var(--bg-card2);
  color: var(--text); font-family: inherit; font-size: 0.88rem;
}
.wizG-fb-contact:focus { outline: none; border-color: var(--primary); }
.wizG-fb-error {
  font-size: 0.82rem; color: #f87171;
  background: rgba(239, 68, 68, 0.08); border: 1px solid rgba(239, 68, 68, 0.3);
  border-radius: var(--radius-sm); padding: 8px 10px;
}
.wizG-fb-actions {
  display: flex; justify-content: flex-end; gap: 8px; margin-top: 4px;
}
.wizG-fb-cancel, .wizG-fb-send {
  padding: 9px 16px; border-radius: 999px; font-family: inherit;
  font-size: 0.85rem; font-weight: 600; cursor: pointer; border: 1px solid var(--border);
}
.wizG-fb-cancel { background: transparent; color: var(--text-dim); }
.wizG-fb-cancel:hover { color: var(--text); border-color: var(--text-dim); }
.wizG-fb-send { background: var(--primary); color: #fff; border-color: var(--primary); }
.wizG-fb-send:hover { filter: brightness(1.08); }
.wizG-fb-send:disabled { opacity: 0.55; cursor: not-allowed; filter: none; }
.wizG-fb-thanks {
  font-size: 0.95rem; color: var(--accent); font-weight: 600;
  text-align: center; padding: 18px 8px;
}

@media (max-width: 600px) {
  /* На узком экране заголовок крупнее и кнопка может перекрыть его — уводим
     кнопку под поток (статичной), компактной, по центру под заголовком.
     Порог 600px (не 480): длинные de/fr-переводы кнопки налезают на h1 на
     узких планшетах. */
  .wizG-fb-btn {
    position: static; margin: 10px auto 0; padding: 6px 10px; font-size: 0.76rem;
  }
  .wizG-fb-dialog { padding: 16px; }
}
