Files
eleith 3c76effc81
ci/woodpecker/push/cli Pipeline was successful
ci/woodpecker/push/core Pipeline was successful
ci/woodpecker/push/lsp Pipeline was successful
ci/woodpecker/push/web-db Pipeline was successful
ci/woodpecker/push/web-jobs Pipeline was successful
ci/woodpecker/push/web-lsp Pipeline was successful
ci/woodpecker/push/web-pieces Pipeline was successful
ci/woodpecker/push/web-worker Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
[luzzle] Restructure workspace projects into apps/ and packages/ directories
2026-06-01 15:13:04 -07:00

239 lines
3.4 KiB
CSS

/*
Gruvbox-themed styles for raw RSS feed view, with light/dark mode support.
*/
/* 1. Define color palettes on the root XML element, <rss> */
rss {
/* Gruvbox Light (Default) */
--bg-color: #fbf1c7;
--fg-color: #3c3836;
--xml-tag-color: #076678;
--banner-bg: #ebdbb2;
--banner-fg: #3c3836;
--border-color: #d5c4a1;
}
@media (prefers-color-scheme: dark) {
rss {
/* Gruvbox Dark */
--bg-color: #282828;
--fg-color: #ebdbb2;
--xml-tag-color: #83a598;
--banner-bg: #3c3836;
--banner-fg: #ebdbb2;
--border-color: #504945;
}
}
/* 2. Apply variables to styles */
rss {
display: block;
font-family: monospace;
font-size: 1.5em;
line-height: 1.5;
background-color: var(--bg-color);
color: var(--fg-color);
min-height: 100vh;
}
/* The informational banner */
rss::before {
display: block;
width: 100%;
white-space: pre-wrap;
padding: 1em;
background-color: var(--banner-bg);
border-bottom: 1px solid var(--border-color);
content: 'This is an RSS (Really Simple Syndication) file. \00000a\00000a This file is intended for feed readers to fetch once or twice a day. \00000a\00000aFor a more human-friendly experience, please edit the URL from `feed.xml` to `feed.html`';
font-family: sans-serif;
color: var(--banner-fg);
margin-bottom: 2em;
}
/* Make all elements display as block for structure */
channel,
title,
link,
description,
pubDate,
lastBuildDate,
generator,
language,
ttl,
item,
image,
url,
textInput,
name {
display: block;
}
/* Indentation for nesting */
channel {
padding-left: 1em;
}
item,
image,
textInput {
padding-left: 2em;
}
title,
link,
description,
pubDate,
url,
name,
lastBuildDate,
generator,
language,
ttl {
padding-left: 3em;
}
/* Generic tag styling using variables */
channel::before,
channel::after,
item::before,
item::after,
title::before,
title::after,
link::before,
link::after,
description::before,
description::after,
pubDate::before,
pubDate::after,
lastBuildDate::before,
lastBuildDate::after,
generator::before,
generator::after,
language::before,
language::after,
ttl::before,
ttl::after,
image::before,
image::after,
url::before,
url::after,
textInput::before,
textInput::after,
name::before,
name::after {
color: var(--xml-tag-color);
}
/* Specific tag content */
channel::before {
content: '<channel>';
}
channel::after {
content: '</channel>';
}
item::before {
content: '<item>';
}
item::after {
content: '</item>';
}
title::before {
content: '<title>';
}
title::after {
content: '</title>';
}
link::before {
content: '<link>';
}
link::after {
content: '</link>';
}
description::before {
content: '<description>';
}
description::after {
content: '</description>';
}
pubDate::before {
content: '<pubDate>';
}
pubDate::after {
content: '</pubDate>';
}
lastBuildDate::before {
content: '<lastBuildDate>';
}
lastBuildDate::after {
content: '</lastBuildDate>';
}
generator::before {
content: '<generator>';
}
generator::after {
content: '</generator>';
}
language::before {
content: '<language>';
}
language::after {
content: '</language>';
}
ttl::before {
content: '<ttl>';
}
ttl::after {
content: '</ttl>';
}
image::before {
content: '<image>';
}
image::after {
content: '</image>';
}
url::before {
content: '<url>';
}
url::after {
content: '</url>';
}
textInput::before {
content: '<textInput>';
}
textInput::after {
content: '</textInput>';
}
name::before {
content: '<name>';
}
name::after {
content: '</name>';
}