- Rewrite .interface-design/system.md with comprehensive patterns - Add implementation plan for design system compliance fixes Confab-Link: http://localhost:8080/sessions/0ec83454-d346-4329-8aaf-6b12139bf596
30 KiB
Design System Compliance Fix — Implementation Plan
For Claude: REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task.
Goal: Fix all 368 design system violations found by the comprehensive audit across ~80 Nunjucks template files and CSS.
Architecture: Fix CSS-level component classes first (highest leverage — one fix eliminates violations across many templates), then fix templates by violation category, grouped by file similarity. Each task handles one violation category across a batch of related files.
Tech Stack: Nunjucks templates, Tailwind CSS, Alpine.js
Important context:
- Source of truth:
/home/rick/code/indiekit-dev/indiekit-eleventy-theme/(this repo is a Git submodule) - Design system:
.interface-design/system.md - No test suite — verification is visual via
cloudron restartafter deployment - CSS focus-visible base layer already exists in
css/tailwind.css:117-142,498-506— most "missing focus:ring-2" violations are false positives since the CSS handles focus-visible globally onbutton,a,input,textarea,select. Only elements usingfocus:outline-none(which suppresses the global style) actually need inlinefocus:ring-2. - CSS
timebase rule already sets monospace font-family on all<time>elements (css/tailwind.css:112-115,571-576). Only<span>elements rendering dates via Alpine.jsx-text="formatDate()"need explicitfont-monoclass.
Task Overview
| Task | Category | Files | Violations Fixed |
|---|---|---|---|
| 1 | CSS component class fixes | css/tailwind.css |
~30 (cascading to many templates) |
| 2 | Cards missing shadow-sm |
25 files | ~69 |
| 3 | Wrong domain colors | 8 files | ~33 |
| 4 | Date font-mono on <span> elements |
10 files | ~20 |
| 5 | Date font-mono on <time> elements (class consistency) |
20 files | ~55 |
| 6 | Hover violations | 8 files | ~14 |
| 7 | Border radius violations | 10 files | ~12 |
| 8 | Dark mode violations | 8 files | ~10 |
| 9 | Depth violations (shadow levels) | 6 files | ~14 |
| 10 | Transition violations | 6 files | ~11 |
| 11 | Inline focus:ring-2 cleanup |
7 files | ~20 |
| 12 | Remaining button/focus violations | 15 files | ~80 |
Task 1: CSS Component Class Fixes (tailwind.css)
Files:
- Modify:
css/tailwind.css
These CSS-level fixes cascade to many templates automatically.
Step 1: Fix .widget-title weight
Line 398: Change font-bold to font-semibold per system.md.
/* Before */
.widget-title {
@apply font-bold text-lg mb-4;
}
/* After */
.widget-title {
@apply font-semibold text-lg mb-4;
}
Step 2: Fix .repo-card missing shadow-sm
Line 361: Add shadow-sm.
/* Before */
.repo-card {
@apply p-4 border border-surface-200 dark:border-surface-700 rounded-lg;
}
/* After */
.repo-card {
@apply p-4 border border-surface-200 dark:border-surface-700 rounded-lg shadow-sm;
}
Step 3: Fix .fab-menu-item border radius
Line 551: Change rounded-xl to rounded-lg.
/* Before */
.fab-menu-item {
@apply ... rounded-xl bg-surface-50 ... shadow-md ...;
}
/* After */
.fab-menu-item {
@apply ... rounded-lg bg-surface-50 ... shadow-sm ...;
}
Also change shadow-md hover:shadow-lg to shadow-sm (system says cards/menu items = shadow-sm).
Step 4: Fix .p-category hover border
Line 335: Change hover:border-surface-400 dark:hover:border-surface-500 to hover:border-accent-400 dark:hover:border-accent-600.
/* Before */
.p-category {
@apply ... hover:border-surface-400 dark:hover:border-surface-500 transition-colors;
}
/* After */
.p-category {
@apply ... hover:border-accent-400 dark:hover:border-accent-600 transition-colors;
}
Step 5: Fix .pagination-link — add transition-colors explicitly
Line 490: The class already has transition-colors. Verify it also covers focus states adequately via the base CSS layer. No change needed if base layer covers it.
Step 6: Remove .widget mb-4
Line 394: Remove mb-4 since widgets are inside space-y-* containers which handle spacing. The mb-4 conflicts with container spacing.
/* Before */
.widget {
@apply p-4 mb-4 bg-surface-50 dark:bg-surface-800 rounded-lg border border-surface-200 dark:border-surface-700 shadow-sm overflow-hidden;
}
/* After */
.widget {
@apply p-4 bg-surface-50 dark:bg-surface-800 rounded-lg border border-surface-200 dark:border-surface-700 shadow-sm overflow-hidden;
}
Step 7: Consolidate duplicate focus-visible systems
Lines 117-142 and 498-506 define TWO competing focus-visible systems. Remove the duplicate at 498-506 (the outline-based one) and keep the ring-based one at 117-142 which is more specific and matches the system.md pattern.
/* DELETE lines 498-506 */
/* Focus states */
@layer base {
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
@apply outline-2 outline-offset-2 outline-accent-500;
}
}
Step 8: Fix .post-type-dropdown dark mode
Lines 974-986: Change @media (prefers-color-scheme: dark) to .dark class selector (the site uses class-based dark mode).
/* Before */
@media (prefers-color-scheme: dark) {
.post-type-dropdown { ... }
.post-type-dropdown-item { ... }
.post-type-dropdown-item:hover { ... }
}
/* After */
.dark .post-type-dropdown {
background: #1f2937;
border-color: #374151;
}
.dark .post-type-dropdown-item {
color: #d1d5db;
}
.dark .post-type-dropdown-item:hover {
background: #374151;
color: #34d399;
}
Step 9: Fix .save-later-btn and .share-post-btn dark mode
Lines 881-932: Add .dark variants for these buttons (currently no dark mode support).
/* Add after line 907 */
.dark body[data-indiekit-auth="true"] .save-later-btn {
color: #9ca3af;
}
.dark body[data-indiekit-auth="true"] .save-later-btn:hover {
border-color: #4b5563;
color: #60a5fa;
}
/* Add after line 932 */
.dark body[data-indiekit-auth="true"] .share-post-btn {
color: #9ca3af;
}
.dark body[data-indiekit-auth="true"] .share-post-btn:hover {
border-color: #4b5563;
color: #34d399;
}
Step 10: Commit
git add css/tailwind.css
git commit -m "fix(css): fix 10 design system violations in component classes
- .widget-title: font-bold -> font-semibold
- .repo-card: add shadow-sm
- .fab-menu-item: rounded-xl -> rounded-lg, shadow-md -> shadow-sm
- .p-category: hover border surface -> accent
- .widget: remove mb-4 (conflicts with space-y containers)
- Remove duplicate focus-visible system (outline vs ring)
- .post-type-dropdown: prefers-color-scheme -> .dark class
- .save-later-btn/.share-post-btn: add dark mode variants
Confab-Link: http://localhost:8080/sessions/0ec83454-d346-4329-8aaf-6b12139bf596"
Task 2: Cards Missing shadow-sm (25 files)
Files to modify:
Group A — Page templates:
github.njk— lines 30, 104, 137, 171, 226 (5 cards)funkwhale.njk— lines 188, 238 (2 cards)youtube.njk— lines 37, 176 (2 cards)listening.njk— lines 273, 327, 399, 460 (4 cards)blogroll.njk— lines 68, 112 (2 cards)readlater.njk— lines 83 (1 card)starred.njk— line 187 (1 card)interactions.njk— lines 44, 60, 76, 92, 108, 217 (6 cards)changelog.njk— line 51 (1 card)digest-index.njk— line 25 (1 card)
Group B — Components/sections:
_includes/components/webmentions.njk— lines 116, 186 (2 cards)_includes/components/comments.njk— line 78 (1 card)_includes/components/funkwhale-stats-content.njk— lines 4, 29 (2 cards)_includes/components/fediverse-modal.njk— line 32 (1 card)_includes/components/post-navigation.njk— lines 34, 80 (2 cards)_includes/components/sections/cv-education.njk— line 19 (1 card)_includes/components/sections/cv-skills.njk— line 18 (1 card)_includes/components/sections/cv-interests.njk— line 18 (1 card)_includes/components/sections/cv-projects.njk— line 19 (1 card)_includes/components/sections/cv-projects-work.njk— line 29 (1 card)_includes/components/sections/cv-projects-personal.njk— line 29 (1 card)_includes/components/sections/ai-usage.njk— lines 13, 16 (2 cards)
Group C — Layout templates:
_includes/layouts/page.njk— lines 36, 40, 44, 48, 83 (5 cards)_includes/layouts/home.njk— lines 82, 113, 122, 131 (4 cards)
Pattern: For each card element, find the border border-surface-200 dark:border-surface-700 class string and add shadow-sm after it. If the element has border but no surface tokens, add the full pattern: border border-surface-200 dark:border-surface-700 shadow-sm.
Special cases:
interactions.njkcards (lines 44-108): These cards have NO border at all — addborder border-surface-200 dark:border-surface-700 shadow-smchangelog.njk:51: Also addbg-surface-50 dark:bg-surface-800(missing background)page.njk:36,40,44,48: Changebg-whitetobg-surface-50(token compliance)webmentions.njk:116,186andcomments.njk:78: Changebg-surface-100tobg-surface-50(system says card bg = surface-50)post-navigation.njk:34,80: Changebg-surface-100tobg-surface-50
Step 1: Fix Group A files (page templates — add shadow-sm to each card)
Step 2: Fix Group B files (components/sections)
Step 3: Fix Group C files (layouts)
Step 4: Commit
git add *.njk _includes/
git commit -m "fix(cards): add shadow-sm to all card elements across 25 files
Design system requires shadow-sm + border on all cards.
Also fixes bg-white -> bg-surface-50 and bg-surface-100 -> bg-surface-50
where card backgrounds used wrong tokens.
Confab-Link: http://localhost:8080/sessions/0ec83454-d346-4329-8aaf-6b12139bf596"
Task 3: Wrong Domain Colors (8 files)
Domain color reference:
- Writing (amber): articles, notes, bookmarks, photos, blog, digest, categories, news
- Social (rose): likes, replies, reposts, interactions
- Code (emerald): github, starred
- Music (purple): funkwhale, listening
- Video (red): youtube
- Reading (orange): blogroll, podroll, readlater
Files to modify:
3a. starred.njk — 12 violations (accent -> emerald)
Every accent-* reference on this page should be emerald-*:
- Line 11:
text-accent-600 dark:text-accent-400->text-emerald-600 dark:text-emerald-400 - Lines 61-93: Tab button active states:
border-accent-600 text-accent-700 dark:text-accent-400->border-emerald-600 text-emerald-700 dark:text-emerald-400 - Line 111:
focus:ring-accent-500->focus:ring-emerald-500 - Line 126: Same
- Line 141: Same
- Lines 155:
bg-accent-600->bg-emerald-600 - Line 165:
text-accent-600 focus:ring-accent-500->text-emerald-600 focus:ring-emerald-500 - Lines 172-174:
text-accent-600 dark:text-accent-400->text-emerald-600 dark:text-emerald-400 - Line 193:
hover:text-surface-600->hover:text-emerald-600 dark:hover:text-emerald-400 - Lines 255-259:
bg-accent-600 hover:bg-accent-700->bg-emerald-600 hover:bg-emerald-700
3b. photos.njk — 4 violations (purple -> amber)
- Line 17:
text-purple-600 dark:text-purple-400->text-amber-600 dark:text-amber-400(sparkline) - Line 28:
border-l-purple-400 dark:border-l-purple-500->border-l-amber-400 dark:border-l-amber-500 - Line 62:
text-purple-600 dark:text-purple-400->text-amber-600 dark:text-amber-400
3c. reposts.njk — 1 violation (emerald sparkline -> rose)
- Line 17:
text-emerald-600 dark:text-emerald-400->text-rose-600 dark:text-rose-400
3d. blog.njk — 6 violations (red/green/sky -> rose for social types)
- Line 42:
border-l-red-400 dark:border-l-red-500->border-l-rose-400 dark:border-l-rose-500(like card) - Line 46:
border-l-green-400 dark:border-l-green-500->border-l-rose-400 dark:border-l-rose-500(repost card) - Line 48:
border-l-sky-400 dark:border-l-sky-500->border-l-rose-400 dark:border-l-rose-500(reply card) - Lines 60-61:
text-red-500/text-red-600 dark:text-red-400->text-rose-500/text-rose-600 dark:text-rose-400 - Lines 143-144:
text-green-500/text-green-600 dark:text-green-400->text-rose-500/text-rose-600 dark:text-rose-400 - Lines 182-184:
text-sky-500/text-sky-600 dark:text-sky-400->text-rose-500/text-rose-600 dark:text-rose-400
3e. featured.njk — 3 violations (red/green/sky -> rose)
- Line 56:
text-red-600 dark:text-red-400/text-red-500->text-rose-600 dark:text-rose-400/text-rose-500 - Line 85:
text-green-600 dark:text-green-400->text-rose-600 dark:text-rose-400 - Line 98:
text-sky-600 dark:text-sky-400->text-rose-600 dark:text-rose-400
3f. digest.njk — 2 violations (accent -> amber on nav links)
- Lines 154, 162:
text-accent-600 dark:text-accent-400->text-amber-600 dark:text-amber-400
3g. digest-index.njk — 1 violation (orange -> amber)
- Line 19:
text-orange-600 dark:text-orange-400->text-amber-600 dark:text-amber-400
3h. _includes/components/widgets/search.njk — 2 violations (primary -> accent)
- Line 4:
focus:ring-primary-500->focus:ring-accent-500 - Line 5:
bg-primary-600 hover:bg-primary-700->bg-accent-600 hover:bg-accent-700
Step 1: Fix all files above
Step 2: Commit
git add starred.njk photos.njk reposts.njk blog.njk featured.njk digest.njk digest-index.njk _includes/components/widgets/search.njk
git commit -m "fix(domain-colors): correct domain color assignments across 8 files
- starred.njk: accent -> emerald (Code domain)
- photos.njk: purple -> amber (Writing domain)
- reposts.njk: emerald -> rose (Social domain)
- blog.njk: red/green/sky -> rose (Social domain unified)
- featured.njk: red/green/sky -> rose (Social domain unified)
- digest.njk: accent -> amber (Writing domain)
- digest-index.njk: orange -> amber (Writing domain)
- search widget: primary -> accent (stale token)
Confab-Link: http://localhost:8080/sessions/0ec83454-d346-4329-8aaf-6b12139bf596"
Task 4: Date font-mono on <span> Elements (Alpine.js renders)
These are dates rendered by Alpine.js x-text="formatDate()" into <span> elements (not <time>). The CSS base layer only covers <time> elements, so these <span> elements need explicit font-mono.
Files to modify:
starred.njk:27—<span x-text="formatDate(lastSync)">— addfont-monostarred.njk:236—<span x-text="'Starred ' + formatDate(...)">— addfont-monochangelog.njk:67—<span class="text-xs text-surface-500" x-text="formatDate(commit.date)">— addfont-monoblogroll.njk:18—<span x-text="formatDate(status?.lastSync, 'full')">— addfont-mono_includes/components/widgets/github-repos.njk:61—<span x-text="formatDate(commit.date)">— addfont-mono_includes/components/widgets/github-repos.njk:86—<span x-text="formatDate(repo.updated_at)">— addfont-mono_includes/components/widgets/github-repos.njk:142—<span x-text="formatDate(item.date)">— addfont-monointeractions.njk:264—<time ... x-text="formatDate(...)">— addfont-mono text-smreadlater.njk:99—<time ... x-text="formatDate(item.savedAt)">— addfont-mono text-smblogroll.njk:142—<time ... x-text="formatDate(item.published)">— addfont-mono text-sm_includes/components/comments.njk:94—<time ... x-text="new Date(...)">— addfont-mono text-sm
Step 1: Add font-mono class to each <span> and font-mono text-sm to each <time> listed above
Step 2: Commit
git add starred.njk changelog.njk blogroll.njk interactions.njk readlater.njk _includes/components/widgets/github-repos.njk _includes/components/comments.njk
git commit -m "fix(dates): add font-mono to Alpine.js-rendered date spans
CSS base layer covers <time> elements automatically, but dates
rendered via x-text into <span> elements need explicit font-mono.
Confab-Link: http://localhost:8080/sessions/0ec83454-d346-4329-8aaf-6b12139bf596"
Task 5: Date font-mono on <time> Elements (class consistency)
The CSS base layer sets font-family: monospace on all <time> elements globally, so these render correctly already. However, the design system convention is to also add font-mono text-sm as Tailwind classes for consistency and to ensure text-sm sizing. This task adds the classes to all <time> elements that are missing them.
Files to modify:
Group A — Post collection pages:
articles.njk:37-39—<time class="dt-published">addfont-mono text-smnotes.njk:31-33—<time class="dt-published text-sm ... font-medium">addfont-monobookmarks.njk:39-41— same patternphotos.njk:30-32— samelikes.njk:37-39— samereplies.njk:42-44— samereposts.njk:42-44— sameblog.njk:67,106,150,189,227,271,298— 7<time>elements, addfont-monodigest.njk:22,54,71,84,107,121,130— 7<time>elementsdigest-index.njk:31— 2<time>elementsfeatured.njk:58,70,87,100,116,130— 6<time>elementscategories.njk:63-65— 1<time>element
Group B — Layouts:
_includes/layouts/page.njk:20—<time class="dt-updated">addfont-mono text-sm_includes/layouts/post.njk:23-25—<time class="dt-published">addfont-mono text-sm_includes/layouts/home.njk:92-94—<time>addfont-mono
Group C — Sections/components:
_includes/components/sections/recent-posts.njk:55,83,116,144,173,210,224— 7<time>elements_includes/components/sections/featured-posts.njk:58,86,119,148,176,213,227— 7<time>elements_includes/components/webmentions.njk:138,168— 2<time>elements_includes/components/post-navigation.njk:46,92— 2<time>elements (also changetext-xstotext-sm)_includes/components/sections/cv-experience.njk:27— date text, addfont-mono_includes/components/sections/cv-education.njk:43,47,72,76— date text, addfont-mono_includes/components/sections/cv-projects.njk:55,82— date text, addfont-mono_includes/components/sections/cv-projects-work.njk:65,92— date text_includes/components/sections/cv-projects-personal.njk:65,92— date text_includes/components/cv-builder.njk:163—<time>addfont-mono text-smcv.njk:130—<time>addfont-mono text-sm
Group D — Widgets:
_includes/components/widgets/social-activity.njk:46,76— 2<time>elements_includes/components/widgets/recent-posts.njk:25,40,55,70,81— 5<time>elements_includes/components/widgets/recent-posts-blog.njk:23,36,49,62,72— 5<time>elementsgithub.njk:114,150— 2<time>elements
Pattern for each fix:
For <time class="dt-published">:
<!-- Before -->
<time class="dt-published">
<!-- After -->
<time class="dt-published font-mono text-sm">
For <time class="dt-published text-sm ... font-medium"> (already has text-sm):
<!-- Before -->
<time class="dt-published text-sm text-surface-500 dark:text-surface-400 font-medium">
<!-- After -->
<time class="dt-published font-mono text-sm text-surface-500 dark:text-surface-400 font-medium">
For CV date text in <span> or <p>:
<!-- Before -->
<span class="text-xs text-surface-500">Jan 2020 - Present</span>
<!-- After -->
<span class="text-xs text-surface-500 font-mono">Jan 2020 - Present</span>
Step 1: Fix Group A (collection pages) Step 2: Fix Group B (layouts) Step 3: Fix Group C (sections/components) Step 4: Fix Group D (widgets)
Step 5: Commit
git add *.njk _includes/
git commit -m "fix(dates): add font-mono text-sm to all <time> elements
System convention: every rendered date gets font-mono class.
CSS base layer handles font-family, but classes ensure consistency
and proper text-sm sizing across all templates.
Confab-Link: http://localhost:8080/sessions/0ec83454-d346-4329-8aaf-6b12139bf596"
Task 6: Hover Violations (8 files)
Files to modify:
github.njk:226—hover:border-surface-400 dark:hover:border-surface-600->hover:border-emerald-400 dark:hover:border-emerald-600starred.njk:187—hover:border-surface-400 dark:hover:border-surface-500->hover:border-emerald-400 dark:hover:border-emerald-600_includes/components/sections/featured-posts.njk:45—hover:border-surface-400 dark:hover:border-surface-500->hover:border-accent-400 dark:hover:border-accent-600_includes/components/widgets/toc.njk:10— addhover:underlineto ToC links_includes/components/widgets/subscribe.njk:6,12— addhover:underlineto RSS/JSON feed links_includes/components/widgets/categories.njk:8— addhover:bg-surface-200 dark:hover:bg-surface-700 transition-colorsto category links_includes/components/widgets/blogroll.njk:30— addhover:underlineto blog list linksnews.njk:128,193—hover:border-accent-400->hover:border-amber-400(Writing domain)digest-index.njk:25—hover:border-accent-300->hover:border-amber-400 dark:hover:border-amber-600
Step 1: Fix all files above
Step 2: Commit
git add github.njk starred.njk news.njk digest-index.njk _includes/
git commit -m "fix(hover): correct card hover borders to domain colors
Replace hover:border-surface-400 with domain-colored borders.
Add hover:underline to text links missing it.
Confab-Link: http://localhost:8080/sessions/0ec83454-d346-4329-8aaf-6b12139bf596"
Task 7: Border Radius Violations (10 files)
Files to modify:
_includes/layouts/page.njk:92,97,102— AI level badges:rounded->rounded-full_includes/layouts/page.njk:33— AI stats container:rounded-xl->rounded-lg_includes/layouts/home.njk:96— post type badge:rounded->rounded-fullblogroll.njk:68,112— standard cards:rounded-xl->rounded-lgreadlater.njk:83— standard cards:rounded-xl->rounded-lgnews.njk:193,246— standard cards:rounded-xl->rounded-lgpodroll.njk:66— standard cards:rounded-xl->rounded-lg_includes/components/sections/cv-projects.njk:94— tech badges:rounded->rounded-full_includes/components/sections/cv-projects-work.njk:104— same_includes/components/sections/cv-projects-personal.njk:104— same_includes/components/sections/ai-usage.njk:13— stats panel:rounded-xl->rounded-lg_includes/components/sections/funkwhale-stats-content.njk:4— stat cards:rounded-xl->rounded-lg_includes/components/h-card.njk:90— category span:rounded->rounded-full_includes/components/sections/recent-posts.njk:214,229— post type badges:rounded->rounded-full_includes/components/sections/featured-posts.njk:217,232— samefunkwhale.njk:147— trends chart container:rounded-xl->rounded-lg
Step 1: Fix all files above
Step 2: Commit
git add *.njk _includes/
git commit -m "fix(radius): correct border-radius to match system
- rounded -> rounded-full for badges/pills
- rounded-xl -> rounded-lg for standard cards (xl reserved for hero/featured)
Confab-Link: http://localhost:8080/sessions/0ec83454-d346-4329-8aaf-6b12139bf596"
Task 8: Dark Mode Violations (8 files)
Files to modify:
_includes/layouts/page.njk:36,40,44,48—bg-white->bg-surface-50(with existingdark:bg-surface-800)_includes/components/sections/ai-usage.njk:16,20,24,28—bg-white->bg-surface-50_includes/components/sections/ai-usage.njk:13—dark:bg-surface-800/50->dark:bg-surface-800(remove opacity)_includes/components/comments.njk:41— adddark:text-surface-100, fixdark:border-surface-600->dark:border-surface-700_includes/components/comments.njk:59— same fix for textarea_includes/components/fediverse-modal.njk:32—dark:bg-surface-700->dark:bg-surface-800_includes/components/widgets/post-categories.njk:8,13—bg-accent-900->bg-accent-900/30(badge pattern)changelog.njk:51— addbg-surface-50 dark:bg-surface-800
Step 1: Fix all files above
Step 2: Commit
git add *.njk _includes/
git commit -m "fix(dark-mode): correct dark mode token pairs
- bg-white -> bg-surface-50 (token compliance)
- Add missing dark:text-surface-100 on inputs
- Fix dark:border-surface-600 -> dark:border-surface-700
- Fix badge bg opacity (dark:bg-accent-900/30)
Confab-Link: http://localhost:8080/sessions/0ec83454-d346-4329-8aaf-6b12139bf596"
Task 9: Depth Violations (6 files)
Files to modify:
Avatar/album art images need shadow-lg:
_includes/components/h-card.njk:32— avatar img: addshadow-lg_includes/components/widgets/author-card-compact.njk:12— avatar: addshadow-lg_includes/components/widgets/funkwhale.njk:33— now-playing cover: addshadow-lg_includes/components/widgets/funkwhale.njk:55— track thumbnail: addshadow-lg_includes/components/widgets/funkwhale.njk:83— scrobble thumbnail: addshadow-lg_includes/components/widgets/recent-comments.njk:11— commenter avatar: addshadow-lg_includes/components/sections/funkwhale-stats-content.njk:47— album cover: addshadow-lg
Stat number font-mono:
_includes/components/sections/funkwhale-stats-content.njk:5— stat numbers: addfont-mono_includes/components/sections/ai-usage.njk:17— stat numbers: addfont-mono
Step 1: Fix all files above
Step 2: Commit
git add _includes/
git commit -m "fix(depth): add shadow-lg to avatars/album art, font-mono to stat numbers
System: avatars/album art get shadow-lg for presence.
Stat numbers get font-mono like dates/timestamps.
Confab-Link: http://localhost:8080/sessions/0ec83454-d346-4329-8aaf-6b12139bf596"
Task 10: Transition Violations (6 files)
Files to modify:
_includes/components/widgets/author-card-compact.njk:16— author name link: addtransition-colors_includes/components/widgets/categories.njk:8— category links: addtransition-colors_includes/components/widgets/post-navigation.njk:18,44— nav links: addtransition-colors_includes/components/widgets/webmentions.njk:55,69,83,94,105,114— links: addtransition-colorspodroll.njk:119-128— "View Episode" link: addtransition-colorspodroll.njk:131-137— "Subscribe to feed" link: addtransition-colors
Step 1: Fix all files above
Step 2: Commit
git add _includes/ podroll.njk
git commit -m "fix(transitions): add transition-colors to interactive elements
System requires transition-colors on all elements with hover states.
Confab-Link: http://localhost:8080/sessions/0ec83454-d346-4329-8aaf-6b12139bf596"
Task 11: Inline focus:ring-2 Cleanup (7 files)
Some templates use focus:outline-none focus:ring-2 focus:ring-accent-500 which suppresses the CSS base layer focus-visible styles and replaces them with a focus (not focus-visible) ring. This means mouse clicks also trigger the ring. The system uses focus-visible in CSS. These inline focus:outline-none should be removed so the base CSS handles focus consistently.
Files to modify:
news.njk:15,48,59,70,332,342— removefocus:outline-none focus:ring-2 focus:ring-accent-500(CSS base layer handles it)podroll.njk:19,50,175— remove inline focus classesstarred.njk:111,126,141,165— remove inline focus classes (but domain color is handled in Task 3)readlater.njk:44,61— remove inline focus classes_includes/components/webmentions.njkline withfocus:ring-2— remove_includes/components/fediverse-modal.njk:63— removefocus:ring-2 focus:ring-[#a730b8]_includes/components/widgets/search.njk:4— remove inline focus (after Task 3 fixes primary -> accent)
Step 1: In each file, remove focus:outline-none focus:ring-2 focus:ring-*-500 class groups
The CSS base layer at tailwind.css:117-142 provides ring-2 ring-amber-500/70 on :focus-visible for all buttons, links, and inputs. This is the correct, centralized approach.
Step 2: Commit
git add *.njk _includes/
git commit -m "fix(focus): remove inline focus:ring-2 classes, rely on CSS base layer
The CSS base layer provides focus-visible rings on all interactive
elements. Inline focus:outline-none suppresses this and replaces
it with focus (not focus-visible) behavior. Removing these lets
the centralized system handle focus states consistently.
Confab-Link: http://localhost:8080/sessions/0ec83454-d346-4329-8aaf-6b12139bf596"
Task 12: Remaining Button/Focus Violations
After Task 11 removes conflicting inline focus classes, the CSS base layer handles focus-visible for all button, a, input, textarea, select elements. The remaining "missing focus:ring-2" violations from the audit are now resolved by the CSS base layer — no further template changes needed.
Verification step: After all previous tasks are committed, do a grep to confirm no focus:outline-none remains that would suppress the base styles:
grep -rn "focus:outline-none" --include="*.njk" /home/rick/code/indiekit-dev/indiekit-eleventy-theme/ | grep -v node_modules
If any remain, remove them.
Commit: No commit needed if grep finds nothing.
Deployment
After all tasks are complete:
cd /home/rick/code/indiekit-dev/indiekit-eleventy-theme
git push origin main
cd /home/rick/code/indiekit-dev/indiekit-cloudron
git submodule update --remote eleventy-site
git add eleventy-site
git commit -m "chore: update eleventy-site submodule (design system compliance)"
git push origin main
make prepare
cloudron build --no-cache && cloudron update --app rmendes.net --no-backup
Visual Verification
After deployment, verify key pages with playwright-cli:
/(home) — cards have shadows, dates are mono/blog/— social types use rose domain color/github/— emerald domain color throughout/github/starred/— emerald, not accent/listening/— cards have shadows/podroll/— rounded-lg, not rounded-xl- Dark mode toggle — check all pages render correctly