Handbook
Layout and design-system guidelines
Evolve the current dark prototype into a light-first enterprise system with optional dark mode. Preserve the restrained navy foundation and amber/lime brand accents, but use brand colors for identity and emphasis rather…
Updated
Design direction
Evolve the current dark prototype into a light-first enterprise system with optional dark mode. Preserve the restrained navy foundation and amber/lime brand accents, but use brand colors for identity and emphasis rather than large text blocks, low-contrast controls, or status meaning.
The product should feel calm, trustworthy, precise, and development-oriented—not gamified, punitive, or like a generic HR dashboard.
Three layout shells
Marketing shell
- Sticky header, 64–72 px high.
- Maximum content width: 1200–1280 px.
- Twelve-column grid on desktop; four columns on tablet; single column on mobile.
- Hero copy width: approximately 640 px.
- Section spacing: 80–120 px desktop, 48–72 px mobile.
- Use product visuals, workflow diagrams, and truthful proof. Do not fill pages with decorative gradients in place of content.
- Primary CTA and one secondary CTA per hero.
- Footer includes product, solutions, resources, legal, security, status, and contact links.
Documentation shell
- Header with global search.
- Left navigation: 240–280 px.
- Reading column: 680–780 px.
- Optional right table of contents: 200–240 px.
- Overall maximum width: approximately 1440 px.
- Persistent version selector where documentation versions exist.
- Clear previous/next navigation, feedback control, edit/source link where appropriate, and last-updated metadata.
- Code blocks, callouts, tables, and diagrams must remain readable on narrow screens.
Product shell
- Top bar: 56–64 px with brand, tenant/scope switcher, command search, help, notifications, and user menu.
- Desktop sidebar: 240–264 px; collapsed rail: 64–72 px.
- Main content max width: 1440 px for dashboards and tables; 960–1120 px for workflows; 640–720 px for single-column forms.
- Page padding: 24 px tablet, 32 px desktop, 16 px mobile.
- Use a consistent page header containing breadcrumb when needed, title, short description, status/context, primary action, and secondary actions.
- Do not wrap every section in a card. Use cards for meaningful grouping; use page surface, dividers, and whitespace for hierarchy.
Spacing and geometry
- Base unit: 4 px.
- Primary spacing rhythm: 8, 12, 16, 24, 32, 48, 64.
- Default control height: 40 px; compact tables may use 36 px; primary mobile controls should be at least 44 px high.
- Border radius: 8 px for controls, 12 px for cards and drawers, 16 px only for prominent marketing surfaces.
- Borders are preferred over heavy shadows. Use one subtle elevation for popovers and drawers, and a stronger one only for modals.
- Avoid full-width form controls when the expected value is short.
Typography
Use the existing licensed/system font stack discovered in the repository. Do not introduce a new hosted font without checking licensing, loading performance, and privacy.
Recommended scale:
| Token | Size / line-height | Use |
|---|---|---|
| Display | 48–64 / 1.05–1.15 | Marketing hero only |
| H1 | 32–40 / 1.15 | Page title |
| H2 | 24–28 / 1.25 | Major section |
| H3 | 18–20 / 1.35 | Card/section title |
| Body | 16 / 1.5 | Default content |
| Body small | 14 / 1.45 | Supporting content and tables |
| Caption | 12 / 1.4 | Metadata, never primary instructions |
- Use sentence case for headings and buttons.
- Do not use all caps for routine navigation. Small uppercase labels may be retained only for rare structural overlines with sufficient letter spacing.
- Do not rely on font weight alone to communicate status.
Color and theme rules
Create semantic tokens rather than hard-coded component colors:
surface.canvas
surface.subtle
surface.raised
surface.inverse
text.primary
text.secondary
text.muted
text.inverse
border.default
border.strong
action.primary
action.primary.hover
action.secondary
status.info
status.success
status.warning
status.danger
brand.amber
brand.lime
focus.ring
chart.rater.self
chart.rater.manager
chart.rater.peer
chart.rater.team
chart.rater.customer
- Brand amber/lime may be used for logo, highlights, illustrations, and selected chart accents.
- Primary actions require a dark, high-contrast token rather than yellow text on dark navy.
- Status colors must include icon/text labels and must not be the only signal.
- Validate every foreground/background pair at WCAG AA contrast.
- Dark mode is a complete theme with tested tokens, not a CSS inversion.
Page-header anatomy
Breadcrumb or scope label
Title Primary action
One-sentence purpose Secondary actions / overflow
Status, period, owner, or last updated
Do not repeat “Overview” as a floating tab directly under every title. Use tabs only when the object has peer subviews.
Dashboards
A dashboard should answer questions, not merely fill space.
Recommended structure:
- Scope and time filter
- Four or fewer high-value KPI cards
- Action/exception queue
- One or two trends or funnels
- Detailed table with filters and drilldown
- Explanatory/privacy note where needed
KPI cards must show definition, period, comparison, and whether data is suppressed or incomplete.
Tables and lists
- Include search, filters, column controls, sort, pagination or virtual scrolling, selected-row count, and bulk actions where appropriate.
- Keep the first identifying column sticky on wide data sets.
- Use a details drawer for routine inspect/edit; reserve full pages for complex objects.
- Destructive actions live in an overflow menu and require clear confirmation.
- On mobile, convert rows to labeled cards or a horizontal-scroll table with a visible affordance; do not shrink text into illegibility.
- Never display raw JSON as the primary interface. Provide a developer view behind an explicit diagnostics control where useful.
Forms and wizards
- Labels remain visible; placeholders are examples, not labels.
- Put help text before or immediately after the control.
- Validate on blur and submit; do not announce errors only through color.
- Preserve user input after validation or network failures.
- Group related fields and use progressive disclosure for advanced settings.
- Use a stepper for tenant creation, integration setup, program creation, and complex imports.
- Every wizard has Save draft, Back, Continue, and Exit behavior defined.
- Show a review/diff page before publishing high-impact settings.
Empty, loading, error, and permission states
Every page and component must define:
- First-use empty state with a next action
- No-results-after-filter state
- Loading skeleton or progress state
- Recoverable error with retry
- Partial-data warning
- Permission-limited view
- Archived/retired state where applicable
The current plain access-denied page should become a branded 403 experience with a safe explanation, return action, help link, and correlation ID. It must not reveal hidden permissions or resource existence.
Survey completion layout
- Mobile-first, one primary question at a time or a short logical group.
- Persistent progress, estimated time, save state, and privacy link.
- Scale labels remain visible at both ends and are repeated for long matrices.
- “Not observed” and “Not applicable” are separate choices when the instrument distinguishes them.
- Keyboard shortcuts may be offered but never required.
- Open text fields include optional guidance and character feedback, not forced verbosity.
Results and feedback visualization
- Show the meaning of the scale and observation period.
- Always display valid response count and Not Observed rate near scores.
- Use consistent relationship colors throughout the product.
- Direct-label series; do not rely on legends alone.
- Show distribution or range where it matters, not only averages.
- Suppress groups below anonymity thresholds and explain suppression without implying who responded.
- Distinguish imported, native, self, and observer evidence.
- Do not imply that a 0.1 score difference is meaningful by visual exaggeration.
- Offer accessible tables for every chart.
Recommended result views:
- Competency overview
- Self versus others gap
- Relationship-group comparison
- Item distribution
- Role importance versus observed behavior
- Qualitative themes with source counts and evidence links
- Development priority shortlist
- Longitudinal trend with instrument/source markers
Responsive behavior
Mobile
- Individual tasks, surveys, results summaries, and PDP actions are fully supported.
- Use a bottom navigation or compact drawer for the individual workspace.
- Tables become cards or horizontally scroll with sticky identifiers.
- Drawers become full-screen sheets.
- Avoid hover-only interaction.
Tablet
- Collapsible sidebar.
- Two-column dashboards where content allows.
- Forms remain one column unless the relationship between fields is obvious.
Desktop
- Use available width for comparison and management, not for excessively long text lines.
- Support compact and comfortable density for data-heavy admin screens.
Accessibility baseline
- WCAG 2.2 AA target.
- Complete keyboard navigation and visible focus.
- Semantic landmarks and headings.
- Skip link in marketing, docs, and application shells.
- Correct labels, descriptions, errors, and live regions.
- No color-only meaning.
- Reduced motion support.
- Accessible name for every icon-only action.
- Screen-reader alternatives for charts and relationship matrices.
- Focus management for dialogs, drawers, validation, and route changes.
Content style
- Use direct, human language: “Invite raters,” not “Generate rater assignments.”
- Explain consequences: “HR can see completion, not your answers.”
- Replace “wrapped survey” with the product term selected in the glossary.
- Replace “reseal pending envelopes” in normal UI with “Restore access after key change,” while documenting the technical process internally.
- Buttons describe the result: “Create program,” “Send reminders,” “Publish report.”
- Avoid generic buttons such as “Load” when the user can choose “View Q3 results.”