59 Commits 70d9c7849a ... 510f99fa25

Author SHA1 Message Date
  fox 510f99fa25 Merge branch 'quiet_daemon_2' of Gravemind/tt-rss into master 7 months ago
  Andrew Dolgov 8b6ef90385 update php-readability 7 months ago
  Jordan Galby 487d06a20d fix 'logging to...' output line not respecting quiet setting (update_daemon2.php) 7 months ago
  Andrew Dolgov 874a2d2170 Revert "enable fi_FI locale" 7 months ago
  Andrew Dolgov e00041b206 enable fi_FI locale 7 months ago
  Andrew Dolgov ab8e551821 Merge branch 'weblate-integration' 7 months ago
  Андрій Жук e25dfd9941 Translated using Weblate (Ukrainian) 7 months ago
  Nikolay Korotkiy e69837fa9c Translated using Weblate (Russian) 7 months ago
  Nikolay Korotkiy 7de9eff0fa Translated using Weblate (Finnish) 7 months ago
  Andrew Dolgov 13e7e775a3 update_rss_feed: mark_unread_on_update should take into account catchup filter action and entry_force_catchup 7 months ago
  Andrew Dolgov dd9bad06ee Merge branch 'weblate-integration' 7 months ago
  Сергей «Solaris» Сидоров 45b7710bd0 Translated using Weblate (Russian) 7 months ago
  Nikolay Korotkiy fc266752cf Translated using Weblate (Russian) 7 months ago
  Andrew Dolgov 1d2da64572 af_redditimgur: apparently imgur has link rel='image_src' now, let's use it 7 months ago
  Сергей «Solaris» Сидоров 4a5f584a58 Translated using Weblate (Russian) 7 months ago
  Nikolay Korotkiy c8030eb75a Translated using Weblate (Russian) 7 months ago
  Сергей «Solaris» Сидоров 17b7aa3ead Translated using Weblate (Russian) 7 months ago
  Patrick Ahles efc6bf2cf9 Translated using Weblate (German) 7 months ago
  Glandos e8b2c1224c Translated using Weblate (French) 7 months ago
  fox 856e0c32eb Merge branch '12htime' of Fmstrat/tt-rss into master 7 months ago
  root 5ac1935db5 Make article date select 12/24 time based on SHORT_DATE_FORMAT 7 months ago
  Andrew Dolgov 26ac57b092 headlines: hide blank feed elements if not rendering virtual feed 7 months ago
  Andrew Dolgov 1124c3f00a label display: fix unneeded nested container in headlines, increase overall minimalism, fix label element typo (div1) 7 months ago
  Andrew Dolgov 64bd45b51c Merge branch 'master' of git.fakecake.org:tt-rss 7 months ago
  Andrew Dolgov 413a73da39 Merge branch 'weblate-integration' 7 months ago
  Андрій Жук 258e82c860 Translated using Weblate (Ukrainian) 7 months ago
  Marco Aurélio Graciotto Silva d75ff9766a Translated using Weblate (Portuguese (Brazil)) 7 months ago
  Andrew Dolgov dbab03bd4c Feeds.catchupAllFeeds() should be Feeds.catchupAll() 7 months ago
  fox 43411c9264 Merge branch 'master' of AZ/tt-rss into master 7 months ago
  AZ 98d98cade0 'Revert' 7 months ago
  Andrii Zhuk a4aadd4d77 Added Ukrainian to the list of languches (using in FTS) 7 months ago
  Andrii Zhuk f1f2b81a90 Add i18n for auto mode:wq 7 months ago
  Andrii Zhuk 57c3322088 Changed language name for Ukrainian 7 months ago
  Андрій Жук d78580164d Translated using Weblate (Ukrainian) 7 months ago
  Andrew Dolgov c7c9c5fb0a feedTree: amend previous to check that nodes are actually there (2) 7 months ago
  Andrew Dolgov 42e0c7a420 feedTree: amend previous to check that nodes are actually there 7 months ago
  Andrew Dolgov 277759221c Merge branch 'weblate-integration' 7 months ago
  Andrew Dolgov 3827e5b944 selectFeed: scroll feed tree to selected row 7 months ago
  Андрій Жук bb3a3b30da Translated using Weblate (Ukrainian) 7 months ago
  Andrew Dolgov da35421cce Merge branch 'weblate-integration' 7 months ago
  Андрій Жук 73b268b648 Translated using Weblate (Ukrainian) 7 months ago
  Jan Hasebos cbd451a465 Translated using Weblate (Dutch) 7 months ago
  Andrew Dolgov a482cb28e8 Merge branch 'weblate-integration' 7 months ago
  Андрій Жук d1deac203e Translated using Weblate (Ukrainian) 8 months ago
  Andrew Dolgov 6eccac95f2 fix 'logging to...' output line not respecting quiet setting 8 months ago
  Andrew Dolgov 506ddd8297 Merge branch 'weblate-integration' 8 months ago
  Andrew Dolgov b25dcdf8f3 upd CONTRIBUTING 8 months ago
  Andrew Dolgov dcebcbf694 upd CONTRIBUTING 8 months ago
  Andrew Dolgov ef6dcaad34 upd CONTRIBUTING 8 months ago
  Андрій Жук 6302a5ce6f Translated using Weblate (Ukrainian) 8 months ago
  Dario Di Ludovico 29e58502b8 Translated using Weblate (Italian) 8 months ago
  Ptsa Daniel 379f83d7ef Translated using Weblate (Chinese (Simplified)) 8 months ago
  Andrew Dolgov 8b26b8629f headlines-frame: set is-vfeed attribute if result is virtual feed 8 months ago
  Andrew Dolgov 17a8821c0b enable uk_UA locale; rebase translations 8 months ago
  Andrew Dolgov 59aba5ae38 Merge branch 'master' of git.fakecake.org:tt-rss 8 months ago
  Andrew Dolgov d40e673698 rename uk locale to uk_UA 8 months ago
  Andrew Dolgov efef294117 Merge branch 'weblate-integration' 8 months ago
  Андрій Жук e7b8a76ffe Translated using Weblate (Ukrainian) 8 months ago
  Андрій Жук 9b104e82de Added translation using Weblate (Ukrainian) 8 months ago
77 changed files with 36777 additions and 33120 deletions
  1. 6 1
      CONTRIBUTING.md
  2. 3 3
      classes/article.php
  3. 3 2
      classes/feeds.php
  4. 6 1
      classes/rssutils.php
  5. 76 80
      css/default.css
  6. 1 1
      css/default.css.map
  7. 6 10
      css/tt-rss.less
  8. 7 2
      include/functions.php
  9. 15 2
      js/FeedTree.js
  10. 5 2
      js/Headlines.js
  11. BIN
      locale/ar_SA/LC_MESSAGES/messages.mo
  12. 1216 1215
      locale/ar_SA/LC_MESSAGES/messages.po
  13. BIN
      locale/bg_BG/LC_MESSAGES/messages.mo
  14. 1219 1218
      locale/bg_BG/LC_MESSAGES/messages.po
  15. BIN
      locale/ca_CA/LC_MESSAGES/messages.mo
  16. 1202 1204
      locale/ca_CA/LC_MESSAGES/messages.po
  17. BIN
      locale/cs_CZ/LC_MESSAGES/messages.mo
  18. 1212 1248
      locale/cs_CZ/LC_MESSAGES/messages.po
  19. BIN
      locale/da_DK/LC_MESSAGES/messages.mo
  20. 1203 1205
      locale/da_DK/LC_MESSAGES/messages.po
  21. BIN
      locale/de_DE/LC_MESSAGES/messages.mo
  22. 1215 1212
      locale/de_DE/LC_MESSAGES/messages.po
  23. BIN
      locale/el_GR/LC_MESSAGES/messages.mo
  24. 1203 1205
      locale/el_GR/LC_MESSAGES/messages.po
  25. BIN
      locale/es_ES/LC_MESSAGES/messages.mo
  26. 1219 1225
      locale/es_ES/LC_MESSAGES/messages.po
  27. BIN
      locale/es_LA/LC_MESSAGES/messages.mo
  28. 1203 1205
      locale/es_LA/LC_MESSAGES/messages.po
  29. BIN
      locale/fi_FI/LC_MESSAGES/messages.mo
  30. 1223 1223
      locale/fi_FI/LC_MESSAGES/messages.po
  31. BIN
      locale/fr_FR/LC_MESSAGES/messages.mo
  32. 1205 1207
      locale/fr_FR/LC_MESSAGES/messages.po
  33. BIN
      locale/hu_HU/LC_MESSAGES/messages.mo
  34. 1210 1209
      locale/hu_HU/LC_MESSAGES/messages.po
  35. BIN
      locale/it_IT/LC_MESSAGES/messages.mo
  36. 1210 1213
      locale/it_IT/LC_MESSAGES/messages.po
  37. BIN
      locale/ja_JP/LC_MESSAGES/messages.mo
  38. 1207 1206
      locale/ja_JP/LC_MESSAGES/messages.po
  39. BIN
      locale/ko_KR/LC_MESSAGES/messages.mo
  40. 1208 1210
      locale/ko_KR/LC_MESSAGES/messages.po
  41. BIN
      locale/lv_LV/LC_MESSAGES/messages.mo
  42. 1216 1215
      locale/lv_LV/LC_MESSAGES/messages.po
  43. BIN
      locale/nb_NO/LC_MESSAGES/messages.mo
  44. 1202 1204
      locale/nb_NO/LC_MESSAGES/messages.po
  45. BIN
      locale/nl_NL/LC_MESSAGES/messages.mo
  46. 1206 1214
      locale/nl_NL/LC_MESSAGES/messages.po
  47. BIN
      locale/pl_PL/LC_MESSAGES/messages.mo
  48. 1210 1209
      locale/pl_PL/LC_MESSAGES/messages.po
  49. BIN
      locale/pt_BR/LC_MESSAGES/messages.mo
  50. 1253 1264
      locale/pt_BR/LC_MESSAGES/messages.po
  51. BIN
      locale/pt_PT/LC_MESSAGES/messages.mo
  52. 1207 1209
      locale/pt_PT/LC_MESSAGES/messages.po
  53. BIN
      locale/ru_RU/LC_MESSAGES/messages.mo
  54. 1226 1216
      locale/ru_RU/LC_MESSAGES/messages.po
  55. BIN
      locale/sv_SE/LC_MESSAGES/messages.mo
  56. 1217 1262
      locale/sv_SE/LC_MESSAGES/messages.po
  57. BIN
      locale/tr_TR/LC_MESSAGES/messages.mo
  58. 1209 1208
      locale/tr_TR/LC_MESSAGES/messages.po
  59. BIN
      locale/uk_UA/LC_MESSAGES/messages.mo
  60. 3511 0
      locale/uk_UA/LC_MESSAGES/messages.po
  61. BIN
      locale/zh_CN/LC_MESSAGES/messages.mo
  62. 1202 1201
      locale/zh_CN/LC_MESSAGES/messages.po
  63. BIN
      locale/zh_TW/LC_MESSAGES/messages.mo
  64. 1214 1216
      locale/zh_TW/LC_MESSAGES/messages.po
  65. 978 982
      messages.pot
  66. 31 0
      plugins/af_redditimgur/init.php
  67. 126 130
      themes/night.css
  68. 1 1
      themes/night.css.map
  69. 126 130
      themes/night_blue.css
  70. 1 1
      themes/night_blue.css.map
  71. 1 1
      update.php
  72. 1 1
      update_daemon2.php
  73. 33 7
      vendor/andreskrey/Readability/Configuration.php
  74. 1 0
      vendor/andreskrey/Readability/Nodes/DOM/DOMNode.php
  75. 144 18
      vendor/andreskrey/Readability/Nodes/NodeTrait.php
  76. 6 5
      vendor/andreskrey/Readability/Nodes/NodeUtility.php
  77. 172 117
      vendor/andreskrey/Readability/Readability.php

+ 6 - 1
CONTRIBUTING.md

@@ -3,7 +3,12 @@
 TLDR: it works pretty much like Github.
 
 1. Make an account on Gogs
-2. Fork the repository you're interested in
+2. Fork the repository you're interested in (also see below)
 3. Do the needful
 4. File a pull request with your changes against master branch.
 
+**If you can't fork the repository on Gogs, please see this forum thread:**
+
+https://discourse.tt-rss.org/t/pull-requests-gogs-spam/1850/2
+
+

+ 3 - 3
classes/article.php

@@ -624,9 +624,9 @@ class Article extends Handler_Protected {
 		$labels_str = "";
 
 		foreach ($labels as $l) {
-			$labels_str .= sprintf("<div1 class='label'
-				style='color : %s; background-color : %s'><i class='material-icons' style='color : %s'>label</i><div>%s</div></div1>",
-				$l[2], $l[3], $l[2], $l[1]);
+			$labels_str .= sprintf("<div class='label'
+				style='color : %s; background-color : %s'>%s</div>",
+				$l[2], $l[3], $l[1]);
 		}
 
 		return $labels_str;

+ 3 - 2
classes/feeds.php

@@ -209,6 +209,7 @@ class Feeds extends Handler_Protected {
 			make_local_datetime($qfh_ret[4], false) : __("Never");
 		$highlight_words = $qfh_ret[5];
 		$reply['first_id'] = $qfh_ret[6];
+		$reply['is_vfeed'] = $qfh_ret[7];
 		$reply['search_query'] = [$search, $search_language];
 		$reply['vfeed_group_enabled'] = $vfeed_group_enabled;
 
@@ -1748,7 +1749,7 @@ class Feeds extends Handler_Protected {
 					$first_id = (int)$row["id"];
 
 					if ($offset > 0 && $first_id && $check_first_id && $first_id != $check_first_id) {
-						return array(-1, $feed_title, $feed_site_url, $last_error, $last_updated, $search_words, $first_id);
+						return array(-1, $feed_title, $feed_site_url, $last_error, $last_updated, $search_words, $first_id, $vfeed_query_part != "");
 					}
 				}
 			}
@@ -1837,7 +1838,7 @@ class Feeds extends Handler_Protected {
 			$res = $pdo->query($query);
 		}
 
-		return array($res, $feed_title, $feed_site_url, $last_error, $last_updated, $search_words, $first_id);
+		return array($res, $feed_title, $feed_site_url, $last_error, $last_updated, $search_words, $first_id, $vfeed_query_part != "");
 
 	}
 

+ 6 - 1
classes/rssutils.php

@@ -1017,12 +1017,17 @@ class RSSUtils {
 							SET score = ? WHERE ref_id = ?");
 					$sth->execute([$score, $ref_id]);
 
-					if ($mark_unread_on_update) {
+					if ($mark_unread_on_update &&
+						!$entry_force_catchup &&
+						!RSSUtils::find_article_filter($article_filters, 'catchup')) {
+
 						Debug::log("article updated, marking unread as requested.", Debug::$LOG_VERBOSE);
 
 						$sth = $pdo->prepare("UPDATE ttrss_user_entries
 							SET last_read = null, unread = true WHERE ref_id = ?");
 						$sth->execute([$ref_id]);
+					} else {
+						Debug::log("article updated, but we're forbidden to mark it unread.", Debug::$LOG_VERBOSE);
 					}
 				}
 

+ 76 - 80
css/default.css

@@ -10,8 +10,8 @@ body.ttrss_prefs,
   margin: 0;
 }
 body.ttrss_main {
-  background: #ffffff;
-  color: #000000;
+  background: white;
+  color: black;
   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
   font-size: 14px;
   overflow: hidden;
@@ -26,7 +26,7 @@ body.ttrss_main div.post {
 body.ttrss_main div.post div.header {
   padding: 5px;
   color: #909090;
-  border: 0px solid #dddddd;
+  border: 0px solid #ddd;
   border-bottom-width: 1px;
   background: #f5f5f5;
 }
@@ -189,7 +189,7 @@ body.ttrss_main .notify.notify_error i.icon-close {
   color: white;
 }
 body.ttrss_main .hl {
-  border: 0px solid #dddddd;
+  border: 0px solid #ddd;
   border-bottom-width: 1px;
   transition: color 0.2s, background 0.2s;
   display: flex;
@@ -229,7 +229,7 @@ body.ttrss_main .hl div.title {
 }
 body.ttrss_main .hl span.author {
   white-space: nowrap;
-  color: #555555;
+  color: #555;
   font-size: 11px;
   font-weight: normal;
 }
@@ -243,13 +243,13 @@ body.ttrss_main .hl span.feed a {
   font-size: 11px;
   font-style: italic;
   font-weight: normal;
-  color: #555555;
+  color: #555;
 }
 body.ttrss_main .hl span.feed a:hover {
   color: #257aa7;
 }
 body.ttrss_main .hl span.updated {
-  color: #555555;
+  color: #555;
   text-align: right;
   font-size: 11px;
   padding-left: 10px;
@@ -312,7 +312,7 @@ body.ttrss_main #content-insert blockquote,
 body.ttrss_main #headlines-frame blockquote,
 body.ttrss_main .dijitContentPane blockquote {
   margin: 5px 0px 5px 0px;
-  color: #555555;
+  color: #555;
   padding-left: 10px;
   border: 0px solid #ccc;
   border-left-width: 4px;
@@ -328,7 +328,7 @@ body.ttrss_main #headlines-frame pre,
 body.ttrss_main .dijitContentPane pre {
   margin: 5px 0px 5px 0px;
   padding: 10px;
-  color: #555555;
+  color: #555;
   font-family: monospace;
   font-size: 12px;
   border: 0px solid #ccc;
@@ -386,11 +386,11 @@ body.ttrss_main .alert-info h4 {
   color: #3a87ad;
 }
 body.ttrss_main div.prefHelp {
-  color: #555555;
+  color: #555;
   padding: 5px;
 }
 body.ttrss_main .insensitive {
-  color: #555555;
+  color: #555;
 }
 body.ttrss_main .small {
   font-size: 11px;
@@ -402,29 +402,23 @@ body.ttrss_main span.preview {
   padding-left: 4px;
 }
 body.ttrss_main .label {
-  display: inline-flex;
+  display: inline-block;
   vertical-align: middle;
   background-color: #fff7d5;
   font-size: 9px;
-  color: #000000;
+  color: black;
   font-weight: normal;
   margin-left: 2px;
-  padding: 1px 4px 1px 1px;
+  padding: 2px 4px;
   white-space: nowrap;
 }
-body.ttrss_main .label i {
-  margin-right: 2px;
-}
-body.ttrss_main .label > * {
-  align-self: center;
-}
 body.ttrss_main i.marked-pic,
 body.ttrss_main i.pub-pic {
   cursor: pointer;
   color: #ccc;
 }
 body.ttrss_main div.errorExplained {
-  border: 1px solid #dddddd;
+  border: 1px solid #ddd;
   margin: 5px 0px 5px 0px;
   padding: 5px;
 }
@@ -433,7 +427,7 @@ body.ttrss_main ul.browseFeedList {
   width: 100%;
   overflow: auto;
   border-width: 0px 1px 1px 1px;
-  border-color: #dddddd;
+  border-color: #ddd;
   border-style: solid;
   margin: 0px 0px 5px 0px;
   background-color: white;
@@ -463,7 +457,7 @@ body.ttrss_main .noborder {
   border-width: 0px;
 }
 body.ttrss_main #overlay {
-  background: #ffffff;
+  background: white;
   left: 0;
   top: 0;
   height: 100%;
@@ -485,14 +479,14 @@ body.ttrss_main div.whiteBox {
   text-align: center;
   padding: 1em 1em 0px 1em;
   font-size: 11px;
-  border: 0px solid #dddddd;
+  border: 0px solid #ddd;
   border-bottom-width: 1px;
 }
 body.ttrss_main div.autocomplete {
   position: absolute;
   width: 250px;
-  background-color: #ffffff;
-  border: 1px solid #dddddd;
+  background-color: white;
+  border: 1px solid #ddd;
   margin: 0px;
   padding: 0px;
 }
@@ -565,9 +559,9 @@ body.ttrss_main div#cmdline {
   left: 5px;
   bottom: 5px;
   font-size: 11px;
-  color: #555555;
+  color: #555;
   font-weight: bold;
-  background-color: #ffffff;
+  background-color: white;
   border: 1px solid #257aa7;
   padding: 3px 5px 3px 5px;
   z-index: 5;
@@ -601,7 +595,7 @@ body.ttrss_main #content-wrap {
 }
 body.ttrss_main #feeds-holder {
   padding: 0px;
-  border: 0px solid #dddddd;
+  border: 0px solid #ddd;
   overflow: hidden;
   background: #f5f5f5;
   box-shadow: inset -1px 0px 2px -1px rgba(0, 0, 0, 0.1);
@@ -653,8 +647,8 @@ body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow {
 }
 body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRowSelected {
   box-shadow: -1px 0px 2px -1px rgba(0, 0, 0, 0.1);
-  border-color: #dddddd transparent;
-  background: #ffffff;
+  border-color: #ddd transparent;
+  background: white;
   color: #333;
 }
 body.ttrss_main #feeds-holder #feedTree .icon {
@@ -680,7 +674,7 @@ body.ttrss_main #feeds-holder #feedTree i.icon.icon-rss_feed {
   color: #ff7c4b;
 }
 body.ttrss_main #feeds-holder #feedTree i.icon.icon-whatshot {
-  color: #69c671;
+  color: #69C671;
 }
 body.ttrss_main #feeds-holder #feedTree i.icon.icon-restore {
   font-weight: bold;
@@ -692,9 +686,12 @@ body.ttrss_main #headlines-wrap-inner {
   margin: 0px;
   border-width: 0px;
 }
+body.ttrss_main #headlines-frame[is-vfeed="0"] .header .feed {
+  display: none;
+}
 body.ttrss_main #headlines-frame {
   padding: 0px;
-  border: 0px #dddddd;
+  border: 0px #ddd;
   margin-top: 0px;
   -webkit-overflow-scrolling: touch;
   -webkit-transform: translateZ(0);
@@ -706,11 +703,11 @@ body.ttrss_main #headlines-frame div.feed-title {
   padding: 5px 8px;
 }
 body.ttrss_main #headlines-frame div.feed-title a.title {
-  color: #555555;
+  color: #555;
   font-weight: bold;
 }
 body.ttrss_main #headlines-frame div.feed-title a {
-  color: #555555;
+  color: #555;
 }
 body.ttrss_main #headlines-frame div.feed-title a:hover {
   color: #257aa7;
@@ -727,14 +724,14 @@ body.ttrss_main #toolbar-frame {
 }
 body.ttrss_main #toolbar-frame #toolbar {
   background: white;
-  border: 0px solid #dddddd;
+  border: 0px solid #ddd;
   border-bottom-width: 1px;
   padding-left: 4px;
   height: 32px;
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
-  color: #555555;
+  color: #555;
   font-size: 12px;
 }
 body.ttrss_main #toolbar-frame #toolbar > * {
@@ -775,7 +772,7 @@ body.ttrss_main #toolbar-frame #toolbar #toolbar-headlines .right > * {
   align-self: center;
 }
 body.ttrss_main #toolbar-frame #toolbar #updates-available {
-  color: #69c671;
+  color: #69C671;
   padding-right: 4px;
 }
 body.ttrss_main #toolbar-frame #toolbar #selected_prompt {
@@ -792,7 +789,7 @@ body.ttrss_main #toolbar-frame #toolbar #selected_prompt {
 body.ttrss_main #header {
   border-width: 0px;
   text-align: right;
-  color: #555555;
+  color: #555;
   padding: 5px 5px 0px 0px;
   margin: 0px;
   position: absolute;
@@ -802,7 +799,7 @@ body.ttrss_main #header {
 }
 body.ttrss_main #content-insert {
   padding: 0px;
-  border-color: #dddddd;
+  border-color: #ddd;
   border-width: 0px;
   line-height: 1.5;
   overflow: auto;
@@ -818,15 +815,15 @@ body.ttrss_main img.icon {
 }
 body.ttrss_main .player {
   display: inline-block;
-  color: #555555;
+  color: #555;
   font-size: 11px;
   font-family: sans-serif;
-  border: 1px solid #555555;
+  border: 1px solid #555;
   padding: 0px 4px 0px 4px;
   margin: 0px 2px 0px 2px;
   width: 50px;
   text-align: center;
-  background: #ffffff;
+  background: white;
 }
 body.ttrss_main .player.playing {
   color: #00c000;
@@ -842,13 +839,13 @@ body.ttrss_main #headlines-frame.auto_catchup #headlines-spacer {
 body.ttrss_main #headlines-spacer {
   margin-left: 1px;
   text-align: center;
-  color: #555555;
+  color: #555;
   font-size: 11px;
   font-style: italic;
 }
 body.ttrss_main #headlines-spacer a,
 body.ttrss_main #headlines-spacer span {
-  color: #555555;
+  color: #555;
   padding: 10px;
   display: block;
 }
@@ -861,9 +858,9 @@ body.ttrss_main ul#filterDlg_Actions {
   overflow: auto;
   list-style-type: none;
   border-style: solid;
-  border-color: #dddddd;
+  border-color: #ddd;
   border-width: 1px 1px 1px 1px;
-  background-color: #ffffff;
+  background-color: white;
   margin: 0px 0px 5px 0px;
   padding: 4px;
   min-height: 16px;
@@ -1007,7 +1004,7 @@ body.ttrss_main .hl.published .left i.pub-pic {
   color: #ff7c4b;
 }
 body.ttrss_main .score-high i.icon-score {
-  color: #69c671;
+  color: #69C671;
 }
 body.ttrss_main .score-low i.icon-score {
   color: #500;
@@ -1019,12 +1016,12 @@ body.ttrss_main i.icon-score {
   cursor: pointer;
 }
 body.ttrss_main .panel {
-  border: 1px solid #dddddd;
+  border: 1px solid #ddd;
   background: #f5f5f5;
   padding: 4px;
 }
 body.ttrss_main .dijitDialog .panel {
-  background: #ffffff;
+  background: white;
 }
 body.ttrss_main .panel-scrollable {
   overflow: auto;
@@ -1053,7 +1050,7 @@ body.ttrss_main #prefFilterTestResultList .feed {
 }
 ::selection {
   background: #257aa7;
-  color: #ffffff;
+  color: white;
 }
 ::-webkit-scrollbar {
   width: 4px;
@@ -1104,7 +1101,7 @@ video::-webkit-media-controls-overlay-play-button {
   flex-grow: 2;
 }
 .cdm .header span.updated {
-  color: #555555;
+  color: #555;
   font-weight: normal;
   font-size: 11px;
   white-space: nowrap;
@@ -1116,7 +1113,7 @@ video::-webkit-media-controls-overlay-play-button {
   height: 30px;
   padding-left: 5px;
   font-weight: normal;
-  color: #555555;
+  color: #555;
   clear: both;
 }
 .cdm .footer > * {
@@ -1154,7 +1151,7 @@ video::-webkit-media-controls-overlay-play-button {
   white-space: normal;
 }
 .cdm.expanded .footer {
-  border: 0px solid #dddddd;
+  border: 0px solid #ddd;
   border-bottom-width: 1px;
 }
 .cdm.expanded > hr {
@@ -1182,7 +1179,7 @@ div.cdm.expanded.Unread div.header a.title {
   color: black;
 }
 div.cdm.expanded div.content {
-  color: #555555;
+  color: #555;
 }
 div.cdm.expanded.Unread div.content {
   color: black;
@@ -1199,11 +1196,11 @@ div.cdm.vgrlf .feed {
   padding: 5px 3px 5px 5px;
 }
 .cdm div.feed-title a.title {
-  color: #555555;
+  color: #555;
   font-weight: bold;
 }
 .cdm div.feed-title a {
-  color: #555555;
+  color: #555;
 }
 .cdm div.feed-title a:hover {
   color: #257aa7;
@@ -1216,7 +1213,7 @@ div.cdm.vgrlf .feed {
 .cdm div.header div.feed,
 .cdm div.header div.feed a {
   vertical-align: middle;
-  color: #555555;
+  color: #555;
   font-weight: normal;
   font-style: italic;
   font-size: 11px;
@@ -1233,7 +1230,7 @@ div.cdm.vgrlf .feed {
 }
 .cdm div.header span.author {
   white-space: nowrap;
-  color: #555555;
+  color: #555;
   font-size: 11px;
   font-weight: normal;
 }
@@ -1248,10 +1245,10 @@ div#floatingTitle {
   top: 0px;
   right: 0px;
   left: 0px;
-  border: 0px solid #dddddd;
+  border: 0px solid #ddd;
   border-bottom-width: 1px;
   background: white;
-  color: #555555;
+  color: #555;
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
@@ -1286,7 +1283,7 @@ div#floatingTitle .right i.icon-anchor {
   cursor: pointer;
 }
 div#floatingTitle span.author {
-  color: #555555;
+  color: #555;
   font-size: 11px;
   font-weight: normal;
 }
@@ -1300,7 +1297,7 @@ div#floatingTitle a.title {
 }
 div#floatingTitle div.feed {
   padding-right: 10px;
-  color: #555555;
+  color: #555;
   font-weight: normal;
   font-style: italic;
   font-size: 11px;
@@ -1314,11 +1311,11 @@ div#floatingTitle div.feed a {
 div#floatingTitle span.updated {
   padding-right: 10px;
   white-space: nowrap;
-  color: #555555;
+  color: #555;
   font-size: 11px;
 }
 div#floatingTitle div.feed a {
-  color: #555555;
+  color: #555;
 }
 div#floatingTitle .collapse,
 div#floatingTitle .excerpt {
@@ -1337,7 +1334,7 @@ div#floatingTitle .feed-title a.title {
 }
 div#floatingTitle .feed-title a.catchup {
   text-align: right;
-  color: #555555;
+  color: #555;
   padding-right: 10px;
   font-size: 11px;
   white-space: nowrap;
@@ -1350,7 +1347,7 @@ div#floatingTitle.Unread a.title {
 }
 .cdm.expandable {
   background-color: #f5f5f5;
-  border: 0px solid #dddddd;
+  border: 0px solid #ddd;
   border-bottom-width: 1px;
 }
 .cdm.expandable > hr {
@@ -1387,7 +1384,7 @@ div.cdm.expandable.active div.header span.titleWrap {
 }
 div.cdm.expandable div.header a.title {
   font-weight: 600;
-  color: #555555;
+  color: #555;
   font-size: 14px;
   transition: color 0.2s, background 0.2s;
   text-rendering: optimizelegibility;
@@ -1471,7 +1468,7 @@ body.ttrss_prefs div#filterlistLoading,
 body.ttrss_prefs div#labellistLoading {
   text-align: center;
   padding: 5px;
-  color: #555555;
+  color: #555;
 }
 body.ttrss_prefs div#feedlistLoading img,
 body.ttrss_prefs div#filterlistLoading img,
@@ -1493,7 +1490,7 @@ body.ttrss_prefs table.prefPluginsList label {
   white-space: nowrap;
 }
 body.ttrss_prefs table.prefPluginsList i.plugin-enabled {
-  color: #69c671;
+  color: #69C671;
 }
 body.ttrss_prefs table.prefPluginsList label img {
   vertical-align: middle;
@@ -1509,7 +1506,7 @@ body.ttrss_prefs table.prefErrorLog tr.errrow td.errno {
 body.ttrss_prefs table.prefErrorLog td.filename,
 body.ttrss_prefs table.prefErrorLog td.login,
 body.ttrss_prefs table.prefErrorLog td.timestamp {
-  color: #555555;
+  color: #555;
 }
 body.ttrss_prefs hr {
   border-color: #ecf4ff;
@@ -1520,7 +1517,7 @@ body.ttrss_utility.sanity_failed {
 }
 body.ttrss_utility {
   background: #f5f5f5;
-  color: #000000;
+  color: black;
   padding: 0px;
   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
   font-size: 14px;
@@ -1736,8 +1733,8 @@ body.small_margins {
   max-width: none;
 }
 body#sharepopup {
-  color: #000000;
-  background: #ffffff;
+  color: black;
+  background: white;
   margin: 10px;
 }
 body#sharepopup h1 {
@@ -1769,7 +1766,7 @@ body#sharepopup input {
   box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.1);
 }
 .flat .dijitCheckBox.dijitCheckBoxChecked {
-  background-color: #69c671;
+  background-color: #69C671;
   border-color: #45b74f;
 }
 .flat .dijitMenu .dijitMenuItem .dijitMenuItemLabel {
@@ -1854,16 +1851,15 @@ body#sharepopup input {
 .flat .dijitTree .dijitTreeNode .dijitTreeRow {
   padding: 4px 0px 4px;
   border-width: 1px;
-  color: #555555;
+  color: #555;
 }
 @font-face {
   font-family: 'Material Icons';
   font-style: normal;
   font-weight: 400;
   src: url(../lib/iconfont/MaterialIcons-Regular.eot);
-  src: local('Material Icons'), local('MaterialIcons-Regular'), url(../lib/iconfont/MaterialIcons-Regular.woff2) format('woff2'), url(../lib/iconfont/MaterialIcons-Regular.woff) format('woff'), url(../lib/iconfont/MaterialIcons-Regular.ttf) format('truetype');
-  
   /* For IE6-8 */
+  src: local('Material Icons'), local('MaterialIcons-Regular'), url(../lib/iconfont/MaterialIcons-Regular.woff2) format('woff2'), url(../lib/iconfont/MaterialIcons-Regular.woff) format('woff'), url(../lib/iconfont/MaterialIcons-Regular.ttf) format('truetype');
 }
 .material-icons {
   font-family: 'Material Icons';
@@ -1976,7 +1972,7 @@ body.ttrss_zoom div.post div.content video {
 }
 body.ttrss_zoom div.post div.content blockquote {
   margin: 5px 0px 5px 0px;
-  color: #555555;
+  color: #555;
   padding-left: 10px;
   border: 0px solid #ccc;
   border-left-width: 4px;
@@ -1989,7 +1985,7 @@ body.ttrss_zoom div.post div.content code {
 body.ttrss_zoom div.post div.content pre {
   margin: 5px 0px 5px 0px;
   padding: 10px;
-  color: #555555;
+  color: #555;
   font-family: monospace;
   font-size: 12px;
   border: 0px solid #ccc;

File diff suppressed because it is too large
+ 1 - 1
css/default.css.map


+ 6 - 10
css/tt-rss.less

@@ -465,23 +465,15 @@ body.ttrss_main {
 	}
 
 	.label {
-		display : inline-flex;
+		display : inline-block;
 		vertical-align: middle;
 		background-color : #fff7d5;
 		font-size : 9px;
 		color : @default-fg;
 		font-weight : normal;
 		margin-left : 2px;
-		padding : 1px 4px 1px 1px;
+		padding : 2px 4px;
 		white-space: nowrap;
-
-		i {
-			margin-right : 2px;
-		}
-
-		> * {
-			align-self: center;
-		}
 	}
 
 	i.marked-pic, i.pub-pic {
@@ -819,6 +811,10 @@ body.ttrss_main {
 		border-width : 0px;
 	}
 
+	#headlines-frame[is-vfeed="0"] .header .feed {
+		display : none;
+	}
+
 	#headlines-frame {
 		padding : 0px;
 		border: 0px @border-default;

+ 7 - 2
include/functions.php

@@ -81,7 +81,7 @@
 	 */
 	function get_translations() {
 		$tr = array(
-					"auto"  => "Detect automatically",
+					"auto"  => __("Detect automatically"),
 					"ar_SA" => "العربيّة (Arabic)",
 					"bg_BG" => "Bulgarian",
 					"da_DA" => "Dansk",
@@ -105,6 +105,7 @@
 					"pt_PT" => "Portuguese/Portugal",
 					"zh_CN" => "Simplified Chinese",
 					"zh_TW" => "Traditional Chinese",
+					"uk_UA" => "Українська",
 					"sv_SE" => "Svenska",
 					"fi_FI" => "Suomi",
 					"tr_TR" => "Türkçe");
@@ -950,7 +951,11 @@
 		if ($eta_min && time() + $tz_offset - $timestamp < 3600) {
 			return T_sprintf("%d min", date("i", time() + $tz_offset - $timestamp));
 		} else if (date("Y.m.d", $timestamp) == date("Y.m.d", time() + $tz_offset)) {
-			return date("G:i", $timestamp);
+			$format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
+			if (strpos((strtolower($format)), "a") === false)
+				return date("G:i", $timestamp);
+			else
+				return date("g:i a", $timestamp);
 		} else if (date("Y", $timestamp) == date("Y", time() + $tz_offset)) {
 			$format = get_pref('SHORT_DATE_FORMAT', $owner_uid);
 			return date($format, $timestamp);

+ 15 - 2
js/FeedTree.js

@@ -110,7 +110,7 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
 				menu.addChild(new dijit.MenuItem({
 					label: __("Mark all feeds as read"),
 					onClick: function() {
-						Feeds.catchupAllFeeds();
+						Feeds.catchupAll();
 					}}));
 
 				menu.bindDomNode(tnode.domNode);
@@ -270,8 +270,21 @@ define(["dojo/_base/declare", "dojo/dom-construct", "dijit/Tree", "dijit/Menu"],
 				this.focusNode(treeNode);
 
 				// focus headlines to route key events there
-				setTimeout(function() {
+				setTimeout(() => {
 					$("headlines-frame").focus();
+
+					if (treeNode) {
+						const node = treeNode.rowNode;
+						const tree = this.domNode;
+
+						if (node && tree) {
+							// scroll tree to selection if needed
+							if (node.offsetTop < tree.scrollTop || node.offsetTop > tree.scrollTop + tree.clientHeight) {
+								$("feedTree").scrollTop = node.offsetTop;
+							}
+						}
+					}
+
 				}, 0);
 			}
 		},

+ 5 - 2
js/Headlines.js

@@ -442,7 +442,7 @@ define(["dojo/_base/declare"], function (declare) {
 									<a class="title" title="${hl.title}" target="_blank" rel="noopener noreferrer" href="${hl.link}">
 										${hl.title}</a>
 									<span class="author">${hl.author}</span>
-									<span class="HLLCTR-${hl.id}">${hl.labels}</span>
+									${hl.labels}
 									${hl.cdm_excerpt ? hl.cdm_excerpt : ""}
 								</span>
 								
@@ -502,7 +502,7 @@ define(["dojo/_base/declare"], function (declare) {
 					<span data-article-id="${hl.id}" class="hl-content hlMenuAttach">
 						<a class="title" href="${hl.link}">${hl.title} <span class="preview">${hl.content_preview}</span></a>
 						<span class="author">${hl.author}</span>
-						<span class="HLLCTR-${hl.id}">${hl.labels}</span>
+						${hl.labels}
 					</span>
 				</div>
                 <span class="feed">
@@ -561,6 +561,9 @@ define(["dojo/_base/declare"], function (declare) {
 
 					$("headlines-frame").addClassName(App.isCombinedMode() ? "cdm" : "normal");
 
+					$("headlines-frame").setAttribute("is-vfeed",
+						reply['headlines']['is_vfeed'] ? 1 : 0);
+
 					Article.setActive(0);
 
 					try {

BIN
locale/ar_SA/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1216 - 1215
locale/ar_SA/LC_MESSAGES/messages.po


BIN
locale/bg_BG/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1219 - 1218
locale/bg_BG/LC_MESSAGES/messages.po


BIN
locale/ca_CA/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1202 - 1204
locale/ca_CA/LC_MESSAGES/messages.po


BIN
locale/cs_CZ/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1212 - 1248
locale/cs_CZ/LC_MESSAGES/messages.po


BIN
locale/da_DK/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1203 - 1205
locale/da_DK/LC_MESSAGES/messages.po


BIN
locale/de_DE/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1215 - 1212
locale/de_DE/LC_MESSAGES/messages.po


BIN
locale/el_GR/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1203 - 1205
locale/el_GR/LC_MESSAGES/messages.po


BIN
locale/es_ES/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1219 - 1225
locale/es_ES/LC_MESSAGES/messages.po


BIN
locale/es_LA/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1203 - 1205
locale/es_LA/LC_MESSAGES/messages.po


BIN
locale/fi_FI/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1223 - 1223
locale/fi_FI/LC_MESSAGES/messages.po


BIN
locale/fr_FR/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1205 - 1207
locale/fr_FR/LC_MESSAGES/messages.po


BIN
locale/hu_HU/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1210 - 1209
locale/hu_HU/LC_MESSAGES/messages.po


BIN
locale/it_IT/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1210 - 1213
locale/it_IT/LC_MESSAGES/messages.po


BIN
locale/ja_JP/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1207 - 1206
locale/ja_JP/LC_MESSAGES/messages.po


BIN
locale/ko_KR/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1208 - 1210
locale/ko_KR/LC_MESSAGES/messages.po


BIN
locale/lv_LV/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1216 - 1215
locale/lv_LV/LC_MESSAGES/messages.po


BIN
locale/nb_NO/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1202 - 1204
locale/nb_NO/LC_MESSAGES/messages.po


BIN
locale/nl_NL/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1206 - 1214
locale/nl_NL/LC_MESSAGES/messages.po


BIN
locale/pl_PL/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1210 - 1209
locale/pl_PL/LC_MESSAGES/messages.po


BIN
locale/pt_BR/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1253 - 1264
locale/pt_BR/LC_MESSAGES/messages.po


BIN
locale/pt_PT/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1207 - 1209
locale/pt_PT/LC_MESSAGES/messages.po


BIN
locale/ru_RU/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1226 - 1216
locale/ru_RU/LC_MESSAGES/messages.po


BIN
locale/sv_SE/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1217 - 1262
locale/sv_SE/LC_MESSAGES/messages.po


BIN
locale/tr_TR/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1209 - 1208
locale/tr_TR/LC_MESSAGES/messages.po


BIN
locale/uk_UA/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 3511 - 0
locale/uk_UA/LC_MESSAGES/messages.po


BIN
locale/zh_CN/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1202 - 1201
locale/zh_CN/LC_MESSAGES/messages.po


BIN
locale/zh_TW/LC_MESSAGES/messages.mo


File diff suppressed because it is too large
+ 1214 - 1216
locale/zh_TW/LC_MESSAGES/messages.po


File diff suppressed because it is too large
+ 978 - 982
messages.pot


+ 31 - 0
plugins/af_redditimgur/init.php

@@ -278,6 +278,37 @@ class Af_RedditImgur extends Plugin {
 					$found = true;
 				}
 
+                // imgur via link rel="image_src" href="..."
+                if (!$found && preg_match("/imgur/", $entry->getAttribute("href"))) {
+
+                    Debug::log("handling as imgur page/whatever", Debug::$LOG_VERBOSE);
+
+                    $content = fetch_file_contents(["url" => $entry->getAttribute("href"),
+                        "http_accept" => "text/*"]);
+
+                    if ($content) {
+                        $cdoc = new DOMDocument();
+
+                        if (@$cdoc->loadHTML($content)) {
+                            $cxpath = new DOMXPath($cdoc);
+
+                            $rel_image = $cxpath->query("//link[@rel='image_src']")->item(0);
+
+                            if ($rel_image) {
+
+                                $img = $doc->createElement('img');
+                                $img->setAttribute("src", $rel_image->getAttribute("href"));
+
+                                $br = $doc->createElement('br');
+                                $entry->parentNode->insertBefore($img, $entry);
+                                $entry->parentNode->insertBefore($br, $entry);
+
+                                $found = true;
+                            }
+                        }
+                    }
+                }
+
 				// wtf is this even
 				if (!$found && preg_match("/^https?:\/\/gyazo\.com\/([^\.\/]+$)/", $entry->getAttribute("href"), $matches)) {
 					$img_id = $matches[1];

+ 126 - 130
themes/night.css

@@ -11,8 +11,8 @@ body.ttrss_prefs,
   margin: 0;
 }
 body.ttrss_main {
-  background: #333333;
-  color: #cccccc;
+  background: #333;
+  color: #ccc;
   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
   font-size: 14px;
   overflow: hidden;
@@ -27,9 +27,9 @@ body.ttrss_main div.post {
 body.ttrss_main div.post div.header {
   padding: 5px;
   color: #909090;
-  border: 0px solid #222222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
-  background: #222222;
+  background: #222;
 }
 body.ttrss_main div.post div.header .left,
 body.ttrss_main div.post div.header .right {
@@ -190,13 +190,13 @@ body.ttrss_main .notify.notify_error i.icon-close {
   color: white;
 }
 body.ttrss_main .hl {
-  border: 0px solid #222222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
   transition: color 0.2s, background 0.2s;
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
-  background: #222222;
+  background: #222;
 }
 body.ttrss_main .hl > * {
   align-self: center;
@@ -230,7 +230,7 @@ body.ttrss_main .hl div.title {
 }
 body.ttrss_main .hl span.author {
   white-space: nowrap;
-  color: #cccccc;
+  color: #ccc;
   font-size: 11px;
   font-weight: normal;
 }
@@ -244,13 +244,13 @@ body.ttrss_main .hl span.feed a {
   font-size: 11px;
   font-style: italic;
   font-weight: normal;
-  color: #cccccc;
+  color: #ccc;
 }
 body.ttrss_main .hl span.feed a:hover {
   color: #b87d2c;
 }
 body.ttrss_main .hl span.updated {
-  color: #cccccc;
+  color: #ccc;
   text-align: right;
   font-size: 11px;
   padding-left: 10px;
@@ -313,7 +313,7 @@ body.ttrss_main #content-insert blockquote,
 body.ttrss_main #headlines-frame blockquote,
 body.ttrss_main .dijitContentPane blockquote {
   margin: 5px 0px 5px 0px;
-  color: #cccccc;
+  color: #ccc;
   padding-left: 10px;
   border: 0px solid #ccc;
   border-left-width: 4px;
@@ -329,11 +329,11 @@ body.ttrss_main #headlines-frame pre,
 body.ttrss_main .dijitContentPane pre {
   margin: 5px 0px 5px 0px;
   padding: 10px;
-  color: #cccccc;
+  color: #ccc;
   font-family: monospace;
   font-size: 12px;
   border: 0px solid #ccc;
-  background: #222222;
+  background: #222;
   display: block;
   max-width: 98%;
   overflow: auto;
@@ -387,11 +387,11 @@ body.ttrss_main .alert-info h4 {
   color: #3a87ad;
 }
 body.ttrss_main div.prefHelp {
-  color: #cccccc;
+  color: #ccc;
   padding: 5px;
 }
 body.ttrss_main .insensitive {
-  color: #cccccc;
+  color: #ccc;
 }
 body.ttrss_main .small {
   font-size: 11px;
@@ -403,29 +403,23 @@ body.ttrss_main span.preview {
   padding-left: 4px;
 }
 body.ttrss_main .label {
-  display: inline-flex;
+  display: inline-block;
   vertical-align: middle;
   background-color: #fff7d5;
   font-size: 9px;
-  color: #cccccc;
+  color: #ccc;
   font-weight: normal;
   margin-left: 2px;
-  padding: 1px 4px 1px 1px;
+  padding: 2px 4px;
   white-space: nowrap;
 }
-body.ttrss_main .label i {
-  margin-right: 2px;
-}
-body.ttrss_main .label > * {
-  align-self: center;
-}
 body.ttrss_main i.marked-pic,
 body.ttrss_main i.pub-pic {
   cursor: pointer;
   color: #ccc;
 }
 body.ttrss_main div.errorExplained {
-  border: 1px solid #222222;
+  border: 1px solid #222;
   margin: 5px 0px 5px 0px;
   padding: 5px;
 }
@@ -434,7 +428,7 @@ body.ttrss_main ul.browseFeedList {
   width: 100%;
   overflow: auto;
   border-width: 0px 1px 1px 1px;
-  border-color: #222222;
+  border-color: #222;
   border-style: solid;
   margin: 0px 0px 5px 0px;
   background-color: white;
@@ -464,7 +458,7 @@ body.ttrss_main .noborder {
   border-width: 0px;
 }
 body.ttrss_main #overlay {
-  background: #333333;
+  background: #333;
   left: 0;
   top: 0;
   height: 100%;
@@ -486,14 +480,14 @@ body.ttrss_main div.whiteBox {
   text-align: center;
   padding: 1em 1em 0px 1em;
   font-size: 11px;
-  border: 0px solid #222222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
 }
 body.ttrss_main div.autocomplete {
   position: absolute;
   width: 250px;
-  background-color: #333333;
-  border: 1px solid #222222;
+  background-color: #333;
+  border: 1px solid #222;
   margin: 0px;
   padding: 0px;
 }
@@ -566,9 +560,9 @@ body.ttrss_main div#cmdline {
   left: 5px;
   bottom: 5px;
   font-size: 11px;
-  color: #cccccc;
+  color: #ccc;
   font-weight: bold;
-  background-color: #333333;
+  background-color: #333;
   border: 1px solid #b87d2c;
   padding: 3px 5px 3px 5px;
   z-index: 5;
@@ -602,9 +596,9 @@ body.ttrss_main #content-wrap {
 }
 body.ttrss_main #feeds-holder {
   padding: 0px;
-  border: 0px solid #222222;
+  border: 0px solid #222;
   overflow: hidden;
-  background: #222222;
+  background: #222;
   box-shadow: inset -1px 0px 2px -1px rgba(0, 0, 0, 0.1);
   -webkit-overflow-scrolling: touch;
 }
@@ -615,7 +609,7 @@ body.ttrss_main #feeds-holder #feedTree {
   font-family: "Segoe UI", Ubuntu, "Helvetica Neue", Helvetica, Arial, sans-serif;
 }
 body.ttrss_main #feeds-holder #feedTree .counterNode.aux {
-  background: #222222;
+  background: #222;
   color: #e6e6e6;
   border-color: #080808;
 }
@@ -654,8 +648,8 @@ body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow {
 }
 body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRowSelected {
   box-shadow: -1px 0px 2px -1px rgba(0, 0, 0, 0.1);
-  border-color: #222222 transparent;
-  background: #333333;
+  border-color: #222 transparent;
+  background: #333;
   color: #333;
 }
 body.ttrss_main #feeds-holder #feedTree .icon {
@@ -681,7 +675,7 @@ body.ttrss_main #feeds-holder #feedTree i.icon.icon-rss_feed {
   color: #ff7c4b;
 }
 body.ttrss_main #feeds-holder #feedTree i.icon.icon-whatshot {
-  color: #69c671;
+  color: #69C671;
 }
 body.ttrss_main #feeds-holder #feedTree i.icon.icon-restore {
   font-weight: bold;
@@ -693,9 +687,12 @@ body.ttrss_main #headlines-wrap-inner {
   margin: 0px;
   border-width: 0px;
 }
+body.ttrss_main #headlines-frame[is-vfeed="0"] .header .feed {
+  display: none;
+}
 body.ttrss_main #headlines-frame {
   padding: 0px;
-  border: 0px #222222;
+  border: 0px #222;
   margin-top: 0px;
   -webkit-overflow-scrolling: touch;
   -webkit-transform: translateZ(0);
@@ -707,11 +704,11 @@ body.ttrss_main #headlines-frame div.feed-title {
   padding: 5px 8px;
 }
 body.ttrss_main #headlines-frame div.feed-title a.title {
-  color: #cccccc;
+  color: #ccc;
   font-weight: bold;
 }
 body.ttrss_main #headlines-frame div.feed-title a {
-  color: #cccccc;
+  color: #ccc;
 }
 body.ttrss_main #headlines-frame div.feed-title a:hover {
   color: #b87d2c;
@@ -728,14 +725,14 @@ body.ttrss_main #toolbar-frame {
 }
 body.ttrss_main #toolbar-frame #toolbar {
   background: white;
-  border: 0px solid #222222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
   padding-left: 4px;
   height: 32px;
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
-  color: #cccccc;
+  color: #ccc;
   font-size: 12px;
 }
 body.ttrss_main #toolbar-frame #toolbar > * {
@@ -776,7 +773,7 @@ body.ttrss_main #toolbar-frame #toolbar #toolbar-headlines .right > * {
   align-self: center;
 }
 body.ttrss_main #toolbar-frame #toolbar #updates-available {
-  color: #69c671;
+  color: #69C671;
   padding-right: 4px;
 }
 body.ttrss_main #toolbar-frame #toolbar #selected_prompt {
@@ -793,7 +790,7 @@ body.ttrss_main #toolbar-frame #toolbar #selected_prompt {
 body.ttrss_main #header {
   border-width: 0px;
   text-align: right;
-  color: #cccccc;
+  color: #ccc;
   padding: 5px 5px 0px 0px;
   margin: 0px;
   position: absolute;
@@ -803,7 +800,7 @@ body.ttrss_main #header {
 }
 body.ttrss_main #content-insert {
   padding: 0px;
-  border-color: #222222;
+  border-color: #222;
   border-width: 0px;
   line-height: 1.5;
   overflow: auto;
@@ -819,22 +816,22 @@ body.ttrss_main img.icon {
 }
 body.ttrss_main .player {
   display: inline-block;
-  color: #cccccc;
+  color: #ccc;
   font-size: 11px;
   font-family: sans-serif;
-  border: 1px solid #cccccc;
+  border: 1px solid #ccc;
   padding: 0px 4px 0px 4px;
   margin: 0px 2px 0px 2px;
   width: 50px;
   text-align: center;
-  background: #333333;
+  background: #333;
 }
 body.ttrss_main .player.playing {
   color: #00c000;
   border-color: #00c000;
 }
 body.ttrss_main .player:hover {
-  background: #222222;
+  background: #222;
   cursor: pointer;
 }
 body.ttrss_main #headlines-frame.auto_catchup #headlines-spacer {
@@ -843,13 +840,13 @@ body.ttrss_main #headlines-frame.auto_catchup #headlines-spacer {
 body.ttrss_main #headlines-spacer {
   margin-left: 1px;
   text-align: center;
-  color: #cccccc;
+  color: #ccc;
   font-size: 11px;
   font-style: italic;
 }
 body.ttrss_main #headlines-spacer a,
 body.ttrss_main #headlines-spacer span {
-  color: #cccccc;
+  color: #ccc;
   padding: 10px;
   display: block;
 }
@@ -862,9 +859,9 @@ body.ttrss_main ul#filterDlg_Actions {
   overflow: auto;
   list-style-type: none;
   border-style: solid;
-  border-color: #222222;
+  border-color: #222;
   border-width: 1px 1px 1px 1px;
-  background-color: #333333;
+  background-color: #333;
   margin: 0px 0px 5px 0px;
   padding: 4px;
   min-height: 16px;
@@ -1008,7 +1005,7 @@ body.ttrss_main .hl.published .left i.pub-pic {
   color: #ff7c4b;
 }
 body.ttrss_main .score-high i.icon-score {
-  color: #69c671;
+  color: #69C671;
 }
 body.ttrss_main .score-low i.icon-score {
   color: #500;
@@ -1020,12 +1017,12 @@ body.ttrss_main i.icon-score {
   cursor: pointer;
 }
 body.ttrss_main .panel {
-  border: 1px solid #222222;
-  background: #222222;
+  border: 1px solid #222;
+  background: #222;
   padding: 4px;
 }
 body.ttrss_main .dijitDialog .panel {
-  background: #333333;
+  background: #333;
 }
 body.ttrss_main .panel-scrollable {
   overflow: auto;
@@ -1054,7 +1051,7 @@ body.ttrss_main #prefFilterTestResultList .feed {
 }
 ::selection {
   background: #b87d2c;
-  color: #333333;
+  color: #333;
 }
 ::-webkit-scrollbar {
   width: 4px;
@@ -1105,7 +1102,7 @@ video::-webkit-media-controls-overlay-play-button {
   flex-grow: 2;
 }
 .cdm .header span.updated {
-  color: #cccccc;
+  color: #ccc;
   font-weight: normal;
   font-size: 11px;
   white-space: nowrap;
@@ -1117,7 +1114,7 @@ video::-webkit-media-controls-overlay-play-button {
   height: 30px;
   padding-left: 5px;
   font-weight: normal;
-  color: #cccccc;
+  color: #ccc;
   clear: both;
 }
 .cdm .footer > * {
@@ -1155,7 +1152,7 @@ video::-webkit-media-controls-overlay-play-button {
   white-space: normal;
 }
 .cdm.expanded .footer {
-  border: 0px solid #222222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
 }
 .cdm.expanded > hr {
@@ -1183,7 +1180,7 @@ div.cdm.expanded.Unread div.header a.title {
   color: black;
 }
 div.cdm.expanded div.content {
-  color: #cccccc;
+  color: #ccc;
 }
 div.cdm.expanded.Unread div.content {
   color: black;
@@ -1200,11 +1197,11 @@ div.cdm.vgrlf .feed {
   padding: 5px 3px 5px 5px;
 }
 .cdm div.feed-title a.title {
-  color: #cccccc;
+  color: #ccc;
   font-weight: bold;
 }
 .cdm div.feed-title a {
-  color: #cccccc;
+  color: #ccc;
 }
 .cdm div.feed-title a:hover {
   color: #b87d2c;
@@ -1217,7 +1214,7 @@ div.cdm.vgrlf .feed {
 .cdm div.header div.feed,
 .cdm div.header div.feed a {
   vertical-align: middle;
-  color: #cccccc;
+  color: #ccc;
   font-weight: normal;
   font-style: italic;
   font-size: 11px;
@@ -1234,7 +1231,7 @@ div.cdm.vgrlf .feed {
 }
 .cdm div.header span.author {
   white-space: nowrap;
-  color: #cccccc;
+  color: #ccc;
   font-size: 11px;
   font-weight: normal;
 }
@@ -1249,10 +1246,10 @@ div#floatingTitle {
   top: 0px;
   right: 0px;
   left: 0px;
-  border: 0px solid #222222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
   background: white;
-  color: #cccccc;
+  color: #ccc;
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
@@ -1287,7 +1284,7 @@ div#floatingTitle .right i.icon-anchor {
   cursor: pointer;
 }
 div#floatingTitle span.author {
-  color: #cccccc;
+  color: #ccc;
   font-size: 11px;
   font-weight: normal;
 }
@@ -1301,7 +1298,7 @@ div#floatingTitle a.title {
 }
 div#floatingTitle div.feed {
   padding-right: 10px;
-  color: #cccccc;
+  color: #ccc;
   font-weight: normal;
   font-style: italic;
   font-size: 11px;
@@ -1315,11 +1312,11 @@ div#floatingTitle div.feed a {
 div#floatingTitle span.updated {
   padding-right: 10px;
   white-space: nowrap;
-  color: #cccccc;
+  color: #ccc;
   font-size: 11px;
 }
 div#floatingTitle div.feed a {
-  color: #cccccc;
+  color: #ccc;
 }
 div#floatingTitle .collapse,
 div#floatingTitle .excerpt {
@@ -1338,7 +1335,7 @@ div#floatingTitle .feed-title a.title {
 }
 div#floatingTitle .feed-title a.catchup {
   text-align: right;
-  color: #cccccc;
+  color: #ccc;
   padding-right: 10px;
   font-size: 11px;
   white-space: nowrap;
@@ -1350,8 +1347,8 @@ div#floatingTitle.Unread a.title {
   color: black;
 }
 .cdm.expandable {
-  background-color: #222222;
-  border: 0px solid #222222;
+  background-color: #222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
 }
 .cdm.expandable > hr {
@@ -1388,7 +1385,7 @@ div.cdm.expandable.active div.header span.titleWrap {
 }
 div.cdm.expandable div.header a.title {
   font-weight: 600;
-  color: #cccccc;
+  color: #ccc;
   font-size: 14px;
   transition: color 0.2s, background 0.2s;
   text-rendering: optimizelegibility;
@@ -1419,7 +1416,7 @@ div.cdm.expandable:not(.active) .collapse {
   display: none;
 }
 body.ttrss_prefs {
-  background-color: #222222;
+  background-color: #222;
   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
   font-size: 14px;
 }
@@ -1435,7 +1432,7 @@ body.ttrss_prefs #footer_splitter {
   display: none;
 }
 body.ttrss_prefs #footer {
-  background-color: #222222;
+  background-color: #222;
   font-size: 13px;
   border: 0px;
   text-align: center;
@@ -1472,7 +1469,7 @@ body.ttrss_prefs div#filterlistLoading,
 body.ttrss_prefs div#labellistLoading {
   text-align: center;
   padding: 5px;
-  color: #cccccc;
+  color: #ccc;
 }
 body.ttrss_prefs div#feedlistLoading img,
 body.ttrss_prefs div#filterlistLoading img,
@@ -1494,7 +1491,7 @@ body.ttrss_prefs table.prefPluginsList label {
   white-space: nowrap;
 }
 body.ttrss_prefs table.prefPluginsList i.plugin-enabled {
-  color: #69c671;
+  color: #69C671;
 }
 body.ttrss_prefs table.prefPluginsList label img {
   vertical-align: middle;
@@ -1510,7 +1507,7 @@ body.ttrss_prefs table.prefErrorLog tr.errrow td.errno {
 body.ttrss_prefs table.prefErrorLog td.filename,
 body.ttrss_prefs table.prefErrorLog td.login,
 body.ttrss_prefs table.prefErrorLog td.timestamp {
-  color: #cccccc;
+  color: #ccc;
 }
 body.ttrss_prefs hr {
   border-color: #ecf4ff;
@@ -1520,8 +1517,8 @@ body.ttrss_utility.sanity_failed {
   background: #900;
 }
 body.ttrss_utility {
-  background: #222222;
-  color: #cccccc;
+  background: #222;
+  color: #ccc;
   padding: 0px;
   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
   font-size: 14px;
@@ -1737,8 +1734,8 @@ body.small_margins {
   max-width: none;
 }
 body#sharepopup {
-  color: #cccccc;
-  background: #333333;
+  color: #ccc;
+  background: #333;
   margin: 10px;
 }
 body#sharepopup h1 {
@@ -1770,7 +1767,7 @@ body#sharepopup input {
   box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.1);
 }
 .flat .dijitCheckBox.dijitCheckBoxChecked {
-  background-color: #69c671;
+  background-color: #69C671;
   border-color: #45b74f;
 }
 .flat .dijitMenu .dijitMenuItem .dijitMenuItemLabel {
@@ -1850,21 +1847,20 @@ body#sharepopup input {
   top: 1px;
 }
 .flat label.dijitButton:hover {
-  background-color: #222222;
+  background-color: #222;
 }
 .flat .dijitTree .dijitTreeNode .dijitTreeRow {
   padding: 4px 0px 4px;
   border-width: 1px;
-  color: #cccccc;
+  color: #ccc;
 }
 @font-face {
   font-family: 'Material Icons';
   font-style: normal;
   font-weight: 400;
   src: url(../lib/iconfont/MaterialIcons-Regular.eot);
-  src: local('Material Icons'), local('MaterialIcons-Regular'), url(../lib/iconfont/MaterialIcons-Regular.woff2) format('woff2'), url(../lib/iconfont/MaterialIcons-Regular.woff) format('woff'), url(../lib/iconfont/MaterialIcons-Regular.ttf) format('truetype');
-  
   /* For IE6-8 */
+  src: local('Material Icons'), local('MaterialIcons-Regular'), url(../lib/iconfont/MaterialIcons-Regular.woff2) format('woff2'), url(../lib/iconfont/MaterialIcons-Regular.woff) format('woff'), url(../lib/iconfont/MaterialIcons-Regular.ttf) format('truetype');
 }
 .material-icons {
   font-family: 'Material Icons';
@@ -1892,7 +1888,7 @@ body#sharepopup input {
 }
 body.flat.ttrss_main.ttrss_prefs #main,
 body.flat.ttrss_main.ttrss_prefs #footer {
-  background: #222222;
+  background: #222;
 }
 body.flat.ttrss_main.ttrss_prefs #footer a {
   color: #fff;
@@ -1926,32 +1922,32 @@ body.flat.ttrss_main a:hover {
 }
 body.flat.ttrss_main #main,
 body.flat.ttrss_main #overlay {
-  color: #cccccc;
-  background: #333333;
+  color: #ccc;
+  background: #333;
 }
 body.flat.ttrss_main #toolbar-frame #toolbar {
-  background: #222222;
+  background: #222;
   color: #e6e6e6;
 }
 body.flat.ttrss_main #feeds-holder {
-  background: #222222;
-  box-shadow: inset -1px 0px 2px -1px #666666;
+  background: #222;
+  box-shadow: inset -1px 0px 2px -1px #666;
 }
 body.flat.ttrss_main #feeds-holder #feedTree .counterNode.aux {
-  background: #222222;
-  color: #cccccc;
-  border-color: #333333;
+  background: #222;
+  color: #ccc;
+  border-color: #333;
 }
 body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRowSelected {
-  background: #333333;
-  border-color: #333333 transparent;
+  background: #333;
+  border-color: #333 transparent;
   color: #e6e6e6;
 }
 body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRowSelected .dijitTreeLabel {
   text-shadow: none;
 }
 body.flat.ttrss_main #floatingTitle {
-  background-color: #333333;
+  background-color: #333;
 }
 body.flat.ttrss_main #floatingTitle .feed a {
   color: #e6e6e6;
@@ -1964,14 +1960,14 @@ body.flat.ttrss_main div#floatingTitle.Unread a.title {
 }
 body.flat.ttrss_main #headlines-frame .hl:not(.active):not(.Selected):not(.Unread),
 body.flat.ttrss_main #headlines-frame .cdm.expandable:not(.active):not(.Selected):not(.Unread) {
-  background: #333333;
+  background: #333;
 }
 body.flat.ttrss_main #headlines-frame .hl.Unread:not(.active):not(.Selected),
 body.flat.ttrss_main #headlines-frame .cdm.expandable.Unread:not(.active):not(.Selected) {
-  background: #222222;
+  background: #222;
 }
 body.flat.ttrss_main #headlines-frame .cdm.expanded {
-  background: #333333;
+  background: #333;
 }
 body.flat.ttrss_main #headlines-frame .hl.Unread .title,
 body.flat.ttrss_main #headlines-frame .cdm.Unread .title {
@@ -2007,15 +2003,15 @@ body.flat.ttrss_main #headlines-frame .cdm.expandable.active .title {
   color: #b87d2c;
 }
 body.flat.ttrss_main #headlines-frame .cdm.expandable.active {
-  background: #222222 ! important;
+  background: #222 ! important;
 }
 body.flat.ttrss_main #headlines-frame .hl,
 body.flat.ttrss_main #headlines-frame .cdm {
-  color: #cccccc;
+  color: #ccc;
 }
 body.flat.ttrss_main #headlines-frame .hl .title,
 body.flat.ttrss_main #headlines-frame .cdm .title {
-  color: #cccccc;
+  color: #ccc;
 }
 body.flat.ttrss_main #headlines-frame .hl .author,
 body.flat.ttrss_main #headlines-frame .cdm .author {
@@ -2025,15 +2021,15 @@ body.flat.ttrss_main #headlines-frame .hl .updated,
 body.flat.ttrss_main #headlines-frame .cdm .updated,
 body.flat.ttrss_main #headlines-frame .hl .content,
 body.flat.ttrss_main #headlines-frame .cdm .content {
-  color: #cccccc;
+  color: #ccc;
 }
 body.flat.ttrss_main #headlines-frame .hl .feed a,
 body.flat.ttrss_main #headlines-frame .cdm .feed a {
   color: #e6e6e6;
 }
 body.flat.ttrss_main #headlines-frame .cdm .footer {
-  border-color: #222222;
-  color: #cccccc;
+  border-color: #222;
+  color: #ccc;
 }
 body.flat.ttrss_main #headlines-frame .left i.material-icons,
 body.flat.ttrss_main #headlines-frame .left .dijitCheckBox {
@@ -2045,11 +2041,11 @@ body.flat.ttrss_main .dijitToolbar .dijitSelect .dijitButtonNode {
 }
 body.flat.ttrss_main .dijitToolbar .dijitSelect:not(.dijitHover) .dijitButtonContents,
 body.flat.ttrss_main .dijitToolbar .dijitSelect:not(.dijitHover) .dijitButtonNode {
-  background-color: #222222;
+  background-color: #222;
 }
 body.flat.ttrss_main .dijitCheckBox:not(.dijitChecked)::before {
   color: #999999;
-  background: #222222;
+  background: #222;
 }
 body.flat.ttrss_main .insensitive {
   color: #999999;
@@ -2058,20 +2054,20 @@ body.flat.ttrss_main .dijitAccordionInnerContainerSelected .dijitAccordionTitle
   color: white;
 }
 body.flat.ttrss_main .dijitDialog .dijitDialogPaneContent {
-  background: #222222;
+  background: #222;
 }
 body.flat.ttrss_main .dijitTab:not(.dijitTabChecked) {
-  background: #222222;
+  background: #222;
 }
 body.flat.ttrss_main .dijitTab.dijitTabChecked.dijitTabHover {
   color: #e6e6e6;
 }
 body.flat.ttrss_main label.dijitButton {
-  border: 1px solid #666666;
+  border: 1px solid #666;
 }
 body.flat.ttrss_main label.dijitButton:hover {
   border-color: #2f2f2f;
-  background-color: #333333;
+  background-color: #333;
 }
 body.flat.ttrss_main textarea {
   color: #e6e6e6;
@@ -2080,45 +2076,45 @@ body.flat.ttrss_main code {
   color: #c90 ! important;
 }
 body.flat.ttrss_main .panel {
-  background-color: #222222;
-  border-color: #666666;
+  background-color: #222;
+  border-color: #666;
 }
 body.flat.ttrss_main .dijitDialog .panel {
-  background-color: #333333;
+  background-color: #333;
 }
 body.flat.ttrss_main #headlines-frame blockquote,
 body.flat.ttrss_main #content-insert blockquote {
-  color: #cccccc;
+  color: #ccc;
   border-color: #b87d2c;
 }
 body.flat.ttrss_main pre {
-  color: #cccccc;
-  background: #222222 ! important;
+  color: #ccc;
+  background: #222 ! important;
 }
 body.flat.ttrss_main ul#filterDlg_Matches,
 body.flat.ttrss_main ul#filterDlg_Actions {
-  background: #222222;
-  border-color: #666666;
+  background: #222;
+  border-color: #666;
 }
 body.flat.ttrss_main .article-note {
   background: #b87d2c;
   border-color: #b87d2c;
-  color: #333333;
+  color: #333;
 }
 body.flat.ttrss_main .article-note i.material-icons {
-  color: #333333;
+  color: #333;
 }
 body.flat.ttrss_main ::-webkit-scrollbar {
   width: 4px;
 }
 body.flat.ttrss_main ::-webkit-scrollbar-thumb {
-  background-color: #666666;
+  background-color: #666;
 }
 body.flat.ttrss_main ::-webkit-scrollbar-track {
-  background-color: #222222;
+  background-color: #222;
 }
 body.flat.ttrss_main .alert {
-  background: #222222;
+  background: #222;
   border-color: #664518;
 }
 /*# sourceMappingURL=night.css.map */

File diff suppressed because it is too large
+ 1 - 1
themes/night.css.map


+ 126 - 130
themes/night_blue.css

@@ -11,8 +11,8 @@ body.ttrss_prefs,
   margin: 0;
 }
 body.ttrss_main {
-  background: #333333;
-  color: #cccccc;
+  background: #333;
+  color: #ccc;
   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
   font-size: 14px;
   overflow: hidden;
@@ -27,9 +27,9 @@ body.ttrss_main div.post {
 body.ttrss_main div.post div.header {
   padding: 5px;
   color: #909090;
-  border: 0px solid #222222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
-  background: #222222;
+  background: #222;
 }
 body.ttrss_main div.post div.header .left,
 body.ttrss_main div.post div.header .right {
@@ -190,13 +190,13 @@ body.ttrss_main .notify.notify_error i.icon-close {
   color: white;
 }
 body.ttrss_main .hl {
-  border: 0px solid #222222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
   transition: color 0.2s, background 0.2s;
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
-  background: #222222;
+  background: #222;
 }
 body.ttrss_main .hl > * {
   align-self: center;
@@ -230,7 +230,7 @@ body.ttrss_main .hl div.title {
 }
 body.ttrss_main .hl span.author {
   white-space: nowrap;
-  color: #cccccc;
+  color: #ccc;
   font-size: 11px;
   font-weight: normal;
 }
@@ -244,13 +244,13 @@ body.ttrss_main .hl span.feed a {
   font-size: 11px;
   font-style: italic;
   font-weight: normal;
-  color: #cccccc;
+  color: #ccc;
 }
 body.ttrss_main .hl span.feed a:hover {
   color: #257aa7;
 }
 body.ttrss_main .hl span.updated {
-  color: #cccccc;
+  color: #ccc;
   text-align: right;
   font-size: 11px;
   padding-left: 10px;
@@ -313,7 +313,7 @@ body.ttrss_main #content-insert blockquote,
 body.ttrss_main #headlines-frame blockquote,
 body.ttrss_main .dijitContentPane blockquote {
   margin: 5px 0px 5px 0px;
-  color: #cccccc;
+  color: #ccc;
   padding-left: 10px;
   border: 0px solid #ccc;
   border-left-width: 4px;
@@ -329,11 +329,11 @@ body.ttrss_main #headlines-frame pre,
 body.ttrss_main .dijitContentPane pre {
   margin: 5px 0px 5px 0px;
   padding: 10px;
-  color: #cccccc;
+  color: #ccc;
   font-family: monospace;
   font-size: 12px;
   border: 0px solid #ccc;
-  background: #222222;
+  background: #222;
   display: block;
   max-width: 98%;
   overflow: auto;
@@ -387,11 +387,11 @@ body.ttrss_main .alert-info h4 {
   color: #3a87ad;
 }
 body.ttrss_main div.prefHelp {
-  color: #cccccc;
+  color: #ccc;
   padding: 5px;
 }
 body.ttrss_main .insensitive {
-  color: #cccccc;
+  color: #ccc;
 }
 body.ttrss_main .small {
   font-size: 11px;
@@ -403,29 +403,23 @@ body.ttrss_main span.preview {
   padding-left: 4px;
 }
 body.ttrss_main .label {
-  display: inline-flex;
+  display: inline-block;
   vertical-align: middle;
   background-color: #fff7d5;
   font-size: 9px;
-  color: #cccccc;
+  color: #ccc;
   font-weight: normal;
   margin-left: 2px;
-  padding: 1px 4px 1px 1px;
+  padding: 2px 4px;
   white-space: nowrap;
 }
-body.ttrss_main .label i {
-  margin-right: 2px;
-}
-body.ttrss_main .label > * {
-  align-self: center;
-}
 body.ttrss_main i.marked-pic,
 body.ttrss_main i.pub-pic {
   cursor: pointer;
   color: #ccc;
 }
 body.ttrss_main div.errorExplained {
-  border: 1px solid #222222;
+  border: 1px solid #222;
   margin: 5px 0px 5px 0px;
   padding: 5px;
 }
@@ -434,7 +428,7 @@ body.ttrss_main ul.browseFeedList {
   width: 100%;
   overflow: auto;
   border-width: 0px 1px 1px 1px;
-  border-color: #222222;
+  border-color: #222;
   border-style: solid;
   margin: 0px 0px 5px 0px;
   background-color: white;
@@ -464,7 +458,7 @@ body.ttrss_main .noborder {
   border-width: 0px;
 }
 body.ttrss_main #overlay {
-  background: #333333;
+  background: #333;
   left: 0;
   top: 0;
   height: 100%;
@@ -486,14 +480,14 @@ body.ttrss_main div.whiteBox {
   text-align: center;
   padding: 1em 1em 0px 1em;
   font-size: 11px;
-  border: 0px solid #222222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
 }
 body.ttrss_main div.autocomplete {
   position: absolute;
   width: 250px;
-  background-color: #333333;
-  border: 1px solid #222222;
+  background-color: #333;
+  border: 1px solid #222;
   margin: 0px;
   padding: 0px;
 }
@@ -566,9 +560,9 @@ body.ttrss_main div#cmdline {
   left: 5px;
   bottom: 5px;
   font-size: 11px;
-  color: #cccccc;
+  color: #ccc;
   font-weight: bold;
-  background-color: #333333;
+  background-color: #333;
   border: 1px solid #257aa7;
   padding: 3px 5px 3px 5px;
   z-index: 5;
@@ -602,9 +596,9 @@ body.ttrss_main #content-wrap {
 }
 body.ttrss_main #feeds-holder {
   padding: 0px;
-  border: 0px solid #222222;
+  border: 0px solid #222;
   overflow: hidden;
-  background: #222222;
+  background: #222;
   box-shadow: inset -1px 0px 2px -1px rgba(0, 0, 0, 0.1);
   -webkit-overflow-scrolling: touch;
 }
@@ -615,7 +609,7 @@ body.ttrss_main #feeds-holder #feedTree {
   font-family: "Segoe UI", Ubuntu, "Helvetica Neue", Helvetica, Arial, sans-serif;
 }
 body.ttrss_main #feeds-holder #feedTree .counterNode.aux {
-  background: #222222;
+  background: #222;
   color: #e6e6e6;
   border-color: #080808;
 }
@@ -654,8 +648,8 @@ body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRow {
 }
 body.ttrss_main #feeds-holder #feedTree .dijitTreeNode .dijitTreeRowSelected {
   box-shadow: -1px 0px 2px -1px rgba(0, 0, 0, 0.1);
-  border-color: #222222 transparent;
-  background: #333333;
+  border-color: #222 transparent;
+  background: #333;
   color: #333;
 }
 body.ttrss_main #feeds-holder #feedTree .icon {
@@ -681,7 +675,7 @@ body.ttrss_main #feeds-holder #feedTree i.icon.icon-rss_feed {
   color: #ff7c4b;
 }
 body.ttrss_main #feeds-holder #feedTree i.icon.icon-whatshot {
-  color: #69c671;
+  color: #69C671;
 }
 body.ttrss_main #feeds-holder #feedTree i.icon.icon-restore {
   font-weight: bold;
@@ -693,9 +687,12 @@ body.ttrss_main #headlines-wrap-inner {
   margin: 0px;
   border-width: 0px;
 }
+body.ttrss_main #headlines-frame[is-vfeed="0"] .header .feed {
+  display: none;
+}
 body.ttrss_main #headlines-frame {
   padding: 0px;
-  border: 0px #222222;
+  border: 0px #222;
   margin-top: 0px;
   -webkit-overflow-scrolling: touch;
   -webkit-transform: translateZ(0);
@@ -707,11 +704,11 @@ body.ttrss_main #headlines-frame div.feed-title {
   padding: 5px 8px;
 }
 body.ttrss_main #headlines-frame div.feed-title a.title {
-  color: #cccccc;
+  color: #ccc;
   font-weight: bold;
 }
 body.ttrss_main #headlines-frame div.feed-title a {
-  color: #cccccc;
+  color: #ccc;
 }
 body.ttrss_main #headlines-frame div.feed-title a:hover {
   color: #257aa7;
@@ -728,14 +725,14 @@ body.ttrss_main #toolbar-frame {
 }
 body.ttrss_main #toolbar-frame #toolbar {
   background: white;
-  border: 0px solid #222222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
   padding-left: 4px;
   height: 32px;
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
-  color: #cccccc;
+  color: #ccc;
   font-size: 12px;
 }
 body.ttrss_main #toolbar-frame #toolbar > * {
@@ -776,7 +773,7 @@ body.ttrss_main #toolbar-frame #toolbar #toolbar-headlines .right > * {
   align-self: center;
 }
 body.ttrss_main #toolbar-frame #toolbar #updates-available {
-  color: #69c671;
+  color: #69C671;
   padding-right: 4px;
 }
 body.ttrss_main #toolbar-frame #toolbar #selected_prompt {
@@ -793,7 +790,7 @@ body.ttrss_main #toolbar-frame #toolbar #selected_prompt {
 body.ttrss_main #header {
   border-width: 0px;
   text-align: right;
-  color: #cccccc;
+  color: #ccc;
   padding: 5px 5px 0px 0px;
   margin: 0px;
   position: absolute;
@@ -803,7 +800,7 @@ body.ttrss_main #header {
 }
 body.ttrss_main #content-insert {
   padding: 0px;
-  border-color: #222222;
+  border-color: #222;
   border-width: 0px;
   line-height: 1.5;
   overflow: auto;
@@ -819,22 +816,22 @@ body.ttrss_main img.icon {
 }
 body.ttrss_main .player {
   display: inline-block;
-  color: #cccccc;
+  color: #ccc;
   font-size: 11px;
   font-family: sans-serif;
-  border: 1px solid #cccccc;
+  border: 1px solid #ccc;
   padding: 0px 4px 0px 4px;
   margin: 0px 2px 0px 2px;
   width: 50px;
   text-align: center;
-  background: #333333;
+  background: #333;
 }
 body.ttrss_main .player.playing {
   color: #00c000;
   border-color: #00c000;
 }
 body.ttrss_main .player:hover {
-  background: #222222;
+  background: #222;
   cursor: pointer;
 }
 body.ttrss_main #headlines-frame.auto_catchup #headlines-spacer {
@@ -843,13 +840,13 @@ body.ttrss_main #headlines-frame.auto_catchup #headlines-spacer {
 body.ttrss_main #headlines-spacer {
   margin-left: 1px;
   text-align: center;
-  color: #cccccc;
+  color: #ccc;
   font-size: 11px;
   font-style: italic;
 }
 body.ttrss_main #headlines-spacer a,
 body.ttrss_main #headlines-spacer span {
-  color: #cccccc;
+  color: #ccc;
   padding: 10px;
   display: block;
 }
@@ -862,9 +859,9 @@ body.ttrss_main ul#filterDlg_Actions {
   overflow: auto;
   list-style-type: none;
   border-style: solid;
-  border-color: #222222;
+  border-color: #222;
   border-width: 1px 1px 1px 1px;
-  background-color: #333333;
+  background-color: #333;
   margin: 0px 0px 5px 0px;
   padding: 4px;
   min-height: 16px;
@@ -1008,7 +1005,7 @@ body.ttrss_main .hl.published .left i.pub-pic {
   color: #ff7c4b;
 }
 body.ttrss_main .score-high i.icon-score {
-  color: #69c671;
+  color: #69C671;
 }
 body.ttrss_main .score-low i.icon-score {
   color: #500;
@@ -1020,12 +1017,12 @@ body.ttrss_main i.icon-score {
   cursor: pointer;
 }
 body.ttrss_main .panel {
-  border: 1px solid #222222;
-  background: #222222;
+  border: 1px solid #222;
+  background: #222;
   padding: 4px;
 }
 body.ttrss_main .dijitDialog .panel {
-  background: #333333;
+  background: #333;
 }
 body.ttrss_main .panel-scrollable {
   overflow: auto;
@@ -1054,7 +1051,7 @@ body.ttrss_main #prefFilterTestResultList .feed {
 }
 ::selection {
   background: #257aa7;
-  color: #333333;
+  color: #333;
 }
 ::-webkit-scrollbar {
   width: 4px;
@@ -1105,7 +1102,7 @@ video::-webkit-media-controls-overlay-play-button {
   flex-grow: 2;
 }
 .cdm .header span.updated {
-  color: #cccccc;
+  color: #ccc;
   font-weight: normal;
   font-size: 11px;
   white-space: nowrap;
@@ -1117,7 +1114,7 @@ video::-webkit-media-controls-overlay-play-button {
   height: 30px;
   padding-left: 5px;
   font-weight: normal;
-  color: #cccccc;
+  color: #ccc;
   clear: both;
 }
 .cdm .footer > * {
@@ -1155,7 +1152,7 @@ video::-webkit-media-controls-overlay-play-button {
   white-space: normal;
 }
 .cdm.expanded .footer {
-  border: 0px solid #222222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
 }
 .cdm.expanded > hr {
@@ -1183,7 +1180,7 @@ div.cdm.expanded.Unread div.header a.title {
   color: black;
 }
 div.cdm.expanded div.content {
-  color: #cccccc;
+  color: #ccc;
 }
 div.cdm.expanded.Unread div.content {
   color: black;
@@ -1200,11 +1197,11 @@ div.cdm.vgrlf .feed {
   padding: 5px 3px 5px 5px;
 }
 .cdm div.feed-title a.title {
-  color: #cccccc;
+  color: #ccc;
   font-weight: bold;
 }
 .cdm div.feed-title a {
-  color: #cccccc;
+  color: #ccc;
 }
 .cdm div.feed-title a:hover {
   color: #257aa7;
@@ -1217,7 +1214,7 @@ div.cdm.vgrlf .feed {
 .cdm div.header div.feed,
 .cdm div.header div.feed a {
   vertical-align: middle;
-  color: #cccccc;
+  color: #ccc;
   font-weight: normal;
   font-style: italic;
   font-size: 11px;
@@ -1234,7 +1231,7 @@ div.cdm.vgrlf .feed {
 }
 .cdm div.header span.author {
   white-space: nowrap;
-  color: #cccccc;
+  color: #ccc;
   font-size: 11px;
   font-weight: normal;
 }
@@ -1249,10 +1246,10 @@ div#floatingTitle {
   top: 0px;
   right: 0px;
   left: 0px;
-  border: 0px solid #222222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
   background: white;
-  color: #cccccc;
+  color: #ccc;
   display: flex;
   flex-direction: row;
   flex-wrap: nowrap;
@@ -1287,7 +1284,7 @@ div#floatingTitle .right i.icon-anchor {
   cursor: pointer;
 }
 div#floatingTitle span.author {
-  color: #cccccc;
+  color: #ccc;
   font-size: 11px;
   font-weight: normal;
 }
@@ -1301,7 +1298,7 @@ div#floatingTitle a.title {
 }
 div#floatingTitle div.feed {
   padding-right: 10px;
-  color: #cccccc;
+  color: #ccc;
   font-weight: normal;
   font-style: italic;
   font-size: 11px;
@@ -1315,11 +1312,11 @@ div#floatingTitle div.feed a {
 div#floatingTitle span.updated {
   padding-right: 10px;
   white-space: nowrap;
-  color: #cccccc;
+  color: #ccc;
   font-size: 11px;
 }
 div#floatingTitle div.feed a {
-  color: #cccccc;
+  color: #ccc;
 }
 div#floatingTitle .collapse,
 div#floatingTitle .excerpt {
@@ -1338,7 +1335,7 @@ div#floatingTitle .feed-title a.title {
 }
 div#floatingTitle .feed-title a.catchup {
   text-align: right;
-  color: #cccccc;
+  color: #ccc;
   padding-right: 10px;
   font-size: 11px;
   white-space: nowrap;
@@ -1350,8 +1347,8 @@ div#floatingTitle.Unread a.title {
   color: black;
 }
 .cdm.expandable {
-  background-color: #222222;
-  border: 0px solid #222222;
+  background-color: #222;
+  border: 0px solid #222;
   border-bottom-width: 1px;
 }
 .cdm.expandable > hr {
@@ -1388,7 +1385,7 @@ div.cdm.expandable.active div.header span.titleWrap {
 }
 div.cdm.expandable div.header a.title {
   font-weight: 600;
-  color: #cccccc;
+  color: #ccc;
   font-size: 14px;
   transition: color 0.2s, background 0.2s;
   text-rendering: optimizelegibility;
@@ -1419,7 +1416,7 @@ div.cdm.expandable:not(.active) .collapse {
   display: none;
 }
 body.ttrss_prefs {
-  background-color: #222222;
+  background-color: #222;
   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
   font-size: 14px;
 }
@@ -1435,7 +1432,7 @@ body.ttrss_prefs #footer_splitter {
   display: none;
 }
 body.ttrss_prefs #footer {
-  background-color: #222222;
+  background-color: #222;
   font-size: 13px;
   border: 0px;
   text-align: center;
@@ -1472,7 +1469,7 @@ body.ttrss_prefs div#filterlistLoading,
 body.ttrss_prefs div#labellistLoading {
   text-align: center;
   padding: 5px;
-  color: #cccccc;
+  color: #ccc;
 }
 body.ttrss_prefs div#feedlistLoading img,
 body.ttrss_prefs div#filterlistLoading img,
@@ -1494,7 +1491,7 @@ body.ttrss_prefs table.prefPluginsList label {
   white-space: nowrap;
 }
 body.ttrss_prefs table.prefPluginsList i.plugin-enabled {
-  color: #69c671;
+  color: #69C671;
 }
 body.ttrss_prefs table.prefPluginsList label img {
   vertical-align: middle;
@@ -1510,7 +1507,7 @@ body.ttrss_prefs table.prefErrorLog tr.errrow td.errno {
 body.ttrss_prefs table.prefErrorLog td.filename,
 body.ttrss_prefs table.prefErrorLog td.login,
 body.ttrss_prefs table.prefErrorLog td.timestamp {
-  color: #cccccc;
+  color: #ccc;
 }
 body.ttrss_prefs hr {
   border-color: #ecf4ff;
@@ -1520,8 +1517,8 @@ body.ttrss_utility.sanity_failed {
   background: #900;
 }
 body.ttrss_utility {
-  background: #222222;
-  color: #cccccc;
+  background: #222;
+  color: #ccc;
   padding: 0px;
   font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
   font-size: 14px;
@@ -1737,8 +1734,8 @@ body.small_margins {
   max-width: none;
 }
 body#sharepopup {
-  color: #cccccc;
-  background: #333333;
+  color: #ccc;
+  background: #333;
   margin: 10px;
 }
 body#sharepopup h1 {
@@ -1770,7 +1767,7 @@ body#sharepopup input {
   box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.1);
 }
 .flat .dijitCheckBox.dijitCheckBoxChecked {
-  background-color: #69c671;
+  background-color: #69C671;
   border-color: #45b74f;
 }
 .flat .dijitMenu .dijitMenuItem .dijitMenuItemLabel {
@@ -1850,21 +1847,20 @@ body#sharepopup input {
   top: 1px;
 }
 .flat label.dijitButton:hover {
-  background-color: #222222;
+  background-color: #222;
 }
 .flat .dijitTree .dijitTreeNode .dijitTreeRow {
   padding: 4px 0px 4px;
   border-width: 1px;
-  color: #cccccc;
+  color: #ccc;
 }
 @font-face {
   font-family: 'Material Icons';
   font-style: normal;
   font-weight: 400;
   src: url(../lib/iconfont/MaterialIcons-Regular.eot);
-  src: local('Material Icons'), local('MaterialIcons-Regular'), url(../lib/iconfont/MaterialIcons-Regular.woff2) format('woff2'), url(../lib/iconfont/MaterialIcons-Regular.woff) format('woff'), url(../lib/iconfont/MaterialIcons-Regular.ttf) format('truetype');
-  
   /* For IE6-8 */
+  src: local('Material Icons'), local('MaterialIcons-Regular'), url(../lib/iconfont/MaterialIcons-Regular.woff2) format('woff2'), url(../lib/iconfont/MaterialIcons-Regular.woff) format('woff'), url(../lib/iconfont/MaterialIcons-Regular.ttf) format('truetype');
 }
 .material-icons {
   font-family: 'Material Icons';
@@ -1892,7 +1888,7 @@ body#sharepopup input {
 }
 body.flat.ttrss_main.ttrss_prefs #main,
 body.flat.ttrss_main.ttrss_prefs #footer {
-  background: #222222;
+  background: #222;
 }
 body.flat.ttrss_main.ttrss_prefs #footer a {
   color: #fff;
@@ -1926,32 +1922,32 @@ body.flat.ttrss_main a:hover {
 }
 body.flat.ttrss_main #main,
 body.flat.ttrss_main #overlay {
-  color: #cccccc;
-  background: #333333;
+  color: #ccc;
+  background: #333;
 }
 body.flat.ttrss_main #toolbar-frame #toolbar {
-  background: #222222;
+  background: #222;
   color: #e6e6e6;
 }
 body.flat.ttrss_main #feeds-holder {
-  background: #222222;
-  box-shadow: inset -1px 0px 2px -1px #666666;
+  background: #222;
+  box-shadow: inset -1px 0px 2px -1px #666;
 }
 body.flat.ttrss_main #feeds-holder #feedTree .counterNode.aux {
-  background: #222222;
-  color: #cccccc;
-  border-color: #333333;
+  background: #222;
+  color: #ccc;
+  border-color: #333;
 }
 body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRowSelected {
-  background: #333333;
-  border-color: #333333 transparent;
+  background: #333;
+  border-color: #333 transparent;
   color: #e6e6e6;
 }
 body.flat.ttrss_main #feeds-holder #feedTree .dijitTreeRowSelected .dijitTreeLabel {
   text-shadow: none;
 }
 body.flat.ttrss_main #floatingTitle {
-  background-color: #333333;
+  background-color: #333;
 }
 body.flat.ttrss_main #floatingTitle .feed a {
   color: #e6e6e6;
@@ -1964,14 +1960,14 @@ body.flat.ttrss_main div#floatingTitle.Unread a.title {
 }
 body.flat.ttrss_main #headlines-frame .hl:not(.active):not(.Selected):not(.Unread),
 body.flat.ttrss_main #headlines-frame .cdm.expandable:not(.active):not(.Selected):not(.Unread) {
-  background: #333333;
+  background: #333;
 }
 body.flat.ttrss_main #headlines-frame .hl.Unread:not(.active):not(.Selected),
 body.flat.ttrss_main #headlines-frame .cdm.expandable.Unread:not(.active):not(.Selected) {
-  background: #222222;
+  background: #222;
 }
 body.flat.ttrss_main #headlines-frame .cdm.expanded {
-  background: #333333;
+  background: #333;
 }
 body.flat.ttrss_main #headlines-frame .hl.Unread .title,
 body.flat.ttrss_main #headlines-frame .cdm.Unread .title {
@@ -2007,15 +2003,15 @@ body.flat.ttrss_main #headlines-frame .cdm.expandable.active .title {
   color: #257aa7;
 }
 body.flat.ttrss_main #headlines-frame .cdm.expandable.active {
-  background: #222222 ! important;
+  background: #222 ! important;
 }
 body.flat.ttrss_main #headlines-frame .hl,
 body.flat.ttrss_main #headlines-frame .cdm {
-  color: #cccccc;
+  color: #ccc;
 }
 body.flat.ttrss_main #headlines-frame .hl .title,
 body.flat.ttrss_main #headlines-frame .cdm .title {
-  color: #cccccc;
+  color: #ccc;
 }
 body.flat.ttrss_main #headlines-frame .hl .author,
 body.flat.ttrss_main #headlines-frame .cdm .author {
@@ -2025,15 +2021,15 @@ body.flat.ttrss_main #headlines-frame .hl .updated,
 body.flat.ttrss_main #headlines-frame .cdm .updated,
 body.flat.ttrss_main #headlines-frame .hl .content,
 body.flat.ttrss_main #headlines-frame .cdm .content {
-  color: #cccccc;
+  color: #ccc;
 }
 body.flat.ttrss_main #headlines-frame .hl .feed a,
 body.flat.ttrss_main #headlines-frame .cdm .feed a {