:root {
	--primaryColour: #0057B0;
	--secondaryColour: #E8E8E8;
	--importantColour: #FFBE30;
	--successColour: #D1F1BB;
	--textColour: #FFFFFF;
}

@font-face {
	font-family: "Roboto";
	src: url("Fonts/Roboto/Roboto-VariableFont.ttf");
}

* {
    color: var(--textColour);
    font-family: 'Roboto', 'Arial', sans-serif;
    margin: 0 auto;
    line-height: 28px;
	/*outline: 1px solid red;*/
}

.hidden {
	display: none;
}

.desktopHidden {
	display: none;
}

.bannerHeading {
	margin-top: 50%;
	margin-bottom: 50%;
	font-size: 5em;
	font-weight: bolder;
	text-align: center;
	line-height: normal;
}

.heading1 {
	font-size: 2em;
	font-weight: bolder;
}

.heading2 {
	padding-bottom: 10px;
	font-size: 1.5em;
	font-weight: bolder;
}

/*====================
		HEADER
  ====================*/

/* HEADER MESSAGE */
#headerMessage {
	display: none;
}

#headerMessage a {
	color: var(--primaryColour);
	display: flex;
	font-weight: bolder;
	justify-content: center;
}

/* HEADER */
header {
	transition: transform 0.3s ease;
	min-height: 50px;
	width: 100%;
	margin-bottom: 0;
	position: sticky;
	z-index: 20;
	top: 0;
}

header.smartHide {
	transform: translateY(-100%);
}

#headerDesktop {
	display: grid;
	grid-template-columns: 20% 60% 20%;
}

#headerPhone {
	font-size: larger;
	font-weight: bold;
	display: none;
}

#hamburgerMenuContainer {
	display: none;
}

#header {
    background-color: var(--primaryColour);
    border-bottom: 2px solid var(--primaryColour);
}

#header li {
	list-style: none;
    display: inline-block;
    margin: 15px 5%;
    font-size: 1.5em;
    font-weight: bold;
}

/* HEADER BUTTONS */
.headerLogo {
	object-fit: cover;
	justify-content: center;
	align-items: center;
	grid-column: 1 / 1;
	margin-top: 7px;
}

.headerTabs {
	text-align: center;
	margin: 0px !important;
	object-fit: cover;
	grid-column: 2 / 2;
	align-content: center;
}

.headerTabs a {
	transition: color 0.25s;
	text-decoration: none;
}

.headerTabs a:hover,
.headerTabs a:focus {
	transition: color 0.25s;
	text-decoration: underline; 
	color: var(--importantColour);
}

.headerGetQuote {
	display: inherit;
	transition: background-color 0.15s;
	grid-column: 3 / 3;
	margin-top: 10px;
	margin-bottom: 10px;
	padding: 0px 10px;
	background-color: var(--importantColour);
	border-radius: 1em;
}

.headerGetQuote a {
	color: var(--primaryColour);
	align-self: center;
	text-decoration: none;
	cursor: pointer;
	font-size: larger;
	font-weight: bold;
	line-height: revert;
}

.headerGetQuote:hover,
.headerGetQuote:focus {
	transition: 0.35s;
	background: linear-gradient(to top, #ffd780  50%, var(--importantColour) 50%) bottom;
	background-size: 100% 200%;
}

/*====================
		CONTENTS
  ====================*/
body {
	background-color: #121212;
	min-height: 100vh;
	display: grid;
	grid-template-rows: auto 1fr auto;
}

main {
	width: 100%;
	min-width: 0;
}

.contents * {
	color: var(--textColour);
}

.contents {

	z-index: 1;
    background-color: var(--primaryColour);
	border: 2.5px #12121250 solid;
    padding: 2% 2%;
	padding-bottom: 30px;
    margin: 40px 17%;
	border-radius: 1em;
	position: relative;
}

.contents video {
	width: 50%;
	height: auto;
	margin-inline: auto;
	justify-content: center;
	align-items: center;
	display: flex;
}

.contents a {
	text-decoration: none;
	cursor: pointer;
	font-size: 1em
}

.contents i {
	font-size: 1em;
}

.contents a:hover,
.contents a:focus {
	text-decoration: underline;
}

.contents p {
	font-size: large;
	padding-bottom: 30px;
}

.contents li {
    padding: 0 2%;
    width: 100%;
}

.contents hr {
	color: #d9d9d9;
	margin-top: 15px;
	margin-bottom: 20px;
}

.privacyPolicy p {
	padding-bottom: 10px;
}
/* END */

/* SOCIAL MEDIA BUTTONS */
.cardContainer {
	justify-content: center;
	align-items: center;
	display: flex;
	flex-wrap: wrap;
}

.cardContainer a {
	padding: 0;
	margin: 0;
	color: var(--primaryColour);
	width: 300px;
}

.card {
	transition: 0.5s;
	font-size: 1.5em;
	margin: 20px;
	display: flex;
	flex: 0 0 250px;
	flex-direction: row;
	padding: 20px;
	gap: 20px;
	border-radius: 1em;
	background-color: var(--secondaryColour);
	color: var(--primaryColour);
	contain: content;
}

.card i {
	color: inherit;
	margin: 0;
}

.card p {
	color: inherit;
	margin: 0;
	padding: 0;
	font-size: 1em;
}

.card:hover,
.card:focus {
	transition: 0.4s;
	background: linear-gradient(to top, var(--importantColour)  50%, var(--secondaryColour) 50%) bottom;
	color: var(--textColour);
	background-size: 100% 200%;
}

#google:hover,
#google:focus {
	transition: 0.4s;
	background: linear-gradient(to top, #34A853  50%, var(--secondaryColour) 50%) bottom;
	color: var(--textColour);
	background-size: 100% 200%;
}

#instagram:hover,
#instagram:focus {
	transition: 0.4s;
	background: linear-gradient(to top, #5B51D8 50%, var(--secondaryColour) 50%) bottom;
	color: var(--textColour);
	background-size: 100% 200%;
}

#facebook:hover,
#facebook:focus {
	transition: 0.4s;
	background: linear-gradient(to top, #1877F2  50%, var(--secondaryColour) 50%) bottom;
	color: var(--textColour);
	background-size: 100% 200%;
}
/* END */

/* REVIEW CARDS */
.readMore {
	font-weight: bolder;
}

.rating {
	color: #fbbc04;
	font-size: 1.2rem;
	letter-spacing: 2px;
}

.revieweeName {
	font-size: larger;
	font-weight: bolder;
}

.reviewCard {
	background-color: var(--primaryColour);
	flex: 0 0 300px;
	border-radius: 1em;
	padding: 20px;
	scroll-snap-align: start;
}

.reviewCardContainer * {
	line-height: normal;
}

.reviewCardContainer {
	scrollbar-width: none;
	mask-image: linear-gradient(90deg,#0000,#000 5% 95%,#0000);
	min-width: 0;
	margin: 0 8%;
	overflow: hidden;
	position: relative;
	margin-top: 40px;
}

.reviewCardContainer::-webkit-scrollbar {
	display: none;
}

.reviewCardContainer::-webkit-scrollbar-track {
	display: none;
}

.reviewCardContainer::-webkit-scrollbar-thumb {
	display: none;
}

.reviewTrack {
	width: fit-content;
	will-change: transform;
	display: flex;
	animation: scroll 30s linear infinite;
	gap: 20px;
}

.reviewTrack:hover,
.reviewTrack:focus-within {
	animation-play-state: paused;
}

#startStopMarquee {
	color: #000000;
	text-align: center;
	border: none;
	position: relative;
	font-size: 2em;
	display: block;
	margin-bottom: 40px;
}

@keyframes scroll {
	from {
		transform: translateX(0);
	}
	to {
		transform: translateX(-50%);
	}
}
/* END */

/* IMAGE CAROUSEL */
.imageCarouselContainer {
	max-width: 1000px;
	max-height: 700px;
	width: 100%;
	height: auto;
	margin-inline: auto;
	margin-bottom: 40px;
	background-color: #FFFFFF;
	padding: 0px;
	position: relative;
	aspect-ratio: 3/2;
	overflow: hidden;
}

.imageCarouselContainer * {
	font-size: 2.5em;
}

.imageItem {
	background-repeat: no-repeat;
	background-size: 100% 100%;
	max-width: 1000px;
	max-height: 700px;
	width: 100%;
	height: auto;
	display: flex;
	justify-content: center;
	align-items: center;
	object-fit: scale-down;
	top: 0;
	position: absolute;
}

.imageInCarousel {
	transform: translate(0);
	visibility: hidden;
}

#activeImage {
	visibility: visible;
	z-index: 1;
}

#moveImageIntoFrame {
	transition: 0.4s;
	visibility: visible;
	transform: translateX(0);
	z-index: 2;
	position: relative;
	flex-wrap: wrap;
}

#previousImage {
	transform: translateX(-100%);
	visibility: hidden;
	z-index: 2;
	position: relative;
}

#nextImage {
	transform: translateX(100%);
	visibility: hidden;
	z-index: 2;
	position: relative;
}

#carouselCount {
	position: absolute;
	margin-inline: auto;
	color: var(--secondaryColour);
	bottom: 10px;
	justify-content: auto;
	align-items: center;
}

#imageCarouselControls * {
	color: var(--secondaryColour);
	font-size: 2em;
	position: absolute;
	top: 40%;
	margin-inline: 20px;
	background-color: rgba(0, 0, 0, 0);
	border: none;
}

#imageCarouselControls button:hover,
#imageCarouselControls button:focus {
	transition: 0.4s;
	color: var(--importantColour);
	text-decoration: none;
}

#previousImageBtn {
	position: absolute;
	z-index: 3;
	float: left;
	left: 0;
}

#nextImageBtn {
	position: absolute;
	z-index: 3;
	float: right;
	right: 0;
}

#carouselProgressBar {
	width: 100%;
	height: 6px;
	border-radius: 0 0 3.5px 3.5px;
	margin-inline: 0;
	position: relative;
	top: 99%;
	z-index: 3;
}

.progressBarFilling {
	height: 100%;
	width: 0%;
	background: var(--successColour);
	border-radius: inherit;
	transition: width 0.4s;
}

.imageIndicator {
	position: absolute;
	top: 0%;
	padding: 10px;
	padding-left: 10px;
	color: var(--secondaryColour);
}

.imageIndicator p {
	font-size: 0.15em;
}
/* END */

/* CONTACT US + FORM */
.gridItem {
	width: 100%;
	height: 100%;
}

.formContainer {
	gap: 1em;
	display: grid;
	grid-template-columns: 1fr 1fr;
	grid-row: auto;
}

.form {
	color: #000000;
	font-weight: bolder;
	border: none;
	border-radius: 1em;
	padding: 10px;
	width: 100%;
	margin-bottom: 10px;
	box-sizing: border-box;
}

input[type=text]:focus {
	transition: 0.25s;
	outline: none;
	background: linear-gradient(to top, var(--secondaryColour)  50%, var(--textColour) 50%) bottom;
	background-size: 100% 200%;
}

textarea[type=text]:focus {
	transition: 0.5s;
	outline: none;
	background: linear-gradient(to top, var(--secondaryColour)  50%, var(--textColour) 50%) bottom;
	background-size: 100% 200%;
}

.formInputWrap {
	position: relative;
}

.formTextarea {
	width: 100%;
	height: 100%;
	resize: vertical;
}

form select {
	padding: 10px;
}

#formSubmit {
	background-color: var(--textColour);
	border: none;
	color: #000000;
	border-radius: 1em;
	padding: 10px 4%;
	cursor: pointer;
	font-size: larger;
	display: block;
	margin-top: 40px;
	margin-inline: auto;
	font-weight: bold;
}

#formSubmit:hover,
#formSubmit:focus {
	transition: 0.5s;
	background: linear-gradient(to top, var(--importantColour)  50%, var(--textColour) 50%) bottom;
	background-size: 100% 200%;
}

#successfulForm h3 {
	color: var(--successColour);
	text-align: center;
}

/* END */

/* HEADER BANNERS */
#bannerMobileContainer {
	display: none;
	background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url(Images/Banner/mobileBanner.jpeg) no-repeat;
	height: 16.75em;
	background-blend-mode: darken;
	background-position: center;
	overflow: hidden;
	margin: 20px auto;
}

#bannerItems {
	margin-left: auto;
	margin-right: auto;
	width: 100%;
	max-height: 100%;
	align-items: center;
	display: flex;
	justify-content: center;
	position: absolute;
	z-index: 3;
}

#bannerDesktopContainer {
	margin-bottom: 40px;
	display: block;
	margin-inline: auto;
	width: fit-content;
	position: relative;
}

#bannerDesktopOverlay {
	background-color: rgba(0, 0, 0, 0.5);
	background-blend-mode: darken;
	z-index: 2;
	width: 100%;
	height: 100%;
	position: absolute;
}

#bannerDesktopImage {
	z-index: 1;
	max-width: 100%;
	height: auto;
	position: relative;
	display: block;
}
/*====================
		 MISC
  ====================*/
.positiveMessage {
	text-align: left;
	margin-left: 20%;
	color: var(--successColour);
	font-weight: bolder;
}

.imageInText {
	max-width: 50%; 
	min-width: 50%;
}

.disabled {
	pointer-events: none;
}

/*====================
		FOOTER
  ====================*/
footer {
	z-index: 1;
	width: 100%;
	min-height: 50px;
}

#footer {
    color: #FFFFFF;
    background-color: var(--primaryColour);
    border-top: 2px solid var(--primaryColour);
    z-index: 10;
	width: 100%;
	padding-bottom: 40px;
	margin-inline: auto;
	text-align: center;
}

#footer-socials {
	margin: 40px 0;
}

#footer-socials li {
    list-style: none;
    display: inline-block;
    font-size: large;
    padding: 0 12px;
}

#footer-socials img {
    height: 15px;
    width: 15px;
}

/*====================
	   X > 1920
  ====================*/
@media screen and (min-width: 1920px) 
{
	.contents {
		width: 1267.2px;
		margin: auto;
		padding: 38.4px;
		margin-bottom: 40px;
	}

	#headerDesktop {
		display: grid;
		width: 1920px;
	}

	.reviewCardContainer {
		width: 1612.8px;
		margin: 40px auto;
	}
}

/*====================
		MOBILE
  ====================*/
@media screen and (max-width: 550px) 
{
	.formContainer {
		display: block;
	}
}

@media screen and (max-width: 800px)
{
	#headerDesktop {
		display: none; 
	}

	.desktopHidden {
		display: inline;
	}

	.reviewCardContainer {
		margin: 40px 0;
		width: 100vw;
		mask-image: linear-gradient(90deg,#0000,#000 0% 100%,#0000);
	}
/*
	.reviewTrack:hover,
	.reviewTrack:focus-within {
		animation-play-state: running;
	}
*/
	#startStopMarquee {
		margin-bottom: 20px;
	}

/* HEADER MOBILE */
	header {
		margin-bottom: 0;
	}

	#headerPhone {
		display: grid;
		grid-template-columns: 30% 40% 30%;
	}

	#headerPhone .headerGetQuote {
		display: grid;
		font-size: 0.75em;
		font-weight: bold;
		padding: 0px 10px;
		border-radius: 1em;
	}

	.headerGetQuote a {
		line-height: normal;
	}

	#headerPhone a {
		align-items: center;
		justify-content: center;
		font-size: 1.25em;
		grid-row: auto;
	}

	#headerPhone li {
		text-align: center;
	}


/* HAMBURGER MENU STYLES MOBILE */
	#hamburgerMenuContainer {
		display: block;
		transition: transform 0.25s ease;
		height: fit-content;
		width: 100%;
		position: absolute;
		background-color: var(--primaryColour);
		transform: translateX(-100%);
	}

	#hamburgerMenuContainer.active {
		transform: translateY(0);
	}

	#hamburgerMenuContainer li {
		margin-left: 12%;
		padding-bottom: 0.5%;
		display: block;
		font-size: 1.35em;
	}

	#hamburgerMenuContainer a {
		text-decoration: none;
	}

/* HEADER BUTTONS MOBILE */
	.hamburgerMenu {
		line-height: normal;
		grid-column: 1 / 1;
		grid-row: 1 / 1;
	}

	.hamburgerMenu a {
		line-height: revert;
		margin-top: 5%;
		font-family: sans-serif;
	}

	.headerLogo { 
		grid-column: 2 / 2;
		grid-row: 1 / 1;
		object-fit: cover;
	}

	.headerQuote {
		grid-column: 3 / 3;
		grid-row: 1 / 1;
	}

/* WEBSITE CONTENTS MOBILE */
    .contents {
        padding: 0% 5%;
		margin: 40px 2%;
    }

	.contents h1 {
		line-height: 95%;
	}

	.contents video {
		padding-bottom: 40px;
	}

	.heading1 {
		padding-top: 30px;
	}

	#bannerDesktopContainer {
		display: none;
	}

	#bannerMobileContainer {
		margin-top: 0;
		background-position: center;
		object-fit:scale-down;
		display: block;
	}

	#bannerItems {
		justify-content: center;
		transform: translate(0%, 0%);
		position: relative;
		max-width: 100%;
	}

	#bannerItems h1 {
		line-height: 1;
		display: block;
		text-align: center;
		font-size: 2.5rem;
	}

	#formSubmit {
		margin-top: 20px;
	}

	.imageCarouselContainer * {
		font-size: 1.5em;
	}

	.imageIndicator p {
		font-size: 0.5em;
	}

	.mobileHidden {
		display: none;
	}
}

@media screen and (max-width: 370px){
	
	#bannerMobileContainer h1 {
		font-size: 1.9em;
	}
}
