TorrentBD GitHub Dark Theme

Pure GitHub dark theme for TorrentBD

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

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

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         TorrentBD GitHub Dark Theme
// @namespace    https://github.com/blackwall-erebus
// @version      0.1.7
// @description  Pure GitHub dark theme for TorrentBD
// @author       AnaDeArmas
// @credit 	     BENZiN & MoNu69
// @match       https://www.torrentbd.com/*
// @match       https://www.torrentbd.me/*
// @match       https://www.torrentbd.net/*
// @match       https://www.torrentbd.org/*
// @run-at      document-start
// @grant       GM_addStyle
// @license     MIT
// ==/UserScript==

(function() {
	'use strict';

	const css = `
	:root:root .dark-scheme {
		--body-bg: #010409;
		--main-bg: #0d1117;
		--nav-bg: #161b22;
		--text-color: #c9d1d9;
		--text-color-offset: #ffffff;
		--modal-color: #c1cdd2;
		--nav-alt-bg: #1f6feb;
		--border-color: #30363d;
		--link-color: #58a6ff;
		--link-hover-color: #1f6feb;
		--link-sp1-color: #8b949e;
		--link-sp1-hover-color: #58a6ff;
		--link-sp2-color: #1f6feb;
		--link-sp3-color: #388bfd;
		--btn-1-color: #238636;
		--btn-2-color: #2ea043;
		--progress-bar-bg: #0d1117;
		--success-color: #238636;
		--danger-color: #da3633;
		--warning-color: #d29922;
	}

	body.dark-scheme::-webkit-scrollbar,
	body.dark-scheme ::-webkit-scrollbar {
		width: 10px !important;
		height: 10px !important;
	}

	body.dark-scheme::-webkit-scrollbar-track,
	body.dark-scheme ::-webkit-scrollbar-track {
		background-color: var(--body-bg) !important;
	}

	body.dark-scheme::-webkit-scrollbar-thumb,
	body.dark-scheme ::-webkit-scrollbar-thumb {
		background-color: #484f58 !important;
		border-radius: 6px !important;
		border: 2px solid var(--body-bg) !important;
	}

	body.dark-scheme::-webkit-scrollbar-thumb:hover,
	body.dark-scheme ::-webkit-scrollbar-thumb:hover {
		background-color: #6e7681 !important;
	}

	body.dark-scheme {
		background: var(--body-bg) !important;
		color: var(--text-color) !important;
	}

	body.dark-scheme .card-panel {
		margin-top: 0 !important;
		background-color: var(--main-bg) !important;
		border: 1px solid var(--border-color) !important;
	}

	/* Torrent names in white */
	body.dark-scheme .torrent-name a {
		color: var(--text-color-offset) !important;
	}

	body.dark-scheme .torrent-name a:hover {
		color: var(--link-color) !important;
	}

	/* Transparent buttons with green borders */
	body.dark-scheme .btn,
	body.dark-scheme .btn-large {
		background-color: transparent !important;
		color: var(--btn-1-color) !important;
		border: 1px solid var(--btn-1-color) !important;
	}

	body.dark-scheme .btn:hover,
	body.dark-scheme .btn-large:not(#kuddus-trigger):hover {
		background-color: rgba(35, 134, 54, 0.1) !important;
		border-color: var(--btn-2-color) !important;
		color: var(--btn-2-color) !important;
	}

	body.dark-scheme .btn i,
	body.dark-scheme .btn-large i {
		color: var(--btn-1-color) !important;
	}

	body.dark-scheme .btn:hover i,
	body.dark-scheme .btn-large:hover i {
		color: var(--btn-2-color) !important;
	}

	body.dark-scheme .blue.darken-2,
	body.dark-scheme .blue.darken-3,
	body.dark-scheme .cyan.darken-2,
	body.dark-scheme .green.darken-1,
	body.dark-scheme .green.darken-2,
	body.dark-scheme .light-blue.darken-3,
	body.dark-scheme .teal,
	body.dark-scheme .teal.darken-1,
	body.dark-scheme .teal.darken-3 {
		background-color: transparent !important;
		color: var(--btn-1-color) !important;
		border: 1px solid var(--btn-1-color) !important;
	}

	body.dark-scheme .blue.darken-2:hover,
	body.dark-scheme .cyan.darken-2:hover,
	body.dark-scheme .teal.darken-1:hover,
	body.dark-scheme .light-blue.darken-3:hover {
		background-color: rgba(35, 134, 54, 0.1) !important;
		border-color: var(--btn-2-color) !important;
		color: var(--btn-2-color) !important;
	}

	body.dark-scheme .red.lighten-2,
	body.dark-scheme .red.lighten-3 {
		background-color: transparent !important;
		color: var(--danger-color) !important;
		border: 1px solid var(--danger-color) !important;
	}

	body.dark-scheme .red.lighten-2:hover,
	body.dark-scheme .red.lighten-3:hover {
		background-color: rgba(218, 54, 51, 0.1) !important;
		border-color: #b62324 !important;
		color: #b62324 !important;
	}

	body.dark-scheme .teal.lighten-2 {
		background-color: transparent !important;
		color: var(--link-sp2-color) !important;
		border: 1px solid var(--link-sp2-color) !important;
	}

	body.dark-scheme .teal.lighten-2:hover {
		background-color: rgba(31, 111, 235, 0.1) !important;
		border-color: var(--link-hover-color) !important;
		color: var(--link-hover-color) !important;
	}

	body.dark-scheme .orange.lighten-2 {
		background-color: transparent !important;
		color: var(--warning-color) !important;
		border: 1px solid var(--warning-color) !important;
	}

	body.dark-scheme .orange.lighten-2:hover {
		background-color: rgba(210, 153, 34, 0.1) !important;
		border-color: #bb8009 !important;
		color: #bb8009 !important;
	}

	/* NAT status indicator - filled green */
	body.dark-scheme .indicator-dot.green.darken-1 {
		background-color: var(--btn-1-color) !important;
		border-color: var(--btn-1-color) !important;
	}

	/* NAT closed/strict status - filled red */
	body.dark-scheme .indicator-dot.blue-grey.darken-2 {
		background-color: var(--danger-color) !important;
		border-color: var(--danger-color) !important;
	}

	/* Language filter pills and dropdowns */
	body.dark-scheme .tradiopill label {
		background-color: var(--nav-bg) !important;
		color: var(--text-color) !important;
		border: 1px solid var(--border-color) !important;
	}

	body.dark-scheme .tradiopill input:checked + label {
		background-color: var(--link-sp2-color) !important;
		color: var(--text-color-offset) !important;
		border-color: var(--link-sp2-color) !important;
	}

	body.dark-scheme .tradiopill-select,
	body.dark-scheme .select-override {
		background-color: var(--nav-bg) !important;
		color: var(--text-color) !important;
		border: 1px solid var(--border-color) !important;
	}

	body.dark-scheme .tradiopill-select option,
	body.dark-scheme .select-override option {
		background-color: var(--nav-bg) !important;
		color: var(--text-color) !important;
	}

	/* Pagination Jump to styling - match button to input */
	body.dark-scheme .pagireborn-num {
		background-color: var(--nav-bg) !important;
		color: var(--text-color) !important;
		border: 1px solid var(--border-color) !important;
	}

	body.dark-scheme .pagireborn-btn {
		background-color: var(--nav-bg) !important;
		color: var(--text-color) !important;
		border: 1px solid var(--border-color) !important;
	}

	body.dark-scheme .pagireborn-btn:hover {
		background-color: rgba(31, 111, 235, 0.1) !important;
		border-color: var(--link-sp2-color) !important;
		color: var(--link-color) !important;
	}

	body.dark-scheme a {
		color: var(--link-color) !important;
	}

	body.dark-scheme a:hover {
		color: var(--link-hover-color) !important;
		text-decoration: underline !important;
	}

	body.dark-scheme .cnav-menu-item span {
		color: var(--link-color) !important;
		cursor: pointer;
	}

	body.dark-scheme .cnav-menu-item:hover span {
		color: var(--link-hover-color) !important;
	}

	body.dark-scheme .main-header,
	body.dark-scheme .sub-header,
	body.dark-scheme .fixed-pos {
		background: var(--nav-bg) !important;
		border-bottom: 1px solid var(--border-color) !important;
	}

	body.dark-scheme .main-header--icon,
	body.dark-scheme .sub-header--title {
		color: var(--text-color) !important;
	}

	body.dark-scheme .blue-grey.darken-2 {
		background-color: var(--main-bg) !important;
	}

	body.dark-scheme input[type="text"],
	body.dark-scheme input[type="password"],
	body.dark-scheme input[type="email"],
	body.dark-scheme input[type="url"],
	body.dark-scheme input[type="time"],
	body.dark-scheme input[type="date"],
	body.dark-scheme input[type="datetime-local"],
	body.dark-scheme input[type="tel"],
	body.dark-scheme input[type="number"],
	body.dark-scheme textarea.materialize-textarea,
	body.dark-scheme select,
	body.dark-scheme .form-control {
		background-color: var(--main-bg) !important;
		border: 1px solid var(--border-color) !important;
		color: var(--text-color) !important;
	}

	/* Transparent search input with backdrop blur */
	body.dark-scheme input[type="search"],
	body.dark-scheme #kuddus-trigger {
		background-color: rgba(13, 17, 23, 0.4) !important;
		border: 1px solid rgba(13, 17, 23, 0.4) !important;
		color: var(--text-color) !important;
		backdrop-filter: blur(8px) !important;
		-webkit-backdrop-filter: blur(8px) !important;
	}

	body.dark-scheme input[type="search"]:focus,
	body.dark-scheme #kuddus-trigger:focus {
		background-color: rgba(13, 17, 23, 0.6) !important;
		border-color: var(--link-sp2-color) !important;
		box-shadow: 0 0 0 3px rgba(13, 17, 23, 0.4) !important;
	}

	/* Search container/wrapper transparency */
	body.dark-scheme .search-wrapper,
	body.dark-scheme .search-container,
	body.dark-scheme #kuddus-wrapper {
		background-color: rgba(13, 17, 23, 0.4) !important;
		backdrop-filter: blur(10px) !important;
		-webkit-backdrop-filter: blur(10px) !important;
	}

	/* Kuddus search results container */
	body.dark-scheme #kuddus-results-container {
		background-color: rgba(13, 17, 23, 0.4) !important;
		backdrop-filter: blur(0px) !important;
		-webkit-backdrop-filter: blur(0px) !important;
	}

	body.dark-scheme input[type="text"]:focus,
	body.dark-scheme input[type="password"]:focus,
	body.dark-scheme input[type="email"]:focus,
	body.dark-scheme input[type="url"]:focus,
	body.dark-scheme input[type="time"]:focus,
	body.dark-scheme input[type="date"]:focus,
	body.dark-scheme input[type="datetime-local"]:focus,
	body.dark-scheme input[type="tel"]:focus,
	body.dark-scheme input[type="number"]:focus,
	body.dark-scheme textarea.materialize-textarea:focus,
	body.dark-scheme select:focus,
	body.dark-scheme .form-control:focus {
		border-color: var(--link-sp2-color) !important;
		box-shadow: 0 0 0 3px rgba(31, 111, 235, 0.3) !important;
	}

	body.dark-scheme input[type="text"]:focus:not([readonly]) + label,
	body.dark-scheme input[type="password"]:focus:not([readonly]) + label,
	body.dark-scheme input[type="email"]:focus:not([readonly]) + label,
	body.dark-scheme textarea.materialize-textarea:focus:not([readonly]) + label {
		color: var(--link-sp2-color) !important;
	}

	body.dark-scheme [type="checkbox"].filled-in:checked + label::after {
		border: 2px solid var(--btn-1-color) !important;
		background-color: var(--btn-1-color) !important;
	}

	body.dark-scheme [type="checkbox"]:checked + label::before {
		border-right: 2px solid var(--btn-1-color) !important;
		border-bottom: 2px solid var(--btn-1-color) !important;
	}

	body.dark-scheme [type="radio"].with-gap:checked + label::before,
	body.dark-scheme [type="radio"].with-gap:checked + label::after,
	body.dark-scheme [type="radio"]:checked + label::after {
		border: 2px solid var(--link-sp2-color) !important;
		background-color: var(--link-sp2-color) !important;
	}

	body.dark-scheme .pagination li.active,
	body.dark-scheme .paginator.active {
		background: var(--link-sp2-color) !important;
		color: var(--text-color-offset) !important;
	}

	body.dark-scheme .dropdown-content {
		background-color: var(--main-bg) !important;
		border: 1px solid var(--border-color) !important;
	}

	body.dark-scheme .dropdown-content li:hover,
	body.dark-scheme .dropdown-content li.active,
	body.dark-scheme .dropdown-content li.selected {
		background-color: rgba(31, 111, 235, 0.15) !important;
	}

	body.dark-scheme .tabs .tab a {
		color: var(--link-sp1-color) !important;
	}

	body.dark-scheme .tabs .tab a:hover,
	body.dark-scheme .tabs .tab a.active {
		color: var(--text-color) !important;
	}

	body.dark-scheme .tabs .indicator {
		background-color: var(--link-sp2-color) !important;
	}

	body.dark-scheme table.striped > tbody > tr:nth-child(2n+1) {
		background-color: var(--main-bg) !important;
	}

	body.dark-scheme .collection,
	body.dark-scheme .collection .collection-item {
		background-color: var(--main-bg) !important;
		border-color: var(--border-color) !important;
	}

	body.dark-scheme .collection a.collection-item:hover {
		background-color: rgba(31, 111, 235, 0.1) !important;
	}

	body.dark-scheme .progress {
		background-color: rgba(31, 111, 235, 0.2) !important;
	}

	body.dark-scheme .progress .determinate {
		background-color: var(--link-sp2-color) !important;
	}

	body.dark-scheme .picker__box {
		background: var(--main-bg) !important;
		border: 1px solid var(--border-color) !important;
	}

	body.dark-scheme .picker__date-display {
		background-color: var(--link-sp2-color) !important;
	}

	body.dark-scheme .picker__weekday-display {
		background-color: var(--nav-bg) !important;
	}

	body.dark-scheme .picker__day--selected,
	body.dark-scheme .picker__day--selected:hover {
		background: var(--link-sp2-color) !important;
		color: var(--text-color-offset) !important;
	}

	body.dark-scheme .picker__day.picker__day--today {
		color: var(--link-sp2-color) !important;
	}

	body.dark-scheme .modal {
		background-color: var(--main-bg) !important;
		border: 1px solid var(--border-color) !important;
	}

	body.dark-scheme .toast {
		background-color: var(--nav-bg) !important;
		color: var(--text-color) !important;
	}

	body.dark-scheme hr {
		border-color: var(--border-color) !important;
	}

	body.dark-scheme .card,
	body.dark-scheme .card-action {
		background-color: var(--main-bg) !important;
		border-color: var(--border-color) !important;
	}

	body.dark-scheme .switch label input[type="checkbox"]:checked + .lever {
		background-color: rgba(35, 134, 54, 0.5) !important;
	}

	body.dark-scheme .switch label input[type="checkbox"]:checked + .lever::after {
		background-color: var(--btn-1-color) !important;
	}

	body.dark-scheme .sidenav {
		background-color: var(--main-bg) !important;
		border-right: 1px solid var(--border-color) !important;
	}

	body.dark-scheme .sidenav li:hover {
		background-color: rgba(31, 111, 235, 0.1) !important;
	}

	body.dark-scheme .collapsible,
	body.dark-scheme .collapsible-header,
	body.dark-scheme .collapsible-body {
		background-color: var(--main-bg) !important;
		border-color: var(--border-color) !important;
	}

	body.dark-scheme img:is([src*="smilies/hello.gif"],
	                       [src*="smilies/sticker-sq-yes.png"],
	                       [src*="smilies/sticker-sc-laugh.png"]) {
		filter: brightness(0.9) contrast(1.1);
	}

	body.dark-scheme .z-depth-1 {
		box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5) !important;
	}

	body.dark-scheme .z-depth-2 {
		box-shadow: 0 4px 8px rgba(0, 0, 0, 0.5) !important;
	}

	/* Completion count styling */
	body.dark-scheme .orange100,
	body.dark-scheme .inline-item.orange100 {
		color: var(--warning-color) !important;
	}

	/* Torrent table completion column (9th column = completion count) */
	body.dark-scheme table tbody tr td:nth-child(9):not([class*="torrent-name"]):not([class*="tab-sortable"]) {
		color: var(--warning-color) !important;
	}

	/* Also target completion by checking if it's the last numeric cell in torrent rows */
	body.dark-scheme table tbody tr:has(td.torrent-name) td:last-child:not([colspan]):not(.torr-stats-cell) {
		color: var(--warning-color) !important;
	}

	/* Download icon styling */
	body.dark-scheme table tr td a[href*="download.php"] i.material-icons {
		color: var(--btn-1-color) !important;
	}

	body.dark-scheme table tr td a[href*="download.php"]:hover i.material-icons {
		color: var(--btn-2-color) !important;
	}

	/* Forum page title styling */
	body.dark-scheme .frtt,
	body.dark-scheme .forum-page-title {
		background-color: var(--main-bg) !important;
		border: 1px solid var(--border-color) !important;
		border-left: 3px solid var(--link-sp2-color) !important;
		padding: 15px !important;
		margin-bottom: 20px !important;
	}

	body.dark-scheme .frtt h6,
	body.dark-scheme .forum-page-title h6 {
		color: var(--text-color-offset) !important;
		margin: 0 !important;
	}

	/* Shoutbox styling */
	body.dark-scheme #shout-send-container {
		background-color: var(--main-bg) !important;
		border: 1px solid var(--border-color) !important;
		padding: 0 !important;
		margin: 0 !important;
	}

	body.dark-scheme .shoutbox-text {
		background-color: var(--body-bg) !important;
		border: 1px solid var(--border-color) !important;
		color: var(--text-color) !important;
		padding-left: 12px !important;
		padding-right: 12px !important;
	}

	body.dark-scheme .shoutbox-text:focus {
		border-color: var(--link-sp2-color) !important;
		box-shadow: 0 0 0 3px rgba(31, 111, 235, 0.3) !important;
		outline: none !important;
	}

	body.dark-scheme #shout-ibb-container {
		background-color: transparent !important;
		border: none !important;
	}

	body.dark-scheme .inline-submit-btn {
		background-color: transparent !important;
		color: var(--text-color) !important;
		border: none !important;
		transition: transform 0.2s ease !important;
	}

	body.dark-scheme .inline-submit-btn:hover {
		background-color: transparent !important;
		color: var(--text-color) !important;
		transform: translateY(-2px) !important;
	}

	body.dark-scheme .inline-submit-btn i,
	body.dark-scheme .inline-submit-btn svg {
		color: var(--text-color) !important;
		transition: color 0.2s ease !important;
	}

	body.dark-scheme .inline-submit-btn:hover i,
	body.dark-scheme .inline-submit-btn:hover svg {
		color: var(--link-color) !important;
	}

	body.dark-scheme #urlWindow {
		background-color: var(--main-bg) !important;
		border: 1px solid var(--border-color) !important;
	}

	body.dark-scheme .url-inputs {
		background-color: var(--body-bg) !important;
		border: 1px solid var(--border-color) !important;
		color: var(--text-color) !important;
		padding-left: 12px !important;
		padding-right: 12px !important;
	}

	body.dark-scheme .url-inputs:focus {
		border-color: var(--link-sp2-color) !important;
		box-shadow: 0 0 0 3px rgba(31, 111, 235, 0.3) !important;
		outline: none !important;
	}

	@media (max-width: 991px) {
		body.dark-scheme .cnav {
			top: auto;
			bottom: 0;
			box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.3);
		}
	}
	`;

	if (typeof GM_addStyle !== 'undefined') {
		GM_addStyle(css);
	} else {
		const styleNode = document.createElement('style');
		styleNode.textContent = css;
		(document.head || document.documentElement).appendChild(styleNode);
	}
})();