/* Scroll-controlled materialization; the complete site is the no-JS fallback. */
.signal-assembly.is-active{height:340svh;position:relative}
.signal-assembly.is-active>.hero{position:sticky;top:0;height:100svh;min-height:0;perspective:1100px}
.signal-assembly.is-active>.hero:before,.signal-assembly.is-active>.hero:after{opacity:var(--world,0)}
.materialize-veil{position:absolute;inset:0;background:#000;z-index:1;pointer-events:none;opacity:calc(1 - var(--world,0))}
.materialize-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none}
.signal-assembly.is-active .hero-title{z-index:4}
.signal-assembly.is-active .hero-title__mark{opacity:var(--logo,0)}
.signal-assembly.is-active .hero-title:before,.signal-assembly.is-active .hero-title:after{opacity:var(--logo,0)}
.signal-assembly.is-active .signal-field{opacity:var(--rings,0);translate:0 0;scale:calc(.65 + var(--rings,0)*.35)}
.signal-assembly.is-active .hero-presenter,.signal-assembly.is-active .concept-stamp{opacity:var(--labels,0);translate:0 calc((1 - var(--labels,0))*-35px)}
.signal-assembly.is-active .hero-intro{opacity:var(--copy,0);translate:0 calc((1 - var(--copy,0))*65px)}
.signal-assembly.is-active .hero-meta{opacity:var(--details,0);translate:calc((1 - var(--details,0))*60px) 0}
.signal-assembly.is-active .scroll-cue{z-index:6;color:#a6aaa6;line-height:1.8}
body.materialize-active .site-header .wordmark,body.materialize-active .site-nav,body.materialize-active .header-link{opacity:var(--header-reveal,0)}
body.materialize-active .site-header{background:transparent;backdrop-filter:none;border-color:transparent}
.signal-assembly:not(.is-active) .materialize-canvas,.signal-assembly:not(.is-active) .materialize-veil{display:none}
@media(prefers-reduced-motion:reduce){.signal-assembly.is-active{height:auto}.signal-assembly.is-active>.hero{position:relative;height:auto;min-height:800px}.materialize-canvas,.materialize-veil{display:none!important}}

/* Centered invitation: a continuous scroll-controlled dispersion, never a timer. */
.signal-assembly.is-active .scroll-cue{left:50%;right:auto;top:50%;bottom:auto;width:max-content;max-width:90%;display:flex;flex-direction:column;gap:28px;text-align:center;font-size:clamp(25px,4.2vw,64px);font-weight:500;line-height:1.35;letter-spacing:calc(.08em + var(--cue-exit,0)*.13em);color:#f0f1df;opacity:calc(1 - var(--cue-exit,0));transform:translate(-50%,-50%) translateY(calc(var(--cue-exit,0)*-22px)) scale(calc(1 + var(--cue-exit,0)*.09));filter:blur(calc(var(--cue-exit,0)*12px));text-shadow:calc(var(--cue-exit,0)*8px) 0 rgba(115,255,232,.35),calc(var(--cue-exit,0)*-8px) 0 rgba(245,197,67,.25);will-change:transform,opacity,filter}
.signal-assembly.is-active .scroll-cue i{height:52px;width:1px;background:linear-gradient(#f5c543,transparent);flex:none}
.entry-skip{position:absolute;z-index:7;left:var(--pad);bottom:28px;color:#a6aaa6;font:700 10px/1.6 var(--mono);letter-spacing:.10em;text-transform:uppercase}
.signal-assembly:not(.is-active) .entry-skip{display:none}
@media(max-width:500px){.signal-assembly.is-active .scroll-cue{font-size:clamp(23px,6.5vw,32px);letter-spacing:calc(.06em + var(--cue-exit,0)*.08em)}}
