Skip to content

Instantly share code, notes, and snippets.

@azhang
Last active November 3, 2025 23:56
Show Gist options
  • Select an option

  • Save azhang/634089570b4be42d7bec629cbaf3fbf1 to your computer and use it in GitHub Desktop.

Select an option

Save azhang/634089570b4be42d7bec629cbaf3fbf1 to your computer and use it in GitHub Desktop.
/* Promenade Theme for Miniflux - v2
* Converted from NetNewsWire Promenade theme
* Focus: Article reading experience only, don't break list view
*/
:root {
/* Light mode colors */
--header-table-border-color: rgba(0, 0, 0, 0.1);
--header-color: rgba(0, 0, 0, 0.3);
--body-code-color: #666;
--feedlink-color: rgba(255, 0, 0, 0.6);
--article-title-color: #333;
--article-date-color: rgba(0, 0, 0, 0.3);
--table-cell-border-color: lightgray;
--accent-color: rgba(8, 106, 238, 1);
--block-quote-bg: rgb(242, 242, 242);
--block-quote-color: rgb(98, 98, 98);
--code-bg: rgb(242, 242, 242);
--promenade-font: 'Avenir', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
--promenade-title-font: Charter, Georgia, 'Times New Roman', serif;
--promenade-code-font: "SF Mono", Menlo, Monaco, "Courier New", Courier, monospace;
}
@media(prefers-color-scheme: dark) {
:root {
--header-color: rgba(94, 158, 244, 1);
--body-code-color: #b2b2b2;
--feedlink-color: rgba(94, 158, 244, 1);
--article-title-color: #e0e0e0;
--article-date-color: rgba(255, 255, 255, 0.5);
--table-cell-border-color: dimgray;
--accent-color: rgba(94, 158, 244, 1);
--block-quote-bg: rgba(49, 49, 49, 1);
--block-quote-color: rgba(195, 195, 195, 1);
--code-bg: rgba(49, 49, 49, 1);
--header-table-border-color: rgba(255, 255, 255, 0.1);
}
}
/* ===========================================
ARTICLE READING VIEW ONLY
=========================================== */
/* Entry header - center everything for consistent Promenade aesthetic */
.entry-header {
text-align: center !important;
max-width: 44em;
margin-left: auto !important;
margin-right: auto !important;
padding-bottom: 1em;
}
/* Article header when reading a single article */
.entry header h1 {
font-family: var(--promenade-title-font) !important;
color: var(--article-title-color) !important;
text-align: center !important;
max-width: 44em;
margin: 30px auto !important;
}
/* Entry actions (buttons) - center them */
.entry-actions {
text-align: center !important;
margin-bottom: 1em;
}
.entry-actions ul {
display: inline-flex !important;
gap: 1em;
justify-content: center !important;
}
.entry-actions li {
display: inline-block !important;
}
/* Article meta information - centered */
.entry-meta {
max-width: 44em;
margin-left: auto !important;
margin-right: auto !important;
text-align: center !important;
}
/* Entry external link - centered */
.entry-external-link {
text-align: center !important;
font-style: italic;
word-wrap: break-word;
margin: 0.5em 0;
}
/* Entry date - centered */
.entry-date {
text-align: center !important;
font-size: 0.9em;
color: var(--article-date-color);
font-style: italic;
margin-bottom: 1.5em;
}
/* Article content - centered reading experience */
.entry-content {
font-family: var(--promenade-font) !important;
max-width: 44em !important;
margin-left: auto !important;
margin-right: auto !important;
line-height: 1.6em !important;
}
/* Links in article content */
.entry-content a {
color: var(--accent-color) !important;
}
/* Images in articles */
.entry-content img {
border-radius: 4px !important;
}
/* Blockquotes */
.entry-content blockquote {
background: var(--block-quote-bg) !important;
border-radius: 4px !important;
border-left: none !important;
padding: 1rem !important;
margin: 1.5em 0 !important;
color: var(--block-quote-color) !important;
font-size: 0.95rem !important;
line-height: 1.6em !important;
font-family: var(--promenade-font) !important;
}
.entry-content blockquote > blockquote {
padding-left: 1em !important;
padding-top: 0 !important;
padding-bottom: 0 !important;
font-style: italic !important;
}
.entry-content blockquote > *:first-child {
margin-block-start: 0 !important;
}
.entry-content blockquote > *:last-child {
margin-block-end: 0 !important;
}
.entry-content q {
color: var(--block-quote-color) !important;
font-family: var(--promenade-font) !important;
font-style: italic !important;
}
/* Code blocks */
.entry-content pre {
padding: 5px !important;
border-radius: 4px !important;
background: var(--code-bg) !important;
border: none !important;
font-family: var(--promenade-code-font) !important;
}
.entry-content code {
font-family: var(--promenade-code-font) !important;
background: var(--code-bg) !important;
color: var(--body-code-color) !important;
border: none !important;
}
.entry-content p code {
background: var(--code-bg) !important;
padding: 0.2em !important;
border-radius: 4px !important;
}
/* Lists in articles */
.entry-content ul,
.entry-content ol {
line-height: 1.6em !important;
}
.entry-content ul {
list-style-type: disc !important;
}
.entry-content li {
margin-bottom: 0.5em !important;
}
/* Headers in articles */
.entry-content h1,
.entry-content h2,
.entry-content h3,
.entry-content h4,
.entry-content h5,
.entry-content h6 {
font-family: var(--promenade-title-font) !important;
}
/* Tables */
.entry-content table {
border-spacing: 0 !important;
border: 1px solid var(--table-cell-border-color) !important;
}
.entry-content td,
.entry-content th {
border: 1px solid var(--table-cell-border-color) !important;
border-top: none !important;
border-left: none !important;
padding: 5px !important;
}
.entry-content tr td:last-child,
.entry-content tr th:last-child {
border-right: none !important;
}
/* Horizontal rules */
.entry-content hr {
border: none !important;
background-color: var(--table-cell-border-color) !important;
height: 1px !important;
margin-top: 1em !important;
}
/* Figures */
.entry-content figure {
margin: 1em 0 !important;
}
.entry-content figcaption {
font-size: 14px !important;
line-height: 1.3em !important;
text-align: center !important;
}
/* Videos and iframes */
.entry-content video,
.entry-content iframe {
max-width: 100% !important;
border-radius: 4px !important;
}
/* Remove ads and tracking */
.entry-content iframe[src*="feedads"],
.entry-content iframe[src*="doubleclick"],
.entry-content iframe[src*="plusone.google"],
.entry-content a[href*=".ads."],
.entry-content a[href*="feedads"],
.entry-content a[href*="doubleclick"],
.entry-content a[href*="//ads."],
.entry-content img[src*=".ads."],
.entry-content img[src*="//ads."],
.entry-content img[src*="doubleclick"],
.entry-content img[src*="feedads"],
.entry-content img[src*="feedburner"],
.entry-content img[src*="feedblitz"],
.entry-content img[src*="share-buttons"] {
display: none !important;
}
@azhang
Copy link
Author

azhang commented Nov 3, 2025

For left aligned titles:

/* Promenade Theme for Miniflux - v2
 * Converted from NetNewsWire Promenade theme
 * Focus: Article reading experience only, don't break list view
 */

:root {
    /* Light mode colors */
    --header-table-border-color: rgba(0, 0, 0, 0.1);
    --header-color: rgba(0, 0, 0, 0.3);
    --body-code-color: #666;
    --feedlink-color: rgba(255, 0, 0, 0.6);
    --article-title-color: #333;
    --article-date-color: rgba(0, 0, 0, 0.3);
    --table-cell-border-color: lightgray;
    --accent-color: rgba(8, 106, 238, 1);
    --block-quote-bg: rgb(242, 242, 242);
    --block-quote-color: rgb(98, 98, 98);
    --code-bg: rgb(242, 242, 242);
    --promenade-font: 'Avenir', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    --promenade-title-font: Charter, Georgia, 'Times New Roman', serif;
    --promenade-code-font: "SF Mono", Menlo, Monaco, "Courier New", Courier, monospace;
}

@media(prefers-color-scheme: dark) {
    :root {
        --header-color: rgba(94, 158, 244, 1);
        --body-code-color: #b2b2b2;
        --feedlink-color: rgba(94, 158, 244, 1);
        --article-title-color: #e0e0e0;
        --article-date-color: rgba(255, 255, 255, 0.5);
        --table-cell-border-color: dimgray;
        --accent-color: rgba(94, 158, 244, 1);
        --block-quote-bg: rgba(49, 49, 49, 1);
        --block-quote-color: rgba(195, 195, 195, 1);
        --code-bg: rgba(49, 49, 49, 1);
        --header-table-border-color: rgba(255, 255, 255, 0.1);
    }
}

/* ===========================================
   ARTICLE READING VIEW ONLY
   =========================================== */

/* Entry header - left align everything */
.entry-header {
    text-align: left !important;
    max-width: 44em;
    padding-bottom: 1em;
}

/* Article header when reading a single article */
.entry header h1 {
    font-family: var(--promenade-title-font) !important;
    color: var(--article-title-color) !important;
    text-align: left !important;
}

/* Entry actions (buttons) - left aligned */
.entry-actions {
    text-align: left !important;
    margin-bottom: 1em;
}

.entry-actions ul {
    display: flex !important;
    gap: 1em;
    justify-content: flex-start !important;
}

.entry-actions li {
    display: inline-block !important;
}

/* Article meta information - left aligned */
.entry-meta {
    text-align: left !important;
}

/* Entry external link - left aligned */
.entry-external-link {
    text-align: left !important;
    font-style: italic;
    word-wrap: break-word;
    margin: 0.5em 0;
}

/* Entry date - left aligned */
.entry-date {
    text-align: left !important;
    font-size: 0.9em;
    color: var(--article-date-color);
    font-style: italic;
    margin-bottom: 1.5em;
}

/* Article content - centered reading experience */
.entry-content {
    font-family: var(--promenade-font) !important;
    max-width: 44em !important;
    line-height: 1.6em !important;
}

/* Links in article content */
.entry-content a {
    color: var(--accent-color) !important;
}

/* Images in articles */
.entry-content img {
    border-radius: 4px !important;
}

/* Blockquotes */
.entry-content blockquote {
    background: var(--block-quote-bg) !important;
    border-radius: 4px !important;
    border-left: none !important;
    padding: 1rem !important;
    margin: 1.5em 0 !important;
    color: var(--block-quote-color) !important;
    font-size: 0.95rem !important;
    line-height: 1.6em !important;
    font-family: var(--promenade-font) !important;
}

.entry-content blockquote > blockquote {
    padding-left: 1em !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    font-style: italic !important;
}

.entry-content blockquote > *:first-child {
    margin-block-start: 0 !important;
}

.entry-content blockquote > *:last-child {
    margin-block-end: 0 !important;
}

.entry-content q {
    color: var(--block-quote-color) !important;
    font-family: var(--promenade-font) !important;
    font-style: italic !important;
}

/* Code blocks */
.entry-content pre {
    padding: 5px !important;
    border-radius: 4px !important;
    background: var(--code-bg) !important;
    border: none !important;
    font-family: var(--promenade-code-font) !important;
}

.entry-content code {
    font-family: var(--promenade-code-font) !important;
    background: var(--code-bg) !important;
    color: var(--body-code-color) !important;
    border: none !important;
}

.entry-content p code {
    background: var(--code-bg) !important;
    padding: 0.2em !important;
    border-radius: 4px !important;
}

/* Lists in articles */
.entry-content ul,
.entry-content ol {
    line-height: 1.6em !important;
}

.entry-content ul {
    list-style-type: disc !important;
}

.entry-content li {
    margin-bottom: 0.5em !important;
}

/* Headers in articles */
.entry-content h1,
.entry-content h2,
.entry-content h3,
.entry-content h4,
.entry-content h5,
.entry-content h6 {
    font-family: var(--promenade-title-font) !important;
}

/* Tables */
.entry-content table {
    border-spacing: 0 !important;
    border: 1px solid var(--table-cell-border-color) !important;
}

.entry-content td,
.entry-content th {
    border: 1px solid var(--table-cell-border-color) !important;
    border-top: none !important;
    border-left: none !important;
    padding: 5px !important;
}

.entry-content tr td:last-child,
.entry-content tr th:last-child {
    border-right: none !important;
}

/* Horizontal rules */
.entry-content hr {
    border: none !important;
    background-color: var(--table-cell-border-color) !important;
    height: 1px !important;
    margin-top: 1em !important;
}

/* Figures */
.entry-content figure {
    margin: 1em 0 !important;
}

.entry-content figcaption {
    font-size: 14px !important;
    line-height: 1.3em !important;
    text-align: center !important;
}

/* Videos and iframes */
.entry-content video,
.entry-content iframe {
    max-width: 100% !important;
    border-radius: 4px !important;
}

/* Remove ads and tracking */
.entry-content iframe[src*="feedads"],
.entry-content iframe[src*="doubleclick"],
.entry-content iframe[src*="plusone.google"],
.entry-content a[href*=".ads."],
.entry-content a[href*="feedads"],
.entry-content a[href*="doubleclick"],
.entry-content a[href*="//ads."],
.entry-content img[src*=".ads."],
.entry-content img[src*="//ads."],
.entry-content img[src*="doubleclick"],
.entry-content img[src*="feedads"],
.entry-content img[src*="feedburner"],
.entry-content img[src*="feedblitz"],
.entry-content img[src*="share-buttons"] {
    display: none !important;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment