common.css 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434
  1. /* Layout */
  2. * {
  3. margin: 0;
  4. padding: 0;
  5. box-sizing: border-box;
  6. }
  7. html {
  8. -webkit-text-size-adjust: 100%;
  9. text-size-adjust: 100%;
  10. }
  11. body {
  12. font-family: var(--font-family);
  13. text-rendering: optimizeLegibility;
  14. color: var(--body-color);
  15. background: var(--body-background);
  16. }
  17. hr {
  18. border: 0;
  19. height: 0;
  20. border-top: 1px dotted var(--hr-border-color);
  21. padding-bottom: 10px;
  22. }
  23. h1, h2, h3 {
  24. color: var(--title-color);
  25. }
  26. main {
  27. padding-left: 3px;
  28. padding-right: 3px;
  29. margin-bottom: 30px;
  30. }
  31. a {
  32. color: var(--link-color);
  33. }
  34. a:focus {
  35. outline: 0;
  36. color: var(--link-focus-color);
  37. text-decoration: none;
  38. outline: 1px dotted #aaa;
  39. }
  40. a:hover {
  41. color: var(--link-hover-color);
  42. text-decoration: none;
  43. }
  44. .sr-only {
  45. border: 0 !important;
  46. clip: rect(1px, 1px, 1px, 1px) !important;
  47. clip-path: inset(50%) !important;
  48. height: 1px !important;
  49. overflow: hidden !important;
  50. margin: -1px !important;
  51. padding: 0 !important;
  52. position: absolute !important;
  53. width: 1px !important;
  54. white-space: nowrap !important;
  55. }
  56. .skip-to-content-link {
  57. --padding-size: 8px;
  58. --border-size: 1px;
  59. background-color: var(--category-background-color);
  60. color: var(--category-color);
  61. border: var(--border-size) solid var(--category-border-color);
  62. border-radius: 5px;
  63. inset-inline-start: 50%;
  64. padding: var(--padding-size);
  65. position: absolute;
  66. transition: translate 0.3s;
  67. translate: -50% calc(-100% - calc(var(--padding-size) * 2) - calc(var(--border-size) * 2));
  68. }
  69. .skip-to-content-link:focus {
  70. translate: -50% 0;
  71. }
  72. /* Smoother pages transition */
  73. @media not all and (prefers-reduced-motion: reduce) {
  74. @view-transition {
  75. navigation: auto;
  76. }
  77. }
  78. @media (prefers-reduced-motion: reduce) {
  79. @view-transition {
  80. navigation: none;
  81. }
  82. }
  83. /* Header and main menu */
  84. .header {
  85. margin-top: 10px;
  86. margin-bottom: 20px;
  87. }
  88. .header nav {
  89. display: flex;
  90. align-items: stretch;
  91. flex-direction: column;
  92. }
  93. .header nav .logo svg {
  94. padding: 5px;
  95. inline-size: 24px;
  96. block-size: 24px;
  97. }
  98. .header nav .logo[aria-expanded="true"] svg {
  99. rotate: 180deg;
  100. }
  101. .header ul.js-menu-show {
  102. display: initial;
  103. }
  104. .header ul:not(.js-menu-show) {
  105. display: none;
  106. }
  107. .header li {
  108. cursor: pointer;
  109. padding-left: 10px;
  110. line-height: 2.1em;
  111. font-size: 1.2em;
  112. border-bottom: 1px dotted var(--header-list-border-color);
  113. }
  114. .header li :is(a, .logout-button):hover {
  115. color: #888;
  116. }
  117. .header :is(a, summary, .logout-button) {
  118. font-size: 0.9em;
  119. color: var(--header-link-color);
  120. text-decoration: none;
  121. border: none;
  122. font-weight: 400;
  123. }
  124. .header .logout-form {
  125. display: inline;
  126. }
  127. .header .logout-button {
  128. background: none;
  129. padding: 0;
  130. cursor: pointer;
  131. font-family: inherit;
  132. }
  133. .header .active a {
  134. color: var(--header-active-link-color);
  135. /* Note: Firefox on Windows does not show the link as bold if the value is under 600 */
  136. font-weight: 600;
  137. }
  138. .header a:focus {
  139. color: var(--header-link-focus-color);
  140. }
  141. /* Page header and footer*/
  142. .page-header {
  143. padding-inline: 3px;
  144. margin-bottom: 10px;
  145. }
  146. .page-footer {
  147. margin-bottom: 10px;
  148. }
  149. .page-header h1 {
  150. font-weight: 500;
  151. border-bottom: 1px dotted var(--page-header-title-border-color);
  152. font-size: 1.5rem;
  153. }
  154. .page-header h1 a {
  155. text-decoration: none;
  156. color: var(--page-header-title-color);
  157. }
  158. .page-header h1 a:hover,
  159. .page-header h1 a:focus {
  160. color: #666;
  161. }
  162. .page-header li,
  163. .page-footer li {
  164. list-style-type: none;
  165. line-height: 1.8em;
  166. white-space: nowrap;
  167. }
  168. #header-menu .icon,
  169. .page-header ul a .icon {
  170. margin-bottom: 2px;
  171. }
  172. .page-header-action-form {
  173. display: inline-flex;
  174. }
  175. :is(.page-button, .page-link) {
  176. color: var(--link-color);
  177. border: none;
  178. background-color: transparent;
  179. font-size: 1rem;
  180. cursor: pointer;
  181. &:is(:hover, :focus) {
  182. color: var(--link-hover-color);
  183. }
  184. }
  185. .page-button:active {
  186. translate: 1px 1px;
  187. }
  188. /* Logo */
  189. .logo {
  190. text-align: center;
  191. display: flex;
  192. justify-content: center;
  193. }
  194. .logo a {
  195. color: var(--logo-color);
  196. letter-spacing: 1px;
  197. display: flex;
  198. align-items: center;
  199. }
  200. .logo a:hover {
  201. color: #339966;
  202. }
  203. .logo a span {
  204. color: #339966;
  205. }
  206. .logo a:hover span {
  207. color: var(--logo-hover-color-span);
  208. }
  209. /* PWA prompt */
  210. #prompt-home-screen {
  211. display: none;
  212. position: fixed;
  213. bottom: 0;
  214. right: 0;
  215. width: 100%;
  216. text-align: center;
  217. background: #000;
  218. opacity: 85%;
  219. }
  220. #btn-add-to-home-screen {
  221. text-decoration: none;
  222. height: 30px;
  223. color: #fff;
  224. background-color: transparent;
  225. border: 0;
  226. }
  227. #btn-add-to-home-screen:hover {
  228. color: red;
  229. }
  230. /* Notification - "Toast" */
  231. #toast-wrapper {
  232. visibility: hidden;
  233. opacity: 0;
  234. position: fixed;
  235. left: 0;
  236. bottom: 10%;
  237. color: #fff;
  238. width: 100%;
  239. text-align: center;
  240. }
  241. #toast-msg {
  242. background-color: rgba(0,0,0,0.7);
  243. padding-bottom: 4px;
  244. padding-left: 4px;
  245. padding-right: 5px;
  246. border-radius: 5px;
  247. }
  248. .toast-animate {
  249. animation: toastKeyFrames 2s;
  250. }
  251. @keyframes toastKeyFrames {
  252. 0% {visibility: hidden; opacity: 0;}
  253. 25% {visibility: visible; opacity: 1; z-index: 9999}
  254. 50% {visibility: visible; opacity: 1; z-index: 9999}
  255. 75% {visibility: visible; opacity: 1; z-index: 9999}
  256. 100% {visibility: hidden; opacity: 0; z-index: 0}
  257. }
  258. /* Hide the logo when there is not enough space to display menus when using languages more verbose than English */
  259. @media (min-width: 620px) and (max-width: 850px) {
  260. .logo {
  261. display: none;
  262. }
  263. }
  264. @media (min-width: 850px) {
  265. .logo {
  266. padding-right: 8px;
  267. }
  268. }
  269. @media (min-width: 620px) {
  270. body {
  271. margin: auto;
  272. max-width: 900px; /* Wide enough to display the logo and the menu one a single row for any languages */
  273. }
  274. .header {
  275. padding-left: 3px;
  276. }
  277. .header li {
  278. display: inline-block;
  279. padding: 0 5px 0 0;
  280. line-height: normal;
  281. border: none;
  282. font-size: 1.0em;
  283. }
  284. .header nav {
  285. flex-direction: row;
  286. }
  287. .header .logo svg {
  288. display: none;
  289. }
  290. .header ul:not(.js-menu-show), .header ul.js-menu-show {
  291. display: revert;
  292. }
  293. .header :is(a, summary):hover {
  294. color: var(--header-link-hover-color);
  295. }
  296. .page-header li,
  297. .page-footer li {
  298. display: inline;
  299. padding-right: 15px;
  300. }
  301. .pagination-backward,
  302. .pagination-forward {
  303. display: flex;
  304. }
  305. }
  306. /* Tables */
  307. table {
  308. width: 100%;
  309. border-collapse: collapse;
  310. }
  311. table, th, td {
  312. border: 1px solid var(--table-border-color);
  313. }
  314. th, td {
  315. padding: 5px;
  316. text-align: left;
  317. }
  318. td {
  319. vertical-align: top;
  320. }
  321. th {
  322. background: var(--table-th-background);
  323. color: var(--table-th-color);
  324. font-weight: 400;
  325. }
  326. tr:hover {
  327. color: var(--table-tr-hover-color);
  328. background-color: var(--table-tr-hover-background-color);
  329. }
  330. .column-40 {
  331. width: 40%;
  332. }
  333. .column-25 {
  334. width: 25%;
  335. }
  336. .column-20 {
  337. width: 20%;
  338. }
  339. /* Forms */
  340. fieldset {
  341. border: 1px dotted #ddd;
  342. padding: 8px;
  343. margin-bottom: 20px;
  344. }
  345. legend {
  346. font-weight: 500;
  347. padding-left: 3px;
  348. padding-right: 3px;
  349. }
  350. label {
  351. cursor: pointer;
  352. display: block;
  353. }
  354. .radio-group {
  355. line-height: 1.9em;
  356. }
  357. div.radio-group label {
  358. display: inline-block;
  359. }
  360. select {
  361. margin-bottom: 15px;
  362. }
  363. input[type="search"],
  364. input[type="url"],
  365. input[type="password"],
  366. input[type="text"],
  367. input[type="number"] {
  368. color: var(--input-color);
  369. background: var(--input-background);
  370. border: var(--input-border);
  371. padding: 3px;
  372. line-height: 20px;
  373. width: 250px;
  374. font-size: 99%;
  375. margin-top: 5px;
  376. margin-bottom: 10px;;
  377. appearance: none;
  378. }
  379. input[type="search"]:focus,
  380. input[type="url"]:focus,
  381. input[type="password"]:focus,
  382. input[type="text"]:focus,
  383. input[type="number"]:focus {
  384. color: var(--input-focus-color);
  385. border-color: var(--input-focus-border-color);
  386. outline: 0;
  387. box-shadow: var(--input-focus-box-shadow);
  388. }
  389. #form-entries-per-page {
  390. max-width: 80px;
  391. }
  392. input[type="checkbox"] {
  393. margin-top: 10px;
  394. margin-bottom: 10px;
  395. }
  396. .search-form {
  397. display: flex;
  398. flex-direction: column;
  399. align-items: flex-start;
  400. gap: 6px;
  401. }
  402. .search-input-row {
  403. display: flex;
  404. align-items: center;
  405. gap: 12px;
  406. }
  407. .search-input-row input[type="search"] {
  408. margin: 0;
  409. }
  410. .search-input-row .button {
  411. margin: 0;
  412. }
  413. .search-filter {
  414. display: inline-flex;
  415. align-items: center;
  416. gap: 6px;
  417. margin: 0;
  418. }
  419. .search-filter input[type="checkbox"] {
  420. margin: 0;
  421. }
  422. textarea {
  423. width: 350px;
  424. color: var(--input-color);
  425. background: var(--input-background);
  426. border: var(--input-border);
  427. padding: 3px;
  428. margin-bottom: 10px;
  429. margin-top: 5px;
  430. appearance: none;
  431. }
  432. textarea:focus {
  433. color: var(--input-focus-color);
  434. border-color: var(--input-focus-border-color);
  435. outline: 0;
  436. box-shadow: var(--input-focus-box-shadow);
  437. }
  438. input::placeholder {
  439. color: var(--input-placeholder-color);
  440. padding-top: 2px;
  441. }
  442. /* Rule editor fields (scraper, content/URL rewrite, block/keep filters) are
  443. essentially code, so render them monospaced and the same width as the filter
  444. textareas. */
  445. input.code-input,
  446. textarea.code-input {
  447. width: 350px;
  448. max-width: 100%;
  449. font-family: ui-monospace, Consolas, monospace;
  450. /* Match the page's base text size; a bare <textarea> otherwise falls back to
  451. the small UA monospace default. */
  452. font-size: 1rem;
  453. }
  454. textarea.code-input {
  455. resize: both;
  456. }
  457. /* Short, usually single-line rules: start compact and grow to fit their
  458. content. field-sizing is ignored by older browsers, which fall back to the
  459. rows attribute. */
  460. textarea.code-input-autogrow {
  461. field-sizing: content;
  462. min-height: 3.4em;
  463. }
  464. .form-label-row {
  465. display: flex;
  466. }
  467. .form-help {
  468. font-size: 0.9em;
  469. color: brown;
  470. margin-bottom: 15px;
  471. }
  472. .form-section {
  473. border-left: 2px dotted #ddd;
  474. padding-left: 20px;
  475. margin-left: 10px;
  476. }
  477. details > summary {
  478. outline: none;
  479. cursor: pointer;
  480. }
  481. .details-content {
  482. margin-top: 15px;
  483. }
  484. /* Buttons */
  485. a.button {
  486. text-decoration: none;
  487. }
  488. .button {
  489. display: inline-block;
  490. appearance: none;
  491. font-size: 1.1em;
  492. cursor: pointer;
  493. padding: 3px 10px;
  494. border: 1px solid;
  495. border-radius: unset;
  496. }
  497. .button-primary {
  498. border-color: var(--button-primary-border-color);
  499. background: var(--button-primary-background);
  500. color: var(--button-primary-color);
  501. }
  502. a.button-primary:hover,
  503. a.button-primary:focus,
  504. .button-primary:hover,
  505. .button-primary:focus {
  506. border-color: var(--button-primary-focus-border-color);
  507. background: var(--button-primary-focus-background);
  508. color: var(--button-primary-color);
  509. }
  510. .button-danger {
  511. border-color: #b0281a;
  512. background: #d14836;
  513. color: #fff;
  514. }
  515. .button-danger:hover,
  516. .button-danger:focus {
  517. color: #fff;
  518. background: #c53727;
  519. }
  520. .button:disabled {
  521. color: #ccc;
  522. background: #f7f7f7;
  523. border-color: #ccc;
  524. }
  525. .buttons {
  526. margin-top: 10px;
  527. margin-bottom: 20px;
  528. }
  529. fieldset .buttons {
  530. margin-bottom: 0;
  531. }
  532. /* Alerts */
  533. .alert {
  534. padding: 8px 35px 8px 14px;
  535. margin-bottom: 20px;
  536. color: var(--alert-color);
  537. background-color: var(--alert-background-color);
  538. border: 1px solid var(--alert-border-color);
  539. border-radius: 4px;
  540. overflow: auto;
  541. }
  542. .alert h3 {
  543. margin-top: 0;
  544. margin-bottom: 15px;
  545. }
  546. .alert-success {
  547. color: var(--alert-success-color);
  548. background-color: var(--alert-success-background-color);
  549. border-color: var(--alert-success-border-color);
  550. }
  551. .alert-error {
  552. color: var(--alert-error-color);
  553. background-color: var(--alert-error-background-color);
  554. border-color: var(--alert-error-border-color);
  555. }
  556. .alert-error h3,
  557. .alert-error a {
  558. color: var(--alert-error-color);
  559. }
  560. .alert-info {
  561. color: var(--alert-info-color);
  562. background-color: var(--alert-info-background-color);
  563. border-color: var(--alert-info-border-color);
  564. }
  565. /* Panel */
  566. .panel {
  567. color: var(--panel-color);
  568. background-color: var(--panel-background);
  569. border: 1px solid var(--panel-border-color);
  570. border-radius: 5px;
  571. padding: 10px;
  572. margin-bottom: 15px;
  573. }
  574. .panel h3 {
  575. font-weight: 500;
  576. margin-top: 0;
  577. margin-bottom: 20px;
  578. }
  579. .panel ul {
  580. margin-left: 30px;
  581. }
  582. /* Modals */
  583. template {
  584. display: none;
  585. }
  586. dialog {
  587. max-height: none;
  588. height: 100vh;
  589. border: none;
  590. padding: 1%;
  591. }
  592. .btn-close-modal {
  593. position: absolute;
  594. top: 0;
  595. right: 0;
  596. font-size: 1.7em;
  597. color: #ccc;
  598. padding:0 .2em;
  599. margin: 10px;
  600. text-decoration: none;
  601. background-color: transparent;
  602. border: none;
  603. }
  604. .btn-close-modal:hover {
  605. color: #999;
  606. }
  607. /* Keyboard Shortcuts */
  608. .keyboard-shortcuts li {
  609. margin-left: 25px;
  610. list-style-type: square;
  611. color: var(--keyboard-shortcuts-li-color);
  612. font-size: 0.95em;
  613. line-height: 1.45em;
  614. }
  615. .keyboard-shortcuts p {
  616. line-height: 1.9em;
  617. }
  618. /* Login form */
  619. .login-form {
  620. margin: 50px auto 0;
  621. max-width: 300px;
  622. }
  623. .webauthn {
  624. margin-bottom: 20px;
  625. }
  626. /* Counters */
  627. .unread-counter-wrapper,
  628. .error-feeds-counter-wrapper {
  629. font-size: 0.9em;
  630. font-weight: 300;
  631. color: var(--counter-color);
  632. }
  633. /* Category label */
  634. .category {
  635. font-size: 0.75em;
  636. background-color: var(--category-background-color);
  637. border: 1px solid var(--category-border-color);
  638. border-radius: 5px;
  639. margin-left: 0.25em;
  640. padding: 1px 0.4em 1px 0.4em;
  641. white-space: nowrap;
  642. color: var(--category-color);
  643. }
  644. .category a {
  645. color: var(--category-link-color);
  646. text-decoration: none;
  647. }
  648. .category a:hover,
  649. .category a:focus {
  650. color: var(--category-link-hover-color);
  651. }
  652. .category-item-total {
  653. color: var(--body-color);
  654. }
  655. /* Pagination */
  656. .pagination {
  657. font-size: 1.1em;
  658. display: flex;
  659. align-items: center;
  660. justify-content: space-between;
  661. }
  662. .pagination-top {
  663. padding-bottom: 8px;
  664. }
  665. .pagination-bottom {
  666. padding-top: 8px;
  667. }
  668. .pagination-entry-top {
  669. padding-top: 8px;
  670. }
  671. .pagination-entry-bottom {
  672. border-top: 1px dotted var(--pagination-border-color);
  673. margin-bottom: 15px;
  674. margin-top: 50px;
  675. padding-top: 8px;
  676. }
  677. .pagination > div.pagination-backward > div {
  678. padding-right: 15px;
  679. }
  680. .pagination > div.pagination-forward > div {
  681. padding-left: 15px;
  682. }
  683. .pagination-next, .pagination-last {
  684. text-align: right;
  685. }
  686. .pagination-next:after {
  687. content: " ›";
  688. }
  689. .pagination-last:after {
  690. content: " »";
  691. }
  692. .pagination-prev:before {
  693. content: "‹ ";
  694. }
  695. .pagination-first:before {
  696. content: "« ";
  697. }
  698. .pagination a {
  699. color: var(--pagination-link-color);
  700. }
  701. .pagination a:hover,
  702. .pagination a:focus {
  703. text-decoration: none;
  704. }
  705. /* List view */
  706. .item {
  707. border: 1px dotted var(--item-border-color);
  708. margin-bottom: 20px;
  709. padding: var(--item-padding);
  710. overflow: hidden;
  711. }
  712. .entry-item,
  713. .feed-item {
  714. content-visibility: auto;
  715. contain-intrinsic-size: auto 100px;
  716. }
  717. .item.current-item {
  718. border: var(--current-item-border-width) solid var(--current-item-border-color);
  719. padding: 3px;
  720. box-shadow: var(--current-item-box-shadow);
  721. }
  722. .item.current-item:focus {
  723. outline: none;
  724. }
  725. .item-header {
  726. font-size: 1rem;
  727. }
  728. .item-header span {
  729. font-weight: normal;
  730. display: inline-block;
  731. }
  732. .item-title {
  733. font-size: 1rem;
  734. margin: 0;
  735. display: inline;
  736. }
  737. .item-title a {
  738. text-decoration: none;
  739. font-weight: var(--item-title-link-font-weight);
  740. font-size: inherit;
  741. }
  742. .feed-entries-counter {
  743. display: inline-flex;
  744. gap: 2px;
  745. align-items: center;
  746. }
  747. .item-status-read .item-title a {
  748. color: var(--item-status-read-title-link-color);
  749. }
  750. .item-meta {
  751. color: var(--item-meta-focus-color);
  752. font-size: 0.8em;
  753. }
  754. .item-meta a {
  755. color: #777;
  756. text-decoration: none;
  757. }
  758. .item-meta :is(a:is(:focus, :hover), button:is(:focus, :hover)) {
  759. color: #333;
  760. }
  761. .item-meta ul {
  762. margin-top: 5px;
  763. }
  764. .item-meta li {
  765. display: inline-block;
  766. }
  767. .item-meta-info {
  768. font-size: 0.85em;
  769. }
  770. .item-meta-info li:not(:last-child):after {
  771. content: "|";
  772. color: var(--item-meta-li-color);
  773. }
  774. .item-meta-icons li {
  775. margin-right: 8px;
  776. margin-top: 4px;
  777. }
  778. .item-meta-icons li:last-child {
  779. margin-right: 0;
  780. }
  781. .item-meta-icons li :is(a, button) {
  782. color: #777;
  783. text-decoration: none;
  784. font-size: 0.8rem;
  785. border: none;
  786. background-color: transparent;
  787. cursor: pointer;
  788. }
  789. .item-meta-icons li form {
  790. display: contents;
  791. }
  792. .item-meta-icons a span {
  793. text-decoration: underline;
  794. }
  795. .item-meta-icons button:active {
  796. translate: 1px 1px;
  797. }
  798. .items {
  799. overflow-x: hidden;
  800. touch-action: pan-y;
  801. }
  802. .hide-read-items .item-status-read:not(.current-item) {
  803. display: none;
  804. }
  805. .entry-swipe {
  806. transition-property: transform;
  807. transition-duration: 0s;
  808. transition-timing-function: ease-out;
  809. }
  810. /* Feeds list */
  811. article.feed-parsing-error {
  812. background-color: var(--feed-parsing-error-background-color);
  813. border-style: var(--feed-parsing-error-border-style);
  814. border-color: var(--feed-parsing-error-border-color);
  815. }
  816. article.feed-has-unread {
  817. background-color: var(--feed-has-unread-background-color);
  818. border-style: var(--feed-has-unread-border-style);
  819. border-color: var(--feed-has-unread-border-color);
  820. }
  821. .parsing-error {
  822. font-size: 0.85em;
  823. margin-top: 2px;
  824. color: var(--parsing-error-color);
  825. }
  826. .parsing-error-count {
  827. cursor: pointer;
  828. }
  829. /* Categories list */
  830. article.category-has-unread {
  831. background-color: var(--category-has-unread-background-color);
  832. border-style: var(--category-has-unread-border-style);
  833. border-color: var(--category-has-unread-border-color);
  834. }
  835. /* Icons */
  836. .icon,
  837. .icon-label {
  838. vertical-align: text-bottom;
  839. display: inline-block;
  840. margin-right: 2px;
  841. }
  842. .icon {
  843. width: 16px;
  844. height: 16px;
  845. }
  846. /* Entry view */
  847. .entry header {
  848. padding-bottom: 5px;
  849. padding-inline: 5px;
  850. border-bottom: 1px dotted var(--entry-header-border-color);
  851. }
  852. .entry header h1 {
  853. font-size: 2.0em;
  854. line-height: 1.25em;
  855. margin: 5px 0 30px 0;
  856. overflow-wrap: break-word;
  857. }
  858. .entry header h1 a {
  859. text-decoration: none;
  860. color: var(--entry-header-title-link-color);
  861. }
  862. .entry header h1 a:hover,
  863. .entry header h1 a:focus {
  864. color: #666;
  865. }
  866. .entry-actions {
  867. margin-bottom: 20px;
  868. }
  869. .entry-actions a span {
  870. text-decoration: underline;
  871. }
  872. .entry-actions li {
  873. display: inline-block;
  874. margin-right: 15px;
  875. line-height: 1.7em;
  876. }
  877. .entry-actions .icon-label {
  878. vertical-align: middle;
  879. }
  880. .entry-meta {
  881. font-size: 0.95em;
  882. margin: 0 0 20px;
  883. color: #666;
  884. overflow-wrap: break-word;
  885. }
  886. .entry-tags {
  887. margin-top: 20px;
  888. margin-bottom: 20px;
  889. }
  890. .entry-tags strong {
  891. font-weight: 600;
  892. }
  893. .entry-tags-list {
  894. display: inline;
  895. margin: 0;
  896. padding: 0;
  897. }
  898. .entry-tags-list li {
  899. display: inline-block;
  900. }
  901. .entry-tags-list li::after {
  902. content: ", ";
  903. }
  904. .entry-tags-list li:last-child::after {
  905. content: "";
  906. }
  907. .entry-additional-tags {
  908. font-size: 0.8em;
  909. margin-top: 10px;
  910. }
  911. .entry-website img {
  912. vertical-align: top;
  913. }
  914. .entry-website a {
  915. color: #666;
  916. vertical-align: top;
  917. text-decoration: none;
  918. }
  919. .entry-website a:hover,
  920. .entry-website a:focus {
  921. text-decoration: underline;
  922. }
  923. .entry-date {
  924. font-size: 0.65em;
  925. font-style: italic;
  926. color: #555;
  927. }
  928. .entry-content {
  929. padding-top: 15px;
  930. font-size: 1.2em;
  931. font-weight: var(--entry-content-font-weight);
  932. font-family: var(--entry-content-font-family);
  933. color: var(--entry-content-color);
  934. line-height: 1.4em;
  935. overflow-wrap: break-word;
  936. }
  937. .entry-content h1, h2, h3, h4, h5, h6 {
  938. margin-top: 15px;
  939. margin-bottom: 10px;
  940. }
  941. .entry-content h1,
  942. .entry-content h2,
  943. .entry-content h3 {
  944. line-height: 1.2;
  945. }
  946. .entry-content iframe,
  947. .entry-content video,
  948. .entry-content img {
  949. max-width: 100%;
  950. }
  951. .entry-content iframe {
  952. display: block;
  953. }
  954. .entry-content img {
  955. height: auto;
  956. }
  957. .entry-content figure {
  958. margin-top: 15px;
  959. margin-bottom: 15px;
  960. }
  961. .entry-content figure img {
  962. border: 1px solid #000;
  963. }
  964. .entry-content figcaption {
  965. font-size: 0.75em;
  966. text-transform: uppercase;
  967. color: #777;
  968. }
  969. .entry-content p {
  970. margin-top: 10px;
  971. margin-bottom: 15px;
  972. }
  973. .entry-content a {
  974. overflow-wrap: break-word;
  975. }
  976. .entry-content a:visited {
  977. color: var(--link-visited-color);
  978. }
  979. .entry-content dt {
  980. font-weight: 500;
  981. margin-top: 15px;
  982. color: #555;
  983. }
  984. .entry-content dd {
  985. margin-left: 15px;
  986. margin-top: 5px;
  987. padding-left: 20px;
  988. border-left: 3px solid #ddd;
  989. color: #777;
  990. font-weight: 300;
  991. line-height: 1.4em;
  992. }
  993. .entry-content blockquote {
  994. border-left: 4px solid #ddd;
  995. padding-left: 25px;
  996. margin-left: 20px;
  997. margin-top: 20px;
  998. margin-bottom: 20px;
  999. line-height: 1.4em;
  1000. font-family: var(--entry-content-quote-font-family);
  1001. }
  1002. .entry-content q {
  1003. color: var(--entry-content-quote-color);
  1004. font-family: var(--entry-content-quote-font-family);
  1005. font-style: italic;
  1006. }
  1007. .entry-content q:before {
  1008. content: "“";
  1009. }
  1010. .entry-content q:after {
  1011. content: "”";
  1012. }
  1013. .entry-content pre {
  1014. padding: 5px;
  1015. overflow: auto;
  1016. overflow-wrap: initial;
  1017. border-width: 1px;
  1018. border-style: solid;
  1019. }
  1020. .entry-content pre,
  1021. .entry-content code {
  1022. color: var(--entry-content-code-color);
  1023. background: var(--entry-content-code-background);
  1024. border-color: var(--entry-content-code-border-color);
  1025. }
  1026. .entry-content table {
  1027. max-width: 100%;
  1028. }
  1029. .entry-content ul,
  1030. .entry-content ol {
  1031. margin-left: 30px;
  1032. margin-top: 15px;
  1033. margin-bottom: 15px;
  1034. }
  1035. .entry-content li ul,
  1036. .entry-content li ol {
  1037. margin-top: 0;
  1038. margin-bottom: 0;
  1039. }
  1040. .entry-content ul {
  1041. list-style-type: square;
  1042. }
  1043. .entry-content strong {
  1044. font-weight: 600;
  1045. }
  1046. .entry-content sub,
  1047. .entry-content sup {
  1048. font-size: 75%;
  1049. line-height: 0;
  1050. position: relative;
  1051. vertical-align: baseline;
  1052. }
  1053. .entry-content sub {
  1054. bottom: -0.25em;
  1055. }
  1056. .entry-content sup {
  1057. top: -0.5em;
  1058. }
  1059. .entry-content abbr {
  1060. cursor: pointer;
  1061. text-decoration: none;
  1062. border-bottom: 1px dashed var(--entry-content-abbr-border-color);
  1063. }
  1064. .entry-content aside {
  1065. font-size: 0.9em;
  1066. padding: 1ch;
  1067. margin-bottom: 15px;
  1068. font-style: italic;
  1069. border: dotted var(--entry-content-aside-border-color) 2px;
  1070. }
  1071. details.entry-enclosures {
  1072. margin-top: 25px;
  1073. }
  1074. .entry-enclosures summary {
  1075. font-weight: 500;
  1076. font-size: 1.2em;
  1077. }
  1078. .entry-enclosure {
  1079. border: 1px dotted var(--entry-enclosure-border-color);
  1080. padding: 5px;
  1081. margin-top: 10px;
  1082. max-width: 100%;
  1083. }
  1084. .entry-enclosure-download {
  1085. font-size: 0.85em;
  1086. overflow-wrap: break-word;
  1087. }
  1088. .enclosure-video video,
  1089. .enclosure-image img {
  1090. max-width: 100%;
  1091. }
  1092. .entry-external-link {
  1093. font-size: 0.8em;
  1094. margin-top: 10px;
  1095. margin-bottom: 10px;
  1096. word-wrap: break-word;
  1097. }
  1098. /* Confirmation */
  1099. .confirm {
  1100. font-weight: 500;
  1101. color: #ed2d04;
  1102. }
  1103. .confirm button {
  1104. color: #ed2d04;
  1105. border: none;
  1106. background-color: transparent;
  1107. cursor: pointer;
  1108. font-size: inherit;
  1109. }
  1110. .loading {
  1111. font-style: italic;
  1112. }
  1113. /* Bookmarlet */
  1114. .bookmarklet {
  1115. border: 1px dashed #ccc;
  1116. border-radius: 5px;
  1117. padding: 15px;
  1118. margin: 15px;
  1119. text-align: center;
  1120. }
  1121. .bookmarklet a {
  1122. font-weight: 600;
  1123. text-decoration: none;
  1124. font-size: 1.2em;
  1125. }
  1126. .disabled {
  1127. opacity: 20%;
  1128. }
  1129. audio, video {
  1130. width: 100%;
  1131. }
  1132. .media-controls{
  1133. font-size: .9em;
  1134. display: flex;
  1135. flex-wrap: wrap;
  1136. }
  1137. .media-controls .media-control-label{
  1138. line-height: 1em;
  1139. }
  1140. .media-controls>div{
  1141. display: flex;
  1142. flex-wrap: nowrap;
  1143. justify-content:center;
  1144. min-width: 50%;
  1145. align-items: center;
  1146. }
  1147. .media-controls>div>*{
  1148. padding-left:12px;
  1149. }
  1150. .media-controls>div>*:first-child{
  1151. padding-left:0;
  1152. }
  1153. .media-controls span.speed-indicator{
  1154. /*monospace to ensure constant width even when value change. JS ensure the value is always on 4 characters (in most cases)
  1155. This reduce ui flickering due to element moving around a bit
  1156. */
  1157. font-family: monospace;
  1158. }
  1159. .integration-form summary {
  1160. font-weight: 700;
  1161. }
  1162. .integration-form details {
  1163. margin-bottom: 15px;
  1164. }
  1165. .integration-form details .form-section {
  1166. margin-top: 15px;
  1167. }
  1168. .hidden {
  1169. display: none;
  1170. }
  1171. footer {
  1172. margin: 1em auto;
  1173. }
  1174. footer .elevator {
  1175. display: block;
  1176. width: fit-content;
  1177. margin: 0 auto;
  1178. }
  1179. .pagination-top .elevator,
  1180. .pagination-entry-top .elevator {
  1181. display: none;
  1182. }