Dashboard Styling Guide
SkillDev toolsGuide for ReviewFlow dashboard styling conventions. Use when creating/modifying dashboard UI, optimizing styles, or resolving layout issues.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Dashboard Styling Guide skill
What this skill tells your AI
The instructions your AI receives, as published by dgouron/review-flow in .claude/skills/tailwind/SKILL.md and read by ahel’s review.
Note: ReviewFlow does not use TailwindCSS or React. The dashboard is built with plain HTML, CSS custom properties, and vanilla JavaScript. This skill covers the styling conventions for the dashboard.
Activation
This skill activates for:
- Creating or modifying dashboard UI elements
- Optimizing styles and performance
- Resolving layout/responsive issues
- Reviewing CSS conventions
Principles
CSS Custom Properties → Semantic naming → Consistent spacing
Always use existing CSS custom properties (design tokens) before adding new values.
Design Tokens
Available tokens
Tokens are defined as CSS custom properties in src/interface-adapters/views/dashboard/styles.css:
:root {
/* Backgrounds */
--nsc-bg-base: #0b1220;
--nsc-bg-elevated: #111a2b;
--nsc-bg-surface: #162235;
--nsc-bg-surface-strong: #1c2a40;
/* Borders */
--nsc-border-soft: rgba(163, 192, 224, 0.16);
--nsc-border-strong: rgba(163, 192, 224, 0.28);
/* Text */
--nsc-text-primary: #e8efff;
--nsc-text-secondary: #b2c1dd;
--nsc-text-muted: #8393b0;
/* Accent colors */
--nsc-focus: #7ad8ff;
--nsc-action: #60c7ff;
--nsc-warning: #f4bc71;
--nsc-success: #62d3a8;
--nsc-danger: #f07f88;
}
/* Use tokens */
background: var(--nsc-bg-surface);
color: var(--nsc-text-primary);
border: 1px solid var(--nsc-border-soft);
/* Avoid hardcoded values */
background: #162235;
color: #e8efff;
Best Practices
Naming conventions
Use semantic, BEM-inspired class names:
/* Good: semantic and descriptive */
.review-card { }
.review-card__header { }
.review-card__score { }
.review-card--critical { }
/* Bad: generic or cryptic */
.card1 { }
.blue-box { }
.mt20 { }
Property order
Recommended order in declarations:
- Layout (
display,flex,grid) - Positioning (
position,top,left) - Box model (
margin,padding,width,height) - Typography (
font-,text-,line-height) - Visual (
background,border,color) - Misc (
cursor,opacity,transition)
Reusable patterns
Extract repeated patterns into shared classes:
/* Reusable surface pattern */
.surface {
background: var(--nsc-bg-surface);
border: 1px solid var(--nsc-border-soft);
border-radius: 8px;
padding: 16px;
}
.surface--elevated {
background: var(--nsc-bg-elevated);
}
Responsive Design
Mobile-first approach
/* Base styles = mobile */
.dashboard-grid {
display: flex;
flex-direction: column;
gap: 16px;
}
/* Tablet and above */
@media (min-width: 768px) {
.dashboard-grid {
flex-direction: row;
flex-wrap: wrap;
}
}
/* Desktop */
@media (min-width: 1024px) {
.dashboard-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
}
File structure
src/interface-adapters/views/dashboard/
├── index.html # Dashboard HTML template
└── styles.css # All dashboard styles
Before adding styles
- Check if a CSS custom property already exists for the value
- Check if a similar class already exists in
styles.css - If not, add using existing naming conventions
Anti-patterns
To avoid
/* Inline styles in HTML */
style="background-color: #2a4054"
/* Hardcoded colors instead of tokens */
color: #e8efff; /* Use var(--nsc-text-primary) */
/* !important (except extreme cases) */
padding: 16px !important;
/* Deep nesting */
.dashboard .main .section .card .header .title { }
/* Prefer: .card__title { } */
/* Magic numbers without explanation */
margin-top: 37px;
Good practices
/* Use custom properties consistently */
.status-badge {
background: var(--nsc-bg-surface-strong);
color: var(--nsc-text-secondary);
border: 1px solid var(--nsc-border-soft);
border-radius: 4px;
padding: 4px 8px;
font-size: 0.75rem;
}
.status-badge--success {
color: var(--nsc-success);
border-color: var(--nsc-success);
}
.status-badge--danger {
color: var(--nsc-danger);
border-color: var(--nsc-danger);
}
Debugging
Recommended tools
- Browser DevTools -> Inspect element, computed styles
- Check CSS custom property values in the
:rootselector - Use the Elements panel to verify which styles are being applied or overridden
Signals
- GitHub stars
- 43
- Forks
- 6
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
dashboard-styling- Source
- github.com/dgouron/review-flow