.friend-constellation:where(.astro-4ck2yqkv){--star-size: 56px;--center-size: 110px;--line-color: hsl(var(--primary) / .5)}.constellation-stage:where(.astro-4ck2yqkv){position:relative;aspect-ratio:16 / 11;width:100%}.constellation-stage:where(.astro-4ck2yqkv):before{content:"";position:absolute;inset:-4%;z-index:0;pointer-events:none;background-image:radial-gradient(1px 1px at 7% 12%,hsl(var(--foreground) / .4) 50%,transparent 51%),radial-gradient(1.5px 1.5px at 18% 32%,hsl(var(--foreground) / .22) 50%,transparent 51%),radial-gradient(1px 1px at 26% 78%,hsl(var(--foreground) / .32) 50%,transparent 51%),radial-gradient(1px 1px at 35% 14%,hsl(var(--foreground) / .18) 50%,transparent 51%),radial-gradient(1.5px 1.5px at 47% 88%,hsl(var(--foreground) / .28) 50%,transparent 51%),radial-gradient(1px 1px at 58% 7%,hsl(var(--foreground) / .2) 50%,transparent 51%),radial-gradient(1px 1px at 66% 94%,hsl(var(--foreground) / .18) 50%,transparent 51%),radial-gradient(1.5px 1.5px at 78% 22%,hsl(var(--foreground) / .32) 50%,transparent 51%),radial-gradient(1px 1px at 85% 64%,hsl(var(--foreground) / .22) 50%,transparent 51%),radial-gradient(1.5px 1.5px at 92% 38%,hsl(var(--foreground) / .32) 50%,transparent 51%),radial-gradient(1px 1px at 96% 84%,hsl(var(--foreground) / .18) 50%,transparent 51%),radial-gradient(1px 1px at 3% 52%,hsl(var(--foreground) / .22) 50%,transparent 51%);-webkit-mask-image:radial-gradient(ellipse at 50% 50%,#000 50%,transparent 95%);mask-image:radial-gradient(ellipse at 50% 50%,#000 50%,transparent 95%)}.friend-constellation:where(.astro-4ck2yqkv){margin-bottom:1rem}.constellation-coords:where(.astro-4ck2yqkv){margin:.6rem 0 0;text-align:right;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.7rem;letter-spacing:.1em;color:hsl(var(--muted-foreground) / .6)}.constellation-svg:where(.astro-4ck2yqkv){position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}.constellation-svg:where(.astro-4ck2yqkv) .line:where(.astro-4ck2yqkv){stroke:var(--line-color);stroke-width:.4;stroke-dasharray:1.2 1;stroke-linecap:round}.constellation-center:where(.astro-4ck2yqkv){position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:3;width:var(--center-size);height:var(--center-size);display:flex;flex-direction:column;align-items:center;justify-content:center}.constellation-center-ring:where(.astro-4ck2yqkv){position:absolute;inset:-10px;border-radius:9999px;background:radial-gradient(circle,hsl(var(--primary) / .35) 0%,transparent 70%);filter:blur(6px);z-index:-1}.constellation-center-avatar:where(.astro-4ck2yqkv){display:block;width:100%;height:100%;border-radius:9999px;overflow:hidden;border:2px solid hsl(var(--background));box-shadow:0 0 0 2px hsl(var(--primary) / .6),0 0 30px 6px hsl(var(--primary) / .25)}.constellation-center-label:where(.astro-4ck2yqkv){position:absolute;top:calc(100% + .5rem);left:50%;transform:translate(-50%);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.65rem;letter-spacing:.12em;color:hsl(var(--muted-foreground));white-space:nowrap}.constellation-star:where(.astro-4ck2yqkv){position:absolute;z-index:4;transform:translate(-50%,-50%);width:var(--star-size);height:var(--star-size);text-decoration:none;color:inherit;transition:transform .2s ease}.constellation-star:where(.astro-4ck2yqkv):hover,.constellation-star:where(.astro-4ck2yqkv):focus-visible,.constellation-star:where(.astro-4ck2yqkv).is-open{z-index:6;transform:translate(-50%,-50%) scale(1.12)}.constellation-star-avatar:where(.astro-4ck2yqkv){display:block;width:100%;height:100%;border-radius:9999px;overflow:hidden;border:2px solid hsl(var(--background));background:hsl(var(--muted));box-shadow:0 0 0 1px hsl(var(--border)),0 6px 20px hsl(var(--background) / .7);transition:box-shadow .2s ease}.constellation-star:where(.astro-4ck2yqkv):hover .constellation-star-avatar:where(.astro-4ck2yqkv),.constellation-star:where(.astro-4ck2yqkv):focus-visible .constellation-star-avatar:where(.astro-4ck2yqkv),.constellation-star:where(.astro-4ck2yqkv).is-open .constellation-star-avatar:where(.astro-4ck2yqkv){box-shadow:0 0 0 1px hsl(var(--primary) / .7),0 0 24px 4px hsl(var(--primary) / .4)}.constellation-star-name:where(.astro-4ck2yqkv){position:absolute;top:calc(100% + .35rem);left:50%;transform:translate(-50%);font-size:.72rem;color:hsl(var(--muted-foreground));white-space:nowrap;pointer-events:none;transition:color .16s ease,opacity .16s ease}.friend-constellation:where(.astro-4ck2yqkv).is-crowded .constellation-star-name:where(.astro-4ck2yqkv){opacity:0}.constellation-star-name:where(.astro-4ck2yqkv).has-label{font-style:italic;color:hsl(var(--primary) / .85)}.constellation-star:where(.astro-4ck2yqkv):hover .constellation-star-name:where(.astro-4ck2yqkv),.constellation-star:where(.astro-4ck2yqkv):focus-visible .constellation-star-name:where(.astro-4ck2yqkv),.constellation-star:where(.astro-4ck2yqkv).is-open .constellation-star-name:where(.astro-4ck2yqkv){opacity:1;color:hsl(var(--foreground))}.constellation-star-card:where(.astro-4ck2yqkv){position:absolute;top:calc(100% + 1.6rem);left:50%;transform:translate(-50%) translateY(-4px);z-index:10;width:240px;padding:.75rem .85rem;display:none;flex-direction:column;gap:.35rem;border-radius:.65rem;border:1px solid hsl(var(--border));background:hsl(var(--background));box-shadow:0 12px 30px hsl(var(--background) / .6),0 2px 6px hsl(var(--background) / .4);text-align:left;pointer-events:none;opacity:0;transition:opacity .16s ease,transform .16s ease}.constellation-star:where(.astro-4ck2yqkv):hover .constellation-star-card:where(.astro-4ck2yqkv),.constellation-star:where(.astro-4ck2yqkv):focus-visible .constellation-star-card:where(.astro-4ck2yqkv),.constellation-star:where(.astro-4ck2yqkv).is-open .constellation-star-card:where(.astro-4ck2yqkv){display:flex;opacity:1;transform:translate(-50%) translateY(0);pointer-events:auto}.constellation-star:where(.astro-4ck2yqkv)[data-pos-y=bottom] .constellation-star-card:where(.astro-4ck2yqkv){top:auto;bottom:calc(100% + 1.6rem)}.constellation-star:where(.astro-4ck2yqkv)[data-pos-x=right] .constellation-star-card:where(.astro-4ck2yqkv){left:auto;right:calc(100% + .6rem);top:50%;bottom:auto;transform:translateY(-50%) translate(-4px)}.constellation-star:where(.astro-4ck2yqkv)[data-pos-x=right]:hover .constellation-star-card:where(.astro-4ck2yqkv),.constellation-star:where(.astro-4ck2yqkv)[data-pos-x=right]:focus-visible .constellation-star-card:where(.astro-4ck2yqkv),.constellation-star:where(.astro-4ck2yqkv)[data-pos-x=right].is-open .constellation-star-card:where(.astro-4ck2yqkv){transform:translateY(-50%) translate(0)}.constellation-star:where(.astro-4ck2yqkv)[data-pos-x=left] .constellation-star-card:where(.astro-4ck2yqkv){right:auto;left:calc(100% + .6rem);top:50%;bottom:auto;transform:translateY(-50%) translate(4px)}.constellation-star:where(.astro-4ck2yqkv)[data-pos-x=left]:hover .constellation-star-card:where(.astro-4ck2yqkv),.constellation-star:where(.astro-4ck2yqkv)[data-pos-x=left]:focus-visible .constellation-star-card:where(.astro-4ck2yqkv),.constellation-star:where(.astro-4ck2yqkv)[data-pos-x=left].is-open .constellation-star-card:where(.astro-4ck2yqkv){transform:translateY(-50%) translate(0)}.constellation-star-card:where(.astro-4ck2yqkv) .card-name:where(.astro-4ck2yqkv){font-weight:600;color:hsl(var(--foreground))}.constellation-star-card:where(.astro-4ck2yqkv) .card-real-name:where(.astro-4ck2yqkv){font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.7rem;color:hsl(var(--muted-foreground));margin-top:-.1rem}.constellation-star-card:where(.astro-4ck2yqkv) .card-intro:where(.astro-4ck2yqkv){font-size:.85rem;color:hsl(var(--muted-foreground))}.constellation-star-card:where(.astro-4ck2yqkv) .card-meta:where(.astro-4ck2yqkv){display:inline-flex;align-items:center;gap:.4rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.7rem;color:hsl(var(--muted-foreground))}.constellation-star-card:where(.astro-4ck2yqkv) .card-meta:where(.astro-4ck2yqkv) .dot:where(.astro-4ck2yqkv){opacity:.5}.constellation-star-card:where(.astro-4ck2yqkv) .card-note:where(.astro-4ck2yqkv){font-style:italic;font-size:.85rem;color:hsl(var(--foreground) / .85);border-left:2px solid hsl(var(--border));padding-left:.6rem}.constellation-star-card:where(.astro-4ck2yqkv) .card-link:where(.astro-4ck2yqkv){margin-top:.15rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.7rem;color:hsl(var(--primary))}@media (max-width: 640px){.friend-constellation:where(.astro-4ck2yqkv){--star-size: 44px;--center-size: 80px}.constellation-stage:where(.astro-4ck2yqkv){aspect-ratio:4 / 5}.constellation-meta:where(.astro-4ck2yqkv){top:.6rem;left:.7rem;font-size:.6rem}.constellation-star-card:where(.astro-4ck2yqkv){width:200px;font-size:.85rem}.constellation-star-name:where(.astro-4ck2yqkv){font-size:.65rem}}
