@charset "UTF-8";
/* Device-specific photography and restrained motion. Copy remains in HTML. */
.p-hero {
  --hero-image: url('../img/design/hero-scene-clean.jpg');
  background: #040b0d;
  overflow: clip;
  isolation: isolate;
}
.p-hero::before {display:none}
.p-hero__backdrop {
  position:absolute;
  inset:0;
  background-image:var(--hero-image);
  background-position:center;
  background-repeat:no-repeat;
  background-size:cover;
  pointer-events:none;
  transform:translate3d(0,var(--parallax-y,0px),0);
}
.p-hero__inner {position:relative;z-index:1}
.p-hero__disclaimer {z-index:1}
@media(min-width:1600px){.p-hero__backdrop {background-position:center 45%}}

/* Tablet: entire still life above the text, including landscape tablet widths. */
@media(min-width:601px) and (max-width:1100px){
  .p-hero {--hero-image:url('../img/design/hero-tablet-clean.jpg');min-height:0}
  .p-hero__backdrop {
    background-size:100% auto;background-position:center top;
    -webkit-mask-image:linear-gradient(#000 0 63vw,transparent 75vw);
    mask-image:linear-gradient(#000 0 63vw,transparent 75vw);
  }
  .p-hero__inner {
    min-height:100svh;
    padding-top:calc(68vw + 20px);
    padding-bottom:70px;
    justify-content:center;
    align-items:flex-start;
  }
  .p-hero__copy {width:100%;max-width:720px;text-align:center}
  .p-hero .c-eyebrow {justify-content:center;font-size:12px;margin-bottom:20px}
  .p-hero .c-title {font-size:clamp(28px,3.6vw,38px);line-height:1.65;letter-spacing:.06em}
  .p-hero__lead {font-size:15px;margin:22px auto 0;max-width:none}
  .p-hero .c-btnrow {justify-content:center;margin-top:44px;gap:18px}
  .p-hero__disclaimer {right:0;width:100%;max-width:none;text-align:center;bottom:20px}
}

/* Landscape tablets use the same complete still life beside the copy. */
@media(min-width:901px) and (max-width:1100px) and (orientation:landscape){
  .p-hero__backdrop {
    background-image:linear-gradient(90deg,#040b0d,transparent 16%,transparent 92%,#040b0d),linear-gradient(0deg,#040b0d,transparent 16%,transparent 84%,#040b0d),var(--hero-image);
    background-size:70% 52.5vw;background-position:right center;
    -webkit-mask-image:none;mask-image:none;
  }
  .p-hero__inner {min-height:max(650px,100svh);padding-top:130px;padding-bottom:90px;justify-content:flex-start;align-items:center}
  .p-hero__copy {width:48%;text-align:left}
  .p-hero .c-eyebrow {justify-content:flex-start;font-size:10px}
  .p-hero .c-title {font-size:30px;line-height:1.8;letter-spacing:.025em}
  .p-hero__lead {font-size:13px;margin-left:0;max-width:29em}
  .p-hero .c-btnrow {justify-content:flex-start;gap:14px}
  .p-hero .c-btn {min-height:50px;font-size:12px;padding-inline:20px}
}

/* Mobile: the portrait asset keeps all three products in its safe area. */
@media(max-width:600px){
  .p-hero {--hero-image:url('../img/design/hero-mobile-clean.jpg');min-height:0}
  .p-hero__backdrop {
    background-size:100% auto;background-position:center top;
    -webkit-mask-image:linear-gradient(#000 0 100vw,transparent 125vw);
    mask-image:linear-gradient(#000 0 100vw,transparent 125vw);
  }
  .p-hero__inner {
    min-height:100svh;
    padding-top:calc(93vw + 20px);
    padding-bottom:58px;
    align-items:flex-start;
  }
  .p-hero__copy {width:100%;max-width:none}
  .p-hero .c-title {font-size:clamp(24px,6.35vw,34px);line-height:1.75;letter-spacing:.025em}
  .p-hero .c-eyebrow {font-size:10px;margin-bottom:17px}
  .p-hero__lead {font-size:13px;margin-top:18px}
  .p-hero .c-btnrow {display:grid;grid-template-columns:1fr;margin-top:42px;gap:12px}
  .p-hero .c-btn {width:100%;min-height:54px}
  .p-hero__disclaimer {bottom:15px;font-size:9px}
}

/* JS opts only below-the-fold elements into a one-time reveal. */
[data-reveal].is-reveal-ready {
  opacity:0;
  transform:translate3d(0,22px,0);
  transition:opacity .8s cubic-bezier(.2,.65,.3,1),transform .8s cubic-bezier(.2,.65,.3,1);
}
[data-reveal].is-reveal-ready.is-visible,
[data-reveal].is-reveal-ready:focus-within {
  opacity:1;
  transform:none;
}
.is-reveal-ready.c-grid>.c-card {transition-delay:0s}
.is-reveal-ready.c-grid:not(.is-visible)>.c-card {opacity:0;transform:translateY(12px)}
.is-reveal-ready.c-grid.is-visible>.c-card {opacity:1;transform:none;transition:opacity .65s ease,transform .65s ease;transition-delay:var(--reveal-delay,0ms)}
.is-reveal-ready.c-grid:focus-within>.c-card {opacity:1;transform:none}

/* Photo movement uses transforms on a clipped background layer. */
.has-photo-parallax {position:relative;overflow:hidden;isolation:isolate;background-image:none}
.p-photo-motion {
  position:absolute;
  inset:-28px 0;
  background-image:var(--photo-image);
  background-position:center;
  background-size:cover;
  pointer-events:none;
  transform:translate3d(0,var(--parallax-y,0px),0);
}
.p-hero__backdrop.is-parallax-active,.p-photo-motion.is-parallax-active {will-change:transform}
.p-hero.is-intro-ready .p-hero__copy>* {animation:hero-copy-in .85s cubic-bezier(.2,.65,.3,1) both}
.p-hero.is-intro-ready .p-hero__copy>*:nth-child(2) {animation-delay:90ms}
.p-hero.is-intro-ready .p-hero__copy>*:nth-child(3) {animation-delay:180ms}
.p-hero.is-intro-ready .p-hero__copy>*:nth-child(4) {animation-delay:270ms}
@keyframes hero-copy-in {from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@media(hover:hover) and (pointer:fine){
  .p-service__link {transition:background-color .25s,color .25s}
  .p-service__card:hover .p-service__link {background:var(--brand);color:white}
  .c-btn>span[aria-hidden="true"] {transition:transform .25s}
  .c-btn:hover>span[aria-hidden="true"] {transform:translateX(4px)}
}
@media(prefers-reduced-motion:reduce){
  .p-hero__backdrop,.p-photo-motion {transform:none!important;will-change:auto!important}
  [data-reveal].is-reveal-ready,
  .is-reveal-ready.c-grid:not(.is-visible)>.c-card {opacity:1!important;transform:none!important}
  .p-hero.is-intro-ready .p-hero__copy>* {animation:none!important}
}
