<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Enjoy the Stars</title><style>body{margin:0;background:#000;overflow:hidden;height:100vh;width:100vw;cursor:none}canvas{display:block}.c{position:fixed;width:10px;height:10px;border:2px solid #9d7c6a;border-radius:50%;transform:translate(-50%,-50%)}.c::before{content:\"\";position:absolute;width:23px;height:2px;background:#9d7c6a;top:50%;left:50%;transform:translate(-50%,-50%) rotate(var(--a,0deg))}#f,#b{position:fixed;width:10px;height:10px;border-radius:50%;display:flex;align-items:center;justify-content:center;z-index:9999;cursor:none}#f{top:15px;right:15px;background:#9d7c6a;border:0}#b{top:15px;left:15px;background:none;border:0;color:#9d7c6a}</style></head><body><canvas id="s"></canvas><div class="c"></div><button id="f" onclick="F()"></button><button id="b" onclick="history.back()">←</button><script>function F(){const d=document,e=d.documentElement,r=e.requestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen||e.msRequestFullscreen,x=d.exitFullscreen||d.mozCancelFullScreen||d.webkitExitFullscreen||d.msExitFullscreen;!d.fullscreenElement?r.call(e):x.call(d)}let w,h,b=[],s=[],c=document.getElementById("s"),ctx=c.getContext("2d");function R(){const ow=w||innerWidth,oh=h||innerHeight;w=innerWidth;h=innerHeight;c.width=w;c.height=h;b.forEach(x=>{x.x=x.x/ow*w;x.y=x.y/oh*h})}class B{constructor(){this.r()}r(){this.x=Math.random()*w;this.y=Math.random()*h;this.sz=Math.random();this.o=Math.random()*.7+.3}u(){this.o+=Math.random()*.02-.01;this.o=this.o<.2?.2:this.o>1?1:this.o}d(){ctx.fillStyle="rgba(255,255,255,"+this.o+")";ctx.beginPath();ctx.arc(this.x,this.y,this.sz,0,2*Math.PI);ctx.fill()}}class S{constructor(){this.r()}r(){this.x=Math.random()*w;this.y=Math.random()*h*.5;this.l=60+Math.random()*40;this.sp=3+Math.random()*1.5;this.a=3*Math.PI/4;this.o=0;this.f=1}u(){this.f?this.o+=.05:this.o-=.01;this.f=this.o>=1?0:this.f;this.x+=Math.cos(this.a)*this.sp;this.y+=Math.sin(this.a)*this.sp;this.o<=0||this.x<0||this.y>h?this.r():0}d(){ctx.save();ctx.globalAlpha=this.o;let g=ctx.createLinearGradient(this.x,this.y,this.x-Math.cos(this.a)*this.l,this.y-Math.sin(this.a)*this.l);g.addColorStop(0,"rgba(255,255,255,1)");g.addColorStop(1,"rgba(255,255,255,0)");ctx.strokeStyle=g;ctx.lineWidth=2;ctx.shadowBlur=2;ctx.shadowColor="white";ctx.beginPath();ctx.moveTo(this.x,this.y);ctx.lineTo(this.x-Math.cos(this.a)*this.l,this.y-Math.sin(this.a)*this.l);ctx.stroke();ctx.restore()}}window.addEventListener("mousemove",e=>{let x=e.clientX,y=e.clientY,cx=innerWidth/2,cy=innerHeight/2,ang=Math.atan2(cy-y,cx-x)*(180/Math.PI);document.querySelector(".c").style.left=x+"px";document.querySelector(".c").style.top=y+"px";document.querySelector(".c").style.setProperty("--a",ang+"deg")});window.addEventListener("load",()=>{R();for(let i=0;i<500;i++)b.push(new B());function sp(){s.push(new S());setTimeout(sp,500+Math.random()*1e3)}sp();function a(){ctx.clearRect(0,0,w,h);b.forEach(x=>{x.u();x.d()});for(let i=s.length-1;i>=0;i--){s[i].u();s[i].d();if(s[i].o<=0)s.splice(i,1)}requestAnimationFrame(a)}a()});window.addEventListener("resize",R);window.addEventListener("orientationchange",R);</script></body></html>