/* ТОПДОМ — страница «Посёлки»: карта → приближение → посёлок.
   Палитра компании: белый / светло-серый / тёмно-серый. */
.vpage { background: #fff; color: var(--ink); --side-w: 430px; }
.vpage .header { right: 0; z-index: 120; background: #fff; backdrop-filter: none; -webkit-backdrop-filter: none; }
.vpage .nav a { padding: 9px 11px; }
.vpage .footer { margin-right: var(--side-w); }

/* ---------- карта ---------- */
.map-area { position: relative; height: 100vh; min-height: 640px; overflow: hidden; margin-right: var(--side-w); container-type: size; background: #eef0f2; }
.mapbox { position: absolute; width: max(100cqw, calc(100cqh * 1.5988)); height: max(100cqh, calc(100cqw / 1.5988)); left: calc((100cqw - max(100cqw, 100cqh * 1.5988)) * .35); top: calc((100cqh - max(100cqh, 100cqw / 1.5988)) * .5); z-index: 1; }
.big-map { position: absolute; inset: 0; background: url("../assets/opt/map-main-v2.webp") center / 100% 100%; }
.mapbox.pins { z-index: 6; background: none; }
.village-map { position: absolute; inset: 0; background-size: cover; background-position: center; z-index: 2; opacity: 0; filter: brightness(.94); pointer-events: none; }
.shade { position: absolute; inset: 0; z-index: 3; pointer-events: none; }

.opened .big-map, .opened .mapbox.pins { animation: oldMapFly 1.6s cubic-bezier(.12,.82,.18,1) forwards; }
.opened .village-map { animation: newMapArrive 1.6s cubic-bezier(.12,.82,.18,1) forwards; pointer-events: auto; }
.returning .big-map, .returning .mapbox.pins { animation: backOldMap 1.6s cubic-bezier(.12,.82,.18,1) forwards; }
.returning .village-map { animation: backVillageMap 1.6s cubic-bezier(.12,.82,.18,1) forwards; }
.opened .mapbox.pins { animation-name: pinsOut; }
.returning .mapbox.pins { animation-name: pinsIn; }
.opened .big-map { transform-origin: var(--ox, 50%) var(--oy, 50%); }
@keyframes oldMapFly {
  0% { opacity: 1; transform: scale(1); filter: blur(0); }
  45% { opacity: 1; transform: scale(2.25); filter: blur(10px); }
  65%, 100% { opacity: 0; transform: scale(2.6); filter: blur(18px); }
}
@keyframes backOldMap {
  0%, 35% { opacity: 0; transform: scale(2.6); filter: blur(18px); }
  55% { opacity: 1; transform: scale(2.25); filter: blur(10px); }
  100% { opacity: 1; transform: scale(1); filter: blur(0); }
}
@keyframes newMapArrive {
  0% { opacity: 0; transform: scale(1.65); filter: blur(20px) brightness(.16); }
  55% { opacity: 0; transform: scale(1.42); filter: blur(16px) brightness(.2); }
  72% { opacity: 1; transform: scale(1.25); filter: blur(8px) brightness(.45); }
  100% { opacity: 1; transform: scale(1); filter: blur(0) brightness(.94); }
}
@keyframes backVillageMap {
  0% { opacity: 1; transform: scale(1); filter: blur(0) brightness(.94); }
  42% { opacity: 1; transform: scale(1.42); filter: blur(10px) brightness(.2); }
  100% { opacity: 0; transform: scale(1.65); filter: blur(20px) brightness(.16); }
}
@keyframes pinsOut { 0% { opacity: 1; } 30%, 100% { opacity: 0; } }
@keyframes pinsIn { 0%, 70% { opacity: 0; } 100% { opacity: 1; } }
.opened .mapbox.pins, .opened .point { pointer-events: none; }
.opened .mapbox.pins { opacity: 0; }

/* ---------- метки-точки ---------- */
.mapbox.pins { container-type: inline-size; }
.point { position: absolute; width: 0; height: 0; margin: 0; cursor: pointer; z-index: 6; display: block; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ---------- маркеры внутри посёлка ---------- */
.mk { position: absolute; z-index: 8; width: 90px; height: 90px; margin: -45px 0 0 -45px; cursor: pointer; opacity: 0; display: none; }
.opened .mk { display: block; animation: markerFadeIn .55s ease forwards; animation-delay: calc(1s + var(--i, 0) * 80ms); }
.returning .mk { display: none; }
@keyframes markerFadeIn { from { opacity: 0; transform: scale(.78); } to { opacity: 1; transform: scale(1); } }
.mk i { position: absolute; left: 27px; top: 27px; width: 36px; height: 36px; border-radius: 50%; border: 2px solid #fff; background: rgba(255,255,255,.2); animation: pulse 2.4s ease-out infinite; transition: box-shadow .25s, background .25s; }
.mk i::after { content: ""; position: absolute; inset: 8px; border-radius: 50%; background: #fff; }
.mk.infra i { background: #1f1f1f; animation: none; box-shadow: 0 0 0 4px rgba(255,255,255,.28); }
.mk:hover i, .mk.is-active i { box-shadow: 0 0 34px rgba(255,255,255,.9); animation: none; }
.mk b { position: absolute; left: 50%; top: 100%; margin-top: -14px; transform: translateX(-50%) translateY(6px); white-space: nowrap; padding: 7px 14px; border-radius: 999px; background: #fff; color: var(--ink); font-size: 12.5px; font-weight: 600; opacity: 0; transition: opacity .25s, transform .25s; pointer-events: none; }
.mk:hover b, .mk.is-active b { opacity: 1; transform: translateX(-50%); }
@keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(255,255,255,.55); } 70%, 100% { box-shadow: 0 0 0 22px rgba(255,255,255,0); } }

/* ---------- боковая панель ---------- */
.side { position: fixed; right: 0; top: 0; z-index: 110; width: var(--side-w); height: 100vh; padding: 108px 36px 36px; background: #fff; overflow-y: auto; scrollbar-width: thin; }
.side__view[hidden] { display: none; }
.side__view { animation: sideIn .5s var(--ease); }
@keyframes sideIn { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.kicker { color: var(--ink-3); font-weight: 500; font-size: 14px; }
.side h1 { margin: 10px 0 0; font-size: 40px; line-height: 1.06; font-weight: 300; letter-spacing: -.04em; }
.info { margin: 22px 0 28px; color: var(--ink-2); line-height: 1.55; height: 112px; overflow: hidden; }
.cards { display: flex; flex-direction: column; gap: 10px; }
.card { min-height: 100px; padding: 18px 20px; border-radius: var(--r-md); background: var(--paper); border: 1px solid transparent; display: grid; grid-template-columns: 14px 1fr 20px; gap: 14px; color: var(--ink); align-items: start; transition: border-color .25s, background .25s; }
.card:hover, .card.is-hover { border-color: var(--ink); background: #fff; }
.card .dot { width: 9px; height: 9px; margin-top: 8px; border-radius: 50%; background: var(--ink); }
.card h2 { margin: 0; font-size: 18px; font-weight: 500; letter-spacing: -.02em; }
.card p, .card b { color: var(--ink-3); font-size: 14px; display: block; margin: 0; font-weight: 400; }
.card b { color: var(--ink-2); font-weight: 500; margin-top: 2px; }
.card strong { font-size: 26px; line-height: 1; font-weight: 300; }

.back { width: 100%; min-height: 46px; display: inline-flex; align-items: center; justify-content: center; margin: 0 0 26px; color: var(--ink); border: 1px solid var(--line); border-radius: 999px; padding: 12px 18px; font-weight: 500; font-size: 14px; transition: border-color .25s, background .25s; }
.back:hover { border-color: var(--ink); }
.side h3.vname { font-size: 36px; line-height: 1.05; font-weight: 300; margin: 8px 0 0; letter-spacing: -.04em; }
.side .loc-line { margin-top: 16px; color: var(--ink-2); line-height: 1.6; font-size: 15px; }
.side .desc { margin-top: 16px; color: var(--ink-2); line-height: 1.6; font-size: 15px; }
.facts { display: grid; gap: 0; margin: 24px 0; }
.facts span { border-top: 1px solid var(--line); padding: 13px 0; font-weight: 500; font-size: 15px; }
.facts span:last-child { border-bottom: 1px solid var(--line); }
.main-cta { display: inline-block; margin-top: 4px; padding: 15px 24px; border-radius: 999px; background: var(--ink); color: #fff; font-weight: 500; transition: background .25s; }
.main-cta:hover { background: #2b2b2b; }
.side-house-image { height: 220px; margin-bottom: 18px; border-radius: var(--r-md); background-size: cover; background-position: center; }
.side-house-card .vname { font-size: 30px !important; }
.compact-facts { grid-template-columns: 1fr 1fr; gap: 0 16px; }
.modal-link { display: flex; align-items: center; justify-content: center; margin-top: 10px; min-height: 46px; border-radius: 999px; border: 1px solid var(--line); font-weight: 500; transition: border-color .25s; }
.modal-link:hover { border-color: var(--ink); }

/* ---------- детали посёлка ---------- */
.village-details { position: relative; z-index: 5; margin-right: var(--side-w); background: #fff; }
.village-details[hidden] { display: none; }
.vs { padding: 80px var(--gutter); border-top: 1px solid var(--line); }
.vs:nth-child(even) { background: var(--paper); }
.vs h2 { margin: 0 0 28px; font-size: clamp(30px, 3.6vw, 56px); line-height: 1.04; font-weight: 300; letter-spacing: -.04em; }
.vs p { color: var(--ink-2); line-height: 1.6; }
.vs .eyebrow { margin-bottom: 14px; }
.story { display: grid; grid-template-columns: minmax(0, .92fr) minmax(300px, 1.08fr); gap: 12px; padding-top: 80px; border-top: 0; background: #fff !important; }
.story__copy { display: flex; min-height: 520px; flex-direction: column; justify-content: flex-end; border-radius: var(--r-lg); background: var(--paper); padding: clamp(24px, 3.4vw, 48px); }
.story__copy h2 { font-size: clamp(38px, 5vw, 84px); line-height: 1; margin: 0 0 20px; }
.story__copy p { font-size: clamp(15px, 1.2vw, 18px); max-width: 640px; }
.source-link { width: fit-content; margin-top: 22px; border-bottom: 1px solid var(--ink); font-size: 12.5px; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; padding-bottom: 3px; }
.story__photo { position: relative; min-height: 520px; overflow: hidden; border-radius: var(--r-lg); background-size: cover; background-position: center; }
.vstats { display: grid; grid-template-columns: repeat(5, 1fr); margin-top: 20px; border-top: 1px solid var(--ink); }
.vstats div { padding: 24px 20px 8px 0; }
.vstats div + div { padding-left: 22px; border-left: 1px solid var(--line); }
.vstats b { display: block; font-size: clamp(28px, 2.8vw, 46px); white-space: nowrap; font-weight: 200; letter-spacing: -.04em; line-height: 1; }
.vstats b small { font-size: .4em; font-weight: 500; margin-left: 4px; color: var(--ink-3); letter-spacing: 0; }
.vstats span { color: var(--ink-3); font-size: 14px; display: block; margin-top: 10px; line-height: 1.35; }
.houses { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.hc { border-radius: var(--r-lg); overflow: hidden; background: #fff; color: var(--ink); display: flex; flex-direction: column; transition: box-shadow .3s, transform .4s var(--ease); }
.hc:hover { box-shadow: 0 16px 40px rgba(0,0,0,.09); transform: translateY(-3px); }
.hc__img { aspect-ratio: 4 / 3; overflow: hidden; }
.hc__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .9s var(--ease); }
.hc:hover .hc__img img { transform: scale(1.05); }
.hc__b { padding: 20px 22px 22px; display: flex; flex-direction: column; flex: 1; }
.hc__b small { color: var(--ink-3); font-weight: 500; font-size: 14px; }
.hc__b strong { font-size: 28px; font-weight: 300; margin-top: 4px; letter-spacing: -.03em; }
.hc__b span { margin-top: 12px; font-weight: 500; display: inline-flex; gap: 6px; align-items: center; }
.route { display: grid; grid-template-columns: 1fr 1.2fr; gap: 54px; align-items: center; }
.route__vis { position: relative; height: 340px; border-radius: var(--r-lg); background: var(--paper); overflow: hidden; }
.route__line { position: absolute; left: 10%; top: 55%; width: 75%; height: 2px; background: var(--ink); transform: rotate(-8deg); transform-origin: left center; }
.route__lab { position: absolute; padding: 11px 16px; border-radius: 999px; background: #fff; font-size: 14px; font-weight: 500; }
.r1 { left: 6%; top: 62%; } .r2 { left: 36%; top: 30%; background: var(--ink); color: #fff; } .r3 { right: 6%; top: 18%; }
.infra { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; }
.infra div { position: relative; isolation: isolate; overflow: hidden; border-radius: var(--r-md); background: #fff; padding: 24px; min-height: 220px; display: flex; flex-direction: column; transition: box-shadow .3s; }
.infra div:hover { box-shadow: 0 14px 36px rgba(0,0,0,.08); }
.infra em { font-style: normal; font-weight: 200; font-size: 56px; line-height: 1; letter-spacing: -.04em; margin-bottom: auto; padding-bottom: 20px; transition: color .45s; }
.infra p { font-size: 15px; color: var(--ink); transition: color .45s; }
/* фон-картинка пункта проявляется при наведении (или фокусе), текст светлеет */
.infra div[style*="--bg"]::before { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(0deg, rgba(0,0,0,.62), rgba(0,0,0,.18) 70%), var(--bg) center / cover no-repeat; opacity: 0; transform: scale(1.06); transition: opacity .5s var(--ease), transform .9s var(--ease); }
@media (hover: hover) {
  .infra div[style*="--bg"]:hover::before { opacity: 1; transform: none; }
  .infra div[style*="--bg"]:hover em, .infra div[style*="--bg"]:hover p { color: #fff; }
}
.gal { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; gap: 12px; }
.gal figure { margin: 0; position: relative; border-radius: var(--r-md); overflow: hidden; height: 340px; }
.gal figure img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s var(--ease); }
.gal figure:hover img { transform: scale(1.06); }
.gal figcaption { position: absolute; left: 12px; bottom: 12px; padding: 6px 12px; border-radius: 999px; background: rgba(255,255,255,.92); font-size: 12.5px; font-weight: 600; }
.vcta { display: flex; justify-content: space-between; align-items: center; gap: 30px; flex-wrap: wrap; padding-bottom: 100px; }
.vcta h2 { margin-bottom: 14px; }
.vcta__act { display: flex; gap: 10px; flex-wrap: wrap; }
.vcta__act a, .vcta__act button { padding: 16px 26px; border-radius: 999px; font-weight: 500; background: var(--ink); color: #fff; transition: background .25s; }
.vcta__act a:hover, .vcta__act button:hover { background: #2b2b2b; }
.vcta__act a.ghost { background: transparent; color: var(--ink); border: 1px solid var(--ink); }
.vcta__act a.ghost:hover { background: var(--ink); color: #fff; }

@media (max-width: 1180px) {
  .vpage { --side-w: 360px; }
  .side { padding: 100px 26px 30px; }
  .info { height: 140px; }
  .infra { grid-template-columns: repeat(3, 1fr); }
  .vstats { grid-template-columns: repeat(3, 1fr); }
  .vstats div:nth-child(4) { padding-left: 0; border-left: 0; }
  .gal { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 900px) {
  .vpage { --side-w: 0px; }
  .vpage .header { right: 0; }
  /* на телефоне карта целиком (видны все метки), при выборе посёлка область вырастает под фото */
  .map-area { height: calc(100vw / 1.5988 + 28px); min-height: 0; margin-right: 0; margin-top: var(--hdr); transition: height .7s var(--ease); background: #eef0f2; }
  .map-area.opened { height: 100vw; }
  .mapbox { width: 100cqw; height: calc(100cqw / 1.5988); left: 0; top: calc((100cqh - 100cqw / 1.5988) / 2); }
  .opened .village-map, .returning .village-map { inset: 0; }
  .side { position: relative; width: 100%; height: auto; padding: 36px var(--gutter) 40px; overflow: visible; }
  .side h1 { font-size: 34px; }
  .info { height: auto; margin: 14px 0 18px; }
  .side h3.vname { font-size: 32px; }
  .village-details, .vpage .footer { margin-right: 0; }
  .vs { padding: 56px var(--gutter); }
  .story, .route { grid-template-columns: 1fr; }
  .story__copy { min-height: 0; }
  .story__photo { min-height: 0; aspect-ratio: 4 / 3; }
  .houses { grid-template-columns: 1fr; }
  .infra { grid-template-columns: 1fr 1fr; }
  .vstats { grid-template-columns: 1fr 1fr; }
  .vstats div:nth-child(n) { padding-left: 0; border-left: 0; }
  .vstats div:nth-child(2n) { padding-left: 20px; border-left: 1px solid var(--line); }
  .route__vis { height: 260px; }
}
@media (max-width: 560px) {
  .infra { grid-template-columns: 1fr; }
  .infra div { min-height: 0; }
  .mk b { display: none; }
}
@media (max-width: 900px) {
  .route__vis { height: auto; padding: 16px; display: grid; gap: 8px; }
  .route__lab, .r1, .r2, .r3 { position: static; width: fit-content; }
  .route__line { display: none; }
  .gal figure { height: 220px; }
  .vcta__act a, .vcta__act button { width: 100%; text-align: center; }
}

/* ---------- карточка посёлка: крупнее и информативнее ---------- */
.side .desc--lead { margin-top: 18px; font-size: 17px; line-height: 1.6; color: var(--ink); }
.side .loc-line { font-size: 16px; }
.side-thumbs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin: 22px 0 6px; }
.side-thumbs img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 12px; }
.scroll-hint { margin-top: 22px; display: flex; align-items: center; gap: 12px; font-size: 14.5px; color: var(--ink-2); line-height: 1.35; }
.scroll-hint i { flex: none; width: 36px; height: 36px; border-radius: 50%; border: 1px solid var(--ink); display: grid; place-items: center; animation: bobY 2s ease-in-out infinite; }
.scroll-hint svg { width: 15px; height: 15px; transform: rotate(90deg); }
@keyframes bobY { 50% { transform: translateY(5px); } }
@media (max-width: 900px) {
  .side .desc--lead { font-size: 18px; }
  .side .main-cta { display: none; }
  .side .facts span { font-size: 16px; }
}


/* ---- зелёно-розовая тема: страница посёлков ---- */
html.gp .vs:nth-child(even) { background: var(--paper); }
html.gp .vs:nth-child(3n) { background: var(--pink-l); }
html.gp .story__copy { background: var(--pink-l); }
html.gp .main-cta:hover, html.gp .vcta__act a:hover, html.gp .vcta__act button:hover { background: var(--green-m); }
html.gp .back:hover { border-color: var(--pink); color: var(--pink-d); }
html.gp .vstats b small, html.gp .infra em { color: var(--pink-d); }
html.gp .hc__b span, html.gp .source-link { color: var(--pink-d); border-color: var(--pink-d); }
html.gp .route__line { background: var(--pink); }
html.gp .route__lab.r2 { background: var(--pink-d); color: #fff; }
html.gp .mk.infra i { background: var(--ink); box-shadow: 0 0 0 4px rgba(242, 69, 127, .5); }
html.gp .mk i::after { background: #fff; }
html.gp .mk:hover i, html.gp .mk.is-active i { box-shadow: 0 0 0 6px rgba(242, 69, 127, .55); }
html.gp .scroll-hint i { border-color: var(--pink-d); color: var(--pink-d); }
html.gp .vpage .header { background: #fff; }
html.gp .big-map { filter: none; }
html.gp .village-map { filter: brightness(.94); }


/* ---- уровни 2 и 3 ---- */
html.g1 .main-cta, html.g1 .vcta__act a:not(.ghost), html.g1 .vcta__act button { background: var(--g); }
html.g1 .main-cta:hover, html.g1 .vcta__act a:not(.ghost):hover, html.g1 .vcta__act button:hover { background: var(--g-d); }
html.g1 .vcta__act a.ghost:hover { background: var(--g); border-color: var(--g); }
html.g1 .back:hover { border-color: var(--g); color: var(--g); }
html.g1 .hc__b span, html.g1 .source-link { color: var(--g); border-color: var(--g); }
html.g1 .vstats b small, html.g1 .infra em { color: var(--g); }
html.g1 .scroll-hint i { border-color: var(--g); color: var(--g); }
html.g1 .mk.infra i { background: var(--g); }
html.gp.soft .vs:nth-child(3n), html.gp.soft .story__copy { background: var(--paper); }
html.gp.soft .back:hover { border-color: var(--ink); color: var(--ink); }
html.gp.soft .vstats b small, html.gp.soft .infra em, html.gp.soft .hc__b span, html.gp.soft .source-link { color: var(--ink); border-color: var(--ink); }
html.gp.soft .route__lab.r2 { background: var(--ink); }
html.gp.soft .route__line { background: var(--ink); }
html.gp.soft .scroll-hint i { border-color: var(--ink); color: var(--ink); }
html.gp.soft .mk.infra i { background: var(--ink); box-shadow: 0 0 0 4px rgba(12, 75, 54, .35); }
html.gp.soft .mk:hover i, html.gp.soft .mk.is-active i { box-shadow: 0 0 0 6px rgba(12, 75, 54, .4); }

/* ---------- телефон: масштаб карты, плашка-подсказка, заголовок в одну строку ---------- */
.map-zoom, .map-hint { display: none; }
@media (max-width: 900px) {
  .map-area { touch-action: pan-y; }
  .map-area .mapbox { will-change: translate, scale; }
  .map-zoom { display: flex; position: absolute; right: 10px; bottom: 10px; z-index: 12; gap: 6px; align-items: center; }
  .map-zoom button { height: 40px; min-width: 40px; border-radius: 20px; background: rgba(255,255,255,.95); color: #111; font-size: 22px; font-weight: 400; line-height: 1; box-shadow: 0 4px 16px rgba(0,0,0,.16); display: grid; place-items: center; padding: 0 12px; }
  .map-zoom .map-zoom__reset { font-size: 13px; font-weight: 600; }
  .map-zoom [hidden] { display: none; }
  .opened .map-zoom { display: none; }
  .map-hint { display: flex; align-items: center; gap: 10px; margin: 12px var(--gutter) 0; padding: 12px 18px; border-radius: 999px; background: var(--paper); color: var(--ink-2); font-size: 13.5px; font-weight: 500; line-height: 1.3; }
  .map-hint i { width: 8px; height: 8px; flex: none; border-radius: 50%; background: var(--ink); animation: hintPulse 1.8s ease-in-out infinite; }
  @keyframes hintPulse { 50% { transform: scale(1.7); opacity: .5; } }
  .map-area.opened + .map-hint { display: none; }
  .side { padding-top: 22px; }
  .side h1 { font-size: 30px; margin-top: 6px; white-space: nowrap; }
  .side h1 br { display: none; }
  .side .info { display: none; }
}

/* ================= Посёлки v2 (01.11) ================= */
/* значки на карте: якорь — остриё значка, размер в % ширины карты, при наведении растут */
.point img { position: absolute; bottom: 0; left: calc(var(--w) * var(--tx) / -100 * 1cqw); width: calc(var(--w) * 1cqw); max-width: none; height: auto; transform-origin: calc(var(--w) * var(--tx) / 100 * 1cqw) 100%; transition: transform .3s var(--ease), filter .3s; filter: drop-shadow(0 3px 5px rgba(0,0,0,.16)); user-select: none; -webkit-user-drag: none; }
.point:hover, .point.is-hover { z-index: 9; }
.point:hover img, .point.is-hover img { transform: scale(1.24); filter: drop-shadow(0 10px 16px rgba(0,0,0,.3)); }
.point--st { cursor: default; }
.shade { display: none; }

/* ---- карта посёлка: разметка участков ---- */
.village-map { background: #1d2420; }
.vsvg { display: block; width: 100%; height: 100%; cursor: grab; user-select: none; -webkit-user-select: none; touch-action: pan-y; }
.village-map.is-zoomed .vsvg { touch-action: none; }
.village-map.is-drag .vsvg { cursor: grabbing; }
.vp { fill: rgba(255,255,255,.12); stroke: rgba(255,255,255,.85); stroke-width: 1.3; vector-effect: non-scaling-stroke; stroke-linejoin: round; cursor: pointer; transition: fill .22s, stroke .22s, stroke-width .22s, opacity .3s, filter .22s; }
.vp.s-sell { fill: rgba(70,222,150,.30); stroke: #d6ffec; }
.vp.s-reservation { fill: rgba(255,196,80,.32); stroke: #ffe8b0; }
.vp.s-sold { fill: rgba(235,64,64,.32); stroke: rgba(255,200,200,.9); }
.vp.s-unknown { fill: rgba(190,180,240,.22); }
/* в продаже только участок (без дома) — белый */
.vp.s-sell.t-land { fill: rgba(255,255,255,.42); stroke: #fff; }
.vp:hover { fill: rgba(255,255,255,.46); stroke: #fff; stroke-width: 2.4; filter: drop-shadow(0 0 7px rgba(255,255,255,.75)); }
/* выбранный (по клику) — не как наведение: тёмная толстая обводка с белым ореолом, «щелчок» при выборе, крупный номер */
.vp.is-sel, .vp.is-sel.is-hov, .vp.is-sel:hover { fill: rgba(255,255,255,.22); stroke: #111; stroke-width: 2.2; filter: drop-shadow(0 0 1px #fff) drop-shadow(0 0 10px rgba(255,255,255,.9)); animation: vpSel .55s var(--ease); }
@keyframes vpSel { 0% { stroke-width: 6; fill: rgba(255,255,255,.7); } 100% { stroke-width: 2.2; } }
.vnums text.is-sel { opacity: 1; transform-box: fill-box; transform-origin: center; transform: scale(1.35); fill: #111; stroke: none; font-weight: 600; }
/* номер выбранного — без анимации transform: в SVG она уводила цифру в сторону, теперь только появляется/исчезает */
.vp.is-off { opacity: .1; pointer-events: none; }
.vnums text { fill: #fff; font-weight: 700; text-anchor: middle; dominant-baseline: central; paint-order: stroke; stroke: rgba(0,0,0,.6); stroke-width: .16em; stroke-linejoin: round; opacity: 0; pointer-events: none; transition: opacity .25s; font-family: var(--f-sans); }
.show-nums .vnums text { opacity: 1; }

.vmap-hud { position: absolute; inset: 0; z-index: 12; pointer-events: none; }
.vmap-hud[hidden] { display: none; }
.vmap-hud > * { pointer-events: auto; }
.vmap-zoom { position: absolute; right: 22px; bottom: 26px; display: flex; flex-direction: column; gap: 8px; }
.vmap-zoom button { width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,.93); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); color: #111; font-size: 22px; line-height: 1; box-shadow: 0 6px 20px rgba(0,0,0,.22); transition: transform .2s, background .2s; }
.vmap-zoom button:hover { transform: scale(1.08); background: #fff; }
.vmap-legend { position: absolute; left: 22px; bottom: 26px; display: flex; flex-wrap: wrap; gap: 6px; }
.vmap-legend span { display: inline-flex; align-items: center; gap: 7px; padding: 8px 14px; border-radius: 999px; background: rgba(255,255,255,.93); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); font-size: 12.5px; font-weight: 600; box-shadow: 0 4px 14px rgba(0,0,0,.14); }
.vmap-legend i, .vfilter i, .vstat::before { width: 10px; height: 10px; border-radius: 50%; display: inline-block; flex: none; }
i.s-sell, .vstat.s-sell::before { background: #2fcf8e; }
i.s-reservation, .vstat.s-reservation::before { background: #f7cf26; }
i.s-sold, .vstat.s-sold::before { background: #eb4040; }
i.s-land { background: #fff; box-shadow: inset 0 0 0 1.5px #9aa0a6; }
.vstat.s-unknown::before { background: #b4acd8; }
.vmap-hud > .vmap-note { position: absolute; top: 22px; right: 22px; margin: 0; display: flex; align-items: center; gap: 9px; padding: 9px 16px; border-radius: 999px; background: rgba(255,255,255,.93); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); font-size: 12.5px; font-weight: 600; color: #111; box-shadow: 0 6px 20px rgba(0,0,0,.14); pointer-events: none; }
.vmap-note i { width: 8px; height: 8px; flex: none; border-radius: 50%; background: #111; animation: notePulse 1.8s ease-in-out infinite; }
@keyframes notePulse { 50% { transform: scale(1.7); opacity: .5; } }
@media (max-width: 700px) { .vmap-hud > .vmap-note { top: 12px; right: 12px; padding: 7px 12px; font-size: 11.5px; } }
.pc-ph { display: grid; place-items: center; align-content: center; gap: 8px; aspect-ratio: 16 / 10; margin: 0 0 16px; border-radius: 18px; background: linear-gradient(135deg, #eceeef, #dfe2e4); color: #8a9097; text-align: center; font-size: 13px; font-weight: 500; }
.pc-ph svg { width: 54px; height: 54px; }
.vmap-card .pc-ph { aspect-ratio: 16 / 9; margin-bottom: 12px; }
.vmap-tip { position: absolute; z-index: 5; pointer-events: none; display: grid; gap: 3px; min-width: 190px; padding: 13px 15px; border-radius: 14px; background: rgba(17,17,17,.93); color: #fff; font-size: 13px; line-height: 1.35; box-shadow: 0 10px 30px rgba(0,0,0,.3); }
.vmap-tip[hidden], .vmap-card[hidden] { display: none; }
.vmap-tip em, .vmap-card em { font-style: normal; width: fit-content; padding: 3px 10px; border-radius: 999px; font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; background: #fff; color: #111; }
.vmap-tip em.s-sell, .vmap-card em.s-sell { background: #2fcf8e; color: #04301c; }
.vmap-tip em.s-reservation, .vmap-card em.s-reservation { background: #f7cf26; color: #3b2f00; }
.vmap-tip em.s-sold, .vmap-card em.s-sold { background: #e5484d; color: #fff; }
.vmap-tip b { font-size: 16px; font-weight: 600; }
.vmap-card { position: absolute; left: 22px; bottom: 76px; width: 310px; padding: 20px 20px 18px; border-radius: 22px; background: rgba(255,255,255,.97); box-shadow: 0 18px 50px rgba(0,0,0,.28); animation: sideIn .35s var(--ease); }
.vmap-card h4 { margin: 10px 0 0; font-size: 24px; font-weight: 300; letter-spacing: -.03em; }
.vmap-card h4 small { font-size: 13px; color: var(--ink-3); font-weight: 500; letter-spacing: 0; margin-left: 6px; }
.vmap-card > b { display: block; margin-top: 4px; font-size: 22px; font-weight: 600; letter-spacing: -.02em; }
.vmap-card dl { margin: 12px 0 14px; display: grid; grid-template-columns: 1fr 1fr; gap: 8px 14px; }
.vmap-card dt { font-size: 11.5px; color: var(--ink-3); }
.vmap-card dd { margin: 1px 0 0; font-size: 14px; font-weight: 600; }
.vmap-card__x { position: absolute; right: 12px; top: 10px; width: 30px; height: 30px; border-radius: 50%; font-size: 20px; line-height: 1; color: var(--ink-3); }
.vmap-card__x:hover { background: var(--paper); color: var(--ink); }
.vmap-card__cta { width: 100%; min-height: 46px; border-radius: 999px; background: var(--ink); color: #fff; font-weight: 500; transition: background .25s; }
.vmap-card__cta:hover { background: #2b2b2b; }

/* ---- панель справа: «О поселке | О домах» ---- */
.side .back { margin: 0 0 12px; }
.vtabs { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 0 0 22px; }
.vtabs button { min-height: 46px; border-radius: 999px; border: 1px solid var(--line); font-size: 14px; font-weight: 500; color: var(--ink); transition: background .25s, color .25s, border-color .25s; }
.vtabs button:hover { border-color: var(--ink); }
.vtabs button.is-on { background: var(--ink); border-color: var(--ink); color: #fff; }
.vpane[hidden] { display: none; }
.vpane { animation: sideIn .4s var(--ease); }
.vfilter__top { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 14px; }
.vfilter__top h3 { margin: 0; font-size: 26px; font-weight: 300; letter-spacing: -.035em; }
.vfilter__reset { font-size: 13px; color: var(--ink-3); text-decoration: underline; text-underline-offset: 3px; }
.vfilter__reset:hover { color: var(--ink); }
.fld { display: grid; gap: 5px; font-size: 12px; color: var(--ink-3); font-weight: 500; min-width: 0; }
.fld input, .fld select { width: 100%; min-width: 0; height: 42px; padding: 0 12px; border: 1px solid var(--line); border-radius: 12px; background: #fff; color: var(--ink); font: inherit; font-size: 14px; transition: border-color .2s; text-overflow: ellipsis; }
.fld input:focus, .fld select:focus { outline: none; border-color: var(--ink); }
.fpair { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 12px; }
.fchips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.fchips button { height: 36px; padding: 0 13px; border-radius: 999px; border: 1px solid var(--line); font-size: 13px; font-weight: 500; display: inline-flex; align-items: center; gap: 7px; transition: background .2s, color .2s, border-color .2s; }
.fchips button:hover { border-color: var(--ink); }
.fchips button[aria-pressed=true] { background: var(--ink); border-color: var(--ink); color: #fff; }
.fchips button:disabled { opacity: .38; cursor: not-allowed; border-color: var(--line); }
.fld option:disabled { color: #b5b5b5; }
.fchips b { font-weight: 600; opacity: .6; }
.fcount { margin: 16px 0 0; font-size: 14.5px; color: var(--ink-2); }
.fcount b { color: var(--ink); font-size: 18px; }
.fhint { margin: 8px 0 0; font-size: 12.5px; line-height: 1.45; color: var(--ink-3); }
@media (max-height: 800px) and (min-width: 901px) {
  .side { padding-top: 90px; padding-bottom: 18px; }
  .side .back { min-height: 40px; padding: 8px 18px; }
  .vtabs { margin-bottom: 14px; } .vtabs button { min-height: 40px; }
  .fld input, .fld select { height: 36px; } .fpair { margin-top: 8px; } .fchips { margin-top: 10px; }
  .vfilter__top { margin-bottom: 8px; } .vfilter__top h3 { font-size: 22px; }
  .fhint { display: none; } .fcount { margin-top: 10px; }
  .side h3.vname { font-size: 32px; } .side .facts { margin: 16px 0; } .side-thumbs { margin-top: 14px; }
}

/* ---- таблица домов ---- */
.vtable { background: #fff !important; padding-top: 56px; }
.vtable__head { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px 24px; flex-wrap: wrap; margin-bottom: 20px; }
.vtable__head h2 { margin: 0; }
.vtable__hint { margin: 0; display: inline-flex; align-items: center; gap: 10px; padding: 10px 18px; border-radius: 999px; background: var(--paper); font-size: 13.5px; font-weight: 500; color: var(--ink-2); }
.vtable__hint i { font-style: normal; font-size: 17px; animation: nudgeX 1.8s ease-in-out infinite; }
@keyframes nudgeX { 50% { transform: translateX(5px); } }
.vtable__scroll { max-height: min(46vh, 430px); overflow: auto; border: 1px solid var(--line); border-radius: var(--r-md); background: #fff; cursor: grab; scrollbar-width: thin; scrollbar-color: #222 #ececec; overscroll-behavior-x: contain; }
.vtable__scroll.is-drag { cursor: grabbing; user-select: none; -webkit-user-select: none; }
.vtable__scroll::-webkit-scrollbar { width: 12px; height: 12px; }
.vtable__scroll::-webkit-scrollbar-track { background: #ececec; border-radius: 999px; }
.vtable__scroll::-webkit-scrollbar-thumb { background: #222; border-radius: 999px; border: 3px solid #ececec; }
.vtable__scroll::-webkit-scrollbar-thumb:hover { background: #000; }
.vtable__scroll::-webkit-scrollbar-corner { background: transparent; }
.vt { border-collapse: separate; border-spacing: 0; width: 100%; min-width: 1180px; font-size: 14px; color: var(--ink); }
.vt th { position: sticky; top: 0; z-index: 2; background: #fff; text-align: left; padding: 13px 16px; font-size: 11.5px; letter-spacing: .07em; text-transform: uppercase; color: var(--ink-3); font-weight: 600; border-bottom: 1px solid var(--ink); white-space: nowrap; }
.vt td { padding: 11px 16px; border-bottom: 1px solid var(--line); white-space: nowrap; background: #fff; transition: background .2s; }
.vt th:first-child, .vt td:first-child { position: sticky; left: 0; }
.vt th:first-child { z-index: 3; }
.vt td:first-child { z-index: 1; box-shadow: 1px 0 0 var(--line); }
.vt tbody tr { cursor: pointer; }
.vt tbody tr:hover td { background: var(--paper); }
.vt tbody tr.is-sel td { background: #e9f7ef; }
.vt tbody tr:last-child td { border-bottom: 0; }
.vt__price { font-weight: 600; }
.vstat { display: inline-flex; align-items: center; gap: 7px; padding: 5px 12px; border-radius: 999px; background: var(--paper); font-size: 12.5px; font-weight: 600; }
.vt__go { padding: 7px 14px; border-radius: 999px; border: 1px solid var(--line); font-size: 12.5px; font-weight: 500; transition: background .2s, color .2s, border-color .2s; }
.vt__go:hover { background: var(--ink); color: #fff; border-color: var(--ink); }
.vtable__count { margin: 12px 0 0; min-height: 20px; color: var(--ink-3); font-size: 14px; }

/* ---- информация о посёлке ---- */
.gal figure { cursor: zoom-in; }
.gal figure::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,.5), transparent 55%); opacity: 0; transition: opacity .4s; pointer-events: none; }
.gal figure:hover::after, .gal figure:focus-visible::after { opacity: 1; }
.gal figcaption { z-index: 1; left: 16px; bottom: 16px; transform: translateY(10px); opacity: 0; transition: opacity .35s, transform .35s; }
.gal figure:hover figcaption, .gal figure:focus-visible figcaption { opacity: 1; transform: none; }
.infra div { position: relative; overflow: hidden; border: 1px solid transparent; transition: box-shadow .3s, transform .35s var(--ease), border-color .3s; }
.infra div:hover { transform: translateY(-5px); border-color: var(--ink); }
.infra div:hover em { transform: translateX(6px); }
.infra em { transition: transform .35s var(--ease); }
.route { grid-template-columns: minmax(0, .8fr) minmax(0, 1.4fr); align-items: stretch; }
.route__txt { align-self: center; }
.route__chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 18px 0 4px; }
.route__chips span { padding: 9px 15px; border-radius: 999px; background: #fff; font-size: 13.5px; font-weight: 500; border: 1px solid var(--line); }
.route__map { min-height: 420px; border-radius: var(--r-lg); overflow: hidden; background: var(--paper); position: relative; }
.route__map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.vlb { position: fixed; inset: 0; z-index: 400; display: grid; place-items: center; background: rgba(10,10,10,.9); cursor: zoom-out; animation: sideIn .25s ease; }
.vlb img { max-width: 92vw; max-height: 88vh; border-radius: 16px; box-shadow: 0 20px 80px rgba(0,0,0,.5); }
.vlb button { position: absolute; right: 22px; top: 18px; width: 44px; height: 44px; border-radius: 50%; background: #fff; font-size: 24px; line-height: 1; }
@media (hover: none) { .gal figcaption { opacity: 1; transform: none; } .gal figure::after { opacity: .7; } }

@media (max-width: 1180px) { .vmap-card { width: 280px; } }
@media (max-width: 900px) {
  /* значки: на телефоне — только иконка без подписи, крупнее */
  .point img { width: calc(var(--wm) * 1cqw); left: calc(var(--wm) * var(--tx) / -100 * 1cqw); transform-origin: calc(var(--wm) * var(--tx) / 100 * 1cqw) 100%; clip-path: inset(0 calc(100% - var(--hd) * 1%) 0 0); }
  .vmap-card { left: 10px; right: 10px; width: auto; bottom: 62px; padding: 16px; }
  .vmap-card dl { margin: 8px 0 10px; }
  .vmap-legend { left: 10px; right: 148px; bottom: 12px; } .vmap-legend span { padding: 6px 10px; font-size: 11.5px; }
  .vmap-zoom { right: 10px; bottom: 12px; flex-direction: row; } .vmap-zoom button { width: 38px; height: 38px; }
  .vmap-tip { display: none; }
  .map-area.opened { height: 100vw; min-height: 340px; }
  .vtabs { margin-top: 4px; }
  .vtable { padding-top: 40px; }
  .vtable__scroll { max-height: 62vh; }
  .vt { min-width: 1020px; }
  .route { grid-template-columns: 1fr; }
  .route__map { min-height: 320px; }
}

/* ПК: карта и правый блок начинаются под шапкой, правый блок целиком помещается в экран */
@media (min-width: 901px) {
  .map-area { height: calc(100vh - var(--hdr)); margin-top: var(--hdr); min-height: 520px; }
  .side { top: var(--hdr); height: calc(100vh - var(--hdr)); padding: clamp(12px, 2.4vh, 24px) 30px; }
  .side .back { min-height: clamp(36px, 5vh, 46px); padding-top: 6px; padding-bottom: 6px; margin-bottom: clamp(8px, 1.4vh, 12px); }
  .vtabs { margin-bottom: clamp(10px, 2vh, 20px); }
  .vtabs button { min-height: clamp(36px, 5vh, 46px); }
  .side h3.vname { font-size: clamp(28px, 4.2vh, 38px); margin-top: 6px; }
  .side .loc-line { margin-top: clamp(8px, 1.5vh, 14px); font-size: clamp(13.5px, 1.7vh, 16px); line-height: 1.5; }
  .side .desc--lead { margin-top: clamp(8px, 1.6vh, 16px); font-size: clamp(13.5px, 1.8vh, 16.5px); line-height: 1.5; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 7; overflow: hidden; }
  .side .facts { margin: clamp(10px, 2vh, 20px) 0; }
  .side .facts span { padding: clamp(7px, 1.25vh, 12px) 0; font-size: clamp(13.5px, 1.7vh, 15.5px); }
  .side-thumbs { margin: clamp(10px, 2vh, 18px) 0 0; }
  .side-thumbs img { aspect-ratio: 16 / 10; }
  .scroll-hint { margin-top: clamp(10px, 2vh, 18px); font-size: 13.5px; }
  .scroll-hint i { width: 30px; height: 30px; }
}
@media (min-width: 901px) and (max-height: 720px) {
  .side-thumbs { display: none; }
  .side .desc--lead { -webkit-line-clamp: 5; }
}

/* телефон: подписи посёлков видны сразу, при касании увеличиваются */
@media (max-width: 900px) {
  .point::after { content: attr(data-l); position: absolute; left: 0; top: 3px; transform: translateX(-50%); transform-origin: 50% 0; white-space: nowrap; padding: 2px 6px; border-radius: 7px; background: rgba(255,255,255,.92); color: #111; font: 600 9.5px/1.25 "Manrope", sans-serif; box-shadow: 0 1px 4px rgba(0,0,0,.16); pointer-events: none; transition: transform .25s var(--ease); }
  .point:hover::after, .point.is-hover::after, .point:active::after { transform: translateX(var(--lx, -50%)) scale(1.25); }
  .point::after { transform: translateX(var(--lx, -50%)); }
  .point[data-l="Алексино"]::after { top: auto; bottom: 46px; transform-origin: 50% 100%; }
  .point[data-l="Главный офис"] { --lx: -78%; }
}

/* ---------- карточка дома в правом блоке (на телефоне — шторка поверх карты) ---------- */
.vmap-tip { display: none !important; }
.vp.is-hov { fill: rgba(255,255,255,.5); stroke: #fff; stroke-width: 2.6; filter: drop-shadow(0 0 8px rgba(255,255,255,.85)); }
.side__view.has-plot .vtabs, .side__view.has-plot [data-pane] { display: none; }
.plotcard { margin-top: 4px; animation: sideIn .35s var(--ease); }
.plotcard[hidden] { display: none; }
.pc { position: relative; }
.pc__top { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 12px; }
.pc em { font-style: normal; padding: 4px 12px; border-radius: 999px; font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; background: #e4e6e8; color: #444; }
.pc em.s-sell { background: #2fcf8e; color: #04301c; }
.pc em.s-reservation { background: #f7cf26; color: #3b2f00; }
.pc em.s-sold { background: #e5484d; color: #fff; }
.pc__x { width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--line); font-size: 22px; line-height: 1; color: var(--ink-2); transition: background .25s, color .25s, border-color .25s, transform .3s var(--ease); }
.pc__x:hover { background: var(--ink); color: #fff; border-color: var(--ink); transform: rotate(90deg); }
.pc-gal { position: relative; margin: 0 0 16px; border-radius: 18px; overflow: hidden; background: var(--paper); }
.pc-gal__track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; overscroll-behavior-x: contain; }
.pc-gal__track::-webkit-scrollbar { display: none; }
.pc-gal__track img { flex: 0 0 100%; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; scroll-snap-align: start; cursor: zoom-in; }
.pc-gal__track img.is-plan { object-fit: contain; background: #fff; padding: 8px; }
.pc-gal__nav { position: absolute; top: 50%; width: 38px; height: 38px; margin-top: -19px; border-radius: 50%; background: rgba(255,255,255,.92); box-shadow: 0 4px 14px rgba(0,0,0,.18); font-size: 24px; line-height: 1; padding-bottom: 3px; color: var(--ink); transition: background .25s, color .25s; }
.pc-gal__nav:hover { background: var(--ink); color: #fff; }
.pc-gal__nav--p { left: 10px; } .pc-gal__nav--n { right: 10px; }
.pc-gal__dots { position: absolute; left: 0; right: 0; bottom: 10px; display: flex; justify-content: center; gap: 6px; pointer-events: none; }
.pc-gal__dots i { width: 7px; height: 7px; border-radius: 50%; background: rgba(255,255,255,.6); box-shadow: 0 0 0 1px rgba(0,0,0,.12); transition: width .3s var(--ease), background .3s; }
.pc-gal__dots i.on { width: 20px; border-radius: 999px; background: #fff; }
.pc-gal__badge { position: absolute; left: 10px; top: 10px; padding: 5px 12px; border-radius: 999px; background: rgba(17,17,17,.78); color: #fff; font-size: 12px; font-weight: 500; backdrop-filter: blur(6px); }
.pc-gal--stub .pc-gal__track img { cursor: default; }
.pc-gal--stub .pc-gal__badge { left: auto; right: 10px; top: auto; bottom: 10px; padding: 3px 9px; background: rgba(17,17,17,.42); font-size: 11px; font-weight: 400; opacity: .9; }
.pc h4 { margin: 0; font-size: 28px; font-weight: 300; letter-spacing: -.03em; }
.pc h4 small { font-size: 13px; color: var(--ink-3); font-weight: 500; letter-spacing: 0; margin-left: 6px; }
.pc__price { display: block; margin-top: 4px; font-size: 24px; font-weight: 600; letter-spacing: -.02em; }
.pc dl { margin: 14px 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px 16px; }
.pc dt { font-size: 12px; color: var(--ink-3); }
.pc dd { margin: 2px 0 0; font-size: 15px; font-weight: 600; }
.pc__note { margin: 0 0 16px; padding: 12px 14px; border-radius: 14px; background: var(--paper); font-size: 13px; line-height: 1.5; color: var(--ink-2); }
.pc__note a { color: var(--ink); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; white-space: nowrap; }
.pc__cta { width: 100%; min-height: 50px; border-radius: 999px; background: var(--ink); color: #fff; font-weight: 500; transition: background .25s, transform .25s; }
.pc__cta:hover { background: #2b2b2b; transform: translateY(-1px); }
/* на ПК карточка живёт справа, плавающая — только для телефона */
@media (min-width: 901px) { .vmap-card { display: none !important; } }
@media (max-width: 900px) {
  .plotcard { display: none !important; }
  .vmap-card { left: 12px; right: 12px; bottom: 12px; width: auto; max-height: 72%; overflow-y: auto; padding: 14px 14px 16px; border-radius: 20px; overscroll-behavior: contain; }
  .vmap-card .pc-gal { margin-bottom: 12px; }
  .vmap-card .pc-gal__track img { aspect-ratio: 16 / 10; }
  .vmap-card .pc h4 { font-size: 24px; }
  .vmap-card .pc dl { gap: 8px 12px; margin: 10px 0; }
}

/* ---------- таблица домов: кнопка «Раскрыть» и подсказка внизу ---------- */
.vtable__scroll { cursor: auto; transition: max-height .6s var(--ease); }
.vtable__scroll.is-open { max-height: none; }
.vtable__expand { display: inline-flex; align-items: center; gap: 10px; height: 48px; padding: 0 24px; border-radius: 999px; border: 1px solid var(--ink); background: #fff; color: var(--ink); font-size: 14.5px; font-weight: 500; transition: background .25s, color .25s; }
.vtable__expand:hover { background: var(--ink); color: #fff; }
.vtable__expand svg { transition: transform .4s var(--ease); }
.vtable__expand.is-on svg { transform: rotate(180deg); }
@media (max-width: 900px) { .vtable__expand { width: 100%; justify-content: center; } }

/* подсказка в правом блоке — кнопка; у футера «Обратно к карте» со стрелкой вверх */
.scroll-hint { width: 100%; padding: 0; text-align: left; background: none; cursor: pointer; }
.scroll-hint i svg { transition: transform .45s var(--ease); }
.scroll-hint.is-top i svg { transform: rotate(-90deg); }
.scroll-hint.is-top span { color: var(--ink); font-weight: 600; }
.scroll-hint.is-top i { animation: none; background: var(--ink); color: #fff; }

/* большая надпись ТОПДОМ в футере посёлка: считаем от ширины футера (без правой панели), чтобы не обрезалась по бокам */
@media (min-width: 901px) {
  .vpage .footer__mark { height: calc((100vw - var(--side-w)) * .098); }
  .vpage .footer__mark span { font-size: calc((100vw - var(--side-w)) * .2); }
}
.vtable { padding-bottom: 36px; }
.plotcard .pc-gal__track img { aspect-ratio: 16 / 10; }

/* окна у значков без посёлка (Павловы озёра, офис, выставка) */
.point--st { cursor: pointer; }
.stop { position: absolute; z-index: 20; width: 300px; transform: translate(-50%, 8px); opacity: 0; transition: opacity .22s, transform .22s; border-radius: 18px; background: #fff; color: #111; box-shadow: 0 18px 50px rgba(0,0,0,.32); }
.stop.is-on { opacity: 1; transform: translate(-50%, 0); }
.stop::after { content: ""; position: absolute; left: var(--ax, 50%); bottom: -7px; width: 16px; height: 16px; margin-left: -8px; background: #fff; transform: rotate(45deg); border-radius: 3px; }
.stop.is-below::after { bottom: auto; top: -7px; }
.stop.is-side::after { display: none; }
.stop__x { position: absolute; top: 8px; right: 8px; z-index: 2; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: rgba(255,255,255,.92); color: #111; font-size: 22px; line-height: 1; box-shadow: 0 2px 10px rgba(0,0,0,.2); }
.stop__img { position: relative; aspect-ratio: 16 / 9; overflow: hidden; border-radius: 18px 18px 0 0; background: #e6e8ea; }
.stop__img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.stop__tag { position: absolute; left: 10px; bottom: 10px; padding: 5px 11px; border-radius: 999px; background: rgba(255,255,255,.94); font-size: 11.5px; font-weight: 700; letter-spacing: .03em; }
.stop__b { position: relative; display: grid; gap: 9px; padding: 15px 17px 17px; }
.stop__b h3 { margin: 0; font-size: 18px; line-height: 1.2; }
.stop__b p { margin: 0; font-size: 13.5px; line-height: 1.45; color: #4a4f55; }
.stop__b ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.stop__b li { display: flex; justify-content: space-between; gap: 10px; font-size: 13px; padding: 5px 0; border-bottom: 1px solid #eceef0; }
.stop__b li span { color: #6a7077; }
.stop__b li a { color: inherit; }
.stop__act { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; margin-top: 3px; }
.stop__a { font-size: 13px; font-weight: 600; color: #111; text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 900px) {
  .stop { position: fixed; left: 12px !important; right: 12px; top: auto !important; bottom: 12px; width: auto; max-height: calc(100dvh - 90px); overflow: auto; transform: translateY(14px); z-index: 150; }
  .stop.is-on { transform: none; }
  .stop::after { display: none; }
  .stop__img { aspect-ratio: 16 / 8; }
}

/* хлебные крошки над заголовком панели */
.kicker--crumbs ol { display: flex; flex-wrap: wrap; align-items: center; margin: 0; padding: 0; list-style: none; }
.kicker--crumbs li:not(:last-child)::after { content: "/"; margin: 0 8px; opacity: .5; }
.kicker--crumbs a { color: var(--ink-2); transition: color .25s; }
.kicker--crumbs a:hover { color: var(--ink); }

/* места активностей на карте посёлка (КПП, клубный дом, площадки) */
.vpoi-layer { position: absolute; inset: 0; z-index: 6; pointer-events: none; overflow: hidden; }
.vpoi { position: absolute; width: 42px; height: 42px; margin: -21px 0 0 -21px; display: grid; place-items: center; pointer-events: auto; cursor: pointer; filter: drop-shadow(0 2px 6px rgba(0,0,0,.45)); transition: transform .25s var(--ease); }
.vpoi[hidden] { display: none; }
.vpoi svg { width: 100%; height: 100%; display: block; overflow: visible; }
.vpoi__c { fill: #fff; transition: fill .25s; }
.vpoi:hover, .vpoi:focus-visible, .vpoi.is-sel { transform: scale(1.18); }
.vpoi:hover .vpoi__c, .vpoi:focus-visible .vpoi__c, .vpoi.is-sel .vpoi__c { fill: #5df0b0; }
.vpoi::after { content: attr(data-t); position: absolute; left: 50%; bottom: calc(100% + 8px); transform: translateX(-50%); white-space: nowrap; padding: 5px 11px; border-radius: 999px; background: rgba(17,17,17,.92); color: #fff; font-size: 12px; font-weight: 500; line-height: 1.2; opacity: 0; pointer-events: none; transition: opacity .2s; }
.vpoi:hover::after, .vpoi:focus-visible::after, .vpoi.is-sel::after { opacity: 1; }
.pc em.pc__tag { background: #111; color: #fff; }
.pc-ph--poi { aspect-ratio: 16 / 9; }
.pc-ph--poi svg { width: 44px; height: 44px; }
.pc--poi .pc__note { margin-top: 12px; }
@media (max-width: 700px) { .vpoi { width: 48px; height: 48px; margin: -24px 0 0 -24px; } }

/* окно у значка (Павловы озёра и др.): широкая кнопка */
.stop__act { display: grid; gap: 12px; justify-items: center; margin-top: 4px; }
.stop__cta { width: 100%; min-height: 48px; padding: 0 20px; border-radius: 999px; background: #111; color: #fff; font-size: 15px; font-weight: 500; text-align: center; white-space: nowrap; transition: background .25s, transform .25s; }
.stop__cta:hover { background: #2b2b2b; transform: translateY(-1px); }
/* картинка-пример вместо реального фото дома */
.pc-gal__fake { position: absolute; left: 0; right: 0; bottom: 0; padding: 22px 12px 9px; text-align: center; font-size: 12px; font-weight: 500; color: #fff; background: linear-gradient(transparent, rgba(0,0,0,.72)); pointer-events: none; }

.pc__hint { margin: 10px 0 0; font-size: 12.5px; line-height: 1.35; color: #8c8c86; text-align: center; }

/* телефон: таблица «Дома и участки» — карточками вместо горизонтальной прокрутки */
@media (max-width: 700px) {
  .vtable__scroll { overflow-x: hidden; }
  .vt { min-width: 0; display: block; }
  .vt thead { display: none; }
  .vt tbody { display: block; }
  .vt tbody tr { display: grid; grid-template-columns: 1fr 1fr; grid-template-areas: "n s" "t t" "a q" "r f" "c c" "p g"; gap: 8px 14px; padding: 14px 16px; border-bottom: 1px solid var(--line); background: #fff; transition: background .2s; }
  .vt tbody tr:last-child { border-bottom: 0; }
  .vt tbody tr.is-sel { background: #e9f7ef; }
  .vt tbody tr:hover { background: #fff; }
  .vt tbody tr.is-sel:hover { background: #e9f7ef; }
  .vt td, .vt td:first-child { position: static; display: block; min-width: 0; padding: 0; border: 0; box-shadow: none; background: transparent !important; white-space: normal; z-index: auto; font-size: 14px; }
  .vt td:nth-child(1) { grid-area: n; font-size: 17px; align-self: center; }
  .vt td:nth-child(2) { grid-area: t; color: var(--ink-2); margin-top: -2px; }
  .vt td:nth-child(3) { grid-area: s; justify-self: end; }
  .vt td:nth-child(4) { grid-area: a; }
  .vt td:nth-child(5) { grid-area: q; }
  .vt td:nth-child(6) { grid-area: r; }
  .vt td:nth-child(7) { grid-area: f; }
  .vt td:nth-child(8) { grid-area: c; }
  .vt td:nth-child(9) { grid-area: p; align-self: center; font-size: 17px; }
  .vt td:nth-child(10) { grid-area: g; justify-self: end; }
  .vt td:nth-child(4)::before, .vt td:nth-child(5)::before, .vt td:nth-child(6)::before, .vt td:nth-child(7)::before, .vt td:nth-child(8)::before { display: block; margin-bottom: 1px; font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); font-weight: 600; }
  .vt td:nth-child(4)::before { content: "Участок"; }
  .vt td:nth-child(5)::before { content: "Дом"; }
  .vt td:nth-child(6)::before { content: "Спален"; }
  .vt td:nth-child(7)::before { content: "Этажей"; }
  .vt td:nth-child(8)::before { content: "Комплектация"; }
}

/* ---------- бегущая строка внизу первого экрана посёлка (ПК): белая, поверх всего, не липкая, кликабельна ---------- */
.vstrip { display: none; }
@media (min-width: 901px) {
  .vstrip { display: block; position: absolute; left: 0; right: 0; top: calc(100vh - 40px); height: 40px; z-index: 130; overflow: hidden; background: #fff; color: var(--ink); border-top: 1px solid rgba(0, 0, 0, .08); cursor: pointer; padding: 0; text-align: left; }
  .vstrip[hidden] { display: none; }
  .vstrip__track { display: flex; width: max-content; height: 100%; align-items: center; animation: vstripRun 38s linear infinite; }
  .vstrip:hover .vstrip__track { animation-play-state: paused; }
  .vstrip__g { display: flex; flex: none; }
  .vstrip__i { display: inline-flex; align-items: center; gap: 10px; flex: none; padding: 0 28px; font-size: 13px; font-weight: 500; letter-spacing: .01em; white-space: nowrap; }
  .vstrip__i svg { flex: none; animation: bobY 2s ease-in-out infinite; }
  @keyframes vstripRun { to { transform: translateX(-50%); } }
  /* кнопки и карточка на карте — выше полосы */
  .vmap-zoom, .vmap-legend { bottom: 66px; }
  .vmap-card { bottom: 116px; }
}
@media (prefers-reduced-motion: reduce) { .vstrip__track, .vstrip__i svg { animation: none; } }

/* карточка дома справа: компактнее ~10%, одинаковая раскладка у всех статусов; у не «в продаже» — серая */
.pc dd.is-na { color: #b4b7ba; font-weight: 500; }
.pc--off .pc__price, .pc--off dd { color: #8d9298; }
.pc--off dd.is-na { color: #b4b7ba; }
.pc__note { min-height: 4.6em; }
.pc__note.is-empty { color: #8d9298; }
@media (min-width: 901px) {
  .plotcard .pc__top { margin-bottom: 9px; }
  .plotcard .pc__x { width: 34px; height: 34px; font-size: 20px; }
  .plotcard .pc-gal, .plotcard .pc-ph { margin-bottom: 11px; border-radius: 16px; }
  .plotcard .pc-gal__track img { aspect-ratio: 16 / 9; }
  .plotcard .pc-ph { aspect-ratio: 16 / 9; }
  .plotcard .pc h4 { font-size: 25px; }
  .plotcard .pc__price { font-size: 21px; margin-top: 2px; }
  .plotcard .pc dl { margin: 10px 0; gap: 7px 14px; }
  .plotcard .pc dd { font-size: 14px; }
  .plotcard .pc__note { margin-bottom: 12px; padding: 9px 12px; font-size: 12.5px; line-height: 1.45; min-height: 76px; box-sizing: border-box; }
  .plotcard .pc__cta { min-height: 46px; }
}
.pc dl > div { min-width: 0; } .pc dl > div:last-child:nth-child(odd) { grid-column: 1 / -1; }
.pc dd { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }


/* ПК: карта и правый блок — одна «сцена»: стоит на месте, блок ниже наезжает на неё на всю ширину экрана */
@media (min-width: 901px) {
  .vhero { position: sticky; top: 0; z-index: 1; display: flow-root; }
  .vhero .side { position: absolute; }
  .village-details { margin-right: 0; border-radius: 28px 28px 0 0; overflow: clip; box-shadow: 0 -24px 60px rgba(0, 0, 0, .18); }
  .vpage .footer { margin-right: 0; position: relative; z-index: 5; }
  .vpage .footer__mark { height: calc(100vw * .098); }
  .vpage .footer__mark span { font-size: calc(100vw * .2); }
  @supports (animation-timeline: view()) {
    main { timeline-scope: --vcover; }
    .village-details { view-timeline: --vcover block; }
    .vhero::after { content: ""; position: absolute; inset: 0; z-index: 200; background: #000; opacity: 0; pointer-events: none; animation: vcoverDim linear both; animation-timeline: --vcover; animation-range: entry 0% entry 100%; }
    @keyframes vcoverDim { to { opacity: .4; } }
  }
}

/* кнопка карточки справа — всегда в одном месте внизу панели, не «прыгает» от разной высоты содержимого */
/* панель — колонка, карточка тянется до низа, кнопка прижата margin-top:auto (без position:fixed — он ломался анимацией) */
@media (min-width: 901px) {
  .side:has(> .side__view.has-plot:not([hidden])) { display: flex; flex-direction: column; padding-bottom: 64px; }
  .side > .side__view.has-plot:not([hidden]) { flex: 1 0 auto; display: flex; flex-direction: column; }
  .side__view.has-plot > .plotcard:not([hidden]) { flex: 1 0 auto; display: flex; flex-direction: column; }
  .plotcard > .pc { flex: 1 0 auto; display: flex; flex-direction: column; }
  .plotcard .pc__cta { margin-top: auto; flex: none; }
  .plotcard .pc__hint { height: 17px; margin-top: 10px; white-space: nowrap; }
  .plotcard .pc__cta:last-child { margin-bottom: 27px; }
}


/* ---- мини-презентация посёлка: «Дома в продаже» и «История посёлка» ---- */
.vsale__head { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; }
.vnav { display: flex; gap: 8px; margin-bottom: 30px; flex: none; }
.vnav__b { width: 46px; height: 46px; border-radius: 50%; border: 1px solid var(--line); background: #fff; color: var(--ink); display: grid; place-items: center; cursor: pointer; transition: border-color .25s, background .25s; }
.vnav__b:hover { border-color: var(--ink); }
.vsale__track { display: flex; gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 4px; outline: 0; }
.vsale__track::-webkit-scrollbar { display: none; }
.hs { flex: 0 0 300px; scroll-snap-align: start; border-radius: var(--r-md); background: #fff; border: 1px solid var(--line); overflow: hidden; cursor: pointer; transition: border-color .25s, transform .35s; }
.hs:hover, .hs:focus-visible { border-color: var(--ink); transform: translateY(-3px); }
.hs__ph { position: relative; height: 200px; background: var(--paper); }
.hs__ph img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hs__ph span { position: absolute; left: 10px; bottom: 10px; padding: 4px 10px; border-radius: 999px; background: rgba(0,0,0,.55); color: #fff; font-size: 12px; }
.hs__b { padding: 16px 18px 18px; }
.hs__b h3 { margin: 0; font-size: 20px; font-weight: 500; letter-spacing: -.02em; }
.hs__b h3 small { font-size: 13px; color: var(--ink-3); font-weight: 400; margin-left: 6px; letter-spacing: 0; }
.hs__b p { margin: 6px 0 12px; font-size: 14px; color: var(--ink-3); min-height: 21px; }
.hs__b b { display: block; font-size: 19px; font-weight: 600; }
.hs__b em { display: block; margin-top: 10px; font-style: normal; font-size: 13px; color: var(--ink-3); }
.hs:hover .hs__b em { color: var(--ink); }
.vdeck__track { overflow: hidden; border-radius: var(--r-md); outline: 0; touch-action: pan-y; user-select: none; }
.vdeck__rail { display: flex; transition: transform .55s cubic-bezier(.2,.7,.2,1); }
.vdeck__sl { flex: 0 0 100%; display: grid; grid-template-columns: 1.15fr 1fr; min-height: 440px; background: #fff; }
.vdeck__img { position: relative; background: var(--paper) center/cover no-repeat; }
.vdeck__img i { position: absolute; left: 22px; bottom: 18px; font-style: normal; color: #fff; font-size: 64px; font-weight: 200; letter-spacing: -.04em; line-height: 1; text-shadow: 0 2px 18px rgba(0,0,0,.35); }
.vdeck__img i small { font-size: .35em; font-weight: 500; margin-left: 4px; letter-spacing: 0; }
.vdeck__txt { padding: 44px 44px 36px; display: flex; flex-direction: column; justify-content: center; }
.vdeck__txt h3 { margin: 0 0 14px; font-size: clamp(24px, 2.4vw, 36px); line-height: 1.1; font-weight: 300; letter-spacing: -.03em; }
.vdeck__txt p { margin: 0; }
.vdeck__dots { display: flex; gap: 6px; margin-top: 16px; }
.vdeck__dots button { flex: 1; border: 0; background: none; padding: 10px 0 0; border-top: 2px solid var(--line); color: var(--ink-3); font-size: 13px; text-align: left; cursor: pointer; transition: border-color .3s, color .3s; }
.vdeck__dots button.is-on { border-color: var(--ink); color: var(--ink); }
@media (max-width: 900px) {
  .vnav { display: none; }
  .vsale__track { margin: 0 calc(var(--gutter) * -1); padding: 0 var(--gutter) 4px; scroll-padding: 0 var(--gutter); }
  .hs { flex-basis: 78%; }
  .hs__ph { height: 180px; }
  .vdeck__sl { grid-template-columns: 1fr; min-height: 0; }
  .vdeck__img { height: 220px; }
  .vdeck__img i { font-size: 44px; }
  .vdeck__txt { padding: 22px 20px 24px; justify-content: flex-start; }
  .vdeck__dots button span { display: none; }
  .vdeck__dots button { padding-top: 0; border-top-width: 3px; }
}
.vdeck__txt p { font-size: 17px; }

/* ---- 09.11: схемы прозрачнее, бронь жёлтая, «вид без схем», ленты «Продано» ---- */
.vp.s-reservation { fill: rgba(255,222,40,.34); stroke: #fff4a0; }
.vp { opacity: .85; }                                   /* все схемы на 15% прозрачнее */
.vp.s-sold, .vp.s-reservation { opacity: .6; }          /* проданные и бронь — ещё на 30% */
.vp:hover, .vp.is-hov, .vp.is-sel { opacity: 1; }
.vp.is-off { opacity: .1; }
.vshapes, .vnums, .vpoi-layer { transition: opacity .3s; }
.vmap.is-clean .vshapes, .vmap.is-clean .vnums, .vmap.is-clean .vpoi-layer, #villageMap.is-clean .vshapes, #villageMap.is-clean .vnums, #villageMap.is-clean .vpoi-layer { opacity: 0; pointer-events: none; }
.vmap.is-clean .vpoi, #villageMap.is-clean .vpoi { pointer-events: none; }
.vmap-clean { position: absolute; left: 22px; top: 22px; display: inline-flex; align-items: center; gap: 8px; padding: 9px 16px; border: 0; border-radius: 999px; background: rgba(255,255,255,.93); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); color: var(--ink); font: inherit; font-size: 13px; font-weight: 500; cursor: pointer; box-shadow: 0 4px 14px rgba(0,0,0,.12); transition: background .25s, color .25s; }
.vmap-clean:hover { background: #fff; }
.vmap-clean.is-on { background: var(--ink); color: #fff; }
@media (max-width: 700px) { .vmap-clean { left: 12px; top: 50px; padding: 7px 12px; font-size: 11.5px; } }
.pc-sold { position: absolute; inset: 0; z-index: 2; pointer-events: none; overflow: hidden; }
.pc-sold span { position: absolute; left: 50%; top: 50%; width: 200%; padding: 6px 0; background: #e02424; color: #fff; font-size: 13px; font-weight: 700; letter-spacing: .14em; white-space: nowrap; text-align: center; box-shadow: 0 3px 12px rgba(0,0,0,.3); transform: translate(-50%, -50%) rotate(-24deg); }
.pc-sold span + span { transform: translate(-50%, -50%) rotate(24deg); }
.pc-gal--sold .pc-gal__nav, .pc-gal--sold .pc-gal__badge { z-index: 3; }
.pc-gal__soon { position: absolute; left: 0; right: 0; bottom: 0; padding: 22px 12px 10px; background: linear-gradient(transparent, rgba(0,0,0,.62)); color: #fff; font-size: 13px; font-weight: 500; letter-spacing: .02em; text-align: center; pointer-events: none; }

/* клик по дому (ПК): правая панель шире на 30% и наезжает на карту с тенью, карта стоит, правые кнопки карты сдвигаются; крестик или клик мимо — обратно */
@media (min-width: 901px) {
  .vhero .side { transition: width .4s var(--ease), box-shadow .4s var(--ease); }
  .vhero.is-wide .side { width: calc(var(--side-w) * 1.3); box-shadow: -16px 0 40px rgba(0, 0, 0, .16); }
  .vhero.is-wide #plotCard { zoom: 1.12; }
  .vmap-zoom, .vmap-hud > .vmap-note { transition: right .4s var(--ease); }
  .vhero.is-wide .vmap-zoom, .vhero.is-wide .vmap-hud > .vmap-note { right: calc(22px + var(--side-w) * .3); }
}

/* выбранный кликом дом: подложка остаётся цветом статуса (не белеет), меняются только обводка, номер и блик vpSel */
.vp.is-sel, .vp.is-sel.is-hov, .vp.is-sel:hover { fill: rgba(255,255,255,.12); }
.vp.is-sel.s-sell, .vp.is-sel.s-sell.is-hov, .vp.is-sel.s-sell:hover { fill: rgba(70,222,150,.30); }
.vp.is-sel.s-reservation, .vp.is-sel.s-reservation.is-hov, .vp.is-sel.s-reservation:hover { fill: rgba(255,222,40,.34); }
.vp.is-sel.s-sold, .vp.is-sel.s-sold.is-hov, .vp.is-sel.s-sold:hover { fill: rgba(235,64,64,.32); }
.vp.is-sel.s-unknown, .vp.is-sel.s-unknown.is-hov, .vp.is-sel.s-unknown:hover { fill: rgba(190,180,240,.22); }
.vp.is-sel.s-sell.t-land, .vp.is-sel.s-sell.t-land.is-hov, .vp.is-sel.s-sell.t-land:hover { fill: rgba(255,255,255,.42); }

/* крестик карточки: сразу тёмно-серый, при наведении — белый */
.pc__x { background: #3a3a3a; color: #fff; border-color: #3a3a3a; }
.pc__x:hover { background: #fff; color: var(--ink); border-color: var(--line); }
