Greasy Fork

Greasy Fork is available in English.

Drawaria.online Nature's Embrace

A soothing nature and paradise theme for Drawaria.online with natural colors, fonts, and subtle effects.

当前为 2025-05-16 提交的版本,查看 最新版本

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         Drawaria.online Nature's Embrace
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  A soothing nature and paradise theme for Drawaria.online with natural colors, fonts, and subtle 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 nature-friendly Google Fonts
    GM_xmlhttpRequest({
        method: "GET",
        url: "https://fonts.googleapis.com/css2?family=Quicksand:wght@400;700&family=Nunito:wght@400;700&display=swap", // Quicksand & Nunito for friendly, rounded look
        onload: function(response) {
            GM_addStyle(response.responseText);
        }
    });

    // --- Nature's Embrace Theme Styles ---
    const natureStyles = `
        /* --- Nature's Embrace Color Variables --- */
        :root {
            --nature-green-dark: #2f4f4f;  /* Dark Slate Gray (forest floor) */
            --nature-green-mid: #6b8e23;   /* Olive Drab (leaves, moss) */
            --nature-green-light: #90ee90; /* Light Green (fresh sprouts) */
            --nature-blue-sky: #87ceeb;    /* Sky Blue (sky) */
            --nature-brown-earth: #a0522d; /* Sienna (soil, wood) */
            --nature-yellow-sun: #ffd700;  /* Gold (sunlight, flowers) */
            --nature-peach: #ffdab9;       /* Peach Puff (soft highlights) */


            --nature-bg-light: #f0fff0; /* Honeydew (very light green-white) */
            --nature-bg-dark: #e0ffff;  /* Light Cyan (light blue-white) */
            --nature-text: var(--nature-green-dark);
            --nature-link: var(--nature-brown-earth);
            --nature-heading: var(--nature-green-mid);

            --nature-text-shadow-leaf: 0 0 5px rgba(107, 142, 35, 0.5); /* Subtle leaf glow */
            --nature-text-shadow-sun: 0 0 5px rgba(255, 215, 0, 0.5); /* Subtle sunlight glow */

            --nature-box-shadow: 0 0 12px rgba(47, 79, 79, 0.3), /* Soft dark shadow */
                                 0 0 6px rgba(107, 142, 35, 0.4) inset; /* Soft inner green glow */
            --nature-border: 1px solid var(--nature-green-mid);
        }

        /* --- Global Styles --- */
        body, html {
            background: var(--nature-bg-light) !important;
            /* Subtle gradient simulating sky meeting earth/water */
            background-image: linear-gradient(to bottom, var(--nature-blue-sky) 0%, var(--nature-bg-dark) 50%, var(--nature-bg-light) 100%) !important;
            color: var(--nature-text) !important;
            /* Use friendly, rounded fonts */
            font-family: 'Quicksand', 'Nunito', sans-serif !important;
            height: 100%;
            overflow-x: hidden; /* Prevent horizontal scroll from effects */
        }

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

        a {
            color: var(--nature-link) !important;
            text-decoration: none !important;
            transition: color 0.3s ease, text-shadow 0.3s ease;
            font-weight: bold;
        }
        a:hover {
            color: var(--nature-green-mid) !important; /* Changes to a leafy green */
            text-shadow: var(--nature-text-shadow-leaf);
        }

        h1, h2, h3, h4, h5, h6 {
            color: var(--nature-heading) !important;
            text-shadow: var(--nature-text-shadow-leaf);
            font-family: 'Quicksand', sans-serif !important; /* Consistent heading font */
            font-weight: 700 !important;
        }

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

        #leftbar, #rightbar {
            background: rgba(240, 255, 240, 0.8) !important; /* Semi-transparent Honeydew */
            border-color: var(--nature-green-mid) !important;
            box-shadow: var(--nature-box-shadow);
            border-radius: 10px !important; /* Softly rounded */
            padding: 1.2em !important;
            transition: box-shadow 0.3s ease;
            width: 18% !important;
        }
        #leftbar:hover, #rightbar:hover {
             box-shadow: 0 0 20px rgba(47, 79, 79, 0.5),
                               0 0 10px rgba(107, 142, 35, 0.6) inset;
        }
        #leftbar { border-right: var(--nature-border) !important; }
        #rightbar { border-left: var(--nature-border) !important; }


        /* --- Login Area and Central Content --- */
        #login {
            padding-top: 4vh !important;
        }
        .sitelogo img {
            /* Adjust filter for nature look and sun/leaf glow */
            filter: drop-shadow(0 0 8px var(--nature-green-mid)) drop-shadow(0 0 15px var(--nature-yellow-sun));
            animation: naturePulse 4s infinite alternate ease-in-out; /* Gentle nature pulse */
        }
        @keyframes naturePulse {
            0% { filter: drop-shadow(0 0 8px var(--nature-green-mid)) drop-shadow(0 0 15px var(--nature-yellow-sun)); }
            100% { filter: drop-shadow(0 0 12px var(--nature-yellow-sun)) drop-shadow(0 0 20px var(--nature-green-light)); }
        }

        #login-midcol {
            background: rgba(240, 255, 240, 0.9) !important; /* More opaque Honeydew */
            padding: 1.8em !important;
            border-radius: 10px !important;
            box-shadow: var(--nature-box-shadow);
            border: var(--nature-border) !important;
            max-width: 320px !important;
        }
        #login-leftcol > div, #login-rightcol > div:not(.loginbox) { /* Ads/Other boxes */
            background: rgba(135, 206, 235, 0.3) !important; /* Sky blue semi-transparent */
            border-radius: 8px;
            padding: 10px;
            border: 1px solid var(--nature-blue-sky);
            color: var(--nature-text) !important;
             box-shadow: 0 0 5px rgba(135, 206, 235, 0.5);
        }
        #login-leftcol > div img, #login-rightcol > div img {
            opacity: 0.8;
        }

        /* --- Forms (Inputs, Selects, Botones) --- */
        input[type="text"], .custom-select {
            background-color: rgba(255, 218, 185, 0.6) !important; /* Peach Puff semi-transparent */
            color: var(--nature-green-dark) !important; /* Dark green text */
            border: 1px solid var(--nature-brown-earth) !important;
            border-radius: 6px !important;
            padding: 0.6em !important;
            box-shadow: inset 0 0 5px rgba(160, 82, 45, 0.3); /* Inner brown glow */
             font-family: 'Quicksand', sans-serif !important;
        }
        input[type="text"]::placeholder {
            color: rgba(47, 79, 79, 0.7) !important; /* Dark green placeholder */
        }
        .input-group-text { /* Adjacent elements */
            background: transparent !important;
            border: none !important;
            color: var(--nature-text) !important;
             font-family: 'Quicksand', sans-serif !important;
        }
         #avatarcontainer img {
             border: 3px solid var(--nature-green-mid) !important;
             box-shadow: 0 0 15px var(--nature-green-mid), 0 0 8px var(--nature-yellow-sun) inset; /* Leafy green glow, sun inner highlight */
             border-radius: 50% !important; /* Circular avatar */
             transition: transform 0.3s ease, box-shadow 0.3s ease;
         }
         #avatarcontainer img:hover {
             transform: scale(1.1);
             box-shadow: 0 0 20px var(--nature-green-light), 0 0 10px var(--nature-yellow-sun) inset;
         }

        .btn {
            color: var(--nature-green-dark) !important; /* Dark green text */
            border-radius: 8px !important;
            text-shadow: 0 0 3px rgba(255, 255, 255, 0.5); /* Subtle highlight */
            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 */
            font-weight: bold;
            letter-spacing: 0.5px;
             font-family: 'Quicksand', sans-serif !important;
        }
        .btn:before { /* Sunlight shimmer effect */
            content: '';
            position: absolute;
            top: 0;
            left: -100%;
            width: 100%;
            height: 100%;
             /* Golden/yellow shimmer */
            background: linear-gradient(120deg, transparent, rgba(255, 215, 0, 0.4), transparent);
            transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);
        }
        .btn:hover:before {
            left: 100%;
        }

        .btn-warning { /* 'Play' button (Most prominent) */
            background-color: var(--nature-green-mid) !important; /* Olive green */
            box-shadow: 0 0 10px var(--nature-green-mid), 0 0 20px rgba(107, 142, 35, 0.5);
        }
        .btn-warning:hover {
            background-color: var(--nature-green-light) !important; /* Becomes brighter green */
            color: var(--nature-green-dark) !important;
            text-shadow: none;
            box-shadow: 0 0 15px var(--nature-green-light), 0 0 30px rgba(144, 238, 144, 0.8), 0 0 8px #fff inset;
            transform: scale(1.05);
        }

        .btn-secondary, .btn-info, .btn-primary:not(#login-rightcol .loginbox .btn-primary) { /* 'Create Room', etc. */
            background-color: var(--nature-brown-earth) !important; /* Earthy brown */
            box-shadow: 0 0 8px var(--nature-brown-earth), 0 0 15px rgba(160, 82, 45, 0.5);
        }
         .btn-secondary:hover, .btn-info:hover, .btn-primary:not(#login-rightcol .loginbox .btn-primary):hover {
            background-color: var(--nature-peach) !important; /* Becomes peachy */
            color: var(--nature-brown-earth) !important;
             box-shadow: 0 0 12px var(--nature-peach), 0 0 25px rgba(255, 218, 185, 0.8), 0 0 8px #fff inset;
            transform: scale(1.05);
        }

        .btn-outline-info { /* 'Restore Drawing', etc. */
            color: var(--nature-green-mid) !important;
            border: 2px solid var(--nature-green-mid) !important;
            background: transparent !important;
            box-shadow: 0 0 5px rgba(107, 142, 35, 0.5);
             font-family: 'Quicksand', sans-serif !important;
        }
        .btn-outline-info:hover {
            background-color: var(--nature-green-mid) !important;
            color: #fff !important;
            text-shadow: none;
            box-shadow: 0 0 10px var(--nature-green-mid), 0 0 20px rgba(107, 142, 35, 0.8);
        }

        /* Links at the bottom of login-midcol */
        #login-midcol a {
            color: var(--nature-green-mid) !important;
            text-shadow: 0 0 3px var(--nature-green-light);
            font-weight: bold;
        }
        #login-midcol a:hover {
            color: var(--nature-yellow-sun) !important;
            text-shadow: var(--nature-text-shadow-sun);
        }

        /* --- Chat and Game Elements (examples) --- */
        #chatbox_messages {
            background-color: rgba(135, 206, 235, 0.4) !important; /* Sky blue semi-transparent */
            border: 1px solid var(--nature-blue-sky);
            border-radius: 8px;
            padding: 8px;
            color: var(--nature-text);
             font-family: 'Quicksand', sans-serif !important;
        }
        .playerchatmessage {
            padding: 4px 6px;
            border-radius: 4px;
            margin-bottom: 4px;
            transition: background-color 0.2s ease;
        }
         .playerchatmessage:nth-child(odd) {
             background: rgba(160, 82, 45, 0.1) !important; /* Earth tone stripe */
         }
        .playerchatmessage:hover {
            background-color: rgba(160, 82, 45, 0.2) !important; /* Darker earth tone on hover */
        }
        .playerchatmessage-name {
            color: var(--nature-green-mid) !important; /* Olive green for others */
            font-weight: bold;
        }
        .playerchatmessage-selfname {
            color: var(--nature-brown-earth) !important; /* Earth brown for self */
            text-shadow: 0 0 3px var(--nature-link);
        }

        .roomlist-item {
            background: rgba(240, 255, 240, 0.8) !important; /* Honeydew */
            border: 1px solid var(--nature-green-mid) !important;
            box-shadow: 0 0 5px rgba(107, 142, 35, 0.3);
            border-radius: 8px;
            transition: box-shadow 0.3s ease;
             color: var(--nature-text) !important;
             font-family: 'Quicksand', sans-serif !important;
        }
        .roomlist-item:hover {
            box-shadow: 0 0 10px rgba(107, 142, 35, 0.6), 0 0 5px rgba(160, 82, 45, 0.4) inset;
        }
        .roomlist-preview {
            border-color: var(--nature-green-mid) !important; /* Leafy green border for preview */
        }

        .wordchooser-row {
            background-color: rgba(240, 255, 240, 0.9) !important; /* Honeydew */
            color: var(--nature-green-dark) !important;
            border: 1px solid var(--nature-green-mid);
            text-shadow: var(--nature-text-shadow-leaf);
            border-radius: 5px;
            transition: background-color 0.3s ease, box-shadow 0.3s ease;
             font-family: 'Quicksand', sans-serif !important;
        }
        .wordchooser-row:hover {
            background-color: var(--nature-green-light) !important; /* Becomes brighter green */
            color: var(--nature-green-dark) !important;
            text-shadow: none;
            box-shadow: 0 0 10px var(--nature-green-light);
        }

        /* --- Footer --- */
        .footer, .footer a {
            color: var(--nature-text) !important;
            opacity: 0.9;
             font-family: 'Quicksand', sans-serif !important;
        }
        .footer a {
            color: var(--nature-link) !important;
            text-shadow: 0 0 2px var(--nature-link);
        }
        .footer a:hover {
            color: var(--nature-green-mid) !important;
            opacity: 1;
             text-shadow: var(--nature-text-shadow-leaf);
        }
        #discordprombox a, #discordprombox2 a { /* Discord Promos */
           border: 1px solid var(--nature-green-mid) !important;
           padding: 0.6em !important;
           border-radius: 8px !important;
           background-color: rgba(107, 142, 35, 0.2) !important; /* Semi-transparent olive */
           box-shadow: 0 0 8px var(--nature-green-mid);
           display: inline-block;
           color: var(--nature-green-dark) !important; /* Ensure link color is readable */
           font-weight: bold;
           transition: background-color 0.3s ease, box-shadow 0.3s ease;
            font-family: 'Quicksand', sans-serif !important;
        }
         #discordprombox a:hover, #discordprombox2 a:hover {
            background-color: rgba(107, 142, 35, 0.4) !important;
             box-shadow: 0 0 15px var(--nature-green-mid), 0 0 5px #fff inset;
         }
         #discordprombox img, #discordprombox2 img {
              /* Gentle breathing pulse */
             animation: naturePulseSmall 3s ease-in-out infinite alternate;
             filter: drop-shadow(0 0 5px var(--nature-green-mid));
         }
         @keyframes naturePulseSmall {
             0% { transform: scale(1); opacity: 0.9; }
             100% { transform: scale(1.05); opacity: 1; filter: drop-shadow(0 0 8px var(--nature-green-light)); }
         }


        /* --- Modal Styles --- */
        .modal-content {
            background-color: var(--nature-bg-dark) !important; /* Light blue-white */
            border: 2px solid var(--nature-green-mid) !important; /* Leafy green border */
            box-shadow: 0 0 15px rgba(107, 142, 35, 0.6), 0 0 8px rgba(160, 82, 45, 0.4) inset; /* Green/brown glow */
            color: var(--nature-text) !important;
            border-radius: 10px !important;
             font-family: 'Quicksand', sans-serif !important;
        }
        .modal-header {
            border-bottom: 1px solid var(--nature-green-mid) !important; /* Green separation */
            color: var(--nature-heading) !important;
             font-family: 'Quicksand', sans-serif !important;
             text-shadow: var(--nature-text-shadow-leaf);
        }
        .modal-header .close { /* Close button */
            color: var(--nature-brown-earth) !important;
            text-shadow: 0 0 5px var(--nature-brown-earth);
            opacity: 0.9;
            transition: opacity 0.3s ease;
        }
         .modal-header .close:hover {
             opacity: 1;
             color: var(--nature-green-mid) !important;
              text-shadow: var(--nature-text-shadow-leaf);
         }
        .modal-footer {
            border-top: 1px solid var(--nature-green-mid) !important; /* Green separation */
        }


        /* --- Scrollbars with Nature Style --- */
        ::-webkit-scrollbar {
            width: 10px;
            height: 10px;
        }
        ::-webkit-scrollbar-track {
            background: var(--nature-bg-dark); /* Light blue track */
            border-radius: 5px;
        }
        ::-webkit-scrollbar-thumb {
            background: var(--nature-green-mid); /* Olive green thumb */
            border-radius: 5px;
            box-shadow: inset 0 0 3px rgba(47, 79, 79, 0.5); /* Inner dark green highlight */
        }
        ::-webkit-scrollbar-thumb:hover {
            background: var(--nature-brown-earth); /* Earth brown on hover */
             box-shadow: 0 0 5px var(--nature-brown-earth), inset 0 0 5px #fff;
        }
        ::-webkit-scrollbar-corner {
            background: transparent;
        }

         /* --- Floating Leaves/Particles Effect (Basic CSS Animation) --- */
        /* NOTE: True dynamic particle effects require JavaScript.
           This is a simple CSS animation using pseudo-elements. */
        body::before, body::after {
            content: '🍃'; /* Use leaf emoji */
            position: fixed;
            bottom: -50px; /* Start offscreen */
            pointer-events: none;
            z-index: -1; /* Behind everything */
            font-size: 25px; /* Size of the leaves */
            opacity: 0.6;
            color: var(--nature-green-light); /* Optional: color the emoji */
            animation: floatLeaf 15s infinite linear; /* Linear for consistent float */
        }

        body::before {
            left: 10%;
            animation-duration: 12s; /* Different speed */
            animation-delay: 1s;    /* Different delay */
            opacity: 0.5;
            font-size: 20px;
             content: '🍂'; /* Autumn leaf */
        }

        body::after {
            left: 85%;
            animation-duration: 18s;
            animation-delay: 3s;
            opacity: 0.7;
            font-size: 30px;
             content: '🍁'; /* Maple leaf */
        }

         /* Add more pseudo-elements or use JS for more leaves */

        @keyframes floatLeaf {
            0% { transform: translate(0, 0) rotate(0deg); opacity: 0.6; }
            50% { transform: translate(20px, -50vh) rotate(180deg); opacity: 0.8; } /* Sway and rotate upwards */
            100% { transform: translate(0, -100vh) rotate(360deg); opacity: 0.6; } /* Float offscreen */
        }

         /* JS example for many particles is commented out in window.onload */
    `;

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

    // JS for more complex effects like many particles (commented out)
    window.onload = function() {
        // Example JavaScript to create many floating leaves
        /*
        function createLeaf() {
            const leaf = document.createElement('span');
            const leafEmojis = ['🍃', '🍂', '🍁'];
            leaf.textContent = leafEmojis[Math.floor(Math.random() * leafEmojis.length)]; // Random leaf emoji
            leaf.classList.add('floating-leaf'); // Define this class in CSS

            // Set random properties for position, size, duration, delay
            const size = Math.random() * 20 + 15; // 15px to 35px
            const duration = Math.random() * 15 + 10; // 10s to 25s
            const delay = Math.random() * 5; // 0s to 5s
            const startLeft = Math.random() * 100; // 0vw to 100vw
            const swayAmount = Math.random() * 50 + 20; // How much it sways horizontally (20px to 70px)

            document.body.appendChild(leaf);

            // Remove leaf after a long time or animation cycle
            setTimeout(() => { leaf.remove(); }, (duration + delay) * 1000 + 500); // Remove slightly after animation finishes
        }

         // Create leaves periodically (e.g., every 500ms)
         // setInterval(createLeaf, 500);

         // Create a burst of leaves initially (e.g., 15-20 leaves)
         // for(let i = 0; i < 15; i++) {
         //     createLeaf();
         // }

        // NOTE: Too many animated particles can impact performance.
        // Use this JS code with caution or test thoroughly.
        */
    };

})();