/* GENERAL */

:root {
	--maincolor: #343434;
	--maintransparency_extralight: #34343405;
	--maintransparency_light: #34343415;
	--maintransparency_dark: #34343430;
	--maintransparency_extradark: #34343450;
	--contrastcolor: #C50E0E;
	--contrasttextcolor: #FFFFFF;
	--contrasttextcolortransparent: #FFFFFFD5;
	--second_contrastcolor: #C50E0E;
	--backgroundcolor: #FFF;
	--backgroundtransparency: #FFFFFFF7;
}
* {
	transition: all 0.25s ease-in-out;
}
html {
	overflow-x: hidden;
	scroll-behavior: smooth;
	scrollbar-color: var(--maincolor) var(--backgroundcolor);
}
body {
	margin: 0px;
	padding: 0px;
	line-height: 100%;
	font-family: "Alegreya Sans", sans-serif;
	font-weight: 300;
	font-size: clamp(1rem, .55rem + 2vw, 1.125rem);
	line-height: clamp(125%, 100% + 2vw, 160%);
	background-color: var(--maintransparency_extralight);
	color: var(--maincolor);
	transition: all 0.25s ease-in-out;
}
#main {
	position: relative;
	display: block;
	width: min(80%, 800px);
	margin: 0 auto;
}
p, 
blockquote {
	width: 100%;
	margin: 1rem auto;
}
#footer p {
	max-width: unset;
}
blockquote {
	position: relative;
	margin: 6rem auto 4rem;
	padding: 5%;
	background: var(--maintransparency_light);
	font-size: 1.25rem;
	font-weight: 400;
}
blockquote::after {
	content: "„";
	position: absolute;
	top: 0;
	left: 50%;
	margin: -6rem 0 0 -2.5rem;
	color: var(--maintransparency_dark);
	font-size: 15rem;
}
blockquote p {
	line-height: 160%;
}
blockquote cite {
	display: block;
	width: 100%;
	margin-top: 2rem;
	text-align: right;
	font-family: "Fraunces", serif;
	font-size: 1.125rem;
	line-height: 100%;
	opacity: 0.6;
}
blockquote cite a {
	opacity: 0.8;
}
.max500 {
	width: 100%;
	max-width: 500px;
	justify-content: center;
	text-align: center;
}
.wide {
	width: 120%;
	margin-left: -10%;
}
.hidden, 
.screen-reader-text {
	display: none;
}
.grid_columns {
	display: grid;
}
.grid_columns:not(.zeiten_zeile) {
	column-gap: 3rem;
	row-gap: 2rem;
}
.grid_columns:is(.grid_three, .grid_six) {
	grid-template-columns: 1fr;
	column-gap: 1rem;
	row-gap: 1rem;
}
.grid_columns:is(.grid_six) {
	grid-template-columns: repeat(2, 1fr);
}
mark {
	background: transparent;
	font-weight: 400;
	font-style: italic;
	color: #4E4E4E;
}
.zeiten_zeit {
	white-space: nowrap;
}
		

/* PRODUKTPARTNER */

.produktpartner {
	display: flex;
	flex-direction: column;
	align-items: center;
	max-width: 700px;
	margin: 5rem 0;
}
.partner_bild {
	max-width: 320px;
	z-index: 2;
}
.partner_infos {
	width: max-content;
	max-width: min(450px, 100%);
	margin: -2rem 0 0;
	padding: 3rem 1rem 1rem;
	background: var(--maintransparency_extralight);
}
.partner_infos h2 {
	margin: 1rem 0 0;
}
.partner_infos em {
	display: block;
	margin-bottom: 1rem;
	font-weight: 400;
}

/* LISTS */

#main ul, 
#main ol {
	max-width: calc(500px - 1rem);
	padding: 0 0 1rem 1rem;
	margin: 0 auto;
}
#main ul.condensed_list, 
#main ol.condensed_list {
	margin-top: -1rem;
	padding-bottom: 0;
}
#main ul li, 
#main ol li {
	position: relative;
	margin: 1rem 0;
}
#main ul.condensed_list li, 
#main ol.condensed_list li {
	margin: 0;
}
#main ul ul, 
#main ul ol, 
#main ol ol, 
#main ol ul {
    margin: 0;
    padding: 0 0 0 1rem;
    max-width: 100%;
    border: 0;
}


/* TYPOGRAPHY */

h1, h2, h3, h4, h5, h6 {
	margin: 2rem 0;
	font-family: "Fraunces", serif;
	font-size: 1.125rem;
	font-weight: 400;
	line-height: 150%;
	overflow-wrap: break-word;
	-webkit-hyphens: auto;
	hyphens: auto;
}
h1, 
h2 {
	max-width: 400px;
	margin: 1rem 0 3rem;
	font-size: 1.75rem;
	letter-spacing: .15rem;
	line-height: 150%;
	text-transform: uppercase;
}
h2 {
	margin: 3rem 0;
	font-size: 1.5rem;
}
.salon_typ + h2 {
	margin-top: 0;
	text-transform: unset;
	letter-spacing: unset;
}
h3 {
	margin: 2rem 0;
	font-size: 1.25rem;
}
h4 {
	margin: 2rem 0;
	font-size: 1.125rem;
}
.content :is(h2,h3,h4,h5,h6) {
	margin-left: auto;
	margin-right: auto;
	max-width: 500px;
}
.content :is(h2, h3, h4, h5, h6).has-text-align-left {
  margin-left: 0;
  max-width: 400px;
}
.content :is(h2, h3, h4, h5, h6).has-text-align-right {
  margin-right: 0;
  max-width: 400px;
}
a {
	color: var(--maincolor);
	font-weight: 400;
	text-decoration: none;
}
.has-small-font-size {
	font-size: 85%;
}
.has-text-align-center {
	margin-left: auto;
	margin-right: auto;
	text-align: center;
}
.has-text-align-right {
	text-align: left;
}
blockquote.has-text-align-left, 
blockquote.has-text-align-center, 
blockquote.has-text-align-right {
	margin-left: -5%;
}
strong {
	font-weight: 400;
}
.is-vertically-aligned-center {
	align-self: center;
}
.salon_typ {
	font-size: clamp(.9rem, .45rem + 2vw, 1rem);
	font-style: italic;
	font-weight: 400;
	line-height: 1;
	margin: 0 0 .5rem;
	opacity: 0.75;
}
.salon_typ i {
	font-style: normal;
	margin-right: .5rem;
}


/* COLOURS */

.contrast {
	background: var(--maintransparency_light);
	padding: 5%;
	margin: 2rem auto;
	margin-left: -5%;
}
.contrast .grid_column > :first-child {
	margin-top: 0;
}
.contrast .grid_column > :last-child {
	margin-bottom: 0;
}


/* IMAGES */

body:not(.home) .hero {
	display: block;
	margin: 0 0 3rem -10%;
	width: 120%;
	max-width: 120%;
	height: min(400px, 67vw);
	overflow: hidden;
}
figure {
	margin: 0;
	padding: 0;
}
.gallery {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	column-gap: 1rem;
	grid-column-start: 1;
	grid-column-end: 3;
}
figcaption {
	grid-column-start: 1;
	grid-column-end: 3;
	padding: .25rem 0;
	font-size: 1rem;
	text-align: center;
}
img {
	width: 100%;
	height: auto;
}
body :not(.hero, .highlight) > img {
	outline: 2px solid #FFF;
	box-shadow: 0 1px 8px -4px #000;
}
.grid_three img {
	min-height: min(150px, 25vh);
	object-fit: cover;
	object-position: center;
}
body:not(.home) .hero img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center center;
}


/* LIGHTBOX */

.lightbox {
	cursor: pointer;
}
.highlight {
	position: fixed;
	top: 50%;
	left: 50%;
	width: auto;
	max-width: 90vw;
	height: auto;
	max-height: 90vh;
	transform: translate(-50%, -50%);
	z-index: 99;
	border: 5px solid #FFF;
	box-shadow: 0 0 0 100vw #0009;
}
.highlight::after {
	content: "\eee0";
	font-family: "Icofont";
	position: absolute;
	top: 0;
	right: 0;
	margin: -10px;
	line-height: 1;
	background: var(--maincolor);
	color: var(--backgroundcolor);
	font-size: calc(14px + 1vw);
}
.highlight img {
	width: auto;
	max-width: 90vw;
	height: auto;
	max-height: 90vh;
}


/* HEADER */

header .inside {
	text-align: center;
}
.logo {
	position: relative;
	display: inline-block;
	width: max-content;
	margin: 1.6rem 0;
	font-family: "Fraunces", serif;
	font-size: 2rem;
	font-weight: 300;
	line-height: 100%;
}
.logo .subtitle {
	display: block;
	margin: 0.25rem auto 0;
	font-size: 1.0825rem;
	font-weight: 300;
	line-height: 125%;
	transform: translateX(-0.45rem);
}
header .oeffnungszeiten {
	position: relative;
	top: 0;
	left: 0;
	margin: 1.2rem 0 0 1rem;
	display: flex;
	align-items: center;
	column-gap: .5rem;
	white-space: nowrap;
	font-size: 1rem;
}
.nav_wrapper {
	position: absolute;
	display: flex;
	top: 0;
	right: 0;
	margin: 1rem;
	z-index: 9;
}
.nav_wrapper.active {
	position: fixed;
}
.nav_wrapper .social_media_icon {
	align-self: center;
	margin-right: clamp(1rem, .5rem + 2vw, 2rem);
}
.nav_toggle {
	position: relative;
	cursor: pointer;
	display: flex;
}
.nav_toggle::after {
	content: "";
	position: absolute;
	bottom: 0;
	left: 0;
	width: calc(100% + 1rem);
	height: calc(100% + 2.85rem);
	background: var(--maintransparency_light);
	margin: 0 0 5rem -.9rem;
	z-index: -7;
	transition: all 0.25s ease-in-out;
}
.nav_wrapper.active .nav_toggle::after {
	margin-bottom: -.5rem;
}
.nav_toggle .label {
	display: none;
}
.nav_toggle .bars {
    align-self: center;
}
.nav_toggle .bars .bar {
	display: block;
	width: 2rem;
	height: 2px;
	margin: 6px 0;
	background: var(--maincolor);
}
.nav_wrapper.active .bars .bar:nth-of-type(1) {
    transform: rotate(45deg) translateY(10px);
}
.nav_wrapper.active .bars .bar:nth-of-type(2) {
	opacity: 0;
}
.nav_wrapper.active .bars .bar:nth-of-type(3) {
    transform: rotate(-45deg) translateX(1px) translateY(-11px);
}
.nav_overlay {
	position: fixed;
	top: 0;
	right: 0;
	width: 100vw;
	height: 100vh;
	text-align: right;
	z-index: 8;
	opacity: 0;
	visibility: hidden;
}
.nav_overlay.active {
	opacity: 1;
	visibility: visible;
}
.nav_overlay .noise {
	position: absolute;
	width: 100%;
	min-width: 10%;
	height: 100%;
	background: var(--maintransparency_extradark);
}
.nav_overlay.active .noise {
	width: calc(100% - max(10%, 400px));
}
#site-navigation {
	position: absolute;
	display: flex;
	top: 0;
	right: -100%;
	width: 90%;
	max-width: 400px;
	height: 100vh;
	margin: 0;
	background: var(--backgroundcolor);
	text-align: left;
	opacity: 0;
	visibility: hidden;
}
.active #site-navigation {
	right: 0;
	opacity: 1;
	visibility: visible;
}
.menu {
	position: relative;
	flex: 1;
	align-self: center;
	max-height: 100%;
	overflow-y: auto;
	overflow-x: hidden;
	scrollbar-color: var(--maincolor) var(--backgroundcolor);
	scrollbar-width: thin;
}
nav ul {
	margin: 0;
	padding: 0;
	list-style: none;
}
nav ul li {
	margin: 0;
	padding: .75rem 1rem .75rem 2rem !important;
	line-height: clamp(100%, 75% + 1vw, 150%);
	text-transform: uppercase;
}
nav ul li a {
	font-weight: 300;
}
nav ul li.current-menu-item a, 
nav ul li a:hover {
	font-weight: 500;
}


/* SIDE BUTTONS */

.side_buttons {
	position: fixed;
	display: none;
	top: 50%;
	left: 0;
	width: max-content;
	margin: 0;
	z-index: 6;
}
.button_item {
	display: flex;
	flex-direction: row-reverse;
	max-width: max-content;
	height: 60px;
	background: var(--backgroundcolor);
	font-weight: 300;
}
.button_item:hover, 
.button_item:hover .button_icon {
	border-radius: 0 1rem 1rem 0;
}
.button_item > div {
	background: var(--maintransparency_light);
}
.button_item:nth-of-type(2n+2) > div {
	background: var(--maintransparency_dark);
}
.button_label {
	max-width: 0;
	padding: 1rem 0;
	align-self: center;
	font-size: 1rem;
	line-height: 175%;
	text-transform: uppercase;
	overflow: hidden;
}
.button_item:hover .button_label {
	max-width: 400px;
	padding: 1rem;
}
.button_icon {
	flex: 1;
	padding: 1rem 0rem;
	width: 60px;
	font-size: 1.6rem;
	text-align: center;
	color: var(--maintransparency_extradark);
}
.button_item:hover .button_icon {
	color: var(--maincolor);
}

/* FOOTER */

#footer {
	width: 100%;
	margin: 5rem auto 0;
	font-size: 1rem;
	background: -moz-linear-gradient(top, rgba(255,255,255,0) 0%, rgba(226,226,226,1) 100%);
	background: -webkit-linear-gradient(top, rgba(255,255,255,0) 0%,rgba(226,226,226,1) 100%);
	background: linear-gradient(to bottom, rgba(255,255,255,0) 0%,rgba(226,226,226,1) 100%);
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#e2e2e2',GradientType=0 );
}
#footer .inside {
	width: 90%;
	max-width: 800px;
	margin: 0 auto;
	padding: 4rem 0 2rem;
	text-align: center;
}
#footer a {
	opacity: 0.6;
}
#footer a:hover {
	opacity: 1;
}
.copy {
	margin: 0.15rem 0 0;
}
.footer_adresse {
	font-size: 90%;
	margin: 0 0 0.5rem;
}
.footer_adresse strong {
	margin: 0 .25rem;
}
.footer_nav ul {
	margin: 0;
	padding: 0;
	list-style: none;
}
.footer_nav ul li {
	display: inline-block;
	margin: 0 1rem;
}
.footer_nav ul li:first-of-type {
	margin-left: 0;
}
.footer_nav ul li:last-of-type {
	margin-right: 0;
}
.footer_nav ul li a {
    font-size: 0.9rem;
	opacity: 0.6;
}
.footer_nav ul li:hover a {
	opacity: 1;
}


/* FRONTPAGE */

.home .hero {
	position: absolute;
	top: 0;
	left: 0;
	width: 100vw;
	height: 100vh;
	background-size: cover !important;
	overflow: hidden;
	z-index: -1;
}
.home .hero img {
    position: absolute;
    bottom: 0;
	width: 100%;
	min-height: 100%;
	object-fit: cover;
	object-position: center bottom;
}
.home #main {
	margin-top: 100vh;
}


/* CONTENT */

#main a[rel*="noreferrer"] {
	position: relative;
	margin-left: 5px;
	padding: 0 2px 0 20px;
}
#main a[rel*="noreferrer"]::before {
	content: "\ef1f";
	margin: 0px 5px 0px -20px;
	font-family: "Icofont";
	font-size: 75%;
	font-weight: 400;
	line-height: 100%;
}
.button {
	background: var(--backgroundcolor);
	border: 1px solid var(--maincolor);
	cursor: pointer;
	display: block;
	font-family: "Alegreya Sans", sans-serif;
	font-size: clamp(.9rem, .5rem + 1vw, 1rem);
	font-weight: 400;
	letter-spacing: 0.1rem;
	line-height: 1;
	margin: 2rem 0 0;
	padding: .75rem 1rem;
	text-transform: uppercase;
	width: max-content;
	word-spacing: 0.5rem;
}
.button:hover {
	color: var(--backgroundcolor);
	background: var(--maincolor);
}
.button.has-own-margin {
	margin: 0 0 2rem;
}
.button.has-own-margin.has-text-align-center {
	margin: 2rem auto;
}


/* RESPONSIVE */

@media screen and (min-width: 500px) {
	p, 
	blockquote {
		max-width: 500px;
	}
	blockquote.has-text-align-left {
		margin-left: 0;
	}
	blockquote.has-text-align-center {
		margin-left: auto;
	}
	blockquote.has-text-align-right {
		margin-left: auto;
		margin-right: 0;
	}
}

@media screen and (min-width: 600px) {
	.grid_columns.grid_two {
		grid-template-columns: repeat(2, 1fr);
	}
	.grid_columns.grid_three {
		grid-template-columns: repeat(3, 1fr);
	}
	.grid_columns.grid_six {
		grid-template-columns: repeat(3, 1fr);
	}
	.button.has-own-margin {
		margin: 1rem 0;
	}
	.button.has-own-margin.has-text-align-center {
		margin: 2rem auto 3rem;
	}
	.max500 {
		justify-content: unset;
		text-align: unset;
	}
	.gallery {
		display: grid;
		grid-template-columns: 1fr 1fr;
		grid-column-start: 2;
		grid-column-end: 4;
		grid-column-gap: 1rem;
	}
}

@media screen and (min-width: 692px) {
	.contrast {
		margin-left: auto;
		width: 90%;
	}
}

@media screen and (max-width: 767px) {
	.home .side_buttons {
		position: absolute;
		display: unset;
	}
}

@media screen and (min-width: 768px) {
	.nav_wrapper::after {
		margin-left: -.75rem;
	}
	.nav_toggle .label {
		display: unset;
		align-self: center;
		padding-right: 1rem;
		font-size: 1rem;
	}
	.active #site-navigation {
		right: 0;
	}
	.side_buttons {
		display: unset;
	}
	h1, h2, h3, h4, h5, h6 {
		-webkit-hyphens: unset;
		hyphens: unset;
	}
	#main > .content > h1 {
		font-size: 2.25rem;
	}
	blockquote {
		padding: 1rem 2rem;
	}
	blockquote::after {
		left: 0;
	}
	.has-text-align-right {
		margin-left: auto;
		margin-right: 0;
	}
	.single h1 {
		max-width: 450px;
	}
	.produktpartner {
		flex-direction: row;
	}
	.produktpartner:nth-of-type(2n+1) {
		flex-direction: row-reverse;
		margin-left: auto;
	}
	.partner_infos {
		margin: 0 0 0 -1.5rem;
		padding: 1rem 1rem 1rem 3rem;
	}
	.produktpartner:nth-of-type(2n+1) .partner_infos {
		margin-right: -1rem;
		padding-right: 3rem;
	}
}

@media screen and (min-width: 834px) {
	header .oeffnungszeiten {
		position: absolute;
		margin: 2.35rem 0 0 2.35rem;
	}
	.nav_wrapper {
		margin: 2.35rem;
	}
}

@media screen and (min-width: 1200px) {
	body:not(.home) .hero {
		width: 128%;
		max-width: 128%;
		margin-left: -14%;
	}
}
