/* Depo Gold — основа: шрифты, токены, типографика, кнопки, шапка, подвал, контакты, окна.
   Числа — из макета Figma (Typography, Colors, Desktop/Mobile components, Hover). Десктоп 1440, мобильный 375.
   Гарнитура макета — RF Dewi Extended (платная, Rentafont). До покупки лицензии стоит Montserrat: меняется в --f-head. */

@font-face { font-family: 'Montserrat'; font-style: normal; font-weight: 400 600; font-display: swap; src: url("../fonts/montserrat-cyrillic.woff2") format('woff2'); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: 'Montserrat'; font-style: normal; font-weight: 400 600; font-display: swap; src: url("../fonts/montserrat-latin.woff2") format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+20BD, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400 600; font-display: swap; src: url("../fonts/inter-cyrillic.woff2") format('woff2'); unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; }
@font-face { font-family: 'Inter'; font-style: normal; font-weight: 400 600; font-display: swap; src: url("../fonts/inter-latin.woff2") format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+20BD, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

:root {
  /* Цвета (лист Colors и страницы макета) */
  --c-bg: #1a1a1a;            /* фон страниц */
  --c-black: #000;
  --c-line: #484848;          /* линии сетки, рамки полей */
  --c-card: #212121;          /* карточка на наведении */
  --c-hover: #2e2e2e;         /* кнопка/строка на наведении */
  --c-gold: #c59050;          /* слиток в метке, точка активного пункта */
  --c-gray: #737373;
  --c-green: #42b36b;         /* Greencow на наведении */
  --c-white: #fff;
  --c-white-80: rgba(255, 255, 255, .8);
  --c-white-50: rgba(255, 255, 255, .5);
  --c-white-20: rgba(255, 255, 255, .2);
  --c-shade: rgba(0, 0, 0, .5);  /* затемнение фото первого экрана и подложка окон */

  --f-head: 'Montserrat', Arial, sans-serif;   /* в макете RF Dewi Extended */
  --f-text: 'Inter', Arial, sans-serif;
  --w-semi: 500;              /* Semibold у RF Dewi светлее, чем 600 у Montserrat */

  --gutter: 40px;             /* поля страницы */
  --head-h: 82px;             /* шапка без линии */
  --sec-top: 120px;           /* заголовок раздела: сверху */
  --sec-bot: 96px;            /*                    снизу */
  --btn-h: 64px;
  --btn-px: 40px;
  --ease: cubic-bezier(.4, 0, .2, 1);
}
@media (max-width: 1023px) {
  :root { --gutter: 24px; --head-h: 64px; --sec-top: 96px; --sec-bot: 64px; --btn-h: 56px; --btn-px: 32px; }
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; background: var(--c-bg); }
body {
  margin: 0; background: var(--c-bg); color: var(--c-white);
  font: 400 15px/22px var(--f-text);
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
  display: flex; flex-direction: column; min-height: 100vh;
}
main { flex: 1 0 auto; width: 100%; }
img, svg, video { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; background: none; border: 0; padding: 0; cursor: pointer; text-align: inherit; }
h1, h2, h3, h4, p, ul, ol, figure, blockquote { margin: 0; padding: 0; }
ul, ol { list-style: none; }
input, textarea { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--c-gold); outline-offset: 2px; }
@media (max-width: 1023px) { br.d { display: none; } } /* переносы автора только на десктопе */
@media (min-width: 1024px) { br.m { display: none; } } /* и только на телефоне */
.visually-hidden { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.no-scroll { overflow: hidden; }

.i { width: 24px; height: 24px; flex: none; fill: none; }
.i-16 { width: 16px; height: 16px; }
.i-14 { width: 14px; height: 14px; }

.wrap { width: 100%; padding-inline: var(--gutter); }

/* ---------- Типографика: роли шкалы дизайнера (Typography) ---------- */
.t-caps { font: 500 11px/20px var(--f-text); letter-spacing: .06em; text-transform: uppercase; }
.t-body { font: 400 15px/22px var(--f-text); }
.t-h1 { font: 400 52px/60px var(--f-head); }                 /* Heading 52-60 */
.t-h2 { font: 400 40px/48px var(--f-head); }                 /* Heading 40-48 */
.t-h3 { font: 400 24px/32px var(--f-head); }                 /* Heading 24-32 */
.t-h4 { font: 400 22px/30px var(--f-head); }                 /* Heading 22-30 */
.t-h5 { font: 400 20px/28px var(--f-head); }                 /* Heading 20-28 */
.t-h6 { font: 400 17px/26px var(--f-head); }                 /* Heading 17-26 */
.t-h7 { font: 400 15px/24px var(--f-head); }                 /* Heading 15-24 */
.t-cap72 { font: var(--w-semi) 72px/80px var(--f-head); text-transform: uppercase; }
.t-cap28 { font: var(--w-semi) 28px/38px var(--f-head); text-transform: uppercase; }
.t-cap24 { font: var(--w-semi) 24px/34px var(--f-head); text-transform: uppercase; }
.t-cap22 { font: var(--w-semi) 22px/32px var(--f-head); text-transform: uppercase; }
.t-cap20 { font: var(--w-semi) 20px/30px var(--f-head); text-transform: uppercase; }
.t-cap16 { font: var(--w-semi) 16px/22px var(--f-head); text-transform: uppercase; }
.t-num96 { font: var(--w-semi) 96px/104px var(--f-head); text-transform: uppercase; }
.t-num64 { font: var(--w-semi) 64px/72px var(--f-head); text-transform: uppercase; }
.t-num48 { font: var(--w-semi) 48px/56px var(--f-head); text-transform: uppercase; }
.c-80 { color: var(--c-white-80); }
.c-50 { color: var(--c-white-50); }
@media (max-width: 1023px) {
  .t-h1 { font-size: 24px; line-height: 32px; }
  .t-h2 { font-size: 24px; line-height: 32px; }
  .t-h3 { font-size: 20px; line-height: 28px; }
  .t-h4 { font-size: 20px; line-height: 28px; }
  .t-cap72 { font-size: 40px; line-height: 48px; }
  .t-cap28 { font-size: 24px; line-height: 34px; }
  .t-num96 { font-size: 48px; line-height: 56px; }
  .t-num64 { font-size: 40px; line-height: 48px; }
}

/* ---------- Кнопки (Button 64px / Button 56px m / Button icon) ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 14px;
  height: var(--btn-h); padding-inline: var(--btn-px);
  font: 500 11px/20px var(--f-text); letter-spacing: .06em; text-transform: uppercase; white-space: nowrap;
  background: var(--c-black); color: var(--c-white);
  transition: background-color .25s var(--ease), color .25s var(--ease);
}
.btn .i { width: 14px; height: 14px; }
.btn--white { background: var(--c-white); color: var(--c-bg); }
.btn--dark { background: var(--c-bg); }
.btn--wide { width: 100%; }
.btn--split { justify-content: space-between; }
@media (hover: hover) {
  .btn:hover { background: var(--c-hover); color: var(--c-white); }
  .btn--white:hover { background: var(--c-hover); color: var(--c-white-50); }
}
/* пара кнопок карточки услуги: белая + чёрная */
.btn-pair { display: flex; }
.btn-pair .btn { flex: 1 1 0; padding-inline: 24px; }

.ibtn {
  display: inline-grid; place-items: center; width: 64px; height: 64px; flex: none;
  background: var(--c-bg); color: var(--c-white); transition: background-color .25s var(--ease);
}
.ibtn .i { width: 16px; height: 16px; }
.ibtn--black { background: var(--c-black); }
.ibtn--s { width: 32px; height: 32px; background: var(--c-white); color: var(--c-bg); }
@media (hover: hover) {
  .ibtn:hover { background: var(--c-hover); }
  .ibtn--s:hover { background: var(--c-hover); color: var(--c-white); }
}

/* ---------- Метка раздела (Preheader): слиток + капс ---------- */
.pre { display: inline-flex; align-items: center; gap: 16px; padding-top: 8px; }
.pre::before { content: ""; width: 20px; height: 8px; flex: none; background: var(--c-gold); clip-path: polygon(16.3% 0, 83.7% 0, 100% 100%, 0 100%); border-radius: 1px; }
.pre { font: 500 11px/20px var(--f-text); letter-spacing: .06em; text-transform: uppercase; }

/* ---------- Заголовок раздела (Heading H2): метка слева, заголовок и вводка с середины ---------- */
.shead {
  display: grid; grid-template-columns: 50% 1fr; align-items: start; padding: var(--sec-top) var(--gutter) var(--sec-bot);
}
/* блок заголовка в макете 664 шириной, начинается на 16 правее середины */
.shead__body { padding-left: 16px; max-width: calc(664px + 16px); display: grid; gap: 32px; align-content: start; }
.shead__title { font: 400 40px/48px var(--f-head); }
.shead__text { color: var(--c-white-80); max-width: 597px; } /* блок текста в макете 597, заголовок 664 */
@media (max-width: 1023px) {
  /* Heading H2 m: метка → 32 → заголовок 22/30 → 20 → вводка */
  .shead { grid-template-columns: 1fr; gap: 32px; }
  .shead .pre { padding-top: 0; }
  .shead__body { padding-left: 0; gap: 20px; max-width: none; }
  .shead__title { font-size: 22px; line-height: 30px; }
}

/* линии сетки */
.line-t { border-top: 1px solid var(--c-line); }
.line-b { border-bottom: 1px solid var(--c-line); }

/* ---------- Шапка (Head / Head m) ---------- */
.header { position: relative; z-index: 20; height: calc(var(--head-h) + 1px); border-bottom: 1px solid var(--c-white-20); color: var(--c-white); }
.header--over { position: absolute; inset: 0 0 auto 0; }
.header__in { display: flex; height: var(--head-h); }
.header__logo { display: flex; align-items: center; gap: 16px; width: 283px; padding-left: var(--gutter); flex: none; }
.logo-mark { width: 58px; height: 26px; flex: none; }
.logo-text { width: 128px; height: 26px; flex: none; }
.header__lang { width: 65px; flex: none; display: grid; grid-template-rows: 40px 1fr; border-inline: 1px solid var(--c-white-20); }
.header__lang a { display: flex; align-items: center; justify-content: center; font: 500 11px/20px var(--f-text); letter-spacing: .06em; text-transform: uppercase; transition: color .25s; }
.header__lang a + a { border-top: 1px solid var(--c-white-20); }
.header__lang a[aria-current] { color: var(--c-white-50); }
.header__rate { flex: 1; display: flex; align-items: center; justify-content: center; gap: 12px; white-space: nowrap; }
.header__cell { display: flex; align-items: center; gap: 14px; padding-inline: 40px; border-left: 1px solid var(--c-white-20); white-space: nowrap; transition: color .25s; }
.header__cell .i { width: 16px; height: 16px; }
.header__cell--cta .i { width: 14px; height: 14px; }
.header__menu { display: flex; align-items: center; gap: 14px; padding-inline: 40px; background: var(--c-white); color: var(--c-bg); flex: none; transition: background-color .25s, color .25s; }
.header__menu .i { width: 24px; height: 24px; }
.header__menu .i-close { display: none; }
.menu-open .header__menu { background: var(--c-bg); color: var(--c-white); }
.menu-open .header__menu .i-menu { display: none; }
.menu-open .header__menu .i-close { display: block; }
.header__ddlang { display: none; }
@media (hover: hover) {
  .header__cell:hover, .header__lang a:hover { color: var(--c-white-50); }
  .header__menu:hover { background: var(--c-black); color: var(--c-white); }
}
@media (max-width: 1279px) {
  .header__rate { display: none; }
  .header__cell--phone { margin-left: auto; }
}
@media (max-width: 1023px) {
  .header__logo { width: auto; gap: 12px; }
  .logo-mark { width: 45px; height: 20px; }
  .logo-text { width: 99px; height: 20px; }
  .header__lang, .header__cell { display: none; }
  .header__ddlang { display: block; position: relative; margin-left: auto; margin-right: 40px; align-self: center; }
  .header__ddlang > button { display: flex; align-items: center; gap: 8px; height: 40px; padding-inline: 12px; font: 500 11px/20px var(--f-text); letter-spacing: .06em; text-transform: uppercase; }
  .header__ddlang > button .i { width: 12px; height: 12px; transition: transform .25s; }
  .header__ddlang ul { position: absolute; left: 0; right: 0; top: 100%; background: var(--c-bg); display: none; }
  .header__ddlang.is-open > button { background: var(--c-bg); }
  .header__ddlang.is-open > button .i { transform: rotate(180deg); }
  .header__ddlang.is-open ul { display: block; }
  .header__ddlang ul a { display: block; padding: 10px 12px; border-top: 1px solid var(--c-line); font: 500 11px/20px var(--f-text); letter-spacing: .06em; text-transform: uppercase; }
  .header__menu { width: 72px; padding: 0; justify-content: center; }
  .header__menu span { display: none; }
}
@media (max-width: 359px) {
  .header__ddlang { margin-right: 8px; }
  .footer__nav { grid-template-columns: 1fr; }
  .phone__row { flex-wrap: wrap; row-gap: 12px; }
}

/* ---------- Блок контактов (Contacts / Contacts on page) ---------- */
.contacts__row { display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--c-line); }
.contacts__info { display: flex; flex-direction: column; }
.cline { display: grid; grid-template-columns: 200px 1fr; padding: 32px var(--gutter); border-bottom: 1px solid var(--c-line); }
.cline--first { padding-top: 32px; }
.cline:last-of-type { border-bottom: 0; }
.cline__label { padding-top: 10px; }
.contacts__info .cline:nth-child(1) { padding-block: 32px 32px; }
.contacts__info .cline:nth-child(2) { padding-block: 32px; }
.contacts__info .cline:nth-child(3) { padding-block: 32px 0; border-bottom: 0; }
.contacts__btn { margin: auto var(--gutter) 40px calc(var(--gutter) + 200px); width: auto; }
.phone { display: grid; gap: 11px; }
.phone__row { display: flex; align-items: center; gap: 24px; }
.phone__num { font: var(--w-semi) 28px/38px var(--f-head); white-space: nowrap; transition: color .25s; }
.phone__msgr { display: flex; gap: 8px; }
.phone__sub { color: var(--c-white-80); }
.mail { display: inline-flex; align-items: center; gap: 12px; transition: color .25s; position: relative; }
.mail .i { width: 16px; height: 16px; }
@media (hover: hover) {
  .phone__num:hover, .mail:hover { color: var(--c-white-50); }
}
/* 1024–1279: половина экрана не вмещает подпись 200 + телефон 335 — подпись уже, номер 24 */
@media (min-width: 1024px) and (max-width: 1279px) {
  .cline, .footer .footer__right .cline { grid-template-columns: 120px 1fr; }
  .contacts__btn { margin-left: calc(var(--gutter) + 120px); }
  .phone__num { font-size: 24px; line-height: 34px; }
  .phone__row { gap: 16px; }
  .footer .footer__nav { grid-template-columns: 110px 1fr; row-gap: 32px; }
  .footer .footer__svc { grid-column: 2; }
  .footer .footer__btns { grid-template-columns: 1fr; gap: 0; }
  .footer__right > *, .cline > * { min-width: 0; }
  .phone__row { flex-wrap: wrap; row-gap: 12px; }
}
.map { position: relative; overflow: hidden; background: #34373c; min-height: 505px; }
/* карта 1000×600 из тайлов OSM вокруг адреса (_tools/maptiles.py), 1:1 — точка адреса в центре */
.map__img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: none; object-position: 50% 50%; }
.map__pin { position: absolute; left: 50%; top: calc(50% - 84px); width: 64px; height: 84px; transform: translateX(-50%); } /* острие метки в точке адреса */
.map__go { position: absolute; left: 40px; bottom: 40px; }
.map__zoom { position: absolute; right: 40px; bottom: 40px; display: flex; }
.map__zoom .ibtn + .ibtn { border-left: 1px solid var(--c-line); }
@media (max-width: 1023px) {
  .contacts { padding-bottom: 96px; } /* Contacts on page: снизу 96 до подвала */
  .contacts__row { grid-template-columns: 1fr; }
  .cline { grid-template-columns: 1fr; gap: 24px; }
  .cline__label { padding-top: 0; }
  .contacts__info .cline:nth-child(n) { padding: 24px var(--gutter) 32px; border-bottom: 1px solid var(--c-line); }
  .contacts__btn { margin: 40px var(--gutter) 0; }
  .phone__num { font-size: 24px; line-height: 34px; }
  .map { min-height: 380px; margin-top: 40px; }
  .map__go { left: var(--gutter); bottom: var(--gutter); }
  .map__zoom { display: none; }
}

/* тост «Email скопирован» */
.toast {
  position: fixed; left: 50%; bottom: 40px; z-index: 90; transform: translate(-50%, 20px);
  padding: 12px 16px; background: var(--c-hover); color: var(--c-white); font: 400 15px/22px var(--f-text);
  opacity: 0; pointer-events: none; transition: opacity .25s, transform .25s var(--ease);
}
.toast.is-on { opacity: 1; transform: translate(-50%, 0); }

/* ---------- Подвал (Footer-2 / Footer m) ---------- */
.footer { padding-top: 160px; padding-bottom: 40px; }
.footer__word { border-block: 1px solid var(--c-line); padding: 64px var(--gutter); }
.footer__word svg { width: 100%; height: auto; color: var(--c-white); }
.footer__grid { display: grid; grid-template-columns: 1fr 1fr; }
.footer__left { display: grid; grid-template-rows: 1fr auto; border-right: 1px solid var(--c-line); }
.footer__nav { display: grid; grid-template-columns: 150px 199px 1fr; align-content: start; min-height: 305px; padding: 54px var(--gutter) 64px; }
.footer__nav .logo-mark { margin-top: 3px; }
.footer__menu { display: grid; gap: 8px; align-content: start; }
.footer__menu a, .footer__svc a { transition: color .25s; }
.footer__svc { display: grid; gap: 24px; align-content: start; }
.footer__svc ul { display: grid; gap: 8px; }
.footer__dev { display: flex; align-items: center; gap: 16px; min-height: 125px; padding: 40px var(--gutter); border-top: 1px solid var(--c-line); color: var(--c-white-50); }
.footer__dev img { width: 36px; height: 36px; }
.footer__dev a { color: var(--c-white); transition: color .25s; }
.footer__right { display: grid; grid-template-rows: auto 1fr auto; padding: 48px var(--gutter) 40px; }
.footer__right .cline { padding: 0; border: 0; grid-template-columns: 200px 1fr; }
.footer__right .cline + .cline { margin-top: 48px; }
.footer__btns { display: grid; grid-template-columns: 1fr 232px; margin-top: 64px; align-self: end; }
.footer__bottom { display: grid; grid-template-columns: 1fr auto 1fr; padding: 40px var(--gutter) 0; border-top: 1px solid var(--c-line); color: var(--c-white-50); }
.footer__bottom a { transition: color .25s; }
.footer__bottom > :nth-child(2) { text-align: center; }
.footer__bottom > :nth-child(3) { text-align: right; }
@media (hover: hover) {
  .footer__menu a:hover, .footer__svc a:hover, .footer__bottom a:hover { color: var(--c-white-50); }
  .footer__dev a:hover { color: var(--c-green); }
}
.footer__mword, .footer__mnav { display: none; }
/* Footer m: слово DEPO/GOLD 327×85 в две строки → «Вернуться наверх» справа → разделы строками по 53 →
   телефон и почта (64 сверху и снизу) → PDF → Greencow (64/40) → линия → ссылки (шаг 30) → © через 64 */
@media (max-width: 1023px) {
  .footer { display: flex; flex-direction: column; padding-top: 0; padding-bottom: 0; border-top: 1px solid var(--c-line); }
  .footer__grid, .footer__left, .footer__right, .footer__btns { display: contents; }
  .footer__word { order: 0; border: 0; padding: 32px var(--gutter) 64px; }
  .footer__word > svg { display: none; }
  .footer__mword { display: grid; gap: 24px; }
  .footer__mword svg { display: block; width: 100%; height: auto; color: var(--c-white); }
  .footer__btns .btn:last-child { order: 1; align-self: flex-end; margin: 0 var(--gutter) 32px; padding-inline: 32px; background: var(--c-black); }
  .footer__nav { display: none; }
  .footer__mnav { order: 2; display: block; border-bottom: 1px solid var(--c-line); }
  .footer__mnav > a, .footer__mrow { display: flex; align-items: center; justify-content: space-between; min-height: 53px; border-top: 1px solid var(--c-line); }
  .footer__mnav > a, .footer__mrow > a { padding: 16px 28px 16px var(--gutter); }
  .footer__mnav > a[aria-current]::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--c-gold); flex: none; }
  .footer__mrow > a { flex: 1; }
  .footer__mrow > button { align-self: stretch; width: 65px; display: grid; place-items: center; border-left: 1px solid var(--c-line); }
  .footer__mrow .i { width: 16px; height: 16px; transition: transform .25s; }
  .footer__msvc { display: none; gap: 12px; padding: 16px 65px 40px var(--gutter); font: 400 15px/22px var(--f-text); letter-spacing: 0; text-transform: none; }
  .footer__mnav.svc-open .footer__msvc { display: grid; }
  .footer__mnav.svc-open .footer__mrow .i { transform: rotate(45deg); }
  .footer__mnav.svc-open .footer__mrow, .footer__mnav.svc-open .footer__msvc { background: linear-gradient(var(--c-line), var(--c-line)) no-repeat calc(100% - 65px) 0 / 1px 100%, var(--c-card); }
  .footer__mnav.svc-open .footer__mrow > button { border-left: 0; }
  .footer__right .cline { order: 3; display: block; padding: 0 var(--gutter); }
  .footer__right .cline__label, .footer__right .phone__sub { display: none; }
  .footer__right .phone__row { height: 32px; } /* строка номера в макете 32: номер 24/34 выступает на 1 px, зона нажатия цела */
  .footer__right .cline:first-of-type { padding-top: 64px; }
  .footer__right .cline + .cline { margin-top: 24px; }
  .footer__btns .btn:first-child { order: 4; margin: 64px var(--gutter) 0; padding-inline: 24px; justify-content: space-between; }
  .footer__dev { order: 5; min-height: 0; border-top: 0; padding: 64px var(--gutter) 40px; }
  .footer__bottom { order: 6; grid-template-columns: 1fr; gap: 8px; padding: 40px var(--gutter); }
  .footer__bottom > :nth-child(n) { text-align: left; }
  .footer__bottom > :first-child { order: 3; margin-top: 56px; }
}

/* ---------- Окна: подложка, правая панель, нижний лист на телефоне ---------- */
.overlay { position: fixed; inset: 0; z-index: 50; background: var(--c-shade); opacity: 0; visibility: hidden; transition: opacity .3s, visibility .3s; }
.overlay.is-on { opacity: 1; visibility: visible; }
.panel {
  position: fixed; top: 0; right: 0; bottom: 0; z-index: 60; width: 813px; max-width: 100%;
  background: var(--c-bg); border-left: 1px solid var(--c-line); overflow-y: auto; overscroll-behavior: contain;
  transform: translateX(100%); visibility: hidden; transition: transform .4s var(--ease), visibility .4s;
}
.panel.is-on { transform: none; visibility: visible; }
.panel__close { position: absolute; top: 0; right: 0; width: 64px; height: 64px; display: grid; place-items: center; border-left: 1px solid var(--c-line); border-bottom: 1px solid var(--c-line); z-index: 2; transition: background-color .25s; }
.panel__close .i { width: 16px; height: 16px; }
@media (hover: hover) { .panel__close:hover { background: var(--c-hover); } }
.panel__grab { display: none; }

/* меню: правая панель 420 */
.menu { width: 420px; padding: 72px 64px 40px; display: flex; flex-direction: column; top: 0; }
.menu__nav { display: grid; }
.menu__big { display: flex; align-items: center; justify-content: space-between; gap: 16px; font: var(--w-semi) 22px/32px var(--f-head); text-transform: uppercase; transition: color .25s; }
.menu__big[aria-current]::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--c-gold); flex: none; }
.menu__g1 { display: grid; gap: 10px; padding-bottom: 16px; border-bottom: 1px solid var(--c-line); }
.menu__svc { display: grid; gap: 8px; padding: 24px 0 40px; border-bottom: 1px solid var(--c-line); }
.menu__svc a { transition: color .25s; }
.menu__g2 { display: grid; gap: 10px; padding-top: 16px; }
.menu__btn { margin-top: auto; }
.menu__toggle { display: none; }
.menu__head { display: none; }
/* «× Меню» слева от панели (Меню 2019-7482: 157×83, справа упирается в панель 420) */
.menu-x { position: fixed; top: 0; right: 420px; z-index: 61; display: none; align-items: center; gap: 14px; height: 83px; padding-inline: 40px; background: var(--c-bg); color: var(--c-white); border-left: 1px solid var(--c-line); border-bottom: 1px solid var(--c-line); transition: background-color .25s; }
.menu-x .i { width: 24px; height: 24px; }
.menu-open .menu-x { display: flex; }
@media (hover: hover) { .menu-x:hover { background: var(--c-hover); } }
@media (hover: hover) { .menu__big:hover, .menu__svc a:hover { color: var(--c-white-50); } }

/* форма заявки */
.req { padding: 59px 64px 59px; }
.req__title { font: 400 22px/28px var(--f-head); max-width: 606px; margin-bottom: 40px; }
.req__grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.field { position: relative; display: block; }
.field input, .field textarea {
  width: 100%; height: 64px; padding: 22px 48px 22px 24px; background: var(--c-bg); border: 1px solid var(--c-line); border-radius: 0;
  font: 400 15px/20px var(--f-text); color: var(--c-white); outline: none; transition: border-color .25s; resize: none;
}
.field textarea { height: 96px; display: block; }
.field--wide { grid-column: 1 / -1; }
.field input::placeholder, .field textarea::placeholder { color: var(--c-white-50); font: 500 11px/20px var(--f-text); letter-spacing: .06em; text-transform: uppercase; opacity: 1; }
.field input:focus, .field textarea:focus { border-color: var(--c-white-50); }
.field.is-err input { border-color: #d95c5c; }
.field__req { position: absolute; right: 24px; top: 22px; color: var(--c-white-50); pointer-events: none; }
.req__checks { display: grid; grid-template-columns: 250px 1fr; gap: 48px; margin-top: 40px; }
.check { display: flex; gap: 16px; color: var(--c-white-50); cursor: pointer; }
.check input { appearance: none; -webkit-appearance: none; width: 24px; height: 24px; flex: none; margin: 0; border: 1px solid var(--c-line); border-radius: 50%; cursor: pointer; display: grid; place-items: center; transition: border-color .25s; }
.check input::after { content: ""; width: 10px; height: 10px; border-radius: 50%; background: var(--c-white); transform: scale(0); transition: transform .2s; }
.check input:checked::after { transform: none; }
.check.is-err input { border-color: #d95c5c; }
.req__policy { display: inline-block; margin-top: 32px; transition: color .25s; }
@media (hover: hover) { .req__policy:hover { color: var(--c-white-50); } }
.req__send { margin-top: 48px; width: 100%; }
.thanks { display: none; place-items: center; min-height: 100%; padding: 64px; text-align: left; }
.thanks__in { display: grid; gap: 40px; justify-items: start; }
.thanks__title { font: 400 22px/28px var(--f-head); }
.req-panel.is-sent .req { display: none; }
.req-panel.is-sent .thanks { display: grid; }

/* куки */
.cookies {
  position: fixed; left: 40px; bottom: 40px; z-index: 40; width: 535px; max-width: calc(100% - 80px);
  background: var(--c-white); color: var(--c-gray); padding: 24px 24px 24px 24px; display: grid; gap: 32px;
  transform: translateY(20px); opacity: 0; visibility: hidden; transition: opacity .3s, transform .3s var(--ease), visibility .3s;
}
.cookies.is-on { opacity: 1; transform: none; visibility: visible; }
.cookies p { padding-right: 48px; }
.cookies p a { color: var(--c-bg); }
.cookies__x { position: absolute; top: 12px; right: 12px; width: 40px; height: 40px; display: grid; place-items: center; color: var(--c-bg); }
.cookies__x .i { width: 16px; height: 16px; }
.cookies .btn { justify-self: start; }

@media (max-width: 1023px) {
  /* меню на телефоне: во весь экран под шапкой */
  .menu-open .menu-x { display: none; }
  .menu__head { display: flex; height: calc(var(--head-h) + 1px); border-bottom: 1px solid var(--c-line); }
  .menu__close { margin-left: auto; width: 72px; display: grid; place-items: center; background: var(--c-white); color: var(--c-bg); }
  .menu__close .i { width: 24px; height: 24px; }
  /* Меню м: строки 55 (16 + 22 + 16 + линия) с линиями между ними, первая с 96; «+» в колонке 65; PDF в 24 от низа */
  .menu { width: 100%; top: 0; border-left: 0; padding: 0 0 24px; transform: translateY(-8px); opacity: 0; transition: opacity .3s, transform .3s var(--ease), visibility .3s; }
  .menu.is-on { opacity: 1; transform: none; }
  .menu__nav { padding: 31px 0 40px; }
  .menu__g1, .menu__g2 { display: contents; }
  .menu__big { padding: 16px 28px 16px var(--gutter); font-size: 16px; line-height: 22px; }
  .menu__g1 > .menu__big, .menu__row, .menu__g2 > .menu__big:not(:last-child) { border-bottom: 1px solid var(--c-line); }
  .menu__row { display: flex; }
  .menu__row .menu__big { flex: 1; }
  .menu__toggle { display: grid; place-items: center; width: 65px; border-left: 1px solid var(--c-line); }
  .menu__toggle .i { width: 16px; height: 16px; transition: transform .25s; }
  .menu__svc { display: none; gap: 12px; padding: 16px 65px 40px var(--gutter); border-bottom: 1px solid var(--c-line); }
  .menu.svc-open .menu__svc { display: grid; }
  .menu.svc-open .menu__row { border-bottom: 0; }
  .menu.svc-open .menu__row, .menu.svc-open .menu__svc { background: linear-gradient(var(--c-line), var(--c-line)) no-repeat calc(100% - 65px) 0 / 1px 100%, var(--c-card); }
  .menu.svc-open .menu__toggle { border-left: 0; }
  .menu.svc-open .menu__toggle .i { transform: rotate(45deg); }
  .menu__btn { margin: auto var(--gutter) 0; width: auto; }
  /* окна снизу листом: верх на 96, ручка 64×2 в 24 от верха, крестик по центру в 36 от верха и правого края */
  .panel:not(.menu) { top: auto; left: 0; width: 100%; max-height: calc(100% - 96px); border-left: 0; transform: translateY(100%); }
  .panel:not(.menu).is-on { transform: none; }
  .panel:not(.menu) .panel__grab { display: block; width: 64px; height: 2px; margin: 24px auto 0; border-radius: 2px; background: var(--c-white-20); }
  .panel__close { width: 56px; height: 56px; border: 0; top: 8px; right: 8px; }
  .req-panel.is-sent { height: calc(100% - 96px); }
  .thanks__title { font-size: 17px; line-height: 26px; }
  .thanks__in { width: 100%; gap: 48px; justify-items: stretch; }
  .req-panel.is-sent .thanks { position: absolute; inset: 0; min-height: 0; } /* по центру всего листа, как в макете, а не области под ручкой */
  .thanks__in .btn { justify-content: space-between; padding-inline: 24px; }
  .req { padding: 40px var(--gutter) 40px; }
  .req__title { font-size: 17px; line-height: 26px; padding-right: 32px; }
  .req__grid { grid-template-columns: 1fr; gap: 16px; }
  .field input { height: 52px; padding-block: 16px; }
  .field__req { top: 16px; }
  .field textarea { height: 102px; }
  .req__checks { grid-template-columns: 1fr; gap: 24px; }
  .thanks { padding: 64px var(--gutter); }
  /* Cookies m: лист 24/24/40, ручка 64×2 чёрная 50% в 24 от верха, текст во всю ширину через 32 под ней, кнопка через 48 */
  .cookies { left: 0; right: 0; bottom: 0; width: 100%; max-width: none; padding: 80px var(--gutter) 40px; gap: 48px; }
  .cookies::before { content: ""; position: absolute; top: 24px; left: 50%; width: 64px; height: 2px; margin-left: -32px; border-radius: 2px; background: rgba(0, 0, 0, .5); }
  .cookies p { padding-right: 0; }
  .cookies__x { top: 16px; right: 16px; }
  .cookies .btn { justify-self: stretch; justify-content: space-between; }
}
