잔디 DESIGN.md
DESIGN.md
JANDI — Design Reference
A Korean collaboration platform whose public expression is direct, green-led, and operational.
Overview
Visual Theme & Atmosphere
JANDI (잔디) is Toss Lab’s Korean business-collaboration service, introduced in 2015 and now presented by the company as an enterprise platform that connects work communication, AI-assisted collaboration, and project management. Its public marketing does not imitate an internal dashboard: it uses a white field, black Korean type hierarchy, and a consistent green conversion action to make a broad B2B offer immediately legible. The captured landing, collaboration, member-management, security, and AI pages keep that visual language coherent while giving each subject its own explanatory cards and calls to action.
The product is evolving beyond messaging. Toss Lab’s June 2026 Project 2.0 announcement describes project management integrated with the messenger, including a contributor-centred work view and a manager dashboard. That is first-party product context, not authorization to treat the public-marketing measurements below as an authenticated-product design system. The values in this reference remain scoped to the six supplied marketing capture records, which represent five distinct URLs.
Primary tasks
- Message a team and run its projects in the same place
- Check the work assigned to you and your load for the week
- Follow project progress and who is working on what
- Compare the collaboration, security and AI pages before adopting the tool
Iconography
The capture has declared-only icomoon and swiper-icons font assets but no visible-use match, named icon catalogue, sizing rule, or product-icon evidence. No icon token is promoted.
Imagery & Illustration
The public marketing pages use product imagery and explanatory cards, but the supplied DOM/style evidence does not establish an image ratio, crop rule, overlay system, or reusable screenshot frame. Do not derive an illustration system from those visuals.
Brand Narrative
Toss Lab’s official company history dates the JANDI launch to 2015. The service is presented as a collaboration platform for business communication and, in its current direction, AI-assisted and project-based work.
In June 2026, Toss Lab announced JANDI Project 2.0, a project-management experience integrated with messaging and redesigned around visibility for both individual contributors and team managers. This reference keeps that product evolution separate from the measured public-marketing styles.
Principles
- Use green as the public action signal. The capture supports
#00c473on the repeated global public navigation action, not a universal product semantic system. - Let large Korean headlines carry marketing hierarchy. The measured 56px, 42px, 40px, and 32px treatments belong to the captured public pages only.
- Keep explanatory cards scoped to their feature surface. The observed security and AI environment cards are static marketing cards, not generic product-card variants.
- Keep evidence domains separate. Marketing, documentation chrome, font licensing, corporate context, and the unobserved authenticated application have different evidentiary roles.
Personas
First-party material describes the service in terms of teams and collaboration work, and the Project 2.0 release specifically distinguishes individual contributors from team managers. Those are the only stakeholder groups retained here:
- Individual contributors: view their assigned work and weekly workload in the announced project experience.
- Team managers: use the announced dashboard to see project progress and member work status.
- Teams: use messaging and project work as connected collaboration contexts.
No named or demographic personas are invented.
Colors
Color & Typography
Color tokens
#00c473— observed fill and border of the global public navigation action on all six capture records.#ffffff— observed public canvas, on-green text, white landing action, and the scoped security/AI environment-card surface.#000000— observed body and heading ink on the public pages.#333333— observed supporting text on public feature, security, and AI content.#a2a2a2— observed muted public text and static accordion-button presentation.#041911— observed text on the white landing and pill-link actions.- Component-local, recorded in §4 and not promoted to a palette role:
#dddddd, the 1px border of the global outline action.
These are public-surface roles only. Neither the documentation centre nor the announced authenticated project experience contributes a semantic application palette.
Typography evidence classes
- Live computed public-web use: visible text across all six supplied records resolves to
"Noto Sans", sans-serif. The supplied FontFaceSet record classifiesNoto Sansas loaded/high confidence, with 676 observed uses across headings, body, buttons, cards, list items, and text. Seven JANDI-CDN OTF URLs corroborate that computed family. The machine UI-family token therefore names onlyNoto Sans. - Official font and licence context: Noto’s official documentation describes Noto fonts as licensed under the SIL Open Font License. This explains the font’s licence boundary; it does not independently establish a JANDI product-font claim.
- Declared-only assets:
icomoonandswiper-iconshave@font-facedeclarations but zero observed visible uses. They remain declared icon-font assets, not JANDI text families or available specimens. - Measured public hierarchy:
homesupplies the 56px/700/80px hero and 42px/700/60px feature samples; the feature routes supply 56px/700/66px page-heading samples. These are observed public treatments, not a full product type scale. - Documentation chrome: the support centre is a separate first-party documentation domain. Its theme article is recorded for domain classification only and supplies no visual token or component claim.
Layout
Layout & Grid
- Landing hierarchy:
homerecords a 56px/700/80px hero and 42px/700/60px feature headings. These are desktop public-marketing samples, not a responsive type contract. - Feature-page hierarchy: the collaboration, member, security, and AI routes record 56px/700/66px page headings; their observed secondary headings vary by page (40px or 32px).
- Action spacing: the repeated global green action uses 7px 14px internal padding. The white landing action uses 12px 30px. These are individual component measurements, not a general spacing scale.
- Boundary: the supplied evidence establishes neither a page container maximum nor a breakpoint, logged-in application shell, or universal grid.
Motion & Easing
Motion
No duration, easing, transition, hover result, or other motion behavior was recorded. Motion is intentionally undocumented.
No motion token, easing curve, duration, or reduced-motion behavior was captured. Preserve this boundary rather than inventing a motion system.
Components
All entries below retain the supplied surface and selector provenance. They are static computed-style observations, not a reusable authenticated-product library. The bundle holds no ::state-* frame for any element on any of the six records, so hover, pressed, and focus values are not declared; disabled, error, dialog, menu, and responsive variants were not observed. Corrected 2026-09-30: the July text gave the zero interaction count as the reason; that count covers menu, dialog, and tab expansions only.
Global navigation action
Primary default
- Background:
#00c473 - Text:
#ffffff - Border:
1px solid #00c473 - Radius:
6px - Padding:
7px 14px - Font:
14px / 500 / Noto Sans - Use: repeated public global navigation action (
header-primary-action, 69px × 36px); evidencehome::[data-omd-capture="10"]and the corresponding selector onsurface-2throughsurface-6.
Landing action
White default
- Background:
#ffffff - Text:
#041911 - Radius:
6px - Padding:
12px 30px - Font:
15px / 500 / Noto Sans - Use: static white landing action on the duplicated landing records (
landing-white-action, 115px × 44px, line height 20px); evidencehome::[data-omd-capture="19"],"20"andsurface-2::[data-omd-capture="19"].
Feature floating navigation
Static default
- Background: transparent, inside a white bar (
div.floatingNavButtonContainer:#ffffff, padding0px 120px; inner gap8px) - Radius:
10px - Padding:
12px - Size: 105px × 105px
- Label: not claimed. Corrected 2026-09-30: the July entry gave
#000000text and16px / 400 / Noto Sanstype; those equal the page body's inherited text (the body records#000000, 16px / 400 / 16px), so they describe the item as a container, and its label was not sampled. - Use: static
role="button"floating feature-navigation item (feature-floating-nav-button); evidencesurface-3::[data-omd-capture="11"]through"15"(Collaboration_icon1__cFiWmonward) andsurface-4::[data-omd-capture="11"]through"14"(Member_icon1__MIU61onward).
Security environment card
Static default
- Background:
#ffffff - Radius:
16px - Padding:
40px 32px 54px - Shadow:
rgba(0, 18, 47, 0.08) 0px 14px 24px 0px - Size: 379px × 334px (three cards)
- Text (children): a
#33333324px / 700 / 34px title (h3) and a#33333316px / 400 / 24px description (p), under an empty 40px icon holder (strong). - Use: static security-environment card; evidence
surface-5::li.Security_securityEnvironmentList__3CRP0. - Corrected 2026-09-30: the July entry gave the card
#000000text and16px / 400type, the page body's inherited values on thelicontainer (line height 16px); the text sits in the children above. It also left out the card's measured shadow, which the frontmatter now carries on this card only.
AI environment card
Static default
- Background:
#ffffff - Radius:
16px - Padding:
40px 32px 54px - Shadow:
rgba(0, 18, 47, 0.16) 0px 14px 24px 0px, twice the security card's shadow alpha - Size: 276px × 358px (four cards)
- Text (children): a
#33333340px / 700 / 42px label (strong), a 24px / 700 / 34px title (h3) and a 16px / 400 / 24px description (p), all#333333. - Use: static AI-environment card; evidence
surface-6::li.JandiAi_aiEnvironmentList__2ng2t. - Corrected 2026-09-30: as with the security card, the July
#000000/16px / 400values were the container's inherited text, and the measured shadow was left out.
Global navigation outline action
Default (header-outline-action)
- Background: transparent
- Text:
#000000 - Border: 1px
#dddddd - Radius:
6px - Padding:
7px 14px - Size: 82px × 36px
- Font:
14px / 500 / 20px Noto Sans - Use: the outline action beside the green primary action;
home::[data-omd-capture="9"], with the same values on all six records.
Global navigation menu link
Default (header-nav-link)
- Text:
#333333 - Padding:
8px 14px - Height: 36px
- Font:
14px / 500 / 20px Noto Sans - Use: eight menu links,
home::[data-omd-capture="1"]through"8", identical on all six records. The label is the link itself; itslirecords the inherited#00000014px / 400 text and is not read as the label.
Security accordion button
Default (security-accordion-button)
- Background: transparent
- Text:
#a2a2a2 - Padding:
16px 0px - Size: 460px × 62px
- Font:
20px / 700 / 30px Noto Sans - Variant: the first button of each of the two groups (
surface-5::[data-omd-capture="11"],"16") records#00c473, 32px / 700 / 46px and padding0px 0px 16px, and it is the only button followed by a captured description paragraph (#33333316px / 400 / 30px). The bundle records noaria-expandedoraria-selectedon these buttons, so the variant is described here, not declared as a state. - Use:
surface-5::[data-omd-capture="12"]through"15"and"17"through"20"(button.Security_accordionButton__2zHEj).
JANDI AI FAQ question
Default (ai-faq-question-button)
- Background: transparent
- Text:
#333333 - Padding:
24px 0px - Height: 76px, each inside a 1200px × 76px
li - Font:
20px / 400 / 28px Noto Sans - Use: five question buttons,
surface-6::[data-omd-capture="11"]through"15". The first carries an extra class (JandiAi_faqActive__vQl-v) but records the same values, so no variant is declared.
JANDI AI partner card
Static default (ai-partner-card)
- Card: a 382px × 369px
liwith a 16px radius; a 382px × 210px image block sits above the content block. - Content block: background
#ffffff, padding8px 16px 24px, holding a logo and a#33333316px / 400 / 30px description (p). - Use: three cards,
surface-6::li.JandiAi_aiPartnerCardItem__15AOx.
Bottom-banner pill link
Default (bottom-banner-pill-link)
- Text:
#041911 - Radius:
50px - Padding:
12px 30px - Size: 115px × 44px (132px wide for a longer label)
- Font:
15px / 500 / 20px Noto Sans - Fill: not claimed. The background colour computes transparent, and background-image is not among the captured properties; class names are not read as colours.
- Use:
surface-5::[data-omd-capture="25"],"26"andsurface-6::[data-omd-capture="16"],"17". On the collaboration page,a.JndLink_linkBtn__2MwSk(surface-3"16","17") has the same text, padding and size with a 0px radius.
Footer
Sitemap link (footer-sitemap-link): a #ffffff 13px / 700 / 20px label in a 120px × 36px li with 8px 0px padding; 21 links, home::[data-omd-capture="21"] through "41". The footer background is not among the captured elements.
Text button (footer-info-toggle): transparent, #a2a2a2, padding 5px 0px, 83px × 36px, 14px / 400 / 26px; one per record (home::[data-omd-capture="43"]), beside #a2a2a2 13px / 400 / 20px company-information lines.
Verified: 2026-07-13
Tier 1 sources: https://www.jandi.com/landing/kr, https://www.jandi.com/landing/kr/features/collaboration, https://www.jandi.com/landing/kr/features/member, https://www.jandi.com/landing/kr/security, and https://www.jandi.com/landing/kr/jandi-ai (public marketing); https://finalpick.jandi.com/landing/en/company and https://blog.jandi.com/ko/2026/06/08/pr-project-2-0/ (first-party context); https://support.jandi.com/en/articles/Changing-themes-bf4edc58 (documentation-domain classification only); https://notofonts.github.io/noto-docs/website/use/ (Noto licence boundary only)
Tier 2 sources: https://getdesign.md/jandi (attempted; built-in-web open returned an internal error/no usable JANDI record), https://styles.refero.design/?q=jandi (attempted; built-in-web open returned an internal error/no usable JANDI record), built-in web search for both catalogs (no usable JANDI design record returned)
Conflicts unresolved: none
The previous legacy material asserted a /ko/pricing surface, pricing-card variants, interaction states, generic inputs, and a universal card-shadow system. None occurs in the supplied 2026-07-13 evidence, so those claims are removed rather than substituted. Corrected 2026-09-30: no universal shadow system occurs, but each environment card records its own shadow, which is now carried on those two cards only.
States
No empty, loading, error, success, disabled, focus, or validation states were captured, and the bundle holds no ::state-* frame for any element. The component appearances in §4 are static public-page observations, not behavioral state specifications.
Live state probe, 2026-10-16 (https://www.jandi.com/landing/kr), header-primary-action: pressed — bg #00b46a, border #00b46a.
Do's and Don'ts
Do
- Use the loaded
Noto Sansfamily only for the captured public-surface type reference. - Scope
#00c473to the observed repeated public action. - Keep each documented card tied to its security or AI marketing surface and selector.
- Preserve selector and surface provenance when using the components in §4.
Don't
- Present declared-only
icomoonorswiper-iconsas a JANDI UI text family. - Generalize public-marketing measurements into an authenticated product-app system.
- Invent hover, pressed, focus, disabled, error, menu, dialog, or responsive variants.
- Reintroduce the legacy inferred pricing cards, input rules, or universal shadow system.
Verified: 2026-07-13 Pipeline: omd:add-reference UPDATE (supplied-evidence 3-tier reconcile) Catalog position: KR · productivity · collaboration platform
Voice & Tone
Content & Voice
JANDI’s first-party company and product material frames the service as practical collaboration infrastructure: messages, projects, work visibility, and AI-assisted work support. The public voice is correspondingly concise, explanatory, and operational. That observation does not authorize invented authenticated-product microcopy.
Voice adjectives: practical · clear · collaboration-oriented
| Do | Don't |
|---|---|
| State the work problem before describing a capability. | Promise transformation without explaining the collaboration task. |
| Connect messaging, project work, and visibility in plain language. | Treat public marketing tone as a specification for every authenticated UI state. |
| Keep feature and inquiry language direct. | Infer urgency, error, or success copy that was not observed. |
Governance
Accessibility
- The repeated primary public action pairs
#fffffftext with#00c473; the white landing action pairs#041911with#ffffff. - The collector did not record focus-visible, keyboard, disabled, form-error, or screen-reader behavior. An implementation should add an accessible focus indicator rather than infer one from static borders or radii.
Noto Sansis backed by computed family, FontFaceSet, and JANDI-CDN source evidence. Declared-only icon fonts must not be substituted for it.
Known Gaps
- Contrast,
header-primary-action. Text#ffffffon#00c473measures 2.30:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted. - Contrast,
header-outline-action. Text#000000on#00000000measures 1.00:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted. - Contrast,
header-nav-link. Text#333333on#00000000measures 1.66:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted. - Contrast,
ai-faq-question-button. Text#333333on#00000000measures 1.66:1, below the WCAG AA 4.5:1 minimum for normal-size text. Recorded as measured, not adjusted.
색상
브랜드
면과 글자
타이포그래피
- Noto SansUI · 오픈 글꼴 · OFLGoogle Fonts에서 설치
타입 스케일
- heroPublic landing headline56px, 행간 1.43, 굵기 700The quick brown fox jumps over the lazy dog
- sectionPublic landing feature heading42px, 행간 1.43, 굵기 700The quick brown fox jumps over the lazy dog
- nav-actionPublic global navigation action14px, 행간 1.43, 굵기 500The quick brown fox jumps over the lazy dog
여백과 모양
여백
- nav-action-y7px
- landing-action-y12px
- nav-action-x14px
- landing-action-x30px
모서리 반경
- action6px
- floating-nav10px
- security-card16px
컴포넌트
- header-primary-actionheader-primary-action채움 #00c473 · 글자 #ffffff · 테두리 1px #00c473 · 반경 6px · 높이 36px · 안쪽 여백 7px 14px · 글자 크기·굵기 14px / 500 / 20px Noto Sans
- 누름 bg #00b46a, border #00b46a (:hover + :active)
기록된 상태 rest on all six capture records (capture 10 on each); the bundle holds no state frame for any JANDI element
- header-outline-actionheader-outline-action채움 transparent · 글자 #000000 · 테두리 1px #dddddd · 반경 6px · 높이 36px · 안쪽 여백 7px 14px · 글자 크기·굵기 14px / 500 / 20px Noto Sans
기록된 상태 rest on all six capture records (capture 9 on each); no state frame
- landing-white-actionlanding-white-action채움 #ffffff · 글자 #041911 · 반경 6px · 높이 44px · 안쪽 여백 12px 30px · 글자 크기·굵기 15px / 500 / 20px Noto Sans
기록된 상태 rest on two links on the landing record (capture 19, 20; surface-2 repeats them); no state frame
- security-environment-card채움 #ffffff · 반경 16px · 안쪽 여백 40px 32px 54px
- ai-environment-card채움 #ffffff · 반경 16px · 안쪽 여백 40px 32px 54px
- ai-partner-card채움 #ffffff · 글자 #333333 · 반경 16px · 안쪽 여백 8px 16px 24px · 글자 크기·굵기 16px / 400 / 30px Noto Sans
기록된 상태 three cards captured at rest; no state frame