Semantic first
Name decisions by purpose—surface, status, hierarchy—not by the color they happen to use.
A practical visual system for building consistent experiences across Kantoku, Superviso, and JPRL Platform—without erasing what makes each product distinct.
Name decisions by purpose—surface, status, hierarchy—not by the color they happen to use.
Neutral surfaces and restrained elevation keep attention on product information and actions.
Share presentation primitives while keeping navigation, terminology, and workflows local.
01 / Foundations
Existing cross-product decisions, made explicit and reusable. These values should be consumed through semantic tokens.
Neutral structure with muted semantic feedback.
--surface-canvas#F6F6F4--surface-panel#FFFFFF--text-strong#1C1917--text-muted#78716C--border-subtle#DEDBD7--surface-inverse#292524Muted organizational color for selection, categories, charts, icons, and restrained callouts.
--accent-blue-surfaceInformation · platform features--accent-violet-surfaceGovernance · workflow milestones--accent-teal-surfaceTechnical categories · integrationsAllowed: blue, violet, and teal can organize an interface.
Reserved: green, amber, and red communicate status or severity.
Brand: Kantoku red identifies the product; it is not a general accent.
Native system fonts keep product UI crisp and familiar.
--type-page-title · 22px / 600--type-section-title · 14px / 600--type-body · 14px / 400--type-label · 13px / 500A small radius scale clarifies hierarchy.
--radius-control · 10px--radius-navigation · 12px--radius-panel · 16px--radius-modal · 18px02 / Components
Use one visually dominant action per region. Labels are concise, specific, and sentence case.
.button-primary {
min-height: var(--control-height);
border-radius: var(--radius-control);
background: var(--surface-inverse);
color: var(--text-inverse);
transition: background var(--motion-interface);
}
List page · one primary action
Documented user records for this organization.
Detail page · contextual actions only
PRV-5 · Superviso · Jean-Philippe Rivard Lauzier
03 / Components
Labels stay visible, errors remain adjacent, and controls use the same height across forms.
Use when the complete option set is short, stable, and easy to scan.
Use for people, assets, owners, countries, or any long and changing collection.
Use only for a setting that applies immediately.
--calendar-width 288px · --calendar-cell-size 32px
--form-content-max-width; use one column by default and two for related fields.04 / Components
Use banners for page-level feedback that must remain visible long enough to understand or act on. Tone, icon, and copy communicate the same meaning.
Superviso uses bottom-right toasts for short operation feedback. Kantoku has toast styling available, but currently uses banners and local action messages instead.
Both products use tooltips for icon meaning, timestamps, truncated values, and brief supplemental context.
05 / Components
Status language is semantic. Superviso’s audited product labels map to six shared workflow tones and one additional high-risk severity tier.
--status-success-surfaceApproved, completed, healthy--status-danger-surfaceFailed, denied, overdue--status-warning-surfaceOpen, onboarding, needs attention--status-info-surfacePending, provisioning, under review--status-special-surfaceSubmitted, provisioned, offboarding--status-neutral-surfaceInactive, canceled, unavailableColor supports the label; it never replaces it. Use --badge-radius, compact spacing, semibold text, and an explicit workflow label.
None · inactive · canceled · incomplete · closed · archived
Draft · open · onboarding
Pending · in progress · reviewing · provisioning · under review
Submitted · reviewed · provisioned · deprovisioned · offboarding
Successful · active · approved · completed
Failed · suspended · declined · denied · returned · overdue
--severity-high-surface
Orange is reserved for the high-risk step between amber medium and red critical. Classification badges may reuse blue, violet, amber, and red only when their visible label carries the taxonomy.
Legacy raw Tailwind badge colors are valid existing behavior, but they are not additional canonical colors.
06 / Components
The canvas separates primary panels. Borders belong to nested structure, controls, and meaningful divisions.
Use a borderless 16px panel, then retain borders on nested rows or cards.
Avoid heavy shadows, competing radii, and borders around every surface.
Remove this asset from active records. It can be restored later.
Permanently remove this asset, its history, results, and events.
Modal surfaces use an 18px radius, restrained elevation, and explicit actions.
07 / Components
Search remains immediate. Structured filters are deliberate, countable, removable, and easy to clear.
08 / Components
Registries stay scannable, record details stay semantic, and every collection keeps useful context while empty, loading, or unavailable.
| Email address | Type | Status | Last login | Actions | |
|---|---|---|---|---|---|
| JPJean-Philippe Rivard LauzierUSR-1 | jp@kantoku.io | Internal | Active | a few seconds ago | |
| JSJohn SmithUSR-2 | jsmith@kantoku.io | Internal | Active | a day ago | |
| PNPriya NairUSR-3 | pnair@kantoku.io | External | Invited | Never |
No users match the current search and filters.
Loading users
Your current search and filters are preserved.
--table-row-height keeps rows at least 48px; toolbar controls may use the compact height.--detail-label-width140px stable label column--empty-state-max-widthConstrained explanatory copy--avatar-size32px default identity10 / Guidance
Patterns align presentation while leaving routing, permissions, tenancy, and business behavior in each product.
Use for sign in and account creation when the product benefits from a stronger first impression.
Use for password recovery, verification, invitations, and two-factor challenges.
--auth-form-max-width.11 / Guidance
A component is not specified until its keyboard, focus, disabled, loading, error, and responsive behavior are known.
All actions are reachable in a logical order. Escape closes transient surfaces and returns focus.
Interactive elements receive a clear 2px indicator that is not removed for aesthetic reasons.
Icon-only controls have accessible names. Inputs keep persistent, associated labels.
Status and validation always include text, structure, or an icon in addition to tone.
Loading does not shift layout. Disabled controls remain legible and communicate availability.
Smaller screens change layout—not information hierarchy or action clarity.
12 / Adoption
Version 0.11 adds the canonical localized date field and calendar popup, including month navigation, selected and outside-month states, keyboard movement, and responsive positioning. Component extraction still waits for stable cross-product APIs.
Use canonical appearance and states during product work.
Replace duplicated foundations with versioned semantic variables.
Extract only stable, product-neutral primitives.