@font-face {
  font-family:"DM Sans";
  font-style:normal;
  font-weight:400 600;
  font-display:swap;
  src:url("fonts/dm-sans.woff2") format("woff2")}

@font-face {
  font-family:"IBM Plex Mono";
  font-style:normal;
  font-weight:400;
  font-display:swap;
  src:url("fonts/ibm-plex-mono.woff2") format("woff2")}

:root {
  --mb-gutter:64px;
  --mb-section:120px;
  --mb-body:20px;
  --mb-h1:clamp(72px,6.12vw,96px);
  --mb-h2:48px;
  --mb-h3:28px;
  /* Motion system: one curve for arrivals, one for state changes, four durations. */
  --mb-ease-out:cubic-bezier(.22,1,.36,1);
  --mb-ease-state:cubic-bezier(.4,0,.2,1);
  --mb-press:120ms;
  --mb-feedback:180ms;
  --mb-state:280ms;
  --mb-enter:900ms}

* {
  box-sizing:border-box}
html {
  scroll-behavior:smooth;
  scroll-padding-top:100px}
body {
  --mb-paper:var(--e-global-color-paper,#f4f1ea);
  --mb-ink:var(--e-global-color-primary,#20201d);
  --mb-muted:var(--e-global-color-secondary,#5d5a52);
  --mb-rust:var(--e-global-color-accent,#9c3f29);
  --mb-rule:var(--e-global-color-rule,#d9d4c8);
  margin:0;
  background:var(--mb-paper);
  color:var(--mb-ink);
  font-family:var(--e-global-typography-text-font-family,"DM Sans"),Arial,sans-serif;
  font-size:var(--mb-body);
  line-height:1.55}
a {
  color:inherit;
  text-underline-offset:5px}
a:hover {
  text-decoration-thickness:2px}
button {
  font:inherit}
img {
  display:block;
  max-width:100%;
  height:auto}
p {
  margin:0 0 24px}
h1,h2,h3 {
  margin:0;
  font-weight:500;
  letter-spacing:-.025em}
h1 {
  font-size:var(--mb-h1);
  line-height:1.02}
h2 {
  font-size:var(--mb-h2);
  line-height:1.12}
h3 {
  font-size:var(--mb-h3);
  line-height:1.2}
:focus-visible {
  outline:3px solid var(--mb-rust);
  outline-offset:4px}
button:focus-visible,a:focus-visible {
  border-radius:2px}
[hidden] {
  display:none!important}

.mb-skip {
  position:absolute;
  left:24px;
  top:12px;
  z-index:99999;
  transform:translateY(-150%);
  padding:12px 24px;
  background:var(--mb-ink);
  color:var(--mb-paper)}
.mb-skip:focus {
  transform:none}

.mb-header {
  position:relative;
  z-index:20;
  background:var(--mb-paper)}
.mb-header-inner {
  max-width:1408px;
  margin:auto;
  padding:24px var(--mb-gutter);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:32px;
  border-bottom:1px solid var(--mb-rule)}
.mb-brand {
  display:flex;
  align-items:center;
  gap:16px;
  text-decoration:none;
  font-size:18px;
  font-weight:600;
  min-height:48px}
.mb-monogram {
  font-size:32px;
  letter-spacing:-2px;
  color:var(--mb-rust)}
.mb-nav-list {
  display:flex;
  align-items:center;
  gap:32px;
  list-style:none;
  margin:0;
  padding:0}
.mb-nav a {
  display:flex;
  align-items:center;
  gap:12px;
  min-height:48px;
  min-width:48px;
  font-size:16px;
  text-decoration:none}
.mb-nav a:hover,.mb-nav [aria-current=page] {
  text-decoration:underline}
.mb-nav-contact {
  border:1px solid var(--mb-ink);
  border-radius:4px;
  padding:12px 20px}
.mb-menu-toggle {
  display:none;
  border:1px solid var(--mb-ink);
  background:transparent;
  border-radius:4px;
  padding:8px 16px;
  min-height:48px;
  font-size:16px}

.mb-footer {
  background:var(--mb-ink);
  color:var(--mb-paper)}
.mb-footer-inner {
  max-width:1408px;
  margin:auto;
  padding:24px var(--mb-gutter) 40px;
  border-top:1px solid #514e46;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:24px;
  font-size:15px}
.mb-footer p {
  margin:0}
.mb-footer ul {
  display:flex;
  flex-wrap:wrap;
  gap:8px 20px;
  list-style:none;
  padding:0;
  margin:0}
.mb-footer a {
  min-height:48px;
  min-width:48px;
  display:inline-flex;
  align-items:center;
  text-decoration:none}
.mb-footer a:hover {
  text-decoration:underline}

body .elementor {
  --widgets-spacing:0px;
  --widgets-spacing-row:0px;
  --widgets-spacing-column:0px;
  color:var(--mb-ink)}
body .elementor .e-con {
  --container-widget-width:100%;
  --container-widget-flex-grow:0;
  min-width:0;
  max-width:none}
body .elementor .elementor-widget {
  margin:0;
  min-width:0}
body .elementor .elementor-widget-container {
  margin:0}
body .elementor .elementor-heading-title {
  font-family:var(--e-global-typography-primary-font-family,"DM Sans"),Arial,sans-serif;
  font-weight:500;
  letter-spacing:-.025em;
  color:inherit}
body .elementor h1.elementor-heading-title {
  font-size:var(--mb-h1);
  line-height:1.02}
body .elementor h2.elementor-heading-title {
  font-size:var(--mb-h2);
  line-height:1.12}
body .elementor h3.elementor-heading-title {
  font-size:var(--mb-h3);
  line-height:1.2}
body .elementor .elementor-widget-text-editor {
  font-family:var(--e-global-typography-text-font-family,"DM Sans"),Arial,sans-serif;
  font-size:var(--mb-body);
  line-height:1.55;
  color:inherit}
body .elementor .elementor-widget-text-editor p:last-child {
  margin-bottom:0}
body .elementor .elementor-widget-text-editor p {
  margin:0 0 24px}
body .elementor .elementor-widget-heading {
  margin-bottom:24px}
body .elementor .elementor-button {
  font-family:var(--e-global-typography-text-font-family,"DM Sans"),Arial,sans-serif;
  font-size:16px;
  font-weight:600;
  line-height:1.25;
  border-radius:4px;
  min-height:48px;
  padding:12px 24px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:var(--mb-ink);
  background:transparent;
  text-decoration:none}
body .elementor .elementor-button-content-wrapper {
  gap:12px;
  align-items:center}
body .elementor .elementor-button-text {
  flex-grow:0}
body .elementor.elementor .mb-primary .elementor-button,.mb-plain-primary {
  background:var(--mb-rust);
  color:#fff;
  text-decoration:none;
  border:1px solid transparent}
.mb-primary .elementor-button:hover,.mb-plain-primary:hover {
  background:#7f3020;
  color:#fff}
body .elementor.elementor .mb-link .elementor-button {
  padding:12px 0;
  text-decoration:underline;
  text-underline-offset:5px;
  justify-content:flex-start}
body .elementor.elementor .mb-link .elementor-button::after {
  content:"↗";
  display:inline-block;
  margin-left:12px;
  transition:transform 160ms ease}
.mb-link a:hover::after,.mb-link a:focus-visible::after {
  transform:translate(3px,-3px)}

body .elementor.elementor .mb-section {
  padding:var(--mb-section) var(--mb-gutter);
  width:100%;
  display:block}
body .elementor.elementor .mb-shell,.mb-shell {
  width:100%;
  max-width:1280px;
  margin:0 auto;
  display:flex;
  flex-direction:column;
  gap:0}
body .elementor.elementor .mb-eyebrow,.mb-eyebrow {
  font-family:var(--e-global-typography-accent-font-family,"IBM Plex Mono"),monospace;
  font-size:15px;
  line-height:1.6;
  letter-spacing:.025em;
  color:var(--mb-muted);
  margin-bottom:24px}
body .elementor.elementor .mb-eyebrow p {
  font-family:inherit;
  font-size:inherit;
  line-height:inherit}
body .elementor.elementor .mb-caption {
  font-size:15px;
  line-height:1.5;
  color:var(--mb-muted);
  margin-top:16px}
body .elementor.elementor .mb-caption p {
  font-size:inherit}
body .elementor.elementor .mb-lead {
  max-width:660px;
  font-size:22px;
  line-height:1.5}
body .elementor.elementor .mb-lead p {
  font-size:inherit}
body .elementor.elementor .mb-actions,.mb-actions {
  display:flex;
  flex-direction:row;
  flex-wrap:wrap;
  align-items:center;
  gap:16px;
  width:auto}
.mb-actions>div {
  width:auto}
body .elementor.elementor .mb-section-intro {
  max-width:720px;
  margin-bottom:64px}

body .elementor.elementor .mb-hero {
  padding-top:80px;
  padding-bottom:80px}
body .elementor.elementor .mb-hero-grid {
  display:grid;
  grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);
  align-items:end;
  gap:64px}
body .elementor.elementor .mb-hero-copy {
  display:flex;
  gap:0;
  align-self:center}
body .elementor.elementor .mb-hero-title {
  margin-bottom:32px}
body .elementor.elementor .mb-hero .mb-actions {
  margin-top:32px}
body .elementor.elementor .mb-portrait {
  position:relative;
  padding-top:20px;
  border-bottom:1px solid var(--mb-ink);
  align-self:end}
body .elementor.elementor .mb-portrait::before {
  content:"";
  position:absolute;
  inset:70px 0 0;
  border-radius:220px 220px 0 0;
  background:#e4dece;
  z-index:0}
body .elementor.elementor .mb-portrait .elementor-widget-image {
  position:relative;
  z-index:1;
  overflow:hidden}
body .elementor.elementor .mb-portrait img {
  width:100%;
  height:auto;
  object-fit:contain}
body .elementor.elementor .mb-portrait-name {
  position:relative;
  z-index:2;
  font-family:var(--e-global-typography-accent-font-family,"IBM Plex Mono"),monospace;
  font-size:15px;
  text-align:right;
  margin:12px 0 16px}

body .elementor.elementor .mb-selected-work {
  padding-top:96px;
  border-top:1px solid var(--mb-rule)}
body .elementor.elementor .mb-project-row {
  display:grid;
  grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);
  align-items:center;
  gap:64px;
  padding:0 0 80px;
  margin-bottom:80px;
  border-bottom:1px solid var(--mb-rule)}
body .elementor.elementor .mb-project-reverse {
  grid-template-columns:minmax(0,1fr) minmax(0,1.45fr)}
body .elementor.elementor .mb-project-reverse .mb-project-visual {
  grid-column:2;
  grid-row:1}
body .elementor.elementor .mb-project-reverse .mb-project-copy {
  grid-column:1;
  grid-row:1}
body .elementor.elementor .mb-project-visual {
  padding:32px;
  background:#e9e4d8;
  overflow:hidden;
  border:1px solid var(--mb-rule)}
body .elementor.elementor .mb-project-image img {
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
  object-position:top;
  box-shadow:0 8px 24px #20201d10}
body .elementor.elementor .mb-project-copy .mb-eyebrow {
  margin-bottom:16px}
body .elementor.elementor .mb-project-copy h3 {
  font-size:36px;
  line-height:1.12}
body .elementor.elementor .mb-project-copy .mb-link {
  margin-top:24px}
body .elementor.elementor .mb-project-row:nth-last-child(2) {
  margin-bottom:0}

body .elementor.elementor .mb-working-layer {
  background:var(--mb-ink);
  color:var(--mb-paper)}
body .elementor.elementor .mb-working-layer .mb-eyebrow,body .elementor.elementor .mb-working-layer .mb-caption {
  color:#c8c1b2}
body .elementor.elementor .mb-layer-grid {
  display:grid;
  grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);
  align-items:start;
  gap:96px}
body .elementor.elementor .mb-layer-sticky {
  position:sticky;
  top:48px}
body .elementor.elementor .mb-layer-image {
  margin-top:32px;
  overflow:hidden;
  border:1px solid #514e46;
  padding:16px;
  background:#2c2c27}
body .elementor.elementor .mb-layer-image img {
  width:100%;
  aspect-ratio:16/10;
  object-fit:cover;
  object-position:top}
body .elementor.elementor .mb-layer-copy>.elementor-widget-text-editor {
  margin-bottom:32px}
body .elementor.elementor .mb-layer-detail {
  border-top:1px solid #514e46;
  padding:40px 0;
  transition:transform 220ms ease}
body .elementor.elementor .mb-layer-detail .mb-eyebrow {
  margin-bottom:16px}
body .elementor.elementor .mb-layer-detail .elementor-widget-heading {
  margin-bottom:0}
body .elementor.elementor .mb-layer-detail.is-active {
  transform:translateX(12px)}
body .elementor.elementor .mb-layer-detail.is-active .mb-eyebrow {
  color:#e6b19c}
body .elementor.elementor .mb-working-layer :focus-visible {
  outline-color:#e6b19c}

body .elementor.elementor .mb-experience .mb-shell> .elementor-widget-heading {
  margin-bottom:64px}
body .elementor.elementor .mb-role {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);
  gap:96px;
  border-top:1px solid var(--mb-rule);
  padding:40px 0}
body .elementor.elementor .mb-role h3 {
  font-size:24px}
body .elementor.elementor .mb-role .mb-eyebrow {
  margin-bottom:0}
body .elementor.elementor .mb-experience .mb-link {
  margin-top:24px}
body .elementor.elementor .mb-capabilities {
  padding-top:80px;
  border-top:1px solid var(--mb-rule)}
body .elementor.elementor .mb-capability-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:64px 96px;
  margin-top:40px}
body .elementor.elementor .mb-capability {
  padding-top:24px;
  border-top:1px solid var(--mb-rule)}
body .elementor.elementor .mb-capability .mb-eyebrow {
  margin-bottom:16px}
body .elementor.elementor .mb-introduction {
  padding-top:80px;
  border-top:1px solid var(--mb-rule)}
body .elementor.elementor .mb-intro-grid {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);
  gap:96px}
body .elementor.elementor .mb-intro-copy> .elementor-widget-text-editor {
  margin-bottom:24px}

body .elementor.elementor .mb-contact {
  background:var(--mb-ink);
  color:var(--mb-paper);
  padding-top:96px;
  padding-bottom:80px}
body .elementor.elementor .mb-contact .mb-eyebrow {
  color:#c8c1b2}
body .elementor.elementor .mb-contact h2 {
  font-size:clamp(64px,6vw,88px);
  line-height:1.03}
body .elementor.elementor .mb-contact .mb-email {
  margin-top:32px;
  margin-bottom:24px}
body .elementor.elementor .mb-email .elementor-button {
  font-size:clamp(20px,2.3vw,32px);
  font-weight:400;
  color:var(--mb-paper);
  text-decoration:underline;
  padding:12px 0;
  overflow-wrap:anywhere;
  white-space:normal;
  text-align:left}
body .elementor.elementor .mb-email .elementor-button-text {
  overflow-wrap:anywhere}
body .elementor.elementor .mb-contact .mb-link a {
  color:var(--mb-paper)}
body .elementor.elementor .mb-contact .mb-shell> .mb-eyebrow:last-child {
  margin-top:48px;
  margin-bottom:0}
body .elementor.elementor .mb-contact :focus-visible,.mb-footer :focus-visible {
  outline-color:#e6b19c}

body .elementor.elementor .mb-page-opening {
  padding-top:80px;
  padding-bottom:64px}
body .elementor.elementor .mb-page-opening .mb-link {
  margin-bottom:32px}
body .elementor.elementor .mb-page-opening .mb-lead {
  margin-top:8px}
body .elementor.elementor .mb-case-figure {
  padding-top:0;
  padding-bottom:80px}
body .elementor.elementor .mb-case-image {
  background:#e9e4d8;
  padding:40px;
  border:1px solid var(--mb-rule)}
body .elementor.elementor .mb-case-image img {
  width:100%;
  max-height:900px;
  object-fit:cover;
  object-position:top}
body .elementor.elementor .mb-case-text {
  padding-top:64px;
  padding-bottom:64px;
  border-top:1px solid var(--mb-rule)}
body .elementor.elementor .mb-case-grid {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);
  gap:96px}
body .elementor.elementor .mb-case-body {
  gap:24px}
body .elementor.elementor .mb-scope-note {
  padding-top:40px;
  padding-bottom:40px;
  background:#e9e4d8}
body .elementor.elementor .mb-case-links {
  padding-top:56px;
  padding-bottom:80px}
body .elementor.elementor .mb-card-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:64px 48px;
  margin:48px 0 80px}
body .elementor.elementor .mb-card {
  border-bottom:1px solid var(--mb-rule);
  padding-bottom:32px}
body .elementor.elementor .mb-card-image {
  margin-bottom:24px;
  background:#e9e4d8;
  padding:24px;
  overflow:hidden;
  border:1px solid var(--mb-rule)}
body .elementor.elementor .mb-card-image img {
  width:100%;
  aspect-ratio:4/3;
  object-fit:cover;
  object-position:top}
body .elementor.elementor .mb-card .mb-eyebrow {
  margin-bottom:12px}
body .elementor.elementor .mb-card>.elementor-widget-text-editor:not(.mb-eyebrow) {
  margin-bottom:24px}
body .elementor.elementor .mb-archive {
  padding-top:0}
body .elementor.elementor .mb-filter-nav {
  display:flex;
  flex-direction:row;
  flex-wrap:wrap;
  gap:8px;
  margin-bottom:24px}
body .elementor.elementor .mb-work-filter {
  width:auto}
body .elementor.elementor .mb-work-filter .elementor-button {
  padding:12px 20px;
  border:1px solid var(--mb-rule);
  border-radius:100px;
  background:transparent;
  color:var(--mb-ink);
  font-size:16px;
  line-height:1.25;
  text-decoration:none;
  transition:background-color var(--mb-feedback) var(--mb-ease-state),color var(--mb-feedback) var(--mb-ease-state),border-color var(--mb-feedback) var(--mb-ease-state),transform var(--mb-press) var(--mb-ease-state)}
body .elementor.elementor .mb-work-filter .elementor-button:hover {
  border-color:var(--mb-ink)}
body.mb-project-category-all .elementor.elementor .mb-filter-all .elementor-button,
body.mb-project-category-shopify .elementor.elementor .mb-filter-shopify .elementor-button,
body.mb-project-category-wordpress .elementor.elementor .mb-filter-wordpress .elementor-button,
body.mb-project-category-woocommerce .elementor.elementor .mb-filter-woocommerce .elementor-button,
body.mb-project-category-tools .elementor.elementor .mb-filter-tools .elementor-button,
body.mb-project-category-reviews .elementor.elementor .mb-filter-reviews .elementor-button,
body.mb-project-category-cannabis-os .elementor.elementor .mb-filter-cannabis-os .elementor-button,
body.mb-project-category-proposals .elementor.elementor .mb-filter-proposals .elementor-button {
  background:var(--mb-ink);
  border-color:var(--mb-ink);
  color:var(--mb-paper)}
body .elementor.elementor .mb-filter-status {
  margin-bottom:12px;
  font-family:"IBM Plex Mono",monospace;
  font-size:15px;
  color:var(--mb-muted)}
body .elementor.elementor .mb-filter-note {
  max-width:800px;
  font-size:16px;
  color:var(--mb-muted)}
body .elementor.elementor .mb-work-gallery {
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:48px 32px;
  margin:40px 0 0}
body .elementor.elementor .mb-work-card .mb-card-image {
  padding:16px}
body .elementor.elementor .mb-work-card h3 {
  margin-bottom:12px;
  font-size:26px}
body .elementor.elementor .mb-work-card>.elementor-widget-text-editor:not(.mb-eyebrow) p {
  font-size:18px}
body .elementor.elementor .mb-work-card>.elementor-widget-button {
  margin-top:auto}
body.mb-project-category-shopify .mb-work-card:not(.mb-category-shopify),
body.mb-project-category-wordpress .mb-work-card:not(.mb-category-wordpress),
body.mb-project-category-woocommerce .mb-work-card:not(.mb-category-woocommerce),
body.mb-project-category-tools .mb-work-card:not(.mb-category-tools),
body.mb-project-category-reviews .mb-work-card:not(.mb-category-reviews),
body.mb-project-category-cannabis-os .mb-work-card:not(.mb-category-cannabis-os),
body.mb-project-category-proposals .mb-work-card:not(.mb-category-proposals) {
  display:none!important}
body .elementor.elementor .mb-about-intro {
  padding-top:0;
  padding-bottom:80px}
body .elementor.elementor .mb-about-grid {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);
  gap:96px;
  align-items:center}
body .elementor.elementor .mb-about-portrait {
  position:relative;
  width:100%;
  max-width:450px!important;
  margin:0 auto;
  background:none;
  border-radius:0;
  overflow:visible}
body .elementor.elementor .mb-about-portrait::before {
  content:"";
  position:absolute;
  inset:70px 0 0;
  border-radius:220px 220px 0 0;
  background:#e4dece;
  z-index:0}
body .elementor.elementor .mb-about-portrait img {
  position:relative;
  z-index:1;
  display:block;
  width:100%;
  height:auto;
  object-fit:contain}
body .elementor.elementor .mb-about-copy {
  gap:24px}
body .elementor.elementor .mb-about-copy .elementor-widget-heading {
  margin-bottom:8px}
body .elementor.elementor .mb-method {
  padding-top:0}
body .elementor.elementor .mb-method-step {
  display:grid;
  grid-template-columns:48px minmax(0,1fr) minmax(0,1.15fr);
  gap:32px;
  border-top:1px solid var(--mb-rule);
  padding:48px 0}
body .elementor.elementor .mb-method-step h2 {
  font-size:36px}
body .elementor.elementor .mb-blog {
  padding-top:0;
  min-height:40vh}
.mb-not-found {
  padding:120px 64px;
  min-height:65vh}
.mb-not-found h1 {
  margin-bottom:32px}
.mb-plain-primary {
  padding:12px 24px;
  min-height:48px;
  border-radius:4px}

@keyframes mb-enter {
  from {
  transform:translateY(40px);
  opacity:.3}
to {
  transform:none;
  opacity:1}
}
/* Hero entrance: eyebrow, heading, lead, actions in an 80ms sequence (done by ~1.1s). Starts at 30% opacity, so text is never invisible. */
@media(prefers-reduced-motion:no-preference) {
  .mb-hero .mb-eyebrow {
  animation:mb-enter var(--mb-enter) var(--mb-ease-out) both}
.mb-hero-title {
  animation:mb-enter var(--mb-enter) 60ms var(--mb-ease-out) both}
.mb-hero .mb-lead {
  animation:mb-enter var(--mb-enter) 140ms var(--mb-ease-out) both}
.mb-hero .mb-actions {
  animation:mb-enter var(--mb-enter) 220ms var(--mb-ease-out) both}
}

@media(min-width:1600px) {
  :root {
  --mb-h1:96px}
}

@media(max-width:1190px) {
  .mb-nav-list {
  gap:24px}
.mb-header-inner {
  gap:24px}
body .elementor.elementor .mb-hero-grid {
  gap:40px}
body .elementor.elementor .mb-project-row {
  gap:40px}
}

@media(max-width:1024px) {
  :root {
  --mb-gutter:32px;
  --mb-section:80px;
  --mb-h1:64px;
  --mb-h2:40px;
  --mb-h3:26px}
.mb-nav-list {
  gap:20px}
.mb-brand {
  font-size:16px}
.mb-brand .mb-monogram {
  font-size:30px}
.mb-nav a {
  font-size:15px}
.mb-nav-contact {
  padding:8px 16px}
body .elementor.elementor .mb-hero-grid {
  grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);
  gap:32px}
body .elementor.elementor .mb-hero .mb-lead {
  font-size:20px}
body .elementor.elementor .mb-hero {
  padding-top:56px;
  padding-bottom:56px}
body .elementor.elementor .mb-project-row {
  gap:32px;
  padding-bottom:56px;
  margin-bottom:56px}
body .elementor.elementor .mb-project-visual {
  padding:20px}
body .elementor.elementor .mb-project-copy h3 {
  font-size:30px}
body .elementor.elementor .mb-layer-grid,body .elementor.elementor .mb-intro-grid,body .elementor.elementor .mb-case-grid,body .elementor.elementor .mb-about-grid {
  gap:40px}
body .elementor.elementor .mb-layer-sticky {
  position:static}
body .elementor.elementor .mb-layer-grid {
  grid-template-columns:1fr}
body .elementor.elementor .mb-layer-image img {
  aspect-ratio:16/9}
body .elementor.elementor .mb-layer-detail.is-active {
  transform:none}
body .elementor.elementor .mb-role {
  gap:40px}
body .elementor.elementor .mb-capability-grid {
  gap:40px}
body .elementor.elementor .mb-card-grid {
  gap:40px 32px}
body .elementor.elementor .mb-work-gallery {
  grid-template-columns:repeat(2,minmax(0,1fr))}
.mb-footer-inner {
  align-items:start;
  flex-direction:column}
body .elementor.elementor .mb-method-step {
  grid-template-columns:40px 1fr;
  gap:24px}
body .elementor.elementor .mb-method-step>.elementor-widget-text-editor:last-child {
  grid-column:2}
body .elementor.elementor .mb-method-step h2 {
  font-size:32px}
}

@media(max-width:767px) {
  :root {
  --mb-gutter:20px;
  --mb-section:56px;
  --mb-body:18px;
  --mb-h1:52px;
  --mb-h2:32px;
  --mb-h3:24px}
html {
  scroll-padding-top:24px}
.mb-header-inner {
  padding:16px 20px;
  flex-wrap:wrap;
  gap:8px 16px}
.mb-brand {
  font-size:15px;
  gap:12px}
.mb-monogram {
  font-size:28px}
.has-js .mb-nav:not(.is-open) {
  display:none}
.has-js .mb-menu-toggle {
  display:inline-flex;
  align-items:center;
  justify-content:center}
.mb-nav {
  width:100%}
.mb-nav-list {
  justify-content:flex-start;
  gap:8px 20px;
  flex-wrap:wrap}
.has-js .mb-nav-list {
  display:block;
  border-top:1px solid var(--mb-rule);
  padding-top:16px;
  margin-top:8px}
.has-js .mb-nav a {
  padding:12px 8px;
  font-size:20px}
.mb-nav-contact {
  border:none;
  padding:0}
.has-js .mb-nav-contact {
  margin-top:8px}
.mb-footer-inner {
  padding:24px 20px 32px;
  gap:16px}
.mb-footer ul {
  gap:4px 16px}
.mb-footer p {
  font-size:15px}
body .elementor.elementor .mb-hero {
  padding-top:40px;
  padding-bottom:48px}
body .elementor.elementor .mb-hero-grid {
  grid-template-columns:1fr;
  gap:40px}
body .elementor.elementor .mb-hero .mb-eyebrow {
  font-size:15px;
  max-width:340px;
  margin-bottom:24px}
body .elementor.elementor .mb-hero-title {
  margin-bottom:24px}
body .elementor.elementor .mb-hero .mb-lead {
  font-size:18px;
  max-width:400px}
body .elementor.elementor .mb-hero .mb-actions {
  gap:12px 20px;
  margin-top:24px}
body .elementor.elementor .mb-portrait {
  width:100%;
  max-width:380px;
  margin:0 auto;
  padding-top:0}
body .elementor.elementor .mb-portrait::before {
  inset:48px 0 0}
body .elementor.elementor .mb-portrait-name {
  font-size:15px}
body .elementor.elementor .mb-selected-work {
  padding-top:56px}
body .elementor.elementor .mb-section-intro {
  margin-bottom:40px}
body .elementor.elementor .mb-project-row,body .elementor.elementor .mb-project-reverse {
  grid-template-columns:1fr;
  gap:24px;
  padding-bottom:40px;
  margin-bottom:40px}
body .elementor.elementor .mb-project-reverse .mb-project-visual,body .elementor.elementor .mb-project-reverse .mb-project-copy {
  grid-column:auto;
  grid-row:auto}
body .elementor.elementor .mb-project-visual {
  padding:16px}
body .elementor.elementor .mb-project-copy h3 {
  font-size:28px}
body .elementor.elementor .mb-project-copy .mb-link {
  margin-top:16px}
body .elementor.elementor .mb-eyebrow {
  font-size:15px;
  margin-bottom:20px}
body .elementor.elementor .mb-layer-grid {
  gap:32px}
body .elementor.elementor .mb-layer-sticky {
  position:static}
body .elementor.elementor .mb-layer-detail {
  padding:32px 0}
body .elementor.elementor .mb-layer-detail h3 {
  font-size:24px}
body .elementor.elementor .mb-experience .mb-shell>.elementor-widget-heading {
  margin-bottom:40px}
body .elementor.elementor .mb-role,body .elementor.elementor .mb-intro-grid,body .elementor.elementor .mb-case-grid,body .elementor.elementor .mb-about-grid {
  grid-template-columns:1fr;
  gap:24px}
body .elementor.elementor .mb-role {
  padding:32px 0}
body .elementor.elementor .mb-role h3 {
  font-size:24px}
body .elementor.elementor .mb-role .elementor-widget-heading {
  margin-bottom:12px}
body .elementor.elementor .mb-capabilities,body .elementor.elementor .mb-introduction {
  padding-top:56px}
body .elementor.elementor .mb-capability-grid {
  grid-template-columns:1fr;
  gap:32px;
  margin-top:24px}
body .elementor.elementor .mb-intro-grid {
  gap:0}
body .elementor.elementor .mb-contact {
  padding-top:56px;
  padding-bottom:56px}
body .elementor.elementor .mb-contact h2 {
  font-size:52px}
body .elementor.elementor .mb-contact .mb-email {
  margin-top:20px;
  margin-bottom:20px}
body .elementor.elementor .mb-email .elementor-button {
  font-size:20px}
body .elementor.elementor .mb-contact .mb-shell>.mb-eyebrow:last-child {
  margin-top:32px}
body .elementor.elementor .mb-page-opening {
  padding-top:40px;
  padding-bottom:40px}
body .elementor.elementor .mb-page-opening .mb-lead {
  font-size:18px}
body .elementor.elementor .mb-case-figure {
  padding-bottom:48px}
body .elementor.elementor .mb-case-image {
  padding:16px}
body .elementor.elementor .mb-case-text {
  padding-top:40px;
  padding-bottom:40px}
body .elementor.elementor .mb-card-grid {
  grid-template-columns:1fr;
  gap:40px;
  margin:32px 0 56px}
body .elementor.elementor .mb-work-gallery {
  grid-template-columns:1fr;
  margin-bottom:0}
body .elementor.elementor .mb-card-image {
  padding:16px}
body .elementor.elementor .mb-archive {
  padding-top:0}
body .elementor.elementor .mb-about-portrait {
  max-width:380px!important}
body .elementor.elementor .mb-about-portrait::before {
  inset:48px 0 0}
body .elementor.elementor .mb-method-step {
  padding:32px 0;
  grid-template-columns:24px 1fr;
  gap:16px}
body .elementor.elementor .mb-method-step h2 {
  font-size:28px}
body .elementor.elementor .mb-case-links {
  padding-top:40px;
  padding-bottom:56px}
.mb-not-found {
  padding:56px 20px}
@keyframes mb-enter {
  from {
  transform:translateY(20px);
  opacity:.3}
to {
  transform:none;
  opacity:1}
}
}

@media(prefers-reduced-motion:reduce) {
  html {
  scroll-behavior:auto}
*,*::before,*::after {
  animation:none!important;
  transition:none!important}
body .elementor.elementor .mb-layer-detail.is-active {
  transform:none}
}

body.elementor-editor-active .mb-hero-title,body.elementor-editor-active .mb-hero .mb-lead,body.elementor-editor-active .mb-hero .mb-eyebrow,body.elementor-editor-active .mb-hero .mb-actions {
  animation:none}

body .elementor.elementor .mb-post-row {
  padding:40px 0;
  border-top:1px solid var(--mb-rule)}
body .elementor.elementor .mb-post-row h2 {
  font-size:32px;
  max-width:850px}
body .elementor.elementor .mb-post-row>.elementor-widget-text-editor:not(.mb-eyebrow) {
  max-width:760px;
  margin-bottom:16px}
body .elementor.elementor .mb-index-section {
  padding-top:56px;
  padding-bottom:56px;
  border-top:1px solid var(--mb-rule)}
body .elementor.elementor .mb-index-nav {
  padding-top:0;
  padding-bottom:40px}
body .elementor.elementor .mb-index-list {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:40px 64px;
  margin-top:32px}
body .elementor.elementor .mb-index-row {
  border-top:1px solid var(--mb-rule);
  padding-top:24px;
  gap:12px}
body .elementor.elementor .mb-index-row .elementor-widget-heading {
  margin-bottom:0}
body .elementor.elementor .mb-index-row .elementor-widget-text-editor {
  font-size:18px}
body .elementor.elementor .mb-index-link {
  padding-top:40px;
  padding-bottom:80px;
  border-top:1px solid var(--mb-rule)}

.mb-article {
  padding:80px var(--mb-gutter)}
.mb-article-header {
  gap:24px;
  margin-bottom:64px}
.mb-article-header>a {
  font-size:16px;
  min-height:48px;
  display:inline-flex;
  align-items:center;
  align-self:start}
.mb-article-header .mb-eyebrow {
  margin:0}
.mb-article-header h1 {
  font-size:64px;
  max-width:1000px}
.mb-article-body,.mb-article-close {
  max-width:760px;
  margin:0 auto}
.mb-article-body h2 {
  font-size:36px;
  margin:56px 0 24px}
.mb-article-body h3 {
  font-size:26px;
  margin:40px 0 20px}
.mb-article-body p,.mb-article-body ul,.mb-article-body ol {
  margin-bottom:24px}
.mb-article-body li {
  margin-bottom:12px}
.mb-article-body code {
  font-family:var(--e-global-typography-accent-font-family,"IBM Plex Mono"),monospace;
  font-size:.8em;
  background:#e9e4d8;
  padding:2px 4px;
  overflow-wrap:anywhere}
.mb-article-body pre {
  overflow:auto;
  padding:24px;
  background:#e9e4d8}
.mb-article-body blockquote {
  border-left:3px solid var(--mb-rust);
  padding-left:24px;
  margin:40px 0}
.mb-article-body table {
  display:block;
  overflow:auto;
  max-width:100%;
  border-collapse:collapse;
  font-size:16px}
.mb-article-body th,.mb-article-body td {
  padding:12px;
  border:1px solid var(--mb-rule);
  text-align:left}
.mb-article-body img {
  margin:32px 0}
.mb-article-close {
  border-top:1px solid var(--mb-rule);
  margin-top:64px;
  padding-top:32px}
.mb-article-close a {
  display:inline-flex}

@media(max-width:767px) {
  body .elementor.elementor .mb-index-list {
  grid-template-columns:1fr;
  gap:32px}
body .elementor.elementor .mb-post-row h2 {
  font-size:28px}
.mb-article {
  padding:40px 20px}
.mb-article-header {
  margin-bottom:40px}
.mb-article-header h1 {
  font-size:40px}
.mb-article-body h2 {
  font-size:28px;
  margin-top:40px}
.mb-article-body h3 {
  font-size:24px}
.mb-article-body a {
  overflow-wrap:anywhere}
}


/* The three review points form a readable scroll sequence on large screens. */
@media(min-width:1025px) {
  /* The active point is marked by a square that grows and warms, not a one-sided border. */
  body .elementor.elementor .mb-layer-detail {
    position:relative;
    min-height:260px;
    padding:40px 24px 40px 40px;
    transition:transform 550ms var(--mb-ease-out),opacity 550ms ease;
  }
  body .elementor.elementor .mb-layer-detail::before {
    content:"";
    position:absolute;
    left:8px;
    top:45px;
    width:10px;
    height:10px;
    background:#6b675c;
    transform:scale(.5);
    transition:transform 550ms var(--mb-ease-out),background-color 550ms ease;
  }
  body .elementor.elementor .mb-story-ready .mb-layer-detail {opacity:.65}
  body .elementor.elementor .mb-story-ready .mb-layer-detail.is-active {
    opacity:1;
    transform:translateX(16px);
  }
  body .elementor.elementor .mb-story-ready .mb-layer-detail.is-active::before {
    background:#e6b19c;
    transform:scale(1);
  }
}
@media(max-width:1024px) {
  .mb-hero-title,.mb-hero .mb-lead,.mb-hero .mb-eyebrow,.mb-hero .mb-actions {animation-duration:650ms}
}
.mb-quiet-motion .mb-hero-title,.mb-quiet-motion .mb-hero .mb-lead,.mb-quiet-motion .mb-hero .mb-eyebrow,.mb-quiet-motion .mb-hero .mb-actions {animation:none}

.mb-brand-symbol {display:inline-flex;align-items:center;gap:7px;flex:none;color:var(--mb-ink)}
.mb-brand-spark {display:block;flex:none;transform-origin:50% 50%}
.mb-monogram {display:inline-flex;line-height:1;font-weight:600;letter-spacing:-2px;color:var(--mb-ink)}
.mb-monogram > span {display:inline-block}
.mb-letter-dot {color:var(--mb-rust)}
body .elementor.elementor .mb-preview-frame {display:block;position:relative;overflow:hidden;width:100%;line-height:0}
body .elementor.elementor .mb-preview-frame > img:not(.mb-preview-scroll) {display:block}
body .elementor.elementor img.mb-preview-scroll {position:absolute;top:0;left:0;width:100%;height:auto;max-width:none;aspect-ratio:auto;object-fit:initial;pointer-events:none;will-change:transform}
@keyframes mb-spark-arrive {from {transform:rotate(-90deg) scale(.75);opacity:.2} to {transform:none;opacity:1}}
@keyframes mb-letter-arrive {from {transform:translateY(7px);opacity:.2} to {transform:none;opacity:1}}
@keyframes mb-spark-turn {0% {transform:rotate(0)} 75% {transform:rotate(195deg)} 100% {transform:rotate(180deg)}}
@keyframes mb-m-step {0%,100% {transform:none} 45% {transform:translateY(-4px) rotate(-5deg)}}
@keyframes mb-b-step {0%,100% {transform:none} 45% {transform:translateY(4px) rotate(5deg)}}
@keyframes mb-dot-step {0%,100% {transform:none} 45% {transform:translateX(3px) scale(.65)}}
@media(prefers-reduced-motion:no-preference) {
  .mb-brand-spark {animation:mb-spark-arrive 850ms cubic-bezier(.22,1,.36,1)}
  .mb-letter-m {animation:mb-letter-arrive 600ms 80ms both}
  .mb-letter-b {animation:mb-letter-arrive 600ms 160ms both}
  .mb-letter-dot {animation:mb-letter-arrive 600ms 240ms both}
  .mb-brand:focus-visible .mb-brand-spark {animation:mb-spark-turn 850ms cubic-bezier(.22,1,.36,1)}
  .mb-brand:focus-visible .mb-letter-m {animation:mb-m-step 850ms ease}
  .mb-brand:focus-visible .mb-letter-b {animation:mb-b-step 850ms ease}
  .mb-brand:focus-visible .mb-letter-dot {animation:mb-dot-step 850ms ease}
  body .elementor.elementor .mb-card-image {transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s ease}
}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  .mb-brand:hover .mb-brand-spark {animation:mb-spark-turn 850ms cubic-bezier(.22,1,.36,1)}
  .mb-brand:hover .mb-letter-m {animation:mb-m-step 850ms ease}
  .mb-brand:hover .mb-letter-b {animation:mb-b-step 850ms ease}
  .mb-brand:hover .mb-letter-dot {animation:mb-dot-step 850ms ease}
  body .elementor.elementor .mb-card:hover .mb-card-image {transform:translateY(-5px);box-shadow:0 12px 24px #20201d12}
}
.mb-quiet-motion .mb-brand-symbol * {animation:none!important}
body.mb-quiet-motion .elementor.elementor .mb-card:hover .mb-card-image {transform:none;box-shadow:none}
@media(max-width:767px) {
  .mb-brand {gap:9px}
  .mb-brand-symbol {gap:5px}
  .mb-brand-spark {width:28px;height:28px}
  .mb-brand .mb-monogram {font-size:27px}
}


.mb-brand-name {display:flex;flex-direction:column;align-items:flex-start;gap:0;font-size:16px;line-height:1;letter-spacing:-.015em}
.mb-brand-surname {font-size:inherit}
@media(max-width:767px) {
  .mb-brand-name {font-size:15px}
  .mb-brand-surname {font-size:inherit}
}


/* ---------- Motion system ----------
   Arrivals use --mb-ease-out; state changes use --mb-ease-state.
   Press 120ms · feedback 180ms · state 280ms · scroll reveals 480–600ms (site.js) · entrances 900ms (650ms at ≤1024px).
   Only transform and opacity move. Nothing starts hidden, so pages read the same without JavaScript. */
@keyframes mb-rise {from {transform:translateY(24px);opacity:.3} to {transform:none;opacity:1}}
@keyframes mb-menu-in {from {transform:translateY(-8px);opacity:0} to {transform:none;opacity:1}}

/* Inner-page openings follow the hero's sequence. */
@media(prefers-reduced-motion:no-preference) {
  .mb-page-opening .mb-shell > .elementor-widget {animation:mb-rise 650ms var(--mb-ease-out) both}
  .mb-page-opening .mb-shell > .elementor-widget:nth-child(2) {animation-delay:60ms}
  .mb-page-opening .mb-shell > .elementor-widget:nth-child(3) {animation-delay:120ms}
  .mb-page-opening .mb-shell > .elementor-widget:nth-child(n+4) {animation-delay:180ms}
  body .elementor.elementor .mb-case-figure .mb-case-image {animation:mb-rise var(--mb-enter) 240ms var(--mb-ease-out) both}
  body .elementor .elementor-button:active,.mb-plain-primary:active,.mb-menu-toggle:active {transform:scale(.97)}
  body .elementor.elementor .mb-card:focus-within .mb-card-image {transform:translateY(-5px);box-shadow:0 12px 24px #20201d12}
}
body.elementor-editor-active .mb-page-opening .mb-shell > .elementor-widget,body.elementor-editor-active .mb-case-figure .mb-case-image {animation:none}
.mb-quiet-motion .mb-page-opening .mb-shell > .elementor-widget,.mb-quiet-motion .mb-case-figure .mb-case-image {animation:none}

/* Buttons and links: quick, small feedback. */
body .elementor .elementor-button,.mb-plain-primary,.mb-menu-toggle {
  transition:background-color var(--mb-feedback) var(--mb-ease-state),color var(--mb-feedback) var(--mb-ease-state),border-color var(--mb-feedback) var(--mb-ease-state),transform var(--mb-press) var(--mb-ease-state)}
body .elementor.elementor .mb-link .elementor-button::after {transition:transform var(--mb-feedback) var(--mb-ease-out)}
body .elementor.elementor .mb-card:focus-within .mb-link a::after,
body .elementor.elementor .mb-project-row:focus-within .mb-link a::after {transform:translate(3px,-3px)}
@media(hover:hover) and (pointer:fine) {
  body .elementor.elementor .mb-card:hover .mb-link a::after,
  body .elementor.elementor .mb-project-row:hover .mb-link a::after {transform:translate(3px,-3px)}
}

/* Navigation: the underline settles into place; the contact link fills on hover. */
.mb-nav a:not(.mb-nav-contact) {
  text-decoration:underline;
  text-decoration-color:transparent;
  text-decoration-thickness:1px;
  text-underline-offset:10px;
  transition:text-decoration-color var(--mb-feedback) var(--mb-ease-state),text-underline-offset var(--mb-state) var(--mb-ease-out)}
.mb-nav a:not(.mb-nav-contact):hover,.mb-nav a[aria-current=page] {text-decoration-color:currentColor;text-underline-offset:6px}
.mb-nav-contact span {display:inline-block;transition:transform var(--mb-feedback) var(--mb-ease-out)}
.mb-nav-contact:hover span,.mb-nav-contact:focus-visible span {transform:translate(2px,-2px)}
@media(min-width:768px) {
  .mb-nav-contact {transition:background-color var(--mb-feedback) var(--mb-ease-state),color var(--mb-feedback) var(--mb-ease-state)}
  .mb-nav-contact:hover {background:var(--mb-ink);color:var(--mb-paper);text-decoration:none}
}
.mb-menu-toggle[aria-expanded=true] {background:var(--mb-ink);color:var(--mb-paper)}
@media(max-width:767px) and (prefers-reduced-motion:no-preference) {
  .has-js .mb-nav.is-open .mb-nav-list > li {animation:mb-menu-in var(--mb-state) var(--mb-ease-out) both}
  .has-js .mb-nav.is-open .mb-nav-list > li:nth-child(2) {animation-delay:40ms}
  .has-js .mb-nav.is-open .mb-nav-list > li:nth-child(3) {animation-delay:80ms}
  .has-js .mb-nav.is-open .mb-nav-list > li:nth-child(n+4) {animation-delay:120ms}
}

/* Project filters: the grid dims while a category loads, then cards rise in (project-filters.js). */
body .elementor.elementor .mb-work-gallery {transition:opacity var(--mb-state) var(--mb-ease-state)}
body .elementor.elementor .mb-work-gallery[aria-busy=true] {opacity:.55}

/* Readability floor: no text below 15px, including the credential cards and article metadata. */
.mb-article-header .mb-eyebrow,.mb-article-header time {font-size:15px}
.mb-article-body code {font-size:max(15px,.8em)}
.mb-credentials .mb-credential-issuer,.mb-credentials .mb-credential-date {font-size:15px}
.mb-credentials .mb-credential-action {font-size:15px;letter-spacing:0;line-height:1.25}
.mb-credentials .mb-credential-preview small,.mb-credentials .mb-credential-preview > span:last-child {font-size:15px;line-height:1.25}
@media(max-width:767px) {
  .mb-credentials .mb-credential-action {left:4px;right:4px;bottom:4px;max-width:none;padding:6px;text-align:center;white-space:normal}
  /* On phones the badge keeps only its title; issuer and date are already in the card text beside it. */
  .mb-credentials .mb-credential-preview small,.mb-credentials .mb-credential-preview > span:last-child {display:none}
}

/* ---------- Motion layer 2: line masks, image wipes, scroll drift ----------
   States are added only by site.js to content below the fold, so pages read normally without JavaScript
   and nothing on screen at load is hidden. Reduced motion turns all of it off. */
@keyframes mb-line-up {
  from {transform:translateY(.6em);clip-path:inset(0 0 100% 0)}
  to {transform:none;clip-path:inset(-.3em -.2em -.3em -.2em)}
}
@keyframes mb-drift {from {transform:translateY(18px)} to {transform:translateY(-18px)}}
.mb-line {display:inline-block}
@media(prefers-reduced-motion:no-preference) {
  /* Hero: each line of the headline rises out of its own mask. */
  .mb-hero-title {animation:none}
  .mb-hero-title .mb-line {animation:mb-line-up 1000ms 60ms var(--mb-ease-out) both}
  .mb-hero-title .mb-line:nth-of-type(2) {animation-delay:180ms}
  /* Section headings do the same when they scroll into view. */
  .mb-lines-pending .mb-line {transform:translateY(.6em);clip-path:inset(0 0 100% 0)}
  .mb-lines-in .mb-line {animation:mb-line-up 1000ms var(--mb-ease-out) both}
  .mb-lines-in .mb-line:nth-of-type(2) {animation-delay:120ms}
  .mb-lines-in .mb-line:nth-of-type(3) {animation-delay:240ms}
  /* Blocks rise; card images wipe upward and settle from a slight zoom. */
  .mb-pre {opacity:0;transform:translateY(32px)}
  .mb-in {transition:opacity 700ms var(--mb-ease-out) var(--mb-delay,0ms),transform 900ms var(--mb-ease-out) var(--mb-delay,0ms)}
  body .elementor.elementor .mb-card.mb-pre .mb-card-image {clip-path:inset(0 0 100% 0)}
  body .elementor.elementor .mb-card.mb-in .mb-card-image {clip-path:inset(0);transition:clip-path 1000ms var(--mb-ease-out) var(--mb-delay,0ms),transform .3s var(--mb-ease-out),box-shadow .3s ease}
  body .elementor.elementor .mb-card .mb-card-image img:not(.mb-preview-scroll) {transition:transform 1200ms var(--mb-ease-out)}
  body .elementor.elementor .mb-card.mb-pre .mb-card-image img:not(.mb-preview-scroll) {transform:scale(1.12)}
}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference) {
  body .elementor.elementor .mb-card:hover .mb-card-image img:not(.mb-preview-scroll) {transform:scale(1.03)}
}
/* Scroll-linked drift on large images (browsers with scroll-driven animations only). */
@supports (animation-timeline:view()) {
  @media(prefers-reduced-motion:no-preference) and (min-width:768px) {
    body .elementor.elementor .mb-project-visual .mb-project-image,
    body .elementor.elementor .mb-layer-image img,
    body .elementor.elementor .mb-case-image img {animation:mb-drift linear both;animation-timeline:view();animation-range:cover}
  }
}
.mb-quiet-motion .mb-hero-title .mb-line,.mb-quiet-motion .mb-project-image,.mb-quiet-motion .mb-layer-image img,.mb-quiet-motion .mb-case-image img {animation:none!important}
body.elementor-editor-active .mb-hero-title .mb-line {animation:none}
@media print {
  .mb-pre,.mb-lines-pending .mb-line,.mb-card.mb-pre .mb-card-image {opacity:1!important;transform:none!important;clip-path:none!important}
}

/* Parked items: kept in Elementor, hidden on the live site until they are rebuilt on WordPress. */
body:not(.elementor-editor-active) .mb-parked{display:none!important}
.elementor-editor-active .mb-parked{opacity:.4;outline:2px dashed currentColor;outline-offset:-2px}

/* ---------- Card light ----------
   While a project card is hovered or holds keyboard focus, a beige light travels once every 3.2s around a complete
   frame (all four sides, never one): a crisp 1.5px line, plus a soft glow on .mb-light (one decorative span per card,
   added by site.js so the glow can blur without blurring the card). The frame fades in over 280ms on the state curve.
   Reduced motion and quiet motion keep the still frame and drop the travelling light. */
@property --mb-beam {syntax:'<angle>';inherits:false;initial-value:0deg}
@keyframes mb-beam-turn {to {--mb-beam:360deg}}
:root {
  --mb-sand-frame:#cdb68cb3;
  --mb-beam-speed:3200ms}
body .elementor.elementor .mb-card,
body .elementor.elementor .mb-project-visual {position:relative;isolation:isolate}
body .elementor.elementor .mb-card::before,
body .elementor.elementor .mb-card::after,
body .elementor.elementor .mb-project-visual::after,
.mb-peek::after,
.mb-light {
  content:"";
  display:block;
  position:absolute;
  inset:-14px;
  width:auto;
  height:auto;
  border-radius:0;
  pointer-events:none;
  opacity:0;
  transition:opacity var(--mb-state) var(--mb-ease-state)}
/* The still frame: a complete hairline in sand with a soft warm lift behind the card. */
body .elementor.elementor .mb-card::before {
  z-index:-1;
  border:1px solid var(--mb-sand-frame);
  background:#f8f5ee;
  box-shadow:0 24px 48px -32px #7a5a2a66}
/* The line: a conic sweep masked to a 1.5px ring; darker sand shoulders around a pale core so it reads on paper. */
body .elementor.elementor .mb-card::after,
body .elementor.elementor .mb-project-visual::after,
.mb-peek::after {
  z-index:3;
  padding:1.5px;
  background:conic-gradient(from var(--mb-beam),transparent 0deg 200deg,#b8915500 214deg,#b8915599 268deg,#a98146 306deg,#fff0c8 330deg,#c39b5c 344deg,transparent 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
/* The glow: the same sweep on a wider ring, blurred by its parent. */
.mb-light {z-index:2;filter:blur(6px)}
.mb-light::before {
  content:"";
  position:absolute;
  inset:0;
  padding:4px;
  background:conic-gradient(from var(--mb-beam),transparent 0deg 262deg,#e2bb7299 300deg,#f6d38f 330deg,#e2bb7299 348deg,transparent 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
body .elementor.elementor .mb-project-visual::after,
body .elementor.elementor .mb-project-visual>.mb-light {inset:0}
.mb-peek::after,.mb-peek>.mb-light {inset:-1px}
body .elementor.elementor .mb-card,
body .elementor.elementor .mb-project-visual {transition:border-color var(--mb-state) var(--mb-ease-state)}
@media(hover:hover) and (pointer:fine) {
  body .elementor.elementor .mb-card:hover::before,
  body .elementor.elementor .mb-card:hover::after,
  body .elementor.elementor .mb-card:hover>.mb-light,
  body .elementor.elementor .mb-project-row:hover .mb-project-visual::after,
  body .elementor.elementor .mb-project-row:hover .mb-project-visual>.mb-light {opacity:1}
  body .elementor.elementor .mb-card:hover {border-bottom-color:transparent}
  body .elementor.elementor .mb-project-row:hover .mb-project-visual {border-color:var(--mb-sand-frame)}
}
body .elementor.elementor .mb-card:has(:focus-visible)::before,
body .elementor.elementor .mb-card:has(:focus-visible)::after,
body .elementor.elementor .mb-card:has(:focus-visible)>.mb-light,
body .elementor.elementor .mb-project-row:has(:focus-visible) .mb-project-visual::after,
body .elementor.elementor .mb-project-row:has(:focus-visible) .mb-project-visual>.mb-light,
.mb-peek.is-open::after,.mb-peek.is-open>.mb-light {opacity:1}
body .elementor.elementor .mb-card:has(:focus-visible) {border-bottom-color:transparent}
@media(prefers-reduced-motion:no-preference) {
  body .elementor.elementor .mb-card::after,
  body .elementor.elementor .mb-project-visual::after,
  .mb-peek::after,
  .mb-light::before {animation:mb-beam-turn var(--mb-beam-speed) linear infinite paused}
  body .elementor.elementor .mb-card:hover::after,
  body .elementor.elementor .mb-card:hover>.mb-light::before,
  body .elementor.elementor .mb-card:has(:focus-visible)::after,
  body .elementor.elementor .mb-card:has(:focus-visible)>.mb-light::before,
  body .elementor.elementor .mb-project-row:hover .mb-project-visual::after,
  body .elementor.elementor .mb-project-row:hover .mb-project-visual>.mb-light::before,
  body .elementor.elementor .mb-project-row:has(:focus-visible) .mb-project-visual::after,
  body .elementor.elementor .mb-project-row:has(:focus-visible) .mb-project-visual>.mb-light::before,
  .mb-peek.is-open::after,.mb-peek.is-open>.mb-light::before {animation-play-state:running}
}
@media(prefers-reduced-motion:reduce) {
  body .elementor.elementor .mb-card::after,body .elementor.elementor .mb-project-visual::after,.mb-peek::after,.mb-light {display:none}
}
.mb-quiet-motion body .elementor.elementor .mb-card::after,
.mb-quiet-motion body .elementor.elementor .mb-project-visual::after,
.mb-quiet-motion .mb-peek::after,.mb-quiet-motion .mb-light {display:none}
/* Cards sit 32–48px apart, so the 14px frame never touches a neighbour. On phones the frame tucks in to the gutter. */
@media(max-width:767px) {
  body .elementor.elementor .mb-card::before,body .elementor.elementor .mb-card::after,body .elementor.elementor .mb-card>.mb-light {inset:-10px}
}

/* ---------- Keep exploring (Work and Tools pages) ----------
   An end card: the heading at display size on the left, the button bottom-aligned on the right.
   On tablets and phones they stack with 32px between them. */
body .elementor.elementor .mb-index-link {
  padding-top:112px;
  padding-bottom:128px}
body .elementor.elementor .mb-index-link>.mb-shell {
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:end;
  column-gap:64px;
  row-gap:32px}
body .elementor.elementor .mb-index-link .elementor-widget-heading {margin:0}
body .elementor.elementor .mb-index-link h2 {
  font-size:clamp(56px,7.2vw,112px);
  line-height:.96;
  letter-spacing:-.035em}
body .elementor.elementor .mb-index-link .mb-primary {
  justify-self:end;
  margin:0 0 10px}
body .elementor.elementor .mb-index-link .mb-primary .elementor-button {
  display:inline-flex;
  align-items:center;
  gap:14px;
  min-height:56px;
  padding:16px 28px}
body .elementor.elementor .mb-index-link .mb-primary .elementor-button-content-wrapper::after {
  content:"→";
  display:inline-block;
  margin-left:14px;
  font-weight:400;
  transition:transform var(--mb-feedback) var(--mb-ease-out)}
body .elementor.elementor .mb-index-link .mb-primary .elementor-button:hover .elementor-button-content-wrapper::after,
body .elementor.elementor .mb-index-link .mb-primary .elementor-button:focus-visible .elementor-button-content-wrapper::after {transform:translateX(5px)}
@media(max-width:1024px) {
  body .elementor.elementor .mb-index-link {padding-top:80px;padding-bottom:96px}
  body .elementor.elementor .mb-index-link>.mb-shell {grid-template-columns:1fr}
  body .elementor.elementor .mb-index-link .mb-primary {justify-self:start;margin:0}
}
@media(max-width:767px) {
  body .elementor.elementor .mb-index-link {padding-top:64px;padding-bottom:80px}
  body .elementor.elementor .mb-index-link h2 {font-size:52px}
  body .elementor.elementor .mb-index-link .mb-primary,
  body .elementor.elementor .mb-index-link .mb-primary .elementor-button {width:100%;justify-content:center}
}

/* ---------- Index preview ----------
   Hovering a project name on the Index or Reviews list opens a framed preview of that site beside the pointer.
   It fades and rises in 280ms, follows the pointer with easing, and the capture scrolls slowly top to bottom and back.
   Keyboard focus opens it beside the row. Touch screens never see it; reduced motion keeps the capture still. */
.mb-peek {
  position:fixed;
  top:0;
  left:0;
  z-index:60;
  width:360px;
  padding:10px 10px 0;
  background:#e9e4d8;
  border:1px solid var(--mb-sand-frame);
  box-shadow:0 30px 60px -30px #20201d59,0 0 0 6px #f4f1ea;
  pointer-events:none;
  opacity:0;
  visibility:hidden;
  transform:translate3d(var(--mb-peek-x,0),var(--mb-peek-y,0),0) scale(.96);
  transform-origin:var(--mb-peek-origin,0 50%);
  transition:opacity 180ms var(--mb-ease-state),transform 280ms var(--mb-ease-out),visibility 0s linear 180ms;
  will-change:transform}
.mb-peek.is-open {
  opacity:1;
  visibility:visible;
  transform:translate3d(var(--mb-peek-x,0),var(--mb-peek-y,0),0);
  transition:opacity var(--mb-state) var(--mb-ease-state),transform 280ms var(--mb-ease-out),visibility 0s}
.mb-peek::after {inset:-1px;opacity:1}
.mb-peek-window {
  position:relative;
  height:400px;
  overflow:hidden;
  background:#f4f1ea}
.mb-peek-window img {
  display:block;
  width:100%;
  height:auto;
  max-width:none;
  will-change:transform}
.mb-peek-host {
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin:0;
  padding:10px 2px 11px;
  font-family:var(--e-global-typography-accent-font-family,"IBM Plex Mono"),monospace;
  font-size:15px;
  line-height:1.3;
  color:var(--mb-muted);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis}
.mb-peek-host span:first-child {min-width:0;overflow:hidden;text-overflow:ellipsis}
@media(prefers-reduced-motion:reduce) {
  .mb-peek,.mb-peek.is-open {transition:none}
}
/* The hover target is the name itself, not the empty space beside it. */
body .elementor.elementor .mb-index-row.has-peek h3 {display:inline-block}

/* ---------- Index Wall ----------
   The right side of the dark contact band lists every live project on the Index page (index-wall.php).
   Laptop and up: the band becomes two columns, contact copy left and the wall right, inside the same 1280px shell.
   The wall is one framed box; the lines between its head, list and foot are the 1px grid gaps showing the rule
   colour through, so no element carries a one-sided border. Two columns drift (index-wall.js), one up, one down;
   a project under the pointer or keyboard focus lights up with the same beige frame and travelling light as the cards.
   Tablet: the wall sits under the contact copy. Phone: the list becomes one sideways strip.
   Reduced motion, quiet motion or no JS: nothing moves; the columns (or the strip) scroll by hand. */
body .elementor.elementor .mb-contact.mb-has-wall {
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,.95fr);
  column-gap:72px;
  row-gap:56px;
  align-items:stretch;
  padding-left:max(var(--mb-gutter),calc((100% - 1280px) / 2));
  padding-right:max(var(--mb-gutter),calc((100% - 1280px) / 2))}
body .elementor.elementor .mb-contact.mb-has-wall>.mb-shell {
  max-width:none;
  margin:0}
body .elementor.elementor .mb-wall {
  --mb-wall-rule:#3a3933;
  --mb-wall-quiet:#c8c1b2;
  --mb-wall-tag:#958e7f;
  --mb-wall-name:#f4f1ea8c;
  position:relative;
  display:grid;
  grid-template-rows:auto minmax(0,1fr) auto;
  gap:1px;
  min-width:0;
  min-height:clamp(520px,40vw,600px);
  background:var(--mb-wall-rule);
  border:1px solid var(--mb-wall-rule);
  color:var(--mb-paper)}
body .elementor.elementor .mb-wall>* {
  min-width:0;
  background:var(--mb-ink)}
body .elementor.elementor .mb-wall-head,
body .elementor.elementor .mb-wall-foot {
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  align-items:center;
  gap:8px 16px;
  padding:14px 20px;
  font-family:var(--e-global-typography-accent-font-family,"IBM Plex Mono"),monospace;
  font-size:15px;
  line-height:1.4;
  color:var(--mb-wall-quiet)}
body .elementor.elementor .mb-wall .mb-wall-title {
  margin:0;
  font:inherit;
  letter-spacing:0;
  color:inherit}
body .elementor.elementor .mb-wall-clock {
  display:inline-flex;
  align-items:center;
  gap:10px;
  margin:0;
  white-space:nowrap}
body .elementor.elementor .mb-wall-dot {
  width:7px;
  height:7px;
  flex:none;
  background:var(--mb-rust)}
body .elementor.elementor .mb-wall-time[hidden] {
  display:none}
body .elementor.elementor .mb-wall-foot {
  padding-top:4px;
  padding-bottom:4px}
body .elementor.elementor .mb-wall-foot a,
body .elementor.elementor .mb-wall-toggle {
  display:inline-flex;
  align-items:center;
  gap:10px;
  min-height:48px;
  color:var(--mb-paper);
  text-decoration:none}
body .elementor.elementor .mb-wall-foot a span {
  transition:transform var(--mb-feedback) var(--mb-ease-out)}
body .elementor.elementor .mb-wall-foot a:hover span,
body .elementor.elementor .mb-wall-foot a:focus-visible span {
  transform:translateX(5px)}
body .elementor.elementor .mb-wall-foot a[href="#main-content"]:hover span,
body .elementor.elementor .mb-wall-foot a[href="#main-content"]:focus-visible span {
  transform:translateY(-4px)}
body .elementor.elementor .mb-wall-toggle {
  min-width:48px;
  justify-content:flex-end;
  padding:0 2px;
  border:0;
  background:none;
  font:inherit;
  color:var(--mb-wall-quiet);
  cursor:pointer;
  transition:color var(--mb-feedback) var(--mb-ease-state)}
body .elementor.elementor .mb-wall-toggle:hover {
  color:var(--mb-paper)}
body .elementor.elementor .mb-wall-toggle[hidden] {
  display:none}
body .elementor.elementor .mb-wall-sr {
  position:absolute;
  width:1px;
  height:1px;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap}

/* The list: two columns. Reels sit absolutely, so the wall's height comes from the band, never from the list.
   The fade at the top and bottom is a mask on the list itself; the panel under it stays solid ink. */
body .elementor.elementor .mb-wall-body {
  display:grid;
  grid-template-rows:100%;
  min-height:0}
body .elementor.elementor .mb-wall-cols {
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  grid-template-rows:100%;
  min-width:0;
  min-height:0;
  overflow:hidden;
  -webkit-mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent);
  mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent)}
body .elementor.elementor .mb-wall-col {
  position:relative;
  min-height:0;
  overflow-y:auto;
  overscroll-behavior:contain;
  scrollbar-width:none}
body .elementor.elementor .mb-wall-col::-webkit-scrollbar {
  display:none}
body .elementor.elementor .mb-wall.is-moving .mb-wall-col {
  overflow:hidden}
/* The looping copy only exists for the drift; a still wall scrolls through each project once. */
body .elementor.elementor .mb-wall:not(.is-moving) .mb-wall-track[aria-hidden] {
  display:none}
body .elementor.elementor .mb-wall-reel {
  position:absolute;
  top:0;
  left:0;
  right:0;
  will-change:transform}
body .elementor.elementor .mb-wall-track {
  margin:0;
  padding:4px 12px;
  list-style:none}
body .elementor.elementor .mb-wall-track li {
  margin:0;
  padding:6px 0}
body .elementor.elementor .mb-wall-item {
  position:relative;
  isolation:isolate;
  display:block;
  padding:14px 16px 15px;
  color:var(--mb-paper);
  text-decoration:none}
body .elementor.elementor .mb-wall-item:focus-visible {
  outline:none}
body .elementor.elementor .mb-wall-name {
  display:block;
  font-size:22px;
  line-height:1.2;
  letter-spacing:-.01em;
  text-wrap:pretty;
  color:var(--mb-wall-name);
  transition:color var(--mb-state) var(--mb-ease-state)}
/* Hyphenated words (E-commerce, Same-Day, drive-thru) never break at the hyphen. */
body .elementor.elementor .mb-wall-keep {
  white-space:nowrap}
body .elementor.elementor .mb-wall-type {
  display:flex;
  justify-content:space-between;
  gap:12px;
  margin-top:6px;
  font-family:var(--e-global-typography-accent-font-family,"IBM Plex Mono"),monospace;
  font-size:15px;
  line-height:1.4;
  color:var(--mb-wall-tag)}
body .elementor.elementor .mb-wall-arrow {
  color:var(--mb-paper);
  opacity:0;
  transform:translate(-4px,4px);
  transition:opacity var(--mb-feedback) var(--mb-ease-state),transform var(--mb-feedback) var(--mb-ease-out)}

/* The light: a complete sand frame, a 1.5px travelling line, and its blurred glow (same sweep as the project cards). */
body .elementor.elementor .mb-wall-item::before,
body .elementor.elementor .mb-wall-item::after,
body .elementor.elementor .mb-wall-glow {
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:0;
  transition:opacity var(--mb-state) var(--mb-ease-state)}
body .elementor.elementor .mb-wall-item::before {
  z-index:-1;
  border:1px solid #cdb68c59;
  background:#f4f1ea0a}
body .elementor.elementor .mb-wall-item::after,
body .elementor.elementor .mb-wall-glow::before {
  padding:1.5px;
  background:conic-gradient(from var(--mb-beam),transparent 0deg 200deg,#cdb68c00 214deg,#cdb68c99 268deg,#d9bd84 306deg,#fff2cf 330deg,#d9bd84 344deg,transparent 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
body .elementor.elementor .mb-wall-glow {
  z-index:-1;
  filter:blur(6px)}
body .elementor.elementor .mb-wall-glow::before {
  content:"";
  position:absolute;
  inset:0;
  padding:4px}
@media(hover:hover) and (pointer:fine) {
  body .elementor.elementor .mb-wall-item:hover .mb-wall-name {color:var(--mb-paper)}
  body .elementor.elementor .mb-wall-item:hover .mb-wall-arrow {opacity:1;transform:none}
  body .elementor.elementor .mb-wall-item:hover::before,
  body .elementor.elementor .mb-wall-item:hover::after,
  body .elementor.elementor .mb-wall-item:hover .mb-wall-glow {opacity:1}
}
body .elementor.elementor .mb-wall-item:focus-visible .mb-wall-name {color:var(--mb-paper)}
body .elementor.elementor .mb-wall-item:focus-visible .mb-wall-arrow {opacity:1;transform:none}
body .elementor.elementor .mb-wall-item:focus-visible::before,
body .elementor.elementor .mb-wall-item:focus-visible::after,
body .elementor.elementor .mb-wall-item:focus-visible .mb-wall-glow {opacity:1}
/* Keyboard focus also gets a solid frame, so focus never depends on the moving light alone. */
body .elementor.elementor .mb-wall-item:focus-visible::before {
  border-color:#e6b19c}
@media(prefers-reduced-motion:no-preference) {
  body .elementor.elementor .mb-wall-item::after,
  body .elementor.elementor .mb-wall-glow::before {animation:mb-beam-turn var(--mb-beam-speed) linear infinite paused}
  body .elementor.elementor .mb-wall-item:hover::after,
  body .elementor.elementor .mb-wall-item:hover .mb-wall-glow::before,
  body .elementor.elementor .mb-wall-item:focus-visible::after,
  body .elementor.elementor .mb-wall-item:focus-visible .mb-wall-glow::before {animation-play-state:running}
}
@media(prefers-reduced-motion:reduce) {
  body .elementor.elementor .mb-wall-item::after,
  body .elementor.elementor .mb-wall-glow {display:none}
  body .elementor.elementor .mb-wall-arrow {transition:none}
}
.mb-quiet-motion body .elementor.elementor .mb-wall-item::after,
.mb-quiet-motion body .elementor.elementor .mb-wall-glow {display:none}

/* Tablet: the wall sits under the contact copy at a fixed height. */
@media(max-width:1024px) {
  body .elementor.elementor .mb-contact.mb-has-wall {
    grid-template-columns:minmax(0,1fr);
    padding-left:var(--mb-gutter);
    padding-right:var(--mb-gutter)}
  body .elementor.elementor .mb-wall {
    min-height:480px}
}

/* Phone: one sideways strip of names between the head and the foot. */
@media(max-width:767px) {
  body .elementor.elementor .mb-contact.mb-has-wall {
    row-gap:40px}
  body .elementor.elementor .mb-wall {
    min-height:0}
  body .elementor.elementor .mb-wall-head {
    padding:12px 16px}
  body .elementor.elementor .mb-wall-foot {
    padding:0 16px}
  body .elementor.elementor .mb-wall-cols {
    display:flex;
    overflow-x:auto;
    overflow-y:hidden;
    overscroll-behavior-x:contain;
    scrollbar-width:none;
    -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
    mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
  body .elementor.elementor .mb-wall-cols::-webkit-scrollbar {
    display:none}
  body .elementor.elementor .mb-wall-col,
  body .elementor.elementor .mb-wall-reel {
    display:contents}
  body .elementor.elementor .mb-wall-track {
    display:flex;
    flex:none;
    padding:10px 6px}
  body .elementor.elementor .mb-wall-col:first-child .mb-wall-track {
    padding-left:20px}
  body .elementor.elementor .mb-wall-col:last-child .mb-wall-track:not([aria-hidden]) {
    padding-right:20px}
  body .elementor.elementor .mb-wall-track[aria-hidden] {
    display:none}
  body .elementor.elementor .mb-wall-track li {
    flex:none;
    padding:0 4px}
  body .elementor.elementor .mb-wall-item {
    display:flex;
    align-items:center;
    gap:12px;
    min-height:56px;
    padding:10px 14px;
    white-space:nowrap}
  body .elementor.elementor .mb-wall-name {
    font-size:18px;
    color:#f4f1eab3}
  body .elementor.elementor .mb-wall-type {
    margin-top:0}
  body .elementor.elementor .mb-wall-arrow {
    display:none}
}

/* Homepage portrait background proportions. */
body .elementor.elementor-6 .mb-portrait::before {
  content:none;
}
body .elementor.elementor-6 .mb-portrait .elementor-widget-image::before {
  content:"";
  position:absolute;
  inset:70px 0 0;
  width:auto;
  height:auto;
  border-radius:220px 220px 0 0;
  background:#e4dece;
  z-index:0;
}
@media (max-width:767px) {
  body .elementor.elementor-6 .mb-portrait .elementor-widget-image::before {
    inset:48px 0 0;
  }
}
body .elementor.elementor-6 .mb-portrait img {
  position:relative;
  z-index:1;
}

/* Portrait image hover. */
@media (hover:hover) and (pointer:fine) {
  body .elementor.elementor-6 .mb-portrait img,
  body .elementor.elementor-43 .mb-about-portrait img {
    transition:scale 350ms ease;
  }
  body .elementor.elementor-6 .mb-portrait img:hover,
  body .elementor.elementor-43 .mb-about-portrait img:hover {
    scale:1.035;
  }
}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:reduce) {
  body .elementor.elementor-6 .mb-portrait img,
  body .elementor.elementor-43 .mb-about-portrait img {
    transition:none;
  }
}
