diff --git a/CLAUDE.md b/CLAUDE.md
index 8cd7c245..5924490b 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -105,6 +105,8 @@ HTML fragment with four required sections:
- Be consistent within a single challenge
4. **Constraints** — Size bounds, data types, value ranges, **and performance test size**
+**SVG visualization** (optional): If the challenge involves a spatial or structural concept that is hard to understand from text alone, add an inline SVG diagram after the problem description paragraph. Good candidates include convolutions, pooling, attention masks, tree reductions, grid algorithms, and data movement patterns. Use a consistent dark theme (`#222` background, `#ccc` text, blue/green accents) and `style="display:block; margin:20px auto;"`. See existing examples in `challenges/easy/9_1d_convolution/challenge.html` or `challenges/medium/74_gpt2_block/challenge.html`.
+
**Formatting rules:**
- `` for variables/functions; `` for 1D examples, LaTeX `\begin{bmatrix}` for matrices
- `≤`, `≥`, `×` for math symbols
@@ -181,6 +183,7 @@ Verify every item before submitting. This is the single source of truth — work
- [ ] First example matches `generate_example_test()` values
- [ ] Examples use `` for 1D data, LaTeX `\begin{bmatrix}` for matrices — consistent, never mixed
- [ ] Constraints includes `Performance is measured with param = value` bullet matching `generate_performance_test()`
+- [ ] If the concept is spatial/structural, includes an SVG visualization after the problem description (dark theme, `#222` background)
### challenge.py
- [ ] `class Challenge` inherits `ChallengeBase`
diff --git a/challenges/easy/3_matrix_transpose/challenge.html b/challenges/easy/3_matrix_transpose/challenge.html
index 94e5ce06..3210658c 100644
--- a/challenges/easy/3_matrix_transpose/challenge.html
+++ b/challenges/easy/3_matrix_transpose/challenge.html
@@ -3,6 +3,62 @@
transpose of a matrix switches its rows and columns. Given a matrix \(A\) of dimensions \(rows \times cols\), the transpose \(A^T\) will have dimensions \(cols \times rows\). All matrices are stored in row-major format.
[A[0], B[0], A[1], B[1], A[2], B[2], ...]
+
+
The input consists of two arrays:
M, and d are of data type int32.
+
The input consists of:
[a, b, c, d, ...], the prefix sum is [a, a+b, a+b+c, a+b+c+d, ...].
+
+