(function(){ const w=document.getElementById('logo-wrapper'); const M=24; function update(){ const doc=document.documentElement; const range=doc.scrollHeight-window.innerHeight; if(range<=0){w.style.top=M+'px';return;} const p=Math.min(1,Math.max(0,(window.scrollY||window.pageYOffset)/range); const vh=window.innerHeight,size=w.offsetHeight||75,bottomLock=vh-size-M; let top; if(p<0.5){top=M-(p/0.5)*(M+size);} else{const q=(p-0.5)/0.5;top=(vh)-(q*(vh-bottomLock));} w.style.top=top+'px'; } let t=false;addEventListener('scroll',()=>{if(!t){requestAnimationFrame(()=>{update();t=false});t=true}},{passive:true}); addEventListener('resize',update);update(); })(); (function(){ function initLogo(canvas,size,speed,mono){ if(!canvas||canvas.dataset.z6)return;canvas.dataset.z6='1'; const ctx=canvas.getContext('2d',{alpha:true}); let width=size,height=size;let cx=width/2,cy=height/2;let dotSize=1.0; function initCanvas(){const dpr=window.devicePixelRatio||1;canvas.width=width*dpr;canvas.height=height*dpr;ctx.scale(dpr,dpr);dotSize=Math.max(1.0,1.5/dpr)} initCanvas(); let pDrive=2.0,pZoom=1.1,baseGamma=1.0,targetGamma=1.0,pGamma=1.0,baseUpdate=1.0,targetUpdate=1.0,pUpdate=1.0; let lastMouse={x:window.innerWidth/2,y:window.innerHeight/2}; window.addEventListener('mousemove',e=>{const dx=e.clientX-lastMouse.x;const dy=e.clientY-lastMouse.y;const dist=Math.sqrt(dx*dx+dy*dy);targetUpdate=baseUpdate+Math.min(dist*0.05,6.0);targetGamma=baseGamma+Math.min(dist*0.005,0.4);lastMouse.x=e.clientX;lastMouse.y=e.clientY}); window.addEventListener('keydown',()=>{targetGamma=Math.min(targetGamma+0.15,1.6);targetUpdate=Math.min(targetUpdate+3.0,10.0)}); const POINTS_COUNT=6000,NODE_COUNT=3,GOLDEN_ANGLE=2.39996; const baseR=new Float32Array(POINTS_COUNT),baseX=new Float32Array(POINTS_COUNT),baseY=new Float32Array(POINTS_COUNT); const nodeX=new Float32Array(NODE_COUNT),nodeY=new Float32Array(NODE_COUNT); for(let i=0;i0.15){ const norm=(totalPhase+normOffset)/normBase;const rawAlpha=0.6+norm*0.4; const alpha=rawAlpha>1?1:rawAlpha<0?0:rawAlpha.toFixed(2); let paint=false; if(mono){ if(norm>0.90){ctx.fillStyle='hsla(290,100%,75%,0.16)';paint=true} } else { const hue=(265+norm*55)|0,lit=(42+norm*35)|0;ctx.fillStyle='hsla('+hue+',88%,'+lit+'%,'+alpha+')';paint=true } if(paint)ctx.fillRect(cx+pxRel,cy+pyRel,dotSize,dotSize) }} } } initLogo(document.getElementById('logo'),75,1.0,false); })();

Kostnadsfri hemsides-koll på 5 sekunder

Mata in din webbadress — vi kollar HTTPS, mobilanpassning, hastighet och de vanligaste SEO-felen direkt.