/* ============================================================
   Мастер на дом — редакционный стиль (Onest, ink + navy)
   Острые углы, монохром, плотная типографика.
   ============================================================ */

:root{
  --ink:#15181A;
  --ink-panel:#1E2226;
  --white:#FFFFFF;
  --paper:#F5F5F3;
  --line:#E3E3E0;
  --line-input:#CFCFCB;
  --line-dark:#2D3337;
  --navy:#1F3A5C;
  --navy-hi:#7FA8D4;
  --muted:#6A7075;
  --muted-2:#5A6167;
  --ink-2:#2A2F32;
  --on-dark:#F0EFEC;
  --on-dark-soft:#BFC5C9;
  --on-dark-mute:#8E979E;
  --on-dark-line:#C9CDD0;
  --promo:#FFD23F;
  --navy-tint:#EDF2F8;
  --maxw:1280px;
  --font:'Onest', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:104px}
body{
  margin:0;background:var(--white);color:var(--ink);
  font-family:var(--font);line-height:1.55;-webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 32px}

/* ---------- Типографика-помощники ---------- */
.eyebrow{font-size:12.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase}
.eyebrow--muted{color:var(--muted)}
.eyebrow--navy{color:var(--navy)}
.eyebrow--dark{color:var(--on-dark-mute)}

/* ---------- Кнопки (острые углы) ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;
  font-weight:700;font-size:16px;letter-spacing:-.01em;line-height:1;padding:16px 26px;
  border:1px solid transparent;cursor:pointer;transition:.16s ease;white-space:nowrap}
.btn--white{background:var(--white);color:var(--ink)}
.btn--white:hover{background:var(--navy-hi);color:var(--ink)}
.btn--ink{background:var(--ink);color:var(--white)}
.btn--ink:hover{background:var(--navy)}
.btn--outline{background:transparent;border-color:var(--ink);color:var(--ink);font-size:14px;padding:12px 20px}
.btn--outline:hover{background:var(--ink);color:var(--white)}
.btn--block{width:100%}
.btn--geo{flex:0 0 54px;width:54px;padding:0;font-size:20px;background:var(--white);border:1px solid var(--line-input);color:var(--ink)}
.btn--geo:hover{border-color:var(--ink)}
.btn--geo.is-loading{opacity:.55;pointer-events:none}
.btn:disabled{cursor:default;opacity:.58;pointer-events:none}
.btnspinner{width:15px;height:15px;flex:0 0 15px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:btnspin .72s linear infinite}
@keyframes btnspin{to{transform:rotate(360deg)}}

/* ---------- Топбар ---------- */
.topbar{background:var(--ink);color:var(--on-dark-line)}
.topbar__inner{display:flex;flex-wrap:wrap;gap:6px 30px;padding:9px 32px;font-size:13px;letter-spacing:.005em}
.topbar__accent{margin-left:auto;color:var(--white)}

/* ---------- Липкий верх (топбар + шапка) ---------- */
.topstick{position:sticky;top:0;z-index:50}

/* ---------- Шапка ---------- */
.header{background:var(--white);border-bottom:1px solid var(--line)}
.header__inner{display:flex;flex-wrap:wrap;align-items:center;gap:14px 36px;padding:16px 32px}
.brand{display:flex;align-items:center;gap:14px;min-width:0}
.brand__name{font-size:19px;font-weight:700;letter-spacing:-.02em;text-transform:uppercase}
.brand__div{width:1px;height:22px;background:#D9D9D5}
.brand__role{font-size:12.5px;font-weight:500;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}
.nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px 28px;margin-left:auto;
  font-size:14.5px;font-weight:500;color:#3C4348}
.nav a:hover{color:var(--navy)}

/* ---------- Герой ---------- */
.hero{background:var(--ink);color:var(--on-dark)}
.hero__grid{display:flex;flex-wrap:wrap;align-items:stretch;padding:0}
.hero__col{flex:1 1 520px;min-width:0;padding:clamp(36px,4.5vw,76px) 32px clamp(32px,3.5vw,56px);display:flex;flex-direction:column}
.hero__title{margin:18px 0 0;font-weight:800;font-size:clamp(38px,5.4vw,76px);line-height:.99;letter-spacing:-.04em}
.hero__lead{margin:26px 0 0;max-width:30em;font-size:clamp(16px,1.35vw,18px);line-height:1.58;color:var(--on-dark-soft)}
.hero__actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;margin:34px 0 0}
.hero__link{font-size:15.5px;font-weight:500;color:var(--on-dark-soft);border-bottom:1px solid #4A5257;padding-bottom:2px}
.hero__link:hover{color:var(--white);border-color:var(--white)}
.stats{display:flex;flex-wrap:wrap;margin:clamp(36px,4vw,62px) 0 0;border-top:1px solid var(--line-dark)}
.stat{flex:1 1 140px;min-width:0;padding:20px 24px 0}
.stat:first-child{padding-left:0}
.stat+.stat{border-left:1px solid var(--line-dark)}
.stat__num{font-size:clamp(26px,2.6vw,34px);font-weight:700;letter-spacing:-.03em}
.stat__cap{font-size:12.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--on-dark-mute);margin-top:7px}

.hero__media{flex:1 1 380px;min-width:0;position:relative;background:var(--ink-panel);min-height:440px;overflow:hidden}
.hero__photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 18%}
.hero__photo-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center;color:var(--on-dark-mute);padding:24px}
.hero__photo-ph[hidden]{display:none}
.hero__photo-ph-ico{font-size:44px;opacity:.7}
.hero__photo-ph-txt{font-size:14px;line-height:1.5}
.hero__photo-ph-txt small{color:#71787E}
.hero__media-cap{position:absolute;left:0;right:0;bottom:0;padding:20px 22px;background:linear-gradient(to top,rgba(21,24,26,.92),rgba(21,24,26,0))}
.hero__media-name{font-size:16px;font-weight:700;letter-spacing:-.01em;color:var(--white)}
.hero__media-role{font-size:12.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--on-dark-line);margin-top:5px}

/* ---------- Обратный звонок ---------- */
.callback{background:var(--paper);border-bottom:1px solid var(--line)}
.callback .wrap{padding-top:clamp(40px,4.4vw,64px);padding-bottom:clamp(40px,4.4vw,64px)}
.callback__head{max-width:56ch;margin-bottom:clamp(22px,2.4vw,32px)}
.callback__title{margin:12px 0 0;font-size:clamp(24px,2.7vw,36px);font-weight:800;letter-spacing:-.03em;line-height:1.08}
.callback__desc{margin:12px 0 0;font-size:16.5px;color:var(--muted-2);line-height:1.6}
/* телефон — под длину номера «+7 (999) 999-99-99», остальное место делят адрес и «что случилось» */
.cbform__row{display:grid;grid-template-columns:204px minmax(0,1fr) minmax(0,1fr);gap:20px 24px;align-items:start}
.field{display:flex;flex-direction:column;gap:8px;min-width:0}
.field__label{font-size:12.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.field__optional{margin-left:5px;font-size:11px;font-weight:500;letter-spacing:.04em;text-transform:none;color:#8B9297}
.inp{width:100%;min-width:0;font-family:inherit;font-size:16.5px;font-weight:500;padding:16px;
  border:1px solid var(--line-input);background:var(--white);color:var(--ink);outline:none;transition:.15s}
.inp::placeholder{color:#9AA0A5}
.inp:focus{border-color:var(--ink)}
.inp.is-invalid{border-color:#B42318;background:#FEF3F2}
.inp-geo{display:flex;gap:8px;min-width:0}
.inp-geo .inp{flex:1 1 auto}
.cbform__hint{font-size:13px;color:var(--muted);line-height:1.45}
.cbform__err{font-size:14px;font-weight:600;color:#B42318;margin:14px 0 0}
.cbform__err a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.cbform__reject{font-size:15.5px;font-weight:600;line-height:1.5;color:#7A4A00;background:#FFF6E0;border:1px solid #F2D48A;padding:16px;margin:14px 0 0}
.cbform__reject[hidden]{display:none}
.cbform__reject.is-ask{color:var(--navy);background:var(--navy-tint);border-color:#C9D6E6;font-weight:500}   /* вопрос «в каком вы городе?» — не ошибка */
.inp.is-ask{border-color:var(--navy);box-shadow:0 0 0 3px rgba(31,58,92,.12)}
.cbform__ok{font-size:15.5px;font-weight:600;color:#0B6B3A;background:#EAF6EF;border:1px solid #BFE6CD;padding:16px;margin:14px 0 0}
.cbform__foot{display:flex;flex-wrap:wrap;align-items:center;gap:14px 24px;margin-top:24px}
.cbform__policy{font-size:13px;color:var(--muted);line-height:1.5;max-width:46ch}
.cbform .btn--submit{padding:18px 34px;font-size:17px}

/* ---------- Секции ---------- */
.sec{padding:clamp(56px,6vw,100px) 0}
.sec--paper{background:var(--paper)}
.sec--dark{background:var(--ink);color:var(--on-dark)}
.sec__head{margin-bottom:clamp(30px,3.4vw,52px);max-width:44ch}
.sec__head--row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 24px;max-width:none}
.sec__title{margin:12px 0 0;font-size:clamp(26px,3vw,40px);font-weight:800;letter-spacing:-.03em;line-height:1.04}
.sec__title--light{color:var(--white)}

/* Где работаю: районы города (страницы городов) */
.areas{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}
.areas__col{padding:24px 26px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.areas__label{font-size:12.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.areas__list{margin:0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:8px}
.areas__list li{padding:6px 12px;border:1px solid var(--line-input);font-size:15px;line-height:1.3}
@media (max-width:640px){ .areas__col{padding:18px 16px} .areas__list li{font-size:14px} }

/* Карта зоны выезда: готовая картинка, которую можно двигать; точки — поверх, название по наведению/нажатию */
.amap{border:1px solid var(--line)}
.amap__view{position:relative;height:min(500px,var(--hd));overflow:auto;background:#F2F2F0;cursor:grab;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;user-select:none}
.amap__view::-webkit-scrollbar{display:none}
.amap__view.is-drag{cursor:grabbing}
.amap__canvas{position:relative;width:var(--wd);height:var(--hd)}
.amap__canvas img{display:block;width:100%;height:100%;pointer-events:none}
/* метка-булавка как на Яндекс-картах: остриё — в точке */
.amap__pin{position:absolute;z-index:1;width:24px;height:32px;margin:-31px 0 0 -12px;padding:0;border:0;cursor:pointer;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 32'%3E%3Cpath d='M12 31s10.5-12 10.5-19A10.5 10.5 0 0 0 1.5 12C1.5 19 12 31 12 31z' fill='%23F43' stroke='%23fff' stroke-width='2'/%3E%3Ccircle cx='12' cy='12' r='4.2' fill='%23fff'/%3E%3C/svg%3E") center/contain no-repeat;
  filter:drop-shadow(0 2px 2px rgba(0,0,0,.3));transform-origin:50% 100%;transition:transform .15s}
.amap__pin:hover,.amap__pin.is-open{transform:scale(1.15)}
.amap__pin span{position:absolute;left:50%;bottom:calc(100% + 4px);transform:translateX(-50%);padding:5px 9px;background:var(--ink);color:#fff;
  font-size:13px;font-weight:600;line-height:1.2;white-space:nowrap;opacity:0;visibility:hidden;transition:opacity .15s;pointer-events:none}
.amap__pin:hover span,.amap__pin.is-open span,.amap__pin:focus-visible span{opacity:1;visibility:visible}
.amap__pin:hover,.amap__pin.is-open{z-index:2}
.amap__hint{position:absolute;left:12px;bottom:12px;padding:6px 10px;background:rgba(21,24,26,.78);color:#fff;font-size:12.5px;font-weight:600;
  pointer-events:none;transition:opacity .4s}
.amap.is-used .amap__hint{opacity:0}
.amap{position:relative}
.amap__attr{position:absolute;right:0;bottom:0;padding:3px 7px;background:rgba(255,255,255,.8);font-size:11px;color:var(--muted);pointer-events:none}
.amore{margin-top:14px}
.amore summary{display:inline-block;cursor:pointer;font-size:15px;font-weight:600;color:var(--navy);list-style:none;padding:4px 0;border-bottom:1px solid #C9D6E6}
.amore summary::-webkit-details-marker{display:none}
.amore summary::after{content:' ▾'}
.amore[open] summary::after{content:' ▴'}
.amore .areas{margin-top:14px}
@media (max-width:640px){
  .amap__view{height:min(420px,var(--hm))}
  .amap__canvas{width:var(--wm);height:var(--hm)}
}

/* Что ремонтирую */
.sec__hint{margin:14px 0 0;font-size:15px;color:var(--muted)}
.techlist{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
.techitem{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:88px;padding:22px 26px;
  border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  font-size:17px;font-weight:600;letter-spacing:-.01em;color:var(--ink);background:var(--white);
  cursor:pointer;transition:.15s;-webkit-tap-highlight-color:transparent}
.techitem__t{min-width:0}
.techitem__more{flex:0 0 auto;font-size:12.5px;font-weight:600;letter-spacing:0;color:inherit;opacity:.5;white-space:nowrap}
.techitem:hover,.techitem:focus-visible{background:var(--ink);color:var(--white);outline:none}
.techitem.is-active{background:var(--navy);color:var(--white)}
.techitem.is-active .techitem__more{opacity:.8}

/* Панель описания «что делаем» */
/* Высоту при открытии/закрытии плавно анимирует script.js (панель без отступов,
   отступы — у .techdetail__inner, иначе до нуля не схлопнуть) */
.techdetail{position:relative;border:1px solid #C9D6E6;border-top:0;border-left:4px solid var(--navy);background:var(--navy-tint)}
.techdetail__inner{position:relative;padding:clamp(24px,3vw,36px) clamp(24px,3vw,40px)}
.techlist .techdetail{border-left:4px solid var(--navy)}
@media (prefers-reduced-motion: no-preference){
  .techdetail__inner.is-anim{animation:tdFade .3s ease both}
  .techdetail__inner.is-anim .techdetail__list li{animation:tdItem .34s ease both}
  .techdetail__inner.is-anim .techdetail__list li:nth-child(2){animation-delay:.05s}
  .techdetail__inner.is-anim .techdetail__list li:nth-child(3){animation-delay:.10s}
  .techdetail__inner.is-anim .techdetail__list li:nth-child(4){animation-delay:.15s}
  .techdetail__inner.is-anim .techdetail__list li:nth-child(5){animation-delay:.20s}
  @keyframes tdFade{from{opacity:0}to{opacity:1}}
  @keyframes tdItem{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:none}}
}
.techdetail[hidden]{display:none}
.techlist .techdetail{grid-column:1/-1}
.techdetail__close{position:absolute;top:14px;right:16px;width:34px;height:34px;line-height:1;
  font-size:24px;color:var(--muted);background:transparent;border:0;cursor:pointer;transition:.15s}
.techdetail__close:hover{color:var(--ink)}
.techdetail__name{font-size:clamp(20px,2.2vw,26px);font-weight:800;letter-spacing:-.02em;margin-bottom:18px;padding-right:36px}
.techdetail__list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 32px}
.techdetail__list li{position:relative;padding-left:20px;font-size:16px;line-height:1.5;color:var(--ink-2)}
.techdetail__list li::before{content:'';position:absolute;left:0;top:10px;width:8px;height:8px;background:var(--navy)}

/* Как проходит */
.steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(32px,5vw,80px);row-gap:clamp(28px,3vw,44px)}
.step{padding:22px 0 0;border-top:2px solid var(--ink)}
.step+.step{padding-left:0}
.step__num{font-size:13px;font-weight:700;letter-spacing:.14em;color:var(--navy)}
.step__title{margin:16px 0 10px;font-size:22px;font-weight:700;letter-spacing:-.02em}
.step p{margin:0;font-size:16.5px;line-height:1.6;color:#4A5257;max-width:46ch}

/* Гарантия (тёмная) */
.whygrid{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line-dark);border-left:1px solid var(--line-dark)}
.whyitem{padding:30px 30px 36px;border-right:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark)}
.whyitem__t{font-size:20px;font-weight:700;letter-spacing:-.02em;color:var(--white)}
.whyitem p{margin:12px 0 0;font-size:16.5px;line-height:1.6;color:#D6DBDF;max-width:36ch}

/* Отзывы */
.reviewscene{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);min-height:340px;margin:0 0 28px;background:var(--ink);color:var(--white);overflow:hidden}
.reviewscene__img{width:100%;height:100%;min-height:340px;object-fit:cover;display:block}
.reviewscene__caption{display:flex;flex-direction:column;justify-content:center;gap:14px;padding:clamp(28px,4vw,56px);font-size:clamp(18px,1.9vw,26px);font-weight:700;line-height:1.28;letter-spacing:-.02em}
.reviewscene__text{max-width:30ch}
.reviewscene__rating{display:flex;align-items:center;gap:16px;margin-top:clamp(10px,1.6vw,22px);padding-top:clamp(16px,1.8vw,24px);border-top:1px solid var(--line-dark)}
.reviewscene__avg{font-size:clamp(40px,4.4vw,60px);font-weight:800;letter-spacing:-.04em;line-height:1}
.reviewscene__rating-side{display:flex;flex-direction:column;gap:4px}
.reviewscene__stars{color:var(--promo);font-size:18px;letter-spacing:3px;line-height:1}
.reviewscene__note{font-size:13px;font-weight:500;letter-spacing:0;color:var(--on-dark-soft);line-height:1.35}
.reviewscene__label{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--on-dark-mute)}
.reviews{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line);border-left:1px solid var(--line)}
.review{display:flex;flex-direction:column;margin:0;padding:32px 30px 30px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--white)}
.review__head{display:flex;align-items:center;gap:14px;margin:0 0 16px}
.review__ava{flex:0 0 42px;width:42px;height:42px;display:flex;align-items:center;justify-content:center;
  background:var(--paper);border:1px solid var(--line);font-size:17px;font-weight:700;color:var(--navy)}
.review__who{display:flex;flex-direction:column;gap:2px;min-width:0}
.review__name{font-size:15.5px;font-weight:700;letter-spacing:-.01em;color:var(--ink)}
.review__meta{font-size:13px;color:var(--muted)}
.review__stars{color:var(--navy);font-size:15px;letter-spacing:3px;margin-bottom:12px}
.review blockquote{margin:0;font-size:17px;line-height:1.62;letter-spacing:-.005em;color:var(--ink)}
.review[hidden]{display:none}
.review blockquote{white-space:pre-line}
.review__city:not(:empty)+.review__date:not(:empty)::before{content:' · '}
.btn[hidden]{display:none}
.reviews__more{display:flex;justify-content:center;margin-top:24px}
.reviews__more:not(:has(.btn:not([hidden]))){display:none}

/* Акция для новых клиентов — тихо, в стиле сайта: строка в первом экране + плашка в форме */
[data-promo][hidden]{display:none}
/* значок скидки — единственное жёлтое пятно, как акцент */
.promo-badge{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;background:var(--promo);color:var(--ink);
  font-weight:800;font-size:15px;letter-spacing:-.02em;line-height:1;padding:7px 9px}
.promo-badge--lg{font-size:22px;padding:12px 12px}
.hero__promo{display:inline-flex;align-items:center;gap:12px;margin-top:22px;padding:7px 16px 7px 7px;
  background:rgba(255,210,63,.08);border:1px solid rgba(255,210,63,.45);font-size:15px;color:var(--on-dark);line-height:1.35;
  transition:background-color .2s,border-color .2s}
.hero__promo:hover{background:rgba(255,210,63,.14);border-color:var(--promo)}
.hero__promo-text b{font-weight:700;color:var(--white)}
.hero__promo-left{white-space:nowrap;color:var(--on-dark-soft)}
.hero__promo .js-promo-left{color:var(--promo);font-weight:700;font-variant-numeric:tabular-nums}
.cbpromo{display:flex;align-items:center;gap:14px 18px;margin-top:22px;padding:14px 18px 14px 14px;background:var(--navy);color:var(--white)}
.cbpromo__text{flex:1 1 auto;min-width:0}
.cbpromo__t{font-weight:700;font-size:16px;line-height:1.3}
.cbpromo__p{margin-top:3px;font-size:13.5px;color:#C3D2E4}
.cbpromo__timer{flex:0 0 auto;text-align:right}
.cbpromo__timer .js-promo-left{display:block;font-size:24px;font-weight:800;letter-spacing:-.01em;line-height:1;color:var(--promo);font-variant-numeric:tabular-nums}
.cbpromo__timer small{display:block;margin-top:5px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#9FB4CC}
/* один раз мягко «подсвечиваем» плашку, когда форма появляется на экране */
@media (prefers-reduced-motion: no-preference){
  .anim .cbform.is-in .cbpromo .promo-badge{animation:promoNudge .9s cubic-bezier(.22,.61,.36,1) .3s both}
  @keyframes promoNudge{0%{transform:scale(.6);opacity:0}60%{transform:scale(1.08);opacity:1}100%{transform:none}}
}

/* Города выезда (ссылки для поисковиков) */

/* Финальный призыв */
.finalcta{background:var(--ink);color:var(--on-dark)}
.finalcta__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:26px 40px;
  padding-top:clamp(40px,5vw,72px);padding-bottom:clamp(40px,5vw,72px)}
.finalcta__title{margin:12px 0 0;font-size:clamp(26px,3.4vw,44px);font-weight:800;letter-spacing:-.03em;line-height:1.02;max-width:16ch}
.finalcta__actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px}

/* Подвал */
.footer{background:var(--ink);color:var(--on-dark-soft);padding:clamp(40px,4vw,60px) 0 26px}
.footer__inner{display:flex;flex-wrap:wrap;justify-content:space-between;gap:32px 40px;
  padding-bottom:28px;border-bottom:1px solid var(--line-dark)}
.footer__name{font-size:19px;font-weight:700;letter-spacing:-.02em;text-transform:uppercase;color:var(--white)}
.footer__role{font-size:12.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--on-dark-mute);margin-top:6px}
.footer__desc{max-width:44ch;margin:16px 0 0;font-size:14px;line-height:1.55}
.footer__col{display:flex;flex-direction:column;gap:4px}
.footer__label{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--on-dark-mute);margin-top:12px}
.footer__phone{font-size:20px;font-weight:700;letter-spacing:-.01em;color:var(--white)}
.footer__bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px 24px;padding-top:18px;font-size:12.5px;color:var(--on-dark-mute)}
.footer__legal{display:flex;flex-wrap:wrap;gap:6px 18px}
.footer__bottom a{color:var(--on-dark-soft);text-decoration:underline;text-underline-offset:3px;text-decoration-color:rgba(255,255,255,.25)}
.footer__bottom a:hover{color:var(--white)}
.cbform__policy a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.cbform__policy a:hover{color:var(--ink)}

/* Страницы «Политика» и «Условия» */
.legalpage{background:var(--paper)}
.legal{max-width:780px;margin:0 auto;padding:clamp(28px,4vw,56px) 20px clamp(48px,6vw,80px);color:var(--ink-2)}
.legal__back{display:inline-block;margin-bottom:22px;font-size:14px;font-weight:600;color:var(--navy)}
.legal__back:hover{text-decoration:underline;text-underline-offset:3px}
.legal h1{margin:0;font-size:clamp(26px,3.2vw,40px);font-weight:800;letter-spacing:-.03em;line-height:1.1;color:var(--ink)}
.legal__date{margin:10px 0 0;font-size:13px;color:var(--muted)}
.legal h2{margin:34px 0 10px;font-size:clamp(18px,1.8vw,22px);font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.legal p,.legal li{font-size:16px;line-height:1.65}
.legal p{margin:0 0 12px}
.legal ul{margin:0 0 12px;padding-left:22px}
.legal li{margin-bottom:6px}
.legal a{color:var(--navy);text-decoration:underline;text-underline-offset:3px}
.footer--legal{padding-top:0}
.footer--legal .footer__bottom{padding-top:20px}

/* Плавающая кнопка (моб.) */
.fab{display:none;position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--ink);color:var(--white);
  font-weight:700;text-align:center;padding:16px;border-top:1px solid var(--line-dark)}

/* Демо-подпись определения по IP */
.demoip{position:fixed;left:0;bottom:0;z-index:100;max-width:min(92vw,520px);
  background:var(--navy);color:#fff;font-size:12px;font-weight:600;letter-spacing:.01em;
  padding:8px 14px;border-top:1px solid rgba(255,255,255,.2);border-right:1px solid rgba(255,255,255,.2)}
@media (max-width:640px){ .demoip{font-size:11px;padding:7px 12px} }

/* Переключатель (демо) */
.dirswitch{position:fixed;top:0;left:50%;transform:translateX(-50%);z-index:100;display:flex;align-items:center;
  gap:4px;background:var(--ink);border:1px solid var(--line-dark);border-top:none;padding:6px}
.dirswitch[hidden]{display:none}
.dirswitch__label{color:var(--on-dark-mute);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;padding:0 8px}
.dirswitch button{font-family:inherit;font-size:12.5px;font-weight:600;color:var(--on-dark-line);background:transparent;
  border:0;padding:8px 12px;cursor:pointer;white-space:nowrap;transition:.15s}
.dirswitch button:hover{background:var(--ink-panel)}
.dirswitch button.is-active{background:var(--white);color:var(--ink)}

/* ---------- Анимация появления при загрузке ---------- */
@media (prefers-reduced-motion: no-preference){
  @keyframes rvUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
  @keyframes rvFade{from{opacity:0}to{opacity:1}}
  @keyframes rvPhoto{from{opacity:0;transform:scale(1.03)}to{opacity:1;transform:none}}

  .anim .topbar{animation:rvFade .5s ease both}
  .anim .header{animation:rvFade .5s ease .05s both}
  .anim .hero__col>*{animation:rvUp .5s cubic-bezier(.22,.61,.36,1) both}
  .anim .hero__col>*:nth-child(1){animation-delay:.10s}
  .anim .hero__col>*:nth-child(2){animation-delay:.17s}
  .anim .hero__col>*:nth-child(3){animation-delay:.24s}
  .anim .hero__col>*:nth-child(4){animation-delay:.31s}
  .anim .hero__col>*:nth-child(5){animation-delay:.38s}
  .anim .hero__col>*:nth-child(6){animation-delay:.45s}
  .anim .hero__media{animation:rvPhoto .6s cubic-bezier(.22,.61,.36,1) .18s both}
  /* город по IP пришёл после отрисовки — тексты с городом проявляются мягко, без рывка */
  .anim.city-swap :is(#heroEyebrow,#heroLead,.js-area,#footerDesc){animation:rvFade .45s ease both}

  /* Появление при прокрутке: блок получает .is-in, когда доходит до экрана (setupReveal в script.js).
     --rv-delay — «лесенка» для карточек в одном ряду. Список селекторов = REVEAL_SEL в script.js */
  .anim :where(.callback__head,.cbform,.sec__head,.techlist,.step,.whyitem,.reviewscene,.reviews__more,.finalcta__inner,.footer__inner){
    opacity:0;transform:translateY(24px);
    transition:opacity .6s ease var(--rv-delay,0s),transform .6s cubic-bezier(.22,.61,.36,1) var(--rv-delay,0s)}
  .anim :where(.callback__head,.cbform,.sec__head,.techlist,.step,.whyitem,.reviewscene,.reviews__more,.finalcta__inner,.footer__inner).is-in{
    opacity:1;transform:none}

  /* Отзывы: сама сетка не анимируется — карточки выходят лесенкой, когда сетка получила .is-in */
  .anim .reviews .review{
    transition:opacity .6s ease var(--rv-delay,0s),transform .6s cubic-bezier(.22,.61,.36,1) var(--rv-delay,0s)}
  .anim .reviews:not(.is-in) .review{opacity:0;transform:translateY(24px)}
  .anim .reviews .review:nth-child(3n+2){--rv-delay:.1s}
  .anim .reviews .review:nth-child(3n){--rv-delay:.2s}
  /* карточки, добавленные кнопкой «Показать ещё» */
  .review--new{animation:rvCard .55s cubic-bezier(.22,.61,.36,1) both}
  @keyframes rvCard{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
}

/* ---------- Адаптив ---------- */
@media (min-width:901px) and (max-height:820px){
  .hero__col{padding:36px 32px 28px}
  .hero__title{margin-top:12px;font-size:clamp(54px,4.7vw,66px);line-height:.98}
  .hero__lead{margin-top:18px;font-size:16px;line-height:1.5}
  .hero__actions{margin-top:24px}
  .stats{margin-top:28px}
  .stat{padding-top:14px}
  .stat__num{font-size:28px}
  .stat__cap{margin-top:4px}
}
@media (max-width:1000px){
  .techlist{grid-template-columns:repeat(2,1fr)}
  .steps{grid-template-columns:repeat(2,minmax(0,1fr))}
  .whygrid{grid-template-columns:repeat(2,1fr)}
  .reviews{grid-template-columns:1fr}
  .cbform__row{grid-template-columns:204px minmax(0,1fr)}
  .cbform__row>.field:last-child{grid-column:1/-1}   /* «Что случилось» — на всю ширину под телефоном и адресом */
}
@media (max-width:900px){
  .hero__media{flex-basis:100%;order:2;min-height:360px}
  .reviewscene{grid-template-columns:1fr}
  .reviewscene__img{height:360px;min-height:0}
}
/* ---------- Телефон: компактная вёрстка ---------- */
@media (max-width:640px){
  .wrap{padding:0 16px}

  /* верх: инфо-строка уезжает при прокрутке, закреплена только тонкая шапка */
  .topstick{display:contents}
  .topbar__inner{padding:7px 16px;gap:2px 12px;font-size:11.5px;line-height:1.45}
  .topbar__inner>span:nth-child(2){display:none}
  .topbar__accent{margin-left:auto}
  .header{position:sticky;top:0;z-index:50}
  .header__inner{padding:11px 16px;gap:10px}
  .brand{gap:10px}
  .brand__name{font-size:16px}
  .brand__div{height:16px}
  .brand__role{font-size:10.5px}
  .nav{display:none}

  /* первый экран */
  .hero__col{padding:22px 16px 20px}
  .eyebrow{font-size:11px}
  .hero__title{margin-top:10px;font-size:31px;line-height:1.02;letter-spacing:-.035em}
  .hero__lead{margin-top:14px;font-size:15px;line-height:1.5}
  .hero__actions{margin-top:20px;gap:12px}
  .hero__actions .btn{width:100%;padding:15px 18px}
  .hero__link{font-size:14.5px}
  .stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:22px}
  .stat,.stat:first-child{padding:12px 8px 0 10px}
  .stat:first-child{padding-left:0}
  .stat__num{font-size:20px;letter-spacing:-.02em}
  .stat__cap{font-size:10px;letter-spacing:.04em;margin-top:4px;line-height:1.3}
  .hero__media{min-height:0;height:230px}
  .hero__photo{object-position:50% 22%}
  .hero__media-cap{padding:12px 16px}
  .hero__media-name{font-size:14.5px}
  .hero__media-role{font-size:10.5px;margin-top:3px}

  /* акция */
  .hero__promo{margin-top:16px;font-size:14px;gap:10px;padding:6px 12px 6px 6px}
  .promo-badge{font-size:14px;padding:6px 7px}
  .promo-badge--lg{font-size:17px;padding:9px 8px}
  .cbpromo{margin-top:16px;padding:12px 12px 12px 10px;gap:10px 12px}
  .cbpromo__t{font-size:14.5px}
  .cbpromo__p{font-size:12px}
  .cbpromo__timer .js-promo-left{font-size:18px}
  .cbpromo__timer small{font-size:9.5px}

  /* форма */
  .callback .wrap{padding-top:26px;padding-bottom:28px}
  .callback__head{margin-bottom:16px}
  .callback__title{font-size:23px;margin-top:8px}
  .callback__desc{font-size:14.5px;margin-top:8px}
  .cbform__row{grid-template-columns:1fr;gap:14px}
  .cbform__row>.field:last-child{grid-column:auto}
  .field{gap:6px}
  .field__label{font-size:11px}
  .inp{padding:13px 14px;font-size:16px}
  .btn--geo{flex-basis:48px;width:48px}
  .cbform__hint{font-size:12px}
  .cbform__foot{margin-top:18px;gap:10px}
  .cbform .btn--submit{width:100%;padding:16px 18px;font-size:16px}
  .cbform__policy{font-size:11.5px}

  /* секции */
  .sec{padding:36px 0}
  .sec__head{margin-bottom:20px}
  .sec__title{font-size:24px;margin-top:8px;line-height:1.1}
  .sec__hint{font-size:13.5px;margin-top:8px}

  /* что ремонтирую */
  .techlist{grid-template-columns:1fr}
  .techitem{min-height:0;padding:13px 16px;font-size:15px}
  .techitem__more{font-size:0}
  .techitem__more::after{content:'+';display:inline-block;font-size:24px;font-weight:400;line-height:1;transition:transform .25s ease}
  .techitem.is-active .techitem__more::after{transform:rotate(45deg)}
  .techitem.is-active{background:var(--navy);border-bottom-color:var(--navy)}
  .techlist .techdetail__inner{padding:14px 16px 16px}
  /* название и крестик уже есть в нажатом пункте над панелью */
  .techlist .techdetail__name,.techlist .techdetail__close{display:none}
  .techdetail__list{grid-template-columns:1fr;gap:8px}
  .techdetail__list li{font-size:14.5px;padding-left:16px}
  .techdetail__list li::before{top:8px;width:6px;height:6px}

  /* как проходит: 2×2 */
  .steps{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:14px;row-gap:20px}
  .step{padding-top:12px}
  .step__num{font-size:11px}
  .step__title{margin:8px 0 6px;font-size:16px;line-height:1.2}
  .step p{font-size:13.5px;line-height:1.45}

  /* гарантии: 2 колонки, компактные карточки */
  .whygrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .whyitem{padding:14px 12px 16px}
  .whyitem__t{font-size:15px;line-height:1.25}
  .whyitem p{font-size:12.5px;line-height:1.45;margin-top:6px}

  /* отзывы */
  .reviews__more{margin-top:16px}
  .reviews__more .btn{width:100%}
  .reviewscene{margin-bottom:16px}
  .reviewscene__img{height:190px}
  .reviewscene__caption{padding:14px 16px;font-size:15px;gap:6px}
  .reviewscene__rating{gap:12px;margin-top:6px;padding-top:10px}
  .reviewscene__avg{font-size:32px}
  .reviewscene__stars{font-size:14px}
  .reviewscene__note{font-size:11.5px}
  .reviewscene__label{font-size:10.5px}
  .reviews{grid-template-columns:1fr}
  .review{padding:16px}
  .review__head{margin-bottom:10px;gap:10px}
  .review__ava{flex-basis:34px;width:34px;height:34px;font-size:14px}
  .review__name{font-size:14.5px}
  .review__meta{font-size:12px}
  .review__stars{font-size:13px;margin-bottom:8px}
  .review blockquote{font-size:14.5px;line-height:1.55}

  /* финальный призыв и подвал */
  .finalcta__inner{padding-top:30px;padding-bottom:30px;gap:18px}
  .finalcta__title{font-size:24px;max-width:none}
  .finalcta__actions{width:100%}
  .finalcta__actions .btn{width:100%}
  .footer{padding-top:28px}
  .footer__inner{gap:20px;padding-bottom:20px}
  .footer__name{font-size:16px}
  .footer__phone{font-size:18px}

  .fab{display:block;padding:14px}
  body{padding-bottom:52px}
  .dirswitch{flex-wrap:wrap;justify-content:center;max-width:100%}
  .dirswitch__label{display:none}
}

/* ============================================================
   Страница «Отзывы» (otzyvy.html → <раздел>/otzyvy/)
   ============================================================ */
.rvtop{padding-top:clamp(28px,3.4vw,48px)}
.rvtop .sec__head{max-width:none}
.rvtop .sec__title{font-size:clamp(28px,3.6vw,48px)}

/* режим владельца (тест): отзывы с формы видит только он */
.rvowner{background:var(--navy);color:var(--white);font-size:14px;line-height:1.45}
.rvowner__inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 20px;padding-top:11px;padding-bottom:11px}
.rvowner b{font-weight:700}
.rvowner__out{color:#C3D2E4;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.rvowner__out:hover{color:var(--white)}
.rvowner[hidden]{display:none}

/* сводка: средняя оценка + полоски по звёздам (нажатие = фильтр) */
.rvsum{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);border:1px solid var(--line)}
.rvsum__score{display:flex;flex-direction:column;align-items:flex-start;padding:clamp(24px,3vw,40px);background:var(--ink);color:var(--white)}
.rvsum__avg{font-size:clamp(56px,6vw,80px);font-weight:800;letter-spacing:-.05em;line-height:.95}
.rvsum__stars{margin-top:12px;color:var(--promo);font-size:22px;letter-spacing:4px;line-height:1}
.rvsum__count{margin-top:10px;font-size:14px;color:var(--on-dark-soft)}
.rvsum__cta{margin-top:auto;padding:14px 22px;font-size:15px}
.rvsum__count+.rvsum__cta{margin-top:28px}
.rvsum__bars{display:flex;flex-direction:column;justify-content:center;gap:4px;padding:clamp(18px,2.6vw,36px) clamp(18px,3vw,44px)}
.rvbar{display:grid;grid-template-columns:52px minmax(0,1fr) 44px;align-items:center;gap:16px;width:100%;padding:9px 10px;margin:0 -10px;
  font-family:inherit;font-size:15px;font-weight:600;color:var(--ink);background:transparent;border:0;cursor:pointer;text-align:left;transition:background-color .15s}
.rvbar:hover,.rvbar.is-active{background:var(--paper)}
.rvbar:disabled{cursor:default;color:#A3A8AC;background:transparent}
.rvbar__track{position:relative;height:10px;background:var(--paper);overflow:hidden}
.rvbar:hover .rvbar__track,.rvbar.is-active .rvbar__track{background:var(--line)}
.rvbar__fill{position:absolute;left:0;top:0;bottom:0;background:var(--navy);transition:width .35s ease}
.rvbar__n{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}

/* фильтр */
.rvfilter{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}
.rvchip{display:inline-flex;align-items:center;gap:7px;padding:10px 15px;font-family:inherit;font-size:14.5px;font-weight:600;line-height:1;
  color:var(--ink);background:var(--white);border:1px solid var(--line-input);cursor:pointer;transition:.15s;white-space:nowrap}
.rvchip:hover{border-color:var(--ink)}
.rvchip.is-active{background:var(--ink);border-color:var(--ink);color:var(--white)}
.rvchip:disabled{cursor:default;opacity:.42;border-color:var(--line-input)}
.rvchip__n{font-weight:500;opacity:.6;font-variant-numeric:tabular-nums}
.rvempty{padding:40px 24px;text-align:center;font-size:16px;color:var(--muted);background:var(--white);border:1px solid var(--line)}
.rvempty[hidden]{display:none}

/* фото/видео в карточке */
.review__media{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.review__thumb{position:relative;width:84px;height:84px;padding:0;border:1px solid var(--line);background:var(--paper);cursor:zoom-in;overflow:hidden}
.review__thumb img,.review__thumb video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.review__thumb:hover{border-color:var(--ink)}
.review__thumb--video::after{content:'';position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;
  background:rgba(21,24,26,.72) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 7v10l8-5z' fill='%23fff'/%3E%3C/svg%3E") center/18px no-repeat}
/* отзыв с формы выглядит как остальные; автору/владельцу — тихая ссылка «Удалить» */
.cbform__ok a{text-decoration:underline;text-underline-offset:3px}
.review__del{align-self:flex-start;margin-top:16px;padding:0;font-family:inherit;font-size:13px;font-weight:600;color:#B42318;background:none;border:0;
  border-bottom:1px solid rgba(180,35,24,.3);cursor:pointer}
.review__del:hover{border-bottom-color:#B42318}

/* форма отзыва */
.rvform{max-width:860px}
.rvform>.field+.field,.rvform__row+.field{margin-top:20px}
.rvform__row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px 24px}
.rvform__text{min-height:140px;resize:vertical;line-height:1.55}
.rvform__rate{flex-direction:row;flex-wrap:wrap;align-items:center;gap:6px 18px}
.rvform__rate .field__label{flex:0 0 100%}
.rvstars{display:inline-flex;flex-direction:row-reverse;gap:2px;padding:2px}
.rvstars input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.rvstars label{font-size:38px;line-height:1;color:#D4D6D3;cursor:pointer;padding:0 2px;transition:color .12s,transform .12s}
.rvstars label:hover,.rvstars label:hover~label,.rvstars input:checked~label{color:var(--navy)}
.rvstars:hover input:checked~label:not(:hover):not(:hover~label){color:#D4D6D3}
.rvstars label:hover{transform:scale(1.08)}
.rvstars input:focus-visible+label{outline:2px solid var(--navy);outline-offset:2px}
.rvstars.is-invalid label{color:#E8B4AE}
.rvstars__word{font-size:15px;font-weight:600;color:var(--muted)}
.rvfiles{display:flex;flex-wrap:wrap;gap:10px}
.rvfile,.rvfiles__add{position:relative;width:104px;height:104px;flex:0 0 auto}
.rvfile{border:1px solid var(--line-input);background:var(--paper);overflow:hidden}
.rvfile img,.rvfile video{width:100%;height:100%;object-fit:cover;display:block}
.rvfile--video::after{content:'';position:absolute;left:8px;bottom:8px;width:24px;height:24px;border-radius:50%;
  background:rgba(21,24,26,.72) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 7v10l8-5z' fill='%23fff'/%3E%3C/svg%3E") center/16px no-repeat}
.rvfile__x{position:absolute;top:4px;right:4px;width:28px;height:28px;padding:0;font-size:20px;line-height:1;color:var(--white);background:rgba(21,24,26,.75);border:0;cursor:pointer}
.rvfile__x:hover{background:var(--ink)}
.rvfiles__add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:1px dashed var(--muted);
  font-size:12.5px;font-weight:600;color:var(--muted-2);text-align:center;line-height:1.25;cursor:pointer;background:var(--white);transition:.15s}
.rvfiles__add:hover{border-color:var(--ink);color:var(--ink)}
.rvfiles__add[hidden]{display:none}
.rvfiles__add input{position:absolute;inset:0;opacity:0;cursor:pointer;font-size:0}
.rvfiles__plus{font-size:30px;font-weight:300;line-height:1}
.rvform__progress{display:flex;flex-direction:column;gap:8px;margin-top:16px;font-size:14px;font-weight:600;color:var(--navy)}
.rvform__progress[hidden]{display:none}
.rvform__bar{position:relative;display:block;height:6px;background:var(--navy-tint);overflow:hidden}
.rvform__bar span{position:absolute;left:0;top:0;bottom:0;width:0;background:var(--navy);transition:width .2s}
.rvform .cbform__err[hidden],.rvform .cbform__ok[hidden]{display:none}

/* просмотр фото/видео */
.lbox{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;background:rgba(12,14,16,.94)}
.lbox[hidden]{display:none}
.lbox-open,.lbox-open body{overflow:hidden}
.lbox__stage{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:56px 72px}
.lbox__stage img,.lbox__stage video{max-width:100%;max-height:100%;object-fit:contain;display:block;background:#000}
.lbox__close{position:absolute;top:10px;right:12px;z-index:1;width:44px;height:44px;padding:0;font-size:32px;line-height:1;color:var(--white);background:transparent;border:0;cursor:pointer}
.lbox__nav{position:absolute;top:50%;z-index:1;width:52px;height:72px;margin-top:-36px;padding:0;font-size:44px;line-height:1;color:var(--white);
  background:rgba(255,255,255,.08);border:0;cursor:pointer}
.lbox__nav:hover{background:rgba(255,255,255,.18)}
.lbox__nav[hidden]{display:none}
.lbox__nav--prev{left:10px}
.lbox__nav--next{right:10px}
.lbox__count{position:absolute;left:0;right:0;bottom:16px;text-align:center;font-size:14px;font-weight:600;color:var(--on-dark-soft)}

@media (max-width:900px){
  .rvsum{grid-template-columns:1fr}
  .rvsum__cta{margin-top:24px}
}
@media (max-width:640px){
  .rvtop{padding-top:18px}
  .rvtop .legal__back{margin-bottom:12px}
  .rvtop .sec__title{font-size:26px}
  .rvowner{font-size:12.5px}
  .rvsum__score{padding:20px 16px}
  .rvsum__avg{font-size:52px}
  .rvsum__stars{font-size:18px}
  .rvsum__bars{padding:10px 16px 14px}
  .rvbar{grid-template-columns:40px minmax(0,1fr) 34px;gap:10px;padding:8px 6px;margin:0 -6px;font-size:14px}
  /* фильтр — одной строкой с прокруткой пальцем (страница вбок не едет) */
  .rvfilter{flex-wrap:nowrap;overflow-x:auto;margin:0 -16px 16px;padding:0 16px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .rvfilter::-webkit-scrollbar{display:none}
  .rvchip{padding:9px 12px;font-size:13.5px}
  .review__thumb{width:72px;height:72px}
  .rvform__row{grid-template-columns:1fr;gap:14px}
  .rvform>.field+.field,.rvform__row+.field{margin-top:14px}
  .rvstars label{font-size:40px}
  .rvfile,.rvfiles__add{width:calc((100% - 20px) / 3);height:auto;aspect-ratio:1}
  .rvform .btn--submit{width:100%;padding:16px 18px;font-size:16px}
  .lbox__stage{padding:56px 0}
  .lbox__nav{width:40px;height:56px;margin-top:-28px;font-size:34px;background:rgba(0,0,0,.35)}
  .lbox__nav--prev{left:0}
  .lbox__nav--next{right:0}
}