Drawaria.online Aquatic Abyss

A deep ocean, aquatic abyss theme for Drawaria.online with subtle underwater effects.

// ==UserScript==
// @name         Drawaria.online Aquatic Abyss
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  A deep ocean, aquatic abyss theme for Drawaria.online with subtle underwater 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 (Orbitron can still fit a deep-sea tech vibe)
    GM_xmlhttpRequest({
        method: "GET",
        url: "https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700&display=swap",
        onload: function(response) {
            GM_addStyle(response.responseText);
        }
    });

    // --- Aquatic Abyss Theme Styles ---
    const aquaticStyles = `
        /* --- Aquatic Abyss Color Variables --- */
        :root {
            --abyss-dark-blue: #0A122A; /* Very dark, deep blue */
            --abyss-mid-blue: #1B2A41;  /* Slightly lighter for panels */
            --abyss-deep-green: #0E3337; /* Dark greenish tint */
            --abyss-light-blue: #4B8A8A; /* Muted light blue/cyan */
            --abyss-biolum-purple: #5D3A6F; /* Hint of bioluminescence */
            --abyss-biolum-green: #9BE1A9;  /* Hint of glowing green */

            --abyss-text-color: var(--abyss-light-blue);
            --abyss-link-color: var(--abyss-biolum-green);
            --abyss-heading-color: var(--abyss-light-blue);
            --abyss-border-color: var(--abyss-deep-green);

            --abyss-text-glow: 0 0 4px var(--abyss-light-blue),
                               0 0 8px rgba(75, 138, 138, 0.5); /* Faint glow */
            --abyss-box-shadow: 0 0 10px rgba(0, 0, 0, 0.5), /* Soft overall shadow */
                                0 0 5px var(--abyss-biolum-purple); /* Hint of bioluminescent edge */
            --abyss-border: 1px solid var(--abyss-border-color);
        }

        /* --- Global Styles --- */
        body, html {
            background: var(--abyss-dark-blue) !important;
            /* Subtle gradient or texture to suggest depth */
            background-image: linear-gradient(to bottom, var(--abyss-dark-blue), #050a18) !important;
            color: var(--abyss-text-color) !important;
            font-family: 'Orbitron', sans-serif !important;
            height: 100%;
            overflow-x: hidden; /* Prevent horizontal scroll */
        }

        /* Ensure the body background image is overridden */
        body {
             background-image: none !important; /* Remove any site background */
        }


        a {
            color: var(--abyss-link-color) !important;
            text-decoration: none !important;
            transition: color 0.3s ease, text-shadow 0.3s ease;
            /* Subtle underwater ripple effect on hover - requires JS or complex CSS */
        }
        a:hover {
            color: #fff !important; /* Brighter on hover */
            text-shadow: var(--abyss-text-glow);
        }

        h1, h2, h3, h4, h5, h6 {
            color: var(--abyss-heading-color) !important;
            text-shadow: var(--abyss-text-glow);
        }

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

        #leftbar, #rightbar {
            background: var(--abyss-mid-blue) !important;
            border-color: var(--abyss-border-color) !important;
            box-shadow: var(--abyss-box-shadow);
            border-radius: 8px !important; /* Slightly rounded like sub windows */
            padding: 1em !important;
            transition: box-shadow 0.3s ease;
            width: 18% !important; /* Keep width as before */
             /* Optional: subtle pulsating effect on hover */
        }
        #leftbar:hover, #rightbar:hover {
             box-shadow: 0 0 15px rgba(0,0,0,0.8),
                               0 0 8px var(--abyss-biolum-purple),
                               0 0 12px var(--abyss-biolum-green);
        }
        #leftbar { border-right: var(--abyss-border) !important; }
        #rightbar { border-left: var(--abyss-border) !important; }


        /* --- Login Area and Central Content --- */
        #login {
            padding-top: 5vh !important; /* Adjust padding */
        }
        .sitelogo img {
            /* Adjust filter for aquatic look and subtle glow */
            filter: drop-shadow(0 0 5px var(--abyss-light-blue)) drop-shadow(0 0 10px var(--abyss-deep-green));
            animation: aquaticPulse 4s infinite alternate ease-in-out; /* Slower, smoother pulse */
        }
        @keyframes aquaticPulse {
            0% { filter: drop-shadow(0 0 5px var(--abyss-light-blue)) drop-shadow(0 0 10px var(--abyss-deep-green)); }
            100% { filter: drop_shadow(0 0 8px var(--abyss-biolum-purple)) drop-shadow(0 0 15px var(--abyss-biolum-green)); }
        }

        #login-midcol {
            background: var(--abyss-mid-blue) !important;
            padding: 1.5em !important;
            border-radius: 8px !important;
            box-shadow: var(--abyss-box-shadow);
            border: var(--abyss-border) !important;
            max-width: 300px !important;
        }
        #login-leftcol > div, #login-rightcol > div:not(.loginbox) { /* Ads/Other boxes */
            background: rgba(0,0,0,0.2) !important; /* More transparent */
            border-radius: 6px;
            padding: 10px;
            border: 1px solid var(--abyss-deep-green);
            color: var(--abyss-text-color) !important;
        }
        #login-leftcol > div img, #login-rightcol > div img {
            opacity: 0.7; /* Make images less prominent */
        }

        /* --- Forms (Inputs, Selects, Buttons) --- */
        input[type="text"], .custom-select {
            background-color: rgba(10, 18, 42, 0.7) !important; /* Darker, semi-transparent */
            color: var(--abyss-biolum-green) !important; /* Glowing text */
            border: 1px solid var(--abyss-deep-green) !important;
            border-radius: 4px !important;
            padding: 0.5em !important;
            box-shadow: inset 0 0 5px rgba(155, 225, 169, 0.2); /* Subtle green inner glow */
        }
        input[type="text"]::placeholder {
            color: rgba(155, 225, 169, 0.5) !important; /* Glowing placeholder text */
        }
        .input-group-text { /* Adjacent elements */
            background: transparent !important;
            border: none !important;
            color: var(--abyss-text-color) !important;
        }
         #avatarcontainer img {
             border: 2px solid var(--abyss-biolum-purple) !important;
             box-shadow: 0 0 10px var(--abyss-biolum-purple), 0 0 5px #fff inset; /* Purple glow, slight inner highlight */
             border-radius: 50% !important; /* Keep circular avatar */
             transition: transform 0.3s ease;
         }
         #avatarcontainer img:hover {
             transform: scale(1.05); /* Subtle hover effect */
         }

        .btn {
            color: #fff !important; /* White or light text */
            border-radius: 5px !important;
            text-shadow: 0 0 3px rgba(0,0,0,0.5); /* Subtle text shadow */
            transition: background-color 0.3s ease, box-shadow 0.3s ease, transform 0.2s ease;
            position: relative;
            overflow: hidden;
            border: none !important; /* Remove default borders */
        }
        .btn:before { /* Underwater shimmer effect on hover */
            content: '';
            position: absolute;
            top: 0;
            left: -100%;
            width: 100%;
            height: 100%;
             /* Aquatic shimmer gradient */
            background: linear-gradient(120deg, transparent, rgba(255,255,255,0.2), rgba(255,255,255,0.2), transparent);
            transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); /* Smoother transition */
        }
        .btn:hover:before {
            left: 100%;
        }

        .btn-warning { /* 'Play' button */
            background-color: var(--abyss-biolum-green) !important;
            box-shadow: 0 0 8px var(--abyss-biolum-green), 0 0 15px rgba(155, 225, 169, 0.5);
        }
        .btn-warning:hover {
            background-color: #fff !important; /* Bright white on hover */
            color: var(--abyss-dark-blue) !important; /* Dark text on light background */
            text-shadow: none;
            box-shadow: 0 0 12px var(--abyss-biolum-green), 0 0 25px rgba(155, 225, 169, 0.8), 0 0 5px #fff;
            transform: translateY(-2px);
        }

        .btn-secondary, .btn-info, .btn-primary:not(#login-rightcol .loginbox .btn-primary) { /* 'Create Room', etc. */
            background-color: var(--abyss-light-blue) !important;
            box-shadow: 0 0 8px var(--abyss-light-blue), 0 0 15px rgba(75, 138, 138, 0.5);
        }
         .btn-secondary:hover, .btn-info:hover, .btn-primary:not(#login-rightcol .loginbox .btn-primary):hover {
            background-color: #fff !important;
            color: var(--abyss-dark-blue) !important;
             text-shadow: none;
            box-shadow: 0 0 12px var(--abyss-light-blue), 0 0 25px rgba(75, 138, 138, 0.8), 0 0 5px #fff;
            transform: translateY(-2px);
        }

        .btn-outline-info { /* 'Restore Drawing', etc. */
            color: var(--abyss-biolum-purple) !important;
            border: 1px solid var(--abyss-biolum-purple) !important;
            background: transparent !important;
            box-shadow: 0 0 5px rgba(93, 58, 111, 0.5);
        }
        .btn-outline-info:hover {
            background-color: var(--abyss-biolum-purple) !important;
            color: #fff !important;
            text-shadow: none;
            box-shadow: 0 0 10px var(--abyss-biolum-purple), 0 0 20px rgba(93, 58, 111, 0.8);
        }

        /* Links at the bottom of login-midcol */
        #login-midcol a {
            color: var(--abyss-biolum-green) !important;
            text-shadow: 0 0 3px var(--abyss-biolum-green);
            font-weight: bold;
        }
        #login-midcol a:hover {
            color: #fff !important;
            text-shadow: 0 0 5px var(--abyss-biolum-green), 0 0 10px var(--abyss-biolum-green);
        }

        /* --- Chat and Game Elements (examples) --- */
        #chatbox_messages {
            background-color: rgba(11, 18, 42, 0.6) !important; /* Darker, more transparent */
            border: 1px solid var(--abyss-deep-green);
            border-radius: 5px;
            padding: 5px;
        }
        .playerchatmessage {
            padding: 3px 5px;
            border-radius: 3px;
            margin-bottom: 3px;
             /* Subtle hover effect to highlight message */
            transition: background-color 0.2s ease;
        }
        .playerchatmessage:hover {
            background-color: rgba(75, 138, 138, 0.1);
        }
        .playerchatmessage-name {
            color: var(--abyss-biolum-purple) !important; /* Purple for others */
            font-weight: bold;
        }
        .playerchatmessage-selfname {
            color: var(--abyss-biolum-green) !important; /* Green for self */
             text-shadow: 0 0 3px var(--abyss-biolum-green); /* Self-name glows */
        }
        #chatbox_messages > div:nth-child(odd) {
            background: rgba(0,0,0,0.05) !important; /* Very subtle stripe */
        }

        .roomlist-item {
            background: var(--abyss-mid-blue) !important;
            border: 1px solid var(--abyss-deep-green) !important;
            box-shadow: 0 0 5px rgba(0,0,0,0.5);
            transition: box-shadow 0.3s ease;
        }
        .roomlist-item:hover {
            box-shadow: 0 0 10px rgba(0,0,0,0.8), 0 0 5px var(--abyss-biolum-purple);
        }
        .roomlist-preview {
            border-color: var(--abyss-light-blue) !important;
        }

        .wordchooser-row {
            background-color: var(--abyss-mid-blue) !important;
            color: var(--abyss-biolum-green) !important;
            border: 1px solid var(--abyss-deep-green);
            text-shadow: 0 0 3px var(--abyss-biolum-green);
            transition: background-color 0.3s ease, box-shadow 0.3s ease;
        }
        .wordchooser-row:hover {
            background-color: var(--abyss-deep-green) !important;
            color: #fff !important;
             text-shadow: none;
            box-shadow: 0 0 10px var(--abyss-deep-green);
        }

        /* --- Footer --- */
        .footer, .footer a {
            color: var(--abyss-light-blue) !important;
            opacity: 0.7;
        }
        .footer a:hover {
            color: var(--abyss-biolum-green) !important;
            opacity: 1;
        }
        #discordprombox a, #discordprombox2 a { /* Discord Promos */
           border: 1px solid var(--abyss-biolum-purple) !important;
           padding: 0.5em !important;
           border-radius: 5px !important;
           background-color: rgba(93, 58, 111, 0.2) !important; /* Semi-transparent purple */
           box-shadow: 0 0 8px var(--abyss-biolum-purple);
           display: inline-block;
           color: var(--abyss-biolum-purple) !important; /* Ensure link color */
           transition: background-color 0.3s ease, box-shadow 0.3s ease;
        }
         #discordprombox a:hover, #discordprombox2 a:hover {
            background-color: rgba(93, 58, 111, 0.4) !important;
            box-shadow: 0 0 15px var(--abyss-biolum-purple), 0 0 5px #fff inset;
         }
         #discordprombox img, #discordprombox2 img {
              /* subtle pulsating/breathing effect instead of spin */
             animation: discordPulse 5s ease-in-out infinite alternate;
             filter: drop-shadow(0 0 3px var(--abyss-biolum-purple));
         }
         @keyframes discordPulse {
             0% { transform: scale(1); opacity: 0.8; }
             100% { transform: scale(1.05); opacity: 1; }
         }


        /* --- Modal Styles --- */
        .modal-content {
            background-color: var(--abyss-mid-blue) !important; /* Panel background */
            border: 2px solid var(--abyss-biolum-purple) !important; /* Bioluminescent border */
            box-shadow: 0 0 20px rgba(0,0,0,0.8), 0 0 15px var(--abyss-biolum-purple), 0 0 10px var(--abyss-biolum-green) inset; /* Dark shadow with bioluminescent glow */
            color: var(--abyss-text-color) !important;
            border-radius: 10px !important;
        }
        .modal-header {
            border-bottom: 1px solid var(--abyss-biolum-green) !important; /* Green separation */
            color: var(--abyss-heading-color) !important;
        }
        .modal-header .close { /* Close button */
            color: var(--abyss-biolum-purple) !important;
            text-shadow: 0 0 5px var(--abyss-biolum-purple);
            opacity: 0.8;
            transition: opacity 0.3s ease;
        }
         .modal-header .close:hover {
             opacity: 1;
         }
        .modal-footer {
            border-top: 1px solid var(--abyss-biolum-green) !important; /* Green separation */
        }


        /* --- Scrollbars with Aquatic Style --- */
        ::-webkit-scrollbar {
            width: 10px;
            height: 10px;
        }
        ::-webkit-scrollbar-track {
            background: rgba(11, 18, 42, 0.8); /* Darker track */
            border-radius: 5px;
        }
        ::-webkit-scrollbar-thumb {
            background: var(--abyss-deep-green); /* Greenish thumb */
            border-radius: 5px;
            box-shadow: inset 0 0 3px rgba(75, 138, 138, 0.5); /* Subtle inner highlight */
        }
        ::-webkit-scrollbar-thumb:hover {
            background: var(--abyss-light-blue); /* Lighter blue on hover */
             box-shadow: 0 0 5px var(--abyss-light-blue), inset 0 0 5px #fff; /* Light glow */
        }
        ::-webkit-scrollbar-corner {
            background: transparent;
        }

        /* Add subtle bubble animation background (optional and complex) */
        /* This is a basic attempt; more advanced effects require more complex CSS/JS */
        /* You could also use a static background image with bubbles */
         body::before {
             content: '';
             position: fixed;
             top: 0;
             left: 0;
             width: 100%;
             height: 100%;
             pointer-events: none;
             z-index: -1; /* Behind everything */
             /* Example: subtle static bubble effect using pseudo-element */
             /* background-image: radial-gradient(circle at 20% 30%, rgba(75, 138, 138, 0.1) 1px, transparent 0),
                                 radial-gradient(circle at 80% 70%, rgba(93, 58, 111, 0.1) 1px, transparent 0),
                                 radial-gradient(circle at 50% 50%, rgba(155, 225, 169, 0.1) 1px, transparent 0);
             background-size: 50px 50px, 60px 60px, 70px 70px;
              */
             /* More complex animation requires multiple elements or libraries */
         }


    `;

    // Apply styles when the head is available
    function applyStylesWhenReady() {
        if (document.head) {
            GM_addStyle(aquaticStyles);
        } else {
            setTimeout(applyStylesWhenReady, 50); // Re-check frequently
        }
    }
    applyStylesWhenReady();

    // No complex JS needed for this theme, basic onload retained for structure
    window.onload = function() {
        // Optional: You could add JS here for more dynamic effects like moving bubbles
        // or water ripples, but it adds complexity. CSS animations are often enough.
    };

})();