/* 26 MAISI — меню подбора v2: продолжение главной (v7/v8).
   Палитра, шрифты, капслок-подписи и тонкие линии сняты с css/v7.css + css/v8.css.
   Подключается вместо app.css (tokens.css остаётся — в нём только переменные, на них
   держатся полигоны планов). Правила полигонов планов перенесены из app.css без изменений:
   картинки и SVG планировок не перекрашиваются. */

/* ---------- переменные главной (v7.css :root) ---------- */
:root {
  --white: #ffffff;
  --stone: #f0eeea;
  --taupe: #7c7262;
  --taupe-d: #5e5648;
  --taupe-l: rgba(124, 114, 98, .38);
  --night: #0e1720;
  --serif: "Noto Serif Display", "Noto Serif Georgian", "Noto Serif Hebrew", "Noto Naskh Arabic", Georgia, serif;
  --sans: "Inter", "Noto Sans Georgian", "Noto Sans Hebrew", "Noto Sans Arabic", system-ui, sans-serif;
  --gut: clamp(16px, 2.2vw, 32px);
  --ease: cubic-bezier(.2, .7, .1, 1);
  /* линии главной: .types__spec .18, .dist/.foot .2, .num .25 */
  --line: rgba(124, 114, 98, .18);
  --line-2: rgba(124, 114, 98, .25);
  /* капслок-подпись главной; для ka/he/ar — без капса и разрядки, кегль +1 (как :lang() в v7) */
  --caps-fs: 12px; --caps-ls: .05em; --caps-tt: uppercase;
  /* статусы в шахматке и индикаторах — тона той же палитры */
  --pv-av: var(--stone);
  --pv-rs: var(--taupe-l);
  --pv-sd: var(--taupe);
  --pv-bar-h: 64px;
  --pv-rail-w: 400px;
  --pv-sec-w: 150px;
  --pv-cell-w: 54px;
  --pv-cell-h: 32px;
  --pv-pitch: 42px;
}
:root:lang(ka), :root:lang(he), :root:lang(ar) { --caps-fs: 13px; --caps-ls: 0; --caps-tt: none; }

/* переменные слоя app из app.css — на них держатся полигоны планов и фасада (не меняем) */
[data-theme="app"] {
  --brand: #162C25;
  --polygon-hover: #FFFFFF;
  --polygon-static: var(--brand);
  --chess-size: 1;
  --status-available: #7C8A3A;
  --status-reserved: #E1734A;
  --status-sold: #8F2F2C;
  --status-available-aa: #6A7532;
  --status-reserved-aa: #C85F39;
}
[data-status="available"] { --st: var(--status-available); --pvst: var(--pv-av); }
[data-status="reserved"] { --st: var(--status-reserved); --pvst: var(--pv-rs); }
[data-status="sold"] { --st: var(--status-sold); --pvst: var(--pv-sd); }

/* ---------- база ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { height: 100%; -webkit-text-size-adjust: 100%; }
body { margin: 0; height: 100%; background: var(--white); color: var(--taupe); font: 400 14px/1.5 var(--sans); -webkit-font-smoothing: antialiased; overflow: hidden; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
input, select, textarea { font: inherit; color: inherit; }
img { display: block; }
h1, h2 { font-weight: 300; }
.icon { width: 20px; height: 20px; flex: none; color: inherit; }
:focus-visible { outline: 1px solid var(--taupe); outline-offset: 2px; }
[hidden] { display: none !important; }
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--taupe-l); }
* { scrollbar-width: thin; scrollbar-color: var(--taupe-l) transparent; }

/* капслок-подпись (главная: .cap, .types__spec dt, .types__tab) */
.seg, .pv-langs button, .k, .pv-k, .field__btn, .menu__all, .btn-text, .btn-apply, .btn-more, .counter,
.badge, .meta, .load-more, .legend__i, .crumbs__nav, .act, .tab, .tile__cap, .dp__sub, .dp__sqm, .dp__row > span:first-child,
.cta, .mfield > span:first-child, .upop__status, .upop__cta, .cookie__ok, .tabbar__i, .ssec__legend, .sheet__cta,
.frame-label, .range__inputs label, .toast, .pv-floor__row .t, .pv-floor__row .s, .chess__head, .fav-head .btn-text {
  font-family: var(--sans); font-weight: 500; font-size: var(--caps-fs); line-height: 1.2; letter-spacing: var(--caps-ls); text-transform: var(--caps-tt);
}

/* ---------- шапка: как .bar главной в состоянии is-solid ---------- */
.pv-bar { position: relative; z-index: 12; height: var(--pv-bar-h); display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 0 var(--gut); background: var(--white); border-bottom: 1px solid var(--line); }
.pv-mark { font: 400 22px/1 var(--serif); letter-spacing: .02em; color: var(--taupe); white-space: nowrap; direction: ltr; }
.pv-bar__end { display: flex; align-items: center; gap: 12px; }
.pv-langs { display: flex; gap: 16px; margin-inline-end: 12px; }
.pv-langs button { letter-spacing: .06em; opacity: .45; transition: opacity .25s; text-transform: uppercase; font-size: 12px; }
.pv-langs button:hover, .pv-langs button.is-on { opacity: 1; }
.ibtn { position: relative; width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--taupe-l); color: var(--taupe); transition: background .3s, color .3s, border-color .3s; }
.ibtn:hover { background: var(--taupe); border-color: var(--taupe); color: var(--white); }
.ibtn .icon { width: 18px; height: 18px; }
.ibtn .icon:not(.icon-fill) { stroke-width: 1.3; }
.ibtn .badge-count { position: absolute; top: -8px; inset-inline-end: -8px; min-width: 18px; height: 18px; padding: 0 4px; background: var(--taupe); color: var(--white); font: 500 10px/18px var(--sans); text-align: center; }
.ibtn.is-active { color: var(--taupe-d); }
.pv-call { width: auto; gap: 12px; padding: 0 14px; font: 400 13px/1 var(--sans); letter-spacing: .03em; white-space: nowrap; }

/* переключатель видов: как вкладки «Планировок» на главной (.types__tab) */
.segmented { position: absolute; left: 50%; top: 0; height: 100%; transform: translateX(-50%); display: flex; }
.seg { height: 100%; padding: 0 20px; display: flex; align-items: center; color: var(--taupe); opacity: .55; border-bottom: 1px solid transparent; margin-bottom: -1px; white-space: nowrap; transition: opacity .25s, border-color .25s; }
.seg .icon { display: none; }
.seg:hover { opacity: .85; }
.seg.is-active { opacity: 1; border-bottom-color: var(--taupe); }

/* ---------- каркас ---------- */
.app { display: flex; flex-direction: row; height: calc(100vh - var(--pv-bar-h)); height: calc(100dvh - var(--pv-bar-h)); position: relative; }
.rail { width: var(--pv-rail-w); flex: none; height: 100%; overflow: auto; padding: 4px var(--gut) 48px; background: var(--white); border-inline-end: 1px solid var(--line); position: relative; z-index: 10; transition: transform .5s var(--ease), margin .5s var(--ease); }
.app.is-collapsed .rail { transform: translateX(-100%); margin-inline-end: calc(-1 * var(--pv-rail-w)); }
[dir="rtl"] .app.is-collapsed .rail { transform: translateX(100%); }
.rail__head { display: none; }
/* язычок колонки — как кнопка-стрелка главной (.hero__go svg): тонкая рамка, тонкая стрелка, заливка таупом при наведении */
.rail-handle { position: absolute; inset-inline-start: var(--pv-rail-w); top: 50%; transform: translateY(-50%); width: 24px; height: 48px; background: var(--white); border: 1px solid var(--taupe-l); border-inline-start: 0; z-index: 11; display: flex; align-items: center; justify-content: center; color: var(--taupe); transition: inset-inline-start .5s var(--ease), background .3s, color .3s, border-color .3s; }
.rail-handle:hover { background: var(--taupe); border-color: var(--taupe); color: var(--white); }
.rail-handle svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.3; }
.app.is-collapsed .rail-handle { border-inline-start: 1px solid var(--taupe-l); }
.app.is-collapsed .rail-handle { inset-inline-start: 0; }
.app.is-collapsed .rail-handle svg, [dir="rtl"] .rail-handle svg { transform: scaleX(-1); }
[dir="rtl"] .app.is-collapsed .rail-handle svg { transform: none; }
.scene { flex: 1; min-width: 0; position: relative; overflow: hidden; display: flex; flex-direction: column; background: var(--white); }
.app-logo { display: inline-flex; gap: .28em; font: 400 22px/1 var(--serif); letter-spacing: .02em; color: var(--taupe); white-space: nowrap; direction: ltr; }

/* ---------- фильтры: строки спецификации (.types__spec) ---------- */
.filters { display: flex; flex-direction: column; }
.field { position: relative; }
.field__btn { width: 100%; min-height: 56px; display: flex; align-items: center; gap: 16px; padding: 0; padding-inline-end: 28px; border-bottom: 1px solid var(--line); text-align: start; color: var(--taupe); position: relative; transition: border-color .25s; }
.field__btn:hover { border-bottom-color: var(--taupe-l); }
.field.is-open .field__btn { border-bottom-color: var(--taupe); }
.field__btn .val { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pv-k { flex: none; max-width: 48%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.field.is-filled .field__btn .val { font: 300 20px/1.2 var(--serif); letter-spacing: -.01em; text-transform: none; text-align: end; color: var(--taupe-d); }
.field__btn .caret { position: absolute; inset-inline-end: 0; top: 50%; transform: translateY(-50%); width: 16px; height: 16px; display: flex; opacity: .7; transition: transform .25s; }
.field__btn .caret .icon { width: 16px; height: 16px; }
.field.is-open .field__btn .caret { transform: translateY(-50%) rotate(180deg); }
.field__btn .clear { position: absolute; inset-inline-end: -4px; top: 50%; transform: translateY(-50%); width: 24px; height: 24px; display: none; align-items: center; justify-content: center; opacity: .7; }
.field__btn .clear:hover { opacity: 1; }
.field__btn .clear .icon { width: 14px; height: 14px; }
.field.is-filled .field__btn .caret { display: none; }
.field.is-filled .field__btn .clear { display: flex; }

.menu { position: absolute; left: 0; right: 0; top: 100%; background: var(--white); border: 1px solid var(--line-2); border-top: 0; z-index: 20; display: none; max-height: 300px; overflow: auto; }
.field.is-open .menu { display: block; }
.menu__item, .menu__all { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 46px; padding: 0 14px; font: 400 14px/1.3 var(--sans); color: var(--taupe-d); border-top: 1px solid var(--line); text-align: start; justify-content: flex-start; transition: background .2s; }
.menu__item { justify-content: space-between; }
.menu--check .menu__item { justify-content: flex-start; }
.menu__all { border-top: 0; color: var(--taupe); }
.menu__item:hover, .menu__all:hover { background: var(--stone); }
.menu__item .icon { width: 14px; height: 14px; visibility: hidden; }
.menu__item.is-selected .icon { visibility: visible; }
.menu__item.is-selected { color: var(--taupe-d); font-weight: 500; }
.menu__box { width: 14px; height: 14px; flex: none; border: 1px solid var(--taupe-l); display: flex; align-items: center; justify-content: center; color: var(--white); transition: background .2s, border-color .2s; }
.menu__box .icon { width: 12px; height: 12px; visibility: visible; stroke-width: 2; }
.menu__box.is-on { background: var(--taupe); border-color: var(--taupe); }
.menu__search { position: sticky; top: 0; z-index: 1; background: var(--white); padding: 10px 14px; border-bottom: 1px solid var(--line); }
.menu__search-inp { width: 100%; height: 36px; border: 0; border-bottom: 1px solid var(--taupe-l); border-radius: 0; padding: 0; background: transparent; font: 300 18px/1 var(--serif); color: var(--taupe-d); outline: none; }
.menu__search-inp:focus { border-bottom-color: var(--taupe); }
.menu__search-inp::placeholder { color: var(--taupe-l); }

.popover { position: absolute; left: 0; right: 0; top: 100%; background: var(--white); border: 1px solid var(--line-2); border-top: 0; padding: 22px 16px 16px; z-index: 20; display: none; }
.field.is-open .popover { display: block; }
.popover__title { display: none; }
.range { position: relative; height: 24px; margin: 0 8px; direction: ltr; }
.range__rail { position: absolute; left: 0; right: 0; top: 50%; height: 1px; background: var(--taupe-l); }
.range__track { position: absolute; top: 50%; height: 1px; margin-top: 0; background: var(--taupe); }
.range__thumb { position: absolute; top: 50%; width: 16px; height: 16px; margin: -7.5px 0 0 -8px; border-radius: 50%; background: var(--white); border: 1px solid var(--taupe); cursor: pointer; touch-action: none; transition: background .2s; }
.range__thumb i { display: none; }
.range__thumb:hover, .range__thumb.is-drag { background: var(--taupe); }
.range__inputs { display: flex; gap: 16px; margin-top: 16px; }
.range__inputs label { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 6px; font-size: 11px; color: var(--taupe); }
.range__inputs input { width: 100%; min-width: 0; height: 36px; border: 0; border-bottom: 1px solid var(--taupe-l); border-radius: 0; padding: 0; background: transparent; font: 300 20px/1 var(--serif); letter-spacing: -.01em; color: var(--taupe-d); outline: none; direction: ltr; text-align: start; -moz-appearance: textfield; font-variant-numeric: lining-nums; }
[dir="rtl"] .range__inputs input { text-align: right; }
.range__inputs input::-webkit-outer-spin-button, .range__inputs input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.range__inputs input:focus { border-bottom-color: var(--taupe); }
.popover__btns { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 20px; }
.btn-text { padding: 4px 0; color: var(--taupe); border-bottom: 1px solid var(--taupe-l); transition: border-color .25s; }
.btn-text:hover { border-bottom-color: var(--taupe); }
.btn-apply { height: 40px; padding: 0 20px; background: var(--taupe); color: var(--white); border: 1px solid var(--taupe); transition: background .3s; }
.btn-apply:hover { background: var(--taupe-d); border-color: var(--taupe-d); }
.btn-more { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; min-height: 52px; color: var(--taupe); border-bottom: 1px solid var(--line); opacity: .7; transition: opacity .25s; }
.btn-more .icon { display: none; }
.btn-more::after { content: "+"; font: 300 20px/1 var(--sans); }
.btn-more.is-open::after { content: "\2212"; }
.btn-more:hover, .btn-more.is-open { opacity: 1; }

/* ---------- счётчик, карточки, избранное ---------- */
.counter { padding-top: 16px; color: var(--taupe); }
.counter:empty { display: none; }
.counter b { font: 300 22px/1 var(--serif); letter-spacing: -.01em; text-transform: none; }
.counter .btn-text { margin-inline-start: 12px; }
.results { display: flex; flex-direction: column; padding: 4px 0 24px; }
.card { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 18px; align-items: start; padding: 16px 0; border-bottom: 1px solid var(--line); position: relative; isolation: isolate; color: var(--taupe); }
.card::before, .pv-floor__row::before { content: ""; position: absolute; inset: 0 -12px; background: var(--stone); opacity: 0; z-index: -1; transition: opacity .25s; }
.card:hover::before, .card.is-hover::before, .card.is-selected::before, .pv-floor__row:hover::before, .pv-floor__row.is-hover::before, .pv-floor__row.is-selected::before { opacity: 1; }
.card__img { width: 92px; height: 92px; display: flex; align-items: center; justify-content: center; background: var(--white); }
.card__img .plan-fig, .card__img img { width: 100%; height: 100%; object-fit: contain; }
.card__actions { position: absolute; top: 10px; inset-inline-end: 4px; display: flex; gap: 2px; z-index: 2; }
.cact { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; color: var(--taupe); opacity: .55; transition: opacity .25s; }
.cact:hover, .cact.is-active { opacity: 1; }
.cact .icon { width: 17px; height: 17px; }
.card__body { min-width: 0; }
.card .badges { padding-inline-end: 72px; min-height: 22px; }
.badges { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; }
.badge { color: var(--taupe); white-space: nowrap; }
.badge--id { font: 300 17px/1 var(--serif); letter-spacing: 0; text-transform: none; color: var(--taupe-d); order: -1; direction: ltr; unicode-bidi: isolate; }
.badge--reserved, .badge--sold { display: inline-flex; align-items: center; gap: 6px; }
.badge--reserved::before, .badge--sold::before { content: ""; width: 8px; height: 8px; background: var(--pv-rs); }
.badge--sold::before { background: var(--pv-sd); }
.card__price { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin-top: 10px; }
.card__price + .card__price { margin-top: 2px; }
.card__price .k { font-size: 10.5px; opacity: .8; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
:root:lang(ka) .card__price .k, :root:lang(he) .card__price .k, :root:lang(ar) .card__price .k { font-size: 12px; }
.card__price b { font: 300 20px/1.1 var(--serif); letter-spacing: -.01em; color: var(--taupe-d); direction: ltr; unicode-bidi: isolate; white-space: nowrap; }
.card__price + .card__price b { font-size: 15px; color: var(--taupe); }
.card__meta { display: flex; gap: 16px; margin-top: 10px; }
.meta { display: flex; align-items: center; color: var(--taupe); font-size: 11px; }
.meta .icon { display: none; }
.meta span { unicode-bidi: plaintext; }
.load-more { width: 100%; height: 48px; margin-top: 8px; border: 1px solid var(--taupe-l); color: var(--taupe); transition: background .3s, color .3s; }
.load-more:hover { background: var(--taupe); color: var(--white); border-color: var(--taupe); }
.results:empty + .load-more { display: none; }
.empty { font: 300 22px/1.3 var(--serif); color: var(--taupe); padding: 28px 0; }
.empty small { display: none; }
.fav-head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin: 24px 0 8px; padding-bottom: 16px; border-bottom: 1px solid var(--line); font: 300 26px/1.1 var(--serif); letter-spacing: -.02em; color: var(--taupe); }
#railPreview { margin-top: 20px; }
.preview { display: block; width: 100%; height: 300px; object-fit: cover; background: var(--stone); }

/* ---------- список квартир этажа (колонка в «Этажах») ---------- */
.pv-floor { margin-top: 28px; }
.pv-floor__head { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; padding-bottom: 14px; border-bottom: 1px solid var(--line-2); }
.pv-floor__head b { font: 300 18px/1 var(--serif); letter-spacing: 0; text-transform: none; color: var(--taupe-d); }
.pv-floor__row { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; align-items: center; gap: 14px; padding: 13px 0; border-bottom: 1px solid var(--line); position: relative; isolation: isolate; color: var(--taupe); transition: opacity .2s; }
.pv-floor__row .n { font: 300 22px/1 var(--serif); letter-spacing: -.01em; color: var(--taupe-d); direction: ltr; unicode-bidi: isolate; }
.pv-floor__row .t { display: flex; flex-direction: column; align-items: flex-start; gap: 5px; min-width: 0; }
.pv-floor__row .t small { font: 400 13px/1 var(--sans); letter-spacing: 0; text-transform: none; opacity: .85; unicode-bidi: plaintext; }
.pv-floor__row .p { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; text-align: end; }
.pv-floor__row .p b { font: 300 20px/1 var(--serif); letter-spacing: -.01em; color: var(--taupe-d); white-space: nowrap; direction: ltr; unicode-bidi: isolate; font-weight: 300; }
.pv-floor__row .s { font-size: 10.5px; display: inline-flex; align-items: center; gap: 6px; }
.pv-floor__row .s::before { content: ""; width: 8px; height: 8px; background: var(--pvst); }
.pv-floor__row[data-status="sold"] { opacity: .55; }
.pv-floor__row.is-out { opacity: .3; }

/* ---------- сцена ---------- */
.scene__view { position: absolute; inset: 0; display: none; }
.scene__view.is-on { display: block; }

/* 3D (кадры-заглушки; механика без изменений) */
.scene3d { background: var(--stone); }
.scene3d canvas { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; }
.scene3d svg.polys { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; }
.scene3d .unit { fill: none; stroke: none; cursor: pointer; transition: fill-opacity .3s; pointer-events: all; }
.scene3d.is-filtered .unit.in-filter { fill: var(--taupe); fill-opacity: calc(var(--pa) + .2); }
.scene3d.show-all .unit { fill: var(--taupe); fill-opacity: calc(var(--pa) + .2); }
.scene3d .unit.is-hover { fill: var(--taupe); fill-opacity: calc(var(--pa) + .36); stroke: var(--white); stroke-width: 1; }
.scene3d .unit.is-selected { fill: var(--taupe); fill-opacity: calc(var(--pa) + .46); stroke: var(--white); stroke-width: 1; }
.scene3d .unit.is-flash { animation: pvFlash 1.2s infinite; }
@keyframes pvFlash { 0% { fill: transparent; } }
.cursor-dot { position: absolute; width: 10px; height: 10px; border-radius: 50%; background: var(--white); border: 1px solid var(--taupe); transform: translate(-50%, -50%) translateY(-20px); z-index: 5; pointer-events: none; display: none; }
.scene3d.no-polys:hover .cursor-dot { display: block; }
.capsule { position: absolute; left: 50%; bottom: 28px; transform: translateX(-50%); display: flex; direction: ltr; background: var(--white); border: 1px solid var(--taupe-l); z-index: 3; user-select: none; transition: opacity .4s; }
.capsule.is-hidden { opacity: 0; pointer-events: none; }
.rot { width: 52px; height: 40px; display: flex; align-items: center; justify-content: center; color: var(--taupe); transition: background .3s, color .3s; }
.rot + .rot { border-left: 1px solid var(--taupe-l); }
.rot:hover { background: var(--taupe); color: var(--white); }
.rot .icon { width: 16px; height: 16px; }
.toggle { position: absolute; inset-inline-end: 28px; bottom: 28px; height: 40px; padding: 0 12px; display: flex; align-items: center; gap: 10px; background: var(--white); border: 1px solid var(--taupe-l); z-index: 3; transition: border-color .25s; }
.toggle:hover { border-color: var(--taupe); }
.switch { width: 30px; height: 14px; border: 1px solid var(--taupe); position: relative; flex: none; transition: background .25s; }
.switch::after { content: ""; position: absolute; top: 2px; left: 2px; width: 8px; height: 8px; background: var(--taupe); transition: transform .25s var(--ease), background .25s; }
.switch.is-on { background: var(--taupe); }
.switch.is-on::after { background: var(--white); transform: translateX(16px); }
.toggle svg { width: 16px; height: 18px; display: block; overflow: visible; }
/* значок «все помещения» — два квадрата в таупе вместо статусных оливкового/оранжевого */
.toggle svg path:last-child { fill: var(--taupe); }
.toggle svg path:first-child { fill: none; stroke: var(--taupe); stroke-width: 1; vector-effect: non-scaling-stroke; }
.sceneFloors .toggle { background: transparent; }
.frame-label { display: none; }

/* 3D: пролётка дома (js/picker-v2-3d.js) вместо кадров-заглушек app.js — их слои и поповер спрятаны */
body.pv #frameCanvas, body.pv #polys, body.pv #capsule, body.pv #frameLabel, body.pv #cursorDot, body.pv #upop { display: none !important; }
.pv3d { position: absolute; inset: 0; z-index: 1; cursor: grab; touch-action: none; user-select: none; -webkit-user-select: none; -webkit-tap-highlight-color: transparent; }
.pv3d.is-unit { cursor: pointer; }
.pv3d.is-drag { cursor: grabbing; }
.pv3d__hl { pointer-events: none; }
.pv3d__tip { position: absolute; left: 0; top: 0; transform: translateY(-50%); min-width: 150px; padding: 10px 14px; background: var(--white); border: 1px solid var(--line-2); pointer-events: none; z-index: 4; }
.pv3d__tip[hidden] { display: none; }
.pv3d__rot { position: absolute; left: 50%; bottom: 28px; transform: translateX(-50%); display: flex; direction: ltr; background: var(--white); border: 1px solid var(--taupe-l); z-index: 3; user-select: none; }
.pv3d__rot button { width: 52px; height: 40px; display: flex; align-items: center; justify-content: center; color: var(--taupe); transition: color .25s, background .25s; }
.pv3d__rot button + button { border-left: 1px solid var(--taupe-l); }
.pv3d__rot button:hover { color: var(--taupe-d); background: var(--stone); }
.pv3d__rot svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.3; }
.pv3d__load { position: absolute; left: 0; right: 0; bottom: 0; height: 1px; background: var(--taupe); transform: scaleX(0); transform-origin: left center; transition: transform .25s linear, opacity .5s .2s; pointer-events: none; z-index: 2; }
[dir="rtl"] .pv3d__load { transform-origin: right center; }
.pv3d__load.is-done { opacity: 0; }
/* карточка квартиры у курсора (наведение по маскам v7) — язык поповера и карточек колонки */
.pv3d__card { position: absolute; left: 0; top: 0; width: 232px; padding: 12px 14px 14px; background: var(--white); border: 1px solid var(--line-2); z-index: 5; pointer-events: none; opacity: 0; visibility: hidden; transition: opacity .18s, visibility 0s .18s, transform .14s var(--ease); }
.pv3d__card.is-on { opacity: 1; visibility: visible; transition: opacity .18s, visibility 0s, transform .14s var(--ease); }
.pv3d__plan { height: 132px; display: flex; align-items: center; justify-content: center; padding-bottom: 10px; margin-bottom: 10px; border-bottom: 1px solid var(--line); }
.pv3d__plan img { width: 100%; height: 100%; object-fit: contain; }
.pv3d__card .card__meta { margin: 6px 0 0; }
.pv3d__price { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--line); min-height: 26px; }
.pv3d__price b { font: 300 22px/1 var(--serif); letter-spacing: -.01em; color: var(--taupe-d); direction: ltr; unicode-bidi: isolate; white-space: nowrap; font-weight: 300; }
.pv3d__st { display: inline-flex; align-items: center; gap: 7px; font-size: 11px; margin-inline-start: auto; white-space: nowrap; }
:root:lang(ka) .pv3d__st, :root:lang(he) .pv3d__st, :root:lang(ar) .pv3d__st { font-size: 12px; }
.pv3d__card .upop__cta { margin-top: 12px; }
@media (hover: none), (max-width: 959px) { .pv3d__card { pointer-events: auto; cursor: pointer; width: 212px; } .pv3d__plan { height: 112px; } }

/* поповер помещения */
.upop { position: absolute; width: 244px; background: var(--white); border: 1px solid var(--line-2); padding: 14px 16px 16px; z-index: 6; display: none; }
.upop.is-on { display: block; }
/* фильтры «Тип» и «Номер» убраны (Лев 21.10): поля рельса и секции мобильного листа; значения вычищает picker-v2.js */
.field[data-key="type"], .field[data-key="number"], .ssec.pv-off { display: none !important; }
.upop:has(a.upop__cta) { cursor: pointer; } /* весь поповер ведёт на детали (picker-v2.js) */
.upop__close { position: absolute; inset-inline-end: 6px; top: 6px; width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; color: var(--taupe); z-index: 1; }
.upop__close .icon { width: 16px; height: 16px; }
.upop__img { display: flex; justify-content: center; padding: 16px 0 10px; border-bottom: 1px solid var(--line); margin-bottom: 12px; }
.upop__img .plan-fig { width: 190px; height: 150px; }
.upop .card__meta { margin: 8px 0 0; }
.upop__price { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; margin: 12px 0 6px; padding-top: 12px; border-top: 1px solid var(--line); }
.upop__price b { font: 300 26px/1 var(--serif); letter-spacing: -.02em; color: var(--taupe-d); direction: ltr; unicode-bidi: isolate; font-weight: 300; }
.upop__price span { font: 400 13px/1 var(--sans); direction: ltr; unicode-bidi: isolate; }
.upop__status { display: flex; align-items: center; gap: 8px; margin: 0 0 14px; font-size: 11px; }
:root:lang(ka) .upop__status, :root:lang(he) .upop__status, :root:lang(ar) .upop__status { font-size: 12px; }
.status-sq { width: 10px; height: 10px; flex: none; background: var(--pvst); box-shadow: inset 0 0 0 1px var(--line-2); }
.upop__cta { display: flex; align-items: center; justify-content: space-between; height: 40px; padding: 0 14px; background: var(--taupe); color: var(--white); transition: background .3s; }
.upop__cta::after, .cta:not(.is-disabled)::after { content: "\2192"; font: 400 14px/1 var(--sans); }
[dir="rtl"] .upop__cta::after, [dir="rtl"] .cta:not(.is-disabled)::after { content: "\2190"; }
.upop__cta:hover { background: var(--taupe-d); }
.upop__cta.is-disabled { background: var(--stone); color: var(--taupe); cursor: default; }
.upop__cta.is-disabled::after { content: none; }

/* ---------- «Этажи» ---------- */
.sceneFloors { padding: 0; }
.sceneFloors.is-on { display: flex; align-items: center; justify-content: center; }
.plan-box { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; overflow: visible; padding: 112px calc(var(--pv-sec-w) + 40px) 96px 36px; }
[dir="rtl"] .plan-box { padding: 112px 36px 96px calc(var(--pv-sec-w) + 40px); }
.plan-box svg { width: 100%; height: 100%; max-height: 100%; flex-shrink: 0; }
.plan-box svg.is-zoomed { cursor: grab; touch-action: none; }
.plan-box svg.is-panning, .plan-box svg.is-panning .unit { cursor: grabbing; }
/* полигоны планов — из app.css без изменений */
/* подсветка контуров квартир — тауп главной, согласованно с шахматкой: свободно светлее, бронь средне, продано плотнее.
   Меняется только слой заливки/обводки контуров; чертёж (растр плана) не трогается. */
.floor-plan-svg .unit, .scene3d .unit, .g-facade .unit { --pa: .24; }
.floor-plan-svg .unit[data-status="reserved"], .scene3d .unit[data-status="reserved"], .g-facade .unit[data-status="reserved"] { --pa: .44; }
.floor-plan-svg .unit[data-status="sold"], .scene3d .unit[data-status="sold"], .g-facade .unit[data-status="sold"] { --pa: .66; }
.floor-plan-svg .unit { fill: transparent; stroke: none; cursor: pointer; transition: fill-opacity .25s, stroke-opacity .25s; }
.floor-plan-svg .unit[data-status="sold"] { fill: var(--taupe); fill-opacity: var(--pa); }
.floor-plan-svg.show-all .unit { fill: var(--taupe); fill-opacity: var(--pa); }
.floor-plan-svg.is-filtered .unit.in-filter { fill: var(--taupe); fill-opacity: var(--pa); }
.floor-plan-svg .unit.is-hover { fill: var(--taupe); fill-opacity: calc(var(--pa) + .16); stroke: var(--taupe-d); stroke-width: 1; }
.floor-plan-svg .unit.is-selected { fill: var(--taupe); fill-opacity: calc(var(--pa) + .26); stroke: var(--taupe-d); stroke-width: 1.5; }
.floor-plan-svg .unit.is-out { fill: none !important; opacity: .3; }
.fp--real__img { pointer-events: none; }
.fp--real .unit { --tone: var(--plan-tone-0); fill: var(--tone); fill-opacity: var(--plan-tone-alpha); stroke: var(--polygon-stroke); stroke-width: 1.5; stroke-opacity: .35; vector-effect: non-scaling-stroke; }
.fp--real .unit[data-tone="1"] { --tone: var(--plan-tone-1); }
.fp--real .unit[data-tone="2"] { --tone: var(--plan-tone-2); }
.fp--real .unit[data-tone="3"] { --tone: var(--plan-tone-3); }
.fp--real .unit.is-hover, .fp--real .unit.is-selected, .fp--real .unit[data-status="sold"], .fp--real.show-all .unit, .fp--real.is-filtered .unit.in-filter { fill: var(--taupe); stroke: var(--taupe-d); }
.fp--real .unit[data-status="sold"] { fill-opacity: var(--pa); stroke-opacity: .55; }
.fp--real.show-all .unit { fill-opacity: var(--pa); stroke-opacity: .55; }
.fp--real.is-filtered .unit.in-filter { fill-opacity: var(--pa); stroke-opacity: .8; }
.fp--real .unit.is-hover { fill-opacity: calc(var(--pa) + .16); stroke-opacity: .9; }
.fp--real .unit.is-selected { fill-opacity: calc(var(--pa) + .26); stroke-opacity: 1; stroke-width: 2; }
.fp--real .unit.is-out { fill-opacity: .04 !important; stroke-opacity: .2; }
.fp--real .unit { mix-blend-mode: multiply; }

/* номер этажа — антиквой, как числа главной (.num b) */
.pv-fno { position: absolute; inset-inline-start: 36px; top: 26px; z-index: 2; display: flex; align-items: baseline; gap: 14px; pointer-events: none; color: var(--taupe); }
.pv-fno b { font: 300 64px/1 var(--serif); letter-spacing: -.03em; color: var(--taupe); direction: ltr; unicode-bidi: isolate; font-weight: 300; }
.pv-fno i { font: 300 22px/1 var(--serif); font-style: normal; opacity: .55; direction: ltr; unicode-bidi: isolate; }
.compass { position: absolute; inset-inline-start: 36px; bottom: 32px; width: 60px; height: 60px; color: var(--taupe); z-index: 2; display: flex; align-items: center; justify-content: center; }
.compass svg { width: 60px; height: 60px; stroke-width: 1; }
.compass svg text { font-family: var(--serif); }
.rose { position: absolute; inset-inline-start: 116px; bottom: 22px; z-index: 2; }
.rose text { font-family: var(--sans); }
.sceneFloors .toggle { inset-inline-end: calc(var(--pv-sec-w) + 40px); }
.stepper { display: none !important; }
.mfloor { display: none; }

/* разрез дома */
.pv-sec { position: absolute; inset-inline-end: 20px; top: 20px; bottom: 20px; width: var(--pv-sec-w); z-index: 3; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.pv-sec__arrow { flex: none; width: 44px; height: 32px; display: flex; align-items: center; justify-content: center; color: var(--taupe); transition: opacity .25s, color .25s; }
.pv-sec__arrow svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.3; }
.pv-sec__arrow:hover { color: var(--taupe-d); }
.pv-sec__arrow:disabled { opacity: .25; cursor: default; }
.pv-sec__svg { flex: 0 1 auto; min-height: 0; max-height: 100%; width: 100%; height: auto; display: block; outline: none; }
.pv-sec__svg:focus-visible { outline: 1px solid var(--taupe-l); outline-offset: 2px; }
.pv-sec__svg .ln { fill: none; stroke: var(--taupe); stroke-width: 1; vector-effect: non-scaling-stroke; }
.pv-sec__svg .lam { fill: none; stroke: var(--line); stroke-width: 1; vector-effect: non-scaling-stroke; pointer-events: none; }
.pv-sec__svg .body { fill: none; stroke: var(--taupe); stroke-width: 1; vector-effect: non-scaling-stroke; pointer-events: none; }
.pv-sec__svg .gr { fill: var(--stone); stroke: none; }
.pv-sec__band { cursor: pointer; }
.pv-sec__band .hit { fill: transparent; }
.pv-sec__band .b { fill: transparent; stroke: var(--line-2); stroke-width: 1; vector-effect: non-scaling-stroke; transition: fill .2s; }
.pv-sec__band .lb, .pv-sec__svg .lb--g { font: 400 8.6px/1 var(--sans); fill: var(--taupe); opacity: .6; font-variant-numeric: tabular-nums; transition: opacity .2s; }
.pv-sec__band .tk { fill: var(--taupe-l); opacity: .5; }
.pv-sec__band .tk.is-on { fill: var(--taupe); opacity: 1; }
.pv-sec__band:hover .b, .pv-sec__band.is-hover .b { fill: var(--stone); }
.pv-sec__band:hover .lb, .pv-sec__band.is-hover .lb { opacity: 1; }
.pv-sec__band.is-on .b { fill: var(--taupe); stroke: var(--taupe); }
.pv-sec__band.is-on .lb { opacity: 1; fill: var(--taupe-d); font-weight: 600; }
.pv-sec__band.is-empty .lb { opacity: .25; }
.pv-sec__band.is-none { cursor: default; }
.pv-sec__tip { position: absolute; inset-inline-end: calc(100% - 4px); top: 0; transform: translateY(-50%); min-width: 150px; padding: 10px 14px; background: var(--white); border: 1px solid var(--line-2); pointer-events: none; z-index: 4; }
.pv-sec__tip div, .pv3d__tip div { display: flex; align-items: baseline; justify-content: space-between; gap: 18px; white-space: nowrap; }
.pv-sec__tip .v, .pv3d__tip .v { margin-inline-start: auto; direction: ltr; unicode-bidi: isolate; }
.pv-sec__tip div + div, .pv3d__tip div + div { margin-top: 6px; padding-top: 6px; border-top: 1px solid var(--line); }
.pv-sec__tip .k, .pv3d__tip .k { font-size: 10.5px; }
.pv-sec__tip b, .pv3d__tip b { font: 300 24px/1 var(--serif); letter-spacing: -.02em; color: var(--taupe-d); font-weight: 300; }
.pv-sec__tip i, .pv3d__tip i { font: 300 15px/1 var(--serif); font-style: normal; opacity: .6; margin-inline-start: 4px; }

/* ---------- шахматка: типографская таблица ---------- */
.sceneChess { padding: 28px 0 0; padding-inline-start: 36px; background: var(--white); flex-direction: column; }
.sceneChess.is-on { display: flex; }
.chess__toolbar { display: none !important; }
.legend { flex: none; display: flex; align-items: center; gap: 28px; margin: 0 0 22px; padding-inline-end: 36px; }
.legend__i { display: flex; align-items: center; gap: 10px; color: var(--taupe); }
.legend__sw { width: 14px; height: 14px; box-shadow: inset 0 0 0 1px var(--line-2); }
.legend__i:nth-child(1) .legend__sw { background: var(--pv-av) !important; }
.legend__i:nth-child(2) .legend__sw { background: var(--pv-rs) !important; }
.legend__i:nth-child(3) .legend__sw { background: var(--pv-sd) !important; }
.chess__scroll { flex: 1; min-height: 0; overflow: auto; padding-bottom: 24px; padding-inline-end: 36px; position: relative; border-top: 1px solid var(--line-2); }
.chess { display: grid; grid-template-columns: 56px max-content; column-gap: 0; width: max-content; }
.chess__floors { position: sticky; inset-inline-start: 0; z-index: 4; background: var(--white); border-inline-end: 1px solid var(--line-2); }
.chess__fspacer { display: none; }
.chess__head { display: none; }
.chess__f { height: calc(var(--pv-pitch) * var(--chess-size)); display: flex; align-items: center; justify-content: flex-end; padding-inline-end: 14px; font: 300 18px/1 var(--serif); color: var(--taupe); border-bottom: 1px solid var(--line); direction: ltr; }
[dir="rtl"] .chess__f { justify-content: flex-start; }
.chess__f.is-active { color: var(--taupe-d); font-weight: 400; }
.chess__rows { display: flex; flex-direction: column; }
.chess__row { display: flex; align-items: center; height: calc(var(--pv-pitch) * var(--chess-size)); gap: calc(4px * var(--chess-size)); padding-inline-start: 14px; border-bottom: 1px solid var(--line); }
.cell { width: calc(var(--pv-cell-w) * var(--chess-size)); height: calc(var(--pv-cell-h) * var(--chess-size)); flex: none; display: flex; align-items: center; justify-content: center; background: var(--pvst); color: var(--taupe-d); font: 300 calc(16px * var(--chess-size))/1 var(--serif); letter-spacing: -.01em; cursor: pointer; position: relative; direction: ltr; transition: background .2s, color .2s, outline-color .2s; outline: 1px solid transparent; outline-offset: -1px; }
.cell[data-status="reserved"] { color: var(--taupe-d); }
.cell[data-status="sold"] { color: rgba(255, 255, 255, .82); }
.cell.is-empty { background: transparent; cursor: default; }
.cell.is-out { opacity: .22; pointer-events: none; }
.cell:not(.is-empty):hover, .cell.is-hover { outline-color: var(--taupe-d); z-index: 2; }
.cell.is-selected { outline: 2px solid var(--taupe-d); outline-offset: -2px; }
.chess__zoombar { flex: none; height: 68px; display: flex; align-items: center; justify-content: center; margin-inline-start: -36px; border-top: 1px solid var(--line); background: var(--white); z-index: 5; }
.zoom { display: flex; align-items: center; gap: 12px; height: 40px; }
.zoom button { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; color: var(--taupe); }
.zoom .icon { width: 18px; height: 18px; stroke-width: 1.3; }
.zoom__slider { width: 180px; height: 24px; padding: 11.5px 0; position: relative; cursor: pointer; direction: ltr; }
.zoom__track { height: 1px; background: var(--taupe-l); position: relative; }
.zoom__fill { position: absolute; left: 0; top: 0; height: 100%; background: var(--taupe); }
.zoom__thumb { position: absolute; top: 50%; width: 14px; height: 14px; margin: -7px 0 0 -7px; border-radius: 50%; background: var(--white); border: 1px solid var(--taupe); }

/* ---------- страница квартиры ---------- */
.unit-page { position: fixed; inset: 0; background: var(--white); overflow: auto; padding: 0 var(--gut) 56px; z-index: 20; color: var(--taupe); }
.up__head { height: 64px; display: flex; align-items: center; justify-content: space-between; margin: 0 calc(-1 * var(--gut)); padding: 0 var(--gut); border-bottom: 1px solid var(--line); }
.up__head .icon-btns { display: flex; gap: 10px; }
.up__head .ibtn:first-child { font: 500 12px/1 var(--sans); letter-spacing: .06em; text-transform: uppercase; }
.crumbs { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 22px 0 24px; }
.crumbs__nav { display: flex; align-items: center; gap: 12px; }
.crumbs__nav a { display: inline-flex; align-items: center; gap: 8px; transition: color .25s; }
.crumbs__nav a:hover { color: var(--taupe-d); }
.crumbs__nav a .icon { width: 16px; height: 16px; }
[dir="rtl"] .crumbs__nav a .icon { transform: scaleX(-1); }
.crumbs__sep { opacity: .35; }
.crumbs__cur { opacity: .6; }
.actions { display: flex; gap: 24px; }
.act { display: inline-flex; align-items: center; gap: 8px; padding: 4px 0; color: var(--taupe); border-bottom: 1px solid transparent; transition: border-color .25s, color .25s; }
.act:hover { border-bottom-color: var(--taupe-l); }
.act.is-active { color: var(--taupe-d); }
.act .icon { width: 14px; height: 14px; }
/* Лев 03.11: один экран — сцена с режимами слева, колонка решения справа; на десктопе страница не скроллится */
.up__main { display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: calc(var(--gut) * 2); align-items: start; }
.up__panel { min-width: 0; display: flex; flex-direction: column; }
.up__stage { position: relative; overflow: hidden; display: flex; align-items: center; justify-content: center; background: var(--white); border: 1px solid var(--line); padding: 24px; min-height: 0; }
.up__stage.is-view, .up__stage.is-building { padding: 0; background: var(--stone); }
.up__stage .plan-fig--page { width: 100%; height: 100%; }
.up__stage .plan-fig--page > img { width: 100%; height: 100%; object-fit: contain; }
.up__iso { width: 100%; height: 100%; object-fit: contain; }
.up__view { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.up__stage .g-facade { position: absolute; inset: 0; background: var(--stone); }
.up__stage .g-facade canvas, .up__stage .g-facade svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.up__stage .g-facade .unit { fill: none; }
.up__stage .g-facade .unit.is-selected { fill: var(--taupe); fill-opacity: calc(var(--pa) + .46); stroke: var(--white); stroke-width: 2; }
.up__stage .capsule { bottom: 24px; }
.plan-fig { position: relative; display: block; width: 100%; height: 100%; }
.plan-fig > img { display: block; width: 100%; height: 100%; object-fit: contain; }
.fs-btn { position: absolute; inset-inline-end: 12px; bottom: 12px; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; background: var(--white); border: 1px solid var(--taupe-l); color: var(--taupe); z-index: 3; transition: background .3s, color .3s; }
.fs-btn:hover { background: var(--taupe); color: var(--white); }
.fs-btn .icon { width: 16px; height: 16px; stroke-width: 1.3; }
.up__modes { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 16px; border-bottom: 1px solid var(--line); }
.modes { display: flex; min-width: 0; }
.mode { padding: 16px 20px; color: var(--taupe); opacity: .55; border-bottom: 1px solid transparent; margin-bottom: -1px; white-space: nowrap; transition: opacity .25s, border-color .25s; }
.mode:first-child { padding-inline-start: 0; }
.mode:hover { opacity: .85; }
.mode.is-active { opacity: 1; border-bottom-color: var(--taupe); }
.up__cap { min-width: 0; font-size: 11px; opacity: .75; text-align: end; }
.up__info { min-width: 0; }
.dp { display: flex; flex-direction: column; }
.dp__head { padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.dp__title { margin: 0; display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; font: 300 40px/1.04 var(--serif); letter-spacing: -.025em; color: var(--taupe); }
.dp__num { font: 300 24px/1 var(--serif); letter-spacing: -.01em; opacity: .7; direction: ltr; unicode-bidi: isolate; }
.dp__sub { margin-top: 12px; }
.dp__price { padding: 18px 0 16px; border-bottom: 1px solid var(--line); }
.dp__usd { font: 300 46px/1 var(--serif); letter-spacing: -.03em; color: var(--taupe-d); direction: ltr; }
.dp__gel { font: 300 20px/1.2 var(--serif); margin-top: 8px; opacity: .75; direction: ltr; }
.dp__sqm { margin-top: 10px; font-size: 11px; direction: ltr; }
[dir="rtl"] .dp__usd, [dir="rtl"] .dp__gel, [dir="rtl"] .dp__sqm { text-align: right; }
:root:lang(ka) .dp__sqm, :root:lang(he) .dp__sqm, :root:lang(ar) .dp__sqm { font-size: 12px; }
.dp__facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
.dp__f { min-width: 0; display: flex; flex-direction: column; gap: 7px; padding: 12px 0 11px; border-bottom: 1px solid var(--line); }
.dp__f > span:first-child { font-family: var(--sans); font-weight: 500; font-size: 11px; line-height: 1.2; letter-spacing: var(--caps-ls); text-transform: var(--caps-tt); }
.dp__f > b { font: 300 20px/1.15 var(--serif); letter-spacing: -.01em; color: var(--taupe-d); unicode-bidi: plaintext; }
.dp__st { display: inline-flex; align-items: center; gap: 10px; }
[dir="rtl"] .dp__f > b { text-align: right; }
.ladder { margin-top: 16px; min-width: 0; }
.ladder__h { font-family: var(--sans); font-weight: 500; font-size: 11px; line-height: 1.2; letter-spacing: var(--caps-ls); text-transform: var(--caps-tt); }
.ladder__strip { display: flex; margin-top: 10px; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x proximity; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); padding-bottom: 1px; }
.ladder__i { flex: none; width: 76px; display: grid; grid-template-columns: 1fr auto; align-items: center; gap: 4px 6px; padding: 9px 10px; border-inline-end: 1px solid var(--line); color: var(--taupe); scroll-snap-align: start; transition: background .2s, color .2s; }
.ladder__i b { font: 300 20px/1 var(--serif); letter-spacing: -.01em; color: var(--taupe-d); direction: ltr; unicode-bidi: isolate; font-weight: 300; }
.ladder__i .status-sq { width: 8px; height: 8px; justify-self: end; }
.ladder__p { grid-column: 1 / -1; font-size: 10.5px; white-space: nowrap; direction: ltr; unicode-bidi: isolate; text-align: start; }
a.ladder__i:hover { background: var(--stone); }
.ladder__i.is-current { background: var(--taupe); color: var(--white); }
.ladder__i.is-current b { color: var(--white); }
.ladder__i.is-sold { opacity: .4; }
.dp__btns { display: flex; flex-direction: column; gap: 10px; padding-top: 18px; }
.cta { display: flex; align-items: center; justify-content: space-between; gap: 14px; width: 100%; height: 52px; padding: 0 18px; background: var(--taupe); color: var(--white); border: 1px solid var(--taupe); text-align: start; transition: background .3s, color .3s, border-color .3s; }
.cta:not(.is-disabled):hover { background: var(--taupe-d); border-color: var(--taupe-d); }
.cta.is-disabled { background: var(--stone); border-color: var(--stone); color: var(--taupe); cursor: default; }
.cta .icon { width: 18px; height: 18px; }
.cta > .icon + span { flex: 1; }
.cta--wa { background: transparent; color: var(--taupe); border-color: var(--taupe-l); }
.cta--wa:not(.is-disabled):hover { background: var(--taupe); border-color: var(--taupe); color: var(--white); }
.up__cta-mobile { display: none; }
.acc, .up__sticky { display: none; }
@media (min-width: 960px) {
  .unit-page { display: flex; flex-direction: column; padding-bottom: var(--gut); }
  .unit-page > .up__head, .unit-page > .crumbs { flex: none; }
  .unit-page .crumbs { padding: 16px 0 18px; }
  .up__main { flex: 1 1 auto; min-height: 0; align-items: stretch; }
  .up__panel { min-height: 0; }
  .up__stage { flex: 1 1 auto; }
  .up__info { min-height: 0; overflow-y: auto; overflow-x: hidden; }
  .up__info > .dp { min-height: 100%; }
  .dp__btns { margin-top: auto; }
}
@media (min-width: 960px) and (max-height: 840px) {
  .unit-page .crumbs { padding: 12px 0 14px; }
  .dp__head { padding-bottom: 12px; }
  .dp__title { font-size: 36px; }
  .dp__sub { margin-top: 10px; }
  .dp__price { padding: 14px 0 12px; }
  .dp__usd { font-size: 42px; }
  .dp__f { padding: 10px 0 9px; gap: 6px; }
  .dp__f > b { font-size: 19px; }
  .ladder { margin-top: 14px; }
  .dp__btns { padding-top: 14px; gap: 8px; }
  .cta { height: 48px; }
  .mode { padding: 14px 18px; }
}

/* ---------- модалка заявки ---------- */
.modal { position: fixed; inset: 0; background: rgba(14, 23, 32, .42); z-index: 200; display: none; align-items: center; justify-content: center; padding: 20px; }
.modal.is-on { display: flex; }
.modal__box { width: 100%; max-width: 560px; max-height: 100%; overflow: auto; background: var(--white); padding: 44px 44px 36px; position: relative; color: var(--taupe); }
.modal__close { position: absolute; inset-inline-end: 14px; top: 14px; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; color: var(--taupe); }
.modal__close .icon { width: 18px; height: 18px; }
.modal h2 { margin: 0 0 30px; padding-inline-end: 40px; font: 300 38px/1.06 var(--serif); letter-spacing: -.025em; color: var(--taupe); }
.mfield { display: block; margin-bottom: 20px; }
.mfield > span:first-child { display: block; margin-bottom: 4px; font-size: 11px; }
:root:lang(ka) .mfield > span:first-child, :root:lang(he) .mfield > span:first-child, :root:lang(ar) .mfield > span:first-child { font-size: 12px; }
.mfield input, .mfield textarea { width: 100%; height: 42px; border: 0; border-bottom: 1px solid var(--taupe-l); border-radius: 0; background: transparent; padding: 0; font: 400 16px/1.3 var(--sans); color: var(--taupe-d); outline: none; transition: border-color .25s; }
.mfield textarea { height: 72px; padding-top: 10px; resize: vertical; }
.mfield input:focus, .mfield textarea:focus { border-bottom-color: var(--taupe); }
.mfield input.is-error, .mfield textarea.is-error { border-bottom-color: var(--status-sold); }
.mfield .err { display: none; margin-top: 6px; font: 400 12px/1.3 var(--sans); color: var(--status-sold); }
.mfield.is-error .err { display: block; }
.modal .cta { margin-top: 14px; }
.modal__ok { display: none; font: 300 26px/1.25 var(--serif); letter-spacing: -.01em; color: var(--taupe); }
.modal__note { margin-top: 12px; min-height: 18px; font: 400 13px/1.4 var(--sans); color: var(--taupe); }
.modal__note.is-error { color: var(--status-sold); }
.modal.is-sent form { display: none; }
.modal.is-sent .modal__ok { display: block; }

/* toast */
.toast { position: fixed; left: 50%; bottom: 32px; transform: translateX(-50%); background: var(--taupe-d); color: var(--white); padding: 12px 18px; opacity: 0; transition: opacity .3s; pointer-events: none; z-index: 300; font-size: 11.5px; }
.toast.is-on { opacity: 1; }

/* cookie */
.cookie { position: fixed; inset-inline-start: 24px; bottom: 24px; max-width: 340px; background: var(--white); border: 1px solid var(--line-2); padding: 16px 18px; display: flex; flex-wrap: wrap; align-items: center; gap: 12px 18px; z-index: 100001; font: 400 13px/1.45 var(--sans); color: var(--taupe); }
.cookie > span { flex: 1 1 100%; }   /* Лев 03.11: карточка в углу вместо полосы на всю ширину — меньше закрывает */
.unit-page:not([hidden]) ~ .cookie { bottom: 104px; }   /* на странице квартиры не закрывать переключатель Plan / 3D / View / Building */
.cookie__more { white-space: nowrap; border-bottom: 1px solid var(--taupe-l); }
.cookie__more:hover { border-bottom-color: var(--taupe); }
.cookie__ok { margin-inline-start: auto; flex: none; height: 36px; padding: 0 18px; background: var(--taupe); color: var(--white); transition: background .3s; }
.cookie__ok:hover { background: var(--taupe-d); }

/* ---------- mobile (< 960) ---------- */
.mhead, .tabbar, .sheet { display: none; }
@media (max-width: 1180px) and (min-width: 960px) {
  :root { --pv-rail-w: 340px; }
  .pv-langs { gap: 12px; margin-inline-end: 4px; }
  .pv-call span { display: none; }
  .pv-call { width: 40px; padding: 0; }
  .seg { padding: 0 12px; }
}
@media (max-width: 959px) {
  .pv-bar { display: none; }
  .app { flex-direction: column; height: 100vh; height: 100dvh; }
  .rail, .rail-handle { display: none; }
  .scene { height: calc(100vh - 64px); height: calc(100dvh - 64px); flex: none; }
  .mhead { display: flex; position: absolute; left: 0; right: 0; top: 0; height: 56px; padding: 0 16px; z-index: 7; align-items: center; justify-content: space-between; background: var(--white); border-bottom: 1px solid var(--line); }
  .mhead .app-logo { font-size: 18px; }
  .mhead .icon-btns { display: flex; gap: 8px; }
  .mhead .ibtn { font: 500 12px/1 var(--sans); letter-spacing: .06em; text-transform: uppercase; }
  .capsule, .pv3d__rot { bottom: 12px; }
  .pv3d__tip { display: none; }
  .toggle, .sceneFloors .toggle { inset-inline-end: 16px; bottom: 12px; }
  .frame-label { display: flex; position: absolute; inset-inline-start: 16px; top: 68px; height: 32px; padding: 0 12px; align-items: center; background: var(--white); border: 1px solid var(--line-2); z-index: 2; }
  .upop { left: 0 !important; right: 0 !important; top: auto !important; bottom: 0; width: 100%; border: 0; border-top: 1px solid var(--line-2); z-index: 100; padding: 16px; }
  .upop__img .plan-fig { width: 100%; height: 170px; }
  .tabbar { display: flex; position: fixed; left: 0; right: 0; bottom: 0; height: 64px; background: var(--white); border-top: 1px solid var(--line-2); z-index: 8; padding-bottom: env(safe-area-inset-bottom); }
  .tabbar__i { flex: 1; min-width: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; color: var(--taupe); opacity: .55; position: relative; white-space: nowrap; font-size: 9.5px; letter-spacing: .04em; overflow: hidden; }
  :root:lang(ka) .tabbar__i, :root:lang(he) .tabbar__i, :root:lang(ar) .tabbar__i { font-size: 11px; }
  .tabbar__i .icon { width: 20px; height: 20px; stroke-width: 1.2; }
  .tabbar__i.is-active { opacity: 1; }
  .tabbar__i.is-active::before { content: ""; position: absolute; top: -1px; left: 18%; right: 18%; height: 1px; background: var(--taupe); }
  .tabbar__i .dot { position: absolute; top: 10px; inset-inline-end: calc(50% - 16px); width: 5px; height: 5px; background: var(--taupe); }
  .tabbar__i .badge-count { position: absolute; top: 6px; inset-inline-end: calc(50% - 22px); min-width: 16px; height: 16px; padding: 0 3px; background: var(--taupe); color: var(--white); font: 500 10px/16px var(--sans); text-align: center; }
  .sheet { display: flex; flex-direction: column; position: fixed; inset: 0; background: var(--white); z-index: 100; transform: translateY(100%); transition: transform .45s var(--ease); }
  .sheet.is-on { transform: none; }
  .sheet__head { height: 56px; flex: none; display: flex; align-items: center; justify-content: center; position: relative; font: 300 22px/1 var(--serif); letter-spacing: -.01em; color: var(--taupe); border-bottom: 1px solid var(--line); }
  .sheet__close { position: absolute; inset-inline-end: 12px; top: 50%; transform: translateY(-50%); width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; color: var(--taupe); }
  .sheet__close .icon { width: 16px; height: 16px; }
  .sheet__body { flex: 1; overflow: auto; padding: 4px 16px 24px; }
  .ssec { padding: 20px 0; border-top: 1px solid var(--line); }
  .ssec:first-child { border-top: 0; }
  .ssec__legend { margin-bottom: 16px; color: var(--taupe); }
  .ssec__legend b { font-weight: 500; color: var(--taupe-d); }
  .ssec .range { margin: 0 8px; }
  .checks { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 16px; }
  .chk { display: flex; align-items: center; gap: 10px; min-height: 26px; font: 400 14px/1.3 var(--sans); color: var(--taupe-d); cursor: pointer; }
  .chk .box { width: 16px; height: 16px; flex: none; border: 1px solid var(--taupe-l); display: flex; align-items: center; justify-content: center; color: var(--white); }
  .chk.is-on .box { background: var(--taupe); border-color: var(--taupe); }
  .chk .box .icon { width: 12px; height: 12px; stroke-width: 2; }
  .sheet__foot { flex: none; padding: 12px 16px calc(12px + env(safe-area-inset-bottom)); border-top: 1px solid var(--line); background: var(--white); }
  .sheet__cta { width: 100%; height: 52px; background: var(--taupe); color: var(--white); }
  .sheet__cta.is-disabled { background: var(--stone); color: var(--taupe); }
  .sheet .results { padding: 0; }
  .sheet .card { margin: 0; padding: 14px 0; }
  .sheet .fav-head { margin: 12px 0 0; font-size: 22px; }
  /* этажи */
  .sceneFloors.is-on { align-items: flex-start; }
  .plan-box, [dir="rtl"] .plan-box { padding: 128px 12px 70px; }
  .compass, .rose, .stepper, .pv-sec { display: none !important; }
  .pv-fno { display: none; }
  .mfloor { display: block; position: absolute; inset-inline: 16px; top: 64px; z-index: 6; }
  .mfloor .field__btn .val { font: 300 24px/1.2 var(--serif); letter-spacing: -.01em; text-transform: none; color: var(--taupe-d); }
  .mfloor .field__btn { min-height: 48px; }
  .mfloor .menu { max-height: 280px; }
  /* шахматка */
  .sceneChess { padding: 72px 0 0; padding-inline-start: 16px; }
  .legend { flex-wrap: wrap; gap: 10px 20px; padding-inline-end: 16px; margin-bottom: 16px; }
  .chess__scroll { padding-inline-end: 16px; }
  .chess { grid-template-columns: 44px max-content; }
  .chess__f { font-size: 16px; padding-inline-end: 10px; }
  .chess__head { display: flex; align-items: center; height: 33px; margin-bottom: 8px; position: sticky; top: 0; z-index: 3; background: var(--white); color: var(--taupe); }
  .chess__fspacer { display: block; height: 41px; background: var(--white); }
  .chess__row { padding-inline-start: 10px; }
  .chess__zoombar { margin-inline-start: -16px; height: 60px; }
  /* страница квартиры */
  .unit-page { padding: 0 16px 96px; }
  .up__head { height: 56px; margin: 0 -16px; padding: 0 16px; }
  .up__head .app-logo { font-size: 18px; }
  .crumbs { padding: 16px 0; flex-wrap: nowrap; }
  .crumbs__sep, .crumbs__cur { display: none; }
  .actions { gap: 8px; }
  .actions .act span { display: none; }
  .actions .act { width: 40px; height: 40px; justify-content: center; border: 1px solid var(--taupe-l); padding: 0; }
  .up__main { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .up__stage { height: min(82vw, 380px); padding: 14px; }
  .up__stage.is-view, .up__stage.is-building { padding: 0; }
  .up__modes { flex-wrap: wrap; gap: 0 16px; }
  .modes { overflow-x: auto; }
  .mode { padding: 14px 14px; }
  .up__cap { flex: 1 1 100%; text-align: start; padding: 0 0 12px; }
  .up__cap:empty { display: none; }
  .dp__title { font-size: 34px; }
  .dp__usd { font-size: 40px; }
  .dp__f { padding: 11px 0 10px; }
  .dp__btns { display: none; }
  .up__cta-mobile { display: flex; gap: 8px; position: fixed; left: 0; right: 0; bottom: 0; padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); background: var(--white); border-top: 1px solid var(--line-2); z-index: 30; }
  .up__cta-mobile .cta { flex: 1; height: 48px; padding: 0 14px; }
  .modal { padding: 0; align-items: flex-end; }
  .modal__box { padding: 32px 20px 24px; }
  .modal h2 { font-size: 30px; }
  .cookie { inset-inline-start: 12px; bottom: 76px; max-width: min(340px, calc(100% - 24px)); padding: 14px 16px; }
}
@media (min-width: 960px) { .mhead, .tabbar, .sheet, .mfloor { display: none !important; } }

/* he/ar: подписи приложения пока на английском — направление строки по её первой букве, чтобы «2-bedroom» не переворачивался */
[dir="rtl"] .pv-floor__row .t, [dir="rtl"] .badge, [dir="rtl"] .dp__title > span:first-child, [dir="rtl"] .menu__item > span, [dir="rtl"] .chk > span:last-child { unicode-bidi: plaintext; }
[dir="rtl"] .field.is-filled .field__btn .val { direction: ltr; text-align: left; }
