/* Accessible static replacements; load after the original Greenskies styles. */
html { scroll-behavior: smooth; }
[id] { scroll-margin-top: 110px; }
[hidden] { display: none !important; }
img { max-width: 100%; }
button, a { -webkit-tap-highlight-color: transparent; }
button { font: inherit; }
a:focus-visible, button:focus-visible, [tabindex]:focus-visible {
  outline: 3px solid #1776ad;
  outline-offset: 4px;
}
.static-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}
.static-skip-link {
  position: fixed;
  z-index: 100010;
  top: 8px;
  left: 8px;
  padding: 12px 18px;
  color: #fff;
  background: #35454e;
  transform: translateY(-160%);
}
.static-skip-link:focus { transform: translateY(0); color: #fff; }

/* Menus preserve landing-page links while exposing submenus to keyboards. */
.gs-header { width: 100%; }
body:not(.page-home) header .navbar-fixed-top { background-color: #fff; }
.main-nav ul > li:focus-within > ul { display: block; }
.main-nav ul > li.static-submenu-dismissed > ul { display: none; }
.main-nav > div > ul > li:last-child > ul { right: 0; }
.static-menu-toggle, .static-menu-close {
  border: 0;
  background: transparent;
  color: inherit;
  cursor: pointer;
  padding: 0;
  width: 48px;
  height: 48px;
  font: 34px/1 Arial, sans-serif;
}
.static-menu-close { display: block; margin: 14px 12px 8px auto; color: #fff; }
.static-menu-backdrop {
  position: fixed;
  inset: 0;
  z-index: 10000;
  background: rgba(16, 30, 36, .58);
}
.static-menu-is-open, .static-dialog-open { overflow: hidden; }
.js-enhanced .cbp-spmenu {
  position: fixed;
  z-index: 10001;
  inset: 0 0 0 auto;
  width: min(86vw, 360px);
  height: 100%;
  height: 100dvh;
  overflow: auto;
  overscroll-behavior: contain;
  transform: translateX(100%);
  visibility: hidden;
  transition: transform .25s ease, visibility .25s;
}
.js-enhanced .cbp-spmenu.static-menu-open { transform: translateX(0); visibility: visible; }
.cbp-spmenu a:focus-visible, .cbp-spmenu button:focus-visible { outline-color: #b8e582; }
.cbp-spmenu > ul { padding: 0 24px 30px; }
.cbp-spmenu > ul > li > a { padding-top: 14px; padding-bottom: 14px; }
.mobile-header .menu-button { cursor: default; }
.mobile-header .menu-button.active { padding-right: 0; }
.mobile-header .menu-button.active img { margin-left: 0; }

/* Slides remain ordinary content when JavaScript is unavailable. */
.static-carousel { position: relative; }
.static-carousel-viewport { position: relative; width: 100%; }
.static-carousel-slide { width: 100%; }
.static-carousel-slide[hidden] { display: none !important; }
/* Stacking keeps the hero height steady as its text moves horizontally. */
.static-carousel-sliding .static-carousel-viewport { display: grid; overflow: hidden; touch-action: pan-y; }
.static-carousel-sliding .static-carousel-slide {
  grid-area: 1 / 1;
  min-width: 0;
  visibility: hidden;
  pointer-events: none;
}
.static-carousel-sliding .static-current,
.static-carousel-sliding .static-outgoing { visibility: visible; }
.static-carousel-sliding .static-current { pointer-events: auto; }
.static-carousel-controls {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 6px;
  margin: 20px auto 0;
  color: #567c26;
}
.static-carousel-controls button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 0;
  background: transparent;
  color: inherit;
  padding: 0;
  min-width: 40px;
  min-height: 40px;
  cursor: pointer;
}
.static-carousel-dots { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; }
.static-carousel-dot::before {
  content: '';
  display: block;
  width: 12px;
  height: 12px;
  border: 1px solid currentColor;
  border-radius: 50%;
  background: currentColor;
}
.static-carousel-dot[aria-current="true"]::before { background: transparent; }
.home-banner .static-carousel-controls,
.home-news-slider .static-carousel-controls,
.home-testimonials-list .static-carousel-controls { color: #fff; }
.home-banner .static-carousel-controls { margin-top: 30px; }
.home-banner .static-carousel-controls button:focus-visible,
.home-news-slider .static-carousel-controls button:focus-visible,
.home-testimonials-list .static-carousel-controls button:focus-visible { outline-color: #fff; }
.home-banner .slides:not(.static-carousel) > .slide-item ~ .slide-item { display: none; }
.home-banner .slide-inner-content { position: relative; top: auto; transform: none; }
.home-banner { background: #344c5c; }
.home-banner > video, .home-banner > .static-hero-image {
  display: block;
  width: 100%;
  min-height: 580px;
  max-height: 1080px;
  object-fit: cover;
  aspect-ratio: 16 / 9;
}
.home-banner .slide-inner-content p { text-wrap: pretty; }
.home-news-slider {
  height: auto !important;
  min-height: 434px;
  padding-bottom: 28px;
  background-size: cover;
}
.home-news-slider .static-carousel-controls { margin-top: 8px; }
.home-news-slider .slide-inner-content p:last-child { margin-bottom: 0; }
.home-testimonials-list { height: auto; min-height: 443px; background-color: #88c03e; }
.home-testimonials-list > .container { padding-bottom: 30px; }
.home-testimonials-list h2 { margin-bottom: 45px; }
.home-testimonials-list .static-carousel-controls { margin-top: 14px; }
.home-testimonials-list .slide-inner-content { width: 75%; }
.page-carousel .static-carousel-slide img { display: block; max-width: 100%; height: auto; margin: auto; }
.home-video iframe, iframe[src*="player.vimeo.com"], iframe[src*="youtube.com/embed"] {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
}
.static-enquiry { padding: 24px 0; border-top: 2px solid #88c03e; }
.static-enquiry p { max-width: 50em; }
.static-enquiry a { overflow-wrap: anywhere; }
.static-enquiry .btn, .static-enquiry .callout-button { margin: 4px 10px 4px 0; }
.static-enquiry a.btn-primary {
  color: #fff !important;
  background: #477324;
  border-color: #477324;
  white-space: normal;
  max-width: 100%;
}
.static-enquiry a.btn-primary:hover { background: #35591a; border-color: #35591a; }
.static-directions { padding: 25px 30px; margin: 24px 0; border-left: 4px solid #88c03e; background: #f2f5ee; }
.static-directions h2 { margin-top: 0; }
.static-directions a { color: #547c27; text-decoration: underline; }
.static-directions p:last-child { margin-bottom: 0; }

/* Native disclosure controls replace the old jQuery accordion. */
.accordion-button {
  display: block;
  width: 100%;
  text-align: left;
  border: 0;
  cursor: pointer;
}
.js-enhanced .accordion-button { position: relative; padding-right: 42px !important; }
.js-enhanced .accordion-button::after {
  content: '+';
  position: absolute;
  right: 15px;
  top: 50%;
  transform: translateY(-50%);
  font: 24px/1 Arial, sans-serif;
}
.js-enhanced .accordion-button[aria-expanded="true"]::after { content: '−'; }
.accordion-content:not([hidden]), .static-collapse:not([hidden]) { display: block !important; }
html:not(.js-enhanced) .collapse, html:not(.js-enhanced) .accordion-content { display: block !important; height: auto !important; }

/* The project gallery uses the browser's accessible modal dialog. */
.static-gallery-dialog {
  border: 0;
  border-radius: 0;
  background: #18242b;
  color: #fff;
  padding: 52px 24px 18px;
  width: min(1200px, 96vw);
  max-width: 96vw;
  max-height: 94vh;
  max-height: 94dvh;
  overflow: auto;
}
.static-gallery-dialog::backdrop { background: rgba(0, 0, 0, .86); }
.static-gallery-dialog figure { margin: 0; text-align: center; }
.static-gallery-dialog figure img {
  display: block;
  max-width: 100%;
  max-height: 70vh;
  max-height: 70dvh;
  width: auto;
  height: auto;
  margin: 0 auto;
  object-fit: contain;
}
.static-gallery-dialog figcaption { padding: 16px 16px 0; line-height: 1.5; font-size: 16px; }
.static-gallery-close, .static-gallery-arrow {
  min-width: 44px;
  min-height: 44px;
  border: 0;
  background: transparent;
  color: #fff;
  cursor: pointer;
  font: 36px/1 Arial, sans-serif;
}
.static-gallery-close { position: absolute; top: 4px; right: 8px; }
.static-gallery-controls { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 8px; }
.static-gallery-original { color: #b8e582; font-size: 13px; }
.static-gallery-original:hover { color: #fff; }
.static-gallery-dialog :focus-visible { outline-color: #b8e582; }
.static-gallery-error { padding: 40px 20px; }
.touchgallery-thumbs .tg-link:focus-visible { z-index: 1; outline-offset: -4px; }

/* Older team blocks stay readable without JavaScript. */
html:not(.js-enhanced) .team-list .team-item .team-item-overlay {
  position: relative;
  visibility: visible;
  left: auto;
  height: auto;
  background-color: #608d2c;
}
html:not(.js-enhanced) .team-close { display: none; }
.js-enhanced .team-list .team-item .team-item-overlay:not([hidden]) {
  visibility: visible;
  inset: 0;
  height: 100%;
  overflow-y: auto;
  background-color: #608d2c;
}
.team-view-container a:hover img, .team-view-container a:focus-visible img { opacity: 1 !important; }

@media (min-width: 992px) {
  html:not(.js-enhanced) .cbp-spmenu { display: none; }
}
@media (max-width: 991px) {
  .mobile-header .menu-button { display: flex; align-items: center; justify-content: space-between; padding-top: 10px; padding-bottom: 10px; }
  .mobile-header .menu-button > a { flex: 1; text-align: left; line-height: 1; }
  .mobile-header .menu-button img { float: none; display: block !important; width: 215px; max-width: 70% !important; height: auto; }
  .static-menu-toggle { flex: 0 0 48px; }
  html:not(.js-enhanced) .cbp-spmenu {
    position: relative;
    inset: auto;
    width: 100%;
    height: auto;
    margin-top: 90px;
  }
  html:not(.js-enhanced) #mobile-menu-trigger > .fa { display: none; }
  .home-banner .slide-inner-content p { width: 80% !important; }
  .home-banner h1 { font-size: 34px; }
}
@media (max-width: 767px) {
  .home-banner > video, .home-banner > .static-hero-image { min-height: 620px; height: 620px !important; }
  .home-banner .slider { top: 25% !important; }
  .home-banner .slide-inner-content { top: auto; padding: 0 20px; }
  .home-banner h1 { font-size: clamp(25px, 6vw, 34px); line-height: 1.2; }
  .home-banner .slide-inner-content p { display: block; width: 100% !important; font-size: 16px; line-height: 1.6; margin-bottom: 22px; }
  .home-banner .callout-button { padding: 7px 16px; font-size: 11px; line-height: 1.8; }
  .home-banner .static-carousel-controls { margin-top: 8px; }
  .static-carousel-controls { gap: 0; }
  .static-carousel-controls button { min-width: 36px; min-height: 42px; }
  .static-carousel-dot::before { width: 10px; height: 10px; }
  .home-news-slider { min-height: 0; background-attachment: scroll !important; }
  .home-news-slider h2 { padding-top: 35px; }
  .home-news-slider .slide-inner-content { width: 100%; }
  .home-testimonials-list > .container { min-height: 0; background-attachment: scroll; }
  .home-testimonials-list h2 { margin-bottom: 26px; }
  .home-testimonials-list .slide-inner-content { width: 90%; }
  .home-testimonials-list .slide-inner-content p { font-size: 19px; line-height: 1.6; }
  .static-gallery-dialog { padding: 50px 10px 14px; }
  .static-gallery-dialog figcaption { padding: 14px 4px 0; font-size: 14px; }
  .static-gallery-controls { flex-wrap: wrap; gap: 10px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .home-news-slider, .home-testimonials-list > .container { background-attachment: scroll !important; }
}
@media print {
  .gs-header, .cbp-spmenu, .static-carousel-controls, .static-menu-backdrop, .static-gallery-dialog { display: none !important; }
  .static-carousel-slide[hidden], .accordion-content[hidden], .static-collapse[hidden] { display: block !important; }
  .static-carousel-sliding .static-carousel-viewport { display: block; overflow: visible; }
  .static-carousel-sliding .static-carousel-slide { visibility: visible; transform: none !important; }
  .home-banner .slider { position: static !important; }
  .home-banner { background: #fff; }
  .home-banner video { display: none; }
  .home-banner h1, .home-banner .slide-inner-content p { color: #000; }
}
