* {
	box-sizing: border-box;
}

html {
	scroll-behavior: smooth;
	scroll-padding-top: 120px;
}

body {
	margin: 0;
	color: #111;
	background: #fff;

	font:
		400 16px/1.65 Arial,
		sans-serif;
}

a {
	color: inherit;
}

img {
	display: block;
	max-width: 100%;
	object-fit: cover;
}

h1,
h2,
h3,
p,
figure {
	margin: 0;
}

h1,
h2,
h3 {
	font-weight: 400;
	line-height: 1.08;
	letter-spacing: -0.045em;
}

h1 {
	font-size: clamp(3.25rem, 6.4vw, 6.8rem);
}

h2 {
	font-size: clamp(2.2rem, 4vw, 4.2rem);
}

h3 {
	font-size: 1.75rem;
}

em {
	font-family: Georgia, serif;
	font-weight: 400;
}

p {
	color: #3f494b;
}

p + p {
	margin-top: 18px;
}

.eyebrow {
	font-size: 0.8rem;
	letter-spacing: 0.07em;
	text-transform: uppercase;
	margin-bottom: 24px;
}

.lead {
	font-size: clamp(1.15rem, 1.6vw, 1.5rem);
	line-height: 1.45;
}

.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;

	min-height: 44px;

	padding: 10px 24px;

	border: 1px solid #1115;
	border-radius: 999px;

	text-decoration: none;

	font-size: 0.95rem;

	transition: background 0.2s;
}

.button:hover {
	background: #baccd0;
}

.button:focus-visible,
a:focus-visible,
button:focus-visible {
	outline: 2px solid #60858e;
	outline-offset: 5px;
}

.site-notice {
	border: 0;
	background: #f5f4f0;
	margin-bottom: 20px;
}

.hero__nav {
	display: grid;
	position: fixed;
	z-index: 50;

	background: rgba(245, 244, 240, 0.78);

	backdrop-filter: blur(12px);
}

.hero__nav .hero__logo {
	width: 44px;
	color: #111;
}

.hero__nav .hero__nav-link,
.hero__menu-toggle {
	font-weight: 400;
	color: #111;
	text-decoration: none;
}

.hero__nav .hero__contact {
	border-color: #1115;

	min-height: 38px;
	min-width: 0;

	padding: 7px 19px;
}

.hero__nav-link[aria-current] {
	text-decoration: underline;
	text-underline-offset: 7px;
}

.hero__nav .hero__contact:hover {
	background: #baccd0;
	border-color: #1115;
}

main {
	padding-top: 104px;
}

.panel {
	margin: 0 var(--film-frame) clamp(56px, 7vw, 110px);

	border-radius: var(--film-radius);

	overflow: hidden;
}

.content {
	width: calc(100% - 2 * var(--film-frame) - 64px);
	max-width: 1200px;

	margin: 0 auto clamp(64px, 8vw, 120px);
}

/* ==============================
   HERO
   ============================== */

.about-hero {
	display: grid;

	grid-template-columns: 1.08fr 1fr;

	background: #f5f4f0;

	min-height: 640px;
}

.hero-copy {
	padding: clamp(32px, 5vw, 80px);
	align-self: center;
}

.hero-copy .lead {
	margin: 30px 0 20px;
	max-width: 30ch;
}

.hero-copy > p:not(.eyebrow) {
	max-width: 44ch;
}

.hero-copy .button {
	margin-top: 30px;
}

.hero-photo {
	position: relative;
	min-height: 640px;
}

.hero-photo img {
	width: 100%;
	height: 100%;

	position: absolute;

	object-position: 50% 45%;
}

.hero-photo figcaption {
	position: absolute;

	bottom: 20px;
	left: 24px;

	color: #fff;

	font-size: 0.8rem;

	background: #111b;

	padding: 5px 12px;

	border-radius: 4px;
}

/* ==============================
   APPROACH
   ============================== */

.approach {
	display: grid;

	grid-template-columns: 1fr 1fr;

	gap: 8vw;
}

.approach-copy .button {
	margin-top: 26px;
}

/* ==============================
   STUDIO
   ============================== */

.studio {
	display: grid;

	grid-template-columns: 1.2fr 1fr;

	background: #baccd0;
}

.studio > img {
	width: 100%;
	height: 100%;

	min-height: 500px;
}

.studio-copy {
	padding: clamp(32px, 5vw, 72px);

	align-self: center;
}

.studio-copy h2 {
	margin-bottom: 28px;
}

.studio-copy .button {
	margin-top: 28px;
}

/* ==============================
   SECTION HEADING
   ============================== */

.section-heading {
	display: flex;

	justify-content: space-between;
	align-items: flex-end;

	gap: 40px;

	margin-bottom: 36px;
}

.section-heading > p {
	max-width: 440px;
}

/* ==============================
   PEOPLE
   ============================== */

.people-grid {
	display: grid;

	grid-template-columns: 1fr 1fr;

	gap: 32px;

	max-width: 960px;

	margin: 0 auto;
}

.people-grid article {
	min-width: 0;
}

.people-grid img {
	width: 100%;

	height: clamp(340px, 40vw, 540px);

	object-position: 50% 16%;

	border-radius: 8px;
}

.person-copy {
	display: flex;

	justify-content: space-between;
	align-items: center;

	gap: 16px;

	margin-top: 22px;
}

/* ==============================
   BEHIND THE SCENES
   ============================== */

.behind {
	background: #f5f4f0;

	padding: clamp(24px, 4vw, 60px);
}

.behind-grid {
	display: grid;

	grid-template-columns: repeat(3, 1fr);

	gap: 22px;
}

.behind-grid img {
	width: 100%;
	height: auto;

	aspect-ratio: 3 / 4;

	border-radius: 8px;
}

/* ==============================
   CONTACT
   ============================== */

.contact-panel {
	text-align: center;

	background: #baccd0;

	padding: clamp(48px, 7vw, 100px) 24px;
}

.contact-panel h2 {
	margin-bottom: 24px;
}

.contact-panel .button {
	margin-top: 28px;
}

.email {
	display: block;

	margin-top: 18px;

	text-underline-offset: 4px;

	font-size: 0.9rem;
}

/* =========================================================
   FOOTER
   ========================================================= */

footer {
	display: grid;

	/*
		1 колонка занимает всё свободное пространство.
		Две ссылки занимают только необходимую им ширину.
	*/
	grid-template-columns:
		minmax(0, 1fr)
		max-content
		max-content;

	align-items: center;

	column-gap: clamp(18px, 3vw, 44px);

	width: 100%;

	padding: 0 calc(var(--film-frame) + 20px) 40px;

	font-size: 0.9rem;
	line-height: 1.45;
}

/* Каждый элемент footer не должен неожиданно
   растягивать grid */

footer > div {
	min-width: 0;
}

/* Адрес остаётся слева */

footer > div:first-child {
	justify-self: start;
}

/* Убираем старый margin-right:auto,
   он больше не нужен при grid */

footer p {
	margin: 0;

	color: #3f494b;
}

/* Обе ссылки гарантированно остаются в одну строку */

footer a {
	display: inline-block;

	color: #111;

	text-decoration: none;

	white-space: nowrap;
}

/* Выравниваем обе ссылки справа */

footer > div:nth-child(2),
footer > div:nth-child(3) {
	justify-self: end;

	white-space: nowrap;
}

footer a:hover {
	text-decoration: underline;
}

/* =========================================================
   TABLET / MOBILE
   ========================================================= */

@media (max-width: 760px) {
	main {
		padding-top: 86px;
	}

	.about-hero,
	.studio,
	.approach {
		grid-template-columns: 1fr;
	}

	.about-hero {
		min-height: 0;
	}

	.hero-photo {
		min-height: 400px;
	}

	.hero-copy {
		padding: 40px 26px;
	}

	.content {
		width: calc(100% - 48px);
	}

	.approach {
		gap: 30px;
	}

	.studio > img {
		min-height: 0;

		aspect-ratio: 3 / 2;
	}

	.studio-copy {
		padding: 36px 26px;
	}

	.section-heading {
		display: block;
	}

	.section-heading > p {
		margin-top: 22px;
	}

	.people-grid {
		gap: 20px;
	}

	.people-grid img {
		height: 330px;
	}

	.person-copy {
		display: block;
	}

	.person-copy .button {
		margin-top: 16px;

		padding: 9px 15px;
	}

	.behind-grid {
		grid-template-columns: 1fr 1fr;

		gap: 12px;
	}

	.behind-grid img:last-child {
		display: none;
	}

	/* =====================================
	   FOOTER — TABLET / MOBILE
	   Всё остаётся в одном горизонтальном ряду
	   ===================================== */

	footer {
		grid-template-columns:
			minmax(0, 1fr)
			max-content
			max-content;

		column-gap: clamp(10px, 2.5vw, 20px);

		padding: 0 20px 30px;

		font-size: clamp(0.74rem, 2vw, 0.84rem);

		line-height: 1.35;
	}

	footer p {
		font-size: inherit;

		line-height: 1.35;
	}

	footer a {
		font-size: inherit;

		white-space: nowrap;
	}

	.hero__nav .hero__logo {
		width: 36px;
	}
}

/* =========================================================
   SMALL MOBILE
   ========================================================= */

@media (max-width: 480px) {
	.people-grid {
		grid-template-columns: 1fr;

		gap: 36px;
	}

	.people-grid img {
		height: auto;

		aspect-ratio: 4 / 5;
	}

	.person-copy {
		display: flex;
	}

	.behind-grid {
		grid-template-columns: 1fr;
	}

	.behind-grid img {
		aspect-ratio: 4 / 3;
	}

	.behind-grid img:last-child {
		display: block;
	}

	.hero-photo {
		min-height: 360px;
	}

	/* Footer остаётся одной строкой.
	   На очень маленьких экранах просто уменьшаем
	   расстояния и шрифт. */

	footer {
		column-gap: 9px;

		padding: 0 14px 24px;

		font-size: clamp(0.66rem, 2.7vw, 0.76rem);
	}

	footer p {
		line-height: 1.3;
	}
}

/* =========================================================
   VERY SMALL MOBILE
   ========================================================= */

@media (max-width: 360px) {
	footer {
		column-gap: 7px;

		padding-left: 10px;
		padding-right: 10px;

		font-size: 0.65rem;
	}
}

/* =========================================================
   REDUCED MOTION
   ========================================================= */

@media (prefers-reduced-motion: reduce) {
	html {
		scroll-behavior: auto;
	}

	* {
		transition: none !important;
	}
}
