/* =================================================================== 
 *
 *  Infinity v1.0 Main Stylesheet
 *  01-02-2017
 *  ------------------------------------------------------------------
 *
 *  TOC:
 *  01. webfonts and iconfonts
 *  02. base style overrides
 *  03. typography & general theme styles
 *  05. forms
 *  06. buttons
 *  07. other components
 *  08. common and reusable styles 
 *  09. header styles
 *  10. home
 *  11. about
 *  12. services
 *  13. portfolio
 *  14. testimonials
 *  15. clients
 *  16. contact
 *  17. footer
 *
 * =================================================================== */

/* ===================================================================
 *  01. webfonts and iconfonts - (_document-setup)
 *  Loaded via <link> in layout.pug (not @import — avoids serial CSS)
 * ------------------------------------------------------------------- */

:root {
  /* Font system — change here, updates globally */
  --font-sans: "Montserrat", sans-serif;
  --font-display: "Roboto Slab", serif;
  --font-weight-body: 550;      /* Montserrat floor */
  --font-weight-medium: 600;    /* buttons / emphasis */
  --font-weight-bold: 700;      /* strong / labels */
  --font-weight-display: 500;   /* Roboto Slab titles */

  --color-text: #292929;
  --color-green: #385c3e;
  --content-max-width: 1400px;
  --content-width: min(85vw, var(--content-max-width));
  /* Brand logos — official wordmark aspect ~3.74:1 (width:height) */
  --logo-white-width: clamp(100px, 9.5vw, 132px);
  --logo-white-height: calc(var(--logo-white-width) * 232 / 867);
  --logo-dark-width: clamp(100px, 9.5vw, 132px);
  --logo-dark-height: calc(var(--logo-dark-width) * 232 / 867);
  --header-height: calc(clamp(12px, 2vw, 20px) + var(--logo-white-height) + clamp(12px, 2vw, 20px));

  /* Type scale — root 16px, so 1rem = 16px. Change here → updates globally. */
  --fs-xs: 0.8125rem;   /* 13px — micro / captions */
  --fs-sm: 0.875rem;    /* 14px — labels, meta */
  --fs-md: 0.9375rem;   /* 15px — UI chrome: footer, contact, menu meta */
  --fs-base: 1rem;      /* 16px — body */
  --fs-lg: 1.125rem;    /* 18px — lead / supporting */
  --fs-xl: 1.25rem;     /* 20px — small heads */
  --fs-2xl: 1.5rem;     /* 24px — subheads */
  --fs-3xl: 2rem;       /* 32px — section titles (non-display) */
  --fs-4xl: 2.5rem;     /* 40px — large feature heads */

  /* Display / fluid titles (Roboto Slab) */
  --fs-section-title: clamp(1.625rem, 1.8vw + 0.78125rem, 3rem); /* Kontaktieren Sie uns — canonical */
  --fs-display: clamp(1.75rem, 2.2vw + 0.6875rem, 3rem);
  --fs-display-lg: clamp(1.75rem, 2.5vw + 0.71875rem, 3rem);
  --fs-display-sm: clamp(1.5rem, 2.6vw + 0.53125rem, 3rem);
  --fs-display-hero: 5.625rem;
  --fs-display-lead: clamp(1.03125rem, 2.8vw + 0.53125rem, 2.5rem);
  --fs-lead-fluid: clamp(0.875rem, 0.55vw + 0.71875rem, 1.125rem);

  --lh-tight: 1.25;
  --lh-snug: 1.4;
  --lh-body: 1.7;
  --lh-loose: 1.8;

  --button-font-size: var(--fs-lg);
  --button-min-height: 3.75rem;
  --button-padding-x: 2rem;
  --button-padding-y: 0.9375rem;

  --radius: 2px;
}

.row {
  max-width: var(--content-max-width);
}

/* ===================================================================
 *  02. base style overrides - (_document-setup)
 *
 * ------------------------------------------------------------------- */
html {
  font-size: 100%; /* browser default ≈ 16px; 1rem = 16px */
}

html, body {
  height: 100%;
}

body {
  background: #ffffff;
  font-family: var(--font-sans);
  font-size: var(--fs-base);
  font-weight: var(--font-weight-body);
  font-synthesis: none;
  line-height: var(--lh-loose);
  color: var(--color-text);
  margin: 0;
  padding: 0;
  /* Prevent words breaking in weird places: no auto-hyphenation, break at spaces only */
  -webkit-hyphens: none;
  -ms-hyphens: none;
  hyphens: none;
  word-break: normal;
}

/* ------------------------------------------------------------------- 
 * links - (_document-setup) 
 * ------------------------------------------------------------------- */
a, a:visited {
  color: #FFFFFF;
}

a:hover, a:focus {
  color: #385c3e;
}

/* ===================================================================
 *  03. typography & general theme styles - (_document-setup.scss) 
 *
 * ------------------------------------------------------------------- */
h1, h2, h3, h4, h5, h6,
.h01, .h02, .h03, .h04, .h05, .h06 {
  font-family: var(--font-sans);
  font-weight: var(--font-weight-body);
  color: var(--color-text);
  font-style: normal;
  text-rendering: optimizeLegibility;
  margin-bottom: 1.3125rem;
}

h3, .h03, h4, .h04 {
  margin-bottom: 1.125rem;
}

h5, .h05, h6, .h06 {
  margin-bottom: 0.75rem;
}

h1, .h01 {
  font-size: var(--fs-3xl);
  line-height: var(--lh-snug);
}
@media only screen and (max-width: 600px) {
  h1, .h01 {
    font-size: 1.625rem;
  }
}

h2, .h02 {
  font-size: var(--fs-2xl);
  line-height: var(--lh-tight);
}

h3, .h03 {
  font-size: var(--fs-xl);
  line-height: 1.5;
}

h4, .h04 {
  font-size: var(--fs-lg);
  line-height: 1.6;
}

h5, .h05 {
  font-size: var(--fs-md);
  line-height: var(--lh-body);
  text-transform: none;
}

h6, .h06 {
  font-size: var(--fs-sm);
  line-height: var(--lh-body);
  text-transform: none;
}

p img {
  margin: 0;
}

p.lead {
  font-family: var(--font-sans);
  font-size: var(--fs-lg);
  font-weight: var(--font-weight-body);
  line-height: var(--lh-loose);
  color: #4f4f4f;
  margin-bottom: 2.25rem;
}
@media only screen and (max-width: 768px) {
  p.lead {
    font-size: var(--fs-base);
  }
}

/* Emphasis inherits size — never inflate <i> (icons) / <em> / <strong> */
em, i {
  font-size: inherit;
  line-height: inherit;
  font-weight: inherit;
  font-style: normal;
  font-family: inherit;
}

strong, b {
  font-size: inherit;
  line-height: inherit;
  font-weight: var(--font-weight-bold);
  font-style: normal;
  font-family: var(--font-sans);
}

small {
  font-size: var(--fs-xs);
  line-height: inherit;
}

del {
  text-decoration: line-through;
}

abbr[title], dfn[title] {
  border-bottom: 1px dotted;
  cursor: help;
}

mark {
  background: #FFF49B;
  color: var(--color-text);
}

hr {
  border: solid #d2d2d2;
  border-width: 1px 0 0;
  clear: both;
  margin: 1.5rem 0 0.9375rem;
  height: 0;
}

/* ------------------------------------------------------------------- 
 * Lists - (_document-setup.scss)  
 * ------------------------------------------------------------------- */
ol {
  list-style: decimal;
}

ul {
  list-style: disc;
}

li {
  display: list-item;
}

ol, ul {
  margin-left: 1.0625rem;
}

ul li {
  padding-left: 0.25rem;
}

ul ul, ul ol,
ol ol, ol ul {
  margin: 0.375rem 0 0.375rem 1.0625rem;
}

ul.disc li {
  display: list-item;
  list-style: none;
  padding: 0 0 0 3.125rem;
  position: relative;
}
ul.disc li::before {
  content: "";
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #07617d;
  position: absolute;
  left: -17px;
  top: 11px;
  vertical-align: middle;
}

dt {
  margin: 0;
  color: #385c3e;
}

dd {
  margin: 0 0 0 1.25rem;
}

/* ------------------------------------------------------------------- 
 * Spacing - (_document-setup)  
 * ------------------------------------------------------------------- */
button, .button {
  margin-bottom: 0.75rem;
}

fieldset {
  margin-bottom: 0.9375rem;
}

input,
textarea,
select,
pre,
figure,
p,
ul,
ol,
dl,
form,
.fluid-video-wrapper {
  margin-bottom: 1.875rem;
}

/* ------------------------------------------------------------------- 
 * floated image - (_document-setup)  
 * ------------------------------------------------------------------- */
img.pull-right {
  margin: 0.9375rem 0 0 1.875rem;
}

img.pull-left {
  margin: 0.9375rem 1.875rem 0 0;
}

/* ------------------------------------------------------------------- 
 * block grids paddings
 * ------------------------------------------------------------------- */
.bgrid {
  padding: 0 20px;
}
@media only screen and (max-width: 1024px) {
  .bgrid {
    padding: 0 18px;
  }
}
@media only screen and (max-width: 768px) {
  .bgrid {
    padding: 0 15px;
  }
}
@media only screen and (max-width: 600px) {
  .bgrid {
    padding: 0 10px;
  }
}
@media only screen and (max-width: 400px) {
  .bgrid {
    padding: 0;
  }
}

/* ===================================================================
 *  05. forms - (_forms.scss)
 *
 * ------------------------------------------------------------------- */
fieldset {
  border: none;
}

input[type="email"],
input[type="number"],
input[type="search"],
input[type="text"],
input[type="tel"],
input[type="url"],
input[type="password"],
textarea,
select {
  display: block;
  height: 3.75rem;
  padding: 0.9375rem 1.25rem;
  border: 0;
  outline: none;
  vertical-align: middle;
  color: #444444;
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  line-height: 1.875rem;
  max-width: 100%;
  background: rgba(0, 0, 0, 0.1);
  border-radius: var(--radius);
}

textarea {
  min-height: 15.625rem;
}

input[type="email"]:focus,
input[type="number"]:focus,
input[type="search"]:focus,
input[type="text"]:focus,
input[type="tel"]:focus,
input[type="url"]:focus,
input[type="password"]:focus,
textarea:focus,
select:focus {
  color: var(--color-text);
}

label, legend {
  font-family: var(--font-sans);
  font-weight: var(--font-weight-bold);
  font-size: var(--fs-sm);
  margin-bottom: 0.375rem;
  color: var(--color-text);
  display: block;
}

input[type="checkbox"],
input[type="radio"] {
  display: inline;
}

label > .label-text {
  display: inline-block;
  margin-left: 0.625rem;
  font-family: var(--font-sans);
  line-height: inherit;
}

label > input[type="checkbox"],
label > input[type="radio"] {
  margin: 0;
  position: relative;
  top: 0.9375rem;
}

/* ------------------------------------------------------------------- 
 * Style Placeholder Text - (_forms.scss)
 * ------------------------------------------------------------------- */
::-webkit-input-placeholder {
  color: #8e8e8e;
}

:-moz-placeholder {
  color: #8e8e8e;
  /* Firefox 18- */
}

::-moz-placeholder {
  color: #8e8e8e;
  /* Firefox 19+ */
}

:-ms-input-placeholder {
  color: #8e8e8e;
}

.placeholder {
  color: #8e8e8e !important;
}

/* ------------------------------------------------------------------- 
 * Change Autocomplete styles in Chrome - (_forms.scss)
 * ------------------------------------------------------------------- */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus
input:-webkit-autofill,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover
textarea:-webkit-autofill:focus,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus {
  border: none;
  -webkit-text-fill-color: #385c3e;
}

/* ===================================================================
 *  06. buttons - (_button-essentials.scss)
 *
 * ------------------------------------------------------------------- */
.button,
a.button,
button,
input[type="submit"],
input[type="reset"],
input[type="button"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-sans);
  font-size: var(--button-font-size);
  font-weight: var(--font-weight-medium);
  text-transform: none;
  height: auto;
  min-height: var(--button-min-height);
  line-height: 1.2;
  padding: var(--button-padding-y) var(--button-padding-x);
  margin: 0 0.1875rem 0.75rem 0;
  background: #A5A5A5;
  color: var(--color-text);
  text-decoration: none;
  cursor: pointer;
  text-align: center;
  white-space: nowrap;
  border: none;
  box-sizing: border-box;
  border-radius: var(--radius);
  gap: 0.625rem;
  transform: translateY(0);
  box-shadow: none;
  transition:
    background-color 0.28s ease,
    color 0.28s ease,
    border-color 0.28s ease,
    transform 0.28s ease,
    box-shadow 0.28s ease;
}

/* Icon sizing: match button text size, sit optically with the label */
.button .ph,
a.button .ph,
button .ph {
  width: 1.25em;
  height: 1.25em;
  font-size: 1em;
  margin-right: 0;
  color: currentColor;
  vertical-align: 0;
  flex-shrink: 0;
}

.contact-content h6 .ph,
#menu-nav-wrap .menu-nav-address .ph,
#menu-nav-wrap .menu-nav-contact-links a .ph,
.footer-main .footer-social-list a .ph,
#message-warning .ph,
#message-success .ph {
  width: 1em;
  height: 1em;
  font-size: 1.45em;
}

.button:hover,
a.button:hover,
button:hover,
input[type="submit"]:hover,
input[type="reset"]:hover,
input[type="button"]:hover,
.button:focus,
button:focus,
input[type="submit"]:focus,
input[type="reset"]:focus,
input[type="button"]:focus {
  background: #7a7a7a;
  color: #ffffff;
  outline: 0;
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.18);
}

.button:hover .ph,
a.button:hover .ph,
button:hover .ph,
.button:focus .ph,
button:focus .ph {
  color: currentColor;
}

.button.button-primary,
a.button.button-primary,
button.button-primary,
input[type="submit"].button-primary,
input[type="reset"].button-primary,
input[type="button"].button-primary {
  background: #151515;
  color: #FFFFFF;
}

.button.button-primary:hover,
a.button.button-primary:hover,
button.button-primary:hover,
input[type="submit"].button-primary:hover,
input[type="reset"].button-primary:hover,
input[type="button"].button-primary:hover,
.button.button-primary:focus,
button.button-primary:focus,
input[type="submit"].button-primary:focus,
input[type="reset"].button-primary:focus,
input[type="button"].button-primary:focus {
  background: var(--color-green);
  color: #ffffff;
}

.button.button-light,
a.button.button-light,
button.button-light,
input[type="submit"].button-light,
input[type="reset"].button-light,
input[type="button"].button-light {
  background: #FFFFFF;
  color: var(--color-text);
}

.button.button-light .ph,
a.button.button-light .ph,
button.button-light .ph {
  color: var(--color-green);
}

.button.button-light:hover,
a.button.button-light:hover,
button.button-light:hover,
input[type="submit"].button-light:hover,
input[type="reset"].button-light:hover,
input[type="button"].button-light:hover,
.button.button-light:focus,
button.button-light:focus,
input[type="submit"].button-light:focus,
input[type="reset"].button-light:focus,
input[type="button"].button-light:focus {
  background: var(--color-green);
  color: #ffffff;
}

.button.button-light:hover .ph,
a.button.button-light:hover .ph,
button.button-light:hover .ph,
.button.button-light:focus .ph,
button.button-light:focus .ph {
  color: #ffffff;
}

button.full-width, .button.full-width {
  width: 100%;
  margin-right: 0;
}

button.medium, .button.medium {
  min-height: 3.5625rem !important;
  padding: 0.90625rem 1.125rem !important;
}

button.large, .button.large {
  min-height: 3.75rem !important;
  padding: 0.9375rem 1.875rem !important;
}

button.stroke, .button.stroke {
  background: transparent !important;
  border: 3px solid #313131;
  line-height: 1.3;
  padding-top: calc(var(--button-padding-y) - 3px);
  padding-bottom: calc(var(--button-padding-y) - 3px);
}

button.stroke.medium, .button.stroke.medium {
  padding-top: calc(0.90625rem - 3px) !important;
  padding-bottom: calc(0.90625rem - 3px) !important;
}

button.stroke.large, .button.stroke.large {
  padding-top: calc(0.9375rem - 3px) !important;
  padding-bottom: calc(0.9375rem - 3px) !important;
}

button.stroke:hover, .button.stroke:hover {
  border: 3px solid #385c3e;
  color: #385c3e;
  background: transparent !important;
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(56, 92, 62, 0.18);
}

button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}

/* ===================================================================
 *  08. common and reusable styles 
 *
 * ------------------------------------------------------------------- */
.section-intro {
  text-align: center;
  position: relative;
  margin-bottom: 0.9375rem;
  max-width: var(--content-width);
  margin-left: auto;
  margin-right: auto;
  padding: 0 clamp(0.75rem, 4vw, 1.25rem);
}
.section-intro h1 {
  font-family: var(--font-display);
  font-size: var(--fs-section-title);
  line-height: 1.375;
  font-weight: var(--font-weight-display);
  color: var(--color-text);
}
.section-intro h3 {
  font-family: var(--font-sans);
  font-size: clamp(var(--fs-sm), 0.4vw + 0.71875rem, var(--fs-lg));
  font-weight: var(--font-weight-body);
  line-height: 1.6;
  color: rgba(242, 242, 242, 0.5);
  text-transform: none;
  margin-bottom: 0.75rem;
}
.section-intro .lead {
  font-family: var(--font-sans);
  font-size: clamp(var(--fs-md), 0.5vw + 0.75rem, var(--fs-lg));
  font-weight: var(--font-weight-body);
  line-height: var(--lh-loose);
}
.section-intro.with-bottom-sep {
  padding-bottom: 2.625rem;
  position: relative;
}
.section-intro.with-bottom-sep::after {
  display: inline-block;
  height: 1px;
  width: 200px;
  background-color: rgba(242, 242, 242, 0.1);
  text-align: center;
}

/* DataReporter cookie banner overrides */
.cc-window .dr-category-overview-text,
.cc-window .dr-category-headline span[role="heading"] {
  font-family: var(--font-sans) !important;
  font-size: var(--fs-xs) !important;
  line-height: 1.5 !important;
  letter-spacing: normal !important;
  text-transform: none !important;
}

.cc-window .dr-category-overview-text {
  font-weight: var(--font-weight-body) !important;
}

/* Persistent cookie settings tab (bottom-right) */
.cc-revoke {
  background: rgba(130, 130, 130, 0.22) !important;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  color: #ffffff !important;
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
  border-bottom: none !important;
  padding: 0.7em 1.25em !important;
  font-family: var(--font-sans) !important;
  font-size: var(--fs-xs) !important;
  line-height: 1.4 !important;
  text-decoration: none !important;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  z-index: 1999999999;
  /* Keep chip compact — DR mobile CSS sets left:0 !important which would stretch it */
  left: auto !important;
  width: auto !important;
  max-width: max-content !important;
  display: inline-flex !important;
  align-items: center !important;
  white-space: nowrap !important;
  flex: 0 0 auto !important;
}

.cc-revoke:hover,
.cc-revoke:focus,
.cc-revoke:active {
  background: rgba(145, 145, 145, 0.34) !important;
  color: #ffffff !important;
  text-decoration: underline !important;
}

.cc-revoke.cc-bottom {
  bottom: 0;
  left: auto !important;
  right: 0 !important;
  width: auto !important;
  border-top-left-radius: 0.6em;
  border-top-right-radius: 0;
}

.cc-revoke.cc-bottom.cc-left {
  left: auto !important;
  right: 0 !important;
}

@media only screen and (max-width: 900px) {
  .cc-revoke,
  .cc-revoke.cc-bottom,
  .cc-revoke.cc-bottom.cc-left,
  .cc-animate.cc-revoke.cc-bottom {
    background: rgba(138, 138, 138, 0.24) !important;
    border: 1px solid rgba(255, 255, 255, 0.14) !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.14) !important;
    border-radius: 9999px !important;
    border-top-left-radius: 9999px !important;
    border-top-right-radius: 9999px !important;
    border-bottom-left-radius: 9999px !important;
    border-bottom-right-radius: 9999px !important;
    bottom: 0.75rem !important;
    left: auto !important;
    right: 0.75rem !important;
    width: auto !important;
    max-width: max-content !important;
    display: inline-flex !important;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
    padding: 0.8em 1.4em !important;
    overflow: visible !important;
  }

  .cc-revoke:hover,
  .cc-revoke:focus,
  .cc-revoke:active {
    background: rgba(152, 152, 152, 0.36) !important;
  }
}

/* ------------------------------------------------------------------- 
 * responsive:
 * section-intro
 * ------------------------------------------------------------------- */
@media only screen and (max-width: 768px) {
  .section-intro,
  #about .about-wrap,
  #portfolio .intro-wrap .row,
  #services .services-content {
    max-width: none;
  }

  #about > .row.about-wrap,
  #services > .row.section-intro,
  #portfolio .intro-wrap > .row.section-intro,
  #contact > .row {
    padding-left: clamp(0.625rem, 3.5vw, 1rem);
    padding-right: clamp(0.625rem, 3.5vw, 1rem);
  }

  #about > .row.about-wrap > [class*="col-"],
  #portfolio .intro-wrap > .row.section-intro > [class*="col-"] {
    padding-left: 0;
    padding-right: 0;
  }
}
.wide {
  max-width: min(90vw, 1500px);
}

.narrow {
  max-width: 800px;
}

/* ===================================================================
 *  09. header styles - (_layout.scss)
 *
 * ------------------------------------------------------------------- */
header {
  width: 100%;
  height: auto;
  position: fixed;
  left: 0;
  top: 0;
  z-index: 700;
  background: transparent;
  padding: clamp(12px, 2vw, 20px) clamp(28px, 5vw, 56px);
  display: flex;
  justify-content: space-between;
  align-items: center;
  transition: background-color 0.3s ease, box-shadow 0.3s ease;
}

header.scrolled {
  background-color: #ffffff;
  box-shadow: 0 8px 24px rgba(15, 18, 21, 0.10);
  /* Keep padding identical to default — avoids logo/header “resize” on scroll */
  padding: clamp(12px, 2vw, 20px) clamp(28px, 5vw, 56px);
}

/* ------------------------------------------------------------------- 
 * header logo - (_layout.css) 
 * ------------------------------------------------------------------- */
header .header-logo {
  position: relative;
  left: 0;
  top: 0;
  z-index: 701;
  padding-bottom: 0.25rem;
}
header .header-logo a {
  display: block;
  margin: 0;
  padding: 0;
  outline: 0;
  border: none;
  width: var(--logo-white-width);
  height: var(--logo-white-height);
  position: relative;
  background: none;
  font: 0/0 a;
  text-shadow: none;
  color: transparent;
}

header .header-logo a::before,
header .header-logo a::after {
  content: "";
  position: absolute;
  inset: 0;
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  pointer-events: none;
  opacity: 0;
  transition: none;
}

header .header-logo a::before {
  background-image: url("../img/logo.webp");
  opacity: 1;
}

header .header-logo a::after {
  background-image: url("../img/logo-scrolled.webp");
}

header.scrolled .header-logo a::before {
  opacity: 0;
}

header.scrolled .header-logo a::after {
  opacity: 1;
}

@media only screen and (min-width: 1025px) {
  :root {
    --header-height: calc(12px + var(--logo-white-height) + 0.25rem + 12px);
  }

  header {
    padding-top: 12px;
    padding-bottom: 12px;
  }

  header.scrolled {
    padding-top: 12px;
    padding-bottom: 12px;
  }

  #menu-nav-wrap .close-button {
    top: 12px;
  }

  #menu-nav-wrap .menu-nav-header {
    padding-top: 12px;
    padding-bottom: 12px;
  }
}

/* ------------------------------------------------------------------- 
 * menu trigger - (_layout.css) 
 * ------------------------------------------------------------------- */
#header-menu-trigger {
  display: block;
  position: relative;
  right: 0;
  top: 0;
  height: clamp(35px, 4vw, 42px);
  width: clamp(35px, 4vw, 42px);
  line-height: clamp(35px, 4vw, 42px);
  font-family: var(--font-sans);
  font-size: clamp(0.75rem, 1.5vw, 0.875rem);
  text-transform: uppercase;
  color: #FFFFFF;
  z-index: 702;
  transition: color 0.25s ease;
}

header.scrolled #header-menu-trigger {
  color: #1f1f1f;
}
#header-menu-trigger.opaque {
  background-color: transparent;
}
#header-menu-trigger:hover, #header-menu-trigger:focus {
  color: #FFFFFF;
}

header.scrolled #header-menu-trigger:hover,
header.scrolled #header-menu-trigger:focus {
  color: var(--color-text);
}
#header-menu-trigger .header-menu-text {
  display: none;
}
#header-menu-trigger .header-menu-icon {
  display: block;
  height: clamp(2px, 0.3vw, 3px);
  width: clamp(20px, 2.5vw, 24px);
  background-color: currentColor;
  position: absolute;
  top: 50%;
  right: clamp(7px, 1vw, 9px);
  margin-top: clamp(-1px, -0.15vw, -1.5px);
}
#header-menu-trigger .header-menu-icon::before, 
#header-menu-trigger .header-menu-icon::after {
  content: '';
  width: 100%;
  height: 100%;
  background-color: inherit;
  position: absolute;
  left: 0;
}
#header-menu-trigger .header-menu-icon::before {
  top: clamp(-7px, -1vw, -9px);
}
#header-menu-trigger .header-menu-icon::after {
  bottom: clamp(-7px, -1vw, -9px);
}

/* ------------------------------------------------------------------- 
 * off-canvas menu - (_layout.scss) 
 * ------------------------------------------------------------------- */
#menu-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.4);
  z-index: 2000000001;
  -webkit-tap-highlight-color: transparent;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.35s ease, visibility 0s linear 0.35s;
}
.menu-is-open #menu-backdrop {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition: opacity 0.35s ease, visibility 0s linear 0s;
}

#menu-nav-wrap {
  background: #FFFFFF;
  color: var(--color-text);
  font-size: clamp(0.9375rem, 1.8vw, 1rem);
  line-height: 1.6;
  padding: 0;
  height: 100%;
  width: 50vw;
  max-width: 50vw;
  position: fixed;
  right: 0;
  top: 0;
  visibility: hidden;
  overflow-y: auto;
  z-index: 2000000002;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: stretch;
  -webkit-backface-visibility: hidden;
  -webkit-transform: translateX(100%);
  -ms-transform: translateX(100%);
  transform: translateX(100%);
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 0.4s;
  box-shadow: -12px 0 40px rgba(0, 0, 0, 0.12);
}

#menu-nav-wrap .menu-nav-header {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  padding: clamp(12px, 2vw, 20px) clamp(28px, 5vw, 56px);
  padding-bottom: calc(clamp(12px, 2vw, 20px) + 0.25rem);
  padding-right: calc(clamp(28px, 5vw, 56px) + clamp(35px, 4vw, 42px) + 1rem);
}

#menu-nav-wrap .menu-nav-logo {
  display: block;
  width: var(--logo-dark-width);
  height: var(--logo-dark-height);
  line-height: 0;
  padding-bottom: 0.25rem;
  box-sizing: content-box;
}

#menu-nav-wrap .menu-nav-logo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: left center;
}

#menu-nav-wrap .menu-nav-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  width: 100%;
  max-width: 45rem;
  margin: 0 auto;
  padding: clamp(1.5rem, 5vw, 3rem) clamp(1.5rem, 6vw, 3.5rem);
}

#menu-nav-wrap .menu-nav-footer {
  flex-shrink: 0;
  border-top: 1px solid rgba(21, 21, 21, 0.08);
  padding: clamp(1.25rem, 4vw, 2rem) clamp(28px, 5vw, 56px);
}

#menu-nav-wrap .menu-nav-contact {
  max-width: 45rem;
  margin: 0 auto;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1.25rem 2.5rem;
}

#menu-nav-wrap .menu-nav-address {
  display: inline-flex;
  align-items: flex-start;
  gap: 0.5rem;
  font-style: normal;
  color: var(--color-text);
  font-size: var(--fs-md);
  line-height: var(--lh-loose);
  margin: 0;
}

#menu-nav-wrap .menu-nav-address .ph {
  margin-top: 0.2em;
}

#menu-nav-wrap .menu-nav-address a,
#menu-nav-wrap .menu-nav-address a:visited {
  color: inherit;
  text-decoration: none;
  position: relative;
  display: inline-block;
}

#menu-nav-wrap .menu-nav-address a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -0.125rem;
  height: 1px;
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.25s ease;
}

#menu-nav-wrap .menu-nav-address a:hover::after,
#menu-nav-wrap .menu-nav-address a:focus::after {
  transform: scaleX(1);
}

#menu-nav-wrap .menu-nav-contact-links {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

#menu-nav-wrap .menu-nav-contact-links li {
  margin: 0;
  padding: 0;
}

#menu-nav-wrap .menu-nav-contact-links a {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: var(--fs-md);
  text-decoration: none;
  position: relative;
}

#menu-nav-wrap .menu-nav-contact-links a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -0.125rem;
  height: 1px;
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.25s ease;
}

#menu-nav-wrap .menu-nav-contact-links a:hover::after,
#menu-nav-wrap .menu-nav-contact-links a:focus::after {
  transform: scaleX(1);
}

#menu-nav-wrap a, #menu-nav-wrap a:visited {
  color: var(--color-text);
}
#menu-nav-wrap a:hover, #menu-nav-wrap a:focus, #menu-nav-wrap a:active {
  color: #385c3e;
}

#menu-nav-wrap .nav-list {
  font-family: var(--font-sans);
  margin: 0;
  padding: 0;
  list-style: none;
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

#menu-nav-wrap .nav-list-legal {
  margin-top: clamp(1.5rem, 4vw, 2.25rem);
  padding-top: clamp(1.5rem, 4vw, 2.25rem);
  border-top: 1px solid rgba(21, 21, 21, 0.08);
  flex-direction: row;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.25rem clamp(1rem, 3vw, 1.75rem);
}

#menu-nav-wrap .nav-list li {
  padding: 0;
  margin: 0;
  border: none;
  width: auto;
  text-align: center;
}

#menu-nav-wrap .nav-list-primary li a {
  color: var(--color-text);
  display: inline-block;
  padding: clamp(0.4375rem, 1.4vw, 0.75rem) 0;
  font-size: clamp(var(--fs-xl), 4vw, 1.625rem);
  font-weight: var(--font-weight-body);
  text-transform: none;
  position: relative;
  text-align: center;
  text-decoration: none;
  transition: color 0.2s ease;
}

#menu-nav-wrap .nav-list-legal li a {
  display: inline-block;
  padding: 0.375rem 0;
  font-size: var(--fs-md);
  font-weight: var(--font-weight-body);
  text-decoration: none;
  position: relative;
  transition: color 0.2s ease;
}

#menu-nav-wrap .nav-list li a::before {
  display: none;
}

#menu-nav-wrap .nav-list-primary li a::after,
#menu-nav-wrap .nav-list-legal li a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: clamp(0.28125rem, 0.9vw, 0.46875rem);
  height: 2px;
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: center;
  transition: transform 0.25s ease;
}

#menu-nav-wrap .nav-list-legal li a::after {
  bottom: 0.125rem;
  height: 1px;
  transform-origin: left;
}

#menu-nav-wrap .nav-list-primary li a:hover, 
#menu-nav-wrap .nav-list-primary li a:focus {
  color: var(--color-text);
}

#menu-nav-wrap .nav-list-primary li.current a {
  color: #385c3e;
}

#menu-nav-wrap .nav-list-primary li a:hover::after,
#menu-nav-wrap .nav-list-primary li a:focus::after,
#menu-nav-wrap .nav-list-primary li.current a::after,
#menu-nav-wrap .nav-list-legal li a:hover::after,
#menu-nav-wrap .nav-list-legal li a:focus::after,
#menu-nav-wrap .nav-list-legal li.current a::after {
  transform: scaleX(1);
}
#menu-nav-wrap .header-social-list {
  list-style: none;
  display: inline-block;
  margin: 2.5rem 0 0 0;
  font-size: 1.3125rem;
}
#menu-nav-wrap .header-social-list li {
  margin-right: 12px;
  padding-left: 0;
  display: inline-block;
}
#menu-nav-wrap .header-social-list li a {
  color: #999999;
}
#menu-nav-wrap .header-social-list li a:hover, 
#menu-nav-wrap .header-social-list li a:focus {
  color: #385c3e;
}
#menu-nav-wrap .header-social-list li:last-child {
  margin: 0;
}
#menu-nav-wrap .close-button {
  display: block;
  height: clamp(35px, 4vw, 42px);
  width: clamp(35px, 4vw, 42px);
  border-radius: 0;
  background-color: transparent;
  position: fixed;
  top: clamp(12px, 2vw, 20px);
  right: clamp(28px, 5vw, 56px);
  font: 0/0 a;
  text-shadow: none;
  color: transparent;
  z-index: 2000000003;
}
#menu-nav-wrap .close-button:hover {
  background-color: transparent;
}
#menu-nav-wrap .close-button span::before, 
#menu-nav-wrap .close-button span::after {
  content: "";
  display: block;
  height: clamp(2px, 0.3vw, 3px);
  width: clamp(20px, 2.5vw, 24px);
  background-color: var(--color-text);
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: clamp(-1px, -0.15vw, -1.5px);
  margin-left: calc(clamp(20px, 2.5vw, 24px) / -2);
}
#menu-nav-wrap .close-button span::before {
  -webkit-transform: rotate(-45deg);
  -ms-transform: rotate(-45deg);
  transform: rotate(-45deg);
}
#menu-nav-wrap .close-button span::after {
  -webkit-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  transform: rotate(45deg);
}

/* menu is open */
.menu-is-open #menu-nav-wrap {
  -webkit-transform: translateX(0);
  -ms-transform: translateX(0);
  transform: translateX(0);
  visibility: visible;
  -webkit-overflow-scrolling: touch;
  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 0s;
}

/* Keep page (and header chrome) frozen while the drawer is open */
body.menu-is-open {
  overflow: hidden;
}

@media (prefers-reduced-motion: reduce) {
  #menu-backdrop,
  .menu-is-open #menu-backdrop,
  #menu-nav-wrap,
  .menu-is-open #menu-nav-wrap {
    transition: none;
  }
}

.menu-is-open .cc-revoke,
.menu-is-open .cc-window {
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* ------------------------------------------------------------------- 
 * responsive:
 * menu panel (needs breakpoints for mobile/desktop behavior)
 * ------------------------------------------------------------------- */
@media only screen and (min-width: 769px) {
  #menu-nav-wrap .menu-nav-body {
    align-items: flex-start;
    margin-left: 0;
    margin-right: 0;
    max-width: none;
  }

  #menu-nav-wrap .nav-list,
  #menu-nav-wrap .nav-list-primary {
    align-items: flex-start;
    justify-content: flex-start;
  }

  #menu-nav-wrap .nav-list-legal {
    align-items: flex-start;
    justify-content: flex-start;
  }

  #menu-nav-wrap .nav-list li {
    text-align: left;
  }

  #menu-nav-wrap .nav-list-primary li a,
  #menu-nav-wrap .nav-list-legal li a {
    text-align: left;
  }

  #menu-nav-wrap .nav-list-primary li a::after,
  #menu-nav-wrap .nav-list-legal li a::after {
    transform-origin: left center;
  }

  #menu-nav-wrap .menu-nav-contact {
    margin-left: 0;
    margin-right: 0;
    max-width: none;
    width: 100%;
  }
}

@media only screen and (max-width: 768px) {
  #menu-nav-wrap {
    width: 100vw;
    max-width: 100vw;
    box-shadow: none;
  }

  #menu-nav-wrap .menu-nav-body {
    justify-content: flex-start;
    align-items: flex-end;
    padding-top: clamp(1.875rem, 8vw, 2.5rem);
    padding-left: clamp(0.625rem, 3.5vw, 1rem);
    padding-right: clamp(0.625rem, 3.5vw, 1rem);
  }

  #menu-nav-wrap .nav-list,
  #menu-nav-wrap .nav-list-primary,
  #menu-nav-wrap .nav-list-legal {
    align-items: flex-end;
  }

  #menu-nav-wrap .nav-list li {
    text-align: right;
    width: 100%;
  }

  #menu-nav-wrap .nav-list-primary li a,
  #menu-nav-wrap .nav-list-legal li a {
    text-align: right;
  }

  #menu-nav-wrap .nav-list-primary li a::after {
    transform-origin: right center;
  }

  #menu-nav-wrap .nav-list-legal li a::after {
    transform-origin: right center;
  }

  #menu-nav-wrap .nav-list-legal {
    flex-direction: column;
    align-items: flex-end;
    gap: 0.125rem;
  }

  #menu-nav-wrap .menu-nav-contact {
    flex-direction: column;
    gap: 1rem;
  }
}

/* ===================================================================
 *  10. home - (_layout.scss)
 *
 * Hero video: one <video>, poster only as fallback. No CSS background image.
 * Desktop: cover, full viewport. Mobile: cover + scale(0.9) so it still fills
 * but shows more of the frame (less crop), minimal dark edge.
 * ------------------------------------------------------------------- */
#home {
  width: 100%;
  height: 100vh;
  min-height: 100vh;
  position: relative;
  overflow: hidden;
  z-index: 1;
}

#home::before {
  content: "";
  position: absolute;
  inset: 0;
  background: url("../img/hero-poster-first-frame.webp") center center / cover no-repeat;
  z-index: 0;
}

#background-video {
  position: absolute;
  top: 0;
  left: 0;
  min-width: 100%;
  min-height: 100%;
  width: 100%;
  height: 100%;
  z-index: 1;
  transform: none;
  object-fit: cover;
  object-position: center center;
}

#home .background-image-mobile {
	background-image: url("../img/hero-poster-first-frame.webp");
	background-size: cover;
}

#home .overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.35);
  z-index: 2;
  pointer-events: none;
}

.home-content-table {
  width: 100%;
  height: 100%;
  display: table;
  position: relative;
  text-align: center;
  z-index: 3;
}

.home-content-tablecell {
  display: table-cell;
  vertical-align: middle;
  z-index: 2;
  position: relative;
}
.home-content-tablecell .row {
  position: relative;
  padding-top: 10.125rem;
  padding-bottom: 9.375rem;
}
.home-content-tablecell h3 {
  font-family: var(--font-sans);
  font-size: 1.375rem;
  font-weight: var(--font-weight-body);
  color: white;
  text-transform: none;
  margin: 0 0 0.5625rem 0;
  opacity: 0;
  transform: translateY(16px);
  animation: heroTextIn 1.2s ease 0.35s forwards;
}
.home-content-tablecell h1 {
  font-family: var(--font-display);
  font-size: var(--fs-display-hero);
  line-height: 1.133;
  font-weight: var(--font-weight-display);
  color: #FFFFFF;
  opacity: 0;
  transform: translateY(24px);
  animation: heroTextIn 1.6s ease 0.75s forwards;
}
.home-content-tablecell .more {
  margin: 3rem 0 0 0;
}
.home-content-tablecell .more .button {
  border-color: #FFFFFF;
  color: #FFFFFF;
}

@keyframes heroTextIn {
  from {
    opacity: 0;
    transform: translateY(24px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (prefers-reduced-motion: reduce) {
  .fade-on-view {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  .home-content-tablecell h3,
  .home-content-tablecell h1 {
    animation: none;
    opacity: 1;
    transform: none;
  }
}

/* -------------------------------------------------------------------
 * fade-on-view (global appear animation for content blocks)
 * ------------------------------------------------------------------- */
.fade-on-view {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity 0.9s ease, transform 0.9s ease;
  will-change: opacity, transform;
}

.fade-on-view.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.no-js .fade-on-view {
  opacity: 1;
  transform: none;
}

/* home social-list */
.home-social-list {
  position: absolute;
  left: 48px;
  bottom: 54px;
  margin: 0;
  padding: 0;
  list-style: none;
  font-size: var(--fs-2xl);
  line-height: 1.75;
  text-align: center;
}
.home-social-list::before {
  display: block;
  content: "";
  width: 2px;
  height: 42px;
  background-color: rgba(255, 255, 255, 0.3);
  margin-left: auto;
  margin-right: auto;
  margin-bottom: 12px;
}
.home-social-list li {
  padding-left: 0;
}
.home-social-list li a, .home-social-list li a:visited {
  color: #FFFFFF;
}
.home-social-list li a:hover, 
.home-social-list li a:focus, 
.home-social-list li a:active {
  color: var(--color-text);
}

/* ------------------------------------------------------------------- 
 * responsive:
 * home section 
 * ------------------------------------------------------------------- */

@media only screen and (max-width: 1200px) {
  .home-content-tablecell h3 {
    font-size: 1.3125rem;
  }
  .home-content-tablecell h1 {
    font-size: 4.375rem;
  }
}
@media only screen and (max-width: 1024px) {
  .home-content-tablecell h3 {
    font-size: var(--fs-xl);
  }
  .home-content-tablecell h1 {
    font-size: 3.75rem;
  }
}
@media only screen and (max-width: 768px) {
  .home-content-tablecell .row {
    max-width: 600px;
  }
  .home-content-tablecell h3 {
    font-size: var(--fs-lg);
  }
  .home-content-tablecell h1 {
    font-size: 3.25rem;
  }
  .home-content-tablecell h1 br {
    display: block;
  }

  .home-social-list {
    left: 36px;
    bottom: 30px;
    font-size: 1.3125rem;
  }
  .home-social-list::before {
    height: 30px;
  }
}
/* Mobile: full width, tall container; video fills section so top/bottom touch section edges */
@media only screen and (max-width: 768px) {
  #home {
    height: 100svh;
    min-height: 100svh;
    background-color: #19191b;
  }
  #background-video {
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    min-width: 100%;
    min-height: 100%;
    transform: none;
    object-fit: cover;
    object-position: center top;
  }
}

@media only screen and (max-width: 600px) {
  .home-content-tablecell .row {
    max-width: 480px;
    padding-top: 7.5rem;
    padding-bottom: 7.5rem;
  }
  .home-content-tablecell h3 {
    font-size: 1.0625rem;
  }
  .home-content-tablecell h1 {
    font-size: 3rem;
  }
}
@media only screen and (max-width: 500px) {
  .home-content-tablecell .row {
    max-width: 420px;
  }
  .home-content-tablecell h3 {
    font-size: var(--fs-md);
  }
  .home-content-tablecell h1 {
    font-size: 2.625rem;
  }

  .home-social-list {
    left: 30px;
    bottom: 30px;
    font-size: var(--fs-lg);
  }
  .home-social-list::before {
    height: 24px;
  }
}
@media only screen and (max-width: 400px) {
  .home-content-tablecell .row {
    padding-top: 3rem;
    padding-bottom: 6.75rem;
  }
  .home-content-tablecell h3 {
    font-size: var(--fs-sm);
  }
  .home-content-tablecell h1 {
    font-size: 2.25rem;
  }
}

/* ===================================================================
 *  11. about - (_layout.scss)
 *
 * ------------------------------------------------------------------- */
#about {
  position: relative;
  padding: 2.625rem 0 3.5rem;
  background-color: #FFFFFF;
  text-align: center;
}
#about::after {
  content: "";
  display: block;
  width: 200px;
  height: 1px;
  margin: 0 auto;
  background-color: rgba(41, 41, 41, 0.15);
}
#about .about-wrap {
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 clamp(0.75rem, 4vw, 1.25rem);
}
#about span {
  color: #385c3e;
}
#about h3 {
  font-family: var(--font-sans);
  font-size: var(--fs-lg);
  font-weight: var(--font-weight-body);
  line-height: 1.6;
  color: var(--color-text);
  text-transform: none;
  position: relative;
}
#about h3::before {
  display: block;
  content: "";
  width: 3px;
  height: 6rem;
  background-color: var(--color-text);
  margin: 0 auto 1.5rem;
}
#about .lead {
  font-family: var(--font-display);
  font-size: var(--fs-display-lead);
  font-weight: var(--font-weight-display);
  line-height: 1.65;
  color: var(--color-text);
  margin-top: 3.75rem;
}

/* ------------------------------------------------------------------- 
 * responsive:
 * about 
 * ------------------------------------------------------------------- */
@media only screen and (max-width: 768px) {
  #about {
    padding: 2.5rem 0 2.75rem;
  }

  #about .lead {
    margin-top: 2.5rem;
    line-height: 1.55;
  }

  #about h3::before {
    height: 4rem;
    margin-bottom: 1.25rem;
  }
}

@media only screen and (max-width: 400px) {
  #about {
    padding: 2.25rem 0 2.5rem;
  }
}

/* ===================================================================
 *  12. services - (_layout.scss)
 *
 * ------------------------------------------------------------------- */
#services {
  background-color: #ffffff;
  background-image: none;
  min-height: 0;
  position: relative;
  padding: 3.5rem 0 5rem;
  color: var(--color-text);
}
#services .overlay,
#services .gradient-overlay {
  display: none;
}
#services .section-intro,
#services .services-content {
  position: relative;
  z-index: 1;
}
#services .section-intro h3 {
  color: var(--color-text);
}
#services .section-intro h1 {
  color: var(--color-text);
  font-size: var(--fs-section-title);
  font-weight: var(--font-weight-display);
}
#services .section-intro .lead {
  color: var(--color-text);
}
#services .section-intro.with-bottom-sep::after {
  background-color: rgba(41, 41, 41, 0.15);
}
#services .services-content {
  text-align: center;
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 clamp(0.75rem, 4vw, 1.25rem);
}
#services .services-list {
  margin-top: 0.75rem;
  text-align: center;
}
#services .services-list .service-item {
  margin-bottom: 1.875rem;
  padding: 0 50px;
}
#services .services-list .service-item p {
  color: var(--color-text);
}
#services .services-list .icon {
  display: inline-block;
  margin-bottom: 0.9375rem;
}
#services .services-list .icon i {
  font-size: 3.375rem;
  color: #385c3e;
}
#services .services-list .h05 {
  font-family: var(--font-sans);
  font-size: var(--fs-lg);
  font-weight: var(--font-weight-body);
  line-height: var(--lh-snug);
  color: var(--color-text);
  margin-bottom: 1.875rem;
  text-transform: none;
}

/* Legal pages (Impressum, etc.) – plain content, no background image */
.legal-page {
  position: relative;
  background-color: #ffffff;
  padding: calc(var(--header-height) + 3.75rem) 0 5rem;
  min-height: auto;
  color: var(--color-text);
}

.legal-page::before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: var(--header-height);
  background-color: #385c3e;
  z-index: 0;
}

.legal-page > .row {
  position: relative;
  z-index: 1;
}

.legal-page .fade-on-view {
  opacity: 1;
  transform: none;
}

.legal-page .section-intro {
  text-align: left;
}

.legal-page .section-intro.with-bottom-sep::after {
  background-color: rgba(21, 21, 21, 0.12);
}

.legal-page .section-intro h3 {
  color: #385c3e;
}

.legal-page .section-intro h4,
.legal-page .section-intro h5 {
  color: var(--color-text);
  margin-top: 1.875rem;
  margin-bottom: 0.625rem;
}

.legal-page .section-intro p {
  color: var(--color-text);
  margin-bottom: 1rem;
}

.legal-page .section-intro a,
.legal-page .section-intro a:visited {
  color: #385c3e;
  text-decoration: underline;
}

.legal-page .section-intro a:hover,
.legal-page .section-intro a:focus {
  color: #385c3e;
}

.legal-page #dr-privacynotice-div,
.legal-page #dr-privacynotice-div p,
.legal-page #dr-privacynotice-div li,
.legal-page #dr-privacynotice-div ul,
.legal-page .privacy-content,
.legal-page .privacy-content p,
.legal-page .privacy-content li,
.legal-page .privacy-content ul {
  color: var(--color-text);
  text-align: left;
}

.legal-page #dr-privacynotice-div h5,
.legal-page .privacy-content h5 {
  color: #385c3e;
  margin-top: 1.5rem;
  margin-bottom: 0.625rem;
}

.legal-page #dr-privacynotice-div a,
.legal-page #dr-privacynotice-div a:visited,
.legal-page .privacy-content a,
.legal-page .privacy-content a:visited {
  color: #385c3e;
  text-decoration: underline;
}

.legal-page #dr-privacynotice-div a:hover,
.legal-page #dr-privacynotice-div a:focus,
.legal-page .privacy-content a:hover,
.legal-page .privacy-content a:focus {
  color: #385c3e;
}

.legal-page .datenschutz-frame {
  display: block;
  width: 100%;
  min-height: 80vh;
  border: 0;
  background: #ffffff;
}

/* ------------------------------------------------------------------- 
 * responsive:
 * services
 * ------------------------------------------------------------------- */
@media only screen and (max-width: 1024px) {
  #services .services-list .service-item {
    padding: 0 40px;
  }
}
@media only screen and (max-width: 900px) {
  #services .services-list .service-item {
    padding: 0 30px;
  }
}
@media only screen and (max-width: 768px) {
  #services {
    padding: 2.75rem 0 3.5rem;
  }
  #services .services-list .service-item {
    padding: 0 15px;
  }
  #services .services-list .icon i {
    font-size: 3.1875rem;
  }
}
@media only screen and (max-width: 600px) {
  #services .services-list .service-item {
    padding: 0 10px;
  }
  #services .services-list .icon i {
    font-size: 3.125rem;
  }
}
@media only screen and (max-width: 400px) {
  #services .services-list .service-item {
    padding: 0;
  }
}

/* ===================================================================
 *  13. portfolio - (_layout.scss)
 *
 * ------------------------------------------------------------------- */
#portfolio {
  background: #FFFFFF;
  min-height: 800px;
  position: relative;
  padding: 0 0 10rem 0;
}
#portfolio .intro-wrap {
  padding: 9.375rem 0 13.125rem;
  background: #385c3e;
}
#portfolio .intro-wrap .row {
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 clamp(0.75rem, 4vw, 1.25rem);
}
#portfolio .section-intro h3 {
  color: rgba(242, 242, 242, 0.5);
}
#portfolio .section-intro h1 {
  color: #FFFFFF;
  font-size: var(--fs-section-title);
  font-weight: var(--font-weight-display);
}
#portfolio .section-intro .lead {
  color: #ffffff;
  font-size: var(--fs-lead-fluid);
  line-height: 1.75;
}
#portfolio .portfolio-content {
  margin-top: -13.875rem;
  max-width: min(94vw, 1500px);
  margin-left: auto;
  margin-right: auto;
  padding: 0 0.9375rem;
}
#portfolio .bricks-wrapper {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  box-shadow: 0 8px 24px rgba(15, 18, 21, 0.12);
}
#portfolio .bricks-wrapper:before,
#portfolio .bricks-wrapper:after {
  content: none;
  display: none;
}
#portfolio .bricks-wrapper .brick {
  float: none;
  width: auto;
  padding: 0;
  margin: 0;
  min-width: 0;
}
#portfolio .bricks-wrapper .brick:nth-child(3n+1) {
  clear: none;
}

#portfolio .bricks-wrapper .item-wrap {
  box-shadow: none;
}

/* ------------------------------------------------------------------- 
 * portfolio tiles — image with bottom white info panel on hover
 * ------------------------------------------------------------------- */
.bricks-wrapper .item-wrap {
  position: relative;
  overflow: hidden;
  aspect-ratio: 1;
  display: block;
}

.bricks-wrapper .item-wrap .overlay {
  display: block;
  position: absolute;
  inset: 0;
  cursor: pointer;
}
.bricks-wrapper .item-wrap .overlay img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  vertical-align: bottom;
}
.bricks-wrapper .item-wrap .overlay::before,
.bricks-wrapper .item-wrap .overlay::after {
  display: none;
}

/* Bottom 50% white panel with dark text */
.bricks-wrapper .item-wrap .item-text {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  top: auto;
  height: 50%;
  padding: 1.25rem 4.375rem 1.25rem 1.5rem;
  margin: 0;
  z-index: 3;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
  box-sizing: border-box;
  background: #FFFFFF;
  opacity: 0;
  transition: opacity 0.25s ease;
}
.bricks-wrapper .item-wrap .item-text .folio-types {
  font-family: var(--font-sans);
  font-size: var(--fs-xl); /* same as h3 */
  font-weight: var(--font-weight-medium);
  line-height: 1.5;
  text-transform: none;
  color: var(--color-text);
  display: block;
  margin-bottom: 0.5rem;
}
.bricks-wrapper .item-wrap .item-text .folio-title {
  color: var(--color-text);
  font-family: var(--font-sans);
  font-size: var(--fs-base);
  line-height: var(--lh-snug);
  margin: 0;
  font-weight: var(--font-weight-body);
}
.bricks-wrapper .item-wrap .details-link {
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: transparent;
  border: none;
  height: 4.5rem;
  width: 4.5rem;
  line-height: 1;
  color: var(--color-green);
  text-align: center;
  z-index: 4;
  border-radius: 0;
  position: absolute;
  bottom: 0;
  right: 0;
  top: auto;
  box-sizing: border-box;
  opacity: 0;
  transition: opacity 0.25s ease;
}
.bricks-wrapper .item-wrap .details-link i {
  font-size: 2.25rem;
  line-height: 1;
  display: inline-block;
  transform: rotate(-45deg) translateX(0);
  transition: transform 0.28s ease;
}
.bricks-wrapper .item-wrap:hover .details-link {
  opacity: 1;
  background-color: transparent;
  color: var(--color-green);
  border-color: transparent;
}
.bricks-wrapper .item-wrap .details-link:hover,
.bricks-wrapper .item-wrap .details-link:focus {
  background-color: transparent;
  color: var(--color-green);
  border-color: transparent;
}
.bricks-wrapper .item-wrap .details-link:hover i,
.bricks-wrapper .item-wrap .details-link:focus i {
  transform: rotate(-45deg) translateX(4px);
}

.bricks-wrapper .item-wrap:hover .item-text {
  opacity: 1;
}

/* ------------------------------------------------------------------- 
 * Light Gallery Overrides - (_layout.css) 
 * ------------------------------------------------------------------- */
.lg-sub-html {
  padding: 12px 20% 15px;
}
.lg-sub-html a, .lg-sub-html a:visited {
  color: #385c3e;
}
.lg-sub-html a:hover, .lg-sub-html a:focus {
  color: #FFFFFF;
}
@media only screen and (max-width: 1024px) {
  .lg-sub-html {
    padding: 12px 15% 15px;
  }
}
@media only screen and (max-width: 768px) {
  .lg-sub-html {
    padding: 12px 40px 15px;
  }
}

.lg-sub-html h4 {
  color: #FFFFFF;
  font-family: var(--font-sans);
  font-size: var(--fs-lg);
  line-height: 1.333;
}

.lg-sub-html p {
  font-family: var(--font-sans);
  font-size: var(--fs-xs);
  line-height: 1.5rem;
  margin: 0.375rem 0 0;
  color: rgba(255, 255, 255, 0.6);
}

.lg-outer .lg-thumb-item.active, .lg-outer .lg-thumb-item:hover {
  border-color: #385c3e;
}

.lg-progress-bar .lg-progress {
  background-color: #FFFFFF;
}

#lg-counter {
  font-family: var(--font-sans);
}

/* ------------------------------------------------------------------- 
 * responsive:
 * portfolio
 * ------------------------------------------------------------------- */
@media only screen and (max-width: 768px) {
  #portfolio .intro-wrap {
    padding: 7.5rem 0 13.125rem;
  }

  #portfolio .section-intro h1 {
    font-size: var(--fs-section-title);
    line-height: 1.375;
  }
}
@media only screen and (max-width: 768px) {
  #portfolio .bricks-wrapper {
    grid-template-columns: 1fr;
  }

  #portfolio .bricks-wrapper .brick {
    float: none;
    width: auto;
    clear: none;
  }
}

@media only screen and (max-width: 600px) {
  .bricks-wrapper .item-wrap .item-text .folio-title {
    font-size: var(--fs-sm);
    line-height: 1.4;
  }
}

/* ===================================================================
 *  14. jobs - (_layout.scss)
 *
 * ------------------------------------------------------------------- */
#jobs {
  background: #FFFFFF;
  padding: 0;
}

.jobs-header {
  --jobs-video-height: calc(50vw * 3 / 4);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  width: 100%;
  align-items: start;
}

.jobs-header-left {
  min-width: 0;
  height: var(--jobs-video-height);
  min-height: var(--jobs-video-height);
  background-color: #385c3e;
  color: #FFFFFF;
  padding: 0 clamp(1.875rem, 5vw, 3.75rem);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
}

.jobs-header-left h5 {
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  font-weight: var(--font-weight-body);
  text-transform: none;
  color: #FFFFFF;
  margin-bottom: 1.25rem;
}

.jobs-header-left h1 {
  font-family: var(--font-display);
  font-size: var(--fs-section-title);
  line-height: 1.375;
  font-weight: var(--font-weight-display);
  color: #FFFFFF;
  margin-bottom: clamp(1.25rem, 3.5vw, 2.5rem);
  text-wrap: balance;
}

.jobs-header-left .button,
.jobs-header-left a.button {
  align-self: flex-start;
  margin-bottom: 0;
}

.jobs-header-left .button:hover,
.jobs-header-left a.button:hover,
.jobs-header-left .button:focus,
.jobs-header-left a.button:focus {
  background: #ffffff !important;
  color: var(--color-text) !important;
  transform: translateY(-3px);
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.35);
}

.jobs-header-left .button:hover .ph,
.jobs-header-left a.button:hover .ph,
.jobs-header-left .button:focus .ph,
.jobs-header-left a.button:focus .ph {
  color: var(--color-green);
}

.jobs-header-left .jobs-secondary-link {
  margin-top: 0.625rem;
  margin-bottom: 0;
}

.jobs-header-left .jobs-secondary-link a {
  color: rgba(255, 255, 255, 0.9);
  text-decoration: underline;
}

.jobs-header-left .jobs-secondary-link a:hover,
.jobs-header-left .jobs-secondary-link a:focus {
  color: #ffffff;
}

.jobs-header-right {
  width: 100%;
  height: var(--jobs-video-height);
  background-color: #2d2d2d;
  position: relative;
  overflow: hidden;
  border-radius: var(--radius);
}

.jobs-header .video-container {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  min-height: 0;
}

.video-container video.jobs-header-video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
  pointer-events: none;
}

.video-container .jobs-video-autoplay {
  pointer-events: none;
  opacity: 0.5;
}

.play-button-overlay {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 80px;
  height: 80px;
  background-color: rgba(255, 255, 255, 0.2);
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 2;
  cursor: pointer;
}

.play-button-overlay .ph {
  color: #FFFFFF;
  width: 1.5rem;
  height: 1.5rem;
  font-size: var(--fs-2xl);
  margin-left: 4px;
}

.video-label {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background-color: rgba(45, 45, 45, 0.9);
  color: #FFFFFF;
  padding: 0.9375rem 1.25rem;
  font-family: var(--font-sans);
  font-size: 0.75rem;
  text-align: center;
  z-index: 3;
}

.jobs-content {
  padding: 5rem 0;
  background: #FFFFFF;
}

.jobs-content .section-intro {
  margin-bottom: 3.75rem;
}

.jobs-content .section-intro h1 {
  color: var(--color-text);
  font-size: var(--fs-section-title);
  font-weight: var(--font-weight-display);
}

.jobs-content .section-intro h3 {
  color: var(--color-text);
}

.jobs-content .section-intro p.lead {
  color: var(--color-text);
}

.jobs-content .section-intro.with-bottom-sep::after {
  background-color: rgba(41, 41, 41, 0.15);
}

.jobs-content .row {
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 1.25rem;
}

.jobs-column {
  text-align: center;
  padding: 0 1rem;
}

.jobs-column h3 {
  font-family: var(--font-display);
  font-weight: var(--font-weight-display);
  font-size: var(--fs-2xl);
  line-height: 1.5;
  text-transform: none;
  color: var(--color-text);
  margin: 0 0 0.75rem;
  min-height: 0;
  display: block;
}

.video-container-vertical {
  width: 100%;
  max-width: 300px;
  margin: 0 auto 2.5rem;
  position: relative;
  aspect-ratio: 9 / 16;
  background-color: #1a1a1a;
  border-radius: var(--radius);
  overflow: hidden;
}

.video-container-vertical video.jobs-column-video {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  cursor: pointer;
}

.video-container-vertical .play-button-overlay {
  width: 60px;
  height: 60px;
}

.video-container-vertical .play-button-overlay .ph {
  width: 1.125rem;
  height: 1.125rem;
  font-size: var(--fs-lg);
}

.video-container-vertical.video-playing .play-button-overlay {
  display: none;
}

.jobs-quote {
  margin: 0.5rem 0 1.875rem;
  padding: 0;
  border: none;
  text-align: center;
}

.jobs-quote p {
  font-family: var(--font-display);
  font-size: var(--fs-lg);
  font-weight: var(--font-weight-display);
  line-height: var(--lh-body);
  color: var(--color-text);
  font-style: normal;
  margin: 0;
  padding: 0 0.9375rem;
}

.jobs-quote::before {
  display: none;
}

.jobs-person {
  margin-top: 1.875rem;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.jobs-person img {
  width: 80px;
  height: 80px;
  border-radius: 50%;
  margin-bottom: 0.9375rem;
  object-fit: cover;
}

.jobs-person .person-info {
  font-family: var(--font-sans);
  font-size: var(--fs-base);
  color: var(--color-text);
  text-align: center;
  line-height: var(--lh-snug);
}

.jobs-person .person-info span {
  display: block;
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  color: #666666;
  margin-top: 0.125rem;
}

/* ------------------------------------------------------------------- 
 * responsive:
 * jobs section
 * ------------------------------------------------------------------- */
@media only screen and (max-width: 768px) {
  .jobs-header {
    display: flex;
    flex-direction: column;
  }

  .jobs-header-right {
    width: 100%;
    height: auto;
    min-height: 0;
    aspect-ratio: 4 / 3;
  }

  .jobs-header-left {
    height: auto;
    min-height: 0;
    padding: 2.5rem 1.25rem;
  }

  .jobs-header-left h1 {
    font-size: var(--fs-section-title);
    line-height: 1.375;
  }

  .jobs-content {
    padding: 3rem 0;
  }

  .jobs-content .section-intro {
    margin-bottom: 2.5rem;
  }

  .jobs-content .row {
    padding: 0 0.75rem;
  }

  .jobs-column {
    margin-bottom: 2.75rem;
    padding: 0 0.375rem;
  }

  .video-container-vertical {
    max-width: min(100%, 22.5rem);
    margin-bottom: 1.75rem;
  }

  .jobs-quote {
    margin-bottom: 1.5rem;
  }

  .jobs-quote p {
    font-size: var(--fs-xl);
    padding: 0 0.25rem;
  }
}

@media only screen and (max-width: 600px) {
  .jobs-header-left {
    padding: 2.25rem 1rem;
  }

  .jobs-content .row {
    padding: 0 0.5rem;
  }

  .jobs-column {
    padding: 0;
  }

  .video-container-vertical {
    max-width: min(100%, 24rem);
  }

  .jobs-quote p {
    font-size: var(--fs-lg);
    padding: 0;
  }
}

/* ===================================================================
 *  15. clients - (_layout.scss)
 *
 * ------------------------------------------------------------------- */
#clients {
  background-color: #e9eaea;
  padding: 3rem 0 3rem;
}
#clients .row {
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 1.25rem;
}
/* Simple flex layout: all three logos visible, centered, no carousel */
#clients .client-lists {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 1.5625rem 1.875rem;
  padding: 0 0.625rem;
}
#clients .client-lists > div {
  flex: 0 0 auto;
  display: flex;
  justify-content: center;
  align-items: center;
}
#clients .client-lists > div a {
  display: block;
  line-height: 0;
  opacity: 0.7;
  transform: scale(1);
  transform-origin: center center;
  transition: opacity 0.35s ease, transform 0.35s ease;
}
#clients .client-lists > div a:hover {
  opacity: 1;
  transform: scale(1.03);
}
#clients .client-lists > div img {
  width: clamp(90px, 18vw, 180px);
  height: auto;
  max-width: 100%;
  display: block;
}

@media only screen and (max-width: 768px) {
  #clients {
    padding: 1.875rem 0;
  }

  #clients .row {
    max-width: none;
    width: 100%;
    margin: 0;
    padding-left: 0;
    padding-right: 0;
  }

  #clients .col-twelve {
    padding-left: 0;
    padding-right: 0;
  }

  #clients .client-lists {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    align-items: center;
    gap: 0;
    width: 100%;
    padding: 0;
  }

  #clients .client-lists > div {
    flex: none;
    width: 100%;
    padding: 0.5rem clamp(0.375rem, 2vw, 0.75rem);
    box-sizing: border-box;
  }

  #clients .client-lists > div a {
    width: 100%;
  }

  #clients .client-lists > div img {
    width: 100%;
    max-width: 100%;
    height: auto;
    object-fit: contain;
  }
}

/* ===================================================================
 *  16. contact - (_layout.scss)
 *
 * ------------------------------------------------------------------- */
#contact {
  background-color: #ffffff;
  background-image: none;
  padding: 5rem 0 5rem;
  position: relative;
  color: var(--color-text);
}
#contact::before,
#contact::after {
  display: none;
}
#contact .overlay {
  display: none;
}
#contact .section-intro,
#contact .contact-content {
  position: relative;
  z-index: 2;
}
#contact .section-intro h1 {
  color: var(--color-text);
  font-size: var(--fs-section-title);
  font-weight: var(--font-weight-display);
}
#contact .section-intro h3 {
  color: rgba(41, 41, 41, 0.45);
}
#contact .section-intro p.lead {
  color: var(--color-text);
}
#contact .section-intro.with-bottom-sep::after {
  background-color: rgba(41, 41, 41, 0.15);
}

.contact-content {
  max-width: var(--content-width);
  margin: 1.875rem auto 0;
  padding: 0 1.25rem;
  color: var(--color-text);
  z-index: 600;
  position: relative;
}
.contact-content h5 {
  color: var(--color-text);
  font-size: var(--fs-base);
  font-weight: var(--font-weight-body);
  margin-bottom: 3.375rem;
  text-transform: none;
}
.contact-content h6 {
  color: var(--color-text);
  font-size: var(--fs-base);
  font-weight: var(--font-weight-body);
  text-transform: none;
  display: flex;
  align-items: center;
  gap: 0.625rem;
}

.contact-info .cinfo {
  margin-bottom: 2.625rem;
}

.contact-info .cinfo p {
  color: var(--color-text);
  font-size: var(--fs-base);
  font-weight: var(--font-weight-body);
  line-height: var(--lh-loose);
}

.contact-info .cinfo a,
.contact-info .cinfo a:visited {
  color: var(--color-text);
  text-decoration: none;
  position: relative;
  display: inline-block;
}

.contact-info .cinfo a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -0.125rem;
  height: 1px;
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.25s ease;
}

.contact-info .cinfo a:hover::after,
.contact-info .cinfo a:focus::after {
  transform: scaleX(1);
}

.contact-info .cinfo a:hover,
.contact-info .cinfo a:focus {
  color: #385c3e;
}

/* contact form */
#contact form {
  position: relative;
  margin-top: 0;
  margin-bottom: 1.875rem;
}
/* Honeypot: hidden from users, left for bots to fill */
#contact form .form-field.honeypot {
  position: absolute;
  left: -9999px;
  top: 0;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  margin: 0;
  padding: 0;
}
#contact form .form-field.honeypot label,
#contact form .form-field.honeypot input {
  position: absolute;
}
#contact form .form-field {
  position: relative;
}
#contact form .form-field:before, #contact form .form-field:after {
  content: "";
  display: table;
}
#contact form .form-field:after {
  clear: both;
}
#contact form .form-field label {
  font-family: var(--font-sans);
  font-weight: var(--font-weight-bold);
  font-size: 0.625rem;
  line-height: 1.4;
  position: absolute;
  bottom: 0.9375rem;
  right: 0;
  text-transform: uppercase;
  padding: 0.375rem 1.25rem 0.375rem 1.25rem;
  margin: 0;
  color: #ffffff;
  background:#385c3e;
  border-radius: 3px;
}
#contact form .form-field label::after {
  position: absolute;
  right: 15px;
  top: 1px;
  margin-top: -6px;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-bottom: 5px solid #385c3e;
  content: "";
}
#contact form ::-webkit-input-placeholder {
  color: #6f6f6f;
}
#contact form :-moz-placeholder {
  color: #6f6f6f;
  /* Firefox 18- */
}
#contact form ::-moz-placeholder {
  color: #6f6f6f;
  /* Firefox 19+ */
}
#contact form :-ms-input-placeholder {
  color: #6f6f6f;
}
#contact form .placeholder {
  color: #6f6f6f !important;
}

#contact input[type="text"],
#contact input[type="password"],
#contact input[type="email"],
#contact textarea {
  width: 100%;
  color: var(--color-text);
  font-size: var(--fs-base);
  line-height: var(--lh-snug);
  margin-bottom: 2.25rem;
  background: #f3f3f3;
  border-radius: var(--radius);
}

#contact input[type="text"]:focus,
#contact input[type="password"]:focus,
#contact input[type="email"]:focus {
  color: var(--color-text);
}

#contact textarea {
  min-height: 13.125rem;
  padding: 1.125rem 1.25rem;
}
#contact textarea:focus {
  color: var(--color-text);
}

#contact button.submitform {
  display: inline-flex;
  width: 100%;
  margin-top: 0.375rem;
  margin-right: 0;
  background: var(--color-green);
  color: #ffffff;
  transition:
    background-color 0.28s ease,
    color 0.28s ease,
    transform 0.28s ease,
    box-shadow 0.28s ease,
    opacity 0.2s ease;
}

#contact button.submitform .ph {
  color: #ffffff;
  width: 1.25em;
  height: 1.25em;
  font-size: 1em;
}

#contact button.submitform:disabled,
#contact button.submitform[aria-disabled="true"] {
  background: #c5c5c5;
  color: #f5f5f5;
  cursor: not-allowed;
  pointer-events: none;
  transform: none;
  box-shadow: none;
}

#contact button.submitform:disabled .ph,
#contact button.submitform[aria-disabled="true"] .ph {
  color: #f5f5f5;
}

#contact button.submitform:not(:disabled):hover,
#contact button.submitform:not(:disabled):focus {
  background: #2d4a32;
  color: #ffffff;
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(41, 41, 41, 0.22);
}

#contact button.submitform:not(:disabled):hover .ph,
#contact button.submitform:not(:disabled):focus .ph {
  color: #ffffff;
}

.form-required-note {
  margin: -1rem 0 1.5rem;
  font-size: var(--fs-sm);
  color: #6f6f6f;
}

.form-required-note span {
  color: var(--color-green);
  font-weight: var(--font-weight-bold);
}

#message-warning, #message-success {
  display: none;
  background: #f3f3f3;
  padding: 1.875rem;
  margin-bottom: 2.25rem;
  width: 100%;
}

#message-warning {
  color: #D32B2E;
}

#message-warning .ph {
  color: #D32B2E;
}

#message-success {
  color: #385c3e;
}

#message-warning i,
#message-success i {
  margin-right: 10px;
}

/* form loader */
#submit-loader {
  display: none;
  position: relative;
  left: 0;
  top: 1.125rem;
  width: 100%;
  text-align: center;
  margin-bottom: 2.625rem;
}
#submit-loader .text-loader {
  display: none;
  font-family: var(--font-sans);
  font-weight: var(--font-weight-bold);
  font-size: var(--fs-sm);
  color: var(--color-text);
  text-transform: uppercase;
}

.oldie #submit-loader .s-loader {
  display: none;
}
.oldie #submit-loader .text-loader {
  display: block;
}

/* --------------------------------------------------------------- 
 * loader animation - (_layout.scss)
 * --------------------------------------------------------------- */
.s-loader {
  margin: 0.75rem auto 1.875rem;
  width: 70px;
  text-align: center;
  -webkit-transform: translateX(0.28125rem);
  -ms-transform: translateX(0.28125rem);
  transform: translateX(0.28125rem);
}

.s-loader > div {
  width: 9px;
  height: 9px;
  background-color: var(--color-text);
  border-radius: 100%;
  display: inline-block;
  margin-right: 0.5625rem;
  -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;
  animation: sk-bouncedelay 1.4s infinite ease-in-out both;
}

.s-loader .bounce1 {
  -webkit-animation-delay: -0.32s;
  animation-delay: -0.32s;
}

.s-loader .bounce2 {
  -webkit-animation-delay: -0.16s;
  animation-delay: -0.16s;
}

@-webkit-keyframes sk-bouncedelay {
  0%, 80%, 100% {
    -webkit-transform: scale(0);
    -ms-transform: scale(0);
    transform: scale(0);
  }
  40% {
    -webkit-transform: scale(1);
    -ms-transform: scale(1);
    transform: scale(1);
  }
}
@keyframes sk-bouncedelay {
  0%, 80%, 100% {
    -webkit-transform: scale(0);
    -ms-transform: scale(0);
    transform: scale(0);
  }
  40% {
    -webkit-transform: scale(1);
    -ms-transform: scale(1);
    transform: scale(1);
  }
}
/* ------------------------------------------------------------------- 
 * responsive:
 * contact 
 * ------------------------------------------------------------------- */
@media only screen and (max-width: 900px) {
  .contact-info {
    width: 38%;
  }
}
@media only screen and (max-width: 768px) {
  .contact-content {
    max-width: 600px;
    text-align: left;
  }

  .contact-content h5 {
    margin-bottom: 1.75rem;
  }

  .contact-info {
    width: 100%;
    margin-top: 2.5rem;
    text-align: left;
  }

  /* Spacer used only to align with form heading on desktop */
  .contact-info > h5 {
    display: none;
  }

  .contact-info .cinfo {
    margin-bottom: 1.75rem;
  }

  .contact-info .cinfo:last-child {
    margin-bottom: 0;
  }

  .contact-info .cinfo h6 {
    justify-content: flex-start;
  }
}
@media only screen and (max-width: 600px) {
  .contact-content {
    max-width: none;
    padding-left: clamp(0.625rem, 3.5vw, 1rem);
    padding-right: clamp(0.625rem, 3.5vw, 1rem);
  }
}
@media only screen and (max-width: 400px) {
  .contact-info {
    width: 100% !important;
    float: none !important;
    clear: both !important;
    margin-left: 0;
    margin-right: 0;
    padding: 0;
  }
}

/* ===================================================================
 *  17. footer - (_layout.scss)
 *
 * ------------------------------------------------------------------- */
footer {
  margin: 0;
  padding: 6rem 0 0;
  font-size: var(--fs-base);
  color: var(--color-text);
  background-color: #ffffff;
  border-top: 0.5px solid rgba(41, 41, 41, 0.12);
}
footer a, footer a:visited {
  color: var(--color-text);
}
footer a:hover, footer a:focus {
  color: #385c3e;
}
footer .row {
  max-width: var(--content-width);
  margin: 0 auto;
  padding: 0 clamp(0.75rem, 4vw, 1.25rem);
}

footer .footer-logo {
  display: inline-block;
  width: var(--logo-dark-width);
  height: var(--logo-dark-height);
  margin-bottom: 1.25rem;
  padding-bottom: 0.25rem;
  box-sizing: content-box;
  line-height: 0;
}

footer .footer-logo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: left center;
}

footer .footer-about {
  max-width: 26.25rem;
  margin: 0 0 1.5rem;
  color: var(--color-text);
  font-size: var(--fs-base);
  font-weight: var(--font-weight-body);
  line-height: var(--lh-loose);
}

footer .footer-address {
  max-width: 26.25rem;
  margin: 0 0 1.5rem;
  color: var(--color-text);
  font-style: normal;
  font-size: var(--fs-base);
  font-weight: var(--font-weight-body);
  line-height: var(--lh-loose);
}

footer .footer-address a,
footer .footer-address a:visited {
  color: inherit;
  text-decoration: none;
  position: relative;
  display: inline-block;
}

footer .footer-address a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -0.125rem;
  height: 1px;
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.25s ease;
}

footer .footer-address a:hover::after,
footer .footer-address a:focus::after {
  transform: scaleX(1);
}

/* footer main
 * --------------------------------- */
.footer-main {
  padding-bottom: 1.875rem;
}

.footer-top {
  margin-bottom: 1.25rem;
  text-align: left;
}

.footer-grid {
  text-align: left;
  align-items: flex-start;
}

.footer-about-col,
.footer-links-col {
  margin-bottom: 1.5rem;
}

.footer-links-col .list-links {
  font-size: var(--fs-base);
}

.footer-social-list {
  display: flex;
  flex-wrap: wrap;
  gap: 1.125rem 1.5rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

.footer-social-list li {
  padding: 0;
  margin: 0;
}

.footer-main .footer-social-list a {
  display: inline-flex;
  align-items: center;
  gap: 0.625rem;
  color: var(--color-text);
  text-decoration: none;
  position: relative;
  font-size: var(--fs-base);
  font-weight: var(--font-weight-body);
}

.footer-main .footer-social-list a .ph {
  line-height: 1;
  flex-shrink: 0;
}

.footer-main .footer-social-list a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -0.125rem;
  height: 1px;
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.25s ease;
}

.footer-main .footer-social-list a:hover::after,
.footer-main .footer-social-list a:focus::after {
  transform: scaleX(1);
}

.footer-main .footer-social-list a:hover,
.footer-main .footer-social-list a:focus {
  color: #385c3e;
}

.footer-main ul {
  font-size: var(--fs-base);
  margin: 0;
  padding: 0;
}
.footer-main ul li {
  list-style: none;
  padding-left: 0;
  margin-bottom: 0.75rem;
}
.footer-main ul li:last-child {
  margin-bottom: 0;
}
.footer-main ul a,
.footer-main ul a:visited {
  color: var(--color-text);
  text-decoration: none;
  position: relative;
  display: inline-block;
  font-weight: var(--font-weight-body);
}
.footer-main ul a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -0.125rem;
  height: 1px;
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.25s ease;
}
.footer-main ul a:hover::after,
.footer-main ul a:focus::after {
  transform: scaleX(1);
}
.footer-main ul a:hover,
.footer-main ul a:focus {
  color: #385c3e;
}

/* footer bottom
 * --------------------------------- */
.footer-bottom {
  margin-top: 1.875rem;
  padding: 1.25rem 0;
  font-family: var(--font-sans);
  font-size: var(--fs-base);
  font-weight: var(--font-weight-body);
  color: #ffffff;
  background-color: var(--color-green);
}

.footer-bottom-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem 1.5rem;
  flex-wrap: wrap;
}

.footer-legal {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem 1.25rem;
}

.footer-legal a,
.footer-legal a:visited {
  color: #ffffff;
  text-decoration: none;
  position: relative;
  display: inline-block;
}

.footer-legal a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -0.125rem;
  height: 1px;
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.25s ease;
}

.footer-legal a:hover::after,
.footer-legal a:focus::after {
  transform: scaleX(1);
}

.footer-legal a:hover,
.footer-legal a:focus {
  color: #ffffff;
}

.footer-bottom .copyright {
  margin: 0;
  margin-left: auto;
  text-align: right;
  color: #ffffff;
}

.footer-bottom .copyright span {
  display: inline-block;
  color: #ffffff;
}

/* ------------------------------------------------------------------- 
 * responsive:
 * footer
 * ------------------------------------------------------------------- */
@media only screen and (max-width: 768px) {
  /* Tighter contact-to-footer transition on mobile */
  #contact {
    padding-bottom: 3.125rem;
  }

  footer {
    padding-top: 2.5rem;
    margin-bottom: 0;
    padding-bottom: 0;
  }

  footer .row {
    max-width: none;
    padding-left: clamp(0.625rem, 3.5vw, 1rem);
    padding-right: clamp(0.625rem, 3.5vw, 1rem);
  }

  .footer-main {
    padding-bottom: 1.25rem;
  }

  .footer-top {
    margin-bottom: 1rem;
  }

  .footer-about-col,
  .footer-links-col {
    margin-bottom: 1.25rem;
  }

  .footer-links-col .list-links {
    font-size: var(--fs-base);
  }

  footer .footer-address {
    font-size: var(--fs-base);
  }

  .footer-bottom {
    margin-top: 1.25rem;
    padding: 1.25rem 0;
  }

  .footer-bottom .row {
    padding-left: clamp(0.625rem, 3.5vw, 1rem);
    padding-right: clamp(0.625rem, 3.5vw, 1rem);
  }
}
@media only screen and (max-width: 600px) {
  #contact {
    padding-bottom: 2.5rem;
  }

  footer .row {
    padding-left: clamp(0.75rem, 4vw, 1rem);
    padding-right: clamp(0.75rem, 4vw, 1rem);
  }

  .footer-bottom {
    padding: 1.375rem 0 calc(1.375rem + env(safe-area-inset-bottom, 0px));
  }

  .footer-bottom-inner {
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1.125rem;
    text-align: center;
  }

  .footer-legal {
    justify-content: center;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
  }

  .footer-bottom .copyright {
    margin-left: 0;
    text-align: center;
    width: 100%;
    padding-top: 1rem;
    border-top: 1px solid rgba(255, 255, 255, 0.22);
  }
}
