// ==UserScript==
// @name Themes for Diep.io
// @version 2.1.2
// @description Themes for diep.io is amazing tool for your style :)
// @author @jaja.morgan
// @match https://diep.io/*
// @grant GM_addStyle
// @license MIT
// @namespace *://diep.io/
// ==/UserScript==
let editing;
let selected;
let cache = {};
const modo = document.createElement("div");
modo.id = "modo";
modo.style.display = "none";
modo.innerHTML = `
<div id="themes">
<div class="tool__header">
<h2 class="">Themes menu</h2>
</div>
<div class="themes__content"></div>
<div class="container-btns"><button class="green">Create theme</button>
<span>or</span>
<button class="purple">Import</button></div>
</div>
<div id="dashboard">
<div class="tool__header">
<h2>Dashboard</h2>
<span></span>
</div>
<div class="dashboard__content"></div>
<div class="container-btns">
<button class="green">Save</button>
<button class="red">Close</button>
</div>
</div>
`;
document.body.append(modo);
const logo = document.createElement("span");
logo.style =
"z-index:100;position: absolute; top:0; left: 75px; color: #ffffff69; font-size:15px";
logo.innerText = "Themes for diep.io :)";
document.body.append(logo);
const MENU_CONTENT = document.getElementsByClassName("themes__content")[0];
const THEMES = document.getElementById("themes");
const DASHBOARD = document.getElementById("dashboard");
DASHBOARD.style.display = "none";
DASHBOARD.setValues = (values) => {
[
...document
.querySelector(".dashboard__content")
.querySelectorAll(".option__value *"),
].map((el) => el.setValue(values));
};
DASHBOARD.getValues = () => {
return [
...document
.querySelector(".dashboard__content")
.querySelectorAll(".option__value *"),
].map((el) => el.getValue());
};
DASHBOARD.context = {
type: null,
theme: null,
};
class ThemeBtn {
constructor(parentTheme, type, name, parent) {
this.el = document.createElement("button");
this.el.className = type;
this.parentTheme = parentTheme;
if (type == "edit") {
this.el.innerText = "Edit";
this.el.onclick = () => {
if (editing) editing.classList.remove("editing");
editing = this.parentTheme.el;
editing.classList.add("editing");
callDashboard("edit", parentTheme);
cache = getUserData();
};
} else if (type == "export") {
this.el.innerText = "Export";
this.el.onclick = () => {
navigator.clipboard.writeText(
JSON.stringify({ [`${name}`]: getUserData()[`${name}`] })
);
};
} else {
this.el.innerText = "Delete";
this.el.onclick = () => {
if (confirm("Are you sure? The theme will be deleted.")) {
let db = getUserData();
delete db[`${name}`];
localStorage.setItem("users_themes", JSON.stringify(db));
parentTheme.el.remove();
cache = getUserData();
}
};
}
parent.append(this.el);
}
}
class Theme {
constructor(name, data) {
this.el = document.createElement("div");
this.el.className = "theme";
this.data = data;
this.name = name;
this.label = document.createElement("div");
this.label.className = "theme__name";
this.label.innerText = name;
this.label.onclick = () => {
if (selected) selected.classList.remove("activated");
DASHBOARD.setValues(this.data);
selected = this.el;
localStorage.setItem("selected_theme", JSON.stringify(this.name));
selected.classList.add("activated");
};
this.el.append(this.label);
let contBtn = document.createElement("div");
contBtn.className = "container-btns";
new ThemeBtn(this, "export", this.name, contBtn);
new ThemeBtn(this, "edit", this.name, contBtn);
new ThemeBtn(this, "delete", this.name, contBtn);
this.el.append(contBtn);
MENU_CONTENT.append(this.el);
cache = getUserData();
}
editData(values) {
let db = getUserData();
db[`${this.name}`] = values;
localStorage.setItem("users_themes", JSON.stringify(db));
this.data = values;
cache = getUserData();
}
}
class Input {
constructor(default_, cmd, isLast = false) {
this.default = default_;
this.cmd = cmd;
//this.cEl = document.createElement("div");
//this.vEl = document.createElement("div");
this.el = document.createElement("input");
this.isLast = isLast;
}
}
class ColorInput extends Input {
constructor(default_, cmd, isLast) {
super(default_, cmd, isLast);
this.el.type = "color";
this.el.value = this.default;
this.el.oninput = () => {
input.execute(`${this.cmd}${this.el.value.slice(1)}`);
};
this.el.getValue = () => {
return `${this.cmd}${this.el.value.slice(1)}`;
};
this.el.setValue = (values) => {
let found = false;
for (let value of values) {
if (value.includes(this.cmd)) {
found = true;
const RE = new RegExp(this.cmd);
const value_ = value.replace(RE, "");
this.el.value = "#" + value_;
break;
}
}
if (!found) this.el.value = this.default;
this.el.oninput();
};
}
}
class CheckBoxInput extends Input {
constructor(default_, cmd, isLast) {
super(default_, cmd, isLast);
this.el.type = "checkbox";
this.el.checked = this.default;
this.el.oninput = () => {
input.execute(`${this.cmd}${this.el.checked}`);
};
this.el.getValue = () => {
return `${this.cmd}${this.el.checked}`;
};
this.el.setValue = (values) => {
let found = false;
for (let value of values) {
if (value.includes(this.cmd)) {
found = true;
const RE = new RegExp(this.cmd);
const value_ = value.replace(RE, "");
if (value_ === "true") {
this.el.checked = true;
} else {
this.el.checked = false;
}
break;
}
}
if (!found) this.el.checked = this.default;
this.el.oninput();
};
}
}
class RangeInput extends Input {
constructor(default_, cmd, step, min, max, isLast) {
super(default_, cmd, isLast);
this.el.type = "range";
this.el.value = this.default;
this.el.step = step;
this.el.min = min;
this.el.max = max;
this.el.addEventListener("mousedown", (event) => {
event.stopImmediatePropagation();
});
this.el.oninput = () => {
input.execute(`${this.cmd}${this.el.value}`);
this.el.parentElement.parentElement
.querySelector(".option__label")
.onlabel(this.el.value);
};
this.el.getValue = () => {
return `${this.cmd}${this.el.value}`;
};
this.el.setValue = (values) => {
let found = false;
for (let value of values) {
if (value.includes(this.cmd)) {
found = true;
const RE = new RegExp(this.cmd);
this.el.value = value.replace(RE, "");
break;
}
}
if (!found) this.el.value = this.default;
this.el.oninput();
};
}
}
function callDashboard(type, theme) {
DASHBOARD.style.display = "block";
DASHBOARD.context.type = type;
DASHBOARD.context.theme = theme;
DASHBOARD.setValues(theme.data);
let header = DASHBOARD.querySelector("div span");
header.innerText = `editing "${theme.name}"`;
console.log(DASHBOARD.context);
}
function saveTheme(type, theme) {
var db = getUserData();
var values = [];
var name = "";
if (!db) db = [];
if (type == "create") {
name = prompt("Enter the name of this theme.");
if (!name) {
alert("ERR: Invalid volume!");
return false;
}
if (name.length > 25) {
alert("ERR: Invalid length name (must be 25-)!");
return false;
}
for (let t in db)
if (t == name)
return alert("ERR: There is already a theme with the same name!");
values = DASHBOARD.getValues();
db[`${name}`] = values;
localStorage.setItem("users_themes", JSON.stringify(db));
new Theme(name, values);
hideEl(DASHBOARD);
} else if (type == "edit") {
if (confirm("Are you sure? The theme will be overwritten.")) {
values = DASHBOARD.getValues();
theme.editData(values);
if (editing) editing.classList.remove("editing");
hideEl(DASHBOARD);
}
}
backToSTheme();
cache = getUserData();
}
function hideEl(el) {
if (el.style.display != "none") {
el.style.display = "none";
} else {
el.style.display = "";
}
}
function setDrag(el, el_child, lsName) {
var newPosX = 0,
newPosY = 0,
MousePosX = 0,
MousePosY = 0;
if (el_child) {
el_child.forEach((e) => e.addEventListener("mousedown", MouseDown));
} else el.addEventListener("mousedown", MouseDown);
function MouseDown(mouseDown) {
MousePosX = mouseDown.pageX;
MousePosY = mouseDown.pageY;
el.classList.add("dragableging");
document.addEventListener("mousemove", elementMove);
document.addEventListener("mouseup", stopElementMove);
}
function elementMove(mouseMove) {
newPosX = MousePosX - mouseMove.pageX;
newPosY = MousePosY - mouseMove.pageY;
MousePosX = mouseMove.pageX;
MousePosY = mouseMove.pageY;
el.style.top = el.offsetTop - newPosY + "px";
el.style.left = el.offsetLeft - newPosX + "px";
}
function stopElementMove() {
localStorage.setItem(
lsName,
JSON.stringify({
x: el.offsetLeft - newPosX + "px",
y: el.offsetTop - newPosY + "px",
})
);
el.classList.remove("dragableging");
document.removeEventListener("mousemove", elementMove);
document.removeEventListener("mouseup", stopElementMove);
}
}
function importJSON(text) {
let data;
let uDb = getUserData();
try {
console.log(text);
data = JSON.parse(text);
for (let theme in data) {
if (theme.length > 25) new Error("Incorrect name.");
for (let el of [...THEMES.getElementsByClassName("theme__name")]) {
if (el.innerText === theme) {
if (confirm(`${theme} will be overwrriten, are you sure?`)) {
el.parentElement.remove();
} else return;
}
}
new Theme(theme, data[`${theme}`]);
uDb[`${theme}`] = data[`${theme}`];
}
} catch (err) {
return alert("Something went wrong...");
}
localStorage.setItem("users_themes", JSON.stringify(uDb));
}
function init() {
if (!JSON.parse(localStorage.getItem("cho"))) {
alert("Press 'r' to show or hide menu in game.");
setTimeout(() => alert("Please dont forget to send feedback :v"), 30000);
localStorage.setItem("cho", "1");
localStorage.setItem(
"users_themes",
JSON.stringify({
classic: [],
dark: [
"ren_border_color 0x858585",
"ren_grid_color 0xffffff",
"ren_background_color 0x101010",
],
arras: [
"ren_score_bar_fill_color 0x8abc3f",
"ren_xp_bar_fill_color 0xefc74b",
"net_replace_color 0 0x484848",
"net_replace_color 1 0xa7a7af",
"net_replace_color 2 0x3ca4cb",
"net_replace_color 3 0x3ca4cb",
"net_replace_color 4 0xe03e41",
"net_replace_color 5 0xcc669c",
"net_replace_color 6 0x8abc3f",
"net_replace_color 8 0xefc74b",
"net_replace_color 9 0xe7896d",
"net_replace_color 10 0x8d6adf",
"net_replace_color 11 0xef99c3",
"net_replace_color 12 0xfdf380",
"net_replace_color 14 0xa7a7af",
"net_replace_color 15 0xe03e41",
"net_replace_color 17 0x726f6f",
],
neon: [
"ren_stroke_soft_color_intensity -100",
"ren_solid_background true",
"ren_stroke_soft_color true",
"ren_background_color 0x000000",
"ren_border_color 0xFFFFFF",
"ren_border_alpha 100",
"net_replace_color 0 0xFFFFFF",
"net_replace_color 1 0x010101",
"net_replace_color 2 0x000102",
"net_replace_color 3 0x000102",
"net_replace_color 4 0x020000",
"net_replace_color 5 0x020002",
"net_replace_color 6 0x000200",
"net_replace_color 7 0x000100",
"net_replace_color 8 0x010101",
"net_replace_color 9 0x010101",
"net_replace_color 10 0x010101",
"net_replace_color 11 0x0e0e0e",
"net_replace_color 12 0x020200",
"net_replace_color 13 0x010101",
"net_replace_color 14 0x010101",
"net_replace_color 15 0x020000",
"net_replace_color 16 0x010200",
"net_replace_color 17 0x000202",
],
})
);
}
window.addEventListener("keydown", (event) => {
if (["r", "R", "к", "К"].includes(event.key)) {
hideEl(modo);
}
});
document.getElementsByClassName("green")[0].onclick = () => {
callDashboard("create", { name: "new theme", data: [] });
};
document.getElementsByClassName("green")[1].onclick = () => {
saveTheme(DASHBOARD.context.type, DASHBOARD.context.theme);
};
document.getElementsByClassName("purple")[0].onclick = () => {
importJSON(prompt("Please paste here copied theme."));
};
document.getElementsByClassName("red")[0].onclick = () => {
if (confirm("Are you sure? The changes are unsaved!")) {
hideEl(DASHBOARD);
backToSTheme();
if (editing) editing.classList.remove("editing");
let header = DASHBOARD.querySelector("div span");
header.innerText = ``;
}
};
setDrag(
document.querySelector("#dashboard"),
[
document.querySelector("#dashboard .tool__header"),
document.querySelector("#dashboard > .container-btns"),
],
"dashboardPos"
);
setDrag(
document.querySelector("#themes"),
[
document.querySelector("#themes .tool__header"),
document.querySelector("#themes > .container-btns"),
],
"themesPos"
);
function addSection(header, options) {
const SECTION = document.createElement("div");
SECTION.className = "content__section";
SECTION.append(header, options);
document.getElementsByClassName("dashboard__content")[0].append(SECTION);
}
function createHeader(text) {
const HEADER = document.createElement("div");
HEADER.className = "section__header";
HEADER.innerText = text;
HEADER.onclick = function () {
const OPTIONS = HEADER.parentElement.querySelector(".section__options");
if (OPTIONS) {
if (OPTIONS.style.display != "none") {
HEADER.classList.add("hidden");
OPTIONS.style.display = "none";
} else {
HEADER.classList.remove("hidden");
OPTIONS.style.display = "";
}
}
};
return HEADER;
}
function createOption(text, html, isLast = false) {
const OPTION = document.createElement("div");
OPTION.className = "section__option";
const OPTION_LABEL = document.createElement("span");
OPTION_LABEL.className = "option__label";
OPTION_LABEL.innerText = text;
OPTION_LABEL.onlabel = (value) => {
OPTION_LABEL.innerText = `${text}: ${value}`;
};
const OPTION_VALUE = document.createElement("div");
OPTION_VALUE.className = "option__value";
OPTION_VALUE.append(html);
OPTION.append(OPTION_LABEL, OPTION_VALUE);
if (isLast) {
OPTION.style.marginBottom = "10px";
}
return OPTION;
}
const DB_OBJECT = {
"Global colors": {
"Map background": new ColorInput("#cdcdcd", "ren_background_color 0x"),
"Map border": new ColorInput("#000000", "ren_border_color 0x"),
"Map border alpha": new RangeInput(
0.1,
"ren_border_color_alpha ",
0.01,
0,
1
),
"Map grid": new ColorInput("#000000", "ren_grid_color 0x"),
"Map grid alpha": new RangeInput(
0.1,
"ren_grid_base_alpha ",
0.01,
0,
1,
true
),
"Minimap background": new ColorInput(
"#cdcdcd",
"ren_minimap_background_color 0x"
),
"Minimap border": new ColorInput(
"#555555",
"ren_minimap_border_color 0x",
true
),
"Soft colors": new CheckBoxInput(true, "ren_stroke_soft_color "),
"Soft stroke intensity": new RangeInput(
0.25,
"ren_stroke_soft_color_intensity ",
0.05,
null,
1,
true
),
Squares: new ColorInput("#ffe869", "net_replace_color 8 0x"),
Triangles: new ColorInput("#fc7677", "net_replace_color 9 0x"),
Pentagons: new ColorInput("#768dfc", "net_replace_color 10 0x"),
"Shiny poligons": new ColorInput(
"#89ff69",
"net_replace_color 7 0x",
true
),
Crashers: new ColorInput("#ff77dc", "net_replace_color 11 0x"),
"Neutral team": new ColorInput("#ffe869", "net_replace_color 12 0x"),
"Fallen Bosses": new ColorInput(
"#c0c0c0",
"net_replace_color 17 0x",
true
),
"Health bar": new ColorInput("#85e37d", "ren_health_fill_color 0x"),
"Health bar background": new ColorInput(
"#555555",
"ren_health_background_color 0x"
),
"EXP bar": new ColorInput("#ffde43", "ren_xp_bar_fill_color 0x"),
"Score bar": new ColorInput("#43ff91", "ren_score_bar_fill_color 0x"),
"EXP/Score/Scoreboard backgrounds": new ColorInput(
"#000000",
"ren_bar_background_color 0x",
true
),
"Barrels & etc": new ColorInput("#999999", "net_replace_color 1 0x"),
"Smasher & dominator bases": new ColorInput(
"#555555",
"net_replace_color 0 0x"
),
},
"TDM colors": {
"Blue team": new ColorInput("#00b1de", "net_replace_color 3 0x"),
"Red Team": new ColorInput("#f14e54", "net_replace_color 4 0x"),
"Purple team": new ColorInput("#be7ff5", "net_replace_color 5 0x"),
"Green team": new ColorInput("#00f46c", "net_replace_color 6 0x"),
},
"FFA colors": {
"Your body": new ColorInput("#00b1de", "net_replace_color 2 0x"),
"Enemies' bodies": new ColorInput("#f14e56", "net_replace_color 15 0x"),
"Summoned squares": new ColorInput("#fbc477", "net_replace_color 16 0x"),
"Maze walls": new ColorInput("#bbbbbb", "net_replace_color 14 0x"),
"Scoreboard bar": new ColorInput("#44ffa0", "net_replace_color 13 0x"),
},
Other: {
FPS: new CheckBoxInput(false, "ren_fps "),
"Players' names": new CheckBoxInput(true, "ren_names "),
"Health bar": new CheckBoxInput(true, "ren_health_bars "),
"Show health bar values": new CheckBoxInput(
false,
"ren_raw_health_values "
),
"Scoreboar names": new CheckBoxInput(true, "ren_scoreboard_names "),
Scoreboard: new CheckBoxInput(true, "ren_scoreboard "),
"Minimap viewport": new CheckBoxInput(false, "ren_minimap_viewport "),
UI: new CheckBoxInput(true, "ren_ui "),
//"UI scale": new RangeInput(1, "ren_ui_scale ", 0.01, 0, null, true),
"Pattern grid": new CheckBoxInput(true, "ren_pattern_grid "),
"Debug collisions": new CheckBoxInput(false, "ren_debug_collisions "),
},
};
for (let ctg in DB_OBJECT) {
const HEADER = createHeader(ctg);
const OPTIONS = document.createElement("div");
OPTIONS.className = "section__options";
for (let opt in DB_OBJECT[ctg]) {
const OPT_OBJECT = DB_OBJECT[ctg][opt];
OPTIONS.append(createOption(opt, OPT_OBJECT.el, OPT_OBJECT.isLast));
}
addSection(HEADER, OPTIONS);
}
let uDb = getUserData();
const selected = JSON.parse(localStorage.getItem("selected_theme"));
for (let t in uDb) {
let theme = uDb[`${t}`];
let sTheme = new Theme(t, theme);
if (!!selected) {
if (sTheme.name == selected) {
sTheme.label.onclick();
DASHBOARD.setValues(cache[`${selected}`]);
}
}
}
const dashboardPos = JSON.parse(localStorage.getItem("dashboardPos"));
const themesPos = JSON.parse(localStorage.getItem("themesPos"));
if (!!dashboardPos) {
DASHBOARD.style.left = dashboardPos.x;
DASHBOARD.style.top = dashboardPos.y;
}
if (!!themesPos) {
THEMES.style.left = themesPos.x;
THEMES.style.top = themesPos.y;
}
}
function backToSTheme() {
DASHBOARD.setValues(
cache[`${JSON.parse(localStorage.getItem("selected_theme"))}`]
);
}
function getUserData() {
return JSON.parse(localStorage.getItem("users_themes"));
}
const checking = setInterval(() => {
try {
if (input) {
clearInterval(checking);
init();
}
} catch (err) {}
}, 10);
GM_addStyle(`* {
outline: none;
margin: 0;
}
#modo {
font-family: "Montserrat", sans-serif !important;
font-size: 16px;
position: relative;
z-index: 777;
}
#modo #themes,
#modo #dashboard {
outline: none;
padding: 10px 15px;
border-radius: 6px;
position: absolute;
border: 2px #00ffff solid;
box-shadow: 4px 3px 20px 1px black;
background: #25282b;
opacity: 0.9;
color: white;
}
#modo .tool__header {
cursor: move !important;
display: flex;
justify-content: center;
position: relative;
margin-bottom: 20px;
text-align: center;
font-weight: bold;
}
.tool__header h2 {
font-size: 250%;
}
.tool__header span {
display: inline-block;
font-size: 75%;
bottom: -15px;
position: absolute;
}
/*
*
* THEMES MENU
*
*/
#themes {
top: 25px;
left: 10px;
overflow-y: auto;
overflow-x: hidden;
max-width: 700px;
padding: 150px 0px;
border: 2px solid aqua;
}
.themes__content {
margin: 20px 0;
width: 100%;
max-height: 200px;
overflow-y: auto;
padding-right: 10px;
}
.themes__content::-webkit-scrollbar {
width: 7.5px;
}
.themes__content::-webkit-scrollbar-track {
background-color: aqua;
border-radius: 5px;
}
.themes__content::-webkit-scrollbar-thumb {
background-color: #070707;
border-radius: 3px;
}
.theme {
position: relative;
box-sizing: border-box;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0px 10px;
}
.theme .theme__name {
cursor: pointer;
word-wrap: break-word;
word-break: normal;
padding: 10px 0;
width: 150px;
}
.theme.editing,
.theme.editing.activated {
background-color: rgba(255, 166, 0, 0.5);
}
.theme.activated {
background-color: rgba(0, 255, 0, 0.53);
}
.theme:hover:not(.activated, .editing) {
transition-duration: 0.25s;
background-color: rgba(255, 255, 255, 0.1);
}
.theme button {
padding: 0px 10px;
font-weight: bold;
border: none;
color: white;
height: 25px;
cursor: pointer;
}
.theme button:hover {
filter: brightness(80%);
}
button.export {
margin-right: 10px;
background: purple;
}
button.edit {
margin-right: 10px;
background: rgb(240, 204, 0);
}
button.delete {
background: red;
}
.container-btns {
text-align: center;
display: flex;
justify-content: space-around;
align-items: center;
}
#themes > .container-btns {
cursor: move;
padding: 0 25px;
}
#dashboard > .container-btns {
cursor: move;
}
.container-btns .green {
padding: 10px 15px;
cursor: pointer;
font-size: 105%;
outline: none;
font-weight: bold;
background: transparent;
border: 1px solid rgb(0, 237, 0);
color: rgb(0, 237, 0);
transition: 1s cubic-bezier(0.075, 0.82, 0.165, 1);
}
.container-btns .green:hover {
color: #070707;
background: rgb(0, 237, 0);
transition: 1s cubic-bezier(0.075, 0.82, 0.165, 1);
}
.container-btns .purple {
padding: 10px 25px;
cursor: pointer;
font-size: 105%;
outline: none;
font-weight: bold;
background: transparent;
border: 1px solid purple;
color: purple;
transition: 1s cubic-bezier(0.075, 0.82, 0.165, 1);
}
.container-btns .purple:hover {
color: #070707;
background: purple;
transition: 1s cubic-bezier(0.075, 0.82, 0.165, 1);
}
.container-btns .red {
padding: 10px 25px;
cursor: pointer;
font-size: 105%;
outline: none;
font-weight: bold;
background: transparent;
border: 1px solid rgb(237, 0, 0);
color: rgb(237, 0, 0);
transition: 1s cubic-bezier(0.075, 0.82, 0.165, 1);
}
.container-btns .red:hover {
color: #070707;
background: rgb(237, 0, 0);
transition: 1s cubic-bezier(0.075, 0.82, 0.165, 1);
}
/*
*
* DASHBOARD
*
*/
#dashboard {
top: 25px;
right: 25px;
width: 444px;
font-size: 20px;
}
#dashboard * {
font-weight: 600;
}
#dashboard input {
outline: none;
border: none;
margin: 0;
padding: 0;
cursor: pointer;
}
#dashboard input[type="color"],
#dashboard input[type="checkbox"] {
background: rgba(0, 0, 0, 0);
}
#dashboard ::-webkit-color-swatch {
border-radius: 50%;
}
#dashboard input[type="checkbox"] {
margin-top: 3px;
}
#dashboard input[type="number"] {
text-align: center;
width: 75px;
height: 10px;
border: rgba(0, 0, 0, 0) 2px solid;
color: white;
background: black;
padding: 3px 0px 3px 10px;
border-radius: 25px;
transition: border-color 0.3s;
}
#dashboard input[type="number"]:hover,
#dashboard input[type="number"]:focus {
border: #00ffffbf 2px solid;
}
#dashboard input::-webkit-color-swatch-wrapper {
margin-top: 2px;
outline: none;
padding: 0;
}
.dashboard__content {
max-height: 500px;
margin-bottom: 15px;
overflow-y: auto;
overflow-x: hidden;
}
.dashboard__content::-webkit-scrollbar {
width: 7.5px;
}
.dashboard__content::-webkit-scrollbar-track {
background: #00ffff;
border-radius: 5px;
}
.dashboard__content::-webkit-scrollbar-thumb {
background: #070707;
border-radius: 3px;
}
.content__section {
margin: 5px 5px 10px 5px;
}
.section__options {
margin-left: 20px;
font-size: 75%;
}
.section__header {
position: relative;
cursor: pointer;
user-select: none;
font-size: 110%;
display: inline-block;
margin-left: 25px;
margin-bottom: 5px;
font-weight: bold;
}
.section__header::before {
left: -20px;
position: absolute;
content: ">";
transform: rotate(90deg);
}
.section__header.hidden::before {
content: ">";
transform: rotate(0deg);
}
.section__option {
height: 25px;
width: 300px;
padding: 5px 300px 0px 15px;
border-left: 3px #255cd8 solid;
transition: 0.2s;
}
.section__option span {
margin-right: 5px;
}
.section__option input[type="color"] {
width: 15px;
height: 15px;
border: none;
padding: 0;
}
.section__option input[type="range"] {
width: 100px;
}
.section__option:hover {
background: #ffffff12;
}
.section__option:focus-within {
background: #ffffff26;
border-left: 3px orange solid;
}
.option__value {
float: right;
display: inline-block;
}
.option__label {
user-select: none;
display: inline-block;
}
#dashboard .ct {
padding: 10px 100px;
}
.header__btn {
outline: none;
border: none;
padding: 10px 20px;
cursor: pointer;
color: white;
font-weight: bold;
transition-property: background-color;
transition-duration: 0.3s;
}
.header__btn:hover {
background-color: rgba(0, 0, 0, 0.33) !important;
}
#db_switcher::after,
#db_switcher::before {
content: " - ";
}
#db_switcher.hidden::after,
#db_switcher.hidden::before {
content: " + ";
}
`);