body.s3d{overflow:hidden;height:100vh;height:100dvh}
.s3d .top{position:fixed;left:0;right:0;top:0}
.s3d .link{color:var(--paper);text-decoration:none;font-weight:600}
#stage{position:fixed;inset:0;touch-action:none}
#stage canvas{display:block}
.legend{position:fixed;left:12px;bottom:12px;background:rgba(18,26,39,.88);border:1px solid var(--line);border-radius:10px;
padding:8px 10px;font-size:12px;display:flex;flex-wrap:wrap;gap:6px 10px;max-width:calc(100vw - 24px)}
.legend span{display:inline-flex;align-items:center;gap:5px}
.legend i{width:10px;height:10px;border-radius:50%;display:inline-block}
.detail{position:fixed;right:12px;top:64px;width:min(340px,calc(100vw - 24px));max-height:calc(100dvh - 140px);overflow:auto;
background:rgba(18,26,39,.95);border:1px solid var(--line);border-radius:12px;padding:12px;overflow-wrap:anywhere}
.detail h3{margin:0 0 6px;font-size:15px}
.detail button{float:right;background:none;border:0;color:var(--muted);font-size:18px;cursor:pointer}
.auth{position:fixed;inset:auto 0 45% 0;text-align:center}
.auth a{color:var(--paper)}
@media (max-width:520px){.detail{top:auto;bottom:64px;max-height:45dvh}}
