/* ============================================================
   CatCo Studio — стиль сайта
   Минимализм · графит · скруглённые углы · оранжевый акцент
   ============================================================ */

:root {
	--bg-0: #0a0b0f;
	/* почти чёрный */
	--bg-1: #101218;
	/* графит */
	--bg-2: #151823;
	/* секции светлее */
	--bg-3: #191d2b;
	--surface: rgba(255, 255, 255, .04);
	--surface-2: rgba(255, 255, 255, .07);
	--line: rgba(255, 255, 255, .09);
	--text: #f4f5f8;
	--muted: #9aa1b2;
	--accent: #ff6a00;
	--accent-2: #ffb35c;
	--accent-glow: rgba(255, 106, 0, .35);
	--radius-s: 14px;
	--radius: 22px;
	--radius-l: 34px;
	--radius-xl: 48px;
	--font: "Century Gothic", "Futura", "Avenir Next", "Segoe UI", "Trebuchet MS", Arial, sans-serif;
	--shadow: 0 30px 80px rgba(0, 0, 0, .55);
	--ease: cubic-bezier(.22, .61, .21, 1);
}

* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
}

body {
	font-family: var(--font);
	background: var(--bg-0);
	color: var(--text);
	line-height: 1.6;
	overflow-x: hidden;
	-webkit-font-smoothing: antialiased;
}

img {
	display: block;
	max-width: 100%;
}

a {
	color: inherit;
	text-decoration: none;
}

button {
	font-family: inherit;
	cursor: pointer;
	border: none;
	background: none;
	color: inherit;
}

ul {
	list-style: none;
}

::selection {
	background: var(--accent);
	color: #fff;
}

/* ---------- утилиты ---------- */
.container {
	width: min(1280px, 92vw);
	margin-inline: auto;
}

.eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 12px;
	font-size: 13px;
	letter-spacing: .32em;
	text-transform: uppercase;
	color: var(--accent-2);
	font-weight: 700;
}

.eyebrow::before {
	content: "";
	width: 34px;
	height: 2px;
	background: var(--accent);
	border-radius: 2px;
}

.section-title {
	font-size: clamp(34px, 4.6vw, 64px);
	line-height: 1.06;
	font-weight: 700;
	letter-spacing: -.01em;
	margin: 18px 0 14px;
}

.section-sub {
	color: var(--muted);
	max-width: 640px;
	font-size: clamp(15px, 1.4vw, 18px);
}

section {
	position: relative;
	padding: clamp(80px, 10vw, 150px) 0;
}

/* фоновые отличия блоков */
#services {
	background: radial-gradient(1200px 600px at 85% -10%, rgba(255, 106, 0, .07), transparent 60%), var(--bg-1);
}

#process {
	background: radial-gradient(900px 500px at 10% 110%, rgba(64, 120, 255, .08), transparent 60%), var(--bg-2);
}

#whyus {
	background: linear-gradient(180deg, var(--bg-1), #12141d);
}

#formats {
	background: radial-gradient(700px 400px at 50% 0%, rgba(255, 106, 0, .06), transparent 65%), var(--bg-2);
}

#reviews {
	background: linear-gradient(160deg, #141724 0%, #0e1016 100%);
}

#order {
	background: radial-gradient(1000px 600px at 80% 50%, rgba(255, 106, 0, .1), transparent 60%), var(--bg-1);
}

#contacts {
	background: var(--bg-0);
}

/* появление при скролле */
.reveal {
	opacity: 0;
	transform: translateY(34px);
	transition: opacity .8s var(--ease), transform .8s var(--ease);
}

.reveal.visible {
	opacity: 1;
	transform: none;
}

.reveal.d1 {
	transition-delay: .1s;
}

.reveal.d2 {
	transition-delay: .2s;
}

.reveal.d3 {
	transition-delay: .3s;
}

.reveal.d4 {
	transition-delay: .4s;
}

/* ---------- кнопки ---------- */
.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	padding: 17px 34px;
	border-radius: 999px;
	font-weight: 700;
	font-size: 15px;
	letter-spacing: .02em;
	transition: transform .35s var(--ease), box-shadow .35s var(--ease), background .35s;
	will-change: transform;
}

.btn-primary {
	background: linear-gradient(135deg, var(--accent), #ff8f2e);
	color: #fff;
	box-shadow: 0 12px 40px var(--accent-glow);
}

.btn-primary:hover {
	transform: translateY(-3px) scale(1.02);
	box-shadow: 0 18px 50px var(--accent-glow);
}

.btn-ghost {
	border: 1px solid rgba(255, 255, 255, .25);
	color: var(--text);
	background: rgba(255, 255, 255, .03);
	backdrop-filter: blur(6px);
}

.btn-ghost:hover {
	transform: translateY(-3px);
	border-color: var(--accent);
	color: var(--accent-2);
}

/* ---------- навигация ---------- */
.nav {
	position: fixed;
	inset: 0 0 auto 0;
	z-index: 100;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 20px min(4vw, 48px);
	transition: background .4s, padding .4s, box-shadow .4s;
}

.nav.scrolled {
	background: rgba(10, 11, 15, .72);
	backdrop-filter: blur(18px);
	padding-block: 12px;
	box-shadow: 0 10px 40px rgba(0, 0, 0, .35);
}

.logo {
	display: flex;
	align-items: center;
	gap: 12px;
	font-weight: 700;
	font-size: 20px;
	letter-spacing: .01em;
}

.logo-mark {
	width: 42px;
	height: 42px;
	border-radius: 14px;
	position: relative;
	background: linear-gradient(135deg, var(--accent), #ff9a3d);
	box-shadow: 0 6px 22px var(--accent-glow);
	display: grid;
	place-items: center;
}

.logo-mark svg {
	width: 26px;
	height: 26px;
}

.logo small {
	display: block;
	font-size: 10px;
	letter-spacing: .3em;
	text-transform: uppercase;
	color: var(--muted);
	font-weight: 400;
}

.nav-links {
	display: flex;
	gap: 34px;
	font-size: 15px;
	color: var(--muted);
}

.nav-links a {
	position: relative;
	transition: color .3s;
}

.nav-links a:hover {
	color: #fff;
}

.nav-links a::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: -6px;
	height: 2px;
	width: 0;
	background: var(--accent);
	border-radius: 2px;
	transition: width .3s var(--ease);
}

.nav-links a:hover::after {
	width: 100%;
}

.nav-cta {
	padding: 12px 24px;
	font-size: 14px;
}

.burger {
	display: none;
	flex-direction: column;
	gap: 5px;
	padding: 8px;
}

.burger span {
	width: 26px;
	height: 2px;
	background: #fff;
	border-radius: 2px;
	transition: .3s;
}

/* ---------- HERO ---------- */
.hero {
	min-height: 100vh;
	display: flex;
	align-items: center;
	overflow: hidden;
	padding-top: 90px;
}

/* hero-bg НЕ двигается — ::after (затемнение) всегда перекрывает картинку */
.hero-bg {
	position: absolute;
	inset: 0;
	z-index: 0;
}

/* параллакс применяется к внутреннему слою со слайдами */
.hero-parallax {
	position: absolute;
	inset: -10%;
	will-change: transform;
	transition: transform .25s cubic-bezier(.22, .61, .36, 1);
}

.hero-slide {
	position: absolute;
	inset: 0;
	background-size: cover;
	background-position: center;
	opacity: 0;
	transition: opacity 1.6s ease, transform 9s linear;
	transform: scale(1.04);
}

.hero-slide.active {
	opacity: 1;
	transform: scale(1.1);
}

/* затемнение — на hero-bg, не смещается вместе с картинкой */
.hero-bg::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 3;
	background:
		linear-gradient(90deg, rgba(8, 9, 13, .96) 0%, rgba(8, 9, 13, .78) 45%, rgba(8, 9, 13, .35) 100%),
		linear-gradient(0deg, var(--bg-0) 2%, transparent 40%);
}

.hero-inner {
	position: relative;
	z-index: 2;
	display: grid;
	grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr);
	gap: 40px;
	align-items: center;
	width: min(1400px, 94vw);
	margin-inline: auto;
}

.hero-copy {
	max-width: 640px;
}

.hero h1 {
	font-size: clamp(42px, 6.4vw, 88px);
	line-height: 1.02;
	font-weight: 700;
	letter-spacing: -.015em;
	margin: 22px 0 26px;
}

.hero h1 .grad {
	background: linear-gradient(100deg, #fff 30%, var(--accent-2) 70%, var(--accent));
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
}

.hero p.sub {
	color: #c6cbd8;
	font-size: clamp(16px, 1.6vw, 20px);
	max-width: 540px;
	margin-bottom: 42px;
}

.hero-actions {
	display: flex;
	gap: 16px;
	flex-wrap: wrap;
}

.hero-stats {
	display: flex;
	gap: 40px;
	margin-top: 56px;
	color: var(--muted);
	font-size: 14px;
}

.hero-stats b {
	display: block;
	color: #fff;
	font-size: 22px;
}

/* three.js сцена */
#hero-canvas-wrap {
	position: relative;
	height: min(70vh, 640px);
	perspective: 1000px;
}

#hero-canvas-wrap canvas {
	display: block;
	width: 100%;
	height: 100%;
}

.hero-orbit-label {
	position: absolute;
	bottom: 6%;
	left: 50%;
	transform: translateX(-50%);
	font-size: 11px;
	letter-spacing: .34em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, .4);
	white-space: nowrap;
}

.scroll-hint {
	position: absolute;
	bottom: 28px;
	left: 50%;
	transform: translateX(-50%);
	z-index: 3;
	color: var(--muted);
	font-size: 11px;
	letter-spacing: .3em;
	text-transform: uppercase;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
}

.scroll-hint i {
	width: 1px;
	height: 44px;
	background: linear-gradient(var(--accent), transparent);
	animation: drip 2.2s infinite;
}

@keyframes drip {
	0% {
		transform: scaleY(0);
		transform-origin: top;
	}

	50% {
		transform: scaleY(1);
	}

	100% {
		transform: scaleY(0);
		transform-origin: bottom;
		opacity: 0;
	}
}

/* индикаторы слайдера hero */
.hero-dots {
	position: absolute;
	right: min(4vw, 48px);
	bottom: 40px;
	display: flex;
	gap: 10px;
	z-index: 5;
}

.hero-dots button {
	width: 34px;
	height: 4px;
	border-radius: 4px;
	background: rgba(255, 255, 255, .25);
	transition: .4s;
}

.hero-dots button.active {
	background: var(--accent);
	width: 54px;
}

/* ---------- Услуги (flip-карточки) ---------- */
.services-grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 26px;
	margin-top: 64px;
}

.flip-card {
	perspective: 1400px;
	height: 480px;
}

.flip-inner {
	position: relative;
	width: 100%;
	height: 100%;
	transform-style: preserve-3d;
	transition: transform .9s var(--ease), box-shadow .5s;
	border-radius: var(--radius-l);
}

.flip-card:hover .flip-inner,
.flip-card:focus-within .flip-inner {
	transform: rotateY(180deg);
}

.flip-face {
	position: absolute;
	inset: 0;
	backface-visibility: hidden;
	border-radius: var(--radius-l);
	overflow: hidden;
	box-shadow: var(--shadow);
}

.flip-front {
	background: var(--bg-2);
}

.flip-front img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 1.2s var(--ease);
}

.flip-card:hover .flip-front img {
	transform: scale(1.06);
}

.flip-front .svc-num {
	position: absolute;
	top: 22px;
	left: 24px;
	font-size: 15px;
	font-weight: 700;
	color: #fff;
	background: rgba(10, 10, 14, .55);
	backdrop-filter: blur(8px);
	padding: 8px 16px;
	border-radius: 999px;
	letter-spacing: .12em;
	border: 1px solid rgba(255, 255, 255, .14);
}

.flip-front .svc-hover-hint {
	position: absolute;
	bottom: 22px;
	left: 24px;
	right: 24px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-size: 12px;
	letter-spacing: .22em;
	text-transform: uppercase;
	color: rgba(255, 255, 255, .75);
}

.flip-back {
	transform: rotateY(180deg);
	background: linear-gradient(160deg, #1c2130, #12151f 60%);
	border: 1px solid rgba(255, 106, 0, .28);
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 18px;
	padding: 38px 32px;
}

.flip-back h3 {
	font-size: 26px;
	line-height: 1.15;
}

.flip-back h3 em {
	font-style: normal;
	color: var(--accent-2);
}

.flip-back p {
	color: var(--muted);
	font-size: 15px;
}

.flip-back .more {
	margin-top: 8px;
	align-self: flex-start;
	display: inline-flex;
	align-items: center;
	gap: 10px;
	font-weight: 700;
	font-size: 14px;
	color: var(--accent-2);
	border-bottom: 1px dashed rgba(255, 140, 40, .5);
	padding-bottom: 4px;
	transition: gap .3s, color .3s;
}

.flip-back .more:hover {
	gap: 16px;
	color: #fff;
}

/* ---------- Портфолио ---------- */
#portfolio {
	background:
		radial-gradient(1000px 500px at 15% 0%, rgba(255, 106, 0, .06), transparent 60%),
		linear-gradient(180deg, var(--bg-0), #0d0f16 40%, var(--bg-0));
}

.filters {
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	margin: 46px 0 40px;
}

.filter-btn {
	padding: 12px 26px;
	border-radius: 999px;
	font-size: 14px;
	font-weight: 700;
	color: var(--muted);
	background: var(--surface);
	border: 1px solid var(--line);
	transition: .35s var(--ease);
}

.filter-btn:hover {
	color: #fff;
	transform: translateY(-2px);
}

.filter-btn.active {
	background: linear-gradient(135deg, var(--accent), #ff8f2e);
	color: #fff;
	box-shadow: 0 10px 30px var(--accent-glow);
}

.gallery {
	columns: 3 340px;
	column-gap: 26px;
}

.work {
	break-inside: avoid;
	margin-bottom: 26px;
	border-radius: var(--radius-l);
	overflow: hidden;
	position: relative;
	cursor: pointer;
	background: var(--bg-2);
	border: 1px solid var(--line);
	transition: transform .5s var(--ease), box-shadow .5s, opacity .45s;
	box-shadow: 0 18px 50px rgba(0, 0, 0, .35);
}

.work.hidden-item {
	display: none;
}

.work img {
	width: 100%;
	object-fit: cover;
	transition: transform 1s var(--ease), filter .5s;
}

.work:hover img {
	transform: scale(1.05);
}

.work-meta {
	position: absolute;
	inset: auto 0 0 0;
	padding: 60px 26px 24px;
	background: linear-gradient(0deg, rgba(8, 9, 13, .92), transparent);
	display: flex;
	flex-direction: column;
	gap: 6px;
	transform: translateY(12px);
	opacity: .92;
	transition: .45s var(--ease);
}

.work:hover .work-meta {
	transform: none;
	opacity: 1;
}

.work-meta .cat {
	font-size: 11px;
	letter-spacing: .26em;
	text-transform: uppercase;
	color: var(--accent-2);
	font-weight: 700;
}

.work-meta h3 {
	font-size: 21px;
}

.work-tags {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	margin-top: 4px;
}

.work-tags span {
	font-size: 11px;
	padding: 4px 12px;
	border-radius: 999px;
	background: rgba(255, 255, 255, .08);
	color: #cfd4e0;
}

.work-open {
	position: absolute;
	top: 18px;
	right: 18px;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	background: rgba(10, 10, 14, .55);
	backdrop-filter: blur(8px);
	border: 1px solid rgba(255, 255, 255, .2);
	display: grid;
	place-items: center;
	opacity: 0;
	transform: scale(.7);
	transition: .4s var(--ease);
	font-size: 18px;
}

.work:hover .work-open {
	opacity: 1;
	transform: none;
}

/* модальное окно проекта */
.modal {
	position: fixed;
	inset: 0;
	z-index: 200;
	display: grid;
	place-items: center;
	background: rgba(5, 6, 9, .8);
	backdrop-filter: blur(14px);
	opacity: 0;
	pointer-events: none;
	transition: opacity .4s;
}

.modal.open {
	opacity: 1;
	pointer-events: auto;
}

.modal-card {
	width: min(1180px, 94vw);
	max-height: 92vh;
	overflow-y: auto;
	background: linear-gradient(170deg, #171b26, #0f1118);
	border: 1px solid var(--line);
	border-radius: var(--radius-xl);
	padding: clamp(26px, 4vw, 56px);
	position: relative;
	transform: translateY(40px) scale(.97);
	transition: transform .5s var(--ease);
	scrollbar-width: thin;
	scrollbar-color: var(--accent) transparent;
}

.modal.open .modal-card {
	transform: none;
}

.modal-close {
	position: sticky;
	top: 0;
	float: right;
	width: 48px;
	height: 48px;
	border-radius: 50%;
	background: var(--surface-2);
	border: 1px solid var(--line);
	font-size: 20px;
	display: grid;
	place-items: center;
	transition: .3s;
	z-index: 5;
}

.modal-close:hover {
	background: var(--accent);
	transform: rotate(90deg);
}

.modal-head .cat {
	color: var(--accent-2);
	font-size: 12px;
	letter-spacing: .3em;
	text-transform: uppercase;
	font-weight: 700;
}

.modal-head h3 {
	font-size: clamp(28px, 3.4vw, 44px);
	margin: 10px 0 6px;
}

.modal-body {
	display: grid;
	grid-template-columns: 1.15fr .85fr;
	gap: 40px;
	margin-top: 30px;
}

/* вертикальный слайдер до/после в модалке */
.vslider {
	position: relative;
	border-radius: var(--radius-l);
	overflow: hidden;
	aspect-ratio: 4/3;
	background: #000;
	touch-action: none;
}

.vslide-img {
	position: absolute;
	inset: 0;
}

.vslide-img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.vslide-before {
	clip-path: inset(0 0 50% 0);
}

.vslider-line {
	position: absolute;
	left: 0;
	right: 0;
	top: 50%;
	height: 3px;
	background: var(--accent);
	box-shadow: 0 0 24px var(--accent-glow);
	z-index: 3;
	pointer-events: none;
}

.vslider-line::after {
	content: "⇕";
	position: absolute;
	right: 22px;
	top: 50%;
	transform: translate(-50%, -50%);
	width: 44px;
	height: 44px;
	border-radius: 50%;
	background: var(--accent);
	color: #fff;
	display: grid;
	place-items: center;
	font-size: 18px;
}

.vlabel {
	position: absolute;
	z-index: 4;
	font-size: 11px;
	letter-spacing: .28em;
	text-transform: uppercase;
	padding: 7px 16px;
	border-radius: 999px;
	background: rgba(8, 9, 13, .6);
	backdrop-filter: blur(6px);
	border: 1px solid rgba(255, 255, 255, .15);
}

.vlabel.top {
	top: 16px;
	left: 16px;
	color: #bcd0ff;
}

.vlabel.bottom {
	bottom: 16px;
	left: 16px;
	color: var(--accent-2);
}

.vhint {
	margin-top: 12px;
	font-size: 12px;
	color: var(--muted);
	letter-spacing: .06em;
}

.modal-gallery {
	display: grid;
	gap: 14px;
	margin-top: 18px;
}

.modal-gallery figure {
	border-radius: var(--radius);
	overflow: hidden;
	border: 1px solid var(--line);
	position: relative;
}

.modal-gallery img {
	width: 100%;
	aspect-ratio: 16/9;
	object-fit: cover;
	transition: transform .8s var(--ease);
}

.modal-gallery figure:hover img {
	transform: scale(1.04);
}

.modal-gallery figcaption {
	position: absolute;
	left: 14px;
	bottom: 12px;
	font-size: 12px;
	background: rgba(8, 9, 13, .65);
	padding: 5px 14px;
	border-radius: 999px;
}

.modal-info h4 {
	font-size: 13px;
	letter-spacing: .24em;
	text-transform: uppercase;
	color: var(--accent-2);
	margin: 26px 0 10px;
}

.modal-info h4:first-child {
	margin-top: 0;
}

.modal-info p {
	color: #c3c8d6;
	font-size: 15px;
}

.modal-info ol {
	counter-reset: step;
	display: grid;
	gap: 12px;
}

.modal-info ol li {
	counter-increment: step;
	position: relative;
	padding-left: 46px;
	color: #c3c8d6;
	font-size: 15px;
}

.modal-info ol li::before {
	content: counter(step, decimal-leading-zero);
	position: absolute;
	left: 0;
	top: 0;
	color: var(--accent);
	font-weight: 700;
	font-size: 18px;
}

/* ---------- Процесс ---------- */
.process-track {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 26px;
	margin-top: 70px;
	position: relative;
}

.process-track::before {
	content: "";
	position: absolute;
	top: 58px;
	left: 10%;
	right: 10%;
	height: 2px;
	background: linear-gradient(90deg, transparent, rgba(255, 106, 0, .5) 15%, rgba(255, 106, 0, .5) 85%, transparent);
}

.step {
	position: relative;
	text-align: left;
	padding: 0 8px;
}

.step-num {
	font-size: clamp(56px, 6vw, 84px);
	font-weight: 700;
	line-height: 1;
	background: linear-gradient(160deg, #fff, #6d7488);
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	display: inline-block;
	position: relative;
	z-index: 1;
}

.step-dot {
	width: 18px;
	height: 18px;
	border-radius: 50%;
	background: var(--accent);
	box-shadow: 0 0 0 8px rgba(255, 106, 0, .15), 0 0 30px var(--accent-glow);
	margin: 26px 0;
	position: relative;
	z-index: 1;
}

.step h3 {
	font-size: 24px;
	margin-bottom: 10px;
}

.step p {
	color: var(--muted);
	font-size: 15px;
}

/* ---------- Почему мы ---------- */
.why-grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	margin-top: 60px;
}

.why-card {
	background: var(--surface);
	border: 1px solid var(--line);
	border-radius: var(--radius-l);
	padding: 38px 34px;
	position: relative;
	overflow: hidden;
	transition: transform .5s var(--ease), background .5s, border-color .5s;
}

.why-card::before {
	content: "";
	position: absolute;
	inset: -40%;
	background: radial-gradient(circle at 30% 20%, rgba(255, 106, 0, .16), transparent 55%);
	opacity: 0;
	transition: opacity .5s;
}

.why-card:hover {
	transform: translateY(-8px);
	border-color: rgba(255, 106, 0, .4);
	background: var(--surface-2);
}

.why-card:hover::before {
	opacity: 1;
}

.why-card .idx {
	font-size: 14px;
	font-weight: 700;
	color: var(--accent);
	letter-spacing: .2em;
}

.why-card h3 {
	font-size: 21px;
	margin: 14px 0 10px;
}

.why-card p {
	color: var(--muted);
	font-size: 15px;
	position: relative;
}

/* ---------- Форматы ---------- */
.formats-wrap {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 24px;
	margin-top: 54px;
}

.format-group {
	border-radius: var(--radius-l);
	padding: 34px 30px;
	background: linear-gradient(165deg, rgba(255, 255, 255, .06), rgba(255, 255, 255, .02));
	border: 1px solid var(--line);
}

.format-group h3 {
	font-size: 18px;
	margin-bottom: 20px;
	display: flex;
	align-items: center;
	gap: 12px;
}

.format-group h3 i {
	width: 10px;
	height: 10px;
	border-radius: 50%;
	background: var(--accent);
	box-shadow: 0 0 14px var(--accent);
}

.chips {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.chip {
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .08em;
	padding: 9px 18px;
	border-radius: 999px;
	border: 1px solid rgba(255, 255, 255, .16);
	color: #dfe3ec;
	transition: .35s var(--ease);
	cursor: default;
}

.chip:hover {
	border-color: var(--accent);
	color: var(--accent-2);
	transform: translateY(-3px);
	box-shadow: 0 8px 20px rgba(0, 0, 0, .3);
}

.formats-note {
	margin-top: 30px;
	color: var(--muted);
	font-size: 14px;
	max-width: 900px;
	border-left: 3px solid var(--accent);
	padding-left: 20px;
	border-radius: 0 var(--radius-s) var(--radius-s) 0;
}

/* ---------- Отзывы ---------- */
.t-slider {
	position: relative;
	margin-top: 56px;
}

.t-arrows {
	position: absolute;
	top: -70px;
	right: 0;
	display: flex;
	gap: 12px;
}

.t-arrow {
	width: 52px;
	height: 52px;
	border-radius: 50%;
	border: 1px solid var(--line);
	background: var(--surface);
	display: grid;
	place-items: center;
	font-size: 20px;
	transition: .35s var(--ease);
	color: #fff;
}

.t-arrow:hover {
	background: var(--accent);
	border-color: var(--accent);
	transform: scale(1.08);
}

.t-viewport {
	overflow: hidden;
	border-radius: var(--radius-xl);
}

.t-track {
	display: flex;
	transition: transform .7s var(--ease);
}

.t-slide {
	min-width: 100%;
	padding: clamp(30px, 5vw, 64px);
}

.t-card {
	display: grid;
	grid-template-columns: 140px 1fr;
	gap: clamp(24px, 4vw, 54px);
	align-items: center;
	background: linear-gradient(150deg, rgba(255, 255, 255, .07), rgba(255, 255, 255, .02));
	border: 1px solid var(--line);
	border-radius: var(--radius-xl);
	padding: clamp(26px, 4vw, 50px);
}

.t-avatar {
	width: 140px;
	height: 140px;
	border-radius: 50%;
	overflow: hidden;
	border: 3px solid rgba(255, 106, 0, .5);
	box-shadow: 0 20px 50px rgba(0, 0, 0, .45);
}

.t-avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.t-quote {
	font-size: clamp(17px, 1.9vw, 23px);
	line-height: 1.55;
	color: #eef0f6;
}

.t-quote::before {
	content: "“";
	color: var(--accent);
	font-size: 1.4em;
}

.t-quote::after {
	content: "”";
	color: var(--accent);
	font-size: 1.4em;
}

.t-name {
	margin-top: 18px;
	font-weight: 700;
	font-size: 17px;
}

.t-role {
	color: var(--muted);
	font-size: 14px;
}

.t-dots {
	display: flex;
	justify-content: center;
	gap: 12px;
	margin-top: 30px;
}

.t-dot {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background: rgba(255, 255, 255, .2);
	transition: .35s;
}

.t-dot.active {
	background: var(--accent);
	transform: scale(1.25);
	box-shadow: 0 0 16px var(--accent-glow);
}

/* ---------- CTA заказ проекта ---------- */
.order-grid {
	display: grid;
	grid-template-columns: 1.1fr .9fr;
	gap: 50px;
	align-items: center;
}

.order-visual {
	position: relative;
	border-radius: var(--radius-xl);
	overflow: hidden;
	border: 1px solid rgba(255, 106, 0, .25);
	box-shadow: var(--shadow);
}

.order-visual img {
	width: 100%;
	aspect-ratio: 7/5;
	object-fit: cover;
	transition: transform 1.4s var(--ease);
}

.order-visual:hover img {
	transform: scale(1.05) rotate(.5deg);
}

.order-visual::after {
	content: "";
	position: absolute;
	inset: 0;
	background: radial-gradient(60% 60% at 70% 30%, transparent, rgba(10, 11, 15, .4));
}

/* ---------- Форма заявки ---------- */
.form-card {
	margin-top: 60px;
	border-radius: var(--radius-xl);
	background: linear-gradient(165deg, rgba(255, 255, 255, .065), rgba(255, 255, 255, .02));
	border: 1px solid var(--line);
	padding: clamp(28px, 5vw, 64px);
	box-shadow: var(--shadow);
}

.form-grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 22px;
}

.field {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.field.full {
	grid-column: 1 / -1;
}

.field label {
	font-size: 13px;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: var(--muted);
	font-weight: 700;
}

.field input,
.field select,
.field textarea {
	background: rgba(10, 12, 18, .6);
	border: 1px solid var(--line);
	border-radius: var(--radius-s);
	padding: 16px 20px;
	color: var(--text);
	font-family: var(--font);
	font-size: 15px;
	outline: none;
	transition: border-color .3s, box-shadow .3s;
}

.field textarea {
	resize: vertical;
	min-height: 120px;
}

.field select {
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9'%3E%3Cpath d='M1 1l6 6 6-6' stroke='%23ff8f3d' stroke-width='2' fill='none'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 18px center;
}

.field input:focus,
.field select:focus,
.field textarea:focus {
	border-color: var(--accent);
	box-shadow: 0 0 0 4px rgba(255, 106, 0, .12);
}

.field.invalid input,
.field.invalid select,
.field.invalid textarea {
	border-color: #ff4d4d;
	box-shadow: 0 0 0 4px rgba(255, 60, 60, .12);
}

.err-msg {
	color: #ff7b7b;
	font-size: 13px;
	min-height: 16px;
}

.dropzone {
	border: 1.5px dashed rgba(255, 255, 255, .22);
	border-radius: var(--radius);
	padding: 26px;
	text-align: center;
	color: var(--muted);
	font-size: 14px;
	transition: .3s;
	cursor: pointer;
	background: rgba(255, 255, 255, .02);
}

.dropzone:hover,
.dropzone.dragover {
	border-color: var(--accent);
	color: var(--accent-2);
	background: rgba(255, 106, 0, .05);
}

.file-list {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 12px;
}

.file-tag {
	font-size: 12px;
	padding: 7px 14px;
	border-radius: 999px;
	background: var(--surface-2);
	border: 1px solid var(--line);
	display: inline-flex;
	gap: 8px;
	align-items: center;
}

.file-tag button {
	color: var(--muted);
	font-size: 14px;
}

.file-tag button:hover {
	color: #ff7b7b;
}

.form-foot {
	display: flex;
	align-items: center;
	gap: 22px;
	margin-top: 30px;
	flex-wrap: wrap;
}

.form-status {
	font-size: 14px;
	border-radius: var(--radius-s);
	padding: 14px 20px;
	display: none;
}

.form-status.show {
	display: block;
}

.form-status.ok {
	background: rgba(46, 200, 140, .12);
	border: 1px solid rgba(46, 200, 140, .4);
	color: #7ee7bd;
}

.form-status.warn {
	background: rgba(255, 170, 60, .1);
	border: 1px solid rgba(255, 170, 60, .4);
	color: #ffd08a;
}

.form-status.err {
	background: rgba(255, 80, 80, .1);
	border: 1px solid rgba(255, 80, 80, .4);
	color: #ff9d9d;
}

.form-note {
	font-size: 13px;
	color: var(--muted);
	max-width: 560px;
}

/* ---------- Футер ---------- */
footer {
	background: #08090c;
	border-top: 1px solid var(--line);
	padding: 80px 0 40px;
}

.footer-grid {
	display: grid;
	grid-template-columns: 1.4fr 1fr 1fr 1fr;
	gap: 40px;
}

.footer-about p {
	color: var(--muted);
	font-size: 14px;
	margin-top: 16px;
	max-width: 320px;
}

.footer-col h4 {
	font-size: 13px;
	letter-spacing: .24em;
	text-transform: uppercase;
	color: var(--accent-2);
	margin-bottom: 18px;
}

.footer-col a,
.footer-col li {
	display: block;
	color: var(--muted);
	font-size: 15px;
	margin-bottom: 12px;
	transition: color .3s, transform .3s;
}

.footer-col a:hover {
	color: #fff;
	transform: translateX(4px);
}

.footer-bottom {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 20px;
	margin-top: 60px;
	padding-top: 26px;
	border-top: 1px solid var(--line);
	color: #6d7486;
	font-size: 13px;
	flex-wrap: wrap;
}

.footer-bottom a {
	color: #8b93a6;
	transition: color .3s;
}

.footer-bottom a:hover {
	color: var(--accent-2);
}

/* политика конфиденциальности (модалка) */
.pp-modal {
	position: fixed;
	inset: 0;
	z-index: 300;
	background: rgba(5, 6, 9, .85);
	backdrop-filter: blur(12px);
	display: grid;
	place-items: center;
	opacity: 0;
	pointer-events: none;
	transition: opacity .4s;
}

.pp-modal.open {
	opacity: 1;
	pointer-events: auto;
}

.pp-card {
	width: min(760px, 92vw);
	max-height: 84vh;
	overflow: auto;
	background: #12151f;
	border: 1px solid var(--line);
	border-radius: var(--radius-xl);
	padding: clamp(28px, 4vw, 52px);
}

.pp-card h3 {
	font-size: 28px;
	margin-bottom: 18px;
}

.pp-card p,
.pp-card li {
	color: var(--muted);
	font-size: 15px;
	margin-bottom: 12px;
}

.pp-card ul {
	list-style: disc;
	padding-left: 22px;
}

/* ---------- адаптив ---------- */
@media (max-width: 1100px) {
	.services-grid {
		grid-template-columns: repeat(2, 1fr);
	}

	.why-grid,
	.formats-wrap {
		grid-template-columns: repeat(2, 1fr);
	}

	.hero-inner {
		grid-template-columns: 1fr;
	}

	#hero-canvas-wrap {
		display: none;
	}

	.modal-body {
		grid-template-columns: 1fr;
	}

	.footer-grid {
		grid-template-columns: 1fr 1fr;
	}
}

@media (max-width: 760px) {
	.nav-links {
		display: none;
	}

	.burger {
		display: flex;
	}

	.nav-links.open {
		display: flex;
		position: fixed;
		inset: 64px 4vw auto 4vw;
		flex-direction: column;
		gap: 6px;
		background: rgba(14, 16, 22, .97);
		backdrop-filter: blur(20px);
		padding: 22px;
		border-radius: var(--radius-l);
		border: 1px solid var(--line);
	}

	.nav-links.open a {
		padding: 10px;
	}

	.services-grid,
	.why-grid,
	.formats-wrap,
	.form-grid,
	.order-grid,
	.process-track {
		grid-template-columns: 1fr;
	}

	.process-track::before {
		display: none;
	}

	.step {
		padding-left: 26px;
		border-left: 2px solid rgba(255, 106, 0, .35);
	}

	.t-card {
		grid-template-columns: 1fr;
		text-align: center;
		justify-items: center;
	}

	.hero-stats {
		gap: 22px;
	}

	.flip-card {
		height: 440px;
	}

	.gallery {
		columns: 1;
	}
}

@media (prefers-reduced-motion: reduce) {

	*,
	*::before,
	*::after {
		animation-duration: .01ms !important;
		transition-duration: .2s !important;
	}

	html {
		scroll-behavior: auto;
	}
}

/* ===== Видеокурсы (изолированный блок перед футером) ===== */
.video-courses {
	position: relative;
	padding: 110px 0 90px;
	background: radial-gradient(900px 500px at 80% 10%, rgba(245, 94, 46, .07), transparent 60%), linear-gradient(180deg, #0c0d10 0%, #0a0b0e 100%);
	overflow: hidden;
}

.video-courses::before {
	content: "";
	position: absolute;
	inset: 0;
	background-image: linear-gradient(rgba(255, 255, 255, .025) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .025) 1px, transparent 1px);
	background-size: 56px 56px;
	mask-image: radial-gradient(700px 400px at 50% 0%, #000 30%, transparent 75%);
	pointer-events: none;
}

.vc-head {
	max-width: 860px;
	margin-bottom: 54px;
}

.vc-blender {
	color: var(--accent, #f55e2e);
	font-weight: 700;
}

.vc-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 28px;
}

.vc-card {
	border-radius: 26px;
	overflow: hidden;
	background: #121419;
	border: 1px solid rgba(255, 255, 255, .07);
	cursor: pointer;
	transition: transform .45s cubic-bezier(.2, .7, .2, 1), box-shadow .45s, border-color .45s;
	outline: none;
}

.vc-card:hover,
.vc-card:focus-visible {
	transform: translateY(-6px);
	border-color: rgba(245, 94, 46, .45);
	box-shadow: 0 24px 60px rgba(0, 0, 0, .55), 0 0 0 1px rgba(245, 94, 46, .18), 0 0 40px rgba(245, 94, 46, .12);
}

.vc-thumb {
	position: relative;
	aspect-ratio: 16/9;
	overflow: hidden;
	background: #0a0b0e;
}

.vc-thumb img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	transition: transform .8s cubic-bezier(.2, .7, .2, 1), filter .5s;
}

.vc-card:hover .vc-thumb img {
	transform: scale(1.05);
	filter: brightness(.85);
}

.vc-thumb::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 55%, rgba(8, 9, 11, .7));
	pointer-events: none;
}

.vc-play {
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
	width: 74px;
	height: 74px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	background: rgba(245, 94, 46, .92);
	box-shadow: 0 0 0 8px rgba(245, 94, 46, .18), 0 14px 34px rgba(0, 0, 0, .5);
	transition: transform .4s, box-shadow .4s;
	z-index: 2;
}

.vc-play svg {
	width: 30px;
	height: 30px;
	fill: #fff;
	margin-left: 3px;
}

.vc-card:hover .vc-play {
	transform: translate(-50%, -50%) scale(1.12);
	box-shadow: 0 0 0 14px rgba(245, 94, 46, .22), 0 18px 40px rgba(0, 0, 0, .55);
}

.vc-info {
	padding: 22px 24px 26px;
}

.vc-info h3 {
	font-size: 1.22rem;
	letter-spacing: .2px;
	margin-bottom: 8px;
	color: #fff;
}

.vc-info p {
	color: rgba(255, 255, 255, .62);
	font-size: .95rem;
	line-height: 1.55;
	margin-bottom: 14px;
}

.vc-watch {
	color: var(--accent, #f55e2e);
	font-weight: 700;
	font-size: .9rem;
	letter-spacing: .4px;
	text-transform: uppercase;
}

.vc-cta {
	display: flex;
	justify-content: center;
	margin-top: 46px;
}

.vc-cta .btn-outline {
	border-color: rgba(245, 94, 46, .55);
	color: #fff;
}

.vc-cta .btn-outline:hover {
	background: rgba(245, 94, 46, .12);
}

@media (max-width: 860px) {
	.vc-grid {
		grid-template-columns: 1fr;
	}

	.video-courses {
		padding: 80px 0 64px;
	}
}