FreshRSS/p/themes/base-theme/frss.css

2554 lines
41 KiB
CSS

@charset "UTF-8";
/*=== GENERAL */
/*============*/
:root {
--frss-font-color-dark: #000;
--frss-font-color-grey-dark: #666;
--frss-font-color-grey-light: #aaa;
--frss-font-color-light: #fff;
--frss-background-color-error-transparent: #ff000040;
--frss-font-color-error: #f00;
--frss-background-color: #fff;
--frss-background-color-transparent: #ffffff7f;
--frss-background-color-middle: #eee;
--frss-background-color-dark: #ccc;
--frss-border-color: #999;
--frss-border-color-error: #f00;
--frss-switch-accent-color: #85d885;
--frss-dragdrop-color: #ff0;
--frss-dragdrop-color-transparent: #ff02;
--frss-noThumbnailImage-background-color: #ddd;
--frss-darken-background-hover-transparent: #6662;
--frss-modal-background-color-transparent: #0007;
--frss-box-shadow-color-transparent: #0003;
--frss-scrollbar-handle: #0002;
--frss-scrollbar-handle-hover: #0005;
--frss-scrollbar-track: #0001;
--frss-scrollbar-track-hover: #0001;
--frss-loading-image: url("loader.gif");
--frss-padding-flux-items: 0.75rem;
--frss-padding-top-bottom: 0.5rem;
line-height: 1.5;
}
@font-face {
font-family: 'OpenSans';
font-style: normal;
font-weight: 400;
src: local('Open Sans'), local('OpenSans'),
url('../fonts/OpenSans.woff2') format('woff2'),
url('../fonts/OpenSans.woff') format('woff');
}
html, body {
margin: 0;
padding: 0;
background-color: var(--frss-background-color);
height: 100%;
font-family: "OpenSans", "Cantarell", "Helvetica", "Arial", sans-serif;
font-size: 100%;
}
main.prompt {
margin: 3rem auto 0;
padding: 2rem;
max-width: 400px;
min-width: 300px;
width: 33%;
text-align: center;
}
main.prompt .link-registration {
padding: 1rem 0 0;
margin-bottom: 3rem;
}
footer.main-footer {
margin: 0 2rem 2rem;
padding: 1rem;
text-align: center;
}
/*=== Links */
a {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
/*=== Lists */
ul, ol, dd {
margin: 0;
padding: 0;
}
ul.listInColumns {
column-count: 5;
column-width: 250px;
max-width: 1700px;
}
ul.listInColumns li {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
#tagsList {
list-style: none;
}
/*=== Titles */
h1 {
margin: 1rem 0 0.5rem;
font-size: 1.6rem;
line-height: 1.5;
}
h2 {
margin: 0.5rem 0 0.25rem;
font-size: 1.4rem;
line-height: 1.5;
}
.api > h2 {
text-align: center;
}
h2 .icon,
legend .icon {
height: 0.8em;
vertical-align: baseline;
}
h3 {
margin: 0.5rem 0 0.25rem;
font-size: 1.2rem;
line-height: 1.5;
}
h4,
h5,
h6 {
font-size: 1em;
}
.title_hidden {
display: none;
}
.only-mobile {
display: none !important;
}
/*=== Paragraphs */
p {
margin: 1rem 0 0.5rem;
}
p.help, .prompt p.help {
margin: 0.25rem 0 0.5rem;
text-align: left;
}
p.help .icon {
filter: brightness(2);
}
kbd {
background-color: var(--frss-background-color-middle);
padding: 0 0.5rem 0 0.5rem;
display: inline-block;
color: var(--frss-font-color-grey-dark);
font-size: 0.9rem;
border: 1px solid var(--frss-border-color);
border-radius: 3px;
white-space: pre-wrap;
overflow-wrap: anywhere;
}
/*=== Images */
img {
max-width: 100%;
height: auto;
}
img.favicon {
margin: 0 0.25rem 0 0;
width: 1rem;
height: 1rem;
vertical-align: middle;
}
.content.thin figure,
.content.medium figure {
margin: 8px 0px;
}
.content figure figcaption {
font-style: italic;
}
.feed.mute::before {
content: '🔇';
}
/*=== Videos */
audio, iframe, embed, object, video {
max-width: 100%;
}
audio {
width: 100%;
}
/*=== Forms */
fieldset {
margin: 0;
padding: 0;
border: 0;
}
legend {
display: block;
width: 100%;
clear: both;
}
label {
display: block;
}
input:not(.w50,.w100) {
max-width: 90%;
width: 300px;
}
input[type=number] {
width: 6em;
}
textarea,
input[type="file"],
input.long {
width: 300px;
}
input, select, textarea {
display: inline-block;
max-width: 100%;
font-size: 0.8rem;
box-sizing: border-box;
}
select {
min-width: 6em;
}
input.w50,
select.w50,
textarea.w50 {
min-width: 50%;
box-sizing: border-box;
}
input.w100,
select.w100,
textarea.w100 {
width: 100%;
box-sizing: border-box;
}
.stick.w50 {
width: 50%;
}
.stick.w100 {
width: 100%;
}
.stick.w50 input,
.stick.w100 input {
width: 100%;
}
.stick.w100 input + .btn {
width: 29px;
padding-left: 3px;
padding-right: 3px;
text-align: center;
}
textarea[rows="2"] {
height: 4em;
}
textarea:invalid {
border: 2px dashed var(--frss-border-color-error);
}
.prompt textarea,
.prompt input,
.prompt select,
.prompt .stick {
margin: 5px auto;
width: 100%;
box-sizing: border-box;
}
input:disabled,
select:disabled {
background-color: transparent;
min-width: 75px;
color: var(--frss-font-color-grey-light);
font-style: italic;
border: 1px dashed var(--frss-border-color);
}
input[type="radio"],
input[type="checkbox"] {
min-width: auto;
width: 15px !important;
min-height: 15px !important;
}
.dropdown-menu label > input[type="text"] {
width: 150px;
width: calc(99% - 5em);
}
.dropdown-menu .item > a:hover,
.dropdown-menu .item > button:hover {
text-decoration: none;
}
.dropdown-menu input[type="checkbox"] {
margin-left: 1em;
margin-right: .5em;
}
.dropdown-menu .item .checkboxNewTag {
display: none;
}
.dropdown-menu .item.addItem {
padding: 0 0.5em;
}
.dropdown-menu .item.addItem .stick {
width: 100%
}
.dropdown-menu .item.addItem .stick input[type=text] {
width: 100%;
}
button.as-link,
button.as-link:hover,
button.as-link:active {
background: transparent;
color: inherit;
border: none;
cursor: pointer;
text-align: left;
}
button.as-link[disabled] {
color: var(--frss-font-color-grey-light) !important;
}
/*=== Tables */
.table-wrapper {
overflow-x: auto;
}
table {
margin: 0.5rem 0;
max-width: 100%;
}
th, td {
padding: 0.5rem;
}
th.numeric,
td.numeric {
text-align: center;
}
/*=== COMPONENTS */
/*===============*/
[aria-hidden="true"] {
display: none !important;
}
/* prompt: login + register form + alert message banner */
.prompt {
text-align: center;
}
.prompt form {
margin-top: 2rem;
text-align: left;
}
.prompt label,
.prompt .help {
text-align: left;
}
.prompt input,
.prompt select,
.prompt .stick {
width: 100%;
box-sizing: border-box;
}
.prompt p {
margin: 20px 0;
}
/*=== Forms */
.form-group::after {
content: "";
display: block;
clear: both;
}
.form-group.form-actions {
min-width: 250px;
}
.form-group .group-name {
display: block;
float: left;
width: 200px;
text-align: right;
}
.form-group .group-controls {
min-width: 200px;
margin: 0 0 0 220px;
overflow-x: auto;
}
.form-group .group-controls .control {
display: block;
}
.form-advanced-title {
padding: 15px 0;
width: 200px;
font-weight: bold;
text-align: right;
cursor: pointer;
}
@supports (position: sticky) {
#mark-read-aside {
position: sticky;
top: 0;
}
}
/*=== Buttons */
.stick,
.group {
display: inline-flex;
max-width: 100%;
white-space: nowrap;
vertical-align: middle;
}
.stick > input {
margin-top: 0;
margin-bottom: 0;
}
.stick > input.long {
flex-shrink: 1;
}
.stick > .btn,
.group > .btn {
flex-shrink: 0;
}
#nav_menu_read_all form {
display: inline-flex;
}
.btn {
display: inline-block;
cursor: pointer;
overflow: hidden;
}
.btn-important {
font-weight: bold;
}
.btn-state1.hide {
display: none;
}
.btn-state2 {
display: none;
}
.btn-state2.show {
display: inline-block;
}
#button-update-loading {
background: var(--frss-loading-image) 0.5rem center no-repeat;
background-size: 1rem;
padding-left: 2rem;
}
/*=== switch */
.switch {
margin: 0 0.5em;
padding: revert;
position: relative;
width: 3.5em;
height: 1.75em;
border: 0;
border-radius: 1em;
background-color: var(--frss-background-color-dark);
cursor: pointer;
box-sizing: content-box;
background-repeat: no-repeat;
background-position: center center;
background-image: url('../icons/disabled.svg');
transition: background-position 0.5s;
}
.switch:not([disabled]):hover {
background-image: url('../icons/enabled.svg');
background-repeat: no-repeat;
background-position: right 7px center;
}
.switch.active {
background-color: var(--frss-switch-accent-color);
background-repeat: no-repeat;
background-position: center center;
background-image: url('../icons/enabled.svg');
}
.switch.active:not([disabled]):hover {
background-position: left 7px center;
background-repeat: no-repeat;
background-image: url('../icons/disabled.svg');
}
@supports selector(.switch::before) {
.switch {
background-image: none;
}
.switch.active {
background-image: none;
}
}
/* ::before = circle */
.switch::before {
content: "";
position: absolute;
left: 5px;
right: unset;
top: 0.2em;
width: 1.5em;
height: 1.5em;
background-color: var(--frss-background-color);
background-image: url('../icons/disabled.svg');
background-repeat: no-repeat;
background-position: center center;
border-radius: 50%;
transition: left 0.6s, right 0.6s;
}
.switch:not([disabled]):hover::before {
background-color: var(--frss-background-color-middle);
}
.switch.active::before {
background-image: url('../icons/enabled.svg');
background-position: center center;
left: unset;
right: 5px;
}
.switch.active:not([disabled]):hover::before {
right: 8px;
}
/* ::after = background */
.switch::after {
content: "";
position: absolute;
top: 50%;
right: 8px;
width: 12px;
height: 12px;
transform: translateY(-50%);
}
.switch.active::after {
width: 14px;
height: 14px;
left: 8px;
}
.btn:focus-visible,
input[type="checkbox"]:focus-visible {
outline: 2px solid var(--frss-border-color);
}
/*=== Navigation */
.nav-list {
padding-bottom: 3rem;
}
.nav-list .nav-header,
.nav-list .item {
display: block;
}
.nav-list .item,
.nav-list .item > a,
.nav-list .item > span {
display: block;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
/*=== Horizontal-list */
.horizontal-list {
margin: 0;
padding: 0;
display: table;
table-layout: fixed;
width: 100%;
}
.horizontal-list .item {
display: table-cell;
vertical-align: middle;
}
.horizontal-list .item .item-element {
padding: var(--frss-padding-top-bottom) 0;
}
.horizontal-list .item .item-element.dropdown .dropdown-toggle,
.horizontal-list .item .item-element.dropdown .dropdown-toggle-close {
padding: var(--frss-padding-top-bottom) var(--frss-padding-flux-items);
}
/*=== manage-list */
.manage-list {
list-style: none;
}
.manage-list li {
line-height: 2;
}
.manage-list li * {
vertical-align: middle;
}
.manage-list .disabled {
font-style: italic;
}
/*=== Dropdown */
.dropdown {
position: relative;
display: inline-block;
vertical-align: middle;
}
.dropdown-target {
display: none;
}
.dropdown-menu {
margin: 0;
background-color: var(--frss-background-color);
display: none;
border: 1px solid var(--frss-border-color);
min-width: 200px;
position: absolute;
right: 0;
}
.dropdown-menu::after {
background-color: inherit;
width: 10px;
height: 10px;
border-width: 1px 0 0 1px;
border-style: solid;
border-color: var(--frss-border-color);
content: "";
position: absolute;
top: -6px;
right: 13px;
z-index: -10;
transform: rotate(45deg);
}
.dropdown-menu-scrollable {
max-height: min(75vh, 50em);
overflow-x: hidden;
overflow-y: auto;
}
.dropdown-header {
display: block;
}
.dropdown-menu .item {
display: block;
}
.dropdown-menu .item > a,
.dropdown-menu .item > .as-link,
.dropdown-menu .item > span {
display: block;
width: 100%;
white-space: nowrap;
box-sizing: border-box;
}
.dropdown-menu > .item[aria-checked="true"] > a::before {
content: '✓';
}
.dropdown-menu .input {
display: block;
}
.dropdown-menu .input select,
.dropdown-menu .input input {
display: block;
max-width: 95%;
}
.dropdown-target:target ~ .dropdown-menu {
display: block;
z-index: 1000;
}
.dropdown-menu + .dropdown-close {
display: none;
}
.dropdown-target:target ~ .dropdown-close {
display: block;
font-size: 0;
position: fixed;
top: 0; bottom: 0;
left: 0; right: 0;
z-index: 999;
cursor: default;
}
.item ~ .dropdown-header,
.dropdown-section ~ .dropdown-section,
.item.separator {
margin-top: 5px;
padding-top: 5px;
border-top-width: 1px;
border-top-style: solid;
}
/*=== Alerts */
.alert {
margin: 1rem auto;
padding: 0.75rem 1rem;
display: block;
width: 90%;
}
.alert-warn {
background: inherit;
}
.group-controls .alert {
width: 100%
}
.group-controls .next-step {
display: inline-block;
padding-top: 6px;
padding-bottom: 6px;
}
.alert-head {
margin: 0;
font-weight: bold;
}
.alert ul {
margin: 5px 20px;
}
.alert.hide {
display: none;
}
/*=== Icons */
.icon {
display: inline-block;
max-width: none;
height: 1rem;
vertical-align: middle;
line-height: 1;
}
/* === stream-footer **/
#stream-footer {
margin: 0 0 5em;
padding: 1em 0;
width: 100%;
border-top: 1px solid var(--frss-border-color);
text-align: center;
}
/*=== Pagination */
.nav-pagination {
margin: 2em auto;
}
.pagination {
margin: 0 auto;
padding: 0;
display: table;
table-layout: fixed;
text-align: center;
}
.pagination .item {
display: table-cell;
width: 3em;
font-style: italic;
}
.pagination .item.active {
min-width: 3em;
font-weight: bold;
font-style: normal;
}
.pagination .item a {
display: block;
text-decoration: none;
}
.pagination .pager-previous,
.pagination .pager-next {
width: 6em;
}
.pagination .pager-first,
.pagination .pager-last {
width: 7.5em;
}
/*=== Boxes */
.box {
margin: 20px 20px 20px 0;
display: inline-block;
max-width: 95%;
width: 20rem;
vertical-align: top;
}
.box.visible-semi {
border-style: dashed;
opacity: 0.5;
}
.box .box-title {
position: relative;
}
.box .box-title h2 {
display: inline;
font-size: 1.2rem;
font-weight: bold;
}
.box .box-title form {
margin: 0;
}
.box .box-content {
padding: 8px 8px 8px 16px;
display: block;
min-height: 2.5em;
max-height: 260px;
overflow: auto;
}
.box .box-content .item.feed {
display: block;
padding-top: var(--frss-padding-top-bottom);
}
.box .box-content .item.feed.moved {
font-style: italic;
}
.box .box-content .item.feed.moved .favicon {
opacity: 0.4;
}
.box .box-content .item.disabled {
text-align: center;
font-style: italic;
}
.box .box-content-centered {
padding: 30px 5px;
text-align: center;
}
.box .box-content-centered .btn {
margin: 20px 0 0;
}
/*=== Draggable */
[draggable=true]:hover {
cursor: move;
}
.dragging {
background-color: var(--frss-dragdrop-color)
}
.dragging .icon {
visibility: hidden;
}
.drag-disallowed {
opacity: 0.5;
}
.drag-active .drop-zone:not(.drag-disallowed) {
background: repeating-linear-gradient(45deg, transparent, transparent 40px, var(--frss-dragdrop-color-transparent) 40px, var(--frss-dragdrop-color-transparent) 60px);
}
.drag-active .drag-hover.drop-zone {
background-color: var(--frss-dragdrop-color-transparent);
transition: background 0.5s;
}
li.drag-hover {
margin: 0 0 5px;
border-bottom: 2px solid var(--frss-border-color);
}
.drag-drop {
animation-name: droppedKeyframe;
animation-duration: 0.7s;
}
@keyframes droppedKeyframe {
0% {
background-color: var(--frss-dragdrop-color-transparent);
}
50% {
background-color: var(--frss-dragdrop-color);
}
100% {
background-color: none;
}
}
/*=== Scrollbar */
@supports (scrollbar-width: thin) {
.scrollbar-thin {
scrollbar-color: var(--frss-scrollbar-handle) var(--frss-scrollbar-track);
scrollbar-width: thin;
}
.scrollbar-thin:hover {
scrollbar-color: var(--frss-scrollbar-handle-hover) var(--frss-scrollbar-track-hover);
}
}
@supports not (scrollbar-width: thin) {
.scrollbar-thin::-webkit-scrollbar {
background-color: var(--frss-scrollbar-track);
width: 8px;
}
.scrollbar-thin:hover::-webkit-scrollbar {
background-color: var(--frss-scrollbar-track-hover);
}
.scrollbar-thin::-webkit-scrollbar-thumb {
background-color: var(--frss-scrollbar-handle);
display: unset;
border-radius: 5px;
}
.scrollbar-thin:hover::-webkit-scrollbar-thumb {
background-color: var(--frss-scrollbar-handle-hover);
}
}
/*=== Tree */
.tree {
margin: 0;
max-height: 99vh;
list-style: none;
text-align: left;
overflow-x: hidden;
}
.tree-folder-items {
padding: 0;
list-style: none;
transition: max-height .3s linear;
}
.tree-folder-title {
padding-top: var(--frss-padding-top-bottom);
padding-bottom: var(--frss-padding-top-bottom);
}
.tree-folder-title .title {
display: inline-block;
width: 100%;
vertical-align: middle;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.tree-folder-items > .item {
display: block;
white-space: nowrap;
}
.tree-folder-items > .item > a {
display: inline-block;
vertical-align: middle;
width: calc(100% - 32px);
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.tree-folder-items .item.feed {
position: relative;
}
.tree-bottom {
visibility: hidden;
margin-bottom: 18em;
}
/*=== STRUCTURE */
/*===============*/
/*=== Header */
.header {
display: table;
width: 100%;
height: calc(2.5rem + 2 * var(--frss-padding-top-bottom));
table-layout: fixed;
}
.header > .item {
padding-top: var(--frss-padding-top-bottom);
padding-bottom: var(--frss-padding-top-bottom);
display: table-cell;
}
.header > .item.title {
width: 300px;
text-align: center;
white-space: nowrap;
}
.header > .item.title h1 {
display: inline-block;
}
.header > .item.title a {
padding: 0.25rem 1rem;
display: inline-block;
}
.header > .item.title .logo {
display: inline-block;
height: 2rem;
vertical-align: middle;
}
.header > .item.title a:hover .logo {
filter: brightness(1.4);
transition: filter 0.1s linear;
}
.header > .item.configure {
width: 100px;
}
input[type="search"] {
-webkit-appearance: none; /* stylelint-disable-line property-no-vendor-prefix */
}
/*=== Body */
#global {
background: inherit;
display: table;
width: 100%;
height: calc(100vh - (calc(2.5rem + 2 * var(--frss-padding-top-bottom) + 1px)));
table-layout: fixed;
}
#stream:not(.alert-warn) {
background: inherit;
}
.aside {
display: table-cell;
width: 300px;
vertical-align: top;
}
.aside + .close-aside {
display: none;
}
/*=== Aside main page */
.aside_feed .category .title {
width: calc(100% - 35px);
}
.aside_feed .category .title:not([data-unread="0"]) {
width: calc(100% - 75px);
}
.aside_feed .tree-folder.category .tree-folder-title .title.error .icon {
margin: 0 0.5rem;
padding: 0;
}
.aside_feed .tree-folder-title .icon,
.aside_feed .tree-folder-items .feed .icon {
margin: 0 0.5rem 0 0;
}
.aside_feed .tree-folder-items .feed .favicon {
padding: 0;
}
.aside_feed .tree-folder-items .item.feed {
padding: var(--frss-padding-top-bottom) 0.75rem;
}
.aside_feed .tree-folder-items:not(.active) {
margin: 0;
padding: 0;
max-height: 0;
border: none;
overflow: hidden;
}
.aside_feed .tree-folder-items .dropdown {
vertical-align: top;
}
.aside_feed .tree-folder-items .dropdown-menu {
left: 0;
}
.aside_feed .tree-folder-items .item .dropdown-toggle > .icon {
visibility: hidden;
cursor: pointer;
}
.aside_feed .tree-folder-items .item .dropdown-target:target ~ .dropdown-toggle > .icon,
.aside_feed .tree-folder-items .item:hover .dropdown-toggle > .icon,
.aside_feed .tree-folder-items .item.active .dropdown-toggle > .icon {
visibility: visible;
}
.aside .toggle_aside:hover,
#slider .toggle_aside:hover,
#overlay .close:hover,
.dropdown-menu .toggle_aside:hover {
background-color: var(--frss-darken-background-hover-transparent);
}
/*=== New article notification */
#new-article {
display: none;
}
#new-article > a {
padding: calc(0.25rem + var(--frss-padding-top-bottom)) 1rem;
display: block;
}
/*=== Day indication */
.day {
background: inherit;
}
.day .name {
position: absolute;
right: 0;
width: 50%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
/*=== Feed article header and footer */
.flux_header {
background: inherit;
position: relative;
}
.flux .flux_header .item {
white-space: nowrap;
}
.flux .flux_header .item .item-element {
padding: var(--frss-padding-top-bottom) 0;
line-height: 1.5rem;
}
.flux .flux_header .item.manage .item-element,
.flux .flux_header .item.website .item-element,
.flux .flux_header .item.link .item-element {
padding-left: var(--frss-padding-flux-items);
padding-right: var(--frss-padding-flux-items);
}
.flux .item.manage,
.flux .item.link {
width: calc(1rem + 2 * var(--frss-padding-flux-items));
}
.flux .item.website {
width: 200px;
}
.flux .websiteicon .item.website {
width: calc(2 * var(--frss-padding-flux-items) + 16px);
}
.flux .websitename .item.website {
width: 150px;
}
.website a:hover .favicon,
a.website:hover .favicon {
filter: grayscale(100%);
}
.flux.not_read .item .title,
.flux.current .item .title {
font-weight: bold;
}
.flux:not(.current):hover .flux_header .item .title:has(~ .date) {
padding-right: 0.5rem;
z-index: 2;
}
.flux:not(.current):hover .flux_header .item .date {
opacity: 0.3;
}
.flux:not(.current):hover .item .title {
background-color: inherit;
}
.flux .item:has(.multiline) {
vertical-align: top;
}
.flux .flux_header .item .title a {
color: var(--frss-font-color-dark);
text-decoration: none;
}
.flux .flux_header .item.thumbnail {
line-height: 0;
padding: var(--frss-padding-top-bottom) var(--frss-padding-flux-items);
height: 80px;
}
.flux .flux_header .item.thumbnail .item-element {
padding: 0;
}
.flux .flux_header .item.thumbnail.small {
height: 40px;
}
.flux .flux_header .item.thumbnail.portrait {
width: 60px;
}
.flux .flux_header .item.thumbnail.square {
width: 80px;
}
.flux .flux_header .item.thumbnail.landscape {
width: 128px;
}
.flux .flux_header .item.thumbnail.portrait.small {
width: 30px;
}
.flux .flux_header .item.thumbnail.square.small {
width: 40px;
}
.flux .flux_header .item.thumbnail.landscape.small {
width: 64px;
}
.flux .flux_header .item.thumbnail img {
background: repeating-linear-gradient( -45deg, var(--frss-noThumbnailImage-background-color), var(--frss-noThumbnailImage-background-color) 5px, transparent 5px, transparent 10px );
display: inline-block;
width: 100%;
height: 100%;
overflow: hidden;
object-fit: cover;
}
.flux .flux_header .item.titleAuthorSummaryDate {
position: relative;
overflow: hidden;
}
.flux .flux_header .item .title {
position: absolute;
top: 0;
overflow: hidden;
text-overflow: ellipsis;
display: inline-block;
box-sizing: border-box;
max-width: 100%;
}
.flux .flux_header .item .title:has(~.date) {
padding-right: 155px;
}
.flux .flux_header .item .summary {
display: -webkit-box;
color: var(--frss-font-color-grey-dark);
font-size: 0.9rem;
font-weight: normal;
overflow: hidden;
text-overflow: ellipsis;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
white-space: break-spaces;
margin-top: 2.25rem;
margin-bottom: 0.5rem;
}
.flux .flux_header .item .summary:has(~.date) {
max-width: 90%;
}
.flux .flux_header .item .title .author {
padding-left: 1rem;
color: var(--frss-font-color-grey-dark);
font-weight: normal;
}
.flux .flux_header .item .date {
position: absolute;
right: 0;
top: 0;
width: 155px;
text-align: right;
overflow: hidden;
z-index: 1;
}
.flux .flux_header .item > a {
display: block;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
.flux .flux_header .date,
.flux .flux_content .bottom .date {
font-size: 0.7rem;
}
.item.query > a {
display: list-item;
list-style-position: inside;
list-style-type: decimal;
}
.flux_content .bottom .dropdown-toggle .icon {
margin-right: 0.25rem;
}
/*=== Feed article content */
.hide_posts > .flux:not(.active) > .flux_content {
display: none;
}
.content {
min-height: 20rem;
margin: auto;
line-height: 1.5;
word-wrap: break-word;
}
.content .text {
overflow-x: auto;
}
.content .text div {
overflow-x: auto;
}
.content header,
.content .text,
.content footer {
padding: 0 3rem;
}
.content header {
padding-top: calc(2 * var(--frss-padding-top-bottom));
padding-bottom: calc(var(--frss-padding-top-bottom));
}
.content footer {
padding-bottom: calc(2 * var(--frss-padding-top-bottom));
}
.content.large {
max-width: 1100px;
}
.content.medium {
max-width: 900px;
}
.content.thin {
max-width: 650px;
}
.content .article-header-topline {
margin-bottom: 0.75rem;
}
.content > header,
.content > footer {
color: var(--frss-font-color-grey-light);
font-size: 0.9rem;
}
.content > footer {
padding-top: 1rem;
clear: both;
}
.content > footer .subtitle {
padding: 2rem 0 1rem;
border-top: 2px solid var(--frss-border-color);
}
.content > header .tags,
.content > footer .tags {
display: flex;
line-height: 1;
}
.content > header .tags .icon,
.content > header .website .favicon,
.content > footer .tags .icon {
margin: 0 0.5rem 0 0;
line-height: 1.5;
}
.content > header .tags .list-tags,
.content > footer .tags .list-tags {
margin: 0;
padding: 0;
display: inline-block;
list-style: none;
}
.content > header .tags .list-tags .item.tag,
.content > footer .tags .list-tags .item.tag {
padding: 0 0.75rem 0 0;
display: inline-block;
line-height: 1.5;
}
.content > header .tags .list-tags .item.tag a.link-tag,
.content > footer .tags .list-tags .item.tag a.link-tag {
display: inline;
}
.content > header h1 {
margin: 0.5rem 0;
}
.content .text ul,
.content .text ol,
.content .text dd {
margin: 0 0 0 1rem;
padding: 0 0 0.25rem 1rem;
}
.content pre {
overflow: auto;
}
.subtitle > div {
display: inline;
}
.subtitle > div:not(:first-of-type)::before {
content: ' · ';
}
/*=== Notification and actualize notification */
.notification {
padding: 1rem 3.5rem 1rem 1rem;
position: absolute;
top: 1rem;
left: 25%; right: 25%;
z-index: 9999;
background-color: var(--frss-background-color);
font-weight: bold;
font-size: 0.9rem;
border: 1px solid var(--frss-border-color);
opacity: 1;
text-align: center;
line-height: 2;
vertical-align: middle;
visibility: visible;
transition: visibility 0s, opacity .3s linear;
}
.notification.closed {
opacity: 0;
visibility: hidden;
}
.notification a.close {
padding: 0 1rem;
position: absolute;
top: 0; bottom: 0;
right: 0;
display: inline-block;
line-height: 3;
}
.notification a.close:hover {
background-color: var(--frss-darken-background-hover-transparent);
}
.notification a.close:hover .icon {
filter: brightness(2);
}
#actualizeProgress {
position: fixed;
}
#actualizeProgress progress {
max-width: 100%;
vertical-align: middle;
}
#actualizeProgress .progress {
vertical-align: middle;
}
/*=== Popup */
#popup {
display: none;
position: fixed;
z-index: 200;
left: 0;
top: 0;
width: 100%;
height: 100%;
overflow: auto;
background-color: var(--frss-modal-background-color-transparent);
}
#popup-content {
margin: 5rem auto;
display: table;
width: 80%;
height: 80%;
overflow: hidden;
background-color: var(--frss-background-color);
border-radius: .25rem;
box-shadow: 3px 3px 5px var(--frss-box-shadow-color-transparent);
}
.popup-row {
display: table-row;
width: 100%;
}
#popup-close {
float: right;
width: 27px;
height: 22px;
padding-top: 5px;
}
#popup-close:hover,
#popup-close:focus {
color: var(--frss-font-color-dark);
text-decoration: none;
cursor: pointer;
}
#popup-iframe-container {
display: none;
height: 100%;
}
#popup-iframe-sub {
padding: 10px;
height: 100%;
}
#popup-iframe {
width: 100%;
height: 100%;
}
/*=== Navigation menu (for articles) */
#nav_entries {
display: table;
position: fixed;
bottom: 0; left: 0;
width: 300px;
table-layout: fixed;
padding-bottom: env(safe-area-inset-bottom);
}
#nav_entries .item {
display: table-cell;
width: 30%;
}
#nav_entries a {
display: block;
}
/*=== "Load" parts */
#first_load {
margin: 130px auto -170px auto;
height: 40px;
}
#load_more {
min-height: 40px;
}
#load_more.loading,
#load_more.loading:hover {
padding: 10px 20px;
background: var(--frss-loading-image) center center no-repeat var(--frss-background-color);
font-size: 0;
}
.loading {
background: var(--frss-loading-image) center center no-repeat;
font-size: 0;
}
#bigMarkAsRead {
margin: 0 0 100% 0;
margin: 0 0 100vh 0;
padding: 1em 0 50px 0;
display: block;
width: 100%;
text-align: center;
font-size: 1.25rem;
}
.bigTick {
font-size: 4rem;
}
/*=== Statistiques */
.stat-grid {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 20px;
}
.stat {
grid-column: 1 / span 2;
}
.stat.half {
grid-column: auto;
}
.stat > table {
width: 100%;
}
.statGraph {
height: 300px;
}
/*=== GLOBAL VIEW */
/*================*/
#stream.global {
text-align: center;
}
#stream.global .box {
text-align: left;
}
#global #panel {
bottom: 99vh;
display: block;
transition: visibility .3s, bottom .3s;
visibility: hidden;
}
#global #panel.visible {
bottom: 2%;
visibility: visible;
}
/*=== Panel */
#overlay {
position: fixed;
top: 0; bottom: 0;
left: 0; right: 0;
background-color: var(--frss-modal-background-color-transparent);
opacity: 0;
transition: visibility .3s, opacity .3s;
visibility: hidden;
}
#overlay.visible {
opacity: 1;
visibility: visible;
}
#panel {
background-color: var(--frss-background-color);
display: none;
position: fixed;
top: 2%; bottom: 2%;
left: 3%; right: 3%;
overflow: auto;
}
#overlay .close {
position: fixed;
top: 0; bottom: 0;
left: 0; right: 0;
display: block;
}
/*=== Slider */
html.slider-active {
overflow: hidden;
}
#slider {
background-color: var(--frss-background-color);
width: 0;
position: fixed;
top: 0; bottom: 0;
right: 0;
overflow: auto;
z-index: 100;
}
#slider.active:target {
width: 750px;
box-shadow: -3px 3px 5px var(--frss-box-shadow-color-transparent);
}
#slider.sliding {
transition: width 200ms linear;
}
#close-slider {
position: fixed;
top: 0; bottom: 0;
left: 100%; right: 0;
cursor: pointer;
}
#slider.active:target + #close-slider {
background-color: var(--frss-modal-background-color-transparent);
font-size: 0;
left: 0;
z-index: 99;
}
#close-slider img {
display: none;
}
#slider.active:target + #close-slider img {
padding: 0.5rem;
display: inline-block;
position: absolute;
top: 0.5rem;
left: 0.5rem;
filter: grayscale(100%) brightness(2.5);
}
#slider-content .loader {
height: 90vh;
background-image: url('loader.gif');
background-repeat: no-repeat;
background-position: center;
}
/*=== Configuration pages */
.post {
padding: 1rem 2rem;
font-size: 0.9em;
}
.post form {
margin: 1rem 0;
}
.post.content.centered {
max-width: 550px;
}
/*=== SLIDESHOW Theme Preview */
/*==============*/
.theme-preview-list {
padding: 0;
display: block;
max-width: 640px;
height: 320px;
border: 1px solid var(--frss-border-color);
position: relative;
min-width: 260px;
margin-bottom: 30px;
}
.theme-preview-list input {
display: none;
}
.theme-preview-list .preview-container {
display: block;
}
.theme-preview-list .preview {
display: block;
width: 100%;
height: 100%;
top: 0;
opacity: 0;
position: absolute;
transform: scale(0);
transition: all .7s ease-in-out;
}
.theme-preview-list .preview img {
width: 100%;
height: 100%;
}
.theme-preview-list .nav label {
padding: 0;
display: none;
width: 65px;
height: 100%;
color: var(--frss-font-color-light);
font-family: "Varela Round", sans-serif;
font-size: 9rem;
position: absolute;
opacity: 0;
z-index: 9;
cursor: pointer;
transition: opacity .2s;
text-align: center;
line-height: 2;
background-color: var(--frss-background-color-transparent);
text-shadow: 0px 0px 15px rgb(119, 119, 119);
}
.theme-preview-list .properties {
padding: 5px;
background-color: var(--frss-background-color-transparent);
display: none;
border-top: 1px solid var(--frss-border-color);
bottom: 0;
left: 0; right: 0;
position: absolute;
z-index: 10;
backdrop-filter: blur(3px);
}
.theme-preview-list .properties .page-number {
right: 5px;
top: 0;
position: absolute;
}
.theme-preview-list .preview + .nav label {
opacity: 0.5;
}
.theme-preview-list .nav label:hover {
opacity: 1;
}
.theme-preview-list .nav .next {
right: 0;
}
.theme-preview-list input:checked + .preview-container .preview {
opacity: 1;
transform: scale(1);
transition: opacity 1s ease-in-out;
}
.theme-preview-list input:checked + .preview-container .nav label {
display: block;
}
.theme-preview-list input:checked + .preview-container .properties {
display: block;
}
/*=== DIVERS */
/*===========*/
.log-level {
text-align: center;
}
.log-item.log-error {
background-color: var(--frss-background-color-error-transparent);
}
.item.share.error a::after,
.category .title.error::before,
.item.feed.error .item-title::before,
.theme-preview-list .properties .error::before {
content: " ⚠ ";
color: var(--frss-font-color-error);
}
.item.share button {
position: relative;
}
.item.share button::after {
content: "";
background: var(--frss-background-color-transparent);
display: inline-block;
position: absolute;
padding-top: 1rem;
opacity: 0;
transition: all 0.6s;
left: 0px;
width: 100%;
height: 1rem;
}
.item.share button:active::after {
opacity: 1;
width: 0;
transition: 0s
}
.item.share button.ok::before {
content: "✓";
position: absolute;
left: 0.5rem;
animation-duration: 10s;
animation-fill-mode: both;
animation-name: easeOut;
}
.item.share button.error::before {
content: "❌";
position: absolute;
left: 0.25rem;
}
.item.share button.error {
text-decoration: line-through;
}
@keyframes easeOut {
0% {opacity: 1;}
80% {opacity: 1;}
100% {opacity: 0;}
}
.deprecated {
font-weight: bold;
}
.feed.item.error.active .item-title::before {
color: var(--frss-font-color-light);
}
.feed[data-priority="20"] .item-title,
.flux[data-priority="20"] .website > a {
text-decoration: underline double;
}
.aside .category .title:not([data-unread="0"])::after,
.aside .feed .item-title:not([data-unread="0"])::after {
margin: calc(0.125rem + var(--frss-padding-top-bottom)) 0 0 0;
padding: 0.25rem 0.5rem;
min-width: 2rem;
display: block;
content: attr(data-unread);
position: absolute;
top: 0;
right: 0.75rem;
text-align: center;
font-size: 0.9rem;
border-radius: 0.75rem;
line-height: 1;
font-weight: initial;
}
.global .box.category .title:not([data-unread="0"])::after {
margin: 0.5rem 0 0 0;
padding: 5px 10px;
min-width: 20px;
display: block;
content: attr(data-unread);
position: absolute;
top: 0;
right: 10px;
text-align: center;
font-size: 0.75rem;
border-radius: 12px;
line-height: 1;
font-weight: initial;
}
.box .box-title .configure:not([data-cat-position=""])::after {
margin: 0.5rem 0px 0px;
padding: 5px 10px;
min-width: 20px;
display: block;
content: attr(data-cat-position);
position: absolute;
top: 0px;
right: 10px;
text-align: center;
font-size: 0.75rem;
border-radius: 12px;
line-height: 1;
font-weight: initial;
}
.feed .item-title:not([data-unread="0"])::after {
margin: 1em 0 0 0;
}
#stream.global .feed {
position: relative;
}
#stream.global .feed .item-title:not([data-unread="0"])::after {
margin: 0.5rem 0px 0px;
padding: 5px 10px;
min-width: 20px;
display: block;
content: attr(data-unread);
position: absolute;
top: 0px;
right: 0px;
text-align: center;
font-size: 0.75rem;
border-radius: 12px;
line-height: 1;
font-weight: initial;
}
.feed.active .item-title:not([data-unread="0"])::after {
color: var(--frss-font-color-light);
border: 1px solid var(--frss-border-color);
font-weight: bold;
}
.feed .item-title:not([data-unread="0"]) {
font-weight: bold;
width: calc(100% - 5.5rem);
}
.state_unread .category:not(.active)[data-unread="0"],
.state_unread .feed:not(.active)[data-unread="0"] {
display: none;
}
.nav_menu {
padding-top: var(--frss-padding-top-bottom);
padding-bottom: var(--frss-padding-top-bottom);
background: inherit;
text-align: center;
}
.nav_mobile {
display: none;
}
.nav-login,
.aside .toggle_aside,
#slider .toggle_aside,
.nav_menu .toggle_aside,
.configure .dropdown-header-close {
display: none;
}
.enclosure [download] {
font-size: 3rem;
margin-left: .8em;
}
.default-user {
font-style: italic;
}
/*=== READER */
/*===========*/
.reader .nav_menu .toggle_aside {
display: inline-block;
}
.reader .aside .toggle_aside {
display: block;
width: 100%;
}
.reader .aside {
display: none;
width: 0;
}
.reader .aside:target {
display: table-cell;
width: 300px;
}
.reader .aside .stick {
display: none;
}
.reader .flux {
padding: 1rem 0 2rem;
}
.reader .flux .content {
padding: 3rem 0;
background-color: var(--frss-background-color);
border: 1px solid var(--frss-border-color);
}
#loglist-wrapper {
overflow-x: auto;
}
/*=== MOBILE */
/*===========*/
@media (max-width: 840px) {
:root {
--frss-padding-flux-items: 0.5rem;
}
.flux_header .item.website span,
.item .date, .day .date,
.dropdown-menu > .no-mobile,
.no-mobile {
display: none;
}
.only-mobile {
display: unset !important;
}
.header > .item {
padding: 5px;
}
.header > .item.title {
width: 75%;
text-align: left;
}
.header > .item.title .logo {
height: 24px;
}
header .item.search form {
display: none;
}
.aside:target {
box-shadow: 3px 3px 5px var(--frss-box-shadow-color-transparent);
}
.aside .toggle_aside,
#overlay .close,
.dropdown-menu .toggle_aside,
#slider .toggle_aside {
padding: 1rem 0;
display: block;
width: 100%;
border-bottom: 1px solid var(--frss-border-color);
text-align: center;
}
.flux .flux_header .item .title:has(~.date) {
padding-right: 1rem;
}
#overlay .close {
position: relative;
}
.form-group {
margin-bottom: 10px;
}
.form-group .group-name {
float: none;
width: auto;
text-align: left;
}
.form-group .group-controls {
margin-left: 0;
}
.dropdown {
position: inherit;
}
.dropdown .dropdown-header,
.dropdown .dropdown-section {
line-height: 2;
}
.dropdown .dropdown-menu {
width: 94%;
border-radius: 0;
left: 3%;
right: 3%;
position: absolute;
}
.dropdown .dropdown-menu .item {
margin: 2px 0;
}
.dropdown .dropdown-menu .item .stick .btn {
margin: 0;
}
.dropdown .dropdown-menu .item form {
display: block;
text-align: center;
}
.dropdown .dropdown-menu .item .stick.search {
width: calc(100% - 20px);
}
.dropdown .dropdown-menu .item .stick.search input {
width: 95%;
}
.dropdown .dropdown-menu .item button.as-link,
.dropdown .dropdown-menu .item button.as-link:hover, button.as-link:active {
width: 100%;
}
.dropdown-target:target ~ .dropdown-toggle {
position: relative;
overflow: visible;
}
.dropdown-target:target ~ .dropdown-toggle::after {
background-color: var(--frss-background-color);
width: 10px;
height: 10px;
content: "";
position: absolute;
right: 8px;
bottom: -17px;
transform: rotate(45deg);
z-index: 9999;
cursor: default;
}
.dropdown-target:target ~ .dropdown-toggle:not(.btn) ~ .dropdown-menu {
margin-top: 10px;
}
.configure .dropdown .dropdown-menu {
width: 90%;
height: 100vh;
top: 0;
right: 0;
bottom: 0;
left: auto;
position: fixed;
padding-top: 0;
margin-top: 0;
overflow: auto;
box-shadow: -3px 0 3px var(--frss-box-shadow-color-transparent);
}
.configure .dropdown-target:target ~ .dropdown-toggle::after {
content: none;
}
.dropdown-target:target ~ .dropdown-menu {
display: table-cell;
z-index: 1000;
}
.dropdown-menu::after {
display: none;
}
.configure .dropdown-header-close,
.nav-login {
display: block;
}
.nav_menu .toggle_aside {
display: inline-block;
}
.aside:target + .close-aside,
.configure .dropdown-target:target ~ .dropdown-close {
background-color: var(--frss-modal-background-color-transparent);
display: block;
font-size: 0;
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
cursor: default;
z-index: 99;
}
.nav_mobile {
display: block;
}
.aside {
position: fixed;
top: 0; bottom: 0;
left: -1px;
width: 0;
overflow: hidden;
z-index: 100;
}
.aside:target,
.reader .aside:target {
width: 90%;
height: 100vh;
}
.aside_feed .configure-feeds {
margin-top: 10px;
}
.aside_feed .tree-folder-items .feed .favicon {
margin: 0 0.5rem 0 0;
padding: 0;
}
.flux_header .item.website {
width: 40px;
}
.flux:not(.current):hover .item.title {
position: relative;
width: auto;
white-space: nowrap;
top: 0;
}
.content header,
.content .text,
.content footer {
padding: 1rem;
}
table {
font-size: 0.9rem;
}
th, td {
padding: 0.25rem;
}
.notification {
padding: 0.75rem;
top: 0;
left: 0;
right: 0;
}
#nav_entries {
width: 100%;
}
#panel {
top: 0; bottom: 0;
left: 0; right: 0;
position: relative;
height: calc(100vh - 3.5rem);
}
#slider.active:target {
width: 100%;
}
#close-slider img {
display: initial;
}
#slider.active:target #close-slider img {
display: initial;
position: initial;
filter: initial;
}
#slider.active:target + #close-slider {
display: none;
}
.stat.half {
grid-column: 1 / span 2;
}
}
/*=== PRINTER */
/*============*/
@media print {
.header, .aside,
.nav_menu, .day,
.flux_header,
.flux_content .bottom,
.pagination,
#stream-footer,
#nav_entries {
display: none;
}
html, body {
background-color: var(--frss-background-color);
font-family: Serif;
}
#global,
.flux_content {
display: block !important;
}
.flux_content .content {
width: 100% !important;
}
.flux_content .content a {
color: var(--frss-font-color-dark);
}
.flux_content .content a::after {
content: " [" attr(href) "] ";
font-style: italic;
}
}
/*=== PREVIEW */
/*===========*/
.preview_controls {
margin-left: auto;
margin-right: auto;
padding: 1rem;
max-width: 1000px;
text-align: center;
background-color: var(--frss-background-color-middle);
border: 1px solid var(--frss-border-color);
border-radius: .25rem;
}
.preview_controls label {
display: inline;
}
.preview_controls label input[type="radio"] {
margin-top: -4px;
}
.preview_controls label + label {
margin-left: 1rem;
}
.drag-drop-marker {
margin: -1px;
}