/* UXChimp 1.9: local, progressively enhanced carousels and responsive corrections. */
/* Also hide stale cached header controls until the host cache is purged. Currency
   controls in pricing and the enquiry form are intentionally not targeted. */
.vve-page .uxc-site-header .uxc-currency-switch,
.vve-page .uxc-site-header .uxc-currency-in-header,
.vve-page .uxc-mobile-menu .uxc-currency-in-mobile,
.vve-page .uxc-mobile-menu .uxc-currency-switch,
.vve-page .uxc-site-header button[role="switch"] { display: none !important; }

.vve-page .uxc-project-overview { min-width: 0; }
.vve-page .uxc-project-overview section > div { min-width: 0; overflow-wrap: anywhere; }
.vve-page .uxc-project-overview dl { grid-template-columns: repeat(4,minmax(0,1fr)); }
.vve-page .uxc-project-overview dl > div { display: flex; min-width: 0; overflow-wrap: anywhere; }
.vve-page .uxc-project-gallery {
 --uxc-gallery-width: 100vw;
 --uxc-slide-width: min(565px,calc(var(--uxc-gallery-width) - 80px));
 --uxc-slide-gap: 20px;
 position: relative; left: 50%; transform: translateX(-50%);
 width: var(--uxc-gallery-width); max-width: none;
 padding-block: 12px; border-block: 1px solid var(--vv-card-rule,rgba(255,255,255,.14));
 isolation: isolate; overflow: hidden; background: transparent;
}
.vve-page .uxc-gallery-viewport {
 position: relative; width: 100%; overflow-x: auto; overflow-y: hidden;
 scroll-snap-type: x mandatory; scroll-behavior: auto; scroll-padding: 0;
 overscroll-behavior-x: contain; touch-action: pan-x pan-y pinch-zoom;
 scrollbar-width: thin; -webkit-overflow-scrolling: touch;
 outline-offset: -3px; cursor: grab;
}
.vve-page .uxc-project-gallery[data-uxc-ready] .uxc-gallery-viewport { scrollbar-width: none; }
.vve-page .uxc-project-gallery[data-uxc-ready] .uxc-gallery-viewport::-webkit-scrollbar { display: none; }
.vve-page .uxc-gallery-viewport:focus-visible { outline: 2px solid #f3fe00; }
.vve-page .uxc-gallery-track {
 display: flex; position: relative; align-items: center; gap: var(--uxc-slide-gap);
 width: max-content; min-width: 100%; max-width: none;
 padding-inline: max(0px,calc((var(--uxc-gallery-width) - var(--uxc-slide-width)) / 2));
 transform: none !important; will-change: auto;
}
.vve-page .uxc-gallery-slide {
 display: block; flex: 0 0 var(--uxc-slide-width); width: var(--uxc-slide-width);
 min-width: 0; max-width: none; margin: 0; padding: 0;
 aspect-ratio: 565 / 318; overflow: hidden; border-radius: 4px;
 scroll-snap-align: center; scroll-snap-stop: normal;
 user-select: none; -webkit-user-select: none;
}
.vve-page .uxc-gallery-slide[hidden] { display: none !important; }
.vve-page .uxc-gallery-image {
 display: block; width: 100% !important; height: 100% !important; max-width: 100%;
 object-fit: contain; pointer-events: none; user-select: none; -webkit-user-drag: none;
 opacity: 1 !important;
}
.vve-page .uxc-gallery-arrow {
 display: none; position: absolute; top: 50%; transform: translateY(-50%); z-index: 4;
 width: 44px; height: 44px; padding: 0; border-radius: 50%;
 align-items: center; justify-content: center; color: #fff;
 background: rgba(7,7,7,.78); border: 1px solid rgba(255,255,255,.35);
 backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
 cursor: pointer; transition: background-color .18s,border-color .18s;
}
.vve-page .uxc-project-gallery[data-uxc-ready] .uxc-gallery-arrow { display: flex; }
.vve-page .uxc-gallery-prev { left: max(10px,env(safe-area-inset-left)); }
.vve-page .uxc-gallery-next { right: max(10px,env(safe-area-inset-right)); }
.vve-page .uxc-gallery-arrow:hover { background: #f3fe00; color: #000; border-color: #f3fe00; }
.vve-page .uxc-gallery-arrow:focus-visible { outline: 2px solid #f3fe00; outline-offset: 3px; }
.vve-page .uxc-gallery-arrow:disabled { display: none !important; }
.vve-page .uxc-gallery-status {
 position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden;
 clip: rect(0,0,0,0); clip-path: inset(50%); white-space: nowrap; border: 0;
}
.vve-page .uxc-gallery-viewport.uxc-gallery-dragging { cursor: grabbing; scroll-snap-type: none; }
/* Layout boxes must be allowed to shrink without clipping actual article text. */
.vve-page .elementor-element, .vve-page .elementor-widget-container { min-width: 0; }
.vve-page .uxc-header-actions { flex-shrink: 0; }
.vve-page .uxc-header-brand { overflow: hidden; }
.vve-page .uxc-cta-actions { flex-wrap: wrap; }
.vve-page .vve-contact-form select { max-width: 100%; min-width: 0; text-overflow: ellipsis; }
.vve-page .vve-contact-form label { min-width: 0; }
.vve-page .vve-contact-form input:not([type="radio"]):not([type="checkbox"]),
.vve-page .vve-contact-form textarea { min-width: 0; max-width: 100%; }
@media (max-width: 639px) {
 .vve-page .uxc-project-overview dl { grid-template-columns: repeat(2,minmax(0,1fr)); margin-inline: 16px; gap: 24px 16px; }
 .vve-page .uxc-project-gallery { --uxc-slide-gap: 12px; padding-block: 10px; }
 .vve-page .uxc-header-brand { max-width: min(170px,100%); }
}
@media (max-width: 359px) {
 .vve-page .uxc-header-brand { max-width: 124px; }
 .vve-page .uxc-cta-actions > a { padding-inline: 12px; }
}
@media (prefers-reduced-motion: reduce) {
 .vve-page .uxc-gallery-viewport { scroll-behavior: auto !important; }
 .vve-page .uxc-gallery-arrow { transition: none; }
}
/* The three decorative intro image tracks are wider than the screen by design.
   Contain them at their own section, rather than letting them widen the body. */
.vve-page section[aria-labelledby="intro-heading"] { overflow: hidden; overflow: clip; }
/* Long case-study names and service navigation labels must remain readable at
   320px, rather than overflowing under the site's outer horizontal clipping. */
.vve-page .uxc-project-title { overflow-wrap: anywhere; text-wrap: balance; }
@media(max-width:639px) {
 .vve-page .uxc-project-title { font-size: clamp(44px,12vw,72px); line-height: 1.08; }
 .vve-page .uxc-service-cta a { max-width: 100%; justify-content: center; text-align: center; line-height: 1.4; }
 .vve-page .uxc-service-cta a .vv-roll { display: none; }
 .vve-page .uxc-service-cta a .sr-only { position: static; width: auto; height: auto; margin: 0; overflow: visible; clip: auto; clip-path: none; white-space: normal; }
}
