/* ERA — «Вечер ар-деко».
   Палитра и приёмы — из официальной презентации ERA (обложка, шеврон, тройная линейка меню).
   Шрифты подключены <link>-ом в head (07.08) — @import блокирует отрисовку на iOS. */

:root{
  /* ---- палитра «сумеречно-медная» (ARTDIRECTION.md, раздел 1. ERA) ---- */
  --twilight: #3E4A63;        /* сумеречный, база тёмных секций */
  --twilight-deep: #2A3446;   /* более глубокий сумеречный — nav, самые тёмные блоки */
  --sunset: #D9A184;          /* закатный, низ hero-градиента */
  --paper: #F4F2EF;           /* бумага, база светлых секций */
  --paper-2: #ECE5D9;         /* вторая светлая, для чередования */
  --copper-1: #B5764F;        /* медь тёмная — начало градиента */
  --copper-2: #E8C39E;        /* медь светлая — конец градиента */
  --copper-grad: linear-gradient(135deg, var(--copper-1) 0%, var(--copper-2) 100%);
  --text: #3A4A66;            /* текст на светлом */
  --text-soft: rgba(58,74,102,0.72);
  --cream-dark: #F3E9D8;      /* текст на тёмном */
  --cream-dark-soft: rgba(243,233,216,0.72);
  --line: rgba(58,74,102,0.16);
  --line-light: rgba(243,233,216,0.22);
  --rule-grad: repeating-linear-gradient(to bottom, var(--copper-1) 0px, var(--copper-1) 1px, transparent 1px, transparent 4px);
  --rule-grad-dark: repeating-linear-gradient(to bottom, var(--copper-2) 0px, var(--copper-2) 1px, transparent 1px, transparent 4px);

  /* псевдонимы старых переменных каркаса — держим имена ради инлайн-стилей в index.html,
     но значения теперь целиком из медно-сумеречной палитры ERA */
  --gold: var(--copper-1);
  --terracotta: var(--copper-1);
  --terracotta-deep: #8C5A3A;
  --charcoal: var(--twilight-deep);
  --stone: var(--text-soft);
  --stone-dark: var(--text-soft);
  --cream: var(--paper-2);
  --cream-2: var(--paper-2);
  --ink: var(--text);

  --radius: 2px;
  /* ---- UI-слой 03.08 (эталон seregina5.com): мягкие скругления ---- */
  --radius-card: 18px;
  --radius-btn: 11px;
  --radius-input: 10px;
  --radius-sheet: 20px;
  --shadow-card: 0 8px 30px rgba(20,15,10,0.12);
  --shadow-card-lg: 0 24px 60px rgba(15,15,22,0.22);
  --ease: cubic-bezier(.22,.61,.36,1);
  --maxw: 1440px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;overflow-x:hidden;}
body{
  margin:0;
  background:var(--paper);
  color:var(--text);
  font-family:'PT Serif', serif;
  font-weight:400;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img,video{max-width:100%;display:block;}
figure{margin:0;}
a{color:inherit;text-decoration:none;}
.serif{font-family:'PT Serif', serif;font-style:italic;}

h1,h2,h3{
  font-family:'Montserrat', sans-serif;
  font-weight:200;
  text-transform:uppercase;
  margin:0;
  color:var(--twilight);
  /* разреженный капс Montserrat + узкая колонка на 320px: длинные слова
     («ДАНИЛОВСКИЙ», «АРХИТЕКТУРА») выходят за границы текстом, хотя сам
     бокс формально не переполняется — поэлементная проверка это не ловит */
  overflow-wrap:break-word;
  hyphens:auto;
}
h1{letter-spacing:0.13em;}
h2{letter-spacing:0.09em;}
h3{letter-spacing:0.07em;font-weight:300;}
h4{font-family:'PT Serif', serif;font-weight:400;margin:0;color:var(--text);}
.on-dark h1,.on-dark h2,.on-dark h3{color:var(--cream-dark);}
.on-dark p,.on-dark span{color:var(--cream-dark);}

/* ---------- тройная линейка «нотный стан» — под каждым заголовком и цифрой ----------
   Фирменный приём ERA (см. страницу оглавления презентации: под каждым пунктом
   меню — тройная линия). Три волоска по 1px, зазор 3px = высота 9px. Копия
   применена глобально к h1–h3 через ::after — без правок разметки. */
h1::after,h2::after,h3::after{
  content:"";
  display:block;
  width:64px;height:9px;
  margin-top:20px;
  background-image:var(--rule-grad);
}
.on-dark h1::after,.on-dark h2::after,.on-dark h3::after,
.service-head h2::after,.interiors h2::after,.service h2::after,
.auto h2::after,.landscape-copy h2::after{background-image:var(--rule-grad-dark);}

.eyebrow{
  font-family:'PT Serif', serif;
  font-size:11.5px;
  letter-spacing:0.22em;
  text-transform:uppercase;
  color:var(--copper-1);
  display:inline-flex;
  align-items:center;
  gap:10px;
  overflow-wrap:break-word;
  max-width:100%;
}
.on-dark .eyebrow{color:var(--copper-2);}
.eyebrow::before{
  content:"";
  width:22px;height:1px;background:currentColor;display:inline-block;
}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 clamp(20px,5vw,64px);width:100%;}
section{position:relative;}

/* ---------- защита от горизонтального переполнения ----------
   По умолчанию у grid/flex-элемента min-width:auto — трек не может стать
   уже min-content содержимого (картинки, длинного текста в кнопке). На
   узких экранах это раздвигает колонку шире вьюпорта. Обнуляем минимум
   на всех сетках/флексах и их прямых потомках. */
.hero-inner,
.intro .grid, .numbers .grid, .loc-grid, .house-grid, .arch-grid, .dev-grid, .lead-grid,
.service-grid, .interiors-facts, .auto-facts, .footer-top,
.garden-split, .hero-cta, .lead-facts, .house-names,
.dist-list, .dist-item, .service-cards{
  min-width:0;
}
.hero-inner > *,
.intro .grid > *, .numbers .grid > *, .loc-grid > *, .house-grid > *, .arch-grid > *,
.dev-grid > *, .lead-grid > *, .service-grid > *, .interiors-facts > *, .auto-facts > *,
.footer-top > *, .garden-split > *{
  min-width:0;
}

/* ---------- заставка загрузки ----------
   Название проекта на фирменном фоне заливается акцентом слева направо по мере
   загрузки: вместо пустого белого экрана человек с первой секунды видит, куда
   пришёл. Два слоя одного текста — нижний приглушённый, верхний обрезается
   по --p (0…1), который ведёт скрипт. */
.preloader{
  position:fixed;inset:0;z-index:9999;background:var(--twilight-deep);
  display:flex;align-items:center;justify-content:center;padding:0 24px;
  transition:opacity .7s ease, visibility .7s ease;
}
.preloader-name{
  position:relative;display:inline-block;
  font-family:'Montserrat', sans-serif;text-transform:uppercase;
  font-size:clamp(44px,17vw,96px);font-weight:300;letter-spacing:0.34em;line-height:1.15;
  text-align:center;white-space:nowrap;
}
.preloader-base{color:rgba(243,233,216,0.22)}
.preloader-fill{
  position:absolute;left:0;top:0;width:100%;color:var(--cream-dark);
  clip-path:inset(0 calc(100% - var(--p, 0) * 100%) 0 0);
  transition:clip-path .35s cubic-bezier(.22,.61,.36,1);
}
@media (max-width:520px){
  .preloader-name{white-space:normal;max-width:9em;letter-spacing:0.22em;}
  .preloader-fill{position:absolute}
}
@media (prefers-reduced-motion: reduce){
  .preloader-fill{transition:none}
}

/* ---------- nav ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:500;
  display:flex;align-items:center;justify-content:space-between;
  padding:26px clamp(20px,5vw,64px);
  transition:padding .4s var(--ease), background .4s var(--ease), box-shadow .4s var(--ease);
  mix-blend-mode:normal;
}
.nav .logo{font-family:'Montserrat', sans-serif;font-weight:300;font-size:18px;letter-spacing:0.22em;color:#fff;text-transform:uppercase;}
.nav .logo b{font-weight:400;}
.nav-links{display:flex;gap:34px;align-items:center;}
.nav-links a{
  font-family:'PT Serif', serif;
  font-size:12.5px;letter-spacing:0.1em;text-transform:uppercase;color:rgba(243,233,216,0.88);
  transition:color .25s;
}
.nav-links a:hover{color:var(--copper-2);}
.nav .btn{margin-left:8px;}
.nav.scrolled{
  padding:14px clamp(20px,5vw,64px);
  background:rgba(42,52,70,0.94);
  backdrop-filter:blur(10px);
  box-shadow:0 6px 30px rgba(0,0,0,0.2);
}

/* якорный переход по меню/кнопкам: фикс.шапка выше на десктопе (не-scrolled
   состояние ~99px) и ниже на мобиле, где паддинг принудительно сжат до
   14px в медиа-запросе 900px ниже. Запас воздуха ~14px поверх высоты,
   иначе надзаголовок секции проваливается под шапку (замер Playwright). */
section[id]{scroll-margin-top:113px}
@media (max-width:900px){
  section[id]{scroll-margin-top:86px}
}

/* buttons — компактные, мягко скруглённые (эталон 03.08) */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  font-family:'PT Serif', serif;font-size:12.5px;letter-spacing:0.08em;text-transform:uppercase;
  padding:13px 28px;border:1px solid currentColor;border-radius:var(--radius-btn);
  cursor:pointer;background:transparent;color:inherit;
  transition:background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease), transform .2s var(--ease);
  white-space:normal;text-align:center;
  min-height:44px;
}
.btn:active{transform:scale(0.98);}
.btn-solid{box-shadow:0 10px 26px rgba(181,118,79,0.28);}
.btn-solid{background:var(--copper-1);border-color:var(--copper-1);color:#fff;}
.btn-solid:hover{background:var(--terracotta-deep);border-color:var(--terracotta-deep);}
.btn-ghost-dark{color:#fff;border-color:rgba(255,255,255,0.55);}
.btn-ghost-dark:hover{background:#fff;color:var(--twilight);}
.btn-ghost-light{color:var(--text);border-color:rgba(58,74,102,0.4);}
.btn-ghost-light:hover{background:var(--twilight);color:#fff;border-color:var(--twilight);}

/* ---------- hero ----------
   Один-единственный приём арочного кадрирования (border-radius сверху равен
   половине ширины кадра — истинная полуокружность, как в обложке презентации).
   Композиция: узкая колонка текста слева (≤640px), арка справа; на мобиле
   арка встаёт между заголовком и подписью — тот же порядок, что на обложке PDF. */
.hero{
  position:relative;overflow:hidden;min-height:100svh;
  background:linear-gradient(180deg, var(--twilight) 0%, var(--twilight) 34%, var(--sunset) 100%);
  display:flex;align-items:center;
}
.hero-bg{position:absolute;inset:0;z-index:0;pointer-events:none;}
.hero-bg::after{
  content:"";position:absolute;inset:0;
  background-image:
    linear-gradient(45deg, rgba(243,233,216,.05) 25%, transparent 25%, transparent 75%, rgba(243,233,216,.05) 75%),
    linear-gradient(-45deg, rgba(243,233,216,.05) 25%, transparent 25%, transparent 75%, rgba(243,233,216,.05) 75%);
  background-size:56px 56px;background-position:0 0, 28px 28px;
  opacity:.5;
}
.hero-inner{
  position:relative;z-index:1;width:100%;
  padding-top:clamp(112px,17vh,168px);
  padding-bottom:clamp(56px,8vh,96px);
  display:grid;row-gap:20px;column-gap:56px;
  grid-template-columns:minmax(0,640px) minmax(240px,1fr);
  grid-template-areas:
    "eyebrow arch"
    "title   arch"
    "sub     arch"
    "cta     arch";
  align-items:start;
}
.hero-eyebrow{grid-area:eyebrow;color:var(--copper-2);}
.hero-title{
  grid-area:title;
  font-size:clamp(48px,8vw,116px);line-height:0.96;font-weight:200;
  letter-spacing:0.1em;
  background:var(--copper-grad);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  text-shadow:none;
}
.hero-title::after{background-image:var(--rule-grad-dark);}
.hero-sub{
  grid-area:sub;
  margin-top:0;font-family:'PT Serif',serif;font-weight:400;font-size:clamp(16px,1.4vw,19px);
  max-width:560px;color:rgba(243,233,216,0.9);line-height:1.65;
}
.hero-cta{grid-area:cta;margin-top:8px;display:flex;gap:16px;flex-wrap:wrap;}
.hero-arch{grid-area:arch;align-self:center;justify-self:end;margin:0;}
.hero-arch-frame{
  --arch-w:clamp(220px,30vw,420px);
  width:var(--arch-w);aspect-ratio:0.563;
  border-radius:calc(var(--arch-w) / 2) calc(var(--arch-w) / 2) 0 0;
  overflow:hidden;position:relative;
  box-shadow:0 40px 90px rgba(15,15,22,0.4);
}
.hero-arch-frame img,.hero-arch-frame video{width:100%;height:100%;object-fit:cover;object-position:center 30%;}
.hero-scroll{
  position:absolute;right:clamp(20px,5vw,64px);bottom:32px;z-index:2;color:#fff;
  display:flex;flex-direction:column;align-items:center;gap:10px;
}
.hero-scroll .line{width:1px;height:52px;background:rgba(255,255,255,0.5);position:relative;overflow:hidden;}
.hero-scroll .line i{position:absolute;top:-100%;left:0;width:100%;height:100%;background:var(--copper-2);animation:scrollline 2.2s ease-in-out infinite;}
@keyframes scrollline{0%{top:-100%;}50%{top:0;}100%{top:100%;}}
.hero-scroll span{font-family:'PT Serif',serif;font-size:10px;letter-spacing:0.2em;text-transform:uppercase;writing-mode:vertical-rl;color:rgba(255,255,255,0.7);}

/* ---------- первый экран на телефоне ----------
   Заказчик: 99% клиентов заходят с телефона, первый экран должен продавать
   сразу — крупный заголовок, арка занимает большую часть кадра, кнопка
   заявки видна без прокрутки. Проверено на 844px (iPhone) и 667px (SE). */
@media (max-width:900px){
  .hero-inner{
    grid-template-columns:1fr;
    grid-template-areas:"eyebrow" "title" "arch" "sub" "cta";
    padding-top:clamp(78px,9.5vh,96px);
    padding-bottom:clamp(14px,2.2vh,26px);
    row-gap:6px;
  }
  /* тач-зона переключателя оглавления выросла до 44px (см. ниже) — шапка
     стала выше, поджимаем её вертикальный паддинг на мобиле, чтобы не
     съедать и так дефицитную высоту первого экрана */
  .nav{padding:14px clamp(20px,5vw,64px);}
  .hero-eyebrow{font-size:10.5px;}
  .hero-title{font-size:clamp(64px,20vw,108px);}
  .hero-sub{font-size:14px;line-height:1.55;}
  .hero-cta{margin-top:2px;gap:12px;}
  .hero-cta .btn{padding:12px 22px;font-size:11.5px;}
  .hero-arch{justify-self:center;margin-top:2px;}
  /* аспект чуть площе, чем на десктопе (0.563→0.74) — арка шире и остаётся
     доминирующим кадром экрана, но не выталкивает кнопку заявки за экран;
     радиус свода = половине ширины, поэтому верх остаётся истинной аркой */
  .hero-arch-frame{--arch-w:clamp(240px,76vw,360px);aspect-ratio:0.74;}
}

/* короткие экраны (iPhone SE и подобные, 667px и ниже) — сжимаем сильнее,
   чтобы кнопка заявки гарантированно попадала в первый экран без скролла */
@media (max-width:900px) and (max-height:800px){
  .hero-inner{
    padding-top:clamp(80px,12vh,92px);
    padding-bottom:clamp(14px,2.4vh,22px);
    row-gap:6px;
  }
  .hero-title{font-size:clamp(56px,17.5vw,86px);}
  .hero-sub{
    font-size:13px;line-height:1.48;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
  }
  .hero-arch-frame{--arch-w:clamp(210px,62vw,280px);aspect-ratio:0.9;}
  .hero-cta .btn{padding:10px 18px;font-size:11px;min-height:44px;}
}

/* ---------- reveal ---------- */
.reveal{opacity:0;transform:translateY(22px);}
.reveal.in{opacity:1;transform:none;transition:opacity .7s var(--ease), transform .7s var(--ease);}
.stagger > *{opacity:0;transform:translateY(24px);}
.stagger.in > *{opacity:1;transform:none;transition:opacity .9s var(--ease), transform .9s var(--ease);}
.stagger.in > *:nth-child(1){transition-delay:.02s;}
.stagger.in > *:nth-child(2){transition-delay:.12s;}
.stagger.in > *:nth-child(3){transition-delay:.22s;}
.stagger.in > *:nth-child(4){transition-delay:.32s;}
.stagger.in > *:nth-child(5){transition-delay:.42s;}

/* ---------- интермедия между главами ----------
   Вертикальный градиент сумерки→закат с шевронным паттерном (opacity 4-6%) —
   ровно тот же приём, что на разделительных страницах презентации ERA
   (страница «О проекте» с шевронами). Ставится между смысловыми главами. */
.divider{
  position:relative;overflow:hidden;
  padding:clamp(64px,10vh,108px) 0;
  background:linear-gradient(165deg, var(--twilight) 0%, var(--twilight) 40%, var(--sunset) 100%);
}
.divider::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:
    linear-gradient(45deg, rgba(243,233,216,.06) 25%, transparent 25%, transparent 75%, rgba(243,233,216,.06) 75%),
    linear-gradient(-45deg, rgba(243,233,216,.06) 25%, transparent 25%, transparent 75%, rgba(243,233,216,.06) 75%);
  background-size:52px 52px;background-position:0 0, 26px 26px;
}
.divider .wrap{position:relative;z-index:1;}
.divider-num{
  font-family:'PT Serif',serif;font-size:12.5px;letter-spacing:0.3em;text-transform:uppercase;
  color:var(--cream-dark-soft);
}
.divider-title{
  font-family:'Montserrat',sans-serif;font-weight:200;text-transform:uppercase;
  color:#fff;font-size:clamp(28px,4.6vw,52px);letter-spacing:0.11em;line-height:1.16;
  max-width:640px;margin-top:14px;
}
.divider-title::after{content:"";display:block;width:64px;height:9px;margin-top:20px;background-image:var(--rule-grad-dark);}

/* ---------- intro strip ---------- */
.intro{padding:clamp(120px,17vh,196px) 0 clamp(64px,9vh,100px);background:var(--paper);}
.intro .grid{display:grid;grid-template-columns:1.1fr 1fr;gap:56px;align-items:end;}
.intro h2{font-size:clamp(28px,3.4vw,46px);line-height:1.24;max-width:560px;}
.intro p{color:var(--text-soft);font-size:16px;line-height:1.75;max-width:560px;}
.intro-quote{font-family:'PT Serif', serif;font-style:italic;font-size:clamp(18px,1.7vw,22px);color:var(--copper-1);line-height:1.55;border-left:2px solid var(--copper-1);padding-left:22px;max-width:520px;}

/* ---------- numbers ---------- */
.numbers{background:var(--twilight-deep);padding:clamp(70px,10vh,110px) 0;}
.numbers .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:40px;}
.num-item{border-top:1px solid var(--line-light);padding-top:22px;}
.num-item .val{
  font-family:'Montserrat', sans-serif;font-weight:100;font-size:clamp(38px,4.6vw,72px);line-height:1;
  background:var(--copper-grad);-webkit-background-clip:text;background-clip:text;color:transparent;
}
.num-item .val sup{
  font-size:0.38em;margin-left:4px;
  background:none;-webkit-background-clip:initial;background-clip:initial;-webkit-text-fill-color:initial;
  color:var(--copper-2);
}
.num-item .val::after{content:"";display:block;width:48px;height:9px;margin-top:14px;background-image:var(--rule-grad-dark);}
.num-item .lbl{margin-top:12px;font-family:'PT Serif',serif;font-size:13px;color:rgba(243,233,216,0.75);line-height:1.55;}

/* ---------- location ---------- */
.location{padding:clamp(120px,17vh,196px) 0;background:var(--paper-2);}
.location .head{max-width:640px;margin-bottom:56px;}
.location .head h2{font-size:clamp(28px,3.6vw,48px);margin-top:18px;line-height:1.22;}
.loc-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:48px;align-items:start;}
.loc-media{position:relative;overflow:hidden;border-radius:var(--radius-card);box-shadow:var(--shadow-card);}
.loc-media img,.loc-media video{width:100%;height:100%;object-fit:cover;}
.dist-list{display:flex;flex-direction:column;}
.dist-item{
  display:flex;justify-content:space-between;align-items:baseline;gap:16px;
  padding:18px 0;border-bottom:1px solid var(--line);
}
.dist-item .name{font-family:'PT Serif',serif;font-size:15px;color:var(--text);}
.dist-item .name small{display:block;color:var(--text-soft);font-size:12.5px;margin-top:3px;font-style:italic;}
.dist-item .time{font-family:'Montserrat', sans-serif;font-weight:300;font-size:19px;color:var(--copper-1);white-space:nowrap;}
.loc-media figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:18px 22px;
  background:linear-gradient(0deg, rgba(20,17,25,0.76) 0%, rgba(20,17,25,0) 100%);
  color:#fff;font-family:'PT Serif',serif;font-size:12.5px;letter-spacing:0.02em;
}

/* ---------- вступление к двум очередям ---------- */
.houses-intro{position:relative;padding:0;background:var(--twilight-deep);overflow:hidden;}
.houses-intro-media{position:relative;height:78vh;min-height:480px;}
.houses-intro-media img,.houses-intro-media video{width:100%;height:100%;object-fit:cover;}
.houses-intro-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg, rgba(20,20,30,0.18), rgba(20,20,30,0.84));}
.houses-intro-copy{
  position:absolute;left:0;right:0;bottom:0;z-index:2;padding:clamp(48px,8vh,96px) 0;
}
.houses-intro-copy h2{color:#fff;font-size:clamp(30px,4.6vw,60px);line-height:1.18;max-width:640px;
  /* фикс 07.08: глобальный hyphens:auto (h1,h2,h3) рвал «ОДНОМ» посреди
     слова — «...В ОД-» / «НОМ КАТАЛОГЕ». Для этого заголовка перенос по
     словам и так укладывается в max-width без разрывов — отключаем
     авто-дефис и берём обычный перенос по словам. */
  hyphens:none;overflow-wrap:normal;word-break:keep-all;}
.houses-intro-copy p{color:rgba(243,233,216,0.78);max-width:520px;margin-top:20px;font-family:'PT Serif',serif;font-size:15px;line-height:1.7;}
.house-names{display:flex;gap:34px;margin-top:30px;flex-wrap:wrap;}
.house-names a{
  display:inline-flex;flex-direction:column;min-height:44px;justify-content:center;
  font-family:'PT Serif', serif;font-style:italic;font-size:18px;color:var(--copper-2);
  border-bottom:1px solid rgba(232,195,158,0.4);padding-bottom:6px;
}
.house-names a span{display:block;font-family:'PT Serif',sans-serif;font-style:normal;font-size:10.5px;letter-spacing:0.14em;text-transform:uppercase;color:rgba(243,233,216,0.55);margin-top:4px;}

/* ---------- house sections (используется секцией «Лобби») ---------- */
.house{padding:clamp(130px,18vh,200px) 0;}
.house-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:56px;align-items:center;}
.house-media{position:relative;overflow:hidden;border-radius:var(--radius-card);box-shadow:var(--shadow-card);}
.house-media img{width:100%;height:auto;object-fit:cover;transition:transform 1.2s var(--ease);}
.house-media:hover img{transform:scale(1.04);}
.house-copy{margin-top:20px;font-size:15.5px;color:var(--text-soft);line-height:1.75;max-width:480px;}

/* ---------- mood portraits (двор, «Территория») ---------- */
.mood-media{flex:0 0 auto;width:38%;}
.mood-media img{width:100%;height:auto;border-radius:var(--radius-card);box-shadow:var(--shadow-card);display:block;}
.mood-copy{flex:1;}

/* ---------- architecture ---------- */
.architecture{padding:clamp(130px,18vh,200px) 0;background:var(--paper);}
.arch-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;}
.arch-media{position:relative;}
.arch-media{box-shadow:var(--shadow-card);border-radius:var(--radius-card);overflow:hidden;}
.arch-media img{border-radius:var(--radius-card);}
.arch-facts{list-style:none;margin:26px 0 0;padding:0;max-width:560px;}
.arch-facts li{font-family:'PT Serif',serif;padding:16px 0;border-top:1px solid var(--line);font-size:14.5px;color:var(--text-soft);line-height:1.6;}

/* ---------- landscape ---------- */
.landscape{position:relative;background:var(--twilight);color:#fff;overflow:hidden;}
.landscape-media{height:88vh;min-height:560px;position:relative;}
.landscape-media img,.landscape-media video{width:100%;height:100%;object-fit:cover;}
.landscape-media::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg, rgba(24,20,30,0.8) 0%, rgba(24,20,30,0.12) 40%, rgba(24,20,30,0.5) 100%);}
.landscape-copy{position:absolute;left:0;right:0;bottom:0;padding:clamp(48px,8vh,92px) 0;z-index:2;}
.landscape-copy .eyebrow{color:var(--copper-2);}
.landscape-copy h2{color:#fff;font-size:clamp(28px,4.4vw,52px);max-width:640px;margin-top:16px;line-height:1.2;}
.landscape-copy p{color:rgba(255,255,255,0.84);max-width:520px;margin-top:18px;font-family:'PT Serif',serif;font-size:15px;line-height:1.7;}
.garden-extra{padding:clamp(80px,11vh,120px) 0;background:var(--paper-2);color:var(--text);}
.garden-extra .band{border-radius:var(--radius-card);overflow:hidden;position:relative;box-shadow:var(--shadow-card);}
.garden-extra .band img,.garden-extra .band video{width:100%;height:clamp(220px,38vh,420px);object-fit:cover;display:block;}
.garden-extra .band-cap{
  margin:18px 0 0;padding:0;display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;
  font-family:'PT Serif',serif;font-size:13px;color:var(--text-soft);
}
.garden-split{display:flex;gap:48px;align-items:center;margin-top:64px;}

/* ---------- service ---------- */
.service{padding:clamp(130px,18vh,200px) 0;background:var(--twilight-deep);}
.service-head{max-width:640px;color:#fff;margin-bottom:56px;}
.service-head h2{color:#fff;margin-top:16px;font-size:clamp(28px,3.8vw,48px);line-height:1.2;}
.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.service-card{
  background:#323C51;padding:34px 28px;min-height:210px;display:flex;flex-direction:column;justify-content:space-between;
  border-radius:var(--radius-card);transition:background .3s;
}
.service-card:hover{background:#3B4560;}
.service-card .n{font-family:'PT Serif',serif;font-size:14px;font-style:italic;color:var(--copper-2);}
.service-card h4{font-family:'PT Serif',serif;font-style:normal;color:#fff;font-size:19px;margin-top:22px;line-height:1.35;}
.service-card p{font-family:'PT Serif',serif;color:rgba(243,233,216,0.62);font-size:13.5px;margin-top:10px;line-height:1.6;}

/* ---------- autolounge ---------- */
.auto{padding:clamp(130px,18vh,200px) 0;background:#232B3B;color:#fff;}
.auto h2{color:#fff;font-size:clamp(28px,3.8vw,48px);margin-top:16px;line-height:1.2;}
.auto p{color:rgba(243,233,216,0.78);margin-top:18px;font-family:'PT Serif',serif;font-size:15px;line-height:1.75;max-width:480px;}
.auto-facts{list-style:none;margin:26px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:14px 22px;max-width:600px;}
.auto-facts li{font-family:'PT Serif',serif;font-size:13.5px;color:rgba(243,233,216,0.78);padding-left:16px;position:relative;line-height:1.5;}
.auto-facts li::before{content:"";position:absolute;left:0;top:8px;width:6px;height:1px;background:var(--copper-2);}

/* ---------- developer ---------- */
.developer{padding:clamp(130px,18vh,200px) 0;background:var(--paper);}
.dev-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;}
.dev-col h3{font-size:20px;letter-spacing:0.06em;margin-bottom:14px;}
.dev-col h3::after{width:40px;margin-top:12px;}
.dev-col p{font-family:'PT Serif',serif;font-size:14.5px;color:var(--text-soft);line-height:1.75;margin-bottom:10px;max-width:520px;}
.dev-list{list-style:none;padding:0;margin:14px 0 0;max-width:520px;}
.dev-list li{font-family:'PT Serif',serif;font-size:14px;color:var(--text-soft);padding:10px 0;border-top:1px solid var(--line);}

/* ---------- lead form ---------- */
.lead{padding:clamp(130px,18vh,200px) 0;background:var(--twilight-deep);position:relative;overflow:hidden;}
.lead-bg{position:absolute;inset:0;z-index:0;opacity:0.22;}
.lead-bg img{width:100%;height:100%;object-fit:cover;}
.lead > .wrap{position:relative;z-index:1;}
.lead-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center;}
.lead h2{color:#fff;font-size:clamp(28px,4vw,50px);line-height:1.2;max-width:460px;}
.lead p{color:rgba(243,233,216,0.75);margin-top:18px;font-family:'PT Serif',serif;font-size:15px;line-height:1.7;max-width:440px;}
.lead-facts{display:flex;gap:30px;margin-top:34px;flex-wrap:wrap;}
.lead-facts div .n{font-family:'Montserrat', sans-serif;font-weight:200;background:var(--copper-grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:26px;}
.lead-facts div .n::after{content:"";display:block;width:30px;height:9px;margin-top:8px;background-image:var(--rule-grad-dark);}
.lead-facts div .l{font-family:'PT Serif',serif;font-size:11.5px;letter-spacing:0.06em;text-transform:uppercase;color:rgba(243,233,216,0.62);margin-top:4px;}
.lead-card{background:#323C51;padding:clamp(30px,4vw,48px);border-radius:var(--radius-card);box-shadow:var(--shadow-card-lg);}
.lead-tabs{display:flex;gap:8px;margin-bottom:28px;}
.lead-tab{
  flex:1;text-align:center;padding:14px 10px;font-family:'PT Serif',serif;font-size:12px;letter-spacing:0.08em;text-transform:uppercase;
  border:1px solid rgba(243,233,216,0.25);border-radius:var(--radius-btn);color:rgba(243,233,216,0.72);cursor:pointer;transition:all .25s;
  background:transparent;min-height:44px;
}
.lead-tab.active{background:var(--copper-1);border-color:var(--copper-1);color:#fff;}
.field{margin-bottom:16px;}
.field label{display:block;font-family:'PT Serif',serif;font-size:11px;letter-spacing:0.06em;text-transform:uppercase;color:rgba(243,233,216,0.55);margin-bottom:8px;}
.field input{
  width:100%;background:rgba(243,233,216,0.06);border:1px solid rgba(243,233,216,0.22);border-radius:var(--radius-input);
  color:#fff;font-family:'PT Serif',serif;font-size:16px;padding:13px 14px;outline:none;
  transition:border-color .25s, background .25s;
}
.field input:focus{border-color:var(--copper-2);background:rgba(243,233,216,0.1);}
.field input::placeholder{color:rgba(243,233,216,0.4);}
.hp{position:absolute;left:-9999px;top:-9999px;opacity:0;height:0;width:0;}
.lead-submit{width:100%;margin-top:8px;justify-content:center;}
.lead-note{font-family:'PT Serif',serif;font-size:11.5px;color:rgba(243,233,216,0.45);margin-top:16px;line-height:1.6;}
.lead-status{margin-top:16px;font-family:'PT Serif',serif;font-size:13.5px;padding:12px 14px;border-radius:var(--radius-input);display:none;}
.lead-status.ok{display:block;background:rgba(115,168,111,0.16);color:#a9d6a4;border:1px solid rgba(115,168,111,0.4);}
.lead-status.err{display:block;background:rgba(196,90,74,0.16);color:#e0a89b;border:1px solid rgba(196,90,74,0.4);}

/* ---------- footer ---------- */
footer{background:#20283A;color:rgba(243,233,216,0.6);padding:60px 0 26px;}
.footer-top{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:40px;padding-bottom:40px;border-bottom:1px solid rgba(243,233,216,0.12);}
.footer-top .logo{font-family:'Montserrat', sans-serif;font-weight:300;color:#fff;font-size:19px;letter-spacing:0.16em;text-transform:uppercase;}
.footer-top p{font-family:'PT Serif',serif;font-size:13px;line-height:1.7;margin-top:14px;max-width:320px;}
.footer-col h5{color:#fff;font-family:'PT Serif',serif;font-size:12.5px;letter-spacing:0.06em;text-transform:uppercase;margin-bottom:16px;font-weight:400;}
.footer-col a,.footer-col span{display:block;font-family:'PT Serif',serif;font-size:13.5px;margin-bottom:10px;color:rgba(243,233,216,0.65);}
.footer-bottom{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-top:22px;font-family:'PT Serif',serif;font-size:11.5px;color:rgba(243,233,216,0.4);}

/* ---------- интерьеры резиденций ---------- */
.interiors{padding:clamp(110px,16vh,180px) 0;background:var(--twilight-deep);color:var(--cream-dark);}
.interiors .head{max-width:640px;margin-bottom:44px;}
.interiors h2{color:#fff;font-size:clamp(26px,3.4vw,42px);line-height:1.22;margin-top:16px;}
.interiors .head p{color:rgba(243,233,216,0.72);margin-top:16px;font-family:'PT Serif',serif;font-size:15px;line-height:1.75;}
.interiors-hero{position:relative;overflow:hidden;border-radius:var(--radius);}
.interiors-hero img{width:100%;height:clamp(340px,62vh,700px);object-fit:cover;}
@media (max-width:760px){
  .interiors-hero img{height:auto;aspect-ratio:16/10;object-fit:cover;}
}
.interiors-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:38px;}
.interiors-facts div .n{font-family:'Montserrat',sans-serif;font-weight:100;font-size:clamp(28px,3.4vw,40px);background:var(--copper-grad);-webkit-background-clip:text;background-clip:text;color:transparent;line-height:1;}
.interiors-facts div .n::after{content:"";display:block;width:40px;height:9px;margin-top:12px;background-image:var(--rule-grad-dark);}
.interiors-facts div .l{font-family:'PT Serif',serif;font-size:12.5px;letter-spacing:0.02em;color:rgba(243,233,216,0.64);margin-top:10px;line-height:1.55;}

/* ---------- карточки сервиса (4:5) ---------- */
.service-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.service-card-photo{position:relative;overflow:hidden;background:#323C51;aspect-ratio:4/5;border-radius:var(--radius-card);}
.service-card-photo img{width:100%;height:100%;object-fit:cover;filter:brightness(0.88);
  transition:transform 1.1s var(--ease);}
.service-card-photo:hover img{transform:scale(1.04);}
.service-card-photo figcaption{position:absolute;left:0;right:0;bottom:0;padding:22px 24px;
  background:linear-gradient(0deg, rgba(20,17,25,0.92) 0%, rgba(20,17,25,0) 100%);}
.service-card-photo figcaption b{display:block;font-family:'PT Serif',serif;font-size:19px;color:#fff;font-weight:400;}
.service-card-photo figcaption span{display:block;font-family:'PT Serif',serif;font-size:12.5px;color:rgba(243,233,216,0.7);margin-top:7px;line-height:1.6;}

/* ---------- полоса фасадов ---------- */
.facade-strip{background:var(--paper);padding:0 0 clamp(72px,10vh,116px);}
.facade-strip .band{position:relative;overflow:hidden;}
.facade-strip .band img,.facade-strip .band video{width:100%;height:clamp(240px,42vh,480px);object-fit:cover;display:block;}
.facade-strip .band-cap{
  max-width:var(--maxw);margin:22px auto 0;padding:0 clamp(20px,5vw,64px);
  display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;
  font-family:'PT Serif',serif;font-size:13px;color:var(--text-soft);
}

/* ---------- responsive ---------- */
@media (max-width:980px){
  .nav-links{display:none;}
  .intro .grid,.loc-grid,.arch-grid,.dev-grid,.lead-grid{grid-template-columns:1fr;}
  .house-grid{grid-template-columns:1fr;}
  .garden-split{flex-direction:column;align-items:flex-start;gap:24px;}
  .mood-media{width:100%;max-width:340px !important;}
  .numbers .grid{grid-template-columns:1fr 1fr;}
  .service-grid{grid-template-columns:1fr 1fr;}
  .service-cards{grid-template-columns:1fr 1fr;}
  .interiors-facts{grid-template-columns:1fr;gap:22px;}
  .footer-top{grid-template-columns:1fr;}
}
@media (max-width:600px){
  .hero-scroll{display:none;}
  .service-grid{grid-template-columns:1fr;}
  .numbers .grid{grid-template-columns:1fr 1fr;gap:26px;}
  .auto-facts{grid-template-columns:1fr;}

  .facade-strip .band img,.facade-strip .band video,.garden-extra .band img,.garden-extra .band video{height:auto;max-height:60vh;}
  .house-media img,.arch-media img{height:auto;max-height:76vh;width:auto;max-width:100%;margin:0 auto;}
  .mood-media{width:72vw !important;max-width:72vw !important;}
  .mood-media img{aspect-ratio:4/5;object-fit:cover;height:auto;}
  .service-cards{display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;grid-template-columns:none;-webkit-overflow-scrolling:touch;}
  .service-cards .service-card-photo{flex:0 0 72vw;scroll-snap-align:center;}
  /* paveletskaya-plaza.webp — горизонтальный кадр (1442×1124, ~4:3), 52vh
     на мобиле превращал его в почти квадратный слот и резал больше трети —
     возвращаем пропорцию, близкую к исходному файлу */
  .loc-media img,.loc-media video{height:auto;aspect-ratio:4/3;object-fit:cover;object-position:78% center;}

  /* фикс 07.08: липкая нижняя CTA-панель (.lw-bar, 56px) видна почти на
     всём скролле между hero и формой заявки. Проверено вживую: когда
     пользователь докручивает картинку вплотную к низу экрана (типичная
     точка остановки скролла — «фото целиком в кадре»), панель перекрывает
     последние строки текста — подпись ТРЦ «Павелецкая Плаза» в «Локации»
     и цифру «...до 428,8 м²» в «Лобби». margin/padding у соседних блоков
     тут не помогают: scrollIntoView({block:'end'}) выравнивает НИЗ самого
     элемента с низом вьюпорта, а не низ его контейнера. Единственный
     рабочий фикс — padding-bottom прямо на элементе с текстом, чтобы сам
     текст физически оказался выше нижней кромки на величину больше
     высоты панели. */
  .loc-media figcaption{padding-bottom:84px;}
  .house-copy{padding-bottom:84px;}
}

@media (prefers-reduced-motion: reduce){
  .reveal,.stagger > *{opacity:1 !important;transform:none !important;}
  html{scroll-behavior:auto;}
}

/* кинематографичный вход: медиа чуть подаётся вперёд, текст догоняет */
@media (prefers-reduced-motion: no-preference){
  .house-media,
  .arch-media,
  .interiors-hero,
  .loc-media{
    overflow:hidden;
  }
  .house-media img,
  .arch-media img,
  .interiors-hero img{
    transform:scale(1.06);
    transition:transform 1.4s var(--ease);
  }
  .reveal.in .house-media img,
  .reveal.in .arch-media img,
  .reveal.in img,
  .house-grid.in .house-media img{
    transform:scale(1);
  }
}

/* ==================================================================
   ОГЛАВЛЕНИЕ (TOC) — боковая панель-книга, выезжает справа.
   Логика открытия/подсветки не менялась — переоформлена только визуально
   под сумеречно-медную палитру и типографику ERA.
   ================================================================== */
.nav-toggle{
  display:flex;align-items:center;justify-content:center;gap:10px;
  background:none;border:none;color:#fff;cursor:pointer;
  padding:6px 10px;min-width:44px;min-height:44px;font-family:'PT Serif',serif;
}
.nav-toggle-icon{display:flex;flex-direction:column;gap:4px;width:22px;flex:0 0 auto;}
.nav-toggle-icon i{display:block;height:1px;background:currentColor;}
.nav-toggle-icon i:nth-child(1){width:100%;}
.nav-toggle-icon i:nth-child(2){width:72%;}
.nav-toggle-icon i:nth-child(3){width:86%;}
.nav-toggle-label{font-size:11px;letter-spacing:0.1em;text-transform:uppercase;}
@media (max-width:640px){
  .nav-toggle-label{display:none;}
}

.toc-overlay{
  position:fixed;inset:0;z-index:900;background:rgba(15,17,24,0.58);
  opacity:0;pointer-events:none;transition:opacity .34s var(--ease);
}
.toc-overlay.toc-overlay--show{opacity:1;pointer-events:auto;}

/* :not([hidden]) — иначе display:flex безусловный перебивает атрибут hidden
   (равная специфичность, автор побеждает UA-стиль): закрытая панель всё
   равно стоит в раскладке как fixed-блок, сдвинутый translateX(100%) за
   правый край, и расширяет scrollWidth документа на мобиле. */
.toc-panel:not([hidden]){
  position:fixed;top:0;right:0;bottom:0;z-index:910;
  width:320px;max-width:86vw;
  background:#2A3446;color:var(--cream-dark);
  display:flex;flex-direction:column;
  box-shadow:-24px 0 60px rgba(0,0,0,0.35);
  transform:translateX(100%);
  transition:transform .36s var(--ease);
}
.toc-panel.toc-panel--show{transform:translateX(0);}
@media (min-width:768px){
  .toc-panel{width:340px;}
}

.toc-progress{position:relative;height:2px;background:rgba(243,233,216,0.12);flex:0 0 auto;}
.toc-progress i{position:absolute;left:0;top:0;bottom:0;width:0%;background:var(--copper-1);display:block;transition:width .15s linear;}

.toc-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:24px 24px 16px;flex:0 0 auto;
}
.toc-head-label{
  font-family:'PT Serif',serif;font-size:11px;letter-spacing:0.24em;
  text-transform:uppercase;color:rgba(243,233,216,0.5);
}
.toc-close{
  width:44px;height:44px;display:flex;align-items:center;justify-content:center;
  background:transparent;border:none;color:rgba(243,233,216,0.6);
  font-size:15px;cursor:pointer;transition:color .2s;
}
.toc-close:hover{color:#fff;}

.toc-list{
  flex:1 1 auto;overflow-y:auto;display:flex;flex-direction:column;padding:2px 0 20px;
}

/* пронумерованные главы: тройная линейка вместо одинарного разделителя —
   тот же приём, что на странице оглавления презентации ERA */
.toc-item,.toc-subitem{
  display:flex;align-items:baseline;gap:14px;
  padding:15px 24px;position:relative;
  transition:background .2s, color .2s;
}
.toc-item::before,.toc-subitem::before{
  content:"";position:absolute;left:24px;right:24px;top:0;height:5px;
  background-image:repeating-linear-gradient(to bottom, rgba(243,233,216,0.22) 0px, rgba(243,233,216,0.22) 1px, transparent 1px, transparent 2px);
}
.toc-list > .toc-item:first-child::before{display:none;}
.toc-num{
  font-family:'Montserrat',sans-serif;font-weight:300;font-size:14px;color:rgba(243,233,216,0.4);
  flex:0 0 auto;min-width:22px;transition:color .2s;
}
.toc-label{
  font-family:'PT Serif',serif;font-size:12.5px;letter-spacing:0.08em;
  text-transform:uppercase;color:rgba(243,233,216,0.82);line-height:1.4;transition:color .2s;
}
.toc-item:hover,.toc-subitem:hover{background:rgba(243,233,216,0.06);}
.toc-item:hover .toc-label,.toc-item:hover .toc-num{color:#fff;}
.toc-subitem:hover{color:#fff;}

.toc-item.active{background:rgba(243,233,216,0.07);}
.toc-item.active .toc-num{color:var(--copper-2);}
.toc-item.active .toc-label{color:#fff;}

.toc-item--accent{margin-top:auto;}
.toc-item--accent .toc-num,.toc-item--accent .toc-label{color:var(--copper-1);}
.toc-item--accent:hover{background:rgba(181,118,79,0.16);}
.toc-item--accent:hover .toc-num,.toc-item--accent:hover .toc-label{color:#fff;}
.toc-item--accent.active{background:rgba(181,118,79,0.22);}

@media (prefers-reduced-motion: reduce){
  .toc-panel,.toc-overlay,.toc-progress i{transition:none !important;}
}

html.toc-scrolling{scroll-snap-type:none;}

/* ---------- мобильная плотность ---------- */
@media (max-width:820px){
  /* на узком экране clamp(38px,4.6vw,72px) почти всегда упирался в минимум
     38px — секция с цифрами читалась мелко и пусто. Даём цифрам больше веса. */
  .num-item .val{font-size:clamp(44px,13vw,64px);}
  .landscape{display:flex;flex-direction:column;}
  .landscape-media{height:52vh;min-height:0;}
  .landscape-copy{position:static;padding:30px 0 36px;background:var(--twilight);}
  .landscape-copy h2{font-size:clamp(26px,7vw,34px);}

  .location,.house,.service,.auto,.developer,.lead,.interiors,.architecture,.garden-extra,.divider{
    padding-top:clamp(48px,7vh,72px);
    padding-bottom:clamp(48px,7vh,72px);
  }
  .intro{padding-top:clamp(88px,13vh,120px);}
  .house-grid,.arch-grid,.loc-grid,.dev-grid,.lead-grid,.intro .grid{gap:26px;}
  .houses-intro-media{height:62vh;min-height:0;}
  .interiors .head{margin-bottom:26px;}

  .house-media img,.arch-media img{max-height:62vh;width:100%;object-fit:cover;}
  .interiors-hero img{max-height:52vh;}

  h1::after,h2::after,h3::after{width:48px;margin-top:14px;}
}

.reveal{transform:translateY(22px);}
.reveal.in{transition:opacity .7s var(--ease), transform .7s var(--ease);}

@media (max-width:820px){
  .facade-strip{padding-top:clamp(28px,4vh,44px) !important;padding-bottom:clamp(28px,4vh,44px) !important;}
  .facade-strip .band-cap,.garden-extra .band-cap{
    margin-top:14px;gap:6px;font-size:12.5px;line-height:1.5;
  }
  .garden-split{margin-top:28px !important;}
  .service-head,.interiors .head{margin-bottom:22px;}
  .num-item{padding-top:16px;}
  .numbers{padding:clamp(44px,6vh,64px) 0;}
  .intro{padding-bottom:clamp(36px,5vh,52px);}
  .divider{padding:clamp(44px,7vh,72px) 0;}

  .reveal.in{transition:opacity .45s var(--ease), transform .45s var(--ease);}
  .stagger.in > *{transition:opacity .45s var(--ease), transform .45s var(--ease);}
}

.lw-note{
  margin:14px 0 0;font-family:'PT Serif',serif;font-size:11px;line-height:1.5;
  color:rgba(243,233,216,0.45);
}

/* ---------- ERA: широкая карта для горизонтальных кадров (4:3 вместо 4:5) ---------- */
.service-card-photo.wide{aspect-ratio:4/3;}
@media (max-width:820px){
  .service-cards .service-card-photo.wide{flex:0 0 84vw;}
}

/* ---------- ERA: ретина-лимит для полос из некрупных исходников ---------- */
.band.capped{max-width:1040px;margin-left:auto;margin-right:auto;border-radius:var(--radius-card);overflow:hidden;box-shadow:var(--shadow-card);}
.band.capped img{width:100%;height:auto;max-height:52vh;object-fit:contain;}

/* ==================================================================
   ВИДЖЕТ ЗАЯВКИ — постоянный лид-магнит. Логика в js/main.js не менялась,
   здесь — визуальное переоформление под палитру ERA.
   ================================================================== */
.lw-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:610;
  min-height:56px;display:none;align-items:center;justify-content:space-between;gap:14px;
  padding:0 16px;padding-bottom:env(safe-area-inset-bottom,0px);
  background:rgba(42,52,70,0.97);backdrop-filter:blur(8px);
  border-top:1px solid rgba(243,233,216,0.14);
  transform:translateY(100%);transition:transform .35s var(--ease);
}
.lw-bar.lw-bar--show{transform:translateY(0);}
.lw-bar-text{color:#fff;font-family:'PT Serif', serif;font-style:italic;font-size:12.5px;line-height:1.3;}
.lw-bar-btn{padding:11px 20px;font-size:11px;flex:0 0 auto;}
.lw[data-state="submitted"] .lw-bar-btn{display:none;}

/* ---------- плавающая круглая кнопка заявки (эталон 03.08) ----------
   Механика общая для всех четырёх сайтов (56-64px, halo, иконка) — но
   заливка и акцент строго из палитры ERA: сумеречный + медь, не абстрактный
   чёрный. У эталона это звонок, у нас — заявка (телефон не публикуем). */
.lw-pill{
  display:none;position:fixed;right:26px;bottom:26px;z-index:610;
  width:60px;height:60px;padding:0;align-items:center;justify-content:center;
  background:var(--twilight-deep);color:var(--copper-2);border:1px solid rgba(243,233,216,0.16);
  border-radius:50%;cursor:pointer;box-shadow:0 14px 34px rgba(20,15,10,0.34);
  transition:background .25s, transform .25s, box-shadow .25s;
}
.lw-pill::before{
  content:"";position:absolute;inset:-10px;border-radius:50%;
  background:radial-gradient(circle, rgba(181,118,79,0.32) 0%, rgba(181,118,79,0) 72%);
  animation:lwHalo 2.6s ease-in-out infinite;pointer-events:none;
}
@keyframes lwHalo{0%,100%{transform:scale(0.94);opacity:.7;}50%{transform:scale(1.08);opacity:1;}}
.lw-pill:hover{background:#323C51;box-shadow:0 18px 42px rgba(20,15,10,0.4);}
.lw-pill svg{width:24px;height:24px;position:relative;z-index:1;}
.lw-pill-dot{
  position:absolute;top:6px;right:6px;width:9px;height:9px;border-radius:50%;
  background:var(--copper-1);border:2px solid var(--twilight-deep);z-index:2;
}
.lw-pill[aria-expanded="true"]{transform:scale(0.94);}
@media (prefers-reduced-motion: reduce){
  .lw-pill::before{animation:none;}
}

.lw-overlay{
  position:fixed;inset:0;z-index:615;background:rgba(15,17,24,0.58);
  opacity:0;pointer-events:none;transition:opacity .3s var(--ease);
}
.lw-overlay.lw-overlay--show{opacity:1;pointer-events:auto;}

.lw-panel:not([hidden]){
  position:fixed;z-index:620;background:#323C51;color:var(--cream-dark);border-radius:var(--radius-card);
}
.lw-handle{display:none;}
.lw-close{
  position:absolute;top:6px;right:6px;width:44px;height:44px;
  display:flex;align-items:center;justify-content:center;
  background:transparent;border:none;color:rgba(243,233,216,0.6);
  font-size:15px;cursor:pointer;transition:color .2s;
}
.lw-close:hover{color:#fff;}
.lw-body{padding:26px 24px 24px;}
.lw-title{font-family:'PT Serif', serif;font-weight:400;font-style:italic;font-size:16px;line-height:1.4;color:var(--cream-dark);padding-right:40px;text-transform:none;letter-spacing:normal;}
.lw-title::after{display:none;}
.lw-tabs{display:flex;gap:8px;margin:20px 0;}
.lw-tab{
  flex:1;text-align:center;padding:11px 8px;font-family:'PT Serif',serif;font-size:11px;letter-spacing:0.06em;text-transform:uppercase;
  border:1px solid rgba(243,233,216,0.25);border-radius:var(--radius-btn);color:rgba(243,233,216,0.7);cursor:pointer;
  background:transparent;transition:all .25s;min-height:44px;
}
.lw-tab.active{background:var(--copper-1);border-color:var(--copper-1);color:#fff;}
.lw-panel .field{margin-bottom:14px;}
.lw-panel .field label{display:block;font-family:'PT Serif',serif;font-size:11px;letter-spacing:0.06em;text-transform:uppercase;color:rgba(243,233,216,0.55);margin-bottom:7px;}
.lw-panel .field input{
  width:100%;background:rgba(243,233,216,0.06);border:1px solid rgba(243,233,216,0.22);border-radius:var(--radius-input);
  color:#fff;font-family:'PT Serif',serif;font-size:16px;padding:12px 14px;outline:none;
  transition:border-color .25s, background .25s;
}
.lw-panel .field input:focus{border-color:var(--copper-2);background:rgba(243,233,216,0.1);}
.lw-panel .field input::placeholder{color:rgba(243,233,216,0.4);}
.lw-submit{width:100%;margin-top:6px;justify-content:center;}
.lw-status{margin:0 24px 20px;font-family:'PT Serif',serif;font-size:13px;padding:10px 12px;border-radius:var(--radius-input);display:none;}
.lw-status.ok{display:block;background:rgba(115,168,111,0.16);color:#a9d6a4;border:1px solid rgba(115,168,111,0.4);}
.lw-status.err{display:block;background:rgba(196,90,74,0.16);color:#e0a89b;border:1px solid rgba(196,90,74,0.4);}
.lw-success{padding:34px 24px 30px;}
.lw-success p{font-family:'PT Serif', serif;font-style:italic;font-size:16px;line-height:1.5;color:var(--cream-dark);margin:0;}

@media (min-width:601px){
  .lw-pill{display:flex;}
  .lw-panel{
    right:28px;bottom:92px;width:320px;max-width:calc(100vw - 40px);
    box-shadow:0 20px 60px rgba(0,0,0,0.35);
    opacity:0;transform:translateY(12px);pointer-events:none;
    transition:opacity .25s var(--ease), transform .25s var(--ease);
  }
  .lw-panel.lw-panel--show{opacity:1;transform:none;pointer-events:auto;}
}

@media (max-width:600px){
  .lw-bar{display:flex;}
  .lw-panel{
    left:0;right:0;bottom:0;width:100%;border-radius:var(--radius-sheet) var(--radius-sheet) 0 0;
    max-height:80vh;overflow-y:auto;
    transform:translateY(100%);transition:transform .32s var(--ease);
  }
  .lw-panel.lw-panel--show{transform:translateY(0);}
  /* видимая полоска остаётся 36×4, но тач-зона для свайпа-закрытия
     расширена до полной ширины шторки и 28px высоты — иначе на телефоне
     промахнуться по 36×4px очень легко */
  .lw-handle{
    display:flex;align-items:center;justify-content:center;
    width:100%;height:28px;position:relative;
  }
  .lw-handle::before{
    content:"";width:36px;height:4px;border-radius:2px;
    background:rgba(243,233,216,0.3);
  }
}

@media (prefers-reduced-motion: reduce){
  .lw-bar,.lw-panel,.lw-overlay{transition:none !important;}
}

/* ================================================================
   03.08 — контраст текста (WCAG AA).
   Причина правок: акцентная медь --copper-1 и приглушённый --text-soft
   задумывались под бумажный фон, но применялись и в сумеречных секциях,
   где давали 1.4–3.4 вместо 4.5. Палитра не меняется — меняется только
   выбор оттенка под конкретный фон.
   ================================================================ */
:root{ --copper-ink:#8C5A3A; }   /* медь для мелкого текста по бумаге */

.eyebrow{color:var(--copper-ink);}
.numbers .eyebrow,.houses-intro .eyebrow,.service .eyebrow,
.lead .eyebrow,.interiors .eyebrow,.on-dark .eyebrow,footer .eyebrow{color:var(--copper-2);}
.landscape .garden-split .eyebrow,.landscape .mood-copy .eyebrow{color:var(--copper-ink);}

/* списки фактов в сумеречных секциях: и текст, и разделительная линия */
.interiors .arch-facts li,.service .arch-facts li,.lead .arch-facts li,
.landscape .arch-facts li,.numbers .arch-facts li{
  color:var(--cream-dark-soft);border-top-color:var(--line-light);
}
.interiors .arch-facts li b,.service .arch-facts li b,.lead .arch-facts li b,
.landscape .arch-facts li b,.numbers .arch-facts li b{color:#fff;font-weight:400;}

/* белый по меди читается только на глубоком оттенке */
.btn-solid{background:var(--terracotta-deep);border-color:var(--terracotta-deep);}
.btn-solid:hover{background:#78492E;border-color:#78492E;}
.lead-tab.active{background:var(--terracotta-deep);border-color:var(--terracotta-deep);}

/* контурная кнопка для светлых секций (парная к .btn-ghost-dark) */
.btn-ghost-ink{color:var(--twilight);border-color:rgba(58,74,102,0.42);}
.btn-ghost-ink:hover{background:var(--twilight);color:#fff;border-color:var(--twilight);}

/* парная к медной: тёмно-синяя заливка для закатного низа hero */
.btn-solid-ink{background:var(--twilight-deep);border-color:var(--twilight-deep);color:#fff;}
.btn-solid-ink:hover{background:#1E2635;border-color:#1E2635;color:#fff;}

/* ================================================================
   04.08 — нативная кнопка play на iOS.
   Safari рисует поверх видео большую круглую кнопку, когда автозапуск
   не состоялся: чаще всего это режим энергосбережения (Low Power Mode),
   в нём iOS блокирует autoplay независимо от атрибутов. Кнопка ломает
   первый экран — прячем её, постер остаётся фоном, а видео стартует
   по первому касанию экрана (см. main.js).
   ================================================================ */
video::-webkit-media-controls-start-playback-button{
  display:none !important;
  -webkit-appearance:none;
}
video::-webkit-media-controls{display:none !important;}
video::-webkit-media-controls-panel{display:none !important;}
video::-webkit-media-controls-overlay-play-button{display:none !important;}

/* Хиро ERA: кадр вертикальный (0.563), поэтому на мобильном держим слот в той же
   пропорции и даём ему больше ширины — раньше арка занимала 76vw при пропорции
   0.74, и ансамбль всё равно подрезался сверху и снизу. */
@media (max-width:820px){
  .hero-arch-frame{--arch-w:clamp(260px,88vw,420px);aspect-ratio:0.60;}
  .hero-arch-frame img{object-position:center 45%;}
}

/* ---------- тач-зоны ≥44px (палец, iPhone 390×844) ----------
   Логотип в шапке и ссылки навигации в футере визуально мельче 44px —
   раздуваем кликабельную область через padding, компенсируем негативным
   margin, чтобы текст и расстояния между строками не сдвинулись ни на px. */
@media (pointer:coarse){
  .nav .logo{padding:9px 0;}
  .footer-col a{padding:12px 0;margin-top:-12px;margin-bottom:-14px;}
  .footer-col a:last-child{margin-bottom:-2px;}
}


/* ── кнопка скачивания презентации ──
   Показывается только после успешной отправки формы (см. lead-done в main.js):
   человек оставил телефон — материалы отдаём сразу, а не «после звонка». */
.lead-done{margin-top:16px}
.lead-done .lead-download{width:100%;text-align:center}
@media (min-width:640px){.lead-done .lead-download{width:auto}}

/* Атрибут hidden слабее правил вроде display:inline-flex у .btn — без этого
   спрятанные кнопка отправки и блок скачивания продолжали показываться. */
[hidden]{display:none !important}

/* Кнопка скачивания в плавающем виджете заявки — тот же принцип, что и в
   основной форме: оставил телефон, сразу получил презентацию. */
.lw-success .lw-download{display:inline-flex;width:100%;text-align:center;margin-top:14px}
