/* ФРУНЗЕНСКАЯ НАБЕРЕЖНАЯ — «Бордовая книга». */

/* шрифты подключены <link>-ом в head — @import блокировал отрисовку на iOS */

:root{
  --bordeaux: #5A1F33;
  --bordeaux-deep: #40172A;
  --bordeaux-card: #4A1B2C;
  --terracotta: #7FA98E;  /* хвоя сосен двора-парка — терракота ушла вслед за золотом */
  --terracotta-deep: #648D74;
  --cream: #F2ECE2;
  --cream-2: #E7E1D6;
  --paper: #F2ECE2;
  --ink: #3D2B2B;
  --stone: #8D7A70;
  --stone-dark: #5C4640;
  --pine: #6E7F5C;
  --line: rgba(61,43,43,0.14);
  --line-light: rgba(242,236,226,0.22);
  --radius: 4px;
  /* ---------- общий UI-слой (эталон seregina5.com, 03.08.2026) ----------
     Радиусы механики интерфейса — общие для всех четырёх сайтов агентства.
     Лепестковая маска (--petal-*) — фирменный приём именно Фрунзенской,
     её асимметрию не трогаем, только чуть смягчаем три маленьких угла
     (было 6px — почти прямой угол, теперь 16px, в духе эталона). */
  --radius-btn: 11px;
  --radius-card: 18px;
  --radius-field: 10px;
  --radius-sheet: 20px;
  --petal-a: 16px 16px 16px 180px;
  --petal-b: 16px 180px 16px 16px;
  --petal-a-sm: 16px 16px 16px 120px;
  --petal-b-sm: 16px 120px 16px 16px;
  --ease: cubic-bezier(.22,.61,.36,1);
  --maxw: 1440px;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'Onest', sans-serif;
  font-weight:400;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
/* height:auto обязателен рядом с max-width. Без него браузер держит высоту
   из атрибута height, ширину сжимает по контейнеру — и кадр растягивается
   по вертикали. Так «поехали» лобби, приватность и паркинг: горизонтальные
   рендеры 1.33 стояли слотами 0.40. */
img,video{max-width:100%;height:auto;display:block;}
figure{margin:0;}
a{color:inherit;text-decoration:none;}
.serif{font-family:'Forum', serif;}

h1,h2,h3,h4{
  font-family:'Forum', serif;
  font-weight:400;
  font-style:normal;
  margin:0;
  letter-spacing:0.06em;
  text-transform:uppercase;
  color:var(--ink);
  /* длинные капслочные слова (типа «ИНФРАСТРУКТУРНЫЙ») в Forum на узком экране
     не помещались в колонку и раздвигали scrollWidth страницы на ~18px —
     без hyphens браузер такое слово ломает по границе, а не выпускает за рамки */
  overflow-wrap:break-word;
  word-break:normal;
  hyphens:auto;
}
.on-dark h1,.on-dark h2,.on-dark h3,.on-dark p,.on-dark span{color:#f2ece2;}

/* дындбэт — тонкая линия с ромбом под каждым заголовком; фирменный приём сайта */
h1::after,h2::after,h3:not(.lw-title)::after,h4::after{
  content:"— ✧ —";
  display:block;
  margin-top:14px;
  font-family:'Onest', sans-serif;
  font-weight:400;
  text-transform:none;
  letter-spacing:0.08em;
  font-size:13px;
  color:var(--terracotta);
}
.hero-title::after{text-shadow:0 1px 10px rgba(43,16,28,0.85),0 0 24px rgba(43,16,28,0.7);}

.eyebrow{
  font-family:'Onest', sans-serif;
  font-weight:600;
  font-size:13px;
  letter-spacing:0.12em;
  text-transform:uppercase;
  color:var(--terracotta);
  display:inline-flex;
  align-items:center;
  gap:10px;
}
.on-dark .eyebrow{color:var(--terracotta);}
.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);}
section{position:relative;}

/* ---------- заголовки глав: осевая симметрия ----------
   Единственный из четырёх лендингов, где заголовок и рубрика центрированы —
   книжный титул главы, а не сверстанная колонка. Тело главы (фото + текст)
   остаётся двухколоночным книжным разворотом ниже. */
.head{max-width:720px;margin:0 auto clamp(40px,6vw,56px);text-align:center;}
.head .eyebrow{justify-content:center;}
.head h2{font-size:clamp(32px,4.2vw,58px);margin-top:16px;line-height:1.16;}
.head p{margin-top:18px;font-size:16px;line-height:1.7;color:var(--stone-dark);max-width:600px;margin-left:auto;margin-right:auto;}

#landscape .head h2,#service .head h2{color:#fff;}

/* ---------- заставка загрузки ----------
   Название проекта на фирменном фоне заливается акцентом слева направо по мере
   загрузки: вместо пустого белого экрана человек с первой секунды видит, куда
   пришёл. Два слоя одного текста — нижний приглушённый, верхний обрезается
   по --p (0…1), который ведёт скрипт. */
.preloader{
  position:fixed;inset:0;z-index:9999;background:var(--bordeaux-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:'Forum', serif;text-transform:uppercase;
  font-size:clamp(30px,9.4vw,58px);letter-spacing:0.16em;line-height:1.15;
  text-align:center;white-space:nowrap;
}
.preloader-base{color:rgba(242,236,226,0.22)}
.preloader-fill{
  position:absolute;left:0;top:0;width:100%;color:var(--cream);
  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}
  .preloader-fill{position:absolute}
}
@media (prefers-reduced-motion: reduce){
  .preloader-fill{transition:none}
}

/* ---------- корешок: фиксированная линия слева с гербом (только десктоп) ---------- */
.spine{
  display:none;position:fixed;left:16px;top:0;bottom:0;z-index:60;
  width:24px;flex-direction:column;align-items:center;
  pointer-events:none;color:var(--terracotta);
}
.spine-crest{width:20px;height:20px;margin-top:26px;flex:0 0 auto;opacity:.92;}
.spine-line{flex:1 1 auto;width:1px;margin:16px 0 26px;background:linear-gradient(180deg, currentColor 0%, currentColor 78%, transparent 100%);opacity:.4;}
@media (min-width:1240px){
  .spine{display:flex;}
}

/* ---------- 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:'Forum', serif;font-size:19px;letter-spacing:0.06em;text-transform:uppercase;color:#fff;}
.nav .logo b{font-weight:400;}
.nav .logo i{font-style:normal;color:var(--terracotta);}
.nav-links{display:flex;gap:34px;align-items:center;}
.nav-links a{
  font-family:'Onest',sans-serif;font-size:12px;letter-spacing:0.1em;text-transform:uppercase;color:rgba(255,255,255,0.86);
  transition:color .25s;
}
.nav-links a:hover{color:var(--terracotta);}
.nav .btn{margin-left:8px;}
.nav.scrolled{
  padding:14px clamp(20px,5vw,64px);
  background:rgba(74,27,44,0.94);
  backdrop-filter:blur(10px);
  box-shadow:0 6px 30px rgba(0,0,0,0.18);
}
.nav-toggle{display:none;background:none;border:none;color:#fff;font-size:22px;cursor:pointer;}

/* якорный переход по меню/кнопкам: не-scrolled шапка ~96px (26px паддинг),
   запас воздуха ~14px поверх — иначе надзаголовок секции проваливается
   под шапку (замер Playwright 390×844 и 1440×900, высота одинакова). */
section[id]{scroll-margin-top:110px}

/* buttons — компактные, 44-48px высотой (тач-зона), не растянутые на пол-экрана */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:44px;box-sizing:border-box;
  font-family:'Onest', sans-serif;font-size:12px;letter-spacing:0.1em;text-transform:uppercase;
  padding:0 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);
  white-space:nowrap;
}
.btn-solid{background:var(--terracotta);border-color:var(--terracotta);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(--ink);}
.btn-ghost-light{color:var(--ink);border-color:rgba(61,43,43,0.4);}
.btn-ghost-light:hover{background:var(--ink);color:#fff;border-color:var(--ink);}

/* ---------- hero ---------- */
.hero{
  height:100svh;min-height:640px;position:relative;overflow:hidden;
  display:flex;align-items:flex-end;
}
.hero-media{position:absolute;inset:0;z-index:0;}
.hero-media video, .hero-media img{
  width:100%;height:100%;object-fit:cover;object-position:center 60%;
}
.hero-media::after{
  content:"";position:absolute;inset:0;
  background:
    linear-gradient(180deg, rgba(43,16,28,0.46) 0%, rgba(43,16,28,0.08) 30%, rgba(43,16,28,0.64) 76%, rgba(43,16,28,0.92) 100%),
    linear-gradient(96deg, rgba(43,16,28,0.52) 0%, rgba(43,16,28,0.18) 42%, rgba(43,16,28,0) 68%);
}
.hero-content{position:relative;z-index:2;width:100%;padding:0 0 clamp(40px,7vh,88px);color:#fff;text-align:center;}
.hero-content .inner{max-width:1120px;margin:0 auto;padding:0 clamp(20px,5vw,64px);}
.hero-content .eyebrow{
  color:#f6e3d4;margin-bottom:26px;justify-content:center;
  /* терракота на светлом фасаде давала 3.0 при 13px — берём светлую ступень
     и сажаем на дымку, чтобы строка читалась на любом кадре видео */
  text-shadow:0 1px 3px rgba(28,10,18,0.9),0 2px 18px rgba(28,10,18,0.75);
  background:rgba(28,10,18,0.32);backdrop-filter:blur(2px);
  padding:7px 18px;border-radius:999px;
}
.hero-content .eyebrow::before{background:var(--terracotta);}
.hero-title{
  font-size:clamp(38px,6.2vw,96px);line-height:1.0;font-weight:400;
  color:var(--cream);text-shadow:0 2px 40px rgba(43,16,28,0.5);
}
.hero-title em{font-style:normal;font-weight:400;color:var(--terracotta);}
.hero-sub{
  margin-top:22px;font-family:'Onest',sans-serif;font-weight:400;font-size:clamp(15px,1.4vw,18px);
  max-width:560px;margin-left:auto;margin-right:auto;color:rgba(242,236,226,0.9);line-height:1.65;
}
.hero-cta{margin-top:36px;display:flex;gap:16px;flex-wrap:wrap;justify-content:center;}
.hero-scroll{
  position:absolute;right:clamp(20px,5vw,64px);bottom:40px;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(--terracotta);animation:scrollline 2.2s ease-in-out infinite;}
@keyframes scrollline{0%{top:-100%;}50%{top:0;}100%{top:100%;}}
.hero-scroll span{font-family:'Onest',sans-serif;font-size:10px;letter-spacing:0.2em;text-transform:uppercase;writing-mode:vertical-rl;color:rgba(255,255,255,0.7);}

/* ---------- 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;}

/* ---------- intro strip ---------- */
.intro{padding:clamp(80px,12vh,140px) 0 clamp(60px,9vh,100px);background:var(--paper);}
.intro .grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start;margin-top:8px;}
.intro .grid p{color:var(--stone-dark);font-size:16px;line-height:1.75;max-width:480px;}
.intro-quote{font-family:'Forum', serif;font-size:clamp(18px,1.7vw,22px);color:var(--terracotta-deep);line-height:1.55;border-left:2px solid var(--terracotta);padding-left:22px;max-width:480px !important;}

/* ---------- numbers (интермедия 1 — концентрические дуги) ---------- */
.numbers{background:var(--bordeaux);padding:clamp(70px,10vh,110px) 0;position:relative;overflow:hidden;}
.numbers::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:repeating-radial-gradient(circle at 86% 20%, rgba(242,236,226,0.08) 0 1.5px, transparent 1.5px 34px);
}
.numbers > .wrap{position:relative;z-index:1;}
.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:'Forum', serif;font-size:clamp(38px,5.4vw,104px);color:var(--terracotta);line-height:1;}
.num-item .val sup{font-size:0.36em;margin-left:4px;color:rgba(242,236,226,0.82);}
.num-item .lbl{margin-top:12px;font-family:'Onest',sans-serif;font-size:12px;letter-spacing:0.06em;text-transform:uppercase;color:rgba(242,236,226,0.72);line-height:1.5;}

/* ---------- location ---------- */
.location{padding:clamp(90px,12vh,140px) 0;background:var(--cream);}
.location .head{margin-bottom:56px;}
.loc-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:48px;align-items:start;}
.loc-media{position:relative;overflow:hidden;border-radius:var(--petal-b);}
.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-size:15px;color:var(--ink);}
.dist-item .name small{display:block;color:var(--stone);font-size:12.5px;margin-top:3px;}
.dist-item .time{font-family:'Forum', serif;font-size:19px;color:var(--terracotta-deep);white-space:nowrap;}
.loc-media figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:18px 22px;
  background:linear-gradient(0deg, rgba(43,16,28,0.76) 0%, rgba(43,16,28,0) 100%);
  color:#fff;font-size:12.5px;letter-spacing:0.04em;
}

/* ---------- четыре дома (легаси-блок шаблона, на странице не используется) ---------- */
.houses-intro{position:relative;padding:0;background:var(--bordeaux);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(43,16,28,0.15), rgba(43,16,28,0.82));}
.houses-intro-copy{
  position:absolute;left:0;right:0;bottom:0;z-index:2;padding:clamp(40px,7vh,80px) 0;
}
.houses-intro-copy h2{color:#fff;font-size:clamp(32px,5vw,72px);line-height:1.05;max-width:820px;}
.houses-intro-copy p{color:rgba(242,236,226,0.75);max-width:520px;margin-top:20px;font-size:15px;line-height:1.7;}
.house-names{display:flex;gap:30px;margin-top:30px;flex-wrap:wrap;}
.house-names a{
  font-family:'Forum', serif;font-size:18px;color:var(--terracotta);
  border-bottom:1px solid rgba(127,169,142,0.4);padding-bottom:3px;
}
.house-names a span{display:block;font-family:'Onest',sans-serif;font-style:normal;font-size:10px;letter-spacing:0.16em;text-transform:uppercase;color:rgba(242,236,226,0.55);margin-top:4px;}

/* ---------- house sections (легаси-темы шаблона) ---------- */
.house{padding:clamp(90px,13vh,150px) 0;}
.house.theme-aurora{background:#f6ede2;}
.house.theme-media{background:#e9e7e3;}
.house.theme-hespera{background:#f3e3d3;}
.house.theme-nox{background:var(--bordeaux);color:#fff;}
.house.theme-nox h2,.house.theme-nox h3,.house.theme-nox p,.house.theme-nox .lbl,.house.theme-nox .name,.house.theme-nox .dist-item .name{color:#f2ece2;}
.house-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:56px;align-items:center;}
.house-grid.rev{direction:rtl;}
.house-grid.rev > *{direction:ltr;}
.house-media{position:relative;overflow:hidden;border-radius:var(--petal-b);}
.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-tag{font-family:'Forum', serif;font-size:15px;color:var(--terracotta-deep);}
.theme-nox .house-tag{color:var(--terracotta);}
.house-name{font-size:clamp(34px,5vw,64px);margin-top:8px;line-height:1;}
.house-claim{font-size:clamp(20px,2.2vw,28px);margin-top:16px;line-height:1.3;font-weight:400;}
.house-copy{margin-top:20px;font-size:16px;color:var(--stone-dark);line-height:1.75;max-width:480px;}
.theme-nox .house-copy{color:rgba(242,236,226,0.78);}
.house-specs{list-style:none;margin:28px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:14px 22px;}
.house-specs li{font-size:13.5px;padding-left:16px;position:relative;line-height:1.5;color:var(--stone-dark);}
.theme-nox .house-specs li{color:rgba(242,236,226,0.8);}
.house-specs li::before{content:"";position:absolute;left:0;top:8px;width:6px;height:1px;background:var(--terracotta);}
.theme-nox .house-specs li::before{background:var(--terracotta);}
.house-meta{display:flex;gap:36px;margin-top:30px;}
.house-meta div .n{font-family:'Forum', serif;font-size:30px;color:var(--terracotta-deep);}
.theme-nox .house-meta div .n{color:var(--terracotta);}
.house-meta div .l{font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:var(--stone);margin-top:4px;}
.house-cta{margin-top:34px;}

/* ---------- mood portraits (малые кадры-спутники) ---------- */
.house-mood{display:flex;gap:36px;align-items:center;}
.house-mood.rev{flex-direction:row-reverse;}
.mood-media{flex:0 0 auto;width:38%;}
.mood-media img{width:100%;height:auto;border-radius:var(--petal-a-sm);display:block;}
#service .mood-media img{border-radius:var(--petal-b-sm);}
.mood-copy{flex:1;}
.house-media-capped img{max-width:420px;}
.house-mood-inline{max-width:280px;margin-top:32px;}
.house-mood-inline img{width:100%;height:auto;border-radius:var(--petal-a-sm);display:block;}
#architecture .house-mood-inline img,#landscape .house-mood-inline img{border-radius:var(--petal-b-sm);}
.house-mood-inline figcaption{margin-top:10px;font-size:12px;letter-spacing:0.04em;color:var(--stone);}

/* ---------- архитектура / общие двухколоночные развороты ---------- */
.architecture{padding:clamp(90px,13vh,150px) 0;background:var(--paper);}
.arch-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;}
.arch-media{position:relative;}
.arch-media img{border-radius:var(--petal-b);}
.arch-grid.rev .arch-media img{border-radius:var(--petal-a);}
.arch-facts{list-style:none;margin:26px 0 0;padding:0;}
.arch-facts li{padding:16px 0;border-top:1px solid var(--line);font-size:15px;color:var(--stone-dark);line-height:1.65;}
.credit-row{display:flex;gap:40px;margin-top:30px;flex-wrap:wrap;}
.credit-row div .k{font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:var(--stone);}
.credit-row div .v{font-family:'Forum', serif;font-size:18px;margin-top:6px;text-transform:none;letter-spacing:0.01em;}

/* ---------- двор-парк (landscape) ---------- */
.landscape{position:relative;color:#fff;overflow:hidden;}
.landscape::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:repeating-radial-gradient(circle at 10% 85%, rgba(242,236,226,0.07) 0 1.5px, transparent 1.5px 32px);
}
.landscape > .wrap{position:relative;z-index:1;}
.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(43,16,28,0.8) 0%, rgba(43,16,28,0.1) 40%, rgba(43,16,28,0.5) 100%);}
.landscape-copy{position:absolute;left:0;right:0;bottom:0;padding:clamp(40px,7vh,84px) 0;z-index:2;}
.landscape-copy .eyebrow{color:var(--terracotta);}
.landscape-copy h2{color:#fff;font-size:clamp(30px,4.6vw,60px);max-width:760px;margin-top:16px;line-height:1.14;}
.landscape-copy p{color:rgba(255,255,255,0.82);max-width:520px;margin-top:18px;font-size:15px;line-height:1.7;}
.garden-extra{padding:clamp(70px,10vh,110px) 0;background:var(--cream-2);color:var(--ink);position:relative;z-index:1;}
.garden-extra .band{border-radius:var(--petal-a);overflow:hidden;position:relative;}
.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-size:13px;color:var(--stone);
}
.garden-split{display:flex;gap:48px;align-items:center;margin-top:64px;}
/* «трио» — фото + текст + фото. На широком десктопе flex давал тексту
   почти всю ширину секции (904px в разделе «Парки»), а маленькое спутниковое
   фото пряталось внутри текстовой колонки — справа зиял пустой холст.
   Grid с фиксированными крайними колонками решает: оба фото держат
   собственную ширину, текст занимает ровно то, что осталось между ними. */
.garden-split.trio{display:grid;grid-template-columns:minmax(220px,300px) 1fr minmax(220px,300px);gap:44px;align-items:center;}
.garden-split.trio .mood-media{width:100%;} /* сбрасываем flex-эру width:38% — в гриде это дало бы 38% от узкой колонки */
.garden-split.trio .mood-copy p{max-width:480px;}
.garden-split.trio .house-mood-inline{margin-top:0;max-width:none;width:100%;}
.garden-split.trio .house-mood-inline img{border-radius:var(--petal-b-sm);} /* второе фото — противоположный угол лепестка, для баланса */
@media (max-width:980px){
  .garden-split.trio{grid-template-columns:1fr;gap:24px;}
  .garden-split.trio .house-mood-inline{max-width:340px !important;width:100%;}
}

/* ---------- сервис (интермедия 2) ---------- */
.service{padding:clamp(90px,13vh,150px) 0;background:var(--bordeaux);position:relative;overflow:hidden;}
.service::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background-image:repeating-radial-gradient(circle at 92% 78%, rgba(242,236,226,0.08) 0 1.5px, transparent 1.5px 34px);
}
.service > .wrap{position:relative;z-index:1;}
.service-head{max-width:640px;color:#fff;margin-bottom:56px;}
.service-head h2{color:#fff;margin-top:16px;font-size:clamp(30px,4vw,52px);line-height:1.14;}
.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:rgba(242,236,226,0.1);}
.service-card{
  background:var(--bordeaux-deep);padding:34px 28px;min-height:210px;display:flex;flex-direction:column;justify-content:space-between;
  transition:background .3s;
}
.service-card:hover{background:var(--bordeaux-card);}
.service-card .n{font-family:'Forum', serif;font-size:14px;color:var(--terracotta);}
.service-card h4{color:#fff;font-size:18px;margin-top:22px;line-height:1.3;}
.service-card h4::after{font-size:12px;margin-top:10px;}
.service-card p{color:rgba(242,236,226,0.62);font-size:13.5px;margin-top:10px;line-height:1.6;}

/* ---------- паркинг ---------- */
.auto{padding:clamp(90px,13vh,150px) 0;background:var(--bordeaux-deep);color:#fff;}
.auto h2{color:#fff;font-size:clamp(30px,4vw,54px);margin-top:16px;line-height:1.14;}
.auto p{color:rgba(242,236,226,0.75);margin-top:18px;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;}
.auto-facts li{font-size:13.5px;color:rgba(242,236,226,0.75);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(--terracotta);}

/* ---------- element privé (легаси-блок шаблона, на странице не используется) ---------- */
.prive{padding:clamp(90px,13vh,150px) 0;background:var(--cream);}
.prive-grid{display:grid;grid-template-columns:0.9fr 1.1fr;gap:64px;}
.prive-tiers{display:flex;flex-direction:column;gap:0;margin-top:30px;}
.prive-tier{padding:22px 0;border-top:1px solid var(--line);}
.prive-tier:last-child{border-bottom:1px solid var(--line);}
.prive-tier .t{font-family:'Forum', serif;font-size:20px;color:var(--terracotta-deep);}
.prive-tier p{margin-top:8px;font-size:14px;color:var(--stone-dark);}
.partners-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px 30px;margin-top:10px;}
.partner-cat{border-top:1px solid var(--line);padding-top:16px;}
.partner-cat .k{font-size:11px;letter-spacing:0.1em;text-transform:uppercase;color:var(--terracotta);}
.partner-cat .v{margin-top:8px;font-size:14px;color:var(--stone-dark);line-height:1.55;}

/* ---------- застройщик ---------- */
.developer{padding:clamp(90px,13vh,150px) 0;background:var(--paper);}
.dev-grid{display:grid;grid-template-columns:1fr 1fr;gap:64px;}
.dev-col h3{font-size:20px;margin-bottom:14px;}
.dev-col p{font-size:15px;color:var(--stone-dark);line-height:1.75;margin-bottom:10px;}
.dev-list{list-style:none;padding:0;margin:14px 0 0;}
.dev-list li{font-size:14px;color:var(--stone-dark);padding:10px 0;border-top:1px solid var(--line);}

/* ---------- заявка ---------- */
.lead{padding:clamp(90px,13vh,150px) 0;background:var(--bordeaux);position:relative;overflow:hidden;}
.lead::before{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background-image:repeating-radial-gradient(circle at 6% 12%, rgba(242,236,226,0.07) 0 1.5px, transparent 1.5px 32px);
}
.lead-bg{position:absolute;inset:0;z-index:0;opacity:0.2;}
.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(30px,4.4vw,56px);line-height:1.14;}
.lead p{color:rgba(242,236,226,0.72);margin-top:18px;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:'Forum', serif;color:var(--terracotta);font-size:26px;}
.lead-facts div .l{font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:rgba(242,236,226,0.6);margin-top:4px;}
.lead-card{background:var(--bordeaux-card);padding:clamp(30px,4vw,48px);border-radius:var(--radius-card);box-shadow:0 8px 30px rgba(0,0,0,.18);}
.lead-tabs{display:flex;gap:8px;margin-bottom:28px;}
.lead-tab{
  flex:1;text-align:center;min-height:44px;box-sizing:border-box;
  display:flex;align-items:center;justify-content:center;
  padding:8px 10px;font-size:12px;letter-spacing:0.08em;text-transform:uppercase;
  border:1px solid rgba(242,236,226,0.25);border-radius:var(--radius-btn);color:rgba(242,236,226,0.7);cursor:pointer;transition:all .25s;
  background:transparent;font-family:'Onest',sans-serif;
}
.lead-tab.active{background:var(--terracotta);border-color:var(--terracotta);color:#fff;}
.field{margin-bottom:16px;}
.field label{display:block;font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:rgba(242,236,226,0.55);margin-bottom:8px;}
.field input{
  width:100%;background:transparent;border:none;border-bottom:1px solid rgba(242,236,226,0.3);
  color:#fff;font-family:'Onest',sans-serif;font-size:16px;padding:10px 2px;outline:none;
  transition:border-color .25s;
}
.field input:focus{border-color:var(--terracotta);}
.field input::placeholder{color:rgba(242,236,226,0.35);}
.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-size:11.5px;color:rgba(242,236,226,0.45);margin-top:16px;line-height:1.6;}
.lead-status{margin-top:16px;font-size:13.5px;padding:12px 14px;border-radius:var(--radius-field);display:none;}
.lead-status.ok{display:block;background:rgba(110,127,92,0.18);color:#cdd8bf;border:1px solid rgba(110,127,92,0.42);}
.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:var(--bordeaux-deep);color:rgba(242,236,226,0.6);padding:64px 0 26px;}
.footer-crest{width:34px;height:34px;color:var(--terracotta);margin-bottom:16px;}
.footer-top{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:40px;padding-bottom:40px;border-bottom:1px solid rgba(242,236,226,0.12);}
.footer-top .logo{font-family:'Forum', serif;color:#fff;font-size:20px;letter-spacing:0.06em;text-transform:uppercase;}
.footer-top .logo i{font-style:normal;color:var(--terracotta);}
.footer-top p{font-size:13px;line-height:1.7;margin-top:14px;max-width:320px;}
.footer-col h5{color:#fff;font-family:'Onest',sans-serif;font-size:12px;letter-spacing:0.1em;text-transform:uppercase;margin-bottom:16px;font-weight:600;}
.footer-col a,.footer-col span{display:block;font-size:13.5px;margin-bottom:10px;color:rgba(242,236,226,0.65);}
.footer-bottom{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-top:22px;font-size:11.5px;color:rgba(242,236,226,0.4);}

/* ---------- интерьеры резиденций ---------- */
.interiors{padding:clamp(80px,11vh,130px) 0;background:var(--bordeaux);color:var(--cream);}
.interiors .head{max-width:720px;margin-bottom:44px;}
.interiors h2{color:#fff;font-size:clamp(30px,4vw,52px);line-height:1.16;}
.interiors .head p{color:rgba(242,236,226,0.72);margin-top:16px;font-size:16px;line-height:1.75;}
.interiors-hero{position:relative;overflow:hidden;border-radius:var(--petal-a);}
.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:'Forum',serif;font-size:clamp(40px,5.6vw,124px);color:var(--terracotta);line-height:1;}
.interiors-facts div .l{font-family:'Onest',sans-serif;font-size:12.5px;letter-spacing:0.04em;color:rgba(242,236,226,0.62);margin-top:10px;line-height:1.55;}

/* ---------- карточки сервиса (4:5, лепестковая маска в шахматном порядке) ---------- */
.service-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;}
.service-card-photo{position:relative;overflow:hidden;background:var(--bordeaux-deep);aspect-ratio:4/5;border-radius:var(--petal-b-sm);}
.service-card-photo:nth-child(even){border-radius:var(--petal-a-sm);}
.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(43,16,28,0.92) 0%, rgba(43,16,28,0) 100%);}
.service-card-photo figcaption b{display:block;font-family:'Forum',serif;text-transform:uppercase;letter-spacing:0.04em;font-size:18px;color:#fff;font-weight:400;}
.service-card-photo figcaption span{display:block;font-family:'Onest',sans-serif;font-size:12.5px;color:rgba(242,236,226,0.7);margin-top:7px;line-height:1.6;}

/* ---------- визуальный ряд Element Privé (легаси, не используется) ---------- */
.prive-visual{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;margin-top:64px;}
.prive-visual figure{margin:0;position:relative;overflow:hidden;background:var(--cream-2);}
.prive-visual img{width:100%;aspect-ratio:3/4;height:auto;object-fit:cover;
  transition:transform 1.1s var(--ease);}
.prive-visual figure:hover img{transform:scale(1.05);}
.prive-visual figure.cap-narrow img{max-width:400px;margin:0 auto;}
.prive-visual figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:16px 18px;
  background:linear-gradient(0deg, rgba(43,16,28,0.8) 0%, rgba(43,16,28,0) 100%);
  font-size:11px;letter-spacing:0.16em;text-transform:uppercase;color:rgba(255,255,255,0.9);
}

/* ---------- скролл-скраб (легаси, не используется на странице) ---------- */
.scrub{position:relative;height:360vh;background:var(--bordeaux-deep);}
.scrub-sticky{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;}
.scrub-sticky canvas,.scrub-poster{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;
}
.scrub-sticky::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg, rgba(43,16,28,0.55) 0%, rgba(43,16,28,0.05) 34%, rgba(43,16,28,0.2) 62%, rgba(43,16,28,0.85) 100%);
}
.scrub-copy{
  position:absolute;left:0;right:0;bottom:0;z-index:3;
  padding:0 0 clamp(48px,9vh,110px);color:#fff;
}
.scrub-copy .inner{max-width:var(--maxw);margin:0 auto;padding:0 clamp(20px,5vw,64px);}
.scrub-copy h2{color:#fff;font-size:clamp(28px,4.4vw,58px);line-height:1.14;max-width:700px;margin-top:16px;}
.scrub-copy p{color:rgba(255,255,255,0.8);max-width:520px;margin-top:18px;font-size:15px;line-height:1.7;}
.scrub-hint{
  position:absolute;top:calc(50% - 20px);right:clamp(18px,4vw,48px);z-index:3;
  writing-mode:vertical-rl;font-size:10px;letter-spacing:0.2em;text-transform:uppercase;
  color:rgba(255,255,255,0.55);
}
@media (max-width:600px){.scrub{height:280vh;}}

/* ---------- полоса фасадов ---------- */
.facade-strip{background:var(--paper);padding:0 0 clamp(60px,9vh,100px);}
.facade-strip .band{position:relative;overflow:hidden;border-radius:var(--petal-b);}
#plan .facade-strip .band{border-radius:var(--petal-a);}
.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-size:13px;color:var(--stone);
}

/* ---------- responsive ---------- */
@media (max-width:980px){
  .nav-links{display:none;}
  .nav-toggle{display:block;}
  .intro .grid,.loc-grid,.arch-grid,.prive-grid,.dev-grid,.lead-grid{grid-template-columns:1fr;}
  .house-grid,.house-grid.rev{grid-template-columns:1fr;direction:ltr;}
  .house-grid.rev{display:flex;flex-direction:column-reverse;}
  .house-mood,.house-mood.rev,.garden-split{flex-direction:column;align-items:flex-start;gap:24px;}
  .mood-media,.house-mood.rev .mood-media{width:100%;max-width:340px !important;}
  .numbers .grid{grid-template-columns:1fr 1fr;}
  .service-grid{grid-template-columns:1fr 1fr;}
  .partners-grid{grid-template-columns:1fr;}
  .service-cards{grid-template-columns:1fr 1fr;}
  .prive-visual{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;}
  .hero-content .eyebrow{font-size:10px;letter-spacing:0.14em;}
  .prive-visual{grid-template-columns:1fr 1fr;}
  .service-grid{grid-template-columns:1fr;}
  .numbers .grid{grid-template-columns:1fr 1fr;gap:26px;}
  .house-specs{grid-template-columns:1fr;}
  .auto-facts{grid-template-columns:1fr;}

  /* полосы — только горизонтальные исходники, максимум 60vh */
  .facade-strip .band img,.facade-strip .band video,.garden-extra .band img,.garden-extra .band video{height:auto;max-height:60vh;}

  /* портретные слоты (7:10) — натуральная пропорция, максимум 76vh */
  .house-media img,.arch-media img{height:auto;max-height:76vh;width:auto;max-width:100%;margin:0 auto;}

  /* mood-портреты — карточка 4:5, ограничение по ширине 72vw */
  .mood-media{width:72vw !important;max-width:72vw !important;}
  .mood-media img{aspect-ratio:4/5;object-fit:cover;height:auto;}

  /* карточки сервиса — свайп-лента 72vw со scroll-snap */
  .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;}

  /* локация — кадр сверху, список ниже */
  .loc-media img,.loc-media video{height:52vh;object-position:78% center;}
}

/* лепестковая маска — на узких экранах радиус меньше, иначе кадр читается как клякса */
@media (max-width:820px){
  :root{
    --petal-a:12px 12px 12px 96px;
    --petal-b:12px 96px 12px 12px;
    --petal-a-sm:12px 12px 12px 56px;
    --petal-b-sm:12px 56px 12px 12px;
  }
}

@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);
  }
}

/* ==================================================================
   ВИДЖЕТ ЗАЯВКИ — постоянный лид-магнит.
   Один и тот же DOM (#lw-panel) работает и как мобильный bottom-sheet,
   и как десктопная карточка 320px — режим переключает медиа-запрос,
   логика открытия/закрытия общая (см. initLeadWidget в js/main.js).
   ================================================================== */

/* ---------- мобильный нижний бар ---------- */
.lw-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:610;
  height:56px;display:none;align-items:center;justify-content:space-between;gap:14px;
  padding:0 16px;background:rgba(74,27,44,0.97);backdrop-filter:blur(8px);
  border-top:1px solid rgba(242,236,226,0.14);
  transform:translateY(100%);transition:transform .35s var(--ease);
}
.lw-bar.lw-bar--show{transform:translateY(0);}
.lw-bar-text{color:#fff;font-size:12.5px;font-family:'Forum', serif;text-transform:uppercase;letter-spacing:0.03em;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;}

/* ---------- десктопная плавающая круглая кнопка + ореол ----------
   Эталон seregina5.com: 56-64px круг справа внизу, иконка внутри, мягкий
   ореол вокруг. У них — звонок, у нас телефон не публикуется, поэтому
   иконка каталога/заявки. Подпись остаётся: прячется в схлопнутом
   круге и выезжает при наведении/фокусе — не теряем ясность CTA. */
.lw-pill-halo{
  display:none;position:fixed;right:28px;bottom:28px;z-index:609;
  width:60px;height:60px;border-radius:50%;
  background:rgba(127,169,142,0.32);
  animation:lw-halo 2.6s ease-in-out infinite;
  pointer-events:none;
}
@keyframes lw-halo{
  0%,100%{transform:scale(1);opacity:.6;}
  50%{transform:scale(1.18);opacity:.1;}
}
@media (min-width:601px){.lw-pill-halo{display:block;}}
@media (prefers-reduced-motion:reduce),(pointer:coarse){.lw-pill-halo{animation:none;opacity:.22;}}

.lw-pill{
  display:none;position:fixed;right:28px;bottom:28px;z-index:610;
  align-items:center;
  width:60px;height:60px;padding:0;overflow:hidden;box-sizing:border-box;
  background:linear-gradient(155deg, var(--bordeaux-deep), var(--bordeaux-card));
  color:#fff;border:1px solid rgba(242,236,226,0.18);
  border-radius:30px;
  cursor:pointer;box-shadow:0 12px 34px rgba(0,0,0,0.28);
  transition:width .32s var(--ease), background .25s, transform .25s;
}
.lw-pill:hover,.lw-pill:focus-visible{width:236px;background:linear-gradient(155deg, var(--bordeaux-card), var(--terracotta-deep));}
.lw-pill-icon{flex:0 0 60px;width:60px;height:60px;display:flex;align-items:center;justify-content:center;color:var(--terracotta);}
.lw-pill-label{
  font-family:'Onest', sans-serif;font-size:12px;letter-spacing:0.08em;text-transform:uppercase;
  white-space:nowrap;padding-right:22px;opacity:0;transition:opacity .18s;
}
.lw-pill:hover .lw-pill-label,.lw-pill:focus-visible .lw-pill-label{opacity:1;transition:opacity .25s .12s;}
.lw-pill[aria-expanded="true"]{transform:scale(0.97);}
@media (prefers-reduced-motion:reduce),(pointer:coarse){.lw-pill{transition:background .25s, transform .25s;}}

/* ---------- затемнение фона (только мобильный bottom-sheet) ---------- */
.lw-overlay{
  position:fixed;inset:0;z-index:615;background:rgba(43,16,28,0.58);
  opacity:0;pointer-events:none;transition:opacity .3s var(--ease);
}
.lw-overlay.lw-overlay--show{opacity:1;pointer-events:auto;}

/* ---------- панель: стили общие для sheet и card ---------- */
.lw-panel{
  position:fixed;z-index:620;background:var(--bordeaux-card);color:#f2ece2;border-radius:var(--radius-card);
  box-shadow:0 8px 30px rgba(0,0,0,.16);
}
.lw-handle{display:none;}
.lw-close{
  position:absolute;top:8px;right:8px;width:44px;height:44px;
  display:flex;align-items:center;justify-content:center;
  background:transparent;border:none;color:rgba(242,236,226,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:'Forum', serif;font-weight:400;text-transform:none;letter-spacing:0.01em;font-size:16px;line-height:1.4;color:#f2ece2;padding-right:40px;}
.lw-tabs{display:flex;gap:8px;margin:20px 0;}
.lw-tab{
  flex:1;text-align:center;min-height:44px;box-sizing:border-box;
  display:flex;align-items:center;justify-content:center;
  padding:6px 8px;font-size:11px;letter-spacing:0.08em;text-transform:uppercase;
  border:1px solid rgba(242,236,226,0.25);border-radius:var(--radius-btn);color:rgba(242,236,226,0.7);cursor:pointer;
  background:transparent;font-family:'Onest',sans-serif;transition:all .25s;
}
.lw-tab.active{background:var(--terracotta);border-color:var(--terracotta);color:#fff;}
.lw-panel .field{margin-bottom:14px;}
.lw-panel .field label{display:block;font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:rgba(242,236,226,0.55);margin-bottom:7px;}
.lw-panel .field input{
  width:100%;background:transparent;border:none;border-bottom:1px solid rgba(242,236,226,0.3);
  color:#fff;font-family:'Onest',sans-serif;font-size:16px;padding:9px 2px;outline:none;
  transition:border-color .25s;
}
.lw-panel .field input:focus{border-color:var(--terracotta);}
.lw-panel .field input::placeholder{color:rgba(242,236,226,0.35);}
.lw-submit{width:100%;margin-top:6px;justify-content:center;}
.lw-status{margin:0 24px 20px;font-size:13px;padding:10px 12px;border-radius:var(--radius-field);display:none;}
.lw-status.ok{display:block;background:rgba(110,127,92,0.18);color:#cdd8bf;border:1px solid rgba(110,127,92,0.42);}
.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:'Forum', serif;font-size:16px;line-height:1.5;color:#f2ece2;margin:0;text-transform:none;}

/* ---------- десктоп (>600): пилюля + карточка 320px, без скролла страницы ---------- */
@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;}
}

/* ---------- мобильный (≤600): нижний бар + bottom-sheet ---------- */
@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);}
  .lw-handle{
    display:block;width:36px;height:4px;border-radius:2px;
    background:rgba(242,236,226,0.3);margin:12px auto 0;
  }
}

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

/* ---------- скролл ----------
   Привязка (scroll-snap) убрана намеренно: на телефоне она тормозила инерцию
   и останавливала страницу между блоками. Обычный скролл + плавные появления
   читаются как более дорогая работа, чем принудительные прыжки. */

/* ==================================================================
   ОГЛАВЛЕНИЕ (TOC) — боковая панель-книга, выезжает СПРАВА.
   ================================================================== */

.nav-toggle{
  display:flex;align-items:center;justify-content:center;gap:10px;
  min-width:44px;min-height:44px;box-sizing:border-box;
  background:none;border:none;color:#fff;cursor:pointer;
  padding:6px 10px;font-family:'Onest',sans-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(43,16,28,0.58);
  opacity:0;pointer-events:none;transition:opacity .34s var(--ease);
}
.toc-overlay.toc-overlay--show{opacity:1;pointer-events:auto;}

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

/* полоса прогресса чтения */
.toc-progress{position:relative;height:2px;background:rgba(242,236,226,0.12);flex:0 0 auto;}
.toc-progress i{position:absolute;left:0;top:0;bottom:0;width:0%;background:var(--terracotta);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:'Onest',sans-serif;font-size:11px;letter-spacing:0.2em;
  text-transform:uppercase;color:rgba(242,236,226,0.5);
}
.toc-close{
  width:44px;height:44px;display:flex;align-items:center;justify-content:center;
  background:transparent;border:none;color:rgba(242,236,226,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;
}

/* пронумерованные главы — номер во Forum, название в Onest капсом с разрядкой, как .eyebrow */
.toc-item,.toc-subitem{
  display:flex;align-items:baseline;gap:14px;
  padding:14px 24px;border-top:1px solid rgba(242,236,226,0.1);
  transition:background .2s, color .2s;
}
.toc-list > .toc-item:first-child{border-top:none;}
.toc-num{
  font-family:'Forum',serif;font-size:15px;color:rgba(242,236,226,0.4);
  flex:0 0 auto;min-width:22px;transition:color .2s;
}
.toc-label{
  font-family:'Onest',sans-serif;font-size:12.5px;letter-spacing:0.08em;
  text-transform:uppercase;color:rgba(242,236,226,0.82);line-height:1.4;transition:color .2s;
}
.toc-item:hover,.toc-subitem:hover{background:rgba(242,236,226,0.06);}
.toc-item:hover .toc-label,.toc-item:hover .toc-num{color:#fff;}
.toc-subitem:hover{color:#fff;}

.toc-item.active{background:rgba(242,236,226,0.07);}
.toc-item.active .toc-num{color:var(--terracotta);}
.toc-item.active .toc-label{color:#fff;}

.toc-group{display:flex;flex-direction:column;}
.toc-sub{display:flex;flex-direction:column;background:rgba(0,0,0,0.14);}
.toc-subitem{
  padding:10px 24px 10px 60px;border-top:1px solid rgba(242,236,226,0.06);
  font-family:'Forum',serif;font-size:13px;color:rgba(242,236,226,0.6);
  transition:color .2s;
}
.toc-subitem.active{color:var(--terracotta);}

/* заявка — последний пункт, выделен терракотой, прижат к низу панели */
.toc-item--accent{margin-top:auto;}
.toc-item--accent .toc-num,.toc-item--accent .toc-label{color:var(--terracotta);}
.toc-item--accent:hover{background:rgba(127,169,142,0.14);}
.toc-item--accent:hover .toc-num,.toc-item--accent:hover .toc-label{color:#fff;}
.toc-item--accent.active{background:rgba(127,169,142,0.2);}

@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){
  .landscape{display:flex;flex-direction:column;}
  .landscape-media{height:52vh;min-height:0;}
  .landscape-copy{position:static;padding:30px 0 36px;background:var(--bordeaux);}
  .landscape-copy h2{font-size:clamp(26px,7vw,34px);}

  .location,.house,.service,.auto,.prive,.developer,.lead,.interiors,.architecture,.garden-extra{
    padding-top:clamp(48px,7vh,72px);
    padding-bottom:clamp(48px,7vh,72px);
  }
  .house-grid,.arch-grid,.loc-grid,.prive-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;}

  .head{margin-bottom:clamp(28px,5vh,40px);}
}

/* Плавное появление — но контент никогда не остаётся невидимым */
.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;
  }
  .house-mood,.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:clamp(48px,7vh,72px) 0 clamp(36px,5vh,52px);}

  .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-size:11px;line-height:1.5;
  color:rgba(242,236,226,0.45);
}

/* ================================================================
   03.08 — контраст текста (WCAG AA).
   Терракота --terracotta и серый --stone брались из палитры презентации
   и хороши как акцент по крупному, но в 10–13px по кремовому давали
   3.0–3.5 вместо 4.5. Добавлены затемнённые парные оттенки — палитра
   та же, меняется только оттенок под конкретный фон.
   ================================================================ */
:root{
  --terracotta-ink:#8B5230;    /* терракота для мелкого текста по крему */
  --terracotta-light:#E0A57C;  /* терракота для текста по бордо */
}

.eyebrow{color:var(--terracotta-ink);}
.numbers .eyebrow,.houses-intro .eyebrow,.service .eyebrow,.auto .eyebrow,
.lead .eyebrow,.interiors .eyebrow,.scrub .eyebrow,.theme-nox .eyebrow,
.on-dark .eyebrow,footer .eyebrow,.landscape-copy .eyebrow{color:var(--terracotta-light);}

/* мелкая типографика по крему: --stone даёт 3.47, берём --stone-dark */
.dist-item .name small,.house-mood-inline figcaption,.credit-row div .k,
.arch-note,.figcap{color:var(--stone-dark);}
.house-meta div .l{color:var(--stone-dark);}
.theme-nox .house-meta div .l,.auto .house-meta div .l{color:rgba(242,236,226,0.72);}

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

/* контурные кнопки: парные варианты под светлый и под бордовый фон */
.btn-ghost-ink{color:var(--bordeaux);border-color:rgba(90,31,51,0.42);}
.btn-ghost-ink:hover{background:var(--bordeaux);color:#fff;border-color:var(--bordeaux);}
.btn-solid-ink{background:transparent;color:var(--cream);border:1px solid rgba(242,236,226,0.45);}
.btn-solid-ink:hover{background:rgba(242,236,226,0.12);}

/* мелкие подписи по крему — затемнённый серый; в бордовых секциях те же
   подписи должны идти светлым, поэтому правило парное */
.facade-strip .band-cap,.garden-extra .band-cap,
.location figcaption,.architecture figcaption,.developer figcaption{color:var(--stone-dark);}
.interiors .house-mood-inline figcaption,.service .house-mood-inline figcaption,
.auto .house-mood-inline figcaption,.interiors figcaption,.service figcaption,
.auto figcaption,.numbers figcaption,.theme-nox figcaption{color:rgba(242,236,226,0.72);}
.interiors .band-cap,.service .band-cap,.auto .band-cap{color:rgba(242,236,226,0.72);}

/* .landscape целиком лежит на бордо (в т.ч. вложенный .garden-extra,
   чей кремовый фон перебит) — надстрочные строки внутри неё светлые */
.landscape .eyebrow{color:var(--terracotta-light);}
footer .footer-top .logo i{color:var(--terracotta-light);}

/* ---------- переносы: слова в заголовках не рвём ----------
   hyphens:auto ломал «ФРУНЗЕН-СКАЯ НАБЕ-РЕЖНАЯ» и «ПРИ-ВАТНЫЙ САД».
   Оставляем перенос только для действительно длинных слов (от 14 букв),
   с минимум шестью буквами по обе стороны. Название проекта не рвём никогда. */
h1,h2,h3,h4{
  hyphens:auto;-webkit-hyphens:auto;
  hyphenate-limit-chars:14 6 6;
  -webkit-hyphenate-limit-before:6;-webkit-hyphenate-limit-after:6;
  -webkit-hyphenate-limit-lines:1;
  overflow-wrap:break-word;
}
.hero-title,.hero h1,.nav .logo{
  hyphens:manual !important;-webkit-hyphens:manual !important;
  /* break-word рвал «ФРУНЗЕНСК/АЯ» по буквам — название переносим только по пробелу */
  overflow-wrap:normal !important;word-break:normal !important;
}


/* ── Высота кадра не должна превышать экран ──
   Презентация даёт вертикальные кадры 0.41 (узкие, как сторис). В колонке
   666px такой кадр разворачивается на 1630px — два с лишним экрана, и человек
   листает одну фотографию несколько прокруток. Ограничиваем высоту, пропорция
   сохраняется, кадр centrируется в колонке. Горизонтальных это не касается:
   у них высота до потолка не доходит. */
.arch-media img,
.house-mood-inline img,
.loc-media img:not([style*="height"]),
.two-up img{
  max-height:78vh;
  width:auto;
  max-width:100%;
  margin-left:auto;
  margin-right:auto;
}
@media (max-width:820px){
  .arch-media img,.house-mood-inline img,.two-up img{max-height:64vh;}
}


/* ══ iOS-блок (05.08.2026) ══
   На сенсорных устройствах:
   - blur на фиксированной шапке дёргает прокрутку — заменяем плотным цветом;
   - скролл-скраб отключён (fx.js не запускается), секции показывают финальное
     состояние и занимают один экран вместо 200-300vh мёртвой прокрутки. */
@media (pointer:coarse){
  .nav,.toc-panel,.lead-bar{-webkit-backdrop-filter:none;backdrop-filter:none;}
  .nav{background:rgba(16,17,20,0.97);}
  /* замороженный скраб читался как глюк — на телефоне этих секций нет */
  .fx-morph,.fx-wipe,.fx-iris,.fx-facets,.fx-quill,.fx-plan,.fx-petal{display:none !important;}
  .fx-reel{height:100svh !important;}
  .fx-morph .fx-sticky,.fx-wipe .fx-sticky,.fx-iris .fx-sticky,
  .fx-facets .fx-sticky,.fx-quill .fx-sticky,.fx-plan .fx-sticky,
  .fx-petal .fx-sticky,.fx-reel .fx-sticky{position:relative !important;height:100svh !important;}
  .fx-reel .fx-track{overflow-x:auto;-webkit-overflow-scrolling:touch;
    scroll-snap-type:x mandatory;transform:none !important;}
  .fx-reel .fx-track figure{scroll-snap-align:center;}
  .fx-reel .fx-progress{display:none;}

  /* тач-зоны ≥44px: логотип в шапке и ссылки навигации в футере визуально
     мельче 44px — раздуваем кликабельную область через padding, компенсируем
     негативным margin, чтобы текст и расстояния между строками не сдвинулись */
  .nav .logo{padding:8px 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}

/* Подписи под кадрами: на узком экране flex со space-between выталкивал длинный
   текст за левый край, начало строк обрезалось. Ставим в колонку. */
@media (max-width: 600px){
  .facade-strip .band-cap,
  .garden-extra .band-cap,
  .band-cap{
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-start;
    gap: 8px;
  }
  .band-cap > *{ min-width: 0; max-width: 100%; }
}
