.constellation-hud{position:fixed;bottom:2rem;right:2rem;width:124px;height:124px;border-radius:50%;border:1px solid rgba(255,255,255,.12);display:flex;justify-content:center;align-items:center;pointer-events:none;opacity:.9;backdrop-filter:blur(18px) saturate(115%);animation:constellation-spin 60s linear infinite;z-index:95}.constellation-hud:after{content:"";position:absolute;inset:10%;border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.12),transparent)}.constellation-hud[data-empty=true]{opacity:.6}.peer-core{width:14px;height:14px;border-radius:9999px;box-shadow:0 0 14px currentColor}.peer-core.pulsing{animation:phase-core-pulse .8s ease-out}.peer-dot{--orbit-transform:translate(-50%,-50%);position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:9999px;transform:var(--orbit-transform);box-shadow:0 0 8px currentColor;opacity:.75;transition:opacity .45s ease,transform .45s ease}.peer-dot.pulsing{animation:phase-dot-pulse .8s ease-out}.constellation-hud:hover .peer-dot{opacity:1}@keyframes constellation-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes phase-core-pulse{0%{transform:scale(1);box-shadow:0 0 12px currentColor}40%{transform:scale(1.35);box-shadow:0 0 20px currentColor}to{transform:scale(1);box-shadow:0 0 12px currentColor}}@keyframes phase-dot-pulse{0%{transform:var(--orbit-transform);box-shadow:0 0 8px currentColor}40%{transform:var(--orbit-transform) scale(1.25);box-shadow:0 0 16px currentColor}to{transform:var(--orbit-transform);box-shadow:0 0 8px currentColor}}.heartbeat-wrapper{position:fixed;bottom:.75rem;left:.75rem;z-index:90}.heartbeat{position:relative;border-radius:9999px;cursor:pointer}.heartbeat-ring,.heartbeat-ring.echo{position:absolute;top:50%;left:50%;width:16px;height:16px;border-radius:50%;transform:translate(-50%,-50%) scale(1);pointer-events:none;opacity:0;border:2px solid}.heartbeat-wrapper:hover .heartbeat-ring{animation:ring-breath 1.8s ease-out infinite;opacity:.7}.heartbeat-wrapper:hover .heartbeat-ring.echo{animation:ring-breath 1.8s ease-out infinite;animation-delay:.9s;opacity:.5}.pulse-on .heartbeat-ring{animation:ring-breath 1.8s ease-out;opacity:.6}.pulse-on .heartbeat-ring.echo{animation:ring-breath 1.8s ease-out;animation-delay:.9s;opacity:.4}.heartbeat-wave{position:absolute;left:24px;bottom:0;opacity:.65;filter:drop-shadow(0 0 4px currentColor);transition:opacity .45s ease}.heartbeat-wrapper:hover .heartbeat-wave{opacity:1}@keyframes ring-breath{0%{transform:translate(-50%,-50%) scale(1);opacity:.8}70%{transform:translate(-50%,-50%) scale(2.6);opacity:0}to{opacity:0}}