/* Elementor building blocks. Tokens and local font files belong to design-system.css. */
.gxe-block {
  container: gripx-block / inline-size;
  width: 100%;
  min-width: 0;
  color: var(--color-text);
  font-family: var(--gx-font-body);
  font-size: var(--gx-text-body);
  line-height: 1.6;
  overflow-wrap: anywhere;
}
.gxe-block *, .gxe-block *::before, .gxe-block *::after { box-sizing: border-box; }
.gxe-tone-base { background: var(--color-bg); }
.gxe-tone-soft { background: var(--color-bg-soft); }
.gxe-tone-card { background: var(--color-card); }
.gxe-tone-transparent { background: transparent; }
.gxe-inner { width: min(var(--container-width), 100% - 2 * var(--gx-gutter)); margin-inline: auto; min-width: 0; }
.gxe-space-section > .gxe-inner { padding-block: var(--gx-space-section); }
.gxe-space-compact > .gxe-inner { padding-block: clamp(2rem, 5vw, 4rem); }
.gxe-space-none > .gxe-inner { width: 100%; padding: 0; }
.gxe-block .gxe-title {
  margin: 0 0 1.5rem;
  color: var(--color-text);
  font-family: var(--gx-font-display);
  font-size: var(--gx-text-heading);
  font-weight: 600;
  line-height: 1.05;
  letter-spacing: -0.035em;
  text-wrap: balance;
}
.gxe-block .gxe-copy, .gxe-block .gxe-lead { margin: 0 0 1.5rem; max-width: 62ch; }
.gxe-block .gxe-lead { font-size: var(--gx-text-lead); line-height: 1.45; max-width: 40ch; }
.gxe-block .gx-btn { display: inline-flex; align-items: center; justify-content: center; max-width: 100%; text-decoration: none; white-space: normal; }
.gxe-block .gx-text-link { gap: .75rem; color: var(--color-text); text-decoration: underline; }
.gxe-block .gx-text-link:hover { color: var(--color-primary); }
.gxe-block :is(a, button, select):focus-visible { outline: 3px solid var(--color-primary); outline-offset: 5px; }
.gxe-block .gx-icon { width: 1.4em; height: 1.4em; flex-shrink: 0; }
.gxe-block .gx-btn .gx-icon { width: 1.25rem; height: 1.25rem; }
.gxe-hero.gxe-has-media > .gxe-inner { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); align-items: center; gap: var(--gx-space-gap); }
.gxe-hero .gxe-title { font-size: var(--gx-text-display); line-height: .98; letter-spacing: -.05em; max-width: 14ch; }
.gxe-hero-copy { min-width: 0; padding-block: 1rem; }
.gxe-hero-media { min-width: 0; padding: 1.5rem; }
.gxe-wheel { display: block; width: 100%; height: auto; animation: gxe-wheel-spin 48s linear infinite; }
@keyframes gxe-wheel-spin { to { transform: rotate(360deg); } }
.gxe-image { display: block; max-width: 100%; width: 100%; height: auto; object-fit: contain; }
.gxe-hero-media .gxe-image { aspect-ratio: 1; object-fit: cover; }
.gxe-centered { text-align: center; }
.gxe-centered .gxe-title, .gxe-centered .gxe-lead { margin-inline: auto; }
.gxe-services > .gxe-inner, .gxe-contact > .gxe-inner { display: grid; grid-template-columns: minmax(0, .75fr) minmax(0, 1.25fr); gap: var(--gx-space-gap); align-items: start; }
.gxe-section-intro, .gxe-directory, .gxe-prose { min-width: 0; }
.gxe-service { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 1.5rem; padding: 1.5rem; }
.gxe-service:nth-child(odd) { background: var(--color-card); }
.gxe-tone-card .gxe-service:nth-child(odd) { background: var(--color-bg-soft); }
.gxe-service h3 { display: flex; align-items: flex-start; gap: .75rem; margin: 0; font: 600 var(--gx-text-body)/1.3 var(--gx-font-body); letter-spacing: 0; text-wrap: pretty; }
.gxe-service h3 .gx-icon { color: var(--color-primary); }
.gxe-service .gxe-copy { margin-bottom: 0; }
.gxe-service .gx-text-link { margin-top: .5rem; }
.gxe-image-text.gxe-has-media > .gxe-inner { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: var(--gx-space-gap); align-items: center; }
.gxe-image-left .gxe-figure { order: -1; }
.gxe-figure { margin: 0; min-width: 0; }
.gxe-image-cover .gxe-image { aspect-ratio: 4/3; object-fit: cover; }
.gxe-richtext { max-width: 62ch; }
.gxe-richtext a { text-decoration: underline; }
.gxe-richtext > :last-child { margin-bottom: 1.5rem; }
.gxe-contact-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem; margin: 0; }
.gxe-contact-list dt { display: flex; gap: .6rem; align-items: center; margin-bottom: .5rem; color: var(--color-muted); font-size: var(--gx-text-small); }
.gxe-contact-list dd { margin: 0; }
.gxe-contact-list .gx-text-link { overflow-wrap: anywhere; }
.gxe-cta > .gxe-inner { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: var(--gx-space-gap); }
.gxe-cta .gxe-title { max-width: 18ch; }
.gxe-cta .gxe-copy { margin-bottom: 0; }
.gxe-faq-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2.5rem var(--gx-space-gap); margin: 2rem 0 0; }
.gxe-faq-list dt { margin-bottom: .75rem; font-weight: 600; font-size: var(--gx-text-lead); line-height: 1.3; }
.gxe-faq-list dd { margin: 0; max-width: 56ch; }
/* Container queries also cover a widget placed inside a narrow Elementor column. */
@container gripx-block (max-width: 900px) {
  .gxe-block .gxe-title { font-size: clamp(2.25rem, 6cqi, 3.5rem); }
  .gxe-hero .gxe-title { font-size: clamp(2.6rem, 9cqi, 4.5rem); }
  .gxe-hero.gxe-has-media > .gxe-inner, .gxe-services > .gxe-inner, .gxe-contact > .gxe-inner,
  .gxe-image-text.gxe-has-media > .gxe-inner, .gxe-cta > .gxe-inner { grid-template-columns: minmax(0, 1fr); }
  .gxe-hero-media { max-width: 36rem; width: 100%; justify-self: center; }
  .gxe-image-left .gxe-figure { order: 0; }
}
@container gripx-block (max-width: 599px) {
  .gxe-inner { width: calc(100% - 2.5rem); }
  .gxe-space-section > .gxe-inner { padding-block: 4.5rem; }
  .gxe-service, .gxe-contact-list, .gxe-faq-list { grid-template-columns: minmax(0, 1fr); }
  .gxe-service { padding: 1.5rem 1.25rem; gap: .75rem; }
  .gxe-hero-media { padding: 1rem; }
}
@media (prefers-reduced-motion: reduce) { .gxe-wheel { animation: none; } .gxe-block .gx-btn { transition: none; transform: none; } }
