You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Akari is a quiet, practical control surface for account and Minecraft identity management. It should feel light, direct, and trustworthy. The signature is a restrained Naive UI surface system paired with small duotone icons: content remains calm while navigation and status affordances stay immediately legible.
2. Color
Palette
Akari delegates light/dark color resolution to NConfigProvider; application code uses Naive UI theme variables and semantic component types instead of raw colors.
Role
Token
Usage
Page surface
--n-color-body
Route backgrounds
Primary surface
--n-color
Cards, headers, footers
Text primary
--n-text-color
Headings and body
Text secondary
--n-text-color-2
Supporting copy
Text tertiary
--n-text-color-3
Captions and metadata
Border
--n-border-color
Dividers and outlined surfaces
Accent
--n-primary-color
Primary actions, links, focus
Accent hover
--n-primary-color-hover
Hover state
Success
Naive success semantic
Verified and healthy states
Warning
Naive warning semantic
Unverified and caution states
Error
Naive error semantic
Failures and destructive actions
Information
Naive info semantic
Staff and informational states
Rules
Use Naive UI semantic component types for status colors.
Use UnoCSS opacity utilities only for subdued text or icons, never to invent a new semantic color.
New colors must first be represented as a Naive theme override or documented token here.
3. Typography
Scale
Level
Size
Weight
Line Height
Usage
H1
24px / 1.5rem
700
1.3
Authentication titles
H2
20px / 1.25rem
600
1.4
Route titles
H3
18px / 1.125rem
600
1.4
Section titles
Body
16px / 1rem
400
1.6
Default content
Body/sm
14px / 0.875rem
400
1.5
Controls and supporting copy
Caption
12px / 0.75rem
400
1.4
Metadata
Font Stack
Primary: Naive UI system sans-serif stack.
Mono: Naive UI system monospace stack, used only for IDs and request data.
Accessibility: status meaning is repeated in text, not color alone.
Motion: none.
Layout: inline cluster.
Data Table Toolbar
Structure: search input, primary action, reset/secondary actions, result count.
Variants: users, roles, request-log lookup.
Spacing: --space-2, --space-3, --space-4.
States: default, searching, empty query, loading.
Accessibility: input has an accessible label/placeholder; Enter submits search.
Motion: none beyond control state transitions.
Layout: wrapping cluster; table owns horizontal overflow on narrow screens.
6. Motion & Interaction
Type
Duration
Easing
Usage
Micro
120ms
ease-out
Button and focus feedback
Standard
200ms
ease-in-out
Header surface and panel state
Animate only transform, opacity, or composited filters.
Respect prefers-reduced-motion through platform/Naive UI defaults.
Every interactive element exposes hover, active, focus, disabled, and loading states where relevant.
7. Depth & Surface
Strategy
Mixed, restrained depth: Naive UI borders establish most hierarchy; the sticky header may use a small shadow and backdrop blur after scrolling. Cards, modals, dropdowns, and popovers use Naive UI's theme-provided elevation. No decorative shadows are introduced in route pages.
8. Accessibility Constraints & Accepted Debt
Constraints
Target WCAG 2.2 AA: 4.5:1 body contrast and 3:1 large-text contrast.
All functionality is keyboard reachable and visible focus is retained.
Color never carries status alone.
Primary content does not horizontally overflow at 375px; data tables may use their own labelled horizontal scroll region.
Accepted Debt
Item
Location
Why accepted
Owner / Exit
Third-party go-captcha canvas semantics
src/views/auth/CaptchaWidget.vue
Accessibility depends on the upstream widget API.
Replace or augment when the widget exposes an accessible challenge mode.