Greasy Fork

Greasy Fork is available in English.

Drawaria.online Neon

Modern, realistic, neon theme for Drawaria.online with animations and effects.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Drawaria.online Neon
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  Modern, realistic, neon theme for Drawaria.online with animations and effects.
// @author       YouTubeDrawaria
// @icon         https://www.google.com/s2/favicons?sz=64&domain=drawaria.online
// @match        https://drawaria.online/*
// @require      https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js
// @grant        GM_addStyle
// @grant        GM_getResourceText
// @grant        GM_xmlhttpRequest
// @connect      fonts.googleapis.com
// @connect      fonts.gstatic.com
// @run-at       document-start
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Fetch and inject Google Font
    GM_xmlhttpRequest({
        method: "GET",
        url: "https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&display=swap",
        onload: function(response) {
            GM_addStyle(response.responseText);
        }
    });

    const neonStyles = `
        /* --- Variables de Color Neón --- */
        :root {
            --neon-cyan: #00ffff;
            --neon-magenta: #ff00ff;
            --neon-pink: #ff33cc;
            --neon-blue: #3366ff;
            --neon-green: #39ff14;
            --dark-bg: #0f0c29; /* Fondo principal oscuro */
            --dark-bg-alt: #1a123f; /* Fondo alternativo para paneles */
            --glow-text-shadow: 0 0 5px var(--neon-cyan),
                                0 0 10px var(--neon-cyan),
                                0 0 15px var(--neon-cyan),
                                0 0 20px var(--neon-blue);
            --glow-box-shadow: 0 0 8px var(--neon-magenta),
                               0 0 15px var(--neon-magenta),
                               0 0 20px var(--neon-pink);
            --glow-border: 2px solid var(--neon-cyan);
        }

        /* --- Estilos Globales --- */
        body, html {
            background: var(--dark-bg) !important;
            background-image: linear-gradient(to right top, #0f0c29, #120e30, #151037, #18123e, #1b1445) !important;
            color: var(--neon-cyan) !important;
            font-family: 'Orbitron', sans-serif !important;
            height: 100%;
            overflow-x: hidden; /* Evitar scroll horizontal por glows */
        }

        /* Eliminar el patrón de fondo original */
        body {
            background-image: none !important;
        }


        a {
            color: var(--neon-pink) !important;
            text-decoration: none !important;
            transition: color 0.3s ease, text-shadow 0.3s ease;
        }
        a:hover {
            color: var(--neon-cyan) !important;
            text-shadow: var(--glow-text-shadow);
        }

        h1, h2, h3, h4, h5, h6 {
            color: var(--neon-magenta) !important;
            text-shadow: 0 0 5px var(--neon-magenta), 0 0 10px var(--neon-pink);
        }

        /* --- Layout Principal y Paneles --- */
        #main {
            background-color: transparent !important;
        }

        #leftbar, #rightbar {
            background: var(--dark-bg-alt) !important;
            border-color: var(--neon-blue) !important;
            box-shadow: var(--glow-box-shadow), inset 0 0 10px rgba(51, 102, 255, 0.3);
            border-radius: 10px !important;
            padding: 1em !important;
            transition: box-shadow 0.3s ease;
            width: 18% !important; /* Un poco más de ancho */
        }
        #leftbar:hover, #rightbar:hover {
             box-shadow: 0 0 15px var(--neon-blue),
                               0 0 30px var(--neon-blue),
                               0 0 40px var(--neon-pink),
                               inset 0 0 15px rgba(51, 102, 255, 0.5);
        }
        #leftbar { border-right: var(--glow-border) !important; }
        #rightbar { border-left: var(--glow-border) !important; }


        /* --- Área de Login y Central --- */
        #login {
            padding-top: 2vh !important; /* Menos padding arriba */
        }
        .sitelogo img {
            filter: drop-shadow(0 0 8px var(--neon-cyan)) drop-shadow(0 0 15px var(--neon-blue));
            animation: logoPulse 3s infinite alternate;
        }
        @keyframes logoPulse {
            0% { filter: drop-shadow(0 0 8px var(--neon-cyan)) drop-shadow(0 0 15px var(--neon-blue)); }
            100% { filter: drop-shadow(0 0 12px var(--neon-pink)) drop-shadow(0 0 25px var(--neon-magenta)); }
        }

        #login-midcol {
            background: var(--dark-bg-alt) !important;
            padding: 1.5em !important;
            border-radius: 10px !important;
            box-shadow: var(--glow-box-shadow);
            border: var(--glow-border) !important;
            max-width: 300px !important;
        }
        #login-leftcol > div, #login-rightcol > div:not(.loginbox) { /* Anuncios */
            background: rgba(0,0,0,0.3) !important;
            border-radius: 8px;
            padding: 10px;
            border: 1px solid var(--neon-blue);
        }
        #login-leftcol > div img, #login-rightcol > div img {
            opacity: 0.8;
        }

        /* --- Formularios (Inputs, Selects, Botones) --- */
        input[type="text"], .custom-select {
            background-color: rgba(10, 5, 30, 0.8) !important;
            color: var(--neon-cyan) !important;
            border: 1px solid var(--neon-blue) !important;
            border-radius: 5px !important;
            padding: 0.5em !important;
            box-shadow: inset 0 0 5px rgba(0, 255, 255, 0.3);
        }
        input[type="text"]::placeholder {
            color: rgba(0, 255, 255, 0.5) !important;
        }
        .input-group-text { /* Para el   junto al nombre de usuario */
            background: transparent !important;
            border: none !important;
        }
        #avatarcontainer img {
             border: 2px solid var(--neon-magenta) !important;
             box-shadow: 0 0 10px var(--neon-magenta);
             border-radius: 50% !important; /* Hacer avatar circular */
        }


        .btn {
            color: #fff !important;
            border-radius: 5px !important;
            text-shadow: 0 0 5px #000;
            transition: background-color 0.3s ease, box-shadow 0.3s ease, transform 0.2s ease;
            position: relative; /* Para pseudo-elementos si se necesitan */
            overflow: hidden;
        }
        .btn:before { /* Efecto de línea brillante en hover */
            content: '';
            position: absolute;
            top: 0;
            left: -100%;
            width: 100%;
            height: 100%;
            background: linear-gradient(120deg, transparent, rgba(255,255,255,0.4), transparent);
            transition: all 0.5s;
        }
        .btn:hover:before {
            left: 100%;
        }

        .btn-warning { /* Jugar */
            background-color: var(--neon-pink) !important;
            border: 1px solid var(--neon-magenta) !important;
            box-shadow: 0 0 8px var(--neon-magenta), 0 0 15px var(--neon-pink);
        }
        .btn-warning:hover {
            background-color: var(--neon-magenta) !important;
            box-shadow: 0 0 12px var(--neon-magenta), 0 0 25px var(--neon-pink), 0 0 5px #fff;
            transform: translateY(-2px);
        }

        .btn-secondary, .btn-info, .btn-primary:not(#login-rightcol .loginbox .btn-primary) { /* Crear Espacio, etc. */
            background-color: var(--neon-blue) !important;
            border: 1px solid var(--neon-cyan) !important;
            box-shadow: 0 0 8px var(--neon-cyan), 0 0 15px var(--neon-blue);
        }
         .btn-secondary:hover, .btn-info:hover, .btn-primary:not(#login-rightcol .loginbox .btn-primary):hover {
            background-color: var(--neon-cyan) !important;
            color: var(--dark-bg) !important;
            text-shadow: none;
            box-shadow: 0 0 12px var(--neon-cyan), 0 0 25px var(--neon-blue), 0 0 5px #fff;
            transform: translateY(-2px);
        }

        .btn-outline-info { /* Restaurar dibujo, etc. */
            color: var(--neon-cyan) !important;
            border-color: var(--neon-cyan) !important;
        }
        .btn-outline-info:hover {
            background-color: var(--neon-cyan) !important;
            color: var(--dark-bg) !important;
            text-shadow: none;
        }

        /* Enlaces en la parte inferior de login-midcol */
        #login-midcol a {
            color: var(--neon-green) !important;
            text-shadow: 0 0 3px var(--neon-green);
            font-weight: bold;
        }
        #login-midcol a:hover {
            color: #fff !important;
            text-shadow: 0 0 5px var(--neon-green), 0 0 10px var(--neon-green);
        }

        /* --- Chat y elementos del juego (ejemplos) --- */
        #chatbox_messages {
            background-color: rgba(10, 5, 30, 0.5) !important;
            border: 1px solid var(--neon-blue);
            border-radius: 5px;
            padding: 5px;
        }
        .playerchatmessage {
            padding: 3px 5px;
            border-radius: 3px;
            margin-bottom: 3px;
        }
        .playerchatmessage-name {
            color: var(--neon-magenta) !important;
            font-weight: bold;
        }
        .playerchatmessage-selfname {
            color: var(--neon-green) !important;
        }
        #chatbox_messages > div:nth-child(odd) {
            background: rgba(0,0,0,0.1) !important;
        }

        .roomlist-item {
            background: var(--dark-bg-alt) !important;
            border: 1px solid var(--neon-blue) !important;
            box-shadow: 0 0 5px var(--neon-blue);
        }
        .roomlist-preview {
            border-color: var(--neon-cyan) !important;
        }

        .wordchooser-row {
            background-color: var(--dark-bg-alt) !important;
            color: var(--neon-cyan);
            border: 1px solid var(--neon-blue);
        }
        .wordchooser-row:hover {
            background-color: var(--neon-blue) !important;
            color: #fff !important;
            box-shadow: 0 0 10px var(--neon-blue);
        }

        /* --- Footer --- */
        .footer, .footer a {
            color: var(--neon-cyan) !important;
            opacity: 0.8;
        }
        .footer a:hover {
            color: var(--neon-pink) !important;
            opacity: 1;
        }
        #discordprombox a, #discordprombox2 a { /* Discord Promos */
           border: 1px solid var(--neon-magenta) !important;
           padding: 0.5em !important;
           border-radius: 5px !important;
           background-color: rgba(255,0,255,0.1) !important;
           box-shadow: 0 0 8px var(--neon-magenta);
           display: inline-block;
        }
         #discordprombox a:hover, #discordprombox2 a:hover {
            background-color: rgba(255,0,255,0.3) !important;
            box-shadow: 0 0 15px var(--neon-magenta);
         }
         #discordprombox img, #discordprombox2 img {
             animation: discordSpin 5s linear infinite;
         }
         @keyframes discordSpin {
             from { transform: rotate(0deg); }
             to { transform: rotate(360deg); }
         }

        /* --- Estilos para Modales --- */
        .modal-content {
            background-color: var(--dark-bg) !important;
            border: 2px solid var(--neon-magenta) !important;
            box-shadow: 0 0 20px var(--neon-magenta), 0 0 30px var(--neon-pink);
            color: var(--neon-cyan) !important;
        }
        .modal-header {
            border-bottom: 1px solid var(--neon-pink) !important;
        }
        .modal-header .close { /* Botón X para cerrar modal */
            color: var(--neon-pink) !important;
            text-shadow: 0 0 5px var(--neon-pink);
        }
        .modal-footer {
            border-top: 1px solid var(--neon-pink) !important;
        }

        /* Scrollbars con estilo neón */
        ::-webkit-scrollbar {
            width: 10px;
            height: 10px;
        }
        ::-webkit-scrollbar-track {
            background: var(--dark-bg-alt);
            border-radius: 5px;
        }
        ::-webkit-scrollbar-thumb {
            background: var(--neon-blue);
            border-radius: 5px;
            box-shadow: inset 0 0 3px var(--neon-cyan);
        }
        ::-webkit-scrollbar-thumb:hover {
            background: var(--neon-cyan);
            box-shadow: 0 0 5px var(--neon-cyan);
        }
        ::-webkit-scrollbar-corner {
            background: transparent;
        }
    `;

    // Aplicar estilos cuando el DOM esté listo para evitar FOUC (Flash Of Unstyled Content)
    // Usamos document-start y esperamos a que head exista.
    function applyStylesWhenReady() {
        if (document.head) {
            GM_addStyle(neonStyles);
        } else {
            setTimeout(applyStylesWhenReady, 50); // Reintentar pronto
        }
    }
    applyStylesWhenReady();

    // Pequeños ajustes de JS si son necesarios después de que la página cargue completamente
    window.onload = function() {
        // Ejemplo: cambiar texto si es necesario, aunque CSS es preferible
        // const loginButton = document.getElementById('quickplay');
        // if (loginButton) {
        //     // loginButton.innerHTML = ">>> ENTER NEON ZONE <<<";
        // }

        // Forzar que el área de login (midcol) sea visible si otros elementos lo ocultan
        // Esto es un hack, idealmente se maneja con CSS o entendiendo la lógica del sitio
        const midCol = document.getElementById('login-midcol');
        if (midCol && midCol.style.display === 'none') {
            // midCol.style.display = 'block'; // O el display que use
        }
    };

})();