diff --git a/LOG.md b/LOG.md
index 6cee799..af1b6b7 100644
--- a/LOG.md
+++ b/LOG.md
@@ -1,5 +1,13 @@
# Work Log
+## 2026-06-24
+
+- Refined the chess board visual style to match the app's glass/control surfaces instead of the previous heavy wood-and-token treatment.
+- Removed the circular chip backgrounds from pieces, kept high-contrast glyphs with subtle outlines, softened square/highlight colors, and tightened coordinate labels for a cleaner chess UI.
+- Rebalanced chess board sizing and layout columns so the board window, actual board, side panel, and Dock spacing feel less awkward on a 1280x720 desktop viewport.
+- Validation: `npm run lint` passed and `npm run build` passed. Browser verification on `http://localhost:3124/play/chess` with a temporary local puzzle API confirmed 64 squares, 32 rendered pieces, a 350px visible board above the Dock, balanced 480px/320px board-panel windows, and no console errors. The temporary API was stopped after verification.
+- Recommended next task: verify the real authenticated `/chess/play/{gameId}` board against the Maia backend at common laptop heights and tune only the board size formula if the live game info panel changes vertical rhythm.
+
## 2026-06-19
- Added Maia game resign and undo API wrappers, then wired the play screen with in-progress-only "무르기" and "기권" actions plus a persistent "새 게임" link back to the setup screen.
diff --git a/src/components/chess/ChessBoard.tsx b/src/components/chess/ChessBoard.tsx
index 8170d03..6201a4c 100644
--- a/src/components/chess/ChessBoard.tsx
+++ b/src/components/chess/ChessBoard.tsx
@@ -217,8 +217,8 @@ export default function ChessBoard({
}, [fen, game, lastMoveSquares]);
return (
-
-
+
+
{boardSquares.map((square) => {
const piece = game.get(square);
@@ -262,25 +262,25 @@ export default function ChessBoard({
}}
className={clsx(
'relative min-h-0 min-w-0 overflow-hidden transition-[filter,box-shadow] duration-150',
- isLight ? 'bg-[#f0dfc1]' : 'bg-[#6f8f72]',
+ isLight ? 'bg-[#edf2f5] dark:bg-[#c8d0d6]' : 'bg-[#7fa18b] dark:bg-[#415d52]',
canDrag && 'cursor-grab active:cursor-grabbing',
- !disabled && 'hover:brightness-110 focus-visible:z-20',
+ !disabled && 'hover:brightness-[1.04] focus-visible:z-20',
disabled && 'cursor-not-allowed',
)}
aria-label={getSquareLabel(square, piece)}
aria-pressed={isSelected}
>
{isLastMoveSquare && (
-
+
)}
{isSelected && (
-
+
)}
{file === firstFile && (
{rank}
@@ -289,8 +289,8 @@ export default function ChessBoard({
{rank === lastRank && (
{file}
@@ -301,8 +301,8 @@ export default function ChessBoard({
className={clsx(
'absolute z-10 rounded-full transition',
piece
- ? 'inset-[12%] border-[3px] border-rose-500/55 shadow-[0_0_0_1px_rgb(255_255_255_/_0.26)_inset]'
- : 'left-1/2 top-1/2 h-[24%] w-[24%] -translate-x-1/2 -translate-y-1/2 bg-slate-950/35 shadow-[0_1px_3px_rgb(0_0_0_/_0.24)]',
+ ? 'inset-[13%] border-[2px] border-[var(--color-accent)]/70 shadow-[0_0_0_1px_rgb(255_255_255_/_0.28)_inset]'
+ : 'left-1/2 top-1/2 h-[22%] w-[22%] -translate-x-1/2 -translate-y-1/2 bg-[var(--color-accent)]/42 shadow-[0_1px_3px_rgb(0_0_0_/_0.18)]',
)}
/>
)}
@@ -326,13 +326,13 @@ export default function ChessBoard({
>
{PIECE_SYMBOLS[piece.color][piece.type]}
diff --git a/src/components/chess/ChessGamePlayClient.tsx b/src/components/chess/ChessGamePlayClient.tsx
index e11b269..6de243b 100644
--- a/src/components/chess/ChessGamePlayClient.tsx
+++ b/src/components/chess/ChessGamePlayClient.tsx
@@ -489,14 +489,14 @@ export default function ChessGamePlayClient({ gameId }: ChessGamePlayClientProps
-
+
-
+
(color === 'w' ? '백' : '흑');
@@ -83,7 +83,7 @@ function ChessPageFrame({ children }: { children: ReactNode }) {
function BoardWindow({ children }: { children: ReactNode }) {
return (
-
+
{children}
@@ -95,7 +95,7 @@ function LoadingState() {
return (
-
+
{BOARD_SQUARES.map((square, index) => (
@@ -103,8 +103,9 @@ function LoadingState() {
key={square}
className={clsx(
'aspect-square animate-pulse',
- (index + Math.floor(index / 8)) % 2 === 0 ? 'bg-black/[0.06]' : 'bg-black/[0.12]',
- 'dark:bg-white/[0.08]',
+ (index + Math.floor(index / 8)) % 2 === 0
+ ? 'bg-[#edf2f5] dark:bg-[#c8d0d6]'
+ : 'bg-[#7fa18b] dark:bg-[#415d52]',
)}
/>
))}
@@ -269,7 +270,7 @@ function ChessPuzzleBoard({ puzzle }: { puzzle: ChessPuzzle }) {
-