:root{--bg-1:#081218;--bg-2:#132436;--bg-3:#1f3b4f;--ink:#e7f0f8}*{box-sizing:border-box}body,html{margin:0;width:100%;min-height:100%;height:100dvh;font-family:Trebuchet MS,Gill Sans,Gill Sans MT,sans-serif;color:var(--ink);background:#fff;overflow:hidden}.desktop-shell{width:100%;height:100dvh;padding:0}.stage{position:relative;width:100%;height:100%;background:#fff;overflow:hidden}.stage:after{content:"";position:absolute;inset:0;z-index:5;background:#000;pointer-events:none;opacity:1;transition:opacity .9s ease-out,visibility 0s linear .9s}.stage.is-loaded:after{opacity:0;visibility:hidden}.p5-bg{position:absolute;inset:0;z-index:0;pointer-events:none;background:#fff;overflow:hidden}.p5-bg canvas{display:block;width:100%!important;height:100%!important}.p5-bg:before{content:"";position:absolute;inset:-20%;background:radial-gradient(40% 38% at 20% 30%,rgba(0,194,255,.2),transparent 70%),radial-gradient(42% 40% at 78% 62%,rgba(255,45,85,.16),transparent 72%),radial-gradient(36% 36% at 52% 18%,rgba(0,224,138,.14),transparent 68%);filter:blur(18px);animation:bg-drift 16s ease-in-out infinite alternate;will-change:transform}@keyframes bg-drift{0%{transform:translate3d(-3%,-2%,0) scale(1.03)}to{transform:translate3d(3%,2%,0) scale(1.08)}}.cluster-canvas{position:absolute;inset:0;z-index:2}.cluster-links{position:absolute;inset:0;pointer-events:none;z-index:0}.node-square{position:absolute;border:1px solid #000;border-radius:0;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;z-index:1;transition:left .22s ease,top .22s ease,width .22s ease,height .22s ease,box-shadow .12s ease,filter .14s ease;will-change:left,top,width,height,box-shadow,filter}.node-square:hover{filter:brightness(1.14)}.node-square.is-selected{box-shadow:none}.node-square-label{width:calc(100% - 8px);padding:2px 4px;font-size:9px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.5)}nextjs-portal{display:none!important}