AI 심화 · 부록 ②웹앱 디자인 스타일 도감

웹앱
디자인 스타일
도감

화면을 이루는 레이아웃 · 색 · 선 · 컴포넌트가 스타일마다 어떻게 달라지는가.

같은 카드 하나를 여섯 스타일로 그려 비교하고, 그 차이를 그대로 에이전트 지시문으로 옮긴다. 접근성과 다크/라이트 모드까지.

결제 완료
주문이 확인됐어요.
결제 완료
주문이 확인됐어요.
00

왜 "스타일 언어"인가 — 그리고 이 도감 읽는 법

모호한 지시

"좀 더 예쁘게 / 요즘 느낌으로" — 에이전트는 플랫인지 글래스인지 브루탈인지 추측한다.

정확한 지시

"Neobrutalism 톤으로 — 3px 검정 테두리, 하드 오프셋 그림자, 라운드 0, 고채도 단색" — 한 번에 맞춘다.

각 슬라이드는 이렇게 읽는다

  • 레이아웃 — 화면을 어떻게 나누나(그리드/영역 배치)
  • 색 / 선 / 그림자 — 면, 테두리, 입체감의 규칙
  • 컴포넌트 룩 — 같은 부품이 그 스타일에선 어떻게 보이나
  • 쓰임새 — 어떤 제품/맥락에 어울리나
  • ➤ 에이전트에게 — 그 스타일을 그대로 지시하는 프롬프트

부록 ①(컴포넌트 도감)이 "부품 이름"이라면, 이 도감은 "그 부품을 칠하는 화풍"이다.

목표 — 디자인 의도를 재현 가능한 토큰(색/간격/라운드/그림자)으로 번역해, 에이전트가 추측 없이 같은 화면을 만들게 한다.
01

화면은 세 층으로 쌓인다 — 레이아웃 → 토큰 → 컴포넌트

① 레이아웃Layout

화면을 나누는 골격

그리드, 영역(헤더/사이드/메인/푸터), 반응형 분기점. 스타일과 무관하게 먼저 정해진다.

바뀌면: 정보 구조 전체가 흔들린다
② 디자인 토큰Tokens

스타일을 숫자로

색/간격/라운드/그림자/타이포 값. "스타일"의 정체는 결국 이 토큰들의 조합이다.

바뀌면: 분위기(화풍)가 통째로 바뀐다
③ 컴포넌트Components

토큰을 입은 부품

버튼/카드/입력창 등. 부록 ①의 부품들이 ②의 토큰을 입어 최종 모습이 된다.

바뀌면: 개별 부품의 생김새
에이전트에게는 세 층을 분리해 지시하면 좋다 — "레이아웃은 대시보드, 토큰은 다크 + 코랄 강조, 버튼은 pill 모양".
02

레이아웃의 뼈대 — 그리드, 영역, 분기점

12 컬럼 그리드

넓은 화면을 12등분해 컴포넌트를 칸에 맞춘다. 카드 3개 = 4칸씩, 본문+사이드 = 8+4. 숫자로 말하면 에이전트가 정확히 배치한다.

간격(gutter) / 여백

8pt 그리드 — 모든 간격을 8의 배수(8/16/24/32)로. 들쭉날쭉함이 사라지고 리듬이 생긴다.

최대 폭(max-width)

본문은 무한정 늘리지 않는다. 읽는 글은 65~75자, 컨테이너는 1100~1280px에서 멈추고 가운데 정렬.

12-col 위에 올린 화면
헤더 (12)
사이드 (3)
메인 콘텐츠 (6)
패널 (3)
카드 4
카드 4
카드 4
푸터 (12)
분기점(breakpoint) — 화면 폭이 줄면 칸을 합친다. 모바일 1열, 태블릿 2열, 데스크톱 3열처럼 같은 그리드를 접는다(다음 장).
03

자주 쓰는 화면 레이아웃 패턴 — 이름으로 부르기

앱 셸 (사이드바)
topbar
nav
content
대시보드
header
KPI
KPI
KPI
차트
표
랜딩(히어로)
nav
CTA
특징
특징
특징
중앙 단일 칼럼
header
글/폼
스플릿(좌/우)
비주얼
폼/설명
벤토 그리드
big
s
s
m
m
"대시보드 레이아웃 — 좌측 고정 사이드바 네비, 상단 KPI 카드 3개, 본문은 차트 + 표 8:4 스플릿. 컨테이너 max-width 1280."
04

반응형 — 같은 화면을 폭에 맞춰 접는다

같은 카드 1~6번이 폭에 따라 1 → 2 → 3열로 재배치

1
2
3
4
5
6
📱 모바일< 768px · 1열
1
2
3
4
5
6
📲 태블릿768~1024 · 2열
1
2
3
4
5
6
💻 데스크톱> 1024 · 사이드바 + 3열

모바일 우선(mobile-first)

좁은 화면을 기본으로 짜고, 넓어질 때 칸을 늘린다. 거꾸로보다 깨짐이 적다.

분기점(breakpoint)

관습값 — sm 640 / md 768 / lg 1024 / xl 1280px. 폭이 이 선을 넘으면 열 수/사이드바 노출이 바뀐다.

컨테이너 쿼리

화면이 아니라 "그 컴포넌트가 놓인 칸의 폭"에 반응. 카드가 어디에 들어가도 알아서 접힌다.

"mobile-first로 — 카드 그리드는 모바일 1열, md(768) 2열, lg(1024) 3열. 사이드바는 lg 이상에서만 노출, 그 아래는 햄버거."
05

디자인 토큰 — "스타일"을 숫자/변수로 고정한다

토큰이란

색/간격/라운드/그림자/글꼴 같은 값에 이름을 붙인 것. --space-4, --radius-md, --color-primary처럼.

원시 → 의미 토큰

원시값(blue-600)을 의미(primary, danger)로 한 번 더 감싼다. 다크모드/리브랜딩 때 의미 토큰만 바꾸면 끝.

왜 에이전트에게 중요한가

토큰으로 말하면 "예쁘게"가 재현 가능한 명세가 된다. 일관성/테마 전환/유지보수가 공짜로 따라온다.

tokens.css
/* 원시 팔레트 */
--blue-600:#2563eb; --gray-900:#0f172a;
/* 간격 — 8pt 스케일 */
--space-1:4px; --space-2:8px;
--space-4:16px; --space-6:24px;
/* 라운드 / 그림자 */
--radius-md:8px; --radius-full:999px;
--shadow-md:0 4px 12px rgba(0,0,0,.1);
/* 의미 토큰(이 줄만 다크모드서 교체) */
--color-primary:var(--blue-600);
--color-surface:#fff;
--color-text:var(--gray-900);
"디자인 토큰을 CSS 변수로 정의해줘 — 간격은 8pt 스케일, 색은 원시→의미 2단(primary/danger/surface/text), 다크모드는 의미 토큰만 교체."
06

색 — 역할로 나누고, 비율로 쓴다

역할별 색(semantic)

primary
accent
success
warning
danger

중립(neutral) 한 줄 — 배경/테두리/본문 회색 스케일. 화면 면적의 대부분은 이 무채색이 채운다.

50
200
400
600
900

60 / 30 / 10 규칙

바탕 60% (중립) / 보조 30% / 강조 10%. 강조색을 아껴 써야 버튼/CTA가 눈에 들어온다.

상태(state) 변종

버튼 하나에도 hover/active/disabled/focus 색이 필요. 보통 기본색의 명도를 ±10% 조정해 만든다.

명도 스케일

각 색은 50~900 명암 단계로. 라이트는 600 전후, 다크모드는 400 전후를 주조로 쓰면 대비가 산다.

"색은 의미별(primary/success/warning/danger) + 중립 스케일로. 60/30/10으로 배분하고, 강조색은 CTA에만. 각 색 hover/active/disabled 상태 포함."
07

타이포 / 간격 — 스케일로 위계를 만든다

TYPE SCALE — 한 배율(예: 1.25)로 키운다

제목 H1 40

소제목 H2 30

강조 본문 22

본문 16~18 — 읽기 편한 행간 1.5, 한 줄 65~75자.

캡션 13 — 보조 정보

위계(hierarchy)

크기/굵기/색의 대비로 "먼저 읽을 것"을 정한다. 3~4단계면 충분.

행간/자간/줄폭

본문 line-height 1.5, 줄폭은 측정값(measure) 65~75자. 한글은 word-break: keep-all로 어절 보존.

8pt 간격 스케일

padding/margin/gap을 4·8·16·24·32로 통일. 임의값(13px, 19px) 금지 → 정렬이 저절로 맞는다.

"타이포 스케일은 1.25 배율로 H1~caption 5단계. 본문 16px/line-height 1.5, 한글 keep-all. 간격은 전부 8pt 배수만."
08

UI 스타일 여섯 화풍 — 같은 카드, 다른 분위기

Flat플랫
결제 완료
주문이 확인됐어요.
Material머티리얼
결제 완료
주문이 확인됐어요.
Glassmorphism글래스
결제 완료
주문이 확인됐어요.
Neumorphism뉴모피즘
결제 완료
주문이 확인됐어요.
Neobrutalism네오브루탈
결제 완료
주문이 확인됐어요.
Minimal / Swiss미니멀
결제 완료
주문이 확인됐어요.
마크업은 모두 같다. 바뀐 건 토큰(색/선/그림자/라운드)뿐 — 다음 장부터 둘씩 뜯어본다.
09

Flat 와 Material — 가장 흔한 기본값

Flat플랫 디자인
결제 완료
주문이 확인됐어요.
  • 선/그림자: 입체감 제거, 얇은 경계선만
  • 색: 채도 있는 솔리드 면, 그라데이션 없음
  • 라운드: 작게(4~8px) · 깔끔함 우선
  • 쓰임: SaaS, 관리도구, 대부분의 기본 — 빠르고 안전
Material머티리얼(구글)
결제 완료
주문이 확인됐어요.
  • 선/그림자: elevation(높이)을 그림자 깊이로 표현
  • 색: primary/secondary + 잉크 위계, 리플 효과
  • 라운드: 4px · 대문자 버튼 관습
  • 쓰임: 안드로이드/구글 계열, 규칙이 잘 정의된 시스템
"Flat — 그림자 없이 1px 경계선, 솔리드 색, radius 6px" / "Material 3 — elevation 그림자, primary 토널 버튼, radius 4px"
10

Neumorphism 와 Glassmorphism — 질감을 입히다

Neumorphism뉴모피즘
결제 완료
주문이 확인됐어요.
  • 핵심: 배경과 같은 색 면 + 이중 그림자(밝음/어둠)로 눌린/튀어나온 느낌
  • 색: 저채도, 배경/요소가 한 톤
  • 주의: 대비가 낮아 접근성 취약 — 텍스트/포커스 따로 보강
  • 쓰임: 음악/홈IoT 등 감성 UI, 부분 포인트로만 권장
Glassmorphism글래스모피즘
결제 완료
주문이 확인됐어요.
  • 핵심: 반투명 면 + 배경 흐림(backdrop-blur) + 옅은 흰 테두리
  • 전제: 뒤에 컬러풀한 배경이 있어야 산다
  • 주의: 투명 위 텍스트 대비 확보, blur 성능 비용
  • 쓰임: iOS/비전OS, 오버레이/카드, 화려한 랜딩
"Neumorphism — 배경색=요소색, 8px 이중 그림자(밝음+어둠), 단 텍스트 대비는 WCAG AA 유지" / "Glassmorphism — rgba 18% 면 + backdrop-blur 12px, 그라데이션 배경 위에."
11

Neobrutalism 와 Minimal/Swiss — 정반대의 두 태도

Neobrutalism네오브루탈리즘
결제 완료
주문이 확인됐어요.
  • 선: 두꺼운 검정 테두리(2~4px) + 하드 오프셋 그림자
  • 색: 고채도 원색, 라운드 0, 굵은 타이포
  • 태도: 일부러 거칠고 솔직하게, 강한 개성
  • 쓰임: 개발자툴/포트폴리오/브랜드 — 이 발표 테마도 이 계열
Minimal / Swiss미니멀 · 스위스
결제 완료
주문이 확인됐어요.
  • 선: 거의 없음 — 여백과 정렬로 구분
  • 색: 무채색 중심, 강조 한 색만 절제
  • 태도: 타이포/그리드가 주인공, 장식 제거
  • 쓰임: 콘텐츠/에디토리얼, 프리미엄 브랜드
"Neobrutalism — 3px 검정 보더, 6px 하드 그림자, radius 0, 고채도" / "Minimal — 그림자 0, 보더 최소, 무채색 + 강조 1색, 여백 크게."
12

화풍 더 보기 ① — 스큐어모피즘 · 클레이 · 오로라

Skeuomorphism스큐어모피즘
결제 완료
주문이 확인됐어요.
실물 모사 — 광택/그림자/질감. 플랫 이전 시대. 지금은 향수/게임 UI에 부분 사용.
Claymorphism클레이모피즘
결제 완료
주문이 확인됐어요.
두툼한 점토 느낌 — 큰 라운드 + 안팎 부드러운 그림자, 파스텔. 친근한 앱/온보딩.
Aurora / Mesh오로라 그라데이션
결제 완료
주문이 확인됐어요.
다채 메시 그라데이션 배경 + 또렷한 카드. AI/SaaS 랜딩 히어로에 유행.
13

화풍 더 보기 ② — 다크 네온 · 레트로 · 벤토

Dark Neon다크 네온
결제 완료
주문이 확인됐어요.
어두운 면 + 네온 강조선/글로우. 개발자툴/게임/크립토. 대비 관리 필수.
Retro / Memphis레트로 · 멤피스
결제 완료
주문이 확인됐어요.
원색 + 굵은 외곽선 + 장난스런 도형. 브랜드/이벤트/Y2K 무드.
Bento UI벤토(레이아웃 트렌드)
big
tall
m
m
도시락칸처럼 크기 다른 카드 모자이크. 기능 요약/제품 소개에 인기.
14

표준 디자인 시스템 — 바퀴를 다시 만들지 않기

왜 쓰나

색/간격/컴포넌트/접근성 규칙이 이미 검증돼 있다. "이 시스템 따르라"는 한 줄이 토큰 수백 개를 대신한다.

고르는 법

플랫폼/생태계에 맞춰 — 구글앱=Material, 애플=HIG, 윈도우=Fluent, 엔터프라이즈=Carbon/Ant, React 빠른 제작=shadcn/ui.

에이전트에게

"shadcn/ui + Tailwind로, 컴포넌트는 그 레지스트리에서 가져와 토큰만 우리 브랜드 색으로."

디자인 시스템 = 토큰 + 컴포넌트 + 규칙의 묶음. 부록 ①의 부품 이름과 이 도감의 토큰이 그 안에서 한 벌로 정의돼 있다.
15실전 도구

Tailwind CSS — 토큰을 "클래스"로 쓰는 유틸리티 우선

유틸리티 우선(utility-first)

CSS 파일을 새로 쓰는 대신, 미리 정의된 작은 클래스(p-4, rounded-lg, bg-blue-600)를 조합해 마크업에서 바로 스타일링한다.

Button.tsx
// 간격 p-4=16px, 색 bg-blue-600 → 팔레트
<button class="px-4 py-2 rounded-lg
  bg-blue-600 text-white font-semibold
  hover:bg-blue-700 focus:ring-2
  /* 반응형: 기본 1열 → md 2열 */
  md:px-6 lg:text-lg">
  결제하기
</button>

장점

  • 토큰이 클래스로 고정 → 일관성과 빠른 반복
  • 안 쓰는 CSS 자동 제거(purge) → 가벼움
  • md:/lg: 반응형, dark: 다크모드를 인라인으로
  • 디자인 시스템/토큰과 궁합, 에이전트가 다루기 쉬움

단점 / 주의

  • 마크업에 클래스가 길게 붙어 가독성 저하
  • 클래스 이름 러닝 커브
  • 규칙 없이 쓰면 여전히 난잡 → 컴포넌트로 묶어야
  • 긴 글 위주 콘텐츠 사이트엔 과할 수 있음
16실전 도구

shadcn/ui — 설치가 아니라 "복사해 소유하는" 컴포넌트

npm 의존성이 아니다

CLI가 컴포넌트 소스 코드를 내 저장소로 복사한다. 그 파일을 내가 소유하고 자유롭게 고친다. 접근성은 Radix UI, 스타일은 Tailwind 토큰이 담당.

zsh
# 필요한 컴포넌트만 골라 내 코드로
npx shadcn@latest add button card dialog
✔ components/ui/button.tsx  ← 내가 소유
✔ components/ui/card.tsx
✔ components/ui/dialog.tsx  (Radix 기반)
# 테마: CSS 변수로 색/라운드/다크모드

장점

  • 소유권 — 코드가 내 것, 커스터마이즈 무제한
  • 접근성 기본 탑재(Radix: 키보드/포커스/ARIA)
  • Tailwind 토큰 테마 + 다크모드 CSS 변수
  • 블록/차트/폼 등 조립용 레시피 제공

단점 / 주의

  • React + Tailwind 전제(그 밖 스택엔 부적합)
  • 복사본이라 업데이트가 수동(자동 반영 안 됨)
  • 초기 셋업(테마/경로) 필요
  • 무분별하게 add 하면 중복/부풀림
17

앞의 개념이 이 두 도구에서 이렇게 실현된다

이 도감의 개념Tailwind CSSshadcn/ui
디자인 토큰theme 설정 + CSS 변수(색/라운드/그림자)CSS 변수 테마를 그대로 사용
8pt 간격 스케일p-1/2/4/6 = 4/8/16/24px컴포넌트가 이 간격 클래스로 조립됨
타입 스케일text-sm/base/lg/xl/2xl동일 스케일로 위계 표현
반응형 분기점sm:/md:/lg:/xl: 접두사블록이 이미 반응형으로 설계
다크/라이트dark: variant + .dark 클래스의미 CSS 변수 교체로 자동 전환
화풍(스타일)유틸 조합 / 테마 프리셋Themes/tweakcn로 토큰 세트 교체
컴포넌트(부록①)직접 유틸로 조립레지스트리에서 add 해 소유
접근성직접 챙겨야 함(포커스/ARIA)Radix로 기본 탑재
언제 쓰나 — 빠른 React 제품이면 "Tailwind + shadcn/ui로, 토큰은 우리 브랜드 색, 다크모드 CSS 변수, 컴포넌트는 레지스트리에서 add". 접근성은 shadcn이 상당 부분 대신하지만 최종 검증은 우리 몫.
18

한눈 비교 — 색 · 선 · 그림자 · 라운드

스타일색선/테두리그림자라운드접근성
Flat솔리드 채도얇은 1px없음/약함작게 4~8좋음
Materialprimary 위계거의 없음elevation4좋음(가이드 내장)
Neumorphism저채도 단일톤없음이중(밝/어둠)크게 12~20취약(저대비)
Glassmorphism반투명+배경색옅은 흰선부드럽게+blur중간 12~16주의(대비/성능)
Neobrutalism고채도 원색두꺼운 검정하드 오프셋0대비 좋음/요란
Minimal/Swiss무채색+1강조최소없음0~4좋음
고를 때 — 제품 성격(도구/감성/콘텐츠), 브랜드, 접근성 요구를 먼저 정하고 스타일을 맞춘다. 한 화면에 여러 스타일을 섞지 않는다.
19

선 · 모서리 · 그림자 — 스타일을 가르는 세 손잡이

선 / 테두리border
1px hairline
3px solid
2px dashed
얇은 선=정돈, 두꺼운 검정=브루탈, 선 없음=미니멀/뉴모.
모서리radius
0 · 각진
8px · 기본
999 · pill
한 화면에선 라운드 값을 통일 — 섞으면 어수선해진다.
그림자(elevation)shadow
lv1 가까이
lv3 떠 있음
하드 오프셋
그림자 깊이 = 표면의 높이. 위로 뜰수록 크고 흐리게.
"버튼/카드 elevation은 2단계만(rest lv1, hover lv2). 라운드는 전역 8px로 통일, 보더는 hairline 1px."
20

다크 / 라이트 모드 — 한 화면, 두 테마

Light 결제 완료 주문이 확인됐어요. 영수증을 메일로 보냈습니다.
카드 면 #f1f5f9
확인
Dark 결제 완료 주문이 확인됐어요. 영수증을 메일로 보냈습니다.
카드 면 #23262e
확인

의미 토큰만 교체

--color-surface/text/border 값을 다크용으로 바꾸면 컴포넌트는 그대로 따라온다.

순검정 금지

배경은 #000이 아니라 #15171c 같은 짙은 회색. 텍스트도 순백 대신 #e5e7eb로 눈부심을 줄인다.

다크 전용 보정

그림자 대신 표면 밝기로 높이 표현. 강조색은 한 단계 밝게(600→400). 이미지/그림자 대비 재확인.

자동 전환

prefers-color-scheme로 OS 설정 따라가기 + 수동 토글 둘 다 제공.

"라이트/다크를 의미 토큰으로 분리, prefers-color-scheme 자동 + 수동 토글. 다크 배경 #15171c, 순검정/순백 금지, 강조색은 다크서 한 단계 밝게."
21Accessibility

접근성 ① — 명암비와 색

WCAG 명암비 기준

본문1.6 : 1 ✗
본문4.7 : 1 ✓ AA
본문17 : 1 ✓ AAA

본문 텍스트 4.5:1 이상(AA), 큰 글자/아이콘 3:1 이상. 저대비 스타일(뉴모/글래스)일수록 따로 확인.

색만으로 정보 전달 금지

"빨강=오류"를 색으로만 주지 않는다. 아이콘/라벨/텍스트를 함께 — 색각 이상 사용자 배려.

상태별 대비 유지

disabled/placeholder도 너무 흐리지 않게. hover/focus에서 대비가 깨지지 않는지 확인.

다크모드 재검증

라이트에서 통과해도 다크에서 떨어질 수 있다. 두 테마 모두 측정.

"모든 텍스트 명암비 4.5:1(AA) 보장, 큰 글자 3:1. 상태는 색+아이콘+라벨로 이중 표시. 라이트/다크 둘 다 검증."
22Accessibility

접근성 ② — 키보드 · 시맨틱 · 터치

시맨틱 HTML 우선

button/nav/main/label 같은 의미 태그를 div 대신. 스크린리더와 키보드가 공짜로 동작한다. 부족할 때만 ARIA로 보강.

키보드 전용 통과

Tab으로 모든 동작 도달, 순서는 시각 순서와 일치. 모달은 포커스 가두기(trap) + ESC 닫기.

포커스 링 살리기

outline:none 금지. 보이는 포커스 표시(2px 링, 3:1 대비). 미니멀/뉴모처럼 경계가 옅을수록 더 또렷이.

터치 타깃 / 대체텍스트

누르는 영역 최소 44×44px. 이미지 alt, 폼 입력엔 연결된 label, 아이콘 버튼엔 aria-label.

"시맨틱 태그 우선(button/nav/label), 키보드만으로 전 기능 도달, 보이는 포커스 링, 터치 타깃 44px, 아이콘 버튼 aria-label, 이미지 alt 필수."
23

모션 — 거들 뿐, 주인공이 아니다

목적 있는 움직임

상태 변화/연속성/피드백을 알릴 때만. 장식용 과한 애니메이션은 피로를 준다.

짧고 자연스럽게

전환 150~300ms, ease-out 계열. UI는 빠르게, 큰 영역일수록 약간 길게.

마이크로 인터랙션

hover 살짝 밝게, press 눌림, 토글 슬라이드, 로딩 스켈레톤 — 작은 반응이 품질감을 만든다.

접근성: 모션 줄이기

전정기관 민감 사용자를 위해 prefers-reduced-motion을 존중 — 큰 이동/패럴랙스는 끄고 페이드로 대체.

@media (prefers-reduced-motion: reduce){
  * { animation:none; transition:none; }
}
"전환은 200ms ease-out, hover/press 마이크로 인터랙션만. prefers-reduced-motion에서 큰 이동/패럴랙스 비활성, 페이드로 대체."
24

예시는 어디서 보나 — 갤러리 & 레퍼런스

실제 웹사이트 — 무드/스타일 찾기

영감/콘셉트 — 디자이너 작업물

앱/제품 UI 패턴 — 화면 단위

컴포넌트/시스템 레퍼런스

에이전트에게 레퍼런스를 줄 때 — "이 Awwwards/Mobbin 화면의 무드로, 레이아웃은 벤토, 토큰은 우리 브랜드 색"처럼 링크 + 토큰을 같이 건넨다.
25

정리 — 에이전트에게 화면을 지시하는 순서

지시 템플릿(붙여 쓰기)

prompt.md
# 1. 레이아웃
대시보드 셸 — 좌측 고정 사이드바, 상단 KPI 3,
본문 차트+표 8:4. max-width 1280, 8pt 그리드.
# 2. 스타일/토큰
Flat 베이스. primary #2563eb, 중립 회색 스케일,
radius 8 통일, elevation 2단계, 60/30/10 배분.
# 3. 컴포넌트
버튼 pill·hover 한 단계 밝게, 카드 lv1 그림자.
# 4. 테마
light/dark 의미 토큰, prefers-color-scheme + 토글.
# 5. 접근성
명암비 AA, 포커스 링, 키보드 전 기능, 터치 44px.
  • 레이아웃 → 토큰 → 컴포넌트 순서로 분리해 지시
  • "예쁘게" 대신 스타일 이름 + 토큰 값으로
  • 색은 역할(semantic)로, 간격/라운드는 스케일로
  • 다크/라이트는 의미 토큰 교체로 함께 요구
  • 접근성(AA/포커스/키보드)을 명세에 못박기
  • 한 화면 한 스타일 — 섞지 않기
  • 완성 후 대비/키보드 검증까지 시키기
부록 ①(부품 이름) + 부록 ②(화풍/토큰)을 함께 쓰면, 추측 없이 의도한 화면이 한 번에 나온다.
정리

"스타일"은 결국 토큰의 조합 — 색/선/그림자/라운드/간격을 숫자로 말하면, 에이전트는 같은 화면을 재현한다.

레이아웃 → 토큰 → 컴포넌트 순으로 분리하고, 스타일은 이름 + 값으로 못박는다.

다크/라이트와 접근성(AA·포커스·키보드)은 옵션이 아니라 기본 명세에 넣는다.

레이아웃 · 화풍 · 토큰 · 다크모드 · 접근성 · 모션 — 각 장의 "예시 보기" 링크로 실제 사례를 바로 확인하며 에이전틱 코딩 지침으로 쓰세요.