Elenxia
Violet glass, hollow rings, two languages.
The design system of QA Intelligence and FEC One: a deep violet ground, glass pop-ups, hollow ringed controls and one violet hue for the way forward, in English and Persian, dark and light.
Used by QA Intelligence and FEC One · Updated
Guidelines
Voice and content
- Scan, never test. Visible copy says scan / اسکن and rescan; never test / تست. Screenshots are Screenshots / اسکرینشات, never Evidence. Stage 9 is Fix prompt.
- Short, plain words and one action at a time: "Type its address and the scan starts right away." "Start scan", "Save without scan", "Copy prompt", "I made the change", "Check again".
- Say the result the server confirmed: a toast appears only for a real outcome ("shop.example.com is verified"), never for an attempt.
- Failures say what happened and what to do: "We couldn't detect the change yet." followed by Check again and Try another way.
- Developer strings are rewritten plainly; severity codes always sit next to a word ("S0 · Critical").
- Second person, sentence case, no emoji, no exclamation marks.
- Two languages, equal. Every string exists in English and Persian (
fais type-checked againsten). Persian setsdir="rtl"on<html>; URLs, emails and codes stay left-to-right with.ltrordir="ltr". In Persian, eyebrows and chips drop uppercase and letter-spacing, digits are formatted withfa-IR, and the dot separator is drawn (Sep), because "·" next to a digit reads as zero.
Colour
- Dark is the default theme; light is the alternative (stored as
qa-theme). Putbgon the page,inkfor text,mutedfor secondary text.surfaceandsurface-2are quiet fills, not cards. violetis the only brand hue in the UI. Use it for the CTA ring, the current nav item, focus outlines, selection, progress and reached stage lines.indigoonly joins it in the progress gradient.cosmic,deepandspaceare the brand's deep steps for marketing and share images.- In dark,
violettext is 3.9:1 onbg: use it at 14px medium or larger (button labels, active links), not for small body copy. - State colours always come with a word. Use
success,warninganderror(plus their-solidand-foreground) for chips and messages. Lamps uselamp-online,lamp-warnandlamp-offline; offline and failed steps are orange, never red. Severity usessev-s0–sev-s2. Finding states use the colour-blind-checkedfs-*set. - Each specialist has a fixed hue (
spec-functional…spec-infrastructure), used for its avatar ring and its slice of a chart. warningis never text in light (2.1:1); usewarning-foregroundthere.
Type
- Set text in
sans: Inter Variable, with Vazirmatn Variable covering Persian glyph by glyph. Set titles, the brand name and big numbers indisplay: Space Grotesk 500–700, with letter-spacing 0.02em (normal in Persian). Codes and terminal lines go inmono. - The scale is shifted one step down.
text-baseis 14px (body),text-sm12px (body-sm),text-xs11px (label). Most of the UI lives at 11–14px. - Styles in use:
display-hero(home h1),display-title(modal title),popup-title,body,body-sm,label(field labels and section heads, inmuted),eyebrow(uppercase, 0.18em),chip,menu-label,display-numberandmono(both with tabular-nums).
Shape, edges and depth
- Borders are switched off globally (
* { border-style: none !important }). Draw every edge as a ring or an insetbox-shadow(hairlineline, or ink at 14–45%). Only.keep-borderopts back in. - Radii:
radius-fullfor every button, chip, pill, toggle and lamp;radius-xlfor bento tiles, pop-ups, menus and toasts;radius-glassfor glass fields and choices;radius-lgfor inputs and rows;radius-card(2px) for flat cards. - Glass is the depth. Pop-ups, modals and drawers use
blur-modal+shadow-modalover a lightscrim, and the page behind blurs (blur-page). Menus and the nav pill useblur-menu+shadow-menu. Always write-webkit-backdrop-filterbeforebackdrop-filter, or the production build drops the blur. - Spacing follows the 4px Tailwind scale:
space-2between siblings,space-3/space-4inside controls and tiles,space-6/space-8around pop-ups and pages. Pages aremax-w-7xlwith a 16px gutter (24px from md). - Layers:
z-topband<z-nav<z-drawer<z-menu<z-search<z-lightbox.
Controls
- Buttons are hollow and ringed, never filled. The one main action uses the CTA ring (2px
violet); every other action uses the neutral ring (1pxline,mutedtext); danger uses a 2pxerrorring. Anything clickable is a button, never bare text. Only one CTA per view. - Focus is a solid 2px
violetoutline offset by 1px on every control, in both themes. - Status is shown with a Chip or a StatusLamp plus its word. Progress uses the 6px ProgressBar with the number beside it.
Layout rules
- Nothing moves when you switch. Changing a step, tab or mode never resizes, rescales or shifts anything: reserve the tallest state's height.
- No page scroll on the project and scan screens at 100%, 120% and 150% browser zoom. Compact first, then scale. Always check at about 1215×580 CSS px as well as full width.
- The project screen is six transparent bento tiles plus pop-ups (
?panel=). Home (/home) is the address bar plus the projects table, with cards available as a second view. - Live-scan animations run while a scan is live, even when reduced motion is on, and stop when it ends. Everything else respects
prefers-reduced-motion.
Motion
- Fields and choices: 120ms ease. Fades: 420ms ease-out with a 3px rise. Lamps ping every 1.4s. Toasts live 8s, with at most 4 on screen.
- framer-motion springs: bento tiles stiffness 100 / damping 10 with a 0.1s stagger; the nav pill stiffness 250–300 / damping 18–20.
Iconography
- lucide-react, 16px (
h-4 w-4), stroke 2,currentColor. Arrows and chevrons mirror in RTL. The previews here draw a few lucide shapes inline. - No emoji in the UI. Charts, screenshot marks (
mark-now,mark-should,mark-info), the world map and the verify badge are custom inline SVG.
Logo
There is no logo file in either codebase. The header sets the name "FEC QA Intelligence" in the display face; the sign-in screen draws an animated "QA" outline in WebGL. Until a real mark exists, set the name in plain type.
Colors
55 colour tokens. Values shown for the dark theme; switch the theme above to see the other.
Brand
violet#7b4df2The one brand hue: CTA rings, active nav text, focus outline, selection, progress fills. Reads on bg and surface in light; in dark it is 3.9:1 on bg and 3.6:1 on surface (passes only at large or bold sizes), so use it for 14px+ medium labels and rings, not small body copy.
violet-bright#9366f8Brighter violet for lines and marks on dark grounds (world map, charts).
violet-hover#6a3ce0Fixed hover shade of violet (brand scale).
primary-hover#8d63f6Hover/pressed state of anything violet; lightens in dark, darkens in light.
indigo#4a2cc4Gradient partner of violet: progress bar fill (violet to indigo), share image.
cosmic#1b1568Deep brand step; dark surface-2 is the same value.
deep#100c40Brand ink; light-theme text colour and share-image start.
space#08061cDarkest brand step; theme-color meta in dark.
Surfaces and text
bg#0b0a1aPage background. Everything sits on it; most components are transparent over it.
surface#14113cRaised plain surface: toast card, select options.
surface-2#1b1568Quiet fill: input background (at 50%), hovered rows, segmented-control track, skeleton, toggle off.
ink#f3f1ffPrimary text and icons on bg, surface and surface-2.
muted#a49fceSecondary text: labels, hints, idle nav items, neutral button text. 4.5:1 or more on bg and surface in both themes.
line#2a2660Hairlines drawn as box-shadow or ring (borders are globally off): neutral button ring, dividers, separators. Decorative only; never the sole edge of a control.
card#18181bActive segment pill fill in Segments (zinc alias inherited from One's floating nav).
scrimrgba(0,0,0,0.38)Pop-up scrim (the page behind also blurs 14px).
States
success#1f9d6bGood/passed fills and dark-theme good text.
success-solid#17805aGood text on light grounds; solid good chips.
success-foreground#ffffffText on a solid success fill.
warning#e0a020Warn fills, warn text in dark theme only (2.1:1 on light bg: never text in light, use warning-foreground).
warning-foreground#2b1d00Text on warning fills; warn chip text in light.
error#e24868Danger ring/text (danger button), critical chips in dark, error messages.
error-solid#c93a58Critical text on light grounds; solid error fill.
error-foreground#ffffffText on a solid error fill.
info#7b4df2Info tone = violet (info chip, info toast bar).
Status lamps
lamp-online#10b981Status lamp: online / done (emerald-500). Always paired with its word.
lamp-warn#facc15Status lamp: warning / needs review (yellow-400).
lamp-offline#f97316Status lamp: offline / failed step. Orange, never red (owner rule).
Severity
sev-s0#f87171Severity S0 text (red-400 dark / red-600 light) on a 15% tint of itself; always beside the word Critical.
sev-s1#fb923cSeverity S1 text (orange) on a 15% tint; beside High. Source pair kept exact: light orange-600 is 3.3:1 on bg, below 4.5:1 for 10px chip text.
sev-s2#facc15Severity S2 text (yellow) on a 15% tint; beside Medium. S3/S4 use muted on ink 10%.
Finding states
fs-review#9085e9Finding-state palette (colour-blind checked): to review.
fs-failing#e66767Finding state: failing.
fs-selected#3987e5Finding state: selected for fixing.
fs-verify#c98500Finding state: verifying.
fs-fixed#199e70Finding state: fixed.
fs-aside#5d5d75Finding state: set aside.
Specialists
spec-functional#7b4df2Specialist hue: Functional (same in both themes).
spec-backend#3b82f6Specialist hue: Backend.
spec-security#e24868Specialist hue: Security.
spec-ux#14b8a6Specialist hue: UX.
spec-mobile#f59e0bSpecialist hue: Mobile.
spec-performance#22c55eSpecialist hue: Performance.
spec-chaos#f97316Specialist hue: Chaos.
spec-visual#ec4899Specialist hue: Visual.
spec-localization#06b6d4Specialist hue: Localization.
spec-privacy#8b5cf6Specialist hue: Privacy.
spec-dependency#64748bSpecialist hue: Dependency.
spec-explorer#eab308Specialist hue: Explorer.
spec-infrastructure#0ea5e9Specialist hue: Infrastructure.
Screenshot marks and terminal
mark-now#ef4444Screenshot annotation: what is wrong now.
mark-should#22c55eScreenshot annotation: what it should be.
mark-info#3b82f6Screenshot annotation: information.
terminal-bg#05090aLive terminal panel background (same in both themes).
terminal-ink#4ade80Live terminal text on terminal-bg.
Typography
Inter for text, Space Grotesk for display, Vazirmatn for every Persian glyph. The scale is shifted one step down: body text is 14px.
Display
display-hero20px / 28px · 500 · 0.02em
Publish with fewer bugs
Home hero h1 (text-2xl on sm+, text-xl below). Letter-spacing normal in Persian.
display-title16px / 24px · 500 · 0.02em
Verify example.com
Modal title.
display-number22px / 22px · 700
1,240
Big readouts (credit meter). Always tabular-nums.
Text
popup-title14px / 20px · 500
Findings & decide
Pop-up header title (truncate).
body14px / 20px · 400
Type its address and the scan starts right away.
Default text (text-base is 14px: the whole scale is shifted one step down).
body-sm12px / 16px · 400
Checked 42 pages in 3 minutes
Dense rows, button text at size sm, hints.
label11px / 16px · 500
Website address
Field labels, section headings (text-xs font-medium, muted).
eyebrow11px / 16px · 600 · 0.18em
STEP 3 OF 12
Eyebrows: uppercase, 0.18em. In Persian: no uppercase, normal spacing.
chip10px / 10px · 600 · 0.025em
VERIFIED
Chip text, uppercase. Persian: 11px, normal case.
menu-label10.5px / 14px · 600 · 0.05em
ACCOUNT
Menu group label, uppercase, muted at 70%.
Mono
mono11px / 16px · 400
GET /checkout 500
Terminal lines, codes, percentages with tabular-nums.
آدرس سایت را بنویسید تا اسکن همان لحظه شروع شود.
Spacing & radius
The 4px scale in use, and the radii every component draws from.
space-0.52px · Segmented track padding (p-0.5).space-14px · Icon-to-text in chips, tight gaps.space-1.56px · Nav link gap, address-bar inner padding.space-28px · Default gap between siblings (most used).space-312px · Input/row horizontal padding, button sm padding.space-416px · Bento padding, page side gutter, button padding.space-520px · Primary button horizontal padding, drawer header.space-624px · Modal padding (mobile), page gutter md+.space-832px · Modal padding sm+, page top padding, empty-state padding.
radius-card2px
radius-md6px
radius-lg8px
radius-glass10px
radius-xl12px
radius-2xl16px
radius-fullfull
Components
43 components and foundations, each drawn in its real styles with its states side by side and its motion running. Open Code for the markup and CSS, Guidelines for when to use it.
Foundations
Elevation
Shadows in Elenxia are few and named; each belongs to one kind of element.
Foundations
Glass
Glass is how Elenxia shows depth: pop-ups, menus and drawers are frosted panels over the page, never solid cards.
Foundations
Motion
Motion says something is alive or has just changed; it is never decoration.
Actions
Button
Every action is a hollow pill with a ring: violet ring for the one call to action, line ring for everything else, red ring for danger.
Actions
IconButton
A round icon-only button for close, back, theme and other tool actions; it always carries an accessible label.
Inputs
Checkbox
A labelled checkbox with an optional description line.
Inputs
ChoiceGroup
Radio-like options drawn as glass tiles; the chosen one gets a violet ring and a 14% violet wash.
Inputs
Select
A native <select> styled like the filled text field.
Inputs
TextField
A labelled single-line input (and TextArea for multi-line), in two looks: the quiet filled field on pages and the glass field inside pop-ups.
Inputs
Toggle
An on/off switch (role="switch") for settings that apply at once.
Status
Chip
A small uppercase status pill.
Status
CreditMeter
The credit and scans-left readout beside the nav pill; each number takes the colour of how much is used.
Status
Delta
A change in points, its direction said three ways: an arrow, a sign and colour.
Status
ProgressBar
A thin 6px bar for scan progress and quotas.
Status
StatusLamp
A single blinking lamp with its word, for the twelve status lights and live states.
Status
StepLine
The stage line of a scan: numbered dots joined by lines, showing done, now, review and later stages.
Charts
CertificateLadder
The certificate's four levels as seals on a line: the ones reached lit, the line filled as far as the app has come, the current one ringed.
Charts
Donut
A donut of parts (their counts) with the total in the middle; used for where findings stand.
Charts
Gauge
A half-circle gauge for a score out of 100: the scale's bands outside, the value's arc and needle, the number in the middle.
Charts
PowerGauge
The scan power as a VU meter: a 90° arc whose needle rises from the bottom edge, red, yellow and green bands over the scale.
Charts
Ring
A ring filled to a share (0–100), its number inside; used for scores in rows and cards.
Charts
ScoreChart
The score over time: a violet line with a soft area under it, a dot per scan, the latest labelled; hovering shows the scan's date, score, change and checks.
Charts
Seismograph
A strip that stays quiet while a scan runs well and jolts where something broke: one jolt per event, its height its weight.
Charts
Sparkline
A small trend line for a list row; decorative, its numbers are said next to it.
Charts
SpeedGauge
The app's health after the last scan as a speedometer: a half circle of ten segments, labels every tenth, a needle on a pivot.
Charts
StackBar
A bar of parts side by side, each its share of the whole; the compact form of the Donut.
Navigation
Breadcrumbs
A small trail of where the person is.
Navigation
Segments
The segmented control QA uses for tabs and view switches (table ↔ cards, en ↔ fa panes).
Patterns
AddressBar
The home start: type a site address and scan.
Patterns
Bento
A transparent tile on the project screen; six of them make the project's overview, each opening a pop-up.
Patterns
Report
The shared report: what anyone with the link sees — the verdict, the score and its trend, what changed in the last scan, and the open problems in the order to fix them.
Patterns
ScreenshotMarks
How a problem is marked on a screenshot: what is wrong now in red, what it should be in green dashes, information in blue, with a numbered note.
Patterns
Terminal
The live terminal of a scan: a black screen in both themes, green text, the newest line brighter, failures red, a blinking caret.
Overlays
Drawer
A side sheet from the end edge (right in English, left in Persian) for long detail beside the page.
Overlays
Menu
A dropdown anchored to a button, on menu glass: items, group labels and separators.
Overlays
Modal
A centred glass dialog for one task, with a display-face title, a close button and a footer; the page behind blurs and goes inert.
Overlays
Popup
The main detail pop-up (and Modal / Drawer, which share its glass): a glass panel over a light scrim, with the page behind blurred 14px.
Overlays
Toast
A short confirmation at the bottom end corner, shown only for an outcome the server confirmed.
Overlays
Tooltip
A small hover card that explains a term or a number.
Data
Avatar
A round photo or initials, single or stacked.
Data
DataTable
A dense table for projects, findings and audit rows.
Data
EmptyState
What a list shows before it has anything, plus the skeleton shown while it loads.