/**
 * DentWay — оформление темы.
 *
 * Токены приходят из theme.json (--wp--preset--*, --wp--custom--*).
 * Здесь живёт только то, чего theme.json выразить не может: компоненты,
 * состояния, липкие элементы и поведение на узких экранах.
 *
 * Вёрстка логическая (inline-start / inline-end), потому что сайт RTL.
 */

/* ---------------------------------------------------------------- Основа */

:root {
	--dw-header-h: 72px;
	--dw-sticky-h: 64px;
}

html {
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--dw-header-h) + 1rem);
}

body {
	-webkit-font-smoothing: antialiased;
	text-rendering: optimizeLegibility;
	overflow-x: hidden;
}

/* Нижняя липкая панель на мобильном перекрывает конец страницы. */
@media (max-width: 781px) {
	body {
		padding-bottom: var(--dw-sticky-h);
	}
}

h1, h2, h3, h4 {
	text-wrap: balance;
}

p {
	text-wrap: pretty;
}

:where(.dw-measure) {
	max-width: var(--wp--custom--measure);
}

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.dentway-skip-link:focus {
	position: fixed !important;
	inset-block-start: 1rem;
	inset-inline-start: 1rem;
	z-index: var(--wp--custom--z--overlay);
	width: auto;
	height: auto;
	padding: 0.875rem 1.5rem;
	clip-path: none;
	background: var(--wp--preset--color--navy-900);
	color: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--md);
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 600;
	text-decoration: none;
}

/* Фокус виден всегда и везде — аудитория пользуется клавиатурой чаще средней. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--wp--preset--color--teal-700);
	outline-offset: 2px;
	border-radius: var(--wp--custom--radius--sm);
}

/* ------------------------------------------------------------- Кнопки */

.dw-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	min-height: var(--wp--custom--tap--min);
	padding: 1rem 2rem;
	border: 0;
	border-radius: var(--wp--custom--radius--pill);
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--button);
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition: background-color var(--wp--custom--duration--state) var(--wp--custom--ease--out),
		color var(--wp--custom--duration--state) var(--wp--custom--ease--out),
		border-color var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

/* Градиент в пределах двух проходящих AA бирюз: кнопка выглядит объёмно,
   а контраст белого текста не проседает ни в одной точке. */
.dw-btn--primary {
	background: linear-gradient(160deg, var(--wp--preset--color--teal-700) 0%, var(--wp--preset--color--teal-800) 100%);
	color: var(--wp--preset--color--white);
	box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.dw-btn--primary:hover,
.dw-btn--primary:focus {
	background: var(--wp--preset--color--navy-700);
	color: var(--wp--preset--color--white);
	box-shadow: none;
}

.dw-btn--primary:active {
	background: var(--wp--preset--color--navy-900);
}

.dw-btn--ghost {
	background: transparent;
	color: var(--wp--preset--color--white);
	box-shadow: inset 0 0 0 1.5px rgba(255, 255, 255, 0.7);
}

.dw-btn--ghost:hover,
.dw-btn--ghost:focus {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy-900);
	box-shadow: inset 0 0 0 1.5px var(--wp--preset--color--white);
}

.dw-btn--outline {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy-700);
	box-shadow: inset 0 0 0 1.5px var(--wp--preset--color--navy-700);
}

.dw-btn--outline:hover,
.dw-btn--outline:focus {
	background: var(--wp--preset--color--navy-700);
	color: var(--wp--preset--color--white);
}

.dw-btn__icon {
	width: 1.25rem;
	height: 1.25rem;
	flex: none;
}

/* --------------------------------------------------------------- Шапка */

.dw-header {
	position: sticky;
	inset-block-start: 0;
	z-index: var(--wp--custom--z--header);
	/* Глобальный blockGap разводит верхнюю полосу и шапку белой щелью. */
	margin-block-start: 0;
	background: var(--wp--preset--color--navy-900);
	transition: background-color var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

/* Секции сами задают вертикальный ритм: глобальный blockGap между шапкой,
   контентом и подвалом только добавляет белые щели поверх фотографии. */
.wp-site-blocks > *,
.dw-main > * {
	margin-block-start: 0;
}

/*
 * Шапка ложится поверх первого экрана и становится сплошной при прокрутке —
 * но только там, где под ней действительно есть hero с фотографией.
 * Условие через :has(), а не через .home: на пустой или контентной главной
 * прозрачная шапка означала бы белый логотип на белом фоне. Браузер без
 * поддержки :has() просто оставит шапку сплошной — безопасная деградация.
 */
body:has(.dw-hero) .dw-header {
	background: transparent;
	margin-block-end: calc(var(--dw-header-h) * -1);
}

body:has(.dw-hero) .dw-header.is-stuck {
	background: var(--wp--preset--color--navy-900);
	box-shadow: 0 2px 8px rgba(11, 29, 58, 0.24);
}

.dw-header__inner {
	display: flex;
	align-items: center;
	gap: clamp(1rem, 3vw, 2.5rem);
	min-height: var(--dw-header-h);
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-inline: clamp(1.25rem, 5vw, 4rem);
}

/* Логотип-локап: знак картинкой, «DentWay» живым текстом в Playfair Display.
   Знак стопкой из исходного файла нечитаем на высоте 44px, а живой текст
   масштабируется, красится в два цвета бренда и остаётся доступным. */
.dw-logo {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	flex: none;
	text-decoration: none;
}

.dw-logo__mark {
	display: block;
	width: auto;
	height: 42px;
	flex: none;
}

.dw-logo__text {
	display: flex;
	flex-direction: column;
	gap: 0.125rem;
}

.dw-logo__word {
	font-family: var(--wp--preset--font-family--wordmark);
	font-size: 1.5rem;
	font-weight: 500;
	line-height: 1;
	letter-spacing: 0.01em;
	color: var(--wp--preset--color--white);
	white-space: nowrap;
}

.dw-logo__word em {
	font-style: normal;
	color: var(--wp--preset--color--teal-300);
}

.dw-logo__tagline {
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.75rem;
	font-weight: 400;
	line-height: 1.2;
	color: var(--wp--preset--color--teal-300);
	white-space: nowrap;
}

@media (max-width: 480px) {
	.dw-logo__tagline {
		display: none;
	}
}

/* Навигация — нативный блок WordPress: доступный оверлей и фокус-ловушка
   уже реализованы в ядре, свой велосипед был бы хуже. */
.dw-header .wp-block-navigation {
	margin-inline-start: auto;
}

.dw-header .wp-block-navigation .wp-block-navigation-item__content {
	display: inline-block;
	padding-block: 0.5rem;
	color: var(--wp--preset--color--white);
	text-decoration: none;
	border-block-end: 2px solid transparent;
}

.dw-header .wp-block-navigation .wp-block-navigation-item__content:hover,
.dw-header .wp-block-navigation .wp-block-navigation-item__content:focus,
.dw-header .wp-block-navigation .current-menu-item .wp-block-navigation-item__content {
	color: var(--wp--preset--color--teal-300);
	border-block-end-color: var(--wp--preset--color--teal-300);
}

.dw-header .wp-block-navigation__responsive-container-open,
.dw-header .wp-block-navigation__responsive-container-close {
	min-width: var(--wp--custom--tap--min);
	min-height: var(--wp--custom--tap--min);
	color: var(--wp--preset--color--white);
}

.dw-header .wp-block-navigation__responsive-container.is-menu-open {
	padding: calc(var(--dw-header-h) + 1rem) clamp(1.25rem, 5vw, 4rem) 3rem;
}

/* Ядро по умолчанию ужимает список оверлея по ширине самого длинного пункта.
   Для пальца нужна строка во всю ширину, а не 137 пикселей у края. */
.dw-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.dw-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	width: 100%;
	gap: 0;
	align-items: stretch;
}

.dw-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	align-items: stretch;
}

.dw-header .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	display: block;
	width: 100%;
	padding-block: 1rem;
	font-size: 1.375rem;
	font-weight: 600;
	text-align: start;
	border-block-end: 1px solid rgba(117, 212, 214, 0.2);
}

.dw-header__cta {
	flex: none;
	padding: 0.75rem 1.5rem;
	min-height: 44px;
}

@media (max-width: 1023px) {
	.dw-header__cta {
		display: none;
	}
}

/* ---------------------------------------------------------------- Hero */

.dw-hero {
	position: relative;
	display: flex;
	align-items: center;
	min-height: clamp(560px, 82svh, 760px);
	padding-block: calc(var(--dw-header-h) + clamp(3rem, 8vw, 6rem)) clamp(3rem, 8vw, 6rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--navy-900);
	color: var(--wp--preset--color--white);
	isolation: isolate;
}

.dw-hero__media {
	position: absolute;
	inset: 0;
	z-index: -2;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/*
 * Отдельный скрим под шапкой. Боковой градиент к левому краю почти прозрачен,
 * а там небо — белая навигация на нём читалась бы на грани. Верхняя полоса
 * держит контраст независимо от того, что окажется на фотографии.
 */
.dw-hero::before {
	content: "";
	position: absolute;
	inset-block-start: 0;
	inset-inline: 0;
	z-index: -1;
	height: 180px;
	background: linear-gradient(to bottom, rgba(11, 29, 58, 0.88) 0%, rgba(11, 29, 58, 0.45) 55%, rgba(11, 29, 58, 0) 100%);
}

/* Затемнение со стороны текста: иврит читается справа, значит плотность справа. */
.dw-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(
		to left,
		rgba(11, 29, 58, 0.94) 0%,
		rgba(11, 29, 58, 0.86) 34%,
		rgba(11, 29, 58, 0.55) 64%,
		rgba(11, 29, 58, 0.35) 100%
	);
}

.dw-hero__inner {
	position: relative;
	width: 100%;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-hero__content {
	max-width: 34rem;
}

.dw-hero__kicker {
	display: inline-block;
	margin-block-end: 1.25rem;
	color: var(--wp--preset--color--teal-300);
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--caption);
	font-weight: 500;
	letter-spacing: 1.2px;
}

.dw-hero__title {
	margin: 0 0 1.25rem;
	color: var(--wp--preset--color--white);
	font-size: var(--wp--preset--font-size--display);
	font-weight: 700;
	line-height: 1.12;
	letter-spacing: -0.5px;
}

.dw-hero__title em {
	font-style: normal;
	color: var(--wp--preset--color--teal-300);
}

.dw-hero__lead {
	margin: 0 0 2rem;
	max-width: 30rem;
	color: rgba(255, 255, 255, 0.92);
	font-size: var(--wp--preset--font-size--lead);
	/* Светлый текст на тёмном читается легче — прибавка к межстрочному. */
	line-height: 1.62;
}

.dw-hero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.875rem;
	margin-block-end: 1.5rem;
}

.dw-hero__micro {
	margin: 0;
	max-width: 28rem;
	color: var(--wp--preset--color--teal-300);
	font-size: var(--wp--preset--font-size--caption);
	line-height: 1.6;
}

@media (max-width: 781px) {
	.dw-hero {
		min-height: 0;
	}

	/* Город должен читаться: он и есть аргумент «лететь не страшно».
	   Верх остаётся открытым, плотность набирается там, где идёт текст. */
	.dw-hero::after {
		background: linear-gradient(
			to bottom,
			rgba(11, 29, 58, 0.30) 0%,
			rgba(11, 29, 58, 0.55) 22%,
			rgba(11, 29, 58, 0.88) 46%,
			rgba(11, 29, 58, 0.96) 100%
		);
	}

	.dw-hero__media {
		object-position: 50% 38%;
	}

	.dw-hero__actions .dw-btn {
		flex: 1 1 100%;
	}
}

/* --------------------------------------------------------- Полоса доверия */

.dw-trust {
	background: var(--wp--preset--color--navy-900);
	color: var(--wp--preset--color--white);
}

.dw-trust__inner {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-inline: clamp(1.25rem, 5vw, 4rem);
}

.dw-trust__item {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.75rem;
	padding: 2rem 1rem;
	text-align: center;
}

.dw-trust__item + .dw-trust__item {
	border-inline-start: 1px solid rgba(117, 212, 214, 0.3);
}

.dw-trust__icon {
	width: 36px;
	height: 36px;
	color: var(--wp--preset--color--teal-300);
}

.dw-trust__label {
	font-size: var(--wp--preset--font-size--nav);
	font-weight: 600;
	line-height: 1.4;
}

@media (max-width: 781px) {
	.dw-trust__inner {
		grid-template-columns: repeat(2, 1fr);
	}

	.dw-trust__item + .dw-trust__item {
		border-inline-start: 0;
	}

	.dw-trust__item:nth-child(even) {
		border-inline-start: 1px solid rgba(117, 212, 214, 0.3);
	}

	.dw-trust__item:nth-child(n + 3) {
		border-block-start: 1px solid rgba(117, 212, 214, 0.3);
	}
}

/* -------------------------------------------------------------- Секции */

.dw-section {
	padding-block: var(--wp--preset--spacing--80);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
}

.dw-section--mist {
	background: var(--wp--preset--color--gray-50);
}

.dw-section--navy {
	position: relative;
	background: var(--wp--preset--color--navy-900);
	color: rgba(255, 255, 255, 0.92);
	isolation: isolate;
	overflow: hidden;
}

/* Тёмное у нас не бывает плоским: мягкое бирюзовое свечение даёт глубину. */
.dw-section--navy::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		radial-gradient(ellipse 55% 45% at 85% 8%, rgba(22, 176, 182, 0.16), transparent 70%),
		radial-gradient(ellipse 45% 40% at 8% 92%, rgba(23, 82, 127, 0.35), transparent 70%);
	pointer-events: none;
}

.dw-section--navy :is(h2, h3, h4) {
	color: var(--wp--preset--color--white);
}

.dw-section--tight {
	padding-block: clamp(2.5rem, 5vw, 4rem);
}

.dw-section__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-section__head {
	max-width: 46rem;
	margin-block-end: clamp(2rem, 4vw, 3.5rem);
}

.dw-section__head h2 {
	margin: 0;
}

.dw-section__head p {
	margin: 1rem 0 0;
	font-size: var(--wp--preset--font-size--lead);
	line-height: 1.55;
}

.dw-section--navy .dw-section__head p {
	color: var(--wp--preset--color--teal-300);
}

/*
 * Колонка текста прижата к началу строки, а не отцентрована. Заголовок страницы
 * выше живёт в контейнере 1600 и стоит у правого края; отцентрованная колонка в
 * 70ch уезжала от него на середину экрана, и связь между заголовком и текстом
 * терялась. margin-inline-start отменяет auto от .dw-section__inner.
 */
.dw-prose {
	max-width: var(--wp--custom--measure);
	margin-inline-start: 0;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.75;
}

/* Иерархия внутри юридического текста: разделов много, и без разного веса
   отступов документ читается как одна сплошная простыня. */
.dw-prose > :where(h2) {
	margin-block: 2.5rem 0.75rem;
	font-size: clamp(1.375rem, 2.2vw, 1.75rem);
	line-height: 1.3;
}

.dw-prose > :where(h3) {
	margin-block: 1.75rem 0.5rem;
	font-size: clamp(1.125rem, 1.7vw, 1.3125rem);
	line-height: 1.35;
}

.dw-prose > :where(h2):first-child,
.dw-prose > :where(h3):first-child {
	margin-block-start: 0;
}

.dw-prose :where(ul, ol) {
	margin-block: 0.75rem;
	padding-inline-start: 1.5rem;
}

.dw-prose :where(li) {
	margin-block: 0.5rem;
}

.dw-prose :where(p) {
	margin-block: 0.75rem;
}

/* Служебная строка «обновлено» и подпись под документом. */
.dw-prose :where(.dw-prose__meta) {
	margin-block: 0 2rem;
	font-size: 1rem;
	color: var(--wp--preset--color--gray-700);
}

/*
 * Шапка страницы-документа. От .dw-section она наследовала 112px сверху и снизу,
 * а следом шли ещё 64px секции с текстом: между заголовком и первой строкой
 * набегало 176px пустоты. Заголовок и текст — одна мысль, их незачем разносить
 * на экран.
 */
.dw-page-head {
	padding-block: clamp(2.5rem, 5vw, 4.5rem) clamp(1rem, 2vw, 2rem);
}

.dw-page-head + .dw-section--tight {
	padding-block-start: 0;
}

/* ------------------------------------------------------------ Карточки */

.dw-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: clamp(1rem, 2vw, 1.75rem);
}

.dw-grid--three {
	grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}

.dw-card {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	padding: clamp(1.5rem, 3vw, 1.75rem);
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--gray-300);
	border-radius: var(--wp--custom--radius--lg);
	transition: border-color var(--wp--custom--duration--state) var(--wp--custom--ease--out),
		box-shadow var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

.dw-card:hover {
	border-color: var(--wp--preset--color--teal-700);
	box-shadow: var(--wp--preset--shadow--response);
}

.dw-card__icon {
	width: 32px;
	height: 32px;
	color: var(--wp--preset--color--teal-700);
}

.dw-card__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--subtitle);
	font-weight: 600;
	line-height: 1.3;
	color: var(--wp--preset--color--navy-900);
}

.dw-card__text {
	margin: 0;
	color: var(--wp--preset--color--gray-700);
	line-height: 1.65;
}

.dw-card__note {
	margin: 0;
	font-size: var(--wp--preset--font-size--caption);
	color: var(--wp--preset--color--gray-700);
}

/* Акцентная карточка главной услуги. Одна на сетку. */
.dw-card--featured {
	background: var(--wp--preset--color--navy-900);
	border-color: transparent;
}

.dw-card--featured:hover {
	border-color: transparent;
	box-shadow: none;
}

.dw-card--featured .dw-card__icon {
	color: var(--wp--preset--color--teal-300);
}

.dw-card--featured .dw-card__title {
	color: var(--wp--preset--color--white);
	font-weight: 700;
}

.dw-card--featured .dw-card__text {
	color: rgba(255, 255, 255, 0.86);
}

.dw-card--flat {
	border-color: var(--wp--preset--color--gray-200);
	background: var(--wp--preset--color--white);
}

.dw-card--flat:hover {
	border-color: var(--wp--preset--color--gray-200);
	box-shadow: none;
}

/* -------------------------------------------- Что такое восстановление */

.dw-shikum__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
	gap: clamp(2rem, 5vw, 5rem);
	align-items: center;
	margin-block-end: clamp(2.5rem, 5vw, 4rem);
}

.dw-shikum__text h2 {
	margin: 0 0 1.25rem;
}

/* Коллаж: основное фото + планшет со снимком внахлёст.
   Верхнее фото выходит за границу секции — глубина вместо каталога. */
.dw-shikum__media {
	position: relative;
	margin: 0;
	padding-block-end: clamp(3rem, 6vw, 4.5rem);
}

.dw-shikum__photo {
	display: block;
	overflow: hidden;
	border-radius: var(--wp--custom--radius--lg);
}

.dw-shikum__photo img {
	display: block;
	width: 100%;
	height: auto;
}

.dw-shikum__photo--main {
	width: 82%;
	margin-block-start: calc(var(--wp--preset--spacing--80) * -0.45);
	box-shadow: 0 8px 8px -4px rgba(11, 29, 58, 0.18);
}

.dw-shikum__photo--overlay {
	position: absolute;
	inset-inline-end: 0;
	inset-block-end: 0;
	width: 52%;
	border: 5px solid var(--wp--preset--color--white);
	box-shadow: 0 8px 8px -4px rgba(11, 29, 58, 0.22);
	transform: rotate(2.5deg);
}

@media (max-width: 1023px) {
	.dw-shikum__layout {
		grid-template-columns: 1fr;
		gap: 2rem;
	}

	.dw-shikum__photo--main {
		width: 90%;
		margin-block-start: 0;
	}
}

/* ------------------------------------------------------------- Услуги */

/*
 * Издательский разворот: витрина главной услуги на фотографии во всю ширину
 * и прейскурант крупной типографикой. Никаких карточек с иконками.
 */

.dw-svc__feature {
	position: relative;
	margin: 0 0 clamp(2.5rem, 5vw, 4.5rem);
	border-radius: 20px;
	overflow: hidden;
	isolation: isolate;
	box-shadow: 0 8px 8px -4px rgba(11, 29, 58, 0.2);
}

.dw-svc__feature-media {
	display: block;
}

.dw-svc__feature-media img {
	display: block;
	width: 100%;
	height: clamp(400px, 44vw, 560px);
	object-fit: cover;
	/* Модель и руки — в нижней половине кадра. */
	object-position: 50% 72%;
}

/* Плотность градиента со стороны текста (справа в RTL), фото открыто слева. */
.dw-svc__feature::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(
		to left,
		rgba(11, 29, 58, 0.93) 0%,
		rgba(11, 29, 58, 0.78) 32%,
		rgba(11, 29, 58, 0.25) 62%,
		rgba(11, 29, 58, 0) 100%
	);
	z-index: 1;
}

.dw-svc__feature-content {
	position: absolute;
	inset-block: 0;
	inset-inline-start: 0;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	justify-content: center;
	align-items: flex-start;
	gap: 1rem;
	width: min(34rem, 52%);
	padding: clamp(1.5rem, 4vw, 3.5rem);
	color: var(--wp--preset--color--white);
	z-index: 2;
}

.dw-svc__feature-kicker {
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--caption);
	font-weight: 600;
	color: var(--wp--preset--color--teal-300);
}

.dw-svc__feature-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2rem, 4.5vw, 3.25rem);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -0.4px;
	color: var(--wp--preset--color--white);
}

.dw-svc__feature-text {
	margin: 0;
	/* align-items: flex-start снимает stretch — без 100% абзац упирается
	   в свой max-width и вылезает из узкого контейнера на телефоне. */
	max-width: min(30rem, 100%);
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.92);
}

.dw-svc__feature-link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	margin-block-start: 0.5rem;
	padding: 0.875rem 1.75rem;
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--pill);
	color: var(--wp--preset--color--navy-900);
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--nav);
	font-weight: 600;
	text-decoration: none;
	transition: background-color var(--wp--custom--duration--state) var(--wp--custom--ease--out),
		color var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

.dw-svc__feature-link:hover,
.dw-svc__feature-link:focus {
	background: var(--wp--preset--color--teal-700);
	color: var(--wp--preset--color--white);
}

.dw-svc__feature-link svg {
	width: 18px;
	height: 18px;
	transition: transform var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

.dw-svc__feature-link:hover svg {
	/* RTL: «вперёд» — это влево. */
	transform: translateX(-4px);
}

/* На телефоне витрина складывается: фото сверху, текст в тёмном блоке под ним. */
@media (max-width: 781px) {
	.dw-svc__feature-media img {
		height: auto;
		aspect-ratio: 4 / 3;
		object-position: 50% 60%;
	}

	.dw-svc__feature::after {
		content: none;
	}

	.dw-svc__feature-content {
		position: static;
		width: 100%;
		background: var(--wp--preset--color--navy-900);
		margin-block-start: -1px;
	}
}

/*
 * Прейскурант-аккордеон в три группы + липкая превью-панель.
 * Строки — нативные details/summary: клавиатура и клик работают из коробки,
 * ховер-подсветка теперь честная (строка действительно раскрывается).
 * Кадр в панели следует за наведением, фокусом и раскрытием.
 */
.dw-menu-wrap {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(320px, 1fr);
	gap: clamp(2rem, 4vw, 4rem);
	align-items: start;
}

.dw-menu__group {
	margin-block-end: clamp(1.75rem, 3vw, 2.5rem);
}

.dw-menu__group:last-child {
	margin-block-end: 0;
}

/* Тихий подзаголовок группы: этап пути лечения, не кричащий кикер. */
.dw-menu__group-title {
	margin: 0 0 0.375rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.4;
	color: var(--wp--preset--color--teal-800);
}

.dw-menu__row {
	border-block-end: 1px solid var(--wp--preset--color--gray-200);
	transition: background-color var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

/* Активная строка получает заливку и бирюзовую черту со стороны чтения:
   один цвет названия для дальнозоркого глаза был ниже порога заметности,
   а связь «эта строка звучит в панели» должна читаться мгновенно. */
@media (min-width: 1024px) {
	.dw-menu__row.is-active {
		background: var(--wp--preset--color--gray-50);
		box-shadow: inset 3px 0 0 0 var(--wp--preset--color--teal-700);
	}

	.dw-menu__row.is-active .dw-menu__summary {
		padding-inline: 1rem;
	}
}

.dw-menu__summary {
	display: block;
	padding-block: clamp(1rem, 1.8vw, 1.375rem);
	cursor: pointer;
	list-style: none;
	transition: padding var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

.dw-menu__summary::-webkit-details-marker {
	display: none;
}

.dw-menu__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
}

.dw-menu__name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.25rem, 2vw, 1.625rem);
	font-weight: 600;
	line-height: 1.3;
	letter-spacing: -0.2px;
	color: var(--wp--preset--color--navy-900);
	transition: color var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

.dw-menu__summary:hover .dw-menu__name,
.dw-menu__row.is-active .dw-menu__name,
.dw-menu__row[open] .dw-menu__name {
	color: var(--wp--preset--color--teal-800);
}

.dw-menu__chevron {
	flex: none;
	width: 22px;
	height: 22px;
	color: var(--wp--preset--color--teal-700);
	transition: transform var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

.dw-menu__row[open] .dw-menu__chevron {
	transform: rotate(180deg);
}

.dw-menu__mark {
	color: var(--wp--preset--color--teal-800);
	font-size: 0.6em;
}

/* Нота — антистрах-копирайтинг, живёт под названием и всегда видима.
   16px, не caption: аудитория 45–70 читает это с телефона. */
.dw-menu__note {
	display: block;
	margin-block-start: 0.25rem;
	max-width: 34rem;
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.55;
	color: var(--wp--preset--color--gray-700);
}

.dw-menu__body {
	max-width: 34rem;
	padding-block-end: clamp(1.25rem, 2vw, 1.5rem);
}

.dw-menu__body p {
	margin: 0 0 0.875rem;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.7;
	color: var(--wp--preset--color--gray-700);
}

@media (prefers-reduced-motion: no-preference) {
	.dw-menu__row[open] .dw-menu__body {
		animation: dw-rise var(--wp--custom--duration--state) var(--wp--custom--ease--out) both;
	}
}

.dw-menu__cta {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 24px;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--nav);
	font-weight: 600;
	color: var(--wp--preset--color--teal-800);
	text-decoration: none;
}

.dw-menu__cta:hover,
.dw-menu__cta:focus {
	color: var(--wp--preset--color--navy-700);
	text-decoration: underline;
}

.dw-menu__cta svg {
	flex: none;
	width: 18px;
	height: 18px;
}

.dw-menu__footnote {
	margin: 1.25rem 0 0;
	font-size: var(--wp--preset--font-size--body);
	color: var(--wp--preset--color--gray-700);
}

/* Концовка секции: приглашение вместо юридической оговорки (peak-end).
   border-box обязателен: тема живёт без глобального reset, и width:100%
   у кнопки в column-режиме иначе вылезает за контейнер на ширину паддингов. */
.dw-menu__end,
.dw-menu__end * {
	box-sizing: border-box;
}

.dw-menu__end {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem 2rem;
	margin-block-start: clamp(2rem, 4vw, 3rem);
	padding: clamp(1.25rem, 2.5vw, 1.75rem) clamp(1.25rem, 2.5vw, 2rem);
	background: var(--wp--preset--color--gray-50);
	border-radius: var(--wp--custom--radius--lg);
}

.dw-menu__end p {
	margin: 0;
	max-width: 34rem;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.6;
	color: var(--wp--preset--color--gray-700);
}

/* Панель липкая: пока читаешь список, фото едет рядом. */
.dw-menu__preview {
	position: sticky;
	inset-block-start: calc(var(--dw-header-h) + 2rem);
	aspect-ratio: 4 / 3;
	border-radius: 16px;
	overflow: hidden;
	box-shadow: 0 8px 8px -4px rgba(11, 29, 58, 0.2);
}

.dw-menu__preview-img {
	position: absolute;
	inset: 0;
	margin: 0;
	opacity: 0;
}

@media (prefers-reduced-motion: no-preference) {
	.dw-menu__preview-img {
		transition: opacity 300ms var(--wp--custom--ease--out);
	}
}

.dw-menu__preview-img.is-active {
	opacity: 1;
}

.dw-menu__preview-img picture {
	display: block;
	height: 100%;
}

.dw-menu__preview-img img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Подпись кадра: без неё панель меняла картинку «телепатически» —
   связь со строкой приходилось угадывать. */
.dw-menu__preview-img figcaption {
	position: absolute;
	inset-inline: 0;
	inset-block-end: 0;
	padding: 2.5rem 1rem 0.875rem;
	background: linear-gradient(to top, rgba(11, 29, 58, 0.92) 0%, rgba(11, 29, 58, 0) 100%);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--body);
	font-weight: 600;
	line-height: 1.4;
	text-align: center;
}

@media (max-width: 1023px) {
	.dw-menu-wrap {
		grid-template-columns: 1fr;
	}

	.dw-menu__preview {
		display: none;
	}

	.dw-menu__end {
		flex-direction: column;
		align-items: stretch;
		text-align: start;
	}

	.dw-menu__end .dw-btn {
		width: 100%;
	}
}

/* ------------------------------------------------------- Почему Грузия */

.dw-georgia__layout {
	display: grid;
	grid-template-columns: minmax(0, 1.5fr) minmax(280px, 1fr);
	gap: clamp(2rem, 4vw, 4rem);
	align-items: center;
}

@media (max-width: 1023px) {
	.dw-georgia__layout {
		grid-template-columns: 1fr;
	}
}

/* Полароиды Тбилиси: город должен быть виден — он и есть аргумент. */
.dw-georgia__photos {
	position: relative;
	min-height: 460px;
}

.dw-polaroid {
	position: absolute;
	margin: 0;
	padding: 10px 10px 0;
	background: var(--wp--preset--color--white);
	border-radius: 6px;
	box-shadow: 0 8px 8px -2px rgba(5, 13, 27, 0.4);
}

.dw-polaroid img {
	display: block;
	width: 100%;
	height: auto;
	border-radius: 3px;
}

.dw-polaroid figcaption {
	padding: 0.6rem 0.25rem 0.7rem;
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--caption);
	font-weight: 600;
	color: var(--wp--preset--color--navy-700);
	text-align: center;
}

.dw-polaroid--back {
	inset-block-start: 0;
	inset-inline-start: 4%;
	width: 62%;
	transform: rotate(4deg);
	z-index: 1;
}

.dw-polaroid--front {
	inset-block-end: 0;
	inset-inline-end: 0;
	width: 78%;
	transform: rotate(-3.5deg);
	z-index: 2;
}

@media (max-width: 1023px) {
	.dw-georgia__photos {
		min-height: 0;
		display: flex;
		gap: 1rem;
		padding-block: 1rem;
	}

	.dw-polaroid {
		position: static;
		flex: 1 1 0;
	}

	.dw-polaroid--back {
		transform: rotate(2deg);
	}

	.dw-polaroid--front {
		transform: rotate(-2deg);
	}
}

/*
 * Первая причина — денежная, она и есть ответ на главный вопрос,
 * поэтому занимает всю строку в своей колонке.
 */
.dw-reasons {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: clamp(1rem, 2vw, 1.5rem);
}

.dw-reason {
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	padding: clamp(1.25rem, 2.5vw, 1.75rem);
	background: rgba(255, 255, 255, 0.06);
	border: 1px solid rgba(117, 212, 214, 0.14);
	border-radius: var(--wp--custom--radius--lg);
}

.dw-reason--lead {
	grid-column: 1 / -1;
	background: rgba(117, 212, 214, 0.12);
}

.dw-reason--wide {
	grid-column: 1 / -1;
}

.dw-reason__icon {
	width: 34px;
	height: 34px;
	color: var(--wp--preset--color--teal-300);
}

.dw-reason__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--subtitle);
	font-weight: 600;
	line-height: 1.3;
	color: var(--wp--preset--color--white);
}

.dw-reason__text {
	margin: 0;
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.88);
}

@media (max-width: 600px) {
	.dw-reasons {
		grid-template-columns: 1fr;
	}

	.dw-reason,
	.dw-reason--lead,
	.dw-reason--wide {
		grid-column: span 1;
	}
}

/* ---------------------------------------------------------- Процесс */

.dw-process__layout {
	display: grid;
	grid-template-columns: minmax(280px, 0.8fr) minmax(0, 2fr);
	gap: clamp(2rem, 5vw, 5rem);
	align-items: center;
}

@media (max-width: 1023px) {
	.dw-process__layout {
		grid-template-columns: 1fr;
	}
}

/* Мокап WhatsApp: не рассказываем, как выглядит второй шаг, а показываем.
   Чистый CSS, чтобы вёрстка не зависела от скриншотов мессенджера. */
.dw-phone {
	justify-self: center;
	width: min(300px, 100%);
}

.dw-phone__frame {
	position: relative;
	padding: 12px;
	background: var(--wp--preset--color--navy-900);
	border-radius: 36px;
	box-shadow: 0 8px 8px -2px rgba(11, 29, 58, 0.35);
}

.dw-phone__notch {
	position: absolute;
	inset-block-start: 12px;
	inset-inline-start: 50%;
	transform: translateX(50%);
	width: 84px;
	height: 18px;
	background: var(--wp--preset--color--navy-900);
	border-radius: 0 0 12px 12px;
	z-index: 2;
}

.dw-phone__chat {
	display: flex;
	flex-direction: column;
	gap: 0.625rem;
	min-height: 420px;
	padding: 3rem 0.875rem 1.25rem;
	background: #e7ded4;
	border-radius: 26px;
	overflow: hidden;
}

.dw-phone__chat-header {
	position: absolute;
	inset-block-start: 12px;
	inset-inline: 12px;
	display: flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.625rem 0.875rem;
	background: var(--wp--preset--color--teal-800);
	border-radius: 26px 26px 0 0;
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.8125rem;
	font-weight: 600;
	z-index: 1;
}

.dw-phone__avatar {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 26px;
	height: 26px;
	background: rgba(255, 255, 255, 0.2);
	border-radius: 999px;
}

.dw-phone__avatar svg {
	width: 16px;
	height: 16px;
}

.dw-phone__bubble {
	position: relative;
	max-width: 88%;
	padding: 0.5rem 0.625rem 1.05rem;
	border-radius: 10px;
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.8125rem;
	line-height: 1.5;
	color: #1e2b33;
	box-shadow: 0 1px 1px rgba(11, 29, 58, 0.12);
}

.dw-phone__bubble p {
	margin: 0;
}

.dw-phone__bubble img {
	display: block;
	width: 100%;
	height: auto;
	margin-block-end: 0.4rem;
	border-radius: 6px;
}

.dw-phone__bubble--out {
	align-self: flex-start;
	background: #dcf8c7;
}

.dw-phone__bubble--in {
	align-self: flex-end;
	background: var(--wp--preset--color--white);
}

.dw-phone__time {
	position: absolute;
	inset-block-end: 0.3rem;
	inset-inline-start: 0.625rem;
	font-size: 0.625rem;
	color: rgba(30, 43, 51, 0.55);
}

.dw-steps {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: clamp(1.25rem, 2.5vw, 2rem);
	margin: 0;
	padding: 0;
	list-style: none;
	counter-reset: dw-step;
}

.dw-step {
	position: relative;
	padding-block-start: 0.5rem;
}

.dw-step__num {
	display: block;
	margin-block-end: 0.5rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 2.5rem;
	font-weight: 800;
	line-height: 1;
	color: var(--wp--preset--color--teal-700);
}

.dw-section--navy .dw-step__num {
	color: var(--wp--preset--color--teal-300);
}

.dw-step__title {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--subtitle);
	font-weight: 600;
	line-height: 1.3;
}

.dw-step__text {
	margin: 0;
	line-height: 1.65;
}

.dw-steps__cta {
	margin-block: clamp(2rem, 4vw, 3rem) 0;
}

/* ---------------------------------------------------------- Пакет */

.dw-package {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
	gap: 1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.dw-package__item {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.75rem;
	padding: 1.75rem 1rem;
	text-align: center;
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--lg);
}

.dw-package__item svg {
	width: 34px;
	height: 34px;
	color: var(--wp--preset--color--teal-700);
}

.dw-package__label {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--nav);
	font-weight: 600;
	color: var(--wp--preset--color--navy-900);
}

.dw-package__note {
	margin-block: 1.5rem 0;
	font-size: var(--wp--preset--font-size--caption);
	color: var(--wp--preset--color--gray-700);
}

/* ---------------------------------------------------------- Блок цены */

.dw-price__title {
	margin: 0 0 1.25rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--headline);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--navy-900);
}

.dw-price__text {
	margin: 0 0 1rem;
	max-width: var(--wp--custom--measure);
	line-height: 1.75;
}

.dw-price__text strong {
	color: var(--wp--preset--color--navy-900);
	font-weight: 600;
}

.dw-price__actions {
	margin-block: 1.75rem 0;
}

.dw-price {
	display: grid;
	grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
	gap: clamp(2rem, 5vw, 4rem);
	align-items: start;
}

@media (max-width: 1023px) {
	.dw-price {
		grid-template-columns: 1fr;
	}
}

.dw-price__points {
	display: grid;
	gap: 1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.dw-price__point {
	display: flex;
	align-items: flex-start;
	gap: 0.875rem;
	padding: 1.25rem;
	background: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--md);
}

.dw-price__point svg {
	flex: none;
	width: 26px;
	height: 26px;
	color: var(--wp--preset--color--teal-700);
}

.dw-price__point-title {
	display: block;
	margin-block-end: 0.25rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--button);
	font-weight: 600;
	color: var(--wp--preset--color--navy-900);
}

.dw-price__point-text {
	margin: 0;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.6;
}

.dw-promo {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 1rem;
	margin-block-start: 2rem;
	padding: 1.25rem 1.5rem;
	background: var(--wp--preset--color--teal-100);
	border-radius: var(--wp--custom--radius--md);
	color: var(--wp--preset--color--navy-900);
	font-weight: 600;
}

/* ------------------------------------------------------------- Отзывы */

.dw-reviews {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
	gap: clamp(1rem, 2vw, 1.75rem);
}

.dw-review {
	display: flex;
	flex-direction: column;
	gap: 0.875rem;
	padding: clamp(1.5rem, 3vw, 1.75rem);
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--gray-200);
	border-radius: var(--wp--custom--radius--lg);
}

/*
 * Каркас будущего отзыва: выглядит как карточка Google/Facebook,
 * а не как серый квадрат с извинением. Реальный контент заменит его,
 * не ломая композицию секции.
 */
.dw-review__head {
	display: flex;
	align-items: center;
	gap: 0.75rem;
}

.dw-review__avatar {
	width: 44px;
	height: 44px;
	flex: none;
	border-radius: 999px;
	background: var(--wp--preset--color--gray-100);
}

.dw-review__meta {
	display: grid;
	gap: 0.4rem;
	flex: 1;
}

.dw-review__meta i {
	display: block;
	height: 10px;
	border-radius: 5px;
	background: var(--wp--preset--color--gray-100);
}

.dw-review__meta i:first-child {
	width: 60%;
}

.dw-review__meta i:last-child {
	width: 35%;
}

.dw-review__source {
	width: 26px;
	height: 26px;
	flex: none;
}

.dw-review__stars {
	display: flex;
	gap: 0.25rem;
	color: #f5b301;
}

.dw-review__stars svg {
	width: 20px;
	height: 20px;
}

.dw-review__lines {
	display: grid;
	gap: 0.5rem;
	flex: 1;
}

.dw-review__lines i {
	display: block;
	height: 10px;
	border-radius: 5px;
	background: var(--wp--preset--color--gray-100);
}

.dw-review__lines i:nth-child(2) {
	width: 85%;
}

.dw-review__lines i:nth-child(3) {
	width: 60%;
}

.dw-review__soon {
	margin: 0;
	font-size: var(--wp--preset--font-size--caption);
	font-weight: 600;
	color: var(--wp--preset--color--gray-700);
}

.dw-review--video {
	align-items: center;
	justify-content: center;
	text-align: center;
	background: var(--wp--preset--color--navy-900);
	border: none;
}

.dw-review--video .dw-review__lines i {
	background: rgba(255, 255, 255, 0.12);
}

.dw-review--video .dw-review__soon {
	color: var(--wp--preset--color--teal-300);
}

.dw-review__play {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 64px;
	height: 64px;
	border-radius: 999px;
	background: rgba(117, 212, 214, 0.16);
	color: var(--wp--preset--color--teal-300);
}

.dw-review__play svg {
	width: 30px;
	height: 30px;
	/* RTL зеркалит и его, а направление «play» универсально. */
	transform: scaleX(-1);
}

/* ---------------------------------------------------------------- FAQ */

.dw-faq {
	max-width: 52rem;
}

.dw-faq__item {
	border-block-end: 1px solid var(--wp--preset--color--gray-300);
}

.dw-faq__item summary {
	display: flex;
	align-items: center;
	gap: 1rem;
	padding-block: 1.375rem;
	cursor: pointer;
	list-style: none;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--subtitle);
	font-weight: 600;
	color: var(--wp--preset--color--navy-900);
}

.dw-faq__item summary::-webkit-details-marker {
	display: none;
}

/* Шеврон рисуется двумя физическими границами: логические в RTL развернули бы
   его влево, а закрытая строка аккордеона должна показывать «раскрыть» — вниз. */
.dw-faq__item summary::after {
	content: "";
	flex: none;
	width: 12px;
	height: 12px;
	margin-inline-start: auto;
	border-right: 2.5px solid var(--wp--preset--color--teal-700);
	border-bottom: 2.5px solid var(--wp--preset--color--teal-700);
	transform: translateY(-3px) rotate(45deg);
	transform-origin: center;
	transition: transform var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

.dw-faq__item[open] summary::after {
	transform: translateY(3px) rotate(225deg);
}

.dw-faq__item summary:hover {
	color: var(--wp--preset--color--teal-800);
}

.dw-faq__answer {
	margin: 0;
	padding-block-end: 1.5rem;
	max-width: var(--wp--custom--measure);
	line-height: 1.7;
}

/* ------------------------------------------------- Секция заявки (S13) */

/*
 * Макет Figma «S13 · ייעוץ ראשוני ללא עלות» (node 65:247).
 * Фотография пары под оверлеем rgba(11,29,58,0.88): плотность выбрана так,
 * что белый текст держит ≈11.8:1 даже на самых светлых участках снимка.
 * RTL: копи-блок первый в разметке уходит вправо, карточка формы — влево,
 * как в макете; на мобильном порядок сохраняется и читается как воронка.
 */
.dw-cta {
	position: relative;
	padding-block: clamp(3rem, 7vw, 6.875rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--navy-900);
	isolation: isolate;
	overflow: hidden;
}

.dw-cta__media {
	position: absolute;
	inset: 0;
	z-index: -2;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 32%;
}

.dw-cta::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: rgba(11, 29, 58, 0.88);
}

.dw-cta__inner {
	display: grid;
	grid-template-columns: minmax(0, 450px) minmax(0, 622px);
	gap: clamp(2.5rem, 8vw, 10rem);
	align-items: center;
	justify-content: center;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

/* --- Копи-блок --- */

.dw-cta__copy {
	color: var(--wp--preset--color--white);
}

/* Единственный заголовок на сайте крупнее H2-шкалы: это эмоциональный пик
   воронки, макет задаёт 70px. Нижняя граница clamp — читаемость на 375px. */
.dw-cta__title {
	margin: 0 0 1.5rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2.25rem, 5vw, 4.375rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--white);
}

.dw-cta__lead {
	margin: 0 0 1.5rem;
	max-width: 24rem;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.65;
	color: var(--wp--preset--color--white);
}

.dw-cta__reassurance {
	display: grid;
	gap: 0.875rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.dw-cta__reassurance li {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	font-size: var(--wp--preset--font-size--lead);
	line-height: 1.55;
	color: var(--wp--preset--color--white);
}

.dw-cta__emoji {
	flex: none;
	width: 2.3125rem;
	font-size: 1.875rem;
	line-height: 1.55;
	text-align: center;
}

/* --- Карточка формы --- */

.dw-form,
.dw-form * {
	box-sizing: border-box;
}

.dw-form {
	padding: clamp(1.75rem, 4vw, 5rem) clamp(1.5rem, 5vw, 6.25rem);
	background: var(--wp--preset--color--white);
	border-radius: 20px;
	/* Карточка стоит на фотографии — цвет текста объявляется заново,
	   иначе подписи наследуют белый от секции и исчезают. */
	color: var(--wp--preset--color--gray-700);
}

.dw-form__title {
	margin: 0 0 1.25rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--title);
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: -0.2px;
	color: var(--wp--preset--color--navy-700);
	text-align: center;
}

.dw-form__form {
	display: grid;
	gap: 1rem;
}

.dw-form__trap {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.dw-form__notice {
	margin-block-end: 1.5rem;
	padding: 1rem 1.25rem;
	border-radius: var(--wp--custom--radius--md);
	line-height: 1.6;
}

.dw-form__notice p {
	margin: 0;
}

.dw-form__notice-title {
	font-family: var(--wp--preset--font-family--heading);
	font-weight: 600;
	margin-block-end: 0.25rem !important;
}

.dw-form__notice--ok {
	background: var(--wp--preset--color--teal-100);
	color: var(--wp--preset--color--navy-900);
}

.dw-form__notice--error {
	background: #fdecea;
	color: #8c1d18;
}

/* Пока форма отправляется — кнопка занята, повторное нажатие не проходит. */
.dw-form__submit[aria-busy="true"] {
	opacity: 0.75;
	cursor: progress;
}

.dw-form__notice--error ul {
	margin: 0.5rem 0 0;
	padding-inline-start: 1.25rem;
}

.dw-field {
	margin: 0;
	display: flex;
	flex-direction: column;
	gap: 0.375rem;
}

/*
 * Подпись видимая, а не screen-reader-text: placeholder исчезает при фокусе,
 * и человек с возрастной дальнозоркостью теряет, какое поле заполняет
 * (WCAG 3.3.2). Кегль body, а не caption — по той же причине.
 */
.dw-field__label {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--body);
	font-weight: 600;
	color: var(--wp--preset--color--navy-900);
}

.dw-field__error {
	display: flex;
	align-items: flex-start;
	gap: 0.375rem;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.5;
	/* 5.9:1 на белом. Ошибка называется текстом, а не только цветом рамки:
	   цвет как единственный носитель смысла запрещён (WCAG 1.4.1). */
	color: #a3231b;
}

.dw-field__error::before {
	content: "!";
	flex: none;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	inline-size: 1.25rem;
	block-size: 1.25rem;
	margin-block-start: 0.125rem;
	border-radius: 50%;
	background: #a3231b;
	color: var(--wp--preset--color--white);
	font-weight: 700;
	font-size: 0.8125rem;
	line-height: 1;
}

.dw-field--invalid .dw-field__input {
	border-color: #a3231b;
	box-shadow: 0 0 0 1px #a3231b;
}

.dw-field__input {
	width: 100%;
	min-height: 56px;
	padding: 1rem 1.125rem;
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--gray-700);
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.65;
	border: 1.5px solid var(--wp--preset--color--gray-300);
	border-radius: 12px;
	transition: border-color var(--wp--custom--duration--state) var(--wp--custom--ease--out),
		box-shadow var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

/* Телефон набирается слева направо даже на RTL-странице: при direction: rtl
   цифры и дефисы в «050-724-0808» переставляются местами и курсор прыгает.
   Направление ltr чинит ввод, выравнивание вправо оставляет поле в общем
   ритме формы. */
.dw-field__input[type="tel"] {
	direction: ltr;
	text-align: right;
}

/* Макет красит плейсхолдер в #7b8a99 — это 3.5:1 и проваливает AA.
   Аудитория 45–70 с пресбиопией; держим gray-700 (6.97:1). */
.dw-field__input::placeholder {
	color: var(--wp--preset--color--gray-700);
	opacity: 1;
}

.dw-field__input:focus {
	outline: none;
	border-color: var(--wp--preset--color--teal-700);
	box-shadow: var(--wp--custom--focus--ring-soft);
}

/*
 * Согласие — единственный чекбокс воронки, и он был 18×18 при кегле 14.
 * WCAG 2.5.8 требует 24×24, норма проекта — 48. Сам квадрат 24, а цель 48
 * набирается подписью: она связана через for и кликается целиком.
 * Выключка по левому краю (в RTL — по правому), а не по центру: две строки
 * текста по центру рвутся на неровные куски.
 */
/*
 * Строка согласия — обычный абзац, а не флекс.
 *
 * Во флексе каждый элемент внутри абзаца становился отдельным флекс-элементом:
 * ссылка на политику отрывалась от текста, а хвост «ושיחזרו אליי.» уезжал
 * целиком на вторую строку с собственной выключкой. Абзац с втянутым в строку
 * чекбоксом переносится как обычный текст и держит правый край.
 */
.dw-consent {
	display: block;
	margin: 0;
	font-size: 1rem;
	line-height: 1.2;
	color: var(--wp--preset--color--gray-700);
	text-align: start;
}

.dw-consent input[type="checkbox"] {
	width: 24px;
	height: 24px;
	margin: 0;
	margin-inline-end: 0.5rem;
	vertical-align: -0.35em;
	accent-color: var(--wp--preset--color--teal-700);
}

.dw-consent label {
	display: inline;
	cursor: pointer;
}

.dw-form__submit {
	width: 100%;
	min-height: 56px;
	padding: 1.25rem 1.5rem;
	background: var(--wp--preset--color--teal-700);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--button);
	font-weight: 600;
	line-height: 1.2;
	border: 0;
	border-radius: 12px;
	cursor: pointer;
	transition: background-color var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

.dw-form__submit:hover,
.dw-form__submit:focus {
	background: var(--wp--preset--color--navy-700);
}

.dw-form__submit:active {
	background: var(--wp--preset--color--navy-900);
}

.dw-form__whatsapp {
	margin: 0;
	text-align: center;
}

/* Второй канал воронки для тех, кому проще писать, чем звонить: цель
   должна быть такой же крупной, как кнопка отправки, а не строкой 24px. */
.dw-form__whatsapp a {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 48px;
	padding-inline: 0.5rem;
	font-size: var(--wp--preset--font-size--nav);
	color: var(--wp--preset--color--teal-800);
	text-decoration: none;
}

.dw-form__whatsapp a:hover,
.dw-form__whatsapp a:focus {
	text-decoration: underline;
}

.dw-form__whatsapp svg {
	flex: none;
	width: 20px;
	height: 20px;
}

@media (max-width: 1023px) {
	.dw-cta__inner {
		grid-template-columns: minmax(0, 622px);
		gap: 2.5rem;
	}

	.dw-cta__lead {
		max-width: none;
	}
}

/* -------------------------------------------------------------- Подвал */

.dw-footer {
	background: var(--wp--preset--color--navy-900);
	color: rgba(255, 255, 255, 0.86);
	padding-block: clamp(3rem, 6vw, 4.5rem) 2rem;
	padding-inline: clamp(1.25rem, 5vw, 4rem);
	font-size: var(--wp--preset--font-size--body);
}

.dw-footer__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-footer__top {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
	gap: clamp(2rem, 4vw, 3rem);
	padding-block-end: 2.5rem;
	border-block-end: 1px solid rgba(117, 212, 214, 0.24);
}

.dw-footer__brand img {
	display: block;
	height: 52px;
	width: auto;
	margin-block-end: 1rem;
}

.dw-footer__tagline {
	margin: 0;
	color: var(--wp--preset--color--teal-300);
	line-height: 1.6;
}

.dw-footer__title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--nav);
	font-weight: 600;
	color: var(--wp--preset--color--white);
}

.dw-footer__list {
	display: grid;
	gap: 0.375rem;
	margin: 0;
	padding: 0;
	list-style: none;
	line-height: 1.5;
}

.dw-footer a {
	color: rgba(255, 255, 255, 0.86);
	text-decoration: none;
}

/* Ссылка в списке — самостоятельная цель, а не слово в предложении:
   WCAG 2.2 требует минимум 24×24, текстовая строка в 22px не проходит. */
.dw-footer__list a {
	display: inline-flex;
	align-items: center;
	min-height: 28px;
}

.dw-footer a:hover,
.dw-footer a:focus {
	color: var(--wp--preset--color--teal-300);
	text-decoration: underline;
}

.dw-footer__social {
	display: flex;
	gap: 0.75rem;
	margin-block-start: 1.25rem;
}

.dw-footer__social a {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--wp--custom--tap--min);
	height: var(--wp--custom--tap--min);
	border-radius: var(--wp--custom--radius--pill);
	background: rgba(117, 212, 214, 0.14);
	color: var(--wp--preset--color--teal-300);
}

.dw-footer__social a:hover {
	background: var(--wp--preset--color--teal-700);
	color: var(--wp--preset--color--white);
}

.dw-footer__social svg {
	width: 22px;
	height: 22px;
}

.dw-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem 2rem;
	padding-block-start: 1.5rem;
	font-size: var(--wp--preset--font-size--caption);
	color: rgba(255, 255, 255, 0.76);
}

/* ------------------------------------------------- Липкие элементы моб. */

/*
 * Панель уходит на 3px ниже кромки экрана.
 *
 * Геометрически она и раньше стояла впритык: bottom: 0 при высоте 64px даёт
 * нижний край ровно по низу вьюпорта. Но плотность экрана у телефонов дробная
 * (2.75 у Pixel, 3 у iPhone при масштабе интерфейса), кромка слоя попадает
 * между физическими пикселями, и снизу проступает подложка страницы полоской
 * в один-два пикселя.
 *
 * Запас в 3px — это не смещение панели, а продолжение её фона за кромку:
 * inset-block-end уводит коробку вниз, а padding-block-end на кнопках
 * возвращает содержимое на место. Видимая высота и зона нажатия остаются 64px,
 * поэтому padding-bottom у body (--dw-sticky-h) править не нужно.
 *
 * Запас на самих кнопках, а не на панели: половины разного цвета, и общий
 * фон панели дал бы под бирюзовой кнопкой полоску тёмно-синего.
 */
.dw-sticky {
	position: fixed;
	inset-inline: 0;
	inset-block-end: -3px;
	z-index: var(--wp--custom--z--sticky);
	display: none;
	grid-template-columns: 1fr 1fr;
	background: var(--wp--preset--color--navy-900);
	box-shadow: var(--wp--preset--shadow--float-up);
}

.dw-sticky__action {
	/* box-sizing обязателен: у ссылок он content-box, и без него min-height
	   сложился бы с отступом — панель стала бы 67px видимой высоты вместо 64. */
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	padding-block-end: 3px;
	min-height: calc(var(--dw-sticky-h) + 3px);
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--button);
	font-weight: 600;
	color: var(--wp--preset--color--white);
	text-decoration: none;
}

.dw-sticky__action svg {
	width: 22px;
	height: 22px;
	color: var(--wp--preset--color--teal-300);
}

.dw-sticky__action--wa {
	background: var(--wp--preset--color--teal-700);
}

.dw-sticky__action--wa svg {
	color: var(--wp--preset--color--white);
}

@media (max-width: 781px) {
	.dw-sticky {
		display: grid;
	}
}

/* Кнопка стоит в левом нижнем углу: справа внизу в подвале живут иконки
   соцсетей, и плавающая кнопка перекрывала бы их. */
.dw-whatsapp {
	position: fixed;
	inset-inline-end: clamp(1rem, 3vw, 2rem);
	inset-block-end: clamp(1rem, 3vw, 2rem);
	z-index: var(--wp--custom--z--float);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 60px;
	height: 60px;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--teal-700);
	color: var(--wp--preset--color--white);
	box-shadow: 0 4px 8px rgba(11, 29, 58, 0.24);
	transition: background-color var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

.dw-whatsapp:hover,
.dw-whatsapp:focus {
	background: var(--wp--preset--color--teal-800);
}

.dw-whatsapp svg {
	width: 32px;
	height: 32px;
}

@media (max-width: 781px) {
	.dw-whatsapp {
		display: none;
	}
}

/* ------------------------------------------------------------- Движение */

/*
 * Появление секции усиливает уже видимый блок, а не прячет его.
 * Класс is-revealed вешает скрипт; без JS и в скрытой вкладке контент
 * остаётся на месте — это принципиально для страницы, которая продаёт лечение.
 */
/*
 * Появление построено на анимации, а не на переходе между скрытым и видимым
 * состоянием. Базовое состояние блока — видимое: если скрипт не выполнился,
 * вкладка была фоновой или страницу рендерит headless-браузер, секция просто
 * стоит на месте. Класс is-revealed только запускает кадры.
 */
@media (prefers-reduced-motion: no-preference) {
	/*
	 * wp_head ставит .dw-js до первой отрисовки. Поэтому будущие motion-цели
	 * на главной не успевают мелькнуть до того, как нижний скрипт назначит им
	 * классы и подключит IntersectionObserver.
	 */
	.dw-js body.home :is(
		.dw-hhero__content,
		.dw-hhero__couple,
		.dw-bridge__copy,
		.dw-journey,
		.dw-what__copy,
		.dw-what__media,
		.dw-svc2__title,
		.dw-svc2__feature,
		.dw-srow__photo,
		.dw-srow__copy,
		.dw-geo__head,
		.dw-route__path,
		.dw-route__stops,
		.dw-route__plane,
		.dw-proc__head,
		.dw-track,
		.dw-pack__copy,
		.dw-pack__photo,
		.dw-price2__photo,
		.dw-price2__copy,
		.dw-fit__head,
		.dw-fit__grid,
		.dw-faq2__title,
		.dw-qa,
		.dw-cta__inner,
		.dw-foot__cols,
		.dw-foot__bottom
	):not(.is-revealed) {
		opacity: 0;
	}

	/*
	 * А это правило — для всех страниц, не только главной.
	 *
	 * Список выше перечисляет будущие цели главной: класс dw-reveal им вешает
	 * скрипт, поэтому прятать их приходится по собственным именам и только там,
	 * где скрипт это делает (иначе на «услугах» .dw-svc2__feature спрячется
	 * навсегда — initHomeMotion туда не доходит).
	 *
	 * На «О нас», «услугах» и в блоке контактов dw-reveal стоит прямо в
	 * разметке, то есть уже в первой отрисовке. Такой элемент прятать безопасно
	 * — и нужно: без этого он показывался, затем анимация начинала свои кадры
	 * с opacity 0, и картинка исчезала, чтобы проявиться заново. Ровно тот
	 * прыжок, который был виден на «О нас».
	 */
	.dw-js .dw-reveal:not(.is-revealed) {
		opacity: 0;
	}

	@keyframes dw-rise {
		from {
			opacity: 0;
			transform: translateY(12px);
		}
	}

	@keyframes dw-soft-enter {
		from {
			opacity: 0;
			transform: translateY(16px) scale(0.992);
		}
	}

	@keyframes dw-from-start {
		from {
			opacity: 0;
			transform: translateX(20px);
		}
	}

	@keyframes dw-from-end {
		from {
			opacity: 0;
			transform: translateX(-20px);
		}
	}

	@keyframes dw-media-enter {
		from {
			opacity: 0;
			transform: scale(0.985);
			clip-path: inset(0 6% 0 0 round 14px);
		}
		to {
			opacity: 1;
			transform: scale(1);
			clip-path: inset(0 round 14px);
		}
	}

	@keyframes dw-hero-copy-enter {
		from {
			opacity: 0;
			transform: translateX(28px) translateY(6px);
			filter: blur(3px);
		}
		to {
			opacity: 1;
			transform: none;
			filter: blur(0);
		}
	}

	@keyframes dw-hero-media-enter {
		from {
			opacity: 0;
			transform: translateX(-24px) scale(0.985);
		}
		to {
			opacity: 1;
			transform: none;
		}
	}

	@keyframes dw-pop-enter {
		from {
			opacity: 0;
			transform: translateY(10px) scale(0.97);
		}
	}

	@keyframes dw-route-enter {
		from {
			opacity: 0;
			clip-path: inset(0 0 0 100%);
		}
		to {
			opacity: 1;
			clip-path: inset(0);
		}
	}

	@keyframes dw-plane-enter {
		from {
			opacity: 0;
			transform: translate(-24px, 12px) rotate(-18deg) scale(0.96);
		}
		to {
			opacity: 1;
			transform: rotate(-14deg) scale(1);
		}
	}

	@keyframes dw-line-x {
		from { transform: scaleX(0); }
		to { transform: scaleX(1); }
	}

	@keyframes dw-line-y {
		from { transform: scaleY(0); }
		to { transform: scaleY(1); }
	}

	.dw-reveal.is-revealed {
		animation: dw-rise var(--wp--custom--duration--reveal) var(--wp--custom--ease--out) both;
		animation-delay: var(--dw-delay, 0ms);
	}

	.dw-reveal--stagger.is-revealed > * {
		animation: dw-rise var(--wp--custom--duration--reveal) var(--wp--custom--ease--out) both;
		animation-delay: calc(var(--dw-i, 0) * 150ms);
	}

	/* Секция целиком и её дети не должны всплывать дважды. */
	.dw-reveal--stagger.is-revealed {
		animation: none;
	}

	.dw-reveal--soft.is-revealed {
		animation-name: dw-soft-enter;
	}

	.dw-reveal--from-start.is-revealed {
		animation-name: dw-from-start;
	}

	.dw-reveal--from-end.is-revealed {
		animation-name: dw-from-end;
	}

	.dw-reveal--media.is-revealed {
		animation: dw-media-enter 1400ms var(--wp--custom--ease--out) both;
		animation-delay: var(--dw-delay, 0ms);
	}

	.dw-reveal--hero-copy.is-revealed {
		animation: dw-hero-copy-enter 1450ms var(--wp--custom--ease--out) both;
	}

	.dw-reveal--hero-media.is-revealed {
		animation: dw-hero-media-enter 1650ms var(--wp--custom--ease--out) 220ms both;
	}

	.dw-reveal--route.is-revealed {
		animation: dw-route-enter 1750ms var(--wp--custom--ease--out) both;
	}

	.dw-reveal--plane.is-revealed {
		animation: dw-plane-enter 1450ms var(--wp--custom--ease--out) 720ms both;
	}

	.dw-stagger--soft.is-revealed > * {
		animation-name: dw-soft-enter;
		animation-delay: calc(var(--dw-i, 0) * 140ms);
	}

	.dw-stagger--pop.is-revealed > *,
	.dw-stagger--track.is-revealed > * {
		animation-name: dw-pop-enter;
		animation-delay: calc(var(--dw-i, 0) * 150ms);
	}

	.dw-journey.dw-stagger--line.is-revealed::before,
	.dw-track.dw-stagger--track.is-revealed::before {
		transform-origin: right center;
		animation: dw-line-x 1650ms var(--wp--custom--ease--out) 260ms both;
	}
}

@media (max-width: 1023px) and (prefers-reduced-motion: no-preference) {
	.dw-journey.dw-stagger--line.is-revealed::before,
	.dw-track.dw-stagger--track.is-revealed::before {
		transform-origin: center top;
		animation-name: dw-line-y;
	}
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
	.dw-cta-btn,
	.dw-nav__cta,
	.dw-svc2__feature-cta {
		transition: background-color 220ms var(--wp--custom--ease--out),
			color 220ms var(--wp--custom--ease--out),
			border-color 220ms var(--wp--custom--ease--out),
			box-shadow 220ms var(--wp--custom--ease--out),
			transform 160ms var(--wp--custom--ease--out);
	}

	.dw-cta-btn:hover,
	.dw-nav__cta:hover,
	.dw-svc2__feature-cta:hover {
		transform: translateY(-2px) scale(1.015);
	}

	.dw-cta-btn:active,
	.dw-nav__cta:active,
	.dw-svc2__feature-cta:active {
		transform: translateY(0) scale(0.98);
	}

	.dw-srow__photo img,
	.dw-svc2__feature-media img,
	.dw-what__photo img {
		transition: transform 500ms cubic-bezier(0.16, 1, 0.3, 1);
	}

	.dw-srow:hover .dw-srow__photo img,
	.dw-svc2__feature:hover .dw-svc2__feature-media img,
	.dw-what__media:hover .dw-what__photo img {
		transform: scale(1.025);
	}
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* --------------------------------------------------------------- Печать */

@media print {
	.dw-header,
	.dw-sticky,
	.dw-whatsapp,
	.dw-form {
		display: none !important;
	}
}


/* ============================================================ Макет Home
 *
 * Реализация Figma «Home / Desktop 1924» (node 112:1701).
 * Единая сетка главной: desktop-контейнер 1600px (= wideSize темы),
 * вертикальные поля секции 110. Всё переведено в clamp, чтобы держать
 * пропорцию от 375 до 1920 без промежуточных брейкпоинтов.
 * ==================================================================== */

.dw-home-section {
	padding-block: clamp(3rem, 7vw, 6.875rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
}

.dw-home-inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

/* Заголовок секции H2 макета: 70px. Крупнее шкалы темы — это сознательно,
   страница построена на больших заголовках. */
.dw-h2 {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2rem, 4.6vw, 4.375rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--navy-900);
}

.dw-h3 {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.375rem, 2vw, 1.75rem);
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: -0.2px;
	color: var(--wp--preset--color--navy-900);
}

/* Кнопки макета Home: радиус 12px, не таблетка.
   border-box обязателен: в теме нет глобального reset, и width:100%
   у кнопки с паддингами иначе вылезает за контейнер. */
.dw-cta-btn {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 56px;
	padding: 1.125rem 2.125rem;
	border: 0;
	border-radius: 12px;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--button);
	font-weight: 600;
	line-height: 1.2;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background-color var(--wp--custom--duration--state) var(--wp--custom--ease--out),
		color var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

.dw-cta-btn--primary {
	background: var(--wp--preset--color--teal-700);
	color: var(--wp--preset--color--white);
}

.dw-cta-btn--primary:hover,
.dw-cta-btn--primary:focus {
	background: var(--wp--preset--color--navy-700);
	color: var(--wp--preset--color--white);
}

.dw-cta-btn--secondary {
	background: var(--wp--preset--color--white);
	color: var(--wp--preset--color--navy-700);
	box-shadow: inset 0 0 0 1.5px var(--wp--preset--color--navy-700);
}

.dw-cta-btn--secondary:hover,
.dw-cta-btn--secondary:focus {
	background: var(--wp--preset--color--navy-700);
	color: var(--wp--preset--color--white);
}

/* ------------------------------------------------ Шапка (белая) */

.dw-nav {
	position: sticky;
	inset-block-start: 0;
	z-index: var(--wp--custom--z--header);
	margin-block-start: 0;
	background: var(--wp--preset--color--white);
	border-block-end: 1px solid var(--wp--preset--color--gray-200);
}

.dw-nav__inner {
	display: flex;
	align-items: center;
	gap: clamp(1rem, 2.5vw, 2.5rem);
	min-height: 97px;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-inline: clamp(1.25rem, 4vw, 3rem);
}

.dw-nav__logo {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	flex: none;
	text-decoration: none;
}

.dw-nav__wordmark {
	display: block;
	width: auto;
	height: clamp(26px, 2.4vw, 34px);
}

/*
 * Знак приподнят на 8% своей высоты. Начертание «DentWay» центрируется по всей
 * своей коробке, а в ней снизу лежит выносной элемент буквы «y»; зрительный
 * центр слова из-за этого выше геометрического. Плюс у самого знака орбита
 * уходит вниз, а самолёт вверх — масса тоже смещена. Без поправки знак читался
 * как просевший относительно слова.
 */
.dw-nav__mark {
	display: block;
	width: auto;
	height: clamp(38px, 3.4vw, 52px);
	transform: translateY(-8%);
}

/*
 * Меню прижато к правому краю, вплотную за логотипом, а не растянуто по центру.
 * При восьми пунктах центрирование держало строку; на четырёх пунктах середина
 * шапки превращалась в остров текста между логотипом и кнопкой.
 */
.dw-nav .wp-block-navigation {
	flex: 0 1 auto;
	justify-content: flex-start;
}

/*
 * Цель 48px, но высота ссылки прежняя. Норма проекта — тач-цель 48×48, а
 * ссылка давала 40. Поднять её паддингом нельзя: шапка выросла бы на 26px,
 * а первый экран главной утверждён и не меняется. Поэтому визуальный размер
 * остаётся, а зону нажатия расширяет ::after — она ничего не рисует и не
 * влияет на раскладку (см. ниже).
 */
.dw-nav .wp-block-navigation .wp-block-navigation-item__content {
	position: relative;
	display: inline-block;
	padding-block: 0.5rem;
	color: var(--wp--preset--color--navy-900);
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--nav);
	font-weight: 500;
	text-decoration: none;
	border-block-end: 2px solid transparent;
	white-space: nowrap;
}

/* Зона нажатия до 48px по вертикали, без влияния на высоту шапки. */
.dw-nav .wp-block-navigation .wp-block-navigation-item__content::after {
	content: "";
	position: absolute;
	inset-block: -4px;
	inset-inline: -0.25rem;
}

.dw-nav .wp-block-navigation .wp-block-navigation-item__content:hover,
.dw-nav .wp-block-navigation .wp-block-navigation-item__content:focus,
.dw-nav .wp-block-navigation .current-menu-item .wp-block-navigation-item__content {
	color: var(--wp--preset--color--teal-800);
	border-block-end-color: var(--wp--preset--color--teal-700);
}

/*
 * Гамбургер: центрирование по обеим осям.
 *
 * Ядро отдаёт кнопку как flex-контейнер с align-items: normal, а иконку внутри
 * — блоком фиксированных 24px. При коробке в 48px значок прижимался к верху и
 * стоял ровно на 12px выше центра логотипа.
 *
 * display здесь не задаётся сознательно. Ядро прячет кнопку выше 600px своим
 * `display: none` в медиазапросе, а специфичность этого правила такая же — и
 * тема грузится позже. Один лишний `display: flex` возвращал гамбургер на
 * десктоп: он вставал над пунктами меню и разгонял шапку до 108px.
 */
.dw-nav .wp-block-navigation__responsive-container-open {
	align-items: center;
	justify-content: center;
	min-width: var(--wp--custom--tap--min);
	min-height: var(--wp--custom--tap--min);
	margin-inline-start: auto;
	color: var(--wp--preset--color--navy-900);
}

/*
 * Крестик встаёт ровно в координаты гамбургера.
 *
 * Ядро прижимает его к верхнему углу оверлея своими отступами, и при закрытии
 * палец приходилось переносить. Здесь повторены те же величины, что и у шапки:
 * 14px сверху — её вертикальное поле, боковое поле — тот же clamp. Поправка на
 * админ-панель нужна потому, что оверлей позиционируется от вьюпорта, а шапка
 * сдвинута вниз на её высоту.
 */
.dw-nav .wp-block-navigation__responsive-container-close {
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: var(--wp--custom--tap--min);
	min-height: var(--wp--custom--tap--min);
	color: var(--wp--preset--color--white);
}

/* Отсчёт ведётся от самого оверлея, а не от внутреннего диалога: у диалога
   свой position: relative и верхний отступ, из-за них крестик уезжал на 138px
   ниже и за левый край экрана. */
.dw-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-dialog {
	position: static;
}

.dw-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
	inset-block-start: calc(14px + var(--wp-admin--admin-bar--height, 0px));
	inset-inline-end: clamp(1.25rem, 4vw, 3rem);
	inset-inline-start: auto;
	width: 48px;
	height: 48px;
	padding: 0;
}

/*
 * Меню выезжает из левого края — с той стороны, где стоит кнопка.
 *
 * Своими ключевыми кадрами вместо ядерных: ядро проявляет оверлей
 * (overlay-menu__fade-in-animation, сдвиг на 0.5em вверх), и пока эта анимация
 * висит с fill-mode: forwards, ни transition, ни статические opacity/transform
 * до элемента не доходят — их перебивает анимация. Поэтому выезд сделан тем же
 * механизмом, что и у ядра, только своим.
 *
 * Боковые поля здесь — тот же clamp, что у шапки: пункты меню встают по одной
 * вертикали с логотипом, а не по своей.
 */
.dw-nav .wp-block-navigation__responsive-container.is-menu-open {
	padding: calc(76px + 1rem) clamp(1.25rem, 4vw, 3rem) 3rem;
	animation: dw-menu-slide-in 280ms var(--wp--custom--ease--out) both;
}

@keyframes dw-menu-slide-in {
	from {
		opacity: 0;
		transform: translateX(-100%);
	}

	to {
		opacity: 1;
		transform: none;
	}
}

/* Тем, кто просил меньше движения, оверлей просто появляется. */
@media (prefers-reduced-motion: reduce) {
	.dw-nav .wp-block-navigation__responsive-container.is-menu-open {
		animation-name: none;
	}
}

.dw-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.dw-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	width: 100%;
	gap: 0;
	align-items: stretch;
}

.dw-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	display: block;
	width: 100%;
	padding-block: 1rem;
	font-size: 1.375rem;
	font-weight: 600;
	color: var(--wp--preset--color--white);
	text-align: start;
	border-block-end: 1px solid rgba(117, 212, 214, 0.2);
}

/*
 * Кнопка ниже, чем была: 47px рядом с 40-пиксельной строкой меню читались как
 * элемент из другого набора. Видимая высота 40, а зону нажатия до 48 расширяет
 * ::after — тот же приём, что и у ссылок меню, и по той же причине: поднять
 * высоту паддингом значило бы вырастить шапку, а первый экран утверждён.
 */
.dw-nav__cta {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: none;
	box-sizing: border-box;
	min-height: 44px;
	padding: 0.5rem 1.375rem;
	background: var(--wp--preset--color--teal-700);
	border-radius: 10px;
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--nav);
	font-weight: 600;
	text-decoration: none;
	white-space: nowrap;
	transition: background-color var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

/*
 * Кнопку к левому краю уводит auto-отступ, но ядро WordPress ставит всем
 * детям flex-контейнера `margin: 0` селектором `.is-layout-flex > :is(*, div)`,
 * и он специфичнее одного класса. Отсюда селектор из двух классов.
 */
.dw-nav__inner .dw-nav__actions {
	margin-inline-start: auto;
}

/* Ватсап и кнопка стоят вплотную парой, ватсап справа от кнопки. */
.dw-nav__actions {
	display: inline-flex;
	align-items: center;
	gap: 1.25rem;
	flex: none;
}

/*
 * Чистый знак без подложки: рядом с залитой кнопкой вторая такая же читалась
 * как два равных действия, хотя ватсап здесь — второй путь, а не первый.
 *
 * Коробка всё равно 44×44 — это зона нажатия, а не размер рисунка: у ссылки
 * нет текста, и промахнуться по одному глифу слишком легко.
 *
 * Цвет — фирменный #25D366, по решению заказчика. На белом он даёт 2.2:1,
 * то есть формально ниже 3:1, которые WCAG 1.4.11 просит для элемента
 * управления без подписи. Частично это компенсирует размер знака — 38px.
 */
.dw-nav__wa {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: none;
	width: 44px;
	height: 44px;
	padding: 0;
	background: none;
	border-radius: 10px;
	color: #25d366;
	text-decoration: none;
	transition: color var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

/* Знак 38px в коробке 44px: сам рисунок чуть меньше кнопки, но зона
   нажатия остаётся полной — у ссылки нет текста, промахнуться легко. */
.dw-nav__wa svg {
	width: 38px;
	height: 38px;
}

/*
 * Кнопка звонка. Коробка 44×44 — зона нажатия; сам знак 26px, чтобы контурная
 * иконка не спорила по весу с залитым знаком ватсапа рядом.
 */
.dw-nav__tel {
	box-sizing: border-box;
	align-items: center;
	justify-content: center;
	flex: none;
	width: 44px;
	height: 44px;
	padding: 0;
	background: none;
	border-radius: 10px;
	color: var(--wp--preset--color--navy-900);
	text-decoration: none;
}

.dw-nav__tel svg {
	width: 26px;
	height: 26px;
}

.dw-nav__tel:hover,
.dw-nav__tel:focus {
	color: var(--wp--preset--color--teal-700);
}

.dw-nav__tel:focus-visible {
	outline: 2px solid var(--wp--preset--color--teal-700);
	outline-offset: 2px;
}

.dw-nav__wa:hover,
.dw-nav__wa:focus {
	color: #1da851;
}

.dw-nav__wa:focus-visible {
	outline: 2px solid var(--wp--preset--color--teal-700);
	outline-offset: 2px;
}

.dw-nav__cta::after {
	content: "";
	position: absolute;
	inset-inline: 0;
	inset-block: -4px;
}

.dw-nav__cta:hover,
.dw-nav__cta:focus {
	background: var(--wp--preset--color--navy-700);
	color: var(--wp--preset--color--white);
}

/* Звонок — только на телефоне. */
.dw-nav__tel {
	display: none;
}

@media (max-width: 1279px) {
	/*
	 * Ниже 1280 шапка перестраивается: логотип у правого края, у левого —
	 * гамбургер, а между ними и логотипом группа иконок. Порядок выставлен
	 * явно, потому что в разметке гамбургер идёт вторым, а нужен крайним:
	 * auto-отступ на группе иконок отдаёт всё свободное место сразу после
	 * логотипа, и обе кнопки уходят влево вместе.
	 */
	.dw-nav__logo {
		order: 1;
	}

	/*
	 * Зазор между звонком и ватсапом убран в ноль: у каждой иконки своя
	 * коробка 44px под палец, и её пустых полей уже достаточно, чтобы значки
	 * не слипались. Расстояние до гамбургера задаёт gap самой шапки и не
	 * меняется.
	 */
	.dw-nav__inner .dw-nav__actions {
		order: 2;
		margin-inline-start: auto;
		gap: 0;
	}

	.dw-nav__wa,
	.dw-nav__tel {
		width: 38px;
	}

	.dw-nav .wp-block-navigation {
		order: 3;
		margin-inline-start: 0;
	}

	/* Кнопка заявки на узком экране не помещается рядом с иконками,
	   и внизу для неё уже есть липкая панель. */
	.dw-nav__cta {
		display: none;
	}

	.dw-nav__wa svg {
		width: 30px;
		height: 30px;
	}
}

/*
 * Телефонная версия — от 767 и ниже.
 *
 * Шапка была 97px из-за min-height, снятого с макета десктопа: при логотипе
 * в 38px это давало почти по 30px воздуха сверху и снизу. Теперь высоту задают
 * сам логотип и 14px полей.
 */
@media (max-width: 767px) {
	.dw-nav__inner {
		min-height: 0;
		padding-block: 14px;
	}

	.dw-nav__tel {
		display: inline-flex;
	}
}

/*
 * Экраны уже iPhone 12 — от 320 до 389px.
 *
 * Строка шапки не помещалась: логотип, гамбургер и две иконки требовали 384px,
 * и на 360px гамбургер выезжал за левый край. Уменьшены логотип и внутренние
 * зазоры; боковые поля остались прежними, иначе шапка перестала бы стоять по
 * одной вертикали с остальным содержимым. Ниже 320px не считаем: это нижняя
 * граница WCAG 1.4.10, на которую опирается декларация доступности.
 *
 * На 390px и шире ничего не меняется, так что видимого скачка ни на одном
 * устройстве нет.
 */
@media (max-width: 389px) {
	.dw-nav__inner,
	.dw-nav__logo {
		gap: 0.5rem;
	}

	.dw-nav__wordmark {
		height: min(24px, 6vw);
	}

	.dw-nav__mark {
		height: min(35px, 8.7vw);
	}
}

/* --------------------------------------------- Первый экран (светлый) */

.dw-hhero {
	position: relative;
	padding-block: clamp(2.5rem, 5vw, 4.5rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--gray-100);
	isolation: isolate;
	overflow: hidden;
}

.dw-hhero__media {
	position: absolute;
	inset: 0;
	z-index: -2;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 40%;
}

/*
 * Скрим первого экрана: справа, под тёмным текстом, плотный; влево раскрывается
 * фотография. Тбилиси видно примерно вдвое лучше прежнего, но открыта не вся
 * ширина, а только та часть, где нет текста.
 *
 * Границы взяты по разметке, а не на глаз: колонка текста кончается на 53%
 * ширины, фотография пары начинается на 51%. Поэтому до 53% плотность держится
 * ~0.86, спад укладывается в 53–64% и приходится за фотографию пары, а дальше
 * до левого края остаётся почти чистый снимок (0.30 → 0.06).
 *
 * Плотность под текстом при этом выше, чем была изначально. Прежние значения
 * давали подзаголовку #4A5B6E контраст 3.9:1 при требуемых 4.5 — на светлых
 * участках снимка он читался с трудом. Сейчас 5.2:1, заголовок — 12:1.
 */
.dw-hhero::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: linear-gradient(
		to left,
		rgba(255, 255, 255, 0.97) 0%,
		rgba(255, 255, 255, 0.93) 40%,
		rgba(255, 255, 255, 0.86) 53%,
		rgba(255, 255, 255, 0.3) 64%,
		rgba(255, 255, 255, 0.06) 100%
	);
}

/* Колонка текста шире колонки фотографии: заголовок макета набран в две
   строки, и при равных колонках «שיקום פה ברמה גבוהה» ломается на три. */
.dw-hhero__inner {
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
	gap: clamp(1rem, 2vw, 2rem);
	align-items: center;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	min-height: clamp(420px, 46vw, 620px);
}

.dw-hhero__content {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 1.5rem;
}

.dw-hhero__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2rem, 4.2vw, 4.75rem);
	font-weight: 700;
	line-height: 1.12;
	letter-spacing: -0.5px;
	color: var(--wp--preset--color--navy-900);
}

.dw-hhero__lead {
	margin: 0;
	max-width: 35rem;
	font-size: var(--wp--preset--font-size--lead);
	line-height: 1.55;
	color: var(--wp--preset--color--gray-700);
}

.dw-hhero__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

/* Вырезанная пара стоит на нижней границе экрана, как в макете. */
.dw-hhero__couple {
	display: block;
	align-self: end;
	margin-block-end: clamp(-2.5rem, -3vw, -1rem);
	filter: drop-shadow(0 8px 8px rgba(8, 31, 51, 0.18));
}

.dw-hhero__couple img {
	display: block;
	width: 100%;
	height: auto;
}

/*
 * Desktop composition follows Figma node 112:1719 on its 1920 × 760 canvas.
 * The source cutout is wider than the visible 793 × 680 frame in Figma, so it
 * needs the same internal crop instead of being scaled to the grid column.
 * Values below scale proportionally down to 1200px and stop at the Figma size.
 */
@media (min-width: 1200px) {
	.dw-hhero {
		box-sizing: border-box;
		height: min(39.583333vw, 760px);
		padding: 0;
	}

	.dw-hhero__inner {
		position: relative;
		display: block;
		width: 100%;
		max-width: none;
		height: 100%;
		min-height: 0;
		margin: 0;
	}

	.dw-hhero__content {
		position: absolute;
		z-index: 2;
		inset-block-start: min(10.729167vw, 206px);
		inset-inline-start: min(11.979167vw, 230px);
		width: min(40.3125vw, 774px);
	}

	.dw-hhero__title {
		width: 100%;
		white-space: nowrap;
	}

	.dw-hhero__lead {
		width: min(40.3125vw, 560px);
	}

	.dw-hhero__actions .dw-cta-btn {
		padding: 20px 34px;
		white-space: nowrap;
	}

	.dw-hhero__actions .dw-cta-btn--primary {
		min-width: 195px;
	}

	.dw-hhero__actions .dw-cta-btn--secondary {
		min-width: 167px;
	}

	.dw-hhero__couple {
		position: absolute;
		z-index: 1;
		inset-block-start: min(4.322917vw, 83px);
		inset-inline-end: min(7.34375vw, 141px);
		width: min(41.302083vw, 793px);
		height: min(35.416667vw, 680px);
		margin: 0;
		overflow: hidden;
	}

	.dw-hhero__couple img {
		position: absolute;
		inset-block-start: -3.43%;
		inset-inline-end: -10.12%;
		width: 134.14%;
		height: 104.33%;
		max-width: none;
	}
}

@media (max-width: 1023px) {
	.dw-hhero__inner {
		grid-template-columns: 1fr;
		min-height: 0;
	}

	/* Вертикальный скрим по той же логике, что и горизонтальный на десктопе:
	   до 43% высоты лежит только фотография пары, и молочная плёнка там ничего
	   не защищала — гасила Тбилиси и всё. Плотность набирается к 48%, где
	   начинается заголовок. */
	.dw-hhero::after {
		background: linear-gradient(
			to bottom,
			rgba(255, 255, 255, 0.22) 0%,
			rgba(255, 255, 255, 0.34) 28%,
			rgba(255, 255, 255, 0.95) 44%,
			rgba(255, 255, 255, 0.99) 60%
		);
	}

	.dw-hhero__couple {
		order: -1;
		max-width: 26rem;
		margin-inline: auto;
		margin-block-end: 0;
	}

	.dw-hhero__actions .dw-cta-btn {
		flex: 1 1 100%;
	}
}

/* ------------------------------------------------------- Мост «не одни» */

.dw-bridge {
	padding-block: clamp(2rem, 3.5vw, 2.625rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--teal-100);
}

.dw-bridge__inner {
	display: grid;
	grid-template-columns: minmax(0, 560px) minmax(0, 700px);
	gap: clamp(1.5rem, 4vw, 4rem);
	align-items: center;
	justify-content: space-between;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-bridge__title {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.375rem, 2vw, 1.75rem);
	font-weight: 700;
	line-height: 1.25;
	color: var(--wp--preset--color--navy-900);
}

.dw-bridge__text {
	margin: 0;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.6;
	color: var(--wp--preset--color--gray-700);
}

/* Линия сопровождения: одна непрерывная черта под тремя точками. */
.dw-journey {
	position: relative;
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.dw-journey::before {
	content: "";
	position: absolute;
	inset-block-start: 8px;
	inset-inline: 16%;
	height: 3px;
	background: var(--wp--preset--color--teal-700);
	border-radius: 2px;
}

.dw-journey__step {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.25rem;
	text-align: center;
	padding-block-start: 30px;
}

.dw-journey__step::before {
	content: "";
	position: absolute;
	inset-block-start: 1px;
	width: 18px;
	height: 18px;
	border-radius: 999px;
	background: var(--wp--preset--color--teal-700);
	box-shadow: 0 0 0 4px var(--wp--preset--color--teal-100);
}

.dw-journey__label {
	font-size: var(--wp--preset--font-size--caption);
	color: var(--wp--preset--color--teal-800);
}

.dw-journey__value {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--nav);
	font-weight: 600;
	color: var(--wp--preset--color--navy-900);
}

/* Desktop composition: Figma node 112:1732, 1920 × 180. */
@media (min-width: 1440px) {
	.dw-bridge {
		box-sizing: border-box;
		height: 180px;
		padding-block: 36px;
	}

	.dw-bridge__inner {
		height: 108px;
	}

	/* 560 из макета — это пол, а не потолок: строка под заголовком с тех пор
	   подросла до 573 и вылезала за колонку. Ширина по содержимому оставляет
	   строку одной строкой и держит правый край на месте. */
	.dw-bridge__copy {
		display: flex;
		flex-direction: column;
		gap: 6px;
		min-width: 560px;
		width: max-content;
		height: 68px;
		overflow: visible;
	}

	.dw-bridge__title {
		flex: 0 0 42px;
		margin: 0;
		font-weight: 600;
		letter-spacing: -0.2px;
	}

	.dw-bridge__text {
		line-height: 27px;
		white-space: nowrap;
	}

	.dw-journey {
		display: block;
		width: 700px;
		height: 96px;
		overflow: hidden;
	}

	.dw-journey::before {
		inset: 23px auto auto 100px;
		width: 500px;
		height: 3px;
	}

	.dw-journey__step {
		position: absolute;
		inset-block-start: 43px;
		width: 200px;
		height: 48px;
		padding: 0;
		gap: 0;
	}

	.dw-journey__step:nth-child(1) {
		left: 500px;
	}

	.dw-journey__step:nth-child(2) {
		left: 250px;
	}

	.dw-journey__step:nth-child(3) {
		left: 0;
	}

	.dw-journey__step::before {
		inset: -28px auto auto calc(50% - 9px);
		margin: 0;
		box-shadow: none;
	}

	.dw-journey__label,
	.dw-journey__value {
		font-family: var(--wp--preset--font-family--body);
		line-height: 22px;
		color: var(--wp--preset--color--navy-900);
	}

	.dw-journey__label {
		font-size: 16px;
		font-weight: 300;
	}

	.dw-journey__value {
		font-size: 20px;
		font-weight: 600;
	}
}

@media (max-width: 1023px) {
	.dw-bridge__inner {
		grid-template-columns: 1fr;
	}

	.dw-journey {
		grid-template-columns: 1fr;
		gap: 1.25rem;
	}

	.dw-journey::before {
		inset-block: 10px auto;
		inset-inline-start: 9px;
		inset-inline-end: auto;
		width: 3px;
		height: calc(100% - 20px);
	}

	.dw-journey__step {
		flex-direction: row;
		align-items: baseline;
		gap: 0.5rem;
		padding-block-start: 0;
		padding-inline-start: 36px;
		text-align: start;
	}

	.dw-journey__step::before {
		inset-block-start: auto;
		inset-inline-start: 0;
		margin-block-start: 4px;
	}
}

/* --------------------------------- Что такое полное восстановление */

.dw-what {
	padding-block: clamp(3rem, 7vw, 6.875rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--white);
}

/* RTL: первая колонка уходит вправо. По макету справа текст, слева коллаж —
   значит текст идёт первым в разметке, что заодно верно семантически. */
.dw-what__inner {
	display: grid;
	grid-template-columns: minmax(0, 764px) minmax(0, 620px);
	gap: clamp(2rem, 5vw, 6rem);
	align-items: center;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-what__media {
	position: relative;
	margin: 0;
	padding-block-end: 6%;
}

.dw-what__photo {
	display: block;
	width: 93.548%;
	margin-right: auto;
	border-radius: 14px;
	overflow: hidden;
}

.dw-what__photo img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 1;
	object-fit: cover;
}

.dw-what__inset {
	position: absolute;
	inset-inline-end: auto;
	left: 56.452%;
	inset-block-end: 0;
	display: block;
	box-sizing: border-box;
	width: 43.548%;
	border: 8px solid var(--wp--preset--color--white);
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 8px 8px -4px rgba(11, 29, 58, 0.16);
}

.dw-what__inset img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 27 / 23;
	object-fit: cover;
}

.dw-what__title {
	margin: 0 0 1.25rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2rem, 4.6vw, 4.375rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--navy-900);
}

.dw-what__lead {
	margin: 0 0 1.75rem;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.65;
	color: var(--wp--preset--color--gray-700);
}

/* Мятная плашка с главной мыслью секции. */
.dw-what__idea {
	display: flex;
	align-items: center;
	gap: 1.5rem;
	padding: 1.5rem 1.75rem;
	background: var(--wp--preset--color--teal-100);
	border-radius: 14px;
}

.dw-what__idea-mark {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: none;
	width: 64px;
	height: 64px;
	border-radius: 999px;
	background: var(--wp--preset--color--teal-700);
	color: var(--wp--preset--color--white);
}

.dw-what__idea-mark svg {
	width: 30px;
	height: 30px;
}

.dw-what__idea-copy {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
}

.dw-what__idea-small {
	font-size: var(--wp--preset--font-size--body);
	color: var(--wp--preset--color--gray-700);
}

.dw-what__idea-big {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.25rem, 1.8vw, 1.625rem);
	font-weight: 700;
	line-height: 1.25;
	color: var(--wp--preset--color--navy-900);
}

/*
 * Заголовок формулы крупнее её слагаемых.
 *
 * Он был набран тем же кеглем и весом, что и «הכנה ובסיס» с «שיקום קבוע», и
 * читался как ещё одна строка перечисления, а не как вопрос, на который они
 * отвечают. Разница в 4–6px и в весе ставит их на разные уровни.
 */
.dw-what__formula-title {
	margin: 2rem 0 1.25rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.625rem, 2vw, 1.75rem);
	font-weight: 700;
	line-height: 1.3;
	color: var(--wp--preset--color--navy-900);
}

.dw-formula {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-start;
	gap: 0.75rem 1.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.dw-formula__item {
	display: flex;
	flex-direction: column;
	gap: 0.125rem;
}

.dw-formula__name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--subtitle);
	font-weight: 600;
	color: var(--wp--preset--color--navy-900);
}

.dw-formula__item--result .dw-formula__name {
	color: var(--wp--preset--color--teal-800);
}

.dw-formula__note {
	font-size: var(--wp--preset--font-size--caption);
	color: var(--wp--preset--color--gray-700);
}

.dw-formula__op {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.75rem;
	font-weight: 600;
	color: var(--wp--preset--color--gray-500);
}

/* Figma 112:1745 — exact desktop composition for the “What is DentWay?” block. */
/* Порог 1800: композиция закреплена на 1600/1772 px и в окно 1600 не влезает. */
@media (min-width: 1800px) {
	.dw-what {
		box-sizing: border-box;
		height: 976px;
		padding-block: 110px;
	}

	.dw-what__inner {
		height: 756px;
	}

	.dw-what__media {
		width: 756px;
		height: 756px;
		padding-block-end: 0;
	}

	.dw-what__photo {
		position: absolute;
		inset: 0 auto auto 0;
		width: 708px;
		height: 708px;
	}

	.dw-what__photo img,
	.dw-what__inset img {
		width: 100%;
		height: 100%;
		aspect-ratio: auto;
	}

	.dw-what__inset {
		box-sizing: border-box;
		inset: 476px auto auto 428px;
		width: 328px;
		height: 280px;
	}

	/* 468 = 84 + 64 + 128 + 37 + 59 и четыре зазора по 24. Высота колонки
	   сложена из высот детей, поэтому её приходится править вместе с ними:
	   заголовок формулы стал на 8px выше. */
	.dw-what__copy {
		display: flex;
		flex-direction: column;
		gap: 24px;
		width: 764px;
		height: 468px;
	}

	.dw-what__title,
	.dw-what__lead,
	.dw-what__idea,
	.dw-what__formula-title,
	.dw-formula {
		margin: 0;
	}

	.dw-what__title {
		height: 84px;
		font-size: 70px;
		line-height: 1.2;
		letter-spacing: -0.3px;
	}

	.dw-what__lead {
		height: 64px;
		font-size: 20px;
		line-height: 1.6;
	}

	.dw-what__idea {
		box-sizing: border-box;
		flex: 0 0 128px;
		flex-direction: row-reverse;
		gap: 24px;
		width: 764px;
		height: 128px;
		padding: 24px 28px;
	}

	.dw-what__idea-copy {
		flex: 0 0 620px;
		justify-content: center;
		gap: 0;
		width: 620px;
		height: 80px;
		direction: rtl;
		text-align: right;
	}

	.dw-what__idea-small {
		font-size: 18px;
		line-height: 1.65;
	}

	.dw-what__idea-big {
		font-size: 28px;
		font-weight: 600;
		line-height: 1.25;
	}

	.dw-what__formula-title {
		height: 37px;
		font-size: 28px;
		line-height: 1.3;
	}

	.dw-formula {
		flex-wrap: nowrap;
		justify-content: space-between;
		gap: 0;
		width: 637px;
		height: 59px;
		margin-left: 127px;
	}

	.dw-formula__item {
		flex: 0 0 auto;
		gap: 0;
		height: 59px;
	}

	.dw-formula__item:nth-child(1) { width: 144px; }
	.dw-formula__item:nth-child(3) { width: 119px; }
	.dw-formula__item:nth-child(5) { width: 139px; }

	.dw-formula__name {
		font-size: 22px;
		font-weight: 600;
		line-height: 1.3;
	}

	.dw-formula__note {
		font-size: 18px;
		line-height: 1.65;
	}

	.dw-formula__op {
		width: 16px;
		font-size: 28px;
		line-height: 1.25;
		color: var(--wp--preset--color--teal-700);
		text-align: center;
	}
}

@media (max-width: 1023px) {
	.dw-what__inner {
		grid-template-columns: 1fr;
	}

	.dw-what__idea {
		flex-direction: column;
		align-items: flex-start;
		text-align: start;
	}
}

/* ------------------------------------------------------------ Услуги */

.dw-svc2 {
	padding-block: clamp(3rem, 7vw, 6.875rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--gray-50);
}

.dw-svc2__inner {
	display: grid;
	gap: clamp(2rem, 3.5vw, 3.5rem);
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-svc2__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2rem, 4.6vw, 4.375rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--navy-900);
	text-align: center;
}

/* Витрина главной услуги: фото + боковой скрим со стороны текста. */
.dw-svc2__feature {
	position: relative;
	margin: 0;
	border-radius: 14px;
	overflow: hidden;
	isolation: isolate;
}

.dw-svc2__feature-media {
	display: block;
}

.dw-svc2__feature-media img {
	display: block;
	width: 100%;
	height: clamp(320px, 30vw, 460px);
	object-fit: cover;
	object-position: 50% 42%;
}

.dw-svc2__feature::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to left, rgba(11, 29, 58, 0.93) 0%, rgba(11, 29, 58, 0.35) 62%, rgba(11, 29, 58, 0.05) 100%);
}

.dw-svc2__feature-copy {
	position: absolute;
	inset-block: 0;
	inset-inline-start: 0;
	box-sizing: border-box;
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: center;
	gap: 1.375rem;
	width: min(45rem, 55%);
	padding: clamp(1.5rem, 4vw, 3.5rem);
	color: var(--wp--preset--color--white);
	z-index: 1;
}

.dw-svc2__feature-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.75rem, 3.4vw, 3.25rem);
	font-weight: 700;
	line-height: 1.15;
	color: var(--wp--preset--color--white);
}

.dw-svc2__feature-text {
	margin: 0;
	max-width: min(45rem, 100%);
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.65;
	color: var(--wp--preset--color--white);
}

/*
 * Кнопка витрины — та же форма, что у остальных кнопок сайта.
 *
 * Была таблеткой (radius 999px) по ширине текста, тогда как .dw-cta-btn,
 * .dw-form__submit и кнопка в блоке цены — прямоугольники со скруглением 12px
 * во всю ширину своего блока. Из-за этого одна и та же по смыслу кнопка
 * выглядела как элемент из другого набора. Ширину даёт align-self: stretch:
 * колонка выключена по flex-start, и одного width: 100% там не хватает.
 */
.dw-svc2__feature-cta {
	box-sizing: border-box;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	align-self: stretch;
	width: 100%;
	min-height: 56px;
	padding: 1rem 2rem;
	background: var(--wp--preset--color--white);
	border-radius: 12px;
	color: var(--wp--preset--color--navy-700);
	text-align: center;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--button);
	font-weight: 600;
	line-height: normal;
	text-decoration: none;
	transition: background-color var(--wp--custom--duration--state) var(--wp--custom--ease--out),
		color var(--wp--custom--duration--state) var(--wp--custom--ease--out);
}

.dw-svc2__feature-cta:hover,
.dw-svc2__feature-cta:focus {
	background: var(--wp--preset--color--teal-700);
	color: var(--wp--preset--color--white);
}

/*
 * На экранах уже 356px карточке остаётся меньше места, чем требует подпись
 * с полями по 32px, и кнопка снова ложилась в две строки. Кегль и поля
 * поджаты только здесь; высота нажатия остаётся 52px.
 */
@media (max-width: 359px) {
	.dw-svc2__feature-cta {
		padding-inline: 1.25rem;
		font-size: 1rem;
	}
}

/*
 * Ряд «жалоба → решение → чипсы». По макету фото первого и третьего ряда
 * слева, второго — справа. В RTL первая колонка грида уходит вправо,
 * поэтому по умолчанию фото уводится вторым, а --flip возвращает его вперёд.
 */
.dw-srow {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 620px);
	gap: clamp(1.5rem, 3.4vw, 4rem);
	align-items: center;
}

.dw-srow__photo {
	order: 2;
}

.dw-srow--flip {
	grid-template-columns: minmax(0, 620px) minmax(0, 1fr);
}

.dw-srow--flip .dw-srow__photo {
	order: 0;
}

.dw-srow__photo {
	display: block;
	border-radius: 14px;
	overflow: hidden;
}

.dw-srow__photo img {
	display: block;
	width: 100%;
	height: clamp(240px, 24vw, 380px);
	object-fit: cover;
}

.dw-srow__copy {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: 1.125rem;
}

.dw-srow__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.375rem, 2.4vw, 2.25rem);
	font-weight: 700;
	line-height: normal;
	color: var(--wp--preset--color--navy-900);
}

.dw-srow__text {
	margin: 0;
	font-size: clamp(1.0625rem, 1.3vw, 1.1875rem);
	line-height: 1.65;
	color: var(--wp--preset--color--gray-700);
}

.dw-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.625rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.dw-chip2 {
	padding: 0.625rem 1.125rem;
	background: var(--wp--preset--color--teal-100);
	border-radius: 999px;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--nav);
	font-weight: 600;
	line-height: 25px;
	color: var(--wp--preset--color--teal-800);
}

.dw-svc2__note {
	display: none;
}

/* Figma 112:1768 — exact wide-screen composition for the services section. */
/* Порог 1800: композиция закреплена на 1600/1772 px и в окно 1600 не влезает. */
@media (min-width: 1800px) {
	.dw-svc2 {
		box-sizing: border-box;
		padding-block: 110px;
	}

	.dw-svc2__inner {
		gap: 56px;
	}

	.dw-svc2__title {
		height: 84px;
		font-size: 70px;
		line-height: 1.2;
	}

	.dw-svc2__feature,
	.dw-svc2__feature-media img {
		height: 460px;
	}

	.dw-svc2__feature-copy {
		inset: 92px auto auto 696px;
		justify-content: flex-start;
		gap: 22px;
		width: 720px;
		height: auto;
		padding: 0;
	}

	.dw-svc2__feature-title,
	.dw-svc2__feature-text {
		width: 100%;
		max-width: none;
		text-align: right;
	}

	.dw-svc2__feature-title {
		font-size: 52px;
		line-height: 76px;
	}

	.dw-svc2__feature-text {
		font-size: 18px;
		line-height: 30px;
	}

	/* min-, а не фиксированные ширина и высота. Размер 191×58 снят с макета под
	   подпись «קבלו הצעת מחיר»; на странице услуг у той же кнопки подпись длиннее,
	   и при жёсткой ширине текст вылезал за пределы скругления. */
	.dw-svc2__feature-cta {
		justify-content: center;
		min-width: 191px;
		min-height: 58px;
		padding: 16px 32px;
		font-size: 18px;
		line-height: 26px;
		letter-spacing: -0.5px;
	}

	.dw-srow {
		grid-template-columns: minmax(0, 796px) 620px;
		gap: 64px;
		height: 380px;
	}

	.dw-srow--flip {
		grid-template-columns: 620px minmax(0, 796px);
	}

	.dw-srow__photo,
	.dw-srow__photo img {
		height: 380px;
	}

	.dw-srow__copy {
		gap: 18px;
	}

	.dw-srow__title {
		width: 100%;
		font-size: 36px;
		line-height: 53px;
		text-align: right;
	}

	.dw-srow__text {
		width: 100%;
		font-size: 19px;
		line-height: 31px;
		text-align: right;
		white-space: nowrap;
	}

	.dw-chips {
		justify-content: flex-start;
		width: 100%;
	}

	.dw-chip2 {
		padding: 10px 18px;
		font-size: 17px;
	}
}

@media (max-width: 1023px) {
	.dw-srow,
	.dw-srow--flip {
		grid-template-columns: 1fr;
	}

	.dw-srow__photo,
	.dw-srow--flip .dw-srow__photo {
		order: 0;
	}

	.dw-svc2__feature-copy {
		position: static;
		width: 100%;
		background: var(--wp--preset--color--navy-900);
		margin-block-start: -1px;
	}

	.dw-svc2__feature::after {
		content: none;
	}
}

/* -------------------------------------------------- Почему Грузия */

.dw-geo {
	position: relative;
	padding-block: clamp(3rem, 7vw, 6.875rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--navy-900);
	isolation: isolate;
	overflow: hidden;
}

.dw-geo__media {
	position: absolute;
	inset: 0;
	z-index: -2;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.dw-geo::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: rgba(11, 29, 58, 0.95);
}

.dw-geo__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-geo__title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2rem, 4.6vw, 4.375rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--white);
}

.dw-geo__sub {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.125rem, 2vw, 1.75rem);
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: -0.2px;
	color: var(--wp--preset--color--teal-300);
}

/*
 * Маршрут. На широких экранах остановки раскладываются по дуге через
 * индивидуальные смещения, линия — пунктирный SVG из макета.
 * Ниже 1023px дуга уступает место обычному столбцу: на 375px она нечитаема.
 */
.dw-route {
	position: relative;
	margin-block-start: clamp(2rem, 4vw, 3rem);
}

.dw-route__path,
.dw-route__glow,
.dw-route__plane {
	display: none;
}

.dw-route__stops {
	display: grid;
	gap: 1.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.dw-route__stop,
.dw-route__end {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.25rem;
	text-align: center;
}

.dw-route__dot {
	width: 16px;
	height: 16px;
	margin-block-end: 0.375rem;
	border-radius: 999px;
	background: var(--wp--preset--color--teal-300);
	box-shadow: 0 0 0 6px rgba(117, 212, 214, 0.18);
}

.dw-route__value {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.75rem, 3.6vw, 3.625rem);
	font-weight: 700;
	line-height: 1.1;
	color: var(--wp--preset--color--teal-300);
}

.dw-route__note {
	font-size: clamp(1rem, 1.3vw, 1.1875rem);
	color: rgba(255, 255, 255, 0.88);
}

.dw-route__code {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--nav);
	font-weight: 600;
	color: rgba(255, 255, 255, 0.75);
}

.dw-route__end--tbs .dw-route__code {
	color: var(--wp--preset--color--teal-300);
}

/*
 * Дуга собирается только от 1024px. Позиции остановок — доли от ширины
 * маршрута 1480 по координатам макета (точки 1453 / 1211 / 882 / 579 / 279 / 89
 * при высотах 143 / 89 / 84 / 137 / 237 / 319). В RTL отсчёт идёт от правого
 * края, поэтому используется inset-inline-end.
 */
@media (min-width: 1024px) {
	.dw-route {
		min-height: 430px;
	}

	.dw-route__path {
		display: block;
		position: absolute;
		inset: 0;
		width: 100%;
		height: 400px;
		opacity: 0.9;
	}

	.dw-route__plane {
		display: block;
		position: absolute;
		inset-block-start: 44px;
		inset-inline-start: 44%;
		width: 62px;
		height: 52px;
		transform: rotate(-14deg);
		filter: drop-shadow(0 4px 8px rgba(0, 0, 0, 0.4));
	}

	.dw-route__stops {
		display: block;
	}

	/* inline-start в RTL — правый край: маршрут читается TLV → TBS справа налево,
	   как и весь текст. Проценты — доля от правого края по координатам макета. */
	.dw-route__stop,
	.dw-route__end {
		position: absolute;
		width: 260px;
		margin-inline-start: -130px;
	}

	.dw-route__value {
		font-size: clamp(1.75rem, 2.9vw, 3.625rem);
	}

	.dw-route__end--tlv { inset-inline-start: 1.8%; inset-block-start: 136px; width: 160px; margin-inline-start: -80px; }
	.dw-route__stop:nth-of-type(2) { inset-inline-start: 18.2%; inset-block-start: 81px; }
	.dw-route__stop:nth-of-type(3) { inset-inline-start: 40.4%; inset-block-start: 76px; }
	.dw-route__stop:nth-of-type(4) { inset-inline-start: 60.9%; inset-block-start: 129px; }
	.dw-route__stop:nth-of-type(5) { inset-inline-start: 81.1%; inset-block-start: 229px; }
	.dw-route__end--tbs { inset-inline-start: 94%; inset-block-start: 308px; width: 160px; margin-inline-start: -80px; }
}

/* Figma 112:1814 — exact wide-screen route and section geometry. */
/* Порог 1800: композиция закреплена на 1600/1772 px и в окно 1600 не влезает. */
@media (min-width: 1800px) {
	.dw-geo {
		box-sizing: border-box;
		height: 922px;
		padding-block: 190px 83px;
	}

	.dw-geo__inner {
		height: 649px;
		margin-block-start: 0;
	}

	.dw-geo__head {
		height: 131px;
	}

	.dw-geo__title {
		height: 84px;
		font-size: 70px;
		line-height: 1.2;
	}

	.dw-geo__sub {
		height: 35px;
		font-size: 28px;
		line-height: 1.25;
	}

	.dw-route {
		height: 470px;
		min-height: 470px;
		margin-block-start: 48px;
	}

	.dw-route__glow {
		display: block;
		position: absolute;
		z-index: 0;
		left: 498px;
		top: -95px;
		width: 542px;
		height: 400px;
	}

	.dw-route__path {
		display: block;
		position: absolute;
		z-index: 1;
		inset: auto;
		left: 77.25px;
		top: 65.25px;
		width: 1391.5px;
		height: 276.109px;
		opacity: 1;
	}

	.dw-route__plane {
		display: block;
		position: absolute;
		z-index: 3;
		inset: auto;
		left: 684.35px;
		top: 57.42px;
		width: 110.658px;
		height: 95.365px;
		transform: rotate(-14deg);
		filter: none;
	}

	.dw-route__stop,
	.dw-route__end {
		z-index: 2;
		inset-inline-start: auto;
		margin: 0;
	}

	.dw-route__stop {
		box-sizing: border-box;
		width: 300px;
		height: 116px;
		gap: 6px;
		white-space: nowrap;
	}

	.dw-route__stop .dw-route__dot,
	.dw-route__end .dw-route__dot {
		position: absolute;
		margin: 0;
		border-radius: 0;
		box-shadow: none;
		background-color: transparent;
		background-repeat: no-repeat;
		background-position: center;
		background-size: contain;
	}

	.dw-route__stop .dw-route__dot {
		width: 36px;
		height: 36px;
		background-image: url("../images/home/s7-dot-stop.svg");
	}

	.dw-route__value {
		font-size: 58px;
		line-height: 85px;
		white-space: nowrap;
	}

	.dw-route__note {
		font-size: 19px;
		line-height: 25px;
		white-space: nowrap;
	}

	.dw-route__stop:nth-of-type(2) {
		inset-inline-start: auto;
		inset-inline-end: 1061px;
		top: 126px;
	}

	.dw-route__stop:nth-of-type(2) .dw-route__dot {
		left: 140px;
		top: -47px;
	}

	.dw-route__stop:nth-of-type(3) {
		inset-inline-start: auto;
		inset-inline-end: 753px;
		top: 108px;
	}

	.dw-route__stop:nth-of-type(3) .dw-route__dot {
		left: 119px;
		top: -34px;
	}

	.dw-route__stop:nth-of-type(4) {
		inset-inline-start: auto;
		inset-inline-end: 453px;
		top: 163px;
	}

	.dw-route__stop:nth-of-type(4) .dw-route__dot {
		left: 116px;
		top: -36px;
	}

	.dw-route__stop:nth-of-type(5) {
		inset-inline-start: auto;
		inset-inline-end: 162px;
		top: 272px;
	}

	.dw-route__stop:nth-of-type(5) .dw-route__dot {
		left: 107px;
		top: -45px;
	}

	.dw-route__end {
		display: block;
		width: 160px;
		height: auto;
		text-align: center;
	}

	.dw-route__end--tlv {
		inset-inline-start: auto;
		inset-inline-end: 1339.5px;
		top: 172px;
	}

	.dw-route__end--tlv .dw-route__dot {
		left: 103.5px;
		top: -39px;
		width: 34px;
		height: 34px;
		background-image: url("../images/home/s7-dot-tlv.svg");
	}

	.dw-route__end--tbs {
		inset-inline-start: auto;
		inset-inline-end: -11px;
		top: 359px;
	}

	.dw-route__end--tbs .dw-route__dot {
		left: 82px;
		top: -58px;
		width: 58px;
		height: 58px;
		background-image: url("../images/home/s7-dot-tbs.svg");
	}

	.dw-route__end--tlv .dw-route__code {
		font-size: 16px;
		font-weight: 500;
	}

	.dw-route__end--tbs .dw-route__code {
		font-size: 19px;
		font-weight: 600;
	}
}

/* ---------------------------------------------------------- Процесс */

.dw-proc {
	padding-block: clamp(3rem, 7vw, 6.875rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--white);
}

.dw-proc__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-proc__title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2rem, 4.6vw, 4.375rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--navy-900);
}

.dw-proc__lead {
	margin: 0;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.65;
	color: var(--wp--preset--color--gray-700);
}

.dw-proc__panel {
	margin-block-start: clamp(2rem, 4vw, 3.5rem);
	padding: clamp(1.5rem, 4vw, 3.5rem) clamp(1.25rem, 3vw, 2.5rem);
	background: var(--wp--preset--color--gray-50);
	border-radius: 20px;
}

.dw-track {
	position: relative;
	display: grid;
	grid-template-columns: repeat(5, 1fr);
	gap: 1.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.dw-track::before {
	content: "";
	position: absolute;
	inset-block-start: 62px;
	inset-inline: 10%;
	height: 2px;
	background: var(--wp--preset--color--teal-400);
}

.dw-track__step {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.5rem;
	text-align: center;
}

.dw-track__num {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.75rem, 2.4vw, 2.25rem);
	font-weight: 700;
	line-height: 1;
	color: var(--wp--preset--color--teal-800);
}

.dw-track__dot {
	position: relative;
	width: 14px;
	height: 14px;
	border-radius: 999px;
	background: var(--wp--preset--color--teal-700);
	box-shadow: 0 0 0 5px var(--wp--preset--color--gray-50);
}

.dw-track__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--nav);
	font-weight: 600;
	line-height: 1.35;
	color: var(--wp--preset--color--navy-900);
}

.dw-track__text {
	margin: 0;
	font-size: var(--wp--preset--font-size--caption);
	line-height: 1.55;
	color: var(--wp--preset--color--gray-700);
}

/* Figma 112:1844 — exact wide-screen process timeline. */
/* Порог 1800: композиция закреплена на 1600/1772 px и в окно 1600 не влезает. */
@media (min-width: 1800px) {
	.dw-proc {
		box-sizing: border-box;
		height: 918px;
		padding-block: 130px;
	}

	.dw-proc__inner {
		height: 658px;
	}

	.dw-proc__head {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		gap: 16px;
		height: 134px;
	}

	.dw-proc__title,
	.dw-proc__lead {
		margin: 0;
	}

	.dw-proc__title {
		width: 1480px;
		height: 84px;
		font-size: 70px;
		line-height: 1.2;
	}

	.dw-proc__lead {
		width: 900px;
		height: 34px;
		font-size: 22px;
		line-height: 1.55;
	}

	.dw-proc__panel {
		box-sizing: border-box;
		display: flex;
		align-items: center;
		width: 1480px;
		height: 460px;
		margin-block-start: 64px;
		padding: 60px 40px;
		border-radius: 16px;
		overflow: hidden;
	}

	.dw-track {
		display: flex;
		justify-content: space-between;
		gap: 0;
		width: 1400px;
		height: 260px;
	}

	.dw-track::before {
		inset: 84px auto auto 232px;
		width: 1160px;
		height: 2px;
		border-radius: 1px;
		background: var(--wp--preset--color--teal-500);
	}

	.dw-track__step {
		box-sizing: border-box;
		align-items: flex-start;
		flex: 0 0 240px;
		gap: 20px;
		width: 240px;
		height: 260px;
		text-align: right;
	}

	.dw-track__num {
		display: flex;
		align-items: center;
		justify-content: flex-start;
		width: 240px;
		height: 56px;
		font-size: 48px;
		font-weight: 600;
		line-height: 1;
		text-align: right;
	}

	.dw-track__dot {
		z-index: 1;
		flex: 0 0 16px;
		width: 16px;
		height: 16px;
		border-radius: 0;
		background: transparent url("../images/home/s8-route-marker.svg") center / contain no-repeat;
		box-shadow: none;
	}

	.dw-track__title,
	.dw-track__text {
		width: 240px;
		text-align: right;
	}

	.dw-track__title {
		font-size: 22px;
		line-height: 1.3;
	}

	.dw-track__text {
		font-size: 18px;
		line-height: 1.65;
	}
}

@media (max-width: 1023px) {
	.dw-track {
		grid-template-columns: 1fr;
		gap: 1.75rem;
	}

	/*
	 * Колонка нумерации отделена от линии.
	 *
	 * Линия стояла в 22px от края, а цифры занимают 35px — она проходила прямо
	 * по «01…05». Теперь порядок такой: цифра 0–35, зазор, линия с точкой на
	 * 53px, зазор, текст с 77px. Точки на телефоне вернулись: на десктопе шаги
	 * помечены ими, и без них вертикальная линия не показывала, где шаг
	 * начинается.
	 */
	/*
	 * Линия рисуется отрезками между точками, а не одной чертой на всю колонку.
	 *
	 * Общая черта на 100% высоты минус 16px не знала, где стоит последняя точка,
	 * и уходила ниже неё на высоту подписи пятого шага — путь выглядел
	 * незакрытым. Теперь каждый шаг, кроме последнего, тянет отрезок от своей
	 * точки до точки следующего: сверху отступ до центра точки, снизу — тот же
	 * отступ плюс зазор сетки, взятый со знаком минус. У пятого шага отрезка
	 * нет, поэтому линия кончается ровно на его точке.
	 *
	 * 0.4em и 6px повторяют позицию точки: 0.4em — её отступ сверху, 6px —
	 * половина её диаметра. Кегль у отрезка и у точки один и тот же
	 * (наследуется от шага), поэтому em совпадают.
	 */
	.dw-track::before {
		content: none;
	}

	.dw-track__step:not(:last-child)::before {
		content: "";
		position: absolute;
		inset-inline-start: 53px;
		inset-block-start: calc(0.4em + 6px);
		inset-block-end: calc(-1.75rem - 0.4em - 6px);
		width: 2px;
		background: var(--wp--preset--color--teal-400);
	}

	.dw-track__step {
		position: relative;
		flex-direction: row;
		flex-wrap: wrap;
		align-items: baseline;
		gap: 0.25rem 0.75rem;
		padding-inline-start: 77px;
		text-align: start;
	}

	.dw-track__num {
		position: absolute;
		inset-inline-start: 0;
		width: 35px;
		text-align: center;
	}

	.dw-track__dot {
		position: absolute;
		inset-block-start: 0.4em;
		inset-inline-start: 48px;
		width: 12px;
		height: 12px;
		box-shadow: 0 0 0 3px var(--wp--preset--color--gray-50);
	}

	.dw-track__title,
	.dw-track__text {
		flex: 1 1 100%;
	}
}

/* ------------------------------------------------------------ Пакет */

.dw-pack {
	padding-block: clamp(3rem, 7vw, 6.875rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--teal-100);
}

.dw-pack__inner {
	display: grid;
	grid-template-columns: minmax(0, 736px) minmax(0, 972px);
	gap: clamp(2rem, 4vw, 4rem);
	align-items: center;
	max-width: 1772px;
	margin-inline: auto;
}

.dw-pack__title {
	margin: 0 0 0.875rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2rem, 4.6vw, 4.375rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--navy-900);
}

.dw-pack__sub {
	margin: 0 0 2rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.125rem, 2vw, 1.75rem);
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: -0.2px;
	color: var(--wp--preset--color--gray-700);
}

.dw-included {
	margin: 0;
	padding: 0;
	list-style: none;
}

.dw-included__row {
	display: flex;
	align-items: center;
	gap: 1.25rem;
	padding-block: 1.125rem;
	border-block-end: 1px solid rgba(11, 29, 58, 0.12);
}

.dw-included__row:last-child {
	border-block-end: 0;
}

.dw-included__check {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: none;
	order: 2;
	width: 44px;
	height: 44px;
	color: var(--wp--preset--color--teal-700);
}

.dw-included__check svg {
	width: 26px;
	height: 26px;
}

.dw-included__copy {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	flex: 1;
}

.dw-included__name {
	font-family: var(--wp--preset--font-family--heading);
	/* 20→24px. Потолок ниже, чем у `.dw-included__name` с главной (28), и вес
	   выше (700 против 600) — решение Maxim: строка требования должна быть
	   плотнее и компактнее, чем пункт «что входит в пакет». */
	font-size: clamp(1.25rem, 1.9vw, 1.5rem);
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: -0.2px;
	color: var(--wp--preset--color--navy-900);
}

.dw-included__note {
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.65;
	color: var(--wp--preset--color--gray-700);
}

.dw-pack__action {
	margin: 2rem 0 0;
}

.dw-pack__photo {
	display: block;
	border-radius: 16px;
	overflow: hidden;
}

.dw-pack__photo img {
	display: block;
	width: 100%;
	height: clamp(300px, 34vw, 657px);
	object-fit: cover;
	transform: scaleX(-1);
}

/* Keep the Figma column order on every desktop width. */
@media (min-width: 1024px) and (max-width: 1599px) {
  .dw-pack__inner {
    direction: ltr;
  }

  .dw-pack__copy,
  .dw-pack__photo {
    direction: rtl;
  }
}

/* Figma 112:1878 — exact wide-screen package composition. */
/* Порог 1800: композиция закреплена на 1600/1772 px и в окно 1600 не влезает. */
@media (min-width: 1800px) {
	.dw-pack {
		box-sizing: border-box;
		height: 877px;
		padding-block: 110px;
	}

	.dw-pack__inner {
		grid-template-columns: 736px 972px;
		gap: 64px;
		height: 657px;
		direction: ltr;
	}

	.dw-pack__copy {
		width: 736px;
		height: 657px;
		direction: rtl;
	}

	.dw-pack__title,
	.dw-pack__sub {
		width: 720px;
		margin-inline: auto;
	}

	.dw-pack__title {
		height: 84px;
		margin-block: 0;
		font-size: 70px;
		line-height: 1.2;
	}

	.dw-pack__sub {
		height: 35px;
		margin-block: 14px 0;
		font-size: 28px;
		line-height: 1.25;
	}

	.dw-included {
		width: 736px;
		height: 356px;
		margin-block-start: 64px;
	}

	.dw-included__row {
		box-sizing: border-box;
		direction: rtl;
		gap: 20px;
		height: 92px;
		padding-block: 0 12px;
	}

	.dw-included__row:last-child {
		height: 80px;
		padding-block-end: 0;
	}

	.dw-included__check {
		order: 0;
		width: 44px;
		height: 44px;
		background: transparent url("../images/home/s9-check.svg") center / contain no-repeat;
	}

	.dw-included__check svg {
		display: none;
	}

	.dw-included__copy {
		flex: 0 0 672px;
		gap: 4px;
		width: 672px;
		height: 70px;
		overflow: hidden;
	}

	.dw-included__name {
		font-size: 28px;
		line-height: 1.25;
	}

	.dw-included__note {
		font-size: 18px;
		line-height: 1.65;
	}

	.dw-pack__action {
		display: flex;
		justify-content: flex-end;
		width: 736px;
		min-height: 62px;
		margin: 40px 0 0;
		direction: ltr;
	}

	.dw-pack__action .dw-cta-btn {
		box-sizing: border-box;
		min-width: 300px;
		min-height: 62px;
		padding: 20px 34px;
		border-radius: 12px;
		font-size: 18px;
		line-height: 1.2;
		direction: rtl;
		white-space: nowrap;
	}

	.dw-pack__photo,
	.dw-pack__photo img {
		width: 972px;
		height: 657px;
	}

	.dw-pack__photo {
		direction: rtl;
	}
}

@media (max-width: 1023px) {
	.dw-pack__inner {
		grid-template-columns: 1fr;
	}
}

/* ------------------------------------------------- Окончательная цена */

.dw-price2 {
	padding-block: clamp(3rem, 7vw, 6.875rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--gray-50);
}

.dw-price2__inner {
	display: grid;
	grid-template-columns: minmax(0, 957px) minmax(0, 720px);
	gap: clamp(2rem, 4vw, 4rem);
	align-items: center;
	max-width: 1690px;
	margin-inline: auto;
}

.dw-price2__photo {
	display: block;
	order: 2;
	border-radius: 16px;
	overflow: hidden;
}

.dw-price2__photo img {
	display: block;
	width: 100%;
	height: clamp(300px, 38vw, 728px);
	object-fit: cover;
}

.dw-price2__title {
	margin: 0 0 2rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2rem, 4.6vw, 4.375rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--navy-900);
}

.dw-quote {
	padding: clamp(1.5rem, 3vw, 2.5rem);
	background: var(--wp--preset--color--white);
	border-radius: 16px;
	box-shadow: 0 8px 8px -6px rgba(11, 29, 58, 0.12);
}

.dw-quote__title {
	margin: 0 0 0.375rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--title);
	font-weight: 600;
	line-height: 1.25;
	color: var(--wp--preset--color--navy-900);
	text-align: center;
}

.dw-quote__sub {
	margin: 0 0 1.5rem;
	font-size: var(--wp--preset--font-size--caption);
	color: var(--wp--preset--color--gray-700);
	text-align: center;
}

.dw-quote__rows {
	margin: 0 0 1.75rem;
	padding: 0;
	list-style: none;
}

.dw-quote__rows li {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	padding-block: 0.875rem;
	border-block-start: 1px solid var(--wp--preset--color--gray-200);
}

.dw-quote__name {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--subtitle);
	font-weight: 600;
	color: var(--wp--preset--color--navy-900);
}

.dw-quote__note {
	font-size: var(--wp--preset--font-size--caption);
	color: var(--wp--preset--color--gray-700);
}

.dw-quote__cta {
	width: 100%;
}

/* Figma 202:295 — exact wide-screen final-price composition. */
/* Порог 1800: композиция закреплена на 1600/1772 px и в окно 1600 не влезает. */
@media (min-width: 1800px) {
	.dw-price2 {
		box-sizing: border-box;
		height: 948px;
		padding: 110px 0;
	}

	.dw-price2__inner {
		position: relative;
		display: block;
		width: 1681px;
		height: 728px;
		max-width: none;
		margin-inline: auto;
		transform: translateX(12.5px);
		direction: ltr;
	}

	.dw-price2__photo,
	.dw-price2__photo img {
		width: 957px;
		height: 728px;
	}

	.dw-price2__photo {
		position: absolute;
		inset: 0 auto auto 0;
		border-radius: 16px;
	}

	.dw-price2__copy {
		position: absolute;
		inset: 20px 25px auto auto;
		width: 720px;
		height: 708px;
		direction: rtl;
	}

	.dw-price2__title {
		width: 393px;
		height: 168px;
		margin: 0 0 0 auto;
		font-size: 70px;
		line-height: 1.2;
		text-align: right;
	}

	.dw-quote {
		position: absolute;
		inset: 200px 0 auto auto;
		box-sizing: border-box;
		width: 505px;
		height: 508px;
		padding: 32px;
		border: 1px solid var(--wp--preset--color--gray-200);
		border-radius: 16px;
		box-shadow: none;
	}

	.dw-quote__title {
		margin: 0 0 8px;
		font-size: 28px;
		line-height: 1.25;
	}

	.dw-quote__sub {
		margin: 0 0 24px;
		font-size: 16px;
		line-height: 1.6;
	}

	.dw-quote__rows {
		margin: 24px 0 0;
		border-block-start: 1px solid var(--wp--preset--color--gray-200);
	}

	.dw-quote__rows li {
		box-sizing: border-box;
		height: 54px;
		gap: 24px;
		padding-block: 12px;
		border-block-start: 0;
		border-block-end: 1px solid var(--wp--preset--color--gray-200);
	}

	.dw-quote__rows li:last-child {
		height: 53px;
		border-block-end: 0;
	}

	.dw-quote__name {
		flex: 0 0 207px;
		font-size: 22px;
		line-height: 1.3;
		text-align: right;
	}

	.dw-quote__note {
		flex: 0 0 185px;
		font-size: 18px;
		line-height: 1.65;
		text-align: left;
	}

	/*
	 * Кнопка растянута по ширине карточки, а не поставлена в точку из макета.
	 * В макете это 301px по смещению 101.2 слева; когда фиксированную ширину
	 * заменили на минимальную, кнопка выросла под свой текст и вылезла из
	 * карточки на 100px вправо. Симметричные inset-inline держат её внутри
	 * при любой длине подписи.
	 */
	.dw-quote__cta {
		position: absolute;
		inset-block-start: 384.7px;
		inset-inline: 24px;
		box-sizing: border-box;
		/* width: auto обязателен: базовое правило ставит 100%, и у абсолютного
		   элемента это отменяет второй inset — кнопка снова уезжала бы влево. */
		width: auto;
		min-height: 69px;
		padding: 20px;
		border-radius: 12px;
		font-size: 18px;
		line-height: 1.2;
		white-space: nowrap;
	}
}

@media (max-width: 1023px) {
	.dw-price2__inner {
		grid-template-columns: 1fr;
	}

	.dw-price2__photo {
		order: 0;
	}

	.dw-quote__cta {
		padding-inline: 12px;
		white-space: nowrap;
	}
}

/* ---------------------------------------------- Проверка соответствия */

.dw-fit {
	padding-block: clamp(3rem, 7vw, 6.875rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--white);
}

.dw-fit__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-fit__head {
	margin-block-end: clamp(2rem, 4vw, 3rem);
	text-align: center;
}

.dw-fit__title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.875rem, 4.2vw, 4rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--navy-900);
}

.dw-fit__lead {
	margin: 0;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.65;
	color: var(--wp--preset--color--gray-700);
}

.dw-fit__grid {
	display: grid;
	grid-template-columns: minmax(0, 936px) minmax(0, 520px);
	gap: clamp(1.25rem, 2vw, 1.5rem);
	align-items: stretch;
}

.dw-fit__card {
	display: flex;
	flex-direction: column;
	gap: 0.875rem;
	padding: clamp(1.5rem, 3vw, 3.5rem);
	border-radius: 16px;
}

.dw-fit__card--yes {
	background: var(--wp--preset--color--navy-900);
	color: rgba(255, 255, 255, 0.88);
}

.dw-fit__card--no {
	background: var(--wp--preset--color--teal-100);
	color: var(--wp--preset--color--gray-700);
}

.dw-fit__mark {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 40px;
	font-weight: 700;
	line-height: 1;
}

.dw-fit__mark svg {
	width: 34px;
	height: 34px;
}

.dw-fit__card--yes .dw-fit__mark {
	color: var(--wp--preset--color--teal-300);
}

.dw-fit__card--no .dw-fit__mark {
	color: var(--wp--preset--color--teal-800);
}

.dw-fit__card-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.25rem, 2vw, 1.75rem);
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: -0.2px;
}

.dw-fit__card--yes .dw-fit__card-title {
	color: var(--wp--preset--color--white);
}

.dw-fit__card--no .dw-fit__card-title {
	color: var(--wp--preset--color--navy-900);
}

.dw-fit__card-lead {
	margin: 0;
	font-size: var(--wp--preset--font-size--lead);
	line-height: 1.55;
	color: var(--wp--preset--color--white);
}

.dw-fit__card-text {
	margin: 0;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.65;
}

.dw-fit__card-foot {
	margin: auto 0 0;
	padding-block-start: 1.5rem;
	font-size: var(--wp--preset--font-size--body);
	font-weight: 600;
	color: var(--wp--preset--color--navy-900);
}

.dw-fit__cta {
	align-self: flex-end;
	margin-block-start: auto;
	padding-block-start: 1rem;
}

/* Figma 112:1927 — exact wide-screen suitability composition. */
/* Порог 1800: композиция закреплена на 1600/1772 px и в окно 1600 не влезает. */
@media (min-width: 1800px) {
	.dw-fit {
		box-sizing: border-box;
		height: 830px;
		padding: 110px 0;
	}

	.dw-fit__inner {
		width: 1772px;
		height: 610px;
		max-width: none;
	}

	.dw-fit__head {
		display: flex;
		flex-direction: column;
		align-items: flex-end;
		gap: 14px;
		height: 132px;
		margin: 0 0 48px;
		text-align: right;
	}

	.dw-fit__title {
		width: 1772px;
		height: 84px;
		margin: 0;
		font-size: 70px;
		line-height: 1.2;
	}

	.dw-fit__lead {
		width: 1772px;
		height: 34px;
		font-size: 22px;
		line-height: 1.55;
	}

	.dw-fit__grid {
		grid-template-columns: 1228px 520px;
		gap: 24px;
		width: 1772px;
		height: 430px;
	}

	.dw-fit__card {
		box-sizing: border-box;
		height: 430px;
		gap: 0;
		border-radius: 16px;
		text-align: right;
	}

	.dw-fit__card--no {
		padding: 48px;
	}

	.dw-fit__card--yes {
		padding: 56px;
	}

	.dw-fit__mark {
		display: block;
		flex: none;
		width: 100%;
		font-family: var(--wp--preset--font-family--heading);
		font-weight: 700;
		text-align: right;
	}

	.dw-fit__card--no .dw-fit__mark {
		height: 84px;
		font-size: 70px;
		line-height: 1.2;
	}

	.dw-fit__card--yes .dw-fit__mark {
		height: 70px;
		font-size: 58px;
		line-height: 1.2;
	}

	.dw-fit__card-title {
		font-size: 28px;
		line-height: 1.25;
	}

	.dw-fit__card--no .dw-fit__card-title {
		margin-block-start: 16px;
	}

	.dw-fit__card--no .dw-fit__card-text {
		margin-block-start: 16px;
		font-size: 20px;
		line-height: 1.6;
	}

	.dw-fit__card-foot {
		margin-block-start: auto;
		padding: 0;
		font-size: 18px;
		font-weight: 400;
		line-height: 1.65;
	}

	.dw-fit__card--yes .dw-fit__card-title {
		margin-block-start: 18px;
	}

	.dw-fit__card-lead {
		margin-block-start: 18px;
		font-size: 22px;
		line-height: 1.55;
	}

	.dw-fit__card--yes .dw-fit__card-text {
		margin-block-start: 18px;
		font-size: 18px;
		line-height: 1.65;
		color: var(--wp--preset--color--teal-300);
	}

	.dw-fit__cta {
		align-self: flex-start;
		box-sizing: border-box;
		height: 62px;
		margin-block-start: auto;
		padding: 20px 34px;
		border-radius: 12px;
		font-size: 18px;
		line-height: 1.2;
	}
}

@media (max-width: 1023px) {
	.dw-fit__grid {
		grid-template-columns: 1fr;
	}

	.dw-fit__cta {
		align-self: stretch;
	}
}

/* -------------------------------------------------------------- FAQ */

.dw-faq2 {
	padding-block: clamp(3rem, 7vw, 6.875rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--gray-50);
}

.dw-faq2__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-faq2__title {
	margin: 0 0 clamp(1.5rem, 3vw, 2.5rem);
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2rem, 4.6vw, 4.375rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--navy-900);
	text-align: center;
}

.dw-faq2__grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(1rem, 2.5vw, 2.5rem);
	align-items: start;
}

.dw-faq2__col {
	display: grid;
	gap: 1rem;
	align-content: start;
}

.dw-qa {
	box-sizing: border-box;
	background: var(--wp--preset--color--white);
	border: 1px solid var(--wp--preset--color--gray-300);
	border-radius: 14px;
	overflow: hidden;
}

.dw-qa.is-animating {
	overflow: hidden;
	will-change: height;
}

.dw-qa__q {
	display: flex;
	align-items: center;
	gap: 0.875rem;
	padding: 1.5rem 1.75rem;
	cursor: pointer;
	list-style: none;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 21px;
	font-weight: 600;
	line-height: normal;
	color: var(--wp--preset--color--navy-900);
}

.dw-qa__q > span:last-child {
	flex: 1 1 auto;
	min-width: 0;
}

.dw-qa__q::-webkit-details-marker {
	display: none;
}

.dw-qa__toggle {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: none;
	order: 2;
	margin-inline-start: auto;
	width: 36px;
	height: 36px;
	border-radius: 999px;
	background: var(--wp--preset--color--teal-100);
	color: var(--wp--preset--color--teal-800);
}

.dw-qa__toggle svg {
	width: 20px;
	height: 20px;
}

/* Открытая строка превращает плюс в минус — вертикальная черта убирается. */
.dw-qa[open] .dw-qa__bar-v {
	opacity: 0;
}

.dw-qa__bar-v {
	transition: opacity 420ms var(--wp--custom--ease--out),
		transform 420ms var(--wp--custom--ease--out);
}

.dw-qa:not([open]) .dw-qa__bar-v {
	transform: rotate(0deg) scaleY(1);
}

.dw-qa[open] .dw-qa__bar-v {
	transform: rotate(90deg) scaleY(0.4);
}

.dw-qa__a {
	margin: 0;
	padding: 0 1.75rem 1.5rem;
	font-size: 17px;
	line-height: 1.7;
	color: var(--wp--preset--color--gray-700);
}

.dw-qa[open] {
	padding: 23px 28px;
}

.dw-qa[open] .dw-qa__q {
	padding: 0;
}

.dw-qa[open] .dw-qa__a {
	margin-block-start: 14px;
	padding: 0;
}

/* Figma 112:1964 — exact wide-screen FAQ composition. */
/* Порог 1800: композиция закреплена на 1600/1772 px и в окно 1600 не влезает. */
@media (min-width: 1800px) {
	/* min-height, а не height: 700px снято с макета, где в каждой колонке
	   по три вопроса. Список вопросов задаёт клиент, и на шести карточках
	   фиксированная высота обрезала секцию посередине. */
	.dw-faq2 {
		box-sizing: border-box;
		min-height: 700px;
		padding: 110px 0;
	}

	.dw-faq2__inner {
		width: 1772px;
		max-width: none;
	}

	.dw-faq2__title {
		width: 1772px;
		min-height: 84px;
		margin: 0 0 40px;
		font-size: 70px;
		line-height: 1.2;
	}

	.dw-faq2__grid {
		grid-template-columns: repeat(2, 866px);
		gap: 40px;
		width: 1772px;
	}

	.dw-faq2__col {
		gap: 16px;
	}

	/* Тоже min-: вопрос из двух строк и длинный ответ из файла клиента
	   не помещались в снятые с макета 82 и 156 пикселей. */
	.dw-qa__q {
		box-sizing: border-box;
		min-height: 82px;
		padding: 23px 28px;
	}

	.dw-qa[open] {
		min-height: 156px;
	}

	.dw-qa[open] .dw-qa__q {
		min-height: 36px;
	}
}

@media (max-width: 781px) {
	.dw-faq2__grid {
		grid-template-columns: 1fr;
	}
}

/* ------------------------------------------------------- Подвал Home */

.dw-foot {
	padding-block: clamp(2.5rem, 4.5vw, 4.5rem) 2rem;
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--navy-800);
	color: rgba(255, 255, 255, 0.86);
	font-size: var(--wp--preset--font-size--body);
}

.dw-foot__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-foot__cols {
	display: grid;
	grid-template-columns: minmax(0, 300px) repeat(3, minmax(0, auto));
	gap: clamp(1.75rem, 4vw, 4rem);
	justify-content: space-between;
	padding-block-end: 2.5rem;
	border-block-end: 1px solid rgba(117, 212, 214, 0.24);
}

/* Раскладка та же, что у логотипа в шапке: знак и начертание в одной строке. */
.dw-foot__logo {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin-block-end: 0.75rem;
}

.dw-foot__wordmark {
	display: block;
	width: auto;
	height: 34px;
}

.dw-foot__mark {
	display: block;
	width: auto;
	height: 52px;
	transform: translateY(-8%);
}

.dw-foot__tagline {
	margin: 0 0 0.75rem;
	font-size: var(--wp--preset--font-size--nav);
	color: var(--wp--preset--color--teal-300);
}

.dw-foot__about {
	margin: 0;
	font-size: var(--wp--preset--font-size--caption);
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.78);
}

.dw-foot__title {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--nav);
	font-weight: 600;
	color: var(--wp--preset--color--white);
}

.dw-foot__list {
	display: grid;
	gap: 0.375rem;
	margin: 0;
	padding: 0;
	list-style: none;
	line-height: 1.5;
}

.dw-foot a {
	color: rgba(255, 255, 255, 0.86);
	text-decoration: none;
}

.dw-foot a:hover,
.dw-foot a:focus {
	color: var(--wp--preset--color--teal-300);
	text-decoration: underline;
}

/* 44px: в подвале ссылки стоят плотным столбцом, и 28px давали промахи
   соседним пунктом. Отрицательный отступ гасит прирост высоты столбца. */
.dw-foot__list a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	margin-block: -0.5rem;
}

.dw-foot__bottom {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem 2rem;
	padding-block-start: 1.5rem;
	font-size: var(--wp--preset--font-size--caption);
	color: rgba(255, 255, 255, 0.76);
}

/*
 * Телефон в нижней строке подвала. Цвет задаётся явно: без него ссылка берёт
 * глобальный teal-800 из theme.json — тёмно-бирюзовый, который на navy-800
 * читается как синий на синем.
 *
 * Высота цели 44px — сам номер требование תקן 5568, промахнуться по нему нельзя.
 */
.dw-foot__bottom a {
	display: inline-flex;
	align-items: center;
	min-height: 44px;
	margin-block: -0.75rem;
	color: var(--wp--preset--color--white);
	text-decoration-color: rgba(255, 255, 255, 0.5);
}

.dw-foot__bottom a:hover,
.dw-foot__bottom a:focus {
	text-decoration-color: currentColor;
}

@media (max-width: 781px) {
	.dw-foot__cols {
		grid-template-columns: 1fr;
	}
}

/* ------------------------------------------------ Unified home container */

/* Every desktop block uses one shared 1600px composition width. */
/* Порог 1800: композиция закреплена на 1600/1772 px и в окно 1600 не влезает. */
@media (min-width: 1800px) {
	.dw-nav__inner,
	.dw-hhero__inner,
	.dw-bridge__inner,
	.dw-what__inner,
	.dw-svc2__inner,
	.dw-geo__inner,
	.dw-proc__inner,
	.dw-pack__inner,
	.dw-price2__inner,
	.dw-fit__inner,
	.dw-faq2__inner,
	.dw-cta__inner,
	.dw-foot__inner {
		width: 1600px;
		max-width: 1600px;
		margin-inline: auto;
	}

	/*
	 * Внутренние поля здесь снимаются. Все секции на этом брейкпоинте — ровно
	 * 1600px без боковых полей, а шапка и верхняя полоса тянули свои clamp-поля
	 * из базовых правил и при box-sizing: border-box съедали по 48px с каждой
	 * стороны. Логотип из-за этого стоял на 48px левее правого края,
	 * по которому выстроен весь остальной контент.
	 */
	.dw-nav__inner {
		box-sizing: border-box;
		padding-inline: 0;
	}

	.dw-pack__inner {
		grid-template-columns: 736px 752px;
		gap: 112px;
	}

	.dw-pack__photo,
	.dw-pack__photo img {
		width: 752px;
	}

	/* Stretch the inner desktop compositions to the shared 1600px frame. */
	.dw-what__inner {
		grid-template-columns: 764px 756px;
		gap: 80px;
	}

	/*
	 * Витрина той же высоты, что фотографии рядов под ней.
	 *
	 * На этом брейкпоинте ряды растянуты до 570px, а витрина осталась 460px из
	 * предыдущего блока — главная фотография раздела выглядела мельче
	 * второстепенных. Подпись при этом центрируется по высоте, а не отбивается
	 * фиксированными 92px сверху: её высота зависит от длины текста.
	 */
	.dw-svc2__feature,
	.dw-svc2__feature-media img {
		height: 570px;
	}

	.dw-svc2__feature-copy {
		inset-block-start: 0;
		inset-block-end: 0;
		justify-content: center;
	}

	.dw-srow {
		grid-template-columns: 606px 930px;
		height: 570px;
	}

	.dw-srow--flip {
		grid-template-columns: 930px 606px;
	}

	.dw-srow__photo,
	.dw-srow__photo img {
		height: 570px;
	}

	.dw-srow__text {
		white-space: normal;
	}

	.dw-proc__panel {
		width: 1600px;
	}

	.dw-track {
		width: 1520px;
	}

	.dw-track::before {
		width: 1280px;
	}

	/* Route coordinates were drawn for 1480px; scale them across 1600px. */
	.dw-route__glow {
		left: 538.4px;
		width: 585.9px;
	}

	.dw-route__path {
		left: 83.5px;
		width: 1504.3px;
	}

	.dw-route__plane {
		left: 739.8px;
	}

	.dw-route__stop:nth-of-type(2) { inset-inline-end: 1147px; }
	.dw-route__stop:nth-of-type(3) { inset-inline-end: 814.1px; }
	.dw-route__stop:nth-of-type(4) { inset-inline-end: 489.7px; }
	.dw-route__stop:nth-of-type(5) { inset-inline-end: 175.1px; }
	.dw-route__end--tlv { inset-inline-end: 1448.1px; }
	.dw-route__end--tbs { inset-inline-end: -11.9px; }

	.dw-price2__inner {
		transform: none;
	}

	.dw-price2__photo,
	.dw-price2__photo img {
		width: 900px;
	}

	.dw-price2__copy {
		right: 0;
		left: auto;
	}

	.dw-hhero__content {
		right: 0;
		left: auto;
	}

	.dw-hhero__couple {
		right: auto;
		left: 0;
	}

	.dw-fit__title,
	.dw-fit__lead,
	.dw-fit__grid,
	.dw-faq2__title,
	.dw-faq2__grid {
		width: 1600px;
	}

	.dw-fit__grid {
		grid-template-columns: 1056px 520px;
	}

	.dw-faq2__grid {
		grid-template-columns: repeat(2, 780px);
	}
}


/* ========================================================= Страница «עלינו»
 *
 * Строится на компонентах главной: .dw-what, .dw-fit, .dw-cta-btn и токены
 * переиспользуются как есть. Здесь только то, чего на главной не было.
 * ==================================================================== */

/* ------------------------------------------------- Первый экран страницы */

/*
 * Тот же боковой скрим, что в hero главной, без вырезанной фигуры. Полоса
 * называет страницу — но Тбилиси в ней обязан быть виден: реальное место
 * снимает страх лететь лучше любого текста (DESIGN.md). Раньше здесь стояла
 * сплошная заливка 0.84 — она пропускала 10–16% снимка, то есть фото грузилось
 * и не работало.
 */
.dw-ahero {
	position: relative;
	display: flex;
	align-items: center;
	min-height: clamp(320px, 30vw, 460px);
	padding-block: clamp(2.75rem, 5vw, 6rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--navy-900);
	isolation: isolate;
	overflow: hidden;
}

.dw-ahero__media {
	position: absolute;
	inset: 0;
	z-index: -2;
	width: 100%;
	height: 100%;
	object-fit: cover;
	/* 30%, а не 55%: полоса стала ниже (460px), и при кропе по центру в кадр
	   попадала тёмная пойма реки. На 30% в срез входят крепость, Метехи и
	   освещённый город — то, ради чего снимок здесь и стоит. */
	object-position: 50% 30%;
}

/*
 * Скрим направленный, как в .dw-hhero: плотный со стороны текста (в RTL это
 * правый край) и открытый к левому, где остаётся видна панорама. Верхний
 * доводчик отбивает полосу от белой шапки. Белый текст лежит на участке
 * 0.88–0.94 поверх navy — контраст с запасом.
 */
.dw-ahero::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		linear-gradient(to bottom, rgba(11, 29, 58, 0.3) 0%, rgba(11, 29, 58, 0) 38%),
		linear-gradient(to left, rgba(11, 29, 58, 0.94) 0%, rgba(11, 29, 58, 0.88) 38%, rgba(11, 29, 58, 0.42) 100%);
}

.dw-ahero__inner {
	position: relative;
	width: 100%;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	display: flex;
	flex-direction: column;
	gap: 1rem;
}

/*
 * Display-кегль, вровень с H1 главной (76px): это единственный H1 страницы,
 * и он обязан быть крупнее заголовков секций под ним (70/60). Раньше стоял
 * headline 48px — заголовок страницы был четвёртым по величине текстом.
 */
.dw-ahero__title {
	margin: 0;
	max-width: 20ch;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2.25rem, 4.4vw, 4.75rem);
	font-weight: 700;
	line-height: 1.08;
	letter-spacing: -0.5px;
	text-wrap: balance;
	color: var(--wp--preset--color--white);
}

.dw-ahero__lead {
	margin: 0;
	max-width: 52ch;
	font-size: var(--wp--preset--font-size--lead);
	line-height: 1.55;
	/* Белый, а не teal-300: светло-голубой текст на тёмно-синем запрещён
	   подходом — для глаза 45–70 он читается вяло даже при формально
	   проходящем контрасте. */
	color: rgba(255, 255, 255, 0.92);
}

/* ------------------------------------------- Два барьера, один ответ */

/*
 * Собственный приём страницы «עלינו». Композиция сама показывает мысль:
 * два барьера стоят рядом, скоба сводит их в одну линию, линия входит в
 * блок ответа — такого ритма нет ни в одной секции главной.
 */
.dw-barrier {
	/* Асимметрия полей вместо 110/110: секция открывает содержательную часть
	   страницы и должна дышать сверху, а снизу её закрывает блок-ответ, за
	   которым сразу идёт сжатая мятная полоса. */
	padding-block: clamp(3rem, 8vw, 8rem) clamp(2.5rem, 6vw, 6rem);
	background: var(--wp--preset--color--white);
}

.dw-barrier__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-inline: clamp(1.25rem, 4vw, 3rem);
}

.dw-barrier__title {
	margin: 0 0 clamp(1.75rem, 3vw, 2.75rem);
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2rem, 4.6vw, 4.375rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	text-wrap: balance;
	color: var(--wp--preset--color--navy-900);
}

/*
 * Барьеры — две типографические колонки, а не плашки. Заливку сняли осознанно:
 * ниже стоит вторая сетка карточек (.dw-stages), и пять одинаковых
 * скруглённых прямоугольников подряд читались как один список из пяти пунктов,
 * в котором проблемы и обещания перемешаны. Карточки на странице остаются —
 * но ровно одного типа и на мятной полосе.
 */
.dw-barrier__pair {
	position: relative;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(1.5rem, 4vw, 4rem);
	/* 32–60px: раньше между парой и блоком-ответом стояла скоба 48px плюс
	   12px отступа. Скобу убрали, и 12px в одиночку склеивали два пункта с
	   выводом в одну массу — суммарный просвет восстановлен отступом. */
	margin-block-end: clamp(2rem, 3.5vw, 3.75rem);
}

/* Волосяная линия между двумя равными — разделитель, а не акцент сбоку
   карточки. Из её нижней точки вырастает скоба. */
.dw-barrier__pair::before {
	content: "";
	position: absolute;
	inset-block: 0.25rem;
	inset-inline-start: 50%;
	width: 1px;
	background: var(--wp--preset--color--gray-300);
}

.dw-barrier__item {
	padding-inline: clamp(0rem, 1.5vw, 1.5rem);
}

.dw-barrier__name {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.5rem, 2.4vw, 2.125rem);
	font-weight: 700;
	line-height: 1.2;
	text-wrap: balance;
	color: var(--wp--preset--color--navy-900);
}

.dw-barrier__text {
	margin: 0;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.7;
	color: var(--wp--preset--color--gray-700);
}

/*
 * Ответ — единственный залитый объект секции и эмоциональный пик страницы.
 * Раньше он был `color-mix(navy 6%, white)` = rgb(240,241,243) при карточках
 * барьеров gray-50 rgb(242,245,247): разница два пункта по каналу, контраст
 * 1.01:1. Расфокусированно ответ читался как третья карточка той же серии, то
 * есть приём «два барьера сходятся в одно» на экране не существовал. Теперь
 * navy-900 — контраст с барьерами 16.8:1.
 *
 * Двух тёмно-синих плоскостей в поле зрения не возникает: это блок r14 внутри
 * белой секции, до .dw-cta ~1300px, соэкранными они не бывают.
 */
.dw-barrier__answer {
	--dw-answer-pad: clamp(1.75rem, 3.2vw, 3.5rem);
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 30%);
	align-items: center;
	gap: var(--dw-answer-pad);
	padding: var(--dw-answer-pad);
	background: var(--wp--preset--color--navy-900);
	border-radius: 14px;
	overflow: hidden;
}

/* Фото уходит под три кромки блока: в RTL вторая колонка — левая. Это
   единственный прорыв сетки на странице, и он оправдан — на главной тем же
   приёмом живут .dw-hhero__couple и .dw-what__photo. */
.dw-barrier__photo {
	display: block;
	align-self: stretch;
	margin-block: calc(-1 * var(--dw-answer-pad));
	margin-inline-end: calc(-1 * var(--dw-answer-pad));
	min-height: 260px;
}

.dw-barrier__photo img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: 50% 42%;
}

.dw-barrier__answer-copy {
	min-width: 0;
}

.dw-barrier__answer-big {
	margin: 0 0 1rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.75rem, 3.4vw, 3.5rem);
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: -0.3px;
	text-wrap: balance;
	color: var(--wp--preset--color--white);
}

.dw-barrier__answer-text {
	margin: 0;
	max-width: 46ch;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.7;
	color: rgba(255, 255, 255, 0.92);
}

@media (max-width: 1023px) {
	.dw-barrier__pair {
		grid-template-columns: 1fr;
		gap: 1.75rem;
	}

	/* В колонку разделять нечем — вертикаль между колонками теряет смысл. */
	.dw-barrier__pair::before {
		display: none;
	}

	.dw-barrier__answer {
		grid-template-columns: 1fr;
	}

	/* Фото уходит наверх блока и становится его шапкой. */
	.dw-barrier__photo {
		order: -1;
		margin-inline: calc(-1 * var(--dw-answer-pad));
		margin-block: calc(-1 * var(--dw-answer-pad)) 0;
		min-height: 0;
		aspect-ratio: 16 / 9;
	}

}

/* ------------------------------------------------------ За что отвечаем */

/*
 * Заголовок секции без вводной строки: три заголовка карточек уже
 * называют мысль каждой, h2 остаётся только для скринридера (см. PHP).
 * Карточки на белой секции — сознательный выбор Максима, не «карточки
 * как ленивый вариант»: см. DESIGN-DNA.md.
 */
/*
 * Мятная полоса — сжатая, а не щедрая: 56/56 против 110 у соседей. Ритм
 * страницы держится на чередовании полей (96 · 128/96 · 56 · 110 · 110), как
 * на главной, где эту роль играет .dw-bridge (42px, teal-100).
 *
 * Полоса мятная, а карточки белые — было наоборот, и секция шла белым по
 * белому сразу за белым .dw-barrier: 110 нижнего паддинга плюс 110 верхнего
 * давали 220px сплошной пустоты ровно на пивоте страницы.
 */
.dw-resp {
	padding-block: clamp(2rem, 3.5vw, 3.5rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--teal-100);
}

.dw-resp__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-stages {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: clamp(1.25rem, 2.5vw, 2rem);
	margin: 0;
	padding: 0;
	list-style: none;
}

.dw-stage {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	padding: clamp(1.5rem, 2.5vw, 2rem);
	background: var(--wp--preset--color--white);
	border-radius: 14px;
}

.dw-stage__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.5rem, 2.6vw, 1.75rem);
	font-weight: 700;
	line-height: 1.22;
	letter-spacing: -0.2px;
	text-wrap: balance;
	color: var(--wp--preset--color--navy-900);
}

.dw-stage__line {
	margin: 0;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.6;
	color: var(--wp--preset--color--gray-700);
}

@media (max-width: 1023px) {
	.dw-stages {
		grid-template-columns: 1fr;
	}
}

/* ------------------------------------------------ Клиники в Тбилиси */

/*
 * Секция целиком собрана из компонентов главной, своего языка у неё нет.
 * Строка требования повторяет `.dw-included__row` из «что входит в пакет»:
 * галочка teal-700 44×44, кегль 20–28/600, разделитель rgba(11,29,58,.12).
 * Пара «фото + копи» повторяет `.dw-srow--flip` из блока услуг: колонка
 * 620px, скругление 14, обрезка по контейнеру, тени нет.
 *
 * До этого секция жила по собственным правилам — кадр уходил навылет за
 * край окна острым прямоугольником, разделители шли gray-300, — и читалась
 * как чужая. Навылет на сайте уходят только первые экраны и фон формы.
 *
 * Светлая поверхность остаётся: под секцией форма на navy, две тёмные
 * плоскости подряд — прямой запрет подхода.
 */
.dw-clin {
	padding-block: clamp(3rem, 7vw, 6.875rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--gray-50);
}

.dw-clin__inner {
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

/* Пропорции и зазор — как у .dw-srow--flip: фото в первой колонке грида,
   в RTL это правая сторона. */
.dw-clin__row {
	display: grid;
	/*
	 * Обе колонки фиксированные, пара центрируется в контейнере. Кадр 780 —
	 * середина между исходными 620 и 930; копи оставлена ровно 606, как была
	 * при 930, поэтому при сужении кадра текст не растянулся, а придвинулся.
	 *
	 * Сумма 780 + 64 + 606 = 1450 при контейнере 1600, то есть композиция
	 * отступает от вертикали страницы на 75px с каждой стороны. Заголовок
	 * секции из-за этого не стоит на одной линии с заголовками соседних
	 * секций — сознательный размен на центрирование (решение Maxim).
	 */
	grid-template-columns: minmax(0, 780px) minmax(0, 606px);
	justify-content: center;
	gap: clamp(1.5rem, 3.4vw, 4rem);
	align-items: stretch;
}

.dw-clin__photo {
	display: block;
	border-radius: 14px;
	overflow: hidden;
}

.dw-clin__photo img {
	display: block;
	width: 100%;
	/* Во всю высоту колонки текста, но не короче меры .dw-srow__photo. */
	height: 100%;
	min-height: clamp(240px, 24vw, 380px);
	object-fit: cover;
	object-position: 56% 45%;
}

.dw-clin__copy {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
}

.dw-clin__title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.875rem, 4vw, 3.75rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	text-wrap: balance;
	color: var(--wp--preset--color--navy-900);
}

.dw-clin__lead {
	margin: 0 0 clamp(1.5rem, 3vw, 2.25rem);
	max-width: 42ch;
	/* 18px фиксированно по решению Maxim, не lead-токен (19–22 fluid):
	   лид здесь в одну строку и не должен спорить со строками требований. */
	font-size: 1.125rem;
	line-height: 1.55;
	color: var(--wp--preset--color--gray-700);
}

/* Список — копия .dw-included с главной, вплоть до цвета разделителя. */
.dw-crit {
	width: 100%;
	margin: 0;
	padding: 0;
	list-style: none;
}

.dw-crit__row {
	display: flex;
	/* Галочка встаёт вплотную к тексту, а не у дальнего края строки. */
	flex-direction: row-reverse;
	align-items: center;
	gap: 1.25rem;
	padding-block: 1.125rem;
	border-block-end: 1px solid rgba(11, 29, 58, 0.12);
}

.dw-crit__row:last-child {
	border-block-end: 0;
}

.dw-crit__check {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex: none;
	order: 2;
	width: 44px;
	height: 44px;
	color: var(--wp--preset--color--teal-700);
}

.dw-crit__check svg {
	width: 26px;
	height: 26px;
}

.dw-crit__name {
	flex: 1;
	font-family: var(--wp--preset--font-family--heading);
	/* 20→24px. Потолок ниже, чем у `.dw-included__name` с главной (28), и вес
	   выше (700 против 600) — решение Maxim: строка требования должна быть
	   плотнее и компактнее, чем пункт «что входит в пакет». */
	font-size: clamp(1.25rem, 1.9vw, 1.5rem);
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: -0.2px;
	color: var(--wp--preset--color--navy-900);
}

/* Вывод, а не пятый пункт: без галочки и без разделителя. */
.dw-clin__verdict {
	margin: clamp(1.25rem, 2.5vw, 1.75rem) 0 0;
	max-width: 46ch;
	font-family: var(--wp--preset--font-family--heading);
	/* 18px фиксированно по решению Maxim, не lead-токен. */
	font-size: 1.125rem;
	font-weight: 600;
	line-height: 1.45;
	color: var(--wp--preset--color--teal-800);
}

@media (max-width: 1023px) {
	.dw-clin__row {
		grid-template-columns: 1fr;
	}

	/* Фото уходит под текст: заголовок секции должен открывать её. */
	.dw-clin__photo {
		order: 2;
	}

	.dw-clin__photo img {
		height: clamp(220px, 46vw, 300px);
		min-height: 0;
		object-position: 62% 35%;
	}
}

/* ==================================================================
 * Страница «Услуги»
 *
 * Полоса заголовка переиспользует .dw-ahero целиком, широкие карточки —
 * .dw-svc2__feature с главной. Своё здесь только сетка карточек.
 * ================================================================== */

.dw-scat {
	padding-block: clamp(3rem, 7vw, 6.875rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--gray-50);
}

.dw-scat__inner {
	display: flex;
	flex-direction: column;
	gap: clamp(1.5rem, 3vw, 2.5rem);
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

/*
 * Две в ряд. Карточки нарочно тихие: белая заливка на светло-серой полосе —
 * образец взят с `.dw-stage` на «О нас». Подложка сама создаёт разделение,
 * поэтому обводки нет, а тень едва заметна.
 *
 * Обводка и широкая мягкая тень вместе не ставятся ни здесь, ни где-либо в
 * теме: эта комбинация — известный признак сгенерированного макета.
 */
.dw-scards {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: clamp(1.25rem, 2.5vw, 2rem);
	margin: 0;
	padding: 0;
	list-style: none;
}

.dw-scard {
	display: flex;
	flex-direction: column;
	background: var(--wp--preset--color--white);
	border-radius: 14px;
	overflow: hidden;
	box-shadow: 0 2px 8px rgba(11, 29, 58, 0.06);
}

/*
 * aspect-ratio, а не высота из атрибутов: пока стоят временные кадры разных
 * пропорций, соотношение задаёт CSS — иначе при подстановке финальных фото
 * поедет вся сетка. Место под картинку зарезервировано до её загрузки, CLS
 * нулевой независимо от width/height в разметке.
 */
.dw-scard__photo {
	display: block;
}

.dw-scard__photo img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	object-position: 50% 45%;
}

.dw-scard__copy {
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	padding: clamp(1.25rem, 2.2vw, 1.75rem);
}

/* Кегль и вес — как у `.dw-crit__name` на «О нас»: заметно крупнее тела,
   заметно мельче h2, своя ступень в иерархии. */
.dw-scard__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.25rem, 1.9vw, 1.5rem);
	font-weight: 700;
	line-height: 1.25;
	letter-spacing: -0.2px;
	text-wrap: balance;
	color: var(--wp--preset--color--navy-900);
}

.dw-scard__text {
	margin: 0;
	font-size: var(--wp--preset--font-size--body);
	line-height: 1.65;
	color: var(--wp--preset--color--gray-700);
}

.dw-scat__note {
	margin: 0;
	font-size: var(--wp--preset--font-size--caption);
	color: var(--wp--preset--color--gray-700);
}

/*
 * Нижняя широкая карточка — тот же компонент и та же высота, что у акцентной
 * сверху. Сначала я сделал её ниже (кадр 380 вместо 460), чтобы она не спорила
 * с акцентной, и получил пустую полосу 80px: на ≥1800px тема пиннит этот блок
 * к точным пикселям Фигмы — `.dw-svc2__feature, .dw-svc2__feature-media img
 * { height: 460px }`. Переопределив картинку, я не переопределил фигуру.
 *
 * Правильный вывод не «дописать второй override», а «не расходиться с
 * компонентом главной». Различие между двумя карточками несёт содержание:
 * у нижней есть CTA, у верхней нет.
 */

@media (max-width: 1023px) {
	.dw-scards {
		grid-template-columns: 1fr;
	}
}

/* ==================================================================
 * Страница «צור קשר» — приём снимка
 *
 * Макет Figma 222:411. Значения — оттуда: карточки 664/760 при зазоре 56 и
 * контейнере 1480, радиус 16, паддинг 48, поле 12 и рамка 1.5px #C9D4DD.
 * Форма внутри — общий компонент .dw-form в варианте intake.
 * ================================================================== */

.dw-cintake {
	padding-block: clamp(2.5rem, 5vw, 5rem) clamp(3rem, 6vw, 6rem);
	padding-inline: clamp(1.25rem, 4vw, 3rem);
	background: var(--wp--preset--color--gray-50);
}

.dw-cintake__inner {
	display: flex;
	flex-direction: column;
	gap: clamp(1.75rem, 3vw, 3rem);
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
}

.dw-cintake__title {
	margin: 0;
	max-width: 22ch;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(2.25rem, 4.4vw, 4.75rem);
	font-weight: 700;
	line-height: 1.12;
	letter-spacing: -0.5px;
	text-wrap: balance;
	color: var(--wp--preset--color--navy-900);
}

/* 664/760 из макета: тёмная карточка уже, форма шире. */
.dw-cintake__row {
	display: grid;
	grid-template-columns: minmax(0, 664fr) minmax(0, 760fr);
	gap: clamp(1.5rem, 3.5vw, 3.5rem);
	align-items: stretch;
}

/* ------------------------------------------------ Тёмная карточка */

.dw-guide {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: clamp(1.5rem, 3vw, 2.5rem);
	padding: clamp(1.5rem, 3vw, 3rem);
	background: var(--wp--preset--color--navy-900);
	border-radius: 16px;
}

.dw-guide__photo {
	display: block;
	border-radius: 12px;
	overflow: hidden;
}

.dw-guide__photo img {
	display: block;
	width: 100%;
	height: auto;
	aspect-ratio: 568 / 250;
	object-fit: cover;
	object-position: 50% 42%;
}

.dw-guide__copy {
	display: flex;
	flex-direction: column;
	gap: 0.875rem;
}

.dw-guide__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.375rem, 2.2vw, 1.75rem);
	font-weight: 600;
	line-height: 1.25;
	letter-spacing: -0.2px;
	text-wrap: balance;
	color: var(--wp--preset--color--white);
}

.dw-guide__text {
	margin: 0;
	font-size: clamp(1.0625rem, 1.5vw, 1.25rem);
	line-height: 1.6;
	color: rgba(255, 255, 255, 0.92);
}

/* Плашка на navy-800: единственный способ отделить её от карточки, не
   добавляя обводку — фон темнее подложки на одну ступень палитры. */
.dw-guide__note {
	margin: 0;
	padding: 1.25rem 1.5rem;
	background: var(--wp--preset--color--navy-800);
	border-radius: 12px;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.125rem, 1.7vw, 1.375rem);
	font-weight: 600;
	line-height: 1.3;
	color: var(--wp--preset--color--white);
}

/* ------------------------------------------------ Карточка формы */

.dw-cintake__form {
	padding: clamp(1.5rem, 3vw, 3rem);
	background: var(--wp--preset--color--white);
	border-radius: 16px;
}

/*
 * Карточку рисует обёртка, а не сама форма. На главной .dw-form стоит на
 * фотографии и потому несёт собственный фон, радиус и паддинг до 80/100.
 * Здесь она уже лежит внутри карточки: оставить её паддинг значило бы
 * сложить 48 и 100 и получить полосу пустоты в 148px до первого поля.
 */
.dw-form--intake {
	padding: 0;
	background: none;
	border-radius: 0;
}

/* Заголовок по правому краю: подписи полей под ним выключены по краю,
   и центрированная строка над ними ломает вертикаль колонки. */
.dw-form--intake .dw-form__title {
	text-align: start;
}

/* ------------------------------------------------ Загрузка снимка */

.dw-upload {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 1rem;
	padding: 1.25rem 1.5rem;
	background: var(--wp--preset--color--gray-100);
	border: 1px solid var(--wp--preset--color--gray-300);
	border-radius: 12px;
}

.dw-upload--invalid {
	border-color: #a3231b;
}

/*
 * Кнопкой служит label, но сам input остаётся в потоке фокуса — он визуально
 * скрыт, а не display:none. Поэтому обводка фокуса рисуется на label через
 * :focus-visible соседнего input: иначе клавиатурный пользователь не увидел
 * бы, где он находится.
 */
.dw-upload__btn {
	order: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 48px;
	padding: 0.875rem 1.5rem;
	background: var(--wp--preset--color--white);
	border: 1.5px solid var(--wp--preset--color--navy-700);
	border-radius: 12px;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.2;
	color: var(--wp--preset--color--navy-700);
	cursor: pointer;
	white-space: nowrap;
}

.dw-upload__btn:hover {
	background: var(--wp--preset--color--gray-50);
}

.dw-upload__input:focus-visible + .dw-upload__btn {
	outline: 2px solid var(--wp--preset--color--teal-700);
	outline-offset: 2px;
}

.dw-upload__copy {
	display: flex;
	flex-direction: column;
	gap: 0.25rem;
	min-width: 0;
}

.dw-upload__title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.125rem, 1.7vw, 1.375rem);
	font-weight: 600;
	line-height: 1.3;
	color: var(--wp--preset--color--navy-900);
}

.dw-upload__hint {
	font-size: 1rem;
	line-height: 1.6;
	color: var(--wp--preset--color--gray-700);
	overflow-wrap: anywhere;
}

/* ------------------------------------------------ Две кнопки в ряд */

.dw-form__actions {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
}

.dw-form--intake .dw-form__submit {
	width: 100%;
	min-height: 62px;
	border-radius: 12px;
}

.dw-form__wa-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 62px;
	padding: 1rem 1.5rem;
	background: var(--wp--preset--color--white);
	border: 1.5px solid var(--wp--preset--color--navy-700);
	border-radius: 12px;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--button);
	font-weight: 600;
	line-height: 1.2;
	color: var(--wp--preset--color--navy-700);
	text-decoration: none;
	text-align: center;
}

.dw-form__wa-btn:hover,
.dw-form__wa-btn:focus {
	background: var(--wp--preset--color--gray-50);
}

@media (max-width: 1023px) {
	.dw-cintake__row {
		grid-template-columns: 1fr;
	}

	/* Форма выше объяснения: мобильный макет основной, и человек, дошедший
	   до этой страницы, уже знает, зачем он здесь. */
	.dw-guide {
		order: 2;
	}

	.dw-form__actions {
		grid-template-columns: 1fr;
	}
}

/* Узкий экран: кнопка выбора файла всё равно переносится на свою строку, и при
   space-between одиночный элемент встаёт по центру — рядом с выключенными по
   правому краю подписями это читается как случайность. Колонка во всю ширину. */
@media (max-width: 560px) {
	.dw-upload {
		flex-direction: column;
		align-items: stretch;
	}

	.dw-upload__btn {
		width: 100%;
	}
}

/* ==================================================================
 * Подписи полей
 *
 * На экране только плейсхолдер, как в макете. Всплывающая подпись, которую мы
 * пробовали до этого, дёргала строку при каждом фокусе — визуально хуже, чем
 * то, что она чинила.
 *
 * Компенсация за исчезающий плейсхолдер — короткая форма: два поля, имя и
 * телефон. Забыть, что ты заполняешь, на такой длине трудно. Если полей когда-
 * нибудь станет больше четырёх, к вопросу придётся вернуться (WCAG 3.3.2).
 * ================================================================== */

.dw-field {
	position: relative;
}

/*
 * Подпись убрана с экрана, но не из разметки: она остаётся связанной с полем
 * через for/id, читалка экрана называет поле по ней, и щелчок по ней ставит
 * фокус. Видимым остаётся только плейсхолдер — как в макете.
 *
 * Приём тот же, что у .screen-reader-text: элемент размером в один пиксель
 * с clip-path. display:none или visibility:hidden убрали бы подпись и из
 * дерева доступности, и поле осталось бы безымянным.
 */
.dw-field__label {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* ==================================================================
 * Попап с формой заявки
 * ================================================================== */

.dw-modal {
	width: min(100% - 2rem, 34rem);
	max-height: calc(100dvh - 2rem);
	padding: 0;
	background: transparent;
	border: 0;
	overflow: visible;
}

.dw-modal::backdrop {
	background: rgba(8, 26, 46, 0.62);
	backdrop-filter: blur(2px);
}

.dw-modal__box {
	position: relative;
	max-height: calc(100dvh - 2rem);
	padding: clamp(1.5rem, 4vw, 2.5rem);
	background: var(--wp--preset--color--white);
	border-radius: 16px;
	box-shadow: 0 24px 60px rgba(8, 26, 46, 0.28);
	overflow-y: auto;
	text-align: start;
}

/*
 * Крестик в углу, ближнем к началу строки: в RTL это левый верхний.
 * 44px — зона нажатия, а не размер иконки.
 */
.dw-modal__close {
	position: absolute;
	inset-block-start: 0.75rem;
	inset-inline-end: 0.75rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	background: none;
	border: 0;
	border-radius: 10px;
	color: var(--wp--preset--color--gray-700);
	cursor: pointer;
}

.dw-modal__close svg {
	width: 22px;
	height: 22px;
}

.dw-modal__close:hover {
	background: var(--wp--preset--color--gray-100);
	color: var(--wp--preset--color--navy-900);
}

.dw-modal__close:focus-visible {
	outline: 2px solid var(--wp--preset--color--teal-700);
	outline-offset: 2px;
}

.dw-modal__title {
	margin: 0 0 0.5rem;
	padding-inline-end: 3rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.5rem, 3vw, 1.875rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.2px;
	color: var(--wp--preset--color--navy-900);
}

.dw-modal__lead {
	margin: 0 0 1.25rem;
	font-size: 1.0625rem;
	line-height: 1.6;
	color: var(--wp--preset--color--gray-700);
}

/* Карточку рисует .dw-modal__box, поэтому у формы внутри своих полей нет. */
.dw-form--modal {
	padding: 0;
	background: none;
	border-radius: 0;
}

/* ==================================================================
 * Страница «תודה»
 *
 * Блок жил в шаблоне без единого правила: SVG без width растягивался
 * на всю доступную ширину — отсюда галочка в 1600 пикселей.
 * ================================================================== */

.dw-thanks {
	max-width: 34rem;
	margin-inline: auto;
	padding-block: clamp(1rem, 4vw, 3rem);
	text-align: center;
}

.dw-thanks__icon {
	display: block;
	width: 72px;
	height: 72px;
	margin: 0 auto 1.5rem;
	color: var(--wp--preset--color--teal-700);
}

.dw-thanks__title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: clamp(1.875rem, 4vw, 2.75rem);
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: -0.3px;
	color: var(--wp--preset--color--navy-900);
}

.dw-thanks__text {
	margin: 0 0 2rem;
	font-size: 1.125rem;
	line-height: 1.7;
	color: var(--wp--preset--color--gray-700);
}

.dw-thanks__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 1rem;
	justify-content: center;
	margin: 0;
}

.dw-thanks__actions .dw-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 56px;
	padding: 1rem 1.75rem;
	border-radius: 12px;
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--button);
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
}

.dw-thanks__actions .dw-btn--primary {
	background: var(--wp--preset--color--teal-700);
	color: var(--wp--preset--color--white);
}

.dw-thanks__actions .dw-btn--primary:hover,
.dw-thanks__actions .dw-btn--primary:focus {
	background: var(--wp--preset--color--navy-700);
}

.dw-thanks__actions .dw-btn--outline {
	background: var(--wp--preset--color--white);
	border: 1.5px solid var(--wp--preset--color--navy-700);
	color: var(--wp--preset--color--navy-700);
}

.dw-thanks__actions .dw-btn--outline:hover,
.dw-thanks__actions .dw-btn--outline:focus {
	background: var(--wp--preset--color--gray-50);
}

/* Номер телефона не должен разрываться по дефису: на 390px строка
   «או דברו איתנו בוואטסאפ · 050-724-0808» переносилась ровно по нему,
   и номер читался как два разных. */
.dw-nowrap {
	white-space: nowrap;
}

/*
 * Формула «подготовка + постоянное восстановление = результат» на узком экране.
 *
 * Во flex-раскладке три пары «элемент — знак» переносились как попало: на 390px
 * получалось два элемента в первой строке и знак «=», оторванный от «התוצאה»,
 * во второй. Знак читался как относящийся к предыдущей строке.
 *
 * Ниже 700px формула становится столбцом: элемент, знак, элемент, знак, элемент.
 * Знаки работают разделителями, а не хвостами строк.
 *
 * Столбец целиком стоит по центру экрана, а не по правому краю, как остальной
 * текст секции. Иначе «+» и «=» центрировались по ширине блока, а слагаемые
 * жались вправо, и знаки оказывались не под серединой слов, а сбоку от них.
 * Заголовок «מה התוכנית מחברת?» центрирован вместе с формулой: он её подпись,
 * и при правом выравнивании отрывался от неё.
 */
@media (max-width: 700px) {
	.dw-what__formula-title {
		text-align: center;
	}

	.dw-formula {
		flex-direction: column;
		align-items: center;
		gap: 0.5rem;
	}

	.dw-formula__item {
		align-items: center;
		text-align: center;
	}

	.dw-formula__op {
		line-height: 1;
		color: var(--wp--preset--color--teal-700);
	}
}

/* ==================================================================
 * Contact Form 7
 *
 * Плагин оборачивает каждое поле в <span class="wpcf7-form-control-wrap">.
 * Обёртка ломает две вещи: сетку формы (лишний уровень между .dw-form__form
 * и полем) и ширину поля (span по умолчанию строчный). Ниже она делается
 * прозрачной для раскладки, а всё остальное берут уже существующие классы
 * темы — они проставлены прямо в шаблонах форм в админке.
 * ================================================================== */

.dw-form .wpcf7-form-control-wrap {
	display: block;
	width: 100%;
}

.dw-form .wpcf7-form > p,
.dw-form .wpcf7-form > div {
	margin: 0;
}

.dw-form .wpcf7-form {
	display: grid;
	gap: 1rem;
}

/* Ошибка поля: у CF7 это .wpcf7-not-valid-tip сразу после поля. */
.dw-form .wpcf7-not-valid-tip {
	display: block;
	margin-block-start: 0.375rem;
	font-size: 0.9375rem;
	line-height: 1.4;
	color: #a3231b;
}

.dw-form .wpcf7-not-valid {
	border-color: #a3231b;
}

/* Общее сообщение внизу формы. Цвета — те же, что у своих уведомлений. */
.dw-form .wpcf7-response-output {
	margin: 0;
	padding: 0.875rem 1.125rem;
	border: 1px solid var(--wp--preset--color--gray-300);
	border-radius: 12px;
	font-size: 1rem;
	line-height: 1.5;
}

.dw-form form.invalid .wpcf7-response-output,
.dw-form form.unaccepted .wpcf7-response-output,
.dw-form form.failed .wpcf7-response-output {
	border-color: #a3231b;
	background: #fdf3f2;
	color: #7a1a14;
}

.dw-form form.sent .wpcf7-response-output {
	border-color: var(--wp--preset--color--teal-700);
	background: #eefaf9;
	color: var(--wp--preset--color--navy-900);
}

/* Согласие: CF7 оборачивает чекбокс в два вложенных span. Оба возвращаются
   в строку, иначе они разрывают абзац на блоки. */
.dw-consent .wpcf7-form-control-wrap,
.dw-consent .wpcf7-form-control.wpcf7-acceptance,
.dw-consent .wpcf7-list-item {
	display: inline;
	width: auto;
	margin: 0;
}

/* Поле файла визуально скрыто, кнопкой служит label — как и в своей форме. */
.dw-upload .wpcf7-form-control-wrap {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
}

.dw-upload {
	position: relative;
}

/* Одна кнопка на всю ширину — вариант короткой формы. */
.dw-form__actions--single {
	display: block;
}

.dw-form__actions--single .dw-form__submit {
	width: 100%;
}

/* Кнопка отправки CF7 — обычный <input type="submit">, у которого нет
   flex-выравнивания; ширину и высоту задают уже описанные правила. */
.dw-form .wpcf7-spinner {
	margin-inline-start: 0.5rem;
}

/* ------------------------------------------------ Правки под разметку CF7 */

/*
 * Скрытые служебные узлы плагина не должны занимать ячейку в сетке формы.
 * Оба пустые, но в grid с gap каждый добавлял по 16px пустоты — из-за них
 * между полями появлялись разрывы вдвое больше задуманных.
 */
.dw-form .wpcf7-form > .hidden-fields-container {
	display: none;
}

.dw-form .wpcf7-form > .wpcf7-response-output:not([role]) {
	display: none;
}

.dw-form .wpcf7-response-output:empty {
	display: none;
}

/* Телефон не рвётся на две строки: перенос по дефису приходился ровно на
   номер, и «050-» оставалось висеть в конце строки отдельно от «724-0808». */
.dw-nowrap {
	white-space: nowrap;
}

/* Призыв к действию над формой на странице контактов. */
.dw-cintake__cta {
	margin: 0 0 1.5rem;
	font-size: 1.0625rem;
	line-height: 1.6;
	color: var(--wp--preset--color--gray-700);
}

/*
 * Спиннер CF7 выведен из потока.
 *
 * Плагин ставит <span class="wpcf7-spinner"> сразу после кнопки отправки. В
 * ряду из двух колонок он становился третьим элементом грида: «отправить»
 * занимала первую колонку, спиннер вторую, а кнопка ватсапа переносилась на
 * вторую строку. Абсолютное позиционирование убирает его из раскладки, при
 * этом во время отправки он остаётся видимым.
 */
.dw-form__actions {
	position: relative;
}

.dw-form__actions .wpcf7-spinner {
	position: absolute;
	inset-block-start: 50%;
	inset-inline-start: 0.875rem;
	margin: 0;
	transform: translateY(-50%);
}

/*
 * Заголовок и строка с ватсапом внутри формы CF7.
 *
 * Оба элемента живут в шаблоне формы в админке, поэтому в сетке .wpcf7-form
 * они обычные грид-элементы: собственные margin убираем, расстояние задаёт gap.
 */
.dw-form .wpcf7-form > h3,
.dw-form .wpcf7-form > .dw-form__whatsapp {
	margin: 0;
}

/* В попапе у окна уже есть свой заголовок — второй подряд лишний. */
.dw-form--modal .dw-form__title {
	display: none;
}
