Greasyfork 暗黑主题

为 Greasyfork 打造的时尚现代暗黑主题。

安装此脚本
作者推荐脚本

您可能也喜欢Greasyfork 糊裱匠

安装此脚本
  1. // ==UserScript==
  2. // @name Greasyfork Dark Theme
  3. // @name:en Greasyfork Dark Theme
  4. // @name:vi Giao diện chủ đề tối Greasyfork
  5. // @name:zh-CN Greasyfork 暗黑主题
  6. // @name:zh-TW Greasyfork 暗黑主題
  7. // @name:ja Greasyfork ダークテーマ
  8. // @name:ko Greasyfork 다크 테마
  9. // @name:es Greasyfork 테마 어두움
  10. // @name:ru Темная тема Greasyfork
  11. // @name:id Tema Gelap Greasyfork
  12. // @name:hi Greasyfork डार्क थीम
  13. // @namespace http://tampermonkey.net/
  14. // @version 1.8.2
  15. // @description A sleek and modern dark theme for Greasyfork.
  16. // @description:en A sleek and modern dark theme for Greasyfork.
  17. // @description:vi Giao diện chủ đề tối cho Greasyfork.
  18. // @description:zh-CN 为 Greasyfork 打造的时尚现代暗黑主题。
  19. // @description:zh-TW 為 Greasyfork 打造的時尚現代暗黑主題。
  20. // @description:ja Greasyfork の洗練されたモダンなダークテーマ。
  21. // @description:ko Greasyfork를 위한 세련되고 현대적인 다크 테마。
  22. // @description:es Un tema oscuro elegante y moderno para Greasyfork.
  23. // @description:ru Изящная и современная темная тема для Greasyfork с улучшенными визуальными эффектами и удобочитаемостью.
  24. // @description:id Tema gelap yang ramping dan modern untuk Greasyfork, dengan visual dan keterbacaan yang ditingkatkan.
  25. // @description:hi Greasyfork के लिए एक आकर्षक और आधुनिक डार्क थीम, जिसमें बेहतर विजुअल और पठनीयता है।
  26. // @author RenjiYuusei
  27. // @license GPL-3.0-only
  28. // @icon https://greasyfork.org/vite/assets/blacklogo96-CxYTSM_T.png
  29. // @match https://greasyfork.org/*
  30. // @match https://sleazyfork.org/*
  31. // @grant GM_addStyle
  32. // ==/UserScript==
  33.  
  34. (() => {
  35. 'use strict';
  36.  
  37. // Định nghĩa biến màu và cấu hình
  38. const colors = {
  39. header: 'rgb(32, 33, 36)',
  40. dark: {
  41. 1: 'rgb(32, 33, 36)',
  42. 2: 'rgb(40, 41, 45)',
  43. 3: 'rgb(48, 49, 54)',
  44. 4: 'rgb(55, 56, 62)',
  45. 5: 'rgb(62, 63, 69)',
  46. },
  47. blue: {
  48. 1: 'rgb(138, 180, 248)',
  49. 2: 'rgb(138, 180, 248)',
  50. 3: 'rgb(120, 160, 255)',
  51. pool: 'rgb(138, 180, 248)',
  52. },
  53. accent: {
  54. lavender: 'rgb(204, 120, 250)',
  55. green: 'rgb(106, 135, 89)',
  56. pink: 'rgb(198, 120, 221)',
  57. lightBrown: 'rgb(190, 144, 99)',
  58. red: 'rgb(204, 120, 50)',
  59. yellow: 'rgb(255, 198, 109)',
  60. lightYellow: 'rgb(255, 198, 109)',
  61. blueIce: 'rgb(169, 183, 198)',
  62. orange: 'rgb(204, 120, 50)',
  63. purple: 'rgb(155, 89, 182)',
  64. teal: 'rgb(100, 180, 160)',
  65. coral: 'rgb(255, 127, 80)',
  66. },
  67. text: {
  68. light: 'rgb(169, 183, 198)',
  69. success: 'rgba(106, 135, 89, 0.6)',
  70. error: 'rgba(204, 120, 50, 0.6)',
  71. warning: 'rgba(255, 198, 109, 0.6)',
  72. info: 'rgba(138, 180, 248, 0.6)',
  73. },
  74. utils: {
  75. translucent: 'rgba(255, 255, 255, .2)',
  76. black: 'rgba(0, 0, 0, 1)',
  77. overlay: 'rgba(0, 0, 0, 0.5)',
  78. shadow: 'rgba(0, 0, 0, 0.15)',
  79. },
  80. gradient: {
  81. primary: 'linear-gradient(45deg, var(--blue-1), var(--lavender))',
  82. secondary: 'linear-gradient(45deg, var(--green), var(--blue-ice))',
  83. },
  84. };
  85.  
  86. // Cấu hình giao diện
  87. const config = {
  88. borderRadius: '8px',
  89. wrapCode: true,
  90. modHeaders: true,
  91. invertBkgHPP: false,
  92. modScrollbars: true,
  93. animations: true,
  94. glassmorphism: true,
  95. customFonts: true,
  96. darkMode: {
  97. auto: true,
  98. level: 'dark',
  99. },
  100. performance: {
  101. reducedMotion: false,
  102. optimizeRendering: true,
  103. },
  104. };
  105.  
  106. // Tạo biến CSS root với các biến mới
  107. const createRootVars = () => {
  108. const vars = {
  109. '--dark-1': colors.dark[1],
  110. '--dark-2': colors.dark[2],
  111. '--dark-3': colors.dark[3],
  112. '--dark-4': colors.dark[4],
  113. '--dark-5': colors.dark[5],
  114. '--blue-1': colors.blue[1],
  115. '--blue-2': colors.blue[2],
  116. '--blue-3': colors.blue[3],
  117. '--blue-pool': colors.blue.pool,
  118. '--lavender': colors.accent.lavender,
  119. '--green': colors.accent.green,
  120. '--pink': colors.accent.pink,
  121. '--light-brown': colors.accent.lightBrown,
  122. '--red': colors.accent.red,
  123. '--yellow': colors.accent.yellow,
  124. '--light-yellow': colors.accent.lightYellow,
  125. '--blue-ice': colors.accent.blueIce,
  126. '--orange': colors.accent.orange,
  127. '--purple': colors.accent.purple,
  128. '--teal': colors.accent.teal,
  129. '--coral': colors.accent.coral,
  130. '--light-gray': colors.text.light,
  131. '--light-green': colors.text.success,
  132. '--light-red': colors.text.error,
  133. '--light-warning': colors.text.warning,
  134. '--light-info': colors.text.info,
  135. '--translucent': colors.utils.translucent,
  136. '--black': colors.utils.black,
  137. '--overlay': colors.utils.overlay,
  138. '--shadow': colors.utils.shadow,
  139. '--gradient-primary': colors.gradient.primary,
  140. '--gradient-secondary': colors.gradient.secondary,
  141. '--default-border-radius': config.borderRadius,
  142. '--transition-speed': config.performance.reducedMotion ? '0s' : '0.3s',
  143. '--font-primary': '"Segoe UI", system-ui, -apple-system, sans-serif',
  144. '--font-code': '"Fira Code", monospace',
  145. };
  146.  
  147. return Object.entries(vars)
  148. .map(([key, value]) => `${key}: ${value} !important;`)
  149. .join('\n');
  150. };
  151.  
  152. // Tạo CSS styles với các cải tiến mới
  153. const css = `
  154. :root {
  155. ${createRootVars()}
  156. }
  157.  
  158. /* Base styles */
  159. body {
  160. background-color: var(--dark-3) !important;
  161. color: var(--light-gray) !important;
  162. font-size: 14px !important;
  163. line-height: 1.5 !important;
  164. font-family: var(--font-primary) !important;
  165. transition: background-color var(--transition-speed) ease !important;
  166. will-change: transform !important;
  167. backface-visibility: hidden !important;
  168. -webkit-font-smoothing: antialiased !important;
  169. }
  170.  
  171. /* Header styles với glassmorphism */
  172. #main-header {
  173. ${config.modHeaders ? 'background-image: none !important;' : ''}
  174. background-color: ${config.glassmorphism ? 'rgba(32, 33, 36, 0.8)' : colors.header} !important;
  175. backdrop-filter: ${config.glassmorphism ? 'blur(10px)' : 'none'} !important;
  176. padding: 10px 0 !important;
  177. position: sticky !important;
  178. top: 0 !important;
  179. z-index: 1000 !important;
  180. box-shadow: 0 1px 3px var(--shadow) !important;
  181. }
  182.  
  183. #main-header .width-constraint {
  184. display: flex !important;
  185. align-items: center !important;
  186. justify-content: space-between !important;
  187. flex-wrap: wrap !important;
  188. max-width: 1200px !important;
  189. margin: 0 auto !important;
  190. padding: 0 20px !important;
  191. }
  192.  
  193. #main-header,
  194. #main-header a,
  195. #main-header a:visited,
  196. #main-header a:active {
  197. color: var(--light-gray) !important;
  198. text-decoration: none !important;
  199. }
  200.  
  201. /* Navigation styles với animation */
  202. nav {
  203. background-color: var(--dark-3) !important;
  204. border: 1px solid var(--dark-2) !important;
  205. box-shadow: 0 1px 2px var(--shadow) !important;
  206. border-radius: var(--default-border-radius) !important;
  207. margin: 8px 0 !important;
  208. transition: all var(--transition-speed) ease !important;
  209. will-change: transform !important;
  210. }
  211.  
  212. nav ul {
  213. display: flex !important;
  214. flex-wrap: wrap !important;
  215. gap: 15px !important;
  216. padding: 10px !important;
  217. margin: 0 !important;
  218. list-style: none !important;
  219. }
  220.  
  221. nav li {
  222. margin: 0 !important;
  223. }
  224.  
  225. nav a {
  226. padding: 8px 15px !important;
  227. border-radius: var(--default-border-radius) !important;
  228. transition: all var(--transition-speed) ease !important;
  229. position: relative !important;
  230. overflow: hidden !important;
  231. will-change: transform !important;
  232. }
  233.  
  234. nav a:hover {
  235. background-color: var(--dark-4) !important;
  236. transform: translateY(-2px) !important;
  237. }
  238.  
  239. nav a::after {
  240. content: '' !important;
  241. position: absolute !important;
  242. bottom: 0 !important;
  243. left: 0 !important;
  244. width: 100% !important;
  245. height: 2px !important;
  246. background: var(--gradient-primary) !important;
  247. transform: scaleX(0) !important;
  248. transition: transform var(--transition-speed) ease !important;
  249. will-change: transform !important;
  250. }
  251.  
  252. nav a:hover::after {
  253. transform: scaleX(1) !important;
  254. }
  255.  
  256. /* Link styles với hiệu ứng */
  257. a:not(.install-link, .install-help-link) {
  258. color: var(--blue-1) !important;
  259. text-decoration: none !important;
  260. transition: all var(--transition-speed) ease !important;
  261. position: relative !important;
  262. will-change: transform !important;
  263. }
  264.  
  265. a:not(.install-link, .install-help-link):hover {
  266. color: var(--blue-ice) !important;
  267. text-decoration: none !important;
  268. }
  269.  
  270. a:not(.install-link, .install-help-link)::after {
  271. content: '' !important;
  272. position: absolute !important;
  273. width: 100% !important;
  274. height: 1px !important;
  275. bottom: -2px !important;
  276. left: 0 !important;
  277. background-color: var(--blue-ice) !important;
  278. transform: scaleX(0) !important;
  279. transform-origin: right !important;
  280. transition: transform var(--transition-speed) ease !important;
  281. will-change: transform !important;
  282. }
  283.  
  284. a:not(.install-link, .install-help-link):hover::after {
  285. transform: scaleX(1) !important;
  286. transform-origin: left !important;
  287. }
  288.  
  289. /* Content containers với glassmorphism */
  290. .script-list,
  291. .user-list,
  292. .text-content,
  293. .discussion-list,
  294. .list-option-group ul,
  295. #script-info,
  296. .discussion-read,
  297. #discussion-locale,
  298. #about-user,
  299. .form-section,
  300. .script-screenshot-control {
  301. ${config.modHeaders ? 'background-image: unset !important;' : ''}
  302. background-color: ${config.glassmorphism ? 'rgba(32, 33, 36, 0.8)' : 'var(--dark-1)'} !important;
  303. backdrop-filter: ${config.glassmorphism ? 'blur(10px)' : 'none'} !important;
  304. box-shadow: 0 1px 3px var(--shadow) !important;
  305. border: 1px solid var(--dark-2) !important;
  306. border-radius: var(--default-border-radius) !important;
  307. padding: 15px !important;
  308. margin-bottom: 15px !important;
  309. transition: all var(--transition-speed) ease !important;
  310. will-change: transform !important;
  311. }
  312.  
  313. /* Hover effects với animation */
  314. .discussion-list li,
  315. .script-list li,
  316. .user-list li {
  317. padding: 15px !important;
  318. border-radius: var(--default-border-radius) !important;
  319. transition: all var(--transition-speed) ease !important;
  320. position: relative !important;
  321. z-index: 1 !important;
  322. will-change: transform !important;
  323. transform: translateZ(0) !important;
  324. }
  325.  
  326. .discussion-list li:hover,
  327. .script-list li:hover,
  328. .user-list li:hover {
  329. background-color: var(--dark-2) !important;
  330. transform: translateY(-2px) translateZ(0) !important;
  331. box-shadow: 0 5px 15px var(--shadow) !important;
  332. }
  333.  
  334. /* Form elements với hiệu ứng */
  335. .default-input,
  336. input[type="search"],
  337. input[type="text"],
  338. input[type="email"],
  339. input[type="password"],
  340. select,
  341. textarea {
  342. background-color: var(--dark-4) !important;
  343. border: 2px solid var(--dark-2) !important;
  344. color: var(--blue-ice) !important;
  345. border-radius: var(--default-border-radius) !important;
  346. padding: 8px 12px !important;
  347. margin: 8px 0 !important;
  348. width: 100% !important;
  349. max-width: 100% !important;
  350. transition: all var(--transition-speed) ease !important;
  351. font-size: 14px !important;
  352. font-family: var(--font-primary) !important;
  353. will-change: transform !important;
  354. }
  355.  
  356. input:focus,
  357. select:focus,
  358. textarea:focus {
  359. outline: none !important;
  360. border-color: var(--blue-pool) !important;
  361. box-shadow: 0 0 0 2px rgba(104, 151, 187, 0.2) !important;
  362. transform: translateY(-1px) !important;
  363. }
  364.  
  365. /* Buttons với gradient và animation */
  366. .install-link,
  367. .install-help-link,
  368. input[type="submit"],
  369. .button {
  370. background: var(--gradient-primary) !important;
  371. color: var(--dark-1) !important;
  372. border: none !important;
  373. border-radius: var(--default-border-radius) !important;
  374. padding: 8px 16px !important;
  375. font-size: 14px !important;
  376. font-weight: 600 !important;
  377. cursor: pointer !important;
  378. transition: all var(--transition-speed) ease !important;
  379. text-align: center !important;
  380. display: inline-block !important;
  381. text-decoration: none !important;
  382. margin: 5px !important;
  383. box-shadow: 0 1px 2px var(--shadow) !important;
  384. position: relative !important;
  385. overflow: hidden !important;
  386. will-change: transform !important;
  387. }
  388.  
  389. .install-link:hover,
  390. .install-help-link:hover,
  391. input[type="submit"]:hover,
  392. .button:hover {
  393. transform: translateY(-2px) !important;
  394. box-shadow: 0 5px 15px var(--shadow) !important;
  395. }
  396.  
  397. .install-link::before,
  398. .install-help-link::before,
  399. input[type="submit"]::before,
  400. .button::before {
  401. content: '' !important;
  402. position: absolute !important;
  403. top: 0 !important;
  404. left: -100% !important;
  405. width: 100% !important;
  406. height: 100% !important;
  407. background: linear-gradient(
  408. 120deg,
  409. transparent,
  410. rgba(255, 255, 255, 0.2),
  411. transparent
  412. ) !important;
  413. transition: all 0.6s ease !important;
  414. will-change: transform !important;
  415. }
  416.  
  417. .install-link:hover::before,
  418. .install-help-link:hover::before,
  419. input[type="submit"]:hover::before,
  420. .button:hover::before {
  421. left: 100% !important;
  422. }
  423.  
  424. /* Responsive design */
  425. @media (max-width: 1024px) {
  426. body {
  427. font-size: 15px !important;
  428. }
  429.  
  430. .width-constraint {
  431. padding: 0 15px !important;
  432. }
  433. #main-header .width-constraint {
  434. flex-direction: column !important;
  435. align-items: flex-start !important;
  436. }
  437. nav {
  438. display: block !important;
  439. width: 100% !important;
  440. }
  441. .menu-toggle {
  442. display: block !important;
  443. padding: 10px !important;
  444. background: none !important;
  445. border: none !important;
  446. color: var(--light-gray) !important;
  447. cursor: pointer !important;
  448. }
  449. nav ul {
  450. display: none !important;
  451. }
  452. nav.active ul {
  453. display: flex !important;
  454. flex-direction: column !important;
  455. width: 100% !important;
  456. }
  457. nav li {
  458. width: 100% !important;
  459. }
  460. nav a {
  461. display: block !important;
  462. text-align: left !important;
  463. padding: 12px 15px !important;
  464. }
  465.  
  466. /* Mobile Menu Toggle Button */
  467. .menu-toggle {
  468. position: absolute !important;
  469. right: 15px !important;
  470. top: 15px !important;
  471. z-index: 1001 !important;
  472. width: 30px !important;
  473. height: 30px !important;
  474. background: transparent !important;
  475. border: none !important;
  476. cursor: pointer !important;
  477. padding: 0 !important;
  478. }
  479.  
  480. .menu-toggle span {
  481. display: block !important;
  482. width: 100% !important;
  483. height: 2px !important;
  484. background: var(--light-gray) !important;
  485. margin: 6px 0 !important;
  486. transition: all 0.3s ease !important;
  487. }
  488.  
  489. .menu-toggle.active span:nth-child(1) {
  490. transform: rotate(45deg) translate(6px, 6px) !important;
  491. }
  492.  
  493. .menu-toggle.active span:nth-child(2) {
  494. opacity: 0 !important;
  495. }
  496.  
  497. .menu-toggle.active span:nth-child(3) {
  498. transform: rotate(-45deg) translate(6px, -6px) !important;
  499. }
  500.  
  501. /* Mobile Navigation */
  502. nav {
  503. position: fixed !important;
  504. top: 60px !important;
  505. left: 0 !important;
  506. width: 100% !important;
  507. height: auto !important;
  508. background: var(--dark-2) !important;
  509. transform: translateX(-100%) !important;
  510. transition: transform 0.3s ease !important;
  511. z-index: 1000 !important;
  512. }
  513.  
  514. nav.active {
  515. transform: translateX(0) !important;
  516. }
  517.  
  518. nav ul {
  519. padding: 20px !important;
  520. }
  521.  
  522. nav li {
  523. margin: 10px 0 !important;
  524. }
  525.  
  526. nav a {
  527. font-size: 16px !important;
  528. padding: 12px 20px !important;
  529. display: block !important;
  530. color: var(--light-gray) !important;
  531. border-radius: var(--default-border-radius) !important;
  532. }
  533. }
  534.  
  535. @media (max-width: 600px) {
  536. body {
  537. font-size: 14px !important;
  538. }
  539.  
  540. #main-header .width-constraint {
  541. padding: 0 10px !important;
  542. }
  543.  
  544. .script-list,
  545. .user-list,
  546. .text-content {
  547. padding: 10px !important;
  548. margin-bottom: 10px !important;
  549. }
  550.  
  551. .install-link,
  552. .install-help-link,
  553. input[type="submit"],
  554. .button {
  555. width: 100% !important;
  556. margin: 5px 0 !important;
  557. padding: 12px 16px !important;
  558. }
  559. .discussion-list li,
  560. .script-list li,
  561. .user-list li {
  562. padding: 10px !important;
  563. }
  564. .form-section {
  565. padding: 10px !important;
  566. }
  567. input[type="search"],
  568. input[type="text"],
  569. input[type="email"],
  570. input[type="password"],
  571. select,
  572. textarea {
  573. padding: 10px !important;
  574. }
  575. }
  576.  
  577. @media (max-width: 480px) {
  578. body {
  579. font-size: 13px !important;
  580. }
  581.  
  582. .script-list,
  583. .user-list,
  584. .text-content {
  585. padding: 8px !important;
  586. }
  587.  
  588. input,
  589. select,
  590. textarea {
  591. font-size: 16px !important;
  592. }
  593. #main-header {
  594. padding: 5px 0 !important;
  595. }
  596. .width-constraint {
  597. padding: 0 8px !important;
  598. }
  599. .discussion-list li,
  600. .script-list li,
  601. .user-list li {
  602. margin-bottom: 8px !important;
  603. }
  604. .install-link,
  605. .install-help-link,
  606. input[type="submit"],
  607. .button {
  608. font-size: 14px !important;
  609. padding: 10px 14px !important;
  610. }
  611. }
  612.  
  613. /* Scrollbar styles với animation */
  614. ${
  615. config.modScrollbars
  616. ? `
  617. * {
  618. scrollbar-width: thin !important;
  619. scrollbar-color: var(--translucent) var(--dark-2) !important;
  620. }
  621.  
  622. ::-webkit-scrollbar {
  623. width: 8px !important;
  624. height: 8px !important;
  625. }
  626.  
  627. ::-webkit-scrollbar-track {
  628. background: var(--dark-2) !important;
  629. border-radius: var(--default-border-radius) !important;
  630. }
  631.  
  632. ::-webkit-scrollbar-thumb {
  633. background: var(--translucent) !important;
  634. border-radius: var(--default-border-radius) !important;
  635. border: 2px solid var(--dark-2) !important;
  636. transition: all var(--transition-speed) ease !important;
  637. will-change: transform !important;
  638. }
  639.  
  640. ::-webkit-scrollbar-thumb:hover {
  641. background: var(--gradient-primary) !important;
  642. }
  643. `
  644. : ''
  645. }
  646.  
  647. /* Code blocks với font và hiệu ứng mới */
  648. pre, code {
  649. font-family: var(--font-code) !important;
  650. background-color: var(--dark-4) !important;
  651. border-radius: var(--default-border-radius) !important;
  652. padding: 0.2em 0.4em !important;
  653. transition: all var(--transition-speed) ease !important;
  654. will-change: transform !important;
  655. max-width: 100% !important;
  656. overflow-x: auto !important;
  657. }
  658.  
  659. pre:hover, code:hover {
  660. background-color: var(--dark-5) !important;
  661. }
  662.  
  663. /* Tooltip styles mới */
  664. [data-tooltip] {
  665. position: relative !important;
  666. }
  667.  
  668. [data-tooltip]:before {
  669. content: attr(data-tooltip) !important;
  670. position: absolute !important;
  671. bottom: 100% !important;
  672. left: 50% !important;
  673. transform: translateX(-50%) !important;
  674. padding: 5px 10px !important;
  675. background: var(--dark-4) !important;
  676. color: var(--light-gray) !important;
  677. border-radius: var(--default-border-radius) !important;
  678. font-size: 12px !important;
  679. white-space: nowrap !important;
  680. opacity: 0 !important;
  681. visibility: hidden !important;
  682. transition: all var(--transition-speed) ease !important;
  683. will-change: transform, opacity !important;
  684. }
  685.  
  686. [data-tooltip]:hover:before {
  687. opacity: 1 !important;
  688. visibility: visible !important;
  689. transform: translateX(-50%) translateY(-5px) !important;
  690. }
  691.  
  692. /* Login Form Styles */
  693. .centered-sections {
  694. display: flex !important;
  695. flex-direction: column !important;
  696. gap: 20px !important;
  697. max-width: 600px !important;
  698. margin: 0 auto !important;
  699. padding: 0 10px !important;
  700. }
  701.  
  702. .external-login-form {
  703. display: flex !important;
  704. flex-direction: column !important;
  705. gap: 15px !important;
  706. }
  707.  
  708. .external-login-container {
  709. display: block !important;
  710. margin: 5px 0 !important;
  711. }
  712.  
  713. .external-login {
  714. width: 100% !important;
  715. padding: 12px !important;
  716. border-radius: var(--default-border-radius) !important;
  717. border: none !important;
  718. color: var(--light-gray) !important;
  719. font-weight: 600 !important;
  720. cursor: pointer !important;
  721. transition: all var(--transition-speed) ease !important;
  722. will-change: transform !important;
  723. font-size: 14px !important;
  724. }
  725.  
  726. .google_oauth2-login {
  727. background-color: #4285f4 !important;
  728. }
  729.  
  730. .gitlab-login {
  731. background-color: #fc6d26 !important;
  732. }
  733.  
  734. .github-login {
  735. background-color: #333 !important;
  736. }
  737.  
  738. .external-login:hover {
  739. transform: translateY(-2px) !important;
  740. box-shadow: 0 5px 15px var(--shadow) !important;
  741. }
  742.  
  743. .remember-me {
  744. display: flex !important;
  745. align-items: center !important;
  746. gap: 8px !important;
  747. margin: 10px 0 !important;
  748. }
  749.  
  750. .remember-me input[type="checkbox"] {
  751. width: auto !important;
  752. margin: 0 !important;
  753. height: 20px !important;
  754. width: 20px !important;
  755. }
  756.  
  757. .field {
  758. margin-bottom: 15px !important;
  759. }
  760.  
  761. .field label {
  762. display: block !important;
  763. margin-bottom: 5px !important;
  764. color: var(--light-gray) !important;
  765. font-size: 14px !important;
  766. }
  767.  
  768. .actions {
  769. margin-top: 20px !important;
  770. }
  771.  
  772. .width-constraint {
  773. max-width: 1200px !important;
  774. margin: 0 auto !important;
  775. padding: 20px !important;
  776. }
  777.  
  778. .text-content {
  779. background-color: var(--dark-2) !important;
  780. padding: 15px !important;
  781. border-radius: var(--default-border-radius) !important;
  782. margin-bottom: 15px !important;
  783. }
  784.  
  785. .text-content p {
  786. margin-bottom: 15px !important;
  787. line-height: 1.6 !important;
  788. font-size: 14px !important;
  789. }
  790. `;
  791.  
  792. // Áp dụng CSS
  793. GM_addStyle(css);
  794.  
  795. // Add mobile menu toggle functionality
  796. const addMobileMenuToggle = () => {
  797. const header = document.querySelector('#main-header');
  798. if (!header) return;
  799.  
  800. // Create menu toggle button if it doesn't exist
  801. if (!document.querySelector('.menu-toggle')) {
  802. const menuToggle = document.createElement('button');
  803. menuToggle.className = 'menu-toggle';
  804. menuToggle.innerHTML = '<span></span><span></span><span></span>';
  805. header.appendChild(menuToggle);
  806.  
  807. // Add click event listener
  808. menuToggle.addEventListener('click', () => {
  809. menuToggle.classList.toggle('active');
  810. const nav = document.querySelector('nav');
  811. if (nav) {
  812. nav.classList.toggle('active');
  813. }
  814. });
  815. }
  816. };
  817.  
  818. // Run when DOM is loaded
  819. if (document.readyState === 'loading') {
  820. document.addEventListener('DOMContentLoaded', addMobileMenuToggle);
  821. } else {
  822. addMobileMenuToggle();
  823. }
  824. })();