:root{
  --green:#7CB342;--green-d:#4E7A24;--dd:#2E3B1F;--ink:#1A1A1A;--lime:#A8D60A;--yellow:#FDD100;
  --paper:#F6F7F2;--card:#FFFFFF;--line:#E4E7DD;--muted:#6B726A;
  --sans:'Montserrat',system-ui,sans-serif;--mono:'JetBrains Mono',monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--sans);background:var(--paper);color:var(--ink);line-height:1.55;-webkit-font-smoothing:antialiased}
::selection{background:var(--green);color:#fff}
.wrap{max-width:1180px;margin:0 auto;padding:0 clamp(16px,4vw,40px)}
.mono{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}

/* плашка предпросмотра версии (видна только админу) */
.pvbar{position:fixed;left:0;right:0;bottom:0;z-index:9999;background:#123A28;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 18px;font-size:.9rem;box-shadow:0 -10px 30px -12px rgba(0,0,0,.6);flex-wrap:wrap}
.pvbar b{color:var(--yellow)}
.pvbar .pvacts{display:flex;align-items:center;gap:8px;flex-shrink:0}
.pvbar #pvApply{background:var(--green);color:#fff;border:0;border-radius:9px;padding:9px 16px;font-weight:700;font-family:inherit;font-size:.88rem;cursor:pointer}
.pvbar #pvApply:hover{background:#6aa033}
.pvbar #pvApply:disabled{opacity:.6;cursor:default}
.pvbar .pvclose{color:rgba(255,255,255,.82);text-decoration:underline;font-size:.85rem}
.pvbar .pvclose:hover{color:#fff}
body.has-pvbar{padding-bottom:60px}
/* header */
header{position:sticky;top:0;z-index:100;background:var(--dd);color:#fff;padding-top:env(safe-area-inset-top,0)}
.bar{display:flex;align-items:center;gap:18px;padding:10px 0}
@media(max-width:880px){header .wrap{padding-left:20px;padding-right:16px}.bar{gap:12px}}
.logo{display:flex;align-items:center;flex-shrink:0}
.logo img{height:36px;width:auto;object-fit:contain;display:block}
@media(max-width:520px){.logo img{height:30px}}
nav.main{display:flex;gap:20px;margin-left:14px}
nav.main a{font-size:.82rem;font-weight:600;color:rgba(255,255,255,.85);transition:color .2s;white-space:nowrap}
nav.main a:hover{color:var(--yellow)}
.bar .right{margin-left:auto;display:flex;align-items:center;gap:14px;flex-shrink:0}
.bar .phone{font-weight:700;font-size:.92rem;color:#fff;white-space:nowrap}
.bar .cta{background:var(--yellow);color:var(--ink);font-weight:700;font-size:.82rem;padding:10px 16px;border-radius:9px;transition:transform .15s}
.bar .cta:hover{transform:translateY(-2px)}
@media(max-width:880px){nav.main,.bar .phone{display:none}}
/* Десктоп: лого слева, меню по центру, кнопки справа — заполняют всю ширину.
   Переключатель версий A/B/C/И в шапке не показываем (он плавающий внизу справа). */
@media(min-width:881px){
  nav.main{flex:1;justify-content:center;margin:0}
  .bar .right{margin-left:0}
}
header .verswitch{display:none}
/* бургер-меню (мобильное) */
.burger{display:none;width:42px;height:42px;border:1px solid rgba(255,255,255,.25);border-radius:10px;background:none;cursor:pointer;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:0;flex-shrink:0}
.burger span{display:block;width:19px;height:2px;background:#fff;border-radius:2px;transition:transform .25s,opacity .2s}
.burger.on span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.burger.on span:nth-child(2){opacity:0}
.burger.on span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
.mobnav{display:none;flex-direction:column;overflow:hidden;max-height:0;transition:max-height .32s ease;background:var(--dd)}
.mobnav.open{max-height:560px}
.mobnav a{color:rgba(255,255,255,.9);font-weight:600;font-size:1.02rem;padding:14px 22px;border-top:1px solid rgba(255,255,255,.08)}
.mobnav a:hover{color:var(--yellow)}
.mobnav .mobnav-cta{background:var(--yellow);color:var(--ink);font-weight:800;border:0;text-align:center;margin:12px 18px 16px;border-radius:11px;padding:14px}
@media(max-width:880px){.burger{display:flex}.mobnav{display:flex}}
/* плавающий переключатель версий — всегда внизу справа (рядом со стрелкой «наверх»),
   и на десктопе тоже: так он не занимает место в шапке. Временный, потом уберём. */
.verswitch-m{display:flex;position:fixed;right:14px;bottom:64px;z-index:60;gap:3px;background:rgba(46,59,31,.5);backdrop-filter:blur(5px);padding:4px;border-radius:100px;box-shadow:0 8px 22px -10px rgba(0,0,0,.5)}
.verswitch-m a{width:29px;height:29px;display:flex;align-items:center;justify-content:center;border-radius:50%;font-weight:800;font-size:.8rem;color:rgba(255,255,255,.85)}
.verswitch-m a.on{background:var(--yellow);color:var(--ink)}
.verswitch-m .vm-i{color:var(--lime,#CFEB6B)}

/* hero */
.hero{position:relative;color:#fff;min-height:clamp(440px,72vh,640px);display:flex;align-items:center;overflow:hidden}
.hero .bg{position:absolute;inset:0;background-size:cover;background-position:center}
.hero .ov{position:absolute;inset:0;background:linear-gradient(90deg,rgba(20,30,15,.92) 0%,rgba(20,30,15,.72) 45%,rgba(20,30,15,.25) 100%)}
.hero .wrap{position:relative;z-index:2;padding:60px 0}
.hero .badge{display:inline-flex;align-items:center;gap:9px;background:var(--green);border:0;color:#fff;font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;padding:8px 14px;border-radius:100px;margin-bottom:22px;box-shadow:0 6px 16px -6px rgba(0,0,0,.5)}
.hero h1{font-weight:900;font-size:clamp(2.4rem,6vw,4.6rem);line-height:.98;letter-spacing:-.025em}
.hero p{margin-top:18px;max-width:520px;font-size:1.12rem;color:rgba(255,255,255,.88)}
.hero .btns{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}
.btn{font-weight:700;font-size:.92rem;padding:14px 24px;border-radius:11px;border:none;cursor:pointer;transition:transform .15s,background .2s;display:inline-block}
.btn.pri{background:var(--green);color:#fff}
.btn.pri:hover{background:#6aa033;transform:translateY(-2px)}
.btn.y{background:var(--yellow);color:var(--ink)}
.btn.y:hover{transform:translateY(-2px)}
.btn.gh{background:transparent;border:1.5px solid rgba(255,255,255,.5);color:#fff}
.btn.gh:hover{border-color:var(--yellow);color:var(--yellow)}
.hero .info{display:flex;gap:22px;flex-wrap:wrap;margin-top:34px;font-size:.86rem}
.hero .info div{display:flex;align-items:center;gap:8px}
.hero .info b{color:var(--yellow)}

/* section shell */
section{padding:clamp(48px,7vw,88px) 0}
.sh{margin-bottom:34px}
.sh .k{font-family:var(--mono);font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;color:var(--green-d)}
.sh h2{font-weight:800;font-size:clamp(1.7rem,4vw,2.8rem);letter-spacing:-.02em;margin-top:8px;line-height:1.05}
.sh h2 b{color:var(--green)}

/* «Услуги и сервисы»: единая карточка для преимуществ (.ac) и услуг (.svc .si).
   Одинаковый размер, иконка в тайле по центру над текстом, заголовки одного веса/кегля. */
.adv{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}
@media(max-width:860px){.adv{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.adv{grid-template-columns:1fr}}
.ac,.svc .si{display:flex;flex-direction:column;align-items:center;text-align:center;
  background:var(--card);border:1px solid var(--line);border-radius:18px;padding:28px 18px;min-height:180px}
.ac .ic,.svc .si .e{width:56px;height:56px;flex-shrink:0;border-radius:15px;background:#EAF3E0;color:var(--green-d);
  display:flex;align-items:center;justify-content:center;font-size:1.5rem;margin-bottom:16px}
.svgico svg{width:28px;height:28px;display:block}
.ac b,.svc .si b{font-weight:800;font-size:1.18rem;line-height:1.22;color:var(--ink);display:block}
.ac span,.svc .si span{display:block;font-size:.85rem;color:var(--muted);line-height:1.45;margin-top:8px}

/* catalog */
.catbar{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;margin-bottom:20px}
.search{display:flex;gap:10px;border:1.5px solid var(--ink);border-radius:12px;overflow:hidden;margin-bottom:14px}
.search input{flex:1;border:none;outline:none;padding:14px 16px;font-family:var(--sans);font-size:1rem}
.search button{background:var(--green);color:#fff;border:none;padding:0 22px;font-weight:700;cursor:pointer}
.filters{display:flex;gap:18px;flex-wrap:wrap;align-items:center}
.fg{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.fg .lab{font-family:var(--mono);font-size:.56rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.chip{font-size:.82rem;border:1px solid var(--line);background:#fff;padding:7px 13px;border-radius:100px;cursor:pointer;transition:all .18s}
.chip.on,.chip:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.cnt{margin-left:auto;font-family:var(--mono);font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.cnt b{color:var(--green-d)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:12px}
.shop{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:11px;display:flex;align-items:center;gap:10px;color:inherit;transition:transform .2s,box-shadow .2s,border-color .2s}
.shop:hover{transform:translateY(-3px);box-shadow:0 14px 30px -20px rgba(0,0,0,.35);border-color:var(--green)}
.shop .mk{width:42px;height:42px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff;font-size:1.05rem;flex-shrink:0;overflow:hidden}
.shop .mk img{width:100%;height:100%;object-fit:contain;background:#fff}
.shop .mk:has(img){background:#fff!important;border:1px solid var(--line)}
.shop .ti{min-width:0;flex:1}
/* Магазин «Скоро»: плашка в углу карточки + лёгкое приглушение */
.shop.is-soon{position:relative}
.shop.is-soon .mk,.shop.is-soon h3{opacity:.85}
.shop-soon{position:absolute;top:-7px;right:8px;z-index:2;background:var(--yellow);color:#1A1A1A;font-size:.62rem;font-weight:800;letter-spacing:.02em;padding:3px 8px;border-radius:100px;box-shadow:0 4px 10px -4px rgba(0,0,0,.4)}
/* Своя иконка-картинка (если загружена вместо эмодзи) — в том же тайле, тот же размер */
.ac .ic.icimg,.svc .si .e.icimg{background:#EAF3E0}
.ac .ic.icimg img,.svc .si .e.icimg img{width:30px;height:30px;object-fit:contain;display:block}
/* Карточка магазина (отдельная страница shop.php): логотип — contain, плашка «Скоро» */
.shopd .badge-img:has(img){background:#fff!important;border:1px solid var(--line)}
.shopd .badge-img img{object-fit:contain;padding:8px}
.shopd-soon{display:inline-block;vertical-align:middle;background:var(--yellow);color:#1A1A1A;font-size:.6em;font-weight:800;padding:4px 10px;border-radius:100px;margin-left:8px}
/* Перенос: целые слова, мягкая авто-расстановка переносов (lang=ru), без «висячих» одиночных букв; ломаем по слогам только если слово реально не влезает */
.shop h3{font-size:.86rem;font-weight:700;line-height:1.18;overflow-wrap:break-word;word-break:normal;hyphens:auto;-webkit-hyphens:auto;text-wrap:pretty;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.shop .cat{font-size:.74rem;color:var(--muted);display:block;margin-top:1px}
.shop .pav{display:inline-block;margin-top:4px;font-family:var(--mono);font-size:.64rem;font-weight:700;letter-spacing:.02em;color:var(--green-d);background:var(--green-bg,#dfecd0);padding:2px 7px;border-radius:100px}
.empty{grid-column:1/-1;text-align:center;color:var(--muted);padding:40px}

/* floorplan */
.fp{background:var(--dd);color:#fff;border-radius:20px;overflow:hidden;display:grid;grid-template-columns:1fr 1fr}
@media(max-width:820px){.fp{grid-template-columns:1fr}}
.fp .txt{padding:clamp(26px,4vw,44px)}
.fp .txt h3{font-weight:800;font-size:1.7rem;margin-bottom:12px}
.fp .txt p{color:rgba(255,255,255,.8);font-size:.95rem;margin-bottom:18px}
.fp .txt .opt{display:inline-flex;align-items:center;gap:8px;background:rgba(168,214,10,.15);border:1px solid rgba(168,214,10,.4);color:var(--lime);font-size:.8rem;padding:9px 14px;border-radius:100px}
.fp .img{background:#fff;display:flex;align-items:center;justify-content:center;padding:18px}
.fp .img img{border-radius:10px}

/* rent */
.rent{display:grid;grid-template-columns:1.2fr 1fr;gap:30px;align-items:center;background:linear-gradient(120deg,#EAF3E0,#F6F7F2);border:1px solid var(--line);border-radius:20px;padding:clamp(26px,4vw,44px)}
@media(max-width:820px){.rent{grid-template-columns:1fr}}
.rent h3{font-weight:800;font-size:clamp(1.5rem,3vw,2.2rem);line-height:1.08;margin-bottom:12px}
.rent h3 b{color:var(--green)}
.rent ul{list-style:none;margin:14px 0}
.rent li{font-size:.92rem;padding:5px 0 5px 24px;position:relative}
.rent li::before{content:"✓";position:absolute;left:0;color:var(--green);font-weight:800}
.rform{background:#fff;border:1px solid var(--line);border-radius:16px;padding:24px}
.rform h4{font-weight:800;font-size:1.2rem;margin-bottom:14px}
.rform input{width:100%;border:1px solid var(--line);border-radius:10px;padding:12px 14px;font-family:var(--sans);font-size:.95rem;margin-bottom:10px;outline:none}
.rform input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(124,179,66,.15)}
.rform .lf-hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none;margin:0}
.rform .lf-note{margin:8px 0 0;font-size:.82rem;color:#C0392B;text-align:center}
.rform .ok{display:none;text-align:center;padding:20px}
.rform .ok.show{display:block}
.rform .ok .c{width:54px;height:54px;border-radius:50%;background:#EAF3E0;color:var(--green-d);display:flex;align-items:center;justify-content:center;font-size:1.6rem;margin:0 auto 12px}

/* news */
.news{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media(max-width:820px){.news{grid-template-columns:1fr}}
.nc2{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;transition:transform .2s,box-shadow .2s;cursor:pointer}
.nc2:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.nc2:hover{transform:translateY(-4px);box-shadow:0 16px 34px -22px rgba(0,0,0,.3)}
.nc2 .im{aspect-ratio:16/9;background-size:cover;background-position:center;background-color:#EAF3E0}
.nc2 .b{padding:20px}
.nc2 .dt{font-family:var(--mono);font-size:.58rem;letter-spacing:.06em;text-transform:uppercase;color:var(--green-d)}
.nc2 h4{font-weight:700;font-size:1.05rem;margin:8px 0 6px}
.nc2 p{font-size:.86rem;color:var(--muted)}

/* events / афиша */
.events{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
@media(max-width:820px){.events{grid-template-columns:1fr}}
.ev{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;transition:transform .2s,box-shadow .2s}
.ev:hover{transform:translateY(-4px);box-shadow:0 16px 34px -22px rgba(0,0,0,.3)}
.ev .im{aspect-ratio:16/9;background-size:cover;background-position:center;background-color:#EAF3E0;position:relative}
.ev .date{position:absolute;left:12px;top:12px;background:var(--yellow);color:var(--ink);border-radius:10px;text-align:center;padding:7px 11px;line-height:1;font-weight:800}
.ev .date .d{font-size:1.3rem;display:block}
.ev .date .m{font-size:.56rem;text-transform:uppercase;letter-spacing:.06em;margin-top:3px;display:block}
.ev .b{padding:18px 20px;flex:1;display:flex;flex-direction:column}
.ev .when{font-family:var(--mono);font-size:.58rem;letter-spacing:.06em;text-transform:uppercase;color:var(--green-d)}
.ev h4{font-weight:700;font-size:1.08rem;margin:7px 0 6px}
.ev p{font-size:.88rem;color:var(--muted)}
.ev.past{opacity:.6}
.ev.past .date{background:#D7DCCF}
.events-empty{color:var(--muted)}
.past-toggle{margin-top:22px;font-size:.86rem;color:var(--green-d);font-weight:700;cursor:pointer;background:none;border:none;font-family:inherit}

/* contacts + map */
.contacts{display:grid;grid-template-columns:1fr 1.3fr;gap:24px}
@media(max-width:820px){.contacts{grid-template-columns:1fr}}
.cinfo{display:flex;flex-direction:column;gap:14px}
.ci{display:flex;gap:14px;align-items:flex-start;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:18px}
.ci .e{font-size:1.3rem}
.ci .k{font-family:var(--mono);font-size:.56rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.ci b{font-size:1rem}
.mapbox{border-radius:16px;overflow:hidden;border:1px solid var(--line);min-height:340px}
.mapbox iframe{width:100%;height:100%;min-height:340px;border:0;display:block}

/* footer */
/* --foot-bg — цвет подвала (по умолчанию фирменный тёмно-зелёный, в CMS переопределяется инлайном).
   box-shadow тем же цветом продолжает подвал бесконечно вниз — чтобы под подвалом (и при «оттяжке»
   страницы) не белело. Тень не влияет на высоту страницы и не добавляет прокрутку. */
footer{--foot-bg:var(--dd);background:var(--foot-bg);box-shadow:0 100vh 0 100vh var(--foot-bg);color:rgba(255,255,255,.75);padding:50px 0 28px}
.fg2{display:grid;grid-template-columns:1.6fr 1fr 1fr 1.1fr;gap:28px;padding-bottom:28px;border-bottom:1px solid rgba(255,255,255,.12)}
@media(max-width:900px){.fg2{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.fg2{grid-template-columns:1fr}}
.fg2 .fl img{height:58px;width:auto;max-width:100%;object-fit:contain;display:block}
.fg2 p{font-size:.86rem;margin-top:8px;max-width:280px}
.fcol h5{font-family:var(--mono);font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--lime);margin-bottom:12px}
.fcol a,.fcol span{display:block;font-size:.88rem;padding:3px 0;color:rgba(255,255,255,.78)}
.fbot{padding-top:20px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-family:var(--mono);font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;color:rgba(255,255,255,.5);align-items:center}
.fbot .adminlink{color:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.18);padding:6px 12px;border-radius:100px;transition:all .2s}
.fbot .adminlink:hover{color:var(--yellow);border-color:var(--yellow)}
.totop{position:fixed;right:18px;bottom:18px;z-index:60;width:46px;height:46px;border-radius:50%;border:none;background:var(--green);color:#fff;font-size:1.4rem;line-height:1;cursor:pointer;box-shadow:0 10px 26px -10px rgba(0,0,0,.5);opacity:0;visibility:hidden;transform:translateY(12px);transition:opacity .25s,transform .25s,visibility .25s,background .15s}
.totop.show{opacity:1;visibility:visible;transform:none}
.totop:hover{background:var(--green-d)}
@media(max-width:560px){.totop{right:14px;bottom:14px;width:42px;height:42px}}
.fbot a.leg{color:rgba(255,255,255,.5)}
.fbot a.leg:hover{color:var(--yellow)}
/* скрытый вход для администратора: символ © в копирайте — выглядит как обычный текст, кликабелен */
.fbot .adminhint{color:inherit;text-decoration:none;cursor:pointer}
.fbot .adminhint:hover{color:var(--yellow)}
footer.foot-light .fbot .adminhint:hover{color:var(--green-d)}

/* services — сетка; grid-auto-rows:1fr делает все ряды одной высоты, карточки тянутся → все блоки равны */
.svc{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:1fr;gap:14px}
@media(max-width:860px){.svc{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.svc{grid-template-columns:1fr}}

/* gallery */
.gal{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
@media(max-width:860px){.gal{grid-template-columns:1fr 1fr}}
.gal .gi{position:relative;border-radius:14px;overflow:hidden;aspect-ratio:4/3;background:#EAF3E0}
.gal .gi img{width:100%;height:100%;object-fit:cover;transition:transform .4s}
.gal .gi:hover img{transform:scale(1.05)}
.gal .gi span{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(0deg,rgba(20,30,15,.85),transparent);color:#fff;font-size:.8rem;padding:18px 14px 10px}

/* vacancies */
.vac{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
@media(max-width:760px){.vac{grid-template-columns:1fr}}
.vc{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px}
.vc h4{font-weight:700;font-size:1.08rem;margin-bottom:4px}
.vc .pl{font-family:var(--mono);font-size:.56rem;letter-spacing:.08em;text-transform:uppercase;color:var(--green-d);margin-bottom:8px}
.vc p{font-size:.9rem;color:var(--muted)}
.vac-cta{margin-top:18px;font-size:.92rem}
.vac-empty{color:var(--muted)}

/* cookie banner */
.cookie{position:fixed;left:14px;right:14px;bottom:14px;z-index:400;max-width:680px;margin:0 auto;background:var(--dd);color:#fff;border-radius:14px;padding:16px 18px;display:flex;gap:16px;align-items:center;box-shadow:0 18px 50px -18px rgba(0,0,0,.6);font-size:.86rem}
.cookie.hide{display:none}
.cookie p{flex:1;color:rgba(255,255,255,.85)}
.cookie a{color:var(--yellow);text-decoration:underline}
.cookie button{background:var(--yellow);color:var(--ink);border:none;font-family:inherit;font-weight:700;font-size:.84rem;padding:10px 18px;border-radius:9px;cursor:pointer;white-space:nowrap}
@media(max-width:560px){.cookie{flex-direction:column;align-items:stretch;text-align:center}}

/* breadcrumb */
.crumb{font-size:.82rem;color:var(--muted);padding:18px 0 0}
.crumb a{color:var(--green-d)}
.crumb a:hover{text-decoration:underline}

/* shop detail page */
.shopd{padding:30px 0 70px}
.shopd .top{display:flex;gap:22px;align-items:center;flex-wrap:wrap;margin:18px 0 26px}
.shopd .badge-img{width:88px;height:88px;border-radius:18px;display:flex;align-items:center;justify-content:center;font-weight:800;color:#fff;font-size:2.2rem;flex-shrink:0;overflow:hidden}
.shopd .badge-img img{width:100%;height:100%;object-fit:contain;padding:8px}
.shopd .ttl h1{font-weight:900;font-size:clamp(1.8rem,4vw,2.6rem);line-height:1.05;letter-spacing:-.02em}
.shopd .ttl .cat{font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--green-d);margin-top:6px}
.shopd .layout{display:grid;grid-template-columns:1.4fr 1fr;gap:28px;align-items:start}
@media(max-width:820px){.shopd .layout{grid-template-columns:1fr}}
.shopd .photo{border-radius:18px;overflow:hidden;border:1px solid var(--line);background:#fff;aspect-ratio:16/10}
.shopd .photo img{width:100%;height:100%;object-fit:contain;padding:18px}
.shopd .desc{font-size:1rem;color:#333;margin-top:18px;white-space:pre-line}
.shopd .promo{background:#FFF7D6;border:1px solid #F2DE8A;border-radius:14px;padding:16px 18px;margin-top:18px;font-size:.95rem}
.shopd .promo b{color:#9A7B12}
.shopd .info{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px}
/* Строки инфо — подпись над значением (симметрично, без «разъезда» в разные концы) */
.shopd .info .ir{display:flex;flex-direction:column;gap:3px;padding:11px 0;border-bottom:1px dashed var(--line)}
.shopd .info .ir:last-child{border-bottom:none}
.shopd .info .ir .lab{color:var(--muted);font-size:.66rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.shopd .info .ir>span:last-child{font-size:.96rem;font-weight:600;color:var(--ink)}
.shopd .info .ir>span:last-child a{color:var(--green-d);font-weight:700}
.shopd .info .ir-pav .pav-val{display:inline-block;align-self:flex-start;font-family:var(--mono);font-weight:700;font-size:.92rem;color:var(--green-d);background:var(--green-bg,#dfecd0);padding:3px 12px;border-radius:100px;letter-spacing:.02em}
.shopd .info .links{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.shopd .info .links a{font-size:.82rem;font-weight:700;border:1px solid var(--line);padding:8px 14px;border-radius:100px;transition:all .18s}
.shopd .info .links a:hover{border-color:var(--green);color:var(--green-d)}
.shopd .notfound{text-align:center;padding:60px 0}

/* interactive floor map */
.planwrap{margin-top:6px}
.floortabs{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:16px}
.ftab{font-weight:700;font-size:.86rem;border:1px solid var(--line);background:#fff;color:var(--ink);padding:9px 18px;border-radius:100px;cursor:pointer;transition:all .18s;font-family:inherit}
.ftab:hover{border-color:var(--green)}
.ftab.on{background:var(--dd);color:#fff;border-color:var(--dd)}
.maplegend{display:flex;gap:16px;flex-wrap:wrap;margin-left:auto;font-size:.8rem;color:var(--muted);align-items:center}
.maplegend span{display:flex;align-items:center;gap:6px}
.maplegend i{width:14px;height:14px;border-radius:4px;border:1px solid rgba(0,0,0,.15);display:inline-block}
.mapstage{position:relative;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:clamp(14px,3vw,28px);overflow:hidden}
/* will-change только во время перетаскивания: в покое слой не кэшируется растром → зум остаётся
   векторно-чётким (иначе текст/линии «пикселят» при увеличении). */
.mapsvg{display:flex;justify-content:center;transform-origin:0 0;transition:transform .14s ease-out}
.mapstage.grabbing .mapsvg{transition:none;will-change:transform}
.mapsvg svg.floorplan{width:100%;height:auto;max-height:74vh;display:block}
.mapsvg svg.floorplan [data-room]{transition:opacity .15s}
/* Тонкая изящная обводка помещений (бенто): мягкий тёмно-зелёный 1px, не «жирнеет» при зуме,
   скруглённые стыки. Перебивает «жирные» инлайн-обводки исходного плана. */
.mapsvg svg.floorplan [data-room] .st_room{stroke:#3c5a43;stroke-width:1.1;vector-effect:non-scaling-stroke;stroke-linejoin:round;transition:filter .14s,stroke .14s,stroke-width .14s}
.mapsvg svg.floorplan [data-room]:hover .st_room{filter:brightness(1.05);stroke:#1f3a26;stroke-width:2.1}
/* техническое помещение / МОП — не кликается, не реагирует на наведение (pointer-events отключены в JS) */
.mapsvg svg.floorplan [data-room].rm-tech{cursor:default}
.mapsvg svg.floorplan [data-room].rm-tech:hover .st_room{filter:none;stroke:none}
.mapstage.zoomed .mapsvg{cursor:grab}
.mapstage.zoomed.grabbing .mapsvg,.mapstage.zoomed.grabbing{cursor:grabbing;user-select:none}
.mapzoom{position:absolute;right:14px;bottom:14px;z-index:15;display:flex;flex-direction:column;gap:6px}
.mapzoom button{width:38px;height:38px;border:1px solid var(--line);background:#fff;border-radius:10px;font-size:1.25rem;font-weight:700;cursor:pointer;color:var(--ink);box-shadow:0 4px 12px -6px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;line-height:1;font-family:inherit;padding:0}
.mapzoom button:hover{border-color:var(--green);color:var(--green)}
.mapzoom button[data-z=reset]{font-size:1.05rem}
.maphint{font-size:.85rem;color:var(--muted);margin-top:12px}
/* раскладка: схема + постоянная боковая панель помещения (как на dsupport) */
.mapcols{display:grid;grid-template-columns:1fr;gap:16px;align-items:start}
@media(min-width:900px){.mapcols{grid-template-columns:minmax(0,1fr) 314px}}
.roominfo{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;min-height:130px}
@media(min-width:900px){.roominfo{position:sticky;top:84px}}
.ri-empty{color:var(--muted);font-size:.9rem;line-height:1.5;display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.ri-empty-ic{font-size:1.5rem;opacity:.7}
.ri-kicker{font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--green);margin-bottom:8px}
.ri-logo{height:46px;margin-bottom:10px;display:flex;align-items:center}
.ri-logo img{max-height:46px;max-width:170px;object-fit:contain}
.ri-title{font-weight:800;font-size:1.18rem;line-height:1.18;color:var(--ink)}
.ri-desc{font-size:.86rem;color:var(--green-d);margin-top:5px;line-height:1.35}
.ri-id{font-size:.8rem;color:var(--muted);margin-top:3px}
.ri-st{display:inline-block;font-size:.72rem;font-weight:700;padding:4px 11px;border-radius:100px;margin:12px 0 2px}
.ri-st.free{background:#EAF3E0;color:var(--green-d)}
.ri-st.reserved{background:#FCEACB;color:#9A6312}
.ri-st.occupied{background:#E7EBE3;color:#5C6450}
.ri-rows{margin:14px 0 2px;border-top:1px solid var(--line)}
.ri-row{display:flex;justify-content:space-between;gap:14px;align-items:baseline;padding:10px 0;border-bottom:1px solid var(--line);font-size:.9rem}
.ri-row span{color:var(--muted)}
.ri-row b{color:var(--ink);font-weight:700;text-align:right;white-space:nowrap}
.ri-row.ri-total b{font-size:1.06rem;color:var(--green-d)}
.ri-row.ri-muted span{font-size:.85rem;line-height:1.4}
.ri-book{display:block;text-align:center;margin-top:16px;background:var(--green);color:#fff;font-weight:700;font-size:.92rem;padding:12px;border-radius:11px;transition:background .15s}
.ri-book:hover{background:#6aa033}
.ri-book.ghost{background:#fff;color:var(--green-d);border:1px solid var(--green);margin-top:10px}
.ri-book.ghost:hover{background:#F0F6E8}
.ri-note{font-size:.85rem;color:var(--muted);margin-top:14px;line-height:1.45}
/* подсветка выбранного помещения: чистое кольцо бренд-зелёным + лёгкое осветление (бенто) */
.mapsvg svg.floorplan [data-room].sel{filter:brightness(1.04)}
.mapsvg svg.floorplan [data-room].sel .st_room{stroke:#2f6b1f;stroke-width:2.6;vector-effect:non-scaling-stroke}
/* выбрано помещение → остальная карта тускнеет по насыщенности, выбранное остаётся насыщенным.
   Фильтр на ГРУППЕ помещения (а не на .st_room) — чтобы работало и в модулях 2/3, где у фигур нет класса .st_room. */
.mapsvg.sel-on svg.floorplan [data-room]:not(.sel){filter:saturate(.2)}
/* плейсхолдер «##» у помещения без номера — чуть бледнее обычного номера */
.mapsvg svg.floorplan .rmnum-ph{opacity:.5}
/* «Показать на плане»: пульсирующая подсветка найденного помещения */
@keyframes vdmapfocus{0%,100%{stroke-opacity:.45}50%{stroke-opacity:1}}
.mapsvg svg.floorplan [data-room].rm-focus .st_room{stroke:#2f6b1f;stroke-width:2.8;vector-effect:non-scaling-stroke;animation:vdmapfocus 1.1s ease-in-out 4}

/* --- Форма обратной связи --- */
#feedback .fbform-wrap{max-width:640px;margin:0 auto}
.fbform-lead{color:var(--muted);font-size:.92rem;margin-bottom:18px;text-align:center}
.fbform .row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:560px){.fbform .row2{grid-template-columns:1fr}}
.fbform .field{margin-bottom:14px}
.fbform label{display:block;font-size:.8rem;font-weight:600;color:var(--ink);margin-bottom:6px}
.fbform .req{color:#E63A45}
.fbform input[type=text],.fbform input[type=tel],.fbform input[type=email],.fbform textarea{width:100%;border:1.5px solid var(--line);border-radius:11px;padding:13px 15px;font-family:inherit;font-size:1rem;outline:none;background:#fff;color:var(--ink)}
.fbform input:focus,.fbform textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(124,179,66,.15)}
.fbform textarea{resize:vertical;min-height:96px}
/* Кастомная кнопка выбора фото в фирменных цветах (нативный input скрыт, но доступен) */
.fbfile input[type=file]{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0);pointer-events:none}
.fbform .fbfile-btn{display:inline-flex;width:auto;align-items:center;gap:8px;cursor:pointer;background:#fff;border:1.5px solid var(--green);color:var(--green-d);font-weight:700;font-size:.92rem;margin:0;padding:10px 16px;border-radius:100px;transition:background .15s,box-shadow .15s}
.fbform .fbfile-btn:hover{background:#F0F6E8}
.fbform .fbfile-btn:focus-within{box-shadow:0 0 0 3px rgba(124,179,66,.22)}
.fbform .fbfile-btn:active{transform:translateY(1px)}
.fbfile-ic{font-size:1rem;line-height:1}
.fbfile-names{display:inline-block;margin-left:10px;font-size:.85rem;color:var(--muted)}
.fbfile-names.has{color:var(--green-d);font-weight:600}
/* Кастомный чекбокс согласия: бокс + текст всегда в одну строку */
.fbform .fbconsent{display:flex;align-items:center;gap:10px;font-size:.85rem;color:var(--muted);font-weight:400;margin:4px 0 16px;cursor:pointer}
.fbconsent input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}
.fbconsent .fbcheck{flex-shrink:0;width:22px;height:22px;border:2px solid var(--green);border-radius:7px;background:#fff;position:relative;transition:background .15s,border-color .15s}
.fbconsent .fbcheck:after{content:"";position:absolute;left:7px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg) scale(0);transition:transform .15s}
.fbconsent input:checked + .fbcheck{background:var(--green);border-color:var(--green)}
.fbconsent input:checked + .fbcheck:after{transform:rotate(45deg) scale(1)}
.fbconsent input:focus-visible + .fbcheck{box-shadow:0 0 0 3px rgba(124,179,66,.25)}
.fbconsent-txt{line-height:1.3}
.fbconsent a{color:var(--green-d);font-weight:600}
.fb-hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0;pointer-events:none}
.fbsubmit{width:100%}
.fbnote{margin-top:12px;font-size:.88rem;border-radius:10px;padding:11px 14px;text-align:center}
.fbnote[hidden]{display:none}
.fbnote.err{background:#FDECEA;color:#C0392B}
.fbnote.warn{background:#FFF3C4;color:#7a5b00}
.fbok[hidden]{display:none}
.fbok{text-align:center;background:#fff;border:1px solid var(--line);border-radius:16px;padding:34px 24px;max-width:640px;margin:0 auto}
.fbok .c{width:54px;height:54px;border-radius:50%;background:var(--green);color:#fff;font-size:1.6rem;display:flex;align-items:center;justify-content:center;margin:0 auto 14px}
.fbok b{font-size:1.15rem;display:block}
.fbok p{color:var(--muted);font-size:.9rem;margin-top:6px}
.fbok.warn .c{background:#E8A200}

/* --- Окружение плана: дорога, газон, парковка, вход --- */
.mapsite{border-radius:18px;overflow:hidden;border:1px solid var(--line);background:#E7EFDD}
.ms-road{height:36px;background:#3b4047;position:relative;display:flex;align-items:center;justify-content:flex-end;padding:0 14px}
.ms-road:before{content:"";position:absolute;left:10px;right:10px;top:50%;height:3px;transform:translateY(-50%);background:repeating-linear-gradient(90deg,#FDD100 0 24px,transparent 24px 46px);opacity:.92}
.ms-street{position:relative;z-index:2;color:#fff;font-size:.72rem;font-weight:600;letter-spacing:.04em;background:#3b4047;padding:2px 7px;border-radius:4px}
.ms-lawn{position:relative;padding:clamp(10px,2.4vw,20px);background:radial-gradient(circle at 16% 130%,rgba(124,179,66,.18),transparent 42%),#E7EFDD}
.ms-lawn .mapstage{margin:0}
.ms-entry{margin-top:9px;text-align:center;font-size:.78rem;font-weight:700;color:var(--green-d);letter-spacing:.02em}
.ms-entry .ms-arrow{color:var(--green);font-size:.72rem}
.ms-parking{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#DCE1D6;border-top:1px solid rgba(0,0,0,.06)}
.ms-p{flex-shrink:0;width:26px;height:26px;border-radius:6px;background:#2f62a4;color:#fff;font-weight:800;font-size:.95rem;display:flex;align-items:center;justify-content:center}
.ms-stalls{flex:1;height:18px;min-width:40px;background:repeating-linear-gradient(90deg,transparent 0 14px,rgba(0,0,0,.16) 14px 15px);border:1px solid rgba(0,0,0,.1);border-radius:4px;opacity:.7}
.ms-plabel{flex-shrink:0;font-size:.76rem;color:var(--muted);font-weight:600}
@media(max-width:520px){.ms-plabel{display:none}}
/* «Скоро» на вкладке модуля */
.ftab.soon{opacity:.9}
.ftab .soonbadge{display:inline-block;margin-left:7px;font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;background:#FDD100;color:#5a4a00;padding:2px 6px;border-radius:100px;vertical-align:middle}
.ftab.on .soonbadge{background:#fff;color:#5a4a00}
/* Подсказка «следующая очередь» — лёгкая плашка над картой, клики не блокирует */
.mapsoon{position:absolute;left:50%;top:10px;transform:translateX(-50%);z-index:16;display:flex;align-items:center;gap:7px;background:rgba(46,59,31,.94);color:#fff;font-size:.76rem;font-weight:600;line-height:1.3;padding:8px 14px;border-radius:12px;pointer-events:none;width:max-content;max-width:min(300px,90%);box-shadow:0 8px 20px -10px rgba(0,0,0,.5)}
.mapsoon[hidden]{display:none}
.ms-soon-ic{font-size:1rem}

/* ===== Карточка события «подробнее» (клик по событию) ===== */
.ev{cursor:pointer}
.evmodal{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:20px}
.evmodal[hidden]{display:none}
.evmodal .evm-bg{position:absolute;inset:0;background:rgba(18,28,14,.6);opacity:0;transition:opacity .25s}
.evmodal.show .evm-bg{opacity:1}
.evmodal .evm-card{position:relative;z-index:2;background:var(--paper);width:100%;max-width:560px;max-height:92vh;overflow:auto;border-radius:20px;box-shadow:0 40px 90px -40px rgba(0,0,0,.6);transform:translateY(16px) scale(.98);opacity:0;transition:transform .3s cubic-bezier(.2,.7,.2,1),opacity .3s}
.evmodal.show .evm-card{transform:none;opacity:1}
.evmodal .evm-im{position:relative;height:clamp(170px,32vw,260px);background-size:cover;background-position:center;background-color:#dfe6d6}
.evmodal .evm-im.noimg{display:none}
.evmodal .evm-date{position:absolute;left:16px;bottom:16px;background:var(--yellow);color:var(--ink);font-weight:800;border-radius:10px;padding:7px 12px;font-size:.86rem}
.evmodal .evm-x{position:absolute;top:14px;right:14px;width:38px;height:38px;border-radius:50%;border:0;background:rgba(18,28,14,.55);color:#fff;font-size:1.4rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.evmodal .evm-x:hover{background:rgba(18,28,14,.8)}
.evmodal .evm-b{padding:22px 24px 28px}
.evmodal .evm-b h3{font-weight:800;font-size:1.4rem;line-height:1.15;margin-bottom:6px}
.evmodal .evm-when{color:var(--green-d);font-weight:700;font-size:.9rem;margin-bottom:14px}
.evmodal .evm-text{color:var(--ink);font-size:.96rem;line-height:1.6;white-space:pre-line}
.evmodal .evm-cta{display:inline-block;margin-top:20px;background:var(--green);color:#fff;font-weight:700;font-size:.92rem;padding:12px 20px;border-radius:11px}
.evmodal .evm-cta:hover{background:var(--green-d)}

/* ===== Важное всплывающее сообщение (управляется из CMS) ===== */
.announce{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;padding:20px}
.announce[hidden]{display:none}
.announce .an-bg{position:absolute;inset:0;background:rgba(10,14,8,.62);opacity:0;transition:opacity .25s}
.announce.show .an-bg{opacity:1}
.announce .an-card{position:relative;z-index:2;width:100%;max-width:480px;border-radius:20px;padding:30px 28px 26px;color:#fff;text-align:center;box-shadow:0 40px 90px -38px rgba(0,0,0,.7);transform:scale(.94);opacity:0;transition:transform .3s cubic-bezier(.2,1.4,.4,1),opacity .3s}
.announce.show .an-card{transform:none;opacity:1}
.announce .an-ic{font-size:2.1rem;line-height:1;margin-bottom:12px}
.announce .an-card h3{font-weight:900;font-size:1.45rem;line-height:1.15;margin-bottom:10px}
.announce .an-card p{font-size:1rem;line-height:1.55;opacity:.96;white-space:pre-line}
.announce .an-x{margin-top:22px;background:rgba(255,255,255,.18);color:#fff;border:1.5px solid rgba(255,255,255,.5);font-family:inherit;font-weight:700;font-size:.92rem;padding:11px 26px;border-radius:11px;cursor:pointer;transition:background .15s}
.announce .an-x:hover{background:rgba(255,255,255,.28)}
.announce.an-light .an-card{color:var(--ink)}
.announce.an-light .an-x{color:var(--ink);background:rgba(0,0,0,.08);border-color:rgba(0,0,0,.25)}
.announce.an-light .an-x:hover{background:rgba(0,0,0,.15)}

/* ===== Карта: подписи на схеме (номер помещения + логотип арендатора) ===== */
/* Номер и логотип кладутся внутрь группы помещения в SVG, поэтому масштабируются вместе с картой.
   Номер — тёмный с тёмным тонким гало (paint-order): на мелком превью белое гало размывало букву;
   тёмное гало делает глиф чуть плотнее и читается на свободных/занятых заливках. */
.mapsvg svg.floorplan .rmnum{fill:#10301d;font-family:Montserrat,system-ui,sans-serif;font-weight:800;paint-order:stroke;stroke:#10301d;stroke-linejoin:round;opacity:1;user-select:none}
.mapsvg svg.floorplan .rmnum-corner{opacity:.8}
.mapsvg svg.floorplan .rmlogo{opacity:.97}

/* Кнопка «На весь экран» в углу карты (только на главной) */
.mapfull{position:absolute;left:14px;top:14px;z-index:16;display:inline-flex;align-items:center;gap:7px;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:11px;padding:8px 12px;font-size:.8rem;font-weight:700;box-shadow:0 4px 12px -6px rgba(0,0,0,.35);transition:all .15s}
.mapfull:hover{border-color:var(--green);color:var(--green)}
.mapfull .mf-ic{font-size:1.05rem;line-height:1}
@media(max-width:520px){.mapfull .mf-tx{display:none}.mapfull{padding:9px 11px}}

/* ===== Полноэкранная карта (map.php) ===== */
.mapfs-body{background:var(--paper)}
.mapfs{display:flex;flex-direction:column;height:100vh;height:100dvh;overflow:hidden}
.mapfs-bar{display:flex;align-items:center;gap:16px;padding:10px 18px;background:#fff;border-bottom:1px solid var(--line);flex-shrink:0}
.mapfs-logo img{height:34px;display:block}
.mapfs-ttl{display:flex;flex-direction:column;line-height:1.12}
.mapfs-ttl .mapfs-k{font-family:var(--mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--green)}
.mapfs-ttl b{font-size:1.05rem;color:var(--ink)}
.mapfs-leg{margin-left:auto}
.mapfs-close{flex-shrink:0;background:var(--green-d);color:#fff;font-weight:700;font-size:.85rem;padding:9px 16px;border-radius:100px;transition:background .15s}
.mapfs-close:hover{background:var(--green)}
.mapfs-tabs{padding:11px 18px 0;margin:0;flex-shrink:0}
.mapfs-cols{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;padding:12px;overflow:auto}
.mapfs-stage{height:58vh;flex:none}
.mapfs .mapsvg{height:100%;align-items:center}
.mapfs .mapsvg svg.floorplan{max-height:100%;width:auto;max-width:100%}
.mapfs-info{flex:none;position:static}
@media(min-width:900px){
  .mapfs-cols{flex-direction:row;overflow:hidden;padding:14px 18px 18px}
  .mapfs-stage{flex:1 1 auto;height:100%}
  .mapfs-info{flex:0 0 330px;height:100%;overflow:auto}
}
@media(max-width:600px){.mapfs-leg{display:none}.mapfs-ttl b{font-size:.95rem}}

/* ===== Общий план: рамки модулей, подписи, бейдж «строится» ===== */
.mapsvg svg.floorplan .modframe{fill:none;stroke:#C6D1BA;stroke-width:1.6;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.mapsvg svg.floorplan .modframe.open{stroke:#9CC06A;stroke-width:1.8}
.mapsvg svg.floorplan .modframe.future{stroke:#C9A24A;stroke-width:1.6;stroke-dasharray:14 10}
/* контур здания (из редактора): чистая тонкая тёмно-зелёная линия */
.mapsvg svg.floorplan .building-wall{fill:none;stroke:#2f4733;stroke-width:2;vector-effect:non-scaling-stroke;stroke-linejoin:round;stroke-linecap:round}
.mapsvg svg.floorplan .modlabel{font-family:Montserrat,system-ui,sans-serif;font-weight:800;font-size:120px;fill:#2E3B1F}
.mapsvg svg.floorplan .modbadge .mb-t{font-family:Montserrat,system-ui,sans-serif;font-weight:800;font-size:96px;fill:#fff}
.mapsvg svg.floorplan .modbadge .mb-s{font-family:Montserrat,system-ui,sans-serif;font-weight:600;font-size:60px;fill:#CFEB6B}
/* будущие модули — помещения чуть приглушены (номер остаётся ярким) */
.mapsvg svg.floorplan [data-room].rm-future .st_room{opacity:.72}
/* Превью-карта на главной (.mapsite) зумит весь план в маленький блок — фикс-пиксельные обводки
   смотрятся тяжело. Утончаем границы/стены/стрелки/двери ТОЛЬКО в превью; полноэкранная (.mapfs) — как была. */
.mapsite .mapsvg svg.floorplan [data-room] .st_room{stroke-width:.6}
.mapsite .mapsvg svg.floorplan [data-room]:hover .st_room{stroke-width:1.2}
.mapsite .mapsvg svg.floorplan .building-wall{stroke-width:1.1}
.mapsite .mapsvg svg.floorplan .plan-el polygon,
.mapsite .mapsvg svg.floorplan .plan-el path,
.mapsite .mapsvg svg.floorplan .plan-el line{stroke-width:.6}

/* заметка «строится» в карточке помещения */
.ri-soon{margin:12px 0 2px;background:#FBF3D6;border:1px solid #EBD68A;color:#7a5e0c;font-size:.82rem;line-height:1.4;padding:9px 12px;border-radius:10px}

/* подвал со светлым пользовательским цветом — тёмный текст для контраста */
footer.foot-light{color:rgba(26,26,26,.78)}
footer.foot-light p{color:rgba(26,26,26,.72)}
footer.foot-light .fcol h5{color:var(--green-d)}
footer.foot-light .fcol a,footer.foot-light .fcol span{color:rgba(26,26,26,.8)}
footer.foot-light .fbot,footer.foot-light .fbot a.leg,footer.foot-light .fbot .adminlink{color:rgba(26,26,26,.6)}
footer.foot-light .fbot .adminlink{border-color:rgba(26,26,26,.2)}
footer.foot-light .fbot .adminlink:hover,footer.foot-light .fbot a.leg:hover{color:var(--green-d)}
