/* Interactive Northshore closing scene. */
.ns-signal-field {
  --signal-x:50%; --signal-y:50%;
  position:relative; isolation:isolate; min-height:max(620px,78svh); overflow:hidden;
  display:grid; place-items:center; padding:clamp(4.5rem,7vw,6.5rem) clamp(1.5rem,6vw,6rem);
  color:#f2eee6; background:#070706; border-top:1px solid rgba(189,142,73,.22);
}
.ns-signal-field::before { content:''; position:absolute; inset:0; z-index:-4; background:radial-gradient(circle 36rem at var(--signal-x) var(--signal-y),rgba(189,142,73,.13),transparent 68%),linear-gradient(135deg,#050505,#0b0a08 54%,#050505); }
.ns-signal-field::after { content:''; position:absolute; inset:0; z-index:-1; pointer-events:none; background:radial-gradient(circle 18rem at var(--signal-x) var(--signal-y),transparent 0,rgba(7,7,6,.18) 46%,rgba(7,7,6,.78) 100%); }

.ns-signal-field__network { position:absolute; inset:-8%; z-index:-3; opacity:.22; mask-image:radial-gradient(circle 340px at var(--signal-x) var(--signal-y),#000 5%,transparent 78%); -webkit-mask-image:radial-gradient(circle 340px at var(--signal-x) var(--signal-y),#000 5%,transparent 78%); }
.ns-signal-field__network svg { width:100%; height:100%; }
.ns-signal-field__network path { fill:none; stroke:#bd8e49; stroke-width:1.2; vector-effect:non-scaling-stroke; }
.ns-signal-field__network path:nth-child(2) { stroke-dasharray:6 16; }
.ns-signal-field__network path:nth-child(3) { opacity:.6; }
.ns-signal-field__network path:nth-child(4) { opacity:.32; }

.ns-signal-field__matrix { position:absolute; inset:8% 4%; z-index:-2; display:grid; grid-template-columns:repeat(9,1fr); grid-template-rows:repeat(5,1fr); align-items:center; }
.ns-signal-field__matrix span { grid-column:var(--col); grid-row:var(--row); white-space:nowrap; color:#d8a75e; font:500 clamp(.55rem,.72vw,.72rem)/1 'DM Mono',monospace; letter-spacing:.18em; opacity:calc(.05 + var(--energy,0) * .82); transform:translateZ(0) scale(calc(.88 + var(--energy,0) * .25)); transform-origin:center; text-shadow:0 0 calc(var(--energy,0) * 24px) rgba(215,165,90,.9); transition:opacity .16s linear,transform .16s linear; }
.ns-signal-field__cursor { position:absolute; z-index:0; left:var(--signal-x); top:var(--signal-y); width:22rem; aspect-ratio:1; border:1px solid rgba(215,165,90,.12); border-radius:50%; transform:translate(-50%,-50%) scale(.85); opacity:0; pointer-events:none; box-shadow:inset 0 0 6rem rgba(189,142,73,.06),0 0 4rem rgba(189,142,73,.05); transition:opacity .25s ease,transform .35s ease; }
.ns-signal-field[data-active='true'] .ns-signal-field__cursor { opacity:1; transform:translate(-50%,-50%) scale(1); }

.ns-signal-field__links { position:absolute; inset:0; z-index:3; pointer-events:none; }
.ns-signal-link { --energy:0; --firefly-rest-opacity:calc(.11 + var(--energy) * .89); --firefly-peak-opacity:.64; position:absolute; left:var(--link-x); top:var(--link-y); display:flex; align-items:center; gap:.65rem; padding:.65rem .15rem; color:#d8a75e; text-decoration:none; opacity:var(--firefly-rest-opacity); transform:translate(-50%,-50%) scale(calc(.88 + var(--energy) * .15)); transform-origin:center; pointer-events:auto; transition:opacity .16s linear,transform .18s ease,color .2s ease; }
.ns-signal-link::before { content:''; position:absolute; left:0; right:0; bottom:.35rem; height:1px; background:linear-gradient(90deg,#d8a75e,rgba(216,167,94,.08)); transform:scaleX(calc(.12 + var(--energy) * .88)); transform-origin:left; transition:transform .22s ease; }
.ns-signal-link span { position:relative; height:1.15em; overflow:hidden; color:inherit; font:500 clamp(.78rem,1.1vw,1rem)/1.15 'DM Mono',monospace; letter-spacing:.12em; text-transform:uppercase; }
.ns-signal-link span::after { content:attr(data-link-label); display:block; color:#f2eee6; transform:translateY(.2em); }
.ns-signal-link span,.ns-signal-link span::after { transition:transform .38s cubic-bezier(.65,.05,0,1); }
.ns-signal-link__icon { display:grid; place-items:center; width:1.65rem; height:1.65rem; border:1px solid currentColor; border-radius:50%; opacity:var(--energy); transform:rotate(calc(-45deg + var(--energy) * 45deg)); transition:opacity .2s ease,transform .3s ease,background .2s ease; }
.ns-signal-link__icon .ns-arrow-icon { width:.74rem; height:.74rem; vertical-align:0; }
.ns-signal-link.is-near,.ns-signal-link:hover,.ns-signal-link:focus-visible { --energy:1!important; color:#e2b46d; opacity:1; transform:translate(-50%,-50%) scale(1.05); outline:none; text-shadow:0 0 24px rgba(216,167,94,.32); }
.ns-signal-link.is-near span,.ns-signal-link:hover span,.ns-signal-link:focus-visible span { transform:translateY(-1.15em); }
.ns-signal-link.is-near .ns-signal-link__icon,.ns-signal-link:hover .ns-signal-link__icon,.ns-signal-link:focus-visible .ns-signal-link__icon { opacity:1; transform:rotate(0); background:#bd8e49; color:#090806; }
.ns-signal-link:focus-visible { box-shadow:0 0 0 2px #f2eee6; border-radius:2px; }
.ns-signal-link.is-firefly:not(.is-near):not(:hover):not(:focus-visible) { animation:ns-signal-firefly 3.2s ease-in-out both; }
.ns-signal-link.is-firefly:not(.is-near):not(:hover):not(:focus-visible)::before { animation:ns-signal-firefly-line 3.2s ease-in-out both; }

@keyframes ns-signal-firefly {
  0%,100% { opacity:var(--firefly-rest-opacity); color:#d8a75e; text-shadow:0 0 0 rgba(216,167,94,0); filter:drop-shadow(0 0 0 rgba(216,167,94,0)); }
  42%,58% { opacity:var(--firefly-peak-opacity); color:#e5b973; text-shadow:0 0 9px rgba(216,167,94,.38),0 0 20px rgba(216,167,94,.18); filter:drop-shadow(0 0 8px rgba(216,167,94,.24)); }
}
@keyframes ns-signal-firefly-line {
  0%,100% { box-shadow:0 0 0 rgba(216,167,94,0); filter:brightness(1); }
  42%,58% { box-shadow:0 0 11px rgba(216,167,94,.34); filter:brightness(1.24); }
}

.ns-signal-field__content { position:relative; z-index:1; width:min(1120px,100%); display:flex; flex-direction:column; align-items:center; text-align:center; }
.ns-signal-field__kicker,.ns-signal-field__hint { margin:0; color:#bd8e49; font:500 .7rem/1 'DM Mono',monospace; letter-spacing:.24em; }
.ns-signal-field h2 { margin:1.5rem 0 1.35rem; max-width:1050px; font:600 clamp(4.25rem,9.5vw,9.5rem)/.82 'Playfair Display',serif; letter-spacing:-.065em; }
.ns-signal-field h2 em { color:#bd8e49; font-weight:500; }
.ns-signal-field__lede { max-width:620px; margin:0; color:#aaa196; font:400 clamp(1rem,1.4vw,1.2rem)/1.65 'Manrope',sans-serif; }
.ns-signal-field__cta { position:relative; display:inline-flex; align-items:center; justify-content:center; gap:1.4rem; margin-top:2.25rem; padding:1.15rem 1.5rem 1.15rem 1.8rem; border:1px solid rgba(214,171,101,.68); border-radius:999px; color:#0a0907; background:#c99a51; cursor:pointer; font:600 .78rem/1 'DM Mono',monospace; letter-spacing:.08em; text-transform:uppercase; box-shadow:0 0 0 0 rgba(201,154,81,0),0 16px 55px rgba(0,0,0,.32); transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .28s ease,background .28s ease; will-change:transform; }
.ns-signal-field__cta .ns-arrow-icon { box-sizing:content-box; width:1rem; height:1rem; margin:-.55rem -.75rem -.55rem 0; padding:.5rem; border-radius:50%; background:#0c0b09; color:#e0b26d; vertical-align:0; }
.ns-signal-field__cta:hover { background:#ddb26f; box-shadow:0 0 0 8px rgba(201,154,81,.08),0 20px 70px rgba(189,142,73,.2); }
.ns-signal-field__cta:focus-visible { outline:2px solid #f2eee6; outline-offset:5px; }
.ns-signal-field__hint { margin-top:clamp(2rem,4vh,3.5rem); color:#8d8375; font-size:.6rem; }
.ns-signal-field-visible .rivet-fab { opacity:0!important; pointer-events:none!important; transform:translateY(12px) scale(.94)!important; }

/* Compact footer overrides only the homepage utility footer. */
.site-footer.ns-utility-footer { min-height:0; padding:1.6rem clamp(1.25rem,4vw,3.5rem) 1.35rem; background:#050505; border-top:1px solid rgba(189,142,73,.2); overflow:visible; }
.site-footer.ns-utility-footer::before { display:none; }
.ns-utility-footer__legal { width:min(1440px,100%); margin:0 auto; padding-right:12.5rem; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:clamp(1rem,4vw,4rem); box-sizing:border-box; color:#91897d; font:400 .62rem/1.4 'DM Mono',monospace; letter-spacing:.06em; text-transform:uppercase; }
.ns-utility-footer__legal span:first-of-type { text-align:center; }
.ns-utility-footer__brand { color:#f2eee6; font:600 1.12rem/1 'Playfair Display',serif; text-decoration:none; }
.ns-utility-footer__brand:hover { color:#d5a65f; }

@media (max-width:760px) {
  .ns-signal-field { min-height:0; display:flex; flex-direction:column; justify-content:flex-start; padding:4rem 1.25rem 2.75rem; }
  .ns-signal-field::before { background:radial-gradient(circle 24rem at 50% 34%,rgba(189,142,73,.15),transparent 72%),#070706; }
  .ns-signal-field::after { background:linear-gradient(180deg,rgba(7,7,6,.08),rgba(7,7,6,.7)); }
  .ns-signal-field__network { inset:0; opacity:.24; mask-image:linear-gradient(#000,transparent 92%); -webkit-mask-image:linear-gradient(#000,transparent 92%); }
  .ns-signal-field__matrix { inset:1.5rem .5rem; grid-template-columns:repeat(3,minmax(0,1fr)); grid-template-rows:repeat(5,1fr); gap:1rem .4rem; justify-items:center; opacity:.2; }
  .ns-signal-field__matrix span { grid-column:auto!important; grid-row:auto!important; max-width:100%; white-space:normal; text-align:center; font-size:.46rem; letter-spacing:.12em; }
  .ns-signal-field__cursor { display:none; }
  .ns-signal-field__content { order:1; }
  .ns-signal-field h2 { margin:1rem 0 1.2rem; font-size:clamp(3.25rem,14.5vw,4.4rem); line-height:.88; }
  .ns-signal-field__lede { max-width:21rem; font-size:.95rem; line-height:1.65; }
  .ns-signal-field__cta { width:100%; min-height:52px; margin-top:1.8rem; padding:.95rem 1rem .95rem 1.25rem; justify-content:space-between; }
  .ns-signal-field__hint { display:none; }
  .ns-signal-field__links { order:2; position:relative; inset:auto; width:100%; margin-top:2.25rem; padding-top:1.15rem; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.35rem .8rem; border-top:1px solid rgba(189,142,73,.22); pointer-events:auto; }
  .ns-signal-link,.ns-signal-link.is-near,.ns-signal-link:hover,.ns-signal-link:focus-visible { --firefly-rest-opacity:1; --firefly-peak-opacity:1; position:relative; left:auto; top:auto; min-height:52px; padding:.8rem .15rem; opacity:1; transform:none; justify-content:space-between; }
  .ns-signal-link--primary { grid-column:1; grid-row:var(--mobile-row); }
  .ns-signal-link--contact { grid-column:2; grid-row:var(--mobile-row); }
  .ns-signal-link--email { grid-column:1 / -1; grid-row:var(--mobile-row); justify-self:stretch; width:100%; max-width:12rem; margin:.3rem auto 0; }
  .ns-signal-link::before { bottom:.4rem; transform:scaleX(.25); }
  .ns-signal-link span { font-size:.7rem; }
  .ns-signal-link__icon { flex:0 0 1.8rem; width:1.8rem; height:1.8rem; opacity:.78; transform:none; }
  .site-footer.ns-utility-footer { padding:2rem 1.25rem 6rem; }
  .ns-utility-footer__legal { padding-right:0; grid-template-columns:1fr; justify-items:start; gap:.7rem; }
  .ns-utility-footer__legal span:first-of-type { text-align:left; }
}

@media (prefers-reduced-motion:reduce) {
  .ns-signal-link.is-firefly { animation:none; }
  .ns-signal-link.is-firefly::before { animation:none; }
  .ns-signal-field__matrix span { opacity:.24; transform:none; transition:none; }
  .ns-signal-field__network { mask-image:none; -webkit-mask-image:none; opacity:.16; }
  .ns-signal-field__cursor { display:none; }
  .ns-signal-field__cta { transform:none!important; transition:none; }
}
