/* Photographs move on their own timeline. Scrolling never changes their position. */
.hero-slideshow{overflow:hidden}
.hero-slide{position:absolute;inset:0;opacity:0;overflow:hidden}
.hero-slide:first-child{opacity:1}
.hero-slide img{width:100%;height:100%;object-fit:cover;object-position:50% 44%;transform-origin:50% 44%;max-width:none}
.hero-slide:first-child img{object-position:65% 44%;transform-origin:65% 44%}
.hero-slide:nth-child(3) img{object-position:60% 45%;transform-origin:60% 45%}
.opening-ready .hero-slide{animation:opening-fade 24s linear infinite;will-change:opacity}
.opening-ready .hero-slide img{animation:opening-zoom-in 24s linear infinite;will-change:transform}
.opening-ready .hero-slide:nth-child(2),.opening-ready .hero-slide:nth-child(2) img{animation-delay:-16s}
.opening-ready .hero-slide:nth-child(2) img{animation-name:opening-zoom-out}
.opening-ready .hero-slide:nth-child(3),.opening-ready .hero-slide:nth-child(3) img{animation-delay:-8s}
@keyframes opening-fade{0%,28%{opacity:1}33.333%,94.667%{opacity:0}100%{opacity:1}}
@keyframes opening-zoom-in{0%{transform:scale(1.025)}33.333%{transform:scale(1.14)}33.334%,100%{transform:scale(1.025)}}
@keyframes opening-zoom-out{0%{transform:scale(1.14)}33.333%{transform:scale(1.025)}33.334%,100%{transform:scale(1.14)}}
.hero-sequence{position:absolute;top:30px;left:max(40px,calc((100% - 1320px)/2));display:flex;gap:10px}
.hero-sequence span{width:46px;height:2px;background:#ffffff45;overflow:hidden}
.hero-sequence span::after{content:'';display:block;width:100%;height:100%;background:var(--gold);transform:scaleX(0);transform-origin:left}
.opening-ready .hero-sequence span::after{animation:opening-progress 24s linear infinite}
.opening-ready .hero-sequence span:nth-child(2)::after{animation-delay:-16s}
.opening-ready .hero-sequence span:nth-child(3)::after{animation-delay:-8s}
@keyframes opening-progress{0%{transform:scaleX(0);opacity:1}32%{transform:scaleX(1);opacity:1}33.333%,100%{transform:scaleX(1);opacity:0}}
.opening-paused .hero-slide,.opening-paused .hero-slide img,.opening-paused .hero-sequence span::after{animation-play-state:paused}
.hero-control:focus-visible,.starlink-control:focus-visible{outline:2px solid var(--gold);outline-offset:5px}

/* A dedicated, uncropped moving rooftop scene and a separate service link. */
.story-starlink{display:block;margin:0;overflow:hidden;background:var(--bg)}
.starlink-cinema{position:relative;aspect-ratio:16/9;overflow:hidden;background:var(--bg)}
.starlink-cinema video{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.starlink-control{right:24px;bottom:24px;background:#151717b8}
.story-starlink .story-caption{position:relative;inset:auto;display:grid;grid-template-columns:32px minmax(0,1fr) 58px;gap:20px;align-items:center;margin:0;padding:30px 40px;background:var(--bg);text-decoration:none}
.story-starlink .story-caption::before{display:none}
.story-starlink .story-caption h3{font-size:clamp(1.8rem,3.1vw,3rem);max-width:none}
.story-starlink .story-caption p{max-width:none}
.story-starlink .story-caption:hover .round-arrow,.story-starlink .story-caption:focus-visible .round-arrow{background:var(--gold);color:var(--ink);border-color:var(--gold);transform:rotate(45deg)}

/* Longer, gently reversing zooms have no per-scroll position changes. */
.portrait-window{overflow:hidden}
.portrait-window img{display:block}
.story-photo img,.gallery-media img,.portrait-window img,.service-cover img{animation:photo-breathe 15s ease-in-out infinite alternate;animation-play-state:paused;transition:none;transform-origin:center}
.story-appliance .story-photo img,.gallery-grid figure:nth-child(even) img{animation-direction:alternate-reverse}
.motion-visible.story-photo img,.motion-visible.gallery-media img,.motion-visible.portrait-window img,.motion-visible.service-cover img{animation-play-state:running}
@keyframes photo-breathe{from{transform:scale(1.015)}to{transform:scale(1.09)}}
.story-photo::after{pointer-events:none}

/* Gold rules reveal the rhythm between chapters without shifting the layout. */
.section-rule{height:1px;position:relative;margin:0 0 46px;background:#73592330}
.section-rule::before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,var(--gold-dark),var(--gold));transform-origin:left;transition:transform 1.5s var(--ease)}
.section-rule span{position:absolute;right:0;top:-3px;width:7px;height:7px;background:var(--gold-dark);transform:rotate(45deg)}
.gary-story,.home-close{position:relative}
.gary-story::before,.home-close::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--gold) 28%,var(--gold) 72%,transparent);transform-origin:center;transition:transform 1.7s var(--ease)}
.lines-ready:not(.line-visible)::before{transform:scaleX(0)}
.home-process>.wrap{border-top-color:#dabb7e70}
.process-list article{border-top-color:#dabb7e45}
.process-list article::after{height:2px}
.process-list article.step-seen>span{box-shadow:0 0 0 5px #dabb7e10}
.story-caption .round-arrow{transition:transform .55s var(--ease),background .35s,color .35s,box-shadow .35s}
.service-story:hover .round-arrow,.service-story.interactive-pressed .round-arrow{box-shadow:0 0 0 6px #dabb7e18}
.button{transition:transform .45s var(--ease),background .3s,box-shadow .4s}
.button>span[aria-hidden]{transition:transform .5s var(--ease),background .35s}
.action-ready::after{animation:gold-sweep 1.1s var(--ease) .25s}
@keyframes gold-sweep{from{transform:translateX(-110%)}to{transform:translateX(110%)}}
.button:focus-visible{outline:2px solid var(--gold-dark);outline-offset:5px}
.text-link{position:relative}
.text-link::after{content:'';position:absolute;bottom:2px;left:0;right:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ease)}
.text-link:hover::after,.text-link:focus-visible::after{transform:scaleX(1)}

/* Every page ends with the same gold information dividers. */
.site-footer{position:relative;border-top:1px solid #dabb7e65}
.site-footer::before{content:'';position:absolute;top:-1px;left:0;right:0;height:2px;background:var(--gold);transform-origin:left;transition:transform 1.6s var(--ease)}
.footer-top{border-bottom-color:#dabb7e65}
.footer-columns{gap:50px;padding-top:34px;padding-bottom:34px}
.footer-columns>div{position:relative;padding-top:22px}
.footer-columns>div::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,var(--gold),#dabb7e50);transform-origin:left;transition:transform 1.1s var(--ease) .15s}
.footer-columns>div:nth-child(2)::before{transition-delay:.3s}
.footer-columns>div:nth-child(3)::before{transition-delay:.45s}
.site-footer.lines-ready:not(.line-visible) .footer-columns>div::before{transform:scaleX(0)}
.footer-base{border-top-color:#dabb7e65}
.footer-columns a{transition:color .25s,text-decoration-color .25s}
.footer-columns a:hover,.footer-columns a:focus-visible{color:var(--gold-light)}

@media(max-width:760px){
  .hero-slide:first-child img{object-position:79% 44%;transform-origin:79% 44%}
  .hero-slide:nth-child(3) img{object-position:65% 45%;transform-origin:65% 45%}
  .hero-sequence{top:22px;left:20px;gap:8px}.hero-sequence span{width:32px}
  .section-rule{margin-bottom:32px}
  .story-starlink{margin-inline:-20px}
  .story-starlink .story-caption{grid-template-columns:minmax(0,1fr) 44px;padding:25px 20px;gap:16px}
  .story-starlink .story-caption h3{font-size:1.6rem}
  .starlink-control{right:14px;bottom:14px;width:44px;height:44px}
  .footer-columns{gap:28px 24px;padding-top:28px;padding-bottom:28px}
  .footer-columns>div{padding-top:20px}
}
@media(max-width:360px){.hero-sequence{left:16px}.story-starlink{margin-inline:-16px}.story-starlink .story-caption{padding-inline:16px}.story-starlink .story-caption h3{font-size:1.4rem}}
@media(prefers-reduced-motion:reduce){
  .hero-slide,.hero-slide img,.hero-sequence span::after,.story-photo img,.gallery-media img,.portrait-window img,.service-cover img{animation:none!important;transform:none!important}
  .hero-slide{opacity:0!important}.hero-slide:first-child{opacity:1!important}
  .hero-sequence,.hero-control{display:none}
  .lines-ready::before,.site-footer.lines-ready .footer-columns>div::before{transform:none!important}
}
