/* Non-interactive scene layers. Clip the decoration, never the text container. */
#approach,#fit{position:relative}
.decor-stage{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;contain:paint}
.decor-object{position:absolute;width:var(--decor-width);height:var(--decor-height);left:var(--decor-left);top:var(--decor-top);pointer-events:none}
.decor-enter{position:absolute;inset:0;opacity:1;transform:none}
.decor-parallax{position:absolute;inset:0;transform:translate3d(var(--decor-x,0px),var(--decor-y,0px),0) rotateX(var(--decor-rx,0deg)) rotateY(var(--decor-ry,0deg));transform-style:flat}
.decor-object img,.decor-shell-material{display:block;width:100%;height:100%;user-select:none;pointer-events:none}
.decor-object[hidden]{display:none}
.decor-sphere img{object-fit:contain}
.decor-horizon{mask-image:linear-gradient(90deg,transparent,#000 14%,#000 80%,transparent),linear-gradient(0deg,transparent,#000 16%);mask-composite:intersect}
.decor-horizon img{opacity:.75}
.decor-shell{position:absolute;inset:0}
.decor-shell-optics{position:absolute;inset:0;background:#0a0b0c05;backdrop-filter:blur(.6px);-webkit-backdrop-filter:blur(.6px)}
.decor-shell--rear :is(.decor-shell-optics,.decor-shell-reflection){clip-path:url('#decor-clip-rear')}
.decor-shell--front :is(.decor-shell-optics,.decor-shell-reflection){clip-path:url('#decor-clip-front')}
.decor-shell-material{position:absolute;inset:0}
.decor-shell--rear .decor-shell-material{opacity:.8}
.decor-shell-optics.is-refractive{backdrop-filter:var(--decor-lens) blur(.6px);-webkit-backdrop-filter:var(--decor-lens) blur(.6px)}
.decor-glass .decor-enter{perspective:1000px}
.decor-shell-reflection{position:absolute;inset:0;width:100%;height:100%;transform:translate(var(--reflection-x,0px),var(--reflection-y,0px));opacity:.35}
.decor-mask-defs{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.decor-stage--glass{z-index:0}
/* Entrance and pointer transforms use different wrappers. */
.decor-motion-ready .decor-enter{opacity:0;transform:translateY(18px) scale(.98)}
.decor-motion-ready .decor-object.is-visible>.decor-enter{opacity:1;transform:none;transition:opacity 900ms cubic-bezier(.16,1,.3,1),transform 900ms cubic-bezier(.16,1,.3,1)}
.decor-motion-ready .decor-glass:not(.is-visible) .decor-shell--front{opacity:0;transform:translateY(10px)}
.decor-motion-ready .decor-glass.is-visible .decor-shell--front{opacity:1;transform:none;transition:opacity 900ms 120ms cubic-bezier(.16,1,.3,1),transform 900ms 120ms cubic-bezier(.16,1,.3,1)}
@media(max-width:1100px){.decor-stage--sphere,.decor-stage--horizon{display:none}}
@media(max-width:560px){.decor-glass .decor-shell--rear{display:none}.decor-glass.is-visible .decor-shell--front{transition-delay:0ms}}
@media(prefers-reduced-motion:reduce){
 .decor-motion-ready .decor-enter,.decor-motion-ready .decor-glass .decor-shell--front{opacity:1;transform:none;transition:none}
 .decor-parallax,.decor-shell-reflection{transform:none}
}
@media(forced-colors:active){.decor-stage{display:none}}
/* Safe static positions also work before JS, or when scripts are unavailable. */
.decor-sphere{--decor-width:440px;--decor-height:440px;--decor-left:-53px;--decor-top:calc(100% - 202px)}
.decor-horizon{--decor-width:min(420px,calc(100% - 714px));--decor-height:180px;--decor-left:auto;--decor-top:112px;right:0}
.decor-glass{--decor-width:min(620px,44vw);--decor-height:calc(var(--decor-width) * .79032258);--decor-left:auto;--decor-top:40px;right:-50px}
@media(min-width:561px) and (max-width:1100px){.decor-glass{--decor-width:300px;--decor-height:237px;--decor-top:80px;right:-60px}}
@media(max-width:560px){.decor-glass{--decor-width:240px;--decor-height:190px;--decor-left:calc(100% - 80px);--decor-top:calc(100% - 90px);right:auto}}
@media(max-width:350px){.decor-stage--glass{display:none}}

/* Let the large arc crop at the viewport edge, not at the text gutter. */
.decor-stage--sphere{left:calc((100vw - 100%) / -2)}
