/* Header */

header {
	position:fixed;
	top:20px;
	left:0;
	right:0;
	width:100%;
	height:141px;
	margin:0;
	padding:0;
	background-color:transparent;
	box-sizing:border-box;
	z-index:999;
	pointer-events:none;
}

header label { cursor:pointer; }

html.nav-open {
	overflow:hidden;
	overscroll-behavior:none;
}

body.nav-open {
	position:fixed;
	top:var(--nav-scroll-offset, 0);
	left:0;
	right:0;
	width:100%;
	overflow:hidden;
	overscroll-behavior:none;
}

body.nav-open .flexslider,
body.nav-open .flexslider * {
	animation-play-state:paused !important;
}

input.open_nav,
input.open_contact {
	position:absolute;
	width:1px;
	height:1px;
	margin:-1px;
	padding:0;
	overflow:hidden;
	clip:rect(0 0 0 0);
	clip-path:inset(50%);
	white-space:nowrap;
	border:0;
}

.header-controls {
	position:absolute;
	top:0;
	left:50%;
	display:flex;
	align-items:stretch;
	gap:1px;
	width:max-content;
	height:141px;
	margin:0;
	padding:0;
	transform:translateX(-50%);
	transition:opacity .5s;
	z-index:996;
	pointer-events:none;
}

/* Zwei Bedienfelder links und rechts vom Logo */

.header-side {
	position:relative;
	display:grid;
	grid-template-rows:repeat(2, 70px);
	gap:1px;
	flex:0 0 70px;
	width:70px;
	height:141px;
	margin:0;
	padding:0;
	box-sizing:border-box;
	z-index:996;
	pointer-events:auto;
}

.header-side-left { order:1; }
.header-side-right { order:3; }

.hamburger,
.kontakt,
.social-link {
	position:relative;
	display:flex;
	align-items:center;
	justify-content:center;
	width:100%;
	height:70px;
	margin:0;
	padding:0;
	background-color:#fff;
	box-sizing:border-box;
}

.social-link {
	font-size:30px;
	line-height:1;
	text-decoration:none;
	transition:color .5s;
}

.social-link.facebook { color:var(--gelb);transition:color .5s; }
.social-link.facebook:hover,
.social-link.facebook:focus-visible { color:var(--gruen);transition:color .5s; }

.social-link.instagram { color:var(--orange);transition:color .5s; }
.social-link.instagram:hover,
.social-link.instagram:focus-visible { color:var(--gruen);transition:color .5s; }

.hamburger label {
	display:flex;
	align-items:center;
	justify-content:center;
	width:100%;
	height:100%;
	margin:0;
	padding:0;
	font-size:36px;
	line-height:1;
	color:var(--blau);
	transition:color .5s;
}

.hamburger label:hover { color:var(--orange);transition:color .5s; }

/* Logo in der Mitte */

header .logo-link {
	position:relative;
	display:block;
	flex:0 0 240px;
	width:240px;
	height:141px;
	margin:0;
	padding:0;
	background-color:#fff;
	order:2;
	z-index:998;
	pointer-events:auto;
}

header .logo {
	display:block;
	width:100%;
	height:100%;
	margin:0;
	padding:0;
	background-image:url("../img/tcbs_logo.png");
	background-repeat:no-repeat;
	background-position:center;
	background-size:194px 100px;
	box-sizing:border-box;
}

/* Kontakt oben rechts */

.kontakt-toggle {
	display:flex;
	align-items:center;
	justify-content:center;
	width:100%;
	height:100%;
	margin:0;
	padding:0;
	font-size:32px;
	line-height:1;
	color:var(--gruen);
	transition:color .5s;
}

.kontakt-toggle:hover { color:var(--orange);transition:color .5s; }
.kontakt-toggle .icon-close { display:none; }
.open_contact:checked ~ .kontakt-toggle .icon-open { display:none; }
.open_contact:checked ~ .kontakt-toggle .icon-close { display:inline-block; }

.contactform {
	position:absolute;
	top:0;
	left:calc(100% + 1px);
	display:block;
	visibility:hidden;
	width:300px;
	height:auto;
	margin:0;
	padding:0 20px;
	overflow:hidden;
	background-color:rgb(255 255 255 / 80%);
	-webkit-backdrop-filter:blur(5px);
	backdrop-filter:blur(5px);
	box-sizing:border-box;
	opacity:0;
	transform:scaleX(0);
	transform-origin:left top;
	transition:transform .5s ease, opacity .5s ease, visibility .5s;
	pointer-events:none;
}

.open_contact:checked ~ .contactform {
	visibility:visible;
	opacity:1;
	transform:scaleX(1);
	pointer-events:auto;
}

.contactform input[type="text"],
.contactform textarea {
	display:block;
	width:100%;
	height:auto;
	margin:0;
	padding:0;
	overflow:hidden;
	font-family:'Fira Sans SemiBold', Helvetica Neue, Arial, Helvetica, sans-serif;
	font-size:20px;
	font-style:normal;
	line-height:70px;
	text-align:left;
	color:var(--blau);
	background-color:transparent;
	border:0;
	border-bottom:.5px solid var(--gruen);
	border-radius:0;
	outline:none;
	resize:none;
	appearance:none;
	box-sizing:border-box;
}

.captcha-consent {
	display:grid;
	grid-template-columns:auto minmax(0, 1fr);
	align-items:start;
	gap:8px;
	width:100%;
	margin:14px 0 0;
	padding:0;
	font-family:'Fira Sans Light', Helvetica Neue, Arial, Helvetica, sans-serif;
	font-size:12px;
	line-height:1.35;
	color:rgb(var(--blau-rgb) / 50%);
	text-align:left;
	box-sizing:border-box;
}

.captcha-consent input[type="checkbox"] {
	width:16px;
	height:16px;
	margin:1px 0 0;
	accent-color:var(--gruen);
	cursor:pointer;
}

.captcha-consent a {
	font-family:'Fira Sans Light Italic', Helvetica Neue, Arial, Helvetica, sans-serif;
	color:var(--orange);
	text-decoration:none;
}

.captcha-consent a:hover,
.captcha-consent a:focus-visible {
	color:var(--gruen);
}

.contactform button {
	display:block;
	width:100%;
	height:auto;
	margin:0;
	padding:20px 0;
	font-size:40px;
	line-height:1;
	text-align:left;
	color:var(--orange);
	background-color:transparent;
	border:0;
	border-radius:0;
	outline:none;
	cursor:pointer;
	appearance:none;
	transition:color .5s;
	box-sizing:border-box;
}

.contactform button:hover { color:var(--gruen); }

/* Geöffnete Hauptnavigation */

.open_nav:checked ~ .header-controls {
	opacity:0;
	pointer-events:none;
}

.open_nav:checked ~ nav.main {
	visibility:visible;
	width:100vw;
	height:100vh;
	height:100dvh;
	opacity:1;
	z-index:99999;
}

/* Hauptnavigation */

nav.main {
	position:fixed;
	top:0;
	left:50%;
	display:block;
	visibility:hidden;
	width:0;
	height:0;
	margin:0;
	padding:30px 60px 0;
	overflow:auto;
	background-color:rgb(var(--orange-rgb) / 80%);
	-webkit-backdrop-filter:blur(5px);
	backdrop-filter:blur(5px);
	box-sizing:border-box;
	opacity:0;
	transform:translateX(-50%);
	transition:width .5s, height .5s, opacity .5s, visibility .5s;
	z-index:1;
	pointer-events:auto;
	-webkit-text-size-adjust:100%;
	text-size-adjust:100%;
}

nav.main .close {
	display:block;
	width:100%;
	height:30px;
	margin:0;
	padding:0 0 20px;
	text-align:center;
}

nav.main .close label {
	display:inline-flex;
	align-items:center;
	justify-content:center;
	height:30px;
	margin:0;
	padding:0;
	font-size:40px;
	line-height:1;
	color:var(--blau);
	transition:color .5s;
}

nav.main .close label:hover { color:var(--gruen); }

nav.main .nav-grid {
	display:grid;
	grid-template-columns:repeat(3, minmax(0, 1fr));
	width:100%;
	margin:0;
	padding:0 0 40px;
	box-sizing:border-box;
}

nav.main .row {
	display:contents;
}

nav.main ul {
	display:block;
	float:none;
	width:100%;
	height:auto;
	min-height: 300px;
	margin:0;
	padding:40px 40px 20px;
	list-style:none;
	box-sizing:border-box;
}
nav.main ul.last {
	min-height:auto;
}

nav.main .row.secondary ul {
	min-height:0;
}

nav.main li {
	width:auto;
	margin:0;
	padding:0;
	font-family:'Fira Sans Light', Helvetica Neue, Arial, Helvetica, sans-serif;
	font-size:30px;
	font-weight:normal;
	font-style:normal;
	line-height:1.5;
	color:var(--off);
}

nav.main a {
	display:block;
	padding:0 0 0 5px;
	font-family:'Fira Sans Light', Helvetica Neue, Arial, Helvetica, sans-serif;
	font-size:26px;
	text-align:center;
	text-decoration:none;
	color:var(--off);
	transition:color .5s;
}

nav.main li.sgmnt a {
	width:100%;
	margin:0 0 10px;
	padding:10px 0;
	font-family:'Fira Sans Bold', Helvetica Neue, Arial, Helvetica, sans-serif;
	font-size:30px;
	border-bottom:.5px solid var(--off);
}

nav.main li.sgmnt a.last { margin:0; border-bottom:0; }

nav.main a:hover { color:var(--blau); }
nav.main .active a { color:var(--gelb); }

@media only screen and (max-width:1920px) {
	nav.main { padding:20px 40px 0; }
	nav.main ul { padding:30px 30px 20px; }
}

@media only screen and (max-width:1600px) {
	nav.main { padding:20px 30px 0; }
	nav.main li,
	nav.main li.sgmnt a { font-size:28px; }
	nav.main a { font-size:24px; }
}

@media only screen and (max-width:1280px) {
	nav.main { padding:20px 20px 0; }
	nav.main ul { padding:20px; }
}

/* Kontaktformular unter dem gesamten Header */

@media only screen and (max-width:1024px) {
	.header-side {
		flex-basis:60px;
		width:60px;
	}

	.hamburger label { font-size:34px; }

	.header-side-right,
	.kontakt { position:static; }
	.kontakt-toggle { font-size:28px; }
	.social-link { font-size:28px; }

	.contactform {
		top:calc(100% + 1px);
		left:0;
		width:100%;
		max-height:calc(100vh - 162px);
		max-height:calc(100dvh - 162px);
		padding:0 20px;
		overflow-x:hidden;
		overflow-y:auto;
		transform:scaleY(0);
		transform-origin:center top;
	}

	.open_contact:checked ~ .contactform { transform:scaleY(1); }

	.contactform input[type="text"],
	.contactform textarea { font-size:18px; }
	
	nav.main ul {
		min-height:240px;
	}

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

	nav.main .row.secondary {
		display:block;
		width:100%;
		min-width:0;
	}

	nav.main .row.secondary ul {
		width:100%;
		min-height:0;
		padding-top:0;
		padding-bottom:10px;
	}

	nav.main .row.secondary ul:first-child {
		padding-top:20px;
	}

}

@media only screen and (max-width:768px) {
	header {
		position:absolute;
		top:10px;
	}

	.contactform button { font-size:30px; }

	nav.main { padding:10px 10px 0; }

	nav.main .close {
		height:24px;
		padding:10px 0 20px;
	}

	nav.main .close label {
		height:24px;
		font-size:30px;
	}

	nav.main li,
	nav.main li.sgmnt a { font-size:26px; }
	nav.main a { font-size:22px; }
}

@media only screen and (max-width:640px) {
	header { top:0; }

	.header-side {
		flex-basis:50px;
		width:50px;
	}

	.hamburger label { font-size:30px; }
	.kontakt-toggle { font-size:24px; }
	.social-link { font-size:24px; }
	.contactform { padding:0 10px; }

	.contactform input[type="text"],
	.contactform textarea {
		font-size:16px;
		line-height:50px;
	}

	.contactform button {
		padding:10px 0;
		font-size:25px;
	}
	
	nav.main ul {
		display:block;
		height:auto;
		min-height:0;
		padding:10px 20px;
	}

	nav.main .nav-grid {
		display:block;
		padding-bottom:60px;
	}

	nav.main .row,
	nav.main .row.secondary {
		display:block;
		width:100%;
	}

	nav.main .nav-grid .row ul {
		height:auto;
		min-height:0;
	}

	nav.main .row.secondary ul {
		padding:10px 20px;
	}

	nav.main .row.secondary ul:first-child {
		padding-top:10px;
	}
	
	nav.main .close { padding:20px 0; }
	nav.main li,
	nav.main li.sgmnt a{ font-size:24px; padding:10px 0 0; }
	nav.main a { font-size:20px; }
}

@media only screen and (max-width:520px) {
	
	nav.main ul li a {
		hyphens:auto !important;
		white-space:normal;
	}
}

@media only screen and (max-width:480px) {
header .logo-link {
		flex-basis:200px;
		width:200px;
	}

header .logo { background-size:160px auto; }

	nav.main ul {
		padding:10px 10px 0;
	}
	nav.main li,
	nav.main li.sgmnt a{ font-size:22px; }

	nav.main .nav-grid {
		padding-bottom:80px;
	}
	
}

/* Auf 320px und darunter füllt der Header exakt die Fensterbreite. */

@media only screen and (max-width:320px) {
	header .header-controls {
		left:0;
		width:100%;
		transform:none;
	}

	header .logo-link {
		flex:1 1 auto;
		flex-basis:auto;
		min-width:0;
		width:auto;
	}

	header .header-side {
		flex:0 0 50px;
		width:50px;
	}
}
