/* ================================================================================= */
/* Defaults */
body {
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}

/* Set variables */
:root {
	--text: #111;

	--light-brown-1: #FDF3DC;
	--light-brown-3: #CA7842;

	/* --brown-1: #CF793F; */
	--brown-1: #98592F;
	--brown-3: #763E19;
	--brown-4: #5B2F12;

	--blue-visited: #1B6894;
	--bg: #FFF;
	--bg-2: #F4F4F4;
	--btn-transition: ease-out .2s;
}
button {
	cursor: pointer;
}

/* Default element stuff */
* {
	margin: 0;
	padding: 0;
	color: var(--text);
	font-family: "Varela Round", sans-serif;
	box-sizing: border-box;
	z-index: 3;
}

p, h1, h2, h3, h4, h5, h6 {
	padding-bottom: 1em;
	color: var(--brown-3);
}
P {
	color: var(--text);
}
a {
	color: var(--brown-1);
	transition: 250ms ease-out;
}
a:visited {
	color: var(--brown-2);
}
a:hover {
	color: var(--brown-3);
}


/* Set icons and images sizes */
.icon img, .img-container img {
	height: 100%;
}
.icon {
	width: 100%;
	height: 100%;
	max-width: 64px;
}
img {
	width: 100%;
}

/* Custom button styling */
.btn-container {
	margin-top: 8px;
	position: relative;
}
button {
	flex: 0;
	padding: 8px 12px;
	background: #FFF;
	border: 3px solid var(--brown-1);
	color: var(--brown-1);
	text-transform: uppercase;
	font-size: 1.1rem;
	transition: 250ms border ease-out;
}
button::after {
	content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0%;
    height: 0%;
    transition: 200ms linear;
	transform: translate(-50%, -50%);
	background: #FFF;
	opacity: 0;
	background: var(--brown-1);
}
button:hover::after {
	width: 100%;
	height: 100%;
	opacity: 0.25;
}

/* Lazy loading */
.lazy-image {
    filter: blur(0);
    transition: filter .25s linear;
}

.lazy-image.small {
    filter: blur(8px);
    transition-duration: 0s;
}


/* ================================================================================= */
/* Contact popups */
.bg-darkener {
	position: fixed;
	width: 0;
	height: 0;
	left: 50% !important;
	top: 50% !important;
	transform: translate(-50%, -50%);
	background: #000;
	opacity: 0;
	z-index: 15;

	transition: 150ms opacity ease-out, 0ms width, 0ms height;
	transition-delay: 0ms, 150ms, 150ms;
}
body.popup-open .bg-darkener {
	width: 105vw;
	height: 105vh;
	opacity: 0.40;
	transition-delay: 0ms, 0ms, 0ms;
}
body.popup-open {
	overflow: hidden;
}

.popup {
	position: fixed;
	width: 90vw;
	max-width: 360px;
	top: calc(50% - 36px);
	left: 50%;
	transform: translate(-50%, -50%);

	padding: 24px 12px;
	border-radius: 4px;
	background: var(--bg);
	border: 4px solid var(--brown-1);
	box-shadow: 0 0 6px 1px #222, 0 0 15px -2px #222;
	z-index: 20;

	visibility: hidden;
	opacity: 0;
	transition: 150ms ease-out, 1ms visibility linear 150ms;
	display: flex;
	flex-direction: column;
	align-items: center;
}
.popup button {
	margin: 0;
	opacity: 1;
	transition: 150ms ease-out;
}
.popup button:disabled {
	opacity: 0.5;
}
body.popup-open .popup, .result-popup.active {
	top: 50%;
	opacity: 1;
	visibility: visible;
	transition-delay: 0ms, 0ms;
}


.result-popup {
	top: calc(10% - 24px);
	border-width: 2px;
	box-shadow: 0 0 4px 1px #222, 0 0 10px -1px #222;
	padding: 12px;
}
.result-popup p {
	padding: 0;
}
body.popup-open .result-popup {
	top: calc(10% - 24px);
	visibility: hidden;
}
.result-popup.active {
	visibility: visible;
	opacity: 1;
	top: 10%;
}




/* ================================================================================= */
/* Header container */
header {
	--border: 3px solid var(--brown-1);
	--shadow: 0 0 8px 3px #444;
	--height: min(10vh, 76px);

	position: fixed;
	top: 0;
	left: 0;
	width: 100vw;
	display: flex;
	flex-wrap: wrap;
	flex-direction: column;
	z-index: 10;
}

/* Hamburger */
.hamburger {
	width: 32px;
	height: 22px;
	transition: 175ms ease-out 175ms;
}
header.open .hamburger {
	transition-delay: 0ms;
}

.bun {
	width: 100%;
	height: 4px;
	background: var(--brown-1);
	border-radius: 4px;
	transition: 175ms ease-out transform 0ms, 175ms ease-out margin 175ms;
}
header.open .bun {
	transition: 175ms ease-out margin 0ms, 175ms ease-out transform 175ms;
}
.bun + .bun {
	margin-top: 5px;
}

header.open .hamburger {
	padding-top: 8px;
}
header.open .bun-1 {
	transform: rotate(45deg);
}
header.open .bun + .bun {
	margin-top: -4px;
	transform: rotate(-45deg);
}

/* Header */
.title-container {
	display: flex;
	height: var(--height);
	padding: 8px 20px;
	flex-grow: 1;
	align-items: center;
	justify-content: space-between;

	background: var(--bg);
	border-bottom: var(--border);
	box-shadow: var(--shadow);
}
.logo, .logo img {
	height: 100%;
	width: auto;
}

/* Navigation items */
nav {
	background-color: var(--bg);
	width: 90vw;
	margin: 0 auto;
	height: 0;
	transition: 350ms height ease-in-out, 0ms border ease-out 350ms;
	overflow: hidden;
	box-shadow: 0 3px 6px -1px #1119;

	border: 0px solid var(--brown-1);
}
header.open nav {
	transition-delay: 0ms, 0ms;
	border-width: 3px;
	border-top-width: 0;
}
.nav-item {
	padding: 8px 12px;
	font-weight: 800;
	color: var(--brown-1);
	transition: 200ms linear;
	cursor: pointer;
}
.nav-item:hover {
	color: var(--brown-3);
}
.nav-item.active {
	color: var(--brown-4);
}


@media screen and (min-width: 640px) {

	.hamburger {
		display: none;
	}

	header {
		flex-direction: row;
		border-bottom: var(--border);
		box-shadow: var(--shadow);
		background: var(--bg);
		padding-right: 16px;
	}
	.title-container {
		border: none;
		box-shadow: none;
	}

	nav {
		display: flex;
		width: auto;
		height: auto;
		min-height: var(--height);
		max-height: var(--height);
		box-shadow: none;
		align-items: center;
	}
	header.open nav {
		border: none;
	}

}

@media screen and (min-width: 992px) {
	header {
		padding-right: 32px;
	}
}


/* ================================================================================= */
/* Sections */
section {
	display: flex;
	flex-wrap: wrap;
	background: var(--bg);
	justify-content: space-between;
	padding: 24px 16px;
	gap: 0 16px;
}
.slight-highlight {
	background: var(--bg-2);
}

/* Normal section stuff */
section h2, section h3, section h4 {
	width: 100%;
	padding-bottom: 0.5em;
	text-align: center;
}
section p {
	padding-bottom: 1em;
	line-height: 1.4em;
	letter-spacing: 0.1pt;
	max-width: 540px;
	flex: 1 1 48ch;
	margin: 0 auto;
}

section img {
	max-height: 30vh;
	object-fit: cover;
	float: left;
	margin: 8px 0;
}
section img.small {
	margin: 8px 12px 8px 0px;
	max-width: min(200px, 50vw);
}
section img.right {
	float: right;
	margin-left: 8px;
	margin-right: 0;
}



@media screen and (min-width: 768px) {
	section {
		padding: 2em 10%;
		gap: 0 32px;
	}
	section > p {
		flex-basis: 35ch;
		margin: 0 auto;
	}
}
@media screen and (min-width: 1280px) {
	section {
		gap: 0 64px;
	}
}


/* ================================================================================= */
/* Main wrapper, landing */
.main-wrapper {
	background-color: var(--bg);
	margin-top: min(10vh, 76px);
	min-width: 100%;
	display: flex;
	flex-direction: column;
	flex-grow: 1;
}

/* The landing container */
.landing-container {
	position: relative;
	width: 100%;
	height: 30vh;
}

/* The actual image the user lands on */
.landing-container img {
	position: absolute;
	object-fit: cover;
	width: 100%;
	height: 100%;
}





/* ================================================================================= */
/* WEBSITE FLOW */

/* Home */
section.home {
	position: relative;
	padding: 0;
}
.slideshow {
	position: relative;
	width: 100vw;
	height: 50vh;
}
.slideshow > img {
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	max-height: 100%;
	margin: 0;
	object-fit: cover;
	opacity: 0;
	transition: 300ms linear opacity;
}
.slideshow > img.active {
	opacity: 1;
}
.slideshow::after {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: 100%;
	height: 100%;
	background: linear-gradient(180deg, #0000 0% 40%, #0008 65% 100%);
	z-index: 3;
}
section > .content {
	position: absolute;
	bottom: 32px;
	left: 50%;
	transform: translateX(-50%);
}
.content button {
	width: 75vw;
	max-width: 320px;
	background: none;
	border: 4px solid #FFF;
	color: #FFF;
	font-size: 1.25rem;
	font-weight: 800;
	padding: 16px;
}
.content button::after {
	background: #FFF;
}

/* Curlsys */

/* Gallery */
section.gallery {
	padding-left: 0;
	padding-right: 0;
}

.carousels {
	width: 100%;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
}
.carousel {
	position: relative;
	min-width: 300px;
	max-width: 500px;
	height: 300px;
	flex: 380px 1 1;
}
.carousel > img {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);

	width: 150px;
	height: 150px;
	object-fit: cover;
	margin: 0;
	opacity: 0.40;

	max-height: 100%;
	clear: both;
	transition: 250ms left ease-out, 250ms width ease-out, 250ms height ease-out, 250ms box-shadow ease-out, 100ms opacity ease-out;
	border-radius: 4px;
	box-shadow: 0 0 6px 0 #444;
}
.carousel > img.active {
	width: 225px;
	height: 225px;
	max-width: 65vw;
	max-height: 65vw;
	opacity: 1;
	z-index: 5;
	box-shadow: 0 0 10px -1px #444;
}
.carousel > img.prev {
	left: calc(50% - min(100px, 20vw));
	cursor: pointer;
}
.carousel > img.next {
	left: calc(50% + min(100px, 20vw));
	cursor: pointer;
}



/* Products */
.table {
	width: 100%;
	max-width: 540px;
	margin: 0 auto;
	display: flex;
	flex-wrap: wrap;
	flex: 360px 1 1;
}
.row {
	min-width: 160px;
	flex: 50% 0 0;
	background: var(--bg);
	padding: 8px 12px;
	text-align: center;
}

/* Prices */
.price-groups {
	width: 90%;
	max-width: 800px;

	margin: 0 auto;
	display: flex;
	flex-wrap: wrap;
	gap: 16px 32px;
	justify-content: center;
	overflow: hidden;
	transition: 250ms ease-out;
}
.price-group {
	width: 100%;
	flex: 250px;
	max-width: 360px;
}
.price-group h3 {
	text-align: left;
	padding-bottom: 8px;
}
.price-group .price {
	padding-left: 8px;
}
.price {
	width: 100%;
	display: flex;
	justify-content: space-between;
}
.price p {
	margin: 0;
	padding: 0;
	max-width: 100%;
	flex: none;
}

/* Contact */
.form {
	--max-width: 500px;

	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
	margin: 0 auto;
	max-width: var(--max-width);
}
.form input, .form textarea, .form select, .form button {
	padding: 8px 4px;
	border: 1px solid var(--brown-1);
	flex: 300px 1 0;
	max-width: var(--max-width);
}
.form input {
	flex-basis: 180px;
	max-width: 300px;
}
.form .top-row {
	flex: 100% 1 0;
	display: flex;
	justify-content: center;
}
.form select {
	max-width: 300px;
}
.form button {
	border-width: 3px;
	padding: 8px;
}
.form input:focus, .form textarea:focus, .form select:focus, .form button:focus {
	outline: none;
	border-color: var(--brown-3);
}
.form textarea {
	flex-basis: 100%;
	height: 80px;
	resize: vertical;
}



/* ================================================================================= */
/* Footer */
footer {
	background: #222;
	padding: 1em;
	display: flex;
    flex-wrap: wrap;
    justify-content: center;
	gap: 16px;
}
footer .footer-title {
	font-weight: 800;
	font-size: 1.3rem;
	padding: 0.5em 0;
}
footer p, footer a {
	font-size: 1rem;
	padding: 4px 0;
}
footer .col {
	width: 100%;
}
footer p {
	color: var(--bg);
	text-align: center;
}
footer a {
	color: var(--light-brown-3);
}
footer a:hover {
	color: var(--brown-1);
}

footer .break {
	padding-bottom: 1.3em;
}

.under-footer {
	background: #111;
}
.under-footer p {
	color: #888;
	padding: 12px;
	text-align: center;
}

@media screen and (min-width: 768px) {
	footer .col {
		width: 33%;
		max-width: 320px;
	}
}

/* ================================================================================= */
/* Disable blue overlay when clicking clickables on mobile devices */
@media screen and (pointer: coarse) {
	* {
		cursor: default !important;
	}
}


