/* =========================================================================
   Страница объекта — макет «Project» (Figma kupavna, ЖК «Таврида»).
   Размеры сняты с кадра 1920: поле 160, контент 1600, слайд 1200×675.
   ========================================================================= */

.obj-page-body {
  --proj-brown: #7a544b;
  --proj-hero-bg: var(--color-bg-mute);
  --proj-hero-ink: var(--color-ink);
  --proj-hero-text: var(--color-text);
  --proj-hero-muted: var(--color-muted);
  --proj-hero-hover: var(--color-accent-hover);
  --proj-breadcrumb-link: var(--proj-hero-ink);
  --proj-breadcrumb-current: var(--proj-hero-muted);
  --proj-breadcrumb-hover: var(--proj-hero-muted);
  --proj-hero-border: var(--color-line-soft);
}

/* ---------- первый экран: светлый бежевый фон и узор из кругов ---------- */
.proj-hero {
  position: relative;
  z-index: 0;
  margin-top: calc(-1 * var(--header-h));
  padding-top: var(--header-h);
  padding-bottom: clamp(48px, 5.7vw, 110px);
  color: var(--proj-hero-ink);
  text-align: center;
}
/* Тёмный фон с узором уходит под карусель до середины слайда —
   так узор не обрывается швом на границе блоков. Одно значение на все
   страницы с каруселью (объекты, дома, проекты). */
.obj-page-body { --pcar-half: calc(62.5vw * 9 / 32); }

/* Геометрия узора — как у полноэкранного меню; линии цвета --color-ink.
   Нижний слой почти не виден,
   верхний — чуть ярче и проявляется бегущей полосой, так что узор
   «дышит», но не спорит с заголовком. */
.proj-hero__pattern { position: absolute; inset: 0 0 calc(-1 * var(--pcar-half)); z-index: -1; overflow: hidden; background: var(--proj-hero-bg); pointer-events: none; }
.proj-hero__pattern::before,
.proj-hero__pattern::after {
  content: "";
  position: absolute;
  inset: 0;
  background-image: var(--proj-hero-pattern, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 200 200'%3E%3Cg fill='none' stroke='%23343231' stroke-width='1' vector-effect='non-scaling-stroke'%3E%3Ccircle cx='0' cy='0' r='98.84'/%3E%3Ccircle cx='200' cy='0' r='98.84'/%3E%3Ccircle cx='0' cy='200' r='98.84'/%3E%3Ccircle cx='200' cy='200' r='98.84'/%3E%3Ccircle cx='100' cy='100' r='98.84'/%3E%3C/g%3E%3C/svg%3E"));
  background-size: 10.42vw 10.42vw;
  background-position: center top;
}
.proj-hero__pattern::before { opacity: 0.065; }
.proj-hero__pattern::after {
  opacity: 0.16;
  -webkit-mask-image: linear-gradient(100deg, transparent 20%, #000 50%, transparent 80%);
          mask-image: linear-gradient(100deg, transparent 20%, #000 50%, transparent 80%);
  -webkit-mask-size: 250% 100%;
          mask-size: 250% 100%;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  animation: proj-sheen 7s var(--ease) infinite alternate;
}
@keyframes proj-sheen {
  from { -webkit-mask-position: 120% 0; mask-position: 120% 0; }
  to   { -webkit-mask-position: -20% 0; mask-position: -20% 0; }
}
@media (prefers-reduced-motion: reduce) {
  .proj-hero__pattern::after { animation: none; }
}

.proj-hero__bar {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: 24px;
  min-height: 0;
  padding-block: 0;
  font-size: 14px;
  line-height: 20px;
}
.proj-hero__back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--proj-hero-text);
  text-decoration: none;
  transition: color var(--dur-fast) var(--ease);
}
.proj-hero__back:hover,
.proj-hero__back:focus-visible { color: var(--proj-hero-hover); }
.proj-hero .breadcrumbs { margin: 0; color: var(--proj-hero-text); }
.proj-hero .breadcrumbs [aria-current] { color: var(--proj-breadcrumb-link); }
.proj-hero .breadcrumbs a { color: var(--proj-breadcrumb-link); transition: color var(--dur-fast) var(--ease); }
.proj-hero .breadcrumbs a:hover,
.proj-hero .breadcrumbs a:focus-visible { color: var(--proj-breadcrumb-hover); }

.proj-hero__kicker {
  margin-top: calc(clamp(16px, 1.25vw, 24px) + 20px);
  /* как хлебные крошки, но 18/24: шрифт текста, цвет ссылок крошек на 25% */
  font-family: var(--font-body);
  font-size: 18px;
  font-weight: 400;
  line-height: 24px;
  letter-spacing: 0.5px;
  color: var(--proj-breadcrumb-link);
  color: color-mix(in srgb, var(--proj-breadcrumb-link) 25%, transparent);
}
.proj-hero__title {
  margin-top: 22px;
  color: var(--proj-hero-ink);
  font-family: var(--font-title);
  font-size: 56px;
  font-weight: 400;
  line-height: 1;
  text-transform: uppercase;
}
p.proj-hero__lead {
  max-width: 720px;
  margin: 18px auto 0;
  font-family: var(--font-body);
  font-size: var(--p-size);
  font-weight: 350;
  line-height: var(--p-line-height);
  color: var(--proj-hero-text);
  /* цвет заголовка темы на 70%: белый на тёмных фонах, тёмный на светлых */
  color: color-mix(in srgb, var(--proj-hero-ink) 70%, transparent);
}
.proj-hero__actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 16px;
  margin-top: 32px;
}
.proj-hero .btn-fill { min-width: 220px; justify-content: center; }
.proj-hero__btn-line { border-color: var(--proj-hero-border); color: var(--proj-hero-ink); }
.proj-hero__btn-line:hover,
.proj-hero__btn-line:focus-visible { border-color: color-mix(in srgb, var(--proj-hero-ink) 50%, transparent); color: var(--proj-hero-ink); }

/* Match only the initial header to the hero; preserve sticky and menu themes. */
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck),
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .nav__link,
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .site-header__phone,
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .site-header__burger,
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .site-header__cta { color: var(--proj-hero-ink); }
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .logo__desc { color: var(--proj-hero-text); }
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) a.logo:hover .logo__desc,
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) a.logo:focus-visible .logo__desc { color: var(--color-accent); }
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .site-header__cta { border-color: var(--proj-hero-border); }
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .nav__link:hover,
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .nav__link:focus-visible,
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .site-header__phone:hover,
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .site-header__phone:focus-visible,
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .nav__item.is-open > .nav__link { color: var(--proj-hero-hover); }
/* Same hover as the hero's secondary “Documents” button. */
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .site-header__cta:hover,
.obj-page-body:not(.is-menu-open) .site-header:not(.is-stuck) .site-header__cta:focus-visible { border-color: var(--proj-hero-ink); color: var(--proj-hero-ink); }


/* Элементы первого экрана скрыты до инициализации reveal, чтобы deferred
   скрипт не успевал показать их на один кадр без перехода. */
.js .proj-hero__bar,
.js .proj-hero__kicker,
.js .proj-hero__lead,
.js .proj-hero__actions { opacity: 0; transform: translateY(18px); }
.js .proj-hero__title,
.js .proj-h2 { opacity: 0; }
.js .proj-hero__title.is-shown,
.js .proj-h2.is-shown { opacity: 1; }

/* ---------- карусель: видео, рендеры, стройка ---------- */
.pcar {
  --slide-w: 62.5vw;                 /* 1200 из 1920 */
  --slide-gap: 1.875vw;              /* 36 */
  --side-scale: 0.75;                /* соседние 900×506 */
  position: relative;
  background: transparent;
  padding-bottom: 8px;
  overflow: hidden;
}
.pcar__viewport { overflow: hidden; }
/* Лента показывается целиком, когда скрипт уже расставил слайды, —
   без скачка боковых картинок из обычной ленты в карусель. */
.js .pcar__viewport { opacity: 0; }
.js .pcar.is-ready .pcar__viewport { opacity: 1; }
.pcar__track {
  display: flex;
  gap: var(--slide-gap);
  margin: 0;
  padding: 0 calc((100vw - var(--slide-w)) / 2);
  list-style: none;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
}
.pcar__track::-webkit-scrollbar { display: none; }
.pcar__slide {
  flex: 0 0 var(--slide-w);
  aspect-ratio: 16 / 9;
  scroll-snap-align: center;
  border-radius: 24px;
  overflow: hidden;
  background: #ede9e4;
}
.pcar__slide img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.pcar__slide img.pcar__photo--warm { filter: sepia(0.12) saturate(1.03); }
.pcar__media { display: block; width: 100%; height: 100%; }
.pcar__media[data-parallax] > img { height: 120%; }
.pcar__slide--portrait img { object-fit: cover; }
.pcar__slide--document .pcar__media { background: var(--color-bg); }
.pcar__slide--document img { object-fit: contain; }
.pcar__slide--video img { object-fit: cover; }
.pcar__slide:not(.pcar__slide--video) { cursor: zoom-in; }

/* С JS лента становится бесконечной: трек двигается transform'ом,
   активный слайд в полный размер, соседи уменьшены к центру. */
.js .pcar__track.is-live {
  overflow: visible;
  scroll-snap-type: none;
  padding: 0;
  will-change: transform;
  transition: transform 0.8s var(--ease-img);
}
.js .pcar__track.is-live .pcar__slide {
  transform: scale(var(--side-scale));
  transition: transform 0.8s var(--ease-img), filter 0.8s var(--ease-img);
}
.js .pcar__track.is-live .pcar__slide.is-before { transform-origin: 100% 50%; }
.js .pcar__track.is-live .pcar__slide.is-after  { transform-origin: 0 50%; }
.js .pcar__track.is-live .pcar__slide.is-active { transform: none; }
.pcar__track.is-instant,
.pcar__track.is-instant .pcar__slide,
.pcar__track.is-instant .img-reveal > img { transition: none !important; }
/* Перескок с копии на настоящий слайд (js/project.js, normalize) идёт в режиме
   is-instant: у фото зум (--rs) тоже должен встать мгновенно, иначе настоящий
   кадр на миг показывается без зума и «прыгает» на 1–2% после перескока. */

/* Эффект при прокрутке: пока карусель поднимается к центру экрана,
   активный слайд «выезжает» из уменьшенного состояния. --pcar-p от 0 до 1
   ставит js/project.js. */
.js .pcar__track.is-live .pcar__slide.is-active {
  transform: scale(calc(0.9 + 0.1 * var(--pcar-p, 1)));
}
.js .pcar__track.is-live .pcar__slide.is-active .img-reveal.is-in > img {
  --rs: calc(1.12 - 0.12 * var(--pcar-p, 1) + var(--pcar-hover, 0));
}
@media (hover: hover) and (pointer: fine) {
  .js .pcar__track.is-live .pcar__slide.is-active:hover .img-reveal.is-in > img { --pcar-hover: .04; }
  .js .pcar__track.is-live .pcar__slide:not(.is-active):hover .img-reveal.is-in > img { --rs: 1.04; }
}

.pcar__video {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  color: #fff;
}
.pcar__slide--video { position: relative; isolation: isolate; }
.pcar__video video { position: absolute; inset: 0; z-index: 3; width: 100%; height: 100%; object-fit: contain; background: #000; pointer-events: auto; }
.pcar__video iframe { position: absolute; inset: -1px; z-index: 3; width: calc(100% + 2px); height: calc(100% + 2px); border: 0; pointer-events: auto; }
.pcar__video.is-playing { cursor: default; }
.pcar__play {
  position: absolute;
  left: 50%;
  top: 50%;
  display: grid;
  place-items: center;
  width: 96px;
  height: 96px;
  margin: -48px 0 0 -48px;
  border-radius: 50%;
  color: #fff;
  pointer-events: none;
}
/* Круг — отдельный слой: масштабируется только он, размытие под ним
   не пересчитывается рывками, а треугольник остаётся на месте. */
.pcar__play::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.24);
  -webkit-backdrop-filter: blur(24px);
          backdrop-filter: blur(24px);
  transition: background 0.3s var(--ease);
}
/* Круг с размытием не масштабируем — у backdrop-filter при анимации
   дрожит край. При наведении светлеет круг и чуть растёт треугольник. */
.pcar__play svg { position: relative; width: 48px; height: 48px; transition: transform 0.4s var(--ease-img); }
.pcar__video:hover .pcar__play::before,
.pcar__video:focus-visible .pcar__play::before { background: rgba(255, 255, 255, 0.36); }
.pcar__video:hover .pcar__play svg,
.pcar__video:focus-visible .pcar__play svg { transform: scale(1.12); }

.pcar__nav {
  position: absolute;
  top: 50%;
  z-index: 3;
  display: none;
  place-items: center;
  width: 48px;
  height: 48px;
  margin-top: -24px;
  border-radius: var(--radius-btn);
  background: rgba(52, 50, 49, 0.4);
  -webkit-backdrop-filter: blur(12px);
          backdrop-filter: blur(12px);
  color: #fff;
  transition: background var(--dur-fast) var(--ease);
}
.js .pcar.is-live .pcar__nav { display: grid; }
.pcar__nav--prev { left: calc((100vw - var(--slide-w)) / 4 - 24px); }
.pcar__nav--next { right: calc((100vw - var(--slide-w)) / 4 - 24px); }
.pcar__nav:hover,
.pcar__nav:focus-visible { background: rgba(52, 50, 49, 0.7); }

/* ---------- полноэкранный просмотр карусели ---------- */
.pcar-lightbox {
  width: 100vw;
  max-width: none;
  height: 100dvh;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: rgba(20, 19, 18, .96);
  color: #fff;
  overflow: hidden;
}
.pcar-lightbox::backdrop { background: rgba(20, 19, 18, .96); }
.pcar-lightbox[open] { display: grid; grid-template: minmax(0, 1fr) / minmax(0, 1fr); }
.pcar-lightbox__figure {
  min-width: 0;
  min-height: 0;
  margin: 0;
  display: grid;
  place-items: center;
  padding: 60px clamp(64px, 7vw, 112px);
  overflow: hidden;
  touch-action: pan-y;
}
.pcar-lightbox__image { display: block; max-width: 100%; max-height: min(90dvh, calc(100dvh - 120px)); width: auto; height: auto; object-fit: contain; opacity: 0; transition: opacity .55s ease-out; }
.pcar-lightbox__image.is-loaded { opacity: 1; }
.pcar-lightbox__caption {
  position: fixed;
  z-index: 2;
  top: 18px;
  left: 20px;
  right: 20px;
  max-width: none;
  text-align: center;
  color: rgba(255,255,255,.72);
  font-size: 14px;
  line-height: 1.4;
}
.pcar-lightbox__count { position: absolute; left: 0; color: rgba(255,255,255,.36); }
.pcar-lightbox__description { display: block; max-width: calc(100% - 144px); margin: 0 auto; }
.pcar-lightbox__close,
.pcar-lightbox__prev,
.pcar-lightbox__next { position: fixed; z-index: 1; display: grid; place-items: center; border: 1px solid rgba(255,255,255,.3); background: rgba(30,29,28,.45); color: #fff; cursor: pointer; transition: background .25s ease, border-color .25s ease; }
.pcar-lightbox__close:hover,
.pcar-lightbox__prev:hover,
.pcar-lightbox__next:hover { background: rgba(255,255,255,.14); border-color: rgba(255,255,255,.7); }
.pcar-lightbox__close { top: 20px; right: 20px; width: 44px; height: 44px; border-radius: 50%; }
.pcar-lightbox__prev,
.pcar-lightbox__next { top: 50%; width: 48px; height: 48px; margin-top: -24px; border-radius: var(--radius-btn); }
.pcar-lightbox__close .icon,
.pcar-lightbox__prev .icon,
.pcar-lightbox__next .icon { width: 24px; height: 24px; pointer-events: none; }
.pcar-lightbox__prev { left: 20px; }
.pcar-lightbox__next { right: 20px; }
.is-gallery-open { overflow: hidden; }
@media (max-width: 640px) {
  .pcar-lightbox__figure { padding: 60px 16px; }
  .pcar-lightbox__caption { top: 18px; left: 16px; right: 16px; font-size: 12px; }
  .pcar-lightbox__description { max-width: calc(100% - 80px); }
  .pcar-lightbox__prev { left: 8px; }
  .pcar-lightbox__next { right: 8px; }
}

@media (max-width: 900px) {
  .obj-page-body { --pcar-half: calc(86vw * 9 / 32); }
  .pcar { --slide-w: 86vw; --slide-gap: 12px; --side-scale: 0.9; }
  .pcar__slide { border-radius: 14px; }
  .pcar__play { width: 64px; height: 64px; margin: -32px 0 0 -32px; }
  .js .pcar.is-live .pcar__nav { display: none; }
}

/* ---------- общий заголовок блоков ---------- */
.proj-h2 {
  font-family: var(--font-title);
  font-size: 48px;
  font-weight: 400;
  line-height: 1.2;
  text-transform: uppercase;
  color: var(--color-ink);
}

/* ---------- о комплексе ---------- */
.proj-about { position: relative; padding-block: clamp(80px, 10.4vw, 200px) clamp(40px, 4vw, 80px); overflow: clip; }
.proj-about__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 486px);
  gap: 80px;
}
.proj-about__media { position: relative; min-height: clamp(360px, 36vw, 700px); }
.proj-about__media .proj-h2 { position: relative; z-index: 2; max-width: 560px; }

/* фасад выходит за левое поле до края экрана, как в макете */
.proj-sketch--facade {
  position: relative;
  left: calc(-1 * var(--gutter) - 10px);
  margin-top: 24px;
  width: calc(100% + var(--gutter) + 90px);
  z-index: 0;
}

/* Штамп «Объект сдан»: надпись по кругу медленно вращается */
.proj-stamp {
  position: absolute;
  z-index: 3;
  top: 27px;
  left: calc(738 / 1114 * 100%);
  width: 217px;
  height: 217px;
  display: grid;
  place-items: center;
}
.proj-stamp::before {
  content: "";
  position: absolute;
  inset: 35px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.35);
  -webkit-backdrop-filter: blur(6px);
          backdrop-filter: blur(6px);
}
.proj-stamp__ring {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  animation: proj-spin 24s linear infinite;
}
.proj-stamp__ring text {
  font-family: var(--font-title);
  font-size: 13px;
  letter-spacing: 0.08em;
  fill: #000e60;
}
.proj-stamp__text {
  position: relative;
  font-family: var(--font-title);
  font-size: 16px;
  line-height: 1.15;
  text-align: center;
  text-transform: uppercase;
  color: #000e60;
  letter-spacing: 0.8px;
  transform: translateX(-1px) rotate(-6deg);
}
@keyframes proj-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .proj-stamp__ring { animation: none; } }

.proj-about__text { position: relative; z-index: 2; font-size: 16px; line-height: 1.5; color: var(--color-text); }
.proj-about__text p + p { margin-top: 1em; }

.proj-docs { display: grid; gap: 16px; margin: 40px 0 0; padding: 0; list-style: none; }
.proj-docs a {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  color: var(--color-ink);
  text-decoration: none;
}
.proj-docs a { align-items: center; gap: 16px; }
.proj-docs__ico {
  flex: none;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-btn);
  background: #f5f2f0;
  color: #a39d99;
  transition: background var(--dur-fast) var(--ease), color var(--dur-fast) var(--ease);
}
.proj-docs__ico .icon { width: 24px; height: 24px; }
.proj-docs a > span:not(.proj-docs__ico) { display: flex; flex-direction: column; gap: 2px; }
.proj-docs__name { font-size: 16px; line-height: 1.3; color: var(--color-ink); transition: color var(--dur-fast) var(--ease); }
.proj-docs__meta { color: #a39d99; }
.proj-docs a:hover .proj-docs__ico,
.proj-docs a:focus-visible .proj-docs__ico { background: #f1e8e0; color: var(--color-accent-strong); }
.proj-docs a:hover .proj-docs__name,
.proj-docs a:focus-visible .proj-docs__name { color: var(--color-accent-strong); }

/* ---------- цифры ---------- */
.proj-stats { background: #f5f2f0; padding-block: clamp(56px, 6.25vw, 120px); }
.proj-stats__grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 40px;
  margin: 0;
}
.proj-stats__grid > div { display: flex; flex-direction: column-reverse; justify-content: flex-end; gap: var(--space-2xs); }
.proj-stats__grid dd {
  margin: 0;
  color: var(--proj-brown);
  font-variant-numeric: tabular-nums;
}
.proj-gallery__frame {
  position: relative;
  width: var(--slide-w);
  aspect-ratio: 16 / 9;
  margin: 0 auto;
  overflow: hidden;
  border-radius: var(--radius);
  background: var(--color-bg-soft);
}
.proj-gallery__frame img { width: 100%; height: 100%; object-fit: cover; }
.proj-gallery__frame--placeholder img { object-fit: contain; opacity: var(--sketch-opacity); }
.proj-gallery__caption { margin-top: var(--space-xs); text-align: center; color: var(--color-muted); }
.proj-stats__note { margin-top: var(--space-24); color: var(--color-muted); }
.proj-content-note { margin-top: var(--space-16); color: var(--color-body-soft); }

.proj-stats__grid dt {
  max-width: 160px;
  font-family: var(--font-body);
  font-size: var(--p-size);
  font-weight: var(--p-weight);
  line-height: var(--p-line-height);
  color: var(--color-muted);
}

/* ---------- что было сделано ---------- */
.proj-done { position: relative; padding-block: clamp(80px, 7.3vw, 140px); overflow: clip; }
.proj-done__grid { position: relative; min-height: calc(min(100vw - 2 * var(--gutter), var(--container)) * 938 / 1600 * 1086 / 1448 - clamp(80px, 7.3vw, 140px) + 40px); }
.proj-done__text { position: relative; z-index: 2; max-width: 1040px; }
.proj-done__cols {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 486px));
  gap: 67px;
  margin-top: 48px;
  font-size: 16px;
  line-height: 1.5;
  color: var(--color-text);
}
.proj-done__cols p + p { margin-top: 1em; }
.proj-sketch--terrace {
  position: absolute;
  z-index: 0;
  top: calc(-1 * clamp(80px, 7.3vw, 140px) + 40px);
  left: calc(1018 / 1600 * 100%);
  width: calc(938 / 1600 * 100%);
}
@media (min-width: 1201px) {
  /* Фоновый эскиз развёрнут к правому краю. Текст держим левее, чтобы
     второй столбец не попадал на карандашные линии. */
  .proj-done__text { max-width: 864px; }
  .proj-done__cols { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 48px; }
  .proj-sketch--terrace img { transform: scaleX(-1); }
}

/* Прозрачный слой поверх картинок: браузеры (Яндекс и др.) не вешают
   на них свои кнопки «найти / перевести / скриншот». */
.pcar__slide { position: relative; }
.pcar__slide::after,
.pcar__video::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
}
.pcar__slide--video::after { display: none; }
.pcar__video.is-playing::after { display: none; }
.pcar__play { z-index: 2; }
.proj-sketch--terrace { position: absolute; }
.proj-sketch--tilt-left { transform: rotate(-5deg); transform-origin: center; }
.proj-sketch--compact { transform: scale(0.9); transform-origin: left center; }
.proj-sketch--raised { top: calc(-1 * clamp(24px, 4vw, 60px)); }
.proj-sketch--single img { width: auto; max-width: 100%; height: clamp(320px, 34vw, 560px); }

/* Эскиз целиком внутри правой колонки, без выхода за поле контейнера. */
@media (min-width: 1201px) {
  .proj-sketch--terrace.proj-sketch--contained {
    left: auto;
    right: var(--gutter);
    top: 0;
    width: calc((100% - 2 * var(--gutter)) * 0.45);
  }
  .proj-sketch--terrace.proj-sketch--contained.proj-sketch--right { right: 0; }
}

/* ---------- адаптив ---------- */
@media (max-width: 1200px) {
  .proj-hero__title { font-size: 56px; }
  .proj-about__grid { grid-template-columns: 1fr; gap: 32px; }
  .proj-about__media { min-height: 0; }
  .proj-sketch--facade { left: calc(-1 * var(--gutter)); width: calc(100% + 2 * var(--gutter)); }
  .proj-stamp { left: auto; right: 6%; top: 0; }
  .proj-about__text { column-count: 2; column-gap: 40px; }
  .proj-about__text p { break-inside: avoid; }
  .proj-docs { break-inside: avoid; }
  .proj-done { padding-top: 0; }
  .proj-done__grid { display: flex; flex-direction: column; min-height: 0; }
  .proj-sketch--terrace { position: relative; order: -1; top: 0; left: calc(-1 * var(--gutter)); width: 78%; }
  .proj-done__text { max-width: none; }
  .proj-done .proj-h2 { margin: -12% 0 0 48%; }
  .proj-done__cols { grid-template-columns: 1fr 1fr; gap: 40px; }
}
@media (max-width: 900px) {
  .proj-h2 { font-size: 40px; }
  .proj-hero__title { font-size: 48px; }
  .proj-hero__actions { flex-wrap: nowrap; gap: 12px; }
  .proj-hero__actions > * { flex: 1 1 0; min-width: 0; width: auto; padding-inline: 12px; }
  .proj-stats__grid { grid-template-columns: 1fr 1fr; gap: 40px 24px; }
  .proj-stamp { width: 140px; height: 140px; top: 40px; right: 0; }
  .proj-stamp__text { font-size: 11px; }
  .proj-stamp__ring text { font-size: 11px; }
}
@media (max-width: 640px) {
  .proj-hero__bar { min-height: 0; padding-block: 0; }
  .proj-hero__kicker { margin-top: 56px; }
  .proj-hero .proj-hero__actions > * {
    flex: 1 1 0;
    width: auto;
    min-width: 0;
    justify-content: center;
  }
  .proj-about__text { column-count: 1; }
  .proj-sketch--terrace { width: calc(100% + var(--gutter)); }
  .proj-done .proj-h2 { margin: 16px 0 0; }
  .proj-done__cols { grid-template-columns: 1fr; gap: 0; margin-top: 24px; }
  .proj-done__cols > div + div { margin-top: 1em; }
}
@media (max-width: 560px) {
  .proj-h2 { font-size: 32px; }
  .proj-hero__title { font-size: 32px; }
}

/* Компактный эскиз стройки: отдельная колонка сохраняет зазор до текста. */
@media (min-width: 1201px) {
  .proj-done--compact-sketch .proj-done__grid {
    display: grid;
    grid-template-columns: minmax(0, 1.8fr) minmax(0, 1fr);
    gap: var(--space-lg);
    align-items: start;
  }
  .proj-done--compact-sketch .proj-done__text { max-width: none; }
.proj-done--compact-sketch .proj-sketch--terrace {
    position: relative;
    inset: auto;
    width: 100%;
  }
}
@media (max-width: 1200px) {
  .proj-done--compact-sketch .proj-sketch--terrace {
    left: 0;
    width: 100%;
    transform: scale(0.8);
    transform-origin: center;
  }
}

/* кнопки после «Что было сделано» */
.proj-done__actions { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 48px; }
.proj-done__actions > * { width: 176px; min-width: 176px; padding-inline: 12px; justify-content: center; }
@media (max-width: 640px) {
  .proj-done__actions {
    flex-direction: column;
    flex-wrap: nowrap;
    align-items: stretch;
    gap: 12px;
    margin-top: 32px;
  }
  .proj-done__actions > * {
    flex: none;
    width: 100%;
    min-width: 0;
    justify-content: center;
  }
}

/* ---------- плавное появление контента ----------
   Заголовки и текст слегка поднимаются и проявляются без масок;
   строки заголовков запускаются с небольшой последовательной задержкой.
   Классы ставит js/project.js, без JS всё видно сразу. */
.rv-w { display: inline-block; vertical-align: top; }
.rv-w > span { display: inline-block; opacity: 0; transform: translateY(18px); transition: opacity .75s ease-out, transform .95s cubic-bezier(0.16, 1, 0.3, 1); transition-delay: var(--d, 0s); }
.is-shown .rv-w > span { opacity: 1; transform: none; }
.rv {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .85s ease-out, transform .95s cubic-bezier(0.16, 1, 0.3, 1);
  transition-delay: var(--d, 0s);
}
.rv.is-shown { opacity: 1; transform: none; }
.proj-stats__grid > .rv { opacity: 1; transform: none; transition: none; }
@media (prefers-reduced-motion: reduce) {
  .rv, .rv-w > span { opacity: 1; transform: none; transition: none; }
  .js .proj-hero__bar,
  .js .proj-hero__kicker,
  .js .proj-hero__lead,
  .js .proj-hero__actions,
  .js .proj-hero__title,
  .js .proj-h2 { opacity: 1; transform: none; }
}

/* Крошки сохраняют общую позицию и не участвуют в reveal. */
.js .proj-hero__bar { opacity: 1; transform: none; }

/* ---------- «Другие объекты» — последний блок страницы объекта ---------- */
.proj-others { --card-h: clamp(144px, 15vw, 288px); padding-block: clamp(64px, 6vw, 120px) calc(clamp(24px, 3vw, 48px) + 40px); container-type: inline-size; }
@media (max-width: 900px) { .proj-others { --card-h: 168px; } }
@media (max-width: 560px) { .proj-others { --card-h: 144px; } .proj-others .ribbon__item--rect { width: calc(var(--card-h) * 1.5); } }
.proj-others .ribbon { margin-top: calc(clamp(24px, 2.5vw, 40px) + 24px); }
.proj-others .ribbon__track {
  --carousel-edge: max(var(--gutter), calc((100cqw - var(--container)) / 2));
  padding-inline: var(--carousel-edge);
  scroll-padding-inline: var(--carousel-edge);
  padding-bottom: 120px;           /* место под подписи, они стоят под картинкой */
}

/* шапка блока: заголовок слева, «Все объекты» справа */
.proj-others__head { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.proj-others__head .btn-line { flex: 0 0 auto; width: 176px; padding-inline: 12px; }
@media (max-width: 560px) { .proj-others__head .btn-line { width: auto; padding-inline: 20px; } }
/* подписи на 4px ближе к превью */
.proj-others .ribbon__caption { top: calc(100% + 24px); }
/* у бегущей ленты нет привязки к карточкам вовсе: при остановке на
   наведении браузер иначе «доводит» ленту до ближайшей карточки рывком */
.proj-others .ribbon__track { scroll-snap-type: none; }
.proj-others .ribbon__item { scroll-snap-align: none; }
/* подписи цифр объекта: длинное слово («продолжительность») переносим по слогам, а не посреди буквы */
.proj-stats__grid dt { overflow-wrap: normal; word-break: normal; hyphens: auto; }

/* Орион: эскиз занимает свою колонку и не перекрывает текст. */
.proj-done--columns .proj-done__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
  gap: var(--space-lg);
  align-items: center;
  min-height: 0;
}
.proj-done--columns .proj-done__text { max-width: none; min-width: 0; }
.proj-done--columns .proj-sketch--terrace {
  position: relative;
  inset: auto;
  width: 100%;
  order: 0;
}
.proj-done--columns .proj-sketch--terrace img { transform: none; }
@media (max-width: 1200px) {
  .proj-done--columns { padding-top: clamp(80px, 7.3vw, 140px); }
  .proj-done--columns .proj-done__grid { grid-template-columns: minmax(0, 1fr); }
  .proj-done--columns .proj-h2 { margin: 0; }
}
/* «Другие объекты» на страницах ЖК: бежевый фон — отделяется от блока выше */
.proj-others { background: var(--color-sand); }
/* «Что было сделано»: меньше пустоты снизу — блок по высоте текста с кнопками,
   эскиз справа обрезается краем секции (у него и так растворяющийся низ) */
@media (min-width: 901px) {
  .proj-done:not(.proj-done--compact-sketch) .proj-done__grid { min-height: 0; }
  .proj-done { padding-bottom: clamp(64px, 5vw, 96px); }
}
/* Hero страниц ЖК: больше воздуха; h1→текст визуально = текст→кнопки */
.proj-hero__title { margin-top: 40px; }
p.proj-hero__lead { margin-top: 32px; }
.proj-hero__actions { margin-top: 40px; }
@media (max-width: 640px) { .proj-hero__title { margin-top: 28px; } p.proj-hero__lead { margin-top: 22px; } .proj-hero__actions { margin-top: 28px; } }
p.proj-hero__lead { margin-top: 29px; }
@media (max-width: 640px) { p.proj-hero__lead { margin-top: 20px; } }
@media (min-width: 901px) { .proj-done { padding-bottom: clamp(80px, 7.3vw, 140px); } }
.proj-others { background: #e7ded3; }
/* «Другие объекты» — тёмный блок */
.proj-others { background: var(--color-bg-dark, #2b2a29); color: #f7f4ef; }
.proj-others .proj-h2 { color: #fff; }
.proj-others .ribbon__name { color: #fff; }
.proj-others .ribbon__kind { color: rgb(247 244 239 / 55%); }
.proj-others .ribbon__link:hover .ribbon__name { color: var(--color-accent); }
.proj-others .btn-line { color: #fff; border-color: rgb(255 255 255 / 38%); background: transparent; }
.proj-others .btn-line:hover { border-color: rgb(255 255 255 / 70%); color: #fff; }

/* ---------- Ход строительства на странице объекта ---------- */
.proj-progress { padding-block: clamp(64px, 6vw, 112px) 0; }
.proj-progress__head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 32px; }
.proj-progress__chip { padding: 8px 18px; border-radius: 999px; font-size: 16px; line-height: 1.4; color: #fff; background: var(--color-accent); }
.proj-progress__scale { position: relative; margin-top: clamp(40px, 4vw, 64px); }
.proj-progress__steps { position: relative; display: grid; grid-template-columns: repeat(8, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; }
/* линия шкалы: серая подложка и акцентная заливка до процента */
.proj-progress__steps::before,
.proj-progress__steps::after { content: ""; position: absolute; top: 19px; left: 20px; height: 2px; border-radius: 2px; }
.proj-progress__steps::before { right: 20px; background: #e6e0d9; }
.proj-progress__steps::after { width: calc((100% - 40px) * var(--progress-k, 1)); background: var(--color-accent); }
.proj-progress__step { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 14px; }
.proj-progress__dot { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: #fff; border: 1.5px solid #d9d1c8; color: #b8ada1; }
.proj-progress__dot .icon { width: 20px; height: 20px; }
.proj-progress__step.is-done .proj-progress__dot { background: var(--color-accent); border-color: var(--color-accent); color: #fff; }
.proj-progress__step.is-now .proj-progress__dot { border-color: var(--color-accent); color: var(--color-accent); box-shadow: 0 0 0 6px rgb(173 141 108 / 16%); }
.proj-progress__step.is-now .proj-progress__dot .icon { animation: obj-spin 2.4s linear infinite; }
.proj-progress__name { font-size: 16px; line-height: 1.35; color: var(--color-ink); }
.proj-progress__step.is-next .proj-progress__name { color: #b8ada1; }
.proj-progress__pct { display: block; margin-top: 2px; font-size: 14px; color: var(--color-accent); }
.proj-progress__note { margin: 32px 0 0; font-size: var(--p-small-size); color: var(--color-muted); }
@keyframes obj-spin { to { rotate: 360deg; } }
@media (prefers-reduced-motion: reduce) { .proj-progress__step.is-now .proj-progress__dot .icon { animation: none; } }
/* мобилка: вертикальная шкала */
@media (max-width: 760px) {
  .proj-progress__steps { grid-template-columns: 1fr; gap: 18px; }
  .proj-progress__steps::before, .proj-progress__steps::after { top: 20px; left: 19px; width: 2px; height: auto; }
  .proj-progress__steps::before { bottom: 20px; right: auto; }
  .proj-progress__steps::after { height: calc((100% - 40px) * var(--progress-k, 1)); }
  .proj-progress__step { flex-direction: row; align-items: center; gap: 16px; }
  .proj-progress__pct { display: inline; margin: 0 0 0 6px; }
}
@media (min-width: 761px) {
  .proj-progress__steps::before { right: calc(100% / 8 - 20px); }
  .proj-progress__steps::after { width: calc(100% * 7 / 8 * var(--progress-k, 1)); }
}
.proj-progress .proj-h2 { color: var(--color-ink); }
.proj-progress { padding-bottom: clamp(64px, 6vw, 112px); }
/* Ход строительства — тёмный блок */
.proj-progress { background: var(--color-bg-dark, #2b2a29); }
.proj-progress .proj-h2 { color: #fff; }
.proj-progress__name { color: #f7f4ef; }
.proj-progress__step.is-next .proj-progress__name { color: rgb(247 244 239 / 40%); }
.proj-progress__steps::before { background: rgb(255 255 255 / 14%); }
.proj-progress__dot { background: #2b2a29; border-color: rgb(255 255 255 / 22%); color: rgb(247 244 239 / 40%); }
.proj-progress__step.is-now .proj-progress__dot { background: #2b2a29; box-shadow: 0 0 0 6px rgb(173 141 108 / 22%); }
.proj-progress__note { color: rgb(247 244 239 / 55%); }
/* Ход строительства — светло-серый нейтральный фон (без тёплого оттенка) */
.proj-progress { background: #ececec; }
.proj-progress .proj-h2 { color: var(--color-ink); }
.proj-progress__name { color: var(--color-ink); }
.proj-progress__step.is-next .proj-progress__name { color: #a3a3a3; }
.proj-progress__steps::before { background: #d6d6d6; }
.proj-progress__dot { background: #ececec; border-color: #cfcfcf; color: #a3a3a3; }
.proj-progress__step.is-now .proj-progress__dot { background: #fff; box-shadow: 0 0 0 6px rgb(173 141 108 / 16%); }
.proj-progress__note { color: var(--color-muted); }
/* Ход строительства — тёмно-серый нейтральный (без коричневого) */
.proj-progress { background: #3a3b3d; }
.proj-progress .proj-h2 { color: #fff; }
.proj-progress__name { color: #f2f2f2; }
.proj-progress__step.is-next .proj-progress__name { color: rgb(255 255 255 / 40%); }
.proj-progress__steps::before { background: rgb(255 255 255 / 16%); }
.proj-progress__dot { background: #3a3b3d; border-color: rgb(255 255 255 / 24%); color: rgb(255 255 255 / 40%); }
.proj-progress__step.is-now .proj-progress__dot { background: #3a3b3d; box-shadow: 0 0 0 6px rgb(173 141 108 / 24%); }
.proj-progress__note { color: rgb(255 255 255 / 55%); }
/* Шкала на всю ширину: этапы стоят равномерно, «Сдача» — у правого края (под чипсиной) */
@media (min-width: 761px) {
  .proj-progress__steps { display: block; height: 104px; }
  .proj-progress__steps::before { left: 20px; right: 20px; }
  .proj-progress__steps::after { left: 20px; width: calc((100% - 40px) * var(--progress-k, 1)); }
  .proj-progress__step { position: absolute; top: 0; left: calc((100% - 40px) * var(--i) / 7); max-width: calc((100% - 40px) / 7 - 8px); }
  .proj-progress__step:last-child { left: auto; right: 0; align-items: flex-end; text-align: right; }
}
/* Паттерн hero на страницах объектов приглушён: на насыщенных фонах
   (бордо, синий и т.п.) мешал читать заголовок и текст */
.proj-hero__pattern::before { opacity: 0.035; }
.proj-hero__pattern::after { opacity: 0.08; }

/* галерея: кадр, уже бывший в кэше, появляется сразу; фейд только пока грузится */
.pcar-lightbox__image { transition: opacity .2s ease-out; }
/* «Другие объекты»: подложка фото до загрузки — тёмная, в тон блоку */
.proj-others .ribbon__media, .proj-others .img-reveal, .proj-others .img-reveal::after { background-color: #3a3836; }
.proj-stats dt, .proj-stats dd { hyphens: manual; -webkit-hyphens: manual; }

/* Хлебные крошки в hero объекта — как на «Наших объектах»:
   ссылки и разделители 60% цвета заголовка, текущая 85%, при наведении 100% */
.proj-hero .breadcrumbs,
.proj-hero .breadcrumbs a { color: color-mix(in srgb, var(--proj-hero-ink) 60%, transparent); }
.proj-hero .breadcrumbs [aria-current] { color: color-mix(in srgb, var(--proj-hero-ink) 85%, transparent); }
.proj-hero .breadcrumbs a:hover,
.proj-hero .breadcrumbs a:focus-visible { color: var(--proj-hero-ink); }
/* «Другие дома» на страницах домов — круглые фото, крупнее прямоугольных */
.proj-others:has(.ribbon__item--round) { --card-h: clamp(200px, 21vw, 400px); }
@media (max-width: 900px) { .proj-others:has(.ribbon__item--round) { --card-h: 220px; } }
@media (max-width: 560px) { .proj-others:has(.ribbon__item--round) { --card-h: 200px; } }

/* Ход строительства: 14 этапов. Десктоп — точки равномерно по шкале, подписи
   до 3 строк мелким кеглем; мобилка — вертикальный список, как раньше. */
@media (min-width: 761px) {
  .proj-progress__steps--14 { height: 128px; }
  .proj-progress__steps--14 .proj-progress__step { left: calc((100% - 40px) * var(--i) / 13); max-width: calc((100% - 40px) / 13 + 12px); }
  .proj-progress__steps--14 .proj-progress__step:last-child { left: auto; }
  .proj-progress__steps--14 .proj-progress__name { font-size: 13px; line-height: 1.3; }
  .proj-progress__steps--14 .proj-progress__pct { font-size: 13px; }
}
@media (min-width: 761px) and (max-width: 1100px) {
  .proj-progress__steps--14 .proj-progress__dot { width: 32px; height: 32px; }
  .proj-progress__steps--14 .proj-progress__dot .icon { width: 16px; height: 16px; }
  .proj-progress__steps--14 .proj-progress__name { font-size: 12px; }
}
/* 14 этапов в один ряд не читаются — на десктопе 2 ряда по 7,
   линия рисуется от каждой точки к следующей */
@media (min-width: 761px) {
  .proj-progress__steps--14 { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); row-gap: 40px; height: auto; }
  .proj-progress__steps--14::before, .proj-progress__steps--14::after { display: none; }
  .proj-progress__steps--14 .proj-progress__step,
  .proj-progress__steps--14 .proj-progress__step:last-child { position: relative; left: auto; right: auto; top: auto; max-width: none; align-items: flex-start; text-align: left; padding-right: 16px; }
  .proj-progress__steps--14 .proj-progress__step::after { content: ""; position: absolute; z-index: -1; top: 19px; left: 40px; right: 0; height: 2px; background: rgb(255 255 255 / 16%); }
  .proj-progress__steps--14 .proj-progress__step.is-done::after { background: var(--color-accent); }
  .proj-progress__steps--14 .proj-progress__step:nth-child(7n)::after { display: none; }
  .proj-progress__steps--14 .proj-progress__name { font-size: 15px; line-height: 1.35; hyphens: none; -webkit-hyphens: none; }
  .proj-progress__steps--14 .proj-progress__dot { width: 40px; height: 40px; }
  .proj-progress__steps--14 .proj-progress__dot .icon { width: 20px; height: 20px; }
}
/* 14 этапов — одной строкой с горизонтальным скроллом (вместо 2 рядов) */
@media (min-width: 761px) {
  .proj-progress__scale:has(.proj-progress__steps--14) {
    overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: none;
    margin-inline: calc(-1 * var(--gutter, 24px)); padding: 8px var(--gutter, 24px) 4px;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 var(--gutter, 24px), #000 calc(100% - 64px), transparent);
            mask-image: linear-gradient(90deg, transparent 0, #000 var(--gutter, 24px), #000 calc(100% - 64px), transparent);
  }
  .proj-progress__scale:has(.proj-progress__steps--14)::-webkit-scrollbar { display: none; }
  .proj-progress__steps--14 { grid-template-columns: repeat(14, 168px); row-gap: 0; width: max-content; }
  .proj-progress__steps--14 .proj-progress__step:nth-child(7n)::after { display: block; }
  .proj-progress__steps--14 .proj-progress__step:last-child::after { display: none; }
}
/* Ход строительства: под шкалой — примечание слева, стрелки листания справа */
.proj-progress__foot { display: flex; align-items: center; justify-content: space-between; gap: 24px; margin-top: 32px; }
.proj-progress__foot .proj-progress__note { margin: 0; }
.proj-progress .team__btn { color: #f2f2f2; border-color: rgb(255 255 255 / 24%); }
.proj-progress .team__btn:is(:hover, :focus-visible) { color: #f2f2f2; border-color: rgb(255 255 255 / 60%); }
.proj-progress .team__btn:disabled { opacity: .3; }
@media (max-width: 760px) { .proj-progress__nav { display: none; } }
.proj-progress__foot { margin-top: 52px; }
/* Мобилка: кружки этапов в 2 раза меньше (40 → 20), линия по центру кружков */
@media (max-width: 760px) {
  .proj-progress__dot { width: 20px; height: 20px; border-width: 1px; }
  .proj-progress__dot .icon { width: 10px; height: 10px; }
  .proj-progress__steps::before, .proj-progress__steps::after { top: 10px; left: 9px; }
  .proj-progress__steps::before { bottom: 10px; }
  .proj-progress__steps::after { height: calc((100% - 20px) * var(--progress-k, 1)); }
  .proj-progress__step.is-now .proj-progress__dot { box-shadow: 0 0 0 4px rgb(173 141 108 / 24%); }
}
/* Мобилка: кружки 24px, выравнивание по первой строке подписи, шаг ×1.5 */
@media (max-width: 760px) {
  .proj-progress__steps { gap: 27px; }
  .proj-progress__step { align-items: flex-start; }
  .proj-progress__dot { flex: none; width: 24px; height: 24px; margin-top: -1px; }
  .proj-progress__dot .icon { width: 12px; height: 12px; }
  .proj-progress__steps::before, .proj-progress__steps::after { top: 11px; left: 11px; }
  .proj-progress__steps::before { bottom: auto; height: calc(100% - var(--last-h, 22px)); }
}
/* Мобилка: линия рисуется от каждой точки к следующей — не вылезает за последнюю */
@media (max-width: 760px) {
  .proj-progress__steps--14::before, .proj-progress__steps--14::after { display: none; }
  .proj-progress__steps--14 .proj-progress__step::after { content: ""; position: absolute; z-index: -1; left: 11px; top: 12px; width: 2px; height: calc(100% + 27px); background: rgb(255 255 255 / 16%); }
  .proj-progress__steps--14 .proj-progress__step.is-done::after { background: var(--color-accent); }
  .proj-progress__steps--14 .proj-progress__step:last-child::after { display: none; }
}
/* Цифры объекта на мобилке: помещаются в колонку и не дёргаются при счёте */
@media (max-width: 560px) {
  .proj-stats__grid { gap: 32px 16px; }
  .proj-stats__grid > div { min-width: 0; }
  .proj-stats__grid dd { font-size: clamp(32px, 10vw, 44px); line-height: 1.1; white-space: nowrap; min-height: 1.1em; }
  .proj-stats__grid dt { max-width: none; font-size: 15px; hyphens: auto; -webkit-hyphens: auto; overflow-wrap: anywhere; }
}
/* счёт без дрожания: цифры одной ширины, высота строки зафиксирована */
.proj-stats__grid dd { font-variant-numeric: tabular-nums lining-nums; font-feature-settings: "tnum" 1, "lnum" 1; contain: layout paint; }
@media (max-width: 560px) {
  .proj-stats__grid dt { hyphens: manual; -webkit-hyphens: manual; overflow-wrap: normal; word-break: normal; font-size: 14px; }
}

/* видео в полноэкранной галерее */
.pcar-lightbox__video { position: relative; width: min(100%, calc(min(90dvh, calc(100dvh - 120px)) * 16 / 9)); aspect-ratio: 16 / 9; background: #000; }
.pcar-lightbox__video[hidden] { display: none; }
.pcar-lightbox__poster { position: absolute; inset: 0; padding: 0; border: 0; background: #000; cursor: pointer; }
.pcar-lightbox__poster img { width: 100%; height: 100%; object-fit: contain; display: block; }
.pcar-lightbox__poster .pcar__play { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
.pcar-lightbox__video video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; background: #000; }

/* Боковые фото: кадр с запасом в 1px по бокам, а подложка слайда — цвета шапки,
   чтобы на сглаженном крае не проступали светлые полоски. */
.pcar__slide { background: var(--proj-hero-bg, #ede9e4); }
.pcar__media.img-reveal > img { left: -1px; width: calc(100% + 2px); max-width: none; }
