/* @group TYPO */

@font-face {
    font-family: 'Stolzl';
    src: url('../fonts/stolzl-book.woff') format('woff');
    font-weight: normal;
    font-style: normal;
}

@font-face {
    font-family: 'Stolzl';
    src: url('../fonts/stolzl-medium.woff') format('woff');
    font-weight: bold;
    font-style: normal;
}

/* @end */

/* @group VARIABLES */

:root {
	
	--background: #f9ece1;
	--background-light: rgba(246,247,247,1);
	--text: #000; 
	/*--highlight: #378262;*/
	--highlight: #2f7254;
	
	--max-width: calc(74rem + 2 * var(--spacing-inline));
	
	--spacing-block: 		clamp(1.6rem, 4vw, 2.4rem);
	--spacing-block-lg: clamp(2.4rem, 6vw, 4.8rem);
	
	--spacing-inline: clamp(1rem, 2vw, 4rem);
	
	--spacing-columns: 4rem;
	
}

/* @end */

/* @group BASE */

html {
	background-color: var(--background);
	color: var(--text);
	font-family: 'Stolzl', Helvetica, Arial, sans-serif;
	font-size: 17px;
	font-weight: 300;
	line-height: 1.6em;
}

body {
	min-width: 320px;
}

.home {
	background-color: var(--background-light);
}

strong,
h2,
h3,
.header,
.menu {
	font-weight: bold;
	font-size: 1.05em;
}

h1 {
	max-width: 17em;
	font-size: clamp(1.6rem, 4vw, 2.8rem);
	font-weight: bold;
	line-height: 1.25em;
}

.home h1 {
	max-width: 12em;
	margin-top: unset;
	margin-bottom: 1rem;
}
	
	.home h1 strong {
		color: var(--highlight);
		font-size: 1em;
	}
	
	@media (max-width: 699px) {
		
		.home h1 {
			margin-bottom: unset;
			margin-left: calc(-1 * var(--spacing-inline));
		}
		
			.home h1 span {
				display: inline;
				padding-block:	 .1em;
				padding-inline: var(--spacing-inline);
				background-color: var(--background-light);
				box-decoration-break: clone;
				-webkit-box-decoration-break: clone;
				line-height: .8em;
			}
			
	}

* + h1 {
	margin-top: 1em;
}

h1:has(+ *) {
	margin-bottom: var(--spacing-block);
}

h2 {
	font-size: 1.5em;
	line-height: 1.25em;
}

* + h2 {
	margin-top: 1.5em;
}

h2:has(+ *) {
	margin-bottom: 1.6rem;
}

* + h3 {
	margin-top: 1.6rem;
}

h3:has(+ *) {
	margin-bottom: .8rem;
}

p:has(+ *) {
	margin-bottom: .8em;
}

* + p:has(.button) {
	margin-top: 1.6em;
}

img,
picture {
	max-width: 100%;
	height: auto;
	vertical-align: bottom;
}

@media (min-width: 700px) {

	h2 {
		font-size: 1.75rem;
	}

}

.main li {
	break-inside: avoid;
}

.main ul:not([class]) {
	margin-bottom: 1.6em;
}

	.main ul:not([class]) li {
		display: table;
		margin-bottom: .8em;
	}
	
		.main ul:not([class]) li:before {
			content: "•";
			display: table-cell;
			width: 1.5em;
			text-align: center;
		}
	
.main ol:not([class]) {
	margin-bottom: 1.6em;
	
}

	.main ol:not([class]) li {
		display: table;
		margin-bottom: .8em;
		counter-increment: p-counter;
	}
	
		.main ol:not([class]) li:before {
			content: counter(p-counter);
			display: table-cell;
			width: 1.75em;
			text-align: left;
		}

/* @group Links */

a {
	text-decoration: underline;
  text-decoration-thickness: .07em;
  text-underline-offset: 0.15em;
  transition: text-decoration 0.15s ease-in-out 0s;
}

.header a,
.menu a,
.footer a {
	color: var(--highlight);
}

.main a {
	text-decoration-color: var(--highlight);
}

.banner a,
.menu a {
	text-decoration-color: transparent;
}

.banner a.active,
.banner a:hover,
.menu a.active,
.menu a:hover,
.main a:hover,
.footer a:hover {
	text-decoration-color: currentColor;
	text-decoration-thickness: .1em;
}

a:has(> .button),
.button > a {
	display: inline-block;
	padding: .6em 1.4em;
	background-color: var(--highlight);
	color: var(--background);
	border-radius: 2.4em;
	line-height: 1.2em;
}

/* @end */

/* @end */

/* @group LAYOUT */

.main figure:not([class]) {
	margin-bottom: 2em;
	max-width: 75%;
	height: auto;
}

	.main figure img {
		margin-bottom: .5em;
	}

/* @end */

/* @group Home */

.home {
	display: grid;
	grid-template-columns: 100%;
	grid-template-rows: minmax(100vh, auto) auto; /* Fallback */
	grid-template-rows: auto 1fr auto;
}

	/* Invisible placholder: row 1+2 min. 100svh */
	.home::before {
		content: '';
		grid-row: 1 / 3;
		grid-column: 1;
		height: 100vh; /* Fallback */
		height: 100svh;
		pointer-events: none;
	}

	.home .header,
	.home .main,
	.home .footer {
		grid-column: 1;
		width: 100%;
	}

	.home .header {
		grid-row: 1;
		margin-bottom: 0;
	}

	.home .main {
		grid-row: 2;
		align-self: end;
		padding-bottom: 1.6rem;
	}

	.home .footer {
		grid-row: 3;
	}

/* @end */

/* @group Header */

.header {
	position: relative;
	z-index: 20;
	max-width: var(--max-width);
	margin-inline: auto;
	margin-bottom: 3em;
	padding-top: clamp(1rem, 3vw, 3rem);
	padding-inline: var(--spacing-inline);
}

	.header__banner {
		margin-bottom: 1em;
	}
	
	@media (max-width: 699px) {
		
			.header__banner {
				padding-right: 3rem; /* placeholder for menu-toggle */
			}
		
	}
		
	@media (min-width: 700px) {
		
		.header {
			display: grid;
			grid-template-columns: repeat(2, 1fr);
			grid-column-gap: var(--spacing-columns);
			margin-bottom: 6em;
		}
			
			.header__menu {
				padding-top: 7.5em; /* placeholder for logo */
			}
	
	}

/* @end */

/* @group Logo */
	
	.logo {
		position: relative;
		display: inline-block;
		width: 4em;
		height: 6em;
		margin-top: 1em;
		margin-bottom: .75em;
		padding-bottom: 2em;
	}
	
		.logo__circle {
			position: relative;
			display: inline-block;
			width: 100%; height: 100%;
			border: .5em solid var(--highlight);
			border-radius: 50%;
		}
		
		.logo__male,
		.logo__female {
			position: absolute;
			left: 50%; bottom: 0;
			display: inline-block;
			width: .5em; height: 2em;
			
			transform: translateX(-50%) rotate(-135deg);
			transform-origin: 50% -2em;
			background-color: var(--highlight);
		}
		
		.logo__male {
			opacity: .25;
		}
		
		.logo__female {
			animation-name: arrow;
			animation-duration: 1.5s;
			animation-delay: 1s;
			animation-iteration-count: 1;
			animation-timing-function: ease;
			animation-fill-mode: forwards;
		}
		
		@keyframes arrow {
		
			100% {
				transform: translateX(-50%) rotate(0);
			}
		}
			
			.logo__male:before,
			.logo__male:after,
			.logo__female:before,
			.logo__female:after {
				position: absolute;
				display: inline-block;
				width: .75em; height: .5em;
				animation-duration: 1.5s;
				animation-delay: 1s;
				animation-iteration-count: 1;
				animation-timing-function: ease;
				animation-fill-mode: forwards;
				content: "";
				background-color: var(--highlight);	
			}
			
			.logo__male:before,
			.logo__female:before {
				right: 50%; top: 100%;
				width: 1.5em;
				transform: translateY(-50%) rotate(45deg);
				transform-origin: 100% 100%;
			}
			
			.logo__female:before {
				animation-name: twig;
			}
			
			.logo__male:after,
			.logo__female:after {
				left: 50%; top: 100%;
				width: 1.5em;
				transform: translateY(-50%) rotate(-45deg);
				transform-origin: 0% 100%;
			}
			
			.logo__female:after {
				animation-name: twig;
			}
			
			@keyframes twig {
	
			 	100% {
					top: 50%;
					width: 1em;
					transform: translateY(-50%);
			 	}
			 }
		
	/* @end */
	
	/* @group Menu */

.menu {
	margin-bottom: 1em;
	line-height: 1.25em;
}

	.menu__separator {
		height: 1.5em;
	}

	.menu__item:not(:last-child) {
		margin-bottom: .75em;
	}

	@media (max-width: 699px) {
		
		.home .main .menu {
			display: none;
		}
		
		.menu--mobile {
			position: fixed;
			z-index: 20;
			top: 0;
			right: 0;
			width: 100vw;
			padding-block: 4rem 2rem;
			padding-left: 5%;
			padding-right: 3rem;
			background-color: var(--highlight);
			transform: translateY(-100%);
	    transition: transform .3s ease-in-out, visibility 0s linear .3s;
		}
		
		.menu--mobile:not(.open) {
			visibility: hidden;
		}
		
		.menu--mobile.open {
			transform: translateY(0);
			transition-delay: 0s;
		}
		
			.menu--mobile a {
				color: var(--background);
			}
		
	}
	
	@media (min-width: 700px) {
		
		.home .header .menu {
			display: none;
		}
	}

/* @end */

/* @group Menu-underlay */

.menu-underlay {
  pointer-events: none;
  position: fixed;
  z-index: 15;
  inset: 0;
  background-color: color-mix(in oklch, var(--background, white), transparent 10%);
  opacity: 0;
  transition: opacity 0.2s ease-in-out 0s;
}

.menu-underlay.visible {
  pointer-events: auto;
  opacity: 1;
}

	@media (min-width: 700px) {
		
	  .menu-underlay {
	    display: none;
	  }
	  
	}

/* @end */

/* @group Menu toggle */

.menu-toggle {
  position: fixed;
	z-index: 30;
  inset-block-start: 0;
  inset-inline-end: 0;
  width: 3rem;
  height: 3rem;
  padding: 0.6rem;
  color: var(--background);
  background-color: var(--highlight);
}

.menu-toggle:hover {
  cursor: pointer;
}

	@media (min-width: 700px) {
		
	  .menu-toggle {
			display: none;
		}
	  
	}

/* @end */

/* @group Main */

.main {
	position: relative;
	z-index: 1;
	max-width: var(--max-width);
	margin-inline: auto;
	padding-inline: var(--spacing-inline);
}

/* @end */

/* @group Cover */

.cover {
	position: absolute;
	z-index: 0;
	top: 0;
	background-color: var(--background-light);
}

	.cover picture,
	.cover img {
		display: block;
		width: 100vw;
		height: 100vh; /* Fallback */
		height: 100svh;
		object-fit: cover;
		object-position: center top;
	}
	
	@media (max-width: 699px) {
		
		.cover {
			padding-top: 5vh;
		}
		
			.cover::after {
				content: "";
				position: absolute;
				z-index: 1;
				bottom: 0;
				right: 0;
				left: 0;
				height: 40vh;
				background: linear-gradient(to top, var(--background-light) 1rem, transparent 100%);
			}
			
			.cover picture,
			.cover img {
				height: calc(100vh - 5vh);
			}
		
	}
	
	@media (min-width: 700px) {
		
		.cover {
			position: fixed;
		}
		
	}

/* @end */

/* @group Hamburger */

.hamburger {
  position: relative;
  z-index: 10;
	display: block;
  width: 100%;
  height: 100%;
}

	.hamburger > * {
	  display: block;
	  position: absolute;
	  top: 50%;
	  height: 2px;
	  width: 100%;
	  background-color: currentColor;
	  transition: all 0.15s ease-in-out 0s;
	  transform: translateY(-50%);
	}

	.hamburger > *:nth-child(1) {
	  transform: translateY(calc(-50% + 0.3rem));
	}
	
	.hamburger > *:nth-child(2) {
	  transform: translateY(calc(-50% - 0.3rem));
	}
	
	.hamburger.open > *:nth-child(1),
	.hamburger.open > *:nth-child(2) {
	  margin-inline: auto;
	}
	
	.hamburger.open > *:nth-child(1) {
	  transform: rotate(45deg);
	}
	
	.hamburger.open > *:nth-child(2) {
	  transform: rotate(-45deg);
	}

/* @end */

/* @group Section & Column */

.section {
	display: grid;
	column-gap: var(--spacing-columns);
	row-gap: var(--spacing-block);
}

.section:has(+ *) {
	margin-block-end: var(--spacing-block);
}

.section:has(+ .section > .column > h1:only-child) {
	margin-bottom: var(--spacing-block-lg);
}

	.section figure:has(+ *) {
		margin-block-end: 1.5rem;
	}
	
	@media (min-width: 900px) {
		
		.section--2-cols {
			grid-template-columns: repeat(2, 1fr);
		}
		
		.section--3-cols {
			grid-template-columns: repeat(3, 1fr);
		}
		
	}
	
	.column {
		container-type: inline-size;
	}
	
		@container (min-width: 50rem) {
			
				.column ul,
				.column ol {
					columns: 2;
					column-gap: var(--spacing-columns);
				}
			
		}

/* @end */

/* @group Cols */

.cols {
	display: grid;
  grid-column-gap: var(--spacing-columns);
	grid-row-gap: .8rem;

}
	
	@media (min-width: 900px) {
	
		.cols {
			grid-template-columns: repeat(2, 1fr);
		}
		
	}

/* @end */

/* @group Footer */

.footer {
	position: relative;
	z-index: 1;
	max-width: var(--max-width);
	margin-top: 3em;
	margin-inline: auto;
	padding-inline: var(--spacing-inline);
	padding-bottom: 1rem;
}

.home .footer {
	margin-top: 0;
	padding-top: 1em;
	border-top: none;
}

	.footer .cols {
		margin-bottom: 2rem;
		padding-top: 2em;
		border-top: 2px solid var(--text);
	}

	@media (min-width: 700px) {
		
		.footer {
			margin-top: 6em;
		}
		
	}

/* @end */