Drawaria Android Phone Mod

Un teléfono celular Android interactivo, animado y detallado dentro de Drawaria.online.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Drawaria Android Phone Mod
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Un teléfono celular Android interactivo, animado y detallado dentro de Drawaria.online.
// @author       YouTubeDrawaria
// @match        https://drawaria.online/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=drawaria.online
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // --- Contexto de Audio para generar sonidos ---
    const audioContext = new (window.AudioContext || window.webkitAudioContext)();

    // Función para reproducir un tono simple
    function playTone(frequency, duration, type = 'sine', volume = 0.1) {
        if (!audioContext) return;
        const oscillator = audioContext.createOscillator();
        const gainNode = audioContext.createGain();

        oscillator.connect(gainNode);
        gainNode.connect(audioContext.destination);

        oscillator.type = type;
        oscillator.frequency.setValueAtTime(frequency, audioContext.currentTime);
        gainNode.gain.setValueAtTime(volume, audioContext.currentTime);
        gainNode.gain.exponentialRampToValueAtTime(0.001, audioContext.currentTime + duration);

        oscillator.start();
        oscillator.stop(audioContext.currentTime + duration);
    }

    // --- Custom Sound Melody ---
    function playMelody() {
        if (!audioContext) return;
        const melodyNotes = [
            { freq: 523.25, duration: 0.15, type: 'sine' }, // C5
            { freq: 587.33, duration: 0.15, type: 'sine' }, // D5
            { freq: 659.25, duration: 0.15, type: 'sine' }, // E5
            { freq: 587.33, duration: 0.15, type: 'sine' }, // D5
            { freq: 523.25, duration: 0.2, type: 'sine' },  // C5
            { freq: null, duration: 0.1, type: 'sine' },    // Pause
            { freq: 493.88, duration: 0.15, type: 'sine' }, // B4
            { freq: 587.33, duration: 0.15, type: 'sine' }, // D5
            { freq: 659.25, duration: 0.2, type: 'sine' }  // E5
        ];
        const baseVolume = volumeControl.value * 0.3; // Adjust base volume for melody

        melodyNotes.forEach((note, index) => {
            if (note.freq !== null) {
                setTimeout(() => {
                    playTone(note.freq, note.duration, note.type, baseVolume);
                }, index * 150); // Stagger the notes
            }
        });
    }


    // --- Inyectar Estilos CSS ---
    const style = document.createElement('style');
    style.innerHTML = `
        /* Animaciones */
        @keyframes glowing {
            0% { box-shadow: 0 0 5px rgba(0, 255, 255, 0.7), 0 0 10px rgba(0, 255, 255, 0.5); }
            50% { box-shadow: 0 0 15px rgba(0, 255, 255, 1), 0 0 25px rgba(0, 255, 255, 0.8); }
            100% { box-shadow: 0 0 5px rgba(0, 255, 255, 0.7), 0 0 10px rgba(0, 255, 255, 0.5); }
        }

        @keyframes pulse {
            0% { transform: scale(1); opacity: 1; }
            50% { transform: scale(1.05); opacity: 0.8; }
            100% { transform: scale(1); opacity: 1; }
        }

        @keyframes incomingCallAnimation {
            0% { transform: scale(1); opacity: 1; }
            25% { transform: scale(1.02); opacity: 0.95; }
            50% { transform: scale(1); opacity: 1; }
            75% { transform: scale(1.02); opacity: 0.95; }
            100% { transform: scale(1); opacity: 1; }
        }

        @keyframes particleFlow {
            0% { transform: translate(0, 0) scale(1); opacity: 1; }
            100% { transform: translate(var(--x), var(--y)) scale(0); opacity: 0; }
        }

        @keyframes slideIn {
            0% { transform: translateX(100%); opacity: 0; }
            100% { transform: translateX(0); opacity: 1; }
        }

        @keyframes rotate {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }

        /* Contenedor principal del teléfono */
        #omni-phone-container {
            position: fixed;
            top: 20px; /* Initial position */
            left: calc(100% - 320px); /* Initial position, adjust as needed */
            width: 300px;
            height: 600px;
            background: linear-gradient(to bottom right, #2c2c2c, #1a1a1a);
            border-radius: 40px;
            box-shadow: 0 0 30px rgba(0,0,0,0.8), inset 0 0 15px rgba(255,255,255,0.1);
            border: 8px solid #000;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            z-index: 10000; /* High z-index to stay on top */
            transform-origin: bottom right;
            transition: transform 0.3s ease-in-out, opacity 0.3s ease-in-out;
            transform: rotateY(0deg) rotateX(0deg) scale(1);
            perspective: 1000px;
            cursor: grab; /* Indicate that it's draggable */
        }

        #omni-phone-container.dragging,
        #omni-phone-container.dragging * {
             cursor: grabbing !important; /* Change cursor while dragging */
             user-select: none; /* Prevent text selection during drag */
             -webkit-user-select: none;
             -moz-user-select: none;
             -ms-user-select: none;
        }

        /* Estado minimizado del teléfono */
        #omni-phone-container.minimized {
            transform: scale(0.1) translate(1300%, 1300%);
            opacity: 0;
            pointer-events: none;
        }

        /* Encabezado del teléfono (área de la muesca) */
        #omni-phone-header {
            height: 30px;
            background: #000;
            border-top-left-radius: 32px;
            border-top-right-radius: 32px;
            display: flex;
            justify-content: center;
            align-items: center;
            position: relative;
            z-index: 2;
        }

        #omni-phone-notch {
            width: 100px;
            height: 25px;
            background: #0d0d0d;
            border-bottom-left-radius: 15px;
            border-bottom-right-radius: 15px;
            display: flex;
            justify-content: space-around;
            align-items: center;
            padding-top: 5px;
        }

        #omni-phone-camera {
            width: 8px;
            height: 8px;
            background-color: #333;
            border-radius: 50%;
            border: 1px solid #444;
            box-shadow: inset 0 0 2px rgba(0,0,0,0.5);
        }

        #omni-phone-speaker {
            width: 30px;
            height: 3px;
            background-color: #333;
            border-radius: 2px;
        }

        /* Pantalla del teléfono */
        #omni-phone-screen {
            flex-grow: 1;
            background: linear-gradient(to top, #1a1a1a, #0a0a0a);
            color: #eee;
            font-family: 'Roboto', sans-serif;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            padding: 10px;
            position: relative;
            overflow: hidden;
            border-bottom-left-radius: 10px;
            border-bottom-right-radius: 10px;
        }

        .screen-content {
            width: 100%;
            height: 100%;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            text-align: center;
            animation: slideIn 0.5s ease-out;
            position: absolute;
            top: 0;
            left: 0;
            padding: 10px;
            box-sizing: border-box;
            opacity: 0;
            transition: opacity 0.3s ease-in-out;
            pointer-events: none; /* Initially not interactive */
            z-index: 1; /* Lower z-index than active */
        }

        .screen-content.active {
            opacity: 1;
            position: relative;
            pointer-events: auto; /* Make active screen interactive */
            z-index: 5; /* Higher z-index for active screen */
        }

        /* Pantalla de Inicio (Home Screen) */
        #omni-phone-home-screen {
            background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100"><rect width="100%" height="100%" fill="%231a1a1a"/><circle cx="20" cy="20" r="4" fill="%23333"/><circle cx="50" cy="50" r="5" fill="%23555"/><circle cx="80" cy="80" r="6" fill="%23777"/></svg>') repeat;
            background-size: 15px 15px;
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 15px;
            padding: 20px;
            align-items: center;
            justify-content: center;
            width: 100%;
            height: 100%;
            box-sizing: border-box;
        }

        .omni-app-icon {
            width: 60px;
            height: 60px;
            background-color: #333;
            border-radius: 15px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            font-size: 28px;
            color: #fff;
            cursor: pointer;
            transition: transform 0.2s ease-in-out, background-color 0.2s ease-in-out;
            box-shadow: 0 4px 8px rgba(0,0,0,0.5);
            position: relative;
            z-index: 10; /* Ensure icons are clickable */
        }

        .omni-app-icon:hover {
            transform: scale(1.05);
            background-color: #444;
        }

        .omni-app-icon span {
            font-size: 12px;
            margin-top: 5px;
        }

        /* Formas de los iconos de aplicaciones usando CSS puro */
        .omni-app-icon.phone::before { content: ''; width: 25px; height: 25px; border: 2px solid #fff; border-radius: 3px; transform: rotate(-45deg); box-sizing: border-box; border-top-color: transparent; border-left-color: transparent; position: absolute; top: 15px; left: 17px; }
        .omni-app-icon.phone::after { content: ''; width: 3px; height: 10px; background-color: #fff; position: absolute; top: 25px; left: 28px; transform: rotate(-45deg); }
        .omni-app-icon.messages::before { content: ''; width: 30px; height: 20px; border: 2px solid #fff; border-radius: 5px; position: absolute; top: 15px; left: 15px; }
        .omni-app-icon.messages::after { content: ''; width: 0; height: 0; border-left: 8px solid transparent; border-right: 8px solid transparent; border-top: 8px solid #fff; position: absolute; top: 35px; left: 22px; }
        .omni-app-icon.settings::before { content: ''; width: 25px; height: 25px; border: 2px solid #fff; border-radius: 50%; position: absolute; top: 15px; left: 17px; animation: rotate 5s linear infinite; }
        .omni-app-icon.settings::after { content: ''; width: 4px; height: 12px; background-color: #fff; position: absolute; top: 19px; left: 27px; transform-origin: bottom; transform: rotate(45deg); }

        /* Pantalla de llamada */
        #omni-phone-call-screen, #omni-phone-message-screen {
            background-color: rgba(0,0,0,0.7);
            color: #eee;
            padding: 20px;
            border-radius: 10px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            width: 90%;
            max-height: 90%;
            box-sizing: border-box;
        }

        #call-status {
            font-size: 24px;
            margin-bottom: 20px;
            animation: incomingCallAnimation 1s infinite alternate;
        }

        #call-controls button {
            width: 60px;
            height: 60px;
            border-radius: 50%;
            border: none;
            margin: 0 10px;
            font-size: 30px;
            cursor: pointer;
            transition: background-color 0.2s ease-in-out, transform 0.2s ease-in-out;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            color: white;
            z-index: 10; /* Ensure buttons are clickable */
        }

        #call-controls button.answer { background-color: #4CAF50; }
        #call-controls button.answer:hover { background-color: #45a049; transform: scale(1.1); }
        #call-controls button.decline { background-color: #F44336; }
        #call-controls button.decline:hover { background-color: #d32f2f; transform: scale(1.1); }

        /* Pantalla de mensajes */
        #messages-list {
            width: 100%;
            height: 200px; /* Fixed height for the message list */
            background-color: rgba(255,255,255,0.1);
            border-radius: 8px;
            padding: 10px;
            overflow-y: auto; /* Add scroll for messages */
            margin-bottom: 10px;
            text-align: left;
            display: flex;
            flex-direction: column;
            gap: 5px;
            box-sizing: border-box; /* Include padding in height calculation */
        }

        .message-bubble {
            background-color: #007bff;
            color: white;
            padding: 8px 12px;
            border-radius: 15px;
            max-width: 80%;
            word-wrap: break-word;
            align-self: flex-start;
        }

        .message-bubble.sent {
            align-self: flex-end;
            background-color: #28a745;
        }

        #message-input-container {
            display: flex;
            width: 100%;
            margin-top: 10px; /* Add some space above the input */
        }

        #message-input {
            flex-grow: 1;
            padding: 8px;
            border-radius: 5px;
            border: 1px solid #555;
            background-color: #333;
            color: #eee;
            margin-right: 5px;
        }

        /* Replaced the send button with a sound button */
        #omni-message-sound-btn {
            background-color: #007bff;
            color: white;
            border: none;
            padding: 8px 15px;
            border-radius: 5px;
            cursor: pointer;
            z-index: 10; /* Ensure button is clickable */
            font-size: 20px; /* Adjust font size for icon */
            display: flex;
            align-items: center;
            justify-content: center;
            width: 50px; /* Fixed width for consistency */
        }
        #omni-message-sound-btn:hover { background-color: #0056b3; }

        /* Pie de página (botones de navegación) */
        #omni-phone-footer {
            height: 50px;
            background: linear-gradient(to top, #0d0d0d, #1a1a1a);
            border-bottom-left-radius: 32px;
            border-bottom-right-radius: 32px;
            display: flex;
            justify-content: space-around;
            align-items: center;
            padding: 0 10px;
            z-index: 2;
        }

        .omni-nav-button {
            width: 40px;
            height: 40px;
            border-radius: 50%;
            background-color: #333;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 20px;
            color: #aaa;
            cursor: pointer;
            transition: background-color 0.2s ease-in-out, transform 0.2s ease-in-out;
            position: relative;
            z-index: 10; /* Ensure buttons are clickable */
        }
        .omni-nav-button:hover {
            background-color: #555;
            transform: scale(1.1);
        }

        /* Iconos de botones de navegación (creados con CSS) */
        .omni-nav-button.home-btn::before { content: ''; width: 25px; height: 25px; border: 2px solid #aaa; border-radius: 50%; }
        .omni-nav-button.back-btn::before { content: ''; width: 0; height: 0; border-top: 10px solid transparent; border-bottom: 10px solid transparent; border-right: 10px solid #aaa; transform: translateX(-2px); }
        .omni-nav-button.recent-btn::before { content: ''; width: 18px; height: 18px; border: 2px solid #aaa; border-radius: 3px; }

        /* Botón para alternar visibilidad del teléfono */
        .omni-toggle-button {
            position: fixed;
            bottom: 20px;
            right: 330px;
            width: 50px;
            height: 50px;
            background-color: #4CAF50;
            color: white;
            border-radius: 50%;
            border: none;
            font-size: 24px;
            cursor: pointer;
            z-index: 10001; /* Even higher z-index */
            box-shadow: 0 0 15px rgba(76, 175, 80, 0.7);
            animation: glowing 1.5s infinite alternate;
        }

        /* Partículas en pantalla */
        .omni-particle {
            position: absolute;
            background-color: rgba(255, 255, 255, 0.7);
            border-radius: 50%;
            animation: particleFlow 2s forwards ease-out;
            pointer-events: none;
            opacity: 0;
        }
    `;
    document.head.appendChild(style);

    // --- Estructura HTML para el Teléfono ---
    const phoneContainer = document.createElement('div');
    phoneContainer.id = 'omni-phone-container';
    phoneContainer.innerHTML = `
        <div id="omni-phone-header">
            <div id="omni-phone-notch">
                <div id="omni-phone-camera"></div>
                <div id="omni-phone-speaker"></div>
                <div id="omni-phone-camera"></div>
            </div>
        </div>
        <div id="omni-phone-screen">
            <div id="omni-phone-home-screen" class="screen-content active">
                <div class="omni-app-icon phone" data-app="call"><span>Llamar</span></div>
                <div class="omni-app-icon messages" data-app="messages"><span>Mensajes</span></div>
                <div class="omni-app-icon settings" data-app="settings"><span>Ajustes</span></div>
            </div>
            <div id="omni-phone-call-screen" class="screen-content">
                <p id="call-status">Llamada entrante de:</p>
                <h2 id="caller-name">Número Desconocido</h2>
                <div id="call-controls">
                    <button class="answer" data-action="answer">📞</button>
                    <button class="decline" data-action="decline">❌</button>
                </div>
            </div>
            <div id="omni-phone-message-screen" class="screen-content">
                <h3>Mensajes</h3>
                <div id="messages-list">
                    <!-- Messages will be loaded here -->
                </div>
                <div id="message-input-container">
                    <input type="text" id="message-input" placeholder="Escribe un mensaje...">
                    <!-- Replaced send button with sound button -->
                    <button id="omni-message-sound-btn" data-action="playMelody">🎵</button>
                </div>
            </div>
            <div id="omni-phone-settings-screen" class="screen-content">
                <h3>Ajustes</h3>
                <p>Volumen: <input type="range" id="volume-control" min="0" max="1" step="0.1" value="0.1"></p>
                <p>Brillo: <input type="range" id="brightness-control" min="0" max="1" step="0.05" value="1"></p>
                <button id="easter-egg-btn" style="background-color: #673AB7; color: white; padding: 10px; border: none; border-radius: 5px; margin-top: 20px; cursor: pointer;">Activar Sorpresa 🎉</button>
            </div>
        </div>
        <div id="omni-phone-footer">
            <div class="omni-nav-button back-btn" data-nav="back"></div>
            <div class="omni-nav-button home-btn" data-nav="home"></div>
            <div class="omni-nav-button recent-btn" data-nav="recent"></div>
        </div>
    `;
    document.body.appendChild(phoneContainer);

    // Botón para mostrar/ocultar el teléfono
    const toggleButton = document.createElement('button');
    toggleButton.id = 'omni-toggle-button';
    toggleButton.innerHTML = '📱';
    document.body.appendChild(toggleButton);

    // --- Lógica JavaScript ---
    let currentScreen = 'home';
    const screenContents = document.querySelectorAll('.screen-content');
    const screenElement = document.getElementById('omni-phone-screen');
    const messagesList = document.getElementById('messages-list');
    const messageInput = document.getElementById('message-input');
    const soundBtn = document.getElementById('omni-message-sound-btn'); // Get the new sound button
    const volumeControl = document.getElementById('volume-control');
    const brightnessControl = document.getElementById('brightness-control');
    const easterEggBtn = document.getElementById('easter-egg-btn');

    // --- Draggable Functionality ---
    let isDragging = false;
    let offsetX, offsetY;

    phoneContainer.addEventListener('mousedown', (e) => {
        if (e.target === phoneContainer || e.target.closest('#omni-phone-header')) {
            isDragging = true;
            phoneContainer.classList.add('dragging');

            offsetX = e.clientX - phoneContainer.getBoundingClientRect().left;
            offsetY = e.clientY - phoneContainer.getBoundingClientRect().top;

            e.preventDefault();
        }
    });

    document.addEventListener('mousemove', (e) => {
        if (!isDragging) return;

        phoneContainer.style.left = `${e.clientX - offsetX}px`;
        phoneContainer.style.top = `${e.clientY - offsetY}px`;
        phoneContainer.style.transition = 'none';
    });

    document.addEventListener('mouseup', () => {
        if (isDragging) {
            isDragging = false;
            phoneContainer.classList.remove('dragging');
            phoneContainer.style.transition = 'transform 0.3s ease-in-out, opacity 0.3s ease-in-out';
        }
    });

    phoneContainer.ondragstart = function() { return false; };

    // Muestra la pantalla especificada
    function showScreen(screenId) {
        screenContents.forEach(screen => {
            screen.classList.remove('active');
        });
        const nextScreen = document.getElementById(`omni-phone-${screenId}-screen`);
        if(nextScreen) {
            nextScreen.classList.add('active');
            currentScreen = screenId;
        } else {
            console.error(`Screen with ID: omni-phone-${screenId}-screen not found.`);
            showScreen('home');
        }
        playTone(660, 0.08, 'sine', 0.05);
    }

    // Ensure the home screen is active on load
    showScreen('home');

    // Handle clicks on app icons
    document.querySelectorAll('.omni-app-icon').forEach(icon => {
        icon.addEventListener('click', function() {
            const app = this.dataset.app;
            if (app === 'call') {
                triggerIncomingCall();
            } else if (app === 'messages') {
                showScreen('messages');
                if (messagesList.children.length === 0) {
                    addMessage("¡Bienvenido a tus mensajes!", "received");
                }
            }
             else {
                showScreen(app);
            }
        });
    });

    // Handle clicks on navigation buttons
    document.querySelectorAll('.omni-nav-button').forEach(button => {
        button.addEventListener('click', function() {
            const nav = this.dataset.nav;
            if (nav === 'home') {
                showScreen('home');
            } else if (nav === 'back') {
                if (currentScreen !== 'home') {
                    showScreen('home');
                }
            } else if (nav === 'recent') {
                showScreen('home');
            }
        });
    });

    // Toggle phone visibility
    toggleButton.addEventListener('click', () => {
        phoneContainer.classList.toggle('minimized');
        toggleButton.textContent = phoneContainer.classList.contains('minimized') ? '▶' : '📱';
        playTone(700, 0.1, 'square', 0.08);
    });

    // --- Simulated Call Logic ---
    let callTimeout;
    let ringtoneOscillator;

    function triggerIncomingCall() {
        showScreen('call');
        const callerName = "Número Desconocido";
        document.getElementById('caller-name').textContent = callerName;
        document.getElementById('call-status').textContent = "Llamada entrante de:";
        playRingtone();

        callTimeout = setTimeout(() => {
            document.getElementById('call-status').textContent = "Llamada perdida.";
            stopRingtone();
            setTimeout(() => showScreen('home'), 2000);
        }, 15000);
    }

    function playRingtone() {
        if (ringtoneOscillator) stopRingtone();

        ringtoneOscillator = audioContext.createOscillator();
        const gainNode = audioContext.createGain();
        ringtoneOscillator.connect(gainNode);
        gainNode.connect(audioContext.destination);

        ringtoneOscillator.type = 'triangle';
        gainNode.gain.setValueAtTime(volumeControl.value * 0.5, audioContext.currentTime);

        let time = audioContext.currentTime;
        ringtoneOscillator.frequency.setValueAtTime(800, time);
        gainNode.gain.linearRampToValueAtTime(0.01, time + 0.5);
        time += 0.5;
        ringtoneOscillator.frequency.setValueAtTime(600, time);
        gainNode.gain.linearRampToValueAtTime(volumeControl.value * 0.5, time + 0.5);
        time += 0.5;

        setInterval(() => {
            let loopTime = audioContext.currentTime;
            ringtoneOscillator.frequency.setValueAtTime(800, loopTime);
            gainNode.gain.setValueAtTime(volumeControl.value * 0.5, loopTime);
            gainNode.gain.linearRampToValueAtTime(0.01, loopTime + 0.5);
            loopTime += 0.5;
            ringtoneOscillator.frequency.setValueAtTime(600, loopTime);
            gainNode.gain.linearRampToValueAtTime(volumeControl.value * 0.5, loopTime + 0.5);
        }, 1000);

        ringtoneOscillator.start();
    }

    function stopRingtone() {
        if (ringtoneOscillator) {
            ringtoneOscillator.stop();
            ringtoneOscillator.disconnect();
            ringtoneOscillator = null;
        }
        if (callTimeout) {
            clearTimeout(callTimeout);
            callTimeout = null;
        }
    }

    document.querySelector('#call-controls .answer').addEventListener('click', () => {
        stopRingtone();
        document.getElementById('call-status').textContent = "Llamada en curso...";
        playTone(1000, 0.2, 'sine', 0.1);
        setTimeout(() => showScreen('home'), 3000);
    });

    document.querySelector('#call-controls .decline').addEventListener('click', () => {
        stopRingtone();
        document.getElementById('call-status').textContent = "Llamada finalizada.";
        playTone(200, 0.3, 'sawtooth', 0.1);
        setTimeout(() => showScreen('home'), 1000);
    });

    // --- Message Logic ---
    function addMessage(text, type = 'received') {
        const bubble = document.createElement('div');
        bubble.classList.add('message-bubble', type);
        bubble.textContent = text;
        messagesList.appendChild(bubble);
        messagesList.scrollTop = messagesList.scrollHeight;
    }

    // This function will now trigger the melody instead of sending a message
    function handleSoundButton() {
        playMelody();
    }

    // Event listener for the new sound button
    soundBtn.addEventListener('click', handleSoundButton);

    // --- Settings Logic ---
    volumeControl.addEventListener('input', (e) => {
        playTone(500, 0.1, 'sine', e.target.value * 0.8);
    });

    brightnessControl.addEventListener('input', (e) => {
        screenElement.style.filter = `brightness(${e.target.value})`;
    });

    // --- Particle Effects ---
    function createParticle(event) {
        const particle = document.createElement('div');
        particle.classList.add('omni-particle');
        screenElement.appendChild(particle);

        const rect = screenElement.getBoundingClientRect();
        const x = event.clientX - rect.left;
        const y = event.clientY - rect.top;

        particle.style.left = `${x}px`;
        particle.style.top = `${y}px`;
        particle.style.width = `${Math.random() * 5 + 3}px`;
        particle.style.height = particle.style.width;
        particle.style.opacity = Math.random() * 0.5 + 0.5;

        const targetX = (Math.random() - 0.5) * 100 + x;
        const targetY = (Math.random() - 0.5) * 100 + y;

        particle.style.setProperty('--x', `${targetX - x}px`);
        particle.style.setProperty('--y', `${targetY - y}px`);

        setTimeout(() => {
            particle.remove();
        }, 2000);
    }

    screenElement.addEventListener('mousemove', (e) => {
        if (Math.random() < 0.1) {
            createParticle(e);
        }
    });

    // --- Easter Egg ---
    let surpriseActive = false;
    let surpriseInterval;

    easterEggBtn.addEventListener('click', () => {
        surpriseActive = !surpriseActive;
        if (surpriseActive) {
            easterEggBtn.textContent = 'Desactivar Sorpresa 😔';
            startSurpriseEffect();
            playTone(1500, 0.5, 'sawtooth', 0.2);
        } else {
            easterEggBtn.textContent = 'Activar Sorpresa 🎉';
            stopSurpriseEffect();
            playTone(300, 0.5, 'square', 0.2);
        }
    });

    function startSurpriseEffect() {
        surpriseInterval = setInterval(() => {
            const colors = ['#ff00ff', '#00ffff', '#ffff00', '#ff8800', '#8800ff'];
            const randomColor = colors[Math.floor(Math.random() * colors.length)];
            phoneContainer.style.boxShadow = `0 0 30px ${randomColor}, inset 0 0 15px rgba(255,255,255,0.1)`;
            phoneContainer.style.background = `linear-gradient(to bottom right, ${randomColor}cc, ${randomColor}88)`;

            const appIcons = document.querySelectorAll('.omni-app-icon');
            if (appIcons.length > 0) {
                const randomIcon = appIcons[Math.floor(Math.random() * appIcons.length)];
                randomIcon.style.animation = 'glowing 1s infinite alternate';
                setTimeout(() => {
                    randomIcon.style.animation = 'none';
                }, 800);
            }
        }, 500);
    }

    function stopSurpriseEffect() {
        clearInterval(surpriseInterval);
        phoneContainer.style.boxShadow = '0 0 30px rgba(0,0,0,0.8), inset 0 0 15px rgba(255,255,255,0.1)';
        phoneContainer.style.background = 'linear-gradient(to bottom right, #2c2c2c, #1a1a1a)';
        document.querySelectorAll('.omni-app-icon').forEach(icon => {
            icon.style.animation = 'none';
        });
    }

    // --- Pseudo-3D Effect (Tilt with mouse) ---
    phoneContainer.addEventListener('mousemove', (e) => {
        const rect = phoneContainer.getBoundingClientRect();
        const centerX = rect.left + rect.width / 2;
        const centerY = rect.top + rect.height / 2;

        const rotateX = (e.clientY - centerY) / rect.height * -10;
        const rotateY = (e.clientX - centerX) / rect.width * 10;

        phoneContainer.style.transform = `perspective(1000px) rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(1)`;
    });

    phoneContainer.addEventListener('mouseleave', () => {
        phoneContainer.style.transform = `perspective(1000px) rotateX(0deg) rotateY(0deg) scale(1)`;
    });

    // Initial brightness setting
    screenElement.style.filter = `brightness(${brightnessControl.value})`;

    console.log("Drawaria OmniPhone script loaded successfully!");
})();