diff --git a/app/src/main/res/values/typography.xml b/app/src/main/res/values/typography.xml
new file mode 100644
index 00000000..d2b8a383
--- /dev/null
+++ b/app/src/main/res/values/typography.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/plan-task/20260515_XMLTypography스타일추가.md b/docs/plan-task/20260515_XMLTypography스타일추가.md
new file mode 100644
index 00000000..5fffdb08
--- /dev/null
+++ b/docs/plan-task/20260515_XMLTypography스타일추가.md
@@ -0,0 +1,107 @@
+# XML Typography 스타일 추가
+
+## 작업 목표
+- XML 레이아웃에서 재사용할 수 있는 Typography 스타일 리소스를 추가한다.
+
+## 구현 계획
+
+### Task 1: Typography 리소스 파일 추가
+
+**Files:**
+- Create: `app/src/main/res/values/typography.xml`
+
+- [x] **Step 1: `typography.xml` 생성**
+
+```xml
+
+
+
+```
+
+- [x] **Step 2: 요청된 13개 스타일 완성**
+
+`Heading1-4`, `Body1-6`, `Caption1-3`을 모두 추가하고 각 스타일은 `android:fontFamily`, `android:textSize`만 포함한다.
+
+- [x] **Step 3: 리소스 빌드 검증**
+
+Run: `./gradlew :app:assembleDebug`
+Expected: `BUILD SUCCESSFUL`
+
+### Task 2: Typography 사용 샘플 문서화
+
+**Files:**
+- Modify: `docs/prd/20260515_typography_xml_style_prd.md`
+- Modify: `docs/plan-task/20260515_XMLTypography스타일추가.md`
+
+- [x] **Step 1: XML 사용 샘플 추가**
+
+```xml
+
+```
+
+- [x] **Step 2: Kotlin 사용 샘플 추가**
+
+```kotlin
+val textView = TextView(requireContext()).apply {
+ text = "본문"
+ setTextAppearance(R.style.Typography_Body3)
+}
+```
+
+- [x] **Step 3: Kotlin 리소스명 규칙 기록**
+
+XML 스타일명 `Typography.Body3`는 Kotlin `R.style`에서 `Typography_Body3`처럼 점(`.`) 대신 밑줄(`_`)로 참조한다.
+
+## 체크리스트
+- [x] AC1: `Typography.Heading1`부터 `Typography.Heading4`까지 4개 스타일이 존재한다.
+ - QA: `app/src/main/res/values/typography.xml`에서 스타일명, `textSize`, `fontFamily` 확인
+- [x] AC2: `Typography.Body1`부터 `Typography.Body6`까지 6개 스타일이 존재한다.
+ - QA: `app/src/main/res/values/typography.xml`에서 스타일명, `textSize`, `fontFamily` 확인
+- [x] AC3: `Typography.Caption1`부터 `Typography.Caption3`까지 3개 스타일이 존재한다.
+ - QA: `app/src/main/res/values/typography.xml`에서 스타일명, `textSize`, `fontFamily` 확인
+- [x] AC4: 기존 XML 레이아웃은 변경하지 않는다.
+ - QA: 변경 파일 목록에서 레이아웃 XML 변경이 없는지 확인
+- [x] AC5: 변경 파일 진단/빌드 검증을 수행한다.
+ - QA: `lsp_diagnostics`, `./gradlew :app:assembleDebug`
+- [x] AC6: Typography 사용 샘플을 XML과 Kotlin 기준으로 확인할 수 있다.
+ - QA: PRD 문서의 Usage Samples 섹션에서 `style="@style/Typography.Heading1"`와 `R.style.Typography_Body3` 확인
+
+## 검증 기록
+- 2026-05-15
+ - 무엇/왜/어떻게: 구현 전 계획 문서 작성. XML 기반 프로젝트이므로 Compose Typography 대신 values 리소스 스타일 추가로 범위를 한정했다.
+ - 실행 명령/도구:
+ - `read(docs/prd/sample-prd.md)`
+ - `read(app/src/main/res/values/themes.xml)`
+ - `rg --files app/src/main/res/values`
+ - 결과:
+ - PRD와 계획/TASK 문서를 기준으로 `typography.xml` 신규 생성 작업을 진행한다.
+- 2026-05-15
+ - 무엇/왜/어떻게: `app/src/main/res/values/typography.xml`을 추가해 요청된 Heading, Body, Caption Typography 스타일 13개를 정의했다. Android 점 표기 스타일은 부모 스타일을 참조하므로 AAPT 리소스 링크 오류를 방지하기 위해 빈 베이스 스타일 `Typography`를 함께 추가했다.
+ - 실행 명령/도구:
+ - `lsp_diagnostics(app/src/main/res/values/typography.xml)`
+ - `./gradlew :app:assembleDebug`
+ - `rg("
+```
+
+기존 프로젝트의 동적 `TextView` 생성 코드는 `textSize` 등을 직접 지정하고 있다. Kotlin에서 새 Typography 스타일을 적용해야 할 때는 생성한 `TextView`에 `setTextAppearance()`를 사용한다. XML 스타일명 `Typography.Body3`는 Kotlin `R.style`에서 `Typography_Body3`로 참조한다.
+
+```kotlin
+val textView = TextView(requireContext()).apply {
+ text = "본문"
+ setTextAppearance(R.style.Typography_Body3)
+}
+```
+
+---
+
+## 9. Technical Constraints
+- 현재 프로젝트는 Compose가 아니라 XML 레이아웃 중심이므로 XML style 리소스로 구현한다.
+- 새 스타일은 `TextView`에서 `style="@style/Typography.Body3"` 형태로 사용할 수 있어야 한다.
+- Kotlin 코드에서는 `R.style.Typography_Body3`처럼 점(`.`) 대신 밑줄(`_`)로 변환된 리소스 이름을 사용한다.
+- 기존 `themes.xml`을 비대하게 만들지 않기 위해 Typography 전용 values XML 파일을 사용한다.
+
+---
+
+## 10. Metrics
+- Android 리소스 병합 및 디버그 빌드가 성공한다.
+- `typography.xml`에 요청된 13개 스타일이 모두 존재한다.
+
+---
+
+## 11. Open Questions
+- 없음. 현재 요청 범위에서는 기존 XML 교체 없이 스타일 리소스만 추가한다.