/* «Факты о нас» — бенто-сетка (главная). Анимация появления — js/facts-bento.js */
.facts {
	--fb-radius: 28px;
	--fb-gap: 12px;
	--fb-ease: cubic-bezier(.2, .8, .2, 1);
	--fb-light: var(--color-whte);
	margin: 0 0 100px;
	padding: 80px 0;
	/* серая подложка, как у «Статей и публикаций», — секции чередуются: серая / белая / серая.
	   Поверх — светлые «живые капли», как на первом экране (js/intro-drops.js вставляет svg первым потомком) */
	position: relative;
	overflow: hidden;
	background: var(--color-gry);
}

.facts > .fact__container {
	position: relative;
	z-index: 1;
}

.facts .fact__top {
	margin-bottom: 40px;
}

/* Старый блок был на тёмном фоне — заголовок там белый */
.facts .fact__title {
	color: var(--color-primary);
}

.facts__grid {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	grid-template-areas:
		"projects projects retention hours"
		"projects projects partner team"
		"start start start start";
	gap: var(--fb-gap);
}

.facts__card {
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 12px;
	min-height: 240px;
	padding: 32px;
	border-radius: var(--fb-radius, 28px);
	background: var(--fb-light, var(--color-whte));
	color: var(--color-primary);
}

.facts__card--projects { grid-area: projects; justify-content: space-between; background: var(--color-blck); color: var(--color-whte); }
.facts__card--retention { grid-area: retention; background: var(--color-alt); }
.facts__card--hours { grid-area: hours; }
.facts__card--partner { grid-area: partner; }
.facts__card--team { grid-area: team; }
.facts__card--history { grid-area: start; min-height: 0; gap: 32px; overflow: hidden; }

/* ---------- типографика ---------- */
.facts__num {
	font-size: clamp(40px, 3.6vw, 56px);
	font-weight: 500;
	line-height: 1;
	letter-spacing: -.02em;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

.facts__num--xl {
	font-size: clamp(72px, 8vw, 128px);
	letter-spacing: -.04em;
}

.facts__num--sm {
	font-size: clamp(32px, 2.6vw, 40px);
}

.facts__num--year {
	flex: none;
	font-size: clamp(56px, 6vw, 96px);
	letter-spacing: -.04em;
	color: var(--color-alt);
}

.facts__text {
	max-width: 420px;
	font-size: 16px;
	line-height: 1.4;
}

.facts__card--projects .facts__text {
	margin-top: 16px;
	font-size: 18px;
	color: rgba(var(--color-whte--rgb), .7);
}

.facts__note {
	margin-top: auto;
	font-size: 14px;
	color: rgba(var(--color-primary--rgb), .55);
}

.facts__card--retention .facts__note {
	color: rgba(var(--color-primary--rgb), .7);
}

.facts__nw {
	white-space: nowrap;
}

/* ---------- 150+: фоновая картинка (img/facts-projects-bg.jpg) ----------
   Справа у исходника тёмная полоса — держим кадр по центру, она не попадает в карточку.
   Затемнение слева — текст и полоски читаются */
.facts__card--projects {
	background:
		linear-gradient(90deg, rgba(var(--color-blck--rgb), .75) 0%, rgba(var(--color-blck--rgb), .35) 60%, rgba(var(--color-blck--rgb), .1) 100%),
		url(../img/facts-projects-bg.jpg) center / cover no-repeat,
		var(--color-blck);
}

/* ---------- 150+: полоски ---------- */
.facts__bars {
	display: flex;
	flex-direction: column;
	gap: 18px;
	margin: 32px 0 0;
	padding: 0;
	list-style: none;
}

.facts__bar {
	display: grid;
	grid-template-columns: 64px 1fr;
	align-items: baseline;
	gap: 4px 16px;
}

.facts__bar::after {
	content: "";
	grid-column: 1 / -1;
	height: 6px;
	border-radius: 3px;
	background: var(--color-alt);
	transform: scaleX(var(--val));
	transform-origin: left center;
	transition: transform 1.4s var(--fb-ease, cubic-bezier(.2, .8, .2, 1)) calc(var(--fb-delay, 0s) + .35s);
}

.facts__bar-num {
	font-size: 28px;
	font-weight: 500;
	font-variant-numeric: tabular-nums;
}

.facts__bar-label {
	font-size: 15px;
	color: rgba(var(--color-whte--rgb), .7);
}

/* ---------- 95%: кольцо ---------- */
.facts__ring {
	position: relative;
	display: flex;
	align-items: center;
	gap: 20px;
}

.facts__ring svg {
	flex: none;
	width: 72px;
	height: 72px;
	transform: rotate(-90deg);
}

.facts__ring circle {
	fill: none;
	stroke-width: 12;
}

.facts__ring-track {
	stroke: rgba(var(--color-primary--rgb), .12);
}

.facts__ring-value {
	stroke: var(--color-primary);
	stroke-linecap: round;
	stroke-dasharray: var(--val) 100;
	transition: stroke-dasharray 1.6s var(--fb-ease, cubic-bezier(.2, .8, .2, 1)) calc(var(--fb-delay, 0s) + .2s);
}

/* ---------- 43 000: «живой» счётчик ---------- */
.facts__pill {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	align-self: flex-start;
	margin-top: auto;
	padding: 8px 14px;
	border-radius: 100px;
	background: rgba(var(--color-alt--rgb), .15);
	font-size: 14px;
	white-space: nowrap;
	color: #4f7a0e;
}

.facts__pulse {
	position: relative;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--color-alt);
}

.facts__pulse::after {
	content: "";
	position: absolute;
	inset: 0;
	border-radius: 50%;
	background: var(--color-alt);
	animation: factsPulse 1.8s ease-out infinite;
}

@keyframes factsPulse {
	from { transform: scale(1); opacity: .8; }
	to { transform: scale(3); opacity: 0; }
}

/* ---------- с 2011: значок и сертификат ---------- */
.facts__badge {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	margin-bottom: 4px;
	border-radius: 50%;
	background: var(--color-alt);
}

.facts__badge svg,
.facts__role svg {
	width: 26px;
	height: 26px;
	fill: none;
	stroke: var(--color-primary);
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.facts__link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	margin-top: auto;
	font-size: 14px;
	font-weight: 500;
	color: var(--color-primary);
	text-decoration: none;
}

.facts__link svg {
	box-sizing: content-box;
	width: 14px;
	height: 14px;
	padding: 8px;
	border-radius: 50%;
	background: var(--color-gry);
	fill: none;
	stroke: currentColor;
	stroke-width: 2;
	stroke-linecap: round;
	stroke-linejoin: round;
	transition: background .3s, transform .3s;
}

.facts__link:hover svg {
	background: var(--color-alt);
	transform: rotate(45deg);
}

/* ---------- ~5000: стопка ролей (общий .images-block, как у технологий) ---------- */
.facts__stack.images-block {
	margin: 4px 0 0 -17px;
	padding: 6px 6px 6px 17px;
	overflow: visible;
}

.facts__role {
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--color-gry);
}

.facts__stack .images-block__item:nth-child(2) .facts__role { background: #dcebbf; }
.facts__stack .images-block__item:nth-child(3) .facts__role { background: #c3df8c; }
.facts__stack .images-block__item:nth-child(4) .facts__role { background: var(--color-alt); }
.facts__stack .images-block__item:nth-child(5) .facts__role { background: var(--color-blck); }
.facts__stack .images-block__item:nth-child(5) .facts__role svg { stroke: var(--color-whte); }

/* ---------- «Немного истории»: таймлайн ----------
   Лента листается (перетаскиванием, стрелками, свайпом). Вехи проявляются, когда попадают в видимую часть,
   линия за ними заливается зелёным (js/facts-bento.js). Последняя веха — «будущее»: мигающий курсор у года,
   пульсирующая точка и пунктир, уезжающий вдаль. */
.facts__history-head {
	display: flex;
	align-items: center;
	gap: 24px;
}

.facts__history-title {
	margin: 0;
	font-size: 24px;
	font-weight: 500;
}

.facts__years {
	flex: none;
	margin-left: auto;
	font-size: 18px;
	font-weight: 500;
	white-space: nowrap;
}

.facts__years span:last-child {
	font-weight: 400;
	color: rgba(var(--color-primary--rgb), .55);
}

.facts__arrows {
	display: flex;
	gap: 8px;
}

.facts__arrow {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 1px solid rgba(var(--color-primary--rgb), .15);
	border-radius: 50%;
	background: none;
	color: var(--color-primary);
	cursor: pointer;
	transition: background .3s, border-color .3s, opacity .3s;
}

.facts__arrow svg {
	width: 18px;
	height: 18px;
	fill: none;
	stroke: currentColor;
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.facts__arrow:hover {
	border-color: var(--color-alt);
	background: var(--color-alt);
}

.facts__arrow:disabled {
	opacity: .3;
	pointer-events: none;
}

.facts__timeline {
	--fb-step: 300px;
	margin: 0 -32px -8px;
	padding: 0 32px 8px;
	overflow-x: auto;
	scrollbar-width: none;
	cursor: grab;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 32px, #000 calc(100% - 80px), transparent);
	mask-image: linear-gradient(90deg, transparent, #000 32px, #000 calc(100% - 80px), transparent);
}

.facts__timeline::-webkit-scrollbar {
	display: none;
}

.facts__timeline.is-drag {
	cursor: grabbing;
	user-select: none;
}

.facts__rail {
	position: relative;
	width: max-content;
}

.facts__track {
	position: relative;
	z-index: 1;
	display: flex;
	margin: 0;
	padding: 0;
	list-style: none;
}

.facts__step {
	position: relative;
	flex: 0 0 var(--fb-step);
	padding: 0 40px 56px 0;
	box-sizing: border-box;
}

.facts__step-year {
	margin-bottom: 12px;
	font-size: 56px;
	font-weight: 500;
	line-height: 1;
	letter-spacing: -.03em;
	color: var(--color-alt);
}

.facts__step-text {
	font-size: 16px;
	line-height: 1.4;
	color: rgba(var(--color-primary--rgb), .75);
}

.facts__step-text a {
	color: var(--color-primary);
	text-decoration: underline;
	text-decoration-color: var(--color-alt);
	text-underline-offset: 3px;
}

/* точка на линии */
.facts__step::after {
	content: "";
	position: absolute;
	left: 0;
	bottom: 16px;
	width: 14px;
	height: 14px;
	box-sizing: border-box;
	border: 2px solid #cfd2cc;
	border-radius: 50%;
	background: var(--color-whte);
	transition: border-color .4s, background .4s;
}

.facts__step.is-lit::after {
	border-color: var(--color-alt);
}

.facts__line {
	position: absolute;
	left: 7px;
	right: calc(var(--fb-step) - 7px);
	bottom: 22px;
	height: 2px;
	background: rgba(var(--color-primary--rgb), .1);
}

.facts__line-fill {
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: var(--fill, 100%);
	background: var(--color-alt);
	transition: width 1s var(--fb-ease, cubic-bezier(.2, .8, .2, 1));
}

/* будущее */
.facts__step--future .facts__step-year::after {
	content: "";
	display: inline-block;
	width: 4px;
	height: .8em;
	margin-left: 6px;
	background: var(--color-alt);
	vertical-align: -.02em;
	animation: factsCaret 1s steps(1) infinite;
}

.facts__step--future .facts__step-text {
	color: var(--color-primary);
	font-weight: 500;
}

.facts__step--future::after {
	border-color: var(--color-alt);
	background: var(--color-alt);
	animation: factsBeacon 1.8s ease-out infinite;
}

.facts__step--future::before {
	content: "";
	position: absolute;
	left: 14px;
	right: 0;
	bottom: 22px;
	height: 2px;
	background: repeating-linear-gradient(90deg, var(--color-alt) 0 10px, transparent 10px 20px);
	-webkit-mask-image: linear-gradient(90deg, #000, transparent);
	mask-image: linear-gradient(90deg, #000, transparent);
	animation: factsTail 1s linear infinite;
}

@keyframes factsCaret {
	50% { opacity: 0; }
}

@keyframes factsBeacon {
	from { box-shadow: 0 0 0 0 rgba(var(--color-alt--rgb), .5); }
	to { box-shadow: 0 0 0 14px rgba(var(--color-alt--rgb), 0); }
}

@keyframes factsTail {
	to { background-position: 20px 0; }
}

/* появление вех */
.facts__timeline.is-anim .facts__step > * {
	opacity: 0;
	filter: blur(8px);
	transform: translateX(.4em);
	transition: opacity .7s ease var(--st-delay, 0s), filter .8s ease var(--st-delay, 0s), transform .9s var(--fb-ease, cubic-bezier(.2, .8, .2, 1)) var(--st-delay, 0s);
}

.facts__timeline.is-anim .facts__step.is-on > * {
	opacity: 1;
	filter: none;
	transform: none;
}

.facts__timeline.is-anim .facts__step-text {
	transition-delay: calc(var(--st-delay, 0s) + .12s);
}

/* ---------- появление (js/facts-bento.js ставит .is-anim, затем .is-in) ---------- */
.facts__grid.is-anim .facts__card {
	opacity: 0;
	filter: blur(10px);
	transform: translateY(24px);
	transition: opacity .8s ease var(--fb-delay, 0s), filter .9s ease var(--fb-delay, 0s), transform 1s var(--fb-ease, cubic-bezier(.2, .8, .2, 1)) var(--fb-delay, 0s);
}

.facts__grid.is-anim.is-in .facts__card {
	opacity: 1;
	filter: none;
	transform: none;
}

.facts__grid.is-anim:not(.is-in) .facts__bar::after {
	transform: scaleX(0);
}

.facts__grid.is-anim:not(.is-in) .facts__ring-value {
	stroke-dasharray: 0 100;
}

/* Подписи — по словам из размытия (js/blur-reveal.js) */
.facts__grid.is-in .blur-reveal__w {
	opacity: 1;
	filter: blur(0);
	transform: none;
}

/* ---------- адаптив ---------- */
/* бенто «как на десктопе» — до 1025px (iPad в альбомной ориентации), ниже — по 2 */
@media (max-width: 1024px) {
	.facts__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-template-areas:
			"projects projects"
			"retention hours"
			"partner team"
			"start start";
	}
}

/* узкий десктоп и iPad в альбомной ориентации: сетка как на десктопе, но компактнее — карточки уже, шрифт мельче */
@media (min-width: 1025px) and (max-width: 1366px) {
	.facts {
		margin-bottom: 28px;
		padding: 56px 0;
	}

	.facts .fact__top {
		margin-bottom: 28px;
	}

	.facts__card {
		gap: 10px;
		min-height: 200px;
		padding: 22px;
	}

	.facts__num {
		font-size: 40px;
	}

	.facts__num--xl {
		font-size: 96px;
	}

	.facts__num--sm {
		font-size: 30px;
	}

	.facts__text {
		font-size: 14px;
	}

	.facts__card--projects .facts__text {
		margin-top: 12px;
		font-size: 16px;
	}

	.facts__note,
	.facts__link {
		font-size: 13px;
	}

	.facts__bars {
		gap: 14px;
		margin-top: 24px;
	}

	.facts__bar-num {
		font-size: 24px;
	}

	.facts__bar-label {
		font-size: 14px;
	}

	.facts__ring {
		gap: 14px;
	}

	.facts__ring svg {
		width: 56px;
		height: 56px;
	}

	.facts__pill {
		gap: 8px;
		padding: 6px 10px;
		font-size: 12px;
	}

	.facts__badge {
		width: 44px;
		height: 44px;
	}

	.facts__badge svg {
		width: 22px;
		height: 22px;
	}

	.facts__stack .images-block__img {
		--size: 46px;
	}

	.facts__role svg {
		width: 20px;
		height: 20px;
	}
}

@media (max-width: 767px) {
	.facts {
		--fb-radius: 20px;
		margin-bottom: 60px;
		padding: 48px 0;
	}

	.facts .fact__top {
		margin-bottom: 24px;
	}

	.facts__grid {
		grid-template-columns: minmax(0, 1fr);
		grid-template-areas: "projects" "retention" "hours" "partner" "team" "start";
	}

	.facts__history-head {
		flex-wrap: wrap;
		gap: 8px 16px;
	}

	.facts__arrows {
		display: none;
	}

	.facts__timeline {
		--fb-step: 250px;
		margin: 0 -24px -8px;
		padding: 0 24px 8px;
	}

	.facts__step {
		padding-right: 24px;
	}

	.facts__step-year {
		font-size: 44px;
	}

	.facts__card {
		min-height: 0;
		padding: 24px;
	}

	.facts__years {
		margin-left: 0;
	}
}

@media (prefers-reduced-motion: reduce) {
	.facts__pulse::after,
	.facts__step--future::after,
	.facts__step--future::before,
	.facts__step--future .facts__step-year::after {
		animation: none;
	}
}
