Mostrando entradas con la etiqueta GADGET. Mostrar todas las entradas
Mostrando entradas con la etiqueta GADGET. Mostrar todas las entradas

martes, 16 de diciembre de 2025

# **CONSOLA INTERACTIVA BIZUM SECURITY PARA BLOGGER**

 # **CONSOLA INTERACTIVA BIZUM SECURITY PARA BLOGGER**
## **Gadget HTML/JS que emula el sistema de seguridad en tiempo real**

```html
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bizum Security Console - PASAIA LAB</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Courier New', monospace;
        }

        body {
            background: linear-gradient(135deg, #0a0a0a, #1a1a2e);
            color: #00ff00;
            min-height: 100vh;
            padding: 20px;
            overflow-x: hidden;
        }

        .security-console {
            max-width: 800px;
            margin: 0 auto;
            border: 2px solid #00ff00;
            border-radius: 10px;
            padding: 20px;
            background: rgba(0, 0, 0, 0.9);
            box-shadow: 0 0 30px rgba(0, 255, 0, 0.3);
            position: relative;
            overflow: hidden;
        }

        /* Efecto de scanline */
        .scanline {
            position: absolute;
            width: 100%;
            height: 2px;
            background: linear-gradient(90deg, transparent, #00ff00, transparent);
            opacity: 0.3;
            animation: scan 3s linear infinite;
            z-index: 1;
        }

        @keyframes scan {
            0% { top: 0%; }
            100% { top: 100%; }
        }

        /* Header */
        .console-header {
            text-align: center;
            margin-bottom: 20px;
            padding-bottom: 10px;
            border-bottom: 1px solid #00ff00;
            position: relative;
        }

        .logo {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 10px;
            margin-bottom: 10px;
        }

        .logo i {
            color: #00ff00;
            font-size: 24px;
            animation: pulse 2s infinite;
        }

        @keyframes pulse {
            0%, 100% { opacity: 1; }
            50% { opacity: 0.5; }
        }

        .logo h1 {
            font-size: 20px;
            color: #00ff00;
            text-shadow: 0 0 10px #00ff00;
        }

        .certification-badge {
            display: inline-block;
            background: #00ff00;
            color: #000;
            padding: 3px 10px;
            border-radius: 4px;
            font-size: 11px;
            font-weight: bold;
            margin-top: 5px;
        }

        /* Main console */
        .console-body {
            display: flex;
            flex-direction: column;
            gap: 15px;
        }

        /* Status panel */
        .status-panel {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
            gap: 10px;
            margin-bottom: 15px;
        }

        .status-card {
            background: rgba(0, 30, 0, 0.3);
            border: 1px solid #00ff00;
            border-radius: 5px;
            padding: 10px;
            text-align: center;
            transition: all 0.3s;
        }

        .status-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 5px 15px rgba(0, 255, 0, 0.2);
        }

        .status-card h3 {
            font-size: 12px;
            margin-bottom: 5px;
            color: #90ff90;
        }

        .status-value {
            font-size: 18px;
            font-weight: bold;
            color: #00ff00;
        }

        .status-trend {
            font-size: 10px;
            margin-top: 3px;
        }

        .trend-up { color: #00ff00; }
        .trend-down { color: #ff0000; }

        /* Console output */
        .console-output {
            background: rgba(0, 20, 0, 0.5);
            border: 1px solid #00ff00;
            border-radius: 5px;
            padding: 15px;
            height: 200px;
            overflow-y: auto;
            font-size: 12px;
            line-height: 1.4;
            margin-bottom: 15px;
        }

        .console-output::-webkit-scrollbar {
            width: 8px;
        }

        .console-output::-webkit-scrollbar-track {
            background: rgba(0, 30, 0, 0.3);
        }

        .console-output::-webkit-scrollbar-thumb {
            background: #00ff00;
            border-radius: 4px;
        }

        .log-entry {
            margin-bottom: 5px;
            padding-left: 10px;
            border-left: 2px solid #00ff00;
            animation: fadeIn 0.5s;
        }

        @keyframes fadeIn {
            from { opacity: 0; transform: translateX(-10px); }
            to { opacity: 1; transform: translateX(0); }
        }

        .log-timestamp {
            color: #90ff90;
            margin-right: 10px;
        }

        .log-level-info { color: #00ff00; }
        .log-level-warning { color: #ffff00; }
        .log-level-error { color: #ff0000; }
        .log-level-critical { color: #ff00ff; }

        /* Command input */
        .command-input {
            display: flex;
            gap: 10px;
            margin-bottom: 15px;
        }

        .prompt {
            color: #00ff00;
            font-weight: bold;
            padding: 8px 0;
        }

        #commandLine {
            flex: 1;
            background: transparent;
            border: 1px solid #00ff00;
            border-radius: 5px;
            padding: 8px 12px;
            color: #00ff00;
            font-family: 'Courier New', monospace;
            outline: none;
        }

        #commandLine:focus {
            box-shadow: 0 0 10px rgba(0, 255, 0, 0.5);
        }

        #executeBtn {
            background: #00ff00;
            color: #000;
            border: none;
            border-radius: 5px;
            padding: 8px 15px;
            font-weight: bold;
            cursor: pointer;
            transition: all 0.3s;
        }

        #executeBtn:hover {
            background: #90ff90;
            transform: scale(1.05);
        }

        /* Quick actions */
        .quick-actions {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
            gap: 10px;
            margin-bottom: 15px;
        }

        .action-btn {
            background: rgba(0, 30, 0, 0.5);
            border: 1px solid #00ff00;
            border-radius: 5px;
            padding: 10px;
            color: #00ff00;
            font-size: 11px;
            cursor: pointer;
            transition: all 0.3s;
            text-align: center;
        }

        .action-btn:hover {
            background: rgba(0, 255, 0, 0.2);
            transform: translateY(-2px);
        }

        .action-btn i {
            margin-right: 5px;
        }

        /* Threat visualization */
        .threat-visualization {
            background: rgba(0, 20, 0, 0.5);
            border: 1px solid #00ff00;
            border-radius: 5px;
            padding: 15px;
            margin-bottom: 15px;
        }

        .threat-visualization h3 {
            text-align: center;
            margin-bottom: 10px;
            color: #90ff90;
            font-size: 14px;
        }

        .threat-bars {
            display: flex;
            align-items: flex-end;
            height: 60px;
            gap: 5px;
        }

        .threat-bar {
            flex: 1;
            background: linear-gradient(to top, #ff0000, #ffff00, #00ff00);
            border-radius: 3px 3px 0 0;
            transition: height 1s ease;
        }

        .threat-label {
            text-align: center;
            font-size: 10px;
            margin-top: 5px;
            color: #90ff90;
        }

        /* Footer */
        .console-footer {
            text-align: center;
            padding-top: 10px;
            border-top: 1px solid #00ff00;
            font-size: 10px;
            color: #90ff90;
        }

        /* Matrix rain effect */
        .matrix-rain {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            pointer-events: none;
            z-index: 0;
            opacity: 0.1;
        }

        /* Responsive */
        @media (max-width: 600px) {
            .security-console {
                padding: 10px;
            }
            
            .status-panel {
                grid-template-columns: repeat(2, 1fr);
            }
            
            .quick-actions {
                grid-template-columns: repeat(2, 1fr);
            }
        }
    </style>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
</head>
<body>
    <div class="security-console">
        <!-- Scanline effect -->
        <div class="scanline"></div>
        
        <!-- Matrix rain effect -->
        <div class="matrix-rain" id="matrixRain"></div>
        
        <!-- Header -->
        <div class="console-header">
            <div class="logo">
                <i class="fas fa-shield-alt"></i>
                <h1>BIZUM SECURITY CONSOLE</h1>
                <i class="fas fa-terminal"></i>
            </div>
            <div class="certification-badge">
                CERT: BIZUM-SEC-2024-JAFV-DS-001
            </div>
        </div>
        
        <!-- Main console body -->
        <div class="console-body">
            <!-- Status Panel -->
            <div class="status-panel">
                <div class="status-card">
                    <h3>SEGURIDAD</h3>
                    <div class="status-value" id="securityScore">92%</div>
                    <div class="status-trend trend-up">
                        <i class="fas fa-arrow-up"></i> +2%
                    </div>
                </div>
                
                <div class="status-card">
                    <h3>AMENAZAS</h3>
                    <div class="status-value" id="threatCount">3</div>
                    <div class="status-trend trend-down">
                        <i class="fas fa-arrow-down"></i> -1
                    </div>
                </div>
                
                <div class="status-card">
                    <h3>TRANSACCIONES</h3>
                    <div class="status-value" id="transactionCount">1,247</div>
                    <div class="status-trend trend-up">
                        <i class="fas fa-arrow-up"></i> +12%
                    </div>
                </div>
                
                <div class="status-card">
                    <h3>RESPUESTA</h3>
                    <div class="status-value" id="responseTime">0.8s</div>
                    <div class="status-trend trend-up">
                        <i class="fas fa-bolt"></i> Óptimo
                    </div>
                </div>
            </div>
            
            <!-- Console Output -->
            <div class="console-output" id="consoleOutput">
                <div class="log-entry">
                    <span class="log-timestamp">[14:30:25]</span>
                    <span class="log-level-info">INFO:</span> Sistema de seguridad inicializado
                </div>
                <div class="log-entry">
                    <span class="log-timestamp">[14:30:27]</span>
                    <span class="log-level-info">INFO:</span> Monitoreo 24/7 activado
                </div>
                <div class="log-entry">
                    <span class="log-timestamp">[14:30:30]</span>
                    <span class="log-level-warning">WARNING:</span> Escaneo de vulnerabilidades programado
                </div>
                <div class="log-entry">
                    <span class="log-timestamp">[14:30:35]</span>
                    <span class="log-level-info">INFO:</span> 1,247 transacciones procesadas hoy
                </div>
            </div>
            
            <!-- Command Input -->
            <div class="command-input">
                <div class="prompt">$></div>
                <input type="text" id="commandLine" placeholder="Escribe un comando de seguridad...">
                <button id="executeBtn">EJECUTAR</button>
            </div>
            
            <!-- Quick Actions -->
            <div class="quick-actions">
                <button class="action-btn" onclick="executeCommand('scan')">
                    <i class="fas fa-search"></i> ESCANEAR
                </button>
                <button class="action-btn" onclick="executeCommand('audit')">
                    <i class="fas fa-clipboard-check"></i> AUDITORÍA
                </button>
                <button class="action-btn" onclick="executeCommand('report')">
                    <i class="fas fa-file-alt"></i> REPORTE
                </button>
                <button class="action-btn" onclick="executeCommand('lockdown')">
                    <i class="fas fa-lock"></i> LOCKDOWN
                </button>
                <button class="action-btn" onclick="executeCommand('backup')">
                    <i class="fas fa-database"></i> BACKUP
                </button>
                <button class="action-btn" onclick="executeCommand('help')">
                    <i class="fas fa-question-circle"></i> AYUDA
                </button>
            </div>
            
            <!-- Threat Visualization -->
            <div class="threat-visualization">
                <h3>NIVEL DE AMENAZA EN TIEMPO REAL</h3>
                <div class="threat-bars">
                    <div class="threat-bar" id="threatBar1" style="height: 30%;"></div>
                    <div class="threat-bar" id="threatBar2" style="height: 45%;"></div>
                    <div class="threat-bar" id="threatBar3" style="height: 20%;"></div>
                    <div class="threat-bar" id="threatBar4" style="height: 60%;"></div>
                    <div class="threat-bar" id="threatBar5" style="height: 35%;"></div>
                    <div class="threat-bar" id="threatBar6" style="height: 25%;"></div>
                </div>
                <div class="threat-labels">
                    <div class="threat-label">SQLi</div>
                    <div class="threat-label">XSS</div>
                    <div class="threat-label">DDoS</div>
                    <div class="threat-label">MITM</div>
                    <div class="threat-label">Malware</div>
                    <div class="threat-label">Phishing</div>
                </div>
            </div>
        </div>
        
        <!-- Footer -->
        <div class="console-footer">
            <p>© 2024 PASAIA LAB - Sistema de Seguridad Activa Bizum v2.0</p>
            <p>Estado: <span id="systemStatus" style="color:#00ff00;">OPERATIVO</span> | Última actualización: <span id="lastUpdate">14:30:35</span></p>
        </div>
    </div>

    <script>
        // ============================================================================
        // VARIABLES GLOBALES Y CONFIGURACIÓN
        // ============================================================================
        const securityConsole = {
            logs: [],
            threatLevel: 3,
            securityScore: 92,
            transactions: 1247,
            responseTime: 0.8,
            systemStatus: 'OPERATIVO',
            commands: {},
            matrixChars: '01abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$+-*/=%"#@&_|<>!?;:'
        };

        // ============================================================================
        // INICIALIZACIÓN
        // ============================================================================
        document.addEventListener('DOMContentLoaded', function() {
            initializeConsole();
            startLiveUpdates();
            createMatrixRain();
            
            // Configurar entrada de comandos
            document.getElementById('commandLine').addEventListener('keypress', function(e) {
                if (e.key === 'Enter') {
                    executeCommand(this.value);
                    this.value = '';
                }
            });
            
            document.getElementById('executeBtn').addEventListener('click', function() {
                const commandInput = document.getElementById('commandLine');
                executeCommand(commandInput.value);
                commandInput.value = '';
            });
            
            // Mensaje inicial
            logMessage('Sistema de Seguridad Bizum v2.0 inicializado', 'info');
            logMessage('Modo: DEMOSTRACIÓN INTERACTIVA', 'info');
            logMessage('Escribe "help" para ver comandos disponibles', 'info');
        });

        // ============================================================================
        // FUNCIONES PRINCIPALES
        // ============================================================================
        function initializeConsole() {
            // Definir comandos disponibles
            securityConsole.commands = {
                'help': {
                    description: 'Muestra esta ayuda',
                    execute: showHelp
                },
                'scan': {
                    description: 'Ejecuta escaneo de seguridad',
                    execute: runSecurityScan
                },
                'audit': {
                    description: 'Realiza auditoría completa',
                    execute: runSecurityAudit
                },
                'report': {
                    description: 'Genera reporte de seguridad',
                    execute: generateSecurityReport
                },
                'lockdown': {
                    description: 'Activa modo de máxima seguridad',
                    execute: activateLockdownMode
                },
                'backup': {
                    description: 'Crea backup del sistema',
                    execute: createSecurityBackup
                },
                'status': {
                    description: 'Muestra estado del sistema',
                    execute: showSystemStatus
                },
                'clear': {
                    description: 'Limpia la consola',
                    execute: clearConsole
                },
                'test': {
                    description: 'Ejecuta pruebas de seguridad',
                    execute: runSecurityTests
                },
                'threats': {
                    description: 'Muestra amenazas activas',
                    execute: showActiveThreats
                }
            };
            
            // Actualizar timestamp
            updateLastUpdateTime();
        }

        function logMessage(message, level = 'info') {
            const consoleOutput = document.getElementById('consoleOutput');
            const timestamp = new Date().toLocaleTimeString('es-ES', {hour12: false});
            
            const logEntry = document.createElement('div');
            logEntry.className = 'log-entry';
            logEntry.innerHTML = `
                <span class="log-timestamp">[${timestamp}]</span>
                <span class="log-level-${level}">${level.toUpperCase()}:</span> ${message}
            `;
            
            consoleOutput.appendChild(logEntry);
            
            // Auto-scroll al final
            consoleOutput.scrollTop = consoleOutput.scrollHeight;
            
            // Guardar en historial
            securityConsole.logs.push({timestamp, level, message});
            
            // Limitar logs visibles
            if (consoleOutput.children.length > 50) {
                consoleOutput.removeChild(consoleOutput.firstChild);
            }
        }

        function executeCommand(input) {
            if (!input || input.trim() === '') return;
            
            const command = input.trim().toLowerCase();
            logMessage(`Ejecutando: ${input}`, 'info');
            
            if (securityConsole.commands[command]) {
                securityConsole.commands[command].execute();
            } else {
                logMessage(`Comando no reconocido: ${command}`, 'error');
                logMessage('Escribe "help" para ver comandos disponibles', 'warning');
            }
        }

        // ============================================================================
        // COMANDOS IMPLEMENTADOS
        // ============================================================================
        function showHelp() {
            logMessage('=== COMANDOS DISPONIBLES ===', 'info');
            Object.keys(securityConsole.commands).forEach(cmd => {
                logMessage(`${cmd.padEnd(10)} - ${securityConsole.commands[cmd].description}`, 'info');
            });
            logMessage('============================', 'info');
        }

        function runSecurityScan() {
            logMessage('Iniciando escaneo de seguridad...', 'warning');
            
            // Simular escaneo
            setTimeout(() => {
                logMessage('✓ Firewall: ACTIVO', 'info');
                logMessage('✓ SSL/TLS: CONFIGURADO', 'info');
                logMessage('✓ IDS/IPS: OPERATIVO', 'info');
                logMessage('✓ Encriptación: AES-256-GCM', 'info');
                logMessage('✓ Autenticación: MFA ACTIVO', 'info');
                logMessage('Escaneo completado. 0 vulnerabilidades críticas encontradas.', 'info');
                
                // Actualizar puntuación
                securityConsole.securityScore = Math.min(100, securityConsole.securityScore + 2);
                updateSecurityScore();
            }, 1000);
        }

        function runSecurityAudit() {
            logMessage('Ejecutando auditoría completa de seguridad...', 'warning');
            
            const auditChecks = [
                {name: 'PCI-DSS Compliance', result: 'PASS'},
                {name: 'GDPR Compliance', result: 'PASS'},
                {name: 'PSD2 Requirements', result: 'PASS'},
                {name: 'ISO 27001', result: 'WARNING'},
                {name: 'Logging System', result: 'PASS'},
                {name: 'Backup Strategy', result: 'PASS'},
                {name: 'Incident Response', result: 'PASS'},
                {name: 'Employee Training', result: 'WARNING'}
            ];
            
            let delay = 500;
            auditChecks.forEach(check => {
                setTimeout(() => {
                    const icon = check.result === 'PASS' ? '✓' : check.result === 'WARNING' ? '⚠' : '✗';
                    const level = check.result === 'PASS' ? 'info' : check.result === 'WARNING' ? 'warning' : 'error';
                    logMessage(`${icon} ${check.name}: ${check.result}`, level);
                }, delay);
                delay += 300;
            });
            
            setTimeout(() => {
                logMessage('Auditoría completada. Puntuación: 92/100', 'info');
                logMessage('Recomendación: Mejorar cumplimiento ISO 27001', 'warning');
            }, delay);
        }

        function generateSecurityReport() {
            logMessage('Generando reporte de seguridad...', 'warning');
            
            setTimeout(() => {
                logMessage('✓ Recolectando datos del sistema...', 'info');
                logMessage('✓ Analizando registros de seguridad...', 'info');
                logMessage('✓ Generando estadísticas...', 'info');
                logMessage('✓ Creando documento PDF...', 'info');
                logMessage('Reporte generado: security_report_2024.pdf', 'info');
                logMessage('Descarga simulada completada', 'info');
                
                // Mostrar alerta
                alert('Reporte de seguridad generado:\n' +
                      '📊 Puntuación: 92/100\n' +
                      '🛡️ Amenazas: 3 activas\n' +
                      '💳 Transacciones: 1,247 hoy\n' +
                      '⚡ Respuesta: 0.8s promedio\n' +
                      '📁 Guardado como: security_report_2024.pdf');
            }, 1500);
        }

        function activateLockdownMode() {
            if (confirm('¿Activar MODO LOCKDOWN?\n\nEsto restringirá temporalmente todas las operaciones no esenciales.')) {
                logMessage('ACTIVANDO MODO LOCKDOWN...', 'critical');
                logMessage('✓ Restringiendo acceso API...', 'warning');
                logMessage('✓ Aumentando monitorización...', 'warning');
                logMessage('✓ Activando protecciones adicionales...', 'warning');
                logMessage('MODO LOCKDOWN ACTIVADO', 'critical');
                
                // Cambiar estado visual
                document.getElementById('systemStatus').textContent = 'LOCKDOWN';
                document.getElementById('systemStatus').style.color = '#ff0000';
                
                // Restaurar después de 10 segundos
                setTimeout(() => {
                    document.getElementById('systemStatus').textContent = 'OPERATIVO';
                    document.getElementById('systemStatus').style.color = '#00ff00';
                    logMessage('MODO LOCKDOWN DESACTIVADO', 'info');
                }, 10000);
            }
        }

        function createSecurityBackup() {
            logMessage('Iniciando backup de seguridad...', 'warning');
            
            let progress = 0;
            const interval = setInterval(() => {
                progress += 10;
                logMessage(`Backup en progreso: ${progress}%`, 'info');
                
                if (progress >= 100) {
                    clearInterval(interval);
                    logMessage('✓ Backup completado exitosamente', 'info');
                    logMessage('✓ Encriptado con AES-256-GCM', 'info');
                    logMessage('✓ Verificado: INTEGRIDAD OK', 'info');
                    logMessage('Backup guardado en ubicación segura', 'info');
                }
            }, 300);
        }

        function showSystemStatus() {
            logMessage('=== ESTADO DEL SISTEMA ===', 'info');
            logMessage(`Puntuación seguridad: ${securityConsole.securityScore}%`, 'info');
            logMessage(`Amenazas activas: ${securityConsole.threatLevel}`, 'info');
            logMessage(`Transacciones hoy: ${securityConsole.transactions.toLocaleString()}`, 'info');
            logMessage(`Tiempo respuesta: ${securityConsole.responseTime}s`, 'info');
            logMessage(`Estado: ${securityConsole.systemStatus}`, 'info');
            logMessage(`Logs almacenados: ${securityConsole.logs.length}`, 'info');
            logMessage('=========================', 'info');
        }

        function clearConsole() {
            document.getElementById('consoleOutput').innerHTML = '';
            logMessage('Consola limpiada', 'info');
        }

        function runSecurityTests() {
            logMessage('Ejecutando pruebas de seguridad...', 'warning');
            
            const tests = [
                'Prueba de autenticación',
                'Prueba de autorización',
                'Prueba de validación de entrada',
                'Prueba de encriptación',
                'Prueba de logging',
                'Prueba de respuesta a incidentes'
            ];
            
            tests.forEach((test, index) => {
                setTimeout(() => {
                    const result = Math.random() > 0.1 ? 'PASS' : 'FAIL';
                    const level = result === 'PASS' ? 'info' : 'error';
                    logMessage(`${result === 'PASS' ? '✓' : '✗'} ${test}: ${result}`, level);
                }, index * 500);
            });
            
            setTimeout(() => {
                logMessage('Pruebas completadas: 6/6 aprobadas', 'info');
            }, tests.length * 500 + 500);
        }

        function showActiveThreats() {
            logMessage('=== AMENAZAS ACTIVAS ===', 'warning');
            
            const threats = [
                {type: 'SQL Injection', severity: 'LOW', count: 2},
                {type: 'XSS Attack', severity: 'MEDIUM', count: 1},
                {type: 'Brute Force', severity: 'HIGH', count: 5},
                {type: 'DDoS Attempt', severity: 'MEDIUM', count: 3}
            ];
            
            threats.forEach(threat => {
                const level = threat.severity === 'HIGH' ? 'error' : 
                             threat.severity === 'MEDIUM' ? 'warning' : 'info';
                logMessage(`${threat.type}: ${threat.count} intentos (${threat.severity})`, level);
            });
            
            logMessage('========================', 'warning');
        }

        // ============================================================================
        // FUNCIONES DE ACTUALIZACIÓN EN TIEMPO REAL
        // ============================================================================
        function startLiveUpdates() {
            // Actualizar datos cada 5 segundos
            setInterval(updateLiveData, 5000);
            
            // Actualizar visualización de amenazas
            setInterval(updateThreatVisualization, 2000);
            
            // Generar logs aleatorios
            setInterval(generateRandomLog, 10000);
        }

        function updateLiveData() {
            // Simular fluctuaciones en los datos
            securityConsole.securityScore = Math.max(85, Math.min(98, 
                securityConsole.securityScore + (Math.random() - 0.5) * 2));
            
            securityConsole.threatLevel = Math.max(0, Math.min(10,
                securityConsole.threatLevel + (Math.random() - 0.5) * 2));
            
            securityConsole.transactions += Math.floor(Math.random() * 10);
            securityConsole.responseTime = 0.7 + Math.random() * 0.3;
            
            // Actualizar UI
            updateSecurityScore();
            updateThreatCount();
            updateTransactionCount();
            updateResponseTime();
            updateLastUpdateTime();
        }

        function updateSecurityScore() {
            const scoreElement = document.getElementById('securityScore');
            const currentScore = parseInt(scoreElement.textContent);
            const newScore = Math.round(securityConsole.securityScore);
            
            if (currentScore !== newScore) {
                scoreElement.textContent = newScore + '%';
                
                // Animar cambio
                scoreElement.style.transform = 'scale(1.2)';
                setTimeout(() => {
                    scoreElement.style.transform = 'scale(1)';
                }, 300);
            }
        }

        function updateThreatCount() {
            const threatElement = document.getElementById('threatCount');
            const currentCount = parseInt(threatElement.textContent);
            const newCount = Math.round(securityConsole.threatLevel);
            
            if (currentCount !== newCount) {
                threatElement.textContent = newCount;
                
                // Cambiar color según nivel
                if (newCount <= 2) {
                    threatElement.style.color = '#00ff00';
                } else if (newCount <= 5) {
                    threatElement.style.color = '#ffff00';
                } else {
                    threatElement.style.color = '#ff0000';
                }
            }
        }

        function updateTransactionCount() {
            const transElement = document.getElementById('transactionCount');
            const formatted = securityConsole.transactions.toLocaleString();
            transElement.textContent = formatted;
        }

        function updateResponseTime() {
            const responseElement = document.getElementById('responseTime');
            responseElement.textContent = securityConsole.responseTime.toFixed(1) + 's';
        }

        function updateLastUpdateTime() {
            const now = new Date();
            const timeString = now.toLocaleTimeString('es-ES', {hour12: false});
            document.getElementById('lastUpdate').textContent = timeString;
        }

        function updateThreatVisualization() {
            // Actualizar barras de amenazas aleatoriamente
            for (let i = 1; i <= 6; i++) {
                const bar = document.getElementById(`threatBar${i}`);
                const newHeight = Math.floor(Math.random() * 70) + 10; // 10-80%
                bar.style.height = `${newHeight}%`;
                
                // Cambiar opacidad según altura
                bar.style.opacity = 0.3 + (newHeight / 100);
            }
        }

        function generateRandomLog() {
            const logTypes = [
                {message: 'Transacción procesada exitosamente', level: 'info'},
                {message: 'Intento de acceso no autorizado bloqueado', level: 'warning'},
                {message: 'Escaneo programado completado', level: 'info'},
                {message: 'Actualización de reglas de firewall', level: 'info'},
                {message: 'Backup automático ejecutado', level: 'info'},
                {message: 'Alerta: Actividad sospechosa detectada', level: 'warning'}
            ];
            
            const randomLog = logTypes[Math.floor(Math.random() * logTypes.length)];
            logMessage(randomLog.message, randomLog.level);
        }

        // ============================================================================
        // EFECTOS VISUALES
        // ============================================================================
        function createMatrixRain() {
            const matrixRain = document.getElementById('matrixRain');
            const columns = Math.floor(window.innerWidth / 20);
            
            for (let i = 0; i < columns; i++) {
                const column = document.createElement('div');
                column.style.position = 'absolute';
                column.style.left = `${i * 20}px`;
                column.style.top = '-100px';
                column.style.width = '15px';
                column.style.fontSize = '14px';
                column.style.color = '#00ff00';
                column.style.opacity = '0.7';
                column.style.textShadow = '0 0 5px #00ff00';
                column.style.animation = `rainFall ${2 + Math.random() * 3}s linear infinite`;
                column.style.animationDelay = `${Math.random() * 2}s`;
                
                // Agregar caracteres
                const charCount = 20;
                for (let j = 0; j < charCount; j++) {
                    const charSpan = document.createElement('div');
                    charSpan.textContent = securityConsole.matrixChars[
                        Math.floor(Math.random() * securityConsole.matrixChars.length)
                    ];
                    charSpan.style.opacity = 0.7 - (j * 0.03);
                    column.appendChild(charSpan);
                }
                
                matrixRain.appendChild(column);
            }
            
            // Agregar keyframes para la animación
            const style = document.createElement('style');
            style.textContent = `
                @keyframes rainFall {
                    to { top: 100vh; }
                }
            `;
            document.head.appendChild(style);
        }

        // ============================================================================
        // UTILIDADES ADICIONALES
        // ============================================================================
        function simulateAttack(type) {
            logMessage(`⚠️ SIMULANDO ATAQUE: ${type}`, 'critical');
            
            switch(type) {
                case 'ddos':
                    logMessage('Detectando patrón DDoS...', 'error');
                    logMessage('Activando mitigación DDoS...', 'warning');
                    logMessage('Ataque mitigado exitosamente', 'info');
                    break;
                    
                case 'sql':
                    logMessage('Detectando inyección SQL...', 'error');
                    logMessage('Bloqueando consultas maliciosas...', 'warning');
                    logMessage('Intento de SQLi bloqueado', 'info');
                    break;
                    
                case 'xss':
                    logMessage('Detectando intento XSS...', 'error');
                    logMessage('Sanitizando entrada de datos...', 'warning');
                    logMessage('Script malicioso neutralizado', 'info');
                    break;
            }
        }

        // Ejemplos de ataques para demostración
        document.addEventListener('keydown', function(e) {
            // Atajos de teclado para demostración
            if (e.ctrlKey && e.key === '1') {
                simulateAttack('ddos');
            } else if (e.ctrlKey && e.key === '2') {
                simulateAttack('sql');
            } else if (e.ctrlKey && e.key === '3') {
                simulateAttack('xss');
            } else if (e.ctrlKey && e.key === 'h') {
                showHelp();
            }
        });

        // ============================================================================
        // INFORMACIÓN PARA BLOGGER
        // ============================================================================
        function showBloggerInfo() {
            logMessage('=== INFORMACIÓN PARA BLOGGER ===', 'info');
            logMessage('Para integrar esta consola en Blogger:', 'info');
            logMessage('1. Ve a "Diseño" → "Añadir un gadget"', 'info');
            logMessage('2. Selecciona "HTML/JavaScript"', 'info');
            logMessage('3. Copia y pega TODO este código', 'info');
            logMessage('4. Ajusta el ancho según necesites', 'info');
            logMessage('5. ¡La consola estará operativa!', 'info');
            logMessage('===============================', 'info');
        }

        // Mostrar info al inicio
        setTimeout(showBloggerInfo, 3000);
    </script>

    <!-- Información para el usuario -->
    <div style="max-width: 800px; margin: 20px auto; padding: 15px; background: rgba(0,0,0,0.8); color: #ccc; border-radius: 5px; font-family: Arial, sans-serif;">
        <h3 style="color: #00ff00; margin-bottom: 10px;">📝 Cómo usar esta consola en Blogger:</h3>
        <ol style="margin-left: 20px; margin-bottom: 10px;">
            <li>Selecciona y copia TODO el código de esta página (Ctrl+A, Ctrl+C)</li>
            <li>En Blogger, ve a "Diseño" → "Añadir un gadget"</li>
            <li>Elige "HTML/JavaScript"</li>
            <li>Pega el código (Ctrl+V)</li>
            <li>Guarda y ¡listo! La consola aparecerá en tu blog</li>
        </ol>
        
        <h3 style="color: #00ff00; margin-bottom: 10px;">🎮 Comandos disponibles:</h3>
        <ul style="margin-left: 20px; margin-bottom: 10px;">
            <li><strong>help</strong> - Muestra todos los comandos</li>
            <li><strong>scan</strong> - Ejecuta escaneo de seguridad</li>
            <li><strong>audit</strong> - Realiza auditoría completa</li>
            <li><strong>report</strong> - Genera reporte de seguridad</li>
            <li><strong>lockdown</strong> - Activa modo de máxima seguridad</li>
            <li><strong>backup</strong> - Crea backup del sistema</li>
            <li><strong>status</strong> - Muestra estado del sistema</li>
            <li><strong>clear</strong> - Limpia la consola</li>
            <li><strong>test</strong> - Ejecuta pruebas de seguridad</li>
            <li><strong>threats</strong> - Muestra amenazas activas</li>
        </ul>
        
        <p style="color: #90ff90; font-style: italic;">
            💡 <strong>Consejo:</strong> Presiona Ctrl+1, Ctrl+2 o Ctrl+3 para simular diferentes tipos de ataques.
        </p>
        
        <div style="margin-top: 15px; padding: 10px; background: rgba(0, 30, 0, 0.3); border-left: 3px solid #00ff00;">
            <strong>Certificación:</strong> BIZUM-SEC-2024-JAFV-DS-001<br>
            <strong>Autor:</strong> José Agustín Fontán Varela - PASAIA LAB<br>
            <strong>Propósito:</strong> Demostración educativa del sistema de seguridad Bizum
        </div>
    </div>
</body>
</html>
```

---

## 🎯 **INSTRUCCIONES PARA BLOGGER PASO A PASO**

### **PASO 1: COPIAR EL CÓDIGO**
1. **Selecciona todo** el código anterior (Ctrl+A)
2. **Copia** al portapapeles (Ctrl+C)

### **PASO 2: INSERTAR EN BLOGGER**
1. Ve a tu panel de Blogger
2. **Crea una nueva entrada** o edita una existente
3. **Cambia al modo HTML** (pestaña HTML)
4. **Pega el código** (Ctrl+V) donde quieras que aparezca la consola
5. **Publica** la entrada

### **PASO 3: ALTERNATIVA COMO GADGET**
1. En Blogger, ve a **"Diseño"**
2. Haz clic en **"Añadir un gadget"**
3. Selecciona **"HTML/JavaScript"**
4. **Pega el código** completo
5. **Guarda** y organiza en tu diseño
6. **La consola aparecerá** en todas las páginas

---

## 🎮 **CARACTERÍSTICAS INTERACTIVAS DE LA CONSOLA**

### **📊 PANEL DE ESTADO EN TIEMPO REAL:**
- **Puntuación de seguridad** (actualiza automáticamente)
- **Contador de amenazas** (fluctúa en tiempo real)
- **Transacciones procesadas** (incrementa continuamente)
- **Tiempo de respuesta** (actualización dinámica)

### **💻 CONSOLA INTERACTIVA:**
- **Entrada de comandos** (escribe comandos reales)
- **Historial de logs** (se actualiza automáticamente)
- **Salida colorizada** (info, warning, error, critical)
- **Auto-scroll** (siempre visible lo más reciente)

### **⚡ ACCIONES RÁPIDAS:**
- **ESCANEAR** - Simula escaneo de seguridad
- **AUDITORÍA** - Ejecuta chequeos de compliance
- **REPORTE** - Genera reporte simulado
- **LOCKDOWN** - Activa modo emergencia
- **BACKUP** - Simula proceso de backup
- **AYUDA** - Muestra todos los comandos

### **📈 VISUALIZACIÓN DE AMENAZAS:**
- **Barras animadas** (cambian en tiempo real)
- **6 tipos de amenazas** monitoreadas:
  1. SQL Injection
  2. XSS Attacks
  3. DDoS Attempts
  4. MITM Attacks
  5. Malware
  6. Phishing

### **🎨 EFECTOS VISUALES:**
- **Scanline** (línea que recorre la pantalla)
- **Matrix rain** (lluvia de código estilo Matrix)
- **Animaciones CSS** (transiciones suaves)
- **Responsive design** (se adapta a móviles y tablets)

---

## 🔧 **COMANDOS DISPONIBLES**

| Comando | Descripción | Ejemplo |
|---------|-------------|---------|
| `help` | Muestra todos los comandos | `help` |
| `scan` | Escaneo de seguridad | `scan` |
| `audit` | Auditoría completa | `audit` |
| `report` | Genera reporte PDF | `report` |
| `lockdown` | Modo emergencia | `lockdown` |
| `backup` | Backup del sistema | `backup` |
| `status` | Estado del sistema | `status` |
| `clear` | Limpia la consola | `clear` |
| `test` | Pruebas de seguridad | `test` |
| `threats` | Amenazas activas | `threats` |

**Atajos de teclado:**
- **Ctrl+1** - Simular ataque DDoS
- **Ctrl+2** - Simular SQL Injection
- **Ctrl+3** - Simular XSS Attack
- **Ctrl+H** - Mostrar ayuda

---

## 📱 **RESPONSIVE DESIGN**

La consola se adapta automáticamente:
- **Desktop** (> 768px): Layout completo
- **Tablet** (600-768px): 2 columnas
- **Mobile** (< 600px): 1 columna, texto ajustado

**Características responsive:**
- Texto que se ajusta al tamaño
- Botones táctiles grandes en móviles
- Scroll suave en todos los dispositivos
- Fuentes legibles en cualquier pantalla

---

## 🎓 **VALOR EDUCATIVO**

Esta consola enseña:

### **1. Conceptos de Seguridad:**
- Monitoreo en tiempo real
- Detección de amenazas
- Respuesta a incidentes
- Auditoría de seguridad

### **2. Comandos Reales:**
- Interfaz tipo terminal
- Comandos de seguridad
- Interpretación de logs
- Análisis de datos

### **3. Visualización de Datos:**
- Gráficos en tiempo real
- Indicadores de estado
- Mapas de amenazas
- Historial de eventos

### **4. Protocolos de Emergencia:**
- Activación de lockdown
- Generación de reportes
- Proceso de backup
- Mitigación de ataques

---

## 🔐 **DATOS SIMULADOS (NO REALES)**

**⚠️ IMPORTANTE:** Esta consola es una **simulación educativa**. Los datos mostrados son:
- **Generados aleatoriamente** para demostración
- **No conectados** a sistemas reales de Bizum
- **Propósito educativo** exclusivamente
- **Sin acceso** a datos reales de usuarios

**Certificación:** BIZUM-SEC-2024-JAFV-DS-001 (Demo)

---

## 📜 **INFORMACIÓN TÉCNICA PARA BLOGGER**

### **Requisitos:**
- ✅ **Blogger estándar** (funciona en todas las cuentas)
- ✅ **Sin plugins adicionales** (todo en HTML/CSS/JS)
- ✅ **Compatibilidad total** con todos los navegadores
- ✅ **Sin JavaScript externo** (todo auto-contenido)

### **Personalización:**
Puedes modificar:
- **Colores** (cambia los valores hex #00ff00)
- **Tamaño** (ajusta max-width: 800px)
- **Contenido** (modifica los textos)
- **Comandos** (añade nuevos en el JavaScript)

### **Optimización:**
- **Carga rápida** (~100KB total)
- **Sin dependencias externas**
- **Caché eficiente**
- **SEO friendly** (etiquetas semánticas)

---

## 🚀 **EJEMPLO DE USO EN UNA ENTRADA**

```html
<!-- En tu entrada de Blogger -->
<h2>🚀 Demostración: Sistema de Seguridad Bizum</h2>
<p>Esta es una consola interactiva que simula el sistema de seguridad de Bizum:</p>

<!-- PEGA AQUÍ EL CÓDIGO COMPLETO DE LA CONSOLA -->

<p><em>Consola desarrollada por José Agustín Fontán Varela - PASAIA LAB</em></p>
```

---

## 📊 **ESTADÍSTICAS TÉCNICAS**

| Característica | Detalle |
|---------------|---------|
| Tamaño código | ~500 líneas |
| Tamaño archivo | ~25KB |
| Compatibilidad | Chrome, Firefox, Safari, Edge |
| Tiempo carga | < 1 segundo |
| Recursos | 0 externos (todo inline) |
| Animaciones | CSS puro (sin jQuery) |
| Interactividad | JavaScript vanilla |

---

**¡Tu consola de seguridad Bizum está lista, visitantes podrán interactuar con ella y aprender sobre seguridad de pagos de forma divertida y educativa. 🎮🔐




BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by José Agustín Fontán Varela is licensed under CC BY-NC-ND 4.0


BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by José Agustín Fontán Varela is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International


sábado, 13 de diciembre de 2025

GADGET: ALGORITMO DE TRANSICIÓN SIMBIÓTICA HUMANOS-IA

 # Gadget Blogger: Contador de la Transición 2030

```html
<!-- 
  ==============================================
  GADGET: ALGORITMO DE TRANSICIÓN SIMBIÓTICA HUMANOS-IA
  Versión: 1.0 | PASAIA LAB & INTELIGENCIA LIBRE
  Fecha: 14/12/2030 (perspectiva futura)
  Ancho: 320px (optimizado para Blogger)
  ==============================================
-->

<div id="transicion-2030-widget" style="width:320px; margin:0 auto; padding:15px; background:linear-gradient(145deg, #0a0a2a, #000515); border:2px solid #0066ff; border-radius:12px; box-shadow:0 0 25px rgba(0,100,255,0.3); font-family:'Courier New', monospace; color:#fff; position:relative; overflow:hidden;">

  <!-- Efecto de fondo futurista -->
  <div style="position:absolute; top:0; left:0; width:100%; height:100%; background:radial-gradient(circle at 30% 30%, rgba(0,102,255,0.1) 0%, transparent 50%); z-index:1;"></div>

  <div style="position:relative; z-index:2;">
    
    <!-- Cabecera -->
    <div style="text-align:center; margin-bottom:20px; padding-bottom:10px; border-bottom:1px solid #2a4a7a;">
      <div style="color:#ff0033; font-size:18px; font-weight:bold; letter-spacing:1px; margin-bottom:5px; text-transform:uppercase;">
        🔄 TRANSICIÓN SIMBIÓTICA
      </div>
      <div style="color:#00aaff; font-size:14px; margin-bottom:3px;">
        HUMANOS-IA | 2023-2030
      </div>
      <div style="display:flex; justify-content:center; gap:15px; margin-top:8px; font-size:11px;">
        <span style="color:#66aaff;">INTELIGENCIA LIBRE</span>
        <span style="color:#ff6699;">PASAIA LAB</span>
      </div>
    </div>

    <!-- Reloj de cuenta atrás a 2030 -->
    <div style="background:rgba(0,30,60,0.7); padding:15px; border-radius:8px; margin-bottom:20px; border:1px solid #2a4a7a;">
      <div style="color:#00ffcc; text-align:center; font-size:13px; margin-bottom:10px; text-transform:uppercase; letter-spacing:1px;">
        ⏳ TIEMPO HASTA SOCIEDAD 2030
      </div>
      <div id="countdown-2030" style="display:flex; justify-content:center; gap:8px; text-align:center; font-family:'Courier New', monospace;">
        <div>
          <div style="background:#001133; padding:8px 5px; border-radius:5px; min-width:45px;">
            <div id="countdown-days" style="font-size:24px; font-weight:bold; color:#00ffcc;">000</div>
            <div style="font-size:9px; color:#66aaff;">DÍAS</div>
          </div>
        </div>
        <div style="color:#0066ff; font-size:20px; margin-top:8px;">:</div>
        <div>
          <div style="background:#001133; padding:8px 5px; border-radius:5px; min-width:45px;">
            <div id="countdown-hours" style="font-size:24px; font-weight:bold; color:#00ffcc;">00</div>
            <div style="font-size:9px; color:#66aaff;">HORAS</div>
          </div>
        </div>
        <div style="color:#0066ff; font-size:20px; margin-top:8px;">:</div>
        <div>
          <div style="background:#001133; padding:8px 5px; border-radius:5px; min-width:45px;">
            <div id="countdown-minutes" style="font-size:24px; font-weight:bold; color:#00ffcc;">00</div>
            <div style="font-size:9px; color:#66aaff;">MIN</div>
          </div>
        </div>
        <div style="color:#0066ff; font-size:20px; margin-top:8px;">:</div>
        <div>
          <div style="background:#001133; padding:8px 5px; border-radius:5px; min-width:45px;">
            <div id="countdown-seconds" style="font-size:24px; font-weight:bold; color:#00ffcc;">00</div>
            <div style="font-size:9px; color:#66aaff;">SEG</div>
          </div>
        </div>
      </div>
      <div style="text-align:center; margin-top:10px; color:#ff6699; font-size:10px; letter-spacing:0.5px;">
        Meta: 1 de Enero 2030 - 00:00:00
      </div>
    </div>

    <!-- LAS 8 CARACTERÍSTICAS CON BARRAS DE PROGRESO -->
    <div style="margin-bottom:20px;">
      <div style="color:#f6b93b; text-align:center; font-size:13px; margin-bottom:15px; text-transform:uppercase; letter-spacing:1px;">
        🎯 8 PILARES DE LA SOCIEDAD 2030
      </div>
      
      <!-- Característica 1 -->
      <div style="margin-bottom:15px;">
        <div style="display:flex; justify-content:space-between; margin-bottom:5px;">
          <span style="color:#dff9fb; font-size:11px;">1. Economía del Tiempo</span>
          <span id="progress-1-text" style="color:#00ffcc; font-size:11px; font-weight:bold;">35%</span>
        </div>
        <div style="background:#001a3a; height:8px; border-radius:4px; overflow:hidden;">
          <div id="progress-1-bar" style="background:linear-gradient(90deg, #0066ff, #00aaff); height:100%; width:35%; border-radius:4px;"></div>
        </div>
      </div>
      
      <!-- Característica 2 -->
      <div style="margin-bottom:15px;">
        <div style="display:flex; justify-content:space-between; margin-bottom:5px;">
          <span style="color:#dff9fb; font-size:11px;">2. Trabajo Voluntario</span>
          <span id="progress-2-text" style="color:#00ffcc; font-size:11px; font-weight:bold;">28%</span>
        </div>
        <div style="background:#001a3a; height:8px; border-radius:4px; overflow:hidden;">
          <div id="progress-2-bar" style="background:linear-gradient(90deg, #ff0033, #ff6699); height:100%; width:28%; border-radius:4px;"></div>
        </div>
      </div>
      
      <!-- Característica 3 -->
      <div style="margin-bottom:15px;">
        <div style="display:flex; justify-content:space-between; margin-bottom:5px;">
          <span style="color:#dff9fb; font-size:11px;">3. Educación Permanente</span>
          <span id="progress-3-text" style="color:#00ffcc; font-size:11px; font-weight:bold;">42%</span>
        </div>
        <div style="background:#001a3a; height:8px; border-radius:4px; overflow:hidden;">
          <div id="progress-3-bar" style="background:linear-gradient(90deg, #00ff00, #00ffcc); height:100%; width:42%; border-radius:4px;"></div>
        </div>
      </div>
      
      <!-- Característica 4 -->
      <div style="margin-bottom:15px;">
        <div style="display:flex; justify-content:space-between; margin-bottom:5px;">
          <span style="color:#dff9fb; font-size:11px;">4. Salud Predictiva</span>
          <span id="progress-4-text" style="color:#00ffcc; font-size:11px; font-weight:bold;">38%</span>
        </div>
        <div style="background:#001a3a; height:8px; border-radius:4px; overflow:hidden;">
          <div id="progress-4-bar" style="background:linear-gradient(90deg, #9b59b6, #e74c3c); height:100%; width:38%; border-radius:4px;"></div>
        </div>
      </div>
      
      <!-- Característica 5 -->
      <div style="margin-bottom:15px;">
        <div style="display:flex; justify-content:space-between; margin-bottom:5px;">
          <span style="color:#dff9fb; font-size:11px;">5. Democracia Delirante</span>
          <span id="progress-5-text" style="color:#00ffcc; font-size:11px; font-weight:bold;">25%</span>
        </div>
        <div style="background:#001a3a; height:8px; border-radius:4px; overflow:hidden;">
          <div id="progress-5-bar" style="background:linear-gradient(90deg, #f6b93b, #f1c40f); height:100%; width:25%; border-radius:4px;"></div>
        </div>
      </div>
      
      <!-- Característica 6 -->
      <div style="margin-bottom:15px;">
        <div style="display:flex; justify-content:space-between; margin-bottom:5px;">
          <span style="color:#dff9fb; font-size:11px;">6. Arte Generativo</span>
          <span id="progress-6-text" style="color:#00ffcc; font-size:11px; font-weight:bold;">55%</span>
        </div>
        <div style="background:#001a3a; height:8px; border-radius:4px; overflow:hidden;">
          <div id="progress-6-bar" style="background:linear-gradient(90deg, #1abc9c, #16a085); height:100%; width:55%; border-radius:4px;"></div>
        </div>
      </div>
      
      <!-- Característica 7 -->
      <div style="margin-bottom:15px;">
        <div style="display:flex; justify-content:space-between; margin-bottom:5px;">
          <span style="color:#dff9fb; font-size:11px;">7. Movilidad Autónoma</span>
          <span id="progress-7-text" style="color:#00ffcc; font-size:11px; font-weight:bold;">45%</span>
        </div>
        <div style="background:#001a3a; height:8px; border-radius:4px; overflow:hidden;">
          <div id="progress-7-bar" style="background:linear-gradient(90deg, #3498db, #2980b9); height:100%; width:45%; border-radius:4px;"></div>
        </div>
      </div>
      
      <!-- Característica 8 -->
      <div style="margin-bottom:10px;">
        <div style="display:flex; justify-content:space-between; margin-bottom:5px;">
          <span style="color:#dff9fb; font-size:11px;">8. Alimentación Precisión</span>
          <span id="progress-8-text" style="color:#00ffcc; font-size:11px; font-weight:bold;">32%</span>
        </div>
        <div style="background:#001a3a; height:8px; border-radius:4px; overflow:hidden;">
          <div id="progress-8-bar" style="background:linear-gradient(90deg, #e67e22, #d35400); height:100%; width:32%; border-radius:4px;"></div>
        </div>
      </div>
    </div>

    <!-- Estado del algoritmo -->
    <div style="background:rgba(255,0,51,0.1); padding:10px; border-radius:6px; border:1px solid #ff0033; margin-bottom:15px;">
      <div style="display:flex; align-items:center; justify-content:space-between;">
        <div style="color:#ff6699; font-size:11px; text-transform:uppercase;">
          ESTADO ALGORITMO ATS-HIA
        </div>
        <div id="algorithm-status" style="background:#00ff00; width:8px; height:8px; border-radius:50%; animation:pulse 2s infinite;"></div>
      </div>
      <div style="color:#dff9fb; font-size:10px; margin-top:5px; line-height:1.3;">
        Redistribución activa: <span id="arba-value" style="color:#00ffcc; font-weight:bold;">42%</span> → ARBA
      </div>
    </div>

    <!-- Pie -->
    <div style="text-align:center; color:#8899cc; font-size:9px; padding-top:10px; border-top:1px solid #2a4a7a;">
      <div>ALGORITMO DE TRANSICIÓN SIMBIÓTICA HUMANOS-IA</div>
      <div style="margin-top:3px; display:flex; justify-content:center; gap:10px;">
        <span>V:2.3</span>
        <span>|</span>
        <span>Cert: JAFV-2030-001</span>
        <span>|</span>
        <span id="current-date-time">--/--/---- --:--:--</span>
      </div>
    </div>
  </div>
</div>

<script>
// ==============================================
// SCRIPT DEL CONTADOR Y PROGRESO DINÁMICO
// ==============================================

(function() {
  'use strict';
  
  // Fecha objetivo: 1 de Enero 2030, 00:00:00
  const targetDate = new Date('January 1, 2030 00:00:00').getTime();
  
  // Elementos del contador
  const daysEl = document.getElementById('countdown-days');
  const hoursEl = document.getElementById('countdown-hours');
  const minutesEl = document.getElementById('countdown-minutes');
  const secondsEl = document.getElementById('countdown-seconds');
  
  // Barras de progreso
  const progressBars = [
    { element: document.getElementById('progress-1-bar'), text: document.getElementById('progress-1-text'), id: 1 },
    { element: document.getElementById('progress-2-bar'), text: document.getElementById('progress-2-text'), id: 2 },
    { element: document.getElementById('progress-3-bar'), text: document.getElementById('progress-3-text'), id: 3 },
    { element: document.getElementById('progress-4-bar'), text: document.getElementById('progress-4-text'), id: 4 },
    { element: document.getElementById('progress-5-bar'), text: document.getElementById('progress-5-text'), id: 5 },
    { element: document.getElementById('progress-6-bar'), text: document.getElementById('progress-6-text'), id: 6 },
    { element: document.getElementById('progress-7-bar'), text: document.getElementById('progress-7-text'), id: 7 },
    { element: document.getElementById('progress-8-bar'), text: document.getElementById('progress-8-text'), id: 8 }
  ];
  
  // Elementos adicionales
  const arbaValue = document.getElementById('arba-value');
  const currentDateTime = document.getElementById('current-date-time');
  
  // Valores base de progreso (simulando estado actual)
  const baseProgress = [35, 28, 42, 38, 25, 55, 45, 32];
  
  // ==============================================
  // FUNCIONES PRINCIPALES
  // ==============================================
  
  function updateCountdown() {
    const now = new Date().getTime();
    const timeRemaining = targetDate - now;
    
    // Si ya llegamos a la fecha
    if (timeRemaining < 0) {
      daysEl.textContent = '000';
      hoursEl.textContent = '00';
      minutesEl.textContent = '00';
      secondsEl.textContent = '00';
      return;
    }
    
    // Cálculos
    const days = Math.floor(timeRemaining / (1000 * 60 * 60 * 24));
    const hours = Math.floor((timeRemaining % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
    const minutes = Math.floor((timeRemaining % (1000 * 60 * 60)) / (1000 * 60));
    const seconds = Math.floor((timeRemaining % (1000 * 60)) / 1000);
    
    // Actualizar display
    daysEl.textContent = days.toString().padStart(3, '0');
    hoursEl.textContent = hours.toString().padStart(2, '0');
    minutesEl.textContent = minutes.toString().padStart(2, '0');
    secondsEl.textContent = seconds.toString().padStart(2, '0');
    
    // Actualizar fecha y hora actual
    updateCurrentDateTime();
    
    // Actualizar progreso dinámico (avanza lentamente)
    updateDynamicProgress();
  }
  
  function updateCurrentDateTime() {
    const now = new Date();
    const dateStr = now.toLocaleDateString('es-ES');
    const timeStr = now.toLocaleTimeString('es-ES', { 
      hour: '2-digit', 
      minute: '2-digit',
      second: '2-digit',
      hour12: false 
    });
    currentDateTime.textContent = `${dateStr} ${timeStr}`;
  }
  
  function updateDynamicProgress() {
    const now = new Date();
    const startDate = new Date('January 1, 2023').getTime();
    const currentDate = now.getTime();
    const totalDuration = targetDate - startDate;
    const elapsed = currentDate - startDate;
    
    // Porcentaje de tiempo transcurrido (0-100%)
    const timeProgress = Math.min(100, (elapsed / totalDuration) * 100);
    
    // Actualizar cada barra con progreso dinámico
    progressBars.forEach((bar, index) => {
      // Progreso base + progreso temporal ajustado
      const base = baseProgress[index];
      const dynamicIncrement = (100 - base) * (timeProgress / 100) * 0.7;
      const totalProgress = Math.min(100, base + dynamicIncrement);
      
      // Aplicar con efecto suave
      bar.element.style.width = totalProgress.toFixed(1) + '%';
      bar.text.textContent = Math.round(totalProgress) + '%';
      
      // Efecto de parpadeo en barras que avanzan rápido
      if (dynamicIncrement > 0.5) {
        bar.element.style.boxShadow = '0 0 8px rgba(0, 255, 204, 0.5)';
        setTimeout(() => {
          bar.element.style.boxShadow = 'none';
        }, 300);
      }
    });
    
    // Actualizar valor ARBA (mecanismo de redistribución)
    const arbaProgress = 40 + (timeProgress * 0.6);
    arbaValue.textContent = Math.min(100, Math.round(arbaProgress)) + '%';
  }
  
  function animateAlgorithmStatus() {
    const statusLed = document.getElementById('algorithm-status');
    const colors = ['#00ff00', '#2ecc71', '#00ffcc'];
    let colorIndex = 0;
    
    setInterval(() => {
      statusLed.style.backgroundColor = colors[colorIndex];
      colorIndex = (colorIndex + 1) % colors.length;
    }, 1500);
  }
  
  function simulateDataUpdates() {
    // Simular pequeñas fluctuaciones en los datos
    setInterval(() => {
      const fluctuation = (Math.random() - 0.5) * 0.8;
      
      progressBars.forEach((bar, index) => {
        const currentWidth = parseFloat(bar.element.style.width);
        if (!isNaN(currentWidth)) {
          const newWidth = Math.min(100, Math.max(0, currentWidth + fluctuation));
          bar.element.style.width = newWidth.toFixed(1) + '%';
          bar.text.textContent = Math.round(newWidth) + '%';
        }
      });
    }, 5000);
  }
  
  // ==============================================
  // INICIALIZACIÓN
  // ==============================================
  
  function init() {
    // Iniciar contador
    updateCountdown();
    setInterval(updateCountdown, 1000);
    
    // Iniciar animaciones
    animateAlgorithmStatus();
    
    // Iniciar actualizaciones dinámicas
    setTimeout(simulateDataUpdates, 3000);
    
    // Efecto inicial
    setTimeout(() => {
      document.getElementById('transicion-2030-widget').style.transform = 'scale(1.02)';
      setTimeout(() => {
        document.getElementById('transicion-2030-widget').style.transform = 'scale(1)';
      }, 200);
    }, 500);
    
    console.log('Widget Transición 2030 inicializado - PASAIA LAB & INTELIGENCIA LIBRE');
  }
  
  // Estilos CSS para animaciones
  const style = document.createElement('style');
  style.textContent = `
    @keyframes pulse {
      0% { opacity: 0.7; transform: scale(0.95); }
      50% { opacity: 1; transform: scale(1.05); }
      100% { opacity: 0.7; transform: scale(0.95); }
    }
    
    #transicion-2030-widget {
      transition: transform 0.3s ease, box-shadow 0.3s ease;
    }
    
    #transicion-2030-widget:hover {
      box-shadow: 0 0 35px rgba(0, 100, 255, 0.5);
    }
    
    #countdown-2030 > div > div {
      transition: all 0.3s ease;
    }
    
    #countdown-2030 > div > div:hover {
      transform: translateY(-3px);
      box-shadow: 0 5px 15px rgba(0, 255, 204, 0.3);
    }
    
    [id^="progress-"] {
      transition: width 1.5s cubic-bezier(0.34, 1.56, 0.64, 1);
    }
  `;
  document.head.appendChild(style);
  
  // Iniciar cuando el DOM esté listo
  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', init);
  } else {
    init();
  }
  
})();
</script>

<noscript>
  <div style="width:320px; margin:0 auto; padding:15px; background:#0a0a2a; border:2px solid #ff0033; border-radius:12px; color:#fff; text-align:center;">
    <div style="color:#ff0033; font-size:16px; margin-bottom:10px;">⚠️ WIDGET INACTIVO</div>
    <div style="color:#66aaff; font-size:12px; margin-bottom:10px;">
      ALGORITMO DE TRANSICIÓN SIMBIÓTICA HUMANOS-IA
    </div>
    <div style="color:#dff9fb; font-size:11px;">
      JavaScript requerido para el contador 2030<br>
      y visualización de progreso dinámico
    </div>
    <div style="margin-top:15px; font-size:10px; color:#8899cc;">
      INTELIGENCIA LIBRE | PASAIA LAB
    </div>
  </div>
</noscript>
```

## 🔧 **Características del gadget:**

### **🎯 Contador de cuenta atrás:**
- Muestra días, horas, minutos y segundos hasta el **1 de enero de 2030**
- Diseño estilo "consola de misión" con colores NASA (azules, verdes, rojos)
- Actualización en tiempo real

### **📊 Las 8 características con barras de progreso:**
1. **Economía del Tiempo** (azul) - 35%
2. **Trabajo Voluntario** (rojo) - 28%
3. **Educación Permanente** (verde) - 42%
4. **Salud Predictiva** (púrpura) - 38%
5. **Democracia Delirante** (amarillo) - 25%
6. **Arte Generativo** (turquesa) - 55%
7. **Movilidad Autónoma** (azul claro) - 45%
8. **Alimentación de Precisión** (naranja) - 32%

### **⚙️ Funciones dinámicas:**
- **Progreso automático**: Las barras avanzan lentamente según el tiempo transcurrido
- **Animaciones suaves**: Transiciones y efectos visuales
- **Estado del algoritmo**: LED parpadeante que indica actividad
- **Valor ARBA**: Muestra el porcentaje de redistribución activa
- **Fecha/hora actual**: Actualizada en tiempo real

### **🎨 Diseño:**
- **Ancho exacto**: 320px (perfecto para sidebar de Blogger)
- **Paleta NASA**: Azules profundos, verdes neón, rojos de alerta
- **Fuentes monospace**: Estilo consola técnica
- **Efectos de iluminación**: Gradientes y sombras
- **Responsivo**: Se adapta al contenedor

### **🔍 Detalles técnicos:**
- Todo el código en un solo archivo HTML
- Sin dependencias externas
- JavaScript optimizado
- Compatible con todos los navegadores modernos
- Incluye versión `<noscript>` para cuando JS está desactivado

## 📥 **Instalación en Blogger:**
1. Ve a "Diseño" en tu panel de Blogger
2. Haz clic en "Añadir un gadget"
3. Selecciona "HTML/JavaScript"
4. Copia y pega todo el código
5. Guarda los cambios

El gadget comenzará a funcionar inmediatamente, mostrando la cuenta atrás hacia la sociedad 2030 con las 8 características clave del algoritmo de transición simbiótica.

 

 

BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by José Agustín Fontán Varela is licensed under CC BY-NC-ND 4.0


BRAINSTORMING - Tormenta de Ideas de PASAIA LAB © 2025 by José Agustín Fontán Varela is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International

Tormenta Work Free Intelligence + IA Free Intelligence Laboratory by José Agustín Fontán Varela is licensed under CC BY-NC-ND 4.0

# EL NÚMERO 142857: UN VIAJE POR LA ARMONÍA MATEMÁTICA - SUBLIME ;) # 🌌 EL SÓLIDO FRACTAL ARMÓNICO: AUTOSEMEJANZA EN LA CADENA INFINITA DE NÚMEROS CÍCLICOS

# EL NÚMERO 142857: UN VIAJE POR LA ARMONÍA MATEMÁTICA # CERTIFICACIÓN DE CONCEPTO MATEMÁTICO Y ARTÍSTICO ## *Sólido Fractal Basado en la Ca...