:root { --ease-refined: cubic-bezier(.22, 1, .36, 1); }
html { scroll-behavior: smooth; scroll-padding-top: 32px; }
body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
.h1 { letter-spacing: -.025em; text-wrap: balance; }
.h2 { letter-spacing: -.012em; }
.p, .p-small, .w-richtext p { text-wrap: pretty; }
.use_case--header--col .h2, .use_case--text--h2 .h2 { line-height: 1.4; }
.work--text--description { line-height: 1.4; }
.h2.mt8.gallery-video-desc { padding-left: 0; padding-right: 0; margin-top: 16px; line-height: 1.35; }
a { text-underline-offset: .2em; text-decoration-thickness: 1px; }
a, button, input, label { -webkit-tap-highlight-color: transparent; }
a:focus-visible, button:focus-visible, input:focus-visible, [tabindex]:focus-visible {
  outline: 2px solid currentColor; outline-offset: 6px;
}
.nav--links--item, .footer--link { transition: opacity 250ms ease; }
.nav--links--item { display: inline-flex; align-items: center; min-height: 44px; }
.header--arrow { transition: translate 500ms var(--ease-refined); }
.media-surface { background: #f0efef; }
.wistia-deferred { height: 100%; width: 100%; position: absolute; inset: 0; }
.play--button { transition: transform 500ms var(--ease-refined) !important; }
.video--title { transition: opacity 400ms ease, transform 550ms var(--ease-refined) !important; }
.video--gradient { transition: opacity 450ms ease !important; }
.work--cover, .about--news--cover { transition: transform 700ms var(--ease-refined); }
[data-reveal] { transition: opacity 700ms var(--ease-refined), translate 700ms var(--ease-refined); }
.reveal-pending { opacity: 0; translate: 0 12px; }
@media (hover: hover) and (pointer: fine) {
  .nav--links--item:hover, .footer--link:hover { opacity: .62; }
  a:hover .header--arrow { translate: 0 5px; }
  .work--item a:hover .work--cover, a:hover .about--news--cover { transform: scale(1.015); }
}
.wistia_responsive_wrapper:focus-within .video--title { opacity: 1; transform: translate(-50%, 0%); }
.wistia_responsive_wrapper:focus-within .video--gradient { opacity: .8; }
[fs-cmsfilter-element="filters"] label { min-height: 44px; transition: color 250ms ease, background-color 250ms ease; }
@media (max-width: 767px) {
  .h1.bold.mb16 { font-size: clamp(36px, 9vw, 52px); line-height: 1.12; }
  .h2.mt8.gallery-video-desc { margin-top: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  [data-reveal], .play--button, .video--title, .video--gradient, .header--arrow, .work--cover, .about--news--cover {
    transition: none !important;
  }
  .reveal-pending { opacity: 1; translate: none; }
}
@media print { .reveal-pending { opacity: 1; translate: none; } }
/* The source hid radios with display:none, preventing keyboard navigation. */
.gallery--filters--radio--wrapper { position: relative; cursor: pointer; }
.gallery--filters--radio {
  display: block; position: absolute; width: 1px; height: 1px;
  padding: 0; margin: 0; opacity: 0; clip-path: inset(50%);
}
.gallery--filters--radio--wrapper:has(input:focus-visible) { outline: 2px solid #111; outline-offset: 4px; }
.bold { font-weight: 700; }
.wistia-deferred[role="button"] { cursor: pointer; }
.h2.is--link--border--revert { line-height: 1.4; }

/* Narrow screens use one shared gutter, never stacked container insets. */
@media (max-width: 991px) {
  .container, .container--small, .container-6 {
    width: calc(100% - 32px);
    max-width: none;
    margin-left: auto;
    margin-right: auto;
  }
  .container-4.v-margin { width: 100%; max-width: none; }
  :is(.container, .container--small, .container-6) :is(.container, .container--small, .container-6) {
    width: 100%; max-width: none;
  }
  .h1, .h1.header--h1, .h1.is--80, .h2.is--link--border--revert.mb24 {
    width: auto; max-width: 100%;
  }
}
.mobile-video-dialog {
  position: fixed; inset: 0; width: 100%; height: 100dvh;
  max-width: none; max-height: none; margin: 0; padding: 0;
  border: 0; background: #000; color: #fff; overflow: hidden;
}
.mobile-video-dialog::backdrop { background: #000; }
.mobile-video-dialog iframe { display: block; width: 100%; height: 100%; border: 0; }
.mobile-video-close {
  position: absolute; z-index: 2; top: max(12px, env(safe-area-inset-top));
  right: max(12px, env(safe-area-inset-right)); width: 48px; height: 48px;
  border: 1px solid #ffffff40; border-radius: 50%; background: #151515cc;
  color: #fff; font: 32px/1 sans-serif; cursor: pointer;
}
.mobile-video-dialog[open] { display: flex; align-items: center; justify-content: center; }
.mobile-video-dialog iframe { flex: 0 0 100%; max-height: 100dvh; }
.mobile-video-dialog iframe {
  flex: none; width: min(100vw, 177.7778dvh); height: auto;
  aspect-ratio: 16 / 9; max-height: 100dvh;
}
/* Restrained loading sheen; the reserved media dimensions never change. */
.media-surface.media-pending { position: relative; isolation: isolate; overflow: hidden; }
.media-pending::after {
  content: ''; position: absolute; inset: 0; z-index: 2; pointer-events: none;
  background: linear-gradient(105deg, transparent 20%, rgba(255,255,255,.65) 48%, transparent 76%);
  transform: translateX(-100%);
  animation: media-sheen 1.9s ease-in-out 8;
  animation-play-state: paused;
}
.media-pending.media-near::after { animation-play-state: running; }
.image-pending {
  background: linear-gradient(105deg, #efeeee 20%, #fafafa 48%, #efeeee 76%);
  background-size: 220% 100%;
  animation: image-sheen 1.9s ease-in-out 8;
}
@keyframes media-sheen { to { transform: translateX(100%); } }
@keyframes image-sheen { from { background-position: 100% 0; } to { background-position: -100% 0; } }
@media (prefers-reduced-motion: reduce) {
  .media-pending::after, .image-pending { animation: none; }
  .media-pending::after { display: none; }
}

/* Lightweight Wistia swatches remain visible while the player starts. */
.media-surface > .media-poster {position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:inherit;pointer-events:none;z-index:0;}
@media(min-width:992px){.mobile-video-dialog{width:min(1200px,92vw);height:auto;margin:auto;max-height:90dvh;padding:0;overflow:visible;background:#000;border-radius:16px}.mobile-video-dialog iframe{display:block;width:100%;height:auto;aspect-ratio:16/9;position:relative;inset:auto;transform:none}.mobile-video-dialog::backdrop{background:rgba(0,0,0,.85)}.mobile-video-close{top:12px;right:12px}}

/* Intrinsic dimensions reserve the aspect ratio; they must not fix the displayed
   height when responsive CSS constrains width. Explicit crop styles still win. */
:where(img[data-original-image]) { height: auto; }

/* A consistent rhythm and nearly full-width video cards on narrow homepages. */
@media (max-width: 991px) {
  .home-page { --home-section-gap: 64px; }
  .home-page > .container-4.v-margin { margin-top:32px; margin-bottom:var(--home-section-gap); }
  .home-page > .container-3.v-margin { margin-top:0; margin-bottom:var(--home-section-gap); }
  .home-page > :is(.container-3,.container-4) .use_case--parallax.v-margin { margin-bottom:0; }
  .home-page > .use_case--text--h2.v-margin,
  .home-page > .use_case-carousel.v-margin { margin-top:0; margin-bottom:var(--home-section-gap); }
  .home-page .use_case--text--h2 .h1-large.bold { margin-bottom:20px; }
  .home-page .use_case--text--h2 .w-richtext { margin-bottom:0; }
  .home-page > .use_case--text--h2:has(+ .image-5) { margin-bottom:32px; }
  .home-page > .image-5 { margin-top:0; margin-bottom:var(--home-section-gap); }
  .home-page .slider2 .splide__track { width:calc(100% - 16px); margin-left:16px; margin-bottom:20px; }
  .home-page .slider2 .splide__slide { width:calc(100% - 32px) !important; }
  .home-page .slider2 :is(.wistia--wrapper,.wistia_responsive_padding) { border-radius:24px; }
  .home-page .slider2 .splide__arrows { margin-right:16px; gap:16px; }
  .home-page .slider2 .splide__arrow { width:44px; height:44px; margin:0; }
}
@media (max-width:479px) { .home-page { --home-section-gap:56px; } }

/* Pilot previews retain the existing card dimensions and rounded corners. */
.mux-preview { overflow: hidden; }
.mux-loop { width:100%; height:100%; display:block; object-fit:cover; }
