/* reset, modified from https://www.joshwcomeau.com/css/custom-css-reset/ and https://jakelazaroff.com/words/my-modern-css-reset/*/
@layer reset {
	*, *::before, *::after {
		box-sizing: border-box;
	}

	* {
		margin: 0;
		padding: 0;
	}

	@media (prefers-reduced-motion: no-preference) {
		html {
			interpolate-size: allow-keywords;
		}
	}

	body {
		line-height: inherit;
		-webkit-font-smoothing: antialiased;
	}

	img, picture, video, canvas, svg {
		display: block;
		max-inline-size: 100%;
	}

	input, button, textarea, select {
		font: inherit;
		letter-spacing: inherit;
		word-spacing: inherit;
		color: currentColor;
	}

	p, h1, h2, h3, h4, h5, h6 {
		overflow-wrap: break-word;
	}

	ol, ul {
		list-style: none;
	}

	p {
		text-wrap: pretty;
	}

	h1, h2, h3, h4, h5, h6 {
		text-wrap: balance;
	}
}


/* view transitions https://css-tricks.com/almanac/rules/v/view-transition/ */
@media screen and (prefers-reduced-motion: no-preference) {
	@view-transition {
		navigation: auto;
	}
}

::view-transition-old(root) {
	animation: fadeOut 0.4s both;
}

::view-transition-new(root) {
	animation: fadeIn 0.4s both;
}

::view-transition-group(root) {
	animation-duration: 0.5s;
}

@keyframes fadeOut {
	from { opacity: 1; }
	to { opacity: 0; }
}

@keyframes fadeIn {
	from { opacity: 0; }
	to { opacity: 1; }
}

@font-face {
	font-family: 'HDGN';
	src: url('./fonts/SourceSans3VF-Roman.ttf.woff2') format('woff2-variations');
	font-weight: 200 900;
}

/* mazeletter fonts */
@font-face {
	font-family: 'Path';
	src: url('/fonts/mazeletter-path.woff2') format('woff2');
}

/*
font-family: 'Labyrinth';
font-family: 'Boxwood';
font-family: 'Metropolis';
font-family: 'Palazzo';
font-family: 'Underworld';
font-family: 'Ziggurat';
font-family: 'Sandcastle';
font-family: 'Utopia';
*/

* {
	box-sizing: border-box;
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
}

:root {
	--text-light: #fff;
	--text-dark: #111;
	--background: #eee;
	--gray-1: #333;
	--gray-2: #999;
	--gray-3: #ddd;
	--accent-1: rgb(128,4,20); /* 800414 */
	--accent-2: #de8da0;

	--grid-gap: 1rem;
	--nav-gap: 0.5rem;
}

html {
	font: 125%/1.4 "HDGN", system-ui, Helvetica, Arial, sans-serif;
	font-style: normal;
	font-weight: 500;
	background-color: var(--accent-1);
	/* background: var(--background) url(./images/background-pattern-09.jpg); */
	hyphens: auto;

	/* https://heropatterns.com/ */
	background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M54.627 0l.83.828-1.415 1.415L51.8 0h2.827zM5.373 0l-.83.828L5.96 2.243 8.2 0H5.374zM48.97 0l3.657 3.657-1.414 1.414L46.143 0h2.828zM11.03 0L7.372 3.657 8.787 5.07 13.857 0H11.03zm32.284 0L49.8 6.485 48.384 7.9l-7.9-7.9h2.83zM16.686 0L10.2 6.485 11.616 7.9l7.9-7.9h-2.83zm20.97 0l9.315 9.314-1.414 1.414L34.828 0h2.83zM22.344 0L13.03 9.314l1.414 1.414L25.172 0h-2.83zM32 0l12.142 12.142-1.414 1.414L30 .828 17.272 13.556l-1.414-1.414L28 0h4zM.284 0l28 28-1.414 1.414L0 2.544V0h.284zM0 5.373l25.456 25.455-1.414 1.415L0 8.2V5.374zm0 5.656l22.627 22.627-1.414 1.414L0 13.86v-2.83zm0 5.656l19.8 19.8-1.415 1.413L0 19.514v-2.83zm0 5.657l16.97 16.97-1.414 1.415L0 25.172v-2.83zM0 28l14.142 14.142-1.414 1.414L0 30.828V28zm0 5.657L11.314 44.97 9.9 46.386l-9.9-9.9v-2.828zm0 5.657L8.485 47.8 7.07 49.212 0 42.143v-2.83zm0 5.657l5.657 5.657-1.414 1.415L0 47.8v-2.83zm0 5.657l2.828 2.83-1.414 1.413L0 53.456v-2.83zM54.627 60L30 35.373 5.373 60H8.2L30 38.2 51.8 60h2.827zm-5.656 0L30 41.03 11.03 60h2.828L30 43.858 46.142 60h2.83zm-5.656 0L30 46.686 16.686 60h2.83L30 49.515 40.485 60h2.83zm-5.657 0L30 52.343 22.343 60h2.83L30 55.172 34.828 60h2.83zM32 60l-2-2-2 2h4zM59.716 0l-28 28 1.414 1.414L60 2.544V0h-.284zM60 5.373L34.544 30.828l1.414 1.415L60 8.2V5.374zm0 5.656L37.373 33.656l1.414 1.414L60 13.86v-2.83zm0 5.656l-19.8 19.8 1.415 1.413L60 19.514v-2.83zm0 5.657l-16.97 16.97 1.414 1.415L60 25.172v-2.83zM60 28L45.858 42.142l1.414 1.414L60 30.828V28zm0 5.657L48.686 44.97l1.415 1.415 9.9-9.9v-2.828zm0 5.657L51.515 47.8l1.414 1.413 7.07-7.07v-2.83zm0 5.657l-5.657 5.657 1.414 1.415L60 47.8v-2.83zm0 5.657l-2.828 2.83 1.414 1.413L60 53.456v-2.83zM39.9 16.385l1.414-1.414L30 3.658 18.686 14.97l1.415 1.415 9.9-9.9 9.9 9.9zm-2.83 2.828l1.415-1.414L30 9.313 21.515 17.8l1.414 1.413 7.07-7.07 7.07 7.07zm-2.827 2.83l1.414-1.416L30 14.97l-5.657 5.657 1.414 1.415L30 17.8l4.243 4.242zm-2.83 2.827l1.415-1.414L30 20.626l-2.828 2.83 1.414 1.414L30 23.456l1.414 1.414zM56.87 59.414L58.284 58 30 29.716 1.716 58l1.414 1.414L30 32.544l26.87 26.87z' fill='%23de8da0' fill-opacity='0.12' fill-rule='evenodd'/%3E%3C/svg%3E");
	background-size: 5%;

	scrollbar-gutter: stable; /* always reserve scrollbar space to prevent jumping */
}

img { max-width: 100%; height: auto; }
ul { list-style: none; }
a { color: currentColor; }
table { border-collapse: collapse; margin-bottom: 1rem; width: 100%; }

input, textarea, button {
	font-family: inherit;
	font-size: inherit;
	font-weight: inherit;
	line-height: inherit;
}

figure img {
	display: block;
}

figcaption {
	background: var(--accent-2);
	color: var(--accent-1);
	font-size: 0.75rem;
	padding: 0.4em 0.7em 0.5em;
}

hr {
	border: 0;
	height: 2px;
	background-color: var(--accent-1);
	margin-block: 1.5rem 1.75rem;
}

.button {
	display: inline-block;
	padding: 0.2em 0.5em;
	background: var(--gray-1);
	color: var(--text-light);
	text-decoration: none;
}

.button:is(:hover, :focus) {
	background: var(--accent-2);
	color: var(--text-dark);
}

.message {
	padding: 0.2em 0.5em;
	background-color: #ffeeaa;
}

.message.good {
	background-color: #9be69e;
}

.hidden {
	display: none;
}

.visually-hidden {
	position: absolute;
	left: -9999px;
}

:is(.xs, .s, .m, .l, .xl) {
	--scale: 1.0;
}

/* todo: https://css-tricks.com/linearly-scale-font-size-with-css-clamp-based-on-the-viewport/  */
.xs { font-size: calc(0.75rem * var(--scale)); line-height: 1.35; }
.s  { font-size: calc(0.9rem * var(--scale));  line-height: 1.25; }
.m  { font-size: calc(1rem * var(--scale));    line-height: 1.25; }
.l  { font-size: calc(1.25rem * var(--scale)); line-height: 1.15; }
.xl { font-size: calc(1.5rem * var(--scale));  line-height: 1.20; }

@container grid-box (min-width: 451px) {
	.xl {
		font-size: clamp(1.0rem, 4cqw, 1.5rem);
		line-height: 1.15;
		font-weight: 600;
	}
}

@container grid-box (max-width: 450px) {
	/* size adjustments for narrow containers */

	/*
	:is(.xs, .s, .m, .l, .xl) {
		--scale: 1.0;
	}
	*/

	:is(.m) {
		--scale: 0.85;
		font-size: 0.9rem;
		line-height: 1.25;
		
	}

	:is(.xl) {
		--scale: 0.85;
		font-size: 1rem;
		line-height: 1.15;
		font-weight: 600;
	}
}

/* .xs, .s, .m, .l, .xl */ .fit {
	--minFontSize: 0.75rem;
	--maxFontSize: 1.5rem;
	--scaler: 3.2vw;
	font-size: clamp(var(--minFontSize), var(--scaler), var(--maxFontSize));
}

.no-hyphen { hyphens: none; }

.ml { /* mazeletter font settings */
	line-height: 1em !important;
	font-size: 66px;
	overflow: hidden;
	white-space: nowrap;
	pointer-events: none;
	user-select: none;
}

#background {
	position: fixed;
	z-index: -1000;
	top: 0;
	width: 100%;
	min-height: 100vh;
	/* background: var(--accent-1); */
	color: var(--accent-2);
	opacity: 0.1;
	font-family: 'Path';
}

#background > span { display: block; }

.container {
	margin-inline: auto;
	margin-block: 2vh 8rem;
	width: 95%;
	max-width: 105ch;
	border: 0px solid red;
	background-color: var(--text-light);
	padding: 1.5rem;

	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: var(--grid-gap);
}

.container > * {
	border-top: 2px solid transparent;
	padding-top: 0.5em;
}

.container .border {
	border-color: var(--accent-1);
}

.container > .pad,
.container > .box {
	padding: 0.5rem 0.5rem 0.25rem;
}

.container > .box {
	background-color: #f4f4f4;
}

.container > .no-pad {
	border-top: 0;
	padding: 0;
}

.container > :is(.w1, .w2, .w3, .w4, .w5, .w6) {
	container-type: inline-size; /* ? */
	container-name: grid-box;
}

.container > .w1 { grid-column-start: span 1; }
.container > .w2 { grid-column-start: span 2; }
.container > .w3 { grid-column-start: span 3; }
.container > .w4 { grid-column-start: span 4; }
.container > .w5 { grid-column-start: span 5; }
.container > .w6 { grid-column-start: span 6; }

.container header,
.container footer {
	grid-column-start: span 6;
}

html:not(.home) header {
	display: none;
}

/*
html:not(.home) header {
	grid-column-start: span 1;
}

html:not(.home) header #title {
	display: none;
}

html:not(.home) header #logo img {
	max-width: 40%;
	margin-block: 0;
	position: relative;
	transition: top 0.25s ease;
	top: 0;
}

html:not(.home) header #logo a:hover img {
	top: -0.2em;
}

html:not(.home) nav.main {
	grid-column-start: span 5;
	align-self: center;
}
*/

.container #logo img {
	display: block;
	margin-inline: auto;
	width: 100%;
	max-width: 14ch;
	margin-block-end: 0.5rem;
}

.container #title {
	text-align: center;
	font-weight: 600;
	color: var(--accent-1);
}

.container nav.main {
	grid-column-start: span 6;
	border: 0;
	padding: 0;
	/* padding-block: 0.5rem; */

	position: sticky;
	z-index: 1000;
	top: -1px;
	background: #fff;
}

.container nav.main.mini {
	background: #fff;
}

.container nav.main .mini-logo {
	flex: 0 0 0rem;
	padding-block: var(--nav-gap) 0;
	transition: all 0.5s;
	min-width: unset;
}

.container nav.main.mini .mini-logo {
	flex-basis: 3rem;
	margin-right: calc(var(--nav-gap) * 2);
}

.container nav.main .mini-logo a {
	background-color: transparent !important;
}

.container nav.main .mini-logo img {
	position: relative;
	top: 0;
	transition: top 0.25s ease;
}

.container nav.main .mini-logo a:hover img {
	top: -0.2em;
}

.container nav.main ul {
	display: flex;
	gap: var(--nav-gap);
	gap: 0;
	align-items: center;
	min-height: 70px; /* magic number to make it not jump when mini-logo is shown */
}

.container nav.main li {
	flex: 1;
	min-width: 50px; /* make overflow ellipsis possible */
}

.container nav.main li:nth-child(n+3) {
	margin-left: var(--nav-gap);
}

.container nav.main ul li:nth-child(n+2) a {
	display: block;
	height: 100%;
	text-align: center;
	text-decoration: none;
	text-transform: uppercase;
	font-size: 0.75rem;
	font-weight: bold;
	padding: 0.5em 0.6em;
	background: var(--accent-1);
	color: var(--text-light);
	hyphens: none;

	/* handle long menu items */
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.container nav.main ul li:nth-child(n+2) a:is(:hover,:focus,[aria-current]) {
	background: var(--accent-2);
}

.container h1 {
	font-weight: bold;
	font-size: 2em;
	margin-bottom: 0.5em;
}

.container h2 {
	font-weight: bold;
	margin-bottom: 0.5em;
}

.container h3 {
	font-weight: bold;
	margin-bottom: 0.5em;
}

.container p {
	margin-bottom: 0.5em;
}

.container table td {
	padding: 0.2em 0.5em 0.25em 0;
}

.container table tr + tr td {
	border-top: 1px solid var(--gray-3);
}

.container table.hours td:first-of-type {
	width: 9ch;
}

.container .job {
	border-top: 1px solid #bbb;
	padding-top: 1rem;
}

.container #news p + p {
	border-top: 1px solid #bbb;
	padding-top: 0.2em;
}

.container form input[type="text"],
.container form input[type="date"],
.container form input[type="email"],
.container form input[type="number"],
.container form textarea {
	display: block;
	border: 1px solid var(--gray-2);
	padding: 0.14em 0.3em 0.1em;
	width: min(100%, 65ch);
}

.container input[type="radio"],
.container input[type="checkbox"] {
	padding-right: 0.5ch;
}

.container input[readonly],
.container input[disabled] {
	background-color: var(--gray-3);
	color: var(--gray-2);
	cursor: not-allowed;
	pointer-events: all !important;
}

.container input[type="submit"],
.container button {
	background-color: var(--gray-1);
	color: var(--text-light);
	padding: 0.2em 0.5em;
	cursor: pointer;
}

.container footer {
	display: flex;
	justify-content: space-between;
	border-top: 2px solid var(--accent-1);
	padding-top: 0.5rem;
}

.container footer nav ul {
	display: flex;
	gap: 0.5em;
}

.slideshow {
	background: #000;
}

.slideshow img {
	display: block;
}

.tns-nav {
	display: flex;
	gap: 0.5ch;
	justify-content: center;
	margin-block: 0.5rem;
}

.tns-nav button {
	width: 1px;
	min-height: 0.75rem;
	background-color: var(--gray-3);
}

.tns-nav button.tns-nav-active,
.tns-nav button:is(:hover, :focus) {
	background-color: var(--accent-1);
}

#teaser-tortenbuch .video-container {
	aspect-ratio: 1 / 1;
	display: grid;
	grid-template-columns: 1fr;
	text-decoration: none;
}

#teaser-tortenbuch video {
	width: 100%;
	height: 100%;
	grid-column-start: 1;
	grid-row-start: 1;
	/* z-index: -1; */ /* caused problems, why was this here?  */
}

#teaser-tortenbuch .overlay {
	opacity: 0;
	grid-column-start: 1;
	grid-row-start: 1;
	display: flex;
	flex-flow: column wrap;
	justify-content: center;
	align-items: center;
	z-index: 2;
	transition: opacity 0.4s;
}

#teaser-tortenbuch > .video-container:hover .overlay {
	opacity: 1;

}

#teaser-tortenbuch .overlay .bg {
	margin-top: -1.2rem;
	background: white;
	padding: 0.2em 0.5em;
	text-align: center;
}

/* for touch-only devices  */
@media (hover: none) {
	#teaser-tortenbuch > .video-container .overlay {
		opacity: 1;
		grid-row-start: 2;
		margin-top: -6.5rem;
	}

	#teaser-tortenbuch h2 { display: none; }

	#teaser-tortenbuch .overlay .bg {
		margin-top: 0;
		background: transparent;
		padding: 0;
	}
}

@media screen and (max-width: 52em) {
	html {
		-webkit-hyphens: auto;
		hyphens: auto;
	}

	.container { padding-top: 0; }

	.container > :is(.w1,.w2,.w3,.w4,.w5,.w6) { grid-column-start: span 6; }
	.container nav.main ul {
		flex-flow: row wrap;
	}

	html header {
		display: none;
	}

	.container nav.main.mini {
		position: static;
	}

	.container nav.main.mini .mini-logo {
		flex-basis: 100% !important;
		text-align: center;
		margin: 0;
	}

	.container nav.main.mini ul {
		justify-content: flex-start;
		gap: calc(var(--nav-gap) / 2);
	}

	.container nav.main.mini li {
		margin: 0 !important;
		min-width: unset;
	}

	.container nav.main.mini .mini-logo img {
		max-width: 3rem;
	}

	.container footer { flex-direction: column-reverse; }
	.container footer nav.secondary {
		margin-bottom: 0.5em;
	}
}
