.elementor-theme-builder-content-area{height:400px;}.elementor-location-header:before, .elementor-location-footer:before{content:"";display:table;clear:both;}/* Start custom CSS */.elementor-8434 { position: relative; z-index: 100; }
/* Solid bar on pages that have no dark hero. Posts built on the Elementor Full Width template (insights) have their own dark hero, so they keep the overlay header */
body:is(.single, .blog, .archive, .search, .error404, .page-id-3):not(.post-template-elementor_header_footer) .elementor-8434 [data-id="590ecd4f"] { position: relative; background-color: #121212; }

/* What We Do dropdown (desktop and tablet). The trigger is a <button>, so it also opens on tap and keyboard focus */
.elementor-8434 [data-id="1ad85ed7"], .elementor-8434 [data-id="1ad85ed7"]:hover, .elementor-8434 [data-id="1ad85ed7"]:focus { background: none; border: 0; border-radius: 0; box-shadow: none; color: #FCFBF8; text-transform: none; letter-spacing: normal; height: auto; min-height: 0; }
.elementor-8434 [data-id="1ad85ed7"]::after { content: ""; flex: 0 0 auto; width: 7px; height: 7px; margin-top: -4px; border-right: 2px solid #FCFBF8; border-bottom: 2px solid #FCFBF8; transform: rotate(45deg); transition: transform .2s ease, border-color .2s ease, margin .2s ease; }
.elementor-8434 [data-id="10233201"]:hover [data-id="1ad85ed7"]::after, .elementor-8434 [data-id="10233201"]:focus-within [data-id="1ad85ed7"]::after { transform: rotate(225deg); margin-top: 4px; border-color: #FF6600; }
.elementor-8434 [data-id="10233201"]:hover [data-id="4ca79ec9"], .elementor-8434 [data-id="10233201"]:focus-within [data-id="4ca79ec9"] { color: #FF6600; }
.elementor-8434 [data-id="261c17c8"] { opacity: 0; visibility: hidden; transform: translateY(10px); transition: opacity .2s ease, transform .2s ease, visibility .2s; }
.elementor-8434 [data-id="10233201"]:hover [data-id="261c17c8"], .elementor-8434 [data-id="10233201"]:focus-within [data-id="261c17c8"] { opacity: 1; visibility: visible; transform: translateY(0); }

/* Service icons in the dropdown and the phone menu. Each is a mask, so its colour comes from background-color */
.elementor-8434 :is([data-id="5d4ef6d5"], [data-id="5bff3241"], [data-id="4145fc43"], [data-id="11a68656"], [data-id="56b855a8"], [data-id="2e8dc56b"], [data-id="29d2720d"], [data-id="cfe91bc"], [data-id="262e1b3e"], [data-id="2d021473"])::before { content: ""; flex: 0 0 22px; width: 22px; height: 22px; background-color: #FF6600; -webkit-mask: var(--sp4-ico) center / contain no-repeat; mask: var(--sp4-ico) center / contain no-repeat; }
.elementor-8434 :is([data-id="5d4ef6d5"], [data-id="2e8dc56b"]) { --sp4-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='16' rx='2'/%3E%3Cpath d='M3 9h18M9 20V9'/%3E%3C/svg%3E"); }
.elementor-8434 :is([data-id="5bff3241"], [data-id="29d2720d"]) { --sp4-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m8 7-5 5 5 5M16 7l5 5-5 5M14 4l-4 16'/%3E%3C/svg%3E"); }
.elementor-8434 :is([data-id="4145fc43"], [data-id="cfe91bc"]) { --sp4-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='10.5' cy='10.5' r='7'/%3E%3Cpath d='m21 21-5.5-5.5M7 12.5l2.5-2.5 2 2 3-3.5'/%3E%3C/svg%3E"); }
.elementor-8434 :is([data-id="11a68656"], [data-id="262e1b3e"]) { --sp4-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='7.5' rx='2'/%3E%3Crect x='3' y='13.5' width='18' height='7.5' rx='2'/%3E%3Cpath d='M7 6.75h.01M7 17.25h.01M11 6.75h6M11 17.25h6'/%3E%3C/svg%3E"); }
.elementor-8434 :is([data-id="56b855a8"], [data-id="2d021473"]) { --sp4-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z'/%3E%3C/svg%3E"); }
/* Phone and email under the phone menu's Get in Touch button */
.elementor-8434 :is([data-id="3ceb59e9"], [data-id="397373dc"])::before { content: ""; flex: 0 0 20px; width: 20px; height: 20px; background-color: #FF6600; -webkit-mask: var(--sp4-ico) center / contain no-repeat; mask: var(--sp4-ico) center / contain no-repeat; }
.elementor-8434 [data-id="3ceb59e9"] { --sp4-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E"); }
.elementor-8434 [data-id="397373dc"] { --sp4-ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E"); }

/* Phone menu: the burger opens an off-canvas panel that slides in from the right and slides back out on close. When open, the summary's ::before becomes the close X (44px tap area, centred on the logo with its right edge on the panel's 36px padding) and its ::after the backdrop, so tapping either closes the menu */
.elementor-8434 [data-id="6c51329f"] { list-style: none; }
.elementor-8434 [data-id="6c51329f"]::-webkit-details-marker { display: none; }
.elementor-8434 [data-id="6c51329f"]::before { content: ""; position: absolute; left: 10px; right: auto; top: 21px; width: 24px; height: 2px; margin: 0; border-radius: 2px; background-color: #FCFBF8; box-shadow: 0 -8px 0 #FCFBF8, 0 8px 0 #FCFBF8; }
.elementor-8434 [data-id="46703769"][open] [data-id="6c51329f"]::before { position: fixed; top: 36px; left: auto; right: 23px; z-index: 3; width: 44px; height: 44px; border-radius: 0; box-shadow: none; background: linear-gradient(45deg, transparent calc(50% - 1px), #FCFBF8 calc(50% - 1px), #FCFBF8 calc(50% + 1px), transparent calc(50% + 1px)) center / 18px 18px no-repeat, linear-gradient(-45deg, transparent calc(50% - 1px), #FCFBF8 calc(50% - 1px), #FCFBF8 calc(50% + 1px), transparent calc(50% + 1px)) center / 18px 18px no-repeat; }
/* Backdrop: always present but invisible while closed, so it fades in and out */
.elementor-8434 [data-id="6c51329f"]::after { content: ""; position: fixed; inset: 0; z-index: 1; background-color: rgba(10, 10, 10, .6); opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .4s ease, visibility 0s linear .4s; }
.elementor-8434 [data-id="46703769"][open] [data-id="6c51329f"]::after { opacity: 1; visibility: visible; pointer-events: auto; transition: opacity .4s ease; }
/* Same slide both ways. The ::details-content transition keeps the panel rendered until the slide-out finishes, and @starting-style gives the slide-in its start point */
.elementor-8434 [data-id="46703769"]::details-content { transition: content-visibility .4s allow-discrete; }
.elementor-8434 [data-id="310fb7e2"] { transform: translateX(100%); transition: transform .4s cubic-bezier(.4, 0, .2, 1); }
.elementor-8434 [data-id="46703769"][open] [data-id="310fb7e2"] { transform: translateX(0); }
@starting-style { .elementor-8434 [data-id="46703769"][open] [data-id="310fb7e2"] { transform: translateX(100%); } }
/* Lock the page behind the open menu. !important is needed to beat the theme's html { overflow-y: scroll !important } */
@media (max-width: 767px) { html:has(.elementor-8434 [data-id="46703769"][open]), html:has(.elementor-8434 [data-id="46703769"][open]) body { overflow: hidden !important; } html:has(.elementor-8434 [data-id="46703769"][open]) .trx_addons_scroll_to_top { display: none; } }
@media (prefers-reduced-motion: reduce) { .elementor-8434 [data-id="310fb7e2"], .elementor-8434 [data-id="6c51329f"]::after, .elementor-8434 [data-id="46703769"]::details-content { transition: none !important; } }
.elementor-8434 [data-id="6c51329f"]:focus-visible { outline: 2px solid #FF6600; outline-offset: 2px; border-radius: 6px; }
.elementor-8434 [data-id="607e78fa"] { clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }

/* Current page highlight. Project pages (children of Projects, 8365) light up Projects; insight posts light up Insights */
body.page-id-8311 .elementor-8434 [data-id="1d2390d8"], body.page-id-8354 .elementor-8434 [data-id="640b40c4"], body.page-id-8365 .elementor-8434 [data-id="52fa434d"], body.page-id-8369 .elementor-8434 [data-id="596f90e"], body:is(.page-id-8241, .page-id-8388, .page-id-8389, .page-id-8407, .page-id-8415) .elementor-8434 [data-id="4ca79ec9"], body.page-id-8241 .elementor-8434 [data-id="5d4ef6d5"], body.page-id-8388 .elementor-8434 [data-id="5bff3241"], body.page-id-8389 .elementor-8434 [data-id="4145fc43"], body.page-id-8407 .elementor-8434 [data-id="11a68656"], body.page-id-8415 .elementor-8434 [data-id="56b855a8"], body.page-id-8311 .elementor-8434 [data-id="7828a1b7"], body.page-id-8354 .elementor-8434 [data-id="3e8857d6"], body.page-id-8241 .elementor-8434 [data-id="2e8dc56b"], body.page-id-8388 .elementor-8434 [data-id="29d2720d"], body.page-id-8389 .elementor-8434 [data-id="cfe91bc"], body.page-id-8407 .elementor-8434 [data-id="262e1b3e"], body.page-id-8415 .elementor-8434 [data-id="2d021473"], body.page-id-8365 .elementor-8434 [data-id="11bf3717"], body.page-id-8369 .elementor-8434 [data-id="2b9d7348"], body:is(.parent-pageid-8365, .page-id-8536) .elementor-8434 [data-id="52fa434d"], body:is(.parent-pageid-8365, .page-id-8536) .elementor-8434 [data-id="11bf3717"], body.postid-8506 .elementor-8434 [data-id="596f90e"], body.postid-8506 .elementor-8434 [data-id="2b9d7348"] { color: #FF6600; }/* End custom CSS */