SmartHR DESIGN.md
DESIGN.md
Design System Inspiration of SmartHR
Overview
Visual Theme & Atmosphere
SmartHR is the cloud HR/labor-administration platform that quietly runs payroll, social-insurance paperwork, and employee records for a large share of Japanese SMEs — and its design language is built around a single, unfashionable virtue: だれでも・効率よく・迷わずに ("anyone, efficiently, without getting lost"). This is not a brand that wants to be admired; it wants to be cleared through. The screens are the boring, load-bearing infrastructure of someone's employment, and the design system treats that responsibility with the seriousness of a public utility. The result is one of the most rigorous, openly-published, accessibility-first design systems in Japan — the SmartHR Design System lives in full public view at smarthr.design, primitive tokens, semantic tokens, governance docs and all.
The signature color is SmartHR Blue (#00C4CC) — a bright cyan-teal that reads as fresh and approachable rather than corporate-blue or fintech-navy. It is paired with a warm near-black for text (#23221F, not pure #000) and an accent orange (#FF9900) used sparingly for emphasis. Crucially, SmartHR does not flood its product chrome with the brand cyan; the working surfaces are predominantly white and warm-gray Stone neutrals, with cyan reserved for primary actions and brand moments. The palette is then organized into ten named, four-step color families (Stone, Aqua, Sakura, Momiji, Sunlight, Grass, Sky, Marine, Galaxy, Earth) — a system that lets product teams pick semantically (a green for success, a red for danger) without ever inventing an ad-hoc hex.
Typography is deliberately typeface-agnostic — SmartHR ships no brand webfont and instead defers to the operating system's native font stack, because rendering Japanese, alphanumerics, and screen-reader output correctly on every device matters more than a bespoke wordmark. The type scale is a clean rem-based ladder (XXS 10.67px → XXL 32px). The radius scale is tiny and restrained (s 4px / m 6px / l 8px / full 9999px). Everything about the system says: this is a tool, the tool should disappear, and no one should ever have to think about the UI while filing their own resignation paperwork or onboarding their first job.
Key Characteristics:
- SmartHR Blue
#00C4CC(cyan-teal) as the brand primary — fresh and approachable, never navy-corporate - Warm near-black text
#23221F(not pure black) on white + warm-gray Stone neutrals - Accent Orange
#FF9900used sparingly for emphasis/highlight moments - Ten named four-step color families (Stone / Aqua / Sakura / Momiji / Sunlight / Grass / Sky / Marine / Galaxy / Earth) — pick semantically, never ad-hoc
- Typeface-agnostic — no brand webfont; defers to OS-native font stack for correct JP + alphanumeric + a11y rendering
- rem-based type scale: XXS
0.667rem/XS0.75rem/S0.857rem/M1rem/L1.2rem/XL1.5rem/XXL2rem - Small restrained radius scale:
s4px /m6px /l8px /full9999px - Token architecture split into primitive tokens (raw values) and semantic tokens (role-mapped) — the canonical two-layer model
- Accessibility-first: explicit a11y guidelines, contrast governance, screen-reader-respecting copy
- The whole system is fully public at smarthr.design — governance, principles, components, write rules all open
Primary tasks
- File social insurance and year-end tax paperwork digitally
- Enter your bank details and address as a new hire
- Look up an employee, then clear the filter when nothing matches
- Submit an application and get a quiet confirmation
Brand Narrative
SmartHR was founded in Japan to attack a specific, unglamorous problem: the mountain of労務 (labor administration) paperwork that every Japanese company must file — social insurance, employment insurance, year-end tax adjustment (年末調整), onboarding and offboarding documents — almost all of it historically done on paper, by hand, by overworked back-office staff. SmartHR's premise was that this work is (a) universal, (b) miserable, and (c) almost entirely automatable. By digitizing the forms and the workflows, SmartHR turned a paper avalanche into a few clicks — and grew into one of Japan's most widely-used HR/labor SaaS platforms for small and medium businesses.
The design system reflects three commitments inherited from that origin. One, the product must work for everyone in a company — not just designers or power users, but the new hire filing their first form and the 60-year-old administrator who has done this on paper for thirty years. Hence だれでも (anyone) as the first word of the design intent, and hence the relentless accessibility focus. Two, it must be efficient — these are repetitive, high-volume, deadline-driven tasks, so the UI optimizes for throughput, not delight: dense tables, clear forms, minimal ceremony. Three, no one should get lost — labor paperwork is confusing enough without a confusing UI on top of it, so the system invests heavily in plain-language copy, predictable layouts, and a shared token vocabulary that keeps every team's screens feeling like one product.
What sets SmartHR apart in the Japanese SaaS landscape is that it published its design system fully in the open at smarthr.design — primitive and semantic tokens, accessibility guidelines, writing rules, governance — at a level of completeness rare even among global tech companies. The system is itself an expression of the brand: methodical, generous, unflashy, and built so that anyone can use it without getting lost.
Principles
-
Anyone, efficiently, without getting lost (だれでも・効率よく・迷わずに). The stated design intent and the lens for every decision. UI implication: If a screen helps a power user but loses a first-timer, it fails. Plain copy, predictable layout, and accessibility are requirements, not enhancements.
-
Accessibility is a gate, not a feature. Color contrast, focus visibility, and screen-reader-meaningful labels are checked before ship. UI implication: Text is
#23221Fon white for contrast; every interactive control has a visible focus ring; semantic family colors are chosen so the meaning survives even without the hue. -
Two-layer tokens: primitive then semantic. The palette exists as primitives; teams author against semantic roles. UI implication: Don't reference
#EC5A55directly — reference the danger role that maps to Momiji. This keeps the whole product re-themeable and coherent. -
The tool should disappear. SmartHR is infrastructure for someone's employment; the UI's success is measured by how little the user has to think about it. UI implication: No decorative flourish, no brand color where it isn't needed, restrained motion, small radii. White + Stone neutrals + cyan for the one action that matters.
-
Typeface-agnostic by principle. Deferring to OS fonts is a correctness decision — JP glyphs, alphanumerics, and assistive tech all render best natively. UI implication: Never hardcode a typeface or load a webfont. Build hierarchy from the size/leading/color tokens instead.
Personas
Personas are fictional archetypes informed by SmartHR's publicly-described user base (back-office staff and employees at Japanese SMEs), not real individuals.
佐藤 美咲 (Misaki Sato), 38, Osaka. HR/labor admin at a 60-person manufacturing company. Owns year-end tax adjustment season and onboarding. Used to drown in paper every January; now runs it through SmartHR. Cares only that it's fast, correct, and that employees can self-serve so they stop emailing her. Will forgive a plain UI; will never forgive a confusing one.
田中 健太 (Kenta Tanaka), 24, Tokyo. First job out of university. His only contact with SmartHR is onboarding: entering his bank details, address, and emergency contact on his phone in the first week. Wants it to feel obvious and trustworthy — this is his salary and personal data. Notices immediately if a field is unexplained.
山田 老 (Hajime Yamada), 61, Nagoya. Veteran administrator who did labor paperwork on paper for three decades. Distrusts software that hides what it's doing. SmartHR earns his trust through predictability, plain Japanese, and never burying the "what happens next." If a screen surprises him, he stops and calls support.
Colors
Two first-party surfaces were measured on 2026-09-21 and they are not interchangeable:
smarthr.design (the design system's own site, which publishes 22 --color-* custom
properties) and story.smarthr-ui.dev (the official smarthr-ui Storybook — 988 stories,
144 components — where the values are compiled into Tailwind shr- utility classes and
must be read off rendered components).
Brand
- SmartHR Blue (
#00c4cc) —--color-smarthr-blue. The corporate aqua. It is not the primary button colour — see below. Recorded as the brand mark colour.
Interactive
Measured on the smarthr-ui Button variant story:
- Primary (
#0077c7) — primary button fill; hover and pressed both#0068ae. This is--color-bg-blue, not the brand aqua. - Danger (
#e01e5a) — destructive fill (--color-danger); hover and pressed#ca1b51. - Link (
#0071c1) — the text-button foreground. - Surface Hover (
#f2f2f2) and Border Hover (#cac6c2) — the neutral hover pair shared by secondary, text and ghost buttons. - Disabled — fill
#f2f2f2, text#c1bdb7, cursornot-allowed. A palette swap, not an opacity trick.
Stone (neutral family)
- Canvas (
#ffffff) —--color-white. - Surface (
#f8f7f6) —--color-light-grey-3, the page wash behind cards. - Border (
#d6d3d0) —--color-light-grey-1. Measured identically on both surfaces. - Hairline (
#edebe6) —--color-divider. - Muted (
#aaa69f) —--color-light-grey-4. - Body (
#4e4c49) —--color-dark-grey-1. - Text Grey (
#706d65) —--color-text-grey; measured as the StatusLabel resting text.
Text
- Foreground (
#23221e) — measured on rendered smarthr-ui components. The two surfaces disagree by one unit here:smarthr.designdeclares--color-text-black: #23221fand paints it 440 times, while smarthr-ui components compute#23221e. Both are SmartHR's; the component value is recorded because it is what products render. The docs value is kept in the conflict matrix rather than averaged away.
Semantic Color Families
Measured on the smarthr-ui StatusLabel type story — this is the real semantic set:
- Info (
#0077c7) — same value as the primary action. - Success (
#0f7f85) — a teal,--color-nav-active, not a green. - Error (
#e01e5a) — same value as the danger action. - Warning (
#ffcc17) — a yellow fill carrying#23221etext, the only semantic variant that fills rather than outlines.
Typography
Font Stack
SmartHR publishes no brand typeface token. The design system's token set contains
--font-size-* and --leading-* but no font-family entry, so no family is recorded here —
the field is absent, not substituted.
What was observed, kept separate by surface:
- smarthr-ui components compute
system-ui— the OS UI font. A deliberate choice for a dense B2B product, but a system stack is not promoted to a brand face. - smarthr.design renders
SDSYuGothic, a webfont scoped to the design-system site. - smarthr.jp (corporate marketing) renders
AdjustedYuGothic.
Three surfaces, three different faces, none of them a published product-font token.
Type Scale (semantic font-size tokens)
Read live from smarthr.design; the tokens are named by their pixel value and expressed
in rem:
| Token | rem | px |
|---|---|---|
--font-size-10 … --font-size-16 | .625 / .688 / .75 / .813 / .875 / .938 / 1 | 10 · 11 · 12 · 13 · 14 · 15 · 16 |
--font-size-18 … --font-size-28 | 1.125 / 1.25 / 1.5 / 1.625 / 1.75 | 18 · 20 · 24 · 26 · 28 |
--font-size-36 … --font-size-54 | 2.25 / 3 / 3.25 / 3.375 | 36 · 48 · 52 · 54 |
Sixteen steps. Control text measures 16px on rendered buttons and inputs.
Line Heights (leading tokens)
--leading-normal1.5 — body and running text.--leading-tight1.25 — headings and dense rows.
Only two leading tokens are published.
Conventions
- 16px is the control baseline: buttons and inputs both compute 16px, buttons at weight 700 and inputs at 400.
- Weight carries emphasis, not size: the filled and neutral buttons share 16px and differ by weight and fill.
- The scale is named by pixels: a token is
--font-size-24, not--font-size-lg, so the intended size is unambiguous at the call site.
Layout
Density
SmartHR is medium-to-high density by necessity — HR dashboards surface many employees, many fields, many statuses. The system manages density with generous NORMAL (1.5×) body leading and Stone-neutral separation rather than cramming. Tables are first-class citizens.
Spacing
Spacing uses a dedicated spacing token scale (余白) — a stepped set of semantic gaps so vertical rhythm stays consistent across teams. Page content sits on Stone01 #F8F7F6; white cards (radius l 8px) float on that warm-gray base for separation without heavy shadows.
Structure
- App-shell pattern: persistent left navigation + top header + main content area
- Forms are the central artifact — labeled fields, helper text, inline validation
- Z-index is governed by a layer-order token (
レイヤー順序) so modals, dropdowns, and toasts never fight
Responsive Behavior
SmartHR ships media-query tokens (メディアクエリ) so breakpoints are shared, not re-invented per team.
| Width | Behavior |
|---|---|
| Desktop | Full app shell: left nav + header + wide content, dense tables shown in full |
| Tablet | Left nav may collapse; tables gain horizontal scroll or column priority |
| Mobile | Single column; left nav becomes a drawer; XXL heading drops 32px → 28.8px; tables reflow to stacked cards |
Touch & Mobile
- Touch targets respect minimum tap height; inputs grow comfortable on mobile
- Only XXL typography steps down on mobile; body and below stay constant for legibility
- Forms remain the central artifact — mobile keeps full validation and helper text
Elevation & Depth
SmartHR uses a shadow token scale (影) for elevation, kept subtle. The product reads mostly flat — separation comes from Stone-neutral backgrounds and 1px borders rather than dramatic shadows.
- Cards: minimal or no shadow; 1px Stone02 border + Stone01 page bg does the separating
- Dropdowns / popovers: light shadow token
- Modals / dialogs: stronger shadow token + Stone01 backdrop scrim
- Elevation always references the shadow token scale, never an ad-hoc
box-shadow
Motion & Easing
SmartHR's motion is restrained and functional — motion exists to clarify state change and continuity, never to entertain. An HR tool used under deadline pressure has no room for kinetic flourish.
Durations:
| Token | Value | Use |
|---|---|---|
motion-instant | 0ms | Toggle/checkbox commits, selection |
motion-fast | 150ms | Hover, press, small reveals, focus ring |
motion-standard | 250ms | Dropdown open, accordion, tab switch |
motion-modal | 300ms | Modal/dialog enter-exit |
Easings:
| Token | Curve | Use |
|---|---|---|
ease-standard | cubic-bezier(0.4, 0, 0.2, 1) | The default — 95% of motion |
ease-enter | cubic-bezier(0, 0, 0.2, 1) | Things arriving (dropdowns, modals, toasts) |
ease-exit | cubic-bezier(0.4, 0, 1, 1) | Dismissals |
Spring stance. Spring / overshoot easing is forbidden on SmartHR product surfaces. The brand intent is "without getting lost"; bouncy motion adds noise to a tool whose job is to be invisible. Confidence in a business tool comes from predictability, not delight.
Signature motions.
- Modal enter. Backdrop scrim fades in over
motion-modal / ease-enter; the dialog appears with a small opacity + slight upward translate. Controlled, never bouncy. - Dropdown / select open. Opens over
motion-standard / ease-enterwith a short height/opacity reveal; closes overease-exit. - Focus ring. Appears instantly-to-
motion-faston focus — accessibility takes priority, so the ring never lags behind keyboard navigation. - Inline save feedback. Success notice fades in over
motion-fastand lingers briefly; no celebratory animation.
Reduce motion. Under prefers-reduced-motion: reduce, all motion-* tokens collapse to motion-instant; skeleton shimmer becomes a static Stone block; modals appear without translate. Accessibility outranks polish, always.
Verified: 2026-05-19 (omd:add-reference — JP batch)
Tier 1 sources: https://smarthr.design/products/design-tokens/ (SmartHR Design System's own token page — 22 --color-*, 16 --font-size-*, 2 --leading-* read live via getComputedStyle); https://story.smarthr-ui.dev (official smarthr-ui Storybook, 988 stories / 144 components — component geometry, variants and hover/pressed/disabled measured on rendered DOM); https://github.com/kufu/smarthr-ui (the library's official repository on SmartHR's GitHub org, kufu); https://smarthr.jp (corporate marketing — font observation only, a separate evidence domain).
Tier 2 sources: getdesign.md / refero — not separately fetched (official public DS supersedes).
Conflicts unresolved: none. Brief-supplied #00C4CC confirmed exactly against smarthr.design/basics/colors/.
Components
Buttons
Measured on the smarthr-ui variant and disabled stories, pointer parked between
readings. All variants share 42px height, 6px radius, 12px 16px padding and 16px text;
they differ by fill, border and weight. No variant changes on focus — smarthr-ui draws
focus with a separate ring rather than restyling the control.
| Variant | Rest | Hover / Pressed | Weight |
|---|---|---|---|
| Primary | #0077c7 fill, #ffffff text, 1px solid #0077c7 | #0068ae | 700 |
| Secondary | #ffffff fill, #23221e text, 1px solid #d6d3d0 | #f2f2f2 fill, #cac6c2 border | 700 |
| Danger | #e01e5a fill, #ffffff text | #ca1b51 | 700 |
| Text | transparent, #0071c1 text | #f2f2f2 fill | 400 |
| Ghost | transparent, #23221e text | #f2f2f2 fill | 700 |
| On-dark | transparent, #ffffff text and border | rgba(3,3,2,0.15) fill | 700 |
| Disabled | #f2f2f2 fill, #c1bdb7 text, cursor: not-allowed | — | 700 |
The disabled treatment is a palette swap at full opacity, so disabled text keeps its own contrast rather than inheriting a dimmed parent.
Inputs
- Rest:
#fffffffill,#23221etext,1px solid #d6d3d0, 6px radius, 42px tall, 16px / 400 — the same height and radius as a button, so a field and a button align on a row. - Focus and pressed add an outline ring; no fill or border colour change was observed.
Status labels
- 24px tall,
#fffffffill,#706d65text,1px solid #d6d3d0at rest. Semantic variants recolour text and border together (info#0077c7, success#0f7f85, error#e01e5a); warning is the exception and fills#ffcc17with#23221etext.
Cards / Surfaces
Base Surface
- Background:
#FFFFFF - Border:
1px solidStone02#EDEBE6 - Radius:
8px(tokenl) - Use: Content panels, dashboard cards on a Stone01
#F8F7F6page background
Notifications / Status
Info Notice
- Background: Sky01
#DDF2FB - Text: Sky04
#1376A0 - Radius:
4px - Use: Informational banners
Success Notice
- Background: Grass01
#E6F2C8 - Text: Grass04
#378445 - Use: Confirmation messages
Warning Notice
- Background: Sunlight01
#FAF2D0 - Text: Earth-dark / Sunlight04
#F56121 - Use: Caution messages
Error Notice
- Background: Momiji01
#FFE7E5 - Text: Momiji04
#A53F3F - Use: Error / failure banners
Badges / Chips
Status Chip
- Background: semantic family 01 tint
- Text: matching family 04 dark
- Radius:
full(9999px) or4px - Use: Employee status, application state — color-coded by semantic family
Published component roster (144 published in Storybook; 8 measured here)
The SmartHR Design System publishes 61 components, read from its own component index at
https://smarthr.design/products/components/ on 2026-09-19. Names are given as the host
publishes them — the PascalCase identifiers of the smarthr-ui package, which is how the index
labels each card. No value, state or geometry below is asserted by this reference.
AccordionPanel, AppHeader, AppNavi, Badge, Base, BottomFixedArea, Browser, Button, Calendar, Checkbox, Chip, Combobox, DatePicker, DefinitionList, Dialog, Disclosure, DropZone, Dropdown, ErrorScreen, Fieldset, FileViewer, FloatArea, FormControl, Formatter, Header, Heading, Icon, InformationPanel, Input, InputFile, Layout, LineClamp, Loader, NotificationBar, PageCounter, Pagination, Picker, RadioButton, RadioButtonPanel, ResponseMessage, Scroller, SectioningContent, SegmentedControl, Select, SideMenu, SideNav, SmartHRAILogo, SmartHRLogo, SpreadsheetTable, StatusLabel, Stepper, Switch, TabBar, Table, Text, TextLink, Textarea, Timeline, Tooltip, VisuallyHiddenText, WarekiPicker
Two are marked deprecated by the host itself: BottomFixedArea and DatePicker are both
labelled 非推奨 on the index. They stay in the roster because SmartHR still publishes them, and
the label is recorded because it is the host's, not this reference's judgement.
The list is flat because the index presents it flat, in one alphabetical grid of cards with no category headings.
What this reference's thirteen entries are, and what they are not
§4 records thirteen stylings. Their use: strings are descriptions of purpose — "Single most
important action (Save/Submit)", "Cancel / secondary beside primary" — with no selector, no
capture id, and no class from the smarthr-ui package. This reference has no verification_v2
block and therefore no surface record either.
Several of the thirteen carry names that resemble published components. None is claimed as a rendered instance of one, and none of the 61 above carries a measured value here.
States
| State | Treatment |
|---|---|
| Empty (no records yet) | White card on Stone01 bg, one plain-language line (M, #23221F) explaining what will appear here, one primary #00C4CC button for the first action. No illustration clutter. |
| Empty (search/filter no results) | Single calm line in Stone04 #4E4C49 (該当する従業員が見つかりませんでした pattern). Offer to clear the filter; no spammy suggestions. |
| Loading (table/page) | Skeleton blocks in Stone01/Stone02 at final dimensions. Subtle shimmer. Layout doesn't shift when data lands. |
| Loading (inline action) | In-button spinner; button keeps its width and 6px radius; label swaps to a loading state. |
| Error (field validation) | Border swaps to Momiji #EC5A55; helper text below in #A53F3F (XS/12px), one sentence: cause + fix. |
| Error (page/system) | Error notice banner: bg Momiji01 #FFE7E5, text #A53F3F. States the condition plainly, offers retry. One polite acknowledgment, no apology-flood. |
| Success | Quiet — success notice (bg Grass01 #E6F2C8, text #378445) or inline 保存しました. No confetti; the task being done is the reward. |
| Disabled | bg Stone02 #EDEBE6, text Stone03 #AAA69F. The palette swap is the signal; no opacity hack. |
| Skeleton | Stone-neutral blocks at exact final size, never on already-known values; respects reduced-motion. |
| Warning / caution | Sunlight notice (bg #FAF2D0) before a consequential action (e.g., a filing deadline). Color carries urgency; words stay calm. |
Do's and Don'ts
- DO reserve SmartHR Blue (
#00C4CC) for the primary action and brand moments. DON'T flood working surfaces with cyan — the product is white + Stone neutrals. - DO use warm near-black
#23221Ffor text. DON'T use pure#000000— SmartHR softens text deliberately. - DO pick colors from the ten semantic families (Grass for success, Momiji for danger, Sunlight for warning, Sky for info). DON'T invent ad-hoc hexes — the families exist precisely so you never have to.
- DO defer to the OS-native font stack. DON'T load a brand webfont or hardcode a single typeface — it breaks JP/a11y rendering.
- DO use the radius tokens
s(4) /m(6) /l(8) /full. DON'T use 12px+ rounded corners — SmartHR's radius is small and businesslike. - DO treat accessibility as a gate, not a nicety — contrast, focus rings, screen-reader copy. DON'T ship a control that fails the a11y guidelines.
- DO build hierarchy from size + leading + color. DON'T reach for a heavy display weight; the system has no dramatic bold tier.
- DO use Orange (
#FF9900) sparingly for emphasis. DON'T promote it to a second primary — it dilutes the cyan signal.
Voice & Tone
SmartHR's voice is plain, polite, and de-stressing. The product sits at one of the most anxiety-inducing intersections in adult life — employment paperwork, payroll, social insurance, resignations — and the copy's entire job is to lower the user's blood pressure. It writes in standard polite Japanese (です・ます調 / 丁寧語), short declarative sentences, and avoids both bureaucratic stiffness (硬い役所言葉) and over-familiar startup chumminess. The guiding internal phrase is だれでも・効率よく・迷わずに — anyone, efficiently, without getting lost — and every microcopy decision is measured against "did this help the user not get lost?" English exists for international employees but Japanese is the first-class voice.
| Context | Tone |
|---|---|
| Buttons | Short JP verb phrase — 保存, 申請する, 次へ. Imperative-polite, no exclamation marks. |
| Form labels & helper text | Concrete and reassuring — explain what this field is for and what happens next, in plain terms. |
| Empty states | Blameless one-liner + the single next action. Never implies the user did something wrong. |
| Error messages | State the cause, give the fix, in one calm sentence. No 申し訳ございません-flood; one polite acknowledgment max. |
| Success | Quiet confirmation (保存しました) — the work is done, no celebration needed. |
| Notices | Color-coded by semantic family + plain-language summary. The color carries urgency; the words stay calm. |
| Accessibility copy | Written to be read by a screen reader — meaningful labels, no decorative noise. |
Forbidden patterns. Bureaucratic stiffness (〜していただきますようお願い申し上げます walls of keigo), apology-flooding on non-destructive states, exclamation-mark emphasis on buttons (保存する!), marketing superlatives (最高の, 革新的な), emoji in product chrome, and any copy that makes the user feel they're at fault for a system condition. Decorative cleverness that costs clarity is a bug.
Voice samples.
保存— primary action verb on forms.申請する— submit-an-application primary action.だれでも・効率よく・迷わずに— the system's stated design intent, surfaced on smarthr.design.
Agent Prompt Guide
Quick Color Reference
- Primary action / brand: SmartHR Blue
#00C4CC - Text:
#23221F(warm near-black) - Accent / emphasis: Orange
#FF9900 - Page bg: Stone01
#F8F7F6; card bg#FFFFFF; border Stone02#EDEBE6 - Muted text: Stone04
#4E4C49/ Stone03#AAA69F - Success Grass
#3DCC65/ Danger Momiji#EC5A55/ Warning Sunlight#FFD74A/ Info Sky#32B7F0 - Radius:
s4px /m6px /l8px /full9999px
Example Component Prompts
- "Create a SmartHR primary button: bg
#00C4CC, white text,6pxradius, 16px bold, comfortable padding. Beside it a secondary button: white bg,#23221Ftext, 1px#EDEBE6border, same radius." - "Build a SmartHR text input: white bg, 1px
#AAA69Fborder,4pxradius,#23221Ftext. Focus state: border#00C4CC+ focus ring. Error state: border#EC5A55and 12px helper text in#A53F3Fbelow." - "Design a SmartHR dashboard card: white surface, 1px
#EDEBE6border,8pxradius, sitting on a Stone01#F8F7F6page background. Heading at XL (24px), body at M (16px) with 1.5× line height, text#23221F." - "Create a SmartHR status notice set: info (bg
#DDF2FB, text#1376A0), success (bg#E6F2C8, text#378445), warning (bg#FAF2D0), error (bg#FFE7E5, text#A53F3F). 4px radius, M-size text."
Iteration Guide
- SmartHR Blue (
#00C4CC) is the single primary — one per screen, brand moments only. - Text is
#23221F, not#000— warm near-black always. - Pick from the ten semantic families — never invent a hex; Grass/Momiji/Sunlight/Sky cover success/danger/warning/info.
- OS-native fonts only — no webfont, no hardcoded typeface.
- Radius is small —
s/m/l(4/6/8px). Avoid 12px+. - Hierarchy from size + leading + color — no heavy display weight exists.
- Accessibility is a gate — contrast, focus rings, screen-reader copy are non-negotiable.
- Flat by default — Stone neutrals + 1px borders separate; shadows are subtle and tokenized.
Governance
Known Gaps
- Contrast,
button-disabled. Text#c1bdb7on#f2f2f2measures 1.67:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted.
색상
브랜드
면과 글자
상태
그 밖의 색
타이포그래피
타입 스케일
- size-54Largest published step54px
- size-52Marketing display, large52px
- size-48Marketing display48px
- size-36Marketing heading36px
- size-28Display heading28px
- size-26Large heading26px
- size-24Page heading24px
- size-20Section heading20px
여백과 모양
여백
- xs4px
- sm8px
- md12px
- base16px
- lg24px
- xl32px
모서리 반경
- md6px
- full9999px
컴포넌트
- button-primarybutton-primary채움 #0077c7 · 글자 #ffffff · 테두리 1px solid #0077c7 · 반경 6px · 안쪽 여백 12px 16px · 글자 크기·굵기 16px / 700
- 호버 #0068ae
- 누름 #0068ae
- button-secondarybutton-secondary채움 #ffffff · 글자 #23221e · 테두리 1px solid #d6d3d0 · 반경 6px · 안쪽 여백 12px 16px · 글자 크기·굵기 16px / 700
- 호버 #f2f2f2
- 누름 #f2f2f2
- button-dangerbutton-danger채움 #e01e5a · 글자 #ffffff · 테두리 1px solid #e01e5a · 반경 6px · 안쪽 여백 12px 16px · 글자 크기·굵기 16px / 700
- 호버 #ca1b51
- 누름 #ca1b51
- button-disabledbutton-disabled채움 #f2f2f2 · 글자 #c1bdb7 · 반경 6px
- 비활성 #f2f2f2
- input채움 #ffffff · 글자 #23221e · 테두리 1px solid #d6d3d0 · 반경 6px
- 포커스 outline ring