/* Лайнер — кнопки, карточки, планировки, таблицы, формы, модалки */

/* ---------- кнопки ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:15px 30px;border-radius:999px;font:inherit;font-weight:600;font-size:16px;
  border:1px solid transparent;cursor:pointer;transition:transform .18s,box-shadow .25s,background .25s;
  text-align:center;line-height:1.2
}
.btn:active{transform:translateY(1px)}
.btn--gold{background:var(--gold);color:#16262b;box-shadow:0 12px 30px rgba(184,128,31,.28)}
.btn--gold:hover{background:#c98d22;box-shadow:0 16px 38px rgba(184,128,31,.36)}
.btn--sea{background:var(--sea);color:#fff}
.btn--sea:hover{background:#175068}
.btn--ghost{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.5);color:#fff}
.btn--ghost:hover{background:rgba(255,255,255,.2)}
.btn--outline{background:none;border-color:var(--line);color:var(--ink)}
.btn--outline:hover{border-color:var(--sea);color:var(--sea)}
.btn--wide{width:100%}

/* ---------- карточки причин ---------- */
.reason{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:28px 26px;
  box-shadow:var(--shadow);display:flex;flex-direction:column;gap:12px}
.reason__ico{width:46px;height:46px;border-radius:13px;background:var(--sea-soft);color:var(--sea);
  display:grid;place-items:center;flex-shrink:0}
.reason__ico svg{width:24px;height:24px}
.reason h3{font-size:20px}
.reason p{color:var(--dim);font-size:var(--fs-body);margin:0}

/* ---------- галерея архитектуры ---------- */
/* высоту задаёт большой кадр, правые ячейки делят её пополам: иначе между рядами дыра */
.gal{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:16px}
.gal figure{margin:0;position:relative;border-radius:var(--r);overflow:hidden;background:rgba(255,255,255,.05);min-height:0}
.gal figure img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.gal figure:hover img{transform:scale(1.04)}
.gal .a{grid-column:span 2;grid-row:span 2;aspect-ratio:4/3}
.gal .b{height:100%}
.gal figcaption{position:absolute;left:0;right:0;bottom:0;padding:16px 18px;color:#fff;font-size:15px;
  background:linear-gradient(180deg,rgba(0,0,0,0),rgba(6,20,24,.82))}
@media (max-width:820px){
  .gal{grid-template-columns:repeat(2,minmax(0,1fr))}
  .gal .a{grid-column:span 2;grid-row:auto;aspect-ratio:16/10}
}

/* ---------- планировки ---------- */
.plans{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(14px,1.6vw,22px)}
@media (max-width:1080px){.plans{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.plans{grid-template-columns:minmax(0,1fr)}}
.plan{
  background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;
  display:flex;flex-direction:column;transition:box-shadow .25s,transform .25s
}
.plan:hover{box-shadow:var(--shadow-hi);transform:translateY(-3px)}


.plan__area{
  position:absolute;left:12px;top:12px;background:rgba(15,36,41,.86);color:#fff;
  font-size:13px;font-weight:600;padding:6px 11px;border-radius:999px;letter-spacing:.02em
}
.plan__zoom{position:absolute;right:12px;bottom:12px;width:34px;height:34px;border-radius:50%;
  background:rgba(255,255,255,.92);display:grid;place-items:center;color:var(--sea);opacity:0;transition:opacity .2s}
.plan__img:hover .plan__zoom{opacity:1}
.plan__body{padding:18px 20px 20px;display:flex;flex-direction:column;gap:10px;flex:1}
.plan h3{font-size:19px}
.plan__meta{display:flex;flex-wrap:wrap;gap:6px}
.chip{font-size:12.5px;padding:5px 10px;border-radius:999px;background:var(--sea-soft);color:var(--sea);font-weight:500}
.plan__view{color:var(--dim);font-size:var(--fs-card);margin:0}
.plan__body .btn{margin-top:auto;padding:12px 20px;font-size:15px}

/* ---------- схема этажей ---------- */





.floor-row{display:grid;grid-template-columns:clamp(96px,9vw,150px) minmax(0,1fr);gap:clamp(16px,2vw,30px);
  padding:clamp(16px,1.6vw,24px) 0;border-top:1px solid var(--line);align-items:baseline}
.floor-row:last-child{border-bottom:1px solid var(--line)}
.floor-row b{font-family:var(--f-display);font-size:clamp(28px,3.2vw,44px);line-height:1;color:var(--sea);
  letter-spacing:-.01em;font-weight:500}
.floor-row p{margin:0;color:var(--dim);font-size:var(--fs-body)}
.floor-row--accent b{color:var(--gold-ink)}
@media (max-width:480px){.floor-row{grid-template-columns:minmax(0,1fr);gap:4px}}

/* ---------- интерьеры ---------- */
.rooms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:900px){.rooms{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.rooms{grid-template-columns:minmax(0,1fr)}}
.rooms figure{margin:0;border-radius:var(--r);overflow:hidden;aspect-ratio:16/9;background:var(--sea-soft)}
.rooms figure img{width:100%;height:100%;object-fit:cover}
.kit{display:flex;flex-wrap:wrap;gap:10px;margin-top:26px}
.kit li{list-style:none;padding:9px 16px;border:1px solid var(--line);border-radius:999px;font-size:var(--fs-card);color:var(--ink);background:var(--card)}
.kit{padding:0}

/* ---------- умный дом ---------- */
.smart{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:8px}
@media (max-width:860px){.smart{grid-template-columns:minmax(0,1fr)}}
.smart__col{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:24px}
.smart__col h3{font-size:18px;margin-bottom:12px}
.smart__col ul{margin:0;padding-left:18px;color:var(--dim);font-size:var(--fs-body)}
.smart__col li{margin-bottom:7px}

/* ---------- локация ---------- */











/* ---------- инфраструктура ---------- */
.queue{margin-bottom:clamp(30px,3.4vw,50px)}
.queue__title{display:flex;align-items:center;gap:14px;margin-bottom:20px}
.queue__badge{font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;
  padding:6px 13px;border-radius:999px;background:var(--sea);color:#fff}
.queue__badge--second{background:var(--sea-soft);color:var(--sea)}
.infra{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
@media (max-width:1000px){.infra{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.infra{grid-template-columns:minmax(0,1fr)}}
.infra li{list-style:none;display:flex;align-items:center;gap:12px;padding:15px 18px;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);font-size:var(--fs-body)}
.infra li svg{width:21px;height:21px;color:var(--sea);flex-shrink:0}
.infra{padding:0;margin:0}
.infra-photos{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:22px}
@media (max-width:820px){.infra-photos{grid-template-columns:minmax(0,1fr)}}
.infra-photos figure{margin:0;border-radius:var(--r);overflow:hidden;aspect-ratio:16/10;position:relative}
.infra-photos img{width:100%;height:100%;object-fit:cover}
.infra-photos figcaption{position:absolute;left:0;right:0;bottom:0;padding:14px 16px;color:#fff;font-size:14.5px;
  background:linear-gradient(180deg,rgba(0,0,0,0),rgba(6,20,24,.8))}

/* ---------- доходность ---------- */
.money{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(24px,3vw,44px);align-items:start}
@media (max-width:940px){.money{grid-template-columns:minmax(0,1fr)}}
.calc{background:rgba(255,255,255,.05);border:1px solid var(--line-dark);border-radius:var(--r-lg);overflow:hidden}
.calc table{width:100%;border-collapse:collapse;font-size:15.5px}
.calc td{padding:14px 20px;border-bottom:1px solid var(--line-dark)}
.calc td:last-child{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.calc tr:last-child td{border-bottom:none}
.calc .sum td{color:var(--dim-dark);font-size:14.5px;background:rgba(255,255,255,.03)}
.calc .total td{font-weight:700;font-size:18px;color:var(--gold-bright);background:rgba(224,166,53,.08)}
.calc__note{padding:14px 20px;font-size:13.5px;color:var(--dim-dark);background:rgba(0,0,0,.18)}
.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}

.season{margin-top:clamp(26px,3vw,44px)}
.season__chart{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;align-items:end;
  height:190px;margin-top:22px}
.season__bar{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:8px;height:100%}
.season__bar i{display:block;width:100%;border-radius:6px 6px 0 0;
  background:linear-gradient(180deg,var(--gold-bright),rgba(224,166,53,.35));min-height:6px}
.season__bar b{font-size:12px;font-weight:600;color:var(--ink-dark);font-variant-numeric:tabular-nums}
.season__bar span{font-size:11.5px;color:var(--dim-dark)}
@media (max-width:700px){
  .season__chart{grid-template-columns:repeat(6,minmax(0,1fr));height:auto;gap:10px}
  .season__bar{height:120px}
}
.growth{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;margin-top:14px}
.growth b{font-family:var(--f-display);font-size:clamp(38px,5vw,62px);color:var(--gold-bright);line-height:1}
.pillars{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:clamp(26px,3vw,42px)}
@media (max-width:980px){.pillars{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:540px){.pillars{grid-template-columns:minmax(0,1fr)}}
.pillar{background:rgba(255,255,255,.05);border:1px solid var(--line-dark);border-radius:var(--r);padding:22px}
.pillar b{display:block;font-family:var(--f-display);font-size:17px;color:var(--ink-dark);margin-bottom:9px}
.pillar p{color:var(--dim-dark);font-size:var(--fs-card);margin:0}

.market{width:100%;border-collapse:collapse;font-size:15px;margin-top:18px;min-width:520px}
.market th,.market td{padding:13px 16px;text-align:left;border-bottom:1px solid var(--line-dark)}
.market th{font-weight:600;color:var(--dim-dark);font-size:13.5px;text-transform:uppercase;letter-spacing:.06em}
.market td:last-child,.market td:nth-last-child(2),
.market th:last-child,.market th:nth-last-child(2){text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.disclaimer{margin-top:20px;font-size:13.5px;color:var(--dim-dark);max-width:75ch}

/* ---------- УК ---------- */
.person{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:clamp(22px,3vw,44px);align-items:start}
@media (max-width:820px){.person{grid-template-columns:minmax(0,1fr)}}
.person__card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);padding:26px;box-shadow:var(--shadow)}
.person__card b{font-family:var(--f-display);font-size:22px;display:block;margin-bottom:4px}
.person__card>span{color:var(--dim);font-size:15px}
.cv{margin:18px 0 0;padding:0}
.cv li{list-style:none;padding:12px 0;border-top:1px solid var(--line);font-size:var(--fs-card)}
.cv b{font-size:var(--fs-body);font-family:var(--f-text);display:block;margin-bottom:2px}
.cv span{color:var(--dim);font-size:14.5px}
.svc{display:flex;flex-wrap:wrap;gap:9px;padding:0;margin:18px 0 0}
.svc li{list-style:none;font-size:var(--fs-card);padding:8px 14px;border-radius:999px;background:var(--sea-soft);color:var(--sea)}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-top:26px}
@media (max-width:820px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
.stat{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px}
.stat b{display:block;font-family:var(--f-display);font-size:clamp(26px,3vw,38px);color:var(--sea);line-height:1}
.stat span{display:block;margin-top:8px;color:var(--dim);font-size:var(--fs-card)}

/* ---------- FAQ ---------- */
.faq{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(24px,3vw,44px);align-content:start}
@media (max-width:820px){.faq{grid-template-columns:minmax(0,1fr)}}
.faq details{border-bottom:1px solid var(--line);padding:4px 0}
.faq summary{cursor:pointer;padding:17px 34px 17px 0;font-weight:600;font-size:16.5px;list-style:none;position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:4px;top:15px;font-size:22px;color:var(--sea);font-weight:400;transition:transform .2s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq p{padding:0 34px 18px 0;color:var(--dim);font-size:var(--fs-body);margin:0}

/* ---------- финальный призыв ---------- */
.cta-final{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.85fr);gap:clamp(24px,3vw,48px);
  align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--r-lg);
  padding:clamp(26px,3.4vw,46px);box-shadow:var(--shadow)}
@media (max-width:860px){.cta-final{grid-template-columns:minmax(0,1fr)}}

/* ---------- формы ---------- */
.field{margin-bottom:15px}
.field label{display:block;font-size:14px;color:var(--dim);margin-bottom:7px}
.field input[type=text],.field input[type=tel]{
  width:100%;padding:14px 16px;border:1px solid var(--line);border-radius:12px;
  font:inherit;font-size:16px;color:var(--ink);background:var(--card);transition:border-color .2s
}
.field input:focus{outline:none;border-color:var(--sea);box-shadow:0 0 0 3px rgba(26,90,118,.12)}
.field.is-error input{border-color:#c0392b}
.err{display:none;color:#c0392b;font-size:13.5px;margin-top:6px}
.field.is-error .err{display:block}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0;pointer-events:none}
.ways{display:flex;gap:9px;flex-wrap:wrap}
.ways label{
  flex:1 1 auto;min-width:90px;text-align:center;padding:11px 8px;border:1px solid var(--line);
  border-radius:11px;cursor:pointer;font-size:14.5px;color:var(--dim);transition:.2s;margin:0
}
.ways input{position:absolute;opacity:0;pointer-events:none}
.ways input:checked + span{color:var(--sea);font-weight:600}
.ways label:has(input:checked){border-color:var(--sea);background:var(--sea-soft)}
.consent{display:flex;gap:11px;align-items:flex-start;margin:16px 0 18px;font-size:13.5px;color:var(--dim)}
.consent input{margin-top:3px;width:17px;height:17px;accent-color:var(--sea);flex-shrink:0}
.consent a{text-decoration:underline}
.form-note{font-size:13px;color:var(--dim);margin-top:12px;text-align:center}

/* маска телефона: подгоняем intl-tel-input под нашу форму */
.iti{width:100%}
.iti__tel-input,.field .iti input{width:100%}

/* ---------- модалки ---------- */
.modal{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;padding:20px}
.modal.is-open{display:flex}
.modal__back{position:absolute;inset:0;background:rgba(8,22,26,.66);backdrop-filter:blur(3px)}
.modal__box{
  position:relative;background:var(--white);border-radius:var(--r-lg);width:min(100%,470px);
  padding:clamp(24px,3vw,36px);box-shadow:0 40px 90px rgba(0,0,0,.34);max-height:92vh;overflow-y:auto
}
.modal__box--wide{width:min(100%,880px);padding:0;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1fr)}
@media (max-width:760px){.modal__box--wide{grid-template-columns:minmax(0,1fr)}.modal__pic{display:none}}
.modal__pic{background:var(--sea-soft);position:relative;overflow:hidden;border-radius:var(--r-lg) 0 0 var(--r-lg)}
.modal__pic img{width:100%;height:100%;object-fit:cover}
.modal__side{padding:clamp(24px,3vw,34px)}
.modal__close{position:absolute;right:12px;top:12px;width:38px;height:38px;border-radius:50%;border:none;
  background:rgba(255,255,255,.9);cursor:pointer;font-size:22px;line-height:1;color:var(--ink);z-index:2}
.modal__close:hover{background:#fff}
.modal h3{margin-bottom:8px}
.modal__sub{color:var(--dim);font-size:15px;margin-bottom:20px}
.modal__ok{text-align:center;padding:16px 0}
.modal__ok b{display:block;font-family:var(--f-display);font-size:24px;margin-bottom:10px}

/* ---------- просмотрщик чертежей ---------- */
.viewer{position:fixed;inset:0;z-index:120;display:none;background:rgba(7,19,23,.95)}
.viewer.is-open{display:block}
.viewer__stage{position:absolute;inset:64px 0 82px;overflow:hidden;touch-action:none;cursor:grab}
.viewer__stage.is-grabbing{cursor:grabbing}
.viewer__stage img{position:absolute;left:50%;top:50%;max-width:94%;max-height:100%;
  transform:translate(-50%,-50%);transform-origin:center;user-select:none;-webkit-user-drag:none;background:#fff;border-radius:8px}
.viewer__bar{position:absolute;left:0;right:0;top:0;height:64px;display:flex;align-items:center;gap:16px;
  padding:0 18px;color:#fff}
.viewer__title{font-family:var(--f-display);font-size:19px}
.viewer__count{color:rgba(255,255,255,.6);font-size:14px}
.viewer__foot{position:absolute;left:0;right:0;bottom:0;height:82px;display:flex;align-items:center;
  justify-content:center;gap:14px;padding:0 18px}
.viewer__nav{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;border-radius:50%;
  border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);color:#fff;cursor:pointer;font-size:22px;z-index:2}
.viewer__nav:hover{background:rgba(255,255,255,.2)}
.viewer__nav--prev{left:16px}
.viewer__nav--next{right:16px}
.viewer__close{margin-left:auto;width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.3);
  background:none;color:#fff;font-size:20px;cursor:pointer}
@media (max-width:640px){
  .viewer__nav{width:42px;height:42px}
  .viewer__title{font-size:16px}
  .viewer__stage{inset:56px 0 74px}
}

/* ---------- квиз ---------- */
.quiz__steps{display:flex;gap:6px;margin-bottom:20px}
.quiz__steps i{flex:1;height:3px;border-radius:2px;background:var(--line)}
.quiz__steps i.is-done{background:var(--sea)}
.quiz__opts{display:grid;gap:10px;margin-bottom:20px}
.quiz__opt{padding:14px 18px;border:1px solid var(--line);border-radius:12px;cursor:pointer;
  background:var(--card);font:inherit;font-size:15.5px;text-align:left;transition:.2s;color:var(--ink)}
.quiz__opt:hover{border-color:var(--sea);background:var(--sea-soft)}

/* ---------- прочее ---------- */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
body.is-locked{overflow:hidden}


/* ================= редизайн 15.08.2026 по дизайн-ревью ================= */
.loc{display:grid;gap:clamp(22px,3vw,48px)}
.floors{display:grid;gap:clamp(24px,3vw,52px)}
.floors__list{display:flex;flex-direction:column;gap:2px}
.plan__img{position:relative;cursor:zoom-in;overflow:hidden}
.plan__img img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}


/* --- ЛОКАЦИЯ: минуты легли полосой на фото, четыре белые коробки убраны --- */
.loc{display:grid;grid-template-columns:minmax(0,.88fr) minmax(0,1.12fr);
  gap:clamp(22px,3vw,48px);
  align-items:start}          /* stretch растягивал figure и давал 150px белой дыры */

.loc__map{position:relative;margin:0;border-radius:var(--r-lg);overflow:hidden;
  aspect-ratio:4/3;box-shadow:var(--shadow-hi);background:var(--sea-soft)}
.loc__map img{width:100%;height:100%;object-fit:cover;object-position:50% 46%;display:block}

.loc__rail{position:absolute;left:0;right:0;bottom:0;display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  padding:clamp(46px,6vw,80px) 4px 16px;
  background:linear-gradient(180deg,rgba(8,22,26,0) 0%,rgba(8,22,26,.34) 34%,rgba(8,22,26,.84) 100%)}
.loc__rail span{position:relative;display:block;padding:0 clamp(8px,1vw,16px);color:#fff}
.loc__rail span+span::before{content:"";position:absolute;left:0;top:4px;bottom:4px;width:1px;
  background:rgba(255,255,255,.26)}
.loc__rail b{display:block;font-family:var(--f-display);font-size:clamp(21px,2.1vw,30px);
  line-height:1;font-weight:500;letter-spacing:.01em}
.loc__rail i{display:block;font-style:normal;font-size:12.5px;line-height:1.3;margin-top:5px;
  color:rgba(255,255,255,.8)}

/* «Рядом с комплексом»: облако пилюль → две колонки на волоске */
.near{padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0 clamp(18px,2.4vw,40px)}
.near li{list-style:none;position:relative;font-size:var(--fs-body);color:var(--ink);
  padding:11px 0 11px 20px;border-bottom:1px solid var(--line);background:none;border-radius:0}
.near li::before{content:"";position:absolute;left:2px;top:50%;width:5px;height:5px;margin-top:-2.5px;
  border-radius:50%;background:var(--sea);opacity:.55}

@media (max-width:900px){
  .loc{grid-template-columns:minmax(0,1fr)}
  .loc__map{order:-1;margin-bottom:8px}
}
@media (max-width:560px){
  .loc__map{aspect-ratio:auto}
  .loc__map img{aspect-ratio:16/11;height:auto}
  .loc__rail{position:static;grid-template-columns:repeat(2,minmax(0,1fr));
    background:var(--deep);padding:4px 0}
  .loc__rail span{padding:14px 16px}
  .loc__rail span+span::before{display:none}
  .loc__rail span:nth-child(n+3){border-top:1px solid rgba(255,255,255,.14)}
  .loc__rail span:nth-child(2n)::after{content:"";position:absolute;left:0;top:14px;bottom:14px;
    width:1px;background:rgba(255,255,255,.14)}
  .near{grid-template-columns:minmax(0,1fr)}
}

/* --- КАРТИНКИ, КОТОРЫЕ НЕ ВЛЕЗАЛИ --- */
/* render-restaurant.webp вертикальный 1440×1805. cover в боксе 16:10 срезал
   50,1% высоты и оставлял глухую стену вместо ресторана. */
.infra-photos figure:first-child img{object-position:50% 88%}

/* render-tower.webp вертикальный 1200×1500. Колонку с фото ужимаем,
   список этажей тянем на всю высоту кадра. */
.floors{grid-template-columns:minmax(0,.76fr) minmax(0,1.24fr);align-items:stretch}
.floors>figure{aspect-ratio:4/5;border-radius:var(--r-lg);overflow:hidden;position:relative;margin:0}
.floors>figure img{width:100%;height:100%;object-fit:cover;object-position:50% 38%}
.floors__list{justify-content:space-between}
@media (max-width:880px){
  .floors{grid-template-columns:minmax(0,1fr)}
  .floors>figure{aspect-ratio:16/11}
}

/* чертёж занимал 83% бокса 4:3 и висел в пустоте */
.plan__img{aspect-ratio:1/1;background:linear-gradient(180deg,#fff,#f7f9fa)}
.plan__img img{padding:14px 14px 20px;background:none}

/* подписи на светлых кадрах читались плохо */
.gal figcaption,.infra-photos figcaption{
  padding-top:34px;
  background:linear-gradient(180deg,rgba(6,20,24,0) 0%,rgba(6,20,24,.34) 38%,rgba(6,20,24,.9) 100%);
  text-shadow:0 1px 10px rgba(0,0,0,.5)}

/* 7 плиток второй очереди оставляли пустую ячейку в ряду */
.infra>li:last-child:nth-child(4n+3){grid-column:span 2}
@media (max-width:1000px){
  .infra>li:last-child:nth-child(4n+3){grid-column:auto}
  .infra>li:last-child:nth-child(odd){grid-column:1/-1}
}
@media (max-width:520px){.infra>li:last-child:nth-child(odd){grid-column:auto}}

/* --- микроинтеракции (система появления живёт в motion.css) --- */
.plan,.reason,.stat,.smart__col,.pillar,.infra li{
  transition:transform .3s cubic-bezier(.22,.61,.36,1),box-shadow .3s,border-color .3s}
.plan:hover{transform:translateY(-4px);box-shadow:var(--shadow-hi)}
.reason:hover,.stat:hover,.smart__col:hover{transform:translateY(-3px);box-shadow:var(--shadow-hi)}
.infra li:hover{transform:translateY(-2px);border-color:rgba(26,90,118,.34)}
.pillar:hover{transform:translateY(-2px);border-color:rgba(224,166,53,.4)}
.btn{transition:transform .2s cubic-bezier(.22,.61,.36,1),box-shadow .3s,background .3s}
.btn--gold:hover,.btn--sea:hover{transform:translateY(-2px)}
.gal figure img,.rooms figure img,.infra-photos img,.loc__map img{
  transition:transform .9s cubic-bezier(.22,.61,.36,1)}
.gal figure:hover img,.rooms figure:hover img,.infra-photos figure:hover img{transform:scale(1.045)}

@media (prefers-reduced-motion:reduce){
  [data-anim],.reveal{opacity:1!important;transform:none!important}
  .hero__bg img,.hero__bg,.hero .wrap{animation:none!important}
  .plan:hover,.reason:hover,.stat:hover,.smart__col:hover,.infra li:hover,
  .pillar:hover,.btn--gold:hover,.btn--sea:hover{transform:none}
}


/* ================= подсветка курсора и реакция блоков ================= */
/* Мягкое пятно света идёт за курсором по секции. Только мышь: на тач-устройствах
   курсора нет, а лишний слой там стоил бы кадров. */
@media (hover:hover) and (pointer:fine){
  .section{--mx:50%;--my:0%}
  .section::after{
    content:"";display:block;position:absolute;inset:0;z-index:-1;pointer-events:none;
    opacity:0;transition:opacity .45s ease;
    background:radial-gradient(420px circle at var(--mx) var(--my),
      rgba(184,128,31,.16) 0%, rgba(184,128,31,.06) 38%, rgba(184,128,31,0) 68%);
  }
  .section.is-lit::after{opacity:1}
  .section--dark::after{
    background:radial-gradient(460px circle at var(--mx) var(--my),
      rgba(224,166,53,.20) 0%, rgba(120,180,200,.08) 42%, rgba(224,166,53,0) 70%);
  }

  /* карточка под курсором подсвечивается изнутри, а не только приподнимается */
  .reason,.plan,.stat,.smart__col,.min-card,.infra li,.pillar{position:relative;overflow:hidden}
  .reason::after,.plan::after,.stat::after,.smart__col::after,.infra li::after,.pillar::after{
    content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .35s ease;
    background:radial-gradient(260px circle at var(--cx,50%) var(--cy,50%),
      rgba(184,128,31,.16),rgba(184,128,31,0) 62%);
  }
  .pillar::after{background:radial-gradient(260px circle at var(--cx,50%) var(--cy,50%),
      rgba(224,166,53,.22),rgba(224,166,53,0) 62%)}
  .reason:hover::after,.plan:hover::after,.stat:hover::after,
  .smart__col:hover::after,.infra li:hover::after,.pillar:hover::after{opacity:1}

  /* сама реакция ярче: заметный подъём, тень и подкрашенная рамка */
  .reason:hover,.stat:hover,.smart__col:hover{transform:translateY(-5px);
    box-shadow:0 26px 52px rgba(15,36,41,.16);border-color:rgba(184,128,31,.42)}
  .plan:hover{transform:translateY(-6px);box-shadow:0 30px 60px rgba(15,36,41,.20);
    border-color:rgba(184,128,31,.45)}
  .infra li:hover{transform:translateY(-3px);border-color:rgba(184,128,31,.45);
    box-shadow:0 14px 28px rgba(15,36,41,.10)}
  .pillar:hover{transform:translateY(-3px);border-color:rgba(224,166,53,.55);
    box-shadow:0 18px 40px rgba(0,0,0,.28)}
  .gal figure,.rooms figure,.infra-photos figure{transition:box-shadow .35s ease}
  .gal figure:hover,.rooms figure:hover,.infra-photos figure:hover{
    box-shadow:0 24px 50px rgba(15,36,41,.28)}
  .floor-row{transition:background .3s ease}
  .floor-row:hover{background:linear-gradient(90deg,rgba(184,128,31,.09),rgba(184,128,31,0) 72%)}
}
@media (prefers-reduced-motion:reduce){
  .section::after{display:none}
  .reason:hover,.plan:hover,.stat:hover,.smart__col:hover,.infra li:hover,.pillar:hover{transform:none}
}
