/* GANTRY5 DEVELOPMENT MODE ENABLED.
 *
 * WARNING: This file is automatically generated by Gantry5. Any modifications to this file will be lost!
 *
 * For more information on modifying CSS, please read:
 *
 * http://docs.gantry.org/gantry5/configure/styles
 * http://docs.gantry.org/gantry5/tutorials/adding-a-custom-style-sheet
 */

@charset "UTF-8";
/* Regen Environmental Management — brand-only refinements.
 * Deliberately MINIMAL — everything structural should live in the Gantry
 * outline (positions, particles, section attributes) so Kim can edit visually.
 * If a change to this file affects layout or visibility of positions/particles,
 * it's in the wrong file — put it in the Gantry outline instead.
 */
/* Google Fonts — Libre Baskerville (display serif) + Cabin (body sans).
 * From Kim's design system (subs for licensed Baskerville MT Std + Gill Sans MT Pro). */
@import url("https://fonts.googleapis.com/css2?family=Cabin:wght@400;500;600;700&family=Libre+Baskerville:wght@400;700&display=swap");
:root {
  /* ==============================================================
   * DESIGN TOKENS — from Kim's Claude Design deliverable (2026-07)
   * Palette · Typography · Spacing · Radii · Shadows · Motion
   * ============================================================== */
  /* Palette */
  --re-deep-green: #3C4D3F;
  --re-dark:       #596e5c;
  --re-light:      #a1b0a8;
  --re-cream:      #E9E2CF;
  --re-magenta:    #ab268c;
  --re-ink:        #2C332D;
  /* alias kept for backwards-compat with earlier custom rules */
  --re-green:      #596e5c;
  /* Dark-green tint scale */
  --re-dark-100: rgba(89, 110, 92, 1);
  --re-dark-80:  rgba(89, 110, 92, 0.8);
  --re-dark-60:  rgba(89, 110, 92, 0.6);
  --re-dark-40:  rgba(89, 110, 92, 0.4);
  --re-dark-20:  rgba(89, 110, 92, 0.2);
  --re-dark-120: #46584a;
  /* 120% darker, hover/press */
  /* Magenta tints */
  --re-magenta-120: #8a1e72;
  --re-magenta-20:  rgba(171, 38, 140, 0.2);
  /* Typography */
  --font-display: "Libre Baskerville", "Baskerville", "Times New Roman", Georgia, serif;
  --font-body:    "Cabin", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  /* Type scale (Kim: display-xl 60 → caption 12; body 16/1.6) */
  --fs-display-xl: 3.75rem;
  /* 60px */
  --fs-display-lg: 3rem;
  /* 48px */
  --fs-display-md: 2.25rem;
  /* 36px */
  --fs-display-sm: 1.875rem;
  /* 30px */
  --fs-h1: 1.75rem;
  /* 28px */
  --fs-h2: 1.5rem;
  /* 24px */
  --fs-h3: 1.25rem;
  /* 20px */
  --fs-body: 1rem;
  /* 16px */
  --fs-small: 0.875rem;
  /* 14px */
  --fs-caption: 0.75rem;
  /* 12px */
  --lh-body: 1.6;
  --lh-heading: 1.15;
  /* Spacing — 4px base */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 3rem;
  --space-8: 4rem;
  --space-9: 6rem;
  /* 96px */
  --band-padding-y: 5.25rem;
  /* ~84px — Kim's "generous marketing rhythm" */
  /* Layout */
  --container-lg: 75rem;
  /* 1200px */
  --container-md: 60rem;
  --gutter: 2rem;
  /* 32px */
  /* Radii */
  --radius-sm: 6px;
  /* small chips */
  --radius-md: 10px;
  /* inputs, buttons */
  --radius-lg: 16px;
  /* cards */
  --radius-pill: 999px;
  /* pill buttons + badges */
  /* Borders + surfaces */
  --border-default: #d9d5c6;
  /* warm hairline from cream */
  --border-strong:  var(--re-light);
  --surface-warm:   #fdfcf7;
  /* off-cream white */
  /* Shadows — tinted with ink-green, not pure black */
  --shadow-sm:   0 1px 2px rgba(60, 77, 63, 0.06), 0 1px 3px rgba(60, 77, 63, 0.08);
  --shadow-md:   0 4px 6px rgba(60, 77, 63, 0.07), 0 2px 4px rgba(60, 77, 63, 0.06);
  --shadow-lg:   0 10px 20px rgba(60, 77, 63, 0.10), 0 3px 6px rgba(60, 77, 63, 0.08);
  --shadow-focus:0 0 0 3px var(--re-magenta-20);
  /* Motion */
  --ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-out:      cubic-bezier(0, 0, 0.2, 1);
  --dur-fast: 120ms;
  --dur-med:  240ms;
  --dur-slow: 360ms;
}
/* Hide Joomla's article-view chrome (metadata + page-header + item-title +
 * prev/next). All our page titles come from Gantry particles now, so the
 * built-in Joomla view chrome is duplicative everywhere. */
.item-page dl.article-info, .blog-item dl.article-info, .blog-featured dl.article-info, dl.article-info, .item-page > .page-header, .blog-featured > .page-header, .blog-featured .item-title, .blog-item .item-title, ul.pagination-prev-next, ul.pagenav {
  display: none !important;
}
/* On the Home menu item, hide the whole (now empty) blog-featured container so
 * no cream card intrudes between service tiles and Why Regen band. */
.itemid-101 .blog-featured, .itemid-101 #g-container-main {
  display: none !important;
}
/* Suppress the RocketTheme LLC copyright text on the right of the copyright
 * bar. Left copyright is set via the Gantry Copyright particle. */
.g-copyright > *:nth-child(2) {
  visibility: hidden;
}
/* Article link colour — brand magenta */
.item-page a, .blog-item a, .blog-featured a {
  color: var(--re-magenta);
}
.item-page a:hover, .blog-item a:hover, .blog-featured a:hover {
  color: var(--re-green);
}
/* Nav item tone — uppercase + spacing matches brand */
.g-toplevel .g-menu-item-title {
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-size: 0.9rem;
}
/* ------ Smooth scroll + scroll animations ------
 * html gets browser smooth-scroll (anchor navigation eases). AOS atom loads
 * the animation library separately; users on 'prefers-reduced-motion' get
 * instant reveals per their OS setting. */
html {
  scroll-behavior: smooth;
}
@media (prefers-reduced-motion: reduce) {
  html {
    scroll-behavior: auto;
  }
  [data-aos] {
    animation: none !important;
    transition: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}
/* The AOS init particle sits in /top/ — its wrapper takes ~15-30px of layout
 * even though the content is just <script>/<link> tags. Hide the wrapper so
 * scripts still execute (browsers run script tags inside display:none) but
 * no space is used. */
.g-aos-init, #custom-9999-particle, [id*="custom-9999-particle"] {
  display: none !important;
}
/* ------ Section headline sizing ------
 * Requiem's promocontent "superpromo" style renders at 96px which is oversized
 * for our interior pages. Half at 48px reads better against the paidrone-style
 * cinema aesthetic. Scoped to the class so Kim can restore by removing it. */
.g-promocontent .g-superpromo, h2.g-superpromo {
  font-size: 3rem !important;
  /* was 6rem (96px) — halved to 48px */
  line-height: 1.15 !important;
  letter-spacing: 0.08em;
  margin: 0.6em 0 !important;
}
/* ------ Social icon colour ------
 * Requiem defaults socials to the accent colour (Kim's magenta) which reads too
 * loud on the hero overlay. Cream on all pages, magenta on hover — matches
 * the nav text pairing. Kim can override by editing the social particle CSS
 * class or the accent styles.yaml value. */
.g-social a, .g-social a i, .g-social .g-social-item, .g-social .fa, #g-navigation .g-social a i, #g-footer .g-social a i {
  color: #E9E2CF !important;
}
.g-social a:hover, .g-social a:hover i, .g-social a:hover .fa {
  color: #ab268c !important;
}
/* ------ Featured Projects section (Home) — breathing room ------
 * Requiem's g-flushed removes the container max-width for the full-bleed
 * dark band effect, but the tiles inside end up flush to the viewport edge.
 * Add horizontal padding inside the flushed .g-projects-band so tiles have
 * space to breathe, plus generous vertical padding for the whole section. */
#g-extension.g-projects-band > .g-container {
  padding: 5rem 4rem !important;
  max-width: 90rem;
  margin: 0 auto !important;
}
@media (max-width: 60rem) {
  #g-extension.g-projects-band > .g-container {
    padding: 3.5rem 1.5rem !important;
  }
}
/* Grid tiles: a bit more gap between them */
#g-extension.g-projects-band .g-gridpromogallery {
  gap: 1.5rem;
}
/* Same treatment for the services band on Home for consistency */
#g-feature.g-services-band > .g-container {
  padding: 5rem 4rem !important;
  max-width: 90rem;
  margin: 0 auto !important;
}
@media (max-width: 60rem) {
  #g-feature.g-services-band > .g-container {
    padding: 3.5rem 1.5rem !important;
  }
}
/* ------ Footer + acknowledgement tightening ------
 * Requiem's default g-content padding is 15px inside each footer/bottom block.
 * Tighten to ~4-6px vertical so the bands read more compactly. */
#g-footer .g-content, #g-bottom .g-content, #g-copyright .g-content {
  padding-top: 0.35rem !important;
  padding-bottom: 0.35rem !important;
}
#g-bottom > .g-container, #g-footer > .g-container {
  padding-top: 1.5rem !important;
  padding-bottom: 1.5rem !important;
}
/* Acknowledgement heading + description look softer */
#blockcontent-7500-particle h2, .g-acknowledgement h2 {
  font-size: 1rem !important;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.85;
  margin-bottom: 0.6rem !important;
}
#blockcontent-7500-particle p, .g-acknowledgement p {
  font-size: 0.88rem;
  line-height: 1.55;
  max-width: 60rem;
  margin: 0 auto;
}
/* Full-bleed hero-header — for sections tagged with class g-hero-header in
 * Gantry admin. Kim can toggle by editing the section's CSS Classes field.
 * Uses Requiem's shipped .g-home layout preset to overlay nav on the hero. */
#g-header.g-hero-header > .g-container {
  max-width: none !important;
  padding: 0 !important;
}
#g-header.g-hero-header .g-block {
  padding: 0 !important;
}
#g-header.g-hero-header video {
  width: 100%;
  height: auto;
  display: block;
}
/* Hide the play/pause overlay Requiem's video particle adds — Kim can toggle
 * by removing the g-home-hero-video class from the particle's CSS Classes field. */
.g-home-hero-video .g-videolocal-play {
  display: none !important;
}
.g-home-hero-video video {
  pointer-events: none;
}
/* ============================================================
 * Interior-page hero image
 * Applied to sections tagged with g-hero-image (header section CSS class).
 * Half the height of the video hero (50vh). Kim can toggle by removing
 * the g-hero-image class from the section in Gantry admin.
 * ============================================================ */
#g-header.g-hero-image {
  height: 50vh;
  max-height: 50vh;
  overflow: hidden;
  position: relative;
}
#g-header.g-hero-image .g-container, #g-header.g-hero-image .g-grid, #g-header.g-hero-image .g-block, #g-header.g-hero-image .g-content, #g-header.g-hero-image .g-promoimage, #g-header.g-hero-image .g-promoimage-effect {
  height: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
}
#g-header.g-hero-image .g-promoimage-effect {
  position: relative;
  display: block;
  overflow: hidden;
}
#g-header.g-hero-image .g-promoimage-effect {
  background: transparent !important;
}
#g-header.g-hero-image .g-promoimage-effect img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  margin: 0;
  opacity: 1 !important;
}
/* Kill the icon button (magenta dot) + hover overlays — hero isn't clickable */
#g-header.g-hero-image .g-promoimage-iconbutton, #g-header.g-hero-image .g-promoimage-icon, #g-header.g-hero-image .g-promoimage-content-icons {
  display: none !important;
}
/* Kill the fog/hover-darken effect Requiem's promoimage adds */
#g-header.g-hero-image .g-promoimage-effect:before, #g-header.g-hero-image .g-promoimage-effect:after, #g-header.g-hero-image .g-promoimage:before, #g-header.g-hero-image .g-promoimage:after {
  display: none !important;
  content: none !important;
}
#g-header.g-hero-image .g-promoimage:hover, #g-header.g-hero-image .g-promoimage:hover img, #g-header.g-hero-image .g-promoimage-effect:hover img {
  opacity: 1 !important;
  filter: none !important;
  transform: none !important;
  transition: none !important;
}
/* Hide the h2 particle-title Gantry auto-inserts */
#g-header.g-hero-image .g-content > h2.g-title {
  display: none;
}
/* Position the title + description overlaid centre. Requiem's stock CSS
 * gives .g-promoimage-caption a content-height (only ~56px) and a translate
 * transform. Override with full-size positioning so our % top values resolve
 * against the full 50vh hero. */
#g-header.g-hero-image .g-promoimage-caption {
  position: absolute !important;
  top: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
  transform: none !important;
  z-index: 3;
  pointer-events: none;
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
}
#g-header.g-hero-image .g-promoimage-desc {
  opacity: 1 !important;
}
#g-header.g-hero-image .g-promoimage-title, #g-header.g-hero-image .g-promoimage-desc {
  position: absolute;
  left: 0;
  right: 0;
  margin: 0;
  color: #fff;
  text-align: center;
}
#g-header.g-hero-image .g-promoimage-title {
  top: 44%;
  transform: translateY(-50%);
  font-size: 3.5rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 300;
  text-shadow: 0 2px 12px rgba(0, 0, 0, 0.35);
}
#g-header.g-hero-image .g-promoimage-desc {
  top: 60%;
  font-size: 1rem;
  letter-spacing: 0.12em;
  font-style: italic;
  color: rgba(255, 255, 255, 0.92);
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}
/* Subtle top-and-bottom dark overlay so nav (top) + title (centre) read clean */
#g-header.g-hero-image::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0.15) 40%, rgba(0, 0, 0, 0.3) 100%);
  pointer-events: none;
  z-index: 2;
}
/* Nav overlay — paidrone-style. Only kicks in when the Gantry navigation
 * section has the class g-nav-cinematic (added via section CSS Classes).
 * Kim can turn off by removing that class in the Gantry admin. */
#g-navigation.g-nav-cinematic {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 200;
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0.55) 0%, rgba(0, 0, 0, 0.25) 60%, rgba(0, 0, 0, 0) 100%) !important;
  padding-bottom: 1.5rem;
}
/* When nav is overlaid, the hero must occupy the space nav used to take. */
.g-home #g-page-surround {
  padding-top: 0;
}
/* =========================================================
 * MOBILE ADJUSTMENTS (≤ 48rem viewport)
 * Placed LAST in the file so cascade order lets mobile-scoped rules win
 * over the earlier desktop !important declarations when the viewport
 * condition matches.
 * ========================================================= */
@media (max-width: 48rem) {
  /* Hamburger toggle — pull it up into the nav bar top-right where users expect it.
   * Requiem's default drops it 180px below the fold (unusable). */
  /* Nav bar on mobile — logo on left, hamburger on right, tighten padding */
  /* Hide the social icons in mobile nav (they're accessible via offcanvas + footer) */
  /* Compact the logo image so it doesn't dominate the nav */
  /* Home page hero title — SUPER large "REGEN ENVIRONMENTAL MANAGEMENT" is
   * 26 characters. At 1.75rem/28px it wraps to 3 lines. At 1.25rem/20px it
   * fits on 2 lines with breathing room. */
  /* Interior hero title — scale for mobile */
  /* Copyright bar — allow wrap, centre, smaller text */
  /* Featured Projects + Services bands — mobile padding override */
  .g-offcanvas-toggle {
    position: absolute !important;
    top: 1.25rem !important;
    right: 1rem !important;
    z-index: 250 !important;
    color: #E9E2CF !important;
    font-size: 1.5rem !important;
  }
  .g-offcanvas-toggle .fa, .g-offcanvas-toggle i {
    color: #E9E2CF !important;
    font-size: 1.75rem !important;
  }
  #g-navigation.g-nav-cinematic {
    padding-bottom: 0.5rem !important;
  }
  #g-navigation .g-container {
    padding: 0.5rem 0.75rem !important;
  }
  #g-navigation .mainnav-left {
    text-align: left;
  }
  #g-navigation .g-nav-social, #g-navigation .mainnav-right {
    display: none !important;
  }
  #g-navigation .g-header-logo img, #g-navigation #logo-8100-particle img {
    max-height: 42px;
    width: auto;
  }
  .g-promocontent .g-superpromo, h2.g-superpromo {
    font-size: 1.25rem !important;
    letter-spacing: 0.04em !important;
    line-height: 1.25 !important;
  }
  #promocontent-2001-particle .g-superpromo {
    padding: 0 0.75rem;
    word-break: normal;
    overflow-wrap: break-word;
    max-width: 100%;
  }
  #g-header.g-hero-image .g-promoimage-title {
    font-size: 2rem !important;
    letter-spacing: 0.16em !important;
  }
  #g-header.g-hero-image .g-promoimage-desc {
    font-size: 0.9rem !important;
    letter-spacing: 0.1em;
  }
  #g-copyright, #g-copyright .g-container {
    text-align: center;
  }
  #g-copyright .g-content, #g-copyright .g-branding, #g-copyright p {
    padding: 0.25rem !important;
    font-size: 0.72rem !important;
    line-height: 1.5;
    word-wrap: break-word;
  }
  #g-extension.g-projects-band > .g-container, #g-feature.g-services-band > .g-container {
    padding: 3rem 1.25rem !important;
  }
}
/* ==================================================================
 * RETROFIT — Kim's design system applied to Requiem particles.
 * Placed LAST so cascade lets these values win at all viewports.
 * Cinematic hero (video + interior hero images) intentionally unchanged.
 * ================================================================== */
/* Typography — Cabin body, Libre Baskerville display */
body, input, select, textarea, button {
  font-family: var(--font-body);
  line-height: var(--lh-body);
}
/* Display serif on hero titles, section headlines, stat figures — the
 * "elegant, established voice" from the design system. */
.g-promocontent .g-superpromo, h2.g-superpromo, .g-promoimage-title, .g-blockcontent-headline, .g-gridpromogallery-title, .g-gridstatistic .g-statistic-title, .g-title, h1, h2, h3 {
  font-family: var(--font-display);
  font-weight: 400;
  /* medium/regular register — never 700 */
  line-height: var(--lh-heading);
  letter-spacing: 0.02em;
}
/* Overline treatment — Kim's ALL-CAPS wide-tracked signature.
 * Applied to tags/labels above headings. */
.g-promoimage-desc, .g-gridpromogallery-tag, .g-blockcontent .g-overline, .g-overline {
  font-family: var(--font-body);
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-size: var(--fs-caption);
}
/* Body copy adjustments */
p, li, .g-content p {
  font-family: var(--font-body);
  line-height: var(--lh-body);
}
/* ----- INTERACTIONS ----- */
/* Magenta focus ring on ALL focusable elements — from design system.
 * Kim: "3px soft magenta focus ring" — accessibility + brand. */
a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, .g-button:focus-visible, [tabindex]:focus-visible {
  outline: none;
  box-shadow: var(--shadow-focus);
  border-color: var(--re-magenta) !important;
}
/* ----- BUTTONS ----- */
/* Pill buttons — the "friendly, approachable signal" from design system.
 * Applied to any button-shaped element; darken to 120% on hover. */
.readmore.button, .btn, .button, .g-button, input[type=submit], input[type=button], button[type=submit] {
  border-radius: var(--radius-pill) !important;
  padding: 0.65em 1.6em;
  font-family: var(--font-body);
  font-weight: 500;
  letter-spacing: 0.03em;
  text-transform: none;
  /* sentence case for buttons */
  transition: background var(--dur-med) var(--ease-standard), color var(--dur-med) var(--ease-standard), transform var(--dur-fast) var(--ease-out), box-shadow var(--dur-med) var(--ease-out);
  border: 1px solid transparent;
}
/* Primary CTA (dark green fill) — hovers to 120% darker */
.readmore.button-primary, .btn-primary, .button-primary, .button.readmore {
  /* Gantry's default readmore is our primary */
  background: var(--re-dark) !important;
  color: var(--re-cream) !important;
}
.readmore.button-primary:hover, .btn-primary:hover, .button-primary:hover, .button.readmore:hover {
  background: var(--re-dark-120) !important;
  color: #fff !important;
}
/* Accent (magenta) — reserved for THE key CTA on a view.
 * Add class 'button-accent' to any button to opt in. */
.button-accent {
  background: var(--re-magenta) !important;
  color: #fff !important;
}
.button-accent:hover {
  background: var(--re-magenta-120) !important;
}
/* Ghost — text only */
.button-ghost {
  background: transparent !important;
  color: var(--re-dark) !important;
  border-color: transparent !important;
}
.button-ghost:hover {
  background: rgba(89, 110, 92, 0.08) !important;
}
/* ----- INPUTS ----- */
input[type=text], input[type=email], input[type=tel], input[type=password], input[type=search], input[type=url], select, textarea {
  border-radius: var(--radius-md);
  border: 1.5px solid var(--border-default);
  padding: 0.6em 0.9em;
  font-family: var(--font-body);
  font-size: var(--fs-body);
  background: var(--surface-warm);
  /* Fields inherit the cream body colour from the dark bands, which leaves
   * typed text at ~1.2:1 on the warm surface. */
  color: var(--re-ink);
  transition: border-color var(--dur-fast) var(--ease-standard), box-shadow var(--dur-fast) var(--ease-out);
}
input[type=text]::placeholder, input[type=email]::placeholder, input[type=tel]::placeholder, input[type=password]::placeholder, input[type=search]::placeholder, input[type=url]::placeholder, textarea::placeholder {
  color: rgba(44, 51, 45, 0.55);
}
/* ----- CARDS ----- */
/* Base card treatment — white-surface cards ONLY inside .g-warm-band sections.
 * On dark cinematic bands, cards use Requiem's default treatment so they blend
 * with the section instead of floating as bright rectangles. */
.g-warm-band .g-re-card, .g-warm-band .g-gridpromogallery-item, .g-warm-band .g-testimonial-item, .g-warm-band .g-infolist-item, .g-re-card {
  background: var(--surface-warm);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  transition: transform var(--dur-med) var(--ease-out), box-shadow var(--dur-med) var(--ease-out);
}
.g-warm-band .g-re-card:hover, .g-warm-band .g-gridpromogallery-item:hover, .g-warm-band .g-testimonial-item:hover, .g-re-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}
/* Featured card — 3px magenta top-rule (Kim's featured card treatment).
 * Applied to every tile in the Home "Featured Projects" grid since all six
 * ARE featured selections. Add class 'g-featured' to any other card to opt in. */
.g-featured, .g-re-card.g-featured, .g-gridpromogallery-item.g-featured, #g-extension.g-projects-band .g-gridpromogallery-item {
  border-top: 3px solid var(--re-magenta);
}
/* ----- WARM INTERIOR BANDS -----
 * Kim's design uses cream/white with dark bands as accents. On interior pages,
 * we keep the hero + acknowledgement + footer cinematic-dark BUT the middle
 * content bands become warm-white for editorial readability.
 * Kim can toggle by removing the g-warm-band class from a section. */
.g-warm-band {
  background: var(--surface-warm) !important;
  color: var(--re-ink);
}
.g-warm-band h1, .g-warm-band h2, .g-warm-band h3, .g-warm-band .g-title, .g-warm-band .g-superpromo, .g-warm-band .g-blockcontent-headline, .g-warm-band .g-promocontent-promo, .g-warm-band .g-gridpromogallery-title {
  color: var(--re-dark) !important;
}
.g-warm-band p, .g-warm-band li, .g-warm-band .g-content {
  color: var(--re-ink);
}
.g-warm-band a {
  color: var(--re-magenta);
}
.g-warm-band a:hover {
  color: var(--re-magenta-120);
}
.g-warm-band .g-gridpromogallery-tag, .g-warm-band .g-overline {
  color: var(--re-magenta);
}
/* Card items inside a warm band get a slightly different surface so they lift */
.g-warm-band .g-gridpromogallery-item, .g-warm-band .g-testimonial-item, .g-warm-band .g-infolist-item {
  background: #fff;
  border-color: var(--border-default);
}
/* ----- BADGES / CHIPS ----- */
.g-badge, .g-chip, .g-tag {
  display: inline-block;
  padding: 0.25em 0.7em;
  border-radius: var(--radius-pill);
  font-size: var(--fs-caption);
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  background: var(--re-cream);
  color: var(--re-dark);
}
.g-badge-accent, .g-chip-accent {
  background: var(--re-magenta);
  color: #fff;
}
/* ------ Home page — hide empty Joomla content mainbar ------
 * Kim's request: remove the cream section break above "Why Choose Regen".
 * The break is the empty Joomla content view (page-header + pagination nav)
 * rendering between /feature/ and /expanded/. Hide the whole #g-mainbar
 * container on the Home page. */
.itemid-101 #g-mainbar, body.itemid-101 #g-mainbar, .view-featured #g-mainbar, .blog-featured, .itemid-101 .g-mainbar {
  display: none !important;
}
/* Also hide it in the outer container in case it's rendered differently */
.itemid-101 #g-container-main > .g-container > .g-grid > .g-block > .g-mainbar, .itemid-101 .g-mainbar-inner {
  display: none !important;
}
/* ============================================================
 * KIM BRIEF PHASE 2 — Home visuals + Footer restructure
 * ============================================================ */
/* --- Square service tile images with consistent alignment --- */
.g-home-services .g-gridpromogallery-item {
  aspect-ratio: 1;
  overflow: hidden;
  position: relative;
}
.g-home-services .g-gridpromogallery-item > a, .g-home-services .g-gridpromogallery-item > div {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.g-home-services .g-gridpromogallery-item img, .g-home-services .g-gridpromogallery-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.g-home-services .g-gridpromogallery {
  gap: 1rem;
}
/* --- Featured project tiles: square, consistent --- */
.g-home-projects .g-gridpromogallery-item {
  aspect-ratio: 1;
  overflow: hidden;
  position: relative;
}
.g-home-projects .g-gridpromogallery-item img, .g-home-projects .g-gridpromogallery-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.g-home-projects .g-gridpromogallery {
  gap: 1rem;
}
/* --- Magenta circular icon badges replacing numbered "01/02/03" tags --- */
.g-home-services .g-gridpromogallery-tag {
  width: 56px !important;
  height: 56px !important;
  background: var(--re-magenta) !important;
  color: #fff !important;
  border-radius: 999px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-indent: -9999px;
  /* hide the numeric text */
  overflow: hidden;
  position: absolute;
  top: 1rem;
  right: 1rem;
  z-index: 3;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
}
/* Inject Lucide SVG icon per tile via ::before */
.g-home-services .g-gridpromogallery-tag::before {
  content: "";
  position: absolute;
  inset: 0;
  background-position: center;
  background-repeat: no-repeat;
  background-size: 28px 28px;
  text-indent: 0;
}
/* Icon mapping per service tile (via nth-child) — using inline SVG data URIs, white stroke */
.g-home-services .g-gridpromogallery-item:nth-child(1) .g-gridpromogallery-tag::before {
  /* Parks - tree */
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M17%2014v7'/%3E%3Cpath%20d='M17%203v3'/%3E%3Cpath%20d='M9%203v3'/%3E%3Cpath%20d='M9%2014v7'/%3E%3Cpath%20d='M13%203v18'/%3E%3Cpath%20d='M17%2014a4%204%200%200%201%200-8'/%3E%3Cpath%20d='M9%2014a4%204%200%200%200%200-8'/%3E%3C/svg%3E');
}
.g-home-services .g-gridpromogallery-item:nth-child(2) .g-gridpromogallery-tag::before {
  /* Ecological - sprout */
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M7%2020h10'/%3E%3Cpath%20d='M10%2020c5.5-2.5.8-6.4%203-10'/%3E%3Cpath%20d='M9.5%209.4c1.1.8%201.8%202.2%202.3%203.7-2%20.4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2%202.8-.5%204.4%200%205.5.8z'/%3E%3Cpath%20d='M14.1%206a7%207%200%200%200-1.1%204c1.9-.1%203.3-.6%204.3-1.4%201-1%201.6-2.3%201.7-4.6-2.7.1-4%201-4.9%202z'/%3E%3C/svg%3E');
}
.g-home-services .g-gridpromogallery-item:nth-child(3) .g-gridpromogallery-tag::before {
  /* Weed/Biomass - scissors */
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Ccircle%20cx='6'%20cy='6'%20r='3'/%3E%3Cpath%20d='M8.12%208.12%2012%2012'/%3E%3Cpath%20d='M20%204%208.12%2015.88'/%3E%3Ccircle%20cx='6'%20cy='18'%20r='3'/%3E%3Cpath%20d='M14.8%2014.8%2020%2020'/%3E%3C/svg%3E');
}
.g-home-services .g-gridpromogallery-item:nth-child(4) .g-gridpromogallery-tag::before {
  /* Water Monitoring - droplet */
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M12%2022a7%207%200%200%200%207-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5%202.5-2%204.9-4%206.5C6%2011.1%205%2013%205%2015a7%207%200%200%200%207%207z'/%3E%3C/svg%3E');
}
.g-home-services .g-gridpromogallery-item:nth-child(5) .g-gridpromogallery-tag::before {
  /* Fire/Ecological Burning - flame */
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M8.5%2014.5A2.5%202.5%200%200%200%2011%2012c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054%202-6%20.5%202.5%202%204.9%204%206.5%202%201.6%203%203.5%203%205.5a7%207%200%201%201-14%200c0-1.153.433-2.294%201-3a2.5%202.5%200%200%200%202.5%202.5z'/%3E%3C/svg%3E');
}
.g-home-services .g-gridpromogallery-item:nth-child(6) .g-gridpromogallery-tag::before {
  /* Turf Maintenance - leaf */
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M11%2020A7%207%200%200%201%209.8%206.1C15.5%205%2017%204.48%2019.2%202.96a1%201%200%200%201%201.8.66c0%2012.05-11.5%2015.55-9%2018.83'/%3E%3Cpath%20d='M2%2021c0-3%201.85-5.36%205.08-6C9.5%2014.52%2012%2013%2013%2012'/%3E%3C/svg%3E');
}
/* --- Featured Projects heading style matching Our Services --- */
#g-extension.g-projects-band .g-gridpromogallery-title, .g-home-projects .g-gridpromogallery-title {
  font-family: var(--font-display);
  font-size: 2.5rem;
  font-weight: 400;
  color: var(--re-cream);
  text-align: center;
  letter-spacing: 0.02em;
  margin: 0 0 2rem;
}
/* --- FOOTER RESTRUCTURE — move Acknowledgement below copyright, smaller left-aligned --- */
/* Kim's request: keep logo left, nav, address+email, socials, then copyright,
 * then Acknowledgement smaller + left-aligned as supporting info at the very bottom. */
#g-bottom.g-acknowledgement-band {
  order: 999;
  /* if flexbox order applies */
}
/* Simpler: use grid/flex ordering via CSS on the outer body */
body {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}
#g-page-surround {
  display: flex;
  flex-direction: column;
  flex: 1;
}
/* Sections in order — bottom (acknowledgement) should render AFTER copyright */
#g-bottom {
  order: 3;
  padding: 1.5rem 0 !important;
}
#g-footer {
  order: 1;
}
#g-copyright {
  order: 2;
}
/* Style Ack as smaller, left-aligned supporting info */
#g-bottom .g-acknowledgement, #g-bottom .g-blockcontent {
  text-align: left;
  max-width: 75rem;
  margin: 0 auto;
  padding: 0 2rem;
}
#g-bottom .g-acknowledgement h2, #g-bottom .g-blockcontent-headline {
  font-size: 0.75rem !important;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.7;
  margin: 0 0 0.4rem !important;
  text-align: left !important;
}
#g-bottom .g-acknowledgement p, #g-bottom .g-blockcontent-description {
  font-size: 0.75rem;
  line-height: 1.55;
  opacity: 0.75;
  max-width: none;
  text-align: left;
}
/* ============================================================
 * KIM BRIEF PHASE 2 — About page treatments
 * ============================================================ */
/* --- Clients grid: 3x2, icon-only visual --- */
.g-about-clients .g-gridpromogallery-item {
  aspect-ratio: 1;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(233, 226, 207, 0.15);
  border-radius: var(--radius-lg);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 1.5rem;
  overflow: hidden;
  position: relative;
}
.g-about-clients .g-gridpromogallery-item img {
  display: none;
}
.g-about-clients .g-gridpromogallery-tag {
  background: var(--re-magenta);
  color: #fff;
  width: 64px;
  height: 64px;
  border-radius: 999px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 1rem;
  position: static;
}
.g-about-clients .g-gridpromogallery-tag i {
  color: #fff;
  width: 28px;
  height: 28px;
}
.g-about-clients .g-gridpromogallery-headtext {
  font-family: var(--font-display);
  font-size: 1.15rem;
  color: var(--re-cream);
  margin: 0.5rem 0;
  font-weight: 400;
}
.g-about-clients .g-gridpromogallery-desc {
  color: rgba(233, 226, 207, 0.75);
  font-size: 0.85rem;
  line-height: 1.5;
}
/* --- Part of the Regen Family — sister-logo row --- */
.g-regen-family {
  text-align: center;
}
.g-regen-family-logos {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 3rem;
  margin: 2rem auto 0;
  max-width: 60rem;
  flex-wrap: wrap;
}
.g-regen-family-logos img {
  max-height: 60px;
  width: auto;
  filter: brightness(0) invert(1);
  /* white version of the logo */
  opacity: 0.85;
  transition: opacity 200ms;
}
.g-regen-family-logos a:hover img {
  opacity: 1;
}
.g-family-text-logo {
  font-family: var(--font-display);
  font-size: 1.5rem;
  color: var(--re-cream);
  letter-spacing: 0.04em;
  transition: color 200ms;
}
.g-regen-family-logos a:hover .g-family-text-logo {
  color: var(--re-magenta);
}
/* --- Explore Our Projects — 3 tiles with hover reveal --- */
.g-explore-tiles .g-gridpromogallery-item {
  aspect-ratio: 1;
  overflow: hidden;
  position: relative;
  border-radius: var(--radius-lg);
}
.g-explore-tiles .g-gridpromogallery-item img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 500ms var(--ease-out), filter 300ms;
}
.g-explore-tiles .g-gridpromogallery-item:hover img {
  transform: scale(1.05);
  filter: brightness(0.55);
}
/* Hide title by default, reveal on hover overlaid */
.g-explore-tiles .g-gridpromogallery-caption, .g-explore-tiles .g-gridpromogallery-headtext {
  position: absolute !important;
  left: 0;
  right: 0;
  top: 50%;
  transform: translateY(-50%);
  text-align: center;
  color: #fff;
  font-family: var(--font-display);
  font-size: 1.75rem;
  font-weight: 400;
  letter-spacing: 0.03em;
  opacity: 0;
  transition: opacity 300ms var(--ease-out);
  z-index: 3;
  padding: 0 1rem;
  pointer-events: none;
}
.g-explore-tiles .g-gridpromogallery-item:hover .g-gridpromogallery-caption, .g-explore-tiles .g-gridpromogallery-item:hover .g-gridpromogallery-headtext {
  opacity: 1;
}
/* --- Explore Our Projects heading style matching Our Services --- */
.g-explore-projects .g-promo, .g-explore-projects .g-promocontent-promo {
  font-family: var(--font-display);
  font-size: 2.5rem;
  font-weight: 400;
  color: var(--re-cream);
  text-align: center;
  letter-spacing: 0.02em;
}
.g-explore-projects .g-promocontent-desc {
  text-align: center;
  color: rgba(233, 226, 207, 0.8);
  margin-bottom: 1.5rem;
}
.g-explore-projects .readmore, .g-explore-projects a.g-promocontent-readmore {
  background: var(--re-magenta) !important;
  color: #fff !important;
  border-radius: var(--radius-pill);
  padding: 0.65em 1.6em;
  display: inline-block;
  margin: 1rem auto 0;
  font-weight: 500;
}
.g-explore-projects .readmore:hover {
  background: var(--re-magenta-120) !important;
}
/* ============================================================
 * KIM BRIEF PHASE 2b — CSS bug fixes (higher specificity)
 * ============================================================ */
/* Home service icon badges — force override of default tag styling */
#g-feature .g-home-services .g-gridpromogallery-tag, .g-home-services .g-gridpromogallery-tag {
  width: 56px !important;
  height: 56px !important;
  min-width: 56px !important;
  min-height: 56px !important;
  background: var(--re-magenta) !important;
  color: transparent !important;
  /* hide the "01" text */
  font-size: 0 !important;
  border-radius: 999px !important;
  position: absolute !important;
  top: 1rem !important;
  right: 1rem !important;
  z-index: 10 !important;
  padding: 0 !important;
  overflow: hidden !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25) !important;
}
.g-home-services .g-gridpromogallery-tag::before {
  content: "" !important;
  position: absolute !important;
  inset: 0 !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  background-size: 28px 28px !important;
}
/* Home featured project tiles — hide any inherited desc text overlay */
.g-home-projects .g-gridpromogallery-desc, .g-home-projects .g-gridpromogallery-caption {
  display: none !important;
}
/* Show heading centred, cream, over image */
.g-home-projects .g-gridpromogallery-headtext {
  position: absolute !important;
  bottom: 1rem !important;
  left: 1rem !important;
  right: 1rem !important;
  font-family: var(--font-display);
  color: #fff !important;
  font-size: 1.15rem;
  font-weight: 400;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.6);
  z-index: 3;
}
.g-home-projects .g-gridpromogallery-tag {
  background: var(--re-magenta) !important;
  border-radius: 999px !important;
  padding: 0.25em 0.7em !important;
  color: #fff !important;
  font-size: 0.7rem !important;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  position: absolute !important;
  top: 1rem !important;
  left: 1rem !important;
  z-index: 3;
}
/* About Client cards — inject icons via nth-child ::before */
.g-about-clients .g-gridpromogallery-item {
  aspect-ratio: 1;
  background: rgba(0, 0, 0, 0.15);
  border: 1px solid rgba(233, 226, 207, 0.15);
  border-radius: var(--radius-lg);
  padding: 1.5rem;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.g-about-clients .g-gridpromogallery-item img {
  display: none !important;
}
.g-about-clients .g-gridpromogallery-tag {
  width: 64px !important;
  height: 64px !important;
  background: var(--re-magenta) !important;
  border-radius: 999px !important;
  margin: 1.5rem auto 1rem !important;
  position: relative !important;
  color: transparent !important;
  font-size: 0 !important;
  padding: 0 !important;
  display: block !important;
  overflow: hidden;
}
.g-about-clients .g-gridpromogallery-tag::before {
  content: "";
  position: absolute;
  inset: 0;
  background-position: center;
  background-repeat: no-repeat;
  background-size: 30px 30px;
}
/* Position 1: Landholders — MAP icon */
.g-about-clients .g-gridpromogallery-item:nth-child(1) .g-gridpromogallery-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpolygon%20points='1%206%201%2022%208%2018%2016%2022%2023%2018%2023%202%2016%206%208%202%201%206'/%3E%3Cline%20x1='8'%20y1='2'%20x2='8'%20y2='18'/%3E%3Cline%20x1='16'%20y1='6'%20x2='16'%20y2='22'/%3E%3C/svg%3E');
}
/* Position 2: Environmental Managers — USERS icon */
.g-about-clients .g-gridpromogallery-item:nth-child(2) .g-gridpromogallery-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M17%2021v-2a4%204%200%200%200-4-4H5a4%204%200%200%200-4%204v2'/%3E%3Ccircle%20cx='9'%20cy='7'%20r='4'/%3E%3Cpath%20d='M23%2021v-2a4%204%200%200%200-3-3.87'/%3E%3Cpath%20d='M16%203.13a4%204%200%200%201%200%207.75'/%3E%3C/svg%3E');
}
/* Position 3: Developers — HOUSE icon */
.g-about-clients .g-gridpromogallery-item:nth-child(3) .g-gridpromogallery-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='m3%209%209-7%209%207v11a2%202%200%200%201-2%202H5a2%202%200%200%201-2-2z'/%3E%3Cpolyline%20points='9%2022%209%2012%2015%2012%2015%2022'/%3E%3C/svg%3E');
}
/* Position 4: Local Government — COLUMNS icon */
.g-about-clients .g-gridpromogallery-item:nth-child(4) .g-gridpromogallery-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cline%20x1='3'%20y1='22'%20x2='21'%20y2='22'/%3E%3Cline%20x1='6'%20y1='18'%20x2='6'%20y2='11'/%3E%3Cline%20x1='10'%20y1='18'%20x2='10'%20y2='11'/%3E%3Cline%20x1='14'%20y1='18'%20x2='14'%20y2='11'/%3E%3Cline%20x1='18'%20y1='18'%20x2='18'%20y2='11'/%3E%3Cpolygon%20points='12%202%2020%207%204%207'/%3E%3C/svg%3E');
}
/* Position 5: Golf Courses — FLAG icon */
.g-about-clients .g-gridpromogallery-item:nth-child(5) .g-gridpromogallery-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M4%2015s1-1%204-1%205%202%208%202%204-1%204-1V3s-1%201-4%201-5-2-8-2-4%201-4%201z'/%3E%3Cline%20x1='4'%20y1='22'%20x2='4'%20y2='15'/%3E%3C/svg%3E');
}
/* Position 6: Infrastructure & Utilities — LIGHTNING icon */
.g-about-clients .g-gridpromogallery-item:nth-child(6) .g-gridpromogallery-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpolygon%20points='13%202%203%2014%2012%2014%2011%2022%2021%2010%2012%2010%2013%202'/%3E%3C/svg%3E');
}
/* About Explore tiles — square + hover reveal */
.g-explore-tiles .g-gridpromogallery-item {
  aspect-ratio: 1 !important;
  position: relative !important;
  overflow: hidden !important;
  border-radius: var(--radius-lg) !important;
}
.g-explore-tiles .g-gridpromogallery-item img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}
.g-explore-tiles .g-gridpromogallery-headtext {
  position: absolute !important;
  inset: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: rgba(0, 0, 0, 0.5) !important;
  color: #fff !important;
  font-family: var(--font-display);
  font-size: 1.75rem;
  font-weight: 400;
  letter-spacing: 0.03em;
  opacity: 0;
  transition: opacity 300ms;
  z-index: 3;
}
.g-explore-tiles .g-gridpromogallery-item:hover .g-gridpromogallery-headtext {
  opacity: 1 !important;
}
/* ============================================================
 * KIM PHASE 2c — CORRECT class name overrides for Requiem's actual DOM
 * Requiem uses .g-gridpromogallery-item-tag (not -tag) etc.
 * ============================================================ */
/* --- SERVICE TILES: magenta circle icon badge, hide the "01/02/03" number --- */
.g-home-services .g-gridpromogallery-item-tag {
  width: 56px !important;
  height: 56px !important;
  min-width: 56px !important;
  background: var(--re-magenta) !important;
  color: transparent !important;
  font-size: 0 !important;
  border-radius: 999px !important;
  position: absolute !important;
  top: 1rem !important;
  right: 1rem !important;
  z-index: 10 !important;
  padding: 0 !important;
  display: block !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25) !important;
  overflow: hidden;
}
.g-home-services .g-gridpromogallery-item-tag::before {
  content: "";
  position: absolute;
  inset: 0;
  background-position: center;
  background-repeat: no-repeat;
  background-size: 28px 28px;
}
/* Per-tile icon SVGs (nth-of-type on item, not child) — service tiles */
.g-home-services .g-gridpromogallery-item:nth-of-type(1) .g-gridpromogallery-item-tag::before {
  /* Parks - tree-pine */
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='m17%2014%203%203.3a1%201%200%200%201-.7%201.7H4.7a1%201%200%200%201-.7-1.7L7%2014h-.3a1%201%200%200%201-.7-1.7L9%209h-.2A1%201%200%200%201%208%207.3L12%203l4%204.3a1%201%200%200%201-.8%201.7H15l3%203.3a1%201%200%200%201-.7%201.7H17Z'/%3E%3Cpath%20d='M12%2022v-3'/%3E%3C/svg%3E');
}
.g-home-services .g-gridpromogallery-item:nth-of-type(2) .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M7%2020h10'/%3E%3Cpath%20d='M10%2020c5.5-2.5.8-6.4%203-10'/%3E%3Cpath%20d='M9.5%209.4c1.1.8%201.8%202.2%202.3%203.7-2%20.4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2%202.8-.5%204.4%200%205.5.8z'/%3E%3Cpath%20d='M14.1%206a7%207%200%200%200-1.1%204c1.9-.1%203.3-.6%204.3-1.4%201-1%201.6-2.3%201.7-4.6-2.7.1-4%201-4.9%202z'/%3E%3C/svg%3E');
}
.g-home-services .g-gridpromogallery-item:nth-of-type(3) .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Ccircle%20cx='6'%20cy='6'%20r='3'/%3E%3Cpath%20d='M8.12%208.12%2012%2012'/%3E%3Cpath%20d='M20%204%208.12%2015.88'/%3E%3Ccircle%20cx='6'%20cy='18'%20r='3'/%3E%3Cpath%20d='M14.8%2014.8%2020%2020'/%3E%3C/svg%3E');
}
.g-home-services .g-gridpromogallery-item:nth-of-type(4) .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M12%2022a7%207%200%200%200%207-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5%202.5-2%204.9-4%206.5C6%2011.1%205%2013%205%2015a7%207%200%200%200%207%207z'/%3E%3C/svg%3E');
}
.g-home-services .g-gridpromogallery-item:nth-of-type(5) .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M8.5%2014.5A2.5%202.5%200%200%200%2011%2012c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054%202-6%20.5%202.5%202%204.9%204%206.5%202%201.6%203%203.5%203%205.5a7%207%200%201%201-14%200c0-1.153.433-2.294%201-3a2.5%202.5%200%200%200%202.5%202.5z'/%3E%3C/svg%3E');
}
.g-home-services .g-gridpromogallery-item:nth-of-type(6) .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M11%2020A7%207%200%200%201%209.8%206.1C15.5%205%2017%204.48%2019.2%202.96a1%201%200%200%201%201.8.66c0%2012.05-11.5%2015.55-9%2018.83'/%3E%3Cpath%20d='M2%2021c0-3%201.85-5.36%205.08-6C9.5%2014.52%2012%2013%2013%2012'/%3E%3C/svg%3E');
}
/* --- CLIENT CARDS: use item-tag class --- */
.g-about-clients .g-gridpromogallery-item-tag {
  width: 64px !important;
  height: 64px !important;
  background: var(--re-magenta) !important;
  border-radius: 999px !important;
  color: transparent !important;
  font-size: 0 !important;
  display: block !important;
  margin: 1.5rem auto 1rem !important;
  position: relative !important;
  padding: 0 !important;
  overflow: hidden;
}
.g-about-clients .g-gridpromogallery-item-tag::before {
  content: "";
  position: absolute;
  inset: 0;
  background-position: center;
  background-repeat: no-repeat;
  background-size: 30px 30px;
}
/* Position 1: Landholders — MAP icon */
.g-about-clients .g-gridpromogallery-item:nth-of-type(1) .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpolygon%20points='1%206%201%2022%208%2018%2016%2022%2023%2018%2023%202%2016%206%208%202%201%206'/%3E%3Cline%20x1='8'%20y1='2'%20x2='8'%20y2='18'/%3E%3Cline%20x1='16'%20y1='6'%20x2='16'%20y2='22'/%3E%3C/svg%3E');
}
/* Position 2: Environmental Managers — USERS icon */
.g-about-clients .g-gridpromogallery-item:nth-of-type(2) .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M17%2021v-2a4%204%200%200%200-4-4H5a4%204%200%200%200-4%204v2'/%3E%3Ccircle%20cx='9'%20cy='7'%20r='4'/%3E%3Cpath%20d='M23%2021v-2a4%204%200%200%200-3-3.87'/%3E%3Cpath%20d='M16%203.13a4%204%200%200%201%200%207.75'/%3E%3C/svg%3E');
}
/* Position 3: Developers — HOUSE icon */
.g-about-clients .g-gridpromogallery-item:nth-of-type(3) .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='m3%209%209-7%209%207v11a2%202%200%200%201-2%202H5a2%202%200%200%201-2-2z'/%3E%3Cpolyline%20points='9%2022%209%2012%2015%2012%2015%2022'/%3E%3C/svg%3E');
}
/* Position 4: Local Government — COLUMNS icon */
.g-about-clients .g-gridpromogallery-item:nth-of-type(4) .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cline%20x1='3'%20y1='22'%20x2='21'%20y2='22'/%3E%3Cline%20x1='6'%20y1='18'%20x2='6'%20y2='11'/%3E%3Cline%20x1='10'%20y1='18'%20x2='10'%20y2='11'/%3E%3Cline%20x1='14'%20y1='18'%20x2='14'%20y2='11'/%3E%3Cline%20x1='18'%20y1='18'%20x2='18'%20y2='11'/%3E%3Cpolygon%20points='12%202%2020%207%204%207'/%3E%3C/svg%3E');
}
/* Position 5: Golf Courses — FLAG icon */
.g-about-clients .g-gridpromogallery-item:nth-of-type(5) .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M4%2015s1-1%204-1%205%202%208%202%204-1%204-1V3s-1%201-4%201-5-2-8-2-4%201-4%201z'/%3E%3Cline%20x1='4'%20y1='22'%20x2='4'%20y2='15'/%3E%3C/svg%3E');
}
/* Position 6: Infrastructure & Utilities — LIGHTNING icon */
.g-about-clients .g-gridpromogallery-item:nth-of-type(6) .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpolygon%20points='13%202%203%2014%2012%2014%2011%2022%2021%2010%2012%2010%2013%202'/%3E%3C/svg%3E');
}
/* --- FEATURED PROJECT TILES: fix tag + title targeting --- */
.g-home-projects .g-gridpromogallery-item-tag {
  background: var(--re-magenta) !important;
  border-radius: 999px !important;
  padding: 0.25em 0.7em !important;
  color: #fff !important;
  font-size: 0.7rem !important;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  position: absolute !important;
  top: 1rem !important;
  left: 1rem !important;
  z-index: 3;
}
.g-home-projects .g-gridpromogallery-item-title {
  position: absolute !important;
  bottom: 1rem !important;
  left: 1rem !important;
  right: 1rem !important;
  font-family: var(--font-display);
  color: #fff !important;
  font-size: 1.15rem;
  font-weight: 400;
  text-shadow: 0 2px 8px rgba(0, 0, 0, 0.6);
  z-index: 3;
  text-align: center;
}
/* --- ABOUT EXPLORE TILES: fix title reveal --- */
.g-explore-tiles .g-gridpromogallery-item-title {
  position: absolute !important;
  inset: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: rgba(0, 0, 0, 0.5) !important;
  color: #fff !important;
  font-family: var(--font-display);
  font-size: 1.75rem;
  font-weight: 400;
  opacity: 0;
  transition: opacity 300ms;
  z-index: 3;
  margin: 0 !important;
}
.g-explore-tiles .g-gridpromogallery-item:hover .g-gridpromogallery-item-title {
  opacity: 1 !important;
}
/* Hide any auto-populated article text/desc bleeding into featured tiles.
 * Kim's brief: tiles show image + tag + title only. */
.g-home-projects .g-gridpromogallery-item-desc, .g-home-projects .g-gridpromogallery-item-description, .g-home-projects .g-gridpromogallery-item-text > *:not(.g-gridpromogallery-item-tag):not(.g-gridpromogallery-item-title), .g-home-projects .g-gridpromogallery-item-text p {
  display: none !important;
}
/* Make item-text container overlay the image properly */
.g-home-projects .g-gridpromogallery-item-text {
  position: absolute !important;
  inset: 0 !important;
  z-index: 2;
  pointer-events: none;
}
.g-home-projects .g-gridpromogallery-item-text .g-gridpromogallery-item-tag, .g-home-projects .g-gridpromogallery-item-text .g-gridpromogallery-item-title {
  pointer-events: auto;
}
/* Force featured project tile inner elements to fill the square 328x328 tile */
.g-home-projects .g-gridpromogallery-item-wrapper, .g-home-projects .g-gridpromogallery-link, .g-home-projects .g-gridpromogallery-item-img {
  height: 100% !important;
  width: 100% !important;
  display: block !important;
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  position: relative;
}
/* Same for service tiles */
.g-home-services .g-gridpromogallery-item-wrapper, .g-home-services .g-gridpromogallery-link, .g-home-services .g-gridpromogallery-item-img {
  height: 100% !important;
  width: 100% !important;
  display: block !important;
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
}
/* Same for About Explore tiles */
.g-explore-tiles .g-gridpromogallery-item-wrapper, .g-explore-tiles .g-gridpromogallery-link, .g-explore-tiles .g-gridpromogallery-item-img {
  height: 100% !important;
  width: 100% !important;
  display: block !important;
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
}
/* --- ABOUT Our Approach: force 2-col grid (image right, text left) ---
 * Requiem's blockcontent renders as stacked img → h2 → desc → p.
 * Use CSS Grid to place img in col 2 spanning all rows, text stacks in col 1. */
/* Scope Our Approach 2-col grid to About outline (outline-20 body class)
 * so it doesn't affect Home's Partners section which uses same class. */
.outline-20 .g-2col-intro .g-content {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  align-items: center;
}
.outline-20 .g-2col-intro .g-content > * {
  grid-column: 1;
}
.outline-20 .g-2col-intro .g-content > img {
  grid-column: 2 !important;
  grid-row: 1 / -1;
  width: 100%;
  height: auto;
  max-height: 500px;
  object-fit: cover;
  border-radius: var(--radius-lg);
}
@media (max-width: 48rem) {
  .outline-20 .g-2col-intro .g-content {
    grid-template-columns: 1fr;
  }
  .outline-20 .g-2col-intro .g-content > img {
    grid-column: 1 !important;
    grid-row: auto;
    order: -1;
  }
}
/* ============================================================
 * KIM PHASE 2d — Icons via JS-injected classes (nth-child was unreliable
 * because Requiem's item wrappers break :nth-of-type counting).
 * ============================================================ */
.service-icon-1 .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='m17%2014%203%203.3a1%201%200%200%201-.7%201.7H4.7a1%201%200%200%201-.7-1.7L7%2014h-.3a1%201%200%200%201-.7-1.7L9%209h-.2A1%201%200%200%201%208%207.3L12%203l4%204.3a1%201%200%200%201-.8%201.7H15l3%203.3a1%201%200%200%201-.7%201.7H17Z'/%3E%3Cpath%20d='M12%2022v-3'/%3E%3C/svg%3E') !important;
}
.service-icon-2 .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M7%2020h10'/%3E%3Cpath%20d='M10%2020c5.5-2.5.8-6.4%203-10'/%3E%3Cpath%20d='M9.5%209.4c1.1.8%201.8%202.2%202.3%203.7-2%20.4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2%202.8-.5%204.4%200%205.5.8z'/%3E%3Cpath%20d='M14.1%206a7%207%200%200%200-1.1%204c1.9-.1%203.3-.6%204.3-1.4%201-1%201.6-2.3%201.7-4.6-2.7.1-4%201-4.9%202z'/%3E%3C/svg%3E') !important;
}
.service-icon-3 .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Ccircle%20cx='6'%20cy='6'%20r='3'/%3E%3Cpath%20d='M8.12%208.12%2012%2012'/%3E%3Cpath%20d='M20%204%208.12%2015.88'/%3E%3Ccircle%20cx='6'%20cy='18'%20r='3'/%3E%3Cpath%20d='M14.8%2014.8%2020%2020'/%3E%3C/svg%3E') !important;
}
.service-icon-4 .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M12%2022a7%207%200%200%200%207-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5%202.5-2%204.9-4%206.5C6%2011.1%205%2013%205%2015a7%207%200%200%200%207%207z'/%3E%3C/svg%3E') !important;
}
.service-icon-5 .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M8.5%2014.5A2.5%202.5%200%200%200%2011%2012c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054%202-6%20.5%202.5%202%204.9%204%206.5%202%201.6%203%203.5%203%205.5a7%207%200%201%201-14%200c0-1.153.433-2.294%201-3a2.5%202.5%200%200%200%202.5%202.5z'/%3E%3C/svg%3E') !important;
}
.service-icon-6 .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='28'%20height='28'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M11%2020A7%207%200%200%201%209.8%206.1C15.5%205%2017%204.48%2019.2%202.96a1%201%200%200%201%201.8.66c0%2012.05-11.5%2015.55-9%2018.83'/%3E%3Cpath%20d='M2%2021c0-3%201.85-5.36%205.08-6C9.5%2014.52%2012%2013%2013%2012'/%3E%3C/svg%3E') !important;
}
.client-icon-1 .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cline%20x1='3'%20y1='22'%20x2='21'%20y2='22'/%3E%3Cline%20x1='6'%20y1='18'%20x2='6'%20y2='11'/%3E%3Cline%20x1='10'%20y1='18'%20x2='10'%20y2='11'/%3E%3Cline%20x1='14'%20y1='18'%20x2='14'%20y2='11'/%3E%3Cline%20x1='18'%20y1='18'%20x2='18'%20y2='11'/%3E%3Cpolygon%20points='12%202%2020%207%204%207'/%3E%3C/svg%3E') !important;
}
.client-icon-2 .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='m3%209%209-7%209%207v11a2%202%200%200%201-2%202H5a2%202%200%200%201-2-2z'/%3E%3Cpolyline%20points='9%2022%209%2012%2015%2012%2015%2022'/%3E%3C/svg%3E') !important;
}
.client-icon-3 .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpolygon%20points='13%202%203%2014%2012%2014%2011%2022%2021%2010%2012%2010%2013%202'/%3E%3C/svg%3E') !important;
}
.client-icon-4 .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpolygon%20points='1%206%201%2022%208%2018%2016%2022%2023%2018%2023%202%2016%206%208%202%201%206'/%3E%3Cline%20x1='8'%20y1='2'%20x2='8'%20y2='18'/%3E%3Cline%20x1='16'%20y1='6'%20x2='16'%20y2='22'/%3E%3C/svg%3E') !important;
}
.client-icon-5 .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M17%2021v-2a4%204%200%200%200-4-4H5a4%204%200%200%200-4%204v2'/%3E%3Ccircle%20cx='9'%20cy='7'%20r='4'/%3E%3Cpath%20d='M23%2021v-2a4%204%200%200%200-3-3.87'/%3E%3Cpath%20d='M16%203.13a4%204%200%200%201%200%207.75'/%3E%3C/svg%3E') !important;
}
.client-icon-6 .g-gridpromogallery-item-tag::before {
  background-image: url('data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='30'%20height='30'%20viewBox='0%200%2024%2024'%20fill='none'%20stroke='%23fff'%20stroke-width='2'%20stroke-linecap='round'%20stroke-linejoin='round'%3E%3Cpath%20d='M4%2015s1-1%204-1%205%202%208%202%204-1%204-1V3s-1%201-4%201-5-2-8-2-4%201-4%201z'/%3E%3Cline%20x1='4'%20y1='22'%20x2='4'%20y2='15'/%3E%3C/svg%3E') !important;
}
/* Icons via CSS var set inline by JS (bypasses SCSS URL quoting bug).
 * Lucide icons come with dark stroke; use CSS filter to make them white. */
.service-icon-1 .g-gridpromogallery-item-tag::before, .service-icon-2 .g-gridpromogallery-item-tag::before, .service-icon-3 .g-gridpromogallery-item-tag::before, .service-icon-4 .g-gridpromogallery-item-tag::before, .service-icon-5 .g-gridpromogallery-item-tag::before, .service-icon-6 .g-gridpromogallery-item-tag::before, .client-icon-1 .g-gridpromogallery-item-tag::before, .client-icon-2 .g-gridpromogallery-item-tag::before, .client-icon-3 .g-gridpromogallery-item-tag::before, .client-icon-4 .g-gridpromogallery-item-tag::before, .client-icon-5 .g-gridpromogallery-item-tag::before, .client-icon-6 .g-gridpromogallery-item-tag::before {
  background-image: var(--icon-url) !important;
  filter: brightness(0) invert(1);
  /* Lucide black stroke → white */
}
/* ============================================================
 * KIM BRIEF PHASE 3 — global interior-page cleanup
 * ============================================================ */
/* Kim wants ONLY the main hero heading. Hide the small "What we deliver" / "Our work"
 * / "In Pictures" subheading overlay on interior hero images. */
#g-header.g-hero-image .g-promoimage-desc {
  display: none !important;
}
/* Hide the empty cream "mainbar" (Joomla content view) + pagination Prev/Next
 * on ALL interior outlines. */
/* Only hide mainbar on LIST pages (services 106, projects 107, gallery 108, careers 109, contact 110)
 * NOT on individual project detail pages (itemid 112-119) which need mainbar to render article body */
.itemid-106 #g-mainbar, .itemid-107 #g-mainbar, .itemid-108 #g-mainbar, .itemid-109 #g-mainbar, .itemid-110 #g-mainbar, .itemid-106 .blog-featured, .itemid-107 .blog-featured, .itemid-108 .blog-featured, .itemid-109 .blog-featured, .itemid-110 .blog-featured, ul.pagination-prev-next, ul.pagenav, .blog-item ul.pagination, .item-page ul.pagination {
  display: none !important;
}
/* Services + Projects: reuse Home service tile classes (magenta icons/pill tags)
 * because Kim's brief inherits Home layout. The classes g-home-services and
 * g-home-projects are already applied via YAML class field. */
/* Gallery imagegrid: 4-col responsive with consistent aspect ratio + hover caption */
.g-gallery-grid .g-imagegrid, .g-services-gallery .g-imagegrid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr);
  gap: 1rem;
}
@media (max-width: 60rem) {
  .g-gallery-grid .g-imagegrid, .g-services-gallery .g-imagegrid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 30rem) {
  .g-gallery-grid .g-imagegrid, .g-services-gallery .g-imagegrid {
    grid-template-columns: 1fr;
  }
}
.g-gallery-grid .g-imagegrid-item, .g-services-gallery .g-imagegrid-item {
  aspect-ratio: 1 !important;
  overflow: hidden;
  position: relative;
  border-radius: var(--radius-md);
}
.g-gallery-grid .g-imagegrid-item img, .g-services-gallery .g-imagegrid-item img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block;
  transition: transform 300ms var(--ease-out);
}
.g-gallery-grid .g-imagegrid-item:hover img, .g-services-gallery .g-imagegrid-item:hover img {
  transform: scale(1.05);
}
.g-gallery-grid .g-imagegrid-caption, .g-services-gallery .g-imagegrid-caption {
  position: absolute !important;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 0.75rem 1rem;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0));
  color: #fff !important;
  font-size: 0.85rem;
  letter-spacing: 0.03em;
  opacity: 0;
  transition: opacity 200ms;
}
.g-gallery-grid .g-imagegrid-item:hover .g-imagegrid-caption, .g-services-gallery .g-imagegrid-item:hover .g-imagegrid-caption {
  opacity: 1;
}
/* Services Reassurance block: centre the pull-quote and add breathing room */
.g-services-reassurance {
  padding: 3rem 0 2rem;
}
/* ============================================================
 * KIM PHASE 3 — Project detail pages (article body render)
 * ============================================================ */
/* Hide the default hero image on project detail pages (they use their own hero image in article body) */
.itemid-112 #g-header, .itemid-113 #g-header, .itemid-114 #g-header, .itemid-115 #g-header, .itemid-116 #g-header, .itemid-117 #g-header, .itemid-118 #g-header, .itemid-119 #g-header, .itemid-120 #g-header, .itemid-121 #g-header {
  display: none !important;
}
.g-project-detail {
  color: #E9E2CF;
  font-family: var(--font-body);
  line-height: 1.7;
}
.g-project-hero {
  height: 50vh;
  min-height: 400px;
  background-size: cover;
  background-position: center;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  /* Full-bleed WITHOUT inflating the box. The old `margin: 0 -100vw;
     padding: 0 100vw` made this element ~4006px wide at a 1440px viewport,
     and background-size:cover sizes against that box — so the image was
     upscaled ~1.67x and most of it cropped off-screen. That, not the source
     images, is why the heroes looked soft. */
  width: 100vw;
  max-width: 100vw;
  margin: 0 calc(50% - 50vw) 3rem;
  padding: 0;
  box-shadow: inset 0 0 300px rgba(0, 0, 0, 0.6);
}
.g-project-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.5) 100%);
}
.g-project-title {
  position: relative;
  z-index: 2;
  color: #fff;
  font-family: var(--font-display);
  font-size: 3.5rem;
  font-weight: 400;
  letter-spacing: 0.02em;
  text-align: center;
  text-shadow: 0 4px 20px rgba(0, 0, 0, 0.5);
  margin: 0;
}
.g-project-section {
  max-width: 60rem;
  margin: 0 auto 3rem;
  padding: 0 1rem;
}
.g-project-section h2 {
  font-family: var(--font-display);
  color: var(--re-cream);
  font-size: 2rem;
  font-weight: 400;
  letter-spacing: 0.02em;
  margin: 0 0 1.5rem;
  text-align: center;
}
.g-project-tagline {
  font-family: var(--font-display);
  font-size: 1.5rem;
  font-style: italic;
  color: var(--re-light);
  text-align: center;
  margin: 0 auto 2rem;
  max-width: 45rem;
}
.g-project-section p {
  color: var(--re-cream);
  line-height: 1.7;
  font-size: 1.05rem;
}
/* 2-column Objective section */
.g-project-2col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
  align-items: start;
}
.g-project-2col-text ul {
  list-style: none;
  padding: 0;
  margin: 1rem 0;
}
.g-project-2col-text li {
  padding: 0.5rem 0 0.5rem 1.5rem;
  color: var(--re-cream);
  position: relative;
  border-bottom: 1px solid rgba(233, 226, 207, 0.1);
}
.g-project-2col-text li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 1rem;
  width: 6px;
  height: 6px;
  background: var(--re-magenta);
  border-radius: 50%;
}
.g-project-2col-image img {
  width: 100%;
  height: auto;
  border-radius: var(--radius-lg);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);
}
@media (max-width: 48rem) {
  .g-project-2col {
    grid-template-columns: 1fr;
  }
}
/* Stats row */
.g-project-stats-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
  text-align: center;
  margin: 2rem 0;
}
.g-project-stat {
  padding: 2rem 1rem;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(233, 226, 207, 0.15);
  border-radius: var(--radius-lg);
}
.g-project-stat-num {
  display: block;
  font-family: var(--font-display);
  font-size: 3rem;
  font-weight: 400;
  color: var(--re-magenta);
  line-height: 1.1;
}
.g-project-stat-label {
  display: block;
  margin-top: 0.5rem;
  font-size: 0.85rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--re-cream);
}
@media (max-width: 48rem) {
  .g-project-stats-row {
    grid-template-columns: 1fr;
    gap: 1rem;
  }
  .g-project-stat {
    padding: 1.5rem 1rem;
  }
  .g-project-stat-num {
    font-size: 2.5rem;
  }
}
/* Services delivered */
.g-project-services-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 0.75rem;
  list-style: none;
  padding: 0;
  margin: 1rem 0;
}
.g-project-services-list li {
  padding: 0.75rem 1rem 0.75rem 2.5rem;
  background: rgba(255, 255, 255, 0.03);
  border-radius: var(--radius-md);
  border-left: 3px solid var(--re-magenta);
  color: var(--re-cream);
  position: relative;
}
.g-project-services-list li::before {
  content: "✓";
  position: absolute;
  left: 1rem;
  color: var(--re-magenta);
  font-weight: 600;
}
/* Partners row */
.g-project-partners-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 2rem;
  margin: 2rem 0;
}
.g-project-partners-row a {
  display: inline-block;
}
.g-project-partners-row a img {
  transition: opacity 200ms;
  opacity: 0.85;
}
.g-project-partners-row a:hover img {
  opacity: 1;
}
.g-project-partners-row img {
  filter: brightness(0) invert(1);
  max-height: 60px;
}
.g-partner-text-card {
  padding: 0.75rem 1.25rem;
  border: 1px solid rgba(233, 226, 207, 0.2);
  border-radius: var(--radius-md);
  color: var(--re-cream);
  font-size: 0.95rem;
  text-align: center;
}
.g-partner-text-card span {
  display: block;
  font-size: 0.75rem;
  opacity: 0.6;
  margin-top: 0.25rem;
}
/* Video */
.g-project-video .g-video-embed {
  position: relative;
  padding-top: 56.25%;
  overflow: hidden;
  border-radius: var(--radius-lg);
  margin: 1.5rem 0;
}
.g-project-video iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
/* Explore Other Projects grid */
.g-project-explore-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  margin: 2rem 0;
}
@media (max-width: 60rem) {
  .g-project-explore-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
@media (max-width: 30rem) {
  .g-project-explore-grid {
    grid-template-columns: 1fr;
  }
}
.g-explore-tile {
  aspect-ratio: 1.3333333333;
  background-size: cover;
  background-position: center;
  position: relative;
  border-radius: var(--radius-md);
  overflow: hidden;
  display: block;
  transition: transform 300ms var(--ease-out);
}
.g-explore-tile:hover {
  transform: translateY(-2px);
}
.g-explore-tile span {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.5);
  color: #fff;
  font-family: var(--font-display);
  font-size: 1.15rem;
  font-weight: 400;
  text-align: center;
  padding: 0.75rem;
  opacity: 0;
  transition: opacity 200ms;
}
.g-explore-tile:hover span {
  opacity: 1;
}
/* ============================================================
 * KIM PHASE 3 fix — Project detail pages styling
 * Individual project pages use outline 22 (Projects) but should HIDE
 * the projects listing header/grid and show only the article body.
 * ============================================================ */
.itemid-113 #g-above, .itemid-113 #g-feature, .itemid-114 #g-above, .itemid-114 #g-feature, .itemid-115 #g-above, .itemid-115 #g-feature, .itemid-116 #g-above, .itemid-116 #g-feature, .itemid-117 #g-above, .itemid-117 #g-feature, .itemid-118 #g-above, .itemid-118 #g-feature, .itemid-119 #g-above, .itemid-119 #g-feature, .itemid-112 #g-above, .itemid-112 #g-feature {
  display: none !important;
}
/* Make project detail mainbar dark cinematic like the rest of the site */
.itemid-112 #g-container-main, .itemid-113 #g-container-main, .itemid-114 #g-container-main, .itemid-115 #g-container-main, .itemid-116 #g-container-main, .itemid-117 #g-container-main, .itemid-118 #g-container-main, .itemid-119 #g-container-main {
  background: var(--re-dark) !important;
  color: var(--re-cream);
}
.itemid-112 #g-mainbar, .itemid-113 #g-mainbar, .itemid-114 #g-mainbar, .itemid-115 #g-mainbar, .itemid-116 #g-mainbar, .itemid-117 #g-mainbar, .itemid-118 #g-mainbar, .itemid-119 #g-mainbar, .itemid-112 .item-page, .itemid-113 .item-page, .itemid-114 .item-page, .itemid-115 .item-page, .itemid-116 .item-page, .itemid-117 .item-page, .itemid-118 .item-page, .itemid-119 .item-page {
  background: transparent !important;
  color: var(--re-cream);
}
/* Hide Joomla page-header + article info + pagination on project detail */
.itemid-112 .page-header, .itemid-113 .page-header, .itemid-114 .page-header, .itemid-115 .page-header, .itemid-116 .page-header, .itemid-117 .page-header, .itemid-118 .page-header, .itemid-119 .page-header, .itemid-112 .article-info, .itemid-113 .article-info, .itemid-114 .article-info, .itemid-115 .article-info, .itemid-116 .article-info, .itemid-117 .article-info, .itemid-118 .article-info, .itemid-119 .article-info, .itemid-112 ul.pagenav, .itemid-113 ul.pagenav, .itemid-114 ul.pagenav, .itemid-115 ul.pagenav, .itemid-116 ul.pagenav, .itemid-117 ul.pagenav, .itemid-118 ul.pagenav, .itemid-119 ul.pagenav {
  display: none !important;
}
/* Project detail body — normal width, dark green background */
.itemid-112 .com-content-article__body, .itemid-113 .com-content-article__body, .itemid-114 .com-content-article__body, .itemid-115 .com-content-article__body, .itemid-116 .com-content-article__body, .itemid-117 .com-content-article__body, .itemid-118 .com-content-article__body, .itemid-119 .com-content-article__body {
  background: var(--re-dark);
  margin: 0 !important;
  padding: 0 !important;
}
/* ============================================================
 * KIM PHASE 5 — layout + spacing + service dots refinements
 * ============================================================ */
/* --- Footer: also add nav quick-links to third column position (already there via horizontalmenu-7400) --- */
/* --- Home: tighten spacing between 1st and 2nd utility text blocks --- */
.itemid-101 #g-utility > .g-container > .g-grid:first-child {
  padding-bottom: 0 !important;
}
.itemid-101 #g-utility > .g-container > .g-grid + .g-grid {
  padding-top: 0.5rem !important;
}
/* --- Home Our Services heading: left-align, match Featured Projects style --- */
.g-home-services > .g-gridpromogallery > .g-gridpromogallery-title, .g-home-services .g-gridpromogallery-title {
  text-align: left !important;
  padding-left: 4rem;
  font-family: var(--font-display);
  font-size: 2.5rem;
  font-weight: 400;
  color: var(--re-cream);
  letter-spacing: 0.02em;
  margin: 0 0 1.5rem;
}
.g-home-services .g-gridpromogallery-desc {
  padding: 0 4rem 3rem !important;
  /* extra spacing before image gallery */
}
/* --- SMALL magenta DOTS above service headings (Kim: 70% smaller, no icon, centred above heading) --- */
.g-home-services .g-gridpromogallery-item-tag {
  width: 16px !important;
  /* 56px * ~30% = 16px */
  height: 16px !important;
  min-width: 16px !important;
  min-height: 16px !important;
  background: var(--re-magenta) !important;
  border-radius: 999px !important;
  position: absolute !important;
  top: auto !important;
  right: auto !important;
  left: 50% !important;
  /* centre horizontally */
  bottom: 4.5rem !important;
  /* above the title text */
  transform: translateX(-50%);
  z-index: 10 !important;
  padding: 0 !important;
  color: transparent !important;
  font-size: 0 !important;
  overflow: hidden;
}
/* Remove the Lucide icon SVG background */
.g-home-services .g-gridpromogallery-item-tag::before {
  content: none !important;
  background: none !important;
}
.g-home-services .g-gridpromogallery-item-title {
  text-align: center !important;
  left: 0 !important;
  right: 0 !important;
  padding: 0 1rem;
}
/* --- Home: tighten dark green section (Why Regen list vertically centred) --- */
.itemid-101 #g-expanded {
  padding-top: 2rem !important;
  padding-bottom: 2rem !important;
}
.itemid-101 #g-expanded .g-contentlist {
  display: flex;
  flex-direction: column;
  justify-content: center;
}
/* --- About: line break between Clients text and grid --- */
.g-about-clients > .g-gridpromogallery-desc, .g-about-clients .g-gridpromogallery-desc {
  padding-bottom: 2rem !important;
  border-bottom: 1px solid rgba(233, 226, 207, 0.15);
  margin-bottom: 2rem;
}
/* --- About: Part of the Regen Family — LIGHTER green background --- */
.g-regen-family {
  background: var(--re-light) !important;
  color: var(--re-ink) !important;
  padding: 4rem 2rem !important;
  margin: 0 -100vw !important;
  padding-left: calc(50vw - 50%) !important;
  padding-right: calc(50vw - 50%) !important;
}
.g-regen-family .g-blockcontent-headline, .g-regen-family h2 {
  color: var(--re-dark) !important;
}
.g-regen-family p {
  color: var(--re-ink) !important;
}
.g-regen-family-logos img {
  filter: none !important;
  /* remove the invert filter — show natural colors on lighter green */
}
.g-regen-family-logos .g-family-text-logo {
  color: var(--re-dark) !important;
}
/* --- About: vertical spacing below Explore Projects images before View button --- */
.g-explore-tiles + .g-explore-projects, #g-extension.outline-20 .g-gridpromogallery {
  margin-bottom: 3rem !important;
}
#g-extension .g-promocontent-readmore-wrap, #g-extension .readmore {
  margin-top: 3rem;
}
/* --- Services: Our work in pictures — lighter green background --- */
.g-services-gallery {
  background: var(--re-light) !important;
  color: var(--re-ink) !important;
  padding: 3rem 2rem !important;
  margin: 0 -100vw;
  padding-left: calc(50vw - 50%) !important;
  padding-right: calc(50vw - 50%) !important;
  border-radius: 0;
}
.g-services-gallery .g-imagegrid-title, .g-services-gallery h2 {
  color: var(--re-dark) !important;
  margin-bottom: 1rem !important;
  /* tighten to single line-break */
}
.g-services-gallery .g-imagegrid-desc {
  color: var(--re-ink);
  margin-bottom: 1rem !important;
}
.g-services-gallery .g-imagegrid {
  margin-top: 0.5rem !important;
  /* single line break */
}
/* --- Projects: dropdown bg = dark green 20% transparent --- */
#g-navigation .g-sublevel {
  background: rgba(60, 77, 63, 0.85) !important;
  /* dark green 85% opacity ~ 20% transparent */
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  border: 0 !important;
}
#g-navigation .g-dropdown {
  background: rgba(60, 77, 63, 0.85) !important;
  border: 0 !important;
}
#g-navigation .g-dropdown .g-menu-item .g-menu-item-container {
  color: var(--re-cream) !important;
}
#g-navigation .g-dropdown .g-menu-item .g-menu-item-container:hover {
  background: rgba(171, 38, 140, 0.3) !important;
  color: #fff !important;
}
/* ============================================================
 * KIM PHASE 5 — bug fixes v2
 * ============================================================ */
/* Force Our Foundation 2-col (block layout when scoped class matches) */
.g-our-foundation .g-content {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 3rem;
  align-items: start;
}
.g-our-foundation .g-content > * {
  grid-column: 1;
}
.g-our-foundation .g-content > img {
  grid-column: 2 !important;
  grid-row: 1 / -1;
  width: 100%;
  height: auto;
  max-height: 500px;
  object-fit: cover;
  border-radius: 0 !important;
}
@media (max-width: 48rem) {
  .g-our-foundation .g-content {
    grid-template-columns: 1fr !important;
  }
  .g-our-foundation .g-content > img {
    grid-column: 1 !important;
    grid-row: auto;
    order: -1;
  }
}
/* Fix service dots — position ABOVE the title text via bottom offset */
.g-home-services .g-gridpromogallery-item-tag, .g-services-grid .g-gridpromogallery-item-tag {
  width: 12px !important;
  height: 12px !important;
  min-width: 12px !important;
  min-height: 12px !important;
  background: var(--re-magenta) !important;
  border-radius: 999px !important;
  position: absolute !important;
  left: 50% !important;
  right: auto !important;
  top: auto !important;
  bottom: 5rem !important;
  /* well above the title */
  transform: translateX(-50%);
  z-index: 10 !important;
  padding: 0 !important;
  color: transparent !important;
  font-size: 0 !important;
  overflow: visible;
  box-shadow: 0 0 10px rgba(171, 38, 140, 0.4);
}
.g-home-services .g-gridpromogallery-item-tag::before, .g-services-grid .g-gridpromogallery-item-tag::before {
  content: none !important;
  display: none !important;
}
/* Big serif on Home Our Services heading (match Featured Projects) — force left-align */
#g-feature .g-home-services .g-gridpromogallery-title, .itemid-101 .g-home-services .g-gridpromogallery-title {
  font-family: var(--font-display) !important;
  font-size: 2.5rem !important;
  font-weight: 400 !important;
  text-align: left !important;
  color: var(--re-cream) !important;
  margin: 0 4rem 1.5rem !important;
}
.itemid-101 .g-home-services .g-gridpromogallery-desc {
  padding: 0 4rem 3rem !important;
  color: var(--re-cream);
}
/* Services page: big serif heading like Home Our Services */
.itemid-106 .g-services-overview .g-superpromo, .itemid-106 h2.g-superpromo {
  font-size: 3rem !important;
  text-align: center;
}
.itemid-106 .g-services-grid .g-gridpromogallery-title {
  font-family: var(--font-display) !important;
  font-size: 2.5rem !important;
  font-weight: 400 !important;
  text-align: left !important;
  color: var(--re-cream) !important;
  margin: 0 4rem 1.5rem !important;
}
/* Services gallery — enforce 4-col grid and consistent square images */
.g-services-gallery .g-imagegrid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 1rem !important;
  margin-top: 1rem !important;
}
.g-services-gallery .g-imagegrid-item {
  aspect-ratio: 1 !important;
  overflow: hidden !important;
  position: relative !important;
  border-radius: 6px;
}
.g-services-gallery .g-imagegrid-item img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}
@media (max-width: 60rem) {
  .g-services-gallery .g-imagegrid {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}
/* Force max specificity on Home Our Services heading left-align */
body.itemid-101 #g-feature .g-gridpromogallery > h2.g-gridpromogallery-title, body.itemid-101 #g-feature .g-gridpromogallery > .g-gridpromogallery-title, html body.itemid-101 #g-feature .g-home-services .g-gridpromogallery-title {
  text-align: left !important;
  padding-left: 4rem !important;
  font-family: var(--font-display) !important;
  font-size: 2.5rem !important;
  font-weight: 400 !important;
}
/* Force Our Foundation 2-col with max specificity */
html body #g-above .g-our-foundation .g-content, .g-blockcontent.g-our-foundation .g-content {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 3rem !important;
  align-items: start !important;
}
.g-our-foundation .g-content h2, .g-our-foundation .g-content .g-blockcontent-headline {
  grid-column: 1 !important;
  grid-row: 1 !important;
}
.g-our-foundation .g-content .g-blockcontent-description, .g-our-foundation .g-content > div:not(:has(img)) {
  grid-column: 1 !important;
  grid-row: 2 !important;
}
.g-our-foundation .g-content img {
  grid-column: 2 !important;
  grid-row: 1 / span 3 !important;
  border-radius: 0 !important;
  width: 100% !important;
  max-height: 400px;
  object-fit: cover;
}
/* ============================================================
 * KIM PHASE 5b — Tina/Kim reconciliation fixes (final pass)
 * ============================================================ */
/* Home "Our services" heading — LEFT-aligned + big serif matching Featured Projects.
 * Even higher specificity to beat Requiem template rules. */
html body.itemid-101 #g-feature .g-gridpromogallery > .g-gridpromogallery-title, html body.itemid-101 #g-feature h2.g-gridpromogallery-title {
  text-align: left !important;
  padding-left: 2rem !important;
  font-family: "Libre Baskerville", Georgia, serif !important;
  font-size: 2.5rem !important;
  font-weight: 400 !important;
  color: var(--re-cream) !important;
  letter-spacing: 0.02em !important;
  margin: 0 auto 1rem 2rem !important;
}
html body.itemid-101 #g-feature .g-gridpromogallery > .g-gridpromogallery-desc, html body.itemid-101 #g-feature .g-gridpromogallery-desc {
  padding: 0 2rem 3rem !important;
  text-align: left !important;
}
/* Service tile magenta dot — ABOVE the title text.
 * Title has bottom: 1rem font-size ~14px. Position dot at bottom:3.5rem so it sits above title. */
body.itemid-101 .g-home-services .g-gridpromogallery-item-tag, body.itemid-106 .g-services-grid .g-gridpromogallery-item-tag {
  width: 10px !important;
  height: 10px !important;
  min-width: 10px !important;
  min-height: 10px !important;
  background: var(--re-magenta) !important;
  border-radius: 50% !important;
  position: absolute !important;
  left: 50% !important;
  right: auto !important;
  top: auto !important;
  bottom: 3.75rem !important;
  /* ~60px from bottom, above the title */
  transform: translateX(-50%) !important;
  z-index: 15 !important;
  padding: 0 !important;
  color: transparent !important;
  font-size: 0 !important;
  box-shadow: 0 0 8px rgba(171, 38, 140, 0.5);
}
body.itemid-101 .g-home-services .g-gridpromogallery-item-tag::before, body.itemid-106 .g-services-grid .g-gridpromogallery-item-tag::before {
  content: none !important;
  background: none !important;
  display: none !important;
}
/* Home Featured Projects heading — style if not already matching */
body.itemid-101 #g-extension .g-gridpromogallery-title {
  font-family: "Libre Baskerville", Georgia, serif !important;
  font-size: 2.5rem !important;
  font-weight: 400 !important;
  text-align: left !important;
  padding-left: 2rem !important;
  color: var(--re-cream);
  letter-spacing: 0.02em;
  margin: 0 auto 1rem 2rem !important;
}
/* Home "Our objective is to" — force the block to render prominently */
.g-our-objective .g-blockcontent-headline {
  font-family: "Libre Baskerville", Georgia, serif !important;
  font-size: 2.5rem !important;
  font-weight: 400 !important;
  text-align: center !important;
  color: var(--re-cream) !important;
  margin: 0 auto 1.5rem !important;
}
.g-our-objective .g-blockcontent-description {
  text-align: center;
  font-size: 1.15rem;
  max-width: 60rem;
  margin: 0 auto;
  color: var(--re-cream);
}
/* Contact — form on right, Get in Touch on left (2-col utility layout) */
body.itemid-110 #g-utility {
  padding: 3rem 0 !important;
}
body.itemid-110 #g-utility .g-contact {
  padding-right: 2rem;
}
body.itemid-110 #g-utility .g-enquiry-form {
  padding-left: 2rem;
}
body.itemid-110 #g-utility > .g-container > .g-grid + .g-grid {
  margin-top: 3rem;
}
/* Contact — Submit button: pill, magenta bg, white text (matches sitewide primary CTA) */
body.itemid-110 .g-form-submit, body.itemid-110 button[type="submit"] {
  display: inline-block !important;
  background: var(--re-magenta) !important;
  color: #fff !important;
  border: none !important;
  padding: 0.75em 2.5em !important;
  font-family: "Cabin", sans-serif !important;
  font-weight: 500 !important;
  font-size: 1rem !important;
  letter-spacing: 0.05em !important;
  border-radius: 999px !important;
  text-transform: none !important;
  cursor: pointer !important;
  transition: background 200ms var(--ease-out), transform 200ms var(--ease-out) !important;
}
body.itemid-110 .g-form-submit:hover, body.itemid-110 button[type="submit"]:hover {
  background: #8f1e73 !important;
  color: #fff !important;
  transform: translateY(-1px) !important;
}
/* Regen Family — force the Planters image to size properly (not text logo) */
.g-regen-family-logos img[src*="sister-planters"] {
  max-height: 60px;
  width: auto;
}
/* Careers Open Roles heading — style matching Home Our objective */
.g-open-roles .g-blockcontent-headline {
  font-family: "Libre Baskerville", Georgia, serif !important;
  font-size: 2.5rem !important;
  font-weight: 400 !important;
  text-align: center !important;
  color: var(--re-cream) !important;
  margin: 0 auto 1.5rem !important;
  display: block !important;
}
/* ============================================================
 * KIM PHASE 6 — About restructure + Project detail + Gallery + Footer nav
 * ============================================================ */
/* --- About Our Foundation now in expanded section (with Family) --- */
.itemid-105 #g-expanded {
  background: var(--re-light) !important;
  color: var(--re-ink) !important;
  padding: 4rem 0 !important;
}
.itemid-105 #g-expanded .g-our-foundation, .itemid-105 #g-expanded .g-regen-family {
  background: transparent !important;
  color: var(--re-ink) !important;
  padding: 2rem 1rem !important;
  margin: 0 !important;
  max-width: 75rem;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* Our Foundation 2-col: vertically centre image with heading + body */
.itemid-105 .g-our-foundation .g-content {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 3rem !important;
  align-items: center !important;
}
.itemid-105 .g-our-foundation .g-content > * {
  grid-column: 1 !important;
}
.itemid-105 .g-our-foundation .g-content > img {
  grid-column: 2 !important;
  grid-row: 1 / span 3 !important;
  align-self: center !important;
  width: 100% !important;
  height: auto !important;
  max-height: 400px !important;
  object-fit: cover !important;
  border-radius: 0 !important;
  /* Kim: square/angled corners consistent */
}
.itemid-105 .g-our-foundation h2, .itemid-105 .g-our-foundation .g-blockcontent-headline {
  color: var(--re-dark) !important;
  text-align: left !important;
  margin: 0 0 1rem !important;
}
.itemid-105 .g-our-foundation .g-blockcontent-description, .itemid-105 .g-our-foundation p {
  color: var(--re-ink) !important;
}
/* Our Approach: swap to image LEFT + text RIGHT + vertical center */
.itemid-105 .g-2col-intro:not(.g-our-foundation) .g-content {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 3rem !important;
  align-items: center !important;
}
.itemid-105 .g-2col-intro:not(.g-our-foundation) .g-content > * {
  grid-column: 2 !important;
  /* text on the RIGHT */
}
.itemid-105 .g-2col-intro:not(.g-our-foundation) .g-content > img {
  grid-column: 1 !important;
  /* image on the LEFT */
  grid-row: 1 / span 3 !important;
  align-self: center !important;
  width: 100% !important;
  height: auto !important;
  max-height: 400px !important;
  object-fit: cover !important;
  border-radius: 0 !important;
}
/* Regen Family: align body text with rest of page content */
.g-regen-family {
  max-width: 75rem !important;
  margin: 0 auto !important;
  text-align: center !important;
}
.g-regen-family .g-blockcontent-description, .g-regen-family > p, .g-regen-family p {
  max-width: 60rem !important;
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: left !important;
}
.g-regen-family-logos {
  justify-content: center !important;
}
/* Project detail — objective image with angled/square edges + focus */
.g-project-2col-image img {
  border-radius: 0 !important;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4) !important;
  filter: none !important;
}
.g-project-hero {
  filter: none !important;
  box-shadow: none !important;
}
.g-project-hero::before {
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0.15) 0%, rgba(0, 0, 0, 0.4) 100%) !important;
}
/* Project detail — cream stat boxes with dark green text */
.g-project-stats-row .g-project-stat {
  background: var(--re-cream) !important;
  border: 1px solid var(--border-default) !important;
  color: var(--re-dark) !important;
  padding: 2rem 1.5rem !important;
}
.g-project-stat-num {
  color: var(--re-magenta) !important;
  /* highlights magenta */
  font-family: "Libre Baskerville", Georgia, serif !important;
  font-size: 3rem !important;
  font-weight: 400 !important;
}
.g-project-stat-label {
  color: var(--re-dark) !important;
  font-size: 0.85rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
/* Project detail — Services Delivered on cream */
.g-project-services-delivered {
  background: var(--re-cream);
  color: var(--re-dark);
  padding: 3rem 2rem !important;
  margin: 3rem 0 !important;
  max-width: 60rem;
  border-radius: 0;
}
.g-project-services-delivered h2 {
  color: var(--re-dark) !important;
}
.g-project-services-list li {
  background: rgba(60, 77, 63, 0.05) !important;
  color: var(--re-dark) !important;
  border-left-color: var(--re-magenta) !important;
}
.g-project-services-list li::before {
  color: var(--re-magenta) !important;
}
/* Remove "Project Video" heading (Kim's request) */
.g-project-video h2 {
  display: none !important;
}
/* Explore Other Projects — line break at end of light green section */
.g-project-explore {
  padding-bottom: 4rem !important;
}
.g-project-explore .g-project-explore-grid {
  margin-bottom: 2rem !important;
}
.g-project-explore::after {
  content: "";
  display: block;
  height: 2rem;
  border-bottom: 1px solid rgba(233, 226, 207, 0.15);
  margin-top: 2rem;
}
/* --- Gallery: images fill full square + hover show caption + scroll animation --- */
.g-gallery-grid .g-imagegrid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 1rem !important;
}
.g-gallery-grid .g-imagegrid-item {
  aspect-ratio: 1 !important;
  overflow: hidden !important;
  position: relative !important;
  border-radius: 0 !important;
}
.g-gallery-grid .g-imagegrid-item img, .g-gallery-grid .g-imagegrid-item picture, .g-gallery-grid .g-imagegrid-item picture img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
  transition: transform 500ms var(--ease-out);
}
.g-gallery-grid .g-imagegrid-item:hover img {
  transform: scale(1.05);
}
/* Hover caption overlay.
   NOTE: `.g-imagegrid-item::after` was removed from this selector — the
   Gallery page now uses the Services-gallery treatment (magenta ::before +
   flower + white caption ::after). Leaving ::after here painted an opaque
   dark-green box at z-index 3 ON TOP of the magenta wash, because its
   `background: … !important` beat the later, more specific rule that never
   declared a background. */
.g-gallery-grid .g-imagegrid-caption {
  position: absolute !important;
  inset: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  background: rgba(60, 77, 63, 0.85) !important;
  color: var(--re-cream) !important;
  font-family: "Libre Baskerville", Georgia, serif;
  font-size: 1rem;
  text-align: center;
  padding: 1rem;
  opacity: 0;
  transition: opacity 300ms var(--ease-out);
  z-index: 3;
}
.g-gallery-grid .g-imagegrid-item:hover .g-imagegrid-caption {
  opacity: 1 !important;
}
/* Legacy zoom transform on the gallery image — superseded by the
   magenta-wash hover, which keeps the photo still and fully opaque. */
.g-gallery-grid .g-imagegrid-item:hover img {
  transform: none;
}
/* --- Services page: revert gallery to previous cinematic layout (dark, not lighter green) --- */
.g-services-gallery {
  background: transparent !important;
  color: var(--re-cream) !important;
  padding: 2rem 1rem !important;
  margin: 0 !important;
}
.g-services-gallery h2, .g-services-gallery .g-imagegrid-title {
  color: var(--re-cream) !important;
  margin-bottom: 1rem !important;
}
.g-services-gallery .g-imagegrid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 1rem !important;
  margin-top: 0.5rem !important;
}
.g-services-gallery .g-imagegrid-item {
  aspect-ratio: 1 !important;
  overflow: hidden !important;
  position: relative !important;
  border-radius: 0 !important;
}
.g-services-gallery .g-imagegrid-item img {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
}
/* --- Homepage dark green section: vertically centre text rows (H6) --- */
.itemid-101 #g-expanded {
  min-height: 25rem;
  display: flex !important;
  align-items: center !important;
}
.itemid-101 #g-expanded > .g-container {
  padding-top: 0 !important;
  padding-bottom: 3rem !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  gap: 1rem !important;
}
/* Also drop top padding on the objective particle wrapper */
body.itemid-101 #blockcontent-5501-particle {
  padding-top: 0 !important;
  margin-top: 0 !important;
}
/* Reduce #g-expanded top padding + min-height so total = -2 line breaks */
.itemid-101 #g-expanded {
  min-height: auto !important;
  padding-top: 0 !important;
}
/* ============================================================
 * KIM PHASE 6b — Fix Our Services + Featured Projects headings
 * Kim's admin created blockcontent-1941 with <p style="text-align:center;">Our services</p>
 * as the headline. Override the inline text-align + style as big serif.
 * ============================================================ */
/* Home Our Services heading — Kim's blockcontent-1941 headline */
body.itemid-101 #g-feature .g-blockcontent-headline, body.itemid-101 #g-feature .g-blockcontent-headline p, body.itemid-101 #g-feature h2.g-blockcontent-headline, body.itemid-101 #g-feature .g-blockcontent > .g-blockcontent-headline {
  text-align: left !important;
  padding-left: 2rem !important;
  font-family: "Libre Baskerville", Georgia, serif !important;
  font-size: 1.9rem !important;
  /* 30.4px — sitewide section-heading size */
  font-weight: 400 !important;
  color: var(--re-cream) !important;
  letter-spacing: 0.02em !important;
  margin: 0 0 1rem !important;
}
/* Home Featured Projects heading — Kim's blockcontent-2955 headline */
body.itemid-101 #g-extension .g-blockcontent-headline, body.itemid-101 #g-extension .g-blockcontent-headline p, body.itemid-101 #g-extension h2.g-blockcontent-headline {
  text-align: left !important;
  padding-left: 2rem !important;
  font-family: "Libre Baskerville", Georgia, serif !important;
  font-size: 1.9rem !important;
  /* 30.4px — sitewide section-heading size */
  font-weight: 400 !important;
  color: var(--re-cream) !important;
  letter-spacing: 0.02em !important;
  margin: 0 0 1rem !important;
  text-transform: none !important;
}
/* Match same treatment on the Services page 'Service categories' heading
   (WHAT WE DELIVER lives in #g-above and is not matched by this rule) */
body.itemid-106 #g-feature .g-blockcontent-headline, body.itemid-106 #g-feature .g-blockcontent-headline p {
  text-align: left !important;
  padding-left: 2rem !important;
  font-family: "Libre Baskerville", Georgia, serif !important;
  font-size: 1.9rem !important;
  /* 30.4px — sitewide section-heading size */
  font-weight: 400 !important;
  color: var(--re-cream) !important;
  margin: 0 0 1rem !important;
}
/* ============================================================
 * KIM — Gallery + Services gallery clean 4-col grid
 * (all Kim's other requests from Phase 5-6 remain intact)
 * ============================================================ */
/* Gallery page — 4-col × 12-row, identical square tiles */
body.itemid-108 .g-imagegrid-wrapper, body.itemid-108 .g-imagegrid-wrapper.g-imagegrid-4cols {
  display: grid !important;
  grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
  gap: 1rem !important;
  width: 100% !important;
  max-width: 100% !important;
  padding: 0 !important;
  margin: 2rem 0 !important;
}
body.itemid-108 .g-imagegrid {
  padding: 2rem !important;
  max-width: 90rem;
  margin: 0 auto;
}
body.itemid-108 .g-imagegrid-item {
  aspect-ratio: 1 !important;
  overflow: hidden !important;
  position: relative !important;
  border-radius: 0 !important;
  margin: 0 !important;
  width: 100% !important;
  height: auto !important;
}
body.itemid-108 .g-imagegrid-item > *, body.itemid-108 .g-imagegrid-item a, body.itemid-108 .g-imagegrid-link, body.itemid-108 .g-imagegrid-item img, body.itemid-108 .g-imagegrid-item picture, body.itemid-108 .g-imagegrid-item picture img, body.itemid-108 .g-imagegrid-item span {
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
  position: absolute !important;
  inset: 0 !important;
}
body.itemid-108 .g-imagegrid-item a {
  position: static !important;
}
/* Mobile: 2-col on small screens */
@media (max-width: 60rem) {
  body.itemid-108 .g-imagegrid-wrapper, body.itemid-108 .g-imagegrid-wrapper.g-imagegrid-4cols {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}
/* ============================================================
 * Footer alignment — Kim: Level 1 line should sit on same height as logo + nav
 * ============================================================ */
#g-footer > .g-container > .g-grid {
  align-items: start !important;
}
#g-footer .g-block {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
}
#g-footer .g-block .g-content {
  padding-top: 0 !important;
  margin-top: 0 !important;
}
/* Force AOS-affected footer blocks to their final position */
#g-footer .g-footer-address, #g-footer .g-footer-menu, #g-footer .g-footer-social, #g-footer .g-footer-logo, #g-footer [data-aos] {
  transform: none !important;
  opacity: 1 !important;
}
/* Also remove blockcontent-headline padding when empty */
#g-footer .g-blockcontent-headline:empty {
  display: none !important;
}
/* Footer logo — remove inline baseline gap by displaying img as block */
#g-footer .g-footer-logo, #g-footer .g-footer-logo img {
  display: block !important;
  vertical-align: top !important;
  line-height: 1 !important;
}
/* Footer menu items — LEFT-aligned consistently (Kim's request) */
#g-footer ul.g-footer-menu {
  display: grid !important;
  grid-template-columns: max-content max-content !important;
  column-gap: 2rem !important;
  row-gap: 0.4rem !important;
  justify-content: start !important;
  align-items: start !important;
  margin: 0 !important;
  padding: 0 !important;
  list-style: none !important;
}
#g-footer ul.g-footer-menu li {
  margin: 0 !important;
  padding: 0 !important;
  text-align: left !important;
  float: none !important;
}
#g-footer ul.g-footer-menu a {
  padding: 0.15rem 0 !important;
  display: inline-block;
  text-align: left !important;
  white-space: nowrap;
}
/* Home: Our services paragraph aligns with heading + line break before images */
body.itemid-101 #g-feature .g-blockcontent-description {
  padding-left: 2rem !important;
  padding-right: 2rem !important;
  margin-bottom: 3rem !important;
  /* line break before service tiles */
  max-width: 60rem;
}
body.itemid-101 #g-feature .g-gridpromogallery {
  margin-top: 2rem !important;
}
/* Home Our objective — swap sizes: label small, body big */
body.itemid-101 .g-our-objective .g-blockcontent-headline {
  font-family: "Cabin", sans-serif !important;
  font-size: 0.9rem !important;
  font-weight: 500 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.15em !important;
  color: rgba(233, 226, 207, 0.7) !important;
  margin: 0 auto 1rem !important;
}
body.itemid-101 .g-our-objective .g-blockcontent-description {
  font-family: "Libre Baskerville", Georgia, serif !important;
  font-size: 2rem !important;
  font-weight: 400 !important;
  line-height: 1.35 !important;
  color: var(--re-cream) !important;
  max-width: 60rem;
  margin: 0 auto !important;
  text-align: center !important;
}
/* Home 'View our projects' CTA button — LEFT-aligned under images, matching heading padding */
body.itemid-101 .g-home-view-projects-cta {
  text-align: left !important;
  padding: 2rem 2rem 1rem !important;
}
body.itemid-101 .g-home-view-projects-cta a, body.itemid-101 .g-home-view-projects-cta .g-promocontent-readmore, body.itemid-101 .g-home-view-projects-cta a.button-accent {
  display: inline-block !important;
  background: var(--re-magenta) !important;
  color: #fff !important;
  padding: 0.75em 2.5em !important;
  border-radius: 999px !important;
  font-family: "Cabin", sans-serif !important;
  font-weight: 500 !important;
  font-size: 1rem !important;
  letter-spacing: 0.05em !important;
  text-decoration: none !important;
  text-transform: none !important;
  border: none !important;
  transition: background 200ms var(--ease-out), transform 200ms var(--ease-out);
}
body.itemid-101 .g-home-view-projects-cta a:hover {
  background: #8f1e73 !important;
  transform: translateY(-1px);
  color: #fff !important;
}
/* Our Foundation now sits in /utility/ above Our Approach — dark green section like the rest of body */
body.itemid-105 #g-utility .g-our-foundation {
  background: transparent !important;
  color: var(--re-cream) !important;
  padding: 3rem 1rem !important;
  max-width: 75rem;
  margin: 0 auto !important;
}
body.itemid-105 #g-utility .g-our-foundation h2, body.itemid-105 #g-utility .g-our-foundation .g-blockcontent-headline {
  color: var(--re-cream) !important;
  font-family: "Libre Baskerville", Georgia, serif !important;
  /* no font-size — inherit base h2 so this matches Our Approach */
  font-weight: 400 !important;
  text-align: left !important;
  margin: 0 0 1rem !important;
}
body.itemid-105 #g-utility .g-our-foundation .g-blockcontent-description, body.itemid-105 #g-utility .g-our-foundation p {
  color: var(--re-cream) !important;
}
body.itemid-105 #g-utility .g-our-foundation .g-content {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 3rem !important;
  align-items: center !important;
}
body.itemid-105 #g-utility .g-our-foundation .g-content > * {
  grid-column: 1 !important;
}
body.itemid-105 #g-utility .g-our-foundation .g-content > img {
  grid-column: 2 !important;
  grid-row: 1 / span 3 !important;
  align-self: center !important;
  width: 100% !important;
  height: auto !important;
  max-height: 400px !important;
  object-fit: cover !important;
  border-radius: 0 !important;
}
/* About — flow Foundation into Approach as single section */
body.itemid-105 #g-utility .g-our-foundation {
  padding-bottom: 1rem !important;
}
body.itemid-105 #g-utility .g-blockcontent:not(.g-our-foundation), body.itemid-105 #g-utility .g-2col-intro:not(.g-our-foundation) {
  padding-top: 1rem !important;
  margin-top: 0 !important;
}
/* Reduce inter-row gap in About utility */
body.itemid-105 #g-utility > .g-container > .g-grid + .g-grid {
  margin-top: 0 !important;
}
body.itemid-105 #g-utility .g-grid {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
/* Kill the .g-content.g-particle margin/padding between Foundation and Approach */
body.itemid-105 #g-utility .g-particle {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
body.itemid-105 #g-utility .g-our-foundation {
  padding-bottom: 0 !important;
}
body.itemid-105 #g-utility .g-blockcontent:not(.g-our-foundation) {
  padding-top: 0 !important;
}
/* Further tighten Foundation → Approach — negative margin overlap to flow as one */
body.itemid-105 #g-utility > .g-container > .g-grid:nth-of-type(2) {
  margin-top: -3rem !important;
}
body.itemid-105 #g-utility .g-blockcontent:not(.g-our-foundation) {
  padding-top: 0 !important;
}
/* About Foundation — align image to top of section so it aligns with the heading */
body.itemid-105 #g-utility .g-our-foundation .g-content > img {
  align-self: start !important;
  max-height: 340px !important;
  height: 340px !important;
}
/* About Our Approach — image LEFT, text RIGHT, image SAME SIZE as Foundation image */
body.itemid-105 #g-utility .g-2col-intro:not(.g-our-foundation) .g-content > img {
  align-self: start !important;
  max-height: 340px !important;
  height: 340px !important;
  width: 100% !important;
  object-fit: cover !important;
}
/* Reduce space above 'Explore our services' button in Approach */
body.itemid-105 #g-utility .g-2col-intro:not(.g-our-foundation) a[href*="services"], body.itemid-105 #g-utility .g-2col-intro:not(.g-our-foundation) a.button-accent, body.itemid-105 #g-utility .g-2col-intro:not(.g-our-foundation) .button-accent {
  margin-top: 0.5rem !important;
}
body.itemid-105 #g-utility .g-2col-intro:not(.g-our-foundation) p:last-of-type {
  margin-bottom: 0.5rem !important;
}
/* About Foundation — tighten heading→paragraph so body text sits closer to image top */
body.itemid-105 #g-utility .g-our-foundation h2, body.itemid-105 #g-utility .g-our-foundation .g-blockcontent-headline {
  margin: 0 !important;
  line-height: 1.1 !important;
  padding-bottom: 0.25rem !important;
}
body.itemid-105 #g-utility .g-our-foundation .g-blockcontent-description, body.itemid-105 #g-utility .g-our-foundation p:first-of-type {
  margin-top: 0 !important;
  padding-top: 0 !important;
}
body.itemid-105 #g-utility .g-our-foundation p {
  margin-top: 0 !important;
  margin-bottom: 0.75rem !important;
}
/* Foundation image top-aligned with the BODY TEXT (not the heading) */
body.itemid-105 #g-utility .g-our-foundation .g-content > img {
  margin-top: 96px !important;
  /* offset past heading so image top = paragraph top */
}
/* ============================================================
 * About Clients — background images per card (all same size, aligned, spaced)
 * ============================================================ */
body.itemid-105 .g-about-clients .g-gridpromogallery-item {
  position: relative !important;
  overflow: hidden !important;
  aspect-ratio: 1 !important;
  background: transparent !important;
  border-radius: 4px;
  isolation: isolate;
  min-height: 260px;
}
/* Background image layer + darken overlay */
body.itemid-105 .g-about-clients .g-gridpromogallery-item::after {
  content: "";
  position: absolute !important;
  inset: 0 !important;
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  z-index: 0;
  filter: brightness(0.5);
}
/* Text/icon container ABOVE image */
body.itemid-105 .g-about-clients .g-gridpromogallery-item > * {
  position: relative;
  z-index: 2;
}
/* Assign background images per position (same order as icons above) */
body.itemid-105 .g-about-clients .g-gridpromogallery-item:nth-of-type(1)::after {
  background-image: url('../../../../images/pages/project-thegrove.jpg') !important;
}
body.itemid-105 .g-about-clients .g-gridpromogallery-item:nth-of-type(2)::after {
  background-image: url('../../../../images/pages/service-ecological.jpg') !important;
}
body.itemid-105 .g-about-clients .g-gridpromogallery-item:nth-of-type(3)::after {
  background-image: url('../../../../images/pages/project-brompton.jpg') !important;
}
body.itemid-105 .g-about-clients .g-gridpromogallery-item:nth-of-type(4)::after {
  background-image: url('../../../../images/pages/service-parks.jpg') !important;
}
body.itemid-105 .g-about-clients .g-gridpromogallery-item:nth-of-type(5)::after {
  background-image: url('../../../../images/pages/service-turf.jpg') !important;
}
body.itemid-105 .g-about-clients .g-gridpromogallery-item:nth-of-type(6)::after {
  background-image: url('../../../../images/pages/service-water.jpg') !important;
}
/* Ensure 3-col with equal spacing (only on inner wrapper) */
body.itemid-105 .g-about-clients .g-gridpromogallery-4cols, body.itemid-105 .g-about-clients .g-imagegrid-wrapper.g-imagegrid-4cols {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 1.5rem !important;
}
/* About Regen Family — reduce space above heading + remove white bg on logos */
body.itemid-105 #g-expanded {
  padding-top: 1.5rem !important;
}
body.itemid-105 .g-regen-family {
  padding-top: 0.5rem !important;
}
body.itemid-105 .g-regen-family .g-blockcontent-headline, body.itemid-105 .g-regen-family h2 {
  margin-top: 0 !important;
  padding-top: 0 !important;
}
/* Blend white backgrounds out of sister logos on the lighter-green section */
body.itemid-105 .g-regen-family-logos img[src*="sister-nurseries"], body.itemid-105 .g-regen-family-logos img[src*="sister-planters"], body.itemid-110 .g-regen-family-logos img[src*="sister-nurseries"], body.itemid-110 .g-regen-family-logos img[src*="sister-planters"] {
  mix-blend-mode: multiply !important;
  background: transparent !important;
}
/* About page — inherit Home Explore our projects styling on the same class */
body.itemid-105 #g-extension .g-blockcontent-headline, body.itemid-105 #g-extension .g-blockcontent-headline p, body.itemid-105 #g-extension h2.g-blockcontent-headline {
  text-align: left !important;
  padding-left: 2rem !important;
  font-family: "Libre Baskerville", Georgia, serif !important;
  font-size: 1.9rem !important;
  /* 30.4px — matches Our Foundation / Our Approach */
  font-weight: 400 !important;
  color: var(--re-cream) !important;
  letter-spacing: 0.02em !important;
  margin: 0 0 1rem !important;
  text-transform: none !important;
}
body.itemid-105 #g-extension .g-blockcontent-description {
  padding-left: 2rem !important;
  padding-right: 2rem !important;
  margin-bottom: 3rem !important;
  color: var(--re-cream);
  max-width: 60rem;
}
body.itemid-105 #g-extension .g-home-view-projects-cta {
  text-align: left !important;
  padding: 2rem 2rem 1rem !important;
}
body.itemid-105 #g-extension .g-home-view-projects-cta a, body.itemid-105 #g-extension .g-home-view-projects-cta a.button-accent {
  display: inline-block !important;
  background: var(--re-magenta) !important;
  color: #fff !important;
  padding: 0.75em 2.5em !important;
  border-radius: 999px !important;
  font-family: "Cabin", sans-serif !important;
  font-weight: 500 !important;
  font-size: 1rem !important;
  letter-spacing: 0.05em !important;
  text-decoration: none !important;
  text-transform: none !important;
  border: none !important;
}
body.itemid-105 #g-extension .g-home-view-projects-cta a:hover {
  background: #8f1e73 !important;
  color: #fff !important;
}
/* Services page — 'We ensure landscapes' block: centre + 15% left/right padding */
body.itemid-106 #blockcontent-6607-particle, body.itemid-106 #blockcontent-6607-particle .g-blockcontent {
  padding-left: 5% !important;
  padding-right: 5% !important;
}
body.itemid-106 #blockcontent-6607-particle .g-blockcontent-headline, body.itemid-106 #blockcontent-6607-particle h2.g-blockcontent-headline {
  text-align: center !important;
  padding-left: 0 !important;
  padding-right: 0 !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* Services page — tighten space between 'Our work in pictures' heading + gallery + lock grid alignment */
body.itemid-106 .g-services-gallery {
  padding-top: 0 !important;
  margin-top: 0.5rem !important;
}
body.itemid-106 .g-services-gallery .g-imagegrid-wrapper.g-imagegrid-4cols {
  grid-auto-rows: 1fr !important;
  align-items: stretch !important;
  justify-items: stretch !important;
  padding-top: 0 !important;
  margin-top: 0.5rem !important;
}
body.itemid-106 #blockcontent-6607-particle {
  padding-bottom: 0 !important;
}
/* Reduce spacing on parent utility/feature row containing the 'Our work in pictures' heading */
body.itemid-106 .g-blockcontent-headline:has(+ *):not(#blockcontent-6607-particle .g-blockcontent-headline) {
  margin-bottom: 0.5rem !important;
}
/* Explicit heading margin above gallery */
body.itemid-106 .g-imagegrid > .g-imagegrid-title, body.itemid-106 h2:has(+ .g-services-gallery) {
  margin-bottom: 0.5rem !important;
  padding-bottom: 0 !important;
}
/* Kill excess bottom padding on 'Our work in pictures' heading particle */
body.itemid-106 #blockcontent-3871-particle {
  padding-bottom: 0 !important;
  padding-top: 1rem !important;
  margin-bottom: 0 !important;
}
body.itemid-106 #blockcontent-3871-particle .g-blockcontent-headline {
  margin-bottom: 0.25rem !important;
  padding-bottom: 0 !important;
}
/* Services 'Our work in pictures' — tighten heading gap further */
body.itemid-106 #blockcontent-3871-particle {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
body.itemid-106 #blockcontent-3871-particle .g-blockcontent-headline {
  margin: 0 !important;
  padding: 0 !important;
  line-height: 1.2 !important;
}
body.itemid-106 .g-services-gallery {
  margin-top: 0 !important;
  padding-top: 0.25rem !important;
}
/* Services 'See gallery' CTA button — magenta pill, white text, left-aligned */
body.itemid-106 .g-services-see-gallery-cta {
  text-align: left !important;
  padding: 2rem 2rem 1rem !important;
}
body.itemid-106 .g-services-see-gallery-cta a, body.itemid-106 .g-services-see-gallery-cta a.button-accent {
  display: inline-block !important;
  background: var(--re-magenta) !important;
  color: #fff !important;
  padding: 0.75em 2.5em !important;
  border-radius: 999px !important;
  font-family: "Cabin", sans-serif !important;
  font-weight: 500 !important;
  font-size: 1rem !important;
  letter-spacing: 0.05em !important;
  text-decoration: none !important;
  text-transform: none !important;
  border: none !important;
  transition: background 200ms ease-out, transform 200ms ease-out;
}
body.itemid-106 .g-services-see-gallery-cta a:hover {
  background: #8f1e73 !important;
  color: #fff !important;
  transform: translateY(-1px);
}
/* Services 'Our work in pictures' — hover magnifying glass → logo flower */
body.itemid-106 .g-services-gallery .g-imagegrid-item a::before, body.itemid-106 .g-services-gallery .g-imagegrid-item a::after, body.itemid-106 .g-services-gallery .g-imagegrid-item::before, body.itemid-106 .g-services-gallery .g-imagegrid-item .g-imagegrid-hover {
  background-image: url('../../../../images/logos/logo-flower.png') !important;
  background-size: contain !important;
  background-repeat: no-repeat !important;
  background-position: center !important;
  content: "" !important;
}
/* Ensure hover overlay + flower icon show correctly */
body.itemid-106 .g-services-gallery .g-imagegrid-item {
  position: relative !important;
}
body.itemid-106 .g-services-gallery .g-imagegrid-item::before {
  position: absolute !important;
  inset: 0 !important;
  z-index: 3 !important;
  background-color: rgba(60, 77, 63, 0.85) !important;
  opacity: 0 !important;
  transition: opacity 250ms ease-out !important;
  pointer-events: none !important;
  content: "" !important;
  background-image: url('../../../../images/logos/logo-flower.png') !important;
  background-size: 40% auto !important;
  background-repeat: no-repeat !important;
  background-position: center 35% !important;
}
body.itemid-106 .g-services-gallery .g-imagegrid-item::after {
  content: attr(data-caption) !important;
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 20% !important;
  z-index: 4 !important;
  text-align: center !important;
  color: var(--re-cream) !important;
  font-family: "Libre Baskerville", Georgia, serif !important;
  font-size: 1rem !important;
  letter-spacing: 0.02em !important;
  padding: 0 1rem !important;
  opacity: 0 !important;
  transition: opacity 250ms ease-out !important;
  pointer-events: none !important;
}
body.itemid-106 .g-services-gallery .g-imagegrid-item:hover::before, body.itemid-106 .g-services-gallery .g-imagegrid-item:hover::after {
  opacity: 1 !important;
}
/* Reduce gap under gallery and above the See more button */
body.itemid-106 .g-services-see-gallery-cta {
  padding: 0.75rem 2rem 0.5rem !important;
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
body.itemid-106 .g-services-gallery {
  margin-bottom: 0 !important;
  padding-bottom: 0 !important;
}
body.itemid-106 .g-services-gallery .g-imagegrid-wrapper {
  margin-bottom: 0 !important;
  padding-bottom: 0 !important;
}
body.itemid-106 #g-expanded {
  padding-bottom: 1rem !important;
}
/* Services heading→gallery: FURTHER tighten to ~10-15px */
body.itemid-106 .g-services-gallery {
  margin-top: -1.5rem !important;
  padding-top: 0 !important;
}
body.itemid-106 .g-services-gallery .g-imagegrid-wrapper {
  margin-top: 0 !important;
  padding-top: 0 !important;
}
/* Project pages — Overview heading left-aligned (was centred) */
.g-project-overview h2 {
  text-align: left !important;
  padding-left: 0 !important;
  margin-left: 0 !important;
}
/* ============================================================
 * Project pages — carousel + smaller stat boxes aligned with image bottom
 * ============================================================ */
/* Inline stats (moved into left column, under bullet list) */
.g-project-stats-inline {
  margin-top: auto;
  padding-top: 1.25rem;
}
.g-project-stats-inline .g-project-stats-row.is-small {
  display: grid;
  grid-template-columns: repeat(2, minmax(min-content, 1fr));
  gap: 1rem;
  margin: 0 !important;
}
.g-project-stats-inline .g-project-stat {
  padding: 0.75rem 1rem !important;
  min-width: 0 !important;
}
.g-project-stats-inline .g-project-stat-num {
  font-size: 1.75rem !important;
  line-height: 1.1 !important;
}
.g-project-stats-inline .g-project-stat-label {
  font-size: 0.72rem !important;
  letter-spacing: 0.08em !important;
}
/* Make the 2col in objective section a flex layout so left col bottom aligns with right col */
.g-project-objective .g-project-2col {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 2.5rem !important;
  align-items: stretch !important;
}
.g-project-objective .g-project-2col-text {
  display: flex !important;
  flex-direction: column !important;
}
.g-project-objective .g-project-2col-image {
  display: flex !important;
  align-items: stretch;
}
/* Carousel container */
.g-project-carousel {
  position: relative;
  width: 100%;
  aspect-ratio: 1.1428571429;
  overflow: hidden;
  background: var(--re-dark);
  cursor: pointer;
}
.g-project-carousel:focus-visible {
  outline: 2px solid var(--re-magenta);
  outline-offset: 3px;
}
.g-project-carousel .g-carousel-slide {
  position: absolute;
  inset: 0;
  opacity: 0;
  transition: opacity 500ms ease;
}
.g-project-carousel .g-carousel-slide.is-active {
  opacity: 1;
}
.g-project-carousel .g-carousel-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.g-project-carousel .g-carousel-nav {
  position: absolute;
  bottom: 1rem;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 0.5rem;
  z-index: 5;
}
.g-project-carousel .g-carousel-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.4);
  border: none;
  padding: 0;
  cursor: pointer;
  transition: background 200ms;
}
.g-project-carousel .g-carousel-dot.is-active {
  background: var(--re-magenta);
}
.g-project-carousel .g-carousel-dot:hover {
  background: rgba(255, 255, 255, 0.8);
}
.g-project-carousel .g-carousel-gallery-icon {
  position: absolute;
  top: 1rem;
  right: 1rem;
  display: flex;
  align-items: center;
  gap: 0.35rem;
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
  padding: 0.35rem 0.7rem;
  border-radius: 999px;
  font-family: "Cabin", sans-serif;
  font-size: 0.8rem;
  z-index: 5;
  pointer-events: none;
}
.g-project-carousel .g-carousel-gallery-icon svg {
  width: 18px;
  height: 18px;
}
/* Ensure objective section ends cleanly + doesn't collapse into Services Delivered */
.g-project-objective {
  padding-bottom: 3rem !important;
  overflow: visible;
}
.g-project-services-delivered {
  margin-top: 2rem !important;
  clear: both;
}
/* Ensure stat boxes DON'T overlap parent section end */
.g-project-stats-inline {
  padding-bottom: 0.5rem;
}
/* Trim column gap slightly + keep gutters */
.g-project-objective .g-project-2col {
  gap: 3rem !important;
  padding: 0 2rem;
}
/* Project objective — carousel 10% smaller, more room for text col */
.g-project-objective .g-project-2col {
  grid-template-columns: 1.5fr 1fr !important;
  /* left ~60%, right ~40% */
}
/* Stats now under heading — no longer pinned to bottom */
.g-project-2col-text .g-project-stats-inline {
  margin-top: 1rem !important;
  margin-bottom: 1.5rem !important;
  padding-top: 0 !important;
}
/* Safety padding after project objective section */
.g-project-objective {
  padding-bottom: 4rem !important;
}
.g-project-objective .g-project-2col-text {
  min-height: 100%;
  padding-bottom: 0.5rem;
}
/* Project Objective heading — left-aligned */
.g-project-objective .g-project-2col-text h2 {
  text-align: left !important;
  margin-left: 0 !important;
  padding-left: 0 !important;
}
/* Stat boxes — keep content inside via smaller num when very narrow */
.g-project-stats-inline .g-project-stat {
  padding: 0.7rem 0.8rem !important;
  overflow: visible !important;
}
.g-project-stats-inline .g-project-stat-num {
  font-size: 1.35rem !important;
  white-space: nowrap;
  letter-spacing: -0.01em;
}
.g-project-stats-inline .g-project-stat-label {
  font-size: 0.68rem !important;
  line-height: 1.35 !important;
}
/* Prevent last bullet clipping under Services Delivered */
.g-project-objective {
  padding-bottom: 5rem !important;
}
.g-project-objective .g-project-2col-image {
  align-self: stretch;
}
.g-project-objective .g-project-carousel {
  width: 100%;
}
/* Let objective text col drive height + overflow visible */
.g-project-objective .g-project-2col-text {
  overflow: visible !important;
}
/* Services Delivered — within page frame, all items in single row */
.g-project-services-delivered {
  margin-left: 0 !important;
  margin-right: 0 !important;
  padding: 3rem 2rem !important;
  width: 100% !important;
  max-width: 100% !important;
}
.g-project-services-list {
  display: grid !important;
  grid-template-columns: repeat(5, minmax(0, 1fr)) !important;
  gap: 1rem !important;
  margin: 0 !important;
  padding: 0 !important;
  max-width: 100%;
}
@media (max-width: 60rem) {
  .g-project-services-list {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}
/* Objective bullets — align dots with body paragraph left edge */
.g-project-objective .g-project-2col-text ul {
  padding-left: 0 !important;
  margin-left: 0 !important;
  list-style: none;
}
.g-project-objective .g-project-2col-text ul li {
  padding-left: 1rem !important;
  position: relative;
}
.g-project-objective .g-project-2col-text ul li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--re-magenta);
}
/* FORCE bullet DOT alignment with body paragraph left */
.g-project-objective .g-project-2col, .g-project-objective .g-project-2col-text, .g-project-objective .g-project-2col-text ul {
  padding-left: 0 !important;
  margin-left: 0 !important;
}
/* ============================================================
 * Home galleries — standardise hover so WHOLE tile triggers hover
 * (Requiem default puts pointer-events:none on tile, auto on title only)
 * ============================================================ */
body.itemid-101 .g-home-services .g-gridpromogallery-item, body.itemid-101 .g-home-services .g-gridpromogallery-item-wrapper, body.itemid-101 .g-home-services .g-gridpromogallery-link, body.itemid-101 .g-home-services .g-gridpromogallery-item-img, body.itemid-101 .g-home-services .g-gridpromogallery-item-text, body.itemid-101 .g-home-services .g-gridpromogallery-item-title, body.itemid-101 .g-home-projects .g-gridpromogallery-item, body.itemid-101 .g-home-projects .g-gridpromogallery-item-wrapper, body.itemid-101 .g-home-projects .g-gridpromogallery-link, body.itemid-101 .g-home-projects .g-gridpromogallery-item-img, body.itemid-101 .g-home-projects .g-gridpromogallery-item-text, body.itemid-101 .g-home-projects .g-gridpromogallery-item-title {
  pointer-events: auto !important;
}
/* Keep decorative pieces (magenta dot / tag pill) inert so they don't intercept */
body.itemid-101 .g-home-services .g-gridpromogallery-item-tag, body.itemid-101 .g-home-projects .g-gridpromogallery-item-tag {
  pointer-events: none !important;
}
/* ============================================================
 * Home galleries — whole-tile hover overlay
 * Standard: hover anywhere on tile → whole image dims + darker overlay
 * ============================================================ */
/* Services grid — reset the top-half overlay and use full-tile hover */
body.itemid-101 .g-home-services .g-gridpromogallery-item {
  position: relative !important;
  overflow: hidden !important;
}
body.itemid-101 .g-home-services .g-gridpromogallery-item-img {
  position: relative !important;
  transition: transform 400ms ease-out;
}
body.itemid-101 .g-home-services .g-gridpromogallery-item::after {
  content: "";
  position: absolute !important;
  inset: 0 !important;
  z-index: 3;
  background: rgba(60, 77, 63, 0.55);
  opacity: 0;
  transition: opacity 300ms ease-out;
  pointer-events: none;
}
body.itemid-101 .g-home-services .g-gridpromogallery-item:hover::after {
  opacity: 1;
}
body.itemid-101 .g-home-services .g-gridpromogallery-item:hover .g-gridpromogallery-item-img {
  transform: scale(1.04);
}
/* Keep title always visible + strengthen on hover */
body.itemid-101 .g-home-services .g-gridpromogallery-item-text {
  z-index: 4 !important;
}
/* Projects grid — same whole-tile hover */
body.itemid-101 .g-home-projects .g-gridpromogallery-item {
  position: relative !important;
  overflow: hidden !important;
}
body.itemid-101 .g-home-projects .g-gridpromogallery-item-img {
  position: relative !important;
  transition: transform 400ms ease-out;
}
body.itemid-101 .g-home-projects .g-gridpromogallery-item::after {
  content: "";
  position: absolute !important;
  inset: 0 !important;
  z-index: 3;
  background: rgba(60, 77, 63, 0.55);
  opacity: 0;
  transition: opacity 300ms ease-out;
  pointer-events: none;
}
body.itemid-101 .g-home-projects .g-gridpromogallery-item:hover::after {
  opacity: 1;
}
body.itemid-101 .g-home-projects .g-gridpromogallery-item:hover .g-gridpromogallery-item-img {
  transform: scale(1.04);
}
body.itemid-101 .g-home-projects .g-gridpromogallery-item-text {
  z-index: 4 !important;
}
/* Home Services — neutralize the top strip's built-in dark background (was rgba(0,0,0,0.15))
   so the top half looks identical to the bottom half both idle AND hovered */
body.itemid-101 .g-home-services .g-gridpromogallery-item-text {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}
/* Same for Projects tiles */
body.itemid-101 .g-home-projects .g-gridpromogallery-item-text {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}
/* ============================================================
 * Services page — apply Home hover standard to Service Categories grid
 * (grid has both .g-home-services + .g-services-grid classes)
 * ============================================================ */
/* Force pointer-events auto down the tile chain (safety) */
body.itemid-106 .g-services-grid .g-gridpromogallery-item, body.itemid-106 .g-services-grid .g-gridpromogallery-item-wrapper, body.itemid-106 .g-services-grid .g-gridpromogallery-link, body.itemid-106 .g-services-grid .g-gridpromogallery-item-img, body.itemid-106 .g-services-grid .g-gridpromogallery-item-text, body.itemid-106 .g-services-grid .g-gridpromogallery-item-title {
  pointer-events: auto !important;
}
body.itemid-106 .g-services-grid .g-gridpromogallery-item-tag {
  pointer-events: none !important;
}
/* Kill the baked-in dark strip on the title span */
body.itemid-106 .g-services-grid .g-gridpromogallery-item-text {
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}
/* Whole-tile hover overlay + scale */
body.itemid-106 .g-services-grid .g-gridpromogallery-item {
  position: relative !important;
  overflow: hidden !important;
}
body.itemid-106 .g-services-grid .g-gridpromogallery-item-img {
  position: relative !important;
  transition: transform 400ms ease-out;
}
body.itemid-106 .g-services-grid .g-gridpromogallery-item::after {
  content: "";
  position: absolute !important;
  inset: 0 !important;
  z-index: 3;
  background: rgba(60, 77, 63, 0.55);
  opacity: 0;
  transition: opacity 300ms ease-out;
  pointer-events: none;
}
body.itemid-106 .g-services-grid .g-gridpromogallery-item:hover::after {
  opacity: 1;
}
body.itemid-106 .g-services-grid .g-gridpromogallery-item:hover .g-gridpromogallery-item-img {
  transform: scale(1.04);
}
body.itemid-106 .g-services-grid .g-gridpromogallery-item-text {
  z-index: 4 !important;
}
/* Services 'Our work in pictures' — force images to fill the 282x282 square container */
body.itemid-106 .g-services-gallery .g-imagegrid-item {
  position: relative !important;
  overflow: hidden !important;
}
body.itemid-106 .g-services-gallery .g-imagegrid-item > a, body.itemid-106 .g-services-gallery .g-imagegrid-item .g-imagegrid-link {
  position: absolute !important;
  inset: 0 !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
}
body.itemid-106 .g-services-gallery .g-imagegrid-item img, body.itemid-106 .g-services-gallery .g-imagegrid-item picture, body.itemid-106 .g-services-gallery .g-imagegrid-item picture img {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}
/* Service categories — on hover, title text turns magenta (brand) */
body.itemid-101 .g-home-services .g-gridpromogallery-item:hover .g-gridpromogallery-item-title, body.itemid-106 .g-services-grid .g-gridpromogallery-item:hover .g-gridpromogallery-item-title {
  color: var(--re-magenta) !important;
  transition: color 250ms ease-out;
}
body.itemid-101 .g-home-services .g-gridpromogallery-item-title, body.itemid-106 .g-services-grid .g-gridpromogallery-item-title {
  transition: color 250ms ease-out;
}
/* Project pages — Companies Contributing: 6 cards in single row, evenly spaced */
.g-project-partners-row {
  display: grid !important;
  grid-template-columns: repeat(6, minmax(0, 1fr)) !important;
  gap: 1rem !important;
  justify-items: stretch !important;
  align-items: stretch !important;
}
.g-partner-text-card {
  padding: 1rem 0.75rem !important;
  text-align: center;
}
.g-partner-text-card span {
  display: block;
  font-size: 0.7rem;
  margin-top: 0.35rem;
}
@media (max-width: 60rem) {
  .g-project-partners-row {
    grid-template-columns: repeat(3, 1fr) !important;
  }
}
@media (max-width: 32rem) {
  .g-project-partners-row {
    grid-template-columns: repeat(2, 1fr) !important;
  }
}
/* ============================================================
 * Services — close the gap between 'Our work in pictures'
 * gallery and the 'See more of our work' button.
 * Measured 62px: gallery particle padding-bottom 15px + the
 * 10px/10px adjacent particle margins + CTA particle
 * padding-top 15px + CTA padding-top 12px.
 * ============================================================ */
body.itemid-106 .g-content.g-particle:has(> .g-services-gallery) {
  padding-bottom: 0 !important;
  margin-bottom: 0 !important;
}
body.itemid-106 .g-content.g-particle:has(> .g-services-see-gallery-cta) {
  padding-top: 0 !important;
  margin-top: 0 !important;
}
body.itemid-106 .g-services-see-gallery-cta {
  padding-top: 0 !important;
  margin-top: 0 !important;
}
/* ============================================================
 * Projects (itemid-107) — inherit the About page's
 * 'Explore our projects' heading treatment.
 * Size/family/colour already matched; this aligns the
 * remaining three: left align, 2rem left pad, 1rem bottom margin.
 * ============================================================ */
body.itemid-107 #g-feature .g-blockcontent-headline, body.itemid-107 #g-feature .g-blockcontent-headline p, body.itemid-107 #g-feature h2.g-blockcontent-headline {
  text-align: left !important;
  padding-left: 2rem !important;
  font-family: "Libre Baskerville", Georgia, serif !important;
  font-size: 1.9rem !important;
  /* 30.4px */
  font-weight: 400 !important;
  color: var(--re-cream) !important;
  letter-spacing: 0.02em !important;
  margin: 0 0 1rem !important;
  text-transform: none !important;
}
body.itemid-107 #g-feature .g-blockcontent-description {
  padding-left: 2rem !important;
}
/* ============================================================
 * Kim batch — 2026-07-09 evening
 * ============================================================ */
/* (1) Services: close the gap between the 'Our work in pictures'
   heading and the gallery. Measured 34px = heading particle's
   padding-bottom 15px + margin-bottom 10px, then the gallery
   particle's own 10px/15px, offset by an old -24px margin hack.
   Zero all of them and drop the hack. */
body.itemid-106 .g-content.g-particle:has(> .g-services-gallery) {
  margin-top: 0 !important;
  padding-top: 0 !important;
}
body.itemid-106 .g-services-gallery {
  margin-top: 0 !important;
  /* was -1.5rem */
  padding-top: 0 !important;
}
/* The heading sits in the .g-grid immediately before the gallery's .g-grid.
   Its .g-content carries padding-bottom 15px + margin-bottom 10px — that is
   the entire remaining gap. Matched exactly once (verified). */
body.itemid-106 #g-expanded .g-grid:has(+ .g-grid .g-services-gallery) .g-content {
  padding-bottom: 0 !important;
  margin-bottom: 0 !important;
}
body.itemid-106 .g-services-gallery .g-imagegrid-wrapper {
  margin-top: 0.25rem !important;
  padding-top: 0 !important;
}
/* (4) Services gallery hover — transparent magenta, white caption.
   Was rgba(60,77,63,0.85) dark green with cream text.
   (2) The Gallery page inherits the identical treatment. */
body.itemid-106 .g-services-gallery .g-imagegrid-item::before, body.itemid-108 .g-gallery-grid .g-imagegrid-item::before {
  content: "" !important;
  position: absolute !important;
  inset: 0 !important;
  z-index: 3 !important;
  background-color: rgba(171, 38, 140, 0.72) !important;
  /* --re-magenta @ 72% */
  background-image: url('../../../../images/logos/logo-flower.png') !important;
  background-size: 33% auto !important;
  background-repeat: no-repeat !important;
  background-position: center 38% !important;
  opacity: 0 !important;
  transition: opacity 250ms ease-out !important;
  pointer-events: none !important;
}
body.itemid-106 .g-services-gallery .g-imagegrid-item::after, body.itemid-108 .g-gallery-grid .g-imagegrid-item::after {
  content: attr(data-caption) !important;
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 18% !important;
  z-index: 4 !important;
  text-align: center !important;
  color: #fff !important;
  /* Kim: text stays white */
  font-family: "Cabin", sans-serif !important;
  font-size: 0.85rem !important;
  letter-spacing: 0.02em !important;
  line-height: 1.3 !important;
  padding: 0 0.75rem !important;
  opacity: 0 !important;
  transition: opacity 250ms ease-out !important;
  pointer-events: none !important;
}
body.itemid-106 .g-services-gallery .g-imagegrid-item:hover::before, body.itemid-106 .g-services-gallery .g-imagegrid-item:hover::after, body.itemid-108 .g-gallery-grid .g-imagegrid-item:hover::before, body.itemid-108 .g-gallery-grid .g-imagegrid-item:hover::after {
  opacity: 1 !important;
}
/* (2) Gallery page grid — square tiles + whole-tile hover target,
   matching the Services gallery exactly. */
body.itemid-108 .g-gallery-grid .g-imagegrid-item {
  position: relative !important;
  overflow: hidden !important;
  aspect-ratio: 1 !important;
  border-radius: 0 !important;
}
body.itemid-108 .g-gallery-grid .g-imagegrid-item > a, body.itemid-108 .g-gallery-grid .g-imagegrid-item .g-imagegrid-link {
  position: absolute !important;
  inset: 0 !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
}
body.itemid-108 .g-gallery-grid .g-imagegrid-item img {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  display: block !important;
}
/* kill Requiem's default magnifier icon on the gallery page */
body.itemid-108 .g-gallery-grid .g-imagegrid-item .g-imagegrid-zoom, body.itemid-108 .g-gallery-grid .g-imagegrid-item [class*="zoom"], body.itemid-108 .g-gallery-grid .g-imagegrid-caption {
  display: none !important;
}
/* (6) Gallery appears on scroll — stagger the tiles in once the
   grid's AOS fade-up fires. */
body.itemid-108 .g-gallery-grid .g-imagegrid-item {
  opacity: 0;
  transform: translateY(14px);
  transition: opacity 480ms var(--ease-out), transform 480ms var(--ease-out);
}
body.itemid-108 .g-gallery-grid.aos-animate .g-imagegrid-item {
  opacity: 1;
  transform: none;
}
body.itemid-108 .g-gallery-grid.aos-animate .g-imagegrid-item:nth-child(4n+2) {
  transition-delay: 70ms;
}
body.itemid-108 .g-gallery-grid.aos-animate .g-imagegrid-item:nth-child(4n+3) {
  transition-delay: 140ms;
}
body.itemid-108 .g-gallery-grid.aos-animate .g-imagegrid-item:nth-child(4n+4) {
  transition-delay: 210ms;
}
/* (3) Footer — address / phone / email match the footer menu links (14.4px) */
.g-footer-address .g-blockcontent-description, .g-footer-address .g-blockcontent-description p, .g-footer-address .g-blockcontent-description a, .g-footer-address p, .g-footer-address a {
  font-size: 0.9rem !important;
  /* 14.4px — same as footer nav links */
  line-height: 1.6 !important;
}
/* (5) Project objective 2col — lock the ratio so the carousel is the
   same size on every project page. `1.5fr 1fr` alone let min-content
   win, so the carousel ranged 475px (Octave) to 631px (Warralily). */
.g-project-objective .g-project-2col {
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) !important;
}
/* (7) Contact — the three sister logos stay on one line */
body.itemid-110 .g-regen-family-logos {
  flex-wrap: nowrap !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 2.5rem !important;
}
body.itemid-110 .g-regen-family-logos a {
  flex: 0 1 auto !important;
  min-width: 0 !important;
}
body.itemid-110 .g-regen-family-logos img {
  max-height: 52px !important;
  max-width: 100% !important;
  width: auto !important;
  height: auto !important;
  object-fit: contain !important;
}
/* Requiem's own imagegrid hover fades the image to opacity .25 and scales it
   1.05, revealing the link's SOLID magenta background — so the tint read as
   flat magenta instead of a translucent wash over the photo. Keep the image
   fully opaque and kill the link's background; our ::before supplies the tint. */
body.itemid-106 .g-services-gallery .g-imagegrid-item:hover img, body.itemid-108 .g-gallery-grid .g-imagegrid-item:hover img {
  opacity: 1 !important;
  transform: none !important;
}
body.itemid-106 .g-services-gallery .g-imagegrid-link, body.itemid-108 .g-gallery-grid .g-imagegrid-link, body.itemid-106 .g-services-gallery .g-imagegrid-item > a, body.itemid-108 .g-gallery-grid .g-imagegrid-item > a {
  background: transparent !important;
  background-color: transparent !important;
}
/* ============================================================
 * About — 'Explore our projects' tiles inherit the Home hover.
 * About never received the whole-tile hover standardisation: it had no
 * ::after overlay at all, showed Requiem's baked-in rgba(0,0,0,0.15) strip
 * behind the title, and carried pointer-events:none on the item (so only
 * the title was hoverable). Same grey-green wash as Home: rgba(60,77,63,0.55)
 * ============================================================ */
body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-item, body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-item-wrapper, body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-link, body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-item-img, body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-item-text, body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-item-title {
  pointer-events: auto !important;
}
body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-item-tag {
  pointer-events: none !important;
}
body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-item {
  position: relative !important;
  overflow: hidden !important;
}
body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-item-img {
  position: relative !important;
  transition: transform 400ms ease-out;
}
body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-item::after {
  content: "";
  position: absolute !important;
  inset: 0 !important;
  z-index: 3;
  background: rgba(60, 77, 63, 0.55);
  /* identical to Home */
  opacity: 0;
  transition: opacity 300ms ease-out;
  pointer-events: none;
}
body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-item:hover::after {
  opacity: 1;
}
body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-item:hover .g-gridpromogallery-item-img {
  transform: scale(1.04);
}
body.itemid-105 #g-extension .g-home-projects .g-gridpromogallery-item-text {
  z-index: 4 !important;
  background: transparent !important;
  background-color: transparent !important;
  background-image: none !important;
}
/* ============================================================
 * Service category tiles — legible hover (Kim, 2026-07-10)
 *
 * The hovered title was brand magenta #ab268c sitting on a dark-green wash
 * rgba(60,77,63,0.55). Those two sit at nearly identical luminance, so the
 * measured WCAG contrast collapsed to 1.01:1 over mid-tone photos (2.10:1
 * dark, 1.98:1 bright) — the text was effectively invisible. The title is
 * 17.6px bold, i.e. just under the 18.66px "large text" threshold, so the
 * 4.5:1 minimum applies.
 *
 * Fix (Tom's choice): white title on a magenta wash at 0.80.
 *   4.56:1 over bright sky · 6.04:1 mid-tone · 7.24:1 dark  -> passes.
 * This also matches the hover language now used by both galleries.
 *
 * Scoped to the SERVICE CATEGORY grids only. The project tiles
 * (.g-home-projects on Home and About) keep the green wash.
 * ============================================================ */
body.itemid-101 .g-home-services .g-gridpromogallery-item::after, body.itemid-106 .g-services-grid .g-gridpromogallery-item::after {
  background: rgba(171, 38, 140, 0.8) !important;
}
/* Title stays white on hover — only the wash changes. Overrides the earlier
   `color: var(--re-magenta)` hover rule. */
body.itemid-101 .g-home-services .g-gridpromogallery-item:hover .g-gridpromogallery-item-title, body.itemid-106 .g-services-grid .g-gridpromogallery-item:hover .g-gridpromogallery-item-title {
  color: #fff !important;
}
/* Galleries: lift the wash 0.72 -> 0.80 so the two hovers are literally the
   same, and so the 0.85rem captions clear 4.5:1 (0.72 gave 3.97:1 on bright
   photos — short of the normal-text minimum). */
body.itemid-106 .g-services-gallery .g-imagegrid-item::before, body.itemid-108 .g-gallery-grid .g-imagegrid-item::before {
  background-color: rgba(171, 38, 140, 0.8) !important;
}
/* THE ACTUAL LEGIBILITY BUG: .g-gridpromogallery-item-text carried
   `z-index: 4` while still `position: static` — z-index is ignored on
   static elements, so the title painted UNDERNEATH the ::after wash
   (z-index 3) and every hover tinted the text itself. Giving it a
   position makes the z-index take effect and puts the title above the
   wash, where the white-on-magenta contrast actually applies. */
body.itemid-101 .g-home-services .g-gridpromogallery-item-text, body.itemid-106 .g-services-grid .g-gridpromogallery-item-text {
  position: relative !important;
  z-index: 5 !important;
}
body.itemid-101 .g-home-services .g-gridpromogallery-item-title, body.itemid-106 .g-services-grid .g-gridpromogallery-item-title {
  position: relative !important;
  z-index: 5 !important;
}
/* Correction: setting z-index on .g-gridpromogallery-item-text is NOT enough.
   `:hover .g-gridpromogallery-item-img { transform: scale(1.04) }` makes that
   span a STACKING CONTEXT, and the title lives inside it. The item's ::after
   wash (z-index 3) therefore paints above the entire span — title included —
   no matter how high the title's z-index is inside it.
   Fix: move the wash INTO the image span, beneath the title. */
body.itemid-101 .g-home-services .g-gridpromogallery-item::after, body.itemid-106 .g-services-grid .g-gridpromogallery-item::after {
  display: none !important;
  /* retire the outer wash */
}
body.itemid-101 .g-home-services .g-gridpromogallery-item-img, body.itemid-106 .g-services-grid .g-gridpromogallery-item-img {
  position: relative !important;
}
body.itemid-101 .g-home-services .g-gridpromogallery-item-img::after, body.itemid-106 .g-services-grid .g-gridpromogallery-item-img::after {
  content: "" !important;
  position: absolute !important;
  inset: 0 !important;
  z-index: 1 !important;
  /* under the title (z 5) */
  background: rgba(171, 38, 140, 0.8) !important;
  opacity: 0;
  transition: opacity 300ms ease-out;
  pointer-events: none !important;
}
body.itemid-101 .g-home-services .g-gridpromogallery-item:hover .g-gridpromogallery-item-img::after, body.itemid-106 .g-services-grid .g-gridpromogallery-item:hover .g-gridpromogallery-item-img::after {
  opacity: 1;
}
/* ============================================================
 * Service category tiles — per-service descriptions.
 * Requiem renders the item `desc` as .g-gridpromogallery-item-desc inside
 * .g-gridpromogallery-item-text. Left alone it sits always-on, uppercase,
 * at 80% white over the photo — the exact low-contrast failure Kim raised
 * for the titles. Reveal it on hover instead, inside the magenta wash,
 * where white text measures ~5.8:1.
 * Scoped to .g-services-grid: the Home services grid shares the
 * .g-home-services class but has no descriptions.
 * ============================================================ */
body.itemid-106 .g-services-grid .g-gridpromogallery-item-desc {
  position: relative !important;
  z-index: 5 !important;
  /* above the wash, like the title */
  display: block !important;
  margin: 0.6rem auto 0 !important;
  max-width: 88% !important;
  color: #fff !important;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 280ms ease-out, transform 280ms ease-out;
  font-family: "Cabin", sans-serif !important;
  font-size: 0.85rem !important;
  font-weight: 400 !important;
  line-height: 1.45 !important;
  letter-spacing: 0.01em !important;
  text-transform: none !important;
  /* Requiem uppercases it otherwise */
  text-align: center !important;
}
body.itemid-106 .g-services-grid .g-gridpromogallery-item:hover .g-gridpromogallery-item-desc {
  opacity: 1;
  transform: none;
}
/* Services #g-expanded intro paragraph — centre it under the centred
   "We ensure landscapes..." headline (it inherited a left-aligned,
   full-width block). Only one description exists in this section. */
body.itemid-106 #g-expanded .g-blockcontent-description {
  text-align: center !important;
  max-width: 58rem !important;
  margin-left: auto !important;
  margin-right: auto !important;
  line-height: 1.6 !important;
}
/* ============================================================
 * Services — intro band (#g-utility) between 'What we deliver' and
 * 'Service categories'. Added as a REAL Gantry section (outline 21:
 * layout /utility/ + index sections), not a full-bleed hack inside
 * #g-feature — that trick is what broke the project heroes.
 *
 * Styling mirrors the HOME page's first section under its heading
 * (#g-utility.g-2col-band): background rgb(89,110,92) = --re-dark, cream
 * Cabin text at 1.2rem/1.6, left-aligned in the container. An earlier
 * attempt used --re-light (#a1b0a8), a pale tone used nowhere else on the
 * site, which read as inconsistent.
 * ============================================================ */
body.itemid-106 #g-utility {
  background: var(--re-dark) !important;
  color: var(--re-cream) !important;
  padding: 2.25rem 0 !important;
}
body.itemid-106 #g-utility .g-blockcontent {
  background: transparent !important;
}
body.itemid-106 #g-utility .g-blockcontent-description {
  color: var(--re-cream) !important;
  font-family: "Cabin", sans-serif !important;
  font-size: 1.2rem !important;
  /* 19.2px — matches Home */
  line-height: 1.6 !important;
  text-align: left !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
}
body.itemid-106 #g-utility .g-blockcontent-headline {
  display: none !important;
  /* particle has no headline */
}
/* Services categories — remove the small magenta dot on the tiles.
   It's the item tag ("01".."06") styled down to a 10px magenta circle.
   Scoped to the Services grid; the Home services grid keeps its dot. */
body.itemid-106 .g-services-grid .g-gridpromogallery-item-tag {
  display: none !important;
}
/* Services intro band — flower logo right of the copy, vertically centred.
   Requiem emits the blockcontent image BEFORE the description, so lay the
   .g-content out as a 2-col grid and pull the image into column 2.
   Height is capped at exactly four lines of body copy:
   font-size 1.2rem x line-height 1.6 x 4 = 7.68rem (122.88px). */
body.itemid-106 #g-utility .g-content {
  display: grid !important;
  grid-template-columns: 1fr auto !important;
  align-items: center !important;
  column-gap: 3rem !important;
}
body.itemid-106 #g-utility .g-content > .g-blockcontent-description {
  grid-column: 1 !important;
  grid-row: 1 !important;
}
body.itemid-106 #g-utility .g-content > img {
  grid-column: 2 !important;
  grid-row: 1 !important;
  height: calc(1.2rem * 1.6 * 4) !important;
  /* 4 lines = 122.88px */
  width: auto !important;
  max-width: none !important;
  align-self: center !important;
  justify-self: end !important;
  object-fit: contain !important;
  margin: 0 !important;
}
@media (max-width: 48rem) {
  body.itemid-106 #g-utility .g-content {
    grid-template-columns: 1fr !important;
    row-gap: 1.5rem !important;
  }
  body.itemid-106 #g-utility .g-content > img {
    grid-column: 1 !important;
    grid-row: 2 !important;
    justify-self: center !important;
  }
}
/* ============================================================
 * Home 'Our services' tiles — match the Services page treatment:
 * no magenta dot, and the per-service description revealed on hover
 * inside the magenta wash (white text, ~5.8:1 contrast).
 * Mirrors the body.itemid-106 .g-services-grid rules.
 * ============================================================ */
body.itemid-101 .g-home-services .g-gridpromogallery-item-tag {
  display: none !important;
}
body.itemid-101 .g-home-services .g-gridpromogallery-item-desc {
  position: relative !important;
  z-index: 5 !important;
  /* above the wash, like the title */
  display: block !important;
  margin: 0.6rem auto 0 !important;
  max-width: 88% !important;
  color: #fff !important;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 280ms ease-out, transform 280ms ease-out;
  font-family: "Cabin", sans-serif !important;
  font-size: 0.85rem !important;
  font-weight: 400 !important;
  line-height: 1.45 !important;
  letter-spacing: 0.01em !important;
  text-transform: none !important;
  /* Requiem uppercases it otherwise */
  text-align: center !important;
}
body.itemid-101 .g-home-services .g-gridpromogallery-item:hover .g-gridpromogallery-item-desc {
  opacity: 1;
  transform: none;
}
/* Cannon's Creek hero is a lit macro, not a landscape: the pale flower centre
 * sits right under the H1 and drops it to ~2.0:1, below the 3.0:1 large-text
 * floor. Keyed to this image only so other project heroes keep Kim's lighter
 * cinematic gradient. 0.42 measured at 5.14:1 worst-case. */
.g-project-hero[style*="hero-cannons-saltmarsh"]::before {
  background: radial-gradient(ellipse 68% 52% at 50% 50%, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.3) 55%, rgba(0, 0, 0, 0.15) 100%), linear-gradient(to bottom, rgba(0, 0, 0, 0.15) 0%, rgba(0, 0, 0, 0.4) 100%) !important;
}
/* Our Foundation — image removed at Kim's request; collapse the 2-col grid to
   a single full-width text column. Same selector as the effective 1fr 1fr rule
   above, appended so it wins on source order. */
body.itemid-105 #g-utility .g-our-foundation .g-content {
  grid-template-columns: 1fr !important;
}
body.itemid-105 #g-utility .g-our-foundation .g-content > img {
  display: none !important;
}
/* Match Foundation text margins to the Our Approach content edges: drop the
   1rem horizontal padding so left aligns with the Approach image (x~170) and
   right aligns with the Approach description text (x~1270). */
body.itemid-105 #g-utility .g-our-foundation {
  padding-left: 0 !important;
  padding-right: 0 !important;
  max-width: none !important;
}
/* ============================================================
 * Service detail pages (itemid-120..125) — reuse the project-detail
 * treatment (outline/style 22 = Requiem Projects). Hide the Projects
 * listing chrome (#g-header hero, #g-above "OUR WORK", #g-feature grid,
 * Joomla article furniture) and show only the article body.
 * #g-header for 120/121 is already covered above; this block covers the
 * full set 120..125 for every layer so the pages render like project pages.
 * ============================================================ */
.itemid-122 #g-header, .itemid-123 #g-header, .itemid-124 #g-header, .itemid-125 #g-header, .itemid-120 #g-above, .itemid-120 #g-feature, .itemid-121 #g-above, .itemid-121 #g-feature, .itemid-122 #g-above, .itemid-122 #g-feature, .itemid-123 #g-above, .itemid-123 #g-feature, .itemid-124 #g-above, .itemid-124 #g-feature, .itemid-125 #g-above, .itemid-125 #g-feature {
  display: none !important;
}
.itemid-120 #g-container-main, .itemid-121 #g-container-main, .itemid-122 #g-container-main, .itemid-123 #g-container-main, .itemid-124 #g-container-main, .itemid-125 #g-container-main {
  background: var(--re-dark) !important;
  color: var(--re-cream);
}
.itemid-120 #g-mainbar, .itemid-121 #g-mainbar, .itemid-122 #g-mainbar, .itemid-123 #g-mainbar, .itemid-124 #g-mainbar, .itemid-125 #g-mainbar, .itemid-120 .item-page, .itemid-121 .item-page, .itemid-122 .item-page, .itemid-123 .item-page, .itemid-124 .item-page, .itemid-125 .item-page {
  background: transparent !important;
  color: var(--re-cream);
}
.itemid-120 .page-header, .itemid-121 .page-header, .itemid-122 .page-header, .itemid-123 .page-header, .itemid-124 .page-header, .itemid-125 .page-header, .itemid-120 .article-info, .itemid-121 .article-info, .itemid-122 .article-info, .itemid-123 .article-info, .itemid-124 .article-info, .itemid-125 .article-info, .itemid-120 ul.pagenav, .itemid-121 ul.pagenav, .itemid-122 ul.pagenav, .itemid-123 ul.pagenav, .itemid-124 ul.pagenav, .itemid-125 ul.pagenav {
  display: none !important;
}
.itemid-120 .com-content-article__body, .itemid-121 .com-content-article__body, .itemid-122 .com-content-article__body, .itemid-123 .com-content-article__body, .itemid-124 .com-content-article__body, .itemid-125 .com-content-article__body {
  background: var(--re-dark);
  margin: 0 !important;
  padding: 0 !important;
}
/* ============================================================
 * Service detail pages — full-site look & feel (NOT the article /
 * project-detail treatment). Hero band + alternating full-width green
 * bands, centred serif headings, cream body — matching About/Services.
 * ============================================================ */
.g-service-detail {
  color: var(--re-cream);
}
/* --- Hero band: full-bleed image to the VERY TOP of the page (transparent
   nav overlays it, like the site's interior pages). No text overlay — the
   H1 lives in the first content band. --- */
.g-service-hero {
  position: relative;
  width: 100vw;
  max-width: 100vw;
  margin: 0 calc(50% - 50vw);
  min-height: 66vh;
  background-size: cover;
  background-position: center;
}
.g-service-hero::before {
  /* subtle top scrim so the overlaid white nav stays legible */
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0.42) 0%, rgba(0, 0, 0, 0.12) 34%, rgba(0, 0, 0, 0) 60%);
}
/* Pull the article (and its hero) up under the transparent nav: the Gantry
   .g-content wrapper adds ~25px (15px padding + 10px margin) at the top. */
.itemid-120 #g-mainbar .g-content, .itemid-121 #g-mainbar .g-content, .itemid-122 #g-mainbar .g-content, .itemid-123 #g-mainbar .g-content, .itemid-124 #g-mainbar .g-content, .itemid-125 #g-mainbar .g-content {
  padding-top: 0 !important;
  margin-top: 0 !important;
}
/* --- Full-width content bands, alternating greens --- */
.g-service-band {
  width: 100vw;
  max-width: 100vw;
  margin: 0 calc(50% - 50vw);
  padding: clamp(3rem, 6vw, 5.5rem) 1.5rem;
}
.g-service-band.g-band-deep {
  background: var(--re-deep-green);
}
/* #3C4D3F */
.g-service-band.g-band-mid {
  background: var(--re-dark);
}
/* #596e5c */
.g-band-inner {
  max-width: 75rem;
  margin: 0 auto;
}
/* --- Section headings + divider (like .g-superpromo); centred by default,
   left-aligned variant for the maintenance band --- */
.g-band-title {
  margin: 0 0 1.6rem;
  font-family: "Libre Baskerville", Baskerville, "Times New Roman", Georgia, serif;
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--re-cream);
  text-align: center;
  line-height: 1.2;
  font-size: clamp(1.6rem, 3.2vw, 2.6rem);
}
.g-band-title::after {
  content: "";
  display: block;
  width: 56px;
  height: 3px;
  border-radius: 2px;
  margin: 1rem auto 0;
  background: var(--re-magenta);
}
.g-band-title.g-align-left {
  text-align: left;
  margin-bottom: 0.9rem;
}
.g-band-title.g-align-left::after {
  margin-left: 0;
  margin-right: 0;
}
/* --- Intro band: H1 + short intro on the left, service image on the right --- */
.g-intro-2col {
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  gap: clamp(2rem, 4vw, 4rem);
  align-items: center;
}
.g-service-h1 {
  margin: 0 0 1.1rem;
  font-family: "Libre Baskerville", Baskerville, "Times New Roman", Georgia, serif;
  font-weight: 400;
  line-height: 1.15;
  color: var(--re-cream);
  font-size: clamp(1.7rem, 3vw, 2.5rem);
}
.g-intro-text p {
  font-family: "Cabin", sans-serif;
  color: var(--re-cream);
  font-size: clamp(1.05rem, 1.35vw, 1.25rem);
  line-height: 1.75;
  margin: 0;
}
.g-intro-media img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1.5;
  object-fit: cover;
  border-radius: var(--radius-lg);
}
@media (max-width: 48rem) {
  /* image above text on mobile */
  .g-intro-2col {
    grid-template-columns: 1fr;
  }
  .g-intro-media {
    order: -1;
  }
}
/* --- Maintenance band: descriptive lead + cream rounded stat-style boxes --- */
.g-maint-intro {
  font-family: "Cabin", sans-serif;
  color: var(--re-cream);
  font-size: clamp(1.02rem, 1.3vw, 1.18rem);
  line-height: 1.7;
  margin: 0 0 2rem;
  max-width: 52rem;
}
.g-service-boxes {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1.1rem;
}
.g-service-boxes li {
  background: var(--re-cream);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-lg);
  color: var(--re-dark);
  font-family: "Cabin", sans-serif;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.35;
  text-align: center;
  padding: 1.35rem 1.1rem;
  display: flex;
  align-items: center;
  justify-content: center;
}
@media (max-width: 62rem) {
  .g-service-boxes {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 40rem) {
  .g-service-boxes {
    grid-template-columns: 1fr;
  }
}
/* --- Related projects grid heading spacing --- */
.g-service-projects .g-gridpromogallery {
  margin-top: 2.2rem;
}
/* The service article body must NOT keep the flat dark mainbar padding;
   bands paint their own full-width backgrounds. */
.itemid-120 #g-container-main, .itemid-121 #g-container-main, .itemid-122 #g-container-main, .itemid-123 #g-container-main, .itemid-124 #g-container-main, .itemid-125 #g-container-main {
  background: var(--re-deep-green) !important;
}
/* Hide Joomla article prev/next pager on all detail pages (projects + services).
   Current Joomla markup is nav.pagenavigation; the older ul.pagenav rule above
   never matched it, so it was showing at the foot of every detail page. */
.itemid-112 .pagenavigation, .itemid-113 .pagenavigation, .itemid-114 .pagenavigation, .itemid-115 .pagenavigation, .itemid-116 .pagenavigation, .itemid-117 .pagenavigation, .itemid-118 .pagenavigation, .itemid-119 .pagenavigation, .itemid-120 .pagenavigation, .itemid-121 .pagenavigation, .itemid-122 .pagenavigation, .itemid-123 .pagenavigation, .itemid-124 .pagenavigation, .itemid-125 .pagenavigation, .itemid-112 .com-content-article__navigation, .itemid-113 .com-content-article__navigation, .itemid-114 .com-content-article__navigation, .itemid-115 .com-content-article__navigation, .itemid-116 .com-content-article__navigation, .itemid-117 .com-content-article__navigation, .itemid-118 .com-content-article__navigation, .itemid-119 .com-content-article__navigation, .itemid-120 .com-content-article__navigation, .itemid-121 .com-content-article__navigation, .itemid-122 .com-content-article__navigation, .itemid-123 .com-content-article__navigation, .itemid-124 .com-content-article__navigation, .itemid-125 .com-content-article__navigation {
  display: none !important;
}
/* CC 2026-07-19 project-hero flush-top: on project detail pages the hero (.g-project-hero) is the first item inside #g-mainbar's .g-content, which carries Gantry's default particle spacing (margin-top:10px + padding-top:15px = 25px). That transparent 25px lets the dark #g-page-surround background show as a strip above the hero under the cinematic nav. Zero the top spacing on just that wrapper (scoped via :has so other outlines are untouched) to seat the hero flush. */
#g-mainbar .g-content:has(.g-project-hero) {
  margin-top: 0 !important;
  padding-top: 0 !important;
}
/* CC 2026-07-20 — Amaroo (itemid 126) FULL project-detail registration.
   Project detail pages use outline 22 (the "Projects" listing outline). A set of
   per-itemid rules hide the listing bands/chrome and restyle the mainbar so only
   the article shows — siblings 112-119 (and service pages 120-125) are in ALL of
   them. Amaroo (126) was never registered, so it rendered as the Projects listing
   (default hero + OUR WORK band + Explore-our-projects grid) with its article
   appended, plus cream-on-cream body text. This registers 126 in the COMPLETE set
   so it matches Atherstone/Octave. Add a new project page's itemid here too.
   Ref: Tina render-check 2026-07-20. */
.itemid-126 #g-header {
  display: none !important;
}
.itemid-126 #g-above, .itemid-126 #g-feature {
  display: none !important;
}
.itemid-126 #g-container-main {
  background: var(--re-dark) !important;
  color: var(--re-cream);
}
.itemid-126 #g-mainbar, .itemid-126 .item-page {
  background: transparent !important;
  color: var(--re-cream);
}
.itemid-126 .page-header, .itemid-126 .article-info, .itemid-126 ul.pagenav, .itemid-126 .pagenavigation, .itemid-126 .com-content-article__navigation {
  display: none !important;
}
.itemid-126 .com-content-article__body {
  background: var(--re-dark);
  margin: 0 !important;
  padding: 0 !important;
}
/* CC 2026-07-20 — Haining Farm (itemid 127) project-detail registration.
   Same complete set as the siblings/Amaroo so the Projects-listing bands hide and
   the article renders as a clean detail page. Ref: Tina fix-brief Step 1 2026-07-20. */
.itemid-127 #g-header {
  display: none !important;
}
.itemid-127 #g-above, .itemid-127 #g-feature {
  display: none !important;
}
.itemid-127 #g-container-main {
  background: var(--re-dark) !important;
  color: var(--re-cream);
}
.itemid-127 #g-mainbar, .itemid-127 .item-page {
  background: transparent !important;
  color: var(--re-cream);
}
.itemid-127 .page-header, .itemid-127 .article-info, .itemid-127 ul.pagenav, .itemid-127 .pagenavigation, .itemid-127 .com-content-article__navigation {
  display: none !important;
}
.itemid-127 .com-content-article__body {
  background: var(--re-dark);
  margin: 0 !important;
  padding: 0 !important;
}
.itemid-128 #g-header {
  display: none !important;
}
.itemid-128 #g-above, .itemid-128 #g-feature {
  display: none !important;
}
.itemid-128 #g-container-main {
  background: var(--re-dark) !important;
  color: var(--re-cream);
}
.itemid-128 #g-mainbar, .itemid-128 .item-page {
  background: transparent !important;
  color: var(--re-cream);
}
.itemid-128 .page-header, .itemid-128 .article-info, .itemid-128 ul.pagenav, .itemid-128 .pagenavigation, .itemid-128 .com-content-article__navigation {
  display: none !important;
}
.itemid-128 .com-content-article__body {
  background: var(--re-dark);
  margin: 0 !important;
  padding: 0 !important;
}
.itemid-129 #g-header {
  display: none !important;
}
.itemid-129 #g-above, .itemid-129 #g-feature {
  display: none !important;
}
.itemid-129 #g-container-main {
  background: var(--re-dark) !important;
  color: var(--re-cream);
}
.itemid-129 #g-mainbar, .itemid-129 .item-page {
  background: transparent !important;
  color: var(--re-cream);
}
.itemid-129 .page-header, .itemid-129 .article-info, .itemid-129 ul.pagenav, .itemid-129 .pagenavigation, .itemid-129 .com-content-article__navigation {
  display: none !important;
}
.itemid-129 .com-content-article__body {
  background: var(--re-dark);
  margin: 0 !important;
  padding: 0 !important;
}
.itemid-128 .g-project-hero {
  background-position: center 25% !important;
}
/* CC 2026-07-24 P7: mobile stack — the .g-project-objective .g-project-2col !important grid overrides the base mobile rule, so the Objective text+carousel never stacked on phones. Force single column under 48rem. */
@media (max-width: 48rem) {
  .g-project-objective .g-project-2col {
    grid-template-columns: 1fr !important;
    padding: 0 !important;
    gap: 1.5rem !important;
  }
}
/* CC 2026-07-24 P7 (Kim): Gallery/Services photo captions were hover-only, invisible on touch. On touch or narrow screens, show the caption text always with a subtle dark bottom gradient (not the magenta wash) so photos stay clear. */
@media (hover: none), (max-width: 48rem) {
  .g-services-gallery .g-imagegrid-item::before, body.itemid-108 .g-gallery-grid .g-imagegrid-item::before {
    background: linear-gradient(to top, rgba(0, 0, 0, 0.78) 0%, rgba(0, 0, 0, 0) 55%) !important;
    opacity: 1 !important;
  }
  .g-services-gallery .g-imagegrid-item::after, body.itemid-108 .g-gallery-grid .g-imagegrid-item::after {
    opacity: 1 !important;
  }
}
/* CC 2026-08-04 — Projects dropdown visual grouping (Tom go-ahead). CSS-ONLY, no menu/DB/URL change; every project stays a direct child of Projects. */
/* ============================================================
   Regen Enviro — Projects dropdown visual grouping
   PROPOSED (preview approved? pending) — DO NOT ship without Tom's go-ahead.
   SHIP TARGET: append to templates/rt_requiem/custom/scss/custom.scss
   (Gantry recompiles custom_<outline>.css from this SCSS.)

   WHY THIS IS SAFE (LESSON 1, 2026-08-02):
   Grouping is done PURELY in CSS. It touches NO menu item, NO database,
   NO SEF routing. Every project stays a direct child of Projects (menu 107),
   so /projects/<slug> is byte-for-byte unchanged. A display rule cannot 404
   a page. Contrast: the 2026-08-02 attempt re-parented menu items under
   Heading items, which changed the router's expected path and 404'd all 11.

   MECHANISM: each project <li> in the live dropdown already carries a unique
   class g-menu-item-<itemid>, and the whole dropdown sits under
   li.g-menu-item-107. So we reorder into two groups with flex `order` and
   inject two non-clickable headings via ::before generated content. No markup
   change required.

   itemid map: 112 Cannons Creek Saltmarsh, 113 Atherstone, 114 Brompton Park,
   115 Casey Green, 116 Eynesbury Wetlands, 117 Octave, 118 The Grove,
   119 Warralily, 126 Amaroo, 127 Haining Farm, 128 Geelong Growling Grass Frog.
   ============================================================ */
.g-menu-item-107 .g-sublevel {
  display: flex;
  flex-direction: column;
}
.g-menu-item-107 .g-sublevel .g-go-back {
  order: 0;
}
/* mobile Back stays top */
/* --- Group 1: Wetlands, Parks & Public Open Space --- */
.g-menu-item-114 {
  order: 11;
}
/* Brompton Park */
.g-menu-item-116 {
  order: 12;
}
/* Eynesbury Wetlands */
.g-menu-item-118 {
  order: 13;
}
/* The Grove */
.g-menu-item-119 {
  order: 14;
}
/* Warralily */
.g-menu-item-113 {
  order: 15;
}
/* Atherstone */
/* --- Group 2: Biodiversity, Habitat, Rare & Threatened Species --- */
.g-menu-item-128 {
  order: 21;
}
/* Geelong Growling Grass Frog */
.g-menu-item-117 {
  order: 22;
}
/* Octave */
.g-menu-item-115 {
  order: 23;
}
/* Casey Green */
.g-menu-item-126 {
  order: 24;
}
/* Amaroo */
.g-menu-item-127 {
  order: 25;
}
/* Haining Farm */
.g-menu-item-112 {
  order: 26;
}
/* Cannons Creek Saltmarsh */
/* Non-clickable group heading, injected before the first item of each group.
   Generated content on the <li>, not the <a>, so it is not a link. */
.g-menu-item-107 .g-menu-item-114::before, .g-menu-item-107 .g-menu-item-128::before {
  display: block;
  padding: 13px 22px 7px;
  font-size: 0.68rem;
  line-height: 1.25;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  font-weight: 700;
  color: #cdd7c9;
  border-left: 3px solid #ab268c;
  /* brand magenta */
  pointer-events: none;
  white-space: normal;
}
.g-menu-item-107 .g-menu-item-114::before {
  content: "Wetlands, Parks & Public Open Space";
}
.g-menu-item-107 .g-menu-item-128::before {
  content: "Biodiversity, Habitat, Rare & Threatened Species";
  margin-top: 6px;
  padding-top: 13px;
  border-top: 1px solid rgba(233, 226, 207, 0.14);
}
/*# sourceMappingURL=custom_22.css.map */