diff --git a/apps/web/.claude/settings.local.json b/apps/web/.claude/settings.local.json
index 511c257c..0316538b 100644
--- a/apps/web/.claude/settings.local.json
+++ b/apps/web/.claude/settings.local.json
@@ -142,7 +142,10 @@
"Bash(__NEW_LINE__ sed -n '68,73p' CaptureSection.tsx.bak)",
"WebFetch(domain:hub.docker.com)",
"Bash(gcloud auth:*)",
- "Bash(gcloud config list:*)"
+ "Bash(gcloud config list:*)",
+ "WebFetch(domain:www.boardspace.net)",
+ "WebFetch(domain:www.gamecabinet.com)",
+ "WebFetch(domain:en.wikipedia.org)"
],
"deny": [],
"ask": []
diff --git a/apps/web/src/arcade-games/rithmomachia/components/guide-sections/HarmonySection.tsx b/apps/web/src/arcade-games/rithmomachia/components/guide-sections/HarmonySection.tsx
index f013e6c5..84abec1a 100644
--- a/apps/web/src/arcade-games/rithmomachia/components/guide-sections/HarmonySection.tsx
+++ b/apps/web/src/arcade-games/rithmomachia/components/guide-sections/HarmonySection.tsx
@@ -343,38 +343,6 @@ export function HarmonySection({ useNativeAbacusNumbers }: { useNativeAbacusNumb
- {/* Rules Section */}
-
-
- {t('harmony.rulesTitle')}
-
-
- -
- {t('harmony.enemyTerritoryTitle')} {t('harmony.enemyTerritory')}
-
- -
- {t('harmony.straightLineTitle')} {t('harmony.straightLine')}
-
- -
- {t('harmony.adjacentTitle')} {t('harmony.adjacent')}
-
- -
- {t('harmony.survivalTitle')} {t('harmony.survival')}
-
- -
- {t('harmony.victoryTitle')} {t('harmony.victoryRule')}
-
-
-
-
{/* Strategy Section */}
👑
{t('victory.harmony')}
-
+
{t('victory.harmonyDesc')}
+ {/* Requirements Section */}
+
+
+ {t('victory.requirementsTitle')}
+
+
+ -
+ {t('victory.enemyTerritoryTitle')} {t('victory.enemyTerritory')}
+
+ -
+ {t('victory.straightLineTitle')} {t('victory.straightLine')}
+
+ -
+ {t('victory.adjacentTitle')} {t('victory.adjacent')}
+
+ -
+ {t('victory.progressionTitle')} {t('victory.progression')}
+
+ -
+ {t('victory.survivalTitle')} {t('victory.survival')}
+
+
+
+
{/* Visual example of winning harmony */}
-
- {t('victory.harmonyNote')}
+
+ 💡 {t('victory.harmonyNote')}
@@ -141,31 +182,32 @@ export function VictorySection({ useNativeAbacusNumbers }: { useNativeAbacusNumb
-
- {t('victory.strategyTitle')}
-
-
- - {t('victory.tip1')}
- - {t('victory.tip2')}
- - {t('victory.tip3')}
- - {t('victory.tip4')}
- - {t('victory.tip5')}
-
+
+
+ {t('victory.strategyTitle')}
+
+
+ - {t('victory.tip1')}
+ - {t('victory.tip2')}
+ - {t('victory.tip3')}
+ - {t('victory.tip4')}
+ - {t('victory.tip5')}
+
+
)
}
diff --git a/apps/web/src/arcade-games/rithmomachia/i18n/locales/en.json b/apps/web/src/arcade-games/rithmomachia/i18n/locales/en.json
index d0ef85e9..818c841a 100644
--- a/apps/web/src/arcade-games/rithmomachia/i18n/locales/en.json
+++ b/apps/web/src/arcade-games/rithmomachia/i18n/locales/en.json
@@ -178,24 +178,24 @@
"pyramidEx3Note": "Face selection: Black chooses face 36 → 36 ÷ 9 = 4 (multiple) → Capture succeeds! Note: Black could also use face 4 with a helper 5 for sum (4 + 5 = 9), showing multiple valid approaches."
},
"harmony": {
- "title": "Harmonies: The Coolest Way to Win",
- "intro": "A Harmony is how you win the game. Get 3 of your pieces into enemy territory in a straight line. Their values must form a mathematical pattern.",
+ "title": "Harmonies: Mathematical Progressions",
+ "intro": "A Harmony is a special arrangement of 3 pieces whose values form a mathematical pattern.",
"introDetail": "Think of it like a number sequence. There are 3 types of patterns you can make:",
"arithmetic": "1. Arithmetic (Easiest)",
"arithmeticDesc": "The middle number is exactly between the other two. Equal spacing.",
"arithmeticFormula": "Middle × 2 = First + Last",
"arithmeticTip": "Small circles (2-9) work great here. Look for equal gaps! Example: 6, 9, 12",
- "arithmeticCaption": "White pieces 6, 9, 12 in a row in enemy territory form an arithmetic progression",
+ "arithmeticCaption": "White pieces 6, 9, 12 in a row form an arithmetic progression",
"geometric": "2. Geometric (Multiply by Same Number)",
"geometricDesc": "Multiply by the same number each time. Equal ratios.",
"geometricFormula": "Middle² = First × Last",
"geometricTip": "Square numbers work great! Example: 4, 8, 16 (multiply by 2 each time)",
- "geometricCaption": "White pieces 4, 8, 16 in a row in enemy territory form a geometric progression",
+ "geometricCaption": "White pieces 4, 8, 16 in a row form a geometric progression",
"harmonic": "3. Harmonic (Tricky!)",
"harmonicDesc": "Based on musical harmonies. Hardest to spot.",
"harmonicFormula": "2 × First × Last = Middle × (First + Last)",
"harmonicTip": "These are rare. Just memorize these combos: 3-4-6, 4-6-12, 6-8-12, 6-10-15",
- "harmonicCaption": "White pieces 6, 8, 12 in a row in enemy territory form a harmonic progression",
+ "harmonicCaption": "White pieces 6, 8, 12 in a row form a harmonic progression",
"howToCheck": "How to check:",
"example": "Example:",
"check": "Check:",
@@ -203,18 +203,7 @@
"equal": "(equal!)",
"ratios": "Ratios:",
"strategyTip": "Strategy tip:",
- "rulesTitle": "⚠️ Important Rules",
- "enemyTerritoryTitle": "Must be in enemy territory:",
- "enemyTerritory": "All 3 pieces must be on opponent's side (White: rows 5-8, Black: rows 1-4)",
- "straightLineTitle": "Must be in a line:",
- "straightLine": "Row, column, or diagonal. No scattered pieces!",
- "adjacentTitle": "Must be touching:",
- "adjacent": "The 3 pieces must be next to each other with no gaps",
- "survivalTitle": "Must survive one turn:",
- "survival": "After you declare harmony, opponent gets ONE turn to break it",
- "victoryTitle": "Then you win:",
- "victoryRule": "If it survives, you win on your next turn!",
- "strategyTitle": "How to Win with Harmonies",
+ "strategyTitle": "How to Build Harmonies",
"startWith2Title": "Start with 2, then add the 3rd",
"startWith2": "Get 2 pieces deep first. Figure out which 3rd piece completes the pattern. Then push that piece forward. They might not see it coming!",
"useCommonTitle": "Use common numbers",
@@ -230,13 +219,24 @@
"victory": {
"title": "How to Win",
"harmony": "Victory #1: Harmony (Progression)",
- "harmonyDesc": "Form a mathematical progression with 3 pieces in enemy territory. If it survives your opponent's next turn, you win!",
+ "harmonyDesc": "This is the primary way to win. Form a mathematical progression with 3 of your pieces in enemy territory. If it survives your opponent's next turn, you win!",
+ "requirementsTitle": "Requirements",
+ "enemyTerritoryTitle": "Must be in enemy territory:",
+ "enemyTerritory": "All 3 pieces must be on opponent's side (White: rows 5-8, Black: rows 1-4)",
+ "straightLineTitle": "Must be in a line:",
+ "straightLine": "Row, column, or diagonal. No scattered pieces!",
+ "adjacentTitle": "Must be touching:",
+ "adjacent": "The 3 pieces must be next to each other with no gaps",
+ "progressionTitle": "Must form a progression:",
+ "progression": "Values must form arithmetic, geometric, or harmonic progression (see Harmony tab)",
+ "survivalTitle": "Must survive one turn:",
+ "survival": "After you declare harmony, opponent gets ONE turn to break it. If they can't, you win!",
"exampleTitle": "Example: White Wins!",
- "exampleCaption": "White pieces 4, 8, 16 form a geometric progression in enemy territory. Black cannot break it - White wins!",
- "harmonyNote": "This is the primary victory condition in Rithmomachia",
+ "exampleCaption": "White pieces 4, 8, 16 form a geometric progression in enemy territory (rows 5-8). Black cannot break it - White wins!",
+ "harmonyNote": "See the Harmony tab for details on the three types of progressions and how to form them",
"exhaustion": "Victory #2: Exhaustion",
"exhaustionDesc": "If your opponent has no legal moves at the start of their turn, they lose.",
- "strategyTitle": "Quick Tips",
+ "strategyTitle": "Winning Strategies",
"tip1": "Control the center - easier to push forward",
"tip2": "Small pieces are fast - circles can slip into enemy side quickly",
"tip3": "Big pieces are powerful - harder to capture",