/* KiimPOS — рекламный сайт.
   Цвета, шрифт и скругления взяты из самой кассы (app/src/app.css): человек,
   пришедший отсюда, должен узнать программу с первого экрана. Пары в
   light-dark() — светлое значение, тёмное; сайт следует теме телефона так же,
   как это делает касса. */

/* Кириллический файл Onest в проекте пустой (3,9 КБ sfnt без глифов), поэтому
   русский текст и здесь, и в самой кассе рисуется системным шрифтом. Латиница
   и цифры — настоящий Onest, и цены выглядят ровно как в программе. */
@font-face {
	font-family: 'Onest';
	src: url('fonts/onest-latin.woff2') format('woff2');
	font-weight: 300 800;
	font-display: swap;
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+2000-206F,
		U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
	font-family: 'Onest';
	src: url('fonts/onest-cyrillic.woff2') format('woff2');
	font-weight: 300 800;
	font-display: swap;
	unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

:root {
	color-scheme: light dark;

	--canvas: light-dark(#edf1f2, #0e1315);
	--paper: light-dark(#ffffff, #171e20);
	--ink: light-dark(#0f1a1d, #e7edee);
	--muted: light-dark(#5a686d, #90a0a5);
	--line: light-dark(#dbe3e5, #283235);
	--brand: light-dark(#0e6b75, #3aaeba);
	--on-brand: light-dark(#ffffff, #04252a);
	--brand-hover: light-dark(#0b565e, #4fc0cb);
	--brand-soft: light-dark(#e1eff0, #14343a);
	--danger: light-dark(#b02a25, #e8695f);

	--ui: 'Onest', 'Segoe UI Variable Text', 'Segoe UI', system-ui, -apple-system, sans-serif;
	--r: 10px;
	--r-lg: 18px;
	--shadow: 0 1px 2px light-dark(rgba(15, 26, 29, 0.06), rgba(0, 0, 0, 0.45)),
		0 8px 24px -12px light-dark(rgba(15, 26, 29, 0.18), rgba(0, 0, 0, 0.7));
	--ease: cubic-bezier(0.16, 1, 0.3, 1);
}

* {
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
	/* Заголовок раздела не должен уезжать под липкую шапку. */
	scroll-padding-top: 84px;
}

body {
	margin: 0;
	background: var(--canvas);
	color: var(--ink);
	font-family: var(--ui);
	font-size: 16px;
	line-height: 1.55;
	letter-spacing: -0.005em;
	-webkit-font-smoothing: antialiased;
}

.defs {
	position: absolute;
	width: 0;
	height: 0;
}

img,
svg {
	max-width: 100%;
}

/* ─── общее ─── */

section {
	max-width: 1120px;
	margin: 0 auto;
	padding: 76px 24px;
}

.h2 {
	font-size: clamp(27px, 4vw, 38px);
	line-height: 1.15;
	letter-spacing: -0.028em;
	font-weight: 700;
	margin: 0 0 10px;
	text-align: center;
}

.sub {
	margin: 0 auto 38px;
	max-width: 56ch;
	text-align: center;
	color: var(--muted);
}

.h2.left,
.sub.left {
	text-align: left;
	margin-inline: 0;
}

.eyebrow {
	margin: 0 0 12px;
	font-size: 12.5px;
	font-weight: 640;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--brand);
}

.fine {
	font-size: 13.5px;
	color: var(--muted);
	margin: 12px 0 0;
}

.center {
	text-align: center;
}

.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 52px;
	padding: 0 28px;
	border-radius: 999px;
	font-size: 16.5px;
	font-weight: 650;
	text-decoration: none;
	white-space: nowrap;
	transition:
		background-color 200ms var(--ease),
		transform 200ms var(--ease);
}
.btn:active {
	transform: scale(0.98);
}
.btn-brand {
	background: var(--brand);
	color: var(--on-brand);
}
.btn-brand:hover {
	background: var(--brand-hover);
}
.btn-sm {
	height: 40px;
	padding: 0 18px;
	font-size: 14.5px;
}

/* ─── шапка ─── */

.top {
	position: sticky;
	top: 0;
	z-index: 20;
	display: flex;
	align-items: center;
	gap: 22px;
	max-width: 1120px;
	margin: 0 auto;
	padding: 12px 24px;
	background: color-mix(in srgb, var(--canvas) 82%, transparent);
	backdrop-filter: blur(14px) saturate(140%);
	-webkit-backdrop-filter: blur(14px) saturate(140%);
	border-bottom: 1px solid transparent;
}
/* Черта появляется только когда под шапкой что-то проехало — на самом верху
   она делит пустоту. */
@supports (animation-timeline: scroll()) {
	.top {
		animation: top-line 1ms linear both;
		animation-timeline: scroll();
		animation-range: 12px 40px;
	}
	@keyframes top-line {
		to {
			border-bottom-color: var(--line);
		}
	}
}

.logo {
	display: flex;
	align-items: center;
	gap: 9px;
	font-weight: 700;
	font-size: 18px;
	letter-spacing: -0.03em;
	color: var(--ink);
	text-decoration: none;
}
.logo-mark {
	width: 26px;
	height: 26px;
	flex: none;
}
.logo span span {
	color: var(--brand);
}

.top-nav {
	display: flex;
	gap: 22px;
	margin-left: auto;
	font-size: 15px;
}
.top-nav a {
	color: var(--muted);
	text-decoration: none;
	transition: color 200ms var(--ease);
}
.top-nav a:hover {
	color: var(--ink);
}

.top-actions {
	display: flex;
	align-items: center;
	gap: 12px;
}

/* ─── переключатель языков ─── */

.lang-switch {
	position: relative;
	display: inline-flex;
	align-items: center;
	padding: 3px;
	border-radius: 999px;
	background: var(--paper);
	border: 1px solid var(--line);
	box-shadow: inset 0 1px 2px light-dark(rgba(0, 0, 0, 0.04), rgba(0, 0, 0, 0.3));
	user-select: none;
}
.lang-btn {
	position: relative;
	z-index: 2;
	background: none;
	border: none;
	padding: 4px 10px;
	min-width: 40px;
	border-radius: 999px;
	font-family: inherit;
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: var(--muted);
	cursor: pointer;
	text-align: center;
	transition: color 200ms var(--ease);
}
.lang-btn:hover {
	color: var(--ink);
}
.lang-btn.active {
	color: var(--on-brand);
}
.lang-pill {
	position: absolute;
	top: 3px;
	bottom: 3px;
	left: 3px;
	width: calc(50% - 3px);
	border-radius: 999px;
	background: var(--brand);
	box-shadow: 0 1px 4px color-mix(in srgb, var(--brand) 40%, transparent);
	transition: transform 240ms var(--ease);
	z-index: 1;
	pointer-events: none;
}
html[data-current-lang="kk"] .lang-pill {
	transform: translateX(0);
}
html[data-current-lang="ru"] .lang-pill {
	transform: translateX(100%);
}

/* ─── первый экран ─── */

.hero {
	position: relative;
	display: grid;
	grid-template-columns: 1.05fr 0.95fr;
	align-items: center;
	gap: 40px;
	padding-top: 56px;
	padding-bottom: 88px;
}

.hero::before {
	content: '';
	position: absolute;
	top: -40px;
	right: 8%;
	width: 460px;
	height: 460px;
	background: radial-gradient(circle, color-mix(in srgb, var(--brand) 20%, transparent) 0%, transparent 68%);
	pointer-events: none;
	z-index: -1;
	filter: blur(55px);
	border-radius: 50%;
	animation: ambient-float 10s ease-in-out infinite alternate;
}

@keyframes ambient-float {
	0% {
		transform: translate(0, 0) scale(1);
		opacity: 0.6;
	}
	50% {
		transform: translate(-25px, 20px) scale(1.06);
		opacity: 0.85;
	}
	100% {
		transform: translate(15px, -15px) scale(0.96);
		opacity: 0.6;
	}
}

.eyebrow-badge {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 5px 14px;
	background: var(--brand-soft);
	border: 1px solid color-mix(in srgb, var(--brand) 28%, transparent);
	border-radius: 999px;
	font-size: 12px;
	font-weight: 650;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--brand);
	margin-bottom: 18px;
	box-shadow: 0 1px 3px color-mix(in srgb, var(--brand) 10%, transparent);
}
.eyebrow-dot {
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--brand);
	box-shadow: 0 0 0 0 color-mix(in srgb, var(--brand) 70%, transparent);
	animation: pulse-dot 2.2s infinite;
}
@keyframes pulse-dot {
	0% {
		transform: scale(0.95);
		box-shadow: 0 0 0 0 color-mix(in srgb, var(--brand) 70%, transparent);
	}
	70% {
		transform: scale(1);
		box-shadow: 0 0 0 7px transparent;
	}
	100% {
		transform: scale(0.95);
		box-shadow: 0 0 0 0 transparent;
	}
}

@keyframes hero-fade-up {
	from {
		opacity: 0;
		transform: translateY(22px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.hero-text .eyebrow-badge {
	animation: hero-fade-up 0.6s var(--ease) both;
}
.hero-text h1 {
	animation: hero-fade-up 0.7s var(--ease) 0.08s both;
}
.hero-text .lead {
	animation: hero-fade-up 0.7s var(--ease) 0.16s both;
}
.hero-text .cta {
	animation: hero-fade-up 0.7s var(--ease) 0.24s both;
}
.hero-text .fine {
	animation: hero-fade-up 0.7s var(--ease) 0.32s both;
}
.hero .phone-wrap {
	animation: hero-fade-up 0.85s var(--ease) 0.2s both;
}

.hero h1 {
	/* Перенос внутри слова, если слово не помещается. Страховка, а не приём:
	   одно длинное слово в заголовке уносило вбок всю страницу — читать её
	   на телефоне было нельзя. */
	overflow-wrap: break-word;
	font-size: clamp(36px, 5.6vw, 58px);
	line-height: 1.04;
	letter-spacing: -0.038em;
	font-weight: 750;
	margin: 0 0 20px;
}

.lead {
	font-size: 18px;
	color: var(--muted);
	max-width: 46ch;
	margin: 0 0 30px;
}

.cta {
	display: flex;
	align-items: center;
	gap: 18px;
	flex-wrap: wrap;
}

/* Зачёркнутая цена стоит рядом с кнопкой, а не на ней: на кнопке она читается
   как цена нажатия. */
.price-note {
	margin: 0;
	font-size: 15.5px;
	color: var(--muted);
}
.price-note s {
	text-decoration-color: var(--danger);
	text-decoration-thickness: 2px;
}
.price-note b {
	color: var(--ink);
	font-weight: 650;
}

/* ─── телефон ─── */

.phone-wrap {
	display: flex;
	justify-content: center;
	perspective: 900px;
}

.phone {
	width: 300px;
	max-width: 100%;
	padding: 10px;
	border-radius: 40px;
	background: light-dark(#cdd8da, #222b2e);
	border: 1px solid var(--line);
	box-shadow: var(--shadow);
	/* Лёгкий наклон — чтобы это читалось как предмет на столе, а не как
	   вставленная картинка. */
	transform: rotate(-1.4deg);
	transition: transform 320ms var(--ease), box-shadow 320ms var(--ease);
	will-change: transform;
}
.phone-wrap:hover .phone {
	box-shadow: 0 16px 40px -10px light-dark(rgba(15, 26, 29, 0.28), rgba(0, 0, 0, 0.85));
}

.screen {
	position: relative;
	border-radius: 31px;
	background: var(--canvas);
	padding: 18px 14px 8px;
	overflow: hidden;
}
/* Стеклянный блик на экране */
.screen::before {
	content: '';
	position: absolute;
	top: -60%;
	left: -60%;
	width: 220%;
	height: 220%;
	background: linear-gradient(135deg, rgba(255, 255, 255, 0.08) 0%, rgba(255, 255, 255, 0.02) 35%, transparent 60%);
	pointer-events: none;
	transform: rotate(-20deg);
	z-index: 8;
}

.scr-head {
	display: flex;
	align-items: baseline;
	gap: 10px;
	margin-bottom: 12px;
}
.scr-title {
	font-size: 19px;
	font-weight: 700;
	letter-spacing: -0.03em;
	display: inline-flex;
	align-items: center;
	gap: 6px;
}
.scr-live {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background: var(--brand);
	box-shadow: 0 0 6px var(--brand);
	animation: pulse-dot 2s infinite;
}
.scr-tabs {
	display: flex;
	gap: 8px;
	margin-left: auto;
	font-size: 11px;
	font-style: normal;
}
.scr-tabs i {
	font-style: normal;
	color: var(--muted);
	padding: 3px 8px;
	border-radius: 999px;
}
.scr-tabs i.on {
	background: var(--brand-soft);
	color: var(--brand);
	font-weight: 640;
}

.tile {
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: 14px;
	padding: 11px 13px;
	margin-bottom: 8px;
	display: grid;
	gap: 1px;
}
.tile-k {
	font-size: 10.5px;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	color: var(--muted);
}
.tile-v {
	font-size: 20px;
	font-weight: 700;
	letter-spacing: -0.02em;
}
.tile-good .tile-v {
	color: var(--brand);
}
.tile-s {
	font-size: 11px;
	color: var(--muted);
}

.chart {
	display: flex;
	align-items: flex-end;
	gap: 4px;
	height: 62px;
	padding: 10px 13px;
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: 14px;
	margin-bottom: 8px;
}
.chart span {
	flex: 1;
	height: var(--h);
	border-radius: 3px 3px 1px 1px;
	background: var(--brand);
	opacity: 0.82;
	transform-origin: bottom;
	transition: height 500ms var(--ease), opacity 500ms var(--ease);
}
.chart.animated span {
	animation: chart-grow 0.75s var(--ease) both;
	animation-delay: calc(var(--i, 0) * 55ms);
}
@keyframes chart-grow {
	from {
		height: 0;
		opacity: 0.15;
		transform: scaleY(0);
	}
	to {
		height: var(--h);
		opacity: 0.82;
		transform: scaleY(1);
	}
}

.rows {
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: 14px;
	padding: 2px 13px;
	margin-bottom: 12px;
}
.rows div {
	display: flex;
	align-items: baseline;
	gap: 6px;
	font-size: 12px;
	padding: 9px 0;
	border-bottom: 1px solid var(--line);
	color: var(--muted);
}
.rows div:last-child {
	border-bottom: 0;
}
.rows b {
	color: var(--ink);
	font-weight: 640;
}
.rows em {
	margin-left: auto;
	font-style: normal;
	color: var(--ink);
	font-weight: 640;
}

.dock {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 3px;
	padding: 5px;
	border-radius: 18px;
	background: color-mix(in srgb, var(--paper) 88%, transparent);
	border: 1px solid var(--line);
}
.dock i {
	display: grid;
	justify-items: center;
	gap: 3px;
	padding: 7px 0 6px;
	border-radius: 13px;
	color: var(--muted);
	font-style: normal;
}
.dock i.on {
	background: var(--brand-soft);
	color: var(--brand);
}
.dock svg {
	width: 17px;
	height: 17px;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.9;
	stroke-linecap: round;
	stroke-linejoin: round;
}
.dock u {
	text-decoration: none;
	font-size: 9.5px;
}

/* ─── полосы ─── */

.band {
	max-width: none;
	background: var(--paper);
	border-block: 1px solid var(--line);
}
.band > * {
	max-width: 1120px;
	margin-inline: auto;
}

/* ─── цена ─── */

.price {
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	gap: 44px;
	align-items: center;
}

.price-row {
	display: flex;
	align-items: baseline;
	gap: 14px;
	margin: 0 0 14px;
	flex-wrap: wrap;
}
.price-row s {
	font-size: 30px;
	color: var(--muted);
	text-decoration-color: var(--danger);
	text-decoration-thickness: 3px;
}
.price-row b {
	font-size: clamp(50px, 8vw, 74px);
	line-height: 1;
	font-weight: 750;
	letter-spacing: -0.04em;
	color: var(--brand);
}
.price-row span {
	color: var(--muted);
}

.price-why {
	margin: 0 0 26px;
	color: var(--muted);
	max-width: 46ch;
}
.price-why b {
	color: var(--ink);
	font-weight: 650;
}

.price-list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 12px;
}
.price-list li,
.ticks li {
	position: relative;
	padding-left: 30px;
	color: var(--ink);
}
.price-list li::before,
.ticks li::before {
	content: '';
	position: absolute;
	left: 0;
	top: 0.42em;
	width: 18px;
	height: 10px;
	border-left: 2.4px solid var(--brand);
	border-bottom: 2.4px solid var(--brand);
	border-radius: 1px;
	transform: rotate(-45deg) scale(0.78);
	transform-origin: left center;
}

.ticks {
	list-style: none;
	margin: 22px 0 0;
	padding: 0;
	display: grid;
	gap: 11px;
}

/* ─── возможности ─── */

.grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
	gap: 14px;
}

.card {
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	padding: 22px 22px 24px;
	transition:
		border-color 220ms var(--ease),
		transform 220ms var(--ease),
		box-shadow 220ms var(--ease);
}
/* Карточка главного отличия: тот же размер, что у остальных, но обведена
   фирменным цветом. Делать её вдвое больше незачем — рядом она и так первая. */
.card-lead {
	border-color: color-mix(in srgb, var(--brand) 55%, var(--line));
	background: var(--brand-soft);
}
.card-lead h3 {
	color: var(--brand);
}
.card-lead p {
	color: var(--ink);
}

.card:hover {
	border-color: color-mix(in srgb, var(--brand) 45%, var(--line));
	transform: translateY(-3px);
	box-shadow: 0 10px 24px -10px light-dark(rgba(14, 107, 117, 0.16), rgba(0, 0, 0, 0.5));
}
.card h3 {
	font-size: 17.5px;
	font-weight: 650;
	letter-spacing: -0.018em;
	margin: 14px 0 6px;
}
.card p {
	margin: 0;
	font-size: 14.5px;
	color: var(--muted);
}
.ic-wrap {
	width: 44px;
	height: 44px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border-radius: 12px;
	background: var(--brand-soft);
	border: 1px solid color-mix(in srgb, var(--brand) 18%, transparent);
	transition: background 200ms var(--ease), transform 200ms var(--ease), border-color 200ms var(--ease);
}
.card:hover .ic-wrap {
	background: color-mix(in srgb, var(--brand) 20%, var(--paper));
	border-color: color-mix(in srgb, var(--brand) 35%, transparent);
	transform: scale(1.05);
}
.card-lead .ic-wrap {
	background: var(--brand);
	border-color: transparent;
}
.card-lead .ic-wrap .ic {
	stroke: var(--on-brand);
}
.ic {
	width: 24px;
	height: 24px;
	fill: none;
	stroke: var(--brand);
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
	display: block;
	transition: transform 200ms var(--ease);
}

/* ─── главное отличие ─── */

.adapt {
	display: grid;
	grid-template-columns: 1.05fr 0.95fr;
	gap: 48px;
	align-items: center;
}
.adapt .h2 {
	margin-bottom: 14px;
}
.adapt .sub {
	margin-bottom: 26px;
	max-width: 48ch;
}

/* Настоящие просьбы, а не выдуманные достоинства: так видно, что именно можно
   попросить, и что просьба — обычное дело, а не жалоба. */
.wishes {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: 10px;
}
.wishes li {
	background: var(--canvas);
	border: 1px solid var(--line);
	border-left: 3.5px solid var(--brand);
	border-radius: 14px;
	padding: 14px 18px;
	color: var(--ink);
	font-size: 15px;
	transition: transform 200ms var(--ease), border-color 200ms var(--ease), box-shadow 200ms var(--ease);
}
.wishes li:hover {
	transform: translateX(4px);
	border-left-color: var(--brand-hover);
	box-shadow: 0 4px 16px -6px light-dark(rgba(14, 107, 117, 0.14), rgba(0, 0, 0, 0.45));
}

/* ─── бирка ─── */

/* Полоса и сетка в одном элементе: фон во всю ширину даёт `.band`, а
   содержимое внутри держит общую колонку. */
.band.split {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 56px;
	align-items: center;
	padding: 76px 24px;
	max-width: 1120px;
	margin-inline: auto;
}
.band.split > * {
	max-width: none;
}

.label-demo {
	display: grid;
	justify-items: center;
}

/* Настоящие пропорции рулона: 58 на 40 мм. Содержимое по центру — так же,
   как в самой программе (Label.svelte, align-items: center): бирка висит на
   вешалке, и читают её целиком, а не сверху вниз по левому краю. */
.label {
	width: 300px;
	max-width: 100%;
	aspect-ratio: 58 / 40;
	background: #fff;
	color: #111;
	border-radius: 6px;
	box-shadow: var(--shadow);
	padding: 11px 14px 10px;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	transform: rotate(1.6deg);
	position: relative;
	overflow: hidden;
	transition: transform 300ms var(--ease), box-shadow 300ms var(--ease);
}
.label-demo:hover .label {
	transform: rotate(0.4deg) translateY(-4px) scale(1.02);
	box-shadow: 0 16px 36px -10px light-dark(rgba(0, 0, 0, 0.24), rgba(0, 0, 0, 0.8));
}
.label::after {
	content: '';
	position: absolute;
	top: -50%;
	left: -80%;
	width: 50%;
	height: 200%;
	background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.5), transparent);
	transform: rotate(25deg);
	opacity: 0;
	transition: opacity 0.2s, left 0.6s var(--ease);
	pointer-events: none;
}
.label-demo:hover .label::after {
	opacity: 1;
	left: 140%;
}
/* Магазин слева, размер в рамке справа, под ними черта — как на настоящей. */
.lb-top {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	border-bottom: 1px solid #111;
	padding-bottom: 4px;
	font-size: 9.5px;
	font-weight: 700;
	letter-spacing: 0.16em;
}
.lb-top b {
	letter-spacing: 0;
	font-size: 11px;
	line-height: 1;
	padding: 2px 5px;
	border: 1px solid #111;
	border-radius: 4px;
}
.lb-name {
	margin-top: 5px;
	font-size: 14px;
	font-weight: 650;
	letter-spacing: -0.015em;
	line-height: 1.15;
}
.lb-color {
	font-size: 11px;
	color: #555;
}
/* Полосы растягиваются долями, а не стоят в пикселях: так штрихкод занимает
   всю ширину бирки на любом экране, а не половину, как было. */
.barcode {
	margin-top: auto;
	width: 100%;
	height: 38px;
	display: flex;
	align-items: stretch;
	gap: 2px;
}
.barcode span {
	flex: 1;
	background: #111;
}
.barcode span:nth-child(3n) {
	flex: 2;
}
.barcode span:nth-child(5n) {
	flex: 0.6;
}
.barcode span:nth-child(7n) {
	flex: 2.4;
}
.lb-digits {
	margin-top: 3px;
	font-family: ui-monospace, 'Cascadia Mono', Consolas, monospace;
	font-size: 10px;
	letter-spacing: 0.14em;
	color: #333;
}
.lb-price {
	margin-top: 3px;
	font-size: 25px;
	font-weight: 750;
	letter-spacing: -0.03em;
	line-height: 1;
}

/* ─── шаги ─── */

.steps {
	list-style: none;
	counter-reset: s;
	margin: 0 0 40px;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 14px;
}
.steps li {
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	padding: 22px;
	transition: transform 200ms var(--ease), border-color 200ms var(--ease);
}
.steps li:hover {
	transform: translateY(-2px);
	border-color: color-mix(in srgb, var(--brand) 40%, var(--line));
}
.steps span {
	display: grid;
	place-items: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: var(--brand-soft);
	color: var(--brand);
	font-weight: 700;
}
.steps h3 {
	font-size: 17.5px;
	font-weight: 650;
	margin: 14px 0 6px;
}
.steps p {
	margin: 0;
	font-size: 14.5px;
	color: var(--muted);
}

/* ─── вопросы ─── */

.faq {
	max-width: 760px;
	margin: 0 auto;
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	background: var(--paper);
	overflow: hidden;
}
.faq details {
	border-bottom: 1px solid var(--line);
	transition: background-color 200ms var(--ease);
}
.faq details[open] {
	background: color-mix(in srgb, var(--brand-soft) 30%, var(--paper));
}
.faq details:last-child {
	border-bottom: 0;
}
.faq summary {
	display: flex;
	align-items: center;
	gap: 14px;
	padding: 18px 22px;
	font-size: 16.5px;
	font-weight: 600;
	cursor: pointer;
	list-style: none;
	user-select: none;
	transition: color 200ms var(--ease);
}
.faq summary::-webkit-details-marker {
	display: none;
}
.faq summary:hover {
	color: var(--brand);
}
/* Плюс, превращающийся в минус: рисуем двумя чертами, без картинки. */
.faq summary::after {
	content: '';
	margin-left: auto;
	flex: none;
	width: 13px;
	height: 13px;
	background:
		linear-gradient(var(--muted), var(--muted)) center / 100% 2px no-repeat,
		linear-gradient(var(--muted), var(--muted)) center / 2px 100% no-repeat;
	transition: transform 260ms var(--ease);
}
.faq details[open] summary::after {
	transform: rotate(90deg);
	background:
		linear-gradient(var(--brand), var(--brand)) center / 100% 2px no-repeat;
}
.faq p {
	margin: 0;
	padding: 0 22px 20px;
	color: var(--muted);
	max-width: 62ch;
	animation: faq-reveal 220ms var(--ease);
}
@keyframes faq-reveal {
	from {
		opacity: 0;
		transform: translateY(-5px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* ─── связь ─── */

.say {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 32px;
	flex-wrap: wrap;
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: var(--r-lg);
	padding: 30px 32px;
}
.say h2 {
	font-size: clamp(21px, 3vw, 27px);
	letter-spacing: -0.028em;
	margin: 0 0 6px;
}
.say p {
	margin: 0;
	color: var(--muted);
	max-width: 46ch;
}
.say-row {
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
}
.bi {
	width: 20px;
	height: 20px;
	margin-right: 9px;
	flex: none;
}
.btn-wa {
	background: #25a366;
	color: #fff;
}
.btn-wa:hover {
	background: #1f8e58;
}
/* Телеграм — второй способ, поэтому обводка, а не заливка: две одинаково
   яркие кнопки заставляют выбирать там, где выбора нет. */
.btn-tg {
	border: 1px solid var(--line);
	color: var(--ink);
	background: var(--paper);
}
.btn-tg .bi {
	color: #2f9fdc;
}
.btn-tg:hover {
	border-color: #2f9fdc;
}

/* ─── подвал ─── */

footer {
	max-width: 1120px;
	margin: 0 auto;
	padding: 34px 24px 54px;
	border-top: 1px solid var(--line);
}
.foot {
	display: flex;
	align-items: center;
	gap: 24px;
	flex-wrap: wrap;
}
.foot nav {
	display: flex;
	gap: 20px;
	margin-left: auto;
	flex-wrap: wrap;
	font-size: 14.5px;
}
.foot nav a {
	color: var(--muted);
	text-decoration: none;
}
.foot nav a:hover {
	color: var(--brand);
}

.foot-lang {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13.5px;
	color: var(--muted);
	padding: 4px 10px;
	border-radius: 999px;
	background: var(--paper);
	border: 1px solid var(--line);
}
.foot-lang button {
	background: none;
	border: none;
	padding: 0;
	font: inherit;
	color: var(--muted);
	cursor: pointer;
	transition: color 180ms var(--ease);
}
.foot-lang button:hover,
.foot-lang button.active {
	color: var(--brand);
	font-weight: 700;
}

/* ─── анимации появления при скролле ─── */

.reveal {
	opacity: 0;
	transform: translateY(22px);
	transition: opacity 0.6s var(--ease), transform 0.6s var(--ease);
	will-change: opacity, transform;
}
.reveal.revealed {
	opacity: 1;
	transform: translateY(0);
}

.reveal-stagger > * {
	opacity: 0;
	transform: translateY(18px);
	transition: opacity 0.5s var(--ease), transform 0.5s var(--ease);
}
.reveal-stagger.revealed > *:nth-child(1) { transition-delay: 0.03s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(2) { transition-delay: 0.08s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(3) { transition-delay: 0.13s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(4) { transition-delay: 0.18s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(5) { transition-delay: 0.23s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(6) { transition-delay: 0.28s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(7) { transition-delay: 0.33s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(8) { transition-delay: 0.38s; opacity: 1; transform: translateY(0); }
.reveal-stagger.revealed > *:nth-child(9) { transition-delay: 0.43s; opacity: 1; transform: translateY(0); }

/* Плавный переход при смене языка */
body.i18n-changing [data-i18n] {
	opacity: 0.75;
	transition: opacity 120ms ease;
}

/* ─── адаптивность ─── */

@media (max-width: 900px) {
	.hero,
	.price,
	.adapt,
	.band.split {
		grid-template-columns: 1fr;
	}
	.hero {
		padding-bottom: 60px;
		text-align: center;
	}
	.hero::before {
		right: 50%;
		transform: translateX(50%);
		width: 320px;
		height: 320px;
	}
	.hero h1 br {
		display: none;
	}
	.lead {
		margin-inline: auto;
	}
	.cta {
		justify-content: center;
	}
	.h2.left,
	.sub.left {
		text-align: center;
		margin-inline: auto;
	}
	.ticks {
		max-width: 36ch;
		margin-inline: auto;
	}
	.price {
		gap: 30px;
	}
	.top-nav {
		display: none;
	}
	.top-actions {
		margin-left: auto;
	}
	.top .btn-sm {
		margin-left: 0;
	}
	.foot nav {
		margin-left: 0;
	}
}

@media (max-width: 560px) {
	section {
		padding: 54px 18px;
	}
	.band.split {
		padding: 54px 18px;
	}
	.say {
		padding: 24px 20px;
	}
	.btn {
		width: 100%;
	}
	.btn-sm {
		width: auto;
	}
	.say-row {
		display: grid;
		width: 100%;
	}
	.faq summary {
		padding: 16px 18px;
		font-size: 15.5px;
	}
	.faq p {
		padding: 0 18px 18px;
	}
}

@media (max-width: 440px) {
	.top {
		padding: 10px 14px;
		gap: 10px;
	}
	.top-actions {
		gap: 8px;
	}
	.top .btn-sm {
		padding: 0 12px;
		font-size: 13.5px;
		height: 36px;
	}
	.lang-btn {
		padding: 3px 8px;
		min-width: 34px;
		font-size: 11px;
	}
}

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}
	* {
		transition: none !important;
		animation: none !important;
	}
}
