<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>403 | withoutbits</title><link href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,400;0,500;1,900&family=Inter:wght@500;700&display=swap" rel="stylesheet"><style>:root{--bg-color:#1a1310;--text-color:#e8d5c0;--meta-color:#7a6045;}body{margin:0;background-color:var(--bg-color);overflow:hidden;color:var(--text-color);font-family:"Montserrat",sans-serif;text-transform:lowercase;user-select:none;}.error-code{position:absolute;top:1.5rem;left:50%;transform:translateX(-50%);font-weight:900;font-style:italic;font-size:clamp(0.7rem,1.5vw,0.9rem);color:rgba(232,213,192,0.45);letter-spacing:2px;font-family:"Inter",sans-serif;z-index:20;}.quote-left{position:absolute;top:38%;left:50%;transform:translate(-65%,-50%);font-weight:900;font-style:italic;font-size:clamp(0.9rem,2.5vw,1.2rem);color:var(--text-color);text-align:center;z-index:20;letter-spacing:1px;opacity:0.9;}.quote-right{position:absolute;top:46%;left:50%;transform:translate(-35%,-50%);font-weight:900;font-style:italic;font-size:clamp(0.9rem,2.5vw,1.2rem);color:var(--text-color);text-align:center;z-index:20;letter-spacing:1px;opacity:0.65;}@media(max-width:600px){.quote-left{transform:translate(-58%,-50%);}.quote-right{transform:translate(-42%,-50%);}}canvas{position:absolute;top:0;left:0;z-index:1;}</style></head><body><div class="error-code">403</div><div class="quote-left">so we meet again.</div><div class="quote-right">...except you shouldn't be here.</div><canvas id="bg"></canvas><script>const canvas=document.getElementById("bg");const ctx=canvas.getContext("2d");let width,height;function resize(){width=canvas.width=window.innerWidth;height=canvas.height=window.innerHeight;}window.addEventListener("resize",resize);resize();let time=0;function draw(){ctx.clearRect(0,0,width,height);time+=0.3;ctx.lineWidth=1.5;ctx.strokeStyle="rgba(120,80,50,0.25)";const numLines=18;const ySpacing=height/(numLines-2);for(let i=0;i<numLines;i++){ctx.beginPath();let yBase=ySpacing*i-50;for(let x=0;x<=width;x+=25){let wave1=Math.sin((x*0.003)+(time*0.015))*40;let wave2=Math.cos((x*0.005)-(time*0.01)+i)*35;let wave3=Math.sin((x*0.001)+(i*0.4))*60;let y=yBase+wave1+wave2+wave3;if(x===0)ctx.moveTo(x,y);else ctx.lineTo(x,y);}ctx.stroke();}requestAnimationFrame(draw);}draw();</script></body></html>