YouTube Live Borderless

Make YouTube Live Borderless

当前为 2023-05-03 提交的版本,查看 最新版本

  1. /* ==UserStyle==
  2. @name YouTube Live Borderless
  3. @version 0.4.34
  4. @namespace github.com/cyfung1031
  5. @license MIT
  6. @description Make YouTube Live Borderless
  7. @author CY Fung
  8. @supportURL https://github.com/cyfung1031/YouTube-Live-Borderless/
  9. @compatible edge Edge [Blink] >= 105; Stylus (Beta)
  10. @compatible chrome Chrome >= 105; Stylus (Beta); Chrome 101-104 requires "enable-experimental-web-platform-features"
  11. @compatible firefox FireFox >= 103; Stylus; layout.css.has-selector.enabled = true; note: some features might not be very stable!!
  12. @compatible opera Opera >= 91; Stylus (Beta)
  13. @compatible safari Safari >= 15.4; Stylus
  14. @preprocessor stylus
  15. @var select mode-for-two-col "Mode ##TwoColumns" {
  16. "Expanded Panel Only #Recommended": "expanded-panel",
  17. "Expanded Live Chat Only": "expanded-live",
  18. "Expandable Live Chat Only": "expandable-live",
  19. "Always": "always"
  20. }
  21. @var select mode-for-single-col "Mode ##SingleColumn" {
  22. "YT Mobile #Recommended": "mobile",
  23. "Normal": "normal",
  24. "Disabled": "disabled"
  25. }
  26. @var checkbox no-masthead "Top.MastheadBar ::Hide" 0
  27. @var number masthead-hoverable-h "Top.MastheadBar ::Hoverable >>>1_alwaysHide" [4, 1, 8, 1]
  28. @var checkbox disable-cinematics "CinematicsEffect ::Disable" 0
  29. @var range video-enlarging "Video.Enlarging >>>Video.Border.Fine.Tune" [0, 0, 8, 2]
  30. @var range video-padding-left-right "Video.Padding.LeftRight (Experimental)" [0, 0, 18, 2, 'px']
  31. @var range video-padding-top-bottom "Video.Padding.TopBottom (Experimental)" [0, 0, 18, 2, 'px']
  32. @var range primary-content-margin "PrimaryContent ::Margin" [24, 6, 48, 6, "px"]
  33. @var range video-title-size "VideoTitle ::Size" [2.0, 1.0, 3.0, 0.2, "rem"]
  34. @var checkbox no-bottom-row "Bottom.PrimaryMetaInfoRow ::Hide" 0
  35. @var range min-below-area "BelowArea ::Minimum >>>10px_disable" [120, 10, 240, 10, 'px']
  36. @var range min-below-area-for-theater "WideTheater.BelowArea ::Minimum >>>10px_disable" [120, 10, 240, 10, 'px']
  37. @var number side-panel-width "SidePanel ::Width" [440, 320, 640, 20, "px"]
  38. @var checkbox no-round-border "RoundBorder ::Disable" 1
  39. @var number chat-zoom-for-right-col "RightCol.Chat ::Zoom" [1.0, 0.4, 1.2, 0.05]
  40. @var range chat-btn-height "RightCol.Chat ::SpaceAbove@Zoom >>>4px_disable" [36, 4, 60, 4, 'px']
  41. @var number chat-zoom-for-mobile "YTMobile.Chat ::Zoom" [1.0, 0.4, 1.2, 0.05]
  42. @var range chat-min-height "YTMobile.Chat ::Min.Height" [400, 20, 900, 10, 'px']
  43. @var checkbox t34 "Disable Some CSS Rules for laggy page" 0
  44. ==/UserStyle== */
  45. /*
  46.  
  47. @var range chrome-bottom-bar-margin "Chrome Bottom Bar Margin" [12, 6, 48, 6, "px"]
  48.  
  49. Chrome Bottom Bar Margin is 12px only due to
  50.  
  51. MU = function(a) {
  52. var b = a.u.ag()
  53. , c = a.G.getVideoData().D
  54. , d = 0;
  55. a.u.ag() && a.u.Me() && (d = (a.G.fb().getPlayerSize().width - a.G.getVideoContentRect().width) / 2);
  56. return 12 * (c ? 0 : b ? 2 : 1) + d
  57. }
  58.  
  59. */
  60. // d
  61. t33 = t34
  62. @-moz-document url-prefix("https://www.youtube.com/watch?v=") {
  63.  
  64. dummy() {
  65. // dummy
  66. border: 0;
  67. }
  68. buildL4(type, args...) {
  69. st1 = join('', ':', type, '(', join('\, ', args), ')')
  70. selector(st1)
  71. }
  72.  
  73. if min-below-area <= 10px {
  74. min-below-area = 0px
  75. }
  76. if min-below-area-for-theater <= 10px {
  77. min-below-area-for-theater = 0px
  78. }
  79. chat-btn-height = chat-btn-height + 1px
  80. if chat-btn-height == 4px + 1px {
  81. chat-btn-height = 0px
  82. }
  83. masthead-hoverable-height = (masthead-hoverable-h - 1) * 2px
  84.  
  85. no-masthead-w = no-masthead //
  86. chrome-bottom-bar-margin = 12px // this cannot be changed
  87.  
  88. single-col-mobile = (mode-for-single-col == "mobile" ? 1 : 0) //
  89. if single-col-mobile == 1 and no-masthead-w == 0 {
  90. no-masthead-w = 2 //
  91. }
  92. chat-zoom-for-mobile-enable = ((chat-zoom-for-mobile < 1) or (chat-zoom-for-mobile > 1))
  93.  
  94. content361(){
  95. html {
  96. --ylb-min-below-area: min-below-area;
  97. }
  98. // general fix
  99. ytd-watch-flexy[theater] #player-theater-container.ytd-watch-flexy {
  100. min-height: unset;
  101. }
  102. #movie_player .ytp-cued-thumbnail-overlay-image {
  103. /* background-size: contain !important; */
  104. background-size: auto 100% !important;
  105. }
  106. ytd-watch-flexy:not([is-two-columns_]) ytd-watch-metadata {
  107. padding-top: var(--ytd-margin-3x);
  108. }
  109. ytd-watch-flexy:not([is-two-columns_]):not([fullscreen]) #primary.ytd-watch-flexy {
  110. padding-top: 0;
  111. margin-top: 0;
  112. }
  113. html:not([tabview-loaded]):has(ytd-live-chat-frame#chat:not([collapsed])):has(iframe#chatframe) {buildL4('is',
  114. '#primary-inner.ytd-watch-flexy ytd-comments#comments.ytd-watch-flexy',
  115. '#secondary-inner.ytd-watch-flexy > #related.ytd-watch-flexy')} {
  116. display: none !important;
  117. }
  118. html:not([tabview-loaded]) #cinematics {
  119. // contain: layout;
  120. contain: layout size style;
  121. user-select: none;
  122. touch-action: none;
  123. pointer-events: none;
  124. }
  125.  
  126.  
  127. }
  128.  
  129. //
  130. contentNoMasthead() {
  131.  
  132. // root = html
  133. & {
  134. /* 0px not 0 */
  135. --ytd-masthead-height: 0px;
  136. --ytd-toolbar-height: 0px;
  137. --ytd-watch-flexy-masthead-height: 0px;
  138. }
  139. & ytd-watch-flexy {
  140. --ytd-watch-flexy-masthead-height: 0px;
  141. }
  142.  
  143. #masthead-container {
  144. height: 0;
  145. --masthead-opacity: 0;
  146. opacity: var(--masthead-opacity) !important;
  147. transition: opacity 300ms;
  148. min-height: masthead-hoverable-height;
  149. contain: layout size style;
  150. }
  151.  
  152. #masthead-container > ytd-masthead {
  153. transform: translateY(-100%);
  154. transition: transform 300ms;
  155. }
  156.  
  157.  
  158. if masthead-hoverable-height > 0 {
  159.  
  160. ytd-app {
  161. --ut-masthead-background: rgba(15,15,15,0.8);
  162. }
  163. ytd-app[darker-dark-theme] {
  164. --ut-masthead-background: rgba(240,240,240,0.8);
  165. }
  166. ytd-masthead#masthead:hover {
  167. background-color: color(--ut-masthead-background);
  168. z-index: 9999 !important;
  169. }
  170.  
  171. ytd-masthead#masthead {
  172. background-color: rgba(15,15,15,0.8);
  173. z-index: 9999 !important;
  174. }
  175.  
  176. #masthead-container:hover {
  177. --masthead-opacity: 1;
  178. }
  179.  
  180. #masthead-container:hover > ytd-masthead {
  181. transform: translateY(0%);
  182. }
  183.  
  184. #masthead-container::after {
  185. content: '';
  186. display: flex;
  187. width: 100%;
  188. height: masthead-hoverable-height;
  189. top: 0;
  190. z-index: 77;
  191. cursor: default;
  192. user-select: none !important;
  193. touch-action: none !important;
  194. box-sizing: border-box;
  195. padding: 0;
  196. margin: 0;
  197. }
  198. }
  199. if t33 == 0 {
  200.  
  201. ytd-watch-flexy.style-scope[is-two-columns_]:not([fullscreen]):not([theater]) {
  202.  
  203. #columns.style-scope.ytd-watch-flexy,
  204. #primary.style-scope.ytd-watch-flexy,
  205. #primary-inner.style-scope.ytd-watch-flexy,
  206. #secondary.style-scope.ytd-watch-flexy,
  207. #secondary-inner.style-scope.ytd-watch-flexy {
  208. height: 100vh;
  209. max-height: 100%;
  210. }
  211. }
  212.  
  213. ytd-watch-flexy.style-scope[is-two-columns_][theater]:not([fullscreen]) {
  214.  
  215. height: 100vh;
  216. #player-theater-container.ytd-watch-flexy {
  217. flex: 77;
  218. max-height: unset;
  219. }
  220.  
  221.  
  222. }
  223.  
  224.  
  225.  
  226. &:not([tabview-loaded]) ytd-watch-flexy.style-scope[is-two-columns_][theater]:not([fullscreen]) {
  227.  
  228.  
  229. #player-theater-container.ytd-watch-flexy ~ #columns.style-scope.ytd-watch-flexy {
  230. overflow: visible;
  231. }
  232. }
  233.  
  234. }
  235.  
  236. } //
  237. #microformat.ytd-watch-flexy {
  238. position: fixed;
  239. top:-200vh;
  240. left:-200vw;
  241. }
  242. contentSingleColMobile(){
  243.  
  244. // html:has(ytd-watch-flexy:not([is-two-columns_]):not([fullscreen]))
  245.  
  246. #chat:not([collapsed]) {
  247. --ytd-margin-2x: 0;
  248. --ytd-margin-4x: 0;
  249. --ytd-margin-6x: 0;
  250. --ytd-margin-8x: 0;
  251.  
  252. height: 100% !important;
  253. min-height: unset !important;
  254. max-height: 100vh !important;
  255.  
  256. // position:relative;
  257. // top:auto;
  258. // bottom:0;
  259.  
  260. iframe#chatframe{
  261.  
  262.  
  263. min-height: 0px;
  264.  
  265. }
  266.  
  267.  
  268.  
  269. if chat-zoom-for-mobile-enable {
  270.  
  271.  
  272. iframe-transform = 'scale(%s)' % chat-zoom-for-mobile
  273. iframe-ratio = 100% / chat-zoom-for-mobile
  274.  
  275. iframe#chatframe {
  276. position:absolute;
  277.  
  278. transform: iframe-transform;
  279. height: s('calc((100% - %s) / %s) !important', chat-btn-height, chat-zoom-for-mobile);
  280. max-height: unset !important;
  281. min-height: unset !important;
  282. transform-origin: 0 0;
  283. width: iframe-ratio !important;
  284. margin-top: chat-btn-height;
  285.  
  286.  
  287. }
  288.  
  289.  
  290. }
  291.  
  292.  
  293. }
  294.  
  295.  
  296.  
  297. &:has(#chat:not([collapsed])) {
  298. // html:has(ytd-watch-flexy:not([is-two-columns_]):not([fullscreen])):has(#chat:not([collapsed]))
  299.  
  300. #contentContainer.tp-yt-app-drawer[swipe-open].tp-yt-app-drawer::after {
  301.  
  302. content: unset;
  303.  
  304. }
  305.  
  306.  
  307. if t33 == 0 {
  308.  
  309. #primary-inner.ytd-watch-flexy ytd-comments#comments.ytd-watch-flexy,
  310. #below.ytd-watch-flexy > .ytd-watch-flexy{buildL4('is', '#related', 'ytd-watch-metadata')} {
  311. /* display:none !important; */
  312. position: fixed !important;
  313. transform: scale(0.01) !important;
  314. transform-origin: 0 0 !important;
  315. left: -100vw !important;
  316. top: -100vh !important;
  317. visibility: collaspe !important;
  318. pointer-events: none !important;
  319. user-select: none !important;
  320. touch-action: none !important;
  321. }
  322.  
  323. }
  324.  
  325. #secondary.ytd-watch-flexy {
  326. display:none !important;
  327. }
  328.  
  329.  
  330.  
  331.  
  332. .efyt-control-bar {
  333. position: relative;
  334. display: inline-flex;
  335. top: auto;
  336. left: auto;
  337. z-index: 99999;
  338. opacity: 0.8;
  339. transform: translate(calc(-100% + 32px), 0) !important;
  340. }
  341.  
  342. .efyt-control-bar:hover {
  343. opacity: 1.0;
  344. background: var(--yt-spec-general-background-a);
  345. transform: translate(0px, 0) !important;
  346. }
  347.  
  348. #player {
  349. margin-bottom: 0;
  350. }
  351.  
  352.  
  353.  
  354. {buildL4('is', '#columns', '#primary')} {
  355. padding: 0;
  356. }
  357.  
  358. --ylb-min-below-area: chat-min-height;
  359.  
  360.  
  361.  
  362.  
  363. {buildL4('is', '#player', '#player-theater-container', '#player-container-outer', '#player-container-inner', '#player-container', '#movie_player', '#movie_player video')} {
  364. object-fit: contain;
  365. max-height: calc(100vh - var(--ytd-toolbar-height) - var(--ylb-min-below-area, 0px)) !important;
  366.  
  367. }
  368.  
  369.  
  370. if t33 == 0 {
  371.  
  372. #primary-inner.ytd-watch-flexy > :not(.style-scope) {
  373. display: none !important;
  374. }
  375.  
  376. #below > *:not(#chat) {
  377. /* display:none !important; */
  378. position: fixed !important;
  379. transform: scale(0.01) !important;
  380. transform-origin: 0 0 !important;
  381. left: -100vw !important;
  382. top: -100vh !important;
  383. visibility: collaspe !important;
  384. pointer-events: none !important;
  385. user-select: none !important;
  386. touch-action: none !important;
  387.  
  388. }
  389. }
  390.  
  391. #below:not(:has(#chat)) {
  392. display: none;
  393. }
  394.  
  395.  
  396.  
  397. {buildL4('is', 'ytd-watch-flexy', '#columns.ytd-watch-flexy', '#primary.ytd-watch-flexy', '#primary-inner.ytd-watch-flexy')} {
  398. display: flex;
  399. flex-direction: column;
  400. margin: 0;
  401. flex: 1;
  402. }
  403.  
  404. #below {
  405. flex: 1;
  406. }
  407.  
  408. ytd-watch-flexy {
  409. height: 100vh !important;
  410. max-height: 100vh !important;
  411. }
  412.  
  413. ytd-watch-flexy{buildL4('is', '[theater]', '[fullscreen]')} #player-theater-container.ytd-watch-flexy {
  414.  
  415. min-height: unset !important;
  416. }
  417. }
  418.  
  419.  
  420. }
  421.  
  422. content2c() {
  423.  
  424. if t33 == 0 {
  425. if chat-zoom-for-right-col >1 or chat-zoom-for-right-col < 1 {
  426.  
  427. ytd-watch-flexy[is-two-columns_]:not([fullscreen]) iframe#chatframe {
  428.  
  429. position:absolute;
  430. margin-top:chat-btn-height;
  431.  
  432. transform: 'scale(%s)' % chat-zoom-for-right-col;
  433. transform-origin: 0 0;
  434. width: '%s !important' % (100% / chat-zoom-for-right-col);
  435. max-width: unset !important;
  436. height: s('calc( (100% - %s) / %s ) !important', chat-btn-height, chat-zoom-for-right-col);
  437. z-index: 1; /* for normal youtube */
  438.  
  439. }
  440.  
  441. }
  442.  
  443.  
  444. if no-masthead-w==0 {
  445.  
  446. ytd-watch-flexy.style-scope[is-two-columns_]:not([theater]):not([fullscreen]) {
  447.  
  448. .style-scope.ytd-watch-flexy{buildL4('is', '#secondary', '#secondary-inner')} {
  449. height: calc(100vh - var(--ytd-toolbar-height));
  450. max-height: 100%;
  451. }
  452. }
  453. }
  454.  
  455.  
  456. ytd-watch-flexy[is-two-columns_]:not([fullscreen]) #movie_player {
  457.  
  458. .ytp-chrome-bottom[style*="width"] {
  459. width: unset !important;
  460. left: chrome-bottom-bar-margin !important;
  461. right: chrome-bottom-bar-margin !important;
  462. }
  463.  
  464. }
  465.  
  466.  
  467. /*
  468.  
  469. // originally this is to avoid sizing issue; however, as userscript "YouTube Video Resize Fix" is a must, this is no longer required.
  470. // this css rule not compatible with YouTubeLiveClock
  471.  
  472. ytd-watch-flexy:not([is-two-columns_]):not([fullscreen]) #movie_player {
  473.  
  474. .ytp-chrome-bottom[style*="width"] {
  475. left: 50% !important;
  476. transform: translateX(-50%);
  477. }
  478.  
  479. }
  480.  
  481. */
  482.  
  483.  
  484. ytd-watch-flexy.style-scope[is-two-columns_]:not([theater]):not([fullscreen]) ytd-live-chat-frame#chat:not([collapsed]) {
  485. min-height: unset;
  486. }
  487.  
  488.  
  489.  
  490. ytd-watch-flexy.style-scope[is-two-columns_]:not([fullscreen]) #primary-inner.ytd-watch-flexy > *:not(#player) {
  491. padding: 0 primary-content-margin 0;
  492. }
  493.  
  494.  
  495. ytd-watch-flexy.style-scope[is-two-columns_]:not([theater]):not([fullscreen]) #player .ytd-watch-flexy{buildL4('is', '#player-container-outer', '#player-container-inner', '#player-container')}{
  496.  
  497. // layout outside
  498. // no effect
  499. // layout inside
  500. max-height: calc(100vh - var(--ytd-toolbar-height, 0px) - var(--ylb-min-below-area, 0px)); // for very wide screen
  501. }
  502.  
  503. ytd-watch-flexy.style-scope[is-two-columns_][theater]:not([fullscreen]) #player-theater-container.ytd-watch-flexy {
  504. max-height: calc(100vh - var(--ytd-toolbar-height, 0px) - var(--ylb-min-below-area, 0px)); // for 4:3 video
  505.  
  506. }
  507.  
  508.  
  509.  
  510. body.lock-scrollbar[style*="overflow"][style*="hidden"]:has(ytd-watch-flexy[is-two-columns_]:not([hidden])):has(#movie_player) {
  511. overflow-y: unset !important;
  512. }
  513.  
  514.  
  515. ytd-watch-flexy.style-scope[is-two-columns_] #columns.ytd-watch-flexy > #secondary.ytd-watch-flexy {
  516. width: side-panel-width;
  517. }
  518.  
  519. }
  520.  
  521.  
  522. }
  523.  
  524. contentf() {
  525. // html
  526. if t33 == 0 {
  527.  
  528. if (video-padding-left-right + video-padding-top-bottom) > 0 {
  529.  
  530. #player-container-outer.ytd-watch-flexy {
  531. padding-left: video-padding-left-right;
  532. padding-right: video-padding-left-right;
  533. padding-top: video-padding-top-bottom;
  534. padding-bottom: video-padding-top-bottom;
  535. }
  536.  
  537. }
  538.  
  539.  
  540. body ytd-watch-flexy[flexy] #player-container-outer.ytd-watch-flexy {
  541. max-width: unset; // override var(--ytd-watch-flexy-max-player-width);
  542. }
  543.  
  544. &:not([tabview-loaded]) {
  545.  
  546. body ytd-watch-flexy[flexy][is-two-columns_]{buildL4('is', '[is-extra-wide-video_]', '[is-four-three-to-sixteen-nine-video_]')} #primary.ytd-watch-flexy {
  547.  
  548. max-width: unset; // override var(--ytd-watch-flexy-max-player-width);
  549.  
  550. }
  551.  
  552.  
  553. ytd-watch-flexy:not([fullscreen]) #player-theater-container {
  554. max-height: calc(100vh - var(--ytd-toolbar-height) - var(--ylb-min-below-area, 0px)) !important;
  555. }
  556.  
  557.  
  558. ytd-watch-flexy[is-two-columns_]:not([theater]):not([fullscreen]) {buildL4('is', '#columns', '#primary', '#primary-inner', '#secondary', '#secondary-inner')} {
  559. height: calc(100vh - var(--ytd-toolbar-height));
  560. }
  561.  
  562. }
  563.  
  564. if video-enlarging > 0 {
  565.  
  566. ytd-watch-flexy:not([theater]):not([fullscreen]) #movie_player video[src] {
  567. transform: 'scale(%s)' % (video-enlarging / 1000 + 1) ;
  568. transform-origin: 50% 50%;
  569. }
  570.  
  571. }
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579. ytd-watch-flexy[flexy][is-two-columns_][theater]:not([fullscreen]) {
  580.  
  581. --ylb-min-below-area: min-below-area-for-theater;
  582.  
  583.  
  584. {buildL4('is', '#player', '#player-theater-container', '#player-container-outer', '#player-container-inner', '#player-container', '#movie_player', '#movie_player video')} {
  585. object-fit: contain;
  586. max-height: calc(100vh - var(--ytd-toolbar-height) - var(--ylb-min-below-area, 0px)) !important;
  587. }
  588. }
  589.  
  590.  
  591.  
  592. if no-bottom-row {
  593.  
  594. #bottom-row.ytd-watch-metadata {
  595. display: none !important;
  596. }
  597. }
  598.  
  599. h1.ytd-watch-metadata {
  600. font-size: video-title-size;
  601. --font-size: video-title-size;
  602. line-height: 140%;
  603. margin-bottom: -2px;
  604. }
  605.  
  606.  
  607. ytd-watch-flexy.style-scope:not([fullscreen]) {
  608.  
  609. & {
  610. --ytd-margin-2y: var(--ytd-margin-2x);
  611. --ytd-margin-4y: var(--ytd-margin-4x);
  612. --ytd-margin-6y: var(--ytd-margin-6x);
  613. --ytd-margin-8y: var(--ytd-margin-8x);
  614. }
  615.  
  616. #columns.style-scope.ytd-watch-flexy {
  617. --ytd-margin-2x: 0;
  618. --ytd-margin-4x: 0;
  619. --ytd-margin-6x: 0;
  620. --ytd-margin-8x: 0;
  621. }
  622.  
  623. .style-scope.ytd-watch-flexy > :not(.ytd-watch-flexy),
  624. #below,
  625. #player {
  626. --ytd-margin-2x: var(--ytd-margin-2y);
  627. --ytd-margin-4x: var(--ytd-margin-4y);
  628. --ytd-margin-6x: var(--ytd-margin-6y);
  629. --ytd-margin-8x: var(--ytd-margin-8y);
  630. }
  631.  
  632. #secondary-inner.style-scope.ytd-watch-flexy {
  633. display: flex;
  634. flex-direction: column;
  635. height: 100%;
  636. }
  637.  
  638. #movie_player {
  639. position: relative;
  640. > .html5-video-container:has(video) {
  641. top: 0;
  642. bottom: 0;
  643. left: 0;
  644. right: 0;
  645. position: absolute;
  646. }
  647.  
  648. .html5-video-container > video {
  649. width: unset !important;
  650. height: 100% !important;
  651. left: 0 !important;
  652. right: 0 !important;
  653. max-height: 100%;
  654. max-width: 100%;
  655. margin: 0 auto;
  656. }
  657.  
  658. /*
  659. .ytp-iv-video-content {
  660. width: 100% !important;
  661. height: 100% !important;
  662. }
  663. */
  664.  
  665. /*
  666. // this is buggy; eg multiple chapter hover container; can be fixed by YouTube Video Resize Fix Only
  667. .ytp-chapter-hover-container[style*="width"] {
  668. width: 100% !important;
  669. }
  670. */
  671.  
  672. .html5-video-container > video[style*="top:"]:not(video[style*="top: -"]):not(video[style*="top:-"]) {
  673. top: 0 !important;
  674. }
  675.  
  676. }
  677.  
  678.  
  679. #chat:not([collapsed]) {
  680. flex: 77;
  681. }
  682.  
  683. #right-tabs {
  684. display: flex;
  685. margin: 0 !important;
  686. flex: 1;
  687. flex-direction: column;
  688.  
  689. {buildL4('is', '#material-tabs', '.tab-content')} {
  690. outline: 0;
  691. }
  692.  
  693. .tab-content {
  694. flex: 77;
  695. }
  696. }
  697.  
  698. &:not([is-two-columns_]) #primary-inner > *:not(#player) {
  699. padding: 0;
  700. }
  701.  
  702. &:not([is-two-columns_]) #primary-inner #below > *:not(ytd-live-chat-frame#chat) {
  703. padding: 0 primary-content-margin 0;
  704. }
  705.  
  706. /*
  707. #player-container-outer.ytd-watch-flexy {
  708. max-width: unset;
  709. }
  710. */
  711. }
  712.  
  713. }
  714.  
  715.  
  716.  
  717. if no-round-border {
  718.  
  719. ytd-live-chat-frame[rounded-container],
  720. ytd-live-chat-frame[rounded-container] #show-hide-button.ytd-live-chat-frame ytd-toggle-button-renderer.ytd-live-chat-frame,
  721. ytd-live-chat-frame[rounded-container] iframe.ytd-live-chat-frame,
  722. ytd-live-chat-frame[rounded-container] #show-hide-button.ytd-live-chat-frame ytd-toggle-button-renderer.ytd-live-chat-frame button.yt-spec-button-shape-next,
  723. ytd-live-chat-frame[rounded-container] #show-hide-button.ytd-live-chat-frame ytd-toggle-button-renderer.ytd-live-chat-frame button.yt-spec-button-shape-next:hover {
  724. border-radius: unset;
  725. }
  726. }
  727.  
  728.  
  729. if disable-cinematics {
  730. #cinematics.ytd-watch-flexy {
  731. display: none;
  732. }
  733. }
  734. } //
  735. contentg() {
  736.  
  737. content2c() //
  738. selector-g = '&' //
  739. if mode-for-single-col=="disabled" { //
  740. selector-g = '&:has(ytd-watch-flexy[is-two-columns_])' //
  741. } //
  742. {s(selector-g)} { //
  743. // html
  744. contentf() //
  745. } //
  746. }
  747. content361() //
  748. selectors-2col = { //
  749. "expanded-panel": join(', ',
  750. "html:not([tabview-loaded]):has(ytd-live-chat-frame#chat:not([collapsed])):has(iframe#chatframe)",
  751. "html[tabview-loaded]:has(ytd-watch-flexy[is-two-columns_]:not([fullscreen]):not([theater]))"
  752. ),
  753. "expanded-live": "html:has(ytd-live-chat-frame#chat:not([collapsed])):has(iframe#chatframe)",
  754. "expandable-live": "html:has(ytd-live-chat-frame#chat):has(iframe#chatframe)",
  755. "always": "html"
  756. } //
  757. selector-2col = selectors-2col[mode-for-two-col]
  758. selectors-k = split(', ', selector-2col)
  759. for selector-k in selectors-k {
  760. {s(selector-k)} {
  761. if no-masthead-w==1 {
  762. contentNoMasthead()
  763. }
  764. contentg() //
  765. }
  766. }
  767.  
  768. if single-col-mobile {
  769. &:has(ytd-watch-flexy:not([is-two-columns_]):not([fullscreen])) {
  770.  
  771. if no-masthead-w==2 {
  772. contentNoMasthead()
  773. }
  774. contentSingleColMobile()
  775. }
  776. }
  777. }