diff --git a/assets/cards/faces/10C.png b/assets/cards/faces/10C.png
index b4b9142..65d5a31 100644
Binary files a/assets/cards/faces/10C.png and b/assets/cards/faces/10C.png differ
diff --git a/assets/cards/faces/10D.png b/assets/cards/faces/10D.png
index 16721d2..67df1b6 100644
Binary files a/assets/cards/faces/10D.png and b/assets/cards/faces/10D.png differ
diff --git a/assets/cards/faces/10H.png b/assets/cards/faces/10H.png
index 97881a2..92362db 100644
Binary files a/assets/cards/faces/10H.png and b/assets/cards/faces/10H.png differ
diff --git a/assets/cards/faces/10S.png b/assets/cards/faces/10S.png
index a7634d2..f1832e8 100644
Binary files a/assets/cards/faces/10S.png and b/assets/cards/faces/10S.png differ
diff --git a/assets/cards/faces/2C.png b/assets/cards/faces/2C.png
index 9e1d816..69d9c0f 100644
Binary files a/assets/cards/faces/2C.png and b/assets/cards/faces/2C.png differ
diff --git a/assets/cards/faces/2D.png b/assets/cards/faces/2D.png
index 90f44c6..1484651 100644
Binary files a/assets/cards/faces/2D.png and b/assets/cards/faces/2D.png differ
diff --git a/assets/cards/faces/2H.png b/assets/cards/faces/2H.png
index bf08097..d31fcd0 100644
Binary files a/assets/cards/faces/2H.png and b/assets/cards/faces/2H.png differ
diff --git a/assets/cards/faces/2S.png b/assets/cards/faces/2S.png
index 73cba4c..c6e4e1d 100644
Binary files a/assets/cards/faces/2S.png and b/assets/cards/faces/2S.png differ
diff --git a/assets/cards/faces/3C.png b/assets/cards/faces/3C.png
index 237782a..b8b39cd 100644
Binary files a/assets/cards/faces/3C.png and b/assets/cards/faces/3C.png differ
diff --git a/assets/cards/faces/3D.png b/assets/cards/faces/3D.png
index b528213..387cf26 100644
Binary files a/assets/cards/faces/3D.png and b/assets/cards/faces/3D.png differ
diff --git a/assets/cards/faces/3H.png b/assets/cards/faces/3H.png
index c91e015..fe01a2a 100644
Binary files a/assets/cards/faces/3H.png and b/assets/cards/faces/3H.png differ
diff --git a/assets/cards/faces/3S.png b/assets/cards/faces/3S.png
index 2258e79..1e94a3d 100644
Binary files a/assets/cards/faces/3S.png and b/assets/cards/faces/3S.png differ
diff --git a/assets/cards/faces/4C.png b/assets/cards/faces/4C.png
index 9d4d541..1cfd385 100644
Binary files a/assets/cards/faces/4C.png and b/assets/cards/faces/4C.png differ
diff --git a/assets/cards/faces/4D.png b/assets/cards/faces/4D.png
index 6039794..5ee8134 100644
Binary files a/assets/cards/faces/4D.png and b/assets/cards/faces/4D.png differ
diff --git a/assets/cards/faces/4H.png b/assets/cards/faces/4H.png
index d8b6ca1..c23f27c 100644
Binary files a/assets/cards/faces/4H.png and b/assets/cards/faces/4H.png differ
diff --git a/assets/cards/faces/4S.png b/assets/cards/faces/4S.png
index 3014c27..c9721a6 100644
Binary files a/assets/cards/faces/4S.png and b/assets/cards/faces/4S.png differ
diff --git a/assets/cards/faces/5C.png b/assets/cards/faces/5C.png
index 90a372a..e2127c9 100644
Binary files a/assets/cards/faces/5C.png and b/assets/cards/faces/5C.png differ
diff --git a/assets/cards/faces/5D.png b/assets/cards/faces/5D.png
index 133ea43..fb974fb 100644
Binary files a/assets/cards/faces/5D.png and b/assets/cards/faces/5D.png differ
diff --git a/assets/cards/faces/5H.png b/assets/cards/faces/5H.png
index 7f0519e..4ab139b 100644
Binary files a/assets/cards/faces/5H.png and b/assets/cards/faces/5H.png differ
diff --git a/assets/cards/faces/5S.png b/assets/cards/faces/5S.png
index 2a2575e..779cac8 100644
Binary files a/assets/cards/faces/5S.png and b/assets/cards/faces/5S.png differ
diff --git a/assets/cards/faces/6C.png b/assets/cards/faces/6C.png
index 192f005..36ac9a7 100644
Binary files a/assets/cards/faces/6C.png and b/assets/cards/faces/6C.png differ
diff --git a/assets/cards/faces/6D.png b/assets/cards/faces/6D.png
index a0a6caa..c57052c 100644
Binary files a/assets/cards/faces/6D.png and b/assets/cards/faces/6D.png differ
diff --git a/assets/cards/faces/6H.png b/assets/cards/faces/6H.png
index ec5e5bc..3c7702b 100644
Binary files a/assets/cards/faces/6H.png and b/assets/cards/faces/6H.png differ
diff --git a/assets/cards/faces/6S.png b/assets/cards/faces/6S.png
index f9a92ec..893c800 100644
Binary files a/assets/cards/faces/6S.png and b/assets/cards/faces/6S.png differ
diff --git a/assets/cards/faces/7C.png b/assets/cards/faces/7C.png
index f9e1899..fee30a8 100644
Binary files a/assets/cards/faces/7C.png and b/assets/cards/faces/7C.png differ
diff --git a/assets/cards/faces/7D.png b/assets/cards/faces/7D.png
index 94ba6b2..375f117 100644
Binary files a/assets/cards/faces/7D.png and b/assets/cards/faces/7D.png differ
diff --git a/assets/cards/faces/7H.png b/assets/cards/faces/7H.png
index 1e6fa7e..333577f 100644
Binary files a/assets/cards/faces/7H.png and b/assets/cards/faces/7H.png differ
diff --git a/assets/cards/faces/7S.png b/assets/cards/faces/7S.png
index f652e8b..f05fec7 100644
Binary files a/assets/cards/faces/7S.png and b/assets/cards/faces/7S.png differ
diff --git a/assets/cards/faces/8C.png b/assets/cards/faces/8C.png
index 29abffb..9def589 100644
Binary files a/assets/cards/faces/8C.png and b/assets/cards/faces/8C.png differ
diff --git a/assets/cards/faces/8D.png b/assets/cards/faces/8D.png
index 63bfc75..97592d2 100644
Binary files a/assets/cards/faces/8D.png and b/assets/cards/faces/8D.png differ
diff --git a/assets/cards/faces/8H.png b/assets/cards/faces/8H.png
index 1728ee0..35a3ba8 100644
Binary files a/assets/cards/faces/8H.png and b/assets/cards/faces/8H.png differ
diff --git a/assets/cards/faces/8S.png b/assets/cards/faces/8S.png
index 50167d4..c788731 100644
Binary files a/assets/cards/faces/8S.png and b/assets/cards/faces/8S.png differ
diff --git a/assets/cards/faces/9C.png b/assets/cards/faces/9C.png
index 111016c..d6fcd88 100644
Binary files a/assets/cards/faces/9C.png and b/assets/cards/faces/9C.png differ
diff --git a/assets/cards/faces/9D.png b/assets/cards/faces/9D.png
index 832ad3e..8822f3a 100644
Binary files a/assets/cards/faces/9D.png and b/assets/cards/faces/9D.png differ
diff --git a/assets/cards/faces/9H.png b/assets/cards/faces/9H.png
index 51fd98a..a5e37db 100644
Binary files a/assets/cards/faces/9H.png and b/assets/cards/faces/9H.png differ
diff --git a/assets/cards/faces/9S.png b/assets/cards/faces/9S.png
index 67046bb..4882e41 100644
Binary files a/assets/cards/faces/9S.png and b/assets/cards/faces/9S.png differ
diff --git a/assets/cards/faces/AC.png b/assets/cards/faces/AC.png
index 7426cb5..21db1d9 100644
Binary files a/assets/cards/faces/AC.png and b/assets/cards/faces/AC.png differ
diff --git a/assets/cards/faces/AD.png b/assets/cards/faces/AD.png
index baa9b39..41e1eac 100644
Binary files a/assets/cards/faces/AD.png and b/assets/cards/faces/AD.png differ
diff --git a/assets/cards/faces/AH.png b/assets/cards/faces/AH.png
index 1e99b6a..1e98bb5 100644
Binary files a/assets/cards/faces/AH.png and b/assets/cards/faces/AH.png differ
diff --git a/assets/cards/faces/AS.png b/assets/cards/faces/AS.png
index 3565d1c..86f8a2e 100644
Binary files a/assets/cards/faces/AS.png and b/assets/cards/faces/AS.png differ
diff --git a/assets/cards/faces/JC.png b/assets/cards/faces/JC.png
index 394dba1..aee45c7 100644
Binary files a/assets/cards/faces/JC.png and b/assets/cards/faces/JC.png differ
diff --git a/assets/cards/faces/JD.png b/assets/cards/faces/JD.png
index 786fbf9..7ada36a 100644
Binary files a/assets/cards/faces/JD.png and b/assets/cards/faces/JD.png differ
diff --git a/assets/cards/faces/JH.png b/assets/cards/faces/JH.png
index cd72ab0..9fe208f 100644
Binary files a/assets/cards/faces/JH.png and b/assets/cards/faces/JH.png differ
diff --git a/assets/cards/faces/JS.png b/assets/cards/faces/JS.png
index a42f91a..71a49d8 100644
Binary files a/assets/cards/faces/JS.png and b/assets/cards/faces/JS.png differ
diff --git a/assets/cards/faces/KC.png b/assets/cards/faces/KC.png
index 730155b..5096c5d 100644
Binary files a/assets/cards/faces/KC.png and b/assets/cards/faces/KC.png differ
diff --git a/assets/cards/faces/KD.png b/assets/cards/faces/KD.png
index 658146e..68ba147 100644
Binary files a/assets/cards/faces/KD.png and b/assets/cards/faces/KD.png differ
diff --git a/assets/cards/faces/KH.png b/assets/cards/faces/KH.png
index 2b9ffa8..58d5aa4 100644
Binary files a/assets/cards/faces/KH.png and b/assets/cards/faces/KH.png differ
diff --git a/assets/cards/faces/KS.png b/assets/cards/faces/KS.png
index f878bf5..5e4147f 100644
Binary files a/assets/cards/faces/KS.png and b/assets/cards/faces/KS.png differ
diff --git a/assets/cards/faces/QC.png b/assets/cards/faces/QC.png
index 93deb0a..9f06cfa 100644
Binary files a/assets/cards/faces/QC.png and b/assets/cards/faces/QC.png differ
diff --git a/assets/cards/faces/QD.png b/assets/cards/faces/QD.png
index 199d15b..f076dea 100644
Binary files a/assets/cards/faces/QD.png and b/assets/cards/faces/QD.png differ
diff --git a/assets/cards/faces/QH.png b/assets/cards/faces/QH.png
index 2376737..c0bb9d9 100644
Binary files a/assets/cards/faces/QH.png and b/assets/cards/faces/QH.png differ
diff --git a/assets/cards/faces/QS.png b/assets/cards/faces/QS.png
index 19f5690..e61f017 100644
Binary files a/assets/cards/faces/QS.png and b/assets/cards/faces/QS.png differ
diff --git a/docs/ui-mockups/design-system.md b/docs/ui-mockups/design-system.md
index ea45e4d..808d54f 100644
--- a/docs/ui-mockups/design-system.md
+++ b/docs/ui-mockups/design-system.md
@@ -217,7 +217,7 @@ Flat face design.
- Background: `#1a1a1a`
- Border: 1px solid in suit color (pink for hearts/diamonds, foreground gray for spades/clubs)
- Top-left: rank in JetBrains Mono Bold 18px + small suit glyph (10px)
-- Bottom-right: large suit glyph (32px), rotated 180°
+- Bottom-right: large suit glyph (32px), upright (same orientation as the top-left small glyph — single-orientation digital play does not benefit from the traditional 180° inverted-corner indicator)
- Corner radius: 8px
- Suit differentiation: hearts and spades have **filled** glyphs; diamonds and clubs have **outlined** glyphs (1.5px stroke)
diff --git a/solitaire_engine/assets/themes/default/clubs_10.svg b/solitaire_engine/assets/themes/default/clubs_10.svg
index 148b63e..fc8f6d3 100644
--- a/solitaire_engine/assets/themes/default/clubs_10.svg
+++ b/solitaire_engine/assets/themes/default/clubs_10.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/clubs_2.svg b/solitaire_engine/assets/themes/default/clubs_2.svg
index e1bf5e3..4feaba0 100644
--- a/solitaire_engine/assets/themes/default/clubs_2.svg
+++ b/solitaire_engine/assets/themes/default/clubs_2.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/clubs_3.svg b/solitaire_engine/assets/themes/default/clubs_3.svg
index 08012b5..5d1bc87 100644
--- a/solitaire_engine/assets/themes/default/clubs_3.svg
+++ b/solitaire_engine/assets/themes/default/clubs_3.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/clubs_4.svg b/solitaire_engine/assets/themes/default/clubs_4.svg
index ad9d868..8667f81 100644
--- a/solitaire_engine/assets/themes/default/clubs_4.svg
+++ b/solitaire_engine/assets/themes/default/clubs_4.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/clubs_5.svg b/solitaire_engine/assets/themes/default/clubs_5.svg
index 82a9edb..386785a 100644
--- a/solitaire_engine/assets/themes/default/clubs_5.svg
+++ b/solitaire_engine/assets/themes/default/clubs_5.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/clubs_6.svg b/solitaire_engine/assets/themes/default/clubs_6.svg
index 70c9b8f..2f9f911 100644
--- a/solitaire_engine/assets/themes/default/clubs_6.svg
+++ b/solitaire_engine/assets/themes/default/clubs_6.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/clubs_7.svg b/solitaire_engine/assets/themes/default/clubs_7.svg
index 20bc607..54319f3 100644
--- a/solitaire_engine/assets/themes/default/clubs_7.svg
+++ b/solitaire_engine/assets/themes/default/clubs_7.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/clubs_8.svg b/solitaire_engine/assets/themes/default/clubs_8.svg
index 4b69e67..55d1faf 100644
--- a/solitaire_engine/assets/themes/default/clubs_8.svg
+++ b/solitaire_engine/assets/themes/default/clubs_8.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/clubs_9.svg b/solitaire_engine/assets/themes/default/clubs_9.svg
index 6a26fe6..c5129c6 100644
--- a/solitaire_engine/assets/themes/default/clubs_9.svg
+++ b/solitaire_engine/assets/themes/default/clubs_9.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/clubs_ace.svg b/solitaire_engine/assets/themes/default/clubs_ace.svg
index 674591d..cf2383c 100644
--- a/solitaire_engine/assets/themes/default/clubs_ace.svg
+++ b/solitaire_engine/assets/themes/default/clubs_ace.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/clubs_jack.svg b/solitaire_engine/assets/themes/default/clubs_jack.svg
index 83bf611..a656b90 100644
--- a/solitaire_engine/assets/themes/default/clubs_jack.svg
+++ b/solitaire_engine/assets/themes/default/clubs_jack.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/clubs_king.svg b/solitaire_engine/assets/themes/default/clubs_king.svg
index e35d89c..6f979d8 100644
--- a/solitaire_engine/assets/themes/default/clubs_king.svg
+++ b/solitaire_engine/assets/themes/default/clubs_king.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/clubs_queen.svg b/solitaire_engine/assets/themes/default/clubs_queen.svg
index c16de4e..8437177 100644
--- a/solitaire_engine/assets/themes/default/clubs_queen.svg
+++ b/solitaire_engine/assets/themes/default/clubs_queen.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_10.svg b/solitaire_engine/assets/themes/default/diamonds_10.svg
index d2528c0..a88bc5a 100644
--- a/solitaire_engine/assets/themes/default/diamonds_10.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_10.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_2.svg b/solitaire_engine/assets/themes/default/diamonds_2.svg
index 6ae1a8e..c7ee305 100644
--- a/solitaire_engine/assets/themes/default/diamonds_2.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_2.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_3.svg b/solitaire_engine/assets/themes/default/diamonds_3.svg
index ac2411b..39dfdf5 100644
--- a/solitaire_engine/assets/themes/default/diamonds_3.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_3.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_4.svg b/solitaire_engine/assets/themes/default/diamonds_4.svg
index d07270c..ce5b94e 100644
--- a/solitaire_engine/assets/themes/default/diamonds_4.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_4.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_5.svg b/solitaire_engine/assets/themes/default/diamonds_5.svg
index d1765b2..c05ad81 100644
--- a/solitaire_engine/assets/themes/default/diamonds_5.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_5.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_6.svg b/solitaire_engine/assets/themes/default/diamonds_6.svg
index 8e62b15..de3af82 100644
--- a/solitaire_engine/assets/themes/default/diamonds_6.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_6.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_7.svg b/solitaire_engine/assets/themes/default/diamonds_7.svg
index 7bde549..eee758f 100644
--- a/solitaire_engine/assets/themes/default/diamonds_7.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_7.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_8.svg b/solitaire_engine/assets/themes/default/diamonds_8.svg
index a93a50f..3fecfaa 100644
--- a/solitaire_engine/assets/themes/default/diamonds_8.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_8.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_9.svg b/solitaire_engine/assets/themes/default/diamonds_9.svg
index bb5bd30..a1ea29b 100644
--- a/solitaire_engine/assets/themes/default/diamonds_9.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_9.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_ace.svg b/solitaire_engine/assets/themes/default/diamonds_ace.svg
index da050b1..969cefa 100644
--- a/solitaire_engine/assets/themes/default/diamonds_ace.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_ace.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_jack.svg b/solitaire_engine/assets/themes/default/diamonds_jack.svg
index 397e49e..ef7bba1 100644
--- a/solitaire_engine/assets/themes/default/diamonds_jack.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_jack.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_king.svg b/solitaire_engine/assets/themes/default/diamonds_king.svg
index 2546ba1..6bb9fad 100644
--- a/solitaire_engine/assets/themes/default/diamonds_king.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_king.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/diamonds_queen.svg b/solitaire_engine/assets/themes/default/diamonds_queen.svg
index 0c6540e..e3a1bf9 100644
--- a/solitaire_engine/assets/themes/default/diamonds_queen.svg
+++ b/solitaire_engine/assets/themes/default/diamonds_queen.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_10.svg b/solitaire_engine/assets/themes/default/hearts_10.svg
index b7c1e61..8eb7042 100644
--- a/solitaire_engine/assets/themes/default/hearts_10.svg
+++ b/solitaire_engine/assets/themes/default/hearts_10.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_2.svg b/solitaire_engine/assets/themes/default/hearts_2.svg
index a2de249..301cb2e 100644
--- a/solitaire_engine/assets/themes/default/hearts_2.svg
+++ b/solitaire_engine/assets/themes/default/hearts_2.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_3.svg b/solitaire_engine/assets/themes/default/hearts_3.svg
index d81e942..a9413a5 100644
--- a/solitaire_engine/assets/themes/default/hearts_3.svg
+++ b/solitaire_engine/assets/themes/default/hearts_3.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_4.svg b/solitaire_engine/assets/themes/default/hearts_4.svg
index 428976f..9515f91 100644
--- a/solitaire_engine/assets/themes/default/hearts_4.svg
+++ b/solitaire_engine/assets/themes/default/hearts_4.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_5.svg b/solitaire_engine/assets/themes/default/hearts_5.svg
index 72a4ff5..50aaa13 100644
--- a/solitaire_engine/assets/themes/default/hearts_5.svg
+++ b/solitaire_engine/assets/themes/default/hearts_5.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_6.svg b/solitaire_engine/assets/themes/default/hearts_6.svg
index cc3f363..21e07be 100644
--- a/solitaire_engine/assets/themes/default/hearts_6.svg
+++ b/solitaire_engine/assets/themes/default/hearts_6.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_7.svg b/solitaire_engine/assets/themes/default/hearts_7.svg
index a2c654e..a8c905f 100644
--- a/solitaire_engine/assets/themes/default/hearts_7.svg
+++ b/solitaire_engine/assets/themes/default/hearts_7.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_8.svg b/solitaire_engine/assets/themes/default/hearts_8.svg
index 4721a79..8ecea9d 100644
--- a/solitaire_engine/assets/themes/default/hearts_8.svg
+++ b/solitaire_engine/assets/themes/default/hearts_8.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_9.svg b/solitaire_engine/assets/themes/default/hearts_9.svg
index b1fa666..8bac73d 100644
--- a/solitaire_engine/assets/themes/default/hearts_9.svg
+++ b/solitaire_engine/assets/themes/default/hearts_9.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_ace.svg b/solitaire_engine/assets/themes/default/hearts_ace.svg
index 3cd302d..08c1278 100644
--- a/solitaire_engine/assets/themes/default/hearts_ace.svg
+++ b/solitaire_engine/assets/themes/default/hearts_ace.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_jack.svg b/solitaire_engine/assets/themes/default/hearts_jack.svg
index e9415b0..d4b63f5 100644
--- a/solitaire_engine/assets/themes/default/hearts_jack.svg
+++ b/solitaire_engine/assets/themes/default/hearts_jack.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_king.svg b/solitaire_engine/assets/themes/default/hearts_king.svg
index b8ab614..476b1ce 100644
--- a/solitaire_engine/assets/themes/default/hearts_king.svg
+++ b/solitaire_engine/assets/themes/default/hearts_king.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/hearts_queen.svg b/solitaire_engine/assets/themes/default/hearts_queen.svg
index abac2b1..f4e9848 100644
--- a/solitaire_engine/assets/themes/default/hearts_queen.svg
+++ b/solitaire_engine/assets/themes/default/hearts_queen.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_10.svg b/solitaire_engine/assets/themes/default/spades_10.svg
index 955fa51..660dd6c 100644
--- a/solitaire_engine/assets/themes/default/spades_10.svg
+++ b/solitaire_engine/assets/themes/default/spades_10.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_2.svg b/solitaire_engine/assets/themes/default/spades_2.svg
index 28aaa67..cdb029f 100644
--- a/solitaire_engine/assets/themes/default/spades_2.svg
+++ b/solitaire_engine/assets/themes/default/spades_2.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_3.svg b/solitaire_engine/assets/themes/default/spades_3.svg
index 8c6c6a5..a66ef53 100644
--- a/solitaire_engine/assets/themes/default/spades_3.svg
+++ b/solitaire_engine/assets/themes/default/spades_3.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_4.svg b/solitaire_engine/assets/themes/default/spades_4.svg
index 5df2db1..e9122ed 100644
--- a/solitaire_engine/assets/themes/default/spades_4.svg
+++ b/solitaire_engine/assets/themes/default/spades_4.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_5.svg b/solitaire_engine/assets/themes/default/spades_5.svg
index 300d9e7..9907e1e 100644
--- a/solitaire_engine/assets/themes/default/spades_5.svg
+++ b/solitaire_engine/assets/themes/default/spades_5.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_6.svg b/solitaire_engine/assets/themes/default/spades_6.svg
index 59f7930..567f970 100644
--- a/solitaire_engine/assets/themes/default/spades_6.svg
+++ b/solitaire_engine/assets/themes/default/spades_6.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_7.svg b/solitaire_engine/assets/themes/default/spades_7.svg
index 128a168..bfb33be 100644
--- a/solitaire_engine/assets/themes/default/spades_7.svg
+++ b/solitaire_engine/assets/themes/default/spades_7.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_8.svg b/solitaire_engine/assets/themes/default/spades_8.svg
index 30d9a21..847c652 100644
--- a/solitaire_engine/assets/themes/default/spades_8.svg
+++ b/solitaire_engine/assets/themes/default/spades_8.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_9.svg b/solitaire_engine/assets/themes/default/spades_9.svg
index 608e29b..f384d2e 100644
--- a/solitaire_engine/assets/themes/default/spades_9.svg
+++ b/solitaire_engine/assets/themes/default/spades_9.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_ace.svg b/solitaire_engine/assets/themes/default/spades_ace.svg
index 7791731..0c61e8d 100644
--- a/solitaire_engine/assets/themes/default/spades_ace.svg
+++ b/solitaire_engine/assets/themes/default/spades_ace.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_jack.svg b/solitaire_engine/assets/themes/default/spades_jack.svg
index b0e37e8..1f38d1f 100644
--- a/solitaire_engine/assets/themes/default/spades_jack.svg
+++ b/solitaire_engine/assets/themes/default/spades_jack.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_king.svg b/solitaire_engine/assets/themes/default/spades_king.svg
index 1c30a42..dcbdeca 100644
--- a/solitaire_engine/assets/themes/default/spades_king.svg
+++ b/solitaire_engine/assets/themes/default/spades_king.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/assets/themes/default/spades_queen.svg b/solitaire_engine/assets/themes/default/spades_queen.svg
index 1ac976c..25c0ef5 100644
--- a/solitaire_engine/assets/themes/default/spades_queen.svg
+++ b/solitaire_engine/assets/themes/default/spades_queen.svg
@@ -15,11 +15,11 @@
-
-
+
+
\ No newline at end of file
diff --git a/solitaire_engine/src/assets/card_face_svg.rs b/solitaire_engine/src/assets/card_face_svg.rs
index 7631cab..114108d 100644
--- a/solitaire_engine/src/assets/card_face_svg.rs
+++ b/solitaire_engine/src/assets/card_face_svg.rs
@@ -220,6 +220,13 @@ pub fn face_svg(rank: Rank, suit: Suit) -> String {
// because the bundled `FiraMono` font doesn't carry usable
// U+2660-2666 glyphs at the requested size. See `suit_path_d`
// for the rationale.
+ //
+ // Both glyphs render in the same upright orientation. The
+ // traditional playing-card convention rotates the bottom-right
+ // indicator 180° so the card reads correctly when flipped, but
+ // most digital decks have abandoned that — single-orientation
+ // play doesn't benefit from the inverted-corner readback. See
+ // `design-system.md` § Game Cards for the spec deviation.
format!(
r##"
-
-
+
+
"##
diff --git a/solitaire_engine/tests/card_face_svg_pin.rs b/solitaire_engine/tests/card_face_svg_pin.rs
index 35489a9..ab6103f 100644
--- a/solitaire_engine/tests/card_face_svg_pin.rs
+++ b/solitaire_engine/tests/card_face_svg_pin.rs
@@ -24,58 +24,58 @@ use solitaire_engine::assets::card_face_svg::{
use solitaire_engine::assets::rasterize_svg;
const EXPECTED: &[(&str, u64)] = &[
- ("face_AC", 0x79b449cb455e496d),
- ("face_2C", 0x10a1056c4800c45e),
- ("face_3C", 0xbd128e390e06673a),
- ("face_4C", 0x949c323c78a804c0),
- ("face_5C", 0xd396d5ed99fb57e9),
- ("face_6C", 0x15519c6d72d1720f),
- ("face_7C", 0xc24bdc1a2d380d78),
- ("face_8C", 0x36464f4ab4cf672e),
- ("face_9C", 0x32add2eb53b1aec4),
- ("face_10C", 0x68619202f29481fc),
- ("face_JC", 0x116b3eeac58e0f58),
- ("face_QC", 0xb149ab5b2cac85e3),
- ("face_KC", 0x2a9fd2c63b99bd3b),
- ("face_AD", 0xe49c3fec2c01817c),
- ("face_2D", 0x8f42b4014e0d6809),
- ("face_3D", 0x63ff77fa873c557b),
- ("face_4D", 0x33356bd9628daaf2),
- ("face_5D", 0x8897839054dbd808),
- ("face_6D", 0x03ff93fb0c05a195),
- ("face_7D", 0xc2b7f97f5b1cc545),
- ("face_8D", 0xd8515a8278d74a7b),
- ("face_9D", 0xfbfe52ec3bbd2962),
- ("face_10D", 0x8f2dfc06a1d55a2f),
- ("face_JD", 0x3941d34384607530),
- ("face_QD", 0x0dcf5a9e2fc99f02),
- ("face_KD", 0xb834cb89d80bd39c),
- ("face_AH", 0x1a2e6d2ac818093f),
- ("face_2H", 0x8ab9ad7d2111233e),
- ("face_3H", 0x5e1057fa87c90968),
- ("face_4H", 0x1e1550b0af8a35a5),
- ("face_5H", 0x77404642251596d3),
- ("face_6H", 0xf7bec77bcbb9f942),
- ("face_7H", 0x9b7c52a5c03fb4f2),
- ("face_8H", 0xd2623a827963fe68),
- ("face_9H", 0xec19380e53986015),
- ("face_10H", 0x1205d0ec042a7484),
- ("face_JH", 0xd28bf03e6e871ccb),
- ("face_QH", 0x78548704b4530c65),
- ("face_KH", 0x9708e6c2d9c3bedf),
- ("face_AS", 0xebabc54128f38105),
- ("face_2S", 0xaac2970387b18ffe),
- ("face_3S", 0xb0864e78a6802bea),
- ("face_4S", 0xd118bc992bd41330),
- ("face_5S", 0x7fb7d6040d9b0641),
- ("face_6S", 0xbc048e82f1079637),
- ("face_7S", 0x147ee7c002e43648),
- ("face_8S", 0xfed30db056fbaa8e),
- ("face_9S", 0x332bc2060d8fcca4),
- ("face_10S", 0x0b810ffaf105421c),
- ("face_JS", 0x2ea7b956f2f23c28),
- ("face_QS", 0xedca2e002087ae6b),
- ("face_KS", 0x92e486d4e96ac4a3),
+ ("face_AC", 0xdac8c6f869cea53c),
+ ("face_2C", 0x8976454d1919bfdb),
+ ("face_3C", 0x0eda320371ca2d3f),
+ ("face_4C", 0x2e921081296553c9),
+ ("face_5C", 0xdb574a322d615af0),
+ ("face_6C", 0xad93daa160b5e7fa),
+ ("face_7C", 0xa3cdae097cb23271),
+ ("face_8C", 0x7b652bc9f0a5940b),
+ ("face_9C", 0xb5b274c80f319b85),
+ ("face_10C", 0x2ed8324f84c443cd),
+ ("face_JC", 0x3d9bc380e83d7611),
+ ("face_QC", 0xacad01ad4053a396),
+ ("face_KC", 0xba575aa772fc2e3e),
+ ("face_AD", 0xe1049b5a7d2c110c),
+ ("face_2D", 0x58f2a7e60a5cfff9),
+ ("face_3D", 0x89aeece03e7afe0b),
+ ("face_4D", 0xb97dd2633958d6ba),
+ ("face_5D", 0x32b57300e16c5b30),
+ ("face_6D", 0xd617e851d97f4a7d),
+ ("face_7D", 0xdd2da9b2457bfded),
+ ("face_8D", 0xfe00cf683015f30b),
+ ("face_9D", 0x7188b0fade3d086a),
+ ("face_10D", 0x53d0db517868e1f7),
+ ("face_JD", 0xeb2c6a0192146258),
+ ("face_QD", 0x36edafbbc3d34f0a),
+ ("face_KD", 0x1bbfa8b1176ee3ac),
+ ("face_AH", 0x2c8e05964b5e3a5f),
+ ("face_2H", 0xb44e68b79bb3842e),
+ ("face_3H", 0x15226ed29769e1c4),
+ ("face_4H", 0xe28c86ba92a3aee9),
+ ("face_5H", 0x18276e48b28d0f6b),
+ ("face_6H", 0xcca5e60e65724eaa),
+ ("face_7H", 0x7f3eee634137f13a),
+ ("face_8H", 0x8974515a8904d6c4),
+ ("face_9H", 0x2f8155cd7690d4b9),
+ ("face_10H", 0x78142f898fd66578),
+ ("face_JH", 0x5e6df78654a1de73),
+ ("face_QH", 0xc231ae8c25d877a9),
+ ("face_KH", 0x55a0a772baf3e97f),
+ ("face_AS", 0xc90e798aebdc1c5f),
+ ("face_2S", 0x4178c699a726ea70),
+ ("face_3S", 0xdfcd34480bb06f4c),
+ ("face_4S", 0xdbd4938042afb02e),
+ ("face_5S", 0x8741456ab1ec58ab),
+ ("face_6S", 0x6d2632f648f1c34d),
+ ("face_7S", 0x3c05c70ff3d93ea6),
+ ("face_8S", 0x12d7f456efbaffe0),
+ ("face_9S", 0x11b6ade208b8fa12),
+ ("face_10S", 0x475d4110834b6b2a),
+ ("face_JS", 0x52525a2200c07246),
+ ("face_QS", 0xb4f0251a2757cbb1),
+ ("face_KS", 0x1e1975919bb9a029),
("back_0", 0xf698d0e161eae13a),
("back_1", 0x446fdc0a3c83a03a),
("back_2", 0xcf188fdec9f5819a),