From 1b3b79447f2da0b82b6beb6b9128287c84aa9c1c Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 3 May 2026 23:25:17 +0000
Subject: [PATCH 1/2] chore: begin GSP baseline changes (plan only)
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/40ca313f-3f17-4f62-8f05-ba72540a8d30
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
---
obsidian-upstream | 1 +
1 file changed, 1 insertion(+)
create mode 160000 obsidian-upstream
diff --git a/obsidian-upstream b/obsidian-upstream
new file mode 160000
index 00000000..471c3829
--- /dev/null
+++ b/obsidian-upstream
@@ -0,0 +1 @@
+Subproject commit 471c3829b9d252703bca603620e8318d9f28b24a
From d564476d1cd267ec3a22fe1c8d81d0499ecef398 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Sun, 3 May 2026 23:31:07 +0000
Subject: [PATCH 2/2] =?UTF-8?q?feat:=20GSP=201.0=20baseline=20=E2=80=93=20?=
=?UTF-8?q?module=20versions,=20FAQ=20refresh,=20XML=20editor=20validation?=
=?UTF-8?q?,=20Obsidian=20theme?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/40ca313f-3f17-4f62-8f05-ba72540a8d30
Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
---
CHANGELOG.md | 8 +-
modules/addonsmanager/module.php | 2 +-
modules/administration/module.php | 2 +-
modules/backup-restore/module.php | 2 +-
modules/config_games/config_servers.php | 231 +++++++++-
modules/editconfigfiles/module.php | 2 +-
modules/faq/faq.php | 26 +-
modules/faq/navigation.xml | 2 +-
modules/ftp/module.php | 2 +-
modules/litefm/module.php | 2 +-
modules/modulemanager/module.php | 2 +-
modules/news/module.php | 2 +-
modules/register/module.php | 2 +-
modules/server/module.php | 2 +-
modules/settings/module.php | 2 +-
modules/update/module.php | 2 +-
modules/user_admin/module.php | 2 +-
modules/user_games/module.php | 2 +-
modules/util/module.php | 2 +-
themes/Obsidian/botbody.html | 4 +
themes/Obsidian/bottom.html | 19 +
themes/Obsidian/config/config.php | 82 ++++
themes/Obsidian/config/config.xml | 9 +
themes/Obsidian/css/login.css | 1 +
themes/Obsidian/css/pace/big-counter.css | 1 +
themes/Obsidian/css/pace/bounce.css | 1 +
themes/Obsidian/css/pace/center-atom.css | 1 +
themes/Obsidian/css/pace/center-circle.css | 1 +
themes/Obsidian/css/pace/center-radar.css | 1 +
themes/Obsidian/css/pace/center-rotate.css | 1 +
themes/Obsidian/css/pace/center-simple.css | 1 +
themes/Obsidian/css/pace/corner-indicator.css | 1 +
themes/Obsidian/css/pace/default.css | 1 +
themes/Obsidian/css/pace/material.css | 1 +
themes/Obsidian/css/pace/pace.css | 1 +
themes/Obsidian/css/responsive.css | 1 +
themes/Obsidian/css/style.css | 1 +
themes/Obsidian/css/tip.css | 2 +
themes/Obsidian/images/addfolder.png | Bin 0 -> 339 bytes
themes/Obsidian/images/arrowdown.png | Bin 0 -> 272 bytes
themes/Obsidian/images/arrows.gif | Bin 0 -> 96 bytes
themes/Obsidian/images/asc.gif | Bin 0 -> 83 bytes
themes/Obsidian/images/auto_update.png | Bin 0 -> 682 bytes
themes/Obsidian/images/bg.gif | Bin 0 -> 64 bytes
themes/Obsidian/images/bg.jpg | Bin 0 -> 62381 bytes
themes/Obsidian/images/bg2.jpg | Bin 0 -> 121032 bytes
themes/Obsidian/images/bottomLinks-bg.png | Bin 0 -> 199 bytes
themes/Obsidian/images/bottomWrapper-bg.png | Bin 0 -> 217 bytes
themes/Obsidian/images/code.png | Bin 0 -> 357 bytes
themes/Obsidian/images/collapse.png | Bin 0 -> 2935 bytes
themes/Obsidian/images/customfields.png | Bin 0 -> 4372 bytes
themes/Obsidian/images/dark-bg.png | Bin 0 -> 2800 bytes
themes/Obsidian/images/default_avatar.png | Bin 0 -> 909 bytes
themes/Obsidian/images/desc.gif | Bin 0 -> 83 bytes
themes/Obsidian/images/edit.png | Bin 0 -> 302 bytes
themes/Obsidian/images/editconfig.png | Bin 0 -> 3848 bytes
themes/Obsidian/images/error.png | Bin 0 -> 3840 bytes
themes/Obsidian/images/exec.png | Bin 0 -> 247 bytes
themes/Obsidian/images/favicon.ico | Bin 0 -> 1150 bytes
themes/Obsidian/images/file.png | Bin 0 -> 270 bytes
themes/Obsidian/images/file_size.png | Bin 0 -> 250 bytes
themes/Obsidian/images/filemanager.png | Bin 0 -> 3869 bytes
themes/Obsidian/images/folder.png | Bin 0 -> 186 bytes
themes/Obsidian/images/ftp.png | Bin 0 -> 245 bytes
themes/Obsidian/images/gamemanager.png | Bin 0 -> 547 bytes
themes/Obsidian/images/half.png | Bin 0 -> 2951 bytes
themes/Obsidian/images/hmenu-sel.jpg | Bin 0 -> 654 bytes
themes/Obsidian/images/hmenu.jpg | Bin 0 -> 654 bytes
themes/Obsidian/images/hover.gif | Bin 0 -> 62 bytes
themes/Obsidian/images/hover_sub.gif | Bin 0 -> 76 bytes
themes/Obsidian/images/icon_details.png | Bin 0 -> 1201 bytes
themes/Obsidian/images/icon_help_small.png | Bin 0 -> 1146 bytes
themes/Obsidian/images/icons/chip.png | Bin 0 -> 15503 bytes
themes/Obsidian/images/icons/computer.png | Bin 0 -> 15792 bytes
themes/Obsidian/images/icons/folder.png | Bin 0 -> 427 bytes
themes/Obsidian/images/icons/game_monitor.png | Bin 0 -> 367 bytes
themes/Obsidian/images/icons/list_server.png | Bin 0 -> 902 bytes
themes/Obsidian/images/icons/ram_memory.png | Bin 0 -> 15179 bytes
.../Obsidian/images/icons/server_uptime.png | Bin 0 -> 15539 bytes
themes/Obsidian/images/icons/servers.png | Bin 0 -> 15533 bytes
themes/Obsidian/images/icons/storage.png | Bin 0 -> 1320 bytes
themes/Obsidian/images/icons/support.png | Bin 0 -> 547 bytes
themes/Obsidian/images/install.png | Bin 0 -> 589 bytes
themes/Obsidian/images/light-bg.png | Bin 0 -> 2800 bytes
themes/Obsidian/images/limit.png | Bin 0 -> 4871 bytes
themes/Obsidian/images/locked.png | Bin 0 -> 163 bytes
themes/Obsidian/images/log.png | Bin 0 -> 192 bytes
themes/Obsidian/images/logo.png | Bin 0 -> 5150 bytes
themes/Obsidian/images/logo.png final | Bin 0 -> 4934 bytes
themes/Obsidian/images/magnifglass.png | Bin 0 -> 496 bytes
themes/Obsidian/images/master.png | Bin 0 -> 1981 bytes
themes/Obsidian/images/mime.png | Bin 0 -> 684 bytes
themes/Obsidian/images/mysql.png | Bin 0 -> 2377 bytes
themes/Obsidian/images/offline.png | Bin 0 -> 2954 bytes
themes/Obsidian/images/online.png | Bin 0 -> 2960 bytes
themes/Obsidian/images/rcon_preset.png | Bin 0 -> 304 bytes
themes/Obsidian/images/restart.png | Bin 0 -> 10953 bytes
themes/Obsidian/images/rsync.png | Bin 0 -> 234 bytes
themes/Obsidian/images/slideshowBottom.png | Bin 0 -> 1213 bytes
.../Obsidian/images/slideshowLeftCorner.png | Bin 0 -> 267 bytes
.../Obsidian/images/slideshowRightCorner.png | Bin 0 -> 274 bytes
themes/Obsidian/images/spinner_big.gif | Bin 0 -> 10015 bytes
themes/Obsidian/images/start.png | Bin 0 -> 9946 bytes
themes/Obsidian/images/steam.png | Bin 0 -> 963 bytes
themes/Obsidian/images/stop.png | Bin 0 -> 7226 bytes
themes/Obsidian/images/theme.png | Bin 0 -> 3112 bytes
themes/Obsidian/images/topBanner.png | Bin 0 -> 28987 bytes
themes/Obsidian/images/topWrapper-bg.jpg | Bin 0 -> 11323 bytes
themes/Obsidian/images/txt.png | Bin 0 -> 896 bytes
themes/Obsidian/images/unlocked.png | Bin 0 -> 168 bytes
themes/Obsidian/images/wrapper-bg.png | Bin 0 -> 2830 bytes
themes/Obsidian/js/Obsidian.min.js | 268 ++++++++++++
themes/Obsidian/js/config.min.js | 1 +
themes/Obsidian/js/cookie.js | 10 +
themes/Obsidian/js/pace.min.js | 2 +
themes/Obsidian/js/tip.min.js | 6 +
themes/Obsidian/layout.html | 50 +++
themes/Obsidian/modules/TS3Admin/TS3Admin.css | 126 ++++++
.../modules/addonsmanager/addons_manager.css | 33 ++
.../Obsidian/modules/administration/main.css | 1 +
.../Obsidian/modules/administration/main.js | 19 +
.../modules/administration/watch_logger.css | 11 +
.../modules/administration/watch_logger.js | 3 +
themes/Obsidian/modules/cron/user_cron.css | 10 +
.../Obsidian/modules/dashboard/dashboard.css | 99 +++++
.../Obsidian/modules/dashboard/dashboard.js | 1 +
.../modules/dashboard/server_info.css | 1 +
themes/Obsidian/modules/extras/extras.css | 67 +++
themes/Obsidian/modules/extras/extras.js | 7 +
themes/Obsidian/modules/faq/faq.css | 1 +
themes/Obsidian/modules/ftp/ftp.css | 10 +
themes/Obsidian/modules/ftp/ftp.js | 19 +
themes/Obsidian/modules/ftp/ftps.css | 87 ++++
themes/Obsidian/modules/ftp/main.js | 5 +
.../modules/ftp/skins/blue/css/main.css.php | 400 ++++++++++++++++++
.../modules/gamemanager/game_monitor.css | 1 +
.../modules/gamemanager/game_monitor.js | 10 +
.../modules/lgsl_with_img_mod/lgsl.css | 26 ++
.../modules/lgsl_with_img_mod/lgsl.js | 10 +
themes/Obsidian/modules/litefm/litefm.css | 1 +
themes/Obsidian/modules/litefm/litefm.js | 27 ++
.../modules/modulemanager/modulemanager.css | 92 ++++
.../modules/modulemanager/modulemanager.js | 10 +
themes/Obsidian/modules/news/admin_news.css | 1 +
themes/Obsidian/modules/news/news.css | 1 +
themes/Obsidian/modules/register/form.css | 62 +++
themes/Obsidian/modules/register/form.js | 16 +
themes/Obsidian/modules/server/server.css | 1 +
themes/Obsidian/modules/server/server.js | 19 +
themes/Obsidian/modules/settings/themes.css | 44 ++
themes/Obsidian/modules/settings/themes.js | 91 ++++
.../Obsidian/modules/simple-billing/bill.css | 29 ++
.../Obsidian/modules/simple-billing/cart.css | 38 ++
.../modules/simple-billing/orders.css | 39 ++
.../Obsidian/modules/simple-billing/shop.css | 70 +++
.../Obsidian/modules/simple-billing/shop.js | 7 +
.../modules/simple-billing/shop_guest.css | 70 +++
.../modules/simple-billing/shop_settings.css | 11 +
.../Obsidian/modules/tickets/submitticket.css | 60 +++
themes/Obsidian/modules/tickets/tickets.css | 117 +++++
.../Obsidian/modules/tickets/viewticket.css | 307 ++++++++++++++
themes/Obsidian/modules/tickets/viewticket.js | 24 ++
themes/Obsidian/modules/update/update.css | 30 ++
themes/Obsidian/modules/update/updating.css | 40 ++
.../modules/user_admin/show_groups.css | 67 +++
.../modules/user_admin/show_groups.js | 11 +
.../modules/user_admin/user_admin.css | 84 ++++
.../Obsidian/modules/user_admin/user_admin.js | 19 +
themes/Obsidian/modules/user_games/assign.css | 50 +++
themes/Obsidian/modules/user_games/edit.css | 1 +
themes/Obsidian/modules/user_games/edit.js | 9 +
.../modules/user_games/user_games.css | 1 +
.../Obsidian/modules/user_games/user_games.js | 18 +
themes/Obsidian/top.html | 108 +++++
themes/Obsidian/topbody.html | 7 +
themes/Obsidian/upload/get.php | 19 +
themes/Obsidian/upload/remove.php | 14 +
themes/Obsidian/upload/upload.php | 45 ++
178 files changed, 3327 insertions(+), 44 deletions(-)
create mode 100644 themes/Obsidian/botbody.html
create mode 100644 themes/Obsidian/bottom.html
create mode 100644 themes/Obsidian/config/config.php
create mode 100644 themes/Obsidian/config/config.xml
create mode 100644 themes/Obsidian/css/login.css
create mode 100644 themes/Obsidian/css/pace/big-counter.css
create mode 100644 themes/Obsidian/css/pace/bounce.css
create mode 100644 themes/Obsidian/css/pace/center-atom.css
create mode 100644 themes/Obsidian/css/pace/center-circle.css
create mode 100644 themes/Obsidian/css/pace/center-radar.css
create mode 100644 themes/Obsidian/css/pace/center-rotate.css
create mode 100644 themes/Obsidian/css/pace/center-simple.css
create mode 100644 themes/Obsidian/css/pace/corner-indicator.css
create mode 100644 themes/Obsidian/css/pace/default.css
create mode 100644 themes/Obsidian/css/pace/material.css
create mode 100644 themes/Obsidian/css/pace/pace.css
create mode 100644 themes/Obsidian/css/responsive.css
create mode 100644 themes/Obsidian/css/style.css
create mode 100644 themes/Obsidian/css/tip.css
create mode 100644 themes/Obsidian/images/addfolder.png
create mode 100644 themes/Obsidian/images/arrowdown.png
create mode 100644 themes/Obsidian/images/arrows.gif
create mode 100644 themes/Obsidian/images/asc.gif
create mode 100644 themes/Obsidian/images/auto_update.png
create mode 100644 themes/Obsidian/images/bg.gif
create mode 100644 themes/Obsidian/images/bg.jpg
create mode 100644 themes/Obsidian/images/bg2.jpg
create mode 100644 themes/Obsidian/images/bottomLinks-bg.png
create mode 100644 themes/Obsidian/images/bottomWrapper-bg.png
create mode 100644 themes/Obsidian/images/code.png
create mode 100644 themes/Obsidian/images/collapse.png
create mode 100644 themes/Obsidian/images/customfields.png
create mode 100644 themes/Obsidian/images/dark-bg.png
create mode 100644 themes/Obsidian/images/default_avatar.png
create mode 100644 themes/Obsidian/images/desc.gif
create mode 100644 themes/Obsidian/images/edit.png
create mode 100644 themes/Obsidian/images/editconfig.png
create mode 100644 themes/Obsidian/images/error.png
create mode 100644 themes/Obsidian/images/exec.png
create mode 100644 themes/Obsidian/images/favicon.ico
create mode 100644 themes/Obsidian/images/file.png
create mode 100644 themes/Obsidian/images/file_size.png
create mode 100644 themes/Obsidian/images/filemanager.png
create mode 100644 themes/Obsidian/images/folder.png
create mode 100644 themes/Obsidian/images/ftp.png
create mode 100644 themes/Obsidian/images/gamemanager.png
create mode 100644 themes/Obsidian/images/half.png
create mode 100644 themes/Obsidian/images/hmenu-sel.jpg
create mode 100644 themes/Obsidian/images/hmenu.jpg
create mode 100644 themes/Obsidian/images/hover.gif
create mode 100644 themes/Obsidian/images/hover_sub.gif
create mode 100644 themes/Obsidian/images/icon_details.png
create mode 100644 themes/Obsidian/images/icon_help_small.png
create mode 100644 themes/Obsidian/images/icons/chip.png
create mode 100644 themes/Obsidian/images/icons/computer.png
create mode 100644 themes/Obsidian/images/icons/folder.png
create mode 100644 themes/Obsidian/images/icons/game_monitor.png
create mode 100644 themes/Obsidian/images/icons/list_server.png
create mode 100644 themes/Obsidian/images/icons/ram_memory.png
create mode 100644 themes/Obsidian/images/icons/server_uptime.png
create mode 100644 themes/Obsidian/images/icons/servers.png
create mode 100644 themes/Obsidian/images/icons/storage.png
create mode 100644 themes/Obsidian/images/icons/support.png
create mode 100644 themes/Obsidian/images/install.png
create mode 100644 themes/Obsidian/images/light-bg.png
create mode 100644 themes/Obsidian/images/limit.png
create mode 100644 themes/Obsidian/images/locked.png
create mode 100644 themes/Obsidian/images/log.png
create mode 100644 themes/Obsidian/images/logo.png
create mode 100644 themes/Obsidian/images/logo.png final
create mode 100644 themes/Obsidian/images/magnifglass.png
create mode 100644 themes/Obsidian/images/master.png
create mode 100644 themes/Obsidian/images/mime.png
create mode 100644 themes/Obsidian/images/mysql.png
create mode 100644 themes/Obsidian/images/offline.png
create mode 100644 themes/Obsidian/images/online.png
create mode 100644 themes/Obsidian/images/rcon_preset.png
create mode 100644 themes/Obsidian/images/restart.png
create mode 100644 themes/Obsidian/images/rsync.png
create mode 100644 themes/Obsidian/images/slideshowBottom.png
create mode 100644 themes/Obsidian/images/slideshowLeftCorner.png
create mode 100644 themes/Obsidian/images/slideshowRightCorner.png
create mode 100644 themes/Obsidian/images/spinner_big.gif
create mode 100644 themes/Obsidian/images/start.png
create mode 100644 themes/Obsidian/images/steam.png
create mode 100644 themes/Obsidian/images/stop.png
create mode 100644 themes/Obsidian/images/theme.png
create mode 100644 themes/Obsidian/images/topBanner.png
create mode 100644 themes/Obsidian/images/topWrapper-bg.jpg
create mode 100644 themes/Obsidian/images/txt.png
create mode 100644 themes/Obsidian/images/unlocked.png
create mode 100644 themes/Obsidian/images/wrapper-bg.png
create mode 100644 themes/Obsidian/js/Obsidian.min.js
create mode 100644 themes/Obsidian/js/config.min.js
create mode 100644 themes/Obsidian/js/cookie.js
create mode 100644 themes/Obsidian/js/pace.min.js
create mode 100644 themes/Obsidian/js/tip.min.js
create mode 100644 themes/Obsidian/layout.html
create mode 100644 themes/Obsidian/modules/TS3Admin/TS3Admin.css
create mode 100644 themes/Obsidian/modules/addonsmanager/addons_manager.css
create mode 100644 themes/Obsidian/modules/administration/main.css
create mode 100644 themes/Obsidian/modules/administration/main.js
create mode 100644 themes/Obsidian/modules/administration/watch_logger.css
create mode 100644 themes/Obsidian/modules/administration/watch_logger.js
create mode 100644 themes/Obsidian/modules/cron/user_cron.css
create mode 100644 themes/Obsidian/modules/dashboard/dashboard.css
create mode 100644 themes/Obsidian/modules/dashboard/dashboard.js
create mode 100644 themes/Obsidian/modules/dashboard/server_info.css
create mode 100644 themes/Obsidian/modules/extras/extras.css
create mode 100644 themes/Obsidian/modules/extras/extras.js
create mode 100644 themes/Obsidian/modules/faq/faq.css
create mode 100644 themes/Obsidian/modules/ftp/ftp.css
create mode 100644 themes/Obsidian/modules/ftp/ftp.js
create mode 100644 themes/Obsidian/modules/ftp/ftps.css
create mode 100644 themes/Obsidian/modules/ftp/main.js
create mode 100644 themes/Obsidian/modules/ftp/skins/blue/css/main.css.php
create mode 100644 themes/Obsidian/modules/gamemanager/game_monitor.css
create mode 100644 themes/Obsidian/modules/gamemanager/game_monitor.js
create mode 100644 themes/Obsidian/modules/lgsl_with_img_mod/lgsl.css
create mode 100644 themes/Obsidian/modules/lgsl_with_img_mod/lgsl.js
create mode 100644 themes/Obsidian/modules/litefm/litefm.css
create mode 100644 themes/Obsidian/modules/litefm/litefm.js
create mode 100644 themes/Obsidian/modules/modulemanager/modulemanager.css
create mode 100644 themes/Obsidian/modules/modulemanager/modulemanager.js
create mode 100644 themes/Obsidian/modules/news/admin_news.css
create mode 100644 themes/Obsidian/modules/news/news.css
create mode 100644 themes/Obsidian/modules/register/form.css
create mode 100644 themes/Obsidian/modules/register/form.js
create mode 100644 themes/Obsidian/modules/server/server.css
create mode 100644 themes/Obsidian/modules/server/server.js
create mode 100644 themes/Obsidian/modules/settings/themes.css
create mode 100644 themes/Obsidian/modules/settings/themes.js
create mode 100644 themes/Obsidian/modules/simple-billing/bill.css
create mode 100644 themes/Obsidian/modules/simple-billing/cart.css
create mode 100644 themes/Obsidian/modules/simple-billing/orders.css
create mode 100644 themes/Obsidian/modules/simple-billing/shop.css
create mode 100644 themes/Obsidian/modules/simple-billing/shop.js
create mode 100644 themes/Obsidian/modules/simple-billing/shop_guest.css
create mode 100644 themes/Obsidian/modules/simple-billing/shop_settings.css
create mode 100644 themes/Obsidian/modules/tickets/submitticket.css
create mode 100644 themes/Obsidian/modules/tickets/tickets.css
create mode 100644 themes/Obsidian/modules/tickets/viewticket.css
create mode 100644 themes/Obsidian/modules/tickets/viewticket.js
create mode 100644 themes/Obsidian/modules/update/update.css
create mode 100644 themes/Obsidian/modules/update/updating.css
create mode 100644 themes/Obsidian/modules/user_admin/show_groups.css
create mode 100644 themes/Obsidian/modules/user_admin/show_groups.js
create mode 100644 themes/Obsidian/modules/user_admin/user_admin.css
create mode 100644 themes/Obsidian/modules/user_admin/user_admin.js
create mode 100644 themes/Obsidian/modules/user_games/assign.css
create mode 100644 themes/Obsidian/modules/user_games/edit.css
create mode 100644 themes/Obsidian/modules/user_games/edit.js
create mode 100644 themes/Obsidian/modules/user_games/user_games.css
create mode 100644 themes/Obsidian/modules/user_games/user_games.js
create mode 100644 themes/Obsidian/top.html
create mode 100644 themes/Obsidian/topbody.html
create mode 100644 themes/Obsidian/upload/get.php
create mode 100644 themes/Obsidian/upload/remove.php
create mode 100644 themes/Obsidian/upload/upload.php
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 490c3299..28e873c9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,12 @@
# Changelog
-## 2026-05-02 (latest)
+## 2026-05-03 (latest)
+- **GSP 1.0 baseline:** Reset all bundled/core module versions to `1.0`. DB schema versions (`$db_version`) are unchanged.
+- **FAQ module refresh:** Restored online RSS update code from upstream (opengamepanel.org), fixed `$local = false` initialization bug, switched local cache to `ogpfaq.rss`, added PHP 8.3-compatible `(array)` casts, restored upstream credits footer, and opened `navigation.xml` access to `user,admin,subuser`.
+- **Config XML editor improvements:** Added schema validation before save (both structured editor and raw XML path); invalid XML is rejected with line-level error messages instead of being written to disk. Added auto-restore from backup on validation failure. Fields are now displayed in schema-defined order with required/optional badges. Added a raw XML editing panel with validation warning. Unknown/custom XML fields are preserved when only specific nodes are modified.
+- **Obsidian theme:** Added `themes/Obsidian/` from `hmrserver/Obsidian`. The theme is immediately selectable in the panel theme settings.
+
+
- Removed 22 stray backup/duplicate files left by manual editing (`.bak`, `.BAK`, `.orig`, `.backup` extensions). Files inside `modules/config_games/server_configs/backup/` (intentional runtime backup folder) were left untouched.
## 2026-05-01
diff --git a/modules/addonsmanager/module.php b/modules/addonsmanager/module.php
index dc482d70..45c8dcd6 100644
--- a/modules/addonsmanager/module.php
+++ b/modules/addonsmanager/module.php
@@ -24,7 +24,7 @@
// Module general information
$module_title = "Addons Manager";
-$module_version = "1.2";
+$module_version = "1.0";
$db_version = 1;
$module_required = TRUE;
$module_menus = array( array( 'subpage' => 'addons_manager', 'name'=>'Addons Manager', 'group'=>'admin' ) );
diff --git a/modules/administration/module.php b/modules/administration/module.php
index f349f33b..26a14032 100644
--- a/modules/administration/module.php
+++ b/modules/administration/module.php
@@ -24,7 +24,7 @@
// Module general information
$module_title = "Administration";
-$module_version = "1.1";
+$module_version = "1.0";
$db_version = 1;
$module_required = TRUE;
$module_menus = array( array( 'subpage' => 'watch_logger', 'name'=>'Watch Logger', 'group'=>'admin' ) );
diff --git a/modules/backup-restore/module.php b/modules/backup-restore/module.php
index c2e76a49..8fd78454 100644
--- a/modules/backup-restore/module.php
+++ b/modules/backup-restore/module.php
@@ -8,7 +8,7 @@
//* navigation.xml (OPTIONAL):
$module_title = "Backup/Restore";
-$module_version = "0.2";
+$module_version = "1.0";
$db_version = 0;
$module_required = false;
?>
diff --git a/modules/config_games/config_servers.php b/modules/config_games/config_servers.php
index 9404f83f..9d55ebb7 100644
--- a/modules/config_games/config_servers.php
+++ b/modules/config_games/config_servers.php
@@ -98,6 +98,77 @@ function config_games_next_form_key(): string
return 'node_' . $counter;
}
+// Schema-defined element order and required/optional flags for game_config root.
+// Source: modules/config_games/schema_server_config.xml (server_config_type sequence).
+function config_games_schema_order(): array
+{
+ return [
+ 'game_key' => true,
+ 'protocol' => false,
+ 'lgsl_query_name' => false,
+ 'gameq_query_name' => false,
+ 'installer' => false,
+ 'game_name' => true,
+ 'server_exec_name' => true,
+ 'query_port' => false,
+ 'cli_template' => false,
+ 'cli_params' => false,
+ 'reserve_ports' => false,
+ 'cli_allow_chars' => false,
+ 'maps_location' => false,
+ 'map_list' => false,
+ 'console_log' => false,
+ 'exe_location' => false,
+ 'max_user_amount' => false,
+ 'control_protocol' => false,
+ 'control_protocol_type' => false,
+ 'mods' => true,
+ 'replace_texts' => false,
+ 'server_params' => false,
+ 'custom_fields' => false,
+ 'list_players_command' => false,
+ 'player_info_regex' => false,
+ 'player_info' => false,
+ 'player_commands' => false,
+ 'pre_install' => false,
+ 'post_install' => false,
+ 'pre_start' => false,
+ 'post_start' => false,
+ 'environment_variables' => false,
+ 'lock_files' => false,
+ 'configuration_files' => false,
+ ];
+}
+
+/**
+ * Validate an XML file against the game config schema.
+ * Returns an empty array on success, or an array of error strings on failure.
+ */
+function config_games_validate_xml_file(string $config_file): array
+{
+ if (!file_exists($config_file) || !is_readable($config_file)) {
+ return ['Configuration file not found or unreadable: ' . htmlspecialchars($config_file, ENT_QUOTES, 'UTF-8')];
+ }
+ $prev = libxml_use_internal_errors(true);
+ libxml_clear_errors();
+ $dom = new DOMDocument();
+ if ($dom->load($config_file) === false) {
+ $errors = array_map(function ($e) { return trim($e->message) . ' (line ' . $e->line . ')'; }, libxml_get_errors());
+ libxml_clear_errors();
+ libxml_use_internal_errors($prev);
+ return $errors ?: ['XML is not well-formed.'];
+ }
+ if ($dom->schemaValidate(XML_SCHEMA) !== true) {
+ $errors = array_map(function ($e) { return trim($e->message) . ' (line ' . $e->line . ')'; }, libxml_get_errors());
+ libxml_clear_errors();
+ libxml_use_internal_errors($prev);
+ return $errors ?: ['XML failed schema validation.'];
+ }
+ libxml_clear_errors();
+ libxml_use_internal_errors($prev);
+ return [];
+}
+
function config_games_print_editor_css()
{
static $printed = false;
@@ -109,9 +180,14 @@ function config_games_print_editor_css()
CSS;
}
-function config_games_render_node(SimpleXMLElement $node, array $ancestors, array &$counters, int $depth = 0)
+function config_games_render_node(SimpleXMLElement $node, array $ancestors, array &$counters, int $depth = 0, ?bool $isRequired = null)
{
+ $schemaOrder = config_games_schema_order();
$name = $node->getName();
$pathKey = implode('/', $ancestors) === '' ? $name : implode('/', $ancestors) . '/' . $name;
$counters[$pathKey] = ($counters[$pathKey] ?? 0) + 1;
@@ -149,9 +233,18 @@ function config_games_render_node(SimpleXMLElement $node, array $ancestors, arra
$displayPath = htmlspecialchars(str_replace('[', '[', $rawPath), ENT_QUOTES, 'UTF-8');
$isScript = in_array(strtolower($name), ['pre_install','post_install','precmd','postcmd','cli_template']);
- $html = "
";
+ // Determine required status: use passed value, fall back to schema lookup for top-level nodes
+ if ($isRequired === null) {
+ $isRequired = $depth === 1 && array_key_exists($name, $schemaOrder) ? $schemaOrder[$name] : false;
+ }
+ $nodeClass = 'xml-node depth-' . $depth . ($isRequired ? ' xml-node--required' : '');
+ $badge = $isRequired
+ ? "
required"
+ : "
optional";
+
+ $html = "
";
$actionId = 'node_action_' . substr(md5($safePath . $index), 0, 8);
- $html .= "
+
+
\ No newline at end of file
diff --git a/themes/Obsidian/bottom.html b/themes/Obsidian/bottom.html
new file mode 100644
index 00000000..6c37da03
--- /dev/null
+++ b/themes/Obsidian/bottom.html
@@ -0,0 +1,19 @@
+
+
+
Crafted with
by
HMR
+ %footer%
+
+
+
\ No newline at end of file
diff --git a/themes/Obsidian/config/config.php b/themes/Obsidian/config/config.php
new file mode 100644
index 00000000..e502eb40
--- /dev/null
+++ b/themes/Obsidian/config/config.php
@@ -0,0 +1,82 @@
+formatOutput = true;
+$xml->preserveWhiteSpace = false;
+$xml->load('config.xml');
+$theme = $xml->getElementsByTagName('theme')->item(0);
+$type = $theme->getElementsByTagName($type)->item(0);
+$type->nodeValue = $data;
+htmlentities($xml->save('config.xml'));
+}
+function ConfigRead($type) {
+
+$xml = new DOMDocument('1.0', 'UTF-8');
+$xml->formatOutput = true;
+$xml->preserveWhiteSpace = false;
+$xml->load('config.xml');
+$theme = $xml->getElementsByTagName('theme')->item(0);
+$type = $theme->getElementsByTagName($type)->item(0);
+return $type->nodeValue;
+}
+ ?>
\ No newline at end of file
diff --git a/themes/Obsidian/config/config.xml b/themes/Obsidian/config/config.xml
new file mode 100644
index 00000000..e224cbc6
--- /dev/null
+++ b/themes/Obsidian/config/config.xml
@@ -0,0 +1,9 @@
+
+
+ themes/Obsidian/images/favicon.ico
+ themes/Obsidian/images/bg.jpg
+ 0
+ themes/Obsidian/images/logo.png
+ default
+ 0
+
diff --git a/themes/Obsidian/css/login.css b/themes/Obsidian/css/login.css
new file mode 100644
index 00000000..032cbaa5
--- /dev/null
+++ b/themes/Obsidian/css/login.css
@@ -0,0 +1 @@
+.login_header{font-size:20px!important;text-transform:uppercase;font-weight:400;padding:10px 25px 2px 25px;background-color:rgba(25,48,65,0.301)}.register_header{font-size:20px!important;text-transform:uppercase;font-weight:400;padding:10px 25px 2px 25px;background-color:#1930414d}#ulogin,input[name="upassword"],#ulogin:hover,input[name="upassword"]:hover{width:320px;height:25px;padding:3px;border-bottom:1px solid #b1b0b0!important;background:transparent;color:#eee;border:1px solid transparent}#ulogin::-webkit-input-placeholder,input[name="upassword"]::-webkit-input-placeholder{color:#eee}#ulogin:focus,input[name="upassword"]:focus{border-bottom:2px solid #fff!important;border:1px solid transparent;color:#37b799;outline:-webkit-focus-ring-color auto 0}.uregister,.uregister:hover{width:320px;height:25px;padding:3px!important;border-color:none!important;border-radius:0;background:transparent!Important;color:#eee!important;border:1px solid transparent!important;border-bottom:1px solid #b1b0b0!important}.uregister:focus{border-bottom:2px solid #fff!important;border:1px solid transparent}.login_button:hover{color:#398bba;transition:all 300ms linear}.login_button{width:320px;background-color:#378cd5;padding:8px!important;color:#fff;text-transform:uppercase;font-size:14px;cursor:pointer;transition:all 300ms linear;border-radius:2px}.register_button:hover{color:#398bba;transition:all 300ms linear}.register_button{width:320px;background-color:#378cd5;padding:8px!important;color:#fff;text-transform:uppercase;font-size:14px;cursor:pointer;transition:all 300ms linear;border-radius:2px}#login-bg:before{content:"";position:fixed;left:-5%;top:-5%;right:0;z-index:-1;display:block;background-size:cover;background-repeat:no-repeat;width:110%;height:110%}@media(max-width:600px){.menu-bg {float: none !important;}}
\ No newline at end of file
diff --git a/themes/Obsidian/css/pace/big-counter.css b/themes/Obsidian/css/pace/big-counter.css
new file mode 100644
index 00000000..36ea47d7
--- /dev/null
+++ b/themes/Obsidian/css/pace/big-counter.css
@@ -0,0 +1 @@
+.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace.pace-inactive .pace-progress{display:none}.pace .pace-progress{position:fixed;z-index:2000;top:0;right:0;height:5rem;width:5rem;-webkit-transform:translate3d(0,0,0)!important;-ms-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important}.pace .pace-progress:after{display:block;position:absolute;top:0;right:.5rem;content:attr(data-progress-text);font-family:"Helvetica Neue",sans-serif;font-weight:100;font-size:5rem;line-height:1;text-align:right;color:rgba(0,255,255,0.19999999999999996)}
\ No newline at end of file
diff --git a/themes/Obsidian/css/pace/bounce.css b/themes/Obsidian/css/pace/bounce.css
new file mode 100644
index 00000000..c99c6869
--- /dev/null
+++ b/themes/Obsidian/css/pace/bounce.css
@@ -0,0 +1 @@
+.pace{width:140px;height:300px;position:fixed;top:-90px;right:-20px;z-index:2000;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);opacity:0;-webkit-transition:all 2s linear 0s;-moz-transition:all 2s linear 0s;transition:all 2s linear 0s}.pace.pace-active{-webkit-transform:scale(.25);-moz-transform:scale(.25);-ms-transform:scale(.25);-o-transform:scale(.25);transform:scale(.25);opacity:1}.pace .pace-activity{width:140px;height:140px;border-radius:70px;background:cyan;position:absolute;top:0;z-index:1911;-webkit-animation:pace-bounce 1s infinite;-moz-animation:pace-bounce 1s infinite;-o-animation:pace-bounce 1s infinite;-ms-animation:pace-bounce 1s infinite;animation:pace-bounce 1s infinite}.pace .pace-progress{position:absolute;display:block;left:50%;bottom:0;z-index:1910;margin-left:-30px;width:60px;height:75px;background:rgba(20,20,20,.1);box-shadow:0 0 20px 35px rgba(20,20,20,.1);border-radius:30px / 40px;-webkit-transform:scaleY(.3)!important;-moz-transform:scaleY(.3)!important;-ms-transform:scaleY(.3)!important;-o-transform:scaleY(.3)!important;transform:scaleY(.3)!important;-webkit-animation:pace-compress .5s infinite alternate;-moz-animation:pace-compress .5s infinite alternate;-o-animation:pace-compress .5s infinite alternate;-ms-animation:pace-compress .5s infinite alternate;animation:pace-compress .5s infinite alternate}@-webkit-keyframes pace-bounce{0%{top:0;-webkit-animation-timing-function:ease-in}50%{top:140px;height:140px;-webkit-animation-timing-function:ease-out}55%{top:160px;height:120px;border-radius:70px / 60px;-webkit-animation-timing-function:ease-in}65%{top:120px;height:140px;border-radius:70px;-webkit-animation-timing-function:ease-out}95%{top:0;-webkit-animation-timing-function:ease-in}100%{top:0;-webkit-animation-timing-function:ease-in}}@-moz-keyframes pace-bounce{0%{top:0;-moz-animation-timing-function:ease-in}50%{top:140px;height:140px;-moz-animation-timing-function:ease-out}55%{top:160px;height:120px;border-radius:70px / 60px;-moz-animation-timing-function:ease-in}65%{top:120px;height:140px;border-radius:70px;-moz-animation-timing-function:ease-out}95%{top:0;-moz-animation-timing-function:ease-in}100%{top:0;-moz-animation-timing-function:ease-in}}@keyframes pace-bounce{0%{top:0;animation-timing-function:ease-in}50%{top:140px;height:140px;animation-timing-function:ease-out}55%{top:160px;height:120px;border-radius:70px / 60px;animation-timing-function:ease-in}65%{top:120px;height:140px;border-radius:70px;animation-timing-function:ease-out}95%{top:0;animation-timing-function:ease-in}100%{top:0;animation-timing-function:ease-in}}@-webkit-keyframes pace-compress{0%{bottom:0;margin-left:-30px;width:60px;height:75px;background:rgba(20,20,20,.1);box-shadow:0 0 20px 35px rgba(20,20,20,.1);border-radius:30px / 40px;-webkit-animation-timing-function:ease-in}100%{bottom:30px;margin-left:-10px;width:20px;height:5px;background:rgba(20,20,20,.3);box-shadow:0 0 20px 35px rgba(20,20,20,.3);border-radius:20px / 20px;-webkit-animation-timing-function:ease-out}}@-moz-keyframes pace-compress{0%{bottom:0;margin-left:-30px;width:60px;height:75px;background:rgba(20,20,20,.1);box-shadow:0 0 20px 35px rgba(20,20,20,.1);border-radius:30px / 40px;-moz-animation-timing-function:ease-in}100%{bottom:30px;margin-left:-10px;width:20px;height:5px;background:rgba(20,20,20,.3);box-shadow:0 0 20px 35px rgba(20,20,20,.3);border-radius:20px / 20px;-moz-animation-timing-function:ease-out}}@keyframes pace-compress{0%{bottom:0;margin-left:-30px;width:60px;height:75px;background:rgba(20,20,20,.1);box-shadow:0 0 20px 35px rgba(20,20,20,.1);border-radius:30px / 40px;animation-timing-function:ease-in}100%{bottom:30px;margin-left:-10px;width:20px;height:5px;background:rgba(20,20,20,.3);box-shadow:0 0 20px 35px rgba(20,20,20,.3);border-radius:20px / 20px;animation-timing-function:ease-out}}
\ No newline at end of file
diff --git a/themes/Obsidian/css/pace/center-atom.css b/themes/Obsidian/css/pace/center-atom.css
new file mode 100644
index 00000000..15ed8f85
--- /dev/null
+++ b/themes/Obsidian/css/pace/center-atom.css
@@ -0,0 +1 @@
+.pace.pace-inactive{display:none}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:2000;position:fixed;height:60px;width:100px;margin:auto;top:0;left:0;right:0;bottom:0}.pace .pace-progress{z-index:2000;position:absolute;height:60px;width:100px;-webkit-transform:translate3d(0,0,0)!important;-ms-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important}.pace .pace-progress:before{content:attr(data-progress-text);text-align:center;color:#fff;background:cyan;border-radius:50%;font-family:"Helvetica Neue",sans-serif;font-size:14px;font-weight:100;line-height:1;padding:20% 0 7px;width:50%;height:40%;margin:10px 0 0 30px;display:block;z-index:999;position:absolute}.pace .pace-activity{font-size:15px;line-height:1;z-index:2000;position:absolute;height:60px;width:100px;display:block;-webkit-animation:pace-theme-center-atom-spin 2s linear infinite;-moz-animation:pace-theme-center-atom-spin 2s linear infinite;-o-animation:pace-theme-center-atom-spin 2s linear infinite;animation:pace-theme-center-atom-spin 2s linear infinite}.pace .pace-activity{border-radius:50%;border:5px solid cyan;content:' ';display:block;position:absolute;top:0;left:0;height:60px;width:100px}.pace .pace-activity:after{border-radius:50%;border:5px solid cyan;content:' ';display:block;position:absolute;top:-5px;left:-5px;height:60px;width:100px;-webkit-transform:rotate(60deg);-moz-transform:rotate(60deg);-o-transform:rotate(60deg);transform:rotate(60deg)}.pace .pace-activity:before{border-radius:50%;border:5px solid cyan;content:' ';display:block;position:absolute;top:-5px;left:-5px;height:60px;width:100px;-webkit-transform:rotate(120deg);-moz-transform:rotate(120deg);-o-transform:rotate(120deg);transform:rotate(120deg)}@-webkit-keyframes pace-theme-center-atom-spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@-moz-keyframes pace-theme-center-atom-spin{0%{-moz-transform:rotate(0deg)}100%{-moz-transform:rotate(359deg)}}@-o-keyframes pace-theme-center-atom-spin{0%{-o-transform:rotate(0deg)}100%{-o-transform:rotate(359deg)}}@keyframes pace-theme-center-atom-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
\ No newline at end of file
diff --git a/themes/Obsidian/css/pace/center-circle.css b/themes/Obsidian/css/pace/center-circle.css
new file mode 100644
index 00000000..76f83451
--- /dev/null
+++ b/themes/Obsidian/css/pace/center-circle.css
@@ -0,0 +1 @@
+.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-perspective:12rem;-moz-perspective:12rem;-ms-perspective:12rem;-o-perspective:12rem;perspective:12rem;z-index:2000;position:fixed;height:6rem;width:6rem;margin:auto;top:0;left:0;right:0;bottom:0}.pace.pace-inactive .pace-progress{display:none}.pace .pace-progress{position:fixed;z-index:2000;display:block;position:absolute;left:0;top:0;height:6rem;width:6rem!important;line-height:6rem;font-size:2rem;border-radius:50%;background:rgba(0,255,255,0.8);color:#fff;font-family:"Helvetica Neue",sans-serif;font-weight:100;text-align:center;-webkit-animation:pace-theme-center-circle-spin linear infinite 2s;-moz-animation:pace-theme-center-circle-spin linear infinite 2s;-ms-animation:pace-theme-center-circle-spin linear infinite 2s;-o-animation:pace-theme-center-circle-spin linear infinite 2s;animation:pace-theme-center-circle-spin linear infinite 2s;-webkit-transform-style:preserve-3d;-moz-transform-style:preserve-3d;-ms-transform-style:preserve-3d;-o-transform-style:preserve-3d;transform-style:preserve-3d}.pace .pace-progress:after{content:attr(data-progress-text);display:block}@-webkit-keyframes pace-theme-center-circle-spin{from{-webkit-transform:rotateY(0deg)}to{-webkit-transform:rotateY(360deg)}}@-moz-keyframes pace-theme-center-circle-spin{from{-moz-transform:rotateY(0deg)}to{-moz-transform:rotateY(360deg)}}@-ms-keyframes pace-theme-center-circle-spin{from{-ms-transform:rotateY(0deg)}to{-ms-transform:rotateY(360deg)}}@-o-keyframes pace-theme-center-circle-spin{from{-o-transform:rotateY(0deg)}to{-o-transform:rotateY(360deg)}}@keyframes pace-theme-center-circle-spin{from{transform:rotateY(0deg)}to{transform:rotateY(360deg)}}
\ No newline at end of file
diff --git a/themes/Obsidian/css/pace/center-radar.css b/themes/Obsidian/css/pace/center-radar.css
new file mode 100644
index 00000000..e5438e60
--- /dev/null
+++ b/themes/Obsidian/css/pace/center-radar.css
@@ -0,0 +1 @@
+.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:2000;position:fixed;height:90px;width:90px;margin:auto;top:0;left:0;right:0;bottom:0}.pace.pace-inactive .pace-activity{display:none}.pace .pace-activity{position:fixed;z-index:2000;display:block;position:absolute;left:-30px;top:-30px;height:90px;width:90px;display:block;border-width:30px;border-style:double;border-color:cyan transparent transparent;border-radius:50%;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-animation:spin 1s linear infinite;-moz-animation:spin 1s linear infinite;-o-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.pace .pace-activity:before{content:' ';position:absolute;top:10px;left:10px;height:50px;width:50px;display:block;border-width:10px;border-style:solid;border-color:cyan transparent transparent;border-radius:50%;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}@-webkit-keyframes spin{100%{-webkit-transform:rotate(359deg)}}@-moz-keyframes spin{100%{-moz-transform:rotate(359deg)}}@-o-keyframes spin{100%{-moz-transform:rotate(359deg)}}@keyframes spin{100%{transform:rotate(359deg)}}
\ No newline at end of file
diff --git a/themes/Obsidian/css/pace/center-rotate.css b/themes/Obsidian/css/pace/center-rotate.css
new file mode 100644
index 00000000..3ff51ce8
--- /dev/null
+++ b/themes/Obsidian/css/pace/center-rotate.css
@@ -0,0 +1 @@
+.pace,.pace .pace-progress{z-index:2000;height:60px;width:100px}.pace.pace-inactive{display:none}.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:fixed;margin:auto;top:0;left:0;right:0;bottom:0}.pace .pace-progress{position:absolute;-webkit-transform:translate3d(0,0,0)!important;-ms-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important}.pace .pace-progress:before{content:attr(data-progress-text);text-align:center;color:#fff;background:cyan;border-radius:50%;font-family:"Helvetica Neue",sans-serif;font-size:14px;font-weight:100;line-height:1;padding:20% 0 7px;width:50%;height:40%;margin:10px 0 0 30px;display:block;z-index:999;position:absolute}.pace .pace-activity{font-size:9px;margin:0 19px auto;text-indent:-9999em;width:8em;height:8em;border-radius:50%;background:rgba(0,255,255,0.501);background:-moz-linear-gradient(left,rgba(0,255,255,0.501) 10%,rgba(255,255,255,0) 42%);background:-webkit-linear-gradient(left,rgba(0,255,255,0.501) 10%,rgba(255,255,255,0) 42%);background:-o-linear-gradient(left,rgba(0,255,255,0.501) 10%,rgba(255,255,255,0) 42%);background:-ms-linear-gradient(to right,rgba(0,255,255,0.501) 10%,rgba(255,255,255,0) 42%);background:linear-gradient(to right,rgba(0,255,255,0.501) 10%,rgba(255,255,255,0) 42%);position:relative;-webkit-animation:load3 1.4s infinite linear;animation:load3 1.4s infinite linear;-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0)}.pace .pace-activity:after,.pace .pace-activity:before{content:'';position:absolute;top:0;left:0}.pace .pace-activity:before{width:50%;height:50%;border-radius:100% 0 0}.pace .pace-activity:after{background:cyan;width:75%;height:75%;border-radius:50%;margin:auto;bottom:0;right:0}@-webkit-keyframes load3{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load3{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}
\ No newline at end of file
diff --git a/themes/Obsidian/css/pace/center-simple.css b/themes/Obsidian/css/pace/center-simple.css
new file mode 100644
index 00000000..7f910ddf
--- /dev/null
+++ b/themes/Obsidian/css/pace/center-simple.css
@@ -0,0 +1 @@
+.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:2000;position:fixed;margin:auto;top:0;left:0;right:0;bottom:0;height:5px;width:200px;background:#fff;border:1px solid cyan;overflow:hidden}.pace .pace-progress{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);max-width:200px;position:fixed;z-index:2000;display:block;position:absolute;top:0;right:100%;height:100%;width:100%;background:cyan}.pace.pace-inactive{display:none}
\ No newline at end of file
diff --git a/themes/Obsidian/css/pace/corner-indicator.css b/themes/Obsidian/css/pace/corner-indicator.css
new file mode 100644
index 00000000..5d7df7d8
--- /dev/null
+++ b/themes/Obsidian/css/pace/corner-indicator.css
@@ -0,0 +1 @@
+.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pace .pace-activity{display:block;position:fixed;z-index:2000;top:0;right:0;width:300px;height:300px;background:cyan;-webkit-transition:-webkit-transform .3s;transition:transform .3s;-webkit-transform:translateX(100%) translateY(-100%) rotate(45deg);transform:translateX(100%) translateY(-100%) rotate(45deg);pointer-events:none;opacity:0.9;}.pace.pace-active .pace-activity{-webkit-transform:translateX(50%) translateY(-50%) rotate(45deg);transform:translateX(50%) translateY(-50%) rotate(45deg)}.pace .pace-activity::before,.pace .pace-activity::after{-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;bottom:30px;left:50%;display:block;border:5px solid #fff;border-radius:50%;content:''}.pace .pace-activity::before{margin-left:-40px;width:80px;height:80px;border-right-color:rgba(0,0,0,.2);border-left-color:rgba(0,0,0,.2);-webkit-animation:pace-theme-corner-indicator-spin 3s linear infinite;animation:pace-theme-corner-indicator-spin 3s linear infinite}.pace .pace-activity::after{bottom:50px;margin-left:-20px;width:40px;height:40px;border-top-color:rgba(0,0,0,.2);border-bottom-color:rgba(0,0,0,.2);-webkit-animation:pace-theme-corner-indicator-spin 1s linear infinite;animation:pace-theme-corner-indicator-spin 1s linear infinite}@-webkit-keyframes pace-theme-corner-indicator-spin{0%{-webkit-transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg)}}@keyframes pace-theme-corner-indicator-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
\ No newline at end of file
diff --git a/themes/Obsidian/css/pace/default.css b/themes/Obsidian/css/pace/default.css
new file mode 100644
index 00000000..4a1842f4
--- /dev/null
+++ b/themes/Obsidian/css/pace/default.css
@@ -0,0 +1 @@
+.pace {-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none } .pace-inactive {display:none } .pace .pace-progress {background:aqua;position:fixed;z-index:2000;top:0;right:100%;width:100%;height:2px } .pace .pace-progress-inner {display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px aqua,0 0 5px aqua;opacity:1.0;-webkit-transform:rotate(3deg) translate(0px,-4px);-moz-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);-o-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translate(0px,-4px) } .pace .pace-activity {display:block;position:fixed;z-index:2000;top:15px;right:15px;width:14px;height:14px;border:solid 2px transparent;border-top-color:aqua;border-left-color:aqua;border-radius:10px;-webkit-animation:pace-spinner 400ms linear infinite;-moz-animation:pace-spinner 400ms linear infinite;-ms-animation:pace-spinner 400ms linear infinite;-o-animation:pace-spinner 400ms linear infinite;animation:pace-spinner 400ms linear infinite } @-webkit-keyframes pace-spinner {0% {-webkit-transform:rotate(0deg);transform:rotate(0deg) } 100% {-webkit-transform:rotate(360deg);transform:rotate(360deg) }} @-moz-keyframes pace-spinner {0% {-moz-transform:rotate(0deg);transform:rotate(0deg) } 100% {-moz-transform:rotate(360deg);transform:rotate(360deg) }} @-o-keyframes pace-spinner {0% {-o-transform:rotate(0deg);transform:rotate(0deg) } 100% {-o-transform:rotate(360deg);transform:rotate(360deg) }} @-ms-keyframes pace-spinner {0% {-ms-transform:rotate(0deg);transform:rotate(0deg) } 100% {-ms-transform:rotate(360deg);transform:rotate(360deg) }} @keyframes pace-spinner {0% {transform:rotate(0deg);transform:rotate(0deg) } 100% {transform:rotate(360deg);transform:rotate(360deg) }}
\ No newline at end of file
diff --git a/themes/Obsidian/css/pace/material.css b/themes/Obsidian/css/pace/material.css
new file mode 100644
index 00000000..b4f58954
--- /dev/null
+++ b/themes/Obsidian/css/pace/material.css
@@ -0,0 +1 @@
+.pace{-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:cyan}.pace-progress{position:fixed;z-index:2000;top:50%;left:50%;margin-left:-2.5rem;margin-top:-2.5rem;height:5rem;width:5rem;opacity:1;-webkit-transition:opacity .1s;transition:opacity .1s;-webkit-transform:translate3d(0,0,0)!important;-ms-transform:translate3d(0,0,0)!important;transform:translate3d(0,0,0)!important}.pace-inactive .pace-progress,.pace-progress[data-progress="00"]{opacity:0}.pace-progress:after{height:5rem;width:5rem;text-align:center;line-height:5rem;content:attr(data-progress);display:block;font-size:1.8rem;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-weight:300}.pace-progress .pace-progress-inner{overflow:hidden;position:absolute;width:2.5rem;height:5rem;-webkit-transform-origin:left center;-ms-transform-origin:left center;transform-origin:left center;-webkit-transition:-webkit-transform .1s;transition:transform .1s;left:2.5rem;top:0}.pace-progress .pace-progress-inner:before,.pace-progress .pace-progress-inner:after{position:absolute;width:5rem;height:5rem;content:' ';left:-2.5rem;top:0;box-sizing:border-box;border:1px solid;border-radius:5rem}.pace-progress .pace-progress-inner:before{border-right-color:transparent;border-bottom-color:transparent;-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.pace-progress .pace-progress-inner:after{border-left-color:transparent;border-top-color:transparent;display:none;-webkit-transform:rotate(315deg);-ms-transform:rotate(315deg);transform:rotate(315deg)}.pace-progress[data-progress="00"] .pace-progress-inner:before{-webkit-transform:rotate(-45deg);-ms-transform:rotate(-45deg);transform:rotate(-45deg)}.pace-progress[data-progress="01"] .pace-progress-inner:before{-webkit-transform:rotate(-41deg);-ms-transform:rotate(-41deg);transform:rotate(-41deg)}.pace-progress[data-progress="02"] .pace-progress-inner:before{-webkit-transform:rotate(-38deg);-ms-transform:rotate(-38deg);transform:rotate(-38deg)}.pace-progress[data-progress="03"] .pace-progress-inner:before{-webkit-transform:rotate(-34deg);-ms-transform:rotate(-34deg);transform:rotate(-34deg)}.pace-progress[data-progress="04"] .pace-progress-inner:before{-webkit-transform:rotate(-31deg);-ms-transform:rotate(-31deg);transform:rotate(-31deg)}.pace-progress[data-progress="05"] .pace-progress-inner:before{-webkit-transform:rotate(-27deg);-ms-transform:rotate(-27deg);transform:rotate(-27deg)}.pace-progress[data-progress="06"] .pace-progress-inner:before{-webkit-transform:rotate(-23deg);-ms-transform:rotate(-23deg);transform:rotate(-23deg)}.pace-progress[data-progress="07"] .pace-progress-inner:before{-webkit-transform:rotate(-20deg);-ms-transform:rotate(-20deg);transform:rotate(-20deg)}.pace-progress[data-progress="08"] .pace-progress-inner:before{-webkit-transform:rotate(-16deg);-ms-transform:rotate(-16deg);transform:rotate(-16deg)}.pace-progress[data-progress="09"] .pace-progress-inner:before{-webkit-transform:rotate(-13deg);-ms-transform:rotate(-13deg);transform:rotate(-13deg)}.pace-progress[data-progress="10"] .pace-progress-inner:before{-webkit-transform:rotate(-9deg);-ms-transform:rotate(-9deg);transform:rotate(-9deg)}.pace-progress[data-progress="11"] .pace-progress-inner:before{-webkit-transform:rotate(-5deg);-ms-transform:rotate(-5deg);transform:rotate(-5deg)}.pace-progress[data-progress="12"] .pace-progress-inner:before{-webkit-transform:rotate(-2deg);-ms-transform:rotate(-2deg);transform:rotate(-2deg)}.pace-progress[data-progress="13"] .pace-progress-inner:before{-webkit-transform:rotate(2deg);-ms-transform:rotate(2deg);transform:rotate(2deg)}.pace-progress[data-progress="14"] .pace-progress-inner:before{-webkit-transform:rotate(5deg);-ms-transform:rotate(5deg);transform:rotate(5deg)}.pace-progress[data-progress="15"] .pace-progress-inner:before{-webkit-transform:rotate(9deg);-ms-transform:rotate(9deg);transform:rotate(9deg)}.pace-progress[data-progress="16"] .pace-progress-inner:before{-webkit-transform:rotate(13deg);-ms-transform:rotate(13deg);transform:rotate(13deg)}.pace-progress[data-progress="17"] .pace-progress-inner:before{-webkit-transform:rotate(16deg);-ms-transform:rotate(16deg);transform:rotate(16deg)}.pace-progress[data-progress="18"] .pace-progress-inner:before{-webkit-transform:rotate(20deg);-ms-transform:rotate(20deg);transform:rotate(20deg)}.pace-progress[data-progress="19"] .pace-progress-inner:before{-webkit-transform:rotate(23deg);-ms-transform:rotate(23deg);transform:rotate(23deg)}.pace-progress[data-progress="20"] .pace-progress-inner:before{-webkit-transform:rotate(27deg);-ms-transform:rotate(27deg);transform:rotate(27deg)}.pace-progress[data-progress="21"] .pace-progress-inner:before{-webkit-transform:rotate(31deg);-ms-transform:rotate(31deg);transform:rotate(31deg)}.pace-progress[data-progress="22"] .pace-progress-inner:before{-webkit-transform:rotate(34deg);-ms-transform:rotate(34deg);transform:rotate(34deg)}.pace-progress[data-progress="23"] .pace-progress-inner:before{-webkit-transform:rotate(38deg);-ms-transform:rotate(38deg);transform:rotate(38deg)}.pace-progress[data-progress="24"] .pace-progress-inner:before{-webkit-transform:rotate(41deg);-ms-transform:rotate(41deg);transform:rotate(41deg)}.pace-progress[data-progress="25"] .pace-progress-inner:before{-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.pace-progress[data-progress="26"] .pace-progress-inner:before{-webkit-transform:rotate(49deg);-ms-transform:rotate(49deg);transform:rotate(49deg)}.pace-progress[data-progress="27"] .pace-progress-inner:before{-webkit-transform:rotate(52deg);-ms-transform:rotate(52deg);transform:rotate(52deg)}.pace-progress[data-progress="28"] .pace-progress-inner:before{-webkit-transform:rotate(56deg);-ms-transform:rotate(56deg);transform:rotate(56deg)}.pace-progress[data-progress="29"] .pace-progress-inner:before{-webkit-transform:rotate(59deg);-ms-transform:rotate(59deg);transform:rotate(59deg)}.pace-progress[data-progress="30"] .pace-progress-inner:before{-webkit-transform:rotate(63deg);-ms-transform:rotate(63deg);transform:rotate(63deg)}.pace-progress[data-progress="31"] .pace-progress-inner:before{-webkit-transform:rotate(67deg);-ms-transform:rotate(67deg);transform:rotate(67deg)}.pace-progress[data-progress="32"] .pace-progress-inner:before{-webkit-transform:rotate(70deg);-ms-transform:rotate(70deg);transform:rotate(70deg)}.pace-progress[data-progress="33"] .pace-progress-inner:before{-webkit-transform:rotate(74deg);-ms-transform:rotate(74deg);transform:rotate(74deg)}.pace-progress[data-progress="34"] .pace-progress-inner:before{-webkit-transform:rotate(77deg);-ms-transform:rotate(77deg);transform:rotate(77deg)}.pace-progress[data-progress="35"] .pace-progress-inner:before{-webkit-transform:rotate(81deg);-ms-transform:rotate(81deg);transform:rotate(81deg)}.pace-progress[data-progress="36"] .pace-progress-inner:before{-webkit-transform:rotate(85deg);-ms-transform:rotate(85deg);transform:rotate(85deg)}.pace-progress[data-progress="37"] .pace-progress-inner:before{-webkit-transform:rotate(88deg);-ms-transform:rotate(88deg);transform:rotate(88deg)}.pace-progress[data-progress="38"] .pace-progress-inner:before{-webkit-transform:rotate(92deg);-ms-transform:rotate(92deg);transform:rotate(92deg)}.pace-progress[data-progress="39"] .pace-progress-inner:before{-webkit-transform:rotate(95deg);-ms-transform:rotate(95deg);transform:rotate(95deg)}.pace-progress[data-progress="40"] .pace-progress-inner:before{-webkit-transform:rotate(99deg);-ms-transform:rotate(99deg);transform:rotate(99deg)}.pace-progress[data-progress="41"] .pace-progress-inner:before{-webkit-transform:rotate(103deg);-ms-transform:rotate(103deg);transform:rotate(103deg)}.pace-progress[data-progress="42"] .pace-progress-inner:before{-webkit-transform:rotate(106deg);-ms-transform:rotate(106deg);transform:rotate(106deg)}.pace-progress[data-progress="43"] .pace-progress-inner:before{-webkit-transform:rotate(110deg);-ms-transform:rotate(110deg);transform:rotate(110deg)}.pace-progress[data-progress="44"] .pace-progress-inner:before{-webkit-transform:rotate(113deg);-ms-transform:rotate(113deg);transform:rotate(113deg)}.pace-progress[data-progress="45"] .pace-progress-inner:before{-webkit-transform:rotate(117deg);-ms-transform:rotate(117deg);transform:rotate(117deg)}.pace-progress[data-progress="46"] .pace-progress-inner:before{-webkit-transform:rotate(121deg);-ms-transform:rotate(121deg);transform:rotate(121deg)}.pace-progress[data-progress="47"] .pace-progress-inner:before{-webkit-transform:rotate(124deg);-ms-transform:rotate(124deg);transform:rotate(124deg)}.pace-progress[data-progress="48"] .pace-progress-inner:before{-webkit-transform:rotate(128deg);-ms-transform:rotate(128deg);transform:rotate(128deg)}.pace-progress[data-progress="49"] .pace-progress-inner:before{-webkit-transform:rotate(131deg);-ms-transform:rotate(131deg);transform:rotate(131deg)}.pace-progress[data-progress="50"] .pace-progress-inner:before{-webkit-transform:rotate(135deg);-ms-transform:rotate(135deg);transform:rotate(135deg)}.pace-progress[data-progress="50"] .pace-progress-inner:after{-webkit-transform:rotate(315deg);-ms-transform:rotate(315deg);transform:rotate(315deg);display:block}.pace-progress[data-progress="51"] .pace-progress-inner:after{-webkit-transform:rotate(319deg);-ms-transform:rotate(319deg);transform:rotate(319deg);display:block}.pace-progress[data-progress="52"] .pace-progress-inner:after{-webkit-transform:rotate(322deg);-ms-transform:rotate(322deg);transform:rotate(322deg);display:block}.pace-progress[data-progress="53"] .pace-progress-inner:after{-webkit-transform:rotate(326deg);-ms-transform:rotate(326deg);transform:rotate(326deg);display:block}.pace-progress[data-progress="54"] .pace-progress-inner:after{-webkit-transform:rotate(329deg);-ms-transform:rotate(329deg);transform:rotate(329deg);display:block}.pace-progress[data-progress="55"] .pace-progress-inner:after{-webkit-transform:rotate(333deg);-ms-transform:rotate(333deg);transform:rotate(333deg);display:block}.pace-progress[data-progress="56"] .pace-progress-inner:after{-webkit-transform:rotate(337deg);-ms-transform:rotate(337deg);transform:rotate(337deg);display:block}.pace-progress[data-progress="57"] .pace-progress-inner:after{-webkit-transform:rotate(340deg);-ms-transform:rotate(340deg);transform:rotate(340deg);display:block}.pace-progress[data-progress="58"] .pace-progress-inner:after{-webkit-transform:rotate(344deg);-ms-transform:rotate(344deg);transform:rotate(344deg);display:block}.pace-progress[data-progress="59"] .pace-progress-inner:after{-webkit-transform:rotate(347deg);-ms-transform:rotate(347deg);transform:rotate(347deg);display:block}.pace-progress[data-progress="60"] .pace-progress-inner:after{-webkit-transform:rotate(351deg);-ms-transform:rotate(351deg);transform:rotate(351deg);display:block}.pace-progress[data-progress="61"] .pace-progress-inner:after{-webkit-transform:rotate(355deg);-ms-transform:rotate(355deg);transform:rotate(355deg);display:block}.pace-progress[data-progress="62"] .pace-progress-inner:after{-webkit-transform:rotate(358deg);-ms-transform:rotate(358deg);transform:rotate(358deg);display:block}.pace-progress[data-progress="63"] .pace-progress-inner:after{-webkit-transform:rotate(362deg);-ms-transform:rotate(362deg);transform:rotate(362deg);display:block}.pace-progress[data-progress="64"] .pace-progress-inner:after{-webkit-transform:rotate(365deg);-ms-transform:rotate(365deg);transform:rotate(365deg);display:block}.pace-progress[data-progress="65"] .pace-progress-inner:after{-webkit-transform:rotate(369deg);-ms-transform:rotate(369deg);transform:rotate(369deg);display:block}.pace-progress[data-progress="66"] .pace-progress-inner:after{-webkit-transform:rotate(373deg);-ms-transform:rotate(373deg);transform:rotate(373deg);display:block}.pace-progress[data-progress="67"] .pace-progress-inner:after{-webkit-transform:rotate(376deg);-ms-transform:rotate(376deg);transform:rotate(376deg);display:block}.pace-progress[data-progress="68"] .pace-progress-inner:after{-webkit-transform:rotate(380deg);-ms-transform:rotate(380deg);transform:rotate(380deg);display:block}.pace-progress[data-progress="69"] .pace-progress-inner:after{-webkit-transform:rotate(383deg);-ms-transform:rotate(383deg);transform:rotate(383deg);display:block}.pace-progress[data-progress="70"] .pace-progress-inner:after{-webkit-transform:rotate(387deg);-ms-transform:rotate(387deg);transform:rotate(387deg);display:block}.pace-progress[data-progress="71"] .pace-progress-inner:after{-webkit-transform:rotate(391deg);-ms-transform:rotate(391deg);transform:rotate(391deg);display:block}.pace-progress[data-progress="72"] .pace-progress-inner:after{-webkit-transform:rotate(394deg);-ms-transform:rotate(394deg);transform:rotate(394deg);display:block}.pace-progress[data-progress="73"] .pace-progress-inner:after{-webkit-transform:rotate(398deg);-ms-transform:rotate(398deg);transform:rotate(398deg);display:block}.pace-progress[data-progress="74"] .pace-progress-inner:after{-webkit-transform:rotate(401deg);-ms-transform:rotate(401deg);transform:rotate(401deg);display:block}.pace-progress[data-progress="75"] .pace-progress-inner:after{-webkit-transform:rotate(405deg);-ms-transform:rotate(405deg);transform:rotate(405deg);display:block}.pace-progress[data-progress="76"] .pace-progress-inner:after{-webkit-transform:rotate(409deg);-ms-transform:rotate(409deg);transform:rotate(409deg);display:block}.pace-progress[data-progress="77"] .pace-progress-inner:after{-webkit-transform:rotate(412deg);-ms-transform:rotate(412deg);transform:rotate(412deg);display:block}.pace-progress[data-progress="78"] .pace-progress-inner:after{-webkit-transform:rotate(416deg);-ms-transform:rotate(416deg);transform:rotate(416deg);display:block}.pace-progress[data-progress="79"] .pace-progress-inner:after{-webkit-transform:rotate(419deg);-ms-transform:rotate(419deg);transform:rotate(419deg);display:block}.pace-progress[data-progress="80"] .pace-progress-inner:after{-webkit-transform:rotate(423deg);-ms-transform:rotate(423deg);transform:rotate(423deg);display:block}.pace-progress[data-progress="81"] .pace-progress-inner:after{-webkit-transform:rotate(427deg);-ms-transform:rotate(427deg);transform:rotate(427deg);display:block}.pace-progress[data-progress="82"] .pace-progress-inner:after{-webkit-transform:rotate(430deg);-ms-transform:rotate(430deg);transform:rotate(430deg);display:block}.pace-progress[data-progress="83"] .pace-progress-inner:after{-webkit-transform:rotate(434deg);-ms-transform:rotate(434deg);transform:rotate(434deg);display:block}.pace-progress[data-progress="84"] .pace-progress-inner:after{-webkit-transform:rotate(437deg);-ms-transform:rotate(437deg);transform:rotate(437deg);display:block}.pace-progress[data-progress="85"] .pace-progress-inner:after{-webkit-transform:rotate(441deg);-ms-transform:rotate(441deg);transform:rotate(441deg);display:block}.pace-progress[data-progress="86"] .pace-progress-inner:after{-webkit-transform:rotate(445deg);-ms-transform:rotate(445deg);transform:rotate(445deg);display:block}.pace-progress[data-progress="87"] .pace-progress-inner:after{-webkit-transform:rotate(448deg);-ms-transform:rotate(448deg);transform:rotate(448deg);display:block}.pace-progress[data-progress="88"] .pace-progress-inner:after{-webkit-transform:rotate(452deg);-ms-transform:rotate(452deg);transform:rotate(452deg);display:block}.pace-progress[data-progress="89"] .pace-progress-inner:after{-webkit-transform:rotate(455deg);-ms-transform:rotate(455deg);transform:rotate(455deg);display:block}.pace-progress[data-progress="90"] .pace-progress-inner:after{-webkit-transform:rotate(459deg);-ms-transform:rotate(459deg);transform:rotate(459deg);display:block}.pace-progress[data-progress="91"] .pace-progress-inner:after{-webkit-transform:rotate(463deg);-ms-transform:rotate(463deg);transform:rotate(463deg);display:block}.pace-progress[data-progress="92"] .pace-progress-inner:after{-webkit-transform:rotate(466deg);-ms-transform:rotate(466deg);transform:rotate(466deg);display:block}.pace-progress[data-progress="93"] .pace-progress-inner:after{-webkit-transform:rotate(470deg);-ms-transform:rotate(470deg);transform:rotate(470deg);display:block}.pace-progress[data-progress="94"] .pace-progress-inner:after{-webkit-transform:rotate(473deg);-ms-transform:rotate(473deg);transform:rotate(473deg);display:block}.pace-progress[data-progress="95"] .pace-progress-inner:after{-webkit-transform:rotate(477deg);-ms-transform:rotate(477deg);transform:rotate(477deg);display:block}.pace-progress[data-progress="96"] .pace-progress-inner:after{-webkit-transform:rotate(481deg);-ms-transform:rotate(481deg);transform:rotate(481deg);display:block}.pace-progress[data-progress="97"] .pace-progress-inner:after{-webkit-transform:rotate(484deg);-ms-transform:rotate(484deg);transform:rotate(484deg);display:block}.pace-progress[data-progress="98"] .pace-progress-inner:after{-webkit-transform:rotate(488deg);-ms-transform:rotate(488deg);transform:rotate(488deg);display:block}.pace-progress[data-progress="99"] .pace-progress-inner:after{-webkit-transform:rotate(491deg);-ms-transform:rotate(491deg);transform:rotate(491deg);display:block}.pace-progress[data-progress="100"] .pace-progress-inner:after{-webkit-transform:rotate(495deg);-ms-transform:rotate(495deg);transform:rotate(495deg);display:block}.pace-progress[data-progress="00"] .pace-progress-inner{-webkit-transform:rotate(0deg);-ms-transform:rotate(0deg);transform:rotate(0deg)}.pace-progress[data-progress="01"] .pace-progress-inner{-webkit-transform:rotate(4deg);-ms-transform:rotate(4deg);transform:rotate(4deg)}.pace-progress[data-progress="02"] .pace-progress-inner{-webkit-transform:rotate(7deg);-ms-transform:rotate(7deg);transform:rotate(7deg)}.pace-progress[data-progress="03"] .pace-progress-inner{-webkit-transform:rotate(11deg);-ms-transform:rotate(11deg);transform:rotate(11deg)}.pace-progress[data-progress="04"] .pace-progress-inner{-webkit-transform:rotate(14deg);-ms-transform:rotate(14deg);transform:rotate(14deg)}.pace-progress[data-progress="05"] .pace-progress-inner{-webkit-transform:rotate(18deg);-ms-transform:rotate(18deg);transform:rotate(18deg)}.pace-progress[data-progress="06"] .pace-progress-inner{-webkit-transform:rotate(22deg);-ms-transform:rotate(22deg);transform:rotate(22deg)}.pace-progress[data-progress="07"] .pace-progress-inner{-webkit-transform:rotate(25deg);-ms-transform:rotate(25deg);transform:rotate(25deg)}.pace-progress[data-progress="08"] .pace-progress-inner{-webkit-transform:rotate(29deg);-ms-transform:rotate(29deg);transform:rotate(29deg)}.pace-progress[data-progress="09"] .pace-progress-inner{-webkit-transform:rotate(32deg);-ms-transform:rotate(32deg);transform:rotate(32deg)}.pace-progress[data-progress="10"] .pace-progress-inner{-webkit-transform:rotate(36deg);-ms-transform:rotate(36deg);transform:rotate(36deg)}.pace-progress[data-progress="11"] .pace-progress-inner{-webkit-transform:rotate(40deg);-ms-transform:rotate(40deg);transform:rotate(40deg)}.pace-progress[data-progress="12"] .pace-progress-inner{-webkit-transform:rotate(43deg);-ms-transform:rotate(43deg);transform:rotate(43deg)}.pace-progress[data-progress="13"] .pace-progress-inner{-webkit-transform:rotate(47deg);-ms-transform:rotate(47deg);transform:rotate(47deg)}.pace-progress[data-progress="14"] .pace-progress-inner{-webkit-transform:rotate(50deg);-ms-transform:rotate(50deg);transform:rotate(50deg)}.pace-progress[data-progress="15"] .pace-progress-inner{-webkit-transform:rotate(54deg);-ms-transform:rotate(54deg);transform:rotate(54deg)}.pace-progress[data-progress="16"] .pace-progress-inner{-webkit-transform:rotate(58deg);-ms-transform:rotate(58deg);transform:rotate(58deg)}.pace-progress[data-progress="17"] .pace-progress-inner{-webkit-transform:rotate(61deg);-ms-transform:rotate(61deg);transform:rotate(61deg)}.pace-progress[data-progress="18"] .pace-progress-inner{-webkit-transform:rotate(65deg);-ms-transform:rotate(65deg);transform:rotate(65deg)}.pace-progress[data-progress="19"] .pace-progress-inner{-webkit-transform:rotate(68deg);-ms-transform:rotate(68deg);transform:rotate(68deg)}.pace-progress[data-progress="20"] .pace-progress-inner{-webkit-transform:rotate(72deg);-ms-transform:rotate(72deg);transform:rotate(72deg)}.pace-progress[data-progress="21"] .pace-progress-inner{-webkit-transform:rotate(76deg);-ms-transform:rotate(76deg);transform:rotate(76deg)}.pace-progress[data-progress="22"] .pace-progress-inner{-webkit-transform:rotate(79deg);-ms-transform:rotate(79deg);transform:rotate(79deg)}.pace-progress[data-progress="23"] .pace-progress-inner{-webkit-transform:rotate(83deg);-ms-transform:rotate(83deg);transform:rotate(83deg)}.pace-progress[data-progress="24"] .pace-progress-inner{-webkit-transform:rotate(86deg);-ms-transform:rotate(86deg);transform:rotate(86deg)}.pace-progress[data-progress="25"] .pace-progress-inner{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.pace-progress[data-progress="26"] .pace-progress-inner{-webkit-transform:rotate(94deg);-ms-transform:rotate(94deg);transform:rotate(94deg)}.pace-progress[data-progress="27"] .pace-progress-inner{-webkit-transform:rotate(97deg);-ms-transform:rotate(97deg);transform:rotate(97deg)}.pace-progress[data-progress="28"] .pace-progress-inner{-webkit-transform:rotate(101deg);-ms-transform:rotate(101deg);transform:rotate(101deg)}.pace-progress[data-progress="29"] .pace-progress-inner{-webkit-transform:rotate(104deg);-ms-transform:rotate(104deg);transform:rotate(104deg)}.pace-progress[data-progress="30"] .pace-progress-inner{-webkit-transform:rotate(108deg);-ms-transform:rotate(108deg);transform:rotate(108deg)}.pace-progress[data-progress="31"] .pace-progress-inner{-webkit-transform:rotate(112deg);-ms-transform:rotate(112deg);transform:rotate(112deg)}.pace-progress[data-progress="32"] .pace-progress-inner{-webkit-transform:rotate(115deg);-ms-transform:rotate(115deg);transform:rotate(115deg)}.pace-progress[data-progress="33"] .pace-progress-inner{-webkit-transform:rotate(119deg);-ms-transform:rotate(119deg);transform:rotate(119deg)}.pace-progress[data-progress="34"] .pace-progress-inner{-webkit-transform:rotate(122deg);-ms-transform:rotate(122deg);transform:rotate(122deg)}.pace-progress[data-progress="35"] .pace-progress-inner{-webkit-transform:rotate(126deg);-ms-transform:rotate(126deg);transform:rotate(126deg)}.pace-progress[data-progress="36"] .pace-progress-inner{-webkit-transform:rotate(130deg);-ms-transform:rotate(130deg);transform:rotate(130deg)}.pace-progress[data-progress="37"] .pace-progress-inner{-webkit-transform:rotate(133deg);-ms-transform:rotate(133deg);transform:rotate(133deg)}.pace-progress[data-progress="38"] .pace-progress-inner{-webkit-transform:rotate(137deg);-ms-transform:rotate(137deg);transform:rotate(137deg)}.pace-progress[data-progress="39"] .pace-progress-inner{-webkit-transform:rotate(140deg);-ms-transform:rotate(140deg);transform:rotate(140deg)}.pace-progress[data-progress="40"] .pace-progress-inner{-webkit-transform:rotate(144deg);-ms-transform:rotate(144deg);transform:rotate(144deg)}.pace-progress[data-progress="41"] .pace-progress-inner{-webkit-transform:rotate(148deg);-ms-transform:rotate(148deg);transform:rotate(148deg)}.pace-progress[data-progress="42"] .pace-progress-inner{-webkit-transform:rotate(151deg);-ms-transform:rotate(151deg);transform:rotate(151deg)}.pace-progress[data-progress="43"] .pace-progress-inner{-webkit-transform:rotate(155deg);-ms-transform:rotate(155deg);transform:rotate(155deg)}.pace-progress[data-progress="44"] .pace-progress-inner{-webkit-transform:rotate(158deg);-ms-transform:rotate(158deg);transform:rotate(158deg)}.pace-progress[data-progress="45"] .pace-progress-inner{-webkit-transform:rotate(162deg);-ms-transform:rotate(162deg);transform:rotate(162deg)}.pace-progress[data-progress="46"] .pace-progress-inner{-webkit-transform:rotate(166deg);-ms-transform:rotate(166deg);transform:rotate(166deg)}.pace-progress[data-progress="47"] .pace-progress-inner{-webkit-transform:rotate(169deg);-ms-transform:rotate(169deg);transform:rotate(169deg)}.pace-progress[data-progress="48"] .pace-progress-inner{-webkit-transform:rotate(173deg);-ms-transform:rotate(173deg);transform:rotate(173deg)}.pace-progress[data-progress="49"] .pace-progress-inner{-webkit-transform:rotate(176deg);-ms-transform:rotate(176deg);transform:rotate(176deg)}.pace-progress[data-progress="50"] .pace-progress-inner{-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.pace-progress[data-progress="51"] .pace-progress-inner{-webkit-transform:rotate(184deg);-ms-transform:rotate(184deg);transform:rotate(184deg);overflow:visible}.pace-progress[data-progress="52"] .pace-progress-inner{-webkit-transform:rotate(187deg);-ms-transform:rotate(187deg);transform:rotate(187deg);overflow:visible}.pace-progress[data-progress="53"] .pace-progress-inner{-webkit-transform:rotate(191deg);-ms-transform:rotate(191deg);transform:rotate(191deg);overflow:visible}.pace-progress[data-progress="54"] .pace-progress-inner{-webkit-transform:rotate(194deg);-ms-transform:rotate(194deg);transform:rotate(194deg);overflow:visible}.pace-progress[data-progress="55"] .pace-progress-inner{-webkit-transform:rotate(198deg);-ms-transform:rotate(198deg);transform:rotate(198deg);overflow:visible}.pace-progress[data-progress="56"] .pace-progress-inner{-webkit-transform:rotate(202deg);-ms-transform:rotate(202deg);transform:rotate(202deg);overflow:visible}.pace-progress[data-progress="57"] .pace-progress-inner{-webkit-transform:rotate(205deg);-ms-transform:rotate(205deg);transform:rotate(205deg);overflow:visible}.pace-progress[data-progress="58"] .pace-progress-inner{-webkit-transform:rotate(209deg);-ms-transform:rotate(209deg);transform:rotate(209deg);overflow:visible}.pace-progress[data-progress="59"] .pace-progress-inner{-webkit-transform:rotate(212deg);-ms-transform:rotate(212deg);transform:rotate(212deg);overflow:visible}.pace-progress[data-progress="60"] .pace-progress-inner{-webkit-transform:rotate(216deg);-ms-transform:rotate(216deg);transform:rotate(216deg);overflow:visible}.pace-progress[data-progress="61"] .pace-progress-inner{-webkit-transform:rotate(220deg);-ms-transform:rotate(220deg);transform:rotate(220deg);overflow:visible}.pace-progress[data-progress="62"] .pace-progress-inner{-webkit-transform:rotate(223deg);-ms-transform:rotate(223deg);transform:rotate(223deg);overflow:visible}.pace-progress[data-progress="63"] .pace-progress-inner{-webkit-transform:rotate(227deg);-ms-transform:rotate(227deg);transform:rotate(227deg);overflow:visible}.pace-progress[data-progress="64"] .pace-progress-inner{-webkit-transform:rotate(230deg);-ms-transform:rotate(230deg);transform:rotate(230deg);overflow:visible}.pace-progress[data-progress="65"] .pace-progress-inner{-webkit-transform:rotate(234deg);-ms-transform:rotate(234deg);transform:rotate(234deg);overflow:visible}.pace-progress[data-progress="66"] .pace-progress-inner{-webkit-transform:rotate(238deg);-ms-transform:rotate(238deg);transform:rotate(238deg);overflow:visible}.pace-progress[data-progress="67"] .pace-progress-inner{-webkit-transform:rotate(241deg);-ms-transform:rotate(241deg);transform:rotate(241deg);overflow:visible}.pace-progress[data-progress="68"] .pace-progress-inner{-webkit-transform:rotate(245deg);-ms-transform:rotate(245deg);transform:rotate(245deg);overflow:visible}.pace-progress[data-progress="69"] .pace-progress-inner{-webkit-transform:rotate(248deg);-ms-transform:rotate(248deg);transform:rotate(248deg);overflow:visible}.pace-progress[data-progress="70"] .pace-progress-inner{-webkit-transform:rotate(252deg);-ms-transform:rotate(252deg);transform:rotate(252deg);overflow:visible}.pace-progress[data-progress="71"] .pace-progress-inner{-webkit-transform:rotate(256deg);-ms-transform:rotate(256deg);transform:rotate(256deg);overflow:visible}.pace-progress[data-progress="72"] .pace-progress-inner{-webkit-transform:rotate(259deg);-ms-transform:rotate(259deg);transform:rotate(259deg);overflow:visible}.pace-progress[data-progress="73"] .pace-progress-inner{-webkit-transform:rotate(263deg);-ms-transform:rotate(263deg);transform:rotate(263deg);overflow:visible}.pace-progress[data-progress="74"] .pace-progress-inner{-webkit-transform:rotate(266deg);-ms-transform:rotate(266deg);transform:rotate(266deg);overflow:visible}.pace-progress[data-progress="75"] .pace-progress-inner{-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg);overflow:visible}.pace-progress[data-progress="76"] .pace-progress-inner{-webkit-transform:rotate(274deg);-ms-transform:rotate(274deg);transform:rotate(274deg);overflow:visible}.pace-progress[data-progress="77"] .pace-progress-inner{-webkit-transform:rotate(277deg);-ms-transform:rotate(277deg);transform:rotate(277deg);overflow:visible}.pace-progress[data-progress="78"] .pace-progress-inner{-webkit-transform:rotate(281deg);-ms-transform:rotate(281deg);transform:rotate(281deg);overflow:visible}.pace-progress[data-progress="79"] .pace-progress-inner{-webkit-transform:rotate(284deg);-ms-transform:rotate(284deg);transform:rotate(284deg);overflow:visible}.pace-progress[data-progress="80"] .pace-progress-inner{-webkit-transform:rotate(288deg);-ms-transform:rotate(288deg);transform:rotate(288deg);overflow:visible}.pace-progress[data-progress="81"] .pace-progress-inner{-webkit-transform:rotate(292deg);-ms-transform:rotate(292deg);transform:rotate(292deg);overflow:visible}.pace-progress[data-progress="82"] .pace-progress-inner{-webkit-transform:rotate(295deg);-ms-transform:rotate(295deg);transform:rotate(295deg);overflow:visible}.pace-progress[data-progress="83"] .pace-progress-inner{-webkit-transform:rotate(299deg);-ms-transform:rotate(299deg);transform:rotate(299deg);overflow:visible}.pace-progress[data-progress="84"] .pace-progress-inner{-webkit-transform:rotate(302deg);-ms-transform:rotate(302deg);transform:rotate(302deg);overflow:visible}.pace-progress[data-progress="85"] .pace-progress-inner{-webkit-transform:rotate(306deg);-ms-transform:rotate(306deg);transform:rotate(306deg);overflow:visible}.pace-progress[data-progress="86"] .pace-progress-inner{-webkit-transform:rotate(310deg);-ms-transform:rotate(310deg);transform:rotate(310deg);overflow:visible}.pace-progress[data-progress="87"] .pace-progress-inner{-webkit-transform:rotate(313deg);-ms-transform:rotate(313deg);transform:rotate(313deg);overflow:visible}.pace-progress[data-progress="88"] .pace-progress-inner{-webkit-transform:rotate(317deg);-ms-transform:rotate(317deg);transform:rotate(317deg);overflow:visible}.pace-progress[data-progress="89"] .pace-progress-inner{-webkit-transform:rotate(320deg);-ms-transform:rotate(320deg);transform:rotate(320deg);overflow:visible}.pace-progress[data-progress="90"] .pace-progress-inner{-webkit-transform:rotate(324deg);-ms-transform:rotate(324deg);transform:rotate(324deg);overflow:visible}.pace-progress[data-progress="91"] .pace-progress-inner{-webkit-transform:rotate(328deg);-ms-transform:rotate(328deg);transform:rotate(328deg);overflow:visible}.pace-progress[data-progress="92"] .pace-progress-inner{-webkit-transform:rotate(331deg);-ms-transform:rotate(331deg);transform:rotate(331deg);overflow:visible}.pace-progress[data-progress="93"] .pace-progress-inner{-webkit-transform:rotate(335deg);-ms-transform:rotate(335deg);transform:rotate(335deg);overflow:visible}.pace-progress[data-progress="94"] .pace-progress-inner{-webkit-transform:rotate(338deg);-ms-transform:rotate(338deg);transform:rotate(338deg);overflow:visible}.pace-progress[data-progress="95"] .pace-progress-inner{-webkit-transform:rotate(342deg);-ms-transform:rotate(342deg);transform:rotate(342deg);overflow:visible}.pace-progress[data-progress="96"] .pace-progress-inner{-webkit-transform:rotate(346deg);-ms-transform:rotate(346deg);transform:rotate(346deg);overflow:visible}.pace-progress[data-progress="97"] .pace-progress-inner{-webkit-transform:rotate(349deg);-ms-transform:rotate(349deg);transform:rotate(349deg);overflow:visible}.pace-progress[data-progress="98"] .pace-progress-inner{-webkit-transform:rotate(353deg);-ms-transform:rotate(353deg);transform:rotate(353deg);overflow:visible}.pace-progress[data-progress="99"] .pace-progress-inner{-webkit-transform:rotate(356deg);-ms-transform:rotate(356deg);transform:rotate(356deg);overflow:visible}.pace-progress[data-progress="100"] .pace-progress-inner{-webkit-transform:rotate(360deg);-ms-transform:rotate(360deg);transform:rotate(360deg);overflow:visible}
\ No newline at end of file
diff --git a/themes/Obsidian/css/pace/pace.css b/themes/Obsidian/css/pace/pace.css
new file mode 100644
index 00000000..4a1842f4
--- /dev/null
+++ b/themes/Obsidian/css/pace/pace.css
@@ -0,0 +1 @@
+.pace {-webkit-pointer-events:none;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none } .pace-inactive {display:none } .pace .pace-progress {background:aqua;position:fixed;z-index:2000;top:0;right:100%;width:100%;height:2px } .pace .pace-progress-inner {display:block;position:absolute;right:0;width:100px;height:100%;box-shadow:0 0 10px aqua,0 0 5px aqua;opacity:1.0;-webkit-transform:rotate(3deg) translate(0px,-4px);-moz-transform:rotate(3deg) translate(0px,-4px);-ms-transform:rotate(3deg) translate(0px,-4px);-o-transform:rotate(3deg) translate(0px,-4px);transform:rotate(3deg) translate(0px,-4px) } .pace .pace-activity {display:block;position:fixed;z-index:2000;top:15px;right:15px;width:14px;height:14px;border:solid 2px transparent;border-top-color:aqua;border-left-color:aqua;border-radius:10px;-webkit-animation:pace-spinner 400ms linear infinite;-moz-animation:pace-spinner 400ms linear infinite;-ms-animation:pace-spinner 400ms linear infinite;-o-animation:pace-spinner 400ms linear infinite;animation:pace-spinner 400ms linear infinite } @-webkit-keyframes pace-spinner {0% {-webkit-transform:rotate(0deg);transform:rotate(0deg) } 100% {-webkit-transform:rotate(360deg);transform:rotate(360deg) }} @-moz-keyframes pace-spinner {0% {-moz-transform:rotate(0deg);transform:rotate(0deg) } 100% {-moz-transform:rotate(360deg);transform:rotate(360deg) }} @-o-keyframes pace-spinner {0% {-o-transform:rotate(0deg);transform:rotate(0deg) } 100% {-o-transform:rotate(360deg);transform:rotate(360deg) }} @-ms-keyframes pace-spinner {0% {-ms-transform:rotate(0deg);transform:rotate(0deg) } 100% {-ms-transform:rotate(360deg);transform:rotate(360deg) }} @keyframes pace-spinner {0% {transform:rotate(0deg);transform:rotate(0deg) } 100% {transform:rotate(360deg);transform:rotate(360deg) }}
\ No newline at end of file
diff --git a/themes/Obsidian/css/responsive.css b/themes/Obsidian/css/responsive.css
new file mode 100644
index 00000000..be3bcd63
--- /dev/null
+++ b/themes/Obsidian/css/responsive.css
@@ -0,0 +1 @@
+@media(max-width:600px){#wrapper{border-left:0!important}.menu-bg,.menu>ul{width:100%;margin-bottom:10px}}@media(max-width:512px){.datetime{display:none!important}.slider{float:right;top:0;padding:17px;right:0;left:0}}
\ No newline at end of file
diff --git a/themes/Obsidian/css/style.css b/themes/Obsidian/css/style.css
new file mode 100644
index 00000000..0e39933f
--- /dev/null
+++ b/themes/Obsidian/css/style.css
@@ -0,0 +1 @@
+@charset "UTF-8";html{background:$bottomWrapper.bg.color;margin:0 0 0 -1px;padding:0;overflow-Y:scroll}select[name="home_cfg_id"]{margin-bottom:10px}select[name="home_id-mod_id-ip-port"]{margin-bottom:10px}body{padding:0;margin:0;width:100%;color:#FFF;font-family:'Open Sans',sans-serif;background:#4a9667;background:-moz-radial-gradient(center,ellipse cover,#4a9667 0,#22504c 55%,#021736 100%);background:-webkit-gradient(radial,center center,0px,center center,100%,color-stop(0%,#4a9667),color-stop(55%,#22504c),color-stop(100%,#021736));background:-webkit-radial-gradient(center,ellipse cover,#4a9667 0,#22504c 55%,#021736 100%);background:-o-radial-gradient(center,ellipse cover,#4a9667 0,#22504c 55%,#021736 100%);background:-ms-radial-gradient(center,ellipse cover,#4a9667 0,#22504c 55%,#021736 100%);background:radial-gradient(ellipse at center,#4a9667 0,#22504c 55%,#021736 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#4a9667',endColorstr='#021736',GradientType=1);background-attachment:fixed;font-size:13px;font-style:normal;font-weight:normal;text-transform:normal}#ipaddress{color:#fff}#datetime{background:#1d3248;color:#fff;height:48px}#wrapper{margin:0;border-left:230px solid #111f2d}#topWrapper{border:0;border:0;margin:0;padding:0;background-color:#000}#topBanner{background-position:center;height:120px;background-image:url(../images/topBanner.png);background-repeat:no-repeat}#refresh-manual{color:#333;height:23px;background:#111f2d;padding:8px 8px 3px 8px;text-align:center;font-family:'Open Sans',sans-serif;font-size:12px;border-radius:3px;right:3%;position:fixed;bottom:5%;z-index:55}.main-content{background:#162535;border-radius:2px;-moz-border-radius:2px;overflow-x:hidden;padding-right:1%;padding-bottom:1%;padding-left:1%;box-shadow:0 1px 1px rgba(0,0,0,0.1);display:none}div.submit-start{margin-top:10px}table.start-server td.info{border-top:0}table.start-server tbody tr td{border-top:0}table.start-server td.left{border-top:0}table.start-server td.right{text-align:left;border-top:0}hr{display:none}.user_menu_link_selected,.admin_menu_link_selected{color:#fff!important;border-left-color:#3cbc81!important;background:#0e1723!important;text-shadow:none!important}.pull-right{margin-top:3px;font-size:14px!important}.menu>ul li>ul>li>a>span:before,.menu>ul>li>a>span:before,.menu ul>li>a>span:before,.menu>ul li>ul>li.copied>a>span:before{font:normal normal normal 18px/1 FontAwesome;padding-right:10px}.menu>ul li>ul>li>a>.addons_manager:before{content:"\f055"}.menu>ul li>ul>li>a>.ticket_settings:before{content:"\f0e6"}.menu>ul li>ul>li.copied>a>span:before{content:"\f0db"}.menu>ul li>ul>li>a>.extras:before{content:"\f06b"}.menu>ul li>ul>li>a>.ftp_admin:before{content:"\f07b"}.menu>ul li>ul>li>a>.user_games:before{content:"\f11b"}.menu>ul li>ul>li>a>.config_games:before{content:"\f0c3"}.menu>ul li>ul>li>a>.show_groups:before,.menu ul>li>a>span.groups:before{content:"\f0c0"}.menu>ul li>ul>li>a>.modulemanager:before{content:"\f12e"}.menu>ul li>ul>li>a>.settings:before{content:"\f013"}.menu>ul li>ul>li>a>.server:before{content:"\f17c"}.menu>ul li>ul>li>a>.themes:before{content:"\f009"}.menu>ul li>ul>li>a>.update:before{content:"\f0ac"}.menu>ul li>ul>li>a>.lgsl_admin:before{content:"\f080"}.menu>ul li>ul>li>a>.orders:before{content:"\f217"}.menu>ul li>ul>li>a>.rcon:before{content:"\f069"}.menu>ul li>ul>li>a>.services:before{content:"\f218"}.menu>ul li>ul>li>a>.shop_settings:before{content:"\f07a"}.menu>ul li>ul>li>a>.admin_dsi:before{content:"\f03e"}.menu>ul li>ul>li>a>.cron:before{content:"\f1da"}.menu>ul li>ul>li>a>.fastdl:before{content:"\f019"}.menu>ul li>ul>li>a>.fast_download:before{content:"\f019"}.menu>ul li>ul>li>a>.user_admin:before,.menu ul>li>a>span.subusers:before{content:"\f234"}.menu>ul li>ul>li>a>.watch_logger:before{content:"\f15c"}.menu>ul li>ul>li>a>.litefm_settings:before{content:"\f085"}.menu>ul li>ul>li>a>.mysql_admin:before{content:"\f1c0"}.menu>ul li>ul>li>a>.admin_news:before{content:"\f1ea"}.menu>ul>li>a>span.tickets:before{content:"\f0e6"}.menu>ul>li>a>span.dashboard:before{content:"\f0e4"}.menu>ul>li>a>span.game_monitor:before{content:"\f109"}.menu>ul>li>a>span.TS3Admin:before{content:"\f025"}.menu>ul>li>a>span.ftp:before{content:"\f07c"}.menu>ul>li>a>span.administration:before{content:"\f0ae"}.menu>ul>li>a>span.username:before{content:"\f007"}.menu ul>li>a>span.logout:before{content:"\f011"}.menu>ul>li>a>span.controlpanellogin:before{content:"\f090"}.menu>ul>li>a>span.form:before{content:"\f234"}.menu>ul>li>a>span.lgsl:before{content:"\f080"}.menu>ul>li>a>span.user_cron:before{content:"\f1da"}.menu>ul>li>a>span.user_dsi:before,.menu>ul>li>a>span.list_dsi:before{content:"\f03e"}.menu>ul>li>a>span.fd_user:before{content:"\f019"}.menu>ul>li>a>span.support:before{content:"\f1cd"}.menu>ul>li>a>span.util:before{content:"\f085"}.menu>ul>li>a>span.news:before{content:"\f1ea"}.menu>ul>li>a>span.shop:before,.menu>ul>li>a>span.shop_guest:before{content:"\f07a"}.menu>ul li>ul>li>a>.faq:before{content:"\f02d"}.menu>ul>li>a>span.dashboard,.menu>ul>li>a>span.game_monitor,.menu>ul>li>a>span.TS3Admin,.menu>ul>li>a>span.ftp,.menu>ul>li>a>span.administration,.menu>ul>li>a>span.username,.menu ul>li>a>span.logout,.menu>ul>li>a>span.controlpanellogin,.menu>ul>li>a>span.form,.menu ul>li>a>span.subusers,.menu ul>li>a>span.groups,.menu>ul>li>a>span.lgsl,.menu>ul>li>a>span.user_cron,.menu>ul>li>a>span.user_dsi,.menu>ul>li>a>span.fd_user,.menu>ul>li>a>span.support,.menu>ul>li>a>span.util,.menu>ul>li>a>span.shop,.menu>ul>li>a>span.shop_guest,.menu>ul>li>a>span.list_dsi{padding-top:5px;padding-bottom:5px}.menu ul>li>a>span.customtab{background:url(../images/menu/customtab1.png) no-repeat scroll left center transparent;padding-left:35px;padding-top:5px;padding-bottom:5px}.menu-bg{float:left}.menu>ul{list-style:none;margin:0;padding:0;vertical-align:baseline;line-height:1}.menu>ul{z-index:100;display:block;position:relative;width:230px;display:none}.menu>ul li{display:block;position:relative;margin:0;padding:0;width:100%}.menu>ul>li>a{display:block;position:relative;margin:0;padding:11px 20px;font-family:'Open Sans',sans-serif;color:#d8d8d8;text-decoration:none;font-size:12px;font-weight:300;background:#111f2d;border-left:5px solid transparent;line-height:1.42857143}.menu>ul li:first-child>a{border-top:0}.menu>ul li:last-child>a{border-bottom:0}.menu>ul>li>a:hover,.menu>ul>li:hover>a{color:#fff;text-shadow:0 1px 0 rgba(0,0,0,0.3);border-left-color:#64b48f;background:#0f1926}.menu>ul .has-sub>a::after{content:"";position:absolute;top:16px;right:10px;width:0;height:0;border:4px solid transparent;border-left:4px solid #d8d8d8}.menu>ul .has-sub>a::before{content:"";position:absolute;top:17px;right:10px;width:0;height:0;border:4px solid transparent;border-left:4px solid #000}.menu>ul li>a:hover::after,.menu>ul li:hover>a::after{border-left:4px solid #fff}.menu>ul li>a:hover::before,.menu>ul li:hover>a::before{border-left:4px solid rgba(0,0,0,0.3)}.treeview-sub{background-color:#172638;list-style:none;padding:0;padding-left:5px;opacity:1;display:none}.menu li.active>.treeview-sub{display:block}.treeview-sub>li>a{padding:7px 7px 7px 15px;display:block;font-size:13px;color:#8aa4af;text-decoration:none}.treeview-sub>li:hover>a{color:#fff}.menu>ul li:hover>ul{left:100%;opacity:1;visibility:visible}#submenu_0,#submenu_1{margin-top:-1px}#container{min-height:500px;padding:1%}#banner{margin:15px auto;width:100%}#content{margin:0 auto;text-align:left}#content a:link,#content a:visited{color:#a0c9e1;font-weight:bold;text-decoration:none;transition:all 300ms linear;-moz-transition:all 300ms linear;-webkit-transition:all 300ms linear}#content p{margin-top:10px;text-align:left}.last{margin-right:0!important;clear:right}.one_two{float:left;width:48%;position:relative;margin-left:1%;margin-right:1%}.one_fourth{float:left;width:25%;position:relative}.bloc{padding:0 15px 1px 15px;background-color:#0f1a26;border-radius:4px;-moz-border-radius:4px;overflow:hidden;text-align:left;font-size:.9em}.bloc h4{font-size:15px;margin-left:-15px;margin-right:-15px}.dragbox-content{padding-top:15px;padding-bottom:15px}.column{min-height:150px}.column .dragbox{margin-bottom:20px}.column .placeholder:before{content:"\f125";color:rgba(255,255,255,0.5);display:block;text-align:center;line-height:77px;font-family:"FontAwesome";font-size:40px}.column .placeholder{background:rgba(19,31,44,0.4);margin-bottom:20px;border:1px dashed #152536;border-radius:4px;-moz-border-radius:4px}.dragbox h4.collapse:before{font:normal normal normal 21px/1 FontAwesome;content:"\f0dd";right:32px;position:relative;float:right;top:-5px;width:0}.dragbox h4 .configure{font-size:11px;font-weight:normal;margin-right:30px;float:right}.half{float:left;width:440px;margin:20px 40px 20px 0;position:relative}.padd15{padding:15px}.padd20{padding:20px}p{letter-spacing:normal;line-height:1.7em}p2{text-align:left;margin:10px 0 10px 0;color:#fff;font-size:20px;clear:both}h0{color:#fff;margin:10px 0 10px 0;clear:both;width:99.8%;height:35px;background:#0b141d;/*! */margin-top:20px;padding-top:10px;text-align:center;font-family:'Open Sans',sans-serif;font-size:20px;display:block;font-weight:bold;border-radius:2px}h1{color:#fff;margin:20px 0 10px 0;clear:both}h2{color:#fff;clear:both;height:35px;background:#0f1a26;padding-top:10px;margin-top:-1px;margin-right:-1%;margin-left:-1%;text-align:center;color:#FFFF;font-weight:300;font-family:'Open Sans',sans-serif}h3{color:#fff;margin:10px 0 5px 0;clear:both}h4{color:#fff;margin:0 auto;height:31px;background:#131f2c;padding-top:10px;text-align:center;font-family:'Open Sans',sans-serif}a:link,a:visited{color:#6364ec;text-decoration:none}a:hover{color:#fff!important;transition:all 300ms linear;-moz-transition:all 300ms linear;-webkit-transition:all 300ms linear}#bottomWrapper{background-color:rgba(6,15,17,0.6);background-position:center top;background-repeat:repeat-x;text-align:center;color:#fff;text-align:center;width:100%;height:110px;bottom:0;position:relative;clear:both}#bottomWrapper a:link,#bottomWrapper a:visited{color:#379bb9}#bottomWrapper a:hover{color:#cdb380;text-decoration:none}#footer{min-height:260px;width:920px;margin:0 auto;background-color:#101010;background-image:url(../images/footer-bg.png);background-position:center top;background-repeat:no-repeat}.footer-last{margin-right:0!important;clear:right}.footer-one-third{float:left;margin:40px 100px 20px 0;width:240px;position:relative;text-align:left;overflow:hidden}.footer-one-third h2{margin-top:10px;color:#FFF}.footer-one-third ul{border-top:1px solid #1a1a1a;padding:0}.footer-one-third ul,.footer-one-third li{list-style:none;margin-left:0}.footer-one-third li{border-bottom:1px solid #1a1a1a;padding:5px 0}#bottom-links{height:60px;background:#010101 url('../images/bottomLinks-bg.png') center top repeat-x}a img{border:0;padding-right:10px}.online_servers{color:#000;background-color:#FCBG0D;margin-left:auto;margin-right:auto;text-align:center}.online_servers tr td{padding:5px 10px;background-color:#20aa52;border-radius:3px;color:transparent;-webkit-border-radius:3px}.online_servers tr td>div>a{color:#fff!important}table.tablesorter{font-family:'Open Sans',sans-serif;background-color:#0f1a26;margin:10px 0 15px;width:100%;text-align:left;border-collapse:collapse;border-spacing:1px;border-left:1px solid #0f1a26;border-right:1px solid #0f1a26}.expand-child{border-bottom:1px solid rgba(15,26,38,0.6)}table.tablesorter thead tr th,table.tablesorter tfoot tr th{background-color:#0f1a26;font-size:10pt;padding:10px 5px}table.tablesorter thead tr .header{cursor:pointer;color:#fff}table.tablesorter tbody tr{background-color:#162535}table.tablesorter tbody tr:hover,table.tablesorter tbody tr:hover tr{background-color:#111f2d}table.tablesorter tbody td{color:#fff;padding:8px 6px;vertical-align:top}table.tablesorter thead tr .headerSortUp{background-image:url(../images/asc.gif);background-repeat:no-repeat;background-position:center right}table.tablesorter thead tr .headerSortDown{background-image:url(../images/desc.gif);background-repeat:no-repeat;background-position:center right}table.tablesorter thead tr .headerSortDown,table.tablesorter thead tr .headerSortUp{background-color:#0f1a26}table.tablesorter tfoot td{color:#fff;padding-top:15px;padding-left:4px;padding-right:4px;padding-bottom:4px;background-color:#0f1a26;vertical-align:top}table.tablesorter tfoot{border:1px solid #0f1a26!important}.hidden{visibility:hidden;font-size:0}.install{margin-left:auto;margin-right:auto;text-align:left;font-size:1.1em}.failure{color:red;text-align:center}.success{color:#14e926;text-align:center}pre{text-decoration:none;text-align:left;clear:both;margin:0 auto;padding:0;color:white;background-color:black;border-left:10px #000 solid;border-right:10px #000 solid;border-top:5px #000 solid;border-bottom:5px #000 solid;word-wrap: / overflow:auto}.log{text-decoration:none;color:white;background-color:black;border-left:5px #000 solid;border-right:5px #000 solid;border-top:5px #000 solid;border-bottom:5px #000 solid;word-wrap: / overflow:auto}.button{border:1px dotted gray}.server_monitor{background:#eee}.monitor-1{float:left;display:inline-block}.monitor-1 div{float:left;padding-right:5px;display:inline-block}.monitor-2{background-color:#0f1a26;float:right;display:inline-block;text-align:center;padding:10px;box-shadow:0 1px 1px #0000004d}.monitor-2 div{display:inline-block}.monitor-3{clear:both;position:relative;top:5px;margin-bottom:5px}.srvctrl{border:0;border-collapse:collapse;border-spacing:0;font-weight:normal}.srvctrl td,.srvctrl th{padding:0;border:0}.mapicon{width:135px;height:100px;float:left}.hostname{width:100px}.login{margin-left:auto;margin-right:auto}.lostpass{margin-left:auto;margin-right:auto}.note{display:inline;padding:.2em .6em .3em;font-size:80%;font-weight:700;line-height:1;color:#fff;text-align:center;border-radius:.25em;top:-1px}p{text-align:center}.player_monitor{border-collapse:collapse}.player_monitor th{background:#CCC}.player_monitor tbody tr td .odd{background:333}.input{border:1px solid #006}.serverIdToggle,input[type="submit"],input[type="button"],button,.default-btn{padding:4px 8px;border-radius:2px;cursor:pointer;margin:0 2px;color:#fff!important;background-color:#37b799;border-color:#37b799;border:2px solid #37b799;font-weight:normal!important}.serverIdToggle:hover,input[type="submit"]:hover,input[type="button"]:hover,button:hover,.default-btn:hover{border:2px solid #248e75;background:#248e75!important;color:#eee;border-radius:2px}.serverIdToggle:active,button:active,button[type="submit"]:active,input[type="submit"]:active,input[type="button"]:active,.default-btn:active{background-color:#204d74!important;border-color:#204d74}input[type="text"],input[type="password"],input[type="number"],textarea{color:#fff;padding:4px;border:1px solid #121c32;border-radius:2px;background-color:rgba(29,50,72,0.501)}input[type="text"]:focus,input[type="password"]:focus,textarea:focus,input[type="number"]:focus,input[type="text"]:hover,input[type="number"]:hover,input[type="password"]:hover,textarea:hover{border-color:#3cbc81}.jqmWindow{display:none;position:fixed;top:17%;left:50%;margin-left:-300px;width:600px;background-color:#EEE;color:#333;border:1px solid black;padding:12px}.jqmOverlay{background-color:#000}* iframe.jqm{position:absolute;top:0;left:0;z-index:-1;width:expression(this.parentNode.offsetWidth+'px');height:expression(this.parentNode.offsetHeight+'px')}* html .jqmWindow{position:absolute;top:expression((document.documentElement.scrollTop || document.body.scrollTop)+Math.round(17 *(document.documentElement.offsetHeight || document.body.clientHeight) / 100)+'px')}.administration-table{text-align:center;margin-left:auto;margin-right:auto;margin-bottom:20px}.administration-buttons{padding:15px}.remove-button{width:10px;border:0 solid transparent}.start-server{width:100%;word-wrap:break-word;table-layout:fixed}.start-server td.left select{max-width:265px}.start-server td.left input[type=text]{word-break:normal}.start-server td.right{width:50%;text-align:right!important}.start-server td.left{width:50%;text-align:left!important}.submit-start{text-align:center}.owner{width:90px;word-break:break-all}.operations{width:320px}.ts3-add-virtual select{max-width:194px}.server-starting,.list_table{width:100%}.server-starting td.right,.list_table td.right{width:200px}#servermonitor>tfoot .bloc{display:inline-block}#servermonitor>tfoot .bloc.right{float:right}#datetime>a>img{width:230px!important;padding:6.08px 0;transition:all 300ms linear;-moz-transition:all 300ms linear;-webkit-transition:all 300ms linear;height:auto!important}#datetime>a>img:hover{background:url("../images/light-bg.png");transition:all 300ms linear;-moz-transition:all 300ms linear;-webkit-transition:all 300ms linear}.slider{position:relative;padding:15px;top:-19px;left:-4px;font-size:14px;cursor:pointer}.slider:hover{background:url("../images/dark-bg.png")}.datetime{float:right;height:48px;position:relative;right:15px;width:170px;line-height:48px;text-align:center;cursor:pointer;display:none}.datetime>ul{position:absolute;background:#1d3248 url("../images/dark-bg.png");list-style:none;top:50px;width:170px;padding:0;z-index:9999;opacity:0;visibility:hidden;transition:all 300ms linear;-moz-transition:all 300ms linear;-webkit-transition:all 300ms linear;cursor:default}.datetime:hover{background:url("../images/dark-bg.png")}.datetime:hover>ul{top:35px;opacity:1;visibility:visible;transition:all 300ms linear;-moz-transition:all 300ms linear;-webkit-transition:all 300ms linear}.datetime>ul>li>span>i{cursor:pointer}.menu-hidder{margin-left:-230px;display:none;transition:visibility 0s,opacity .5s linear}.wrapper-hidder{border-left:0!important}.copied>.treeview-a>.fa-angle-left:before{content:none}.treeview.active>a>.fa-angle-left{transform:rotate(-90deg);-webkit-transform:rotate(-90deg)}.treeview>a.treeview-a{padding-left:5px;padding-right:18px}.treeview-sub>li>a.admin_menu_link_selected{border-left:none!important;background:transparent!important}.treeview-sub>li>a.user_menu_link_selected{border-left:none!important;background:#2c3b41!important}.treeview-sub>li.treeview>a{padding-right:18px;padding-left:16px}.avatar-cover{padding:12px;min-height:64px}#avatar{border-radius:100%;width:64px;height:64px}.avatar-username{color:#fff;font-size:15px;left:20px;position:relative;top:10px;vertical-align:top}.avatar-status{color:#a2a2a2;font-size:13px;left:95px;position:absolute;top:90px}.avatar-status i{color:#44b44d;font-size:12px;padding-right:5px}.pulse_heart{color:#e90606;margin:0 3px;font-size:10px;cursor:pointer;animation:pound_heart .35s infinite alternate;-webkit-animation:pound_heart .35s infinite alternate}@-webkit-keyframes pound_heart{to{transform:scale(1.4)}}@keyframes pound_heart{to{transform:scale(1.4)}}.edit_avatar{overflow:hidden;position:relative}.edit_avatar [type=file]{cursor:inherit;display:block;font-size:999px;filter:alpha(opacity=0);min-height:100%;min-width:100%;opacity:0;position:absolute;right:0;text-align:right;top:0}.edit_avatar{color:#d2d7d6;cursor:pointer;float:left;left:95px;margin:-12px 0 0 -1px;position:absolute}#remove_avatar{color:#f82006;cursor:pointer;margin:-12px 0 0;padding:0;position:absolute;left:120px}.fileContainer [type=file]{cursor:pointer}select{background:rgba(29,50,72,0.501);padding:2px;border:1px solid rgba(21,37,54,0.501);color:#fff}button.upload-image{margin:5px 0;padding:5px 13px}img.mapicon{border:1px solid #0c151e}.ui-widget-content{border:1px solid transparent!important;background:#162535!important;color:#fff!important}.ui-widget-header{border:1px solid #0a121b!important;background:#0f1a26!important;color:#fff!important}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a.ui-button:link,a.ui-button:visited,.ui-button{color:#fff!important}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #37b799!important;background:#37b799!important;color:#fff!important}.ui-button-icon-only .ui-icon{filter:brightness(0) invert(1)}#dialog div.progress{font-size:.75rem;line-height:1rem;background-color:transparent!important;border-radius:2px;border:none!important}button:active{background-color:#204d74!important;transition:background-color .25s;-webkit-transition:background-color .25s;border-color:#204d74}.tip{opacity:0!important;display:block!important;transition:all 400ms linear!important;-moz-transition:all 400ms linear!important;-webkit-transition:all 400ms linear!important;font-weight:bold!important;padding:4px 8px!important;color:#fff!important;position:absolute!important;margin-left:32px!important;margin-top:-20px!important;z-index:20;text-align:left;-moz-border-radius:2px!important;-webkit-border-radius:2px!important;border-radius:2px!important;transition:all 400ms linear!important;-moz-transition:all 400ms linear!important;-webkit-transition:all 400ms linear!important;background-color:#498fcd!important;width:250px!important;box-shadow:none!important;background-image:none!important;visibility:hidden!important}.image-tip:hover .tip,.tip:hover{opacity:1!important;margin-left:20px!important;transition:all 400ms linear!important;-moz-transition:all 400ms linear!important;-webkit-transition:all 400ms linear!important;visibility:visible!important}.return-to-top-active{opacity:1!important;bottom:20px!important;right:20px!important;-webkit-transition:all .3s linear;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}#return-to-top{position:fixed;bottom:-50px;right:-50px;background:rgba(16,203,158,0.501);width:45px;height:45px;display:block;text-decoration:none;-webkit-border-radius:35px;-moz-border-radius:35px;border-radius:4px;opacity:0;-webkit-transition:all .3s linear;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;box-shadow:0 1px 1px #000}#return-to-top i{color:#fff;margin:0;position:relative;margin-left:12px;top:10px;font-size:19px;-webkit-transition:all .3s ease;-moz-transition:all .3s ease;-ms-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease}#return-to-top:hover{background:#10cb9e}#return-to-top:hover i{color:#fff;top:5px}.serverIdToggle{text-decoration:none!important;float:left;margin-bottom:10px}input[src="modules/administration/images/remove.gif"]{margin:4.5px 2px 0 2px}.g_pPL,.g_fPL,.g_pL,.g_lPL,.g_nPL,.g_cPL{background-color:#37b799;padding:6px 11.4px;color:#fff!important;font-weight:normal!important;border:1px solid #247763;margin-left:-1px}#pagination span a:hover{background-color:#248e75;border-color:1px solid #248e75!important}#pagination span a:focus{background-color:#204d74;border-color:1px solid #204d74!important}.g_cPL{background-color:#fff;color:#37b799!important;font-weight:bold!important}.g_pPL{border-radius:20px 0 0 20px;margin-right:-4px}.g_nPL{border-radius:0 20px 20px 0;margin-left:-4px}#pagination{margin:18px 5px 10px 5px}.callout{background-color:#00c0ef!important;border-radius:3px;margin:0 0 20px 0;padding:15px 30px 15px 15px;border-left:5px solid #eee;border-color:#0097bc}.callout span{margin-top:0;margin-bottom:10px;font-weight:600;font-size:18px}
diff --git a/themes/Obsidian/css/tip.css b/themes/Obsidian/css/tip.css
new file mode 100644
index 00000000..fc8f1571
--- /dev/null
+++ b/themes/Obsidian/css/tip.css
@@ -0,0 +1,2 @@
+/* TipTip CSS - Version 1.2 */
+.tipsy{position:absolute;padding:5px;z-index:100000}.tipsy-inner{font-size:12px;background:#37b799;color:#fff;max-width:200px;padding:5px 8px;text-align:center;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px}.tipsy-arrow{position:absolute;width:0;height:0;line-height:0;border:5px dashed #37b799}.tipsy-arrow-n{border-bottom-color:#37b799}.tipsy-arrow-s{border-top-color:#37b799}.tipsy-arrow-e{border-left-color:#161616}.tipsy-arrow-w{border-right-color:#161616}.tipsy-n .tipsy-arrow{top:0;left:50%;margin-left:-5px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.tipsy-nw .tipsy-arrow{top:0;left:10px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.tipsy-ne .tipsy-arrow{top:0;right:10px;border-bottom-style:solid;border-top:0;border-left-color:transparent;border-right-color:transparent}.tipsy-s .tipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.tipsy-sw .tipsy-arrow{bottom:0;left:10px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.tipsy-se .tipsy-arrow{bottom:0;right:10px;border-top-style:solid;border-bottom:0;border-left-color:transparent;border-right-color:transparent}.tipsy-e .tipsy-arrow{right:0;top:50%;margin-top:-5px;border-left-style:solid;border-right:0;border-top-color:transparent;border-bottom-color:transparent}.tipsy-w .tipsy-arrow{left:0;top:50%;margin-top:-5px;border-right-style:solid;border-left:none;border-top-color:transparent;border-bottom-color:transparent}
\ No newline at end of file
diff --git a/themes/Obsidian/images/addfolder.png b/themes/Obsidian/images/addfolder.png
new file mode 100644
index 0000000000000000000000000000000000000000..0f906ab9be64838790b98bc466b497a0e0ec9c22
GIT binary patch
literal 339
zcmV-Z0j&OsP)AY2yWd(3c__zZxfu3oXsso{0N;2-AbXGv#THBJ#a251tD9a9SW&K;?TvV
zV>Scry|p0^N(XLx-&sSlcmb10*WuI?{!>s{Pf
zfnTvWO)y@1#a&WcR07xY*4AVI5T{A`MtbrIM#thOU>t~IvfVTEM{tZ=ZVV#cMa0AJ
zdI?USmC+b4y#n35ZxE*mdec4}(yPjQugJ~zf7vxQ;B^iR{SkW8evW05DSr
z1<%~X^wgl##FWaylc_d9MXmupA+G=b|6jOp;gl&;rcIkRckbLdbLLE)I(6d2i7QvG
zT)lerzJ2?4?AS45#*A6BX3d{JfA8MCyLazix^!tzPtUx0^VY0c)7RGrG)brO#5Eu#
zUJ~RN3^Wi6V0h;6EDor|&eO#)q~cbRfKY0BQgT{aa*}v6Gn=8Knp~KeSXdrgilZT4
zoSmCnor>Xv1ro~*l*KnmL&t0KhCzfKz;WXph*m#u6{1-oD!M<>nm~Y
literal 0
HcmV?d00001
diff --git a/themes/Obsidian/images/arrows.gif b/themes/Obsidian/images/arrows.gif
new file mode 100644
index 0000000000000000000000000000000000000000..b69bb3598a9414dc2582bfc8fcbd049697c95e8c
GIT binary patch
literal 96
zcmZ?wbhEHb|Nj+#vapIUFf!;c00Bsbfyun5U-Cc|&zwfCTW0!a
zt(LuQ5LKJ{taDkW`=)z`R(y>`ToUd;X0Envr2&y
z0Y(1f1Jm4~6^Y#hQhh?L>t&7taTR$*A3}7KkUZ!dAJO!g^HEOHpf;Wnpe^79$B@69
zf}}ww_)4vPCyO9VL(-sreo;?(t~gF|po?sCupO4T#|1iQ<_IbJxyvFu9IOOMgHEzV
zxIB+ZAw<{C2zeqU32NmF;pRh_=u*sEf}T=YnLCJLgOqGQJ(NS7n}~96Z9q9H8&q?q
z!2)!a%I0h27=UJRfktpG>N$3x_qgsORW|{a
zAp3cc2YFES#*wOfgzKFx=n10O3a()*ke-vKgloVKG=|iCnQYNy1=4cTY~z|mY(S%k
zatl<}V*}E29#Gj5VgY)s=G-E{Rpzt}sKjkVv7rzLW-JfJH*_HJ<2Vb13&>i6pukuR
zD$N8%qHU5%7PQO3c3EbKOQbnU3u!L%kQMh`{Ui-&lmYS_whc0e2e}_T%QtE*h>*Gu
z4|1n+8_x;QR%V7Q|LaLAP~-~j`~wcImWq0bL86$8?}%G`zc8dWWVkRX)TT+713Q~~PH6)?&
zq=tcnt_bNTou(iKY0V6j0LgJ02ogG3a~yk+lH@o#kUeRi;M1&07*qoM6N<$g3P5et^fc4
literal 0
HcmV?d00001
diff --git a/themes/Obsidian/images/bg.gif b/themes/Obsidian/images/bg.gif
new file mode 100644
index 0000000000000000000000000000000000000000..fac668fcf42af844a3af0a239fa638ddbc08443c
GIT binary patch
literal 64
zcmZ?wbhEHb6lLIKXkcJa);0M5|G(l-7DfgJMg|=QAOOiQFp2l{H=O3Yl~fU8)V1~=
QTew|n!uOuePzDBT00piR0RR91
literal 0
HcmV?d00001
diff --git a/themes/Obsidian/images/bg.jpg b/themes/Obsidian/images/bg.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..c67f798610317ed16e29b96f56febbc7b80fdd63
GIT binary patch
literal 62381
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 |