diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-10 10:32:12 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-10 10:32:12 +0300 |
| commit | a2cf4a2d5b59fb6e445f8b3f5bfbdace42b6a5bf (patch) | |
| tree | 84a811fbaabbb9e36245889094ccd50651cdf913 | |
| parent | 4868fd58dd624d5d30ae540c9be7dde393027ecb (diff) | |
delete obsolete
| -rw-r--r-- | design.html | 434 |
1 files changed, 0 insertions, 434 deletions
diff --git a/design.html b/design.html deleted file mode 100644 index aaaf7dd..0000000 --- a/design.html +++ /dev/null @@ -1,434 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> - <title>snonux.foo • NEON NEXUS 3D</title> - <script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r134/three.min.js"></script> - <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css"> - <style> - @import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;500;700&display=swap'); - - :root { - --neon-cyan: #00f5ff; - --neon-magenta: #ff00cc; - --neon-yellow: #ffe700; - } - - * { margin:0; padding:0; box-sizing:border-box; } - body { - font-family: 'Orbitron', sans-serif; - background: #0b001a; - color: #e0f8ff; - overflow: hidden; - height: 100vh; - position: relative; - } - - #three-canvas { - position: fixed; - top: 0; left: 0; - width: 100%; height: 100%; - z-index: 1; - } - - .overlay { - position: relative; - z-index: 10; - height: 100vh; - display: flex; - flex-direction: column; - } - - header { - padding: 20px 30px; - display: flex; - align-items: center; - justify-content: space-between; - background: rgba(11, 0, 26, 0.8); - backdrop-filter: blur(12px); - border-bottom: 2px solid rgba(255, 231, 0, 0.3); - } - - .logo { - display: flex; - align-items: center; - gap: 12px; - } - - .logo-circle { - width: 56px; - height: 56px; - background: radial-gradient(circle, #ffe700, #ff00cc); - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - font-size: 28px; - font-weight: 700; - color: #0b001a; - box-shadow: - 0 0 30px var(--neon-yellow), - 0 0 60px var(--neon-magenta), - inset 0 0 20px rgba(255,255,255,0.6); - } - - h1 { - font-size: 2.3rem; - font-weight: 700; - letter-spacing: -4px; - text-shadow: 0 0 25px var(--neon-cyan); - } - - .nav { - display: flex; - gap: 24px; - align-items: center; - } - - .nav a { - color: #fff; - text-decoration: none; - font-size: 0.95rem; - letter-spacing: 2px; - transition: all 0.3s; - } - - .nav a:hover { - color: var(--neon-cyan); - text-shadow: 0 0 15px var(--neon-cyan); - } - - .transmit-btn { - background: transparent; - border: 3px solid var(--neon-yellow); - color: var(--neon-yellow); - padding: 14px 32px; - border-radius: 9999px; - font-weight: 600; - letter-spacing: 1px; - display: flex; - align-items: center; - gap: 10px; - box-shadow: 0 0 30px var(--neon-yellow); - transition: all 0.3s; - } - - .transmit-btn:hover { - background: var(--neon-yellow); - color: #0b001a; - transform: scale(1.08); - } - - .content { - flex: 1; - padding: 30px; - overflow-y: auto; - scrollbar-width: thin; - scrollbar-color: #ffe700 #1a0033; - } - - .post { - background: rgba(20, 5, 45, 0.9); - border: 2px solid transparent; - border-image: linear-gradient(45deg, var(--neon-cyan), var(--neon-magenta)) 1; - border-radius: 24px; - padding: 28px; - margin-bottom: 28px; - box-shadow: 0 0 35px rgba(0, 245, 255, 0.5); - transition: all 0.4s cubic-bezier(0.23, 1, 0.32, 1); - } - - .post:hover { - transform: translateY(-8px) rotate(1deg); - box-shadow: 0 0 50px rgba(255, 231, 0, 0.6); - } - - .post-header { - display: flex; - justify-content: space-between; - margin-bottom: 18px; - font-size: 0.95rem; - } - - .post-time { - font-family: monospace; - color: var(--neon-yellow); - text-shadow: 0 0 12px var(--neon-yellow); - } - - .post-text { - font-size: 1.25rem; - line-height: 1.55; - margin-bottom: 24px; - } - - .post-actions { - display: flex; - gap: 32px; - font-size: 1.05rem; - } - - .post-actions button { - background: none; - border: none; - color: #e0f8ff; - display: flex; - align-items: center; - gap: 8px; - cursor: pointer; - } - - .post-actions button:hover { - color: var(--neon-magenta); - } - - @media (max-width: 640px) { - h1 { font-size: 1.85rem; } - .logo-circle { width: 48px; height: 48px; font-size: 24px; } - .post { padding: 22px; margin-bottom: 22px; } - .content { padding: 20px; } - header { padding: 16px 20px; } - } - </style> -</head> -<body> - <!-- WebGL Canvas --> - <canvas id="three-canvas"></canvas> - - <!-- HTML Overlay --> - <div class="overlay"> - <header> - <div class="logo"> - <div class="logo-circle">SN</div> - <h1>snonux.foo</h1> - </div> - - <div class="nav"> - <a href="#">ARCHIVE</a> - <button onclick="composePost()" class="transmit-btn"> - <i class="fa-solid fa-feather-pointed"></i> - TRANSMIT TO NEXUS - </button> - </div> - </header> - - <div class="content"> - <!-- Post 1 --> - <div class="post"> - <div class="post-header"> - <div><strong>@snonux</strong></div> - <div class="post-time">04.06.26 • 17:33 UTC</div> - </div> - <div class="post-text"> - Entered the Neon Nexus. The core is pulsing. - Built this entire 3D microblog with a living central orb + orbiting rings. - Pure WebGL soul. - </div> - <div class="post-actions"> - <button onclick="this.style.color='#ff00cc';this.querySelector('i').classList.add('fa-beat')"><i class="fa-solid fa-heart"></i> 2.1k</button> - <button onclick="this.style.color='#00f5ff'"><i class="fa-solid fa-comment-dots"></i> 114</button> - <button><i class="fa-solid fa-share-from-square"></i> REBROADCAST</button> - </div> - </div> - - <!-- Post 2 --> - <div class="post"> - <div class="post-header"> - <div><strong>@snonux</strong></div> - <div class="post-time">04.06.26 • 15:19 UTC</div> - </div> - <div class="post-text"> - The rings are in perfect sync. - Orbiting the core of snonux.foo — this is what 2077 microblogging feels like. - </div> - <div class="post-actions"> - <button onclick="this.style.color='#ff00cc';this.querySelector('i').classList.add('fa-beat')"><i class="fa-solid fa-heart"></i> 1.3k</button> - <button onclick="this.style.color='#00f5ff'"><i class="fa-solid fa-comment-dots"></i> 68</button> - </div> - </div> - - <!-- Post 3 --> - <div class="post"> - <div class="post-header"> - <div><strong>@snonux</strong></div> - <div class="post-time">04.06.26 • 12:44 UTC</div> - </div> - <div class="post-text"> - The nexus is alive. Every ring carries a new thought. - WebGL never looked this electric. - </div> - <div class="post-actions"> - <button onclick="this.style.color='#ff00cc';this.querySelector('i').classList.add('fa-beat')"><i class="fa-solid fa-heart"></i> 489</button> - <button onclick="this.style.color='#00f5ff'"><i class="fa-solid fa-comment-dots"></i> 27</button> - </div> - </div> - </div> - </div> - - <script> - // === THREE.JS NEON NEXUS SCENE === - let scene, camera, renderer; - let centralSphere, rings = [], particles; - - function initThree() { - const canvas = document.getElementById('three-canvas'); - renderer = new THREE.WebGLRenderer({ - canvas: canvas, - antialias: true, - alpha: true - }); - renderer.setSize(window.innerWidth, window.innerHeight); - renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2)); - - scene = new THREE.Scene(); - scene.fog = new THREE.Fog(0x0b001a, 15, 80); - - camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight, 0.1, 200); - camera.position.set(0, 12, 35); - - // Core lighting - const ambient = new THREE.AmbientLight(0x00f5ff, 0.8); - scene.add(ambient); - - const coreLight = new THREE.PointLight(0xff00cc, 4, 100); - coreLight.position.set(0, 0, 0); - scene.add(coreLight); - - // === CENTRAL GLOWING NEXUS SPHERE === - const sphereGeo = new THREE.SphereGeometry(6, 64, 64); - const sphereMat = new THREE.MeshPhongMaterial({ - color: 0x00f5ff, - emissive: 0xff00cc, - emissiveIntensity: 1.8, - shininess: 100, - transparent: true, - opacity: 0.95 - }); - centralSphere = new THREE.Mesh(sphereGeo, sphereMat); - scene.add(centralSphere); - - // Inner glow sphere (smaller) - const innerGlow = new THREE.Mesh( - new THREE.SphereGeometry(4.5, 64, 64), - new THREE.MeshBasicMaterial({ - color: 0x00f5ff, - transparent: true, - opacity: 0.4, - blending: THREE.AdditiveBlending - }) - ); - scene.add(innerGlow); - - // === ORBITING NEON RINGS === - const ringColors = [0x00f5ff, 0xff00cc, 0x00f5ff, 0xffe700]; - for (let i = 0; i < 14; i++) { - const radius = 12 + i * 2.2; - const ringGeo = new THREE.TorusGeometry(radius, 0.35, 32, 128); - const ringMat = new THREE.MeshPhongMaterial({ - color: ringColors[i % ringColors.length], - emissive: ringColors[i % ringColors.length], - emissiveIntensity: 2.5, - shininess: 80, - transparent: true, - opacity: 0.9, - side: THREE.DoubleSide - }); - const ring = new THREE.Mesh(ringGeo, ringMat); - ring.rotation.x = Math.random() * Math.PI; - ring.userData = { - speed: 0.008 + (i * 0.003), - axisTilt: Math.random() * 0.6, - radius: radius - }; - scene.add(ring); - rings.push(ring); - } - - // === PARTICLE FIELD (energy streams) === - const particleCount = 2200; - const positions = new Float32Array(particleCount * 3); - const colors = new Float32Array(particleCount * 3); - - for (let i = 0; i < particleCount * 3; i += 3) { - const radius = 30 + Math.random() * 40; - const theta = Math.random() * Math.PI * 2; - const phi = Math.acos(2 * Math.random() - 1); - - positions[i] = radius * Math.sin(phi) * Math.cos(theta); - positions[i + 1] = radius * Math.sin(phi) * Math.sin(theta); - positions[i + 2] = radius * Math.cos(phi); - - const c = new THREE.Color().setHSL(Math.random() > 0.5 ? 0.55 : 0.8, 1, 1); - colors[i] = c.r; colors[i+1] = c.g; colors[i+2] = c.b; - } - - const particleGeo = new THREE.BufferGeometry(); - particleGeo.setAttribute('position', new THREE.BufferAttribute(positions, 3)); - particleGeo.setAttribute('color', new THREE.BufferAttribute(colors, 3)); - - const particleMat = new THREE.PointsMaterial({ - size: 0.22, - vertexColors: true, - transparent: true, - opacity: 0.9, - blending: THREE.AdditiveBlending - }); - - particles = new THREE.Points(particleGeo, particleMat); - scene.add(particles); - - // Gentle mouse interaction - let mouseX = 0; - window.addEventListener('mousemove', (e) => { - mouseX = (e.clientX / window.innerWidth) * 2 - 1; - }); - - // Animation loop - function animate() { - requestAnimationFrame(animate); - - // Slow orbit camera around the nexus - const time = Date.now() * 0.0004; - camera.position.x = Math.sin(time) * 35; - camera.position.z = Math.cos(time) * 35 + 10; - camera.lookAt(0, 4, 0); - - // Mouse influence - camera.position.x += mouseX * 6; - - // Rotate central sphere - centralSphere.rotation.y += 0.003; - - // Animate orbiting rings - rings.forEach((ring, i) => { - ring.rotation.y += ring.userData.speed; - ring.rotation.x = Math.sin(time * 1.5 + i) * ring.userData.axisTilt; - }); - - // Particles gently swirl around center - particles.rotation.y += 0.0008; - - renderer.render(scene, camera); - } - - animate(); - } - - window.addEventListener('resize', () => { - if (!camera || !renderer) return; - camera.aspect = window.innerWidth / window.innerHeight; - camera.updateProjectionMatrix(); - renderer.setSize(window.innerWidth, window.innerHeight); - }); - - function composePost() { - alert("🌐 TRANSMISSION TO THE NEXUS OPEN — your new 3D compose window would appear here ✨"); - } - - window.onload = initThree; - - console.log("%c🌐 snonux.foo NEON NEXUS 3D online — central orb + orbiting rings ready", "color:#ffe700; font-family:monospace; font-size:11px;"); - </script> -</body> -</html> |
