Iwara UI Fix + 1-Click Filter Xtension

An extension to 天音's Iwara 1-Click Filter script, also works as a standalone

Verze ze dne 01. 03. 2020. Zobrazit nejnovější verzi.

  1. // ==UserScript==
  2. // @name Iwara UI Fix + 1-Click Filter Xtension
  3. // @namespace none
  4. // @version 1.0
  5. // @description An extension to 天音's Iwara 1-Click Filter script, also works as a standalone
  6. // @author Nothson
  7. // @match https://*.iwara.tv/*
  8. // @grant none
  9. // @run-at document-start
  10. // ==/UserScript==
  11.  
  12. /*
  13. --- Iwara UI Fix + 1-Click Filter Xtension by Nothson : https://iwara.tv/users/Nothson ---
  14.  
  15. Mainly for scratching the Iwara's UI/UX itches I have.
  16. I'm not a senior web dev so plz don't scold me if the code below looks messy to you.
  17.  
  18. 1 Mar 2020
  19.  
  20. - Added like percentage
  21. - Polaroid print style for video/image cards
  22. - Repositioned the card stats & icons
  23. - Added flairs, shown on the right of the card stats
  24. - Fire Icon: % like reaches the threshold (based on view count) + 200 views or more
  25. - Star Icon: % like reaches the threshold + 20k views or more
  26. - Lock Icon: Private video
  27. - Grid Icon: Multiple images
  28. - Screen Icon: External player (YouTube, Vimeo, etc.)
  29. - Card transitions on hover + extra transitions for some flairs
  30. - Added block backgrounds on many regions + made paddings and margins consistent
  31. - Fixed video player seek head
  32. - Changed forum post timestamp text color
  33. - Fixed user profile background, user lists (following/followers), and layout
  34. - Perhaps a few more things I did but couldn't remember, idk
  35.  
  36. Expected to run after Erono's Iwara 1-Click Filter Script: https://greasyfork.org/scripts/393957
  37. However, this script works as a standalone UI fix as well
  38. Tested on the latest version of Firefox & Chrome, plus responsive
  39. */
  40.  
  41. if (document) {
  42. document.children[0].setAttribute('hidden', '');
  43. }
  44.  
  45. window.addEventListener('load', async function() {
  46. let timestamp = new Date().getTime(); // Debug
  47. let baseScriptRecommended = false;
  48. if (!document.head.querySelector('#css_custom')) { // 1-Click Filter not installed, add required CSS rules
  49. baseScriptRecommended = true;
  50. let baseCSS = document.createElement('style');
  51. baseCSS.innerHTML = `
  52. /* ads */
  53. /*
  54. .block-extra-content, .extra-content-block {display: none;}
  55. */
  56.  
  57. /* fix page */
  58. body {background-color: #eee;}
  59. section#content > .container {background-color: #eee; padding: 10px;}
  60. .container {width: unset;}
  61. @media (min-width: 1300px) {.container {width: 1300px;}}
  62.  
  63. /* fix overflow */
  64. #block-system-main, .row {margin-left: 0; margin-right: 0;}
  65. .col-sm-3, .col-sm-6, .col-sm-9, .col-xs-6, .col-sm-12 {padding-left: 0; padding-right: 0;}
  66. .view-videos .view-content .views-row, .view-images .view-content .views-row {padding-bottom: 0px;}
  67.  
  68. /* compact page */
  69. .view-content .col-sm-3, .view-content .col-sm-6 {width: 50%; float: left;}
  70. @media (min-width: 768px) {
  71. .view-content .col-sm-3 {width: 25%;}
  72. }
  73.  
  74. /* card style */
  75. .node.node-teaser {background-color: #ffffff; border: 1px solid #ccc; border-radius: 4px; padding: 5px; margin: 4px;}
  76. .node.node-teaser .icon-bg, .node.node-teaser .private-video {width: calc(100% - 10px);}
  77. .node.node-teaser .icon-bg .likes-icon {filter: drop-shadow(0px 0px 2px #000);}
  78. .node.node-teaser h3.title {font-size: 1em; line-height: 1em; height: 3em; margin-bottom: 0px; overflow: hidden;}
  79. .node.node-teaser .username {display: block; white-space: nowrap; overflow: hidden;}
  80. .node.node-teaser .field-item {min-height: 2em;}
  81. .node.node-video .content {margin: 4px;}
  82. .sidebar .block.block-views,
  83. .sidebar .block.block-facetapi,
  84. .sidebar .block.block-mainblocks {background-color: #fafafa; border: 1px solid #ccc; border-radius: 4px; padding: 8px; margin: 4px 4px 8px 4px;}
  85. .sidebar .node.node-sidebar_teaser {background-color: #ffffff; border: 1px solid #ccc; border-radius: 2px; padding: 4px; margin: 2px;}
  86. .sidebar .node.node-sidebar_teaser .icon-bg, .node.node-sidebar_teaser .private-video {width: calc(100% - 8px);}
  87. .sidebar .node.node-sidebar_teaser .icon-bg .likes-icon {filter: drop-shadow(0px 0px 2px #000);}
  88. .item-list ul.pager li {margin: 0; padding: 0;}
  89. .item-list ul.pager li.pager-current,
  90. .item-list ul.pager li.pager-ellipsis,
  91. .item-list ul.pager li > a {background: #fafafa; border: 1px solid #ccc; border-radius: 8px; padding: 4px 16px; margin: 0px; display: inline-block;}
  92.  
  93. /* video style for external link (youtube) */
  94. /*
  95. .node.node-teaser .field-type-video-embed-field {border: 4px solid #c33; background-color: #000;}
  96. .node.node-teaser .field-type-video-embed-field .field-items {overflow: hidden;}
  97. .node.node-teaser .field-type-video-embed-field .field-items .field-item {margin: -4px;}
  98. */
  99.  
  100. /* image style in subscriptions page */
  101. .view-subscriptions .field-type-image {border: 1px solid #ccc; background-color: #fff; padding: 5px;}
  102. .view-subscriptions .field-type-image .field-items {overflow: hidden;}
  103. .view-subscriptions .field-type-image .field-items .field-item {margin: -6px;}
  104.  
  105. /* search and playist */
  106. .node-wide_teaser {background-color: #fafafa; border: 1px solid #ccc; border-radius: 4px; padding: 4px; margin: 4px;}
  107. .node-wide_teaser {width: unset; word-break: break-all; min-height: 170px;}
  108. .node-wide_teaser .col-sm-2 {width: 230px; padding: 4px;}
  109. .node-wide_teaser .col-sm-10 {width: calc(100% - 230px); padding: 4px;}
  110. .node-wide_teaser .field-name-field-video {border: 1px solid #999;}
  111. .node-wide_teaser .field-name-field-video-url {border: 1px solid #999; position: absolute; top: 0px; left: -230px; margin: 4px;}
  112. @media (max-width: 768px) {.node-wide_teaser .field-name-field-video-url {display: none;}}
  113. .node-wide_teaser .field-name-field-images .field-item {display: unset;}
  114. .node-wide_teaser .field-name-field-images .field-item > a > img {width: calc(100%/3 - 8px); border: 1px solid #aaa; padding: 4px; margin: 4px;}
  115. .node-wide_teaser .field-name-field-images .field-item > video {width: calc(100%/1 - 8px); margin: 4px; border: 1px solid #aaa; padding: 4px; height: auto;}
  116. .node-wide_teaser .node-info {padding: 4px;}
  117. .node-wide_teaser .node-info .submitted {display: inline-block; width: 100%;}
  118. .node-wide_teaser .node-info .submitted h1.title {font-size: 28px; position: unset; margin: unset;}
  119. ul.facetapi-facetapi-tagcloud li > a {white-space: normal;}
  120. ul.facetapi-facetapi-tagcloud .element-invisible {display: none;}
  121.  
  122. /* footer */
  123. #wrapper {margin-bottom: unset; padding-bottom: unset;}
  124. footer {height: unset;}
  125. footer .block {width: 25%; float: left;}
  126. footer .block.block-forum {width: 50%;}
  127. footer .copyright {float: unset;}
  128.  
  129. /* video player */
  130. /* expand volume and seekbar height */
  131. .video-js .vjs-volume-bar {margin: 1em 0em;}
  132. .video-js .vjs-volume-bar.vjs-slider-horizontal, .video-js .vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level {height: 1em;}
  133. .video-js .vjs-progress-holder, .video-js .vjs-progress-holder .vjs-load-progress, .video-js .vjs-progress-holder .vjs-play-progress {height: 1em;}
  134. `;
  135. baseCSS.id = 'css_custom';
  136. document.head.appendChild(baseCSS);
  137. }
  138. let cards = document.querySelectorAll('.node-teaser, .node-sidebar_teaser');
  139. Math.logn = function logn (val, base) {
  140. return Math.log(val) / Math.log(base);
  141. }
  142. function kilo2Number (text) {
  143. if (text.match('k') == null) {
  144. return {value: parseInt(text), isKilo: false};
  145. }
  146. else {
  147. return {value: parseFloat(text.replace('k', '')) * 1000, isKilo: true};
  148. }
  149. }
  150. function getFlair (viewCount, likePercentage, card) {
  151. if (card.querySelector('.private-video')) {
  152. return 'lock';
  153. }
  154. else if ((card.className.match('node-sidebar_teaser') && card.children.length > 2) || card.children.length > 4) {
  155. return 'share';
  156. }
  157. else {
  158. let viewPower = Math.logn(viewCount, 6);
  159. let likeThreshold = 8 - viewPower;
  160. if (viewCount < 200) {
  161. return '';
  162. }
  163. else if (viewCount < 20000) {
  164. return (likePercentage > likeThreshold) ? 'fire' : '';
  165. }
  166. else {
  167. return (likePercentage > likeThreshold) ? 'star' : '';
  168. }
  169. }
  170. }
  171.  
  172. // HTML Mod
  173. cards.forEach(card => {
  174. let icons = card.querySelector('.icon-bg');
  175. if (icons) { // Rearrange stat icons, add like percentage and flairs
  176. if ((card.className.match('node-sidebar_teaser') && card.children.length > 1) || card.children.length > 3) {
  177. card.insertBefore(icons, card.children[2]);
  178. }
  179. else {
  180. card.insertBefore(icons, card.children[1]);
  181. }
  182. if (card.className.match('node-image') && icons.children.length == 3) {
  183. icons.appendChild(icons.children[1]);
  184. icons.appendChild(icons.children[0]);
  185. }
  186. else if (icons.children.length == 2) {
  187. icons.appendChild(icons.children[0]);
  188. }
  189.  
  190. let likeNode = icons.querySelector('.glyphicon-heart');
  191. if (likeNode && !(card.className.match('node-image') && card.className.match('node-sidebar_teaser'))) {
  192. likeNode = likeNode.nextSibling;
  193. let viewNode = icons.querySelector('.glyphicon-eye-open').nextSibling;
  194. let likeTxt = likeNode.wholeText.trim();
  195. let like = kilo2Number(likeTxt);
  196. let viewCount = kilo2Number(viewNode.wholeText.trim());
  197. let likePercentage = parseFloat(like.value / viewCount.value * 100).toFixed(2);
  198. if (!card.className.match('node-sidebar_teaser')) {
  199. likeNode.nodeValue = ' ' + likeTxt;
  200. let likePercentageHTML = document.createElement('div');
  201. likePercentageHTML.className += 'right-icon likes-icon like-percentage';
  202. if (like.isKilo || viewCount.isKilo) {
  203. likePercentageHTML.innerText = '(~' + likePercentage + '%)';
  204. }
  205. else {
  206. likePercentageHTML.innerText = '(' + likePercentage + '%)';
  207. }
  208. likeNode.parentElement.parentElement.appendChild(likePercentageHTML);
  209. }
  210. if (card.className.match('node-video')) {
  211. let flair = getFlair(viewCount.value, likePercentage, card);
  212. if (flair) {
  213. card.className += ' flair-' + flair;
  214. let flairNode = document.createElement('div');
  215. flairNode.setAttribute('class', 'left-icon flair-icon');
  216. flairNode.innerHTML = '<i class="glyphicon glyphicon-' + flair + '" title="Flair"></i>';
  217. icons.appendChild(flairNode);
  218. }
  219. }
  220. }
  221. }
  222. else {
  223. let blankFooter = document.createElement('div');
  224. blankFooter.setAttribute('class', 'icon-bg');
  225. card.appendChild(blankFooter);
  226. }
  227.  
  228. if (!card.querySelector('a > img')) { // Fix inconsistent height of the cards with no thumbnail
  229. let title = card.querySelector('.title');
  230. let blankImage = document.createElement('a');
  231. blankImage.setAttribute('href', title.getAttribute('href'));
  232. blankImage.setAttribute('title', title.innerText);
  233. blankImage.className += ' blankimg';
  234. blankImage.innerHTML = '<img width="220" height="150"></img>';
  235. card.querySelector('.field-items > .field-item').appendChild(blankImage);
  236. }
  237. });
  238.  
  239. let contentInfo = document.querySelector('body.node-type-video .node.node-video .node-info .node-views, body.node-type-image .node.node-image .node-info .node-views');
  240. if (contentInfo) { // Add like percentage for a video/image page
  241. let heartIcon = contentInfo.querySelector('.glyphicon.glyphicon-heart');
  242. if (heartIcon) {
  243. let eyeIcon = contentInfo.querySelector('.glyphicon.glyphicon-eye-open');
  244. let viewCount = parseInt(eyeIcon.nextSibling.nodeValue.replace(',', ''));
  245. let like = parseInt(heartIcon.nextSibling.nodeValue.replace(',', ''));
  246. let likePercentage = parseFloat(like / viewCount * 100).toFixed(4);
  247. heartIcon.nextSibling.nodeValue = ' ' + like + ' (' + likePercentage + '%)';
  248. contentInfo.appendChild(contentInfo.querySelector('.glyphicon.glyphicon-heart'));
  249. contentInfo.appendChild(contentInfo.querySelector('.glyphicon.glyphicon-eye-open').previousSibling);
  250. }
  251. }
  252.  
  253. let copyrightNode = document.querySelector('footer .copyright');
  254. if (copyrightNode) { // Add script credits
  255. let innerHTMLExt = '<br><u><b><a href="https://ecchi.iwara.tv/images/iwara-1-click-filter">Iwara 1-Click Filter</a></b></u> by <u><b><a href="https://iwara.tv/users/erono">Erono</a></b></u> + <b>Xtension</b> by <u><b><a href="https://iwara.tv/users/nothson">Nothson</a></b></u>';
  256. if (baseScriptRecommended) {
  257. innerHTMLExt = '<br><b>Iwara UI Fix</b> by <u><b><a href="https://iwara.tv/users/nothson">Nothson</a></b></u><br><b>Note:</b> Iwara 1-Click Filter is not installed, disabled, or it was set to run after this script. Check out <u><b><a href="https://greasyfork.org/scripts/393957">this page</a></b></u> or <b>script execution order</b>.';
  258. }
  259. copyrightNode.innerHTML = copyrightNode.firstChild.nodeValue + innerHTMLExt;
  260. }
  261. let addForumCommentElement = document.querySelectorAll('#forum-comments h2.comment-form, #forum-comments noscript, #forum-comments #comment-form');
  262. if (addForumCommentElement.length > 0) { // Wrap forum's "Add new comment" section in a block
  263. let commentBlock = document.createElement('div');
  264. commentBlock.id = 'add-forum-comment-block';
  265. addForumCommentElement.forEach(elem => {
  266. commentBlock.appendChild(elem);
  267. });
  268. document.getElementById('forum-comments').appendChild(commentBlock);
  269. }
  270. // CSS Override
  271. let styleOverride = document.createElement('style');
  272. styleOverride.id = 'xtension-css';
  273. styleOverride.innerHTML = `
  274. .node.node-teaser,
  275. .node.node-sidebar_teaser,
  276. .node.node-teaser i,
  277. .node.node-sidebar_teaser i,
  278. .node.node-teaser img,
  279. .node.node-sidebar_teaser img {
  280. transition: 0.15s!important;
  281. }
  282.  
  283. /*
  284. .node.node-teaser img,
  285. .node.node-sidebar_teaser img {
  286. filter: contrast(0)!important;
  287. }
  288. */
  289.  
  290. .node.node-teaser h3.title,
  291. .node.node-sidebar_teaser h3.title {
  292. height: auto!important;
  293. white-space: nowrap!important;
  294. text-overflow: ellipsis!important;
  295. }
  296.  
  297. .node.node-teaser:hover,
  298. .node.node-sidebar_teaser:hover {
  299. box-shadow: 3pt 12pt 12pt -6pt #0004;
  300. transform: rotate3d(0.9, -0.1, 0.1, 3deg) scale(1.02);
  301. z-index: 42;
  302. }
  303.  
  304. .node.node-teaser.flair-fire:hover,
  305. .node.node-sidebar_teaser.flair-fire:hover {
  306. border-color: #f40a;
  307. }
  308.  
  309. .node.node-teaser.flair-star:hover,
  310. .node.node-sidebar_teaser.flair-star:hover {
  311. transform: rotate3d(-0.9, 0.1, -0.2, 4.5deg) scale(1.04);
  312. filter: drop-shadow(-0.2em -0.2em 2em #ffe8);
  313. outline: 0.32em solid #fe8;
  314. border: 0;
  315. }
  316.  
  317. .views-responsive-grid.views-responsive-grid-horizontal.views-columns-2 > * {
  318. margin-bottom: 0;
  319. }
  320.  
  321. .node.node-teaser .icon-bg,
  322. .node.node-sidebar_teaser .icon-bg {
  323. width: 100%!important;
  324. position: unset;
  325. margin-top: 0.4em;
  326. padding: 0;
  327. }
  328.  
  329. .node.node-sidebar_teaser .icon-bg {
  330. min-height: 1.35em;
  331. }
  332.  
  333. .node:hover .icon-bg {
  334. background: unset!important;
  335. }
  336.  
  337. .node.node-teaser .left-icon,
  338. .node.node-sidebar_teaser .left-icon {
  339. color: inherit;
  340. margin-left: 0.1em;
  341. font-size: 0.8em;
  342. filter: unset!important;
  343.  
  344. }
  345.  
  346. .node.node-teaser .right-icon,
  347. .node.node-sidebar_teaser .right-icon {
  348. float: left!important;
  349. color: inherit;
  350. margin-left: 0.5em;
  351. font-size: 0.8em;
  352. filter: unset!important;
  353. }
  354.  
  355. .node-image.node-sidebar_teaser .right-icon:first-of-type {
  356. margin-left: 0;
  357. }
  358.  
  359. .node.node-teaser .left-icon.multiple-icon,
  360. .node.node-sidebar_teaser .left-icon.multiple-icon {
  361. float: right!important;
  362. color: inherit;
  363. margin-left: 0.5em;
  364. font-size: 0.8em;
  365. filter: unset!important;
  366. }
  367.  
  368. .node.node-teaser .left-icon.flair-icon,
  369. .node.node-sidebar_teaser .left-icon.flair-icon {
  370. float: right!important;
  371. color: inherit;
  372. margin-right: 0.1em;
  373. font-size: 0.8em;
  374. filter: unset!important;
  375. }
  376.  
  377. .node.node-teaser .right-icon.like-percentage,
  378. .node.node-sidebar_teaser .right-icon.like-percentage {
  379. margin-left: 0.3em;
  380. }
  381.  
  382. .node.node-teaser h3.title {
  383. width: 100%;
  384. height: 2em;
  385. }
  386.  
  387. .node.node-teaser.flair-lock:hover [title="Flair"],
  388. .node.node-sidebar_teaser.flair-lock:hover [title="Flair"] {
  389. color: #bbbf;
  390. }
  391.  
  392. .node.node-teaser.flair-fire:hover [title="Flair"],
  393. .node.node-sidebar_teaser.flair-fire:hover [title="Flair"] {
  394. color: #f40f;
  395. filter: drop-shadow(0.12em -0.16em 0 #f806) drop-shadow(-0.12em -0.04em 0.06em #fd08);
  396. }
  397.  
  398. .node.node-teaser.flair-star:hover [title="Flair"] {
  399. color: #fd4f;
  400. transform: rotate(18deg) scale(3.2);
  401. filter: drop-shadow(1pt 0.5pt 0.5pt #0002) drop-shadow(-0.04em -0.04em 0.1em #ffd8) drop-shadow(0.08em 0.08em 0.02em #fb0f);
  402. }
  403.  
  404. .node.node-sidebar_teaser.flair-star:hover [title="Flair"] {
  405. color: #fd4f;
  406. transform: rotate(18deg) scale(2.4);
  407. filter: drop-shadow(1pt 0.5pt 0.5pt #0002) drop-shadow(-0.04em -0.04em 0.1em #ffd8) drop-shadow(0.12em 0.12em 0.01em #fb0f);
  408. }
  409.  
  410. .node.node-video.node-teaser.flair-lock:hover > div > div div > a > img,
  411. .node.node-video.node-sidebar_teaser.flair-lock:hover > div div > div > a > img {
  412. filter: grayscale(1);
  413. }
  414.  
  415. .node.node-video.node-teaser.flair-fire:hover > div > div div > a > img,
  416. .node.node-video.node-sidebar_teaser.flair-fire:hover > div > div div > a > img {
  417. filter: sepia(0.3) contrast(1.25) hue-rotate(-15deg) saturate(1.25);
  418. }
  419.  
  420. .node.node-video.node-teaser.flair-star:hover > div > div div > a > img,
  421. .node.node-video.node-sidebar_teaser.flair-star:hover > div > div div > a > img {
  422. filter: sepia(0.5) brightness(1.1) contrast(1.25) saturate(1.5);
  423. }
  424.  
  425. .node.node-teaser .blankimg,
  426. .node.node-sidebar_teaser .blankimg {
  427. display: block;
  428. border: #ccc 0.5pt dashed;
  429. }
  430.  
  431. .node.node-teaser .blankimg > img,
  432. .node.node-sidebar_teaser .blankimg > img {
  433. filter: opacity(0);
  434. }
  435.  
  436. .video-js .vjs-play-progress:before {
  437. top: -40%;
  438. color: #fffd;
  439. font-size: 1.8em;
  440. box-shadow: 0 8pt 8pt -4pt #0006;
  441. }
  442.  
  443. .video-js .vjs-volume-level:before {
  444. display: none;
  445. }
  446.  
  447. body.front #wrapper > section > .container,
  448. body.page-node-add form,
  449. body.page-node-edit form,
  450. body.page-user-friends #content > .container,
  451. body.page-user-liked #content > .container,
  452. body.page-subscriptions #content > .container,
  453. body.page-my-content #content > .container,
  454. body.page-messages #content > .container,
  455. body.page-user-edit form,
  456. body.page-comment #content > .container,
  457. body.page-forum #content > .container,
  458. body.node-type-video .node.node-video > .content,
  459. body.node-type-image .node.node-image > .content,
  460. #comments,
  461. #add-forum-comment-block,
  462. .region.region-content .view-id-profile,
  463. .node.node-journal,
  464. [class*="block-views"],
  465. .sidebar .block.block-facetapi,
  466. .sidebar .block.block-mainblocks {
  467. background-color: #fafafa;
  468. border: 1px solid #ccc;
  469. border-radius: 4px!important;
  470. padding: 0.8em!important;
  471. margin: 0.5em 0.5em 1em 0.5em!important;
  472. }
  473.  
  474. body.page-user #content {
  475. background-attachment: fixed;
  476. }
  477.  
  478. body.page-user- #content > .container {
  479. background-color: #eee8;
  480. }
  481.  
  482. body.page-user [class*="block-views"],
  483. body.page-user .sidebar .block.block-views,
  484. #block-mainblocks-user-connect,
  485. body.page-user #comments {
  486. background-color: #fafafad0;
  487. }
  488.  
  489. body.page-node-add form,
  490. body.page-node-edit form {
  491. background-color: #ffffff;
  492. }
  493.  
  494. body.front #wrapper > section > .container,
  495. body.page-user-friends #content > .container,
  496. body.page-user-liked #content > .container,
  497. body.page-subscriptions #content > .container,
  498. body.page-my-content #content > .container,
  499. body.page-messages #content > .container,
  500. body.page-user-edit form,
  501. body.page-comment #content > .container,
  502. body.page-forum #content > .container {
  503. margin-left: auto!important;
  504. margin-right: auto!important;
  505. }
  506.  
  507. body.node-type-video .node.node-video .node-info .node-views .glyphicon.glyphicon-heart,
  508. body.node-type-image .node.node-image .node-info .node-views .glyphicon.glyphicon-heart {
  509. margin-left: 0.5em;
  510. }
  511.  
  512. .node.node-wide_teaser {
  513. padding: 0.8em!important;
  514. margin: 0.5em 0.5em 1em 0.5em!important;
  515. }
  516.  
  517. .forum-post {
  518. margin: 0.5em 0.5em 1em 0.5em!important;
  519. }
  520.  
  521. .forum-post > .panel-heading > .text-muted {
  522. color: #0008;
  523. }
  524.  
  525. body.node-type-video .node.node-video > .content,
  526. body.node-type-image .node.node-image > .content {
  527. padding: 0!important;
  528. }
  529.  
  530. body.node-type-video .node.node-video > .content > .node-buttons,
  531. body.node-type-image .node.node-image > .content > .node-buttons {
  532. margin-bottom: 0;
  533. }
  534.  
  535. body.node-type-video .node.node-video > .content > .well {
  536. max-width: 100%!important;
  537. margin: 0;
  538. }
  539.  
  540. .node-journal #comments {
  541. border: unset;
  542. }
  543.  
  544. .view-profile.view-display-id-block {
  545. background-color: unset;
  546. padding: unset;
  547. box-shadow: unset;
  548. }
  549.  
  550. #block-views-profile-block {
  551. background-color: #fafafa;
  552. box-shadow: 2pt 8pt 8pt -4pt #0004;
  553. }
  554.  
  555. .region.region-sidebar .view-id-profile .views-responsive-grid > .views-row > div img,
  556. .region.region-content .view-id-profile .views-responsive-grid > .views-row > div img {
  557. border-radius: 50%;
  558. overflow: hidden;
  559. border: #0001 0.2em solid;
  560. }
  561.  
  562. h1 {
  563. padding: 0.25em;
  564. margin: 0;
  565. }
  566.  
  567. #comments > h2.title {
  568. padding: 0.4em;
  569. margin-bottom: 0.8em;
  570. }
  571. #add-forum-comment-block > h2 {
  572. padding: 0.4em 0;
  573. }
  574. `;
  575. document.head.appendChild(styleOverride);
  576. // done: unhide the root tag
  577. console.log('[Debug] Nothson\'s UI Fix exec time: ' + (new Date().getTime() - timestamp) + ' ms'); // Debug
  578. document.children[0].removeAttribute('hidden');
  579. }, true);