Skip to content

Email: callout card accent background makes links invisible (accent color overrides white) #27317

@andrewklingelhofer

Description

@andrewklingelhofer

Bug

When using a callout card with the accent background option containing a link, the link text becomes invisible in newsletter emails. The editor and web preview render correctly (white link text on accent background), but in email the link text color matches the accent background color, creating zero contrast.

Steps to reproduce

  1. Set site accent color to a saturated color (e.g. #E87722)
  2. Create a post with a callout card using the accent background option
  3. Add a link inside the callout card text
  4. Send as newsletter email (or preview email)

Expected behavior

Link text should be white on the accent background in emails, matching the editor and web preview.

Actual behavior

Link text is the same color as the accent background, making it invisible/unreadable in email clients.

Root cause

In ghost/core/core/server/services/email-rendering/partials/card-styles.hbs, the callout card accent link rule (line ~317) does not use !important:

.kg-callout-card-accent a {
    color: #fff;
}

The global link rule in content-styles.hbs (line ~200) sets all links to the accent color:

a {
    color: {{accentColor}};
    text-decoration: none;
}

After CSS inlining for email, the accent color appears to override the white color despite lower specificity, likely due to inlining order or the inliner flattening specificity.

Suggested fix

Add !important to the callout card accent link rule in card-styles.hbs:

.kg-callout-card-accent a {
    color: #fff !important;
}

This is consistent with how CTA card link colors already use !important in the same file (e.g. .kg-cta-link-accent .kg-cta-text a { color: {{accentColor}} !important; }).

Environment

  • Ghost(Pro), v6.24+
  • Issue appeared recently (late March / early April 2026)
  • Observed in Gmail; likely affects all email clients

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs:triage[triage] this needs to be triaged by the Ghost team

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions