/* «Контакты» (02.10): по решению заказчика оставлены G «Стол» и J «Крылья» (A–F, H, I удалены, буквы не переименованы).
   Визитка по центру — главный элемент, заявка слева, карта справа. Визитка 90×50 мм: бумага, тиснение, логотип В (.lockup — заполняет logos.js).
   Карта: плашка «Карта» 1, 2, 3, 4, 10, 11, 12 — окно карты подстраивает пропорцию под масштаб, карта видна целиком.
   Форма #zayavka одна, компактная, переносится в .form-slot. Телефон: визитка → карта → форма. */
.contacts { overflow-x: clip; }
.contacts .vv { margin-top: var(--gap-h); }
.form-slot:empty { display: none; }

/* ================= визитка: бумага, тиснение, типографика ================= */
.vc { position: relative; isolation: isolate; overflow: hidden; display: flex; flex-direction: column; gap: 14px;
  width: min(100%, 560px); aspect-ratio: 1.8; padding: clamp(20px, 2.4vw, 30px); border-radius: 6px; color: #1F1F24;
  background:
    radial-gradient(120% 90% at 15% 0%, rgba(255, 255, 255, .7), transparent 55%),
    repeating-radial-gradient(circle at 30% 40%, rgba(120, 100, 70, .035) 0 1px, transparent 1px 3px),
    repeating-radial-gradient(circle at 70% 70%, rgba(255, 255, 255, .25) 0 1px, transparent 1px 4px),
    #F8F4EC;
  box-shadow: 0 1px 1px rgba(60, 50, 30, .12), 0 2px 4px rgba(60, 50, 30, .08), 0 34px 60px -30px rgba(20, 20, 26, .55);
  transform-style: preserve-3d; transition: transform 600ms var(--ease-out); }
.vc::before { content: ""; position: absolute; inset: 10px; z-index: -1; border: 1px solid rgba(160, 131, 79, .55); border-radius: 3px; box-shadow: inset 0 0 0 3px #F8F4EC, inset 0 0 0 4px rgba(160, 131, 79, .25); pointer-events: none; }
.vc__glare { position: absolute; inset: 0; z-index: 3; overflow: hidden; border-radius: inherit; pointer-events: none; }
.vc__glare i { position: absolute; left: -50%; top: -50%; width: 200%; height: 200%; background: radial-gradient(circle at 50% 50%, rgba(255, 255, 255, .5), rgba(255, 255, 255, 0) 30%); opacity: 0; transition: opacity 300ms ease; }
.vc.is-tilt .vc__glare i { opacity: 1; }
.vc__top { flex: 1 1 auto; display: flex; align-items: center; justify-content: space-between; gap: var(--s4); min-height: 0; }
.vc__top .vc__msg { align-self: flex-start; }
.vc .lockup { min-height: 0; max-width: 100%; color: #1F1F24; }
.vc .logo-pair { --lh: 80px; }
.vc .logo-pair.lt-5 { --lh: 58px; }
.vc__msg { display: flex; gap: 6px; }
.vc__msg a { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; border: 1px solid rgba(31, 31, 36, .14); color: #7E6841; transition: background-color 200ms ease, color 200ms ease; }
.vc__msg a:hover { background: #B49C73; color: #1F1F24; }
.vc__msg .i { width: 16px; height: 16px; }
.vc__main { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: var(--s4); align-items: start; padding-top: 14px; border-top: 1px solid rgba(160, 131, 79, .55); }
/* тиснение: светлая кромка сверху-слева, тень снизу-справа */
.vc__name { font: 600 calc(1.3125rem * var(--k-h))/1.12 var(--f-serif); letter-spacing: .005em; color: #2E2924; text-shadow: 0 1px 0 rgba(255, 255, 255, .95), 0 -1px 0 rgba(60, 50, 30, .18); text-wrap: balance; }
.vc__role { margin-top: 6px; font: 500 .625rem/1.5 var(--f-sans); letter-spacing: .14em; text-transform: uppercase; color: #8C7449; }
.vc__lines { display: grid; gap: 2px; justify-items: start; }
.vc__tel { font: 600 1.1875rem/1.2 var(--f-num); font-variant-numeric: tabular-nums; letter-spacing: .01em; color: #1F1F24; text-decoration: none; white-space: nowrap; }
.vc__mail { font-size: .8125rem; color: #4A4A52; text-decoration: none; }
.vc__mail:hover, .vc__tel:hover { color: #7E6841; }
/* метро под адресом: значок «М» Сокольнической линии (#EF161E), ближайшая станция и вторая — мелко */
.vc__metro { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 6px; margin-top: 4px; font-size: .75rem; line-height: 1.3; color: #3A3A42; }
.mtr { flex: none; width: 14px; height: 14px; }
.vc__metro b { font-weight: 600; }
.vc__km { font-family: var(--f-num); color: #5C5C66; }
.vc__metro small { flex-basis: 100%; padding-left: 20px; font-size: .6875rem; color: #6E6E78; }
.vc__addr { margin-top: 2px; font-size: .75rem; line-height: 1.4; color: #5C5C66; }
@media (max-width: 599px) {
  .vc { aspect-ratio: auto; min-height: calc((100vw - 2 * var(--gut)) / 1.8); gap: var(--s4); }
  .vc__main { grid-template-columns: 1fr; gap: var(--s3); }
  .vc .logo-pair { --lh: 56px; }
  .vc .logo-pair.lt-5 { --lh: 44px; }
  .vc__role { font-size: .75rem; }
  .vc__tel { font-size: 1.25rem; }
  .vc__mail, .vc__addr { font-size: 1rem; }
}

/* маршрут: Яндекс Карты — главная кнопка, 2ГИС и Google — второстепенные ссылки */
.vcr { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s2) var(--s3); width: fit-content; margin-top: var(--s3); padding: 6px 10px; border-radius: var(--r-card); background: color-mix(in srgb, var(--haze) 90%, transparent); font-size: .875rem; color: var(--t-d2); }
.vcr a { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 var(--s3); border-radius: var(--r-pill); color: var(--t-d); text-decoration: none; transition: border-color 200ms ease, background-color 200ms ease; }
.vcr__main { padding: 0 var(--s4) !important; background: var(--gold); color: var(--ink) !important; font-weight: 600; }
.vcr__main .i { width: 16px; height: 16px; }
.vcr__alt { min-height: 44px; padding: 0 10px !important; font-size: .8125rem; color: var(--t-d2) !important; text-decoration: underline !important; text-underline-offset: 3px; }
.vcr__main:hover { background: var(--gold-hi); color: var(--haze) !important; }
.vcr__alt:hover { color: var(--t-d) !important; }
/* ================= карта: статичная тонированная картинка OSM, метка в центре картинки ================= */
.omap { --mx: 50%; --my: 50%; --mw: 1280px; position: relative; display: block; overflow: hidden; background: #E9E0D1; }
.omap img { position: absolute; max-width: none; width: var(--mw); height: auto; left: calc(var(--mx) - var(--mw) / 2); top: calc(var(--my) - var(--mw) / 4); }
.omap__pin { position: absolute; z-index: 2; left: var(--mx); top: var(--my); width: 34px; height: 44px; transform: translate(-50%, -100%); }
.omap__pin svg { display: block; width: 100%; height: 100%; }
.omap__pulse { position: absolute; left: 50%; bottom: -5px; width: 14px; height: 14px; margin-left: -7px; border-radius: 50%; border: 2px solid #B49C73; opacity: 0; animation: omap-ping 2.6s var(--ease-out) infinite; }
@keyframes omap-ping { 0% { transform: scale(.5); opacity: .9; } 80%, 100% { transform: scale(2.4); opacity: 0; } }
@media (prefers-reduced-motion: reduce) { .omap__pulse { animation: none; } }
.omap__attr { position: absolute; z-index: 2; right: 6px; bottom: 4px; padding: 1px 6px; border-radius: 3px; background: rgba(251, 249, 244, .8); color: #5C5C66; font-size: .625rem; line-height: 1.5; }
.omap:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }

/* ================= компактная форма ================= */
.form.form--compact { gap: var(--s3); padding: var(--s5); }
.form--compact h3 { font-size: calc(1.25rem * var(--k-h)); }
.form--compact .fld input { min-height: 46px; }
.form--compact .fld legend { margin-bottom: 4px; }
.form--compact .chips span { min-height: 40px; padding: 0 var(--s3); }
.form--compact .form__warn { font-size: .8125rem; }
/* ================= источник карты (ключ map, плашка «Карта 1–4»; во всех вариантах) =================
   1 — тонированная картинка OSM (как было) · 2 — статичная карта Яндекса в золотой рамке: грузится напрямую со static-maps.yandex.ru (хранить копии условия не разрешают), цвета не меняем, «© Яндекс» на картинке; не загрузилась — показываем 1 ·
   3 — живая карта Яндекс JS API v3 со стилем «Шампань» (нужен ключ YMAPS_KEY; без ключа показывается 1 и подпись) · 4 — векторная схема проезда по OSM. */
.omap__y, .omap__note, .sch { display: none; }
html[data-map="2"]:not(.ymap-fail) .omap, html[data-map="4"] .omap { background: color-mix(in srgb, var(--gold) 10%, var(--haze)); }
html:is([data-map="2"]:not(.ymap-fail), [data-map="4"]) .omap > img:not(.omap__y), html:is([data-map="2"]:not(.ymap-fail), [data-map="4"]) .omap__pin, html:is([data-map="2"]:not(.ymap-fail), [data-map="4"]) .omap__attr { display: none; }
html[data-map="2"]:not(.ymap-fail) .omap .omap__y { display: block; position: absolute; left: var(--mx); top: var(--my); width: min(650px, 92%); height: auto; max-height: 92%; object-fit: contain; transform: translate(-50%, -50%); border: 1px solid var(--gold); outline: 1px solid color-mix(in srgb, var(--gold) 55%, transparent); outline-offset: 5px; background: #FFF; box-shadow: 0 24px 48px -26px rgba(20, 20, 26, .55); }
html[data-map="3"]:not(.has-ymkey) .omap__note { display: block; position: absolute; z-index: 3; left: 8px; top: 8px; padding: 4px 10px; border-radius: var(--r-pill); background: rgba(31, 31, 36, .82); color: #F3EADA; font-size: .75rem; }
html[data-map="3"].has-ymkey .omap > img, html[data-map="3"].has-ymkey .omap__pin, html[data-map="3"].has-ymkey .omap__attr, html[data-map="3"].has-ymkey .omap__note { display: none; }
.ymap3 { position: absolute; inset: 0; z-index: 1; }
.ymk { width: 34px; height: 44px; transform: translate(-50%, -100%); }
/* 4 — схема проезда */
html[data-map="4"] .omap .sch { display: block; position: absolute; inset: 0; width: 100%; height: 100%; }
.sch-bg { fill: #F3ECDF; }
.sch-r path, .sch-o path, .sch-way { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.sch-r.s6 path { stroke: #E7DCCB; stroke-width: 2.5; }
.sch-r.s5 path { stroke: #EEE5D6; stroke-width: 5; }
.sch-o path { stroke: #D9CAB0; stroke-width: 12; }
.sch-r.s4 path { stroke: #FFFFFF; stroke-width: 8; }
.sch-r.s3 path { stroke: #FFFFFF; stroke-width: 10; }
.sch-r.s2 path { stroke: #FFF8EA; stroke-width: 14; }
.sch-b path { fill: color-mix(in srgb, var(--gold) 45%, #F3ECDF); stroke: var(--gold-lo); stroke-width: 1; }
.sch-t { font: 500 15px var(--f-sans); fill: #6D6053; letter-spacing: .02em; paint-order: stroke; stroke: #FFFFFF; stroke-width: 4px; }
.sch-way { stroke: var(--gold-lo); stroke-width: 4; stroke-dasharray: .1 10; }
.sch-p path { fill: var(--gold); stroke: var(--gold-lo); stroke-width: 1.2; }
.sch-l { font: 600 19px var(--f-serif); fill: #2E2924; paint-order: stroke; stroke: #F3ECDF; stroke-width: 5px; }
.sch-k { font: 500 13px var(--f-sans); fill: #6D6053; paint-order: stroke; stroke: #F3ECDF; stroke-width: 4px; }
.sch-a { font: 11px var(--f-sans); fill: #6E6E78; }
@media (max-width: 767px) { .sch-l { font-size: 40px; stroke-width: 9px; } .sch-t { font-size: 30px; stroke-width: 7px; } .sch-k { font-size: 26px; } .sch-a { font-size: 22px; } .sch-way { stroke-width: 8; stroke-dasharray: .1 18; } }
/* плашка «Карта 1–4» (бета-показ) */
.map-sw { display: inline-flex; align-items: center; gap: 4px; padding: 4px; border: 1px solid var(--line-l); border-radius: var(--r-pill); font-size: .75rem; }
.map-sw span { padding: 0 6px 0 8px; color: var(--ink-2); }
.map-sw button { min-width: 30px; height: 30px; border-radius: var(--r-pill); font: 600 .8125rem var(--f-num); color: var(--ink); }
.map-sw button[aria-pressed="true"] { background: var(--gold); }
/* ================= G «Стол» и J «Крылья»: визитка по центру, заявка слева, карта справа =================
   Телефон и планшет (до 1180): визитка → карта с маршрутом → форма. Окно карты берёт пропорцию под масштаб выбранной карты (--mar). */
.cx { position: relative; }
.cx__in { display: grid; gap: var(--s5); grid-template-areas: "card" "map" "form"; width: min(100% - 2 * var(--gut), 1360px); margin-inline: auto; }
.cx__form { grid-area: form; } .cx__card { grid-area: card; } .cx__map { grid-area: map; }
.cx__card { display: grid; justify-items: center; align-content: center; }
.cx__stage { width: 100%; display: grid; justify-items: center; }
.cx .vc { width: min(100%, 560px); aspect-ratio: auto; min-height: 250px; }
.cx .vc .logo-pair { --lh: 64px; }
.cx__map { display: flex; flex-direction: column; gap: 10px; align-self: center; }
.cx__win { --mar: 1 / 1; position: relative; flex: none; aspect-ratio: var(--mar); overflow: hidden; border-radius: 14px; border: 1px solid color-mix(in srgb, var(--gold) 55%, transparent); box-shadow: 0 22px 44px -28px rgba(20, 20, 26, .55); }
.cx__omap { position: absolute; inset: 0; --mx: 50%; --my: 50%; --mw: 1400px; }
/* маршрут — компактной строкой под картой */
.cx .vcr { width: 100%; margin: 0; padding: 0; justify-content: center; gap: 4px 10px; background: none; }
.cx .vcr .vcr__main { min-height: 40px; padding: 0 14px !important; font-size: .8125rem; }
.cx .vcr .vcr__alt { min-height: 40px; padding: 0 6px !important; }
.cx .form-slot--card .form--compact { max-width: none; }
@media (min-width: 1180px) {
  .cx__in { grid-template-areas: "form card map"; align-items: center; }
  .cx .vc { aspect-ratio: 1.8; min-height: 0; }
}

/* ---------- окно карты под каждый масштаб: карта целиком, ничего не обрезано ---------- */
html[data-map="2"] .cx__win { --mar: 650 / 450; }
html[data-map="4"] .cx__win { --mar: 1170 / 660; }
html[data-map="11"] .cx__win { --mar: 1000 / 981; }
html[data-map="12"] .cx__win { --mar: 1000 / 1687; }
html[data-map="2"]:not(.ymap-fail) .cx__omap .omap__y { left: 0; top: 0; width: 100%; height: 100%; max-height: none; object-fit: contain; transform: none; border: 0; outline: 0; box-shadow: none; }
html[data-map="4"] .cx__omap { background: #F3ECDF; }
.cx .sch-l { font-size: 46px; stroke-width: 9px; } .cx .sch-t { font-size: 32px; stroke-width: 7px; } .cx .sch-k { font-size: 28px; } .cx .sch-a { font-size: 20px; } .cx .sch-way { stroke-width: 8; stroke-dasharray: .1 16; }
.cx .wm-l { font-size: 34px; stroke-width: 8px; } .cx .wm-s { font-size: 26px; } .cx .wm-d { font-size: 28px; } .cx .wm-k, .cx .wm-n { font-size: 22px; } .cx .wm-a { font-size: 16px; }
.cx .du-l { font-size: 30px; stroke-width: 7px; }

/* ---------- G «Стол»: визитка главная, бланк и карта — листы под ней ---------- */
.cx--g .form-slot--card .form--compact, .cx--g .cx__map { background-color: #FBF8F2; box-shadow: 0 2px 4px rgba(60, 50, 30, .08), 0 30px 50px -26px rgba(20, 20, 26, .5); }
.cx--g .cx__map { padding: 12px; border-radius: 6px; }
.cx--g .cx__win { border-radius: 4px; box-shadow: none; }
/* компактный бланк: уже, поля ~44 px, меньше отступы и заголовок, компактные чипы, кнопка обычной высоты */
.cx--g .form.form--compact { gap: 10px; padding: 18px 18px 16px; }
.cx--g .form--compact h3 { font-size: calc(1.0625rem * var(--k-h)); }
.cx--g .form--compact .fld { gap: 4px; }
.cx--g .form--compact .fld label, .cx--g .form--compact .fld legend { font-size: .75rem; }
.cx--g .form--compact .fld input { min-height: 44px; padding: 0 12px; }
.cx--g .form--compact .chips { gap: 6px; }
.cx--g .form--compact .chips span { min-height: 32px; padding: 0 10px; font-size: .8125rem; }
.cx--g .form--compact .consent { min-height: 0; font-size: .75rem; }
.cx--g .form--compact .btn--wide { width: auto; min-height: 44px; padding: 0 22px; align-self: flex-start; }
.cx--g .form--compact .form__warn { font-size: .75rem; }
@media (min-width: 1180px) {
  .cx--g .cx__in { grid-template-columns: minmax(270px, .8fr) minmax(500px, 1.5fr) minmax(300px, 1fr); gap: 0; }
  .cx--g .cx__card { position: relative; z-index: 3; }
  .cx--g .vc { width: min(108%, 620px); }
  .cx--g .vc .logo-pair { --lh: 76px; }
  .cx--g .cx__form { transform: rotate(-1.4deg); margin-right: -34px; }
  .cx--g .form-slot--card .form--compact { padding-right: 52px; border-radius: 4px; }
  .cx--g .cx__map { transform: rotate(1.2deg); margin-left: -34px; padding: 12px 12px 10px 46px; }
}

/* ---------- J «Крылья»: визитка шире (1 : 1.6 : 1), текст на ней крупнее; бланк и карта выезжают из-за неё ---------- */
.cx--j .form-slot--card .form--compact, .cx--j .cx__map { border-radius: var(--r-card); }
.cx--j .cx__map { padding: 10px; background: color-mix(in srgb, #FFFFFF 55%, var(--haze)); box-shadow: 0 24px 44px -30px rgba(20, 20, 26, .5); }
.cx--j .form--compact .chips { flex-wrap: wrap; }
@media (min-width: 1180px) {
  .cx--j .cx__in { grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr) minmax(0, 1fr); gap: clamp(20px, 2vw, 32px); }
  .cx--j .cx__card { position: relative; z-index: 3; }
  .cx--j .vc { width: 100%; max-width: 660px; padding: clamp(24px, 2.4vw, 34px); }
  .cx--j .vc .logo-pair { --lh: 84px; }
  .cx--j .vc__name { font-size: calc(1.625rem * var(--k-h)); }
  .cx--j .vc__role { font-size: .6875rem; }
  .cx--j .vc__tel { font-size: 1.4375rem; }
  .cx--j .vc__mail { font-size: .9375rem; }
  .cx--j .vc__addr, .cx--j .vc__metro { font-size: .8125rem; }
  .cx--j .cx__form, .cx--j .cx__map { transition: transform 900ms var(--ease-out), opacity 500ms ease; }
  .cx--j.is-pre .cx__form { transform: translateX(55%) scale(.92); opacity: 0; }
  .cx--j.is-pre .cx__map { transform: translateX(-55%) scale(.92); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) { .cx--j .cx__form, .cx--j .cx__map { transition: none; } .cx--j.is-pre .cx__form, .cx--j.is-pre .cx__map { transform: none; opacity: 1; } }
@media (max-width: 767px) { .cx .sch-l { font-size: 50px; stroke-width: 10px; } .cx .sch-t { font-size: 38px; stroke-width: 8px; } .cx .sch-k { font-size: 32px; } .cx .sch-a { font-size: 26px; } .cx .sch-way { stroke-width: 10; stroke-dasharray: .1 22; } .cx .wm-l { font-size: 44px; } .cx .wm-s { font-size: 32px; } .cx .wm-d { font-size: 36px; } .cx .wm-k, .cx .wm-n { font-size: 28px; } }

/* ================= карта 10 и общие правила векторных карт (5–9 удалены 02.10) ================= */
.mapsvg { display: none; }
html[data-map="4"] .omap .mapsvg[data-mapel] { position: absolute; inset: 0; width: 100%; height: 100%; }
/* район Коммунарки во врезке карты 12 */
.du-bg { fill: #EFE7DA; }
.du-r1 path, .du-r2 path, .du-r3 path, .du-sub path { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.du-r1 path { stroke: #FFFFFF; stroke-width: 9; } .du-r2 path { stroke: #FFFFFF; stroke-width: 4.5; } .du-r3 path { stroke: #F8F2E8; stroke-width: 2.5; }
.du-sub path { stroke: #EF161E; stroke-width: 3; stroke-dasharray: 10 6; opacity: .7; }
.du-way { fill: none; stroke: #6D5A36; stroke-width: 3.5; stroke-dasharray: .1 8; stroke-linecap: round; }
.du-l { font: 600 19px var(--f-serif); fill: #2E2924; paint-order: stroke; stroke: #EFE7DA; stroke-width: 5px; }
.du-pin { fill: var(--gold); stroke: #6D5A36; stroke-width: 1.2; }
@media (max-width: 767px) { .du-l { font-size: 34px; stroke-width: 8px; } }
.cx .du-l { font-size: 30px; stroke-width: 7px; }

/* 10 — объёмная: статичный наклон плоскости карты, метка стоит с тенью */
html[data-map="10"] .omap { background: linear-gradient(to bottom, #F3ECDF 0%, #E3D8C6 100%); }
html[data-map="10"] .omap { perspective: 1000px; perspective-origin: var(--mx) 20%; }
html[data-map="10"] .omap > img:not(.omap__y) { transform: rotateX(50deg) scale(1.15); transform-origin: 50% 50%; backface-visibility: hidden; }
html[data-map="10"] .omap::after { content: ""; position: absolute; z-index: 1; left: 0; right: 0; top: 0; height: 38%; background: linear-gradient(to bottom, #F3ECDF 20%, color-mix(in srgb, #F3ECDF 0%, transparent)); pointer-events: none; }
html[data-map="10"] .omap__pin { z-index: 3; width: 46px; height: 60px; }
html[data-map="10"] .omap__pin::after { content: ""; position: absolute; z-index: -1; left: 50%; bottom: -7px; width: 40px; height: 12px; margin-left: -20px; border-radius: 50%; background: radial-gradient(closest-side, rgba(20, 20, 26, .45), rgba(20, 20, 26, 0)); }
html[data-map="10"] .omap__pulse { display: none; }

/* ================= 11 «Где в Москве» и 12 «Два масштаба» (векторно по OSM: границы — Nominatim, МКАД — Overpass) ================= */
html:is([data-map="11"], [data-map="12"]) .omap > img:not(.omap__y), html:is([data-map="11"], [data-map="12"]) .omap__pin, html:is([data-map="11"], [data-map="12"]) .omap__attr { display: none; }
html:is([data-map="11"], [data-map="12"]) .omap { background: #F1EADD; }
html:is([data-map="11"], [data-map="12"]) .omap .mapsvg[data-mapel] { position: absolute; inset: 0; width: 100%; height: 100%; }
html[data-map="11"] .omap .wim, html[data-map="12"] .omap .two { display: block; }
.wm-bg { fill: #F1EADD; }
.wm-msk path { fill: #FBF7EE; stroke: var(--gold); stroke-width: 2; stroke-linejoin: round; }
.wm-new path { fill: color-mix(in srgb, var(--gold) 14%, #FBF7EE); stroke: var(--gold); stroke-width: 1; stroke-dasharray: 5 4; }
.wm-mkad path { fill: none; stroke: #6D5A36; stroke-width: 3; stroke-linecap: round; }
.wm-line { fill: none; stroke: #6D5A36; stroke-width: 1.5; stroke-dasharray: 6 5; }
.wm-kr { fill: #7A2A22; }
.wm-pin { fill: var(--gold); stroke: #6D5A36; stroke-width: 1.2; }
.wm-l { font: 600 22px var(--f-serif); fill: #2E2924; paint-order: stroke; stroke: #FBF7EE; stroke-width: 6px; }
.wm-s { font: italic 16px var(--f-serif); fill: #5A4D3E; paint-order: stroke; stroke: #FBF7EE; stroke-width: 5px; }
.wm-d { font: 600 18px var(--f-num); fill: #6D5A36; paint-order: stroke; stroke: #FBF7EE; stroke-width: 5px; }
.wm-k { font: 600 14px var(--f-sans); letter-spacing: .2em; fill: #6D5A36; }
.wm-n { font: 600 15px var(--f-sans); letter-spacing: .22em; fill: #8C7449; }
.wm-a { font: 11px var(--f-sans); fill: #6E6E78; }
.two-zoom { fill: none; stroke: #6D5A36; stroke-width: 1.5; }
.two-con { fill: none; stroke: #6D5A36; stroke-width: 1; stroke-dasharray: 4 4; }
.two-frame { fill: none; stroke: var(--gold); stroke-width: 3; }
@media (max-width: 767px) { .wm-l { font-size: 30px; } .wm-s { font-size: 22px; } .wm-d { font-size: 24px; } .wm-k, .wm-n { font-size: 20px; } }

/* 26.10: список темы — той же высоты, что поля компактной формы */
.form--compact .fld select { min-height: 46px; }
.cx--g .form--compact .fld select { min-height: 44px; padding-left: 12px; }

/* 26.10: часы работы в визитке (ПТ-9); подписи не мельче 12 px; на телефоне — зона нажатия у иконок и ссылок не меньше 44 px */
.vc__hours { margin-top: 2px; font-size: .75rem; line-height: 1.4; color: #5C5C66; }
.vc__role { font-size: .75rem; }
.cx--j .vc__role { font-size: .75rem; }
.vc__metro small { font-size: .75rem; }
@media (pointer: coarse), (max-width: 599px) {
  .vc__msg a { position: relative; }
  .vc__msg a::after { content: ""; position: absolute; inset: -6px; }
  .vc__tel, .vc__mail { position: relative; }
  .vc__tel::after, .vc__mail::after { content: ""; position: absolute; left: 0; right: 0; top: -10px; bottom: -10px; }
}

/* 05.11, заказчик: «Контакты» на главной занимали весь экран (933 px) из-за формы — форма компактнее:
   имя и телефон в одну строку, способы связи — одной лентой, тексты под кнопкой мельче */
#kontakty .form.form--compact { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px 12px; padding: var(--s4) var(--s5); }
#kontakty .form--compact > :not(.fld:has(#f-name)):not(.fld:has(#f-phone)) { grid-column: 1 / -1; }
#kontakty .form--compact h3 { margin-bottom: 2px; }
#kontakty .form--compact .fld { gap: 4px; }
#kontakty .form--compact .fld label, #kontakty .form--compact .fld legend { font-size: .875rem; }
#kontakty .form--compact .fld input, #kontakty .form--compact .fld select { min-height: 44px; }
#kontakty .form--compact .chips { flex-wrap: nowrap; gap: 6px; }
#kontakty .form--compact .chips span { min-height: 38px; padding: 0 12px; font-size: .875rem; }
#kontakty .form--compact .consent { min-height: 0; font-size: .8125rem; line-height: 1.4; }
#kontakty .form--compact .btn { min-height: 48px; }
#kontakty .form--compact .form__pol, #kontakty .form--compact .form__warn { font-size: .75rem; line-height: 1.4; }
#kontakty .form--compact .form__warn .i { width: 14px; height: 14px; }
@media (max-width: 380px) { #kontakty .form--compact .chips { flex-wrap: wrap; } }
#kontakty.sec { padding-block: var(--s6); }
/* 05.11 (тестирование): телефон и почта на визитке — зона нажатия 40 px без изменения раскладки */
.vc__tel, .vc__mail { display: inline-block; padding-block: 8px; margin-block: -8px; }
.vc__msg a { width: 40px; height: 40px; }   /* 05.11: зона нажатия иконок мессенджеров на визитке */
