/* Independent interactions and accessibility; published geometry lives in design.css. */
:root,[data-theme="dark"]{--global-colors--text-default:#fff;--global-colors--text-inverse:#0e1011;--global-colors--text-muted:rgba(255,255,255,.7);--global-colors--text-muted-inverse:rgba(14,16,17,.7);--global-colors--border-default:#262829;--global-colors--border-inverse:#e8eded;--global-colors--background-default:#0e1011;--global-colors--background-muted:#181a1b;--global-colors--background-muted-2:#1f2122;--global-colors--background-primary:#fff;--global-colors--background-primary-muted:#f8f8f8;--global-colors--background-primary-muted-2:#eee}
[data-theme="light"],:root:has(.page-wrapper[data-theme="light"]){--global-colors--text-default:#0e1011;--global-colors--text-inverse:#fff;--global-colors--text-muted:rgba(14,16,17,.6);--global-colors--text-muted-inverse:rgba(255,255,255,.7);--global-colors--border-default:#e8eded;--global-colors--border-inverse:#262829;--global-colors--background-default:#fff;--global-colors--background-muted:#f8f8f8;--global-colors--background-muted-2:#eee;--global-colors--background-primary:#0e1011;--global-colors--background-primary-muted:#181a1b;--global-colors--background-primary-muted-2:#1f2122}
*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
.page-wrapper[data-theme="light"]{background:var(--global-colors--background-default);color:var(--global-colors--text-default);min-height:100vh}
body:has(.page-wrapper[data-theme="light"]){background:#fff}
html{scrollbar-gutter:stable}
.home-hero-right-top{container-type:inline-size}
@media(min-width:992px){
  .home-hero-grid{grid-template-columns:minmax(0,45fr) minmax(0,55fr)}
  .home-hero-right-top{height:auto;min-height:100svh}
  /* Keep the reveal masks, but fit the text instead of clipping the original 12rem title. */
  .home-hero-right-top .heading-style-large{font-size:min(7vw,17cqw,12rem)}
  .home-hero-right-top .heading-alt-h2{font-size:min(3vw,7cqw,3.5rem)}
}
@media(min-width:768px) and (max-width:991px){.home-hero-right-top .heading-style-large{font-size:min(18vw,17cqw)}}
/* The shared footer wordmark must fit inside its reveal mask at every breakpoint. */
.footer-top{container-type:inline-size}
.footer-top>.overflow-hidden{overflow:clip}
.footer-top .heading-style-xxlarge{font-size:min(13vw,16cqw,19rem)}
.footer .nav-item{font-size:clamp(1rem,1.25vw,1.25rem);min-height:44px}
/* Original Webflow a-293 / a-296–299 opening. Starts with the server-rendered
   page and finishes without JS, so hydration cannot flash or restart it. */
[data-home-welcome]{display:contents}
.home-welcome{pointer-events:none;visibility:hidden;width:100%;height:100svh}
.home-welcome>.overflow-hidden{max-width:100%}
.home-welcome .pageloader-heading{font-size:min(12vw,12rem)}
@keyframes welcome-panel-out{from{visibility:visible;transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,-100%,0)}}
@keyframes welcome-brand-out{from{transform:translate3d(0,0,0)}to{transform:translate3d(0,-101%,0)}}
@keyframes welcome-heading-in{from{transform:translate3d(0,105%,0)}to{transform:translate3d(0,0,0)}}
@keyframes welcome-copy-in{from{transform:translate3d(0,20px,0);opacity:0}to{transform:translate3d(0,0,0);opacity:1}}
@media(prefers-reduced-motion:no-preference){
  [data-home-welcome]:not([data-welcome-skipped]) .home-welcome{display:flex;animation:welcome-panel-out 1200ms cubic-bezier(.86,0,.07,1) 500ms both}
  [data-home-welcome]:not([data-welcome-skipped]) .pageloader-heading{animation:welcome-brand-out 1000ms cubic-bezier(.77,0,.175,1) 300ms both}
  [data-home-welcome]:not([data-welcome-skipped]) .home-hero-right-top [data-reveal="heading"]{animation:welcome-heading-in 700ms cubic-bezier(.165,.84,.44,1) 400ms backwards}
  [data-home-welcome]:not([data-welcome-skipped]) .home-hero-right-top .overflow-hidden+.overflow-hidden [data-reveal="heading"]{animation-delay:1500ms}
  [data-home-welcome]:not([data-welcome-skipped]) .home-hero-right-top [data-reveal="fade"]{animation:welcome-copy-in 1400ms cubic-bezier(.165,.84,.44,1) 1700ms backwards}
  [data-home-welcome]:not([data-welcome-skipped]) .home-hero-right-top .max-width-large [data-reveal="fade"]{animation-delay:2000ms}
  [data-reveal="heading"][data-reveal-pending]{transform:translateY(105%)}
  [data-reveal="fade"][data-reveal-pending]{transform:translateY(16px);opacity:0}
  :is(.image-cover-parallax,.project-gallery-image,.about-team-item-video,.post-preview-image,.services-hero-image,.about-hero-image,.home-services-item-image){transform:scale(1.08)}
  [data-parallax-active]{will-change:transform}
}
@media(max-width:991px){.home-welcome .pageloader-heading{font-size:13vw}}
@media(max-width:479px){.home-welcome .pageloader-heading{font-size:min(4rem,12vw)}}
/* Focus must always be visible, including before the JavaScript has loaded. */
[data-home-welcome]:has(:focus-visible) .home-welcome{display:none}
[data-home-welcome]:has(:focus-visible) .home-hero-right-top [data-reveal]{animation:none}
.grain-overlay{pointer-events:none}
.light-mode{display:none}.dark-mode{display:block}[data-theme="light"] .light-mode{display:block}[data-theme="light"] .dark-mode{display:none}
/* Standalone desktop logos use the white asset; paired header logos already swap. */
[data-theme="light"] .navbar-logo>.navbar-logo-image{filter:invert(1)}
.header{transition:transform 350ms cubic-bezier(.22,.61,.36,1)}
[data-scroll-direction="down"] .header{transform:translateY(-110%)}
.navbar-item-line,.nav-item-line{width:0;transition:width 500ms cubic-bezier(.165,.84,.44,1)}
.navbar-menu-item:hover .navbar-item-line,.navbar-menu-item:focus-visible .navbar-item-line,.nav-item:hover .nav-item-line,.nav-item:focus-visible .nav-item-line{width:100%}
.button-text-line{width:100%;transition:width 500ms cubic-bezier(.165,.84,.44,1)}.button-text:hover .button-text-line{width:0}
.mobile-menu-toggle{padding:0;background:transparent;color:inherit}.menu-toggle-line{transition:transform 500ms cubic-bezier(.86,0,.07,1)}
.mobile-menu-toggle.is-open .top{transform:translateY(4px) rotate(-20deg)}.mobile-menu-toggle.is-open .bottom{transform:translateY(-4px) rotate(20deg)}
.mobile-menu{display:flex;visibility:hidden;transform:translateY(-105dvh);transition:transform 700ms cubic-bezier(.86,0,.07,1),visibility 700ms}
.mobile-menu.is-open{visibility:visible;transform:translateY(0)}
.toggle-color{border:0}.toggle-color-dot{display:block;transition:transform 700ms cubic-bezier(.86,0,.07,1)}
.view-button{opacity:0;transform:scale(.6);transition:opacity 300ms ease,transform 300ms cubic-bezier(.23,1,.32,1),translate 150ms ease}
a:hover>.view-button-wrapper .view-button,a:focus-visible>.view-button-wrapper .view-button{opacity:1;transform:scale(1)}
.project-preview-large-heading h2{transition:transform 700ms cubic-bezier(.165,.84,.44,1)}
.project-preview-large-image-wrapper:hover .project-preview-large-heading h2{transform:translateY(-4%)}
.accordion-content-wrapper{height:0;overflow:hidden}.accordion.is-open .accordion-content-wrapper{height:auto}.accordion-icon{transition:transform 300ms ease}.accordion.is-open .accordion-icon{transform:rotate(45deg)}
.form-result{display:block}.w-form-fail.form-result{color:#611a1a}.w-form-done.form-result{color:#15251b}.button:disabled{opacity:.65;cursor:wait}
.native-lightbox{border:0;margin:0;padding:0;max-width:none;max-height:none;width:100vw;height:100dvh;color:#fff;background:rgba(0,0,0,.9)}
.native-lightbox[open]{opacity:1}
.native-lightbox:not([open]){display:none}.native-lightbox::backdrop{background:transparent}
.native-lightbox .w-lightbox-item{border:0;background:transparent}.native-lightbox .w-lightbox-control{border:0;background-color:transparent}
.native-lightbox .w-lightbox-thumbnail{display:block}.native-lightbox .w-lightbox-view{opacity:1}
:focus-visible{outline:2px solid currentColor;outline-offset:5px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.grain-overlay{display:none}[data-reveal]{opacity:1!important;transform:none!important}[data-parallax-active]{transform:none!important;will-change:auto}.view-button{translate:none!important}}

/* Keep the mobile contact action on one line, including narrow phones. */
@media(max-width:991px){.header-2 .button-text{white-space:nowrap}.header-2 .navbar-logo-image{margin-left:0;width:110px;height:30px;object-fit:contain;aspect-ratio:auto}.header-2 .navbar-menu{display:none}.header-2 .navbar-right{gap:16px}.header-2 .mobile-menu-toggle{min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}}
