/* The original hero image, shade and foreground retain their exact geometry. */
.hero-puzzle{position:absolute;inset:0;pointer-events:none;overflow:hidden;contain:layout paint;z-index:0}
.hero-puzzle-piece{position:absolute;overflow:hidden;pointer-events:none;will-change:transform,opacity}
.hero-puzzle-piece img{position:absolute;max-width:none;pointer-events:none}
.hero-copy-typing{position:relative;color:transparent!important}
.hero-copy-typing>em{color:transparent!important}
.hero-type-letters{position:absolute;inset:0;pointer-events:none}
.hero-type-letters>span{position:absolute;display:block;white-space:pre}
@media(prefers-reduced-motion:reduce){.hero-type-letters{display:none!important}.hero-copy-typing,.hero-copy-typing>em{color:#fff!important}}
.hero.is-puzzling>.hero-image{opacity:.12}
.hero>.hero-shade{z-index:1;pointer-events:none}
.hero>.hero-content,.hero>.hero-bottom,.hero>.hero-side{z-index:2}
@media(prefers-reduced-motion:reduce){.hero-puzzle{display:none}.hero.is-puzzling>.hero-image{opacity:1}}

.hero>.hero-image{transition:transform 900ms cubic-bezier(.22,.61,.36,1)}
@media(prefers-reduced-motion:reduce){.hero>.hero-image{transition:none;transform:none!important}}

/* A finite second shot: the assembled building catches a soft passing light. */
.hero-afterlight{position:absolute;inset:0;z-index:0;pointer-events:none;contain:layout paint;opacity:0;mask-image:linear-gradient(110deg,transparent 40%,#000 50%,transparent 60%);mask-size:300% 100%;mask-position:100% 0%;mask-repeat:no-repeat}
.hero-afterlight img{width:100%;height:100%;object-fit:cover;filter:brightness(1.48) saturate(.84);pointer-events:none}
.hero-type-glyph{position:relative}
.hero-type-caret{position:absolute;left:100%;top:.13em;width:1px;height:.84em;background:#dac6a6;pointer-events:none;opacity:0}
@media(max-width:640px){.hero-afterlight img{filter:brightness(1.35) saturate(.86)}}
@media(prefers-reduced-motion:reduce){.hero-afterlight,.hero-type-caret{display:none!important}.hero-type-glyph{opacity:1!important}}

/* Entrance is temporary and independent of the existing hero geometry. */
.hero-portal{position:fixed;inset:0;z-index:90;perspective:1400px;overflow:hidden;pointer-events:none}
.portal-door{position:absolute;top:0;bottom:0;width:50.1%;backface-visibility:hidden;will-change:transform;background:linear-gradient(90deg,#0a121f 0%,#152437 45%,#101b2d 82%,#1c2a3c 100%);box-shadow:0 0 70px #02071199}
.portal-left{left:0;transform-origin:left center;border-right:1px solid #c4ad8666}
.portal-right{right:0;transform-origin:right center;border-left:1px solid #c4ad8666;background:linear-gradient(90deg,#1c2a3c,#101b2d 18%,#152437 55%,#0a121f)}
.portal-door::before{content:'';position:absolute;inset:30px;border:1px solid #c4ad861d}
.portal-door::after{content:'';position:absolute;top:0;bottom:0;left:16%;right:16%;background:repeating-linear-gradient(90deg,transparent 0,transparent 89px,#c4ad8609 90px,transparent 91px);pointer-events:none}
.portal-door span{position:absolute;top:43%;height:14%;width:2px;background:linear-gradient(transparent,#c4ad8680,transparent)}
.portal-left span{right:32px}.portal-right span{left:32px}
.portal-sign{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);padding:25px 38px;background:radial-gradient(ellipse,#132033 40%,#13203300 72%)}
.portal-sign img{width:216px;height:auto;object-fit:contain}
.portal-seam{position:absolute;left:calc(50% - .5px);top:62%;height:18%;width:1px;background:linear-gradient(#c4ad8680,transparent);pointer-events:none}

@media(max-width:640px){.hero-portal{perspective:850px}.portal-sign img{width:165px}.portal-sign{padding:20px 28px}.portal-door::before{inset:18px}.portal-left span{right:18px}.portal-right span{left:18px}}
@media(prefers-reduced-motion:reduce){.hero-portal,}

.hero.portal-preparing>.hero-image{opacity:.12}
.hero.portal-preparing>.hero-content{opacity:0}

/* Details follow the headline without changing their layout or accessible text. */
.hero-copy-sequencing .hero-copy-line,.hero-copy-sequencing .hero-actions a{opacity:0}
.hero-copy-sequencing .hero-actions a:not(.hero-action-ready){pointer-events:none}
@media(prefers-reduced-motion:reduce){.hero-copy-sequencing .hero-copy-line,.hero-copy-sequencing .hero-actions a{opacity:1!important;transform:none!important;pointer-events:auto!important}}
