YouTube - Non-Rounded Design

This script disables YouTube's new rounded corners (reverts back to the previous layout before 2022 with extra stuff included.)

当前为 2023-11-22 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name YouTube - Non-Rounded Design
  3. // @version 4.3.0
  4. // @description This script disables YouTube's new rounded corners (reverts back to the previous layout before 2022 with extra stuff included.)
  5. // @author Magma_Craft
  6. // @license MIT
  7. // @match https://www.youtube.com/*
  8. // @namespace https://gf.qytechs.cn/en/users/933798
  9. // @icon https://www.youtube.com/favicon.ico
  10. // @run-at document-start
  11. // @grant none
  12. // ==/UserScript==
  13.  
  14. // Attributes to remove from <html>
  15. const ATTRS = [
  16. "darker-dark-theme",
  17. "darker-dark-theme-deprecate"
  18. ];
  19.  
  20. // Regular config keys.
  21. const CONFIGS = {
  22. BUTTON_REWORK: false
  23. }
  24.  
  25. // Experiment flags.
  26. const EXPFLAGS = {
  27. enable_channel_page_header_profile_section: false,
  28. enable_header_channel_handler_ui: false,
  29. kevlar_unavailable_video_error_ui_client: false,
  30. kevlar_refresh_on_theme_change: false,
  31. kevlar_modern_sd_v2: false,
  32. kevlar_watch_cinematics: false,
  33. kevlar_watch_comments_panel_button: false,
  34. kevlar_watch_grid: false,
  35. kevlar_watch_grid_hide_chips: false,
  36. kevlar_watch_metadata_refresh: false,
  37. kevlar_watch_metadata_refresh_no_old_secondary_data: false,
  38. kevlar_watch_modern_metapanel: false,
  39. kevlar_watch_modern_panels: false,
  40. kevlar_watch_panel_height_matches_player: false,
  41. smartimation_background: false,
  42. web_amsterdam_playlists: false,
  43. web_animated_actions: false,
  44. web_animated_like: false,
  45. web_button_rework: false,
  46. web_button_rework_with_live: false,
  47. web_darker_dark_theme: false,
  48. web_enable_youtab: false,
  49. web_guide_ui_refresh: false,
  50. web_modern_ads: false,
  51. web_modern_buttons: false,
  52. web_modern_chips: false,
  53. web_modern_collections_v2: false,
  54. web_modern_dialogs: false,
  55. web_modern_playlists: false,
  56. web_modern_subscribe: true,
  57. web_modern_tabs: false,
  58. web_modern_typography: false,
  59. web_rounded_containers: false,
  60. web_rounded_thumbnails: false,
  61. web_searchbar_style: "default",
  62. web_segmented_like_dislike_button: false,
  63. web_sheets_ui_refresh: false,
  64. web_snackbar_ui_refresh: false,
  65. web_watch_rounded_player_large: false
  66. }
  67.  
  68. // Player flags
  69. // !!! USE STRINGS FOR VALUES !!!
  70. // For example: "true" instead of true
  71. const PLYRFLAGS = {
  72. web_rounded_containers: "false",
  73. web_rounded_thumbnails: "false"
  74. }
  75.  
  76. class YTP {
  77. static observer = new MutationObserver(this.onNewScript);
  78.  
  79. static _config = {};
  80.  
  81. static isObject(item) {
  82. return (item && typeof item === "object" && !Array.isArray(item));
  83. }
  84.  
  85. static mergeDeep(target, ...sources) {
  86. if (!sources.length) return target;
  87. const source = sources.shift();
  88.  
  89. if (this.isObject(target) && this.isObject(source)) {
  90. for (const key in source) {
  91. if (this.isObject(source[key])) {
  92. if (!target[key]) Object.assign(target, { [key]: {} });
  93. this.mergeDeep(target[key], source[key]);
  94. } else {
  95. Object.assign(target, { [key]: source[key] });
  96. }
  97. }
  98. }
  99.  
  100. return this.mergeDeep(target, ...sources);
  101. }
  102.  
  103.  
  104. static onNewScript(mutations) {
  105. for (var mut of mutations) {
  106. for (var node of mut.addedNodes) {
  107. YTP.bruteforce();
  108. }
  109. }
  110. }
  111.  
  112. static start() {
  113. this.observer.observe(document, {childList: true, subtree: true});
  114. }
  115.  
  116. static stop() {
  117. this.observer.disconnect();
  118. }
  119.  
  120. static bruteforce() {
  121. if (!window.yt) return;
  122. if (!window.yt.config_) return;
  123.  
  124. this.mergeDeep(window.yt.config_, this._config);
  125. }
  126.  
  127. static setCfg(name, value) {
  128. this._config[name] = value;
  129. }
  130.  
  131. static setCfgMulti(configs) {
  132. this.mergeDeep(this._config, configs);
  133. }
  134.  
  135. static setExp(name, value) {
  136. if (!("EXPERIMENT_FLAGS" in this._config)) this._config.EXPERIMENT_FLAGS = {};
  137.  
  138. this._config.EXPERIMENT_FLAGS[name] = value;
  139. }
  140.  
  141. static setExpMulti(exps) {
  142. if (!("EXPERIMENT_FLAGS" in this._config)) this._config.EXPERIMENT_FLAGS = {};
  143.  
  144. this.mergeDeep(this._config.EXPERIMENT_FLAGS, exps);
  145. }
  146.  
  147. static decodePlyrFlags(flags) {
  148. var obj = {},
  149. dflags = flags.split("&");
  150.  
  151. for (var i = 0; i < dflags.length; i++) {
  152. var dflag = dflags[i].split("=");
  153. obj[dflag[0]] = dflag[1];
  154. }
  155.  
  156. return obj;
  157. }
  158.  
  159. static encodePlyrFlags(flags) {
  160. var keys = Object.keys(flags),
  161. response = "";
  162.  
  163. for (var i = 0; i < keys.length; i++) {
  164. if (i > 0) {
  165. response += "&";
  166. }
  167. response += keys[i] + "=" + flags[keys[i]];
  168. }
  169.  
  170. return response;
  171. }
  172.  
  173. static setPlyrFlags(flags) {
  174. if (!window.yt) return;
  175. if (!window.yt.config_) return;
  176. if (!window.yt.config_.WEB_PLAYER_CONTEXT_CONFIGS) return;
  177. var conCfgs = window.yt.config_.WEB_PLAYER_CONTEXT_CONFIGS;
  178. if (!("WEB_PLAYER_CONTEXT_CONFIGS" in this._config)) this._config.WEB_PLAYER_CONTEXT_CONFIGS = {};
  179.  
  180. for (var cfg in conCfgs) {
  181. var dflags = this.decodePlyrFlags(conCfgs[cfg].serializedExperimentFlags);
  182. this.mergeDeep(dflags, flags);
  183. this._config.WEB_PLAYER_CONTEXT_CONFIGS[cfg] = {
  184. serializedExperimentFlags: this.encodePlyrFlags(dflags)
  185. }
  186. }
  187. }
  188. }
  189.  
  190. window.addEventListener("yt-page-data-updated", function tmp() {
  191. YTP.stop();
  192. for (i = 0; i < ATTRS.length; i++) {
  193. document.getElementsByTagName("html")[0].removeAttribute(ATTRS[i]);
  194. }
  195. window.removeEventListener("yt-page-date-updated", tmp);
  196. });
  197.  
  198. YTP.start();
  199.  
  200. YTP.setCfgMulti(CONFIGS);
  201. YTP.setExpMulti(EXPFLAGS);
  202. YTP.setPlyrFlags(PLYRFLAGS);
  203.  
  204. function $(q) {
  205. return document.querySelector(q);
  206. }
  207.  
  208. // Re-add 'Explore' tab in sidebar (it also replaces the 'Shorts' tab)
  209. function waitForElm(selector) {
  210. return new Promise(resolve => {
  211. if (document.querySelector(selector)) {
  212. return resolve(document.querySelector(selector));
  213. }
  214.  
  215. const observer = new MutationObserver(mutations => {
  216. if (document.querySelector(selector)) {
  217. resolve(document.querySelector(selector));
  218. observer.disconnect();
  219. }
  220. });
  221.  
  222. observer.observe(document.body, {
  223. childList: true,
  224. subtree: true
  225. });
  226. });
  227. }
  228.  
  229. function restoreTrending() {
  230.  
  231. var trendingData = {
  232. "navigationEndpoint": {
  233. "clickTrackingParams": "CBwQtSwYASITCNqYh-qO_fACFcoRrQYdP44D9Q==",
  234. "commandMetadata": {
  235. "webCommandMetadata": {
  236. "url": "/feed/explore",
  237. "webPageType": "WEB_PAGE_TYPE_BROWSE",
  238. "rootVe": 6827,
  239. "apiUrl": "/youtubei/v1/browse"
  240. }
  241. },
  242. "browseEndpoint": {
  243. "browseId": "FEtrending"
  244. }
  245. },
  246. "icon": {
  247. "iconType": "EXPLORE"
  248. },
  249. "trackingParams": "CBwQtSwYASITCNqYh-qO_fACFcoRrQYdP44D9Q==",
  250. "formattedTitle": {
  251. "simpleText": "Explore"
  252. },
  253. "accessibility": {
  254. "accessibilityData": {
  255. "label": "Explore"
  256. }
  257. },
  258. "isPrimary": true
  259. };
  260.  
  261. var guidetemplate = `<ytd-guide-entry-renderer class="style-scope ytd-guide-section-renderer" is-primary="" line-end-style="none"><!--css-build:shady--><a id="endpoint" class="yt-simple-endpoint style-scope ytd-guide-entry-renderer" tabindex="-1" role="tablist"><tp-yt-paper-item role="tab" class="style-scope ytd-guide-entry-renderer" tabindex="0" aria-disabled="false"><!--css-build:shady--><yt-icon class="guide-icon style-scope ytd-guide-entry-renderer" disable-upgrade=""></yt-icon><yt-img-shadow height="24" width="24" class="style-scope ytd-guide-entry-renderer" disable-upgrade=""></yt-img-shadow><yt-formatted-string class="title style-scope ytd-guide-entry-renderer"><!--css-build:shady--></yt-formatted-string><span class="guide-entry-count style-scope ytd-guide-entry-renderer"></span><yt-icon class="guide-entry-badge style-scope ytd-guide-entry-renderer" disable-upgrade=""></yt-icon><div id="newness-dot" class="style-scope ytd-guide-entry-renderer"></div></tp-yt-paper-item></a><yt-interaction class="style-scope ytd-guide-entry-renderer"><!--css-build:shady--><div class="stroke style-scope yt-interaction"></div><div class="fill style-scope yt-interaction"></div></yt-interaction></ytd-guide-entry-renderer>`;
  262. document.querySelector(`#items > ytd-guide-entry-renderer:nth-child(2)`).data = trendingData;
  263.  
  264. var miniguidetemplate = `<ytd-mini-guide-entry-renderer class="style-scope ytd-mini-guide-section-renderer" is-primary="" line-end-style="none"><!--css-build:shady--><a id="endpoint" class="yt-simple-endpoint style-scope ytd-guide-entry-renderer" tabindex="-1" role="tablist"><tp-yt-paper-item role="tab" class="style-scope ytd-guide-entry-renderer" tabindex="0" aria-disabled="false"><!--css-build:shady--><yt-icon class="guide-icon style-scope ytd-guide-entry-renderer" disable-upgrade=""></yt-icon><yt-img-shadow height="24" width="24" class="style-scope ytd-guide-entry-renderer" disable-upgrade=""></yt-img-shadow><yt-formatted-string class="title style-scope ytd-guide-entry-renderer"><!--css-build:shady--></yt-formatted-string><span class="guide-entry-count style-scope ytd-guide-entry-renderer"></span><yt-icon class="guide-entry-badge style-scope ytd-guide-entry-renderer" disable-upgrade=""></yt-icon><div id="newness-dot" class="style-scope ytd-guide-entry-renderer"></div></tp-yt-paper-item></a><yt-interaction class="style-scope ytd-guide-entry-renderer"><!--css-build:shady--><div class="stroke style-scope yt-interaction"></div><div class="fill style-scope yt-interaction"></div></yt-interaction></ytd-guide-entry-renderer>`;
  265. document.querySelector(`#items > ytd-mini-guide-entry-renderer:nth-child(2)`).data = trendingData;
  266.  
  267. }
  268.  
  269.  
  270. waitForElm("#items.ytd-guide-section-renderer").then((elm) => {
  271. restoreTrending();
  272. });
  273.  
  274. waitForElm("#items.ytd-mini-guide-section-renderer").then((elm) => {
  275. restoreTrending();
  276. });
  277.  
  278. // Fix for like-dislike ratio
  279. function $(q) {
  280. return document.querySelector(q);
  281. }
  282.  
  283. addEventListener('yt-page-data-updated', function() {
  284. if(!location.pathname.startsWith('/watch')) return;
  285.  
  286. var lds = $('ytd-video-primary-info-renderer div#top-level-buttons-computed');
  287. var like = $('ytd-video-primary-info-renderer div#segmented-like-button > ytd-toggle-button-renderer');
  288. var share = $('ytd-video-primary-info-renderer div#top-level-buttons-computed > ytd-segmented-like-dislike-button-renderer + ytd-button-renderer');
  289.  
  290. lds.insertBefore(like, share);
  291.  
  292. like.setAttribute('class', like.getAttribute('class').replace('ytd-segmented-like-dislike-button-renderer', 'ytd-menu-renderer force-icon-button'));
  293. like.removeAttribute('is-paper-button-with-icon');
  294. like.removeAttribute('is-paper-button');
  295. like.setAttribute('style-action-button', '');
  296. like.setAttribute('is-icon-button', '');
  297. like.querySelector('a').insertBefore(like.querySelector('yt-formatted-string'), like.querySelector('tp-yt-paper-tooltip'));
  298. try { like.querySelector('paper-ripple').remove(); } catch(e) {}
  299. var paper = like.querySelector('tp-yt-paper-button');
  300. paper.removeAttribute('style-target');
  301. paper.removeAttribute('animated');
  302. paper.removeAttribute('elevation');
  303. like.querySelector('a').insertBefore(paper.querySelector('yt-icon'), like.querySelector('yt-formatted-string'));
  304. paper.outerHTML = paper.outerHTML.replace('<tp-yt-paper-button ', '<yt-icon-button ').replace('</tp-yt-paper-button>', '</yt-icon-button>');
  305. paper = like.querySelector('yt-icon-button');
  306. paper.querySelector('button#button').appendChild(like.querySelector('yt-icon'));
  307.  
  308. var dislike = $('ytd-video-primary-info-renderer div#segmented-dislike-button > ytd-toggle-button-renderer');
  309. lds.insertBefore(dislike, share);
  310. $('ytd-video-primary-info-renderer ytd-segmented-like-dislike-button-renderer').remove();
  311. dislike.setAttribute('class', dislike.getAttribute('class').replace('ytd-segmented-like-dislike-button-renderer', 'ytd-menu-renderer force-icon-button'));
  312. dislike.removeAttribute('has-no-text');
  313. dislike.setAttribute('style-action-button', '');
  314. var dlabel = document.createElement('yt-formatted-stringx');
  315. dlabel.setAttribute('id', 'text');
  316. if(dislike.getAttribute('class').includes('style-default-active'))
  317. dlabel.setAttribute('class', dlabel.getAttribute('class').replace('style-default', 'style-default-active'));
  318. dislike.querySelector('a').insertBefore(dlabel, dislike.querySelector('tp-yt-paper-tooltip'));
  319.  
  320. $('ytd-video-primary-info-renderer').removeAttribute('flex-menu-enabled');
  321. });
  322.  
  323. // Restore old comment replies UI
  324. var observingComments = false;
  325. var hl;
  326.  
  327. const cfconfig = {
  328. unicodeEmojis: false
  329. };
  330.  
  331. const cfi18n = {
  332. en: {
  333. viewSingular: "View reply",
  334. viewMulti: "View %s replies",
  335. viewSingularOwner: "View reply from %s",
  336. viewMultiOwner: "View %s replies from %s and others",
  337. hideSingular: "Hide reply",
  338. hideMulti: "Hide replies",
  339. replyCountIsolator: /( REPLIES)|( REPLY)/
  340. }
  341. }
  342.  
  343. /**
  344. * Get a string from the localization strings.
  345. *
  346. * @param {string} string Name of string to get
  347. * @param {string} hl Language to use.
  348. * @param {...array} args Strings.
  349. * @returns {string}
  350. */
  351. function getString(string, hl = "en", ...args) {
  352. if (!string) return;
  353. var str;
  354. if (cfi18n[hl]) {
  355. if (cfi18n[hl][string]) {
  356. str = cfi18n[hl][string];
  357. } else if (cfi18n.en[string]) {
  358. str = cfi18n.en[string];
  359. } else {
  360. return;
  361. }
  362. } else {
  363. if (cfi18n.en[string]) str = cfi18n.en[string];
  364. }
  365.  
  366. for (var i = 0; i < args.length; i++) {
  367. str = str.replace(/%s/, args[i]);
  368. }
  369.  
  370. return str;
  371. }
  372.  
  373. /**
  374. * Wait for a selector to exist
  375. *
  376. * @param {string} selector CSS Selector
  377. * @param {HTMLElement} base Element to search inside
  378. * @returns {Node}
  379. */
  380. async function waitForElm(selector, base = document) {
  381. if (!selector) return null;
  382. if (!base.querySelector) return null;
  383. while (base.querySelector(selector) == null) {
  384. await new Promise(r => requestAnimationFrame(r));
  385. };
  386. return base.querySelector(selector);
  387. };
  388.  
  389. /**
  390. * Is a value in an array?
  391. *
  392. * @param {*} needle Value to search
  393. * @param {Array} haystack Array to search
  394. * @returns {boolean}
  395. */
  396. function inArray(needle, haystack) {
  397. for (var i = 0; i < haystack.length; i++) {
  398. if (needle == haystack[i]) return true;
  399. }
  400. return false;
  401. }
  402.  
  403. /**
  404. * Get text of an InnerTube string.
  405. *
  406. * @param {object} object String container.
  407. */
  408. function getSimpleString(object) {
  409. if (object.simpleText) return object.simpleText;
  410.  
  411. var str = "";
  412. for (var i = 0; i < object.runs.length; i++) {
  413. str += object.runs[i].text;
  414. }
  415. return str;
  416. }
  417.  
  418. /**
  419. * Format a commentRenderer.
  420. *
  421. * @param {object} comment commentRenderer from InnerTube.
  422. */
  423. function formatComment(comment) {
  424. if (cfconfig.unicodeEmojis) {
  425. var runs;
  426. try {
  427. runs = comment.contentText.runs
  428. for (var i = 0; i < runs.length; i++) {
  429. delete runs[i].emoji;
  430. delete runs[i].loggingDirectives;
  431. }
  432. } catch(err) {}
  433. }
  434.  
  435. return comment;
  436. }
  437.  
  438. /**
  439. * Format a commentThreadRenderer.
  440. *
  441. * @param {object} thread commentThreadRenderer from InnerTube.
  442. */
  443. async function formatCommentThread(thread) {
  444. if (thread.comment.commentRenderer) {
  445. thread.comment.commentRenderer = formatComment(thread.comment.commentRenderer);
  446. }
  447.  
  448. var replies;
  449. try {
  450. replies = thread.replies.commentRepliesRenderer;
  451. if (replies.viewRepliesIcon) {
  452. replies.viewReplies.buttonRenderer.icon = replies.viewRepliesIcon.buttonRenderer.icon;
  453. delete replies.viewRepliesIcon;
  454. }
  455.  
  456. if (replies.hideRepliesIcon) {
  457. replies.hideReplies.buttonRenderer.icon = replies.hideRepliesIcon.buttonRenderer.icon;
  458. delete replies.hideRepliesIcon;
  459. }
  460.  
  461. var creatorName;
  462. try {
  463. creatorName = replies.viewRepliesCreatorThumbnail.accessibility.accessibilityData.label;
  464. delete replies.viewRepliesCreatorThumbnail;
  465. } catch(err) {}
  466.  
  467. var replyCount = getSimpleString(replies.viewReplies.buttonRenderer.text);
  468. replyCount = +replyCount.replace(getString("replyCountIsolator", hl), "");
  469.  
  470. var viewMultiString = creatorName ? "viewMultiOwner" : "viewMulti";
  471. var viewSingleString = creatorName ? "viewSingularOwner" : "viewSingular";
  472.  
  473. replies.viewReplies.buttonRenderer.text = {
  474. runs: [
  475. {
  476. text: (replyCount > 1) ? getString(viewMultiString, hl, replyCount, creatorName) : getString(viewSingleString, hl, creatorName)
  477. }
  478. ]
  479. }
  480.  
  481. replies.hideReplies.buttonRenderer.text = {
  482. runs: [
  483. {
  484. text: (replyCount > 1) ? getString("hideMulti", hl) : getString("hideSingular", hl)
  485. }
  486. ]
  487. };
  488. } catch(err) {}
  489.  
  490. return thread;
  491. }
  492.  
  493. /**
  494. * Force Polymer to refresh data of an element.
  495. *
  496. * @param {Node} element Element to refresh data of.
  497. */
  498. function refreshData(element) {
  499. var clone = element.cloneNode();
  500. clone.data = element.data;
  501. // Let the script know we left our mark
  502. // in a way that doesn't rely on classes
  503. // because Polymer likes to cast comments
  504. // into the void for later reuse
  505. clone.data.fixedByCF = true;
  506. for (var i in element.properties) {
  507. clone[i] = element[i];
  508. }
  509. element.insertAdjacentElement("afterend", clone);
  510. element.remove();
  511. }
  512.  
  513. var commentObserver = new MutationObserver((list) => {
  514. list.forEach(async (mutation) => {
  515. if (mutation.addedNodes) {
  516. for (var i = 0; i < mutation.addedNodes.length; i++) {
  517. var elm = mutation.addedNodes[i];
  518. if (elm.classList && elm.data && !elm.data.fixedByCF) {
  519. if (elm.tagName == "YTD-COMMENT-THREAD-RENDERER") {
  520. elm.data = await formatCommentThread(elm.data);
  521. refreshData(elm);
  522. } else if (elm.tagName == "YTD-COMMENT-RENDERER") {
  523. if (!elm.classList.contains("ytd-comment-thread-renderer")) {
  524. elm.data = formatComment(elm.data);
  525. refreshData(elm);
  526. }
  527. }
  528. }
  529. }
  530. }
  531. });
  532. });
  533.  
  534. document.addEventListener("yt-page-data-updated", async (e) => {
  535. hl = yt.config_.HL;
  536. commentObserver.observe(document.querySelector("ytd-app"), { childList: true, subtree: true });
  537. });
  538.  
  539. // CSS adjustments and UI fixes
  540. (function() {
  541. ApplyCSS();
  542. function ApplyCSS() {
  543. var styles = document.createElement("style");
  544. styles.innerHTML=`
  545. /* Revert old background color and buttons */
  546. html[dark] {
  547. --yt-spec-general-background-a: #181818 !important;
  548. --yt-spec-general-background-b: #0f0f0f !important;
  549. --yt-spec-brand-background-primary: rgba(33, 33, 33, 0.98) !important;
  550. --yt-spec-10-percent-layer: rgba(255, 255, 255, 0.1) !important;
  551. }
  552.  
  553. html:not([dark]) {
  554. --yt-spec-general-background-a: #f9f9f9 !important;
  555. --yt-spec-general-background-b: #f1f1f1 !important;
  556. --yt-spec-brand-background-primary: rgba(255, 255, 255, 0.98) !important;
  557. --yt-spec-10-percent-layer: rgba(0, 0, 0, 0.1) !important;
  558. }
  559.  
  560. ytd-masthead {
  561. background: var(--yt-spec-brand-background-solid) !important;
  562. }
  563.  
  564. ytd-app {
  565. background: var(--yt-spec-general-background-a) !important;
  566. }
  567.  
  568. ytd-browse[page-subtype="channels"] {
  569. background: var(--yt-spec-general-background-b) !important;
  570. }
  571.  
  572. ytd-c4-tabbed-header-renderer {
  573. --yt-lightsource-section1-color: var(--yt-spec-general-background-a) !important;
  574. }
  575.  
  576. ytd-mini-guide-renderer, ytd-mini-guide-entry-renderer {
  577. background-color: var(--yt-spec-brand-background-solid) !important;
  578. }
  579.  
  580. #cinematics.ytd-watch-flexy {
  581. display: none !important;
  582. }
  583.  
  584. #tabs-divider.ytd-c4-tabbed-header-renderer {
  585. border-bottom: 0px !important;
  586. }
  587.  
  588. #header.ytd-rich-grid-renderer {
  589. width: 100% !important;
  590. }
  591.  
  592. [page-subtype="home"] #chips-wrapper.ytd-feed-filter-chip-bar-renderer {
  593. background-color: var(--yt-spec-brand-background-primary) !important;
  594. border-top: 1px solid var(--yt-spec-10-percent-layer) !important;
  595. border-bottom: 1px solid var(--yt-spec-10-percent-layer) !important;
  596. }
  597.  
  598. ytd-feed-filter-chip-bar-renderer[is-dark-theme] #left-arrow.ytd-feed-filter-chip-bar-renderer::after {
  599. background: linear-gradient(to right, var(--yt-spec-brand-background-primary) 20%, rgba(33, 33, 33, 0) 80%) !important;
  600. }
  601.  
  602. ytd-feed-filter-chip-bar-renderer[is-dark-theme] #right-arrow.ytd-feed-filter-chip-bar-renderer::before {
  603. background: linear-gradient(to left, var(--yt-spec-brand-background-primary) 20%, rgba(33, 33, 33, 0) 80%) !important;
  604. }
  605.  
  606. ytd-feed-filter-chip-bar-renderer #left-arrow-button.ytd-feed-filter-chip-bar-renderer,
  607. ytd-feed-filter-chip-bar-renderer #right-arrow-button.ytd-feed-filter-chip-bar-renderer {
  608. background-color: var(--yt-spec-brand-background-primary) !important;
  609. }
  610.  
  611. yt-chip-cloud-renderer[is-dark-theme] #right-arrow.yt-chip-cloud-renderer::before {
  612. background: linear-gradient(to left, var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) 10%, rgba(24, 24, 24, 0) 90%) !important;
  613. }
  614.  
  615. yt-chip-cloud-renderer #left-arrow-button.yt-chip-cloud-renderer,
  616. yt-chip-cloud-renderer #right-arrow-button.yt-chip-cloud-renderer {
  617. background: var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) !important;
  618. }
  619.  
  620. yt-chip-cloud-renderer[is-dark-theme] #left-arrow.yt-chip-cloud-renderer::after {
  621. background: linear-gradient(to right, var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) 10%, rgba(24, 24, 24, 0) 90%) !important;
  622. }
  623.  
  624. yt-chip-cloud-renderer #left-arrow.yt-chip-cloud-renderer::after {
  625. background: linear-gradient(to right, var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) 10%, rgba(249, 249, 249, 0) 90%) !important;
  626. }
  627.  
  628. yt-chip-cloud-renderer #right-arrow.yt-chip-cloud-renderer::before {
  629. background: linear-gradient(to left, var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) 10%, rgba(249, 249, 249, 0) 90%) !important;
  630. }
  631.  
  632. ytd-feed-filter-chip-bar-renderer[component-style="FEED_FILTER_CHIP_BAR_STYLE_TYPE_HASHTAG_LANDING_PAGE"] #chips-wrapper.ytd-feed-filter-chip-bar-renderer,
  633. ytd-feed-filter-chip-bar-renderer[component-style="FEED_FILTER_CHIP_BAR_STYLE_TYPE_CHANNEL_PAGE_GRID"] #chips-wrapper.ytd-feed-filter-chip-bar-renderer {
  634. background-color: var(--yt-spec-general-background-b) !important;
  635. }
  636.  
  637. yt-chip-cloud-chip-renderer {
  638. height: 32px !important;
  639. border: 1px solid var(--yt-spec-10-percent-layer) !important;
  640. border-radius: 16px !important;
  641. box-sizing: border-box !important;
  642. }
  643.  
  644. /* Remove rounded corners on buttons and boxes */
  645. #container.ytd-searchbox {
  646. background-color: var(--ytd-searchbox-background) !important;
  647. border-radius: 2px 0 0 2px !important;
  648. box-shadow: inset 0 1px 2px var(--ytd-searchbox-legacy-border-shadow-color) !important;
  649. color: var(--ytd-searchbox-text-color) !important;
  650. padding: 2px 6px !important;
  651. }
  652.  
  653. ytd-searchbox[desktop-searchbar-style="rounded_corner_dark_btn"] #searchbox-button.ytd-searchbox {
  654. display: none !important;
  655. }
  656.  
  657. ytd-searchbox[desktop-searchbar-style="rounded_corner_light_btn"] #searchbox-button.ytd-searchbox {
  658. display: none !important;
  659. }
  660.  
  661. #search[has-focus] #search-input {
  662. margin-left: 32px !important;
  663. }
  664.  
  665. #search-icon-legacy.ytd-searchbox {
  666. display: block !important;
  667. border-radius: 0px 2px 2px 0px !important;
  668. }
  669.  
  670. .sbsb_a {
  671. border-radius: 2px !important;
  672. }
  673.  
  674. .sbsb_c {
  675. padding-left: 10px !important;
  676. }
  677.  
  678. div.sbqs_c::before {
  679. margin-right: 10px !important;
  680. }
  681.  
  682. ytd-searchbox[has-focus] #search-icon.ytd-searchbox {
  683. padding-left: 10px !important;
  684. padding-right: 10px !important;
  685. }
  686.  
  687. #voice-search-button.ytd-masthead {
  688. background-color: var(--yt-spec-general-background-a) !important;
  689. margin-left: 4px !important;
  690. }
  691.  
  692. #guide-content.ytd-app {
  693. background: var(--yt-spec-brand-background-solid) !important;
  694. }
  695.  
  696. yt-interaction.ytd-guide-entry-renderer,
  697. ytd-guide-entry-renderer {
  698. border-radius: 0px !important;
  699. }
  700.  
  701. a#endpoint.yt-simple-endpoint.style-scope.ytd-mini-guide-entry-renderer {
  702. margin: 0px !important;
  703. }
  704.  
  705. ytd-guide-entry-renderer[guide-refresh] {
  706. width: 100% !important;
  707. border-radius: 0px !important;
  708. }
  709.  
  710. tp-yt-paper-item.ytd-guide-entry-renderer {
  711. --paper-item-focused-before-border-radius: 0px !important;
  712. }
  713.  
  714. ytd-mini-guide-entry-renderer {
  715. border-radius: 0 !important;
  716. }
  717.  
  718. ytd-guide-section-renderer.style-scope.ytd-guide-renderer {
  719. padding-left: 0px !important;
  720. }
  721.  
  722. ytd-mini-guide-renderer[guide-refresh] {
  723. padding: 0 !important;
  724. }
  725.  
  726. ytd-guide-entry-renderer[active] {
  727. border-radius: 0px !important;
  728. }
  729.  
  730. .style-scope.ytd-guide-entry-renderer:hover {
  731. border-radius: 0 !important;
  732. }
  733.  
  734. tp-yt-paper-item.style-scope.ytd-guide-entry-renderer {
  735. border-radius: 0px !important;
  736. padding-left: 24px !important;
  737. }
  738.  
  739. #guide-section-title.ytd-guide-section-renderer {
  740. color: var(--yt-spec-text-secondary) !important;
  741. padding: 8px 24px !important;
  742. font-size: var(--ytd-tab-system-font-size) !important;
  743. font-weight: var(--ytd-tab-system-font-weight) !important;
  744. letter-spacing: var(--ytd-tab-system-letter-spacing) !important;
  745. text-transform: var(--ytd-tab-system-text-transform) !important;
  746. }
  747.  
  748. .style-scope.ytd-rich-item-renderer {
  749. border-radius: 2px !important;
  750. }
  751.  
  752. .style-scope.ytd-item-section-renderer {
  753. border-radius: 0px !important;
  754. }
  755.  
  756. #tooltip.tp-yt-paper-tooltip {
  757. border-radius: 2px !important;
  758. }
  759.  
  760. div.style-scope.yt-tooltip-renderer {
  761. border-radius: 0px !important;
  762. }
  763.  
  764. .style-scope.ytd-topic-link-renderer {
  765. border-radius: 2px !important;
  766. }
  767.  
  768. .bold.style-scope.yt-formatted-string {
  769. font-family: Roboto !important;
  770. }
  771.  
  772. .style-scope.yt-formatted-string {
  773. font-family: Roboto !important;
  774. }
  775.  
  776. #bar {
  777. border-radius: 2px !important;
  778. }
  779.  
  780. ytd-multi-page-menu-renderer {
  781. border-radius: 0px !important;
  782. border: 1px solid var(--yt-spec-10-percent-layer) !important;
  783. border-top: none !important;
  784. box-shadow: none !important;
  785. }
  786.  
  787. yt-dropdown-menu {
  788. --paper-menu-button-content-border-radius: 2px !important;
  789. }
  790.  
  791. ytd-menu-popup-renderer {
  792. border-radius: 2px !important;
  793. }
  794.  
  795. .style-scope.ytd-shared-post-renderer {
  796. border-radius: 0px !important;
  797. }
  798.  
  799. div#repost-context.style-scope.ytd-shared-post-renderer {
  800. border-radius: 0px !important;
  801. }
  802.  
  803. ytd-post-renderer.style-scope.ytd-shared-post-renderer {
  804. border-radius: 0px !important;
  805. }
  806.  
  807. div#dismissed.style-scope.ytd-compact-video-renderer {
  808. border-radius: 0px !important;
  809. }
  810.  
  811. .style-scope.ytd-feed-nudge-renderer {
  812. border-radius: 2px !important;
  813. }
  814.  
  815. .style-scope.ytd-inline-survey-renderer {
  816. border-radius: 2px !important;
  817. }
  818.  
  819. .style-scope.ytd-brand-video-shelf-renderer {
  820. border-radius: 0px !important;
  821. }
  822.  
  823. div#dismissible.style-scope.ytd-brand-video-singleton-renderer {
  824. border-radius: 0px !important;
  825. }
  826.  
  827. #inline-survey-compact-video-renderer {
  828. border-radius: 0px !important;
  829. }
  830.  
  831. tp-yt-paper-button#button.style-scope.ytd-button-renderer.style-inactive-outline.size-default {
  832. border-radius: 2px !important;
  833. }
  834.  
  835. div#dismissed.style-scope.ytd-rich-grid-media {
  836. border-radius: 0px !important;
  837. }
  838.  
  839. ytd-thumbnail[size="large"] a.ytd-thumbnail, ytd-thumbnail[size="large"]::before {
  840. border-radius: 0 !important;
  841. }
  842.  
  843. ytd-thumbnail[size="medium"] a.ytd-thumbnail, ytd-thumbnail[size="medium"]::before {
  844. border-radius: 0 !important;
  845. }
  846.  
  847. ytd-playlist-thumbnail[size="medium"] a.ytd-playlist-thumbnail, ytd-playlist-thumbnail[size="medium"]::before {
  848. border-radius: 0 !important;
  849. }
  850.  
  851. ytd-playlist-thumbnail[size="large"] a.ytd-playlist-thumbnail, ytd-playlist-thumbnail[size="large"]::before {
  852. border-radius: 0 !important;
  853. }
  854.  
  855. ytd-playlist-panel-renderer[modern-panels]:not([within-miniplayer]) #container.ytd-playlist-panel-renderer {
  856. border-radius: 0 !important;
  857. }
  858.  
  859. ytd-thumbnail-overlay-toggle-button-renderer.style-scope.ytd-thumbnail {
  860. border-radius: 2px !important;
  861. }
  862.  
  863. ytd-compact-link-renderer.ytd-settings-sidebar-renderer {
  864. margin: 0px !important;
  865. border-radius: 0 !important;
  866. }
  867.  
  868. ytd-compact-link-renderer[compact-link-style=compact-link-style-type-settings-sidebar][active] {
  869. border-radius: 0 !important;
  870. }
  871.  
  872. tp-yt-paper-item.style-scope.ytd-compact-link-renderer::before {
  873. border-radius: 0 !important;
  874. }
  875.  
  876. ytd-compact-link-renderer[compact-link-style=compact-link-style-type-settings-sidebar] tp-yt-paper-item.ytd-compact-link-renderer {
  877. padding-left: 24px !important;
  878. padding-right: 24px !important;
  879. }
  880.  
  881. img#img.style-scope.yt-image-shadow {
  882. border-radius: 50px !important;
  883. }
  884.  
  885. #title.style-scope.ytd-feed-nudge-renderer {
  886. font-family: Roboto !important;
  887. }
  888.  
  889. yt-chip-cloud-chip-renderer.style-scope.ytd-feed-nudge-renderer {
  890. border-radius: 50px !important;
  891. }
  892.  
  893. div#label-container.style-scope.ytd-thumbnail-overlay-toggle-button-renderer {
  894. border: 2px !important;
  895. text-transform: uppercase !important;
  896. }
  897.  
  898. ytd-thumbnail-overlay-time-status-renderer.style-scope.ytd-thumbnail {
  899. border-radius: 2px !important;
  900. }
  901.  
  902. ytd-backstage-post-dialog-renderer {
  903. border-radius: 2px !important;
  904. }
  905.  
  906. yt-bubble-hint-renderer {
  907. border-radius: 2px !important;
  908. }
  909.  
  910. #top-row.ytd-watch-metadata > div#actions.item.style-scope.ytd-watch-metadata > div#actions-inner.style-scope.ytd-watch-metadata > div#menu.style-scope.ytd-watch-metadata > ytd-menu-renderer.style-scope.ytd-watch-metadata > div#top-level-buttons-computed.top-level-buttons.style-scope.ytd-menu-renderer > ytd-button-renderer, #top-row.ytd-watch-metadata > div#actions.item.style-scope.ytd-watch-metadata > div#actions-inner.style-scope.ytd-watch-metadata > div#menu.style-scope.ytd-watch-metadata > ytd-menu-renderer.style-scope.ytd-watch-metadata > div#flexible-item-buttons.style-scope.ytd-menu-renderer > ytd-button-renderer, #top-row.ytd-watch-metadata > div#actions.item.style-scope.ytd-watch-metadata > div#actions-inner.style-scope.ytd-watch-metadata > div#menu.style-scope.ytd-watch-metadata > ytd-menu-renderer.style-scope.ytd-watch-metadata > div#top-level-buttons-computed.top-level-buttons.style-scope.ytd-menu-renderer > ytd-segmented-like-dislike-button-renderer.style-scope.ytd-menu-renderer > yt-smartimation.style-scope.ytd-segmented-like-dislike-button-renderer > div#segmented-buttons-wrapper.style-scope.ytd-segmented-like-dislike-button-renderer > div#segmented-like-button.style-scope.ytd-segmented-like-dislike-button-renderer > ytd-toggle-button-renderer {
  911. text-transform: capitalize !important;
  912. }
  913.  
  914. #top-row.ytd-watch-metadata > div#actions.item.style-scope.ytd-watch-metadata > div#actions-inner.style-scope.ytd-watch-metadata > div#menu.style-scope.ytd-watch-metadata > ytd-menu-renderer.style-scope.ytd-watch-metadata > div#top-level-buttons-computed.top-level-buttons.style-scope.ytd-menu-renderer > ytd-segmented-like-dislike-button-renderer.style-scope.ytd-menu-renderer > yt-smartimation.style-scope.ytd-segmented-like-dislike-button-renderer > div#segmented-buttons-wrapper.style-scope.ytd-segmented-like-dislike-button-renderer > div#segmented-dislike-button.style-scope.ytd-segmented-like-dislike-button-renderer > ytd-toggle-button-renderer.style-scope.ytd-segmented-like-dislike-button-renderer.style-text > a.yt-simple-endpoint.style-scope.ytd-toggle-button-renderer > yt-icon-button#button.yt-simple-endpoint.style-scope.ytd-toggle-button-renderer > button#button.style-scope.yt-icon-button {
  915. width: 24px !important;
  916. height: 24px !important;
  917. }
  918.  
  919. #top-row.ytd-watch-metadata > div#actions.item.style-scope.ytd-watch-metadata > div#actions-inner.style-scope.ytd-watch-metadata > div#menu.style-scope.ytd-watch-metadata > ytd-menu-renderer.style-scope.ytd-watch-metadata > div#top-level-buttons-computed.top-level-buttons.style-scope.ytd-menu-renderer > ytd-segmented-like-dislike-button-renderer.style-scope.ytd-menu-renderer > yt-smartimation.style-scope.ytd-segmented-like-dislike-button-renderer > div#segmented-buttons-wrapper.style-scope.ytd-segmented-like-dislike-button-renderer > div#segmented-dislike-button.style-scope.ytd-segmented-like-dislike-button-renderer > ytd-toggle-button-renderer.style-scope.ytd-segmented-like-dislike-button-renderer.style-text > a.yt-simple-endpoint.style-scope.ytd-toggle-button-renderer > yt-icon-button#button.yt-simple-endpoint.style-scope.ytd-toggle-button-renderer {
  920. padding: 6px !important;
  921. }
  922.  
  923. ytd-watch-metadata[modern-metapanel] #description.ytd-watch-metadata, #description.ytd-watch-metadata {
  924. background-color: transparent !important;
  925. border-radius: 0px !important;
  926. }
  927.  
  928. ytd-watch-metadata[modern-metapanel] #description-inner.ytd-watch-metadata, #description-inner.ytd-watch-metadata {
  929. margin: 0px !important;
  930. }
  931.  
  932. ytd-watch-metadata[modern-metapanel-order] #comment-teaser.ytd-watch-metadata, #comment-teaser.ytd-watch-metadata {
  933. border: 1px solid var(--yt-spec-10-percent-layer) !important;
  934. border-radius: 4px !important;
  935. }
  936.  
  937. ytd-comments-entry-point-header-renderer[modern-metapanel], #comment-teaser.ytd-watch-metadata {
  938. background-color: transparent !important;
  939. }
  940.  
  941. div#title.text-shell.skeleton-bg-color {
  942. border-radius: 2px !important;
  943. }
  944.  
  945. div#count.text-shell.skeleton-bg-color {
  946. border-radius: 2px !important;
  947. }
  948.  
  949. div#owner-name.text-shell.skeleton-bg-color {
  950. border-radius: 2px !important;
  951. }
  952.  
  953. div#published-date.text-shell.skeleton-bg-color {
  954. border-radius: 2px !important;
  955. }
  956.  
  957. div#subscribe-button.skeleton-bg-color {
  958. border-radius: 4px !important;
  959. }
  960.  
  961. div.rich-thumbnail.skeleton-bg-color {
  962. border-radius: 0px !important;
  963. }
  964.  
  965. div.rich-video-title.text-shell.skeleton-bg-color {
  966. border-radius: 2px !important;
  967. }
  968.  
  969. div.rich-video-meta.text-shell.skeleton-bg-color {
  970. border-radius: 2px !important;
  971. }
  972.  
  973. ytd-video-view-count-renderer {
  974. font-size: 1.4rem !important;
  975. }
  976.  
  977. #meta #avatar {
  978. width: 48px;
  979. height: 48px;
  980. margin-right: 16px;
  981. }
  982.  
  983. #meta #avatar img {
  984. width: 100%;
  985. }
  986.  
  987. #channel-name.ytd-video-owner-renderer {
  988. font-size: 1.4rem !important;
  989. }
  990.  
  991. #info.ytd-video-primary-info-renderer {
  992. height: 40px !important;
  993. }
  994.  
  995. ytd-merch-shelf-renderer {
  996. background-color: transparent !important;
  997. }
  998.  
  999. div#clarify-box.attached-message.style-scope.ytd-watch-flexy {
  1000. margin-top: 0px !important;
  1001. }
  1002.  
  1003. ytd-clarification-renderer.style-scope.ytd-item-section-renderer, ytd-clarification-renderer.style-scope.ytd-watch-flexy {
  1004. border: 1px solid !important;
  1005. border-color: #0000001a !important;
  1006. border-radius: 0px !important;
  1007. }
  1008.  
  1009. yt-formatted-string.description.style-scope.ytd-clarification-renderer {
  1010. font-size: 1.4rem !important;
  1011. }
  1012.  
  1013. div.content-title.style-scope.ytd-clarification-renderer {
  1014. padding-bottom: 4px !important;
  1015. }
  1016.  
  1017. ytd-watch-flexy[rounded-player-large]:not([fullscreen]):not([theater]) #ytd-player.ytd-watch-flexy {
  1018. border-radius: 0px !important;
  1019. }
  1020.  
  1021. ytd-rich-metadata-renderer[rounded] {
  1022. border-radius: 0px !important;
  1023. }
  1024.  
  1025. ytd-live-chat-frame[rounded-container], ytd-live-chat-frame[rounded-container] #show-hide-button.ytd-live-chat-frame ytd-toggle-button-renderer.ytd-live-chat-frame, iframe.style-scope.ytd-live-chat-frame {
  1026. border-radius: 0px !important;
  1027. }
  1028.  
  1029. ytd-toggle-button-renderer.style-scope.ytd-live-chat-frame, yt-live-chat-header-renderer.style-scope.yt-live-chat-renderer {
  1030. background: var(--yt-spec-brand-background-solid) !important;
  1031. }
  1032.  
  1033. ytd-toggle-button-renderer.style-scope.ytd-live-chat-frame > a.yt-simple-endpoint.style-scope.ytd-toggle-button-renderer > tp-yt-paper-button.style-scope.ytd-toggle-button-renderer {
  1034. padding-top: 4px !important;
  1035. padding-bottom: 4px !important;
  1036. }
  1037.  
  1038. ytd-playlist-panel-renderer[modern-panels]:not([within-miniplayer]) #container.ytd-playlist-panel-renderer, ytd-tvfilm-offer-module-renderer[modern-panels], ytd-donation-shelf-renderer.style-scope.ytd-watch-flexy {
  1039. border-radius: 0px !important;
  1040. }
  1041.  
  1042. ytd-playlist-panel-renderer[modern-panels]:not([hide-header-text]) .title.ytd-playlist-panel-renderer {
  1043. font-family: Roboto !important;
  1044. font-size: 1.4rem !important;
  1045. line-height: 2rem !important;
  1046. font-weight: 500 !important;
  1047. }
  1048.  
  1049. ytd-tvfilm-offer-module-renderer[modern-panels] #header.ytd-tvfilm-offer-module-renderer {
  1050. border-radius: 0px !important;
  1051. font-family: Roboto !important;
  1052. font-size: 1.6rem !important;
  1053. line-height: 2.2rem !important;
  1054. font-weight: 400 !important;
  1055. }
  1056.  
  1057. ytd-donation-shelf-renderer[modern-panels] #header-text.ytd-donation-shelf-renderer {
  1058. font-family: Roboto !important;
  1059. font-size: 1.6rem !important;
  1060. font-weight: 500 !important;
  1061. }
  1062.  
  1063. ytd-channel-video-player-renderer[rounded] #player.ytd-channel-video-player-renderer {
  1064. border-radius: 0px !important;
  1065. }
  1066.  
  1067. ytd-universal-watch-card-renderer[rounded] #header.ytd-universal-watch-card-renderer, ytd-universal-watch-card-renderer[rounded] #hero.ytd-universal-watch-card-renderer {
  1068. border-radius: 0px !important;
  1069. }
  1070.  
  1071. /* Remove rounded corners from the video player (Thanks to oldbutgoldyt for the code) */
  1072. .ytp-ad-player-overlay-flyout-cta-rounded {
  1073. border-radius: 2px !important;
  1074. }
  1075.  
  1076. .ytp-flyout-cta .ytp-flyout-cta-action-button.ytp-flyout-cta-action-button-rounded {
  1077. font-family: Arial !important;
  1078. background: #167ac6 !important;
  1079. border: solid 1px transparent !important;
  1080. border-color: #167ac6 !important;
  1081. border-radius: 2px !important;
  1082. box-shadow: 0 1px 0 rgba(0,0,0,.05) !important;
  1083. font-size: 11px !important;
  1084. font-weight: 500 !important;
  1085. height: 28px !important;
  1086. margin: 0 8px 0 0 !important;
  1087. max-width: 140px !important;
  1088. padding: 0 10px !important;
  1089. }
  1090.  
  1091. .ytp-ad-action-interstitial-action-button.ytp-ad-action-interstitial-action-button-rounded {
  1092. background-color: #167ac6 !important;
  1093. border: none !important;
  1094. border-radius: 2px;
  1095. font-family: Roboto !important;
  1096. font-size: 23px !important;
  1097. height: 46px !important;
  1098. line-height: 46px !important;
  1099. min-width: 164px !important;
  1100. padding: 0 20px !important;
  1101. }
  1102.  
  1103. .ytp-settings-menu {
  1104. border-radius: 2px !important;
  1105. }
  1106.  
  1107. .ytp-sb-subscribe {
  1108. border-radius: 2px !important;
  1109. background-color: #f00 !important;
  1110. color: #fff !important;
  1111. text-transform: uppercase !important;
  1112. }
  1113.  
  1114. .ytp-sb-unsubscribe {
  1115. border-radius: 2px !important;
  1116. background-color: #eee !important;
  1117. color: #606060 !important;
  1118. text-transform: uppercase !important;
  1119. }
  1120.  
  1121. .ytp-sb-subscribe.ytp-sb-disabled {
  1122. background-color: #f3908b !important;
  1123. }
  1124.  
  1125. .branding-context-container-inner.ytp-rounded-branding-context {
  1126. border-radius: 2px !important;
  1127. }
  1128.  
  1129. .ytp-tooltip.ytp-rounded-tooltip:not(.ytp-preview) .ytp-tooltip-text {
  1130. border-radius: 2px !important;
  1131. }
  1132.  
  1133. .ytp-autonav-endscreen-upnext-button.ytp-autonav-endscreen-upnext-button-rounded {
  1134. border-radius: 2px !important;
  1135. }
  1136.  
  1137. .ytp-ad-overlay-container.ytp-rounded-overlay-ad .ytp-ad-overlay-image img, .ytp-ad-overlay-container.ytp-rounded-overlay-ad .ytp-ad-text-overlay, .ytp-ad-overlay-container.ytp-rounded-overlay-ad .ytp-ad-enhanced-overlay {
  1138. border-radius: 0 !important;
  1139. }
  1140.  
  1141. .ytp-videowall-still-image {
  1142. border-radius: 0 !important;
  1143. }
  1144.  
  1145. div.iv-card.iv-card-video.ytp-rounded-info {
  1146. border-radius: 0 !important;
  1147. }
  1148.  
  1149. div.iv-card.iv-card-playlist.ytp-rounded-info {
  1150. border-radius: 0 !important;
  1151. }
  1152.  
  1153. div.iv-card.iv-card-channel.ytp-rounded-info {
  1154. border-radius: 0 !important;
  1155. }
  1156.  
  1157. div.iv-card.ytp-rounded-info {
  1158. border-radius: 0 !important;
  1159. }
  1160.  
  1161. .ytp-tooltip.ytp-rounded-tooltip.ytp-text-detail.ytp-preview, .ytp-tooltip.ytp-rounded-tooltip.ytp-text-detail.ytp-preview .ytp-tooltip-bg {
  1162. border-radius: 2px !important;
  1163. }
  1164.  
  1165. .ytp-ce-video.ytp-ce-medium-round, .ytp-ce-playlist.ytp-ce-medium-round, .ytp-ce-medium-round .ytp-ce-expanding-overlay-background {
  1166. border-radius: 0 !important;
  1167. }
  1168.  
  1169. .ytp-autonav-endscreen-upnext-thumbnail {
  1170. border-radius: 0 !important;
  1171. }
  1172.  
  1173. @font-face {
  1174. font-family: no-parens;
  1175. src: url("data:application/x-font-woff;base64,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");;
  1176. unicode-range: U+0028, U+0029;
  1177. }
  1178.  
  1179. span.ytp-menu-label-secondary {
  1180. font-family: "no-parens", "Roboto", sans-serif;
  1181. }
  1182.  
  1183. .ytp-swatch-color-white {
  1184. color: #f00 !important;
  1185. }
  1186.  
  1187. .iv-card {
  1188. border-radius: 0 !important;
  1189. }
  1190.  
  1191. .iv-branding .branding-context-container-inner {
  1192. border-radius: 2px !important;
  1193. }
  1194.  
  1195. .ytp-offline-slate-bar {
  1196. border-radius: 2px !important;
  1197. }
  1198.  
  1199. .ytp-offline-slate-button {
  1200. border-radius: 2px !important;
  1201. }
  1202.  
  1203. .ytp-ce-video.ytp-ce-large-round, .ytp-ce-playlist.ytp-ce-large-round, .ytp-ce-large-round .ytp-ce-expanding-overlay-background {
  1204. border-radius: 0 !important;
  1205. }
  1206.  
  1207. .ytp-flyout-cta .ytp-flyout-cta-icon.ytp-flyout-cta-icon-rounded {
  1208. border-radius: 0 !important;
  1209. }
  1210.  
  1211. .ytp-player-minimized .html5-main-video, .ytp-player-minimized .ytp-miniplayer-scrim, .ytp-player-minimized.html5-video-player {
  1212. border-radius: 0 !important;
  1213. }
  1214.  
  1215. ytd-miniplayer #player-container.ytd-miniplayer, ytd-miniplayer #video-container.ytd-miniplayer .video.ytd-miniplayer, ytd-miniplayer #card.ytd-miniplayer, ytd-miniplayer {
  1216. border-radius: 0 !important;
  1217. }
  1218.  
  1219. ytd-channel-video-player-renderer[rounded] #player.ytd-channel-video-player-renderer {
  1220. border-radius: 0 !important;
  1221. }
  1222.  
  1223. .ytp-small-mode .ytp-chrome-bottom {
  1224. height: 36px !important;
  1225. }
  1226.  
  1227. #movie_player > div.ytp-promotooltip-wrapper > div.ytp-promotooltip-container {
  1228. border-radius: 2px !important;
  1229. }
  1230.  
  1231. .ytp-chrome-controls .ytp-jump-button {
  1232. display: none !important;
  1233. }
  1234.  
  1235. /* Subscribe button fixes + Old compact channel header UI and non-amsterdam playlists */
  1236. #buttons.ytd-c4-tabbed-header-renderer {
  1237. flex-direction: row-reverse !important;
  1238. }
  1239.  
  1240. yt-button-shape.style-scope.ytd-subscribe-button-renderer {
  1241. display: flex !important;
  1242. }
  1243.  
  1244. #subscribe-button ytd-subscribe-button-renderer button {
  1245. height: 37px !important;
  1246. letter-spacing: 0.5px !important;
  1247. border-radius: 2px !important;
  1248. text-transform: uppercase !important;
  1249. }
  1250.  
  1251. .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--filled {
  1252. color: #fff !important;
  1253. background: var(--yt-spec-brand-button-background) !important;
  1254. border-radius: 2px !important;
  1255. text-transform: uppercase !important;
  1256. letter-spacing: 0.5px !important;
  1257. }
  1258.  
  1259. button.yt-spec-button-shape-next.yt-spec-button-shape-next--tonal.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-m {
  1260. height: 37px !important;
  1261. letter-spacing: 0.5px !important;
  1262. border-radius: 2px !important;
  1263. text-transform: uppercase !important;
  1264. }
  1265.  
  1266. #subscribe-button ytd-subscribe-button-renderer button.yt-spec-button-shape-next--tonal {
  1267. background-color: var(--yt-spec-badge-chip-background) !important;
  1268. color: var(--yt-spec-text-secondary) !important;
  1269. }
  1270.  
  1271. button.yt-spec-button-shape-next.yt-spec-button-shape-next--tonal.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-s {
  1272. background-color: var(--yt-spec-badge-chip-background) !important;
  1273. color: var(--yt-spec-text-secondary) !important;
  1274. height: 25px !important;
  1275. letter-spacing: 0.5px !important;
  1276. border-radius: 2px !important;
  1277. text-transform: uppercase !important;
  1278. }
  1279.  
  1280. div#notification-preference-button.style-scope.ytd-subscribe-button-renderer > ytd-subscription-notification-toggle-button-renderer-next.style-scope.ytd-subscribe-button-renderer > yt-button-shape > .yt-spec-button-shape-next--size-m {
  1281. background-color: transparent !important;
  1282. border-radius: 16px !important;
  1283. padding-left: 14px !important;
  1284. padding-right: 2px !important;
  1285. margin-left: 4px !important;
  1286. }
  1287.  
  1288. div#notification-preference-button.style-scope.ytd-subscribe-button-renderer > ytd-subscription-notification-toggle-button-renderer-next.style-scope.ytd-subscribe-button-renderer > yt-button-shape > .yt-spec-button-shape-next--size-m > div.cbox.yt-spec-button-shape-next--button-text-content, div#notification-preference-button.style-scope.ytd-subscribe-button-renderer > ytd-subscription-notification-toggle-button-renderer-next.style-scope.ytd-subscribe-button-renderer > yt-button-shape > .yt-spec-button-shape-next--size-m > div.yt-spec-button-shape-next__secondary-icon, button.yt-spec-button-shape-next.yt-spec-button-shape-next--tonal.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-m.yt-spec-button-shape-next--icon-leading-trailing > div.yt-spec-button-shape-next__button-text-content {
  1289. display: none !important;
  1290. }
  1291.  
  1292. #notification-preference-toggle-button:not([hidden]) + yt-animated-action #notification-preference-button.ytd-subscribe-button-renderer[invisible], #subscribe-button-shape.ytd-subscribe-button-renderer[invisible] {
  1293. pointer-events: auto;
  1294. visibility: visible;
  1295. position: static;
  1296. }
  1297.  
  1298. yt-smartimation.ytd-subscribe-button-renderer, .smartimation__content > __slot-el {
  1299. display: flex !important;
  1300. }
  1301.  
  1302. ytd-channel-tagline-renderer {
  1303. display: none !important;
  1304. }
  1305.  
  1306. #avatar.ytd-c4-tabbed-header-renderer {
  1307. width: 80px !important;
  1308. height: 80px !important;
  1309. margin: 0 24px 0 0 !important;
  1310. flex: none !important;
  1311. overflow: hidden !important;
  1312. }
  1313.  
  1314. #avatar-editor.ytd-c4-tabbed-header-renderer {
  1315. --ytd-channel-avatar-editor-size: 80px !important;
  1316. }
  1317.  
  1318. #channel-name.ytd-c4-tabbed-header-renderer {
  1319. margin-bottom: 0 !important;
  1320. }
  1321.  
  1322. #channel-header-container.ytd-c4-tabbed-header-renderer {
  1323. padding-top: 0 !important;
  1324. align-items: center !important;
  1325. }
  1326.  
  1327. #inner-header-container.ytd-c4-tabbed-header-renderer {
  1328. margin-top: 0 !important;
  1329. align-items: center !important;
  1330. }
  1331.  
  1332. yt-formatted-string#channel-handle.style-scope.ytd-c4-tabbed-header-renderer {
  1333. display: none !important;
  1334. }
  1335.  
  1336. #videos-count {
  1337. display: none !important;
  1338. }
  1339.  
  1340. .meta-item.ytd-c4-tabbed-header-renderer {
  1341. display: block !important;
  1342. }
  1343.  
  1344. div#channel-header-links.style-scope.ytd-c4-tabbed-header-renderer {
  1345. display: none !important;
  1346. }
  1347.  
  1348. ytd-c4-tabbed-header-renderer[use-page-header-style] #channel-name.ytd-c4-tabbed-header-renderer {
  1349. font-size: 2.4em !important;
  1350. font-weight: 400 !important;
  1351. line-height: var(--yt-channel-title-line-height, 3rem) !important;
  1352. }
  1353.  
  1354. span.delimiter.style-scope.ytd-c4-tabbed-header-renderer {
  1355. display: none !important;
  1356. }
  1357.  
  1358. div#meta.style-scope.ytd-c4-tabbed-header-renderer {
  1359. width: auto !important;
  1360. }
  1361.  
  1362. ytd-c4-tabbed-header-renderer[use-page-header-style] #inner-header-container.ytd-c4-tabbed-header-renderer {
  1363. flex-direction: row !important;
  1364. }
  1365.  
  1366. div.page-header-banner.style-scope.ytd-c4-tabbed-header-renderer {
  1367. margin-left: 0px !important;
  1368. margin-right: 0px !important;
  1369. border-radius: 0px !important;
  1370. }
  1371.  
  1372. ytd-c4-tabbed-header-renderer[use-page-header-style] .page-header-banner.ytd-c4-tabbed-header-renderer {
  1373. border-radius: 0px !important;
  1374. }
  1375.  
  1376. ytd-browse[darker-dark-theme][page-subtype="playlist"], ytd-browse[darker-dark-theme][page-subtype="show"] {
  1377. background-color: var(--yt-spec-general-background-b) !important;
  1378. }
  1379.  
  1380. ytd-two-column-browse-results-renderer.ytd-browse[background-refresh] {
  1381. background-color: var(--yt-spec-general-background-b) !important;
  1382. }
  1383.  
  1384. .yt-sans-20.yt-dynamic-sizing-formatted-string, .yt-sans-22.yt-dynamic-sizing-formatted-string, .yt-sans-24.yt-dynamic-sizing-formatted-string, .yt-sans-28.yt-dynamic-sizing-formatted-string, yt-text-input-form-field-renderer[component-style="INLINE_FORM_STYLE_TITLE"][amsterdam] tp-yt-paper-input.yt-text-input-form-field-renderer .input-content.tp-yt-paper-input-container > input {
  1385. font-family: "Roboto", "Arial", sans-serif !important;
  1386. font-size: 2.4rem !important;
  1387. line-height: 3.2rem !important;
  1388. font-weight: 400 !important;
  1389. }
  1390.  
  1391. ytd-browse[page-subtype=playlist][amsterdam] {
  1392. padding-top: 0 !important;
  1393. }
  1394.  
  1395. ytd-browse[page-subtype=playlist][amsterdam] ytd-playlist-header-renderer.ytd-browse {
  1396. margin-left: 0 !important;
  1397. height: calc(100vh - var(--ytd-toolbar-height)) !important;
  1398. }
  1399.  
  1400. .immersive-header-container.ytd-playlist-header-renderer {
  1401. margin-bottom: 0 !important;
  1402. border-radius: 0 !important;
  1403. }
  1404.  
  1405. .image-wrapper.ytd-hero-playlist-thumbnail-renderer {
  1406. border-radius: 0 !important;
  1407. }
  1408.  
  1409. ytd-playlist-header-renderer, yt-formatted-string[has-link-only_]:not([force-default-style]) a.yt-simple-endpoint.yt-formatted-string:visited, .metadata-stats.ytd-playlist-byline-renderer, .yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--text, ytd-text-inline-expander.ytd-playlist-header-renderer {
  1410. color: var(--yt-spec-text-primary) !important;
  1411. --ytd-text-inline-expander-button-color: var(--yt-spec-text-primary) !important;
  1412. }
  1413.  
  1414. ytd-dropdown-renderer[no-underline] tp-yt-paper-dropdown-menu-light .tp-yt-paper-dropdown-menu-light[style-target=input], tp-yt-iron-icon.tp-yt-paper-dropdown-menu-light {
  1415. color: var(--yt-spec-text-primary) !important;
  1416. }
  1417.  
  1418. .yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--tonal, .yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--filled {
  1419. background: transparent !important;
  1420. color: var(--yt-spec-text-primary) !important;
  1421. border-radius: 2px !important;
  1422. text-transform: uppercase;
  1423. }
  1424.  
  1425. .metadata-text-wrapper.ytd-playlist-header-renderer {
  1426. --yt-endpoint-color: var(--yt-spec-text-primary) !important;
  1427. --yt-endpoint-hover-color: var(--yt-spec-text-primary) !important;
  1428. }
  1429.  
  1430. div.immersive-header-background-wrapper.style-scope.ytd-playlist-header-renderer > div {
  1431. background: var(--yt-spec-general-background-a) !important;
  1432. }
  1433.  
  1434. #contents > ytd-playlist-video-list-renderer {
  1435. background: var(--yt-spec-general-background-b) !important;
  1436. margin-right: 0px !important;
  1437. }
  1438.  
  1439. ytd-browse[page-subtype=playlist][amsterdam] #alerts.ytd-browse {
  1440. padding-left: 388px !important;
  1441. padding-right: 0px !important;
  1442. margin-bottom: 0 !important;
  1443. }
  1444.  
  1445. ytd-alert-with-button-renderer[type=INFO], ytd-alert-with-button-renderer[type=SUCCESS] {
  1446. background: var(--yt-spec-general-background-a) !important;
  1447. }
  1448.  
  1449. ytd-item-section-renderer.style-scope.ytd-section-list-renderer[page-subtype="playlist"] > #header.ytd-item-section-renderer > ytd-feed-filter-chip-bar-renderer {
  1450. display: none !important;
  1451. }
  1452.  
  1453. .yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--tonal {
  1454. background: var(--yt-spec-base-background);
  1455. }
  1456.  
  1457. iron-input.tp-yt-paper-input > input.tp-yt-paper-input,
  1458. textarea.tp-yt-iron-autogrow-textarea {
  1459. color: var(--yt-spec-text-primary) !important;
  1460. }
  1461.  
  1462. #labelAndInputContainer.tp-yt-paper-input-container > label, #labelAndInputContainer.tp-yt-paper-input-container > .paper-input-label {
  1463. color: var(--yt-spec-text-secondary);
  1464. }
  1465.  
  1466. .unfocused-line.tp-yt-paper-input-container, .focused-line.tp-yt-paper-input-container {
  1467. border-bottom-color: var(--yt-spec-text-primary) !important;
  1468. }
  1469.  
  1470. [page-subtype="history"] #channel-header.ytd-tabbed-page-header {
  1471. background-color: var(--yt-spec-general-background-a) !important;
  1472. padding-top: 0 !important;
  1473. padding-bottom: 0 !important;
  1474. }
  1475.  
  1476. .page-header-view-model-wiz__page-header-title--page-header-title-large {
  1477. margin-top: 24px !important;
  1478. margin-bottom: 8px !important;
  1479. color: var(--yt-spec-text-primary) !important;
  1480. font-size: 1.6em !important;
  1481. line-height: 1.4em !important;
  1482. font-weight: 500 !important;
  1483. }
  1484.  
  1485. /* Remove Shorts, Trending, Podcasts and Shopping in the guide menus + Other elements to be fixed and removed */
  1486. #endpoint.yt-simple-endpoint.ytd-guide-entry-renderer.style-scope[title="Shorts"] {
  1487. display: none !important;
  1488. }
  1489. #endpoint.yt-simple-endpoint.ytd-mini-guide-entry-renderer.style-scope[title="Shorts"] {
  1490. display: none !important;
  1491. }
  1492. #endpoint.yt-simple-endpoint.ytd-guide-entry-renderer.style-scope[title="Trending"] {
  1493. display: none !important;
  1494. }
  1495. #endpoint.yt-simple-endpoint.ytd-guide-entry-renderer.style-scope[title="Podcasts"] {
  1496. display: none !important;
  1497. }
  1498. ytd-guide-entry-renderer > a[href*="/channel/UCkYQyvc_i9hXEo4xic9Hh2g"] {
  1499. display: none !important;
  1500. }
  1501. .yt-tab-shape-wiz {
  1502. padding: 0 32px !important;
  1503. margin-right: 0 !important;
  1504. }
  1505.  
  1506. .yt-tab-shape-wiz__tab {
  1507. font-size: 14px !important;
  1508. font-weight: 500 !important;
  1509. letter-spacing: var(--ytd-tab-system-letter-spacing) !important;
  1510. text-transform: uppercase !important;
  1511. }
  1512.  
  1513. .yt-tab-group-shape-wiz__slider {
  1514. display: none !important;
  1515. }
  1516.  
  1517. .yt-tab-shape-wiz__tab-bar {
  1518. display: none !important;
  1519. }
  1520.  
  1521. yt-formatted-string.style-scope.yt-chip-cloud-chip-renderer, span.style-scope.ytd-rich-shelf-renderer {
  1522. font-weight: 400 !important;
  1523. }
  1524.  
  1525. span.style-scope.ytd-shelf-renderer, ytd-reel-shelf-renderer[modern-typography] #title.ytd-reel-shelf-renderer {
  1526. font-size: 1.6rem !important;
  1527. font-weight: 500 !important;
  1528. }
  1529.  
  1530. .count-text.ytd-comments-header-renderer {
  1531. font-size: 1.6rem !important;
  1532. line-height: 2.2rem !important;
  1533. font-weight: 400 !important;
  1534. }
  1535.  
  1536. ytd-item-section-renderer.style-scope.ytd-watch-next-secondary-results-renderer > div#contents.style-scope.ytd-item-section-renderer > ytd-reel-shelf-renderer.style-scope.ytd-item-section-renderer, ytd-reel-shelf-renderer.ytd-structured-description-content-renderer {
  1537. display: none !important;
  1538. }
  1539.  
  1540. ytd-video-description-infocards-section-renderer.style-scope.ytd-structured-description-content-renderer > #header.ytd-video-description-infocards-section-renderer, ytd-video-description-infocards-section-renderer.style-scope.ytd-structured-description-content-renderer > #action-buttons.ytd-video-description-infocards-section-renderer {
  1541. display: none !important;
  1542. }
  1543.  
  1544. ytd-video-description-infocards-section-renderer.style-scope.ytd-structured-description-content-renderer {
  1545. border-top: 0px !important;
  1546. }
  1547.  
  1548. button.ytp-button.ytp-jump-button.ytp-jump-button-enabled {
  1549. display: none !important;
  1550. }
  1551.  
  1552. ytd-player#ytd-player.style-scope.ytd-watch-flexy > div#container.style-scope.ytd-player > .html5-video-player > div.ytp-chrome-bottom > div.ytp-chrome-controls > div.ytp-left-controls > a.ytp-next-button.ytp-button {
  1553. display: block !important;
  1554. }
  1555.  
  1556. div#chip-bar.style-scope.ytd-search-header-renderer > yt-chip-cloud-renderer.style-scope.ytd-search-header-renderer > div#container.style-scope.yt-chip-cloud-renderer {
  1557. display: none !important;
  1558. }
  1559.  
  1560. .ytp-fine-scrubbing-container {
  1561. display: none !important;
  1562. }
  1563.  
  1564. .ytp-progress-bar, .ytp-heat-map-container, .ytp-fine-scrubbing-container {
  1565. transform: translateY(0) !important;
  1566. }
  1567.  
  1568. .ytp-chrome-bottom {
  1569. height: auto !important;
  1570. }
  1571.  
  1572. .ytp-tooltip-edu {
  1573. display: none !important;
  1574. }
  1575.  
  1576. #play.ytd-moving-thumbnail-renderer {
  1577. color: #fff !important;
  1578. }
  1579.  
  1580. /* Fix disappearing bar in masthead */
  1581. #background.ytd-masthead {
  1582. opacity: 1 !important;
  1583. }`
  1584. document.head.appendChild(styles);
  1585. }
  1586. })();
  1587.  
  1588. (function() {var css = [
  1589. " [d*=\"M18 11C18 14.866 14.866 18 11 18C7.13401 18 4 14.866 4 11C4 7.13401 7.13401 4 11 4C14.866 4 18 7.13401 18 11ZM16.2961 16.9961C14.8853 18.2431 13.031 19 11 19C6.58172 19 3 15.4183 3 11C3 6.58172 6.58172 3 11 3C15.4183 3 19 6.58172 19 11C19 13.0274 18.2458 14.8786 17.0028 16.2885L20.5583 19.8441L20.9119 20.1976L20.2048 20.9047L19.8512 20.5512L16.2961 16.9961Z\"] {",
  1590. " d: path(\"m20.87 20.17-5.59-5.59C16.35 13.35 17 11.75 17 10c0-3.87-3.13-7-7-7s-7 3.13-7 7 3.13 7 7 7c1.75 0 3.35-.65 4.58-1.71l5.59 5.59.7-.71zM10 16c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z\")",
  1591. " }"
  1592. ].join("\n");
  1593. if (typeof GM_addStyle != "undefined") {
  1594. GM_addStyle(css);
  1595. } else if (typeof PRO_addStyle != "undefined") {
  1596. PRO_addStyle(css);
  1597. } else if (typeof addStyle != "undefined") {
  1598. addStyle(css);
  1599. } else {
  1600. var node = document.createElement("style");
  1601. node.type = "text/css";
  1602. node.appendChild(document.createTextNode(css));
  1603. var heads = document.getElementsByTagName("head");
  1604. if (heads.length > 0) {
  1605. heads[0].appendChild(node);
  1606. } else {
  1607. // no head yet, stick it whereever
  1608. document.documentElement.appendChild(node);
  1609. }
  1610. }
  1611. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址