// ==UserScript== // @name YouTube - Non-Rounded Design // @version 5.3.5 // @description This script disables YouTube's new rounded corners (reverts back to the previous layout from 2021.) // @author Magma_Craft // @license MIT // @match https://www.youtube.com/* // @namespace https://greasyfork.org/en/users/933798 // @icon https://www.youtube.com/favicon.ico // @run-at document-start // @grant none // @downloadURL none // ==/UserScript== // Attributes to remove from const ATTRS = [ "darker-dark-theme", "darker-dark-theme-deprecate" ]; // Regular config keys. const CONFIGS = { BUTTON_REWORK: true } // Experiment flags. const EXPFLAGS = { enable_channel_page_header_profile_section: false, enable_header_channel_handler_ui: false, kevlar_unavailable_video_error_ui_client: false, kevlar_refresh_on_theme_change: false, kevlar_modern_sd_v2: false, kevlar_watch_cinematics: false, kevlar_watch_comments_panel_button: false, kevlar_watch_grid: false, kevlar_watch_grid_hide_chips: false, kevlar_watch_metadata_refresh_no_old_secondary_data: false, smartimation_background: false, web_amsterdam_playlists: false, web_animated_actions: false, web_animated_like: false, web_button_rework: true, web_button_rework_with_live: true, web_darker_dark_theme: false, web_enable_youtab: false, web_guide_ui_refresh: false, web_modern_ads: false, web_modern_buttons: true, web_modern_chips: false, web_modern_collections_v2: false, web_modern_dialogs: false, web_modern_playlists: false, web_modern_subscribe: true, web_modern_tabs: false, web_modern_typography: false, web_rounded_containers: false, web_rounded_thumbnails: false, web_searchbar_style: "default", web_segmented_like_dislike_button: false, web_sheets_ui_refresh: false, web_snackbar_ui_refresh: false, web_watch_rounded_player_large: false, // Extra additions to remove the watch grid UI web_player_enable_featured_product_banner_exclusives_on_desktop: false, kevlar_watch_comments_panel_button: false, fill_view_models_on_web_vod: true, kevlar_watch_flexy_metadata_height: "136", kevlar_watch_max_player_width: "1280", live_chat_over_engagement_panels: false, live_chat_scaled_height: false, live_chat_smaller_min_height: false, main_app_controller_extraction_batch_18: false, main_app_controller_extraction_batch_19: false, no_iframe_for_web_stickiness: false, optimal_reading_width_comments_ep: false, remove_masthead_channel_banner_on_refresh: false, small_avatars_for_comments: false, small_avatars_for_comments_ep: false, web_watch_compact_comments: false, web_watch_compact_comments_header: false, web_watch_log_theater_mode: false, web_watch_theater_chat: false, web_watch_theater_fixed_chat: false, wn_grid_max_item_width: 0, wn_grid_min_item_width: 0 } // Player flags // !!! USE STRINGS FOR VALUES !!! // For example: "true" instead of true const PLYRFLAGS = { web_rounded_containers: "false", web_rounded_thumbnails: "false" } class YTP { static observer = new MutationObserver(this.onNewScript); static _config = {}; static isObject(item) { return (item && typeof item === "object" && !Array.isArray(item)); } static mergeDeep(target, ...sources) { if (!sources.length) return target; const source = sources.shift(); if (this.isObject(target) && this.isObject(source)) { for (const key in source) { if (this.isObject(source[key])) { if (!target[key]) Object.assign(target, { [key]: {} }); this.mergeDeep(target[key], source[key]); } else { Object.assign(target, { [key]: source[key] }); } } } return this.mergeDeep(target, ...sources); } static onNewScript(mutations) { for (var mut of mutations) { for (var node of mut.addedNodes) { YTP.bruteforce(); } } } static start() { this.observer.observe(document, {childList: true, subtree: true}); } static stop() { this.observer.disconnect(); } static bruteforce() { if (!window.yt) return; if (!window.yt.config_) return; this.mergeDeep(window.yt.config_, this._config); } static setCfg(name, value) { this._config[name] = value; } static setCfgMulti(configs) { this.mergeDeep(this._config, configs); } static setExp(name, value) { if (!("EXPERIMENT_FLAGS" in this._config)) this._config.EXPERIMENT_FLAGS = {}; this._config.EXPERIMENT_FLAGS[name] = value; } static setExpMulti(exps) { if (!("EXPERIMENT_FLAGS" in this._config)) this._config.EXPERIMENT_FLAGS = {}; this.mergeDeep(this._config.EXPERIMENT_FLAGS, exps); } static decodePlyrFlags(flags) { var obj = {}, dflags = flags.split("&"); for (var i = 0; i < dflags.length; i++) { var dflag = dflags[i].split("="); obj[dflag[0]] = dflag[1]; } return obj; } static encodePlyrFlags(flags) { var keys = Object.keys(flags), response = ""; for (var i = 0; i < keys.length; i++) { if (i > 0) { response += "&"; } response += keys[i] + "=" + flags[keys[i]]; } return response; } static setPlyrFlags(flags) { if (!window.yt) return; if (!window.yt.config_) return; if (!window.yt.config_.WEB_PLAYER_CONTEXT_CONFIGS) return; var conCfgs = window.yt.config_.WEB_PLAYER_CONTEXT_CONFIGS; if (!("WEB_PLAYER_CONTEXT_CONFIGS" in this._config)) this._config.WEB_PLAYER_CONTEXT_CONFIGS = {}; for (var cfg in conCfgs) { var dflags = this.decodePlyrFlags(conCfgs[cfg].serializedExperimentFlags); this.mergeDeep(dflags, flags); this._config.WEB_PLAYER_CONTEXT_CONFIGS[cfg] = { serializedExperimentFlags: this.encodePlyrFlags(dflags) } } } } window.addEventListener("yt-page-data-updated", function tmp() { YTP.stop(); for (i = 0; i < ATTRS.length; i++) { document.getElementsByTagName("html")[0].removeAttribute(ATTRS[i]); } window.removeEventListener("yt-page-date-updated", tmp); }); YTP.start(); YTP.setCfgMulti(CONFIGS); YTP.setExpMulti(EXPFLAGS); YTP.setPlyrFlags(PLYRFLAGS); function $(q) { return document.querySelector(q); } (function() { let css = ` /* Revert old background color and buttons */ html[dark] { --yt-spec-general-background-a: #181818 !important; --yt-spec-general-background-b: #0f0f0f !important; --yt-spec-brand-background-primary: rgba(33, 33, 33, 0.98) !important; --yt-spec-10-percent-layer: rgba(255, 255, 255, 0.1) !important } html:not([dark]) { --yt-spec-general-background-a: #f9f9f9 !important; --yt-spec-general-background-b: #f1f1f1 !important; --yt-spec-brand-background-primary: rgba(255, 255, 255, 0.98) !important; --yt-spec-10-percent-layer: rgba(0, 0, 0, 0.1) !important } ytd-masthead { background: var(--yt-spec-brand-background-solid) !important } ytd-app { background: var(--yt-spec-general-background-a) !important } ytd-browse[page-subtype="channels"] { background: var(--yt-spec-general-background-b) !important } ytd-c4-tabbed-header-renderer { --yt-lightsource-section1-color: var(--yt-spec-general-background-a) !important } #page-header.ytd-tabbed-page-header, #tabs-inner-container.ytd-tabbed-page-header { background: var(--yt-spec-general-background-a) !important } #tabs-divider.ytd-c4-tabbed-header-renderer, #tabs-divider.ytd-tabbed-page-header { border-bottom: 0px !important } ytd-mini-guide-renderer, ytd-mini-guide-entry-renderer { background-color: var(--yt-spec-brand-background-solid) !important } #cinematics.ytd-watch-flexy { display: none !important } #header.ytd-rich-grid-renderer { width: 100% !important } [page-subtype="home"] #chips-wrapper.ytd-feed-filter-chip-bar-renderer { background-color: var(--yt-spec-brand-background-primary) !important; border-top: 1px solid var(--yt-spec-10-percent-layer) !important; border-bottom: 1px solid var(--yt-spec-10-percent-layer) !important } ytd-feed-filter-chip-bar-renderer[is-dark-theme] #left-arrow.ytd-feed-filter-chip-bar-renderer::after { background: linear-gradient(to right, var(--yt-spec-brand-background-primary) 20%, rgba(33, 33, 33, 0) 80%) !important } ytd-feed-filter-chip-bar-renderer[is-dark-theme] #right-arrow.ytd-feed-filter-chip-bar-renderer::before { background: linear-gradient(to left, var(--yt-spec-brand-background-primary) 20%, rgba(33, 33, 33, 0) 80%) !important } ytd-feed-filter-chip-bar-renderer #left-arrow-button.ytd-feed-filter-chip-bar-renderer, ytd-feed-filter-chip-bar-renderer #right-arrow-button.ytd-feed-filter-chip-bar-renderer { background-color: var(--yt-spec-brand-background-primary) !important } yt-chip-cloud-renderer[is-dark-theme] #right-arrow.yt-chip-cloud-renderer::before { background: linear-gradient(to left, var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) 10%, rgba(24, 24, 24, 0) 90%) !important } yt-chip-cloud-renderer #left-arrow-button.yt-chip-cloud-renderer, yt-chip-cloud-renderer #right-arrow-button.yt-chip-cloud-renderer { background: var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) !important } yt-chip-cloud-renderer[is-dark-theme] #left-arrow.yt-chip-cloud-renderer::after { background: linear-gradient(to right, var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) 10%, rgba(24, 24, 24, 0) 90%) !important } yt-chip-cloud-renderer #left-arrow.yt-chip-cloud-renderer::after { background: linear-gradient(to right, var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) 10%, rgba(249, 249, 249, 0) 90%) !important } yt-chip-cloud-renderer #right-arrow.yt-chip-cloud-renderer::before { background: linear-gradient(to left, var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) 10%, rgba(249, 249, 249, 0) 90%) !important } 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, 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 { background-color: var(--yt-spec-general-background-b) !important } yt-chip-cloud-chip-renderer { height: 32px !important; border: 1px solid var(--yt-spec-10-percent-layer) !important; border-radius: 16px !important; box-sizing: border-box !important } /* Remove rounded corners on buttons and boxes */ #container.ytd-searchbox { background-color: var(--ytd-searchbox-background) !important; border-radius: 2px 0 0 2px !important; box-shadow: inset 0 1px 2px var(--ytd-searchbox-legacy-border-shadow-color) !important; color: var(--ytd-searchbox-text-color) !important; padding: 2px 6px !important } ytd-searchbox[desktop-searchbar-style="rounded_corner_dark_btn"] #searchbox-button.ytd-searchbox { display: none !important } ytd-searchbox[desktop-searchbar-style="rounded_corner_light_btn"] #searchbox-button.ytd-searchbox { display: none !important } #search[has-focus] #search-input { margin-left: 32px !important } #search-icon-legacy.ytd-searchbox { display: block !important; border-radius: 0px 2px 2px 0px !important } .sbsb_a { border-radius: 2px !important } .sbsb_c { padding-left: 10px !important } div.sbqs_c::before { margin-right: 10px !important } ytd-searchbox[has-focus] #search-icon.ytd-searchbox { padding-left: 10px !important; padding-right: 10px !important } #voice-search-button.ytd-masthead { background-color: var(--yt-spec-general-background-a) !important; margin-left: 4px !important } #guide-content.ytd-app { background: var(--yt-spec-brand-background-solid) !important } yt-interaction.ytd-guide-entry-renderer, ytd-guide-entry-renderer, ytd-guide-entry-renderer[guide-refresh], ytd-mini-guide-entry-renderer, ytd-guide-entry-renderer[active], .style-scope.ytd-guide-entry-renderer:hover, tp-yt-paper-item.style-scope.ytd-guide-entry-renderer { border-radius: 0px !important } ytd-guide-entry-renderer[guide-refresh] { width: 100% !important } ytd-mini-guide-renderer[guide-refresh] { padding: 0 !important } a#endpoint.yt-simple-endpoint.style-scope.ytd-mini-guide-entry-renderer { margin: 0px !important } tp-yt-paper-item.ytd-guide-entry-renderer { --paper-item-focused-before-border-radius: 0px !important } ytd-guide-section-renderer.style-scope.ytd-guide-renderer { padding-left: 0px !important } tp-yt-paper-item.style-scope.ytd-guide-entry-renderer { padding-left: 24px !important } #guide-section-title.ytd-guide-section-renderer { color: var(--yt-spec-text-secondary) !important; padding: 8px 24px !important; font-size: var(--ytd-tab-system-font-size) !important; font-weight: var(--ytd-tab-system-font-weight) !important; letter-spacing: var(--ytd-tab-system-letter-spacing) !important; text-transform: var(--ytd-tab-system-text-transform) !important } .style-scope.ytd-rich-item-renderer { border-radius: 2px !important } .style-scope.ytd-item-section-renderer { border-radius: 0px !important } #tooltip.tp-yt-paper-tooltip { border-radius: 2px !important } div.style-scope.yt-tooltip-renderer { border-radius: 0px !important } .style-scope.ytd-topic-link-renderer { border-radius: 2px !important } .style-scope.yt-formatted-string, .bold.style-scope.yt-formatted-string { font-family: Roboto !important } #bar { border-radius: 2px !important } ytd-multi-page-menu-renderer { border-radius: 0px !important; border: 1px solid var(--yt-spec-10-percent-layer) !important; border-top: none !important; box-shadow: none !important } yt-dropdown-menu { --paper-menu-button-content-border-radius: 2px !important } ytd-menu-popup-renderer { border-radius: 2px !important } .style-scope.ytd-shared-post-renderer, div#repost-context.style-scope.ytd-shared-post-renderer, ytd-post-renderer.style-scope.ytd-shared-post-renderer { border-radius: 0px !important } div#dismissed.style-scope.ytd-compact-video-renderer { border-radius: 0px !important } .style-scope.ytd-feed-nudge-renderer, .style-scope.ytd-inline-survey-renderer { border-radius: 2px !important } .style-scope.ytd-brand-video-shelf-renderer, div#dismissible.style-scope.ytd-brand-video-singleton-renderer, #inline-survey-compact-video-renderer { border-radius: 0px !important } tp-yt-paper-button#button.style-scope.ytd-button-renderer.style-inactive-outline.size-default { border-radius: 2px !important } div#dismissed.style-scope.ytd-rich-grid-media { border-radius: 0px !important } ytd-thumbnail[size="large"] a.ytd-thumbnail, ytd-thumbnail[size="large"]::before, ytd-thumbnail[size="medium"] a.ytd-thumbnail, ytd-thumbnail[size="medium"]::before { border-radius: 0 !important } ytd-playlist-thumbnail[size="medium"] a.ytd-playlist-thumbnail, ytd-playlist-thumbnail[size="medium"]::before, ytd-playlist-thumbnail[size="large"] a.ytd-playlist-thumbnail, ytd-playlist-thumbnail[size="large"]::before { border-radius: 0 !important } ytd-playlist-panel-renderer[modern-panels]:not([within-miniplayer]) #container.ytd-playlist-panel-renderer { border-radius: 0 !important } ytd-thumbnail-overlay-toggle-button-renderer.style-scope.ytd-thumbnail { border-radius: 2px !important } #title.ytd-settings-sidebar-renderer { font-family: Roboto !important; font-weight: 400 !important; } ytd-compact-link-renderer.ytd-settings-sidebar-renderer { margin: 0px !important; border-radius: 0 !important } ytd-compact-link-renderer[compact-link-style=compact-link-style-type-settings-sidebar][active] { border-radius: 0 !important } tp-yt-paper-item.style-scope.ytd-compact-link-renderer::before { border-radius: 0 !important } ytd-compact-link-renderer[compact-link-style=compact-link-style-type-settings-sidebar] tp-yt-paper-item.ytd-compact-link-renderer { padding-left: 24px !important; padding-right: 24px !important } img#img.style-scope.yt-image-shadow { border-radius: 50px !important } #title.style-scope.ytd-feed-nudge-renderer { font-family: Roboto !important } yt-chip-cloud-chip-renderer.style-scope.ytd-feed-nudge-renderer { border-radius: 50px !important } div#label-container.style-scope.ytd-thumbnail-overlay-toggle-button-renderer { border: 2px !important; text-transform: uppercase !important } ytd-thumbnail-overlay-time-status-renderer.style-scope.ytd-thumbnail { border-radius: 2px !important } ytd-backstage-post-dialog-renderer { border-radius: 2px !important } yt-bubble-hint-renderer { border-radius: 2px !important } div#title.text-shell.skeleton-bg-color, div#count.text-shell.skeleton-bg-color, div#owner-name.text-shell.skeleton-bg-color, div#published-date.text-shell.skeleton-bg-color, div.rich-video-title.text-shell.skeleton-bg-color, div.rich-video-meta.text-shell.skeleton-bg-color { border-radius: 2px !important } div#subscribe-button.skeleton-bg-color { border-radius: 4px !important } div.rich-thumbnail.skeleton-bg-color { border-radius: 0px !important } button.yt-spec-button-shape-next.yt-spec-button-shape-next--text.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-m.yt-spec-button-shape-next--icon-only-default[aria-label="Clear search query"] > div.yt-spec-button-shape-next__icon > yt-icon { width: 20px !important; height: 20px !important; margin-top: 2px !important; margin-left: 2px !important } .yt-spec-button-shape-next--icon-only-default {background-color: transparent !important } .yt-spec-button-shape-next--size-m.yt-spec-button-shape-next--segmented-start::after { width: 0px !important; margin-left: 8px !important } dislike-button-view-model { padding-left: 8px !important } ytd-watch-metadata ytd-video-owner-renderer ytd-button-renderer a, ytd-watch-metadata ytd-video-owner-renderer ytd-button-renderer button, #channel-header-container #meta ~ #buttons ytd-button-renderer a, #channel-header-container #meta ~ #buttons ytd-button-renderer button { height: 37px !important; border-radius: 2px !important; text-transform: uppercase !important; letter-spacing: 0.5px; background: var(--yt-spec-call-to-action) !important; border: 1px solid #075cd3 !important; color: #fff !important } [dark] #subscribe-button ytd-button-renderer a, [dark] ytd-watch-metadata ytd-video-owner-renderer ytd-button-renderer a, [dark] ytd-watch-metadata ytd-video-owner-renderer ytd-button-renderer button, [dark] #channel-header-container #meta ~ #buttons ytd-button-renderer a, [dark] #channel-header-container #meta ~ #buttons ytd-button-renderer button { height: 37px !important; background: var(--yt-spec-call-to-action) !important; border: 1px solid #3ea6ff !important; color: #fff !important } #subscribe-button ytd-button-renderer a, ytd-watch-metadata ytd-video-owner-renderer ytd-button-renderer a, ytd-watch-metadata ytd-video-owner-renderer ytd-button-renderer button, #channel-header-container #meta ~ #buttons ytd-button-renderer a, #channel-header-container #meta ~ #buttons ytd-button-renderer button { height: 37px !important; border-radius: 2px !important; text-transform: uppercase !important; letter-spacing: 0.5px; background: var(--yt-spec-call-to-action) !important; border: 0px !important; color: #fff !important } #edit-buttons ytd-button-renderer a, #edit-buttons ytd-button-renderer button { height: 37px !important; letter-spacing: 0.5px; background: var(--yt-spec-call-to-action) !important; border: 1px solid #075cd3 !important; color: #fff !important } [dark] #edit-buttons ytd-button-renderer a, [dark] #edit-buttons ytd-button-renderer button { height: 37px !important; background: var(--yt-spec-call-to-action) !important; border: 1px solid #3ea6ff !important; color: #fff !important } #sponsor-button ytd-button-renderer button { height: 37px !important; border-radius: 2px !important; text-transform: uppercase !important } yt-button-shape.style-scope.ytd-subscribe-button-renderer { display: flex !important } #subscribe-button ytd-subscribe-button-renderer button { height: 37px !important; letter-spacing: 0.5px !important; border-radius: 2px !important; text-transform: uppercase !important } .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--filled { color: #fff !important; background: var(--yt-spec-brand-button-background) !important; border-radius: 2px !important; text-transform: uppercase !important; letter-spacing: 0.5px !important } 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 { height: 37px !important; letter-spacing: 0.5px !important; border-radius: 2px !important; text-transform: uppercase !important } #subscribe-button ytd-subscribe-button-renderer button.yt-spec-button-shape-next--tonal { background-color: var(--yt-spec-badge-chip-background) !important; color: var(--yt-spec-text-secondary) !important } 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 { background-color: var(--yt-spec-badge-chip-background) !important; color: var(--yt-spec-text-secondary) !important; height: 25px !important; letter-spacing: 0.5px !important; border-radius: 2px !important; text-transform: uppercase !important } 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 { background-color: transparent !important; border-radius: 16px !important; padding-left: 14px !important; padding-right: 2px !important; margin-left: 4px !important } #subscribe-button.ytd-channel-renderer a.yt-spec-button-shape-next.yt-spec-button-shape-next--filled.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-m { background: var(--yt-spec-brand-button-background) !important } #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Subscribe"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="ติดตาม"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Pratite kanal"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Teken in"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="kanalına abunə olun"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Langgan"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Pretplatite se na kanal"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Subscriu-te al canal"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="se k"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Abonner på"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="abonnieren."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Telli"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Suscribirse"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Suscribirme"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Harpidetu"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Mag-subscribe sa"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="S'abonner à"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Subscribirse"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Bhalisesla"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Prihlásiť sa na odber kanála"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Hefja áskrift að"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Iscriviti"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Fuatilia"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Abonēt kanālu"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Prenumeruoti"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Feliratkozás"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Abonneren op"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Obuna qiling"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Abonohu në"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Đăng ký"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="alına abone ol."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Падпісацца на канал"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Абониране"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="каналына жазылыңыз."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="арнасына жазылу"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Претплатете се на"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="захиалах."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Оформить подписку на канал"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Пратите канал"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Підписатися на канал"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Subscrever"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Inscreva-se em"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Abonează-te la"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Prenumerera på"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Հետևել"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="הרשמה למינוי לערוץ"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="کو سبسکرائب کریں۔"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="يمكنك الاشتراك في قناة"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="مشترک شدن در"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="को सदस्यता लिनुहोस्।"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="चे सदस्यत्व घ्या."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="के सदस्य बनें."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="ৰ সদস্য হওক।"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="এ সাবস্ক্রাইব করুন।"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="ਨੂੰ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ।"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="પર સબ્સ્ક્રાઇબ કરો."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="ସବ୍‍ସ୍କ୍ରାଇବ୍‍ କରିବେ।"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="சேனலில் குழுசேர்க."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="సబ్‌స్క్రయిబ్ చేయండి."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="ಗೆ ಸಬ್‌ಸ್ಕ್ರೈಬ್ ಮಾಡಿ."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="എന്ന ചാനലിന്‍റെ വരിക്കാരാവുക."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="වෙත දායක වන්න."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="ຕິດຕາມ"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="တွင် စာရင်းသွင်းရန်။"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="გამოწერა."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="订阅"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="訂閱"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="ይመዝገቡ።"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="をチャンネル登録"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="을(를) 구독합니다."], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Tilaa"], #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Subskrybuj kanał"] { border-color: var(--yt-spec-brand-button-background) !important; background: var(--yt-spec-brand-button-background) !important; color: #ffffff !important} 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 { display: none !important } #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] { pointer-events: auto !important; visibility: visible !important; position: static !important } yt-smartimation.ytd-subscribe-button-renderer, .smartimation__content > __slot-el { display: flex !important } /*join/joined button */ #sponsor-button ytd-button-renderer button.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--tonal, #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Join this channel"], button.yt-spec-button-shape-next.yt-spec-button-shape-next--outline.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-m[aria-label="Join this channel"] { background: /*rgb(7,92,211,0.1)*/ transparent !important; color: var(--yt-spec-call-to-action) !important; border: 1px solid var(--yt-spec-call-to-action) !important; padding-left: 18px !important; padding-right: 18px !important } #channel-header-container #meta ~ #buttons ytd-button-renderer button[aria-label="Join this channel"], button.yt-spec-button-shape-next.yt-spec-button-shape-next--outline.yt-spec-button-shape-next--mono.yt-spec-button-shape-next--size-m[aria-label="Join this channel"] { padding-left: 18px !important; padding-right: 18px !important } div#sponsor-button.channel-action.style-scope.ytd-c4-tabbed-header-renderer { margin-left: 0px !important; margin-right: 8px !important } .yt-spec-button-shape-next--size-m { border-radius: 2px !important } ytd-watch-metadata ytd-video-owner-renderer #sponsor-button ytd-button-renderer a.yt-spec-button-shape-next--tonal, #channel-header-container #meta ~ #buttons #sponsor-button ytd-button-renderer a.yt-spec-button-shape-next--tonal { background: rgba(0,0,0,0.1) !important; color: #000 !important; border: none !important } [dark] ytd-watch-metadata ytd-video-owner-renderer #sponsor-button ytd-button-renderer a.yt-spec-button-shape-next--tonal, [dark] #channel-header-container #meta ~ #buttons #sponsor-button ytd-button-renderer a.yt-spec-button-shape-next--tonal { background: rgba(255,255,255,0.1) !important; color: #aaa !important; border: none !important } /**/ /**/ ytd-watch-metadata .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--tonal { background: transparent !important; color: var(--yt-spec-icon-inactive) !important } ytd-watch-metadata .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--tonal:hover, #info .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--tonal:hover { /*background: rgba(0,0,0,0.1) !important;*/ } [dark] ytd-watch-metadata .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--tonal:hover, [dark] #info .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--tonal:hover { /*background: rgba(255,255,255,0.1) !important;*/ } /**/ ytd-watch-metadata ytd-menu-renderer button, ytd-button-renderer yt-button-shape button { border-radius: 0 !important } ytd-watch-metadata ytd-toggle-button-renderer tp-yt-paper-tooltip #tooltip, #info ytd-button-renderer tp-yt-paper-tooltip #tooltip { width: max-content } ytd-watch-metadata #top-level-buttons-computed button { padding: 0 12px; text-transform: uppercase } ytd-watch-metadata #top-level-buttons-computed ytd-button-renderer button { padding: 0 8px; text-transform: uppercase } ytd-watch-metadata #top-level-buttons-computed > *:not(:first-child) { margin: 0 0 0 8px } ytd-watch-metadata #flexible-item-buttons > * { margin-left: 8px} ytd-watch-metadata #flexible-item-buttons button { padding: 0 8px; text-transform: uppercase } ytd-segmented-like-dislike-button-renderer button { padding: 0 12px !important } ytd-watch-metadata ytd-menu-renderer > #button-shape { margin-left: 8px !important } .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--outline { height: 37px !important; padding: 0 11px 0 11px !important; background: transparent !important; border-color: var(--yt-spec-call-to-action) !important; border-radius: 2px !important; text-transform: uppercase !important; letter-spacing: 0.5px !important } .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--outline .yt-spec-button-shape-next__icon { margin-left: 0 !important; margin-right: 0 !important } .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--outline div.yt-spec-button-shape-next__button-text-content { height: 34px !important; margin-left: 8px !important } .yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--outline { height: 37px !important; border-color: var(--yt-spec-call-to-action) !important; border-radius: 2px !important; text-transform: uppercase !important; letter-spacing: 0.5px !important } .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--filled { height: 37px !important; color: #fff; background: var(--yt-spec-brand-button-background) !important; border-radius: 2px !important; text-transform: uppercase !important; letter-spacing: 0.5px !important } .yt-spec-button-shape-next--call-to-action.yt-spec-button-shape-next--filled { border-radius: 2px !important; text-transform: uppercase !important } .yt-spec-button-shape-next--size-s.yt-spec-button-shape-next--icon-button > div.yt-spec-button-shape-next__icon, .yt-spec-button-shape-next--size-s.yt-spec-button-shape-next--icon-button > div.yt-spec-button-shape-next__icon > yt-icon { width: 18px !important; height: 18px !important; color: var(--yt-spec-icon-inactive) !important } .yt-spec-button-shape-next--mono.yt-spec-button-shape-next--tonal { background: var(--yt-spec-badge-chip-background) !important; text-transform: uppercase !important } ytd-comments .yt-core-attributed-string--white-space-no-wrap, ytd-comments yt-dropdown-menu[modern-buttons] #label.yt-dropdown-menu, ytd-comments yt-dropdown-menu[modern-buttons] #icon-label.yt-dropdown-menu { letter-spacing: 0.5px !important; text-transform: uppercase !important } ytd-comments#comments #replies #expander .more-button button > .yt-spec-button-shape-next__button-text-content > span.yt-core-attributed-string.yt-core-attributed-string--white-space-no-wrap, ytd-comments#comments #replies #expander .less-button button > .yt-spec-button-shape-next__button-text-content > span.yt-core-attributed-string.yt-core-attributed-string--white-space-no-wrap { text-transform: none !important } #channel-name.ytd-video-owner-renderer { font-size: 1.4rem !important; line-height: 2rem !important } #info.ytd-video-primary-info-renderer { height: 40px !important } ytd-merch-shelf-renderer { background-color: transparent !important } div#clarify-box.attached-message.style-scope.ytd-watch-flexy, ytd-watch-metadata.watch-active-metadata.style-scope.ytd-watch-flexy.style-scope.ytd-watch-flexy { margin-top: 0px !important } ytd-clarification-renderer.style-scope.ytd-item-section-renderer, ytd-clarification-renderer.style-scope.ytd-watch-flexy { border: 1px solid !important; border-color: #0000001a !important; border-radius: 0px !important } yt-formatted-string.description.style-scope.ytd-clarification-renderer { font-size: 1.4rem !important } div.content-title.style-scope.ytd-clarification-renderer { padding-bottom: 4px !important } ytd-watch-flexy[rounded-player-large]:not([fullscreen]):not([theater]) #ytd-player.ytd-watch-flexy { border-radius: 0px !important } ytd-rich-metadata-renderer[rounded] { border-radius: 0px !important } 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 { border-radius: 0px !important } ytd-toggle-button-renderer.style-scope.ytd-live-chat-frame, yt-live-chat-header-renderer.style-scope.yt-live-chat-renderer { background: var(--yt-spec-brand-background-solid) !important } 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 { padding-top: 4px !important; padding-bottom: 4px !important } ytd-live-chat-frame #show-hide-button.ytd-live-chat-frame>ytd-button-renderer.ytd-live-chat-frame { margin: 0 !important } ytd-live-chat-frame button { height: 31px !important } ytd-live-chat-frame .yt-spec-button-shape-next--size-m { color: var(--yt-live-chat-secondary-text-color) !important; font-size: 11px !important } 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, ytd-engagement-panel-section-list-renderer[modern-panels]:not([live-chat-engagement-panel]) { border-radius: 0px !important } ytd-playlist-panel-renderer[modern-panels]:not([hide-header-text]) .title.ytd-playlist-panel-renderer { font-family: Roboto !important; font-size: 1.4rem !important; line-height: 2rem !important; font-weight: 500 !important } ytd-tvfilm-offer-module-renderer[modern-panels] #header.ytd-tvfilm-offer-module-renderer, ytd-engagement-panel-title-header-renderer[modern-panels]:not([ads-semantic-text]) #title-text.ytd-engagement-panel-title-header-renderer { border-radius: 0px !important; font-family: Roboto !important; font-size: 1.6rem !important; line-height: 2.2rem !important; font-weight: 400 !important } ytd-donation-shelf-renderer[modern-panels] #header-text.ytd-donation-shelf-renderer { font-family: Roboto !important; font-size: 1.6rem !important; font-weight: 500 !important } ytd-universal-watch-card-renderer[rounded] #header.ytd-universal-watch-card-renderer, ytd-universal-watch-card-renderer[rounded] #hero.ytd-universal-watch-card-renderer { border-radius: 0px !important } ytd-video-view-count-renderer { font-size: 1.4rem !important } #upload-info.ytd-video-owner-renderer { margin-left: 4px !important } ytd-text-inline-expander.style-scope.ytd-watch-metadata { margin-left: 64px !important } div#actions.item.style-scope.ytd-watch-metadata { height: 40px !important } ytd-segmented-like-dislike-button-renderer { height: 36px !important } /* Remove rounded corners from the video player (Thanks to oldbutgoldyt for the code) */ .ytp-ad-player-overlay-flyout-cta-rounded { border-radius: 2px !important } .ytp-flyout-cta .ytp-flyout-cta-action-button.ytp-flyout-cta-action-button-rounded { font-family: Arial !important; background: #167ac6 !important; border: solid 1px transparent !important; border-color: #167ac6 !important; border-radius: 2px !important; box-shadow: 0 1px 0 rgba(0,0,0,.05) !important; font-size: 11px !important; font-weight: 500 !important; height: 28px !important; margin: 0 8px 0 0 !important; max-width: 140px !important; padding: 0 10px !important } .ytp-ad-action-interstitial-action-button.ytp-ad-action-interstitial-action-button-rounded { background-color: #167ac6 !important; border: none !important; border-radius: 2px; font-family: Roboto !important; font-size: 23px !important; height: 46px !important; line-height: 46px !important; min-width: 164px !important; padding: 0 20px !important } .ytp-settings-menu { border-radius: 2px !important } .ytp-sb-subscribe { border-radius: 2px !important; background-color: #f00 !important; color: #fff !important; text-transform: uppercase !important } .ytp-sb-unsubscribe { border-radius: 2px !important; background-color: #eee !important; color: #606060 !important; text-transform: uppercase !important } .ytp-sb-subscribe.ytp-sb-disabled { background-color: #f3908b !important } .branding-context-container-inner.ytp-rounded-branding-context { border-radius: 2px !important } .ytp-tooltip.ytp-rounded-tooltip:not(.ytp-preview) .ytp-tooltip-text { border-radius: 2px !important } .ytp-autonav-endscreen-upnext-button.ytp-autonav-endscreen-upnext-button-rounded { border-radius: 2px !important } .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 { border-radius: 0 !important } .ytp-videowall-still-image { border-radius: 0 !important } div.iv-card.iv-card-video.ytp-rounded-info { border-radius: 0 !important } div.iv-card.iv-card-playlist.ytp-rounded-info { border-radius: 0 !important } div.iv-card.iv-card-channel.ytp-rounded-info { border-radius: 0 !important } div.iv-card.ytp-rounded-info { border-radius: 0 !important } .ytp-tooltip.ytp-rounded-tooltip.ytp-text-detail.ytp-preview, .ytp-tooltip.ytp-rounded-tooltip.ytp-text-detail.ytp-preview .ytp-tooltip-bg { border-radius: 2px !important } .ytp-ce-video.ytp-ce-medium-round, .ytp-ce-playlist.ytp-ce-medium-round, .ytp-ce-medium-round .ytp-ce-expanding-overlay-background { border-radius: 0 !important } .ytp-autonav-endscreen-upnext-thumbnail { border-radius: 0 !important } @font-face { font-family: no-parens; src: url("data:application/x-font-woff;base64,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"); unicode-range: U+0028, U+0029 } span.ytp-menu-label-secondary { font-family: "no-parens", "Roboto", sans-serif } .ytp-swatch-color-white { color: #f00 !important } .iv-card { border-radius: 0 !important } .iv-branding .branding-context-container-inner { border-radius: 2px !important } .ytp-offline-slate-bar { border-radius: 2px !important } .ytp-offline-slate-button { border-radius: 2px !important } .ytp-ce-video.ytp-ce-large-round, .ytp-ce-playlist.ytp-ce-large-round, .ytp-ce-large-round .ytp-ce-expanding-overlay-background { border-radius: 0 !important } .ytp-flyout-cta .ytp-flyout-cta-icon.ytp-flyout-cta-icon-rounded { border-radius: 0 !important } .ytp-player-minimized .html5-main-video, .ytp-player-minimized .ytp-miniplayer-scrim, .ytp-player-minimized.html5-video-player { border-radius: 0 !important } ytd-miniplayer #player-container.ytd-miniplayer, ytd-miniplayer #video-container.ytd-miniplayer .video.ytd-miniplayer, ytd-miniplayer #card.ytd-miniplayer, ytd-miniplayer { border-radius: 0 !important } ytd-channel-video-player-renderer[rounded] #player.ytd-channel-video-player-renderer { border-radius: 0 !important } .ytp-tooltip.ytp-rounded-tooltip.ytp-preview:not(.ytp-text-detail), .ytp-tooltip.ytp-rounded-tooltip.ytp-preview:not(.ytp-text-detail) .ytp-tooltip-bg { border-radius: 2px !important } #movie_player > div.ytp-promotooltip-wrapper > div.ytp-promotooltip-container { border-radius: 2px !important } .ytp-fine-scrubbing-container { display: none !important } .ytp-progress-bar, .ytp-heat-map-container, .ytp-fine-scrubbing-container { transform: translateY(0) !important } .ytp-chrome-bottom { height: auto !important } .ytp-tooltip-edu { display: none !important } /* Old compact channel header UI and non-amsterdam playlists */ #buttons.ytd-c4-tabbed-header-renderer { flex-direction: row-reverse !important } ytd-channel-tagline-renderer { display: block !important; padding: 0 !important } #content.ytd-channel-tagline-renderer::before { content: "More about this channel"; font-weight: 500 !important } #content.ytd-channel-tagline-renderer { max-width: 162px !important } #avatar.ytd-c4-tabbed-header-renderer { width: 80px !important; height: 80px !important; margin: 0 24px 0 0 !important; flex: none !important; overflow: hidden !important } .yt-spec-avatar-shape__button--button-giant, .yt-spec-avatar-shape--avatar-size-giant { width: 128px !important; height: 128px !important } #avatar-editor.ytd-c4-tabbed-header-renderer { --ytd-channel-avatar-editor-size: 80px !important } #channel-name.ytd-c4-tabbed-header-renderer { margin-bottom: 0 !important } #channel-header-container.ytd-c4-tabbed-header-renderer { padding-top: 0 !important; align-items: center !important } #inner-header-container.ytd-c4-tabbed-header-renderer { margin-top: 0 !important; align-items: center !important } yt-formatted-string#channel-handle.style-scope.ytd-c4-tabbed-header-renderer, yt-formatted-string#channel-pronouns.style-scope.ytd-c4-tabbed-header-renderer, #videos-count { display: none !important } .meta-item.ytd-c4-tabbed-header-renderer { display: block !important } div#channel-header-links.style-scope.ytd-c4-tabbed-header-renderer, .page-header-view-model-wiz__page-header-attribution { display: none !important } ytd-c4-tabbed-header-renderer[use-page-header-style] #channel-name.ytd-c4-tabbed-header-renderer, [page-subtype="channels"] .page-header-view-model-wiz__page-header-title--page-header-title-large { font-size: 2.4em !important; font-weight: 400 !important; line-height: var(--yt-channel-title-line-height, 3rem) !important } span.delimiter.style-scope.ytd-c4-tabbed-header-renderer, .yt-content-metadata-view-model-wiz__delimiter { display: none !important } div#meta.style-scope.ytd-c4-tabbed-header-renderer { width: auto !important } ytd-c4-tabbed-header-renderer[use-page-header-style] #inner-header-container.ytd-c4-tabbed-header-renderer { flex-direction: row !important } div.page-header-banner.style-scope.ytd-c4-tabbed-header-renderer { margin-left: 0px !important; margin-right: 8px !important; border-radius: 0px !important } [has-inset-banner] #page-header-banner.ytd-tabbed-page-header { padding-left: 0 !important; padding-right: 0 !important } ytd-c4-tabbed-header-renderer[use-page-header-style] .page-header-banner.ytd-c4-tabbed-header-renderer, .yt-image-banner-view-model-wiz--inset { border-radius: 0px !important } ytd-browse[darker-dark-theme][page-subtype="playlist"], ytd-browse[darker-dark-theme][page-subtype="show"] { background-color: var(--yt-spec-general-background-b) !important; padding-top: 0 !important } ytd-two-column-browse-results-renderer.ytd-browse[background-refresh] { background-color: var(--yt-spec-general-background-b) !important } .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 { font-family: "Roboto", "Arial", sans-serif !important; font-size: 2.4rem !important; line-height: 3.2rem !important; font-weight: 400 !important } ytd-browse[page-subtype=playlist][amsterdam] { padding-top: 0 !important } ytd-browse[page-subtype=playlist] ytd-playlist-header-renderer.ytd-browse, ytd-browse[page-subtype=playlist] .page-header-sidebar.ytd-browse, ytd-browse[has-page-header-sidebar] ytd-playlist-header-renderer.ytd-browse, ytd-browse[has-page-header-sidebar] .page-header-sidebar.ytd-browse { margin-left: 0 !important; height: calc(100vh - var(--ytd-toolbar-height)) !important } .immersive-header-container.ytd-playlist-header-renderer { margin-bottom: 0 !important; border-radius: 0 !important } .image-wrapper.ytd-hero-playlist-thumbnail-renderer { border-radius: 0 !important } 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 { color: var(--yt-spec-text-primary) !important; --ytd-text-inline-expander-button-color: var(--yt-spec-text-primary) !important } 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 { color: var(--yt-spec-text-primary) !important } .yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--tonal, .yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--filled { background: transparent !important; color: var(--yt-spec-text-primary) !important; border-radius: 2px !important; text-transform: uppercase } .metadata-text-wrapper.ytd-playlist-header-renderer { --yt-endpoint-color: var(--yt-spec-text-primary) !important; --yt-endpoint-hover-color: var(--yt-spec-text-primary) !important } div.immersive-header-background-wrapper.style-scope.ytd-playlist-header-renderer > div { background: var(--yt-spec-general-background-a) !important } #contents > ytd-playlist-video-list-renderer { background: var(--yt-spec-general-background-b) !important; margin-right: 0px !important } ytd-browse[page-subtype=playlist] ytd-two-column-browse-results-renderer.ytd-browse, ytd-browse[has-page-header-sidebar] ytd-two-column-browse-results-renderer.ytd-browse, ytd-browse[page-subtype=playlist][amsterdam] #alerts.ytd-browse { padding-left: 360px !important; padding-right: 0px !important; margin-bottom: 0 !important } ytd-alert-with-button-renderer[type=INFO], ytd-alert-with-button-renderer[type=SUCCESS] { background: var(--yt-spec-general-background-a) !important } ytd-item-section-renderer.style-scope.ytd-section-list-renderer[page-subtype="playlist"] > #header.ytd-item-section-renderer > ytd-feed-filter-chip-bar-renderer { display: none !important } .yt-spec-button-shape-next--overlay.yt-spec-button-shape-next--tonal { background: var(--yt-spec-base-background) } iron-input.tp-yt-paper-input > input.tp-yt-paper-input, textarea.tp-yt-iron-autogrow-textarea { color: var(--yt-spec-text-primary) !important } #labelAndInputContainer.tp-yt-paper-input-container > label, #labelAndInputContainer.tp-yt-paper-input-container > .paper-input-label { color: var(--yt-spec-text-secondary) } .unfocused-line.tp-yt-paper-input-container, .focused-line.tp-yt-paper-input-container { border-bottom-color: var(--yt-spec-text-primary) !important } [page-subtype="history"] #page-header.ytd-tabbed-page-header { background-color: var(--yt-spec-general-background-a) !important; padding-top: 0 !important; padding-bottom: 0 !important } .page-header-view-model-wiz__page-header-title--page-header-title-large { margin-top: 24px !important; margin-bottom: 8px !important; color: var(--yt-spec-text-primary) !important; font-size: 1.6em !important; line-height: 1.4em !important; font-weight: 500 !important } .yt-content-metadata-view-model-wiz__metadata-text { margin-right: 8px !important } .yt-content-metadata-view-model-wiz__metadata-text, .truncated-text-wiz, .truncated-text-wiz__absolute-button { font-size: 1.4rem !important } /* Remove Shorts, Trending, Podcasts, Shopping and Playables in the guide menus + Other elements to be fixed, modified and removed */ #endpoint.yt-simple-endpoint.ytd-guide-entry-renderer.style-scope[title="Shorts"], #endpoint.yt-simple-endpoint.ytd-mini-guide-entry-renderer.style-scope[title="Shorts"] { display: none !important } #endpoint.yt-simple-endpoint.ytd-guide-entry-renderer.style-scope[title="Your channel"] { display: none !important } ytd-guide-entry-renderer > a[href*="/feed/trending"] { display: none !important } #endpoint.yt-simple-endpoint.ytd-guide-entry-renderer.style-scope[title="Podcasts"], ytd-guide-entry-renderer > a[href*="/feed/podcasts"] { display: none !important } ytd-guide-entry-renderer > a[href*="/channel/UCkYQyvc_i9hXEo4xic9Hh2g"] { display: none !important } ytd-guide-entry-renderer > a[href*="/playables"] { display: none !important } .yt-tab-shape-wiz { padding: 0 32px !important; margin-right: 0 !important } .yt-tab-shape-wiz__tab { font-size: 14px !important; font-weight: 500 !important; letter-spacing: var(--ytd-tab-system-letter-spacing) !important; text-transform: uppercase !important } .yt-tab-group-shape-wiz__slider { display: none !important } yt-formatted-string.style-scope.yt-chip-cloud-chip-renderer, span.style-scope.ytd-rich-shelf-renderer { font-weight: 400 !important } span.style-scope.ytd-shelf-renderer, ytd-reel-shelf-renderer[modern-typography] #title.ytd-reel-shelf-renderer { font-size: 1.6rem !important; font-weight: 500 !important } .count-text.ytd-comments-header-renderer { font-size: 1.6rem !important; line-height: 2.2rem !important; font-weight: 400 !important } 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 { display: none !important } 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, #social-links.ytd-video-description-infocards-section-renderer { display: none !important } ytd-video-description-infocards-section-renderer.style-scope.ytd-structured-description-content-renderer { border-top: 0px !important } button.ytp-button.ytp-jump-button.ytp-jump-button-enabled { display: none !important } 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 { display: block !important } 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 { display: none !important } #play.ytd-moving-thumbnail-renderer { color: #fff !important } ytd-button-renderer.style-scope.yt-chip-cloud-renderer div.yt-spec-button-shape-next__icon, ytd-button-renderer.style-scope.yt-chip-cloud-renderer yt-icon, ytd-button-renderer.ytd-feed-filter-chip-bar-renderer div.yt-spec-button-shape-next__icon, ytd-button-renderer.ytd-feed-filter-chip-bar-renderer yt-icon { width: 20px !important; height: 20px !important } lottie-component.smartimation__border-gradient.lottie-component, smartimation__background-lottie lottie-component { display: none !important } .smartimation--active-border .smartimation__overlay { opacity: 0; z-index: 0 } #return-youtube-dislike-bar, #ryd-bar, .yt-spec-touch-feedback-shape--touch-response .yt-spec-touch-feedback-shape__fill { background: var(--yt-spec-icon-inactive) !important } #ryd-bar-container { margin-top: 2px !important } ytd-watch-flexy #dismissible.ytd-rich-grid-media { flex-direction: row; } ytd-watch-flexy #attached-survey.ytd-rich-grid-media, ytd-watch-flexy #avatar-link.ytd-rich-grid-media, ytd-watch-flexy #avatar-container.ytd-rich-grid-media { display: none; } ytd-watch-flexy ytd-thumbnail.ytd-rich-grid-media, ytd-watch-flexy ytd-playlist-thumbnail.ytd-rich-grid-media { margin-right: 8px; height: 94px; width: 168px; } ytd-thumbnail[size=large][large-margin] ytd-thumbnail-overlay-time-status-renderer.ytd-thumbnail, ytd-thumbnail[size=large][large-margin] ytd-thumbnail-overlay-button-renderer.ytd-thumbnail, ytd-thumbnail[size=large][large-margin] ytd-thumbnail-overlay-toggle-button-renderer.ytd-thumbnail, ytd-thumbnail[size=large] ytd-thumbnail-overlay-time-status-renderer.ytd-thumbnail, ytd-thumbnail[size=large] ytd-thumbnail-overlay-button-renderer.ytd-thumbnail, ytd-thumbnail[size=large] ytd-thumbnail-overlay-toggle-button-renderer.ytd-thumbnail { margin: 4px; } ytd-watch-flexy ytd-rich-item-renderer, ytd-watch-flexy ytd-rich-grid-row #contents.ytd-rich-grid-row { margin: 0; } ytd-watch-flexy ytd-rich-item-renderer[reduced-bottom-margin] { margin-top: 8px; margin-bottom: 0; } ytd-watch-flexy ytd-rich-grid-renderer[reduced-top-margin] #contents.ytd-rich-grid-renderer { padding-top: 0px; } ytd-watch-flexy ytd-rich-grid-media { margin-bottom: 8px; } ytd-watch-flexy #details.ytd-rich-grid-media { width: 100%; min-width: 0; } ytd-watch-flexy ytd-video-meta-block[rich-meta] #metadata-line.ytd-video-meta-block, ytd-watch-flexy #channel-name.ytd-video-meta-block { font-family: "Roboto", "Arial", sans-serif; font-size: 1.2rem; line-height: 1.8rem; font-weight: 400; } ytd-watch-flexy #video-title.ytd-rich-grid-media { margin: 0 0 4px 0; display: block; font-family: "Roboto", "Arial", sans-serif; font-size: 1.4rem; line-height: 2rem; font-weight: 500; overflow: hidden; display: block; max-height: 4rem; -webkit-line-clamp: 2; display: box; display: -webkit-box; -webkit-box-orient: vertical; text-overflow: ellipsis; white-space: normal; } ytd-watch-flexy h3.ytd-rich-grid-media { margin: 0; } ytd-watch-flexy .title-badge.ytd-rich-grid-media, ytd-watch-flexy .video-badge.ytd-rich-grid-media { margin-top: 0; } ytd-watch-flexy ytd-rich-section-renderer.style-scope.ytd-rich-grid-renderer { display: none; } ytd-watch-flexy ytd-rich-grid-renderer[hide-chips-bar] ytd-feed-filter-chip-bar-renderer.ytd-rich-grid-renderer, ytd-watch-flexy ytd-rich-grid-renderer[hide-chips-bar-on-watch] ytd-feed-filter-chip-bar-renderer.ytd-rich-grid-renderer, ytd-watch-flexy ytd-rich-grid-renderer[hide-chips-bar-on-home] #header.ytd-rich-grid-renderer ytd-feed-filter-chip-bar-renderer.ytd-rich-grid-renderer { display: flex; height: 51px; margin-bottom: 8px; } ytd-watch-flexy #chips-wrapper.ytd-feed-filter-chip-bar-renderer, ytd-watch-flexy ytd-feed-filter-chip-bar-renderer #left-arrow-button.ytd-feed-filter-chip-bar-renderer, ytd-watch-flexy ytd-feed-filter-chip-bar-renderer #right-arrow-button.ytd-feed-filter-chip-bar-renderer { background: var(--yt-spec-general-background-a) !important; } ytd-watch-flexy #left-arrow.ytd-feed-filter-chip-bar-renderer:after { background: linear-gradient(to right, var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) 10%, rgba(249, 249, 249, 0) 90%) !important; } ytd-watch-flexy #right-arrow.ytd-feed-filter-chip-bar-renderer:before { background: linear-gradient(to left, var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) 10%, rgba(249, 249, 249, 0) 90%) !important; } ytd-watch-flexy ytd-feed-filter-chip-bar-renderer[is-dark-theme] #left-arrow.ytd-feed-filter-chip-bar-renderer:after { background: linear-gradient(to right, var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) 10%, rgba(24, 24, 24, 0) 90%) !important; } ytd-watch-flexy ytd-feed-filter-chip-bar-renderer[is-dark-theme] #right-arrow.ytd-feed-filter-chip-bar-renderer:before { background: linear-gradient(to left, var(--ytd-chip-cloud-background, var(--yt-spec-general-background-a)) 10%, rgba(24, 24, 24, 0) 90%) !important; } ytd-watch-flexy #chips-wrapper.ytd-feed-filter-chip-bar-renderer { position: relative; top: 0; } ytd-watch-flexy ytd-feed-filter-chip-bar-renderer[fluid-width] #chips-content.ytd-feed-filter-chip-bar-renderer { padding: 0; } ytd-watch-flexy yt-chip-cloud-chip-renderer.ytd-feed-filter-chip-bar-renderer, ytd-watch-flexy yt-chip-cloud-chip-renderer.ytd-feed-filter-chip-bar-renderer:first-of-type { margin: 8px; margin-left: 0; } ytd-watch-flexy ytd-button-renderer.ytd-feed-filter-chip-bar-renderer { margin: 0; padding: 0 8px; } #meta #avatar { width: 48px; height: 48px; margin-right: 12px; } #meta #avatar img { width: 100%; } ytd-video-primary-info-renderer div#flexible-item-buttons.style-scope.ytd-menu-renderer > yt-button-view-model > button-view-model > 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, ytd-video-primary-info-renderer div#top-level-buttons-computed.top-level-buttons.style-scope.ytd-menu-renderer > yt-button-view-model > button-view-model > 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, ytd-video-primary-info-renderer 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--segmented-end.yt-spec-button-shape-next--icon-leading { padding-left: 12px !important; padding-right: 6px !important; background-color: transparent !important } ytd-video-primary-info-renderer 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, 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.yt-spec-button-shape-next--segmented-start { padding-left: 12px !important; padding-right: 6px !important; background-color: transparent !important } ytd-video-primary-info-renderer 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.yt-spec-button-shape-next--segmented-start { padding-right: 16px !important } ytd-video-primary-info-renderer dislike-button-view-model.YtDislikeButtonViewModelHost > toggle-button-view-model > 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, ytd-menu-renderer[has-items] yt-button-shape.ytd-menu-renderer > 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-button { background-color: transparent !important } ytd-video-primary-info-renderer .yt-spec-button-shape-next--size-m.yt-spec-button-shape-next--segmented-start::after { width: 0px !important } ytd-video-primary-info-renderer 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-button.yt-spec-button-shape-next--segmented-end { background: transparent !important } ytd-video-primary-info-renderer 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-button.yt-spec-button-shape-next--segmented-end[aria-label="Dislike this video"] { width: 92px !important } ytd-video-primary-info-renderer 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-button.yt-spec-button-shape-next--segmented-end[aria-label="Dislike this video"]::after { padding-left: 6px; content: "Dislike" } ytd-video-primary-info-renderer 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-button.yt-spec-button-shape-next--segmented-end[aria-label="Marcar “No me gusta” en el video"] { width: 134px !important } ytd-video-primary-info-renderer 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-button.yt-spec-button-shape-next--segmented-end[aria-label="Marcar “No me gusta” en el video"]::after { padding-left: 6px; content: "No me gusta" } ytd-video-primary-info-renderer 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-button.yt-spec-button-shape-next--segmented-end[aria-label="Je n'aime pas cette vidéo"] { width: 106px !important } ytd-video-primary-info-renderer 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-button.yt-spec-button-shape-next--segmented-end[aria-label="Je n'aime pas cette vidéo"]::after { padding-left: 6px; content: "Je n'aime" } ytd-watch-metadata[title-headline-m] h1.ytd-watch-metadata { font-size: 2rem !important; font-weight: 400 !important; line-height: 2.8rem !important } #less-replies > yt-button-shape > button > div.yt-spec-button-shape-next__icon [d*="M18.4 14.6 12 8.3l-6.4 6.3.8.8L12 9.7l5.6 5.7z"] { d: path("m7 14 5-5 5 5z") !important } #more-replies > yt-button-shape > button > div.yt-spec-button-shape-next__icon [d*="m18 9.28-6.35 6.35-6.37-6.35.72-.71 5.64 5.65 5.65-5.65z"] { d: path("m7 10 5 5 5-5z") !important } #less-replies-icon > yt-button-shape > button > div [d*="M18.4 14.6 12 8.3l-6.4 6.3.8.8L12 9.7l5.6 5.7z"] { d: path("m7 14 5-5 5 5z") !important } #more-replies-icon > yt-button-shape > button > div [d*="m18 9.28-6.35 6.35-6.37-6.35.72-.71 5.64 5.65 5.65-5.65z"] { d: path("m7 10 5 5 5-5z") !important } #pinned-comment-badge > ytd-pinned-comment-badge-renderer > yt-icon > yt-icon-shape { color: var(--yt-spec-text-primary) !important } [d*="M18 4v15.06l-5.42-3.87-.58-.42-.58.42L6 19.06V4h12m1-1H5v18l7-5 7 5V3z"] { d: path("M22 13h-4v4h-2v-4h-4v-2h4V7h2v4h4v2zm-8-6H2v1h12V7zM2 12h8v-1H2v1zm0 4h8v-1H2v1z") } [d*="M16.296 16.996a8 8 0 11.707-.708l3.909 3.91-.707.707-3.909-3.909zM18 11a7 7 0 00-14 0 7 7 0 1014 0z"] { 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") } [d*="m12.71 12 8.15 8.15-.71.71L12 12.71l-8.15 8.15-.71-.71L11.29 12 3.15 3.85l.71-.71L12 11.29l8.15-8.15.71.71L12.71 12z"] { d: path("M12.7,12l6.6,6.6l-0.7,0.7L12,12.7l-6.6,6.6l-0.7-0.7l6.6-6.6L4.6,5.4l0.7-0.7l6.6,6.6l6.6-6.6l0.7,0.7L12.7,12z") } /* Fix disappearing bar in masthead */ `; if (typeof GM_addStyle !== "undefined") { GM_addStyle(css); } else { let styleNode = document.createElement("style"); styleNode.appendChild(document.createTextNode(css)); (document.querySelector("head") || document.documentElement).appendChild(styleNode); } })(); // Re-add 'Explore' tab in sidebar (it also replaces the 'Shorts' tab) function waitForElm(selector) { return new Promise(resolve => { if (document.querySelector(selector)) { return resolve(document.querySelector(selector)); } const observer = new MutationObserver(mutations => { if (document.querySelector(selector)) { resolve(document.querySelector(selector)); observer.disconnect(); } }); observer.observe(document.body, { childList: true, subtree: true }); }); } function restoreTrending() { var trendingData = { "navigationEndpoint": { "clickTrackingParams": "CBwQtSwYASITCNqYh-qO_fACFcoRrQYdP44D9Q==", "commandMetadata": { "webCommandMetadata": { "url": "/feed/explore", "webPageType": "WEB_PAGE_TYPE_BROWSE", "rootVe": 6827, "apiUrl": "/youtubei/v1/browse" } }, "browseEndpoint": { "browseId": "FEtrending" } }, "icon": { "iconType": "EXPLORE" }, "trackingParams": "CBwQtSwYASITCNqYh-qO_fACFcoRrQYdP44D9Q==", "formattedTitle": { "simpleText": "Explore" }, "accessibility": { "accessibilityData": { "label": "Explore" } }, "isPrimary": true }; var guidetemplate = `
`; document.querySelector(`#items > ytd-guide-entry-renderer:nth-child(2)`).data = trendingData; var miniguidetemplate = `
`; document.querySelector(`#items > ytd-mini-guide-entry-renderer:nth-child(2)`).data = trendingData; } waitForElm("#items.ytd-guide-section-renderer").then((elm) => { restoreTrending(); }); waitForElm("#items.ytd-mini-guide-section-renderer").then((elm) => { restoreTrending(); }); // Restore old comment replies UI and more additions added (ft. YT Video Resize Fix (special thanks to CY Fung)) var observingComments = false; var hl; const cfconfig = { unicodeEmojis: false }; const cfi18n = { en: { viewSingular: "View reply", viewMulti: "View %s replies", viewSingularOwner: "View reply from %s", viewMultiOwner: "View %s replies from %s and others", hideSingular: "Hide reply", hideMulti: "Hide replies", replyCountIsolator: /( REPLIES)|( REPLY)/ } } /** * Get a string from the localization strings. * * @param {string} string Name of string to get * @param {string} hl Language to use. * @param {...array} args Strings. * @returns {string} */ function getString(string, hl = "en", ...args) { if (!string) return; var str; if (cfi18n[hl]) { if (cfi18n[hl][string]) { str = cfi18n[hl][string]; } else if (cfi18n.en[string]) { str = cfi18n.en[string]; } else { return; } } else { if (cfi18n.en[string]) str = cfi18n.en[string]; } for (var i = 0; i < args.length; i++) { str = str.replace(/%s/, args[i]); } return str; } /** * Wait for a selector to exist * * @param {string} selector CSS Selector * @param {HTMLElement} base Element to search inside * @returns {Node} */ async function waitForElm(selector, base = document) { if (!selector) return null; if (!base.querySelector) return null; while (base.querySelector(selector) == null) { await new Promise(r => requestAnimationFrame(r)); }; return base.querySelector(selector); }; /** * Is a value in an array? * * @param {*} needle Value to search * @param {Array} haystack Array to search * @returns {boolean} */ function inArray(needle, haystack) { for (var i = 0; i < haystack.length; i++) { if (needle == haystack[i]) return true; } return false; } /** * Get text of an InnerTube string. * * @param {object} object String container. */ function getSimpleString(object) { if (object.simpleText) return object.simpleText; var str = ""; for (var i = 0; i < object.runs.length; i++) { str += object.runs[i].text; } return str; } /** * Format a commentRenderer. * * @param {object} comment commentRenderer from InnerTube. */ function formatComment(comment) { if (cfconfig.unicodeEmojis) { var runs; try { runs = comment.contentText.runs for (var i = 0; i < runs.length; i++) { delete runs[i].emoji; delete runs[i].loggingDirectives; } } catch(err) {} } return comment; } /** * Format a commentThreadRenderer. * * @param {object} thread commentThreadRenderer from InnerTube. */ async function formatCommentThread(thread) { if (thread.comment.commentRenderer) { thread.comment.commentRenderer = formatComment(thread.comment.commentRenderer); } var replies; try { replies = thread.replies.commentRepliesRenderer; if (replies.viewRepliesIcon) { replies.viewReplies.buttonRenderer.icon = replies.viewRepliesIcon.buttonRenderer.icon; delete replies.viewRepliesIcon; } if (replies.hideRepliesIcon) { replies.hideReplies.buttonRenderer.icon = replies.hideRepliesIcon.buttonRenderer.icon; delete replies.hideRepliesIcon; } var creatorName; try { creatorName = replies.viewRepliesCreatorThumbnail.accessibility.accessibilityData.label; delete replies.viewRepliesCreatorThumbnail; } catch(err) {} var replyCount = getSimpleString(replies.viewReplies.buttonRenderer.text); replyCount = +replyCount.replace(getString("replyCountIsolator", hl), ""); var viewMultiString = creatorName ? "viewMultiOwner" : "viewMulti"; var viewSingleString = creatorName ? "viewSingularOwner" : "viewSingular"; replies.viewReplies.buttonRenderer.text = { runs: [ { text: (replyCount > 1) ? getString(viewMultiString, hl, replyCount, creatorName) : getString(viewSingleString, hl, creatorName) } ] } replies.hideReplies.buttonRenderer.text = { runs: [ { text: (replyCount > 1) ? getString("hideMulti", hl) : getString("hideSingular", hl) } ] }; } catch(err) {} return thread; } /** * Force Polymer to refresh data of an element. * * @param {Node} element Element to refresh data of. */ function refreshData(element) { var clone = element.cloneNode(); clone.data = element.data; // Let the script know we left our mark // in a way that doesn't rely on classes // because Polymer likes to cast comments // into the void for later reuse clone.data.fixedByCF = true; for (var i in element.properties) { clone[i] = element[i]; } element.insertAdjacentElement("afterend", clone); element.remove(); } var commentObserver = new MutationObserver((list) => { list.forEach(async (mutation) => { if (mutation.addedNodes) { for (var i = 0; i < mutation.addedNodes.length; i++) { var elm = mutation.addedNodes[i]; if (elm.classList && elm.data && !elm.data.fixedByCF) { if (elm.tagName == "YTD-COMMENT-THREAD-RENDERER") { elm.data = await formatCommentThread(elm.data); refreshData(elm); } else if (elm.tagName == "YTD-COMMENT-RENDERER") { if (!elm.classList.contains("ytd-comment-thread-renderer")) { elm.data = formatComment(elm.data); refreshData(elm); } } } } } }); }); document.addEventListener("yt-page-data-updated", async (e) => { hl = yt.config_.HL; commentObserver.observe(document.querySelector("ytd-app"), { childList: true, subtree: true }); }); /* jshint esversion:8 */ ((__CONTEXT01__) => { 'use strict'; const win = this instanceof Window ? this : window; // Create a unique key for the script and check if it is already running const hkey_script = 'ahceihvpbosz'; if (win[hkey_script]) throw new Error('Duplicated Userscript Calling'); // avoid duplicated scripting win[hkey_script] = true; const insp = o => o ? (o.polymerController || o.inst || o || 0) : (o || 0); const indr = o => insp(o).$ || o.$ || 0; /** @type {globalThis.PromiseConstructor} */ const Promise = (async () => { })().constructor; // YouTube hacks Promise in WaterFox Classic and "Promise.resolve(0)" nevers resolve. const cleanContext = async (win) => { const waitFn = requestAnimationFrame; // shall have been binded to window try { let mx = 16; // MAX TRIAL const frameId = 'vanillajs-iframe-v1' let frame = document.getElementById(frameId); let removeIframeFn = null; if (!frame) { frame = document.createElement('iframe'); frame.id = frameId; const blobURL = typeof webkitCancelAnimationFrame === 'function' && typeof kagi === 'undefined' ? (frame.src = URL.createObjectURL(new Blob([], { type: 'text/html' }))) : null; // avoid Brave Crash frame.sandbox = 'allow-same-origin'; // script cannot be run inside iframe but API can be obtained from iframe let n = document.createElement('noscript'); // wrap into NOSCRPIT to avoid reflow (layouting) n.appendChild(frame); while (!document.documentElement && mx-- > 0) await new Promise(waitFn); // requestAnimationFrame here could get modified by YouTube engine const root = document.documentElement; root.appendChild(n); // throw error if root is null due to exceeding MAX TRIAL if (blobURL) Promise.resolve().then(() => URL.revokeObjectURL(blobURL)); removeIframeFn = (setTimeout) => { const removeIframeOnDocumentReady = (e) => { e && win.removeEventListener("DOMContentLoaded", removeIframeOnDocumentReady, false); e = n; n = win = removeIframeFn = 0; setTimeout ? setTimeout(() => e.remove(), 200) : e.remove(); } if (!setTimeout || document.readyState !== 'loading') { removeIframeOnDocumentReady(); } else { win.addEventListener("DOMContentLoaded", removeIframeOnDocumentReady, false); } } } while (!frame.contentWindow && mx-- > 0) await new Promise(waitFn); const fc = frame.contentWindow; if (!fc) throw "window is not found."; // throw error if root is null due to exceeding MAX TRIAL try { const { requestAnimationFrame, setTimeout, clearTimeout } = fc; const res = { requestAnimationFrame, setTimeout, clearTimeout }; for (let k in res) res[k] = res[k].bind(win); // necessary if (removeIframeFn) Promise.resolve(res.setTimeout).then(removeIframeFn); return res; } catch (e) { if (removeIframeFn) removeIframeFn(); return null; } } catch (e) { console.warn(e); return null; } }; const isWatchPageURL = (url) => { url = url || location; return location.pathname === '/watch' || location.pathname.startsWith('/live/') }; cleanContext(win).then(__CONTEXT02__ => { if (!__CONTEXT02__) return null; const { ResizeObserver } = __CONTEXT01__; const { requestAnimationFrame, setTimeout, clearTimeout } = __CONTEXT02__; const elements = {}; let rid1 = 0; let rid2 = 0; /** @type {MutationObserver | null} */ let attrObserver = null; /** @type {ResizeObserver | null} */ let resizeObserver = null; let isHTMLAttrApplied = false; const core = { begin() { document.addEventListener('yt-player-updated', core.hanlder, true); document.addEventListener('ytd-navigate-finish', core.hanlder, true); }, hanlder: () => { rid1++; if (rid1 > 1e9) rid1 = 9; const tid = rid1; requestAnimationFrame(() => { if (tid !== rid1) return; core.runner(); }) }, async runner() { if (!location.href.startsWith('https://www.youtube.com/')) return; if (!isWatchPageURL()) return; elements.ytdFlexy = document.querySelector('ytd-watch-flexy'); elements.video = document.querySelector('ytd-watch-flexy #movie_player video, ytd-watch-flexy #movie_player audio.video-stream.html5-main-video'); if (elements.ytdFlexy && elements.video) { } else return; elements.moviePlayer = elements.video.closest('#movie_player'); if (!elements.moviePlayer) return; // resize Video let { ytdFlexy } = elements; if (!ytdFlexy.ElYTL) { ytdFlexy.ElYTL = 1; const ytdFlexyCnt = insp(ytdFlexy); if (typeof ytdFlexyCnt.calculateNormalPlayerSize_ === 'function') { ytdFlexyCnt.calculateNormalPlayerSize_ = core.resizeFunc(ytdFlexyCnt.calculateNormalPlayerSize_, 1); } else { console.warn('ytdFlexyCnt.calculateNormalPlayerSize_ is not a function.') } if (typeof ytdFlexyCnt.calculateCurrentPlayerSize_ === 'function') { ytdFlexyCnt.calculateCurrentPlayerSize_ = core.resizeFunc(ytdFlexyCnt.calculateCurrentPlayerSize_, 0); } else { console.warn('ytdFlexyCnt.calculateCurrentPlayerSize_ is not a function.') } } ytdFlexy = null; // when video is fetched elements.video.removeEventListener('canplay', core.triggerResizeDelayed, false); elements.video.addEventListener('canplay', core.triggerResizeDelayed, false); // when video is resized if (resizeObserver) { resizeObserver.disconnect(); resizeObserver = null; } if (typeof ResizeObserver === 'function') { resizeObserver = new ResizeObserver(core.triggerResizeDelayed); resizeObserver.observe(elements.moviePlayer); } // MutationObserver:[collapsed] @ ytd-live-chat-frame#chat if (attrObserver) { attrObserver.takeRecords(); attrObserver.disconnect(); attrObserver = null; } let chat = document.querySelector('ytd-watch-flexy ytd-live-chat-frame#chat'); if (chat) { // resize due to DOM update attrObserver = new MutationObserver(core.triggerResizeDelayed); attrObserver.observe(chat, { attributes: true, attributeFilter: ["collapsed"] }); chat = null; } // resize on idle Promise.resolve().then(core.triggerResizeDelayed); }, resizeFunc(originalFunc, kb) { return function () { rid2++; if (!isHTMLAttrApplied) { isHTMLAttrApplied = true; Promise.resolve(0).then(() => { document.documentElement.classList.add('youtube-video-resize-fix'); }).catch(console.warn); } if (document.fullscreenElement === null) { // calculateCurrentPlayerSize_ shall be always return NaN to make correct positioning of toolbars if (!kb) return { width: NaN, height: NaN }; let ret = core.calculateSize(); if (ret.height > 0 && ret.width > 0) { return ret; } } return originalFunc.apply(this, arguments); } }, calculateSize_() { const { moviePlayer, video } = elements; const rect1 = { width: video.videoWidth, height: video.videoHeight }; // native values independent of css rules if (rect1.width > 0 && rect1.height > 0) { const rect2 = moviePlayer.getBoundingClientRect(); const aspectRatio = rect1.width / rect1.height; let h2 = rect2.width / aspectRatio; let w2 = rect2.height * aspectRatio; return { rect2, h2, w2 }; } return null; }, calculateSize() { let rs = core.calculateSize_(); if (!rs) return { width: NaN, height: NaN }; const { rect2, h2, w2 } = rs; if (h2 > rect2.height) { return { width: w2, height: rect2.height }; } else { return { width: rect2.width, height: h2 }; } }, triggerResizeDelayed: () => { rid2++; if (rid2 > 1e9) rid2 = 9; const tid = rid2; requestAnimationFrame(() => { if (tid !== rid2) return; const { ytdFlexy } = elements; let r = false; const ytdFlexyCnt = insp(ytdFlexy); const windowSize_ = ytdFlexyCnt.windowSize_; if (windowSize_ && typeof ytdFlexyCnt.onWindowResized_ === 'function') { try { ytdFlexyCnt.onWindowResized_(windowSize_); r = true; } catch (e) { } } if (!r) window.dispatchEvent(new Event('resize')); }) } }; core.begin(); // YouTube Watch Page Reflect (WPR) // This script enhances the functionality of YouTube pages by reflecting changes in the page state. (async function youTubeWPR() { let checkPageVisibilityChanged = false; // A WeakSet to keep track of elements being monitored for mutations. const monitorWeakSet = new WeakSet(); /** @type {globalThis.PromiseConstructor} */ const Promise = (async () => { })().constructor; // Function to reflect the current state of the YouTube page. async function _reflect() { await Promise.resolve(); const youtubeWpr = document.documentElement.getAttribute("youtube-wpr"); let s = ''; // Check if the current page is the video watch page. if (isWatchPageURL()) { let watch = document.querySelector("ytd-watch-flexy"); let chat = document.querySelector("ytd-live-chat-frame#chat"); if (watch) { // Determine the state of the chat and video player on the watch page and generate a state string. s += !chat ? 'h0' : (chat.hasAttribute('collapsed') || !document.querySelector('iframe#chatframe')) ? 'h1' : 'h2'; s += watch.hasAttribute('is-two-columns_') ? 's' : 'S'; s += watch.hasAttribute('fullscreen') ? 'F' : 'f'; s += watch.hasAttribute('theater') ? 'T' : 't'; } } // Update the reflected state if it has changed. if (s !== youtubeWpr) { document.documentElement.setAttribute("youtube-wpr", s); } } // Function to reflect changes in specific attributes of monitored elements. async function reflect(nodeName, attrNames, forced) { await Promise.resolve(); if (!forced) { let skip = true; for (const attrName of attrNames) { if (nodeName === 'ytd-live-chat-frame') { if (attrName === 'collapsed') skip = false; } else if (nodeName === 'ytd-watch-flexy') { if (attrName === 'is-two-columns_') skip = false; else if (attrName === 'fullscreen') skip = false; else if (attrName === 'theater') skip = false; } } if (skip) return; } // Log the mutated element and its attributes. // console.log(nodeName, attrNames); // Call _reflect() to update the reflected state. _reflect(); } // Callback function for the MutationObserver that tracks mutations in monitored elements. function callback(mutationsList) { const attrNames = new Set(); let nodeName = null; for (const mutation of mutationsList) { if (nodeName === null && mutation.target) nodeName = mutation.target.nodeName.toLowerCase(); attrNames.add(mutation.attributeName); } reflect(nodeName, attrNames, false); } function getParent(element) { return element.__shady_native_parentNode || element.__shady_parentNode || element.parentNode; } let lastPageTypeChanged = 0; function chatContainerMutationHandler() { if (Date.now() - lastPageTypeChanged < 800) _reflect(); } // Function to start monitoring an element for mutations. function monitor(element) { if (!element) return; if (monitorWeakSet.has(element)) { return; } monitorWeakSet.add(element); const observer = new MutationObserver(callback); observer.observe(element, { attributes: true }); if (element.id === 'chat') { const parentNode = getParent(element); if (parentNode instanceof Element && parentNode.id === 'chat-container' && !monitorWeakSet.has(parentNode)) { monitorWeakSet.add(parentNode); const observer = new MutationObserver(chatContainerMutationHandler); observer.observe(parentNode, { childList: true, subtree: false }); } } return 1; } let timeout = 0; // Function to monitor relevant elements and update the reflected state. let g = async (forced) => { await Promise.resolve(); let b = 0; b = b | monitor(document.querySelector("ytd-watch-flexy")); b = b | monitor(document.querySelector("ytd-live-chat-frame#chat")); if (b || forced) { _reflect(); } } // let renderId = 0; // Event handler function that triggers when the page finishes navigation or page data updates. let eventHandlerFunc = async (evt) => { checkPageVisibilityChanged = true; timeout = Date.now() + 800; g(1); if (evt.type === 'yt-navigate-finish') { // delay required when page type is changed for #chat (home -> watch). setTimeout(() => { g(1); }, 80); } else if (evt.type === 'yt-page-type-changed') { lastPageTypeChanged = Date.now(); // setTimeout(() => { // if (renderId > 1e9) renderId = 9; // const t = ++renderId; // requestAnimationFrame(() => { // if (t !== renderId) return; // g(1); // }); // }, 180); if (typeof requestIdleCallback === 'function') { requestIdleCallback(() => { g(1); }); } } } let loadState = 0; // Function to initialize the script and start monitoring the page. async function actor() { if (loadState === 0) { if (!document.documentElement.hasAttribute("youtube-wpr")) { loadState = 1; document.documentElement.setAttribute("youtube-wpr", ""); document.addEventListener("yt-navigate-finish", eventHandlerFunc, false); document.addEventListener("yt-page-data-updated", eventHandlerFunc, false); document.addEventListener("yt-page-type-changed", eventHandlerFunc, false); } else { loadState = -1; document.removeEventListener("yt-page-data-fetched", actor, false); return; } } if (loadState === 1) { timeout = Date.now() + 800; // Function to continuously monitor elements and update the reflected state. let pf = () => { g(0); if (Date.now() < timeout) requestAnimationFrame(pf); }; pf(); } } // Event listener that triggers when page data is fetched. document.addEventListener("yt-page-data-fetched", actor, false); // Update after visibility changed (looks like there are bugs due to inactive tab) document.addEventListener('visibilitychange', () => { if (document.visibilityState !== 'visible') return; if (checkPageVisibilityChanged) { checkPageVisibilityChanged = false; setTimeout(() => { g(1); }, 100); requestAnimationFrame(() => { g(1); }); } }, false); })(); }); })({ ResizeObserver });