@charset "UTF-8";
/* CSS Document */

:root {
  /* colours - base palette */
  --primaryDark: 0, 0%, 10%;
  --primaryMid: 0, 0%, 50.2%;
  --primarySubtle: 0, 1.7%, 88.4%;
  --primaryLight: 0, 0%, 94.9%;

  --goldDark: 36, 23.8%, 45.3%;
  --goldMid: 34.8, 30.7%, 55.9%;
  --goldLight: 34.8, 28.4%, 75.5%;

  --secondary: 197.5, 17.6%, 73.3%;

  --success: 101.7, 10%, 55.1%;
  --alert: 7.3, 100%, 19.4%;

  --white: 0, 0%, 100%;

  --fs-200: clamp(0.7035rem, 0.8083rem + -0.1353vi, 0.7813rem);
  --fs-300: clamp(0.9375rem, 0.9374rem + 0.0004vi, 0.9377rem);
  --fs-400: clamp(1.125rem, 1.0815rem + 0.2174vi, 1.25rem);
  --fs-500: clamp(1.35rem, 1.24rem + 0.55vi, 1.6663rem);
  --fs-600: clamp(1.62rem, 1.4109rem + 1.0454vi, 2.2211rem);
  --fs-700: clamp(1.944rem, 1.5904rem + 1.7682vi, 2.9607rem);
  --fs-800: clamp(2.3328rem, 1.7715rem + 2.8067vi, 3.9467rem);
  --fs-900: clamp(2.7994rem, 1.9432rem + 4.281vi, 5.2609rem);
}

@media (prefers-color-scheme: dark) {
  :root {
    --text: var(--primarySubtle);
    --background: var(--primaryDark);
  }
}

@media (prefers-color-scheme: light) {
  :root {
    --text: var(--primaryDark);
    --background: var(--primarySubtle);
  }
}

[color-scheme="dark"] {
  --text: var(--primarySubtle);
  --background: var(--primaryDark);
}

[color-scheme="light"] {
  --text: var(--primaryDark);
  --background: var(--primarySubtle);
}

.fs-900 {
  font-size: var(--fs-900);
  line-height: 1;
  padding-bottom: 0.25rem;
}
.fs-800 {
  font-size: var(--fs-800);
  line-height: 1.4;
  padding-bottom: 0.25rem;
}
.fs-700 {
  font-size: var(--fs-700);
  line-height: 1.4;
  padding-bottom: 0.25rem;
}
.fs-600 {
  font-size: var(--fs-600);
  line-height: 1.4;
  padding-bottom: 0.25rem;
}
.fs-500 {
  font-size: var(--fs-500);
  line-height: 1.4;
  padding-bottom: 0.25rem;
}
.fs-400 {
  font-size: var(--fs-400);
}
.fs-300 {
  font-size: var(--fs-300);
}
.fs-200 {
  font-size: var(--fs-200);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  overflow-x: hidden;
  scroll-behavior: smooth;
}

body {
  font-family: system-ui, sans-serif;
  font-weight: bold;
  font-size: var(--fs-400);
  background-color: hsl(var(--background));
  color: hsl(var(--text));
  line-height: 1.6;
}

img,
picture {
  max-width: 100%;
  display: block;
  height: auto;
}

a {
  text-decoration: underline;
  text-decoration-thickness: 3px;
  text-decoration-style: solid;
  text-decoration-color: hsl(var(--goldMid));
  text-underline-offset: 5px;
  color: hsl(var(--text));
}

a:hover {
  opacity: 0.7;
}

body,
h1,
h2,
h3,
h4,
h5,
h6,
p,
a,
dl,
dt,
dd,
fieldset,
figure,
blockquote,
picture,
input,
label,
textarea,
nav,
ul,
li {
  margin: 0;
  padding: 0;
  font-weight: 400;
}

h1,
h2,
h3,
h4,
h5,
h6,
.subheading {
  font-weight: 400;
  text-wrap: balance;
  max-width: 95%;
}

h1,
h2,
h3 {
  font-weight: 700;
  line-height: 1.2;
}

hr {
  background-color: hsl(var(--goldMid));
  background-image: linear-gradient(
    to right,
    hsl(var(--goldDark)),
    hsl(var(--goldLight)),
    hsl(var(--goldDark))
  );
  height: 3px;
  border: none;
  margin: 0 1rem;
}

ul {
  list-style: square;
  color: inherit;
  list-style-position: inside;
}

nav ul,
ul.list-style-none {
  list-style: none;
}

p,
li:not([class]) {
  max-width: 75ch;
  padding-right: 2rem;
}

li:not([class]) {
  list-style-position: outside;
  margin-bottom: 1rem;
  margin-left: 1rem;
}

/* ------------------------------------

Hero Image

------------------------------------*/

.pagebackground {
  position: fixed;
  background-position: center top;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  object-fit: cover;
  z-index: -1;
}

.pagebackground::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  background: hsla(var(--background), 0.5);
  background: linear-gradient(
    70deg,
    hsla(var(--background), 0.9) 0%,
    hsla(var(--background), 0.9) 30%,
    hsla(var(--background), 0.2) 100%
  );
}

em {
  font-style: normal;
  font-weight: inherit;
}

@media (prefers-color-scheme: light) {
  .pagebackground {
    background-image: url("/assets/images/backgrounds/hero-marble.webp");
  }
  .accent-primary,
  em {
    color: hsl(var(--primaryMid));
    background: -webkit-linear-gradient(
      -45deg,
      hsl(var(--primaryDark)),
      hsl(var(--primaryMid)),
      hsl(var(--primaryDark))
    );
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
  }
}

@media (prefers-color-scheme: dark) {
  .pagebackground {
    background-image: url("/assets/images/backgrounds/hero-slate.webp");
  }
  .accent-primary,
  em {
    color: hsl(var(--primaryMid));
    background: -webkit-linear-gradient(
      -45deg,
      hsl(var(--primaryDark)),
      hsl(var(--primaryMid)),
      hsl(var(--primaryDark))
    );
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
  }
}

[color-scheme="light"] {
  .pagebackground {
    background-image: url("/assets/images/backgrounds/hero-marble.webp");
  }

  .accent-primary,
  em {
    color: hsl(var(--primaryMid));
    background: -webkit-linear-gradient(
      -45deg,
      hsl(var(--primaryDark)),
      hsl(var(--primaryMid)),
      hsl(var(--primaryDark))
    );
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
  }
}

[color-scheme="dark"] {
  .pagebackground {
    background-image: url("/assets/images/backgrounds/hero-slate.webp");
  }

  .accent-primary,
  em {
    color: hsl(var(--goldMid));
    background: -webkit-linear-gradient(
      -45deg,
      hsl(var(--goldDark)),
      hsl(var(--goldLight)),
      hsl(var(--goldDark))
    );
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
  }
}

/* ------------------------------------

Video

------------------------------------*/

video {
  width: 100%;
  height: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  z-index: -1;
}

/*.video {
	width:100%;
	height:100%;
	aspect-ratio: 2 / 1;
	border: none;
}
*/

/* ------------------------------------

Utility classes 

------------------------------------*/

.uppercase {
  text-transform: uppercase;
}

.flow > * + * {
  margin-top: var(--flow, 1rem);
}

.flex {
  display: flex;
  gap: 1rem;
}

.hidden {
  display: none;
}

.telephone {
  font-size: var(--fs-600);
}

a.no-dec {
  text-decoration: none;
  border-bottom: none;
}

@media screen and (min-width: 992px) {
  .overlap {
    margin-top: -10rem;
  }
}

/*------------------------------------------

Intersection Observers

------------------------------------------*/

.fade-in {
  transition: opacity 1000ms ease-in;
  opacity: 0;
}

.fade-in.appear {
  opacity: 1;
}

.slide-in {
  transition:
    opacity 250ms ease-in,
    transform 400ms ease-in;
  -webkit-transform: translateX(50%);
  transform: translateY(50%);
  opacity: 0;
}

.slide-in.appear {
  -webkit-transform: translateY(0);
  transform: translateY(0);
  opacity: 1;
}

/* ------------------------------------

Buttons

------------------------------------*/

.btn {
  padding: 0.75rem 1.25rem;
  font-size: 1.2rem;
  line-height: 1.5;
  cursor: pointer;
  background-color: hsl(var(--goldMid));
  color: hsl(var(--primaryLight));
  border: none;
  text-decoration: none;
  width: fit-content;
  font-size: var(--fs-300);
}

.btn:hover {
  opacity: 0.8;
}

.lightdark-btn {
  background-color: transparent;
  border: none;
}

.btn-call-lg {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 1rem;
}

.btn-call-lg strong {
  white-space: nowrap;
}

.btn-call-lg svg {
  width: 40px;
}

.btn-card {
  margin-top: auto;
}

/* ------------------------------------

Grid

------------------------------------*/

.grid {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  max-width: 100rem;
  margin: 3rem auto;
  align-items: start;
  padding-inline: 1rem;
  grid-gap: 1rem;
  min-width: 0;
  overflow: hidden;
}

.grid.articles {
  align-items: stretch;
}

.grid-wide {
  max-width: 80rem;
}

.grid-full {
  position: relative;
  width: 100vw;
  max-width: calc(100% + 2rem);
  margin: 3rem 0;
  padding-inline: 0;
}

.autogrid {
  --gutter: 1rem;
  --min: 15rem;
  display: grid;
  grid-gap: var(--gutter);
  grid-template-columns: repeat(auto-fit, minmax(var(--min), 1fr));
  grid-auto-flow: dense;
  max-width: 100rem;
  margin: 3rem auto;
  padding-inline: 1rem;
}

.subgrid {
  padding-inline: 0;
}

.grid > * {
  grid-column: span 12;
  min-width: 0;
}

.video-caption {
  color: hsla(var(--text), 0.5);
}

@media screen and (min-width: 576px) {
  .autogrid {
    --min: 25rem;
    --gutter: 3rem;
  }
}

@media screen and (min-width: 992px) {
  .grid,
  .autogrid {
    padding-inline: 2rem;
  }

  .grid-full {
    padding-inline: 0;
  }

  .grid > * {
    grid-column: span var(--span, 12);
    min-width: 0;
  }
}

.end {
  align-self: end;
  justify-self: end;
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  padding-right: 0;
}

.end p {
  padding-right: 0;
}

.space {
  flex-direction: row;
  justify-content: space-between;
  width: 100%;
}

@media screen and (min-width: 992px) {
  .col-1 {
    grid-column: span 7;
  }

  .col-2 {
    grid-column: 8 / span 5;
  }
}

@media screen and (min-width: 768px) {
  footer .col-1 {
    grid-column: span 6;
  }

  footer .col-2 {
    grid-column: 7 / span 6;
  }

  .space {
    flex-direction: column;
    justify-content: end;
    width: auto;
  }
}

@media screen and (min-width: 1200px) {
  .col-1 {
    grid-column: span 8;
  }

  .col-2 {
    grid-column: 9 / span 4;
  }

  .map {
    aspect-ratio: 1;
    width: 100%;
    height: 100%;
  }
}

.articles,
.projects,
.services {
  list-style: none;
}

@media screen and (min-width: 768px) {
  .articles > li {
    grid-column: span 6;
  }
}

@media screen and (min-width: 576px) {
  .services > li {
    grid-column: span 6;
  }
}

@media screen and (min-width: 992px) {
  .articles > li {
    grid-column: span 4;
  }
}

@media screen and (min-width: 1200px) {
  .services > li {
    grid-column: span 3;
  }
}

.article-excerpt {
  /*	background-color: hsla(var(--background),0.8);*/
  /*	padding: 1rem;*/
  /*	border: solid 3px hsla(var(--text), 0.1);*/
}

.service {
  position: relative;
  /*	background-color: hsla(var(--background), 0.9);*/
  /*	padding: 1rem;*/
}

.service::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 60%;
  background-color: hsl(var(--background));
  background: linear-gradient(
    180deg,
    hsla(var(--background), 0.9) 0%,
    hsla(var(--background), 0) 100%
  );
  color: hsl(var(--text));
}

.service figcaption {
  color: hsl(var(--text));
  text-transform: uppercase;
  font-size: var(--fs-600);
  line-height: 1;
  max-width: 70%;
  position: absolute;
  top: 1rem;
  left: 1rem;
}

.service img,
.article img {
  min-width: 100%;
  object-fit: cover;
  aspect-ratio: 1/1;
}

.projects img {
  width: 100%;
}

.categories ul {
  list-style: none;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.categories li {
  padding: 0.1rem;
}

.categories a {
  text-decoration: none;
  color: hsl(var(--background));
  background-color: hsl(var(--text));
  padding: 0.5rem 1rem;
  font-size: var(--fs-300);
}

.categories a.active {
  background-color: hsl(var(--goldMid));
}

.category-list {
  list-style: none;
  display: flex;
  align-items: flex-end;
}

.category-list li {
  color: hsla(var(--text), 0.5);
  width: fit-content;
}

@media screen and (min-width: 576px) {
  .categories {
    grid-column: 7 / span 6;
  }
}

@media screen and (min-width: 768px) {
  .categories {
    grid-column: 9 / span 4;
    align-self: end;
  }
}

.article-excerpt {
  display: flex;
  flex-direction: column;
}

.article-excerpt > p:last-of-type {
  margin-bottom: 1rem;
}

.article-excerpt > .read-more {
  margin-top: auto;
  align-self: end;
}

.article-excerpt img {
  aspect-ratio: 16 / 9;
  object-fit: cover;
}

.article-excerpt img.fallback {
  opacity: 0.5;
}

.grid-sizer {
  width: calc(100% - 1rem);
}

.projects {
  width: calc(100% - 1rem);
  margin: 0 auto;
  max-width: 100rem;
}

.project {
  width: 100%;
  height: auto;
  padding: 0.5rem;
}

.project--width2 {
  width: 100%;
}

.article-image img {
  aspect-ratio: 16 / 9;
  object-fit: cover;
  width: 100%;
  max-width: 40rem;
}

@media only screen and (min-width: 576px) {
  .grid-sizer {
    width: 50%;
  }

  .project {
    width: 50%;
  }

  .project--width2 {
    width: 390px;
  }
}

@media only screen and (min-width: 992px) {
  .grid-sizer {
    width: 33%;
  }

  .project {
    width: 33%;
  }

  .article-image img {
    aspect-ratio: 4 / 3;
    object-fit: cover;
  }
}

.caption {
  opacity: 0.7;
  font-size: var(--fs-300);
  font-style: italic;
  padding-right: 1rem;
}

.caption a {
  text-decoration: none;
}

.grid.services {
  align-items: stretch;
}

.service {
  display: flex;
  flex-direction: column;
}

.service .caption {
  margin-bottom: 1rem;
}

.project-caption {
  position: absolute;
  bottom: 1rem;
  left: 1rem;
  padding: 0.2rem 0.5rem;
  background-color: hsla(var(--background), 0.8);
}

.service a.btn {
  margin-top: auto;
}

.caption-group {
  display: flex;
  justify-content: space-between;
  margin-top: 0.5rem;
  color: hsla(var(--text), 0.5);
  font-style: italic;
  z-index: 100;
  flex-grow: 1;
  width: 0;
  min-width: 100%;
}
.tag {
  font-size: var(--fs-200);
  text-decoration: none;
  background-color: hsl(var(--goldMid));
  color: hsl(var(--primaryDark));
  padding: 0.2rem 1rem;
  font-style: normal;
}

/* ------------------------------------

Headers

------------------------------------*/

.logo-main {
  max-width: 350px;
  margin-top: 20vh;
}

.logo-footer {
  max-width: 150px;
  margin-top: 1rem;
}

/* ------------------------------------

Hero Image

------------------------------------*/

main {
  margin-top: 20vh;
  min-height: 50vh;
}

/* ------------------------------------

Testimonials

------------------------------------*/

.testimonials {
  list-style: none;
  font-style: italic;
}

.testimonial {
  position: relative;
  margin-bottom: 2rem;
}

.testimonials blockquote::before {
  content: '"';
  position: absolute;
  top: -2.5rem;
  left: -0.5rem;
  font-size: var(--fs-800);
  color: hsl(var(--goldMid));
}

.testimonials::after {
  content: '"';
  position: absolute;
  top: -1rem;
  left: -1rem;
  font-size: var(--fs-600);
  color: hsl(var(--goldMid));
}

.testimonials .author {
  color: hsl(var(--goldMid));
}

@media only screen and (min-width: 992px) {
  .testimonials blockquote::before {
    left: -2rem;
  }
}

/* ------------------------------------

Map

------------------------------------*/

/* ------------------------------------

Gallery

------------------------------------*/

/*.splide__slide {
	max-height: 30rem;
}

.splide__slide__container {
	max-height: 30rem;
}*/

.splide__slide__container picture {
  height: 20rem;
}

.splide__slide img {
  height: 100% !important;
  object-fit: cover;
  object-position: center;
}

@media only screen and (min-width: 992px) {
  .splide__slide__container picture {
    height: 30rem;
  }
}

/* ------------------------------------

Articles

------------------------------------*/

.pagination {
  display: flex;
  justify-content: space-between;
}

.pagination svg {
  max-width: 10px;
}

/* ------------------------------------

Form

------------------------------------*/

.uniform__potty {
  position: absolute;
  left: -9999px;
}

.error {
  border: 1px solid red;
}
.error-text {
  color: white;
  background-color: hsl(var(--alert));
  padding: 1rem;
  border-radius: 0.5rem;
  max-width: 35rem;
}

input:not([type="radio"]),
textarea {
  display: block;
}

input[type="radio"] {
  display: inline-flex;
}

input:not(input[type="submit"]),
select,
textarea {
  width: 100%;
  max-width: 35rem;
  padding: 1rem;
  display: flex;
  flex-direction: column;
  background-color: hsl(var(--primaryLight));
  border: none;
  line-height: 1.6;
}

textarea {
  max-width: 35rem;
}

label {
  display: block;
  padding-bottom: 0.5rem;
  max-width: 35rem;
}

fieldset .flow {
  margin-top: 1rem;
  --flow: 0.2rem;
}

textarea {
  min-height: 10rem;
}

input[name="checkbox"] {
  display: inline-block;
  margin: 10px 1% 10px 2%;
  height: 20px;
  width: 3%;
}

::placeholder {
  /* Chrome, Firefox, Opera, Safari 10.1+ */
  color: hsl(var(--secondary));
  opacity: 1; /* Firefox */
}

::-ms-input-placeholder {
  /* Internet Explorer 10-11 */
  color: hsl(var(--secondary));
}

::-ms-input-placeholder {
  /* Microsoft Edge */
  color: hsl(var(--secondary));
}

fieldset {
  border: 1px solid hsl(var(--primaryMid));
  padding: 2rem;
  margin: 0;
}

fieldset > legend {
  padding: 0.5rem;
  color: hsl(var(--primaryMid));
}

label {
  display: block;
  padding-bottom: 0.5rem;
  max-width: 35rem;
}

fieldset .flow {
  margin-top: 1rem;
  --flow: 0.2rem;
}

/* Checkbox .......................... */

.checkbox-container {
  display: block;
  position: relative;
  padding-left: 35px;
  margin-bottom: 12px;
  cursor: pointer;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.checkbox-container input {
  position: absolute;
  opacity: 0;
  cursor: pointer;
  height: 0;
  width: 0;
}

.checkmark {
  position: absolute;
  top: 3px;
  left: 0;
  height: 25px;
  width: 25px;

  background-color: hsl(var(--primaryLight));
}

.checkbox-container:hover input ~ .checkmark {
  background-color: hsla(var(--primaryMid), 0.7);
}

.checkbox-container input:checked ~ .checkmark {
  background-color: hsl(var(--goldMid));
}

.checkmark:after {
  content: "";
  position: absolute;
  display: none;
}

.checkbox-container input:checked ~ .checkmark:after {
  display: block;
}

.checkbox-container .checkmark:after {
  left: 10px;
  top: 7px;
  width: 5px;
  height: 10px;
  border: solid white;
  border-width: 0 3px 3px 0;
  -webkit-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  transform: rotate(45deg);
}

.checkboxsection__text {
  padding-left: 2.5rem;
}

.calcguard input.uniform__captcha {
  max-width: 100px;
}

/* Radio Buttons .......................... */

.radio-group {
  display: flex;
  gap: 1rem;
}

/* Customize the label (the container) */
.radio-group .container {
  display: block;
  position: relative;
  padding-left: 35px;
  margin-bottom: 12px;
  cursor: pointer;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

/* Hide the browser's default radio button */
.radio-group .container input {
  position: absolute;
  opacity: 0;
  cursor: pointer;
  height: 0;
  width: 0;
}

/* Create a custom radio button */
.radio-group .checkmark {
  position: absolute;
  top: 0;
  left: 0;
  height: 25px;
  width: 25px;
  background-color: #eee;
  border-radius: 50%;
}

/* On mouse-over, add a grey background color */
.radio-group .container:hover input ~ .checkmark {
  background-color: #ccc;
}

/* When the radio button is checked, add a blue background */
.radio-group .container input:checked ~ .checkmark {
  background-color: #2196f3;
}

/* Create the indicator (the dot/circle - hidden when not checked) */
.radio-group .checkmark:after {
  content: "";
  position: absolute;
  display: none;
}

/* Show the indicator (dot/circle) when checked */
.radio-group .container input:checked ~ .checkmark:after {
  display: block;
}

/* Style the indicator (dot/circle) */
.radio-group .container .checkmark:after {
  top: 9px;
  left: 9px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: white;
}

/* ------------------------------------

Footer

------------------------------------*/

footer {
  margin-top: 3rem;
}

.social-icon svg {
  max-width: 70px;
}

.footer-contact svg {
  max-width: 40px;
  vertical-align: bottom;
  padding-right: 0.5rem;
}

.footer-contact svg#call {
  max-width: 45px;
}

.fresh-bread {
  padding: 1rem 0;
  font-size: var(--fs-300);
}
