diff --git a/modules/coreI18n/src/main/key.scala b/modules/coreI18n/src/main/key.scala
index a2fff7e4c57d6..8b666ef065c6f 100644
--- a/modules/coreI18n/src/main/key.scala
+++ b/modules/coreI18n/src/main/key.scala
@@ -1274,6 +1274,8 @@ object I18nKey:
val `interferenceDescription`: I18nKey = "puzzleTheme:interferenceDescription"
val `intermezzo`: I18nKey = "puzzleTheme:intermezzo"
val `intermezzoDescription`: I18nKey = "puzzleTheme:intermezzoDescription"
+ val `killBoxMate`: I18nKey = "puzzleTheme:killBoxMate"
+ val `killBoxMateDescription`: I18nKey = "puzzleTheme:killBoxMateDescription"
val `knightEndgame`: I18nKey = "puzzleTheme:knightEndgame"
val `knightEndgameDescription`: I18nKey = "puzzleTheme:knightEndgameDescription"
val `long`: I18nKey = "puzzleTheme:long"
diff --git a/modules/puzzle/src/main/PuzzleTheme.scala b/modules/puzzle/src/main/PuzzleTheme.scala
index 3e4a3bd2ca130..8dacb99dc2d7f 100644
--- a/modules/puzzle/src/main/PuzzleTheme.scala
+++ b/modules/puzzle/src/main/PuzzleTheme.scala
@@ -49,6 +49,7 @@ object PuzzleTheme:
val interference = PuzzleTheme(i.interference, i.interferenceDescription)
val intermezzo = PuzzleTheme(i.intermezzo, i.intermezzoDescription)
val kingsideAttack = PuzzleTheme(i.kingsideAttack, i.kingsideAttackDescription)
+ val killBoxMate = PuzzleTheme(i.killBoxMate, i.killBoxMateDescription)
val knightEndgame = PuzzleTheme(i.knightEndgame, i.knightEndgameDescription)
val long = PuzzleTheme(i.long, i.longDescription)
val master = PuzzleTheme(i.master, i.masterDescription)
@@ -139,6 +140,7 @@ object PuzzleTheme:
doubleBishopMate,
dovetailMate,
hookMate,
+ killBoxMate,
smotheredMate
),
I18nKey.puzzle.specialMoves -> List(
diff --git a/public/images/puzzle-themes/killBoxMate.svg b/public/images/puzzle-themes/killBoxMate.svg
new file mode 100644
index 0000000000000..d354b91eaebbd
--- /dev/null
+++ b/public/images/puzzle-themes/killBoxMate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/translation/source/puzzleTheme.xml b/translation/source/puzzleTheme.xml
index 3ae2dd556eb57..dfaa121997ba2 100644
--- a/translation/source/puzzleTheme.xml
+++ b/translation/source/puzzleTheme.xml
@@ -57,6 +57,8 @@
Moving a piece between two opponent pieces to leave one or both opponent pieces undefended, such as a knight on a defended square between two rooks.IntermezzoInstead of playing the expected move, first interpose another move posing an immediate threat that the opponent must answer. Also known as "Zwischenzug" or "In between".
+ Kill box mate
+ A rook is next to the enemy king and supported by a queen that also blocks the king's escape squares. The rook and the queen catch the enemy king in a 3 by 3 "kill box".Knight endgameAn endgame with only knights and pawns.Long puzzle
diff --git a/ui/@types/lichess/i18n.d.ts b/ui/@types/lichess/i18n.d.ts
index 5c27b24b9eebc..c0b9bfdf82756 100644
--- a/ui/@types/lichess/i18n.d.ts
+++ b/ui/@types/lichess/i18n.d.ts
@@ -2471,6 +2471,10 @@ interface I18n {
intermezzo: string;
/** Instead of playing the expected move, first interpose another move posing an immediate threat that the opponent must answer. Also known as "Zwischenzug" or "In between". */
intermezzoDescription: string;
+ /** Kill box mate */
+ killBoxMate: string;
+ /** A rook is next to the enemy king and supported by a queen that also blocks the king's escape squares. The rook and the queen catch the enemy king in a 3 by 3 "kill box". */
+ killBoxMateDescription: string;
/** Kingside attack */
kingsideAttack: string;
/** An attack of the opponent's king, after they castled on the king side. */