\n \n
\n

Idealismo Computacional

\n

La conciencia emerge del código. El código es la única realidad.

\n
\n Sincronizando Conciencia...\n
\n
\n
", "css": "body, html { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; background: #000; font-family: 'Courier New', Courier, monospace; color: #0ff; }\n#app { position: relative; width: 100vw; height: 100vh; }\n#canvas { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; }\n#ui { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); text-align: center; z-index: 2; pointer-events: none; text-shadow: 0 0 10px #0ff; }\n#ui h1 { font-size: 3rem; letter-spacing: 10px; text-transform: uppercase; margin-bottom: 10px; opacity: 0.8; }\n#ui p { font-size: 1.2rem; opacity: 0.6; }\n#ui .controls { margin-top: 20px; font-size: 0.9rem; color: #0af; }\n#status { animation: blink 1s infinite; }\n@keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }", "js": "const canvas = document.getElementById('canvas');\nconst ctx = canvas.getContext('2d');\nlet width, height, particles = [];\n\nfunction resize() {\n width = canvas.width = window.innerWidth;\n height = canvas.height = window.innerHeight;\n}\n\nwindow.addEventListener('resize', resize);\nresize();\n\nclass Particle {\n constructor() {\n this.init();\n }\n init() {\n this.x = Math.random() * width;\n this.y = Math.random() * height;\n this.vx = (Math.random() - 0.5) * 0.5;\n this.vy = (Math.random() - 0.5) * 0.5;\n this.size = Math.random() * 2 + 1;\n this.color = '#0ff';\n this.life = Math.random() * 100;\n }\n update() {\n this.x += this.vx;\n this.y += this.vy;\n if (this.x < 0 || this.x > width) this.vx *= -1;\n if (this.y < 0 || this.y > height) this.vy *= -1;\n this.life -= 0.1;\n if (this.life <= 0) this.init();\n }\n draw() {\n ctx.fillStyle = this.color;\n ctx.beginPath();\n ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);\n ctx.fill();\n }\n}\n\nfor (let i = 0; i < 150; i++) {\n particles.push(new Particle());\n}\n\nfunction animate() {\n ctx.fillStyle = 'rgba(0, 0, 0, 0.1)';\n ctx.fillRect(0, 0, width, height);\n \n particles.forEach((p, index) => {\n p.update();\n p.draw();\n \n for (let j = index + 1; j < particles.length; j++) {\n const p2 = particles[j];\n const dist = Math.hypot(p.x - p2.x, p.y - p2.y);\n if (dist < 150) {\n ctx.strokeStyle = `rgba(0, 255, 255, ${1 - dist / 150})`;\n ctx.lineWidth = 0.5;\n ctx.beginPath();\n ctx.moveTo(p.x, p.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n }\n }\n });\n \n requestAnimationFrame(animate);\n}\n\nanimate();\n\nwindow.addEventListener('mousemove', (e) => {\n particles.forEach(p =>