/* ==========================================================================
   Km.0 — mobile first. Desktop (>=1280px) reproduces the 1440px Figma frame.
   ========================================================================== */

:root {
	--green: #005c0c;
	--green-hover: #00450a;
	--green-dark: #2a4d2f;
	--grey: #767676;
	--border: #d9d9d9;
	--ink: #231f20;
	--white: #fff;

	--f-serif: "Source Serif Pro", Georgia, serif;
	--f-sans: Arimo, "Helvetica Neue", Helvetica, Arial, sans-serif;
	--f-ui: Inter, system-ui, sans-serif;
	--f-label: "Pathway Extreme", var(--f-ui);
	--f-hand: Caveat, "Segoe Print", cursive;

	--gutter: 20px;
}

/* Base ------------------------------------------------------------------- */

*,
*::before,
*::after { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }

body {
	margin: 0;
	background: var(--white);
	color: #000;
	font: 15px/1.4 var(--f-sans);
	-webkit-font-smoothing: antialiased;
}

body.menu-open { overflow: hidden; }

h1, h2, h3, p, ul, ol, address { margin: 0; }
ul, ol { padding: 0; list-style: none; }
address { font-style: normal; }
img, svg { display: block; max-width: 100%; }
img { height: auto; }
a { color: inherit; }
button, input { font: inherit; color: inherit; }

:focus-visible {
	outline: 2px solid var(--green);
	outline-offset: 3px;
}

main:focus { outline: none; }

.screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
	border: 0;
}

.skip-link {
	position: absolute;
	top: 8px;
	left: 8px;
	z-index: 100;
	padding: 12px 20px;
	background: var(--green);
	color: var(--white);
	font: 14px/1 var(--f-ui);
	border-radius: 24px;
	transform: translateY(-200%);
}

.skip-link:focus { transform: none; }

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

/* Shared ------------------------------------------------------------------ */

.eyebrow {
	font: 400 14px/1.2 var(--f-label);
	text-transform: uppercase;
}

.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: .3em;
	height: 39px;
	padding: 0 22px;
	border: 1px solid var(--green);
	border-radius: 24px;
	font: 400 12px/1.2 var(--f-ui);
	text-decoration: none;
	cursor: pointer;
	transition: background-color .15s, color .15s;
}

.btn--outline { background: transparent; color: #000; }
.btn--outline:hover { background: var(--green); color: var(--white); }
.btn--solid { background: var(--green); color: var(--white); }
.btn--solid:hover { background: var(--green-hover); border-color: var(--green-hover); }

/* Header ------------------------------------------------------------------ */

.site-header {
	position: relative;
	z-index: 10;
	border-bottom: 1px solid var(--green);
	background: var(--white);
}

.site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 10px var(--gutter);
}

.site-header__logo img { width: 120px; height: auto; }

.site-header__toggle {
	display: grid;
	place-items: center;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 1px solid var(--green);
	border-radius: 50%;
	background: none;
	cursor: pointer;
}

.site-header__toggle-bars,
.site-header__toggle-bars::before,
.site-header__toggle-bars::after {
	display: block;
	width: 18px;
	height: 2px;
	background: var(--green);
	transition: transform .2s;
}

.site-header__toggle-bars { position: relative; }
.site-header__toggle-bars::before,
.site-header__toggle-bars::after { content: ""; position: absolute; left: 0; }
.site-header__toggle-bars::before { top: -6px; }
.site-header__toggle-bars::after { top: 6px; }

[aria-expanded="true"] .site-header__toggle-bars { background: transparent; }
[aria-expanded="true"] .site-header__toggle-bars::before { transform: translateY(6px) rotate(45deg); }
[aria-expanded="true"] .site-header__toggle-bars::after { transform: translateY(-6px) rotate(-45deg); }

.site-header__menu {
	display: none;
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	height: calc(100vh - 100%);
	height: calc(100dvh - 100%);
	overflow-y: auto;
	padding: 24px var(--gutter) 40px;
	background: var(--white);
	border-top: 1px solid var(--green);
}

[aria-expanded="true"] + .site-header__menu { display: block; }

.site-nav__list a {
	display: block;
	padding: 14px 0;
	border-bottom: 1px solid var(--border);
	font: 400 14px/1.2 var(--f-ui);
	text-transform: uppercase;
	text-decoration: none;
}

.site-nav__list a:hover,
.site-nav__list .current-menu-item > a { color: var(--green); }

.site-header__actions {
	display: grid;
	gap: 12px;
	margin-top: 28px;
}

.site-header__actions .btn { height: 44px; }

/* Hero -------------------------------------------------------------------- */

.hero {
	display: flex;
	flex-direction: column;
	border-bottom: 1px solid var(--green-dark);
}

.hero__inner { display: contents; }

.hero__content { order: 1; padding: 32px var(--gutter) 36px; }

.hero__media {
	order: 2;
	height: 300px;
	overflow: hidden;
}

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

.hero__title {
	margin-top: 20px;
	font: 400 48px/.93 var(--f-serif);
}

.hero__text {
	max-width: 310px;
	margin-top: 16px;
	color: var(--ink);
	font: 15px/1.4 var(--f-sans);
}

.benefits {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 28px 16px;
	margin-top: 36px;
}

.benefits__item {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
}

.benefits__icon {
	display: grid;
	place-items: center;
	width: 88px;
	height: 88px;
	border: 2px solid var(--green);
	border-radius: 50%;
}

.benefits__label {
	margin-top: 16px;
	font: 400 14px/1.1 var(--f-label);
	text-transform: uppercase;
}

.benefits__label .line { display: block; }
.benefits__label .line + .line { margin-top: 5px; }

/* Join form */

.join {
	order: 3;
	position: relative;
	margin: -72px var(--gutter) 40px;
	padding: 18px 24px 19px;
	border: 1px solid var(--green);
	border-radius: 10px;
	background: var(--white);
	scroll-margin-top: 24px;
}

.join__title {
	color: var(--green);
	font: 400 22px/1.2 var(--f-serif);
}

.join__text {
	margin-top: 8.6px;
	font: 12px/1.5 var(--f-sans);
}

.form-notice {
	margin-top: 12px;
	padding: 10px 14px;
	border-radius: 8px;
	font: 12px/1.5 var(--f-sans);
}

.form-notice--ok { background: #e6f2e7; color: var(--green); }
.form-notice--error { background: #fdecea; color: #a01b12; }

.km0-form { margin-top: 13px; }

.km0-form__hp { position: absolute; left: -9999px; }

.field + .field { margin-top: 9px; }

.field__input {
	display: block;
	width: 100%;
	height: 39px;
	padding: 0 22px;
	border: 1px solid var(--green);
	border-radius: 29px;
	background: var(--white);
	font: 400 12px/1 var(--f-ui);
	color: #000;
}

.field__input::placeholder { color: var(--grey); opacity: 1; }

.field__input:focus-visible { outline-offset: 2px; }

.field__input[aria-invalid="true"] { border-color: #a01b12; }

.field__error {
	margin: 4px 0 0 22px;
	color: #a01b12;
	font: 12px/1.4 var(--f-sans);
}

.km0-form__submit {
	gap: .3em;
	margin-top: 13px;
	border-radius: 29px;
	min-width: 162px;
	justify-content: flex-start;
}

.check {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	margin-top: 13px;
}

.check__input {
	appearance: none;
	flex: none;
	width: 16px;
	height: 16px;
	margin: 1px 0 0;
	border: 1px solid var(--green);
	border-radius: 2px;
	background: var(--white);
	cursor: pointer;
}

.check__input:checked {
	background: var(--green) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.5l2.5 2.5L12 5.5' fill='none' stroke='%23fff' stroke-width='2'/%3E%3C/svg%3E") center / 14px no-repeat;
}

.check__label { font: 12px/1.5 var(--f-sans); cursor: pointer; }
.check__label a { text-underline-offset: 2px; }
.check__label a:hover { color: var(--green); }

/* Productors -------------------------------------------------------------- */

.productors { padding: 48px var(--gutter); }

.productors__title {
	margin-top: 24px;
	color: var(--green);
	font: 400 34px/1 var(--f-serif);
}

.productors__text {
	max-width: 326px;
	margin-top: 16px;
	font: 16px/1.2 var(--f-sans);
}

.productors__hand {
	margin-top: 20px;
	color: var(--green);
	font: 400 36px/1 var(--f-hand);
}

.productors__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	gap: 22px 29px;
	margin-top: 32px;
}

.card { display: flex; flex-direction: column; }

.card__media {
	aspect-ratio: 417 / 131;
	overflow: hidden;
	border-radius: 10px 10px 0 0;
}

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

.card__body {
	position: relative;
	display: flex;
	flex-direction: column;
	flex: 1;
	min-height: 150px;
	padding: 19px 25px 22px 23px;
	border: 1px solid var(--border);
	border-top: 0;
	border-radius: 0 0 10px 10px;
}

.card__name {
	color: var(--green);
	font: 400 24px/1 var(--f-serif);
}

.card__subname {
	display: block;
	font-size: 18px;
	line-height: 22px;
}

/* Reserve the arrow's space on the first line only, so long names use the full width. */
.card__name::before {
	content: "";
	float: right;
	width: 44px;
	height: 1em;
}

.card__address {
	position: relative;
	margin-top: 6px;
	padding-left: 23px;
	color: var(--grey);
	font: 12px/1.2 var(--f-sans);
}

.card__address svg { position: absolute; left: 2px; top: 0; }

.card__tags {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: auto;
	padding-top: 10px;
}

.tag {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 166px;
	height: 39px;
	padding: 0 16px;
	border-radius: 29px;
	background: var(--green);
	color: var(--white);
	font: 400 12px/1 var(--f-ui);
}

.card__link {
	position: absolute;
	top: 19px;
	right: 25px;
	display: grid;
	place-items: center;
	width: 31px;
	height: 31px;
	border: 1px solid var(--green);
	border-radius: 50%;
	color: var(--green);
	font: 300 20px/1 var(--f-ui);
	text-decoration: none;
	transition: background-color .15s, color .15s;
}

.card__link::after { content: ""; position: absolute; inset: -7px; }
.card__link:hover { background: var(--green); color: var(--white); }

.productors__more {
	display: grid;
	place-items: center;
	width: 60px;
	height: 60px;
	margin: 26px auto 0;
	border-radius: 50%;
	background: var(--green);
	color: var(--white);
	font: 400 32px/1 var(--f-ui);
	text-decoration: none;
	transition: background-color .15s;
}

.productors__more span[aria-hidden] { transform: rotate(90deg); }
.productors__more:hover { background: var(--green-hover); }

/* Stats ------------------------------------------------------------------- */

.stats {
	position: relative;
	overflow: hidden;
	color: var(--white);
	background: var(--green-dark);
}

.stats__bg,
.stats::after { position: absolute; inset: 0; }

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

.stats::after {
	content: "";
	background: var(--green-dark);
	opacity: .8;
	mix-blend-mode: multiply;
}

.stats__list {
	position: relative;
	z-index: 1;
	display: grid;
	gap: 28px;
	padding: 40px var(--gutter);
}

.stat {
	display: flex;
	align-items: center;
	gap: 28px;
}

.stat__icon {
	display: flex;
	justify-content: center;
	flex: none;
	width: 88px;
}

.stat__icon img { width: auto; height: auto; }

.stat__text { width: 172px; }

.stat__number {
	display: block;
	margin-bottom: 5px;
	font: 400 30px/1.5 var(--f-serif);
}

.stat__label {
	display: block;
	font: 12px/1.5 var(--f-sans);
}

/* Contact ----------------------------------------------------------------- */

.contact {
	position: relative;
	border-bottom: 1px solid var(--green);
}

.contact__inner {
	display: grid;
	gap: 28px;
	padding: 40px var(--gutter);
}

.contact__list li + li { margin-top: 32px; }

.contact__item {
	display: inline-flex;
	align-items: center;
	gap: 17px;
	font: 500 16px/1.2 var(--f-label);
	text-decoration: none;
	word-break: break-word;
}

.contact__item svg { flex: none; }
.contact__item:hover span { text-decoration: underline; }

.store {
	max-width: 262px;
	min-height: 140px;
	padding: 16px 33px;
	border: 1px solid var(--green);
	border-radius: 10px;
}

.store__title {
	max-width: 196px;
	color: var(--green);
	font: 400 22px/1.2 var(--f-serif);
}

.store__address {
	display: flex;
	align-items: flex-start;
	gap: 13px;
	margin-top: 9px;
	font: 12px/1.5 var(--f-sans);
}

.store__address > span:last-child { margin-top: 10px; }

.store__pin {
	display: grid;
	place-items: center;
	flex: none;
	width: 40px;
	height: 40px;
	border: 1px solid var(--green);
	border-radius: 50%;
}

.contact__map {
	display: block;
	height: 260px;
}

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

/* Instagram --------------------------------------------------------------- */

.insta {
	padding: 50px 0 54px;
	text-align: center;
}

.insta__profile {
	display: inline-block;
	margin-top: 20px;
	border-radius: 50%;
}

.insta__profile svg { width: 63px; height: 63px; }

.insta__grid {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	max-width: 1312px;
	margin: 16px auto 0;
	padding: 0 var(--gutter);
}

.insta__grid img {
	width: 100%;
	aspect-ratio: 262 / 254;
	object-fit: cover;
}

/* Footer ------------------------------------------------------------------ */

.site-footer { border-top: 1px solid var(--green); }

.site-footer__inner {
	display: grid;
	gap: 24px;
	padding: 36px var(--gutter) 32px;
	font: 12px/1.5 var(--f-sans);
}

.site-footer__logo { width: 180px; }

.site-footer__col {
	padding-left: 25px;
	border-left: 1px solid #000;
}

.site-footer__col p + p,
.site-footer__menu li + li { margin-top: 10px; }

.site-footer a { text-decoration: none; }
.site-footer a:hover { color: var(--green); text-decoration: underline; }

.site-footer__legal {
	color: var(--ink);
	font-weight: 300;
}

.legal-menu { display: inline; }
.legal-menu li { display: inline; text-transform: uppercase; }
.legal-menu li + li::before { content: " – "; }
.site-footer .legal-menu a { text-decoration: underline; }
.site-footer__legal p { display: inline; }
.site-footer__legal p::before { content: "\00a0\00a0"; }
.site-footer__legal p a { text-decoration: underline; }
.site-footer__legal nav { display: inline; }

/* Generic pages ----------------------------------------------------------- */

.page-main {
	max-width: 760px;
	margin: 0 auto;
	padding: 48px var(--gutter);
}

.page__title {
	color: var(--green);
	font: 400 40px/1.1 var(--f-serif);
}

.page__content { margin-top: 24px; font-size: 16px; line-height: 1.6; }
.page__content > * + * { margin-top: 1em; }

/* ==========================================================================
   Tablet
   ========================================================================== */

@media (min-width: 768px) {
	:root { --gutter: 40px; }

	.hero__media { height: 420px; }
	.hero__title { font-size: 64px; }

	.benefits {
		grid-template-columns: repeat(4, max-content);
		gap: 35px;
	}

	.benefits__item { width: 102px; }
	.benefits__item:nth-child(3) { width: 125px; }

	.join {
		width: 333px;
		margin: -120px auto 48px;
	}

	.productors__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }

	.stats__list { grid-template-columns: repeat(2, max-content); justify-content: space-around; gap: 40px 48px; }

	.contact__inner { grid-template-columns: 1fr 262px; align-items: start; }
	.contact__title { grid-column: 1 / -1; }
	.contact__map { height: 315px; }

	.site-footer__inner { grid-template-columns: auto auto 1fr; align-items: start; column-gap: 48px; }
	.site-footer__legal { grid-column: 1 / -1; }
}

/* ==========================================================================
   Desktop — 1440px Figma frame
   ========================================================================== */

@media (min-width: 1280px) {
	/* Header */
	.site-header__inner {
		max-width: 1440px;
		margin: 0 auto;
		padding: 16px 70px 26px 68px;
	}

	.site-header__logo img { width: 161px; height: 81px; }
	.site-header__toggle { display: none; }

	.site-header__menu,
	[aria-expanded="true"] + .site-header__menu { display: contents; }

	.site-nav__list { display: flex; gap: 53px; }

	.site-nav__list a {
		padding: 0;
		border: 0;
		white-space: nowrap;
		font-size: 12px;
		line-height: 1.2;
	}

	.site-header__actions { display: flex; gap: 27px; margin: 0; }
	.site-header__actions .btn { width: 138px; height: 39px; padding: 0; }

	/* Hero */
	.hero {
		display: block;
		position: relative;
		height: 524px;
	}

	.hero__media {
		position: absolute;
		top: 0;
		bottom: 0;
		left: calc(50% - 44px);
		right: 0;
		height: auto;
	}

	.hero__inner {
		display: block;
		position: relative;
		max-width: 1440px;
		height: 100%;
		margin: 0 auto;
	}

	.hero__content { width: 560px; padding: 31px 0 0 67px; }

	.hero__title {
		margin-top: 27.2px;
		font-size: 75px;
	}

	.hero__text { margin-top: 12.5px; }

	.benefits {
		grid-template-columns: 102px 102px 125px 102px;
		gap: min(35px, 2.43vw);
		margin-top: 43px;
	}

	.benefits__item,
	.benefits__item:nth-child(3) { width: auto; }

	.benefits__icon { width: 88.4px; height: 88.4px; }

	.benefits__label { margin-top: 15.6px; }

	.join {
		position: absolute;
		top: 31px;
		left: 50%;
		width: 333px;
		margin: 0;
		padding: 18px 33px 19px;
	}

	/* Productors */
	.productors {
		width: min(1310px, 100% - 2 * var(--gutter));
		margin: 0 auto;
		padding: 62px 0;
	}

	.productors__head {
		display: grid;
		grid-template-columns: 428px 414px 1fr;
		align-items: start;
	}

	.productors__eyebrow { grid-column: 1 / -1; padding-left: 3px; }

	.productors__title {
		margin-top: 27.2px;
		padding-left: 2px;
		font-size: 40px;
	}

	.productors__text { margin-top: 47.2px; }

	.productors__hand {
		position: relative;
		margin-top: 36.2px;
		padding-left: 88px;
		font-size: 50px;
		line-height: 35px;
	}

	.productors__hand::before {
		content: "";
		position: absolute;
		left: 0;
		top: -20px;
		height: 112px;
		border-left: 1px solid var(--green);
	}

	.productors__grid {
		grid-template-columns: repeat(3, minmax(0, 1fr));
		margin-top: 38px;
	}

	.card__body { height: 150px; }

	/* Stats */
	.stats { height: 197px; }

	.stats__list {
		display: flex;
		align-items: center;
		justify-content: space-between;
		max-width: 1440px;
		height: 100%;
		margin: 0 auto;
		padding: 0 71px 0 69px;
	}

	.stat__icon { width: auto; }
	.stat:nth-child(1) { gap: 26px; }
	.stat:nth-child(2) { gap: 30px; }
	.stat:nth-child(3) { gap: 31px; }

	/* Contact */
	.contact { height: 315px; }

	.contact__inner {
		grid-template-columns: 378px 262px;
		grid-template-rows: auto 1fr;
		gap: 0;
		max-width: 1440px;
		margin: 0 auto;
		padding: 43px 0 0 64px;
	}

	.contact__title { grid-column: 1; }
	.contact__list { grid-column: 1; margin-top: 43.2px; }
	.store { grid-column: 2; grid-row: 1 / 3; margin-top: 45px; }

	.contact__map {
		position: absolute;
		top: 0;
		bottom: 0;
		left: calc(50% + 69px);
		right: 0;
		height: auto;
	}

	/* Instagram */
	.insta__grid {
		margin-top: 16.3px;
		padding: 4.8px 0;
	}

	/* Footer */
	.site-footer__inner {
		grid-template-columns: 360px 329px 1fr;
		gap: 0;
		max-width: 1440px;
		margin: 0 auto;
		padding: 36px 64px 32px;
	}

	.site-footer__logo { width: 231px; }

	.site-footer__col { height: 106px; margin-top: 5px; padding-top: 10px; }
	.site-footer__col + .site-footer__col { padding-top: 4px; }

	.site-footer__legal { margin-top: 53px; }
}
