/* ==========================================================================
   Со.Знание — design tokens
   ========================================================================== */

:root {
	--bg: #0a295f;
	--bg-deep: #082152;
	--text: #f4f2f5;
	--muted: #98aedf;
	--dim: #6482b8;
	--link: #a3bcf3;
	--border: rgba(140, 170, 235, 0.3);
	--line: rgba(140, 170, 235, 0.38);
	--accent: #079bff;
	--card-bg: rgba(20, 60, 150, 0.32);
	--tint: rgba(7, 155, 255, 0.1);
	--radius-card: 0.5rem;
	--radius-img: 0.625rem;
	--radius-pill: 62.4375rem;
	--container: 104rem;
	--gutter: 4.5rem;
	--heading-indent: 6.875rem;
	--font-display: "Canela Thin", "Times New Roman", serif;
	--font-body: "Neutral Face", "SZ Sans", "Helvetica Neue", Arial, sans-serif;
	/* The brand face is caps-only; running text that must stay readable in normal case uses this. */
	--font-text: "SZ Sans", "Helvetica Neue", Helvetica, Arial, "Segoe UI", sans-serif;
	--tracking: 0.02em;
	--section-space: 3rem;
}

/* One scale on every screen: below 1664 px wide the page is the plain 16 px design;
   from there up everything (type, spacing, images) grows in proportion to the
   window, so a 1920 or 2560 px screen shows the same picture as a 1664 px one, just
   larger. The container is 104 rem = the full width at that scale. */
html { font-size: 16px; }
@media (min-width: 1664px) {
	html { font-size: clamp(16px, 0.9615vw, 34px); }
}

@media (max-width: 1024px) {
	:root { --gutter: 3rem; --section-space: 3rem; --heading-indent: 3.75rem; }
}

@media (max-width: 768px) {
	:root { --gutter: 1.75rem; --section-space: 2.75rem; --heading-indent: 0px; }
}

@media (max-width: 390px) {
	:root { --gutter: 1.25rem; --section-space: 2.5rem; }
}

.section--spacing-compact { --section-space: 1.5rem; }
.section--spacing-spacious { --section-space: 7.5rem; }

@media (max-width: 768px) {
	.section--spacing-compact { --section-space: 1.25rem; }
	.section--spacing-spacious { --section-space: 5.5rem; }
}

/* ==========================================================================
   Reset & base
   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
}

body {
	margin: 0;
	background: var(--bg);
	color: var(--text);
	font-family: var(--font-body);
	font-size: 1rem;
	line-height: 1.5;
	letter-spacing: var(--tracking);
	overflow-x: hidden;
	-webkit-font-smoothing: antialiased;
	/* Keeps the fixed cookie-settings button (rendered by so-znanie-core in
	   wp_footer) from covering the footer's copyright/legal links when a
	   page is shorter than the viewport. */
	padding-bottom: calc(6rem + env(safe-area-inset-bottom));
}

/* Front page doesn't need bottom padding since Contacts section contains the footer */
body.home {
	padding-bottom: 0 !important;
}

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
button { font: inherit; letter-spacing: inherit; color: inherit; background: none; border: 0; cursor: pointer; }
h1, h2, h3 { letter-spacing: 0.005em; }
ul { margin: 0; padding: 0; list-style: none; }
h1, h2, h3, p { margin: 0; }
address { font-style: normal; }

.skip-link {
	position: absolute;
	left: -624.9375rem;
	top: 0;
	z-index: 100;
	background: var(--accent);
	color: #03101f;
	padding: 0.75rem 1.25rem;
	border-radius: 0 0 0.5rem 0;
}
.skip-link:focus { left: 0; }

:focus-visible { outline: 2px solid var(--accent); outline-offset: 0.1875rem; }

.container {
	max-width: var(--container);
	margin-inline: auto;
	padding-inline: var(--gutter);
}

.visually-hidden, .screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0; padding: 0; margin: -1px;
}

.section-heading {
	display: flex;
	align-items: flex-start;
	padding-left: var(--heading-indent);
}

.section-heading__number {
	font-size: 0.75rem;
	line-height: 1;
	color: var(--dim);
	min-width: 1.25rem;
	padding-top: 0.375rem;
}

.section-heading__title {
	font-family: var(--font-display);
	font-weight: 100;
	font-size: clamp(2.125rem, 5.5vw, 4rem);
	line-height: 0.95;
	margin: 0;
	text-transform: uppercase;
}

.section-link {
	color: var(--link);
	font-size: 1.25rem;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.25rem;
	white-space: nowrap;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
}
.section-link:hover { opacity: 0.8; }
.sz-arrow { display: block; flex-shrink: 0; }
.section-link .sz-arrow { width: 1.375rem; height: 0.875rem; margin-left: 0.375rem; transition: transform 0.2s ease; }
.section-link:hover .sz-arrow { transform: translateX(0.1875rem); }

.arrow-btn {
	width: 3rem;
	height: 3rem;
	border: 1px solid rgba(190, 210, 255, 0.45);
	border-radius: var(--radius-pill);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	color: var(--text);
	font-size: 1.25rem;
	flex-shrink: 0;
	transition: border-color 0.2s ease, color 0.2s ease;
}
.arrow-btn:hover { border-color: var(--accent); color: var(--text); }
.arrow-btn:disabled { opacity: 0.4; cursor: default; }

.btn {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	padding: 1.25rem 1.75rem;
	border: 1px solid var(--border);
	border-radius: var(--radius-pill);
	font-size: 0.9375rem;
	color: var(--text);
	transition: border-color 0.2s ease, background 0.2s ease;
}
.btn:hover { border-color: var(--accent); background: rgba(7, 155, 255, 0.08); }

/* ==========================================================================
   Reveal-on-scroll (guarded by prefers-reduced-motion)
   ========================================================================== */

@media (prefers-reduced-motion: no-preference) {
	.js .reveal {
		opacity: 0;
		transform: translateY(1.5rem);
		transition: opacity 0.7s ease, transform 0.7s ease;
	}
	.js .reveal.is-visible { opacity: 1; transform: none; }
}

/* ==========================================================================
   Header / navigation
   Desktop: logo, inline links, language label.
   <= 64rem: the same <nav> becomes a full-screen menu opened by the burger.
   ========================================================================== */

:root { --header-h: 4.375rem; }

.site-header {
	position: relative;
	z-index: 60;
	padding-top: 2.75rem;
}

/* Front page: transparent bar floating over the banner. */
.site-header--overlay {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	padding-bottom: 0;
	transition: padding 0.3s ease;
}

/* Inner pages: solid bar that stays on top while reading. */
.site-header--static {
	position: sticky;
	top: 0;
	background: var(--bg);
	border-bottom: 1px solid var(--line);
	padding-top: 1.5rem;
	padding-bottom: 1.5rem;
}

body.admin-bar .site-header--overlay,
body.admin-bar .site-header--static { top: 2rem; }
@media (max-width: 782px) {
	body.admin-bar .site-header--overlay,
	body.admin-bar .site-header--static { top: 2.875rem; }
}

/* Backdrop lives on a pseudo-element: a filter on the header itself would
   trap the fixed-position mobile menu inside it. */
.site-header--overlay::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 0;
	background: rgba(10, 41, 95, 0.72);
	-webkit-backdrop-filter: blur(1rem) saturate(140%);
	backdrop-filter: blur(1rem) saturate(140%);
	border-bottom: 1px solid var(--border);
	opacity: 0;
	transition: opacity 0.3s ease;
	pointer-events: none;
}
.site-header--overlay.is-scrolled::before { opacity: 1; }
.site-header--overlay.is-scrolled { padding-bottom: 0.875rem; padding-top: 0.875rem; }
.site-header--overlay.is-scrolled .site-logo svg { height: 2.25rem; }

.site-header__inner {
	position: relative;
	z-index: 2;
	display: flex;
	align-items: center;
	gap: 3rem;
	max-width: var(--container);
	margin-inline: auto;
	padding-inline: var(--gutter);
	min-height: 2.5rem;
}

.site-logo { position: relative; z-index: 3; color: var(--text); display: inline-flex; flex-shrink: 0; }
.site-logo img,
.site-logo svg { height: 2.75rem; width: auto; transition: height 0.3s ease; }

.site-nav__list {
	display: flex;
	align-items: center;
	gap: clamp(2rem, 4.4vw, 4rem);
	flex-wrap: wrap;
}

@media (min-width: 1025px) {
	.site-nav { margin-left: clamp(0px, 5vw, 4.5rem); }
}

.site-nav__list a {
	font-size: 0.75rem;
	letter-spacing: 0;
	color: var(--text);
	transition: color 0.2s ease;
}
.site-nav__list a:hover,
.site-nav__list .current-menu-item > a,
.site-nav__list a[aria-current="page"] { color: var(--accent); }

.site-nav__foot { display: none; }

.site-header__right { position: relative; z-index: 3; display: flex; align-items: center; gap: 1.25rem; margin-left: auto; }

.site-header__lang {
	font-size: 0.75rem;
	color: var(--text);
}

.nav-toggle {
	display: none;
	position: relative;
	width: 2.875rem;
	height: 2.875rem;
	border: 1px solid var(--border);
	border-radius: var(--radius-pill);
	background: rgba(10, 41, 95, 0.35);
	color: var(--text);
	transition: border-color 0.25s ease, background 0.25s ease;
	-webkit-tap-highlight-color: transparent;
}
.nav-toggle:hover,
.nav-toggle[aria-expanded="true"] { border-color: var(--accent); background: rgba(7, 155, 255, 0.12); }

.nav-toggle__bars {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 1.125rem;
	height: 0.75rem;
	margin: -0.375rem 0 0 -0.5625rem;
}
.nav-toggle__bars i {
	position: absolute;
	left: 0;
	width: 100%;
	height: 1.5px;
	border-radius: 1px;
	background: currentColor;
	transition: transform 0.35s cubic-bezier(0.7, 0, 0.2, 1), opacity 0.2s ease, top 0.35s cubic-bezier(0.7, 0, 0.2, 1), width 0.3s ease;
}
.nav-toggle__bars i:nth-child(1) { top: 0; }
.nav-toggle__bars i:nth-child(2) { top: 0.3125rem; width: 70%; left: 30%; }
.nav-toggle__bars i:nth-child(3) { top: 0.625rem; }
.nav-toggle[aria-expanded="true"] .nav-toggle__bars i:nth-child(1) { top: 0.3125rem; transform: rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle__bars i:nth-child(2) { opacity: 0; }
.nav-toggle[aria-expanded="true"] .nav-toggle__bars i:nth-child(3) { top: 0.3125rem; transform: rotate(-45deg); }

html.nav-open,
html.nav-open body { overflow: hidden; }
html.nav-open .sz-consent { display: none; }

@media (max-width: 1024px) {
	:root { --header-h: 4.75rem; }

	.site-header,
	.site-header--overlay.is-scrolled { padding-top: 0.875rem; padding-bottom: 0.875rem; }
	.site-header--static { padding-bottom: 0.875rem; }
	.site-header__inner {
		gap: 1rem;
		min-height: 2.875rem;
		padding-left: max(var(--gutter), env(safe-area-inset-left));
		padding-right: max(var(--gutter), env(safe-area-inset-right));
	}
	.site-logo img,
	.site-logo svg { height: 2.125rem; }

	.nav-toggle { display: inline-block; }
	.site-header__lang { font-size: 0.75rem; letter-spacing: 0.06em; color: var(--muted); }

	/* --- the menu panel ------------------------------------------------ */
	.site-nav {
		position: fixed;
		inset: 0;
		z-index: 1;
		display: flex;
		flex-direction: column;
		justify-content: space-between;
		gap: 2rem;
		height: 100vh;
		height: 100dvh;
		padding: calc(var(--header-h) + 1.75rem + env(safe-area-inset-top)) max(var(--gutter), env(safe-area-inset-right)) calc(1.75rem + env(safe-area-inset-bottom)) max(var(--gutter), env(safe-area-inset-left));
		overflow-y: auto;
		overscroll-behavior: contain;
		background:
			radial-gradient(90% 55% at 100% 0%, rgba(255, 138, 31, 0.2), transparent 60%),
			radial-gradient(110% 60% at 0% 100%, rgba(7, 155, 255, 0.26), transparent 62%),
			var(--bg);
		visibility: hidden;
		opacity: 0;
		clip-path: circle(0 at calc(100% - var(--gutter) - 1.4375rem) 2.3125rem);
		transition: clip-path 0.6s cubic-bezier(0.7, 0, 0.2, 1), opacity 0.25s ease, visibility 0s linear 0.6s;
	}

	/* Orb artwork glowing in the lower corner. Drawn as a masked background on
	   an in-bounds layer so it never adds scrollable overflow. */
	.site-nav { --orb: min(118vw, 47.5rem); overflow-x: hidden; }
	.site-nav::before {
		content: "";
		position: absolute;
		inset: 0;
		background: url("../img/about-sphere.webp") no-repeat;
		background-size: var(--orb) auto;
		background-position: calc(100% + var(--orb) * 0.32) calc(100% + var(--orb) * 0.2);
		-webkit-mask-image: radial-gradient(circle calc(var(--orb) * 0.48) at calc(100% - var(--orb) * 0.18) calc(100% - var(--orb) * 0.3), #000 45%, transparent 100%);
		mask-image: radial-gradient(circle calc(var(--orb) * 0.48) at calc(100% - var(--orb) * 0.18) calc(100% - var(--orb) * 0.3), #000 45%, transparent 100%);
		opacity: 0.4;
		pointer-events: none;
	}

	.site-nav.is-open {
		visibility: visible;
		opacity: 1;
		clip-path: circle(150% at calc(100% - var(--gutter) - 1.4375rem) 2.3125rem);
		transition: clip-path 0.7s cubic-bezier(0.7, 0, 0.2, 1), opacity 0.2s ease, visibility 0s;
	}

	.site-nav__list {
		position: relative;
		flex-direction: column;
		align-items: stretch;
		flex-wrap: nowrap;
		gap: 0;
		margin: 0;
		border-top: 1px solid rgba(24, 52, 86, 0.9);
	}

	.site-nav__list li {
		border-bottom: 1px solid rgba(24, 52, 86, 0.9);
		opacity: 0;
		transform: translateY(1.375rem);
		transition: opacity 0.4s ease, transform 0.5s cubic-bezier(0.2, 0.7, 0.2, 1);
	}

	.site-nav__list a {
		display: grid;
		grid-template-columns: minmax(0, 1fr) auto;
		align-items: baseline;
		gap: 0.25rem;
		padding: 1.125rem 2px;
		font-family: var(--font-display);
		font-weight: 100;
		font-size: clamp(1.875rem, 9vw, 3.25rem);
		line-height: 1.05;
		letter-spacing: 0;
		text-transform: uppercase;
		color: var(--text);
		-webkit-tap-highlight-color: transparent;
		transition: color 0.2s ease, padding-left 0.3s ease;
	}
	.site-nav__list a::after {
		content: "\2192";
		font-family: var(--font-body);
		font-size: 1.375rem;
		color: var(--accent);
		opacity: 0.55;
		transition: transform 0.3s ease, opacity 0.3s ease;
	}
	.site-nav__list a:hover,
	.site-nav__list a:active,
	.site-nav__list a:focus-visible { color: var(--accent); padding-left: 0.5rem; }
	.site-nav__list a:hover::after,
	.site-nav__list a:active::after { opacity: 1; transform: translateX(0.25rem); }
	.site-nav__list a:focus-visible { outline-offset: -2px; }

	.site-nav__foot {
		position: relative;
		display: flex;
		flex-direction: column;
		gap: 0.5rem;
		opacity: 0;
		transform: translateY(1rem);
		transition: opacity 0.4s ease, transform 0.5s cubic-bezier(0.2, 0.7, 0.2, 1);
	}
	.site-nav__when { font-size: 0.75rem; letter-spacing: 0.06em; color: var(--accent); margin-bottom: 0.875rem; }
	.site-nav__foot-label { font-size: 0.75rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); }
	.site-nav__contact { font-size: 1.25rem; line-height: 1.3; color: var(--text); align-self: flex-start; padding-block: 2px; }
	.site-nav__contact:hover,
	.site-nav__contact:active { color: var(--accent); }

	/* Staggered entrance once the panel is open. */
	.site-nav.is-open .site-nav__list li,
	.site-nav.is-open .site-nav__foot { opacity: 1; transform: none; }
	.site-nav.is-open .site-nav__list li { transition-delay: calc(0.18s + var(--i, 0) * 0.055s); }
	.site-nav.is-open .site-nav__foot { transition-delay: 0.55s; }
	.site-nav__list li:nth-child(1) { --i: 0; }
	.site-nav__list li:nth-child(2) { --i: 1; }
	.site-nav__list li:nth-child(3) { --i: 2; }
	.site-nav__list li:nth-child(4) { --i: 3; }
	.site-nav__list li:nth-child(5) { --i: 4; }
	.site-nav__list li:nth-child(6) { --i: 5; }
	.site-nav__list li:nth-child(7) { --i: 6; }
	.site-nav__list li:nth-child(8) { --i: 7; }

	/* Logged-in editors: the WordPress toolbar pushes the header down. */
	body.admin-bar .site-nav { padding-top: calc(var(--header-h) + 3.75rem + env(safe-area-inset-top)); clip-path: circle(0 at calc(100% - var(--gutter) - 1.4375rem) 5.1875rem); }
	body.admin-bar .site-nav.is-open { clip-path: circle(150% at calc(100% - var(--gutter) - 1.4375rem) 5.1875rem); }

	/* Header controls sit on top of the panel; keep the bar itself clear. */
	.site-header.is-menu-open::before { opacity: 0; }
}

@media (max-width: 400px) {
	.site-nav__list a { padding-block: 0.9375rem; }
}

/* Small / short phones: keep the whole menu on one screen. */
@media (max-width: 1024px) and (max-height: 720px) {
	.site-nav { gap: 1.25rem; padding-top: calc(var(--header-h) + 0.875rem); padding-bottom: calc(1.25rem + env(safe-area-inset-bottom)); }
	.site-nav__list a { padding-block: 0.6875rem; font-size: clamp(1.625rem, 7.4vw, 2.375rem); }
	.site-nav__when { margin-bottom: 0.5rem; }
	.site-nav__foot { gap: 0.25rem; }
	.site-nav__contact { font-size: 1.0625rem; }
}

/* Short landscape phones: tighter list so everything is reachable. */
@media (max-width: 1024px) and (max-height: 520px) {
	.site-nav { padding-top: calc(var(--header-h) + 0.5rem); gap: 1rem; }
	.site-nav__list a { padding-block: 0.625rem; font-size: 1.75rem; }
}

@media (prefers-reduced-motion: reduce) {
	.site-nav,
	.site-nav.is-open { transition: opacity 0.15s ease, visibility 0s; clip-path: none; }
	.site-nav__list li,
	.site-nav__foot { transform: none; transition: none; }
}

/* ==========================================================================
   Hero
   ========================================================================== */

.hero {
	position: relative;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	background: var(--bg);
	/* 1440 x 816 in the design; never taller than the screen. */
	min-height: clamp(40rem, min(56.67vw, 100svh), 68.75rem);
	border-bottom: 1px solid var(--line);
}

.hero__media {
	position: absolute;
	inset: 0;
	z-index: 0;
}

.hero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 60%;
}

/* Desktop framing from the design: the artwork is enlarged so the head fills
   the right half of the banner (same crop as the Figma frame at 1440 x 816). */
@media (min-width: 1025px) {
	.hero__media img {
		object-position: 50% 50%;
		transform: scale(1.36);
		transform-origin: 91.5% 60%;
	}
}

.hero__media::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(90deg, rgba(10, 41, 95, 0.9) 0%, rgba(10, 41, 95, 0.76) 26%, rgba(10, 41, 95, 0.44) 50%, rgba(10, 41, 95, 0) 66%),
		linear-gradient(180deg, rgba(10, 41, 95, 0.55) 0%, rgba(10, 41, 95, 0) 18%);
}

.hero__content {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: var(--container);
	margin: auto auto 0;
	padding: calc(var(--header-h) + 5rem) var(--gutter) 8.25rem;
	display: flex;
	justify-content: space-between;
	gap: 2.5rem;
	flex-wrap: wrap;
}

.hero__copy { max-width: 45rem; }

.hero__eyebrow {
	font-size: 1.25rem;
	line-height: 1.45;
	color: var(--muted);
	margin-bottom: 2.4375rem;
}

.hero__title {
	font-family: var(--font-display);
	font-weight: 100;
	font-size: clamp(2.5rem, 6.5vw, 5.5rem);
	line-height: 0.93;
	letter-spacing: 0;
	text-transform: uppercase;
	margin: 0 0 1.875rem;
}

.hero__title span { display: block; }

.hero__subtitle {
	max-width: 40rem;
	margin: 0 0 1.375rem;
	font-family: var(--font-text);
	font-size: 1.375rem;
	line-height: 1.38;
	letter-spacing: 0.005em;
	color: var(--text);
	text-shadow: 0 1px 1.125rem rgba(6, 26, 70, 0.55);
}
.hero__texts {
	display: grid;
	gap: 0.875rem 2.5rem;
	max-width: 45rem;
}
.hero__texts--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.hero__text {
	margin: 0;
	font-family: var(--font-text);
	font-size: 1rem;
	line-height: 1.55;
	letter-spacing: 0.005em;
	color: #d6e1f7;
	text-shadow: 0 1px 0.875rem rgba(6, 26, 70, 0.6);
}

.hero__index {
	font-size: 1.25rem;
	line-height: 1.35;
	color: var(--text);
	align-self: flex-end;
	width: 12.125rem;
}


.hero__index-words { color: var(--muted); text-shadow: 0 1px 0.875rem rgba(10, 41, 95, 0.6); }
.hero__index-words span { display: block; }

.hero__eyebrow,
.hero__meta,
.hero__index { letter-spacing: 0; }
.hero__cta { margin-top: 2.5rem; }

@media (max-width: 1024px) {
	.hero { min-height: 40rem; }
	.hero__content { padding-top: calc(var(--header-h) + 5.25rem); padding-bottom: 4.5rem; }
	.hero__index { width: auto; max-width: 13.75rem; }
	.hero__index { align-self: flex-start; }
}

/* Phones: the artwork gets its own frame at the top (profile on the right,
   the whole head in view) and melts into the page; the copy starts below the
   face instead of over it. */
@media (max-width: 768px) {
	.hero {
		--hero-media-h: min(124vw, 40rem);
		min-height: 0;
		padding-bottom: 3.5rem;
	}
	.hero__media { inset: 0 0 auto 0; height: var(--hero-media-h); }
	.hero__media img { object-position: 88% 50%; }
	.hero__media::after {
		background:
			linear-gradient(180deg, rgba(10, 41, 95, 0.75) 0, rgba(10, 41, 95, 0) 24%),
			linear-gradient(180deg, rgba(10, 41, 95, 0) 52%, rgba(10, 41, 95, 0.88) 84%, var(--bg) 100%);
	}
	.hero__content {
		flex-direction: column;
		flex-wrap: nowrap;
		gap: 1.75rem;
		margin-top: 0;
		padding-bottom: 0;
		padding-top: calc(var(--hero-media-h) * 0.72);
	}
	.hero__copy { max-width: none; }
	.hero__eyebrow { font-size: 0.9375rem; margin-bottom: 0.875rem; }
	.hero__title {
		font-size: clamp(2rem, 9.8vw, 4rem);
		margin-bottom: 1.375rem;
		text-shadow: 0 2px 1.75rem rgba(10, 41, 95, 0.75);
	}
	.hero__subtitle { font-size: 1.125rem; margin-bottom: 1rem; }
	.hero__texts--2 { grid-template-columns: 1fr; }
	.hero__text { font-size: 0.9375rem; }
	.hero__cta { display: flex; justify-content: space-between; width: 100%; margin-top: 1.625rem; padding: 1.125rem 1.5rem; }

	.hero__index {
		max-width: none;
		align-self: stretch;
		display: flex;
		align-items: baseline;
		gap: 1.25rem;
		padding-top: 1.25rem;
		border-top: 1px solid var(--border);
		font-size: 0.875rem;
	}
	.hero__index-number { margin: 0; font-size: 0.75rem; color: var(--muted); }
	.hero__index-words { display: flex; flex-wrap: wrap; gap: 0.25rem 1.125rem; }
	.hero__index-words span { display: inline; }
}

/* ==========================================================================
   About (Figma 264:883): copy on the left; on the right a 2 x 2 grid of facts,
   each hanging off a thin glowing line with a coloured node.
   ========================================================================== */

.about {
	position: relative;
	overflow: hidden;
	background: var(--bg);
	border-block: 1px solid #0a2a5f;
	padding-block: calc(var(--section-space) + 0.0625rem) calc(var(--section-space) + 0.8125rem);
}

.about__bg { position: absolute; inset: 0; z-index: 0; background: #0a2a5f; }
.about__bg img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 0; }
.about__bg::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(64.15deg, rgba(10, 42, 95, 0) 0.38%, rgba(10, 42, 95, 0.75) 23.99%, rgba(10, 42, 95, 0.75) 39.41%, rgba(10, 42, 95, 0.75) 56.55%, rgba(10, 42, 95, 0) 99.59%);
}

.about__inner {
	position: relative;
	z-index: 1;
	display: grid;
	grid-template-columns: minmax(0, 39.625rem) auto;
	column-gap: 1.4375rem;
	align-items: start;
	max-width: var(--container);
	margin-inline: auto;
	padding-inline: calc(var(--gutter) + var(--heading-indent)) var(--gutter);
}

.about__copy { display: flex; flex-direction: column; min-width: 0; }

.about__title {
	font-family: var(--font-display);
	font-weight: 100;
	font-size: 4rem;
	line-height: 1.2;
	letter-spacing: 0;
	text-transform: uppercase;
	margin: 0 0 1.875rem;
}

.about__lead {
	max-width: 38.4375rem;
	font-family: var(--font-body);
	font-size: 1.25rem;
	line-height: 1.35;
	letter-spacing: 0;
	text-transform: uppercase;
	color: var(--text);
}

.about__text {
	max-width: 38.125rem;
	margin-top: 1.5rem;
	font-family: var(--font-body);
	font-size: 0.75rem;
	line-height: 1.6;
	letter-spacing: 0;
	text-transform: uppercase;
	color: #9aa8bf;
}
.about__text p { margin: 0; }
.about__text p + p { margin-top: 1.6em; }

/* Facts: two columns 307 px apart, two rows 208 px apart. */
.about__facts {
	list-style: none;
	margin: 8.0625rem 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: 19.1875rem 13.5rem;
	grid-auto-rows: 11.25rem;
	row-gap: 1.75rem;
	align-content: start;
}

.about-fact {
	position: relative;
	height: 11.25rem;
	padding: 0.5625rem 0 0 1.6875rem;
	min-width: 0;
}
.about-fact__line { position: absolute; left: 0.25rem; top: 0; width: 1px; height: 100%; max-width: none; }
.about-fact__dot { position: absolute; left: -0.375rem; top: 3.875rem; width: 1.25rem; height: 1.25rem; max-width: none; }

.about-fact__head { display: flex; align-items: flex-start; gap: 0.875rem; margin: 0; }
.about-fact__num {
	font-family: var(--font-display);
	font-weight: 100;
	font-size: 4rem;
	line-height: 1.2;
	letter-spacing: 0;
	color: var(--text);
	white-space: nowrap;
}
.about-fact__sign { font-size: 0.645em; position: relative; top: -0.62em; margin-left: 0.04em; }
.about-fact__label {
	max-width: 5.0625rem;
	padding-top: 0.9375rem;
	font-size: 0.75rem;
	line-height: 1.17;
	letter-spacing: 0;
	text-transform: uppercase;
	color: #9aa8bf;
}
.about-fact__text,
.about-fact__words {
	max-width: 12.875rem;
	margin: 0;
	font-size: 0.875rem;
	line-height: 1.4;
	letter-spacing: 0;
	text-transform: uppercase;
	color: var(--text);
}
.about-fact__words { padding-top: 3.5rem; color: #fff; }

/* Laptops: the facts move under the copy, still two by two. */
@media (max-width: 1280px) {
	.about__inner { grid-template-columns: minmax(0, 1fr); }
	.about__facts { margin-top: 3.5rem; }
}

@media (max-width: 1024px) {
	.about__inner { padding-inline: var(--gutter); }
}

/* Phones: two screens — the copy, then the facts. */
@media (max-width: 768px) {
	.about { padding-block: 0; }
	.about__copy {
		min-height: 100vh;
		min-height: 100svh;
		justify-content: center;
		padding-block: calc(var(--header-h) + 1.25rem) 2.5rem;
	}
	.about__title { font-size: clamp(2.25rem, 12vw, 3.25rem); margin-bottom: 1.25rem; }
	.about__lead { font-size: 1rem; }
	.about__text { margin-top: 1.125rem; font-size: 0.6875rem; line-height: 1.55; }
	.about__facts {
		min-height: 100vh;
		min-height: 100svh;
		margin: 0;
		padding-block: calc(var(--header-h) + 1.25rem) 2.5rem;
		grid-template-columns: repeat(2, minmax(0, 1fr));
		grid-auto-rows: auto;
		align-content: center;
		row-gap: 2rem;
		column-gap: 1rem;
	}
	.about-fact { height: auto; min-height: 11.25rem; padding-left: 1.25rem; }
	.about-fact__num { font-size: 3rem; }
	.about-fact__head { gap: 0.5rem; }
	.about-fact__label { padding-top: 0.625rem; font-size: 0.625rem; }
	.about-fact__text,
	.about-fact__words { font-size: 0.75rem; }
	.about-fact__words { padding-top: 2.75rem; }
	.about-fact__dot { top: 2.875rem; }
}

/* ==========================================================================
   Shared: carousel rail (news / experts / partners)
   ========================================================================== */

/* Heading, "all items" link and arrows sit on the design's columns: the link
   starts where the about image does (60% of the container). */
.rail-header {
	display: grid;
	grid-template-columns: minmax(0, 59.7%) minmax(0, 1fr) auto;
	align-items: end;
	gap: 0;
	margin-bottom: 2.5625rem;
}
.rail-header .section-heading { grid-column: 1; }
.rail-header .section-link { grid-column: 2; padding-bottom: 0.375rem; }

.rail-header__controls { display: flex; gap: 1.125rem; grid-column: 3; align-self: center; }

.rail {
	display: flex;
	gap: 1.5rem;
	overflow-x: auto;
	scroll-snap-type: x proximity;
	margin-left: var(--heading-indent);
	/* Scrolled with the arrows, drag or trackpad; the bar itself is hidden as in the design. */
	scrollbar-width: none;
}
.rail::-webkit-scrollbar { display: none; }
/* Desktop: the row runs past the container to the screen edge, as in the design. */
@media (min-width: 769px) {
	.rail {
		margin-right: calc(var(--gutter) * -1 - max(0px, (100vw - var(--container)) / 2));
		padding-right: var(--gutter);
		scroll-padding-right: var(--gutter);
	}
}
.rail > * { scroll-snap-align: start; }
.rail > .reveal { opacity: 1 !important; transform: none !important; transition: none; }
.rail { overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; }
.rail-progress { display: none; }

.arrow-btn { -webkit-tap-highlight-color: transparent; }

@media (max-width: 1024px) {
	.rail-header { grid-template-columns: minmax(0, 1fr) auto; }
	.rail-header .section-link { grid-row: 2; grid-column: 1 / -1; padding: 0.75rem 0 0; }
	.rail-header .section-heading { grid-row: 1; }
	.rail-header__controls { grid-column: 2; grid-row: 1; }
}

@media (max-width: 768px) {
	.rail-header { margin-bottom: 1.5rem; gap: 0.875rem 1rem; }
	.rail-header .section-link { font-size: 1rem; }
	.rail-header__controls { margin-left: auto; }
	.arrow-btn { width: 2.75rem; height: 2.75rem; }
	/* Cards run to the screen edge, snap one at a time and the next one peeks in. */
	.rail {
		margin-inline: calc(var(--gutter) * -1);
		padding-inline: var(--gutter);
		padding-bottom: 0.375rem;
		scroll-padding-inline: var(--gutter);
		scroll-snap-type: x mandatory;
		gap: 0.875rem;
		scrollbar-width: none;
		touch-action: pan-x pan-y;
	}
	.rail::-webkit-scrollbar { display: none; }
	.rail > * { scroll-snap-stop: always; }
	.rail-progress {
		display: block;
		height: 2px;
		margin-top: 1.125rem;
		border-radius: 2px;
		background: var(--border);
		overflow: hidden;
	}
	.rail-progress__bar {
		display: block;
		height: 100%;
		width: 30%;
		border-radius: 2px;
		background: var(--accent);
		transform-origin: left center;
		will-change: transform;
	}
}

/* ==========================================================================
   News & Experts background artwork (each section carries its own layer so
   the two stay independent when an editor hides or reorders one of them)
   ========================================================================== */


.news-experts__bg {
	position: absolute;
	inset: 0;
	z-index: 0;
	overflow: hidden;
}
.news-experts__bg img { width: 100%; height: 100%; object-fit: cover; }
.news-experts__bg::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10, 41, 95, 0.5), rgba(10, 41, 95, 0.12) 40%, rgba(10, 41, 95, 0.4)); }

.news, .experts {
	position: relative;
	overflow: hidden;
	border-bottom: 1px solid var(--line);
	padding-block: var(--section-space);
}
.news > .container, .experts > .container { position: relative; z-index: 1; }

/* News cards */

.news-card {
	width: 19.0625rem;
	flex-shrink: 0;
	border: 1px solid var(--border);
	border-radius: var(--radius-card);
	background: var(--card-bg);
	-webkit-backdrop-filter: blur(0.75rem);
	backdrop-filter: blur(0.75rem);
	overflow: hidden;
	display: flex;
	flex-direction: column;
}

.news-card__image { height: 13.0625rem; overflow: hidden; }
.news-card__image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease; }
.news-card:hover .news-card__image img { transform: scale(1.04); }

.news-card__body { padding: 0.9375rem 0.9375rem 0.9375rem; display: flex; flex-direction: column; gap: 0.875rem; flex: 1; min-height: 9.875rem; }
.news-card__date { font-size: 0.75rem; line-height: 1.4; color: var(--muted); }
.news-card__title { font-size: 0.875rem; line-height: 1.43; color: var(--text); text-transform: uppercase; }
.news-card__action { margin-top: auto; display: flex; justify-content: flex-end; }

@media (max-width: 480px) {
	.news-card { width: 78vw; }
}

/* Expert cards */

.expert-card {
	width: 12.1875rem;
	flex-shrink: 0;
	border: 1px solid var(--border);
	border-radius: var(--radius-card);
	overflow: hidden;
	background: var(--card-bg);
	-webkit-backdrop-filter: blur(0.75rem);
	backdrop-filter: blur(0.75rem);
}

.expert-card__portrait { height: 13.75rem; position: relative; background: var(--card-bg); }
.expert-card__portrait img { width: 100%; height: 100%; object-fit: cover; }
.expert-card__portrait img { filter: grayscale(1); }
.expert-card__portrait--empty { display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-size: 3rem; color: var(--border); }

.experts-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(12.25rem, 1fr));
	gap: 1.5rem;
}
.experts-grid .expert-card { width: auto; }
.experts-grid .expert-card__portrait { height: auto; aspect-ratio: 196 / 220; }
@media (max-width: 480px) {
	.experts-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.75rem; }
}

.expert-card__bio { padding: 0.75rem 0.8125rem 1rem; display: flex; flex-direction: column; gap: 0.5rem; min-height: 7.125rem; }
.expert-card__name { font-size: 0.875rem; line-height: 1.3; }
.expert-card__role { font-size: 0.75rem; line-height: 1.42; color: var(--muted); }

@media (max-width: 480px) {
	.expert-card { width: 58vw; }
}

/* ==========================================================================
   FAQ
   ========================================================================== */

.faq {
	position: relative;
	border-bottom: 1px solid var(--line);
	overflow: hidden;
	padding-block: var(--section-space);
}

.faq__bg { position: absolute; inset: 0; z-index: 0; }
.faq__bg img { width: 100%; height: 100%; object-fit: cover; }
.faq__bg::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(90deg, rgba(10, 41, 95, 0.62) 0%, rgba(10, 41, 95, 0.42) 38%, rgba(10, 41, 95, 0.5) 100%),
		rgba(6, 26, 70, 0.12);
}
.faq .section-heading__title,
.faq-item__question { text-shadow: 0 1px 1rem rgba(6, 26, 70, 0.55); }

.faq__inner {
	position: relative;
	z-index: 1;
	max-width: var(--container);
	margin-inline: auto;
	padding-inline: var(--gutter);
	display: flex;
	gap: 3.75rem;
	justify-content: space-between;
	flex-wrap: wrap;
}

.faq__heading { max-width: 26.25rem; }
.faq__lead { font-size: 0.875rem; line-height: 1.57; color: #b7c6ea; margin-top: 2.5rem; margin-left: var(--heading-indent); text-shadow: 0 1px 0.75rem rgba(6, 26, 70, 0.7); }

.faq__list { flex: 1; min-width: 17.5rem; max-width: 46.5rem; }

.faq-item { border-top: 1px solid var(--line); }
.faq-item:last-child { border-bottom: 1px solid var(--line); }

.faq-item__question {
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	padding: 1.1875rem 1.5rem;
	text-align: left;
	font-size: 1.25rem;
	line-height: 1.6;
	color: var(--text);
}

.faq-item__icon { font-size: 1.5rem; line-height: 1; color: var(--muted); flex-shrink: 0; transition: transform 0.25s ease; }
.faq-item[open]:not(.is-closing) .faq-item__icon { transform: rotate(45deg); }

.faq-item__answer { padding: 0 1.5rem 1.5rem; font-size: 0.875rem; line-height: 1.6; color: var(--muted); }

.faq-item--plain .faq-item__question { cursor: default; }

.faq-item summary { list-style: none; cursor: pointer; }
.faq-item summary::-webkit-details-marker { display: none; }

@media (prefers-reduced-motion: no-preference) {
	/* The row height itself is animated from main.js; the text fades in with it. */
	.faq-item[open] .faq-item__answer { animation: sz-fade-in 0.45s ease both; }
	.faq-item.is-closing .faq-item__answer { animation: none; opacity: 0; transition: opacity 0.2s ease; }
	.faq-item__question { transition: color 0.2s ease; }
}
@keyframes sz-fade-in { from { opacity: 0; transform: translateY(-0.375rem); } to { opacity: 1; transform: none; } }

/* The artwork stays put while a row opens: the section's clip box grows, the
   picture does not rescale (on phones it is pinned to the viewport). */
.faq { overflow: clip; }
@media (max-width: 900px) {
	.faq__bg img { position: sticky; top: 0; height: 100vh; height: 100svh; }
}

@media (max-width: 900px) {
	.faq__inner { flex-direction: column; gap: 2rem; }
}

@media (max-width: 640px) {
	.faq__lead { margin-top: 1.125rem; }
	.faq-item__question { padding: 1.125rem 0.25rem; font-size: 1.0625rem; line-height: 1.3; }
	/* Phones: the globe sits right behind the text, so the wash is stronger. */
	.faq__bg::after {
		background:
			linear-gradient(180deg, rgba(10, 41, 95, 0.78) 0%, rgba(10, 41, 95, 0.62) 45%, rgba(10, 41, 95, 0.7) 100%);
	}
	.faq-item__answer { padding: 0 0.25rem 1.25rem; }
}

/* ==========================================================================
   Partners
   ========================================================================== */

.partners { overflow: hidden; border-bottom: 1px solid var(--line); padding-block: var(--section-space); position: relative; z-index: 1; background: var(--bg); }

.partner-card {
	width: 12.25rem;
	height: 12.375rem;
	flex-shrink: 0;
	border: 1px solid var(--border);
	border-radius: var(--radius-card);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.5rem;
}
.partner-card img { max-width: 100%; max-height: 4.5rem; object-fit: contain; filter: grayscale(1) brightness(1.9); opacity: 0.95; transition: filter 0.2s ease, opacity 0.2s ease; }
.partner-card:hover { border-color: rgba(190, 210, 255, 0.6); }
.partner-card:hover img { opacity: 1; }
.partner-card--empty { color: var(--muted); font-size: 0.8125rem; text-align: center; }

@media (max-width: 480px) {
	.partner-card { width: 44vw; height: 10rem; }
}

/* ==========================================================================
   Contacts
   ========================================================================== */

.contacts { position: relative; overflow: hidden; padding-block: var(--section-space) 1.625rem; }

.contacts__bg { position: absolute; inset: 0; z-index: 0; }
.contacts__bg img { width: 100%; height: 100%; object-fit: cover; }
.contacts__bg::after {
	content: "";
	position: absolute;
	inset: 0;
	/* Darker at the top (under the heading) and at the bottom (under the legal
	   line), lighter in the middle so the artwork still shows. */
	background:
		linear-gradient(180deg, rgba(8, 33, 82, 0.82) 0%, rgba(8, 33, 82, 0.5) 22%, rgba(8, 33, 82, 0.3) 48%, rgba(8, 33, 82, 0.5) 74%, rgba(8, 33, 82, 0.88) 100%),
		rgba(10, 41, 95, 0.12);
}

.contacts__inner {
	position: relative;
	z-index: 1;
	max-width: var(--container);
	margin-inline: auto;
	padding-inline: var(--gutter);
}

/* Left: heading and details; right: the map card on the design's second
   column (it starts where the about image and "all news" link do). */
.contacts__layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 25.75rem;
	column-gap: 2.5rem;
	padding-right: 6.9375rem;
	align-items: stretch;
}

.contacts__main { display: flex; flex-direction: column; }

.contacts__grid {
	display: grid;
	grid-template-columns: 20.625rem minmax(0, 1fr);
	align-items: start;
	margin: auto 0 5.75rem var(--heading-indent);
	padding-top: 2.5rem;
}

.contacts__lead { font-size: 0.875rem; line-height: 1.5; color: #d2def7; text-shadow: 0 1px 0.875rem rgba(6, 26, 70, 0.75); }

.contacts__details { display: flex; flex-direction: column; gap: 1.25rem; }

.contact-row { display: flex; gap: 0.9375rem; align-items: flex-start; }
.contact-row svg { flex-shrink: 0; color: #b7c8ef; margin-top: -2px; filter: drop-shadow(0 1px 0.5rem rgba(6, 26, 70, 0.7)); }
.contact-row__text { font-size: 0.875rem; line-height: 1.5; color: #e4ecfb; text-shadow: 0 1px 0.875rem rgba(6, 26, 70, 0.75); }
.contact-row a:hover { color: #fff; }
.contact-row__list { display: flex; flex-direction: column; gap: 0.375rem; }
.contacts__layout--no-map { grid-template-columns: minmax(0, 1fr); padding-right: 0; }
.contacts__layout--no-map .contacts__grid { margin-top: 4rem; margin-bottom: 1.5rem; }
.contacts .section-heading__title { text-shadow: 0 2px 1.5rem rgba(6, 26, 70, 0.6); }

/* Yandex map card: the light widget is tinted to the site's blue, framed by a
   soft inner vignette; route and "open in Yandex Maps" sit on a glass bar. */
.contacts__map {
	position: relative;
	aspect-ratio: 1 / 1;
	border: 1px solid var(--border);
	border-radius: var(--radius-img);
	overflow: hidden;
	background: var(--bg-deep);
	box-shadow: 0 1.875rem 4.375rem rgba(2, 12, 40, 0.45);
	isolation: isolate;
	display: flex;
	flex-direction: column;
}

.contacts__map-view { position: relative; flex: 1; min-height: 0; }

.contacts__map-frame {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
	filter: invert(90%) hue-rotate(180deg) saturate(1.35) brightness(0.92) contrast(1.05);
}

/* Blue wash + vignette above the map; it never takes pointer events. */
.contacts__map-shade {
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background:
		linear-gradient(180deg, rgba(10, 41, 95, 0.45) 0%, rgba(10, 41, 95, 0) 20%),
		rgba(18, 60, 150, 0.14);
	box-shadow: inset 0 0 2.5rem rgba(6, 25, 70, 0.55);
}

.contacts__map-bar {
	position: relative;
	z-index: 2;
	display: flex;
	gap: 0.5rem;
	padding: 0.75rem;
	border-top: 1px solid var(--border);
	background: rgba(10, 41, 95, 0.92);
}

.contacts__map-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	min-height: 2.75rem;
	padding: 0 1.125rem;
	border: 1px solid rgba(190, 210, 255, 0.4);
	border-radius: var(--radius-pill);
	background: rgba(10, 41, 95, 0.7);
	-webkit-backdrop-filter: blur(0.75rem);
	backdrop-filter: blur(0.75rem);
	font-size: 0.75rem;
	color: var(--text);
	transition: border-color 0.2s ease, background 0.2s ease, transform 0.2s ease;
}
.contacts__map-btn:hover { border-color: rgba(190, 210, 255, 0.8); background: rgba(20, 65, 150, 0.8); }
.contacts__map-btn--primary { flex: 1; justify-content: space-between; }
.contacts__map-btn--primary .sz-arrow { transition: transform 0.2s ease; }
.contacts__map-btn--primary:hover .sz-arrow { transform: translateX(0.1875rem); }
.contacts__map-btn--icon { width: 2.75rem; padding: 0; flex-shrink: 0; }

/* Touch screens: the map ignores touches until it is tapped (see initMapLock),
   so swiping past it scrolls the page instead of the map. */
.contacts__map-lock { display: none; }
@media (hover: none) {
	.contacts__map-lock {
		position: absolute;
		inset: 0;
		z-index: 1;
		display: flex;
		align-items: center;
		justify-content: center;
		background: transparent;
		-webkit-tap-highlight-color: transparent;
	}
	.contacts__map-lock span {
		padding: 0.5625rem 1rem;
		border: 1px solid rgba(190, 210, 255, 0.4);
		border-radius: var(--radius-pill);
		background: rgba(10, 41, 95, 0.75);
		-webkit-backdrop-filter: blur(0.5rem);
		backdrop-filter: blur(0.5rem);
		font-size: 0.75rem;
		color: var(--text);
	}
	.contacts__map.is-active .contacts__map-lock { display: none; }
}


@media (max-width: 1200px) {
	.contacts__layout { padding-right: 0; grid-template-columns: minmax(0, 1fr) 22.5rem; }
	.contacts__grid { grid-template-columns: minmax(0, 1fr); gap: 1.75rem; margin-bottom: 2.5rem; }
}

@media (max-width: 900px) {
	.contacts__layout { grid-template-columns: 1fr; row-gap: 2.25rem; }
	.contacts__grid { margin: 0 0 0 var(--heading-indent); padding-top: 2.25rem; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 2rem; }
	.contacts__map { max-width: 32.5rem; }
}

@media (max-width: 640px) {
	.contacts { padding-bottom: calc(1.625rem + 4rem); }
	.contacts__grid { grid-template-columns: 1fr; gap: 1.75rem; padding-top: 1.75rem; }
	.contact-row__text { font-size: 0.9375rem; }
	.contact-row a { display: inline-block; padding-block: 0.25rem; }
	.contacts__map { max-width: none; }
}

/* Copyright and legal links on the design's three columns. */
.contacts__legal {
	display: grid;
	grid-template-columns: 20.625rem 20.625rem minmax(0, 1fr);
	align-items: center;
	margin: 3.5rem 0 0 var(--heading-indent);
	padding-top: 1.25rem;
	border-top: 1px solid rgba(190, 210, 255, 0.4);
	font-size: 0.75rem;
	color: #d2def7;
	text-shadow: 0 1px 0.75rem rgba(6, 26, 70, 0.8);
}
.contacts__legal > p { margin: 0; }
.contacts__legal-links,
.contacts__legal-links .site-footer__links,
.contacts__legal-links li { display: contents; }
.contacts__legal-links a:hover { color: var(--text); }
.contacts__legal-links a { justify-self: start; }
.contacts__legal-links a,
.site-footer__links a { display: inline-block; padding-block: 0.25rem; }

@media (max-width: 900px) {
	.contacts__legal { grid-template-columns: 1fr; gap: 0.5rem; margin-top: 2.5rem; margin-left: 0; }
}

/* ==========================================================================
   Footer
   ========================================================================== */

.site-footer { background: var(--bg); padding: 1.875rem var(--gutter); border-top: 1px solid var(--border); }

.site-footer__inner {
	max-width: var(--container);
	margin-inline: auto;
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	align-items: center;
	column-gap: 1.5rem;
	row-gap: 0.75rem;
	font-size: 0.75rem;
	color: var(--muted);
}

.site-footer__inner > p { margin: 0; }

/* Passes the two legal links through as direct grid items so each lands in
   its own column instead of clustering together in one. */
.site-footer__links { display: contents; }
.site-footer__links li { display: contents; }
.site-footer__links a:hover { color: var(--text); }

@media (max-width: 640px) {
	.site-footer__inner { grid-template-columns: 1fr; text-align: left; }
}

/* ==========================================================================
   Generic content pages (news list, single post, tag archive, legal pages, 404/503)
   ========================================================================== */

.page-hero {
	border-bottom: 1px solid var(--border);
	padding: 4rem var(--gutter) 3.5rem;
}
.page-hero__inner { max-width: var(--container); margin-inline: auto; }
.page-hero__title {
	font-family: var(--font-display);
	font-weight: 100;
	font-size: clamp(2rem, 6vw, 4rem);
	line-height: 1;
	text-transform: uppercase;
	overflow-wrap: break-word;
	margin: 0 0 1rem;
}
.page-hero__lead { color: var(--muted); font-size: 1rem; max-width: 40rem; }

@media (max-width: 640px) {
	.page-hero { padding: 2.5rem var(--gutter) 2.25rem; }
	.section-heading { gap: 1rem; }
	.news-grid { grid-template-columns: 1fr; }
}

.content-section { padding: var(--section-space) 0; }
.content-section__inner { max-width: var(--container); margin-inline: auto; padding-inline: var(--gutter); }

.news-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(17.5rem, 1fr));
	gap: 1.5rem;
}
/* In the archive grid the cards fill their column (the fixed width is for the rail). */
.news-grid .news-card { width: auto; }
.news-grid .news-card__image { height: auto; aspect-ratio: 3 / 2; }

.pagination {
	display: flex;
	gap: 0.5rem;
	justify-content: center;
	margin-top: 4rem;
	flex-wrap: wrap;
}
.pagination .page-numbers {
	min-width: 2.5rem;
	height: 2.5rem;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: 1px solid var(--border);
	border-radius: var(--radius-pill);
	color: var(--muted);
	padding-inline: 0.75rem;
}
.pagination .page-numbers.current { color: var(--bg); background: var(--text); border-color: var(--text); }
.pagination .page-numbers:hover:not(.current) { border-color: var(--accent); color: var(--text); }

.empty-state { color: var(--muted); padding: 2.5rem 0; }

.article {
	max-width: 51.25rem;
	margin-inline: auto;
	padding-inline: var(--gutter);
}
.article__meta { color: var(--muted); font-size: 0.8125rem; margin-bottom: 1.25rem; display: flex; gap: 1rem; flex-wrap: wrap; }
.article__title {
	font-family: var(--font-display);
	font-weight: 100;
	font-size: clamp(2rem, 5vw, 3.5rem);
	line-height: 1.05;
	margin: 0 0 2rem;
}
.article__image { border-radius: var(--radius-img); overflow: hidden; margin-bottom: 2.5rem; border: 1px solid var(--border); aspect-ratio: 3 / 2; }
.article__image img { width: 100%; height: 100%; object-fit: cover; }

.article__body { font-family: var(--font-text); font-size: 1.0625rem; line-height: 1.7; letter-spacing: 0.005em; color: var(--text); }
.article__body > * + * { margin-top: 1.4em; }
.article__body h2 { font-family: var(--font-display); font-weight: 100; font-size: 2rem; }
.article__body h3 { font-size: 1.375rem; }
.article__body img { border-radius: var(--radius-img); }
.article__body a { color: var(--accent); text-decoration: underline; }
.article__body { overflow-wrap: anywhere; }
.article__body iframe,
.article__body video { max-width: 100%; }
.article__body table { display: block; max-width: 100%; overflow-x: auto; }
.article__body blockquote { border-left: 2px solid var(--accent); padding-left: 1.5rem; color: var(--muted); font-style: normal; }

.article__tags { margin-top: 3rem; display: flex; gap: 0.625rem; flex-wrap: wrap; }
.article__tags a {
	font-size: 0.75rem;
	color: var(--muted);
	border: 1px solid var(--border);
	border-radius: var(--radius-pill);
	padding: 0.5rem 1rem;
}
.article__tags a:hover { color: var(--text); border-color: var(--accent); }

.page-content {
	max-width: 48.75rem;
	margin-inline: auto;
	padding-inline: var(--gutter);
	font-size: 1rem;
	line-height: 1.75;
	font-family: var(--font-text);
	letter-spacing: 0.005em;
}
.page-content > * + * { margin-top: 1.4em; }
.page-content { overflow-wrap: anywhere; }
.page-content table { display: block; max-width: 100%; overflow-x: auto; }
.page-content iframe,
.page-content video { max-width: 100%; }

/* 404 / 503 */

.status-page {
	min-height: 70vh;
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	padding: 6rem var(--gutter);
}
.status-page__code {
	font-family: var(--font-display);
	font-weight: 100;
	font-size: clamp(4.5rem, 14vw, 10rem);
	line-height: 1;
	color: var(--muted);
	margin-bottom: 1rem;
}
.status-page__title {
	font-family: var(--font-display);
	font-weight: 100;
	font-size: clamp(1.75rem, 4vw, 2.5rem);
	margin-bottom: 1rem;
}
.status-page__text { color: var(--muted); max-width: 30rem; margin-inline: auto 1.5rem; }
.status-page .btn { margin-top: 1.5rem; }

/* Maintenance page (503) */
.sz-maintenance { padding-bottom: 0 !important; }
.maintenance {
	position: relative;
	min-height: 100vh;
	min-height: 100svh;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	background: var(--bg);
	isolation: isolate;
}
.maintenance__bg { position: absolute; inset: 0; z-index: -1; }
.maintenance__bg img { width: 100%; height: 100%; object-fit: cover; }
.maintenance__bg::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		radial-gradient(70% 60% at 50% 48%, rgba(8, 33, 82, 0.72), rgba(8, 33, 82, 0.2) 100%),
		linear-gradient(180deg, rgba(8, 33, 82, 0.8) 0%, rgba(8, 33, 82, 0.25) 30%, rgba(8, 33, 82, 0.3) 70%, rgba(8, 33, 82, 0.85) 100%);
}
.maintenance__top,
.maintenance__foot {
	width: 100%;
	max-width: var(--container);
	margin-inline: auto;
	padding: 2.25rem var(--gutter);
}
.maintenance__foot { margin-top: auto; padding-block: 1.5rem 1.75rem; font-size: 0.75rem; color: #d2def7; }
.maintenance__foot p { margin: 0; text-shadow: 0 1px 0.75rem rgba(6, 26, 70, 0.8); }
.maintenance__body {
	margin: auto;
	width: min(100%, 47.5rem);
	padding: 2rem var(--gutter);
	text-align: center;
}
.maintenance__status {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.75rem;
	padding: 0.5rem 1.125rem;
	border: 1px solid rgba(190, 210, 255, 0.4);
	border-radius: var(--radius-pill);
	background: rgba(10, 41, 95, 0.55);
	-webkit-backdrop-filter: blur(0.625rem);
	backdrop-filter: blur(0.625rem);
	font-size: 0.75rem;
	line-height: 1;
	color: var(--text);
}
.maintenance__dot {
	width: 0.5rem;
	height: 0.5rem;
	border-radius: 50%;
	background: #ff8a1f;
	box-shadow: 0 0 0.75rem #ff8a1f;
}
@media (prefers-reduced-motion: no-preference) {
	.maintenance__dot { animation: sz-pulse 2s ease-in-out infinite; }
	.maintenance__body > * { animation: sz-rise 0.8s cubic-bezier(0.2, 0.7, 0.2, 1) both; }
	.maintenance__body > :nth-child(2) { animation-delay: 0.08s; }
	.maintenance__body > :nth-child(3) { animation-delay: 0.16s; }
	.maintenance__body > :nth-child(4) { animation-delay: 0.24s; }
}
@keyframes sz-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }
@keyframes sz-rise { from { opacity: 0; transform: translateY(1.125rem); } to { opacity: 1; transform: none; } }
.maintenance__title {
	font-family: var(--font-display);
	font-weight: 100;
	font-size: clamp(2.125rem, 7vw, 4.5rem);
	line-height: 0.98;
	letter-spacing: 0;
	text-transform: uppercase;
	margin: 0 0 1.5rem;
	overflow-wrap: break-word;
	text-shadow: 0 2px 1.75rem rgba(6, 26, 70, 0.6);
}
.maintenance__text {
	max-width: 32.5rem;
	margin: 0 auto;
	font-family: var(--font-text);
	font-size: 1.0625rem;
	line-height: 1.6;
	color: #e4ecfb;
	text-shadow: 0 1px 0.875rem rgba(6, 26, 70, 0.75);
}
.maintenance__btn {
	margin-top: 2.25rem;
	background: rgba(10, 41, 95, 0.55);
	border-color: rgba(190, 210, 255, 0.45);
	-webkit-backdrop-filter: blur(0.625rem);
	backdrop-filter: blur(0.625rem);
}
.sz-maintenance .sz-consent { display: none !important; }
@media (max-width: 640px) {
	.maintenance__top { padding-block: 1.5rem; }
	.maintenance__text { font-size: 1rem; }
	.maintenance__btn { width: 100%; justify-content: space-between; padding: 1.125rem 1.5rem; }
}

/* ==========================================================================
   Legal documents (Privacy Policy, User Agreement)
   ========================================================================== */

.legal-hero {
	position: relative;
	overflow: hidden;
	padding-block: 4.5rem 4rem;
	background:
		radial-gradient(60% 140% at 92% 0%, rgba(7, 155, 255, 0.16), transparent 62%),
		radial-gradient(40% 90% at 100% 100%, rgba(255, 122, 26, 0.09), transparent 70%);
}
.legal-hero__inner { position: relative; }
.legal-hero__meta {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.75rem 1rem;
	margin-bottom: 1.75rem;
	font-size: 0.875rem;
	color: var(--muted);
}
.legal-hero__badge {
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	padding: 0.4375rem 1rem;
	border: 1px solid var(--border);
	border-radius: var(--radius-pill);
	background: var(--tint);
	color: var(--text);
}
.legal-hero__badge::before {
	content: "";
	width: 0.375rem;
	height: 0.375rem;
	border-radius: 50%;
	background: var(--accent);
	box-shadow: 0 0 0.75rem var(--accent);
}
.legal-hero__title { margin: 0; line-height: 1.02; max-width: 16ch; font-size: min(4rem, calc((100vw - 2 * var(--gutter)) / 13.8)); }

.legal { padding: 4.5rem 0 var(--section-space); }
.legal__inner {
	max-width: var(--container);
	margin-inline: auto;
	padding-inline: var(--gutter);
	display: grid;
	grid-template-columns: minmax(13.75rem, 18.75rem) minmax(0, 51.25rem);
	justify-content: space-between;
	gap: 4rem;
	align-items: start;
}

/* Table of contents */
.legal-toc {
	min-width: 0;
	position: sticky;
	top: 2rem;
	padding-left: 1.5rem;
	border-left: 1px solid var(--border);
}
.legal-toc__label { font-size: 0.75rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); margin-bottom: 1.25rem; }
.legal-toc__list { margin: 0; padding: 0; list-style: none; display: grid; gap: 0.25rem; }
.legal-toc__link {
	position: relative;
	display: grid;
	grid-template-columns: 1.625rem 1fr;
	gap: 0.625rem;
	padding: 0.5625rem 0;
	font-size: 0.9375rem;
	line-height: 1.35;
	color: var(--muted);
	transition: color 0.2s ease;
}
.legal-toc__num { font-size: 0.75rem; padding-top: 0.1875rem; font-variant-numeric: tabular-nums; }
.legal-toc__link::before {
	content: "";
	position: absolute;
	left: -1.5625rem;
	top: 0.375rem;
	bottom: 0.375rem;
	width: 2px;
	background: var(--accent);
	border-radius: 2px;
	transform: scaleY(0);
	transition: transform 0.25s ease;
}
.legal-toc__link:hover { color: var(--text); }
.legal-toc__link.is-active { color: var(--text); }
.legal-toc__link.is-active .legal-toc__num { color: var(--accent); }
.legal-toc__link.is-active::before { transform: scaleY(1); }

/* Body. Long-form text is set in a regular sans: the brand face is caps-only
   and hard to read over dozens of clauses; headings, numbers and labels keep it. */
.legal__body { min-width: 0; overflow-wrap: anywhere; }
.legal-intro, .legal-clause__text, .legal-requisites dd {
	font-family: var(--font-text);
	letter-spacing: 0.012em;
	-webkit-font-smoothing: antialiased;
}
.legal-intro {
	display: grid;
	gap: 1rem;
	padding: 2rem 2.25rem;
	margin-bottom: 4.5rem;
	background: var(--tint);
	border: 1px solid var(--border);
	border-radius: var(--radius-card);
	font-size: 1.0625rem;
	line-height: 1.7;
}
.legal-intro p { color: var(--text); }

.legal-section {
	scroll-margin-top: 2rem;
	padding-bottom: 3.5rem;
	margin-bottom: 3.5rem;
	border-bottom: 1px solid var(--border);
}
.legal-section:last-of-type { border-bottom: 0; margin-bottom: 1.5rem; }
.legal-section__head { display: flex; align-items: baseline; gap: 1.5rem; margin-bottom: 2rem; }
.legal-section__num { font-size: 0.75rem; color: var(--accent); min-width: 1.25rem; font-variant-numeric: tabular-nums; }
.legal-section__title {
	font-family: var(--font-display);
	font-weight: 100;
	font-size: clamp(1.75rem, 3.4vw, 2.625rem);
	line-height: 1.05;
	margin: 0;
}

.legal-clauses { margin: 0; padding: 0; list-style: none; display: grid; gap: 1.125rem; }
.legal-clause {
	display: grid;
	grid-template-columns: 4rem minmax(0, 1fr);
	gap: 0.5rem 0.75rem;
	font-size: 1rem;
	line-height: 1.7;
	color: #d3dae6;
}
.legal-clause__num { font-size: 0.8125rem; line-height: 2.1; color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.legal-clause__text { margin: 0; }
.legal-clause--l1 .legal-clause__text,
.legal-clause--l2 .legal-clause__text { color: var(--text); }
.legal-clause--l3 { padding-left: 2rem; font-size: 0.9375rem; }
.legal-clause--l3 .legal-clause__text { padding-left: 1rem; border-left: 1px solid var(--border); }
.legal-clause a, .legal-intro a {
	color: var(--accent);
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.1875rem;
}
.legal-clause a:hover, .legal-intro a:hover { opacity: 0.8; }

/* Requisites card */
.legal-requisites {
	margin: 0;
	border: 1px solid var(--border);
	border-radius: var(--radius-card);
	background: var(--card-bg);
	overflow: hidden;
}
.legal-requisites__row {
	display: grid;
	grid-template-columns: minmax(9.375rem, 15rem) minmax(0, 1fr);
	gap: 0.5rem 1.5rem;
	padding: 1.125rem 1.75rem;
	border-bottom: 1px solid var(--border);
}
.legal-requisites__row:last-child { border-bottom: 0; }
.legal-requisites dt { color: var(--muted); font-size: 0.875rem; }
.legal-requisites dd { margin: 0; color: var(--text); font-variant-numeric: tabular-nums; }

/* Footer of the document */
.legal-footer {
	display: flex;
	align-items: stretch;
	justify-content: space-between;
	gap: 1rem;
	flex-wrap: wrap;
	margin-top: 2.5rem;
}
.legal-footer__card {
	flex: 1 1 20rem;
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 0.25rem 1rem;
	align-items: center;
	padding: 1.375rem 1.75rem;
	border: 1px solid var(--border);
	border-radius: var(--radius-card);
	background: var(--card-bg);
	transition: border-color 0.2s ease, background 0.2s ease;
}
.legal-footer__card:hover { border-color: var(--accent); background: rgba(7, 155, 255, 0.08); }
.legal-footer__label { grid-column: 1; font-size: 0.75rem; color: var(--muted); letter-spacing: 0.06em; text-transform: uppercase; }
.legal-footer__title { grid-column: 1; font-family: var(--font-display); font-weight: 100; font-size: 1.625rem; line-height: 1.1; }
.legal-footer__arrow { grid-column: 2; grid-row: 1 / span 2; font-size: 1.375rem; color: var(--accent); transition: transform 0.2s ease; }
.legal-footer__card:hover .legal-footer__arrow { transform: translateX(0.25rem); }
.legal-footer__top {
	align-self: center;
	padding: 1rem 1.5rem;
	border: 1px solid var(--border);
	border-radius: var(--radius-pill);
	font-size: 0.875rem;
	color: var(--muted);
	transition: border-color 0.2s ease, color 0.2s ease;
}
.legal-footer__top:hover { border-color: var(--accent); color: var(--text); }

@media (max-width: 1100px) {
	.legal__inner { grid-template-columns: minmax(0, 1fr); gap: 2.5rem; }
	.legal-toc { position: static; padding: 0; border: 0; }
	.legal-toc__label { margin-bottom: 0.875rem; }
	.legal-toc__list {
		display: flex;
		gap: 0.5rem;
		overflow-x: auto;
		margin-inline: calc(var(--gutter) * -1);
		padding: 2px var(--gutter) 0.625rem;
		scroll-snap-type: x proximity;
		scroll-padding-inline: var(--gutter);
		scrollbar-width: none;
	}
	.legal-toc__list::-webkit-scrollbar { display: none; }
	.legal-toc__list li { flex: 0 0 auto; scroll-snap-align: start; }
	.legal-toc__link {
		display: flex;
		align-items: center;
		gap: 0.625rem;
		padding: 0.625rem 1.125rem;
		border: 1px solid var(--border);
		border-radius: var(--radius-pill);
		white-space: nowrap;
		font-size: 0.875rem;
	}
	.legal-toc__num { padding-top: 0; }
	.legal-toc__link::before { display: none; }
	.legal-toc__link.is-active { border-color: var(--accent); background: rgba(7, 155, 255, 0.1); }
}

@media (max-width: 768px) {
	.legal-hero { padding-block: 2.75rem 2.5rem; }
	.legal-hero__title { max-width: none; }
	.legal { padding-top: 2.5rem; }
	.legal-intro { padding: 1.375rem 1.25rem; margin-bottom: 3rem; font-size: 1rem; }
	.legal-section { padding-bottom: 2.5rem; margin-bottom: 2.5rem; }
	.legal-section__head { gap: 1rem; margin-bottom: 1.5rem; }
	.legal-clause { grid-template-columns: 1fr; gap: 0; }
	.legal-clause__num { line-height: 1.4; color: var(--accent); }
	.legal-clause--l3 { padding-left: 1rem; }
	.legal-clause--l3 .legal-clause__text { padding-left: 0.875rem; }
	.legal-requisites__row { grid-template-columns: 1fr; gap: 2px; padding: 0.875rem 1.25rem; }
	.legal-footer__top { flex: 1 1 100%; text-align: center; }
}

@media print {
	.legal-toc, .legal-footer, .legal-hero { display: none; }
	.legal-clause, .legal-intro p { color: #000; }
}

/* Cookie consent banner styling lives in so-znanie-core/assets/consent.css —
   the plugin renders and enqueues it independently of the active theme. */

/* Inline icons carry fixed width/height attributes; size them in rem so they scale with the page. */
.contact-row svg { width: 1.5rem; height: 1.5rem; }
.sz-arrow { width: 1.25rem; height: 0.75rem; }
.nav-toggle__bars { width: 1.125rem; }

/* ==========================================================================
   News (Figma 264:891). Desktop: the featured story on the left over the
   section artwork, the next three as rows on the right. Phones: card rail.
   ========================================================================== */

.news { border-bottom-color: rgba(255, 255, 255, 0.3); }

/* Section artwork: the portrait sits right of centre, washed to the left. */
.news__bg img {
	position: absolute;
	left: -31.18%;
	top: -9.17%;
	width: 131.97%;
	height: 122.34%;
	max-width: none;
	object-fit: cover;
}
.news__bg::after {
	background: linear-gradient(67.43deg, rgba(10, 42, 95, 0.135) 0%, rgba(10, 42, 95, 0.9) 15.06%, rgba(10, 42, 95, 0.9) 30.04%, rgba(10, 42, 95, 0.54) 40.48%, rgba(10, 42, 95, 0) 50.32%, rgba(10, 42, 95, 0.27) 99.91%);
}

/* Header controls as drawn: muted "all" link, hairline round arrows. */
.rail-header .section-link { font-size: 0.875rem; color: #9aa8bf; text-underline-offset: 0.1875rem; }
.rail-header .section-link .sz-arrow { width: 1.125rem; height: 0.625rem; margin-left: 0.25rem; }
.arrow-btn { border-color: rgba(255, 255, 255, 0.3); color: #9aa8bf; }
.arrow-btn:hover { border-color: var(--accent); color: var(--text); }

.news-stage { display: none; }

@media (min-width: 1280px) {
	.news-rail { display: none; }
	.news [data-sz-stage] .rail-header { margin-bottom: 0.6875rem; }
	.news-stage {
		display: grid;
		grid-template-columns: minmax(0, 25.8125rem) minmax(0, 32.875rem);
		justify-content: space-between;
		column-gap: 3rem;
		margin-left: var(--heading-indent);
		align-items: stretch;
		/* Same height as three rows, so the block keeps its proportions with fewer news. */
		min-height: 27.375rem;
	}
}

.news-stage__features { display: grid; grid-template-rows: minmax(0, 1fr); position: relative; min-width: 0; }
.news-feature {
	grid-area: 1 / 1;
	display: flex;
	flex-direction: column;
	padding-top: 2.3125rem;
	opacity: 0;
	visibility: hidden;
	transition: opacity 0.5s ease, visibility 0s linear 0.5s;
}
.news-feature.is-active { opacity: 1; visibility: visible; transition: opacity 0.5s ease; }
.news-feature__body { flex: 1; display: flex; flex-direction: column; min-height: 0; }

.news-num { font-size: 1.25rem; line-height: 1.2; letter-spacing: 0; color: #9aa8bf; }
.news-feature__num { margin: 0 0 0.8125rem; }
.news-feature__date { font-size: 0.75rem; line-height: 1.2; letter-spacing: 0; text-transform: uppercase; color: #9aa8bf; }
.news-feature__title {
	margin: 1.375rem 0 1.5625rem;
	font-family: var(--font-display);
	font-weight: 100;
	font-size: 3rem;
	line-height: 0.95;
	letter-spacing: 0;
	text-transform: uppercase;
	color: var(--text);
}
.news-feature__title a:hover { color: var(--link); }
.news-feature__excerpt {
	font-size: 0.875rem;
	line-height: 1.6;
	letter-spacing: 0;
	text-transform: uppercase;
	color: #9aa8bf;
}
.news-feature__more {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	align-self: flex-start;
	margin-top: auto;
	padding-top: 1.5rem;
	font-size: 0.875rem;
	line-height: 1.1;
	letter-spacing: 0;
	text-transform: uppercase;
	color: #fff;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.1875rem;
}
.news-feature__more .sz-arrow { width: 1.125rem; height: 0.625rem; transition: transform 0.2s ease; }
.news-feature__more:hover .sz-arrow { transform: translateX(0.25rem); }

/* Rows: 146 px tall, number / date / title on the left, picture on the right. */
.news-stage__list { display: flex; flex-direction: column; min-width: 0; }
.news-row { border-bottom: 1px solid rgba(255, 255, 255, 0.3); }
.news-row[hidden] { display: none; }
.news-row__link {
	position: relative;
	display: block;
	height: 9.0625rem;
	overflow: hidden;
}
.news-row__num { position: absolute; left: 0.75rem; top: 2.3125rem; }
.news-row__date {
	position: absolute;
	left: 4.5625rem;
	top: 2.8125rem;
	font-size: 0.75rem;
	line-height: 1.2;
	letter-spacing: 0;
	text-transform: uppercase;
	color: #9aa8bf;
}
.news-row__title {
	position: absolute;
	left: 4.5625rem;
	top: 4.3125rem;
	width: 14.3125rem;
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	overflow: hidden;
	font-size: 0.875rem;
	line-height: 1.4;
	letter-spacing: 0;
	text-transform: uppercase;
	color: var(--text);
	transition: color 0.2s ease;
}
.news-row__link--text .news-row__title { width: 21.4375rem; }
.news-row__thumb {
	position: absolute;
	right: 0;
	top: 0.875rem;
	width: 12.25rem;
	height: 7.375rem;
	border: 1px solid rgba(255, 255, 255, 0.3);
	border-radius: 0.3125rem;
	overflow: hidden;
}
.news-row__thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.4s ease; }
.news-row__link:hover .news-row__title { color: var(--link); }
.news-row__link:hover .news-row__thumb img { transform: scale(1.05); }

@media (max-width: 1279px) {
	.news__bg img { inset: 0; left: 0; top: 0; width: 100%; height: 100%; object-position: 55% 30%; }
	.news__bg::after { background: linear-gradient(180deg, rgba(10, 42, 95, 0.85) 0%, rgba(10, 42, 95, 0.55) 45%, rgba(10, 42, 95, 0.8) 100%); }
}

/* Heading as the link to the archive (replaces "all items" on phones). */
.section-heading__link { color: inherit; }
.section-heading__link:hover { color: var(--link); }

/* ==========================================================================
   Banner: the two text fields as glass cards (design: cards under the subtitle)
   ========================================================================== */

.hero__texts { margin-top: 2.25rem; max-width: 52rem; gap: 1rem; grid-template-columns: repeat(2, minmax(0, auto)); justify-content: start; }
.hero__texts--1 { grid-template-columns: minmax(0, auto); }
.hero__text {
	padding: 1.125rem 1.5rem;
	border: 1px solid var(--border);
	border-radius: var(--radius-card);
	background: linear-gradient(160deg, rgba(20, 60, 150, 0.3), rgba(10, 41, 95, 0.42));
	-webkit-backdrop-filter: blur(0.75rem);
	backdrop-filter: blur(0.75rem);
	color: var(--text);
	font-size: 1.0625rem;
	line-height: 1.4;
}

/* ==========================================================================
   Cookie settings link in the footer line
   ========================================================================== */

.site-footer__links--cookie,
.site-footer__links--cookie li { display: contents; }
.sz-cookie-link {
	justify-self: start;
	padding: 0.25rem 0;
	font: inherit;
	letter-spacing: inherit;
	color: inherit;
	text-align: left;
	text-decoration: underline;
	text-decoration-thickness: 1px;
	text-underline-offset: 0.25rem;
	opacity: 0.85;
}
.sz-cookie-link:hover { opacity: 1; color: var(--text); }
.contacts__legal { grid-template-columns: 20.625rem 20.625rem max-content minmax(0, 1fr); column-gap: 2.5rem; }

@media (max-width: 900px) {
	.contacts__legal { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Phones: every block is one screen
   Each home section is at least one viewport tall and centres its content, so a
   swipe lands on exactly one block (no half-visible neighbours, no cut-offs).
   ========================================================================== */

@media (max-width: 768px) {
	.rail-header .section-link { display: none; }

	.hero { min-height: 100vh; min-height: 100svh; }
	.hero__content { margin-top: auto; }

	.news, .experts, .faq, .partners, .contacts {
		min-height: 100vh;
		min-height: 100svh;
		display: flex;
		flex-direction: column;
		justify-content: center;
		padding-block: calc(var(--header-h) + 1.25rem) calc(var(--section-space) + 0.5rem);
	}
	.news > .container, .experts > .container, .partners > .container { width: 100%; min-width: 0; }
	.faq__inner, .contacts__inner { width: 100%; }

}

@media (max-width: 640px) {
	/* Contacts must fit one screen: a wider, shorter map and a tighter legal line. */
	.contacts { padding-bottom: 1.25rem; }
	.contacts__map { aspect-ratio: 16 / 10; }
	.contacts__grid { gap: 1.125rem; padding-top: 1.25rem; }
	.contacts__legal { margin-top: 1.5rem; padding-top: 0.875rem; gap: 0.125rem; }
	.contacts__layout { row-gap: 1.5rem; }
}

@media (max-width: 768px) {
	/* Banner on one screen: smaller artwork frame, text cards stacked and compact. */
	.hero { --hero-media-h: min(100vw, 30rem); }
	.hero__texts,
	.hero__texts--1,
	.hero__texts--2 { grid-template-columns: minmax(0, 1fr); gap: 0.625rem; margin-top: 1.125rem; }
	.hero__text { padding: 0.75rem 1rem; font-size: 0.9375rem; line-height: 1.35; }
	.hero__subtitle { font-size: 1rem; margin-bottom: 0.75rem; }
	.hero__content { gap: 1.25rem; }
	.contacts { padding-top: calc(var(--header-h) + 0.25rem); }
}

/* ==========================================================================
   Banner as in the design: caps title and subtitle, three glass cards below
   ========================================================================== */

.hero__copy { max-width: none; }
.hero__content { align-items: flex-end; flex-wrap: nowrap; }
.hero__title { font-size: clamp(2.5rem, 6.4vw, 5.75rem); max-width: 60rem; }
.hero__subtitle {
	max-width: 46rem;
	margin: 0 0 3rem;
	font-family: var(--font-body);
	font-size: clamp(1.125rem, 1.5vw, 1.375rem);
	line-height: 1.38;
	letter-spacing: 0;
	text-transform: uppercase;
	color: #9fb4e0;
}
.hero__texts { display: flex; flex-wrap: wrap; gap: 1.875rem; max-width: none; margin-top: 0; }
.hero__text {
	flex: 0 1 auto;
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
	min-width: 12rem;
	max-width: 27rem;
	min-height: 9.375rem;
	padding: 0.875rem 1.25rem 1.125rem;
	font-family: var(--font-body);
	letter-spacing: 0;
	text-transform: uppercase;
	color: var(--text);
}
.hero__text-num { font-size: 0.875rem; line-height: 1; color: var(--muted); }
.hero__text-main { font-size: 1.25rem; line-height: 1.25; }
.hero__text-meta { margin-top: auto; font-size: 0.9375rem; line-height: 1.3; }
.hero__texts--1 .hero__text, .hero__texts--2 .hero__text { max-width: 27rem; }

@media (max-width: 1024px) {
	.hero__content { flex-wrap: wrap; }
}
@media (max-width: 768px) {
	.hero__subtitle { font-size: 0.9375rem; margin-bottom: 1rem; }
	.hero__texts, .hero__texts--1, .hero__texts--2, .hero__texts--3 { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0.625rem; }
	.hero__text { min-height: 0; max-width: none; flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.75rem; padding: 0.75rem 1rem; }
	.hero__text-main { font-size: 1.0625rem; flex: 1 1 60%; }
	.hero__text-meta { margin: 0; font-size: 0.75rem; flex-basis: 100%; color: var(--muted); }
}

/* Card widths follow the design (narrow / wide / medium); they wrap by content when fewer cards are set. */
@media (min-width: 1025px) {
	.hero__copy { flex: 1 1 auto; min-width: 0; }
	.hero__texts { flex-wrap: nowrap; gap: 1.5rem; }
	.hero__texts--3 .hero__text:nth-child(1) { flex: 0 0 13.5rem; }
	.hero__texts--3 .hero__text:nth-child(2) { flex: 0 0 26rem; }
	.hero__texts--3 .hero__text:nth-child(3) { flex: 0 0 19rem; }
	.hero__text-main { font-size: 1.25rem; }
}

@media (max-width: 768px) {
	.hero { --hero-media-h: min(90vw, 26rem); }
	.hero__index { padding-top: 0.875rem; }
}

/* Phones: partners come four to a page (2 x 2), paged with the arrows or a swipe. */
@media (max-width: 768px) {
	.partners__rail {
		display: grid;
		grid-template-rows: repeat(2, auto);
		grid-auto-flow: column;
		grid-auto-columns: calc((100vw - 2 * var(--gutter) - 0.875rem) / 2);
		gap: 0.875rem;
	}
	/* Reading order inside a page: 1 2 / 3 4, then the next page (up to 12 pages). */
	.partners__rail > :nth-child(1) { grid-column: 1; grid-row: 1; }
	.partners__rail > :nth-child(2) { grid-column: 2; grid-row: 1; }
	.partners__rail > :nth-child(3) { grid-column: 1; grid-row: 2; }
	.partners__rail > :nth-child(4) { grid-column: 2; grid-row: 2; }
	.partners__rail > :nth-child(5) { grid-column: 3; grid-row: 1; }
	.partners__rail > :nth-child(6) { grid-column: 4; grid-row: 1; }
	.partners__rail > :nth-child(7) { grid-column: 3; grid-row: 2; }
	.partners__rail > :nth-child(8) { grid-column: 4; grid-row: 2; }
	.partners__rail > :nth-child(9) { grid-column: 5; grid-row: 1; }
	.partners__rail > :nth-child(10) { grid-column: 6; grid-row: 1; }
	.partners__rail > :nth-child(11) { grid-column: 5; grid-row: 2; }
	.partners__rail > :nth-child(12) { grid-column: 6; grid-row: 2; }
	.partners__rail > :nth-child(13) { grid-column: 7; grid-row: 1; }
	.partners__rail > :nth-child(14) { grid-column: 8; grid-row: 1; }
	.partners__rail > :nth-child(15) { grid-column: 7; grid-row: 2; }
	.partners__rail > :nth-child(16) { grid-column: 8; grid-row: 2; }
	.partners__rail > :nth-child(17) { grid-column: 9; grid-row: 1; }
	.partners__rail > :nth-child(18) { grid-column: 10; grid-row: 1; }
	.partners__rail > :nth-child(19) { grid-column: 9; grid-row: 2; }
	.partners__rail > :nth-child(20) { grid-column: 10; grid-row: 2; }
	.partners__rail > :nth-child(21) { grid-column: 11; grid-row: 1; }
	.partners__rail > :nth-child(22) { grid-column: 12; grid-row: 1; }
	.partners__rail > :nth-child(23) { grid-column: 11; grid-row: 2; }
	.partners__rail > :nth-child(24) { grid-column: 12; grid-row: 2; }
	.partners__rail > :nth-child(25) { grid-column: 13; grid-row: 1; }
	.partners__rail > :nth-child(26) { grid-column: 14; grid-row: 1; }
	.partners__rail > :nth-child(27) { grid-column: 13; grid-row: 2; }
	.partners__rail > :nth-child(28) { grid-column: 14; grid-row: 2; }
	.partners__rail > :nth-child(29) { grid-column: 15; grid-row: 1; }
	.partners__rail > :nth-child(30) { grid-column: 16; grid-row: 1; }
	.partners__rail > :nth-child(31) { grid-column: 15; grid-row: 2; }
	.partners__rail > :nth-child(32) { grid-column: 16; grid-row: 2; }
	.partners__rail > :nth-child(33) { grid-column: 17; grid-row: 1; }
	.partners__rail > :nth-child(34) { grid-column: 18; grid-row: 1; }
	.partners__rail > :nth-child(35) { grid-column: 17; grid-row: 2; }
	.partners__rail > :nth-child(36) { grid-column: 18; grid-row: 2; }
	.partners__rail > :nth-child(37) { grid-column: 19; grid-row: 1; }
	.partners__rail > :nth-child(38) { grid-column: 20; grid-row: 1; }
	.partners__rail > :nth-child(39) { grid-column: 19; grid-row: 2; }
	.partners__rail > :nth-child(40) { grid-column: 20; grid-row: 2; }
	.partners__rail > :nth-child(41) { grid-column: 21; grid-row: 1; }
	.partners__rail > :nth-child(42) { grid-column: 22; grid-row: 1; }
	.partners__rail > :nth-child(43) { grid-column: 21; grid-row: 2; }
	.partners__rail > :nth-child(44) { grid-column: 22; grid-row: 2; }
	.partners__rail > :nth-child(45) { grid-column: 23; grid-row: 1; }
	.partners__rail > :nth-child(46) { grid-column: 24; grid-row: 1; }
	.partners__rail > :nth-child(47) { grid-column: 23; grid-row: 2; }
	.partners__rail > :nth-child(48) { grid-column: 24; grid-row: 2; }
	.partners__rail > * { scroll-snap-align: none; scroll-snap-stop: normal; }
	.partners__rail > :nth-child(4n+1),
	.partners__rail > :nth-child(4n+3) { scroll-snap-align: start; }
	.partners__rail .partner-card { width: auto; height: 9.5rem; padding: 1rem; }

	/* About: wider side margins so the copy runs taller and fills the screen. */
	.about__copy { padding-inline: 1.125rem; }
	.about__title { font-size: clamp(2.5rem, 13vw, 3.5rem); }
	.about__lead { font-size: 1rem; line-height: 1.38; }
	.about__copy { padding-block: calc(var(--header-h) + 0.25rem) 0.75rem; gap: 0; }
	.about__title { margin-bottom: 0.875rem; }
	.about__text { font-size: 0.75rem; line-height: 1.6; margin-top: 1rem; }
	.about__text p + p { margin-top: 1.25em; }
}

/* News stage between 1280 and 1440 px: the columns, the title and the picture
   shrink together so the face stays in the gap between the copy and the list. */
@media (min-width: 1280px) and (max-width: 1439px) {
	.news-stage { grid-template-columns: minmax(0, 24rem) minmax(0, 28rem); }
	.news-feature__title { font-size: clamp(2.25rem, calc(2.25rem + (100vw - 1280px) * 0.075), 3rem); overflow-wrap: break-word; }
	.news-row__thumb { width: 9.5rem; height: 6.0625rem; }
	.news-row__title { width: 11rem; }
	.news-row__link--text .news-row__title { width: 18rem; }
	.news__bg img { left: calc((182px + 24rem + 100vw - 72px - 28rem) / 2 - 0.8446 * 100vw - 3rem); }
}
.news-feature__title { overflow-wrap: break-word; }

/* Tablet: "all items" link sits on the heading's left edge, like the cards below. */
@media (min-width: 769px) and (max-width: 1279px) {
	.rail-header { grid-template-columns: minmax(0, 1fr) auto; }
	.rail-header .section-link { grid-row: 2; grid-column: 1 / -1; padding: 0.75rem 0 0 var(--heading-indent); }
	.rail-header .section-heading { grid-row: 1; }
	.rail-header__controls { grid-column: 2; grid-row: 1; }
}
@media (max-width: 1024px) {
	.rail-header .section-link { margin-left: 0; }
}
