Use when designing or improving web, app, extension, community, course, video-ideation, marketing landing, SEO content hub, or public policy-page UI with a D...
Design & media
edic-design-system
Try itBuild EDIC-style UI, pages, docs, and emails with OKLch design tokens, editorial olive green, and CJK-optimized typography.
What it does
Every visual artifact follows the EDIC system: warm paper backgrounds, olive-green accent, serif headings paired with sans body, and a complete OKLch color-token system. Components use BEM naming (ds-card, ds-btn--primary, ds-alert--error, ds-tabs, ds-modal, etc.), and pages ship with semantic landmarks, a single h1, and built-in accessibility (skip link, aria-labels, prefers-reduced-motion). Output is framework-agnostic HTML/CSS driven by CSS custom properties; emails switch to inline sRGB styles. The same markup works under light and [data-theme="dark"].
When to use it
- Composing EDIC landing pages, blog posts, docs, or résumés
- Refactoring markup to use OKLch tokens and ds-* classes
- Adding a dark theme that avoids pure-black backgrounds
- Building CJK-friendly editorial layouts with serif headings
The skill document
EDIC Design System Skill
When this skill is active, every visual artifact you produce — components, pages, landing sections, documentation, emails, reports — must conform to the EDIC design system. Prefer design tokens (CSS custom properties). Never hard-code magic numbers.
Design character
- Editorial × Olive Green: magazine-grade restraint, generous whitespace, serif headings + sans body, a warm paper background, and a confident — never loud — olive-green accent.
- Reference moods: Monocle (typographic restraint), Stripe (warm utility), Mercury (refined calm).
Hard rules (anti-patterns)
- Define all colors in OKLch; mix with
color-mix(in oklch, …). - Use
var(--ds-*)tokens for every visual value. No hard-coded#fff/16px. - Dark mode never uses pure black
#000— use warm greyoklch(15% 0.008 75). - In dark mode, lighten the accent ~5–10% vs. light mode.
- Components use base + modifier:
ds-btn/ds-btn--primary. - No inline
style=except genuinely dynamic values (e.g. stagger--d). - Icon-only buttons need
aria-label; decorative SVGs needaria-hidden="true".
Color tokens (core)
Light (:root):
--ds-color-bg: oklch(97% 0.012 80) /* warm paper background */
--ds-color-surface: oklch(99% 0.005 80)
--ds-color-surface-raised: oklch(100% 0 0) /* popovers / modals */
--ds-color-border: oklch(89% 0.012 80)
--ds-color-muted: oklch(48% 0.015 60) /* secondary text */
--ds-color-fg: oklch(20% 0.02 60) /* body text */
--ds-color-fg-strong: oklch(14% 0.025 60) /* headings */
Olive ramp --ds-color-olive-50…900; accent:
--ds-color-olive-400: oklch(52% 0.08 115) /* === --ds-accent === */
--ds-accent-hover: var(--ds-color-olive-500)
--ds-accent-soft: var(--ds-color-olive-100)
Semantic (each has a -bg tint): success oklch(55% 0.1 145),
warning oklch(65% 0.1 85), error oklch(50% 0.14 30), info oklch(55% 0.08 240).
Dark ([data-theme="dark"]): base oklch(15% 0.008 75), body oklch(84% 0.008 72),
accent oklch(57% 0.065 115).
Typography
--ds-font-display: "Iowan Old Style","Charter",Georgia,"Noto Serif SC",serif
--ds-font-body / --ds-font-ui: "Noto Sans SC",-apple-system,system-ui,sans-serif
--ds-font-mono: "JetBrains Mono","IBM Plex Mono",monospace
Scale (rem): caption .75 · body-sm .875 · body 1 · body-lg 1.125 · lead 1.25 · h4 1.5 · h3 1.875 · h2 2.25 · h1 3 · display 3.75 · hero 4.5.
- Headings: display family +
--ds-leading-tight(1.1) +--ds-tracking-tight(-0.01em). - Body: line-height 1.55, measure 65–75 chars (~540px / 72ch).
- CJK/Latin mix: body tracking 0.03em, heading 0.06em; full-width CJK punctuation.
Spacing / radius / shadow / motion
- Spacing: 4px base,
--ds-space-1..32(4→128px). - Radius: sm 2 · md 4 · lg 8 · xl 12 · 2xl 16 · full. Core 8–16px.
- Shadow:
--ds-shadow-xs..2xl. - Motion: duration
--ds-duration-150..500; ease--ds-ease-out: cubic-bezier(.16,1,.3,1),--ds-ease-spring. Always honorprefers-reduced-motion: reduce.
Component class catalog
Layout
- 基础布局:
ds-wrapperds-section(--alt/--tight)ds-stack(--sm/--lg)ds-cluster(--center)ds-proseds-flex-row - 网格系统:
ds-grid-2ds-grid-3ds-grid-4ds-grid-6ds-grid-iconsds-feature-grid - 区块元素:
ds-section-head(--center)ds-section-header - 间距工具:
ds-mt-*ds-mb-*ds-pt-0ds-gap-16ds-mx-autods-items-centerds-justify-start - 间距展示:
ds-spacing-visds-spacing-blockds-radius-visds-shadow-vis
Buttons & Interactive
- 按钮:
ds-btn+--primary/--secondary/--ghost+--sm/--lg - 图标按钮:
ds-icon-btn - 复制按钮:
ds-copy-btn(--light)
Cards & Surfaces
- 卡片:
ds-card+--hoverable/--flat - 玻璃卡片:
ds-glass-card(--sm/--lg)ds-glass-metads-glass-demo-bg - 组件预览:
ds-component-previewds-component-groupds-component-label
Forms
- 基础表单:
ds-input(--error)ds-labelds-hintds-selectds-checkboxds-radiods-toggle(--track/--thumb) - 扩展表单:
ds-form-inputds-form-textareads-form-selectds-form-rowds-form-groupds-form-labelds-form-checkboxds-form-hint(--error)ds-form-submitds-form-required
Feedback
- 徽章:
ds-badge(--default/--accent/--success/--warning/--error) - 警告框:
ds-alert(--info/--success/--warning/--error)ds-alert-iconds-alert-title - 通知:
ds-toast(--error/--success/--warning)ds-toast-groupds-toast-iconds-toast-textds-toast-close
Navigation
- 导航栏:
ds-navbar(--scrolled)ds-navbar-innerds-navbar-brandds-navbar-linksds-navbar-link(--active)ds-navbar-actionsds-navbar-ctads-navbar-icon-link - 移动端菜单:
ds-mnav-triggerds-mnav-trigger-bards-mnav-backdrop - 页面导航:
ds-pagenav(--rail/--hidden)ds-pagenav-disclosureds-pagenav-summaryds-pagenav-chevronds-pagenav-listds-pagenav-link(--active)ds-pagenav-numds-pagenav-text - 标签页:
ds-tabsds-tab(--active)ds-tab-content(--active) - 面包屑:
ds-breadcrumbds-breadcrumb-currentds-breadcrumb-sep - 分页:
ds-paginationds-page-btn(--active) - 侧边导航:
ds-navds-nav-item(--active)ds-nav-iconds-nav-section-label - 霜冻导航:
ds-frosted-nav - 主题切换:
ds-theme-toggle-btn(--fixed)
Data Display
- 表格:
ds-tableds-table-wrapds-table-minids-table-mini-row - 进度条:
ds-progressds-progress-bards-progress-fillds-progress-label - 头像:
ds-avatar(--sm/--lg) - 芯片/标签:
ds-chip(--active)ds-chip-remove - 骨架屏:
ds-skeleton - 色卡:
ds-swatchds-swatch-colords-swatch-infods-swatch-nameds-swatch-value - 类型标签:
ds-type-labelds-type-label-meta
Overlay & Glass
- 遮罩层:
ds-overlay-sampleds-overlay-bgds-overlay-layerds-overlay-strongds-overlay-lightds-overlay-label - 模态框:
ds-modalds-modal-headerds-modal-bodyds-modal-footerds-modal-close - 工具提示:
ds-tooltip-demods-tooltip-bubble - 下拉菜单:
ds-dropdownds-dropdown-itemds-dropdown-divider
Typography
- 标题:
ds-displayds-herods-h1ds-h2ds-h3ds-h4ds-h5ds-subtitle - 正文:
ds-leadds-captionds-eyebrowds-serifds-monods-metads-cover - 中文排版:
ds-text-cjkds-text-cjk-headingds-text-mixedds-text-indentds-hanging-punctuationds-text-emphasisds-text-highlight - 引用:
ds-quote-cjkds-no-orphands-num-unit - 工具:
ds-text-centerds-text-mutedds-text-accentds-text-balanceds-text-prettyds-inline-codeds-body-sm
Article TOC
- 目录:
ds-tocds-toc-articleds-toc-article-titleds-toc-listds-toc-link(--active/--h3)ds-toc-indicatords-toc-badgeds-toc-gridds-toc-itemds-toc-num
Timeline
- 时间线:
ds-timelineds-timeline-itemds-timeline-dotds-timeline-contentds-timeline-dateds-timeline-titleds-timeline-tag
Date / Calendar
- 日期组:
ds-date-groupds-date-wrapds-date-inputds-date-iconds-date-calendar - 日历:
ds-cal-headerds-cal-navds-cal-month-yeards-cal-monthds-cal-yeards-cal-weekdaysds-cal-grid-newds-cal-dayds-cal-todayds-cal-selectedds-cal-mutedds-cal-weekendds-cal-weekend-colds-cal-footerds-cal-btn(--primary)
Slider
- 滑块:
ds-slider-groupds-slider-label-rowds-slider-valueds-slider-track-wrapds-slider-trackds-slider-fillds-sliderds-slider-labels
Accordion
- 手风琴:
ds-accordionds-accordion-itemds-accordion-headerds-accordion-arrowds-accordion-content
Code Block
- 代码:
ds-codeds-code-bards-code-lang
Brand / Logo
- Logo:
ds-logo(--lg)ds-logo-markds-logo-textds-logo-wordds-logo-subds-logo-herods-logo-draw - 品牌预览:
ds-brand-preview(--paper/--ink)
Site Shell
- 英雄区:
ds-hero-sectionds-hero-innerds-hero-badgeds-hero-titleds-hero-leadds-hero-actionsds-hero-metads-hero-mark-wrapds-gradient-text - 数据统计:
ds-stat-gridds-statds-stat-numds-stat-label - 步骤列表:
ds-stepsds-stepds-step-numds-step-body - 兼容徽章:
ds-compat-gridds-compat-itemds-cta-h2 - 特性卡片:
ds-feature-cardds-feature-ico - 下载卡片:
ds-dl-grid(--two-rows)ds-dl-cardds-dl-topds-dl-icods-dl-metads-dl-actions - 文档布局:
ds-docsds-docs-asideds-docs-mainds-doc-block - 提示卡片:
ds-promptds-prompt-headds-prompt-titleds-prompt-bodyds-prompt-foot - 富页脚:
ds-footer-richds-footer-colsds-footer-brandds-footer-col-headingds-footer-linksds-footer-bottom
Motion & Animation
- 滚动揭示:
ds-reveal(--left/--right/--scale, stagger via inline--d) - 连续动效:
ds-anim-floatds-anim-spin-slowds-anim-pulseds-anim-fade-inds-anim-riseds-anim-glow-breathe
Gravitas & Glow (dark-mode accent)
- 发光效果:
ds-glow-borderds-aurads-surface-glowds-heading-glow
Decorative
- 边缘装饰:
ds-edge-decor(--tl/--tr/--bl/--br) - 背景斑点:
ds-bg-blob(--1/--2/--3)
Accessibility
- 无障碍:
ds-sr-onlyds-skip#ds-main
Page composition rules
Before writing a single component, establish the page skeleton:
-
Pick the scene — consult
references/RECIPES.md. Match the user's goal to a recipe (landing page / blog / docs / résumé / report). If no recipe fits, compose fromreferences/PATTERNS.mdpatterns. -
Set section rhythm — alternate
ds-section(paper bg) withds-section--alt(surface bg). Never stack two--altsections back-to-back. -
One landmark per role — one
, one, one. Usefor content blocks inside ``. -
Heading hierarchy — one
per page. Sections start with, sub-sections with ``. Never skip a level. -
Reveal cadence — add
ds-revealto section-level elements. Stagger child items withstyle="--d: 0.Xs"in 0.05–0.1 s increments. Cap at ~0.4 s. -
Skip link — every page must open with
跳到主内容.
Output expectations
- Produce complete, runnable HTML fragments assuming
styles.css(and optionalscripts.js) are linked. - If the host has no stylesheet, include a minimal `` but still use OKLch and equivalent token values.
- Use semantic structure (
header/main/section/nav/footer) with correct heading order. - Default to light theme and guarantee the same markup works under
[data-theme="dark"]. - When unsure, favor the more restrained, more whitespace, more editorial option.
- For email output: use inline sRGB styles only — no
var(--ds-*), nooklch(). Use olive accent#5a6e2a≈oklch(52% 0.08 115). See Pattern 10 inPATTERNS.md.
Self-check before finalizing output
Run through this checklist mentally before returning any HTML:
- Every color comes from
var(--ds-*)— no bare hex/rgb/hsl. - Every spacing value uses
var(--ds-space-*)— no barepx/rem. - Every font-size uses
var(--ds-text-*)— no barepx/rem. - Every font-family uses
var(--ds-font-*). - Dark mode: no
#000background; warm greyoklch(15% 0.008 75)viavar(--ds-color-bg). - BEM: every modifier class is paired with its base class (
ds-btn ds-btn--primary). - Inline
style=only for genuinely runtime-dynamic values (--d, widths, heights). - Icon-only buttons have
aria-label; decorative SVGs havearia-hidden="true". - One `` on the page; heading levels never skip.
- `` present on full-page output.
-
prefers-reduced-motionoverride present for any custom animation > 150ms.
Example: token-driven card
新
橄榄园笔记
使用令牌的卡片,悬停浮起,深浅主题自适配。
阅读全文
Reference files
Load these on demand when you need precise values, complex structure, or full-page guidance:
- Scene recipes — complete page builds step-by-step (docs, landing, blog, résumé, report)
- Page-level patterns — 10 section templates (hero, features, pricing, timeline, dashboard, email)
- Component HTML examples — glass card, docs layout, navbar, toast, accordion, modal, tabs, dropdown
- Complete token values — spacing, radius, shadow, blur, motion, type scale
- Anti-patterns & correct replacements — color, spacing, inline style, BEM, a11y, motion
Reference
- Website: https://edic.cgartlab.com/
- Usage docs: https://edic.cgartlab.com/docs.html
- Structured tokens: https://edic.cgartlab.com/tokens.json
Questions people ask
- What does this skill output?
- Runnable HTML fragments assuming styles.css is linked, with a minimal inline stylesheet fallback when no host stylesheet exists. Email output uses inline sRGB styles instead of var(--ds-*) tokens, mapping the olive accent to #5a6e2a.
- Does it support dark mode?
- Yes. The same markup works under [data-theme="dark"]. Dark backgrounds use warm grey oklch(15% 0.008 75) instead of pure black, and the olive accent is lightened by 5–10% relative to light mode.
- How is Chinese typography handled?
- Font tokens include Noto Serif SC and Noto Sans SC; body tracking is 0.03em and headings 0.06em, with full-width CJK punctuation. Helpers include ds-text-cjk, ds-quote-cjk, ds-hanging-punctuation, and ds-text-indent.
Related skills
Generate high-density editorial HTML info cards in a modern magazine and Swiss-international style, then capture them as ratio-specific screenshots. Use when...
Produce distinctive, non-generic UI and design applications well, working strategy-first. Identify the project (landing page, SaaS app, dashboard, ecommerce, presentation, docs, portfolio...) and its positioning and personality, commit to brand adjectives, translate into a typography and color system, then apply the craft layer (layout, components and states, motion, iconography, imagery, dark mode and theming, accessibility), avoiding the AI-slop / Claude-esque default. This is both a de-slop and an expert app-design skill. Use this whenever building or styling any web frontend, app, dashboard, landing page, deck, or artifact, or when the user says "make it not look like AI", "de-slopify", "deslop", "less generic", "give it character", "design a UI for X", "design an app", "update DESIGN.md", or complains the output looks like every other AI site. Trigger even when the user just says "build a UI for X" without naming an aesthetic, because the default without this skill is slop.
Build polished, conversion-aware frontends with strong visual taste, clear hierarchy, and production-grade HTML/CSS/JS. Landing pages, dashboards, components...
Semantic Design System Skill for Google Stitch. Generates agent-friendly DESIGN.md files that enforce premium, anti-generic UI standards — strict typography,...
Frontend design, implementation, and production QA