/*
 * Waymont 03 — bold editorial direction
 *
 * 01. Design tokens
 * 02. Setup
 * 03. Typography
 * 04. Layout
 * 05. Buttons
 * 06. Header
 * 07. Homepage
 * 08. Shared cards and listings
 * 09. Featured project
 * 10. Call to action
 * 11. Interior pages
 * 12. Footer
 * 13. Motion and accessibility
 * 14. Authorised visual-grid helper
 */

/*------------------------------------*\
  #DESIGN-TOKENS
\*------------------------------------*/

:root {
  --ink: #050505;
  --paper: #fff;
  --blue: #1184d8;
  --blue-deep: #006fbd;
  --blue-pale: #bde6ff;
  --surface: #f3f5f6;
  --line: #b9c9d3;
  --muted: #56616a;
  --space-2xs: 8px;
  --space-xs: 12px;
  --space-sm: 16px;
  --space-md: 20px;
  --space-lg: 24px;
  --space-xl: 32px;
  --space-2xl: 48px;
  --padding-sm: 16px;
  --padding-md: 24px;
  --padding-lg: 64px;
  --page-gutter: 16px;
  --content-gutter: 24px;
  --header-height: 80px;
  --text-xs: 1.1rem;
  --text-sm: 1.4rem;
  --text-base: 1.6rem;
  --text-lg: clamp(1.8rem, 2.1vw, 2.2rem);
  --heading-xs: clamp(2rem, 1.8vw, 2.8rem);
  --heading-sm: clamp(2.6rem, 3.6vw, 4.6rem);
  --heading-md: clamp(4.2rem, 6.4vw, 8.6rem);
  --heading-lg: clamp(6.2rem, 11vw, 16rem);
  --ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --button-background: var(--ink);
  --button-color: var(--paper);
  --button-hover-background: var(--blue-pale);
  --button-hover-color: var(--ink);
  --button-radius: 2.5em;
  --button-border-color: var(--ink);
  --button-border-width: 0px;
  --button-block: var(--space-sm);
  --button-inline: var(--space-lg);
  --button-click-scale: .955, .925;
  --button-hover-scale: 1.065 1.095;
  --button-ease: cubic-bezier(.34, 2.27, .64, 1);
}

@media (min-width: 768px) {
  :root {
    --padding-sm: 24px;
    --padding-md: 40px;
    --padding-lg: 96px;
    --page-gutter: 28px;
    --content-gutter: 48px;
  }
}

@media (min-width: 1200px) {
  :root {
    --padding-md: 56px;
    --padding-lg: 120px;
    --page-gutter: 40px;
    --content-gutter: 72px;
  }
}

/*------------------------------------*\
  #SETUP
\*------------------------------------*/

html { box-sizing: border-box; font-size: 62.5%; scroll-behavior: smooth; }
*, *::before, *::after { box-sizing: inherit; }
body { background: var(--ink); color: var(--ink); font-size: var(--text-base); line-height: 1.55; }
body, p, h1, h2, h3, h4, h5, h6 { margin-block-start: 0; }

/*------------------------------------*\
  #TYPOGRAPHY
\*------------------------------------*/

.small-text p {
  font-size: 1.4rem !important;
  line-height: 1.6 !important;
}

h1, h2, h3, h4, h5, h6, .elementor-heading-title { color: var(--ink); font-weight: 700; letter-spacing: -0.045em; }
h2, h2.elementor-heading-title { font-size: var(--heading-md); line-height: .92; }
h3, h3.elementor-heading-title { font-size: var(--heading-sm); line-height: 1.12; }
h5, h5.elementor-heading-title { font-size: var(--heading-xs); line-height: 1.5; }
p, li { font-size: var(--text-base); }
a { color: inherit; }

/*------------------------------------*\
  #LAYOUT
\*------------------------------------*/

.wm-site-shell { max-width: none; width: 100%; }
.wm-section { padding: var(--padding-lg) 0; }
.wm-eyebrow, body .elementor-widget-heading.wm-eyebrow .elementor-heading-title { color: var(--blue); font-size: var(--text-xs); font-weight: 700; letter-spacing: .3em; line-height: 1.3; text-transform: uppercase; }
.section-heading { gap: 14px; padding-inline: var(--content-gutter); }
.section-heading::after { content: none; }
body .wm-section-title .elementor-heading-title { color: var(--ink); font-size: var(--heading-md); font-weight: 700; line-height: .92; text-transform: uppercase; }
.wm-home .wm-section-title .elementor-heading-title { color: var(--ink); font-weight: 700; }

/*------------------------------------*\
  #BUTTONS
\*------------------------------------*/
.wm-button .elementor-button,
.wm-button.elementor-widget-button .elementor-button {
  background: transparent;
  border: 0;
  border-radius: var(--button-radius);
  color: var(--button-color);
  font-size: var(--text-sm);
  font-weight: 600;
  isolation: isolate;
  line-height: 1;
  outline: 0;
  padding: var(--button-block) var(--button-inline);
  position: relative;
  text-decoration: none;
  transition: color 250ms ease-out;
}
.wm-button .elementor-button::before,
.wm-button .elementor-button::after {
  border-radius: var(--button-radius);
  content: "";
  inset: 0;
  pointer-events: none;
  position: absolute;
  transform-origin: center;
  transition: scale 400ms var(--button-ease), transform 150ms cubic-bezier(.4, 0, .2, 1);
  z-index: 0;
}
.wm-button .elementor-button::after {
  background: var(--button-background);
  box-shadow: inset 0 0 0 var(--button-border-width) var(--button-border-color);
}
.wm-button .elementor-button::before {
  background: var(--button-hover-background);
  border-radius: calc(var(--button-radius) - var(--button-border-width));
  clip-path: circle(0 at var(--button-x, 50%) var(--button-y, 50%));
  inset: var(--button-border-width);
  transition: clip-path 450ms cubic-bezier(.32, .72, 0, 1), scale 400ms var(--button-ease), transform 150ms cubic-bezier(.4, 0, .2, 1);
  z-index: 1;
}
.wm-button .elementor-button-content-wrapper { position: relative; z-index: 2; }
.wm-button .elementor-button:is(.is-hovered, :hover, :focus-visible) { color: var(--button-hover-color); }
.wm-button .elementor-button:is(.is-hovered, :hover)::before { clip-path: circle(150% at var(--button-x, 50%) var(--button-y, 50%)); transition-duration: 1250ms, 425ms, 150ms; }
.wm-button .elementor-button:focus-visible::before { clip-path: circle(150% at 50% 50%); }
.wm-button .elementor-button:focus-visible { box-shadow: 0 0 0 2px var(--paper), 0 0 0 4px var(--ink); outline: 0; }
.wm-button .elementor-button:active::before,
.wm-button .elementor-button:active::after { transform: scale(var(--button-click-scale)); }
.wm-button.wm-button--large .elementor-button { font-size: var(--text-base); padding: var(--space-md) var(--space-xl); }
.wm-button--light .elementor-button,
.wm-button--inverse .elementor-button {
  --button-background: transparent;
  --button-border-color: var(--paper);
  --button-border-width: 2px;
  --button-hover-background: var(--paper);
}
.wm-button.wm-button--secondary .elementor-button {
  color: var(--paper);
  padding: 0;
}
.wm-button--secondary .elementor-button::before,
.wm-button--secondary .elementor-button::after { content: none; }
.wm-button--secondary .elementor-button-content-wrapper,
.wm-button--secondary .elementor-button-text { align-items: center; display: inline-flex; }
.wm-button--secondary .elementor-button-text {
  background-image: linear-gradient(currentColor, currentColor);
  background-position: left bottom;
  background-repeat: no-repeat;
  background-size: 0 1px;
  gap: var(--space-xs);
  padding-bottom: 5px;
  transition: background-size 300ms var(--ease-out);
}
.wm-button--secondary .elementor-button-text::after {
  background-color: currentColor;
  content: "";
  flex: 0 0 18px;
  height: 18px;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath d='M15 30L0 18.8843V15.9917L6.95225 21.157L13.736 26.281V0H16.264V26.3223L23.0478 21.157L30 15.9917V18.8843L15 30Z'/%3E%3C/svg%3E") center / contain no-repeat;
  transform: translateX(0) rotate(-90deg);
  transition: transform 420ms var(--ease-out);
  width: 18px;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath d='M15 30L0 18.8843V15.9917L6.95225 21.157L13.736 26.281V0H16.264V26.3223L23.0478 21.157L30 15.9917V18.8843L15 30Z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.wm-button.wm-button--secondary .elementor-button:is(:hover, :focus-visible) { color: var(--paper); }
.wm-button--secondary .elementor-button:is(:hover, :focus-visible) .elementor-button-text { background-size: calc(100% - 30px) 1px; }
.wm-button--secondary .elementor-button:is(:hover, :focus-visible) .elementor-button-text::after { transform: translateX(6px) rotate(-90deg); }

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .wm-button .elementor-button:is(.is-hovered, :hover, :focus-visible)::before,
  .wm-button .elementor-button:is(.is-hovered, :hover, :focus-visible)::after { scale: var(--button-hover-scale); }
  .wm-button .elementor-button:active::before,
  .wm-button .elementor-button:active::after { scale: var(--button-click-scale); }
}

/*------------------------------------*\
  #HEADER
\*------------------------------------*/
.wm-header { background-color: transparent; left: 0; min-height: var(--header-height); position: fixed; right: 0; top: 0; transition: background-color 320ms ease; z-index: 50; }
.wm-header.is-solid { background-color: var(--ink); }
body.admin-bar .wm-header { top: 46px; }
.wm-header .inner, .wm-header .header-layout { align-items: center; gap: var(--space-xl); min-height: var(--header-height); padding: 14px var(--content-gutter); }
.wm-header .logo { flex: 0 0 auto; gap: 10px; text-decoration: none; width: auto; }
.wm-header .logo .wm-icon { flex: 0 0 42px; width: 42px; }
.wm-header .logo .wordmark { flex: 0 0 108px; width: 108px; }
.wm-header .logo img { display: block; filter: brightness(0) invert(1); height: auto; width: 100%; }
.wm-header .nav { flex: 0 1 auto; flex-basis: auto; margin-left: auto; min-width: 0; width: auto; }
.wm-header .nav .elementor-nav-menu--main > .elementor-nav-menu { justify-content: flex-end; width: 100%; }
.wm-header .nav a, .wm-header .nav .elementor-item { background-image: linear-gradient(currentColor, currentColor); background-position: center calc(100% - 7px); background-repeat: no-repeat; background-size: 0 1px; color: var(--paper); font-size: 1.05rem; font-weight: 700; letter-spacing: .02em; line-height: 1; padding: 16px 13px; text-transform: uppercase; transform: none; transition: background-size 220ms var(--ease-out), color 180ms ease; white-space: nowrap; }
.wm-header .nav .current-menu-item > a,
.wm-header .nav .current_page_item > a,
.wm-header .nav .elementor-nav-menu--main a.elementor-item:is(:hover, :focus-visible) { background-size: calc(100% - 26px) 1px; color: var(--blue-pale); padding: 16px 13px; }
.wm-header .nav .elementor-menu-toggle { background: var(--paper); border-radius: 0; color: var(--ink); }
.wm-header .nav .elementor-nav-menu--dropdown { background: var(--ink); margin-top: 14px; }

@media (min-width: 768px) {
  body.admin-bar .wm-header { top: 32px; }
}

/*------------------------------------*\
  #HOMEPAGE
\*------------------------------------*/

/* Hero. */
.wm-hero { background: var(--blue); isolation: isolate; min-height: 100svh; overflow: hidden; padding: 96px var(--content-gutter) 112px; position: relative; }
.wm-hero .kinetic-grid { height: 100%; inset: 0 0 0 auto; opacity: .45; pointer-events: none; position: absolute; width: 100%; z-index: 0; }
.wm-hero .content { gap: 30px; margin-bottom: 56px; max-width: none; position: relative; transform: translate3d(0, var(--hero-shift, 0), 0); width: 100%; will-change: transform; z-index: 2; }
.wm-hero .title .elementor-heading-title { color: var(--ink); font-size: clamp(3.1rem, 12.5vw, 4.5rem); font-weight: 700; line-height: .82; text-transform: uppercase; }
.wm-hero .title .elementor-heading-title strong { color: var(--paper); display: inline-block; font-weight: inherit; }
.wm-hero .word-cycle { display: inline-grid; min-width: 0; overflow: clip; vertical-align: bottom; }
.wm-hero .word-cycle .word { display: block; grid-area: 1 / 1; will-change: transform; }
.wm-hero .word-cycle .word.is-current { transform: translate3d(0, 0, 0); }
.wm-hero .word-cycle .word.is-next { transform: translate3d(0, 108%, 0); }
.wm-hero .word-cycle.is-changing .word.is-current { animation: wm-word-out 860ms cubic-bezier(.76, 0, .24, 1) forwards; }
.wm-hero .word-cycle.is-changing .word.is-next { animation: wm-word-in 860ms cubic-bezier(.76, 0, .24, 1) forwards; }

@keyframes wm-word-out {
  from { transform: translate3d(0, 0, 0); }
  to { transform: translate3d(0, -108%, 0); }
}

@keyframes wm-word-in {
  from { transform: translate3d(0, 108%, 0); }
  to { transform: translate3d(0, 0, 0); }
}
.wm-hero .text { max-width: 560px; }
.wm-hero .text .elementor-heading-title { color: var(--paper); }
.wm-hero .text strong { color: inherit; font-weight: 600; }
.wm-hero .button { bottom: 48px; left: var(--content-gutter); position: absolute; z-index: 3; }

@media (min-width: 768px) {
  .wm-hero { padding-top: clamp(120px, 18vh, 220px); }
  .wm-hero .kinetic-grid { opacity: 1; width: 48%; }
  .wm-hero .content { margin-bottom: 72px; }
  .wm-hero .title .elementor-heading-title { font-size: clamp(6rem, 10vw, 15rem); line-height: .78; }
  .wm-hero .word-cycle { min-width: 7.4em; }
}

/* Editorial introduction. */
.wm-overview { align-items: flex-start; background: var(--ink); gap: var(--space-xl); min-height: 620px; overflow: hidden; padding: var(--padding-lg) var(--padding-md); position: relative; }
.wm-overview::after { background: url("/wp-content/plugins/waymont-03-site/assets/images/featured-project.png") center / cover no-repeat; content: ""; inset: 34% -70% -30% 2%; mask: url("/wp-content/plugins/waymont-03-site/assets/images/logo-mark.svg") center / contain no-repeat; opacity: .36; position: absolute; transform: translate3d(0, var(--parallax-y, 0), 0); will-change: transform; -webkit-mask: url("/wp-content/plugins/waymont-03-site/assets/images/logo-mark.svg") center / contain no-repeat; }
.wm-overview > * { max-width: none; position: relative; width: 100%; z-index: 1; }
.wm-overview .title { align-self: flex-start; }
.wm-overview h2.elementor-heading-title { color: var(--paper); font-size: clamp(4rem, 6vw, 8.4rem); font-weight: 700; line-height: .96; text-align: left; text-transform: uppercase; }
.wm-overview .text { color: rgb(255 255 255 / 78%); }
.wm-overview .text p { margin: 0; }
.wm-overview > .wm-button { align-self: flex-start; }

@media (min-width: 768px) {
  .wm-overview::after { inset: -65% -60vw -65% 40%; opacity: .92; }
  .wm-overview > * { width: 50%; }
}

/* Credentials strip. */
.wm-standards { background: var(--paper); border: 0; padding: 0 var(--padding-md); }
.wm-standards .standard { border-bottom: 1px solid var(--line); flex: 1 1 100%; justify-content: flex-start; padding: var(--space-xl) var(--space-xs); }
.wm-standards .icon { display: none; }
.wm-standards .wm-eyebrow .elementor-heading-title { color: var(--ink); font-size: clamp(1.4rem, 2vw, 2rem); letter-spacing: 0; }

@media (min-width: 768px) {
  .wm-standards .standard { border-bottom: 0; border-right: 1px solid var(--line); flex-basis: 20%; justify-content: center; min-height: 136px; text-align: center; }
  .wm-standards .standard:last-child { border-right: 0; }
}

/*------------------------------------*\
  #SHARED-CARDS-AND-LISTINGS
\*------------------------------------*/
body .wm-home .card-grid, body .wm-benefits .benefit-grid, body .wm-about .office-grid, body .wm-contact .contact-grid { display: grid; gap: 1px; grid-auto-rows: auto; grid-template-columns: 1fr; grid-template-rows: auto; padding-inline: var(--content-gutter); }
.wm-card, .wm-loop-card, .benefit, .office, .contact-card { background: var(--paper); border: 0; min-width: 0; overflow: hidden; }
.wm-card { border-top: 1px solid var(--ink); }
.wm-card > .wm-icon { background: none; margin: var(--padding-sm) var(--padding-sm) 0; padding: 0; }
.wm-card .media .elementor-widget-container,
.wm-card .media img,
.wm-loop-card .media,
.wm-loop-card .media .elementor-widget-container,
.wm-loop-card .media img { display: block; height: 280px; object-fit: cover; width: 100%; }
.wm-card .content, .wm-loop-card .content { flex: 1; gap: var(--space-sm); min-width: 0; padding: var(--padding-sm); }
.wm-card .content > .wm-button, .wm-loop-card .content > .wm-button { margin-top: auto; padding-top: var(--padding-sm); }
body .wm-card .title .elementor-heading-title, body .wm-loop-card .title .elementor-heading-title { color: var(--ink); font-size: clamp(2.4rem, 3vw, 4rem); font-weight: 700; line-height: 1.1; }
.wm-expertise { background: var(--ink); color: var(--paper); }
.wm-expertise .section-heading { padding-bottom: var(--padding-md); }
.wm-expertise .wm-section-title .elementor-heading-title { color: var(--paper); }
.wm-expertise .card-grid { padding-inline: 0; }
.wm-expertise .card-grid.three-columns { grid-template-columns: 1fr; }
.wm-expertise .wm-card { background: var(--ink); border-color: rgb(255 255 255 / 34%); display: grid; gap: 0; grid-template-columns: 72px minmax(0, 1fr); padding: 0 var(--content-gutter) 0 0; transition: background-color 420ms var(--ease-out), color 420ms var(--ease-out); }
.wm-expertise .wm-card > .wm-icon { align-self: start; filter: brightness(0) invert(1); margin: 34px 0 0; }
.wm-expertise .wm-card .content { padding: 32px 0 38px; }
.wm-expertise .wm-card .title .elementor-heading-title { color: var(--paper); font-size: clamp(2.8rem, 3vw, 4.4rem); line-height: 1.1; max-width: 88rem; }
.wm-expertise .wm-card .text { color: rgb(255 255 255 / 66%); max-width: 720px; }
.wm-expertise .wm-card-link .elementor-heading-title { color: var(--paper); font-size: var(--text-base); line-height: 1.2; }
.wm-expertise .wm-card-link a { align-items: center; color: var(--paper); display: inline-flex; gap: 12px; text-decoration: none; }
.wm-expertise .wm-card-link a::after { background-color: currentColor; content: ""; flex: 0 0 18px; height: 18px; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath d='M15 30L0 18.8843V15.9917L6.95225 21.157L13.736 26.281V0H16.264V26.3223L23.0478 21.157L30 15.9917V18.8843L15 30Z'/%3E%3C/svg%3E") center / contain no-repeat; transform: rotate(-90deg); transition: transform 420ms var(--ease-out); width: 18px; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath d='M15 30L0 18.8843V15.9917L6.95225 21.157L13.736 26.281V0H16.264V26.3223L23.0478 21.157L30 15.9917V18.8843L15 30Z'/%3E%3C/svg%3E") center / contain no-repeat; }
.wm-expertise .wm-card-link a:is(:hover, :focus-visible)::after { transform: translateX(6px) rotate(-90deg); }
.wm-expertise .wm-card-link a:focus-visible { outline: 2px solid var(--paper); outline-offset: 4px; }
.wm-expertise .wm-card:is(:hover, :focus-within) { background: #111; }
.wm-expertise .wm-card:is(:hover, :focus-within) .text { color: var(--paper); }
.wm-careers { background: var(--paper); }
.wm-products { background: var(--surface); }

@media (min-width: 768px) {
  body .wm-home .card-grid.two-columns,
  body .wm-benefits .benefit-grid,
  body .wm-about .office-grid,
  body .wm-contact .contact-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  body .wm-home .card-grid.three-columns { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  body .wm-home .wm-expertise .card-grid.three-columns { grid-template-columns: 1fr; }
  .wm-expertise .wm-card { grid-template-columns: 96px minmax(0, 1fr); }
  .wm-expertise .wm-card .content { align-items: flex-start; display: grid; gap: var(--space-md) var(--space-2xl); grid-template-columns: minmax(0, 1.35fr) minmax(260px, .65fr); }
  .wm-expertise .wm-card .title { grid-row: 1 / span 3; }
  .wm-expertise .wm-card .text,
  .wm-expertise .wm-card .wm-card-link { grid-column: 2; }
}

/*------------------------------------*\
  #FEATURED-PROJECT
\*------------------------------------*/
.wm-feature { --wm-feature-seam: calc(46% + 12px); background: var(--blue); overflow: hidden; position: relative; }
.wm-feature .project-carousel { min-width: 0; width: 100%; }
.wm-feature .project-carousel > .elementor-widget-container { position: relative; }
.wm-feature .swiper-slide { height: auto; }
.wm-feature .wm-feature-slide { display: grid; grid-template-columns: 1fr; height: 100%; }
.wm-feature .media,
.wm-feature .media .elementor-widget-container,
.wm-feature .media img { display: block; height: 100%; min-height: 420px; object-fit: cover; width: 100%; }
.wm-feature .media { overflow: hidden; }
.wm-feature .media img { transform: translate3d(0, var(--parallax-y, 0), 0) scale(1.08); will-change: transform; }
.wm-feature .content { background: var(--blue); gap: var(--space-lg); padding: var(--padding-lg) var(--content-gutter); }
.wm-feature .title .elementor-heading-title { color: var(--paper); font-size: clamp(3.6rem, 4.8vw, 7.2rem); font-weight: 700; line-height: 1.05; text-transform: uppercase; }
.wm-feature .wm-eyebrow .elementor-heading-title, .wm-feature .text .elementor-widget-container { color: var(--paper); }
.wm-feature .project-carousel.has-stationary-content .wm-feature-slide > .content { display: none; }
.wm-feature .wm-feature-content-stage { background: var(--blue); display: grid; position: relative; z-index: 2; }
.wm-feature .wm-feature-content-panel {
  grid-area: 1 / 1;
  opacity: 0;
  pointer-events: none;
  transition: opacity 360ms ease;
}
.wm-feature .wm-feature-content-panel.is-active { opacity: 1; pointer-events: auto; }
.wm-feature .project-carousel .elementor-swiper-button {
  align-items: center;
  backdrop-filter: blur(10px);
  background: rgb(5 5 5 / 82%);
  border: 0;
  border-radius: 0;
  color: var(--paper);
  display: flex;
  height: 64px;
  justify-content: center;
  left: var(--content-gutter);
  margin: 0;
  right: auto;
  top: 210px;
  transform: translateY(-50%);
  transition: background-color 260ms ease, color 260ms ease;
  width: 64px;
  -webkit-backdrop-filter: blur(10px);
}
.wm-feature .project-carousel .elementor-swiper-button.elementor-swiper-button-prev { top: 178px; }
.wm-feature .project-carousel .elementor-swiper-button.elementor-swiper-button-next { left: var(--content-gutter); top: 242px; }
.wm-feature .project-carousel .elementor-swiper-button svg { display: none; }
.wm-feature .project-carousel .elementor-swiper-button::before {
  background: currentColor;
  content: "";
  height: 2px;
  position: absolute;
  transition: width 360ms var(--ease-out);
  width: 22px;
}
.wm-feature .project-carousel .elementor-swiper-button::after {
  border-right: 2px solid currentColor;
  border-top: 2px solid currentColor;
  content: "";
  height: 10px;
  position: absolute;
  transition: translate 360ms var(--ease-out);
  width: 10px;
}
.wm-feature .project-carousel .elementor-swiper-button-prev::after { transform: translateX(-5px) rotate(-135deg); }
.wm-feature .project-carousel .elementor-swiper-button-next::after { transform: translateX(5px) rotate(45deg); }
.wm-feature .project-carousel .elementor-swiper-button:is(:hover, :focus-visible) { background: var(--blue-pale); color: var(--ink); }
.wm-feature .project-carousel .elementor-swiper-button:is(:hover, :focus-visible)::before { width: 28px; }
.wm-feature .project-carousel .elementor-swiper-button-prev:is(:hover, :focus-visible)::after { translate: -3px 0; }
.wm-feature .project-carousel .elementor-swiper-button-next:is(:hover, :focus-visible)::after { translate: 3px 0; }
.wm-feature .project-carousel .elementor-swiper-button:focus-visible { outline: 2px solid var(--paper); outline-offset: 3px; }
.wm-feature .project-carousel .elementor-swiper-button.swiper-button-disabled { opacity: .35; pointer-events: none; }
.wm-feature .swiper-pagination-bullet-active { background: var(--paper); }

@media (min-width: 768px) {
  .wm-feature .wm-feature-slide { grid-template-columns: .92fr 1.08fr; }
  .wm-feature .project-carousel.has-stationary-content .swiper { margin-left: 0; margin-right: auto; padding-bottom: 0; width: var(--wm-feature-seam); }
  .wm-feature .project-carousel.has-stationary-content .wm-feature-slide { display: block; padding: 0; }
  .wm-feature .project-carousel.has-stationary-content .wm-feature-content-stage { bottom: 26px; left: var(--wm-feature-seam); position: absolute; right: 10px; top: 10px; }
  .wm-feature .project-carousel.has-stationary-content .wm-feature-content-panel { height: 100%; }
  .wm-feature .project-carousel.elementor-pagination-position-outside .swiper-pagination { bottom: 32px; left: calc(var(--wm-feature-seam) + var(--content-gutter)); right: auto; top: auto; transform: none; width: auto; }
  .wm-feature .media,
  .wm-feature .media .elementor-widget-container,
  .wm-feature .media img { min-height: 700px; }
  .wm-feature .project-carousel .elementor-swiper-button.elementor-swiper-button-prev { bottom: 64px; left: auto; right: calc(100% - var(--wm-feature-seam)); top: auto; transform: none; }
  .wm-feature .project-carousel .elementor-swiper-button.elementor-swiper-button-next { bottom: 0; left: auto; right: calc(100% - var(--wm-feature-seam)); top: auto; transform: none; }
}

/*------------------------------------*\
  #CALL-TO-ACTION
\*------------------------------------*/

.wm-cta {
  background-image: url("/wp-content/plugins/waymont-03-site/assets/images/cta-glow-dots.png");
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
  border-radius: 20px;
  color: var(--ink);
  gap: var(--space-md);
  margin: var(--padding-md) var(--page-gutter);
  min-height: 480px;
  overflow: hidden;
  padding: clamp(72px, 10vw, 144px) var(--padding-sm);
  text-align: center;
  width: calc(100% - (2 * var(--page-gutter)));
}
.wm-cta > * { width: 100%; }
body .wm-cta .wm-section-title .elementor-heading-title { color: var(--ink); font-size: clamp(3.6rem, 11vw, 5rem); font-weight: 600; line-height: .98; margin-inline: auto; max-width: 18ch; text-transform: none; }
.wm-cta .text { margin-inline: auto; max-width: 620px; }
.wm-cta .text .elementor-widget-container { color: rgb(5 5 5 / 72%); font-size: var(--text-lg); }
.wm-cta > .wm-button { margin-top: 16px; text-align: center; }
.wm-cta .wm-button--light .elementor-button,
.wm-cta .wm-button--inverse .elementor-button {
  --button-background: var(--ink);
  --button-border-width: 0px;
  --button-hover-background: var(--blue-pale);
}

@media (min-width: 768px) {
  .wm-cta { border-radius: clamp(20px, 2vw, 32px); margin: var(--padding-lg) var(--content-gutter); min-height: clamp(460px, 36vw, 560px); padding-inline: var(--padding-md); width: calc(100% - (2 * var(--content-gutter))); }
  body .wm-cta .wm-section-title .elementor-heading-title { font-size: clamp(4rem, 5vw, 7.2rem); }
}

/*------------------------------------*\
  #INTERIOR-PAGES
\*------------------------------------*/
.wm-interior { background: var(--paper); overflow: hidden; }
.wm-page-hero, .wm-single-hero { background: var(--blue); gap: var(--space-lg); min-height: 560px; overflow: hidden; padding: calc(var(--header-height) + var(--padding-lg)) var(--content-gutter) var(--padding-lg); position: relative; }
.wm-page-hero::after, .wm-single-hero::after { background: url("/wp-content/plugins/waymont-03-site/assets/images/featured-project.png") center / cover no-repeat; content: ""; inset: -18% -76% -18% 14%; mask: url("/wp-content/plugins/waymont-03-site/assets/images/logo-mark.svg") center / contain no-repeat; opacity: .27; position: absolute; transform: translate3d(0, var(--parallax-y, 0), 0); -webkit-mask: url("/wp-content/plugins/waymont-03-site/assets/images/logo-mark.svg") center / contain no-repeat; }
.wm-page-hero > *, .wm-single-hero > * { max-width: 100%; position: relative; z-index: 1; }
body .wm-page-hero .title .elementor-heading-title, body .wm-single-hero .title .elementor-heading-title { color: var(--paper); font-weight: 700; line-height: .82; text-transform: uppercase; }
body .wm-page-hero .title .elementor-heading-title { font-size: clamp(4.4rem, 15vw, 7rem); max-width: 10ch; }
body .wm-single-hero .title .elementor-heading-title { font-size: clamp(3rem, 8vw, 4rem); max-width: 100%; }
.wm-page-hero .wm-eyebrow .elementor-heading-title, .wm-single-hero .wm-eyebrow .elementor-heading-title,
.wm-page-hero .text .elementor-widget-container, .wm-single-hero .text .elementor-widget-container { color: var(--paper); }
.wm-page-hero .text, .wm-single-hero .text { max-width: 720px; }
.wm-page-hero .text .elementor-widget-container, .wm-single-hero .text .elementor-widget-container,
.wm-page-hero .text p, .wm-single-hero .text p { font-size: var(--heading-xs); line-height: 1.35; }
.wm-listing { gap: 0; padding-block: 0; }
.wm-listing > .section-heading { background: var(--ink); padding-block: var(--padding-lg); }
body .wm-listing > .section-heading .wm-section-title .elementor-heading-title { color: var(--paper); }
.wm-listing > .wm-loop-grid:not(.expertise-grid) { padding-block: var(--padding-lg); }
.wm-loop-grid { padding-inline: var(--content-gutter); }
.wm-loop-grid .elementor-loop-container { background: var(--ink); gap: 2px; }
.wm-loop-card { transition: background-color 360ms var(--ease-out), color 360ms var(--ease-out); }
.wm-loop-card:is(:hover, :focus-within) { background: var(--blue); }
body .wm-loop-card:is(:hover, :focus-within) .title .elementor-heading-title, .wm-loop-card:is(:hover, :focus-within) .text, .wm-loop-card:is(:hover, :focus-within) .text .elementor-widget-container { color: var(--paper); }
.expertise-grid { padding-inline: 0; }
.expertise-grid .elementor-loop-container { gap: 0; }
body .expertise-grid .expertise-section { border: 0; gap: 0; grid-auto-rows: auto; grid-template-rows: auto; overflow: hidden; padding: 0; }
.expertise-section .media-column { aspect-ratio: 4 / 3; background: var(--surface); min-width: 0; overflow: hidden; padding: 0; position: relative; }
.expertise-section .media { height: 100%; inset: 0; position: absolute; width: 100%; }
.expertise-section .media .elementor-widget-container, .expertise-section .media img { display: block; height: 100%; object-fit: cover; width: 100%; }
.expertise-section .related-project-card { bottom: var(--padding-sm); left: var(--padding-sm); max-width: calc(100% - (2 * var(--padding-sm))); position: absolute; z-index: 1; }
.related-project { background: var(--ink); color: var(--paper); display: block; padding: 16px 18px; text-decoration: none; }
.related-project .wm-eyebrow { color: var(--blue-pale); display: block; margin-bottom: 6px; }
.related-project .title { display: block; }
.expertise-section .content { gap: 18px; min-width: 0; padding: var(--padding-md); }
body .expertise-section .title .elementor-heading-title { color: var(--ink); font-size: clamp(3.2rem, 3.6vw, 5.2rem); font-weight: 700; line-height: .98; max-width: 14ch; }
.expertise-section .text p { margin: 0; }
.expertise-section .text p + p { margin-top: 24px; }
.expertise-section .wm-button--secondary { align-self: flex-start; margin-top: 8px; }
.expertise-section .wm-button.wm-button--secondary .elementor-button,
.expertise-section .wm-button.wm-button--secondary .elementor-button:is(:hover, :focus-visible) { color: var(--ink); }
.wm-loop-card.position-row { border-top: 1px solid var(--ink); gap: var(--space-lg); padding: var(--space-lg) 28px; }
.wm-loop-card.position-row .content { gap: 2px; padding: 0; }
.wm-loop-card.team-card .media, .wm-loop-card.team-card .media .elementor-widget-container, .wm-loop-card.team-card .media img { height: 340px; }
.wm-benefits { gap: 40px; padding-block: var(--padding-lg); }
.benefit, .office, .contact-card { border-top: 1px solid var(--ink); gap: var(--space-sm); padding: var(--space-xl); }
body .wm-benefits .benefit .title .elementor-heading-title { color: var(--ink); font-size: clamp(2.8rem, 2.5vw, 3.4rem); font-weight: 700; line-height: 1.12; }
body .wm-interior .split-section, body .wm-interior .single-layout { display: grid; gap: var(--space-2xl); grid-auto-rows: auto; grid-template-columns: 1fr; grid-template-rows: auto; padding-inline: var(--content-gutter); }
.split-section .section-heading { padding-inline: 0; }
.prose { color: var(--muted); max-width: 780px; }
.prose h2, .prose h3 { color: var(--ink); font-size: clamp(3.2rem, 4vw, 5.6rem); font-weight: 700; line-height: .96; margin-top: 48px; }
.prose h3 { line-height: 1.08; }
.prose h2:first-child, .prose h3:first-child { margin-top: 0; }
.wm-single-image, .wm-single-image .elementor-widget-container, .wm-single-image img { display: block; max-height: 640px; object-fit: cover; width: 100%; }
.facts { align-self: start; background: var(--ink); border-top: var(--space-2xs) solid var(--blue); color: var(--paper); gap: 0; padding: var(--space-xl); }
body .facts .wm-section-title .elementor-heading-title { color: var(--paper); font-size: clamp(3.2rem, 4vw, 4.8rem); }
.facts > .wm-section-title { margin-bottom: 20px; }
.facts .fact { border-top: 1px solid rgb(255 255 255 / 24%); gap: 2px; padding-block: 16px; }
.facts .fact .elementor-widget-text-editor { color: var(--paper); }
.contact-card .label { color: var(--blue-deep); font-size: var(--text-xs); font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.wm-contact .contact-grid { background: var(--ink); padding-block: var(--padding-lg); }
.wm-contact .contact-card { background: var(--ink); border-color: rgb(255 255 255 / 28%); color: var(--paper); }
body .wm-contact .contact-card .wm-section-title .elementor-heading-title { color: var(--paper); font-size: clamp(3.2rem, 4vw, 5.6rem); }
.wm-contact .contact-card .label { color: var(--blue-pale); }
.wm-contact .contact-card a { color: var(--paper); }
.wm-about .split-section { background: var(--ink); color: var(--paper); }
body .wm-about .split-section .wm-section-title .elementor-heading-title { color: var(--paper); font-size: clamp(4rem, 4.8vw, 6.4rem); max-width: 8ch; }
.wm-about .split-section .prose { color: rgb(255 255 255 / 70%); font-size: var(--text-lg); }
.wm-about .office-grid { background: var(--blue); }
.wm-about .office { border-color: rgb(255 255 255 / 32%); }
body .wm-about .office .wm-section-title .elementor-heading-title { font-size: clamp(3.8rem, 5vw, 6.4rem); }
.wm-about .wm-team { background: var(--surface); }
.wm-about .wm-team > .text { margin-inline: var(--content-gutter); }
.wm-about .wm-team > .wm-loop-grid { padding-top: var(--padding-md); }
.wm-about .wm-overview > * { width: 100%; max-width: 1000px; }
.wm-about .wm-overview h2.elementor-heading-title { font-size: clamp(3.2rem, 4.5vw, 6.4rem); line-height: 1.1; }
.wm-about .history-grid { display: grid; gap: var(--space-xl); grid-template-columns: repeat(3, minmax(0, 1fr)); padding-inline: var(--content-gutter); }
.wm-about .history-item { border-top: 1px solid var(--line); gap: var(--space-md); padding-block: var(--space-xl); }
.wm-about .team-card .prose p + p { margin-top: var(--space-md); }
@media (max-width: 767px) {
  .wm-about .history-grid { grid-template-columns: 1fr; }
}
.wm-legal .legal-content { gap: 40px; max-width: 920px; padding-inline: var(--content-gutter); }
.wm-legal .legal-section { border-top: 1px solid var(--line); gap: 12px; padding-top: 32px; }
body .wm-legal .legal-section .title .elementor-heading-title { font-size: clamp(2.8rem, 4vw, 4.8rem); font-weight: 700; line-height: 1; }

@media (min-width: 768px) {
  .wm-page-hero, .wm-single-hero { min-height: min(72svh, 720px); }
  .wm-page-hero::after, .wm-single-hero::after { inset: -45% -18% -45% 38%; opacity: .5; }
  .wm-page-hero > *, .wm-single-hero > * { max-width: min(1040px, 72%); }
  body .wm-page-hero .title .elementor-heading-title { font-size: clamp(4.8rem, 8.5vw, 12rem); max-width: 11ch; }
  body .wm-single-hero .title .elementor-heading-title { font-size: clamp(4.8rem, 7vw, 10rem); max-width: 14ch; }
  .expertise-section .media-column { aspect-ratio: auto; height: 100%; }
  .expertise-grid .e-loop-item:nth-child(even) .expertise-section .media-column { order: 2; }
}

@media (min-width: 1024px) {
  body .wm-benefits .benefit-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  body .wm-contact .contact-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  body .wm-interior .split-section { grid-template-columns: minmax(280px, .75fr) minmax(0, 1.25fr); }
  body .wm-interior .single-layout { grid-template-columns: minmax(0, 1fr) minmax(280px, 360px); }
}

/*------------------------------------*\
  #FOOTER
\*------------------------------------*/
.wm-footer { background: var(--ink); color: var(--paper); }
body .wm-footer .columns { display: grid; gap: 0; grid-auto-rows: auto; grid-template-columns: 1fr; grid-template-rows: auto; padding: 0; }
.wm-footer .column { border-bottom: 1px solid rgb(255 255 255 / 22%); gap: 8px; padding: 40px var(--content-gutter); }
.wm-footer .column p { font-size: var(--text-sm); line-height: 1.6; margin: 0; }
.wm-footer .wm-eyebrow .elementor-heading-title { color: var(--paper); }
.wm-footer .bottom { border: 0; gap: var(--space-sm); padding: var(--space-lg) var(--content-gutter); }

@media (min-width: 768px) {
  body .wm-footer .columns { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .wm-footer .column:nth-child(odd) { border-right: 1px solid rgb(255 255 255 / 22%); }
}

@media (min-width: 1024px) {
  body .wm-footer .columns { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .wm-footer .column { border-bottom: 0; border-right: 1px solid rgb(255 255 255 / 22%); padding: 72px 40px; }
  .wm-footer .column:last-child { border-right: 0; }
}

/*------------------------------------*\
  #MOTION-AND-ACCESSIBILITY
\*------------------------------------*/
.motion-reveal { opacity: 0; transform: translate3d(0, 36px, 0); transition: opacity 900ms var(--ease-out), transform 900ms var(--ease-out); transition-delay: var(--motion-delay, 0ms); }
.motion-reveal.motion-reveal--fade { transform: none; }
.motion-reveal.is-visible { opacity: 1; transform: translate3d(0, 0, 0); }
.wm-products .motion-reveal { transform: none; transition-property: opacity; }
.motion-chapter { clip-path: inset(0 0 12% 0); transition: clip-path 1200ms var(--ease-out); }
.motion-chapter.is-visible { clip-path: inset(0); }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .wm-button .elementor-button, .wm-button .elementor-button::before, .wm-button .elementor-button::after, .motion-reveal, .motion-chapter, .wm-hero .word-cycle { transition: none; }
  .wm-button--secondary .elementor-button-text, .wm-button--secondary .elementor-button-text::after, .wm-expertise .wm-card-link a::after { transition: none; }
  .wm-button .elementor-button:is(:hover, :focus-visible) { color: var(--button-hover-color); }
  .wm-button .elementor-button:is(:hover, :focus-visible)::before { clip-path: circle(150% at 50% 50%); }
  .wm-hero .word-cycle .word { animation: none; filter: none; transform: none; }
  .wm-hero .word-cycle .word.is-next { display: none; }
  .motion-reveal { opacity: 1; transform: none; }
  .motion-chapter { clip-path: none; }
  .wm-overview::after, .wm-feature .media img, .wm-page-hero::after, .wm-single-hero::after { transform: none; }
  .wm-feature .project-carousel .elementor-swiper-button,
  .wm-feature .project-carousel .elementor-swiper-button::before,
  .wm-feature .project-carousel .elementor-swiper-button::after,
  .wm-feature .wm-feature-content-panel { transition: none; }
}

/*------------------------------------*\
  #AUTHORISED-VISUAL-GRID-HELPER
\*------------------------------------*/
.wm-visual-grid { inset: 0; opacity: 0; pointer-events: none; position: fixed; transition: opacity 120ms ease; z-index: 99998; }
.wm-grid-visible .wm-visual-grid { opacity: 1; }
.wm-visual-grid .columns { display: grid; gap: 16px; grid-template-columns: repeat(4, minmax(0, 1fr)); height: 100%; margin-inline: auto; padding-inline: var(--content-gutter); width: calc(100% - (2 * var(--page-gutter))); }
.wm-visual-grid .columns span { background: rgb(17 132 216 / 7%); border-inline: 1px solid rgb(17 132 216 / 18%); }
.wm-visual-grid .columns span:nth-child(n + 5) { display: none; }
body button.wm-visual-grid-toggle { align-items: center; appearance: none; background: var(--ink); border: 1px solid rgb(255 255 255 / 25%); border-radius: 0; bottom: 16px; color: var(--paper); cursor: pointer; display: inline-flex; font-size: 16px; font-weight: 700; height: 40px; justify-content: center; line-height: 1; padding: 0; position: fixed; right: 16px; width: 40px; z-index: 99999; }

@media (min-width: 768px) {
  .wm-visual-grid .columns { grid-template-columns: repeat(8, minmax(0, 1fr)); }
  .wm-visual-grid .columns span:nth-child(n + 5) { display: block; }
  .wm-visual-grid .columns span:nth-child(n + 9) { display: none; }
}

@media (min-width: 1024px) {
  .wm-visual-grid .columns { grid-template-columns: repeat(12, minmax(0, 1fr)); }
  .wm-visual-grid .columns span:nth-child(n) { display: block; }
}
