/* A five-part luminous signature, kept behind the content. */
.choir-ribbons{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:0;fill:none;opacity:var(--ribbon-glow,.55);mask-image:linear-gradient(90deg,transparent,#000 12%,#000 89%,transparent);contain:layout style}
.ribbon-halo{stroke:currentColor;stroke-width:48;opacity:.22;filter:blur(12px)}
.ribbon-body{stroke:none;opacity:.64;filter:blur(4px)}
.ribbon-core{stroke:currentColor;stroke-width:9;opacity:.12;filter:blur(3px)}
.ribbon-thread{stroke:currentColor;stroke-width:1;opacity:.07;filter:blur(.6px)}
.hero-art{z-index:1}.scroll-cue{z-index:2}
body{position:relative;isolation:isolate}
.glass-caustic-layer{position:absolute;inset:0;overflow:clip;pointer-events:none;z-index:-1}
.glass-caustics{position:absolute;top:0;left:0;width:100%;pointer-events:none;will-change:transform}
/* Dampen the finished light layer on touch devices, including its overlapping strokes. */
@media(hover:none) and (pointer:coarse){.glass-caustics{opacity:.3;filter:blur(1px)}}
[data-glass-word]{position:relative;display:inline-block;isolation:isolate}
.word-bevel{position:absolute;inset:0;pointer-events:none;user-select:none;color:transparent;-webkit-text-stroke:.65px #dfeeff3d;background:linear-gradient(112deg,transparent 24%,#baf4ff15 39%,#e6faffae 48%,#fff 50%,#f3dbff96 52%,transparent 62%);background-size:240% 100%;background-position:calc(50% + var(--word-light,0%)) 0;-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 1px 0 #04091aa8);mix-blend-mode:screen}
.motion-paused .glass-caustic-layer{display:none}
.motion-paused .word-bevel{background:none}
/* Each photo keeps its natural proportions while its clipped window expands. */
html{scrollbar-gutter:stable}
.lightbox-flight{position:fixed;pointer-events:none;z-index:5;overflow:hidden;transform-origin:50% 50%;box-shadow:0 24px 90px #0007;will-change:transform,width,height;isolation:isolate}
.lightbox-flight>img{position:absolute;max-width:none!important;max-height:none!important;border-radius:0!important;object-fit:fill;transform-origin:0 0}
.lightbox-flight:after{content:"";position:absolute;inset:0;border:1px solid #e6f6ff60;border-radius:inherit;box-shadow:inset 0 0 20px #d3eaff18;pointer-events:none}
.lightbox.is-travelling .lightbox-image{visibility:hidden}
.lightbox.is-travelling .lightbox-caption{opacity:0}
.lightbox.is-travelling .lightbox-toolbar,.lightbox.is-travelling .lightbox-stage>.icon-button{opacity:var(--viewer-controls,1)}
.lightbox{--veil:1;background:rgba(9,13,25,calc(.91 * var(--veil)));backdrop-filter:blur(calc(25px * var(--veil)))}
.lightbox::backdrop{background:rgba(3,5,11,calc(.85 * var(--veil)))}
/* Scope explicit input tracking to the viewer: Safari also matches focus-visible after taps. */
.lightbox .icon-button:focus{outline:none}
.lightbox.keyboard-focus .icon-button:focus{outline:2px solid #b9bfd2;outline-offset:3px}
/* The photograph zooms within a fixed crop; it never expands over the glass rim. */
.gallery-photo{display:block;position:relative;width:100%;height:100%;overflow:hidden;border-radius:20px;isolation:isolate;background:#080c18}
.gallery-photo>img{border-radius:0}
.gallery-item>.optical-reflection{inset:8px;border-radius:20px}
@media(max-width:800px){.gallery-photo,.gallery-item>.optical-reflection{border-radius:17px}.gallery-item>.optical-reflection{inset:7px}}
@media(max-width:800px){.hero{overflow:clip}.choir-ribbons{inset:auto -70px 115px;width:calc(100% + 140px);height:calc(100vw + 150px);max-height:690px;opacity:calc(var(--ribbon-glow,.64)*.82);mask-image:linear-gradient(180deg,transparent,#000 10%,#000 88%,transparent)}.ribbon-halo{stroke-width:44;filter:blur(11px)}.ribbon-core{stroke-width:7;filter:blur(2.5px)}}
@media(prefers-reduced-motion:reduce){.glass-caustic-layer{display:none}.word-bevel{background:none}.lightbox-flight{display:none}}
@media print{.choir-ribbons,.glass-caustic-layer,.word-bevel,.lightbox-flight{display:none}}
