/* Grimaldi: restrained feedback for links, controls and linked imagery. */
body.gr-site-v3 {
  --gr-interaction-accent: #94511f;
  --gr-interaction-ease: cubic-bezier(.2,.65,.3,1);
}
body.gr-site-v3 :where(a, button, input, select, textarea) {
  -webkit-tap-highlight-color: rgb(148 81 31 / 14%);
}
body.gr-site-v3 :where(a[href], button:not(:disabled), [role="button"]):not([aria-disabled="true"]) {
  cursor: pointer;
}
body.gr-site-v3 :where(a, button, input, select, textarea):focus-visible {
  outline: 2px solid var(--gr-interaction-accent);
  outline-offset: 5px;
}
body.gr-site-v3 .gr-nav > a:not(.gr-nav-cta) {
  position: relative;
  transition: color 180ms ease;
}
body.gr-site-v3 .gr-nav > a:not(.gr-nav-cta)::after {
  content: "";
  position: absolute;
  inset-inline: 0;
  bottom: -5px;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 220ms var(--gr-interaction-ease);
  pointer-events: none;
}
body.gr-site-v3 .gr-nav > a:not(.gr-nav-cta):focus-visible::after,
body.gr-site-v3 .gr-nav > a[aria-current="page"]:not(.gr-nav-cta)::after {
  transform: scaleX(1);
}
body.gr-site-v3 :is(.elementor-button, .gr-button, .gr-nav-cta, .gr-slider-controls button, .gr-menu-toggle, .gr-filters a, .gb-filters a, .gr-pagination a) {
  transition: color 180ms ease, background-color 180ms ease, border-color 180ms ease,
    box-shadow 220ms ease, transform 220ms var(--gr-interaction-ease);
}
body.gr-site-v3 :is(.gr-contact, .gr-footer-legal, .gr-breadcrumbs, .gb-toc) a,
body.gr-site-v3 :is(.gr-text-link, .gb-read),
body.gr-site-v3 :is(.gx-copy, .gr-prose, .gb-prose) a {
  text-decoration-color: transparent;
  text-underline-offset: .25em;
  text-decoration-thickness: 1px;
  transition: color 180ms ease, text-decoration-color 180ms ease, text-underline-offset 180ms ease;
}
body.gr-site-v3 .gh-services { --gr-interaction-accent: #eaa060; }
body.gr-site-v3 .gr-gallery > a { cursor: zoom-in; }
/* Keep links within prose identifiable before interaction. */
body.gr-site-v3 :is(.gx-copy, .gr-prose, .gb-prose) a,
body.gr-site-v3 :is(.gr-text-link, .gb-read),
body.gr-site-v3 .gr-footer-legal a {
  text-decoration-line: underline;
  text-decoration-color: currentColor;
}
body.gr-site-v3 :is(.gr-project-card > a, .gr-sector, .gr-service, .gh-sector-card, .gb-card, .gb-feature) {
  transition: background-color 240ms ease, box-shadow 240ms ease;
}
body.gr-site-v3 :is(.gr-card-image, .gr-sector-photo, .gr-service-image, .gh-sector-image, .gb-card-photo, .gb-feature-photo, .gr-gallery > a) {
  overflow: hidden;
}
body.gr-site-v3 :is(.gr-card-image, .gr-sector-photo, .gr-service-image, .gh-sector-image, .gb-card-photo, .gb-feature-photo, .gr-gallery > a) img {
    transition: filter 280ms ease;
}
body.gr-site-v3 :is(.gr-project-card h3, .gr-sector h3, .gr-service h3 a, .gh-card-heading a, .gb-card h2 a, .gb-feature h2 a) {
  transition: color 180ms ease;
}
body.gr-site-v3 .gr-view-project {
  transition: opacity 220ms ease, transform 220ms var(--gr-interaction-ease);
}
body.gr-site-v3 .gr-quote :is(input:not([type="checkbox"]):not([type="hidden"]), select, textarea) {
  transition: border-color 180ms ease, box-shadow 180ms ease, background-color 180ms ease;
}
body.gr-site-v3 .gr-quote :is(input:not([type="checkbox"]):not([type="hidden"]), select, textarea):focus {
  border-color: var(--gr-interaction-accent);
  box-shadow: 0 0 0 3px rgb(148 81 31 / 10%);
  background: #fff;
}
/* Hover movements only apply when a precise pointing device is available. */
@media (hover: hover) and (pointer: fine) {
  body.gr-site-v3 .gr-nav > a:not(.gr-nav-cta):hover::after { transform: scaleX(1); }
  body.gr-site-v3 .gr-nav > a:not(.gr-nav-cta):hover { color: var(--gr-interaction-accent); }
  body.gr-site-v3 :is(.gx-button, .gh-button):not(.gh-text-button):not(.gh-photo-link) .elementor-button:hover,
  body.gr-site-v3 .gr-button:not(:disabled):hover,
  body.gr-site-v3 .gr-nav-cta:hover {
    transform: translateY(-2px);
    box-shadow: 0 5px 12px rgb(41 42 38 / 10%);
  }
  body.gr-site-v3 .gx-button .elementor-button:hover,
  body.gr-site-v3 .gr-button:not(:disabled):hover {
    background-color: #ce6f25;
    color: #202320;
  }
  body.gr-site-v3 :is(.gr-slider-controls button, .gr-menu-toggle):not(:disabled):hover {
    background-color: #e8e3d8;
    color: #292a26;
  }
  body.gr-site-v3 :is(.gr-contact, .gr-footer-legal, .gr-breadcrumbs, .gb-toc) a:hover,
  body.gr-site-v3 :is(.gr-text-link, .gb-read):hover,
  body.gr-site-v3 :is(.gx-copy, .gr-prose, .gb-prose) a:hover {
    color: var(--gr-interaction-accent);
    text-decoration-line: underline;
    text-decoration-color: currentColor;
    text-underline-offset: .4em;
  }
  body.gr-site-v3 :is(.gr-project-card > a, .gr-sector, .gh-sector-card, .gb-card):hover {
    box-shadow: 0 7px 20px rgb(41 42 38 / 6%);
  }
  body.gr-site-v3 .gr-project-card > a:hover .gr-card-image img,
  body.gr-site-v3 .gr-sector:hover .gr-sector-photo img,
  body.gr-site-v3 .gr-service-image:hover img,
  body.gr-site-v3 .gh-sector-image a:hover img,
  body.gr-site-v3 .gb-card-photo:hover img,
  body.gr-site-v3 .gb-feature-photo:hover img { transform: none; }
  body.gr-site-v3 .gr-gallery > a:hover img { transform: none; }
  body.gr-site-v3 .gr-pagination a:hover { background-color: #e8e3d8; border-color: #94511f; }
  body.gr-site-v3 .gr-project-card > a:hover h3,
  body.gr-site-v3 .gr-sector:hover h3,
  body.gr-site-v3 :is(.gr-service h3 a, .gh-card-heading a, .gb-card h2 a, .gb-feature h2 a):hover {
    color: var(--gr-interaction-accent);
  }
  body.gr-site-v3 :is(.gx-button, .gh-button):not(.gh-text-button):not(.gh-photo-link) .elementor-button:active,
  body.gr-site-v3 .gr-button:not(:disabled):active,
  body.gr-site-v3 .gr-nav-cta:active {
    transform: translateY(0);
    box-shadow: none;
  }
}
/* Focus keeps the same clear feedback without relying on a mouse. */
body.gr-site-v3 :is(.gr-contact, .gr-footer-legal, .gr-breadcrumbs, .gb-toc) a:focus-visible {
  text-decoration: underline;
  text-decoration-color: currentColor;
}
body.gr-site-v3 .gr-project-card > a:focus-visible h3 { color: var(--gr-interaction-accent); }
/* Progressive enhancement: photography and layout remain unchanged.
   Content stays readable even before its one-time entrance. */
body.gr-site-v3 .gr-reveal-ready {
  opacity: .45;
  translate: 0 12px;
  transition: opacity 560ms ease, translate 560ms var(--gr-interaction-ease);
}
body.gr-site-v3 .gr-reveal-ready.is-revealed,
body.gr-site-v3 .gr-reveal-ready:focus-within {
  opacity: 1;
  translate: none;
}
@media (max-width: 767px) {
  body.gr-site-v3 .gr-reveal-ready { translate: 0 8px; }
  body.gr-site-v3 .gr-reveal-ready.is-revealed,
  body.gr-site-v3 .gr-reveal-ready:focus-within { translate: none; }
}
@media print {
  body.gr-site-v3 .gr-reveal-ready { opacity: 1 !important; translate: none !important; }
}
@media (prefers-reduced-motion: reduce) {
  body.gr-site-v3 *, body.gr-site-v3 *::before, body.gr-site-v3 *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
  body.gr-site-v3 .gr-reveal-ready { opacity: 1 !important; translate: none !important; }
  body.gr-site-v3 :is(.gx-button, .gh-button) .elementor-button,
  body.gr-site-v3 :is(.gr-button, .gr-nav-cta),
  body.gr-site-v3 :is(.gr-card-image, .gr-sector-photo, .gr-service-image, .gh-sector-image, .gb-card-photo, .gb-feature-photo, .gr-gallery > a) img {
    transform: none !important;
  }
}
