BetterCSS

Adds better CSS to the Icestar site

Dovrai installare un'estensione come Tampermonkey, Greasemonkey o Violentmonkey per installare questo script.

You will need to install an extension such as Tampermonkey to install this script.

Dovrai installare un'estensione come Tampermonkey o Violentmonkey per installare questo script.

Dovrai installare un'estensione come Tampermonkey o Userscripts per installare questo script.

Dovrai installare un'estensione come ad esempio Tampermonkey per installare questo script.

Dovrai installare un gestore di script utente per installare questo script.

(Ho già un gestore di script utente, lasciamelo installare!)

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione come ad esempio Stylus per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

Dovrai installare un'estensione per la gestione degli stili utente per installare questo stile.

(Ho già un gestore di stile utente, lasciamelo installare!)

// ==UserScript==
// @name         BetterCSS
// @namespace    http://tampermonkey.net/
// @version      1.01
// @description  Adds better CSS to the Icestar site
// @author       @theyhoppingonme on discord
// @match        https://icestar.com.de/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=icestar.com.de
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    // Define new style
const newStyles = `
@import url('https://fonts.googleapis.com/css2?family=Orbitron:wght@400;700;900&family=Inter:wght@300;400;500;600&display=swap');

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root {
    --primary-ice: #00e5ff;
    --secondary-ice: #18ffff;
    --accent-cyan: #00bcd4;
    --dark-ice: #004d5c;
    --glass-bg: rgba(255, 255, 255, 0.05);
    --glass-border: rgba(255, 255, 255, 0.1);
    --shadow-glow: 0 0 30px rgba(0, 229, 255, 0.3);
    --gradient-ice: linear-gradient(135deg, rgba(0, 229, 255, 0.1) 0%, rgba(24, 255, 255, 0.05) 100%);
}

body {
    font-family: 'Inter', sans-serif;
    color: #ffffff;
    overflow-x: hidden;
    min-height: 100vh;
    position: relative;
    background: #0a0f1c;
}

.background {
    position: relative;
    width: 100vw;
    height: 100vh;
    background:
        radial-gradient(circle at 20% 50%, rgba(0, 229, 255, 0.1) 0%, transparent 50%),
        radial-gradient(circle at 80% 20%, rgba(24, 255, 255, 0.08) 0%, transparent 50%),
        radial-gradient(circle at 40% 80%, rgba(0, 188, 212, 0.06) 0%, transparent 50%),
        linear-gradient(135deg, #0a0f1c 0%, #0d1421 25%, #1a1f2e 50%, #0f1419 75%, #0a0f1c 100%);
    background-size: 100% 100%;
    animation: backgroundShift 20s ease-in-out infinite alternate;
    overflow: hidden;
}

@keyframes backgroundShift {
    0% {
        background-position: 0% 0%, 100% 0%, 50% 100%;
        filter: hue-rotate(0deg);
    }
    100% {
        background-position: 100% 100%, 0% 100%, 0% 0%;
        filter: hue-rotate(15deg);
    }
}

.background::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image:
        radial-gradient(2px 2px at 20px 30px, rgba(0, 229, 255, 0.4), transparent),
        radial-gradient(2px 2px at 40px 70px, rgba(24, 255, 255, 0.3), transparent),
        radial-gradient(1px 1px at 90px 40px, rgba(0, 188, 212, 0.5), transparent),
        radial-gradient(1px 1px at 130px 80px, rgba(0, 229, 255, 0.4), transparent),
        radial-gradient(2px 2px at 160px 30px, rgba(24, 255, 255, 0.3), transparent);
    background-size: 200px 150px;
    animation: particleFloat 15s linear infinite;
    opacity: 0.6;
}

@keyframes particleFloat {
    0% { transform: translateY(0px) rotate(0deg); }
    100% { transform: translateY(-100vh) rotate(360deg); }
}

.main-title {
    text-align: center;
    font-family: 'Orbitron', monospace;
    font-size: clamp(1.5rem, 4vw, 2.5rem);
    font-weight: 900;
    margin: 0;
    padding: 1rem 0;
    background: linear-gradient(135deg, #00e5ff 0%, #18ffff 50%, #00bcd4 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    text-shadow: 0 0 30px rgba(0, 229, 255, 0.5);
    position: relative;
    animation: titleGlow 3s ease-in-out infinite alternate;
    letter-spacing: 2px;
    z-index: 2;
}

@keyframes titleGlow {
    0% {
        filter: drop-shadow(0 0 10px rgba(0, 229, 255, 0.3));
        transform: scale(1);
    }
    100% {
        filter: drop-shadow(0 0 20px rgba(0, 229, 255, 0.6));
        transform: scale(1.02);
    }
}

.panel {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: min(95vw, 1200px);
    height: 80vh;
    background: var(--glass-bg);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid var(--glass-border);
    border-radius: 20px;
    padding: 2rem;
    overflow-y: auto;
    box-shadow:
        var(--shadow-glow),
        inset 0 1px 0 rgba(255, 255, 255, 0.1),
        0 20px 40px rgba(0, 0, 0, 0.3);
    animation: panelSlideIn 1s ease-out;
    position: relative;
}

@keyframes panelSlideIn {
    0% {
        opacity: 0;
        transform: translate(-50%, -40%) scale(0.9);
    }
    100% {
        opacity: 1;
        transform: translate(-50%, -50%) scale(1);
    }
}

.panel::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: var(--gradient-ice);
    border-radius: 20px;
    z-index: -1;
    opacity: 0.3;
}

.panel::-webkit-scrollbar {
    width: 8px;
}

.panel::-webkit-scrollbar-track {
    background: rgba(255, 255, 255, 0.05);
    border-radius: 10px;
}

.panel::-webkit-scrollbar-thumb {
    background: linear-gradient(45deg, var(--primary-ice), var(--secondary-ice));
    border-radius: 10px;
    box-shadow: 0 0 10px rgba(0, 229, 255, 0.3);
}

.panel::-webkit-scrollbar-thumb:hover {
    background: linear-gradient(45deg, var(--secondary-ice), var(--primary-ice));
}

.category {
    margin-bottom: 2rem;
    text-align: center;
    animation: categoryFadeIn 0.8s ease-out forwards;
    opacity: 0;
    transform: translateY(30px);
}

.category:nth-child(1) { animation-delay: 0.2s; }
.category:nth-child(2) { animation-delay: 0.4s; }
.category:nth-child(3) { animation-delay: 0.6s; }
.category:nth-child(4) { animation-delay: 0.8s; }

@keyframes categoryFadeIn {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.category h2 {
    font-family: 'Orbitron', monospace;
    font-weight: 700;
    font-size: 1.1rem;
    color: var(--primary-ice);
    margin-bottom: 1rem;
    padding-bottom: 0.5rem;
    position: relative;
    letter-spacing: 1px;
    text-transform: uppercase;
}

.category h2::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 0;
    height: 2px;
    background: linear-gradient(90deg, transparent, var(--primary-ice), transparent);
    animation: borderExpand 1s ease-out 0.5s forwards;
}

@keyframes borderExpand {
    to { width: 80%; }
}

.file {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    margin: 0.8rem;
    cursor: pointer;
    width: 90px;
    padding: 0.8rem;
    border-radius: 15px;
    transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
    position: relative;
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid transparent;
}

.file::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(135deg, rgba(0, 229, 255, 0.1), rgba(24, 255, 255, 0.05));
    border-radius: 15px;
    opacity: 0;
    transition: opacity 0.3s ease;
    z-index: -1;
}

.file:hover {
    transform: translateY(-8px) scale(1.05);
    border-color: var(--primary-ice);
    box-shadow:
        0 10px 25px rgba(0, 229, 255, 0.2),
        0 0 20px rgba(0, 229, 255, 0.1),
        inset 0 1px 0 rgba(255, 255, 255, 0.1);
}

.file:hover::before {
    opacity: 1;
}

.file:active {
    transform: translateY(-4px) scale(1.02);
}

.file img {
    width: 40px;
    height: 40px;
    image-rendering: pixelated;
    transition: all 0.3s ease;
    filter: drop-shadow(0 0 8px rgba(0, 229, 255, 0.3));
}

.file:hover img {
    transform: scale(1.1);
    filter: drop-shadow(0 0 15px rgba(0, 229, 255, 0.6));
}

.file span {
    margin-top: 0.5rem;
    color: #ffffff;
    font-size: 0.75rem;
    font-weight: 500;
    text-align: center;
    line-height: 1.2;
    transition: color 0.3s ease;
}

.file:hover span {
    color: var(--primary-ice);
    text-shadow: 0 0 10px rgba(0, 229, 255, 0.5);
}

.window {
    background: rgba(31, 41, 55, 0.6); /* bg-gray-800 with opacity */
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.1);
    position: fixed;
    top: 10%;
    left: 15%;
    width: 70%;
    height: 75%;
    border-radius: 20px;
    display: flex;
    flex-direction: column;
    z-index: 100;
    resize: both;
    overflow: hidden;
    box-shadow:
        0 25px 50px rgba(0, 0, 0, 0.5),
        0 0 30px rgba(0, 229, 255, 0.2),
        inset 0 1px 0 rgba(255, 255, 255, 0.1);
    animation: windowSlideIn 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

@keyframes windowSlideIn {
    0% {
        opacity: 0;
        transform: scale(0.8) translateY(-50px);
    }
    100% {
        opacity: 1;
        transform: scale(1) translateY(0);
    }
}

.window-header {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 60px;
    background: linear-gradient(135deg, rgba(0, 229, 255, 0.1), rgba(24, 255, 255, 0.05));
    border-bottom: 1px solid var(--glass-border);
    color: #ffffff;
    position: relative;
    cursor: move;
    user-select: none;
    font-family: 'Orbitron', monospace;
    font-weight: 600;
    letter-spacing: 1px;
}

#close-window {
    position: absolute;
    left: 20px;
    background: rgba(255, 82, 82, 0.1);
    border: 2px solid #ff5252;
    color: #ff5252;
    font-weight: bold;
    padding: 8px 16px;
    cursor: pointer;
    border-radius: 25px;
    transition: all 0.3s ease;
    font-size: 0.9rem;
    backdrop-filter: blur(10px);
}

#close-window:hover {
    background: #ff5252;
    color: white;
    transform: scale(1.05);
    box-shadow: 0 0 20px rgba(255, 82, 82, 0.4);
}

#window-content {
    flex: 1;
    width: 100%;
    border: none;
    background: rgba(255, 255, 255, 0.02);
}

#touch-warning {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(0, 0, 0, 0.95);
    backdrop-filter: blur(20px);
    color: white;
    font-size: 1.5rem;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 1000;
    text-align: center;
    font-family: 'Inter', sans-serif;
    padding: 2rem;
}

.domain-warning {
    position: absolute;
    bottom: 5%;
    left: 50%;
    transform: translateX(-50%);
    width: min(90vw, 600px);
    background: rgba(255, 82, 82, 0.1);
    backdrop-filter: blur(20px);
    border: 2px solid #ff5252;
    color: #ff5252;
    font-weight: 600;
    padding: 1.5rem;
    border-radius: 15px;
    display: flex;
    align-items: center;
    gap: 15px;
    font-size: 1rem;
    text-align: left;
    box-shadow: 0 10px 30px rgba(255, 82, 82, 0.2);
    animation: warningPulse 2s ease-in-out infinite alternate;
}

@keyframes warningPulse {
    0% { box-shadow: 0 10px 30px rgba(255, 82, 82, 0.2); }
    100% { box-shadow: 0 10px 40px rgba(255, 82, 82, 0.4); }
}

.copy-domain {
    text-decoration: underline dotted;
    color: #ff5252;
    cursor: pointer;
    transition: all 0.3s ease;
}

.copy-domain:hover {
    text-decoration: underline solid;
    color: #ff8a80;
    text-shadow: 0 0 10px rgba(255, 138, 128, 0.5);
}

@media (max-width: 768px) {
    .panel {
        width: 95vw;
        height: 85vh;
        padding: 1.5rem;
    }

    .main-title {
        font-size: 1.5rem;
        padding: 0.8rem 0;
    }

    .file {
        width: 70px;
        margin: 0.4rem;
        padding: 0.6rem;
    }

    .file img {
        width: 35px;
        height: 35px;
    }

    .file span {
        font-size: 0.7rem;
    }

    .category h2 {
        font-size: 1rem;
    }

    .window {
        width: 95vw;
        height: 80vh;
        top: 10%;
        left: 2.5%;
    }
}

@keyframes shimmer {
    0% { transform: translateX(-100%); }
    100% { transform: translateX(100%); }
}

.loading-shimmer {
    position: relative;
    overflow: hidden;
}

.loading-shimmer::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
    animation: shimmer 2s infinite;
}
`;
// find the style element
const styleElement = document.createElement('style');
// if it exists, replace it
if (styleElement.styleSheet) {
    styleElement.styleSheet.cssText = newStyles;
} else {
    // if it doesnt exist, make a new one
    styleElement.appendChild(document.createTextNode(newStyles));
}
// append the style
document.head.appendChild(styleElement);
})();