/* Скин «Модуль» — квадрат-центр.рф (БЦ Квадрат, arderaid 24807)
   Слой 2: токены поверх канонного main.css. Family-agnostic.
   Палитра выведена из материала: тёмно-синий взят из обводки иконочного набора
   объекта (#002550), охра — из тёплой облицовки фасада.
   z-index шкала скина: 1 фон-рамки фото · 2 контент поверх фото · 3 скрим hero.
   Канонные значения выше 3 не трогаем. */

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

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

:root{
  /* палитра — роли */
  --kv-navy:#002550;          /* текст, тёмные полосы, футер */
  --kv-paper:#F3F4F6;         /* канвас страницы */
  --kv-white:#FFFFFF;         /* плитки модуля */
  --kv-muted:#4A5866;         /* вторичный текст, 6.63:1 к бумаге */
  --kv-line:#D8DDE3;          /* волосяные разделители */
  --kv-steel:#7C8A99;         /* декоративная сталь — НЕ для текста (3.21:1) */
  --kv-ochre:#8A5F22;         /* акцент на светлом: CTA-заливка, ссылки, 5.10:1 */
  --kv-ochre-hi:#C79A4E;      /* тот же акцент на тёмном: 5.91:1 к navy */

  /* шкала отступов, кратность 8 */
  --kv-s1:8px; --kv-s2:16px; --kv-s3:24px; --kv-s4:32px; --kv-s5:48px; --kv-s6:64px;

  /* типографика */
  --kv-display:'Onest',system-ui,sans-serif;
  --kv-body:'Inter Tight',system-ui,sans-serif;
  --skin-h1-max:56px;         /* «Бизнес-центр Квадрат» = 19 знаков → потолок 48–60 */
  --kv-header-h:96px;         /* резерв под абсолютную шапку канона над первым экраном */

  /* перекрытия канонных токенов */
  --color-secondary:#8A5F22;
  --color-primary-text:#002550;
  --border-radius:0;
  --font-family:'Inter Tight',system-ui,sans-serif;
}

body{background:var(--kv-paper);color:var(--kv-navy);
  font-family:var(--kv-body);line-height:1.6;-webkit-font-smoothing:antialiased}

h1,h2,h3{font-family:var(--kv-display);letter-spacing:-0.015em;text-wrap:balance}

a{color:var(--kv-ochre)}
a:hover{color:var(--kv-navy)}

/* Радиус-система: прямые углы. Перекрываем захардкоженные значения канона. */
.card,.card img,input,textarea,select,button,.btn,.swiper-slide img{border-radius:0}

/* Фокус: канон гасит outline ресетом — возвращаем видимый фокус */
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,
select:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--kv-ochre);outline-offset:2px}

/* Гистограмма ставок: канон красит столбцы литералом #7c9796 мимо --color-secondary.
   Столбцы — это данные, а не действие, поэтому берут цвет текста, а не акцент:
   охра остаётся исключительно за кликабельным. */
.histogram .stand{background:var(--kv-navy)}

/* Табы «Аренда / Продажа»: канон красит их захардкоженным бирюзовым (fork-fixes §13) */
.js-office-btn{color:var(--kv-ochre)}
.js-office-btn.is-active{color:var(--kv-navy)}
.js-office-btn.disabled{color:var(--kv-steel)}
.office-deal-nav__sep{color:var(--kv-steel)}

/* Кликабельные слайды площадей (fork-fixes §11) */
.office-card-link{color:inherit;text-decoration:none}

/* Слайдер канона: cover вместо letterbox (fork-fixes §8) */
.office-slider img{-o-object-fit:cover;object-fit:cover}

/* Шапка канона. Элемент <header> идёт без класса .header — селекторы целятся
   в сам тег. Канон рассчитан на белые пункты поверх тёмного фото первого экрана;
   у нас первый экран бумажный, поэтому текст переводим в navy для обоих
   вариантов шапки (обычного и header-white). */
header{background:var(--kv-paper);backdrop-filter:none}
header.header-white{background:var(--kv-white);border-bottom:1px solid var(--kv-line)}
header a,header p{color:var(--kv-navy)}
/* Канон: header.header-white * { color:#fff } — перебиваем той же специфичностью */
header.header-white li>a,
header.header-white li>p,
header.header-white a,
header.header-white p{color:var(--kv-navy)}
header.header-white li>a:hover,
header.header-white li>p:hover{color:var(--kv-ochre)}
header.header-white li>a.active,
header.header-white li>p.active{color:var(--kv-ochre)}
header.header-white svg g path,
header.header-white .svg-block svg,
header.header-white .svg-block path{fill:var(--kv-navy);stroke:var(--kv-navy)}
header.header-white .burger .burger__line,
header.header-white .burger span{background:var(--kv-navy)}
/* Канон целится в пункты меню селектором из четырёх уровней (header nav ul li a).
   Держим ту же специфичность: при равенстве выигрывает файл, подключённый позже. */
header nav ul li a,header nav ul li p{color:var(--kv-navy);
  font-family:var(--kv-body);font-weight:600;text-decoration:none}
header nav ul li a:hover,header nav ul li a.active{color:var(--kv-ochre)}
header nav ul li .sub-menu__title{color:var(--kv-navy)}
header nav ul li .sub-menu__list a{color:var(--kv-navy)}
header .svg-block svg,header .svg-block path{fill:var(--kv-navy);stroke:var(--kv-navy)}
header .burger span,header .burger i{background:var(--kv-navy)}
header.fixed,header.static{background:rgb(255 255 255 / 82%)}
header.fixed li>a,header.fixed li>p,header.fixed a,header.fixed p,
header.static li>a,header.static li>p,header.static a,header.static p{color:var(--kv-navy)}
header.fixed li>a:hover,header.fixed li>a.active,
header.static li>a:hover,header.static li>a.active{color:var(--kv-ochre)}

/* Согласие на обработку ПД */
.form-consent{
  display:flex;align-items:flex-start;gap:.625rem}
.form-consent__input{
  flex-shrink:0;width:1.125rem;height:1.125rem;margin:.2rem 0 0;
  accent-color:var(--kv-ochre)}
.form-consent__label{
  margin:0;line-height:1.45;flex:1;text-align:left}
.form-consent .form-consent__label.form-policy{margin-top:0;text-align:left}
.form-consent.input-error .form-consent__label{color:#c0392b}

/* Цифры выравниваем по табличным знакам везде, где они значимы */
.kv-num,.kv-fact,.office-table td,.office-table th{font-variant-numeric:tabular-nums}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
}
