/* ################################################## */
/* FONTS */
@font-face {
  font-family: 'voluta';
  src: url("../media/fonts/VolutaScript.ttf");
  font-display: swap;
}

@font-face {
  font-family: 'arboria-book';
  src: url("../media/fonts/Arboria-Book.ttf");
  font-display: swap;
}
@font-face {
  font-family: 'arboria-book-italic';
  src: url("../media/fonts/Arboria-BookItalic.ttf");
  font-display: swap;
}
@font-face {
  font-family: 'arboria-bold';
  src: url("../media/fonts/Arboria-Bold.ttf");
  font-display: swap;
}
@font-face {
  font-family: 'arboria-bold-italic';
  src: url("../media/fonts/Arboria-BoldItalic.ttf");
  font-display: swap;
}

@font-face {
  font-family: 'adorn-roman';
  src: url("../media/fonts/AdornRoman.ttf");
  font-display: swap;
}
@font-face {
  font-family: 'adorn-expanded';
  src: url("../media/fonts/AdornExpandedSans.ttf");
  font-display: swap;
}

@font-face {
  font-family: 'adorn-ornaments';
  src: url("../media/fonts/AdornOrnaments.ttf");
  font-display: swap;
}
@font-face {
  font-family: 'adorn-frames';
  src: url("../media/fonts/AdornFrames.ttf");
  font-display: swap;
}
@font-face {
  font-family: 'adorn-solo';
  src: url("../media/fonts/AdornSolo.ttf");
  font-display: swap;
}


/* ################################################## */
/* ROOT VARIABLEN */
:root {
	/* Farben */
	--gruen-1: rgb(0,100,0);
	--gruen-2: rgb(0,255,0);
	--orange:  rgb(200,100,0);
	
	--c1: #022727;
	--c2: #033A3A;
	--c3: #044B4E;
	--c4: #9FACAA;
	
	--ca: #BD5820;
	
	--ctxt1: rgb(10,10,10);
	--ctxt2: rgb(250,250,250);
	
	/* Größen */
	--dh: 100vh;
	
	--d1: 10px;
	--d2: 20px;
	--d3: 60px;
	--d4: 90px;
	
	--frame-font-size: 48pt;
	
	/* Transitions */
	--t1: 0.2s;
	--t2: 0.4s;
	--t3: 0.8s;
	
	/* Schatten */
	--tshad: 0 0 10px black, 0 0 10px black;
	--bshad: 0 0 10px var(--c1);
}

/* ################################################## */
/* GRUNDLEGENDES MARKUP */
body {
	margin: 0; padding: 0;
	background-color: var(--c1);
}
*, *:before, *:after {
	-webkit-box-sizing: border-box !important;
	-moz-box-sizing: border-box !important;
	-ms-box-sizing: border-box !important;
	box-sizing: border-box !important;
	
	margin: 0; padding: 0;
	color: var(--ctxt1);
	font-family: 'arboria-book';
	font-style: normal; font-weight: normal;
	line-height: 1.4em;
	font-variant-ligatures: none;
	hyphens: auto;
}

html, html * {
	scrollbar-width: thin;
	scrollbar-color: var(--ca) var(--c1);
}
::-webkit-scrollbar {
	background-color: var(--c1);
	width: 20px; height: 20px;
}
::-webkit-scrollbar-thumb {
	box-shadow: inset 0 0 10px 10px var(--ca);
    border: solid 7px transparent;
	border-radius: 10px;
}
::-webkit-scrollbar-track { background-color: var(--c1); }
::-webkit-scrollbar-corner { background: var(--c1); }

h1 { font-size: 160pt;  font-family: 'voluta'; }
h2 { font-size: 90pt; 	font-family: 'voluta'; }
h3 { font-size: 16pt; 	font-family: 'adorn-expanded'; }
h4 { font-size: 1.2em; 	font-family: 'adorn-expanded'; }
h5 { font-size: 1.0em; 	font-family: 'arboria-bold'; }
h6 { font-size: 1.0em; 	font-family: 'arboria-bold'; }

img {
	display: block;
	user-select: none;
}

c { color: var(--ca); font-family: inherit; }
i c, c i { font-family: 'arboria-book-italic'; }
b c, c b { font-family: 'arboria-bold'; }

b { font-family: 'arboria-bold'; }
i { font-family: 'arboria-book-italic'; }
b i, i b { font-family: 'arboria-bold-italic'; }

input, textarea {
	border: 2px solid var(--ctxt1);
	background-color: transparent;
	accent-color: var(--ca);
}
input:focus, textarea:focus { 
	box-shadow: var(--shad);
}
input[type='submit'] { cursor: pointer; }

ul, ol { padding-left: 15pt; }
li { list-style: none; margin: 0 0 0 15pt; }
li:before { content: '»\00a0\00a0'; margin-left: -25pt; }

hr {
	position: relative;
	height: 2px; width: 95%; margin: 0 auto;
	background: linear-gradient(to left, transparent, var(--ctxt1), transparent);
	border: none;
}
hr.white {
	background: linear-gradient(to left, transparent, var(--ctxt2), transparent);
}

/* ################################################## */
/* Z-INDEX */
#prev { z-index: 10; }
#nav { z-index: 5; }

/* ################################################## */
/* HAUPTSTRUKTUREN */
#main {
	width: 100%;
}
#page {
	display: flex; flex-direction: column;
	align-items: center; justify-content: center;
	
	overflow: hidden;
}

#prev {
	position: fixed; top: 0; left: 0;
	width: 100%; height: var(--dh);
	padding: var(--d3);
	
	display: flex; gap: var(--d2);
	align-items: center; justify-content: center;
	
	
	background-color: rgba(0,10,0,0.9);
	opacity: 0; visibility: hidden;
	transition: var(--t2);
	overflow: hidden;
	cursor: pointer;
}
#prev.active { opacity: 1; visibility: visible; }
#prev:before, #prev:after {
	content: 'c'; position: absolute;
	
	font-size: var(--frame-font-size);
	font-family: 'adorn-frames';
	color: var(--ctxt2);
}
#prev:before { top: var(--d2); left: var(--d2); }
#prev:after  { bottom: var(--d2); right: var(--d2); content: 'f'; }
#prev-img-cont {
	display: flex;
	height: 100%;
	align-items: center; justify-content: center;
	overflow: hidden;
}
#prev-img {
	width: auto; height: auto;
	max-width: 100%; max-height: 100%;
	
	padding: var(--d1);
	border: 2px solid var(--ca);
}
#prev-desc {
	width: 20%;
}
#prev-desc * { color: var(--ctxt2); }

/* Navigation */
#nav {
	position: fixed;
	height: 0; width: 100%;
	
	display: flex; align-items: center;
	justify-content: space-around;
	
	color: var(--ctxt2);
	background-color: var(--c1);
	transition: var(--t2);
	overflow: hidden;
	box-shadow: var(--bshad);
}
#nav * { color: var(--ctxt2); }
#nav.max { height: 70px; }
#nav > div {
}
#nav-title {
	display: flex; gap: var(--d1);
	justify-content: center; align-items: center;
}
#nav-title h2 { 
	font-size: 34pt; 
	line-height: 48pt; 
	color: var(--c4); 
}
#nav-links {
	display: flex; gap: var(--d1);
	justify-content: center; align-items: center;
	transition: var(--t2);
	overflow: hidden;
}
#nav-links p {
	cursor: pointer;
}

#navbtn {
	position: absolute; 
	top: 20px; right: 20px;
	width: 35px; height: 30px; 
	cursor: pointer;
	display: none;
}
#navbtn p {
	display: block;
	position: absolute; left: 0;
	width: 100%; height: 6px;
	/* background-color: var(--ctxt2); */
	transition: var(--t2);
	
	background: url(../media/icons/sword.svg) center center / contain no-repeat;
}
#navbtn p:nth-child(1) { top: 0; }
#navbtn p:nth-child(2) { top: 50%; transform: translateY(-50%); }
#navbtn p:nth-child(3) { bottom: 0; }

#navbtn.active p:nth-child(1) { top: calc(50% - 3px); transform: rotate(-225deg); }
#navbtn.active p:nth-child(2) { opacity: 0; }
#navbtn.active p:nth-child(3) { bottom: calc(50% - 3px); transform: rotate(45deg); }

/* Sektionen */
#page section { 
	position: relative;
	width: 100%; height: auto;
	display: flex; flex-direction: column;
	align-items: center; justify-content: center;
	
	padding: var(--d4) var(--d3);
	
	z-index: 0;
}
#page section.dark { color: var(--ctxt2); }
#page section.dark * { 
	color: var(--ctxt2);
	text-shadow: var(--tshad);
}
#page section.fullscreen {
	/* height: var(--dh); */
	min-height: var(--dh);
}
#page section.sub-header {
	/* Header für Unterseiten */
	background-color: var(--c3);
}
#page section.sub-header a { text-decoration: none; }
#page section.sub-header *:not(c) { color: var(--ctxt2); }


.logo {
	margin: 0 auto;
	min-width: 200px; min-height: 100px;
	width: 100%; height: 30%;
	background: url(../media/icons/logo.svg) center center / contain no-repeat;
	filter: drop-shadow(0 0 5px black);
}
.logo.main { min-height: 200px; }

.sec-bg {
	position: absolute; top: 0; left: 0;
	width: 100%; height: 100%;
	z-index: -1;
}
.sec-bg > img {
	width: 100%; height: 100%;
	object-fit: cover;
}
.sec-bg.opaque { opacity: 0.6; }

.sec-title {
	position: relative;
	width: 100%; height: 280px;
	
	pointer-events: none;
	user-select: none;
	
	z-index: -1;
}
.sec-title h2 {
	width: 100%;
	position: absolute; top: 50%; left: 20%;
	transform: translate(-50%, -50%);
	
	text-align: center;
	
	opacity: 0.4;
	font-size: 270pt;
	hyphens: none;
	white-space: nowrap;
}
.sec-title h3 {
	width: 100%;
	position: absolute; top: 70%; left: 50%;
	transform: translate(-50%, 0);
	
	color: var(--ca);
	text-shadow: 0 0 10px rgba(0,0,0,0.2);
	hyphens: none;
}
section:nth-child(even) .sec-title h2 { left: 70%; }
section:nth-child(even) .sec-title h3 { text-align: right; }

.sec-content {
	width: 100%; height: 100%;
	display: flex; flex-direction: column;
	align-items: center; justify-content: center;
	gap: var(--d2);
}

.sec-frame { /* Ornamentaler Rahmen */
	position: absolute; top: 0; left: 0;
	width: 100%; height: 100%;
	user-select: none;
	pointer-events: none;
}
.sec-frame:before, .sec-frame:after {
	content: 'c'; position: absolute;
	
	font-size: var(--frame-font-size);
	font-family: 'adorn-frames';
	color: var(--ctxt1);
}
.sec-frame:before { top: var(--d2); left: var(--d2); }
.sec-frame:after  { bottom: var(--d2); right: var(--d2); }

.sec-frame.white:before, .sec-frame.white:after { color: var(--ctxt2); }
.sec-frame.green:before, .sec-frame.green:after { color: var(--c3); }
.sec-frame.f1:before { content: 'c'; }
.sec-frame.f1:after  { content: 'f'; }
.sec-frame.f2:before { content: 'w'; }
.sec-frame.f2:after  { content: 'z'; }
.sec-frame.f3:before { content: 't'; top: var(--d2); 	right: var(--d2); 	left: auto; 	 }
.sec-frame.f3:after  { content: 'u'; bottom: var(--d2); right: auto; 		left: var(--d2); }

/* Blöcke */
.block {
	margin: var(--d1) 0;
	width: 100%;
	max-width: 1100px;
}
.block p { margin-bottom: 6pt; }

/* Footer */
footer {
	width: 100%;
	display: flex; flex-direction: column;
	align-items: center; justify-content: center;
	gap: var(--d2);
	padding: var(--d3) 0 var(--d4) 0;
	
	background: linear-gradient(to top, var(--c2), var(--c3));
}
footer *:not(c) { color: var(--ctxt2); }
footer > div {
	display: flex; flex-wrap: wrap; gap: var(--d2);
	align-items: center; justify-content: center;
}
.footer-link-cont {
	display: flex; flex-direction: column;
	align-items: center; justify-content: center;
}
.footer-link-cont a { text-decoration: none; }

/* ################################################## */
/* SPEZIELLE ELEMENTE */

/* Charakter-Boxen */
.char {
	width: 300px;
	display: flex; flex-direction: column;
	
	overflow: hidden;
}
.char > h4 { text-align: center; }
.char img {
	height: 300px; width: 100%;
	object-fit: cover;
	object-position: 0% 0%;
	margin: var(--d1) 0;
	border: 2px solid black;
	box-shadow: inset 0 0 50px 5px rgba(0,0,0,0.1);
}

/* Sponsor-Box */
.sponsor-tier {
	width: 300px;
	display: flex; flex-direction: column;
	
	overflow: hidden;
}
.sponsor-tier > * { text-align: center; }

/* Diashow */
.with-autoskip {} .with-buttons {} .with-icons {} .fullscreen {}
.diashow {
	position: relative; 
	width: 100%; height: 500px;
	margin: var(--d2) 0;
	
	display: flex; flex-direction: column;
	justify-content: center; align-items: center;
	
	overflow: hidden;
}
.diashow img { display: block; }
.diashow:not(.fullscreen) .dia img {
	width: auto; height: auto;
	max-width: 100%; max-height: 100%;
	border: 2px solid var(--ca);
	padding: var(--d1);
}
.diashow.fullscreen { 
	height: 100%; width: 100%; 
	margin: 0;
}
.diashow.fullscreen img {
	height: 100%; width: 100%;
	object-fit: cover;
}
.dia {
	position: absolute; 
	height: 100%; width: 100%;
	
	display: flex; flex-direction: column;
	justify-content: center; align-items: center;
	gap: var(--d1);
	
	transition: visibility 3s, opacity 3s;
	visibility: hidden; opacity: 0; 
}
.dia.active {
	position: relative;
	visibility: visible; opacity: 1;
	transition-delay: 0;
}
.dia > * { 
	width: 100%; overflow: hidden;
	display: flex; 
	justify-content: center; align-items: center;
}
.dia-cont { }
.dia-desc { padding: 10px; }

.dia-btn-left, .dia-btn-right {
	position: absolute; 
	height: 30px; width: 30px;
	top: 50%; transform: translateY(-50%);

	background-color: rgba(0,0,0,0.7);
	color: white;
	
	cursor: pointer;
	z-index: 1;
}
.dia-btn-left 	{ left: 0; }
.dia-btn-right 	{ right: 0; }
.dia-btn-left::after, .dia-btn-right::after {
	content: ''; position: absolute;
	width: 40%; height: 40%;
	top: 50%; left: 50%;
	
	transform-origin: center, center;
	transform: translate(-35%, -50%) rotate(135deg);
	
	border: solid white; border-width: 0 3px 3px 0;
}
.dia-btn-right::after {
	transform: translate(-65%, -50%) rotate(-45deg);
}

.dia-icon-cont {
	/* Diashow Elemente werden in JS.diashow_setup geklont */
	width: 100%;
	display: flex; gap: 2px;
	justify-content: center;
	
	overflow: hidden;
}
.dia-icon-cont > div {
	width: 40px; height: 40px;
	filter: grayscale(1);
	overflow: hidden;
	cursor: pointer;
}
.dia-icon-cont > div > img {
	width: 100%; height: 100%;
	object-fit: cover;
}

/* Kontakt-Form */
.contact {
	width: 100%;
	display: flex; flex-direction: column;
	justify-content: center; align-items: center;
	padding: var(--d1);
	/* background-color: var(--c3); */
}
.contact form {
	display: flex; flex-direction: column;
}
.contact input, .contact textarea {
	margin: var(--d1) 0; padding: var(--d1);
	font-size: 1em;
	resize: none;
}
.contact label { font-size: 0.8em; }

/* Galerie */
#gallery {
	display: flex; flex-wrap: wrap;
	justify-content: center; align-items: center;
	gap: var(--d1);
}
#gallery img {
	width: 150px; height: 150px;
	object-fit: cover;
	border-radius: 10px;
	border: 2px solid var(--ctxt2);
	
	cursor: pointer;
}

/* Bild Knopf */
.img-btn {
	position: relative;
	width: 250px; height: 60px;
	padding: var(--d1);
	border: 2px solid var(--c1);
	border-radius: 10px;
	overflow: hidden;
	cursor: pointer;
	transition: var(--t1);
	z-index: 0;
}
.img-btn:before {
	content: ''; position: absolute;
	top: 50%; left: -100%;
	height: 500%; width: 150%;
	transform: rotate(-20deg) translate(-50%, -50%);
	background-color: var(--c3);
	z-index: -1;
}
.img-btn img {
	width: 100%; height: 100%;
	object-fit: contain;
	transition: var(--t2);
}

/* ################################################## */
/* UNIVERSELLES STYLING */
.initial {
	float: left;
	margin-right: 6pt;
	font-size: 42pt;
	line-height: 1.2em;
	font-family: 'adorn-solo';
}

.fadein {
	opacity: 0;
	transition: opacity var(--t3), transform var(--t3);
}
.fadein.from-left 	{ transform: translate(-50%,0); }
.fadein.from-right 	{ transform: translate( 50%,0); }
.fadein.from-top 	{ transform: translate(0,-50%); }
.fadein.from-bottom { transform: translate(0, 50%); }

.fadein.invp {
	opacity: 1;
	transform: translate(0,0);
}

.row {
	display: flex;
	justify-content: center; gap: var(--d2);
}
.row-wrap {
	display: flex; flex-wrap: wrap;
	justify-content: center; gap: var(--d2);
}

.hover-frame {
	position: relative;
	padding: 2px 6px;
}
.hover-frame::before, .hover-frame:after {
	content: ''; position: absolute;
	width: 0; height: 0;
	border: 2px solid var(--ctxt2);
	opacity: 0;
	
	transition: var(--t2);
}
.hover-frame::before { top: 0; 	left: 0;   border-right: 0; border-bottom: 0; }
.hover-frame::after 	{ right: 0; bottom: 0; border-top: 0; 	border-left: 0;   }

/* Pfeile */
.arrow {
  display: inline-block;
  width: 0.65em; height: 0.65em;
  border: solid var(--ca);
  border-width: 0 4px 4px 0;
}
.arrow.up    { transform: rotate(-135deg); -webkit-transform: rotate(-135deg); }
.arrow.left  { transform: rotate(135deg);  -webkit-transform: rotate(135deg);  }
.arrow.down  { transform: rotate(45deg);   -webkit-transform: rotate(45deg);   }
.arrow.right { transform: rotate(-45deg);  -webkit-transform: rotate(-45deg);  }

.arrow-ornament {
	width: 40px; height: 40px;
	/* background-color: red; */
}
.arrow-ornament:after {
	content: 'F'; position: absolute;
	top: 50%; left: 50%; transform: translate(-50%,-50%);
	font-size: 36pt;
	font-family: 'adorn-ornaments';
	color: var(--ctxt2);
}
.arrow-ornament.up 		{}
.arrow-ornament.left 	{ transform: rotate(-90deg); }
.arrow-ornament.down 	{ transform: rotate(180deg); }
.arrow-ornament.right 	{ transform: rotate(90deg); }

.frame3 { position: relative; }
.frame3:before, .frame3:after {
	display: block;
	content: 'r'; 
	font-family: 'adorn-ornaments';
	font-size: var(--frame-font-size);
	text-align: center;
}
.frame3:after { 
	content: 'r'; transform: rotate(180deg);
	margin-top: auto;
}

.bounce {
	position: absolute;
	bottom: 0;
	animation: bounce 1.2s infinite;
}
@keyframes bounce {
	0%, 100%  { bottom: 1em; }
	60%, 80%  { bottom: 2em; }
}

/* ################################################## */
/* MEDIA QUERIES */
@media (hover: hover) and (pointer: fine) {
	#page section.sub-header a:hover { color: var(--ca); }
	
	.hover-frame:hover:before, .hover-frame:hover:after {
		width: 40%; height: 60%; opacity: 1;
	}
	
	.dia-icon-cont > div:hover { filter: grayscale(0); }
	
	footer a:hover { text-decoration: none; }
	.footer-link-cont a:hover { color: var(--ca); }
	
	.img-btn:hover { border-color: var(--c3); }
	.img-btn:hover img { filter: grayscale(1) brightness(2); }
	.img-btn:hover:before { 
		transition: var(--t2);
		left: 50%; 
	}
}
@media only screen and (max-width: 1000px) {}
@media only screen and (max-width: 700px) {
	:root {
		--d1: 6px;
		--d2: 10px;
		--d3: 30px;
		--d4: 40px;
		
		--frame-font-size: 32pt;
	}
	
	#prev { flex-direction: column; padding: var(--d3); }
	#prev-desc { width: 100%; }
	
	#nav.max.active { height: 280px; }
	#nav { flex-direction: column; align-items: center; }
	#nav-links { flex-direction: column; height: 0; }
	#nav-links p { opacity: 0; }
	#nav.active #nav-links { height: 200px; }
	#nav.active #nav-links p { opacity: 1; }
	
	#navbtn { display: block; }
	
	.sec-title { height: 240px; }
	section:nth-child(even) .sec-title h2, .sec-title h2 { 
		font-size: 160pt; left: 40%; text-align: center; 
	}
	section:nth-child(even) .sec-title h3, .sec-title h3 { 
		font-size: 12pt;  left: 40%; text-align: center; 
	}
	
	.char { width: calc(50% - var(--d1)); }
	.char img { height: 200px; aspect-ratio: 1/1; }
	
	.sponsor-tier { width: calc(50% - var(--d1)); }
	
	#gallery img { width: 100px; height: 100px; }
	
	.diashow { height: 350px; }
	
	.row { flex-wrap: wrap; }
}
@media only screen and (max-width: 500px) {
	.sec-title h2 { font-size: 140pt; }
}