Sleazy Fork is available in English.

Iwara UI Fix

An alternate style for 天音's Iwara 1-Click Filter script, also works as a standalone

2020-03-04 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

  1. // ==UserScript==
  2. // @name Iwara UI Fix
  3. // @namespace none
  4. // @version 1.6
  5. // @description An alternate style for 天音's Iwara 1-Click Filter script, also works as a standalone
  6. // @author Nothson
  7. // @license CC BY-NC
  8. // @resource https://creativecommons.org/licenses/by-nc/4.0/
  9. // @match https://*.iwara.tv/*
  10. // @grant none
  11. // @run-at document-start
  12. // ==/UserScript==
  13.  
  14. /*
  15. --- Iwara UI Fix by Nothson : https://iwara.tv/users/Nothson ---
  16.  
  17. Mainly for scratching the Iwara's UI/UX itches I have.
  18. I'm not a senior web dev so plz don't scold me if the code below looks messy to you.
  19.  
  20. 4 Mar 2020
  21.  
  22. - In the cards (video/image page or sidebar), improved view count and likes formatting (k and M prefix, decimals)
  23.  
  24. 3 Mar 2020
  25.  
  26. - Changed the approach to replace the blank images, there were some corner cases that make errors
  27. - Added profile picture border for special roles (profile page only) + unique animated border for my own
  28. - Added script version number at the bottom of the page
  29.  
  30. 2 Mar 2020
  31. - Now, this script has conflicts with Iwara 1-Click Filter version 1.6 and newer
  32. - See the note at the bottom of any Iwara page for the workaround
  33.  
  34. 1 Mar 2020
  35.  
  36. - Added like percentage
  37. - Polaroid print style for video/image cards
  38. - Repositioned the card stats & icons
  39. - Added flairs, shown on the right of the card stats
  40. - Fire Icon: % like reaches the threshold (based on view count) + 200 views or more
  41. - Star Icon: % like reaches the threshold + 20k views or more
  42. - Lock Icon: Private video
  43. - Grid Icon: Multiple images
  44. - Screen Icon: External player (YouTube, Vimeo, etc.)
  45. - Card transitions on hover + extra transitions for some flairs
  46. - Added block backgrounds on many regions + made paddings and margins consistent
  47. - Fixed video player seek head
  48. - Changed forum post timestamp text color
  49. - Fixed user profile background, user lists (following/followers), and layout
  50. - Perhaps a few more things I did but couldn't remember, idk
  51.  
  52. Expected to run after Erono's Iwara 1-Click Filter Script: https://greasyfork.org/scripts/393957
  53. However, this script works as a standalone UI fix as well
  54. Tested on the latest version of Firefox & Chrome, plus responsive
  55. */
  56.  
  57. window.addEventListener('load', async function() {
  58. if (!window.location.href.match('://i.iwara.tv')) {
  59. let oneClickFilterConflict = document.head.querySelector('#css_custom') || document.head.querySelector('#css_likes');
  60. let baseCSS = document.createElement('style'); // Add original CSS rules from 1-Click Filter
  61. baseCSS.innerHTML = `
  62. /* ads */
  63. /*
  64. .block-extra-content, .extra-content-block {display: none;}
  65. */
  66.  
  67. /* fix page */
  68. body {background-color: #eee;}
  69. section#content > .container {background-color: #eee; padding: 10px;}
  70. .container {width: unset;}
  71. @media (min-width: 1300px) {.container {width: 1300px;}}
  72.  
  73. /* fix overflow */
  74. #block-system-main, .row {margin-left: 0; margin-right: 0;}
  75. .col-sm-3, .col-sm-6, .col-sm-9, .col-xs-6, .col-sm-12 {padding-left: 0; padding-right: 0;}
  76. .view-videos .view-content .views-row, .view-images .view-content .views-row {padding-bottom: 0px;}
  77.  
  78. /* compact page */
  79. .view-content .col-sm-3, .view-content .col-sm-6 {width: 50%; float: left;}
  80. @media (min-width: 768px) {
  81. .view-content .col-sm-3 {width: 25%;}
  82. }
  83.  
  84. /* card style */
  85. .node.node-teaser {background-color: #ffffff; border: 1px solid #ccc; border-radius: 4px; padding: 5px; margin: 4px;}
  86. .node.node-teaser .icon-bg, .node.node-teaser .private-video {width: calc(100% - 10px);}
  87. .node.node-teaser .icon-bg .likes-icon {filter: drop-shadow(0px 0px 2px #000);}
  88. .node.node-teaser h3.title {font-size: 1em; line-height: 1em; height: 3em; margin-bottom: 0px; overflow: hidden;}
  89. .node.node-teaser .username {display: block; white-space: nowrap; overflow: hidden;}
  90. .node.node-teaser .field-item {min-height: 2em;}
  91. .node.node-video .content {margin: 4px;}
  92. .sidebar .block.block-views,
  93. .sidebar .block.block-facetapi,
  94. .sidebar .block.block-mainblocks {background-color: #fafafa; border: 1px solid #ccc; border-radius: 4px; padding: 8px; margin: 4px 4px 8px 4px;}
  95. .sidebar .node.node-sidebar_teaser {background-color: #ffffff; border: 1px solid #ccc; border-radius: 2px; padding: 4px; margin: 2px;}
  96. .sidebar .node.node-sidebar_teaser .icon-bg, .node.node-sidebar_teaser .private-video {width: calc(100% - 8px);}
  97. .sidebar .node.node-sidebar_teaser .icon-bg .likes-icon {filter: drop-shadow(0px 0px 2px #000);}
  98. .item-list ul.pager li {margin: 0; padding: 0;}
  99. .item-list ul.pager li.pager-current,
  100. .item-list ul.pager li.pager-ellipsis,
  101. .item-list ul.pager li > a {background: #fafafa; border: 1px solid #ccc; border-radius: 8px; padding: 4px 16px; margin: 0px; display: inline-block;}
  102.  
  103. /* video style for external link (youtube) */
  104. /*
  105. .node.node-teaser .field-type-video-embed-field {border: 4px solid #c33; background-color: #000;}
  106. .node.node-teaser .field-type-video-embed-field .field-items {overflow: hidden;}
  107. .node.node-teaser .field-type-video-embed-field .field-items .field-item {margin: -4px;}
  108. */
  109.  
  110. /* image style in subscriptions page */
  111. .view-subscriptions .field-type-image {border: 1px solid #ccc; background-color: #fff; padding: 5px;}
  112. .view-subscriptions .field-type-image .field-items {overflow: hidden;}
  113. .view-subscriptions .field-type-image .field-items .field-item {margin: -6px;}
  114.  
  115. /* search and playist */
  116. .node-wide_teaser {background-color: #fafafa; border: 1px solid #ccc; border-radius: 4px; padding: 4px; margin: 4px;}
  117. .node-wide_teaser {width: unset; word-break: break-all; min-height: 170px;}
  118. .node-wide_teaser .col-sm-2 {width: 230px; padding: 4px;}
  119. .node-wide_teaser .col-sm-10 {width: calc(100% - 230px); padding: 4px;}
  120. .node-wide_teaser .field-name-field-video {border: 1px solid #999;}
  121. .node-wide_teaser .field-name-field-video-url {border: 1px solid #999; position: absolute; top: 0px; left: -230px; margin: 4px;}
  122. @media (max-width: 768px) {.node-wide_teaser .field-name-field-video-url {display: none;}}
  123. .node-wide_teaser .field-name-field-images .field-item {display: unset;}
  124. .node-wide_teaser .field-name-field-images .field-item > a > img {width: calc(100%/3 - 8px); border: 1px solid #aaa; padding: 4px; margin: 4px;}
  125. .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;}
  126. .node-wide_teaser .node-info {padding: 4px;}
  127. .node-wide_teaser .node-info .submitted {display: inline-block; width: 100%;}
  128. .node-wide_teaser .node-info .submitted h1.title {font-size: 28px; position: unset; margin: unset;}
  129. ul.facetapi-facetapi-tagcloud li > a {white-space: normal;}
  130. ul.facetapi-facetapi-tagcloud .element-invisible {display: none;}
  131.  
  132. /* footer */
  133. #wrapper {margin-bottom: unset; padding-bottom: unset;}
  134. footer {height: unset;}
  135. footer .block {width: 25%; float: left;}
  136. footer .block.block-forum {width: 50%;}
  137. footer .copyright {float: unset;}
  138.  
  139. /* video player */
  140. /* expand volume and seekbar height */
  141. .video-js .vjs-volume-bar {margin: 1em 0em;}
  142. .video-js .vjs-volume-bar.vjs-slider-horizontal, .video-js .vjs-volume-bar.vjs-slider-horizontal .vjs-volume-level {height: 1em;}
  143. .video-js .vjs-progress-holder, .video-js .vjs-progress-holder .vjs-load-progress, .video-js .vjs-progress-holder .vjs-play-progress {height: 1em;}
  144. `;
  145. baseCSS.id = 'xtension-base-css';
  146. document.head.appendChild(baseCSS);
  147. let cards = document.querySelectorAll('.node-teaser, .node-sidebar_teaser');
  148. function logn (val, base) {
  149. return Math.log(val) / Math.log(base);
  150. }
  151. function kilo2Number (text) {
  152. if (text.match('k') == null) {
  153. return {value: parseInt(text), isKilo: false};
  154. }
  155. else {
  156. return {value: parseFloat(text.replace('k', '')) * 1000, isKilo: true};
  157. }
  158. }
  159. function number2Prefixed(value) {
  160. if (value < 999) {
  161. return value;
  162. }
  163. else if (value < 99999) {
  164. return (value / 1000).toFixed(1) + 'k';
  165. }
  166. else if (value < 999999) {
  167. return Math.floor(value / 1000) + 'k';
  168. }
  169. else {
  170. return (value / 1000000).toFixed(1) + 'M';
  171. }
  172. }
  173. function getFlair (viewCount, likePercentage, card) {
  174. if (card.querySelector('.private-video')) {
  175. return 'lock';
  176. }
  177. else if ((card.className.match('node-sidebar_teaser') && card.children.length > 2) || card.children.length > 4) {
  178. return 'share';
  179. }
  180. else {
  181. let likeThreshold = 8 - logn(viewCount, 6);
  182. if (viewCount < 200) {
  183. return '';
  184. }
  185. else if (viewCount < 20000) {
  186. return (likePercentage > likeThreshold) ? 'fire' : '';
  187. }
  188. else {
  189. return (likePercentage > likeThreshold) ? 'star' : '';
  190. }
  191. }
  192. }
  193.  
  194. // HTML Mod
  195. cards.forEach(card => {
  196. let icons = card.querySelector('.icon-bg');
  197. if (icons) { // Rearrange stat icons, add like percentage and flairs
  198. if ((card.className.match('node-sidebar_teaser') && card.children.length > 1) || card.children.length > 3) {
  199. card.insertBefore(icons, card.children[2]);
  200. }
  201. else {
  202. card.insertBefore(icons, card.children[1]);
  203. }
  204. if (card.className.match('node-image') && icons.children.length == 3) {
  205. icons.appendChild(icons.children[1]);
  206. icons.appendChild(icons.children[0]);
  207. }
  208. else if (icons.children.length == 2) {
  209. icons.appendChild(icons.children[0]);
  210. }
  211.  
  212. let likeNode = icons.querySelector('.glyphicon-heart');
  213. if (likeNode && !(card.className.match('node-image') && card.className.match('node-sidebar_teaser'))) {
  214. likeNode = likeNode.nextSibling;
  215. let viewNode = icons.querySelector('.glyphicon-eye-open').nextSibling;
  216. let viewNodeTxt = viewNode.wholeText.trim();
  217. let likeNodeTxt = likeNode.wholeText.trim();
  218. let like = kilo2Number(likeNodeTxt);
  219. let viewCount = kilo2Number(viewNodeTxt);
  220. let likePercentage = (viewCount == 0) ? 0 : parseFloat(like.value / viewCount.value * 100).toFixed(2);
  221. viewNode.parentElement.setAttribute('title', viewNodeTxt);
  222. viewNode.nodeValue = ' ' + number2Prefixed(viewCount.value);
  223. if (likeNode) {
  224. likeNode.parentElement.setAttribute('title', likeNodeTxt);
  225. likeNode.nodeValue = ' ' + number2Prefixed(like.value);
  226. }
  227. if (!card.className.match('node-sidebar_teaser')) {
  228. let likePercentageHTML = document.createElement('div');
  229. likePercentageHTML.className += 'right-icon likes-icon like-percentage';
  230. if (like.isKilo || viewCount.isKilo) {
  231. likePercentageHTML.innerText = '(~' + likePercentage + '%)';
  232. }
  233. else {
  234. likePercentageHTML.innerText = '(' + likePercentage + '%)';
  235. }
  236. likeNode.parentElement.parentElement.appendChild(likePercentageHTML);
  237. }
  238. if (card.className.match('node-video')) {
  239. let flair = getFlair(viewCount.value, likePercentage, card);
  240. if (flair) {
  241. card.className += ' flair-' + flair;
  242. let flairNode = document.createElement('div');
  243. flairNode.setAttribute('class', 'left-icon flair-icon');
  244. flairNode.innerHTML = '<i class="glyphicon glyphicon-' + flair + '" title="Flair"></i>';
  245. icons.appendChild(flairNode);
  246. }
  247. }
  248. }
  249. }
  250. else {
  251. let blankFooter = document.createElement('div');
  252. blankFooter.setAttribute('class', 'icon-bg');
  253. card.appendChild(blankFooter);
  254. }
  255.  
  256. let thumbnail = card.querySelector('a > img');
  257. if (!thumbnail) { // Fix inconsistent height of the cards with no thumbnail
  258. let imgArea = card.firstElementChild;
  259. let title = card.querySelector('h3.title > a');
  260. if (!title) {
  261. title = card.querySelector('.field-item > a');
  262. }
  263. let url = (title) ? title.getAttribute('href') : '';
  264. imgArea.innerHTML = '<div class="field blankimg"><div class="field-items"><div class="field-item"><a' +
  265. (url ? ' href="' + url + '"' : '') +
  266. (title ? ' title="' + title.innerText + '"' : '') +
  267. '>' +
  268. (card.className.match('node-sidebar_teaser') ? '<img width="141" height="84"></img>' : '<img width="220" height="150"></img>') +
  269. '</a></div></div></div>';
  270. }
  271. });
  272.  
  273. 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');
  274. if (contentInfo) { // Add like percentage for a video/image page
  275. let heartIcon = contentInfo.querySelector('.glyphicon.glyphicon-heart');
  276. if (heartIcon) {
  277. let eyeIcon = contentInfo.querySelector('.glyphicon.glyphicon-eye-open');
  278. let viewCount = parseInt(eyeIcon.nextSibling.nodeValue.replace(/,/g, ''));
  279. let like = parseInt(heartIcon.nextSibling.nodeValue.replace(/,/g, ''));
  280. let likePercentage = (viewCount == 0) ? 0 : parseFloat(like / viewCount * 100).toFixed(4);
  281. heartIcon.nextSibling.nodeValue = ' ' + like + ' (' + likePercentage + '%)';
  282. contentInfo.appendChild(contentInfo.querySelector('.glyphicon.glyphicon-heart'));
  283. contentInfo.appendChild(contentInfo.querySelector('.glyphicon.glyphicon-eye-open').previousSibling);
  284. }
  285. }
  286.  
  287. let copyrightNode = document.querySelector('footer .copyright');
  288. if (copyrightNode) { // Add script credits
  289. let innerHTMLExt = '<br><u><b><a href="https://greasyfork.org/en/scripts/397126">Iwara UI Fix</a></b></u> version ' + GM_info.script.version + ' by <u><b><a href="/users/nothson">Nothson</a></b></u><br><b>Note:</b> <u><b><a href="/images/iwara-1-click-filter">Iwara 1-Click Filter</a></b></u>\'s <b>User Style</b> and/or <b>Like Colors</b> are enabled. Disable them in the in-page settings, then refresh to prevent style conflict.';
  290. if (!oneClickFilterConflict) {
  291. innerHTMLExt = '<br><u><b><a href="https://greasyfork.org/en/scripts/397126">Iwara UI Fix</a></b></u> version ' + GM_info.script.version + ' by <u><b><a href="/users/nothson">Nothson</a></b></u><br><i>Based on CSS rules from <u><b><a href="/images/iwara-1-click-filter">Iwara 1-Click Filter</a></b></u> (version 1.5) by <u><b><a href="/users/erono">Erono</a></b></u></i>.';
  292. }
  293. copyrightNode.innerHTML = copyrightNode.firstChild.nodeValue + innerHTMLExt;
  294. }
  295. let addForumCommentElement = document.querySelectorAll('#forum-comments h2.comment-form, #forum-comments noscript, #forum-comments #comment-form');
  296. if (addForumCommentElement.length > 0) { // Wrap forum's "Add new comment" section in a block
  297. let commentBlock = document.createElement('div');
  298. commentBlock.id = 'add-forum-comment-block';
  299. addForumCommentElement.forEach(elem => {
  300. commentBlock.appendChild(elem);
  301. });
  302. document.getElementById('forum-comments').appendChild(commentBlock);
  303. }
  304. let creatorProfileCard = document.querySelector('body.page-user.page-user- #block-views-profile-block .field-content');
  305. if (creatorProfileCard) {
  306. if (document.body.className.match('page-user-603563')) { // My special profile pic border + tooltip
  307. creatorProfileCard.innerHTML = creatorProfileCard.innerHTML + creatorProfileCard.innerHTML + creatorProfileCard.innerHTML + creatorProfileCard.innerHTML + creatorProfileCard.innerHTML + creatorProfileCard.innerHTML + creatorProfileCard.innerHTML;
  308. creatorProfileCard.children[5].setAttribute('src', 'https://i.imgur.com/fQZC1bB.png');
  309. creatorProfileCard.setAttribute('title', 'The creator of "Iwara UI Fix"');
  310. }
  311. else { // User role profile pic border
  312. let role = document.querySelector('body.page-user.page-user- #content div.content > div.profile > div:last-child > ul > li');
  313. if (role) {
  314. switch (role.innerText) {
  315. case 'administrator':
  316. creatorProfileCard.className += ' role-admin';
  317. creatorProfileCard.setAttribute('title', 'Administrator');
  318. break;
  319. case 'moderator':
  320. creatorProfileCard.className += ' role-mod';
  321. creatorProfileCard.setAttribute('title', 'Moderator');
  322. break;
  323. }
  324. role = role.parentElement.parentElement;
  325. role.parentElement.removeChild(role);
  326. }
  327. }
  328. }
  329. // CSS Override
  330. let styleOverride = document.createElement('style');
  331. styleOverride.id = 'xtension-css';
  332. styleOverride.innerHTML = `
  333. .node.node-teaser,
  334. .node.node-sidebar_teaser,
  335. .node.node-teaser i,
  336. .node.node-sidebar_teaser i,
  337. .node.node-teaser img,
  338. .node.node-sidebar_teaser img {
  339. transition: 0.15s!important;
  340. }
  341.  
  342. /*
  343. .node.node-teaser img,
  344. .node.node-sidebar_teaser img {
  345. filter: contrast(0)!important;
  346. }
  347. */
  348.  
  349. .node.node-teaser h3.title,
  350. .node.node-sidebar_teaser h3.title {
  351. height: auto!important;
  352. white-space: nowrap!important;
  353. text-overflow: ellipsis!important;
  354. }
  355.  
  356. .node.node-teaser:hover,
  357. .node.node-sidebar_teaser:hover {
  358. box-shadow: 3pt 12pt 12pt -6pt #0004;
  359. transform: rotate3d(0.9, -0.1, 0.1, 3deg) scale(1.02);
  360. z-index: 42;
  361. }
  362.  
  363. .node.node-teaser.flair-fire:hover,
  364. .node.node-sidebar_teaser.flair-fire:hover {
  365. transform: rotate3d(0.9, -0.1, 0.1, -4.5deg) scale(1.02);
  366. border-color: #f40a;
  367. }
  368.  
  369. .node.node-teaser.flair-star:hover,
  370. .node.node-sidebar_teaser.flair-star:hover {
  371. transform: rotate3d(-0.9, 0.1, -0.2, 4.5deg) scale(1.04);
  372. filter: drop-shadow(-0.2em -0.2em 2em #ffe8);
  373. outline: 0.32em solid #fe8;
  374. border: 0;
  375. border-radius: 0;
  376. }
  377.  
  378. .views-responsive-grid.views-responsive-grid-horizontal.views-columns-2 > * {
  379. margin-bottom: 0;
  380. }
  381.  
  382. .node.node-teaser .icon-bg,
  383. .node.node-sidebar_teaser .icon-bg {
  384. width: 100%!important;
  385. position: unset;
  386. margin-top: 0.4em;
  387. padding: 0;
  388. }
  389.  
  390. .node.node-sidebar_teaser .icon-bg {
  391. min-height: 1.35em;
  392. }
  393.  
  394. .node:hover .icon-bg {
  395. background: unset!important;
  396. }
  397.  
  398. .node.node-teaser .left-icon,
  399. .node.node-sidebar_teaser .left-icon {
  400. color: inherit;
  401. margin-left: 0.1em;
  402. font-size: 0.8em;
  403. filter: unset!important;
  404.  
  405. }
  406.  
  407. .node.node-teaser .right-icon,
  408. .node.node-sidebar_teaser .right-icon {
  409. float: left!important;
  410. color: inherit;
  411. margin-left: 0.5em;
  412. font-size: 0.8em;
  413. filter: unset!important;
  414. }
  415.  
  416. .node-image.node-sidebar_teaser .right-icon:first-of-type {
  417. margin-left: 0;
  418. }
  419.  
  420. .node.node-teaser .left-icon.multiple-icon,
  421. .node.node-sidebar_teaser .left-icon.multiple-icon {
  422. float: right!important;
  423. color: inherit;
  424. margin-left: 0.5em;
  425. font-size: 0.8em;
  426. filter: unset!important;
  427. }
  428.  
  429. .node.node-teaser .left-icon.flair-icon,
  430. .node.node-sidebar_teaser .left-icon.flair-icon {
  431. float: right!important;
  432. color: inherit;
  433. margin-right: 0.1em;
  434. font-size: 0.8em;
  435. filter: unset!important;
  436. }
  437.  
  438. .node.node-teaser .right-icon.like-percentage,
  439. .node.node-sidebar_teaser .right-icon.like-percentage {
  440. margin-left: 0.3em;
  441. }
  442.  
  443. .node.node-teaser h3.title {
  444. width: 100%;
  445. height: 2em;
  446. }
  447.  
  448. .node.node-teaser.flair-lock:hover [title="Flair"],
  449. .node.node-sidebar_teaser.flair-lock:hover [title="Flair"] {
  450. color: #bbbf;
  451. }
  452.  
  453. .node.node-teaser.flair-fire:hover [title="Flair"],
  454. .node.node-sidebar_teaser.flair-fire:hover [title="Flair"] {
  455. color: #f40f;
  456. filter: drop-shadow(0.12em -0.16em 0 #f806) drop-shadow(-0.12em -0.04em 0.06em #fd08);
  457. }
  458.  
  459. .node.node-teaser.flair-star:hover [title="Flair"] {
  460. color: #fd4f;
  461. transform: rotate(18deg) scale(3.2);
  462. 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);
  463. }
  464.  
  465. .node.node-sidebar_teaser.flair-star:hover [title="Flair"] {
  466. color: #fd4f;
  467. transform: rotate(18deg) scale(2.4);
  468. 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);
  469. }
  470.  
  471. .node.node-video.node-teaser.flair-lock:hover > div > div div > a > img,
  472. .node.node-video.node-sidebar_teaser.flair-lock:hover > div div > div > a > img {
  473. filter: grayscale(1);
  474. }
  475.  
  476. .node.node-video.node-teaser.flair-fire:hover > div > div div > a > img,
  477. .node.node-video.node-sidebar_teaser.flair-fire:hover > div > div div > a > img {
  478. filter: sepia(0.3) contrast(1.25) hue-rotate(-15deg) saturate(1.25);
  479. }
  480.  
  481. .node.node-video.node-teaser.flair-star:hover > div > div div > a > img,
  482. .node.node-video.node-sidebar_teaser.flair-star:hover > div > div div > a > img {
  483. filter: sepia(0.5) brightness(1.1) contrast(1.25) saturate(1.5);
  484. }
  485.  
  486. .node.node-teaser .blankimg,
  487. .node.node-sidebar_teaser .blankimg {
  488. display: block;
  489. border: #ccc 0.5pt dashed;
  490. }
  491.  
  492. .node.node-teaser .blankimg a,
  493. .node.node-sidebar_teaser .blankimg a {
  494. filter: opacity(0);
  495. }
  496.  
  497. .video-js .vjs-play-progress:before {
  498. top: -40%;
  499. color: #fffd;
  500. font-size: 1.8em;
  501. box-shadow: 0 8pt 8pt -4pt #0006;
  502. }
  503.  
  504. .video-js .vjs-volume-level:before {
  505. display: none;
  506. }
  507.  
  508. body.front #wrapper > section > .container,
  509. body.page-node-add form,
  510. body.page-node-edit form,
  511. body.page-user-friends #content > .container,
  512. body.page-user-liked #content > .container,
  513. body.page-subscriptions #content > .container,
  514. body.page-my-content #content > .container,
  515. body.page-messages #content > .container,
  516. body.page-user-edit form,
  517. body.page-comment #content > .container,
  518. body.page-forum #content > .container,
  519. body.node-type-video .node.node-video > .content,
  520. body.node-type-image .node.node-image > .content,
  521. #comments,
  522. #add-forum-comment-block,
  523. .region.region-content .view-id-profile,
  524. .node.node-journal,
  525. [class*="block-views"],
  526. .sidebar .block.block-facetapi,
  527. .sidebar .block.block-mainblocks,
  528. .region.region-sidebar .extra-content-block {
  529. background-color: #fafafa;
  530. border: 1px solid #ccc;
  531. border-radius: 4px!important;
  532. padding: 0.8em!important;
  533. margin: 0.5em 0.5em 1em 0.5em!important;
  534. }
  535.  
  536. body.page-user #content {
  537. background-attachment: fixed;
  538. }
  539.  
  540. body.page-user- #content > .container {
  541. background-color: #eee8;
  542. }
  543.  
  544. body.page-user [class*="block-views"],
  545. body.page-user .sidebar .block.block-views,
  546. #block-mainblocks-user-connect,
  547. body.page-user #comments {
  548. background-color: #fafafad0;
  549. }
  550.  
  551. body.page-node-add form,
  552. body.page-node-edit form {
  553. background-color: #ffffff;
  554. }
  555.  
  556. body.front #wrapper > section > .container,
  557. body.page-user-friends #content > .container,
  558. body.page-user-liked #content > .container,
  559. body.page-subscriptions #content > .container,
  560. body.page-my-content #content > .container,
  561. body.page-messages #content > .container,
  562. body.page-user-edit form,
  563. body.page-comment #content > .container,
  564. body.page-forum #content > .container {
  565. margin-left: auto!important;
  566. margin-right: auto!important;
  567. }
  568.  
  569. body.page-forum #content > .container .panel-group > * {
  570. margin-top: 1em;
  571. }
  572.  
  573. body.node-type-video .node.node-video .node-info .node-views .glyphicon.glyphicon-heart,
  574. body.node-type-image .node.node-image .node-info .node-views .glyphicon.glyphicon-heart {
  575. margin-left: 0.5em;
  576. }
  577.  
  578. .node.node-wide_teaser {
  579. padding: 0.8em!important;
  580. margin: 0.5em 0.5em 1em 0.5em!important;
  581. }
  582.  
  583. .forum-post {
  584. margin: 0.5em 0.5em 1em 0.5em!important;
  585. }
  586.  
  587. .forum-post > .panel-heading > .text-muted {
  588. color: #0008;
  589. }
  590.  
  591. body.node-type-video .node.node-video > .content,
  592. body.node-type-image .node.node-image > .content {
  593. padding: 0!important;
  594. }
  595.  
  596. body.node-type-video .node.node-video > .content > .node-buttons,
  597. body.node-type-image .node.node-image > .content > .node-buttons {
  598. margin-bottom: 0;
  599. }
  600.  
  601. body.node-type-video .node.node-video > .content > .well {
  602. max-width: 100%!important;
  603. margin: 0;
  604. }
  605.  
  606. .node-journal #comments {
  607. border: unset;
  608. }
  609.  
  610. .view-profile.view-display-id-block {
  611. background-color: unset;
  612. padding: unset;
  613. box-shadow: unset;
  614. }
  615.  
  616. #block-views-profile-block {
  617. background-color: #fafafa;
  618. box-shadow: 2pt 8pt 8pt -4pt #0004;
  619. }
  620.  
  621. .region.region-sidebar .view-id-profile .views-responsive-grid > .views-row > div img,
  622. .region.region-content .view-id-profile .views-responsive-grid > .views-row > div img {
  623. border-radius: 50%;
  624. overflow: hidden;
  625. border: #0001 0.2em solid;
  626. }
  627.  
  628. h1 {
  629. padding: 0.25em;
  630. margin: 0;
  631. }
  632.  
  633. #comments > h2.title {
  634. padding: 0.4em;
  635. margin-bottom: 0.8em;
  636. }
  637. #add-forum-comment-block > h2,
  638. .extra-content-block {
  639. padding: 0.6em 0;
  640. }
  641. .region.region-sidebar .extra-content-block {
  642. background-color: #0000;
  643. border: 0;
  644. overflow: hidden;
  645. }
  646. .region.region-sidebar .extra-content-block iframe {
  647. transform: translateX(-8.75pt);
  648. }
  649. .extra-content-block > center + br,
  650. body.node-type-video #block-extra-content-extra-content-block-5,
  651. body.node-type-video #block-extra-content-extra-content-block-8 {
  652. display: none;
  653. }
  654. body.page-user-603563 #block-views-profile-block .field-content {
  655. position: relative;
  656. }
  657. body.page-user-603563 #block-views-profile-block .field-content > img {
  658. margin: 5%;
  659. transform-origin: 48%;
  660. border: 0;
  661. }
  662. body.page-user-603563 #block-views-profile-block .field-content > img:nth-child(1) {
  663. position: absolute;
  664. filter: contrast(0) brightness(0) opacity(0.15);
  665. animation: special-border 2.4s -1.5s infinite linear;
  666. }
  667. body.page-user-603563 #block-views-profile-block .field-content > img:nth-child(2) {
  668. position: absolute;
  669. filter: contrast(0) sepia(1) saturate(3) brightness(1.7) opacity(0.9);
  670. animation: special-border 4.3s infinite linear;
  671. }
  672. body.page-user-603563 #block-views-profile-block .field-content > img:nth-child(3) {
  673. position: absolute;
  674. filter: contrast(0) sepia(1) saturate(7) brightness(1.5) hue-rotate(120deg) opacity(0.9);
  675. animation: special-border 1.2s -0.71s infinite linear;
  676. }
  677. body.page-user-603563 #block-views-profile-block .field-content > img:nth-child(4) {
  678. position: absolute;
  679. filter: contrast(0) sepia(1) saturate(7) brightness(1.2) hue-rotate(240deg) opacity(0.9);
  680. animation: special-border 3.4s -0.13s infinite linear;
  681. }
  682. body.page-user-603563 #block-views-profile-block .field-content > img:nth-child(5) {
  683. position: absolute;
  684. filter: contrast(0) brightness(2) opacity(0.9);
  685. animation: special-border 0.7s -0.24s infinite linear;
  686. }
  687. body.page-user-603563 #block-views-profile-block .field-content > img:nth-child(6) {
  688. position: absolute;
  689. }
  690. @keyframes special-border {
  691. 0% {transform: translate(2%, 0) rotateZ(40deg) scale(1.03);}
  692. 100% {transform: translate(2%, 0) rotateZ(400deg) scale(1.03);}
  693. }
  694. body.page-user.page-user- #block-views-profile-block .field-content.role-admin > img {
  695. border: #f88 6pt solid;
  696. }
  697. body.page-user.page-user- #block-views-profile-block .field-content.role-mod > img {
  698. border: #8af 6pt solid;
  699. }
  700. `;
  701. document.head.appendChild(styleOverride);
  702. }
  703. }, true);