Compare commits

...

14 Commits

Author SHA1 Message Date
funman300 396ba6bc97 fix(ci): always install Java regardless of SDK cache hit; harden release creation
Android Build / build-apk (push) Failing after 13s
Build and Deploy / build-and-push (push) Successful in 38s
Android Release / build-release-apk (push) Failing after 11s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 10:11:42 -07:00
Gitea CI 88298206bb chore(deploy): bump image to 0f650311 [skip ci] 2026-05-14 17:11:05 +00:00
funman300 0f65031114 ci: add Android release workflow — sign and publish APK on version tag
Android Build / build-apk (push) Failing after 11s
Build and Deploy / build-and-push (push) Successful in 23s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 10:10:27 -07:00
funman300 c91ce9436e fix(deploy): copy classic theme assets into Docker runtime image
Build and Deploy / build-and-push (push) Failing after 27s
solitaire_engine/assets/themes/classic/ was absent from the container
because only the workspace-root assets/ directory was copied. The
AssetServer serves themes/classic/ from that same root, so the classic
theme manifested as a missing-asset load failure at runtime.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 23:00:43 -07:00
Gitea CI ace96b4a47 chore(deploy): bump image to ea079af9 [skip ci] 2026-05-14 05:58:01 +00:00
funman300 ea079af9e1 ci: add Android APK build workflow
Android Build / build-apk (push) Failing after 59s
Build and Deploy / build-and-push (push) Successful in 26s
Triggers on every master push that touches app/engine/asset code
(ignores deploy/, argocd/, solitaire_server/, *.md).

Three-layer cache strategy:
  1. Android SDK + NDK keyed by NDK + build-tools versions (~2 GB, stable)
  2. cargo-apk binary keyed by OS + toolchain (avoids recompiling the tool)
  3. Cargo registry + build artifacts keyed by Cargo.lock + SHA

Outputs a debug APK as a workflow artifact retained for 30 days.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 22:56:34 -07:00
Gitea CI c66d81c73a chore(deploy): bump image to 20b7a617 [skip ci] 2026-05-14 05:53:08 +00:00
funman300 20b7a617e0 feat(engine): rename themes — Classic is default, Dark replaces Default
Build and Deploy / build-and-push (push) Successful in 33s
- Rename assets/themes/default/ → assets/themes/dark/; update theme.ron
  id/name to "dark"/"Dark"
- Rename all DEFAULT_THEME_* constants → DARK_THEME_* and
  default_theme_svg_bytes / populate_embedded_default_theme → dark_*
- Add bundled_theme_url() helper for URL resolution without needing the
  registry (used by Startup systems where ordering isn't guaranteed)
- Registry now lists Classic first (new player default), Dark second
- settings.rs default_theme_id() returns "classic" so fresh installs
  start on the white card theme

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 22:52:44 -07:00
funman300 7a0d57b2b1 feat(engine): add Classic card theme
White/cream card faces with traditional red (hearts/diamonds) and black
(clubs/spades) colours, plus a navy diamond-pattern card back. Shipped
as a bundled AssetServer theme alongside the existing Default theme.

Registry updated to include the Classic entry; registry tests updated
to reflect the new BUNDLED_COUNT of 2.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 22:52:44 -07:00
Gitea CI 93ec4a7478 chore(deploy): bump image to 72dfd741 [skip ci] 2026-05-14 05:34:53 +00:00
funman300 72dfd741c4 fix(web): add Matomo tracking snippet to all pages
Build and Deploy / build-and-push (push) Successful in 4m10s
Only game.html had the snippet; the other five pages were missing it,
causing the Matomo installation verification check to fail.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 22:30:08 -07:00
funman300 3837a10b15 fix(deploy): use matomo.php for liveness/readiness probes
/index.php returns 302 after tables are created (installer redirect),
which fails k8s HTTP probes. /matomo.php is the tracker endpoint and
always returns 200 regardless of installation state. Also add
timeoutSeconds: 5 since PHP startup can exceed the 1s default.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 22:03:07 -07:00
funman300 574115cb71 fix(deploy): switch matomo to official image 5.10.0
bitnami/matomo was removed from Docker Hub (0 tags). Switch to the
official matomo:5.10.0 image; update port 8080→80, volume path to
/var/www/html, and env var names to match the official image schema.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 21:52:00 -07:00
Gitea CI 1707553790 chore(deploy): bump image to 6905f26b [skip ci] 2026-05-14 04:37:19 +00:00
126 changed files with 1991 additions and 273 deletions
+118
View File
@@ -0,0 +1,118 @@
name: Android Build
on:
push:
branches: [master]
# Rebuild whenever app/engine/asset code changes.
# Skip server-only, deploy, and doc changes.
paths-ignore:
- 'deploy/**'
- 'argocd/**'
- 'solitaire_server/**'
- '**.md'
env:
ANDROID_SDK_ROOT: /opt/android-sdk
NDK_VERSION: "25.2.9519653"
BUILD_TOOLS_VERSION: "34.0.0"
jobs:
build-apk:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set short SHA
id: meta
run: echo "sha=${GITHUB_SHA::8}" >> "$GITHUB_OUTPUT"
# ── Android SDK + NDK ──────────────────────────────────────────────
# Cache the entire SDK root so subsequent runs skip the ~2 GB download.
- name: Cache Android SDK
uses: actions/cache@v4
id: sdk-cache
with:
path: ${{ env.ANDROID_SDK_ROOT }}
key: android-sdk-ndk${{ env.NDK_VERSION }}-bt${{ env.BUILD_TOOLS_VERSION }}
- name: Install system dependencies
run: sudo apt-get install -y openjdk-17-jdk-headless unzip
- name: Install Android SDK + NDK
if: steps.sdk-cache.outputs.cache-hit != 'true'
run: |
mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools"
curl -sL \
"https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip" \
-o /tmp/cmdtools.zip
unzip -q /tmp/cmdtools.zip -d /tmp/cmdtools
mv /tmp/cmdtools/cmdline-tools "$ANDROID_SDK_ROOT/cmdline-tools/latest"
# Accept all SDK licences non-interactively.
yes | "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" --licenses \
> /dev/null 2>&1 || true
"$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" \
"build-tools;$BUILD_TOOLS_VERSION" \
"platforms;android-34" \
"ndk;$NDK_VERSION"
- name: Export Android environment
run: |
echo "ANDROID_HOME=$ANDROID_SDK_ROOT" >> "$GITHUB_ENV"
echo "ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/$NDK_VERSION" >> "$GITHUB_ENV"
# ── Rust toolchain ─────────────────────────────────────────────────
- name: Install Rust stable
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
| sh -s -- -y --default-toolchain stable --no-modify-path
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
- name: Add Android cross-compilation targets
run: |
rustup target add \
aarch64-linux-android \
armv7-linux-androideabi \
x86_64-linux-android
# ── Cargo caches ───────────────────────────────────────────────────
- name: Cache Cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git/db
key: cargo-registry-${{ hashFiles('**/Cargo.lock') }}
restore-keys: cargo-registry-
- name: Cache cargo-apk binary
uses: actions/cache@v4
id: apk-tool-cache
with:
path: ~/.cargo/bin/cargo-apk
key: cargo-apk-${{ runner.os }}-stable
- name: Cache build artifacts
uses: actions/cache@v4
with:
path: target
key: android-target-${{ hashFiles('**/Cargo.lock') }}-${{ github.sha }}
restore-keys: android-target-${{ hashFiles('**/Cargo.lock') }}-
# ── Build ──────────────────────────────────────────────────────────
- name: Install cargo-apk
if: steps.apk-tool-cache.outputs.cache-hit != 'true'
run: cargo install cargo-apk --locked
- name: Build debug APK
run: cargo apk build --package solitaire_app --lib
# ── Artifact ───────────────────────────────────────────────────────
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: solitaire-quest-debug-${{ steps.meta.outputs.sha }}
path: target/debug/apk/solitaire-quest.apk
retention-days: 30
+168
View File
@@ -0,0 +1,168 @@
name: Android Release
on:
push:
tags:
- 'v*.*.*'
env:
ANDROID_SDK_ROOT: /opt/android-sdk
NDK_VERSION: "25.2.9519653"
BUILD_TOOLS_VERSION: "34.0.0"
GITEA_API: https://git.aleshym.co/api/v1
REPO: funman300/Rusty_Solitare
jobs:
build-release-apk:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Extract version from tag
id: meta
run: echo "tag=${GITHUB_REF_NAME}" >> "$GITHUB_OUTPUT"
# ── Android SDK + NDK ──────────────────────────────────────────────
# Shared cache key with the debug workflow so a warm debug run
# saves the ~2 GB SDK download for the release run too.
- name: Cache Android SDK
uses: actions/cache@v4
id: sdk-cache
with:
path: ${{ env.ANDROID_SDK_ROOT }}
key: android-sdk-ndk${{ env.NDK_VERSION }}-bt${{ env.BUILD_TOOLS_VERSION }}
# Java and jq are always needed (apksigner requires Java even on cache hits).
- name: Install system dependencies
run: sudo apt-get install -y openjdk-17-jdk-headless unzip jq
- name: Install Android SDK + NDK
if: steps.sdk-cache.outputs.cache-hit != 'true'
run: |
mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools"
curl -sL \
"https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip" \
-o /tmp/cmdtools.zip
unzip -q /tmp/cmdtools.zip -d /tmp/cmdtools
mv /tmp/cmdtools/cmdline-tools "$ANDROID_SDK_ROOT/cmdline-tools/latest"
yes | "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" --licenses \
> /dev/null 2>&1 || true
"$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager" \
"build-tools;$BUILD_TOOLS_VERSION" \
"platforms;android-34" \
"ndk;$NDK_VERSION"
- name: Export Android environment
run: |
echo "ANDROID_HOME=$ANDROID_SDK_ROOT" >> "$GITHUB_ENV"
echo "ANDROID_NDK_HOME=$ANDROID_SDK_ROOT/ndk/$NDK_VERSION" >> "$GITHUB_ENV"
# ── Rust toolchain ─────────────────────────────────────────────────
- name: Install Rust stable
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs \
| sh -s -- -y --default-toolchain stable --no-modify-path
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
- name: Add Android cross-compilation targets
run: |
rustup target add \
aarch64-linux-android \
armv7-linux-androideabi \
x86_64-linux-android
# ── Cargo caches ───────────────────────────────────────────────────
- name: Cache Cargo registry
uses: actions/cache@v4
with:
path: |
~/.cargo/registry/index
~/.cargo/registry/cache
~/.cargo/git/db
key: cargo-registry-${{ hashFiles('**/Cargo.lock') }}
restore-keys: cargo-registry-
- name: Cache cargo-apk binary
uses: actions/cache@v4
id: apk-tool-cache
with:
path: ~/.cargo/bin/cargo-apk
key: cargo-apk-${{ runner.os }}-stable
- name: Cache build artifacts
uses: actions/cache@v4
with:
path: target
key: android-release-target-${{ hashFiles('**/Cargo.lock') }}-${{ github.sha }}
restore-keys: android-release-target-${{ hashFiles('**/Cargo.lock') }}-
# ── Build ──────────────────────────────────────────────────────────
- name: Install cargo-apk
if: steps.apk-tool-cache.outputs.cache-hit != 'true'
run: cargo install cargo-apk --locked
- name: Build release APK
run: cargo apk build --release --package solitaire_app --lib
# ── Sign ───────────────────────────────────────────────────────────
- name: Decode keystore
run: echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > /tmp/solitaire-release.jks
- name: Align and sign APK
run: |
TAG="${{ steps.meta.outputs.tag }}"
UNSIGNED="target/release/apk/solitaire-quest.apk"
ALIGNED="/tmp/solitaire-quest-aligned.apk"
SIGNED="ferrous-solitaire-${TAG}.apk"
"$ANDROID_SDK_ROOT/build-tools/$BUILD_TOOLS_VERSION/zipalign" -v 4 \
"$UNSIGNED" "$ALIGNED"
"$ANDROID_SDK_ROOT/build-tools/$BUILD_TOOLS_VERSION/apksigner" sign \
--ks /tmp/solitaire-release.jks \
--ks-pass "pass:${{ secrets.KEYSTORE_PASS }}" \
--ks-key-alias "${{ secrets.KEY_ALIAS }}" \
--key-pass "pass:${{ secrets.KEY_PASS }}" \
--out "$SIGNED" \
"$ALIGNED"
- name: Verify APK signature
run: |
TAG="${{ steps.meta.outputs.tag }}"
"$ANDROID_SDK_ROOT/build-tools/$BUILD_TOOLS_VERSION/apksigner" verify \
--verbose "ferrous-solitaire-${TAG}.apk"
# ── Publish ────────────────────────────────────────────────────────
- name: Create Gitea release
id: release
run: |
TAG="${{ steps.meta.outputs.tag }}"
# Try to create; fall back to fetching the existing release on 409.
RESPONSE=$(curl -s -o /tmp/release.json -w "%{http_code}" \
-X POST "$GITEA_API/repos/$REPO/releases" \
-H "Authorization: token ${{ secrets.CI_TOKEN }}" \
-H "Content-Type: application/json" \
-d "{\"tag_name\":\"$TAG\",\"name\":\"$TAG\",\"draft\":false,\"prerelease\":false}")
if [ "$RESPONSE" = "409" ]; then
curl -sf "$GITEA_API/repos/$REPO/releases/tags/$TAG" \
-H "Authorization: token ${{ secrets.CI_TOKEN }}" \
> /tmp/release.json
elif [ "$RESPONSE" != "201" ]; then
echo "Release creation failed with HTTP $RESPONSE"
cat /tmp/release.json
exit 1
fi
RELEASE_ID=$(jq -r '.id' /tmp/release.json)
echo "release_id=$RELEASE_ID" >> "$GITHUB_OUTPUT"
- name: Upload signed APK
run: |
TAG="${{ steps.meta.outputs.tag }}"
APK="ferrous-solitaire-${TAG}.apk"
curl -sf -X POST \
"$GITEA_API/repos/$REPO/releases/${{ steps.release.outputs.release_id }}/assets?name=$APK" \
-H "Authorization: token ${{ secrets.CI_TOKEN }}" \
-H "Content-Type: application/octet-stream" \
--data-binary @"$APK"
+1 -1
View File
@@ -20,4 +20,4 @@ resources:
images:
- name: solitaire-server
newName: git.aleshym.co/funman300/solitaire-server
newTag: 3e006a1e
newTag: 0f650311
+21 -27
View File
@@ -17,18 +17,20 @@ spec:
spec:
containers:
- name: matomo
image: bitnami/matomo:5
image: matomo:5.10.0
env:
- name: MATOMO_DATABASE_HOST
value: mariadb
- name: MATOMO_DATABASE_PORT_NUMBER
- name: MATOMO_DATABASE_PORT
value: "3306"
- name: MATOMO_DATABASE_NAME
- name: MATOMO_DATABASE_ADAPTER
value: PDO\MYSQL
- name: MATOMO_DATABASE_DBNAME
valueFrom:
secretKeyRef:
name: matomo-secret
key: MYSQL_DATABASE
- name: MATOMO_DATABASE_USER
- name: MATOMO_DATABASE_USERNAME
valueFrom:
secretKeyRef:
name: matomo-secret
@@ -38,40 +40,32 @@ spec:
secretKeyRef:
name: matomo-secret
key: MYSQL_PASSWORD
- name: MATOMO_USERNAME
value: admin
- name: MATOMO_PASSWORD
valueFrom:
secretKeyRef:
name: matomo-secret
key: MATOMO_ADMIN_PASSWORD
- name: MATOMO_EMAIL
value: funman300@gmail.com
- name: MATOMO_WEBSITE_NAME
value: "Solitaire Quest"
- name: MATOMO_WEBSITE_HOST
value: "https://klondike.aleshym.co"
- name: MATOMO_HOST
value: analytics.aleshym.co
- name: MATOMO_ENABLE_PROXY_URI_HEADER
value: "yes"
# Traefik terminates SSL; tell Matomo to trust X-Forwarded-* headers
- name: MATOMO_GENERAL_ASSUME_SECURE_PROTOCOL
value: "1"
- name: MATOMO_GENERAL_PROXY_CLIENT_HEADERS
value: HTTP_X_FORWARDED_FOR
- name: MATOMO_GENERAL_PROXY_HOST_HEADERS
value: HTTP_X_FORWARDED_HOST
ports:
- containerPort: 8080
- containerPort: 80
volumeMounts:
- name: matomo-data
mountPath: /bitnami/matomo
mountPath: /var/www/html
livenessProbe:
httpGet:
path: /index.php
port: 8080
path: /matomo.php
port: 80
initialDelaySeconds: 60
periodSeconds: 30
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /index.php
port: 8080
path: /matomo.php
port: 80
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
resources:
requests:
cpu: 100m
+1 -1
View File
@@ -9,4 +9,4 @@ spec:
ports:
- name: http
port: 80
targetPort: 8080
targetPort: 80
+5 -6
View File
@@ -143,11 +143,10 @@ pub struct Settings {
#[serde(default)]
pub window_geometry: Option<WindowGeometry>,
/// Identifier of the active card-art theme. Matches `meta.id` from
/// the theme's `theme.ron` manifest. `"default"` is the bundled
/// theme and is always present in the registry; user-supplied
/// themes register under their own ids when they're imported.
/// Older `settings.json` files default cleanly to `"default"` via
/// `#[serde(default = ...)]`.
/// the theme's `theme.ron` manifest. `"classic"` and `"dark"` are
/// always present; user-supplied themes register under their own ids.
/// Older `settings.json` files that stored `"default"` will fall
/// back to the dark embedded theme at runtime.
#[serde(default = "default_theme_id")]
pub selected_theme_id: String,
/// Set to `true` once the achievement-onboarding info-toast has been
@@ -273,7 +272,7 @@ fn default_music_volume() -> f32 {
}
fn default_theme_id() -> String {
"default".to_string()
"classic".to_string()
}
/// Default tooltip-hover dwell delay in seconds. Mirrors
@@ -0,0 +1,19 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<defs>
<pattern id="dp" x="0" y="0" width="28" height="28" patternUnits="userSpaceOnUse">
<rect width="28" height="28" fill="#1a3a6e"/>
<polygon points="14,2 26,14 14,26 2,14" fill="#2255aa"/>
<polygon points="14,7 21,14 14,21 7,14" fill="#1a3a6e"/>
</pattern>
</defs>
<!-- White card background -->
<rect x="2" y="2" width="252" height="380" rx="14" ry="14" fill="#FAFAF8"/>
<!-- Red outer border -->
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="none" stroke="#CC1111" stroke-width="4"/>
<!-- Navy diamond pattern inset -->
<rect x="16" y="16" width="224" height="352" rx="8" ry="8" fill="url(#dp)"/>
<!-- Thin red frame around pattern -->
<rect x="16" y="16" width="224" height="352" rx="8" ry="8"
fill="none" stroke="#CC1111" stroke-width="2"/>
</svg>

After

Width:  |  Height:  |  Size: 924 B

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="11" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">10</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="11" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">10</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">2</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">2</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">3</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">3</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">4</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">4</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">5</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">5</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">6</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">6</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">7</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">7</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">8</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">8</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">9</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">9</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">A</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">A</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">J</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">J</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">K</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">K</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">Q</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">Q</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="11" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">10</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="11" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">10</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">2</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">2</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">3</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">3</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">4</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">4</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">5</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">5</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">6</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">6</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">7</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">7</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">8</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">8</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">9</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">9</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">A</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">A</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">J</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">J</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">K</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">K</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">Q</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">Q</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,2 L 30,16 L 16,30 L 2,16 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="11" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">10</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="11" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">10</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">2</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">2</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">3</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">3</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">4</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">4</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">5</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">5</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">6</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">6</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">7</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">7</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">8</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">8</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">9</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">9</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">A</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">A</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">J</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">J</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">K</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">K</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">Q</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#CC1111">Q</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#CC1111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="11" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">10</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="11" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">10</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">2</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">2</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">3</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">3</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">4</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">4</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">5</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">5</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">6</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">6</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">7</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">7</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">8</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">8</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">9</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">9</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">A</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">A</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">J</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">J</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">K</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">K</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,25 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
<rect x="2" y="2" width="252" height="380" rx="14" ry="14"
fill="#FAFAF8" stroke="#AAAAAA" stroke-width="1.5"/>
<!-- Top-left corner: rank label + small suit -->
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">Q</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Centre: large suit, 64x64 in 256x384 card -->
<g transform="translate(96 160) scale(2)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
<!-- Bottom-right corner: mirrored via 180° rotation around card centre -->
<g transform="rotate(180 128 192)">
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
fill="#111111">Q</text>
<g transform="translate(14 50) scale(0.625)">
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#111111"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

@@ -0,0 +1,64 @@
(
meta: (
id: "classic",
name: "Classic",
author: "Ferrous Solitaire",
version: "1.0.0",
card_aspect: (2, 3),
),
back: "back.svg",
faces: {
"clubs_ace": "clubs_ace.svg",
"clubs_2": "clubs_2.svg",
"clubs_3": "clubs_3.svg",
"clubs_4": "clubs_4.svg",
"clubs_5": "clubs_5.svg",
"clubs_6": "clubs_6.svg",
"clubs_7": "clubs_7.svg",
"clubs_8": "clubs_8.svg",
"clubs_9": "clubs_9.svg",
"clubs_10": "clubs_10.svg",
"clubs_jack": "clubs_jack.svg",
"clubs_queen": "clubs_queen.svg",
"clubs_king": "clubs_king.svg",
"diamonds_ace": "diamonds_ace.svg",
"diamonds_2": "diamonds_2.svg",
"diamonds_3": "diamonds_3.svg",
"diamonds_4": "diamonds_4.svg",
"diamonds_5": "diamonds_5.svg",
"diamonds_6": "diamonds_6.svg",
"diamonds_7": "diamonds_7.svg",
"diamonds_8": "diamonds_8.svg",
"diamonds_9": "diamonds_9.svg",
"diamonds_10": "diamonds_10.svg",
"diamonds_jack": "diamonds_jack.svg",
"diamonds_queen": "diamonds_queen.svg",
"diamonds_king": "diamonds_king.svg",
"hearts_ace": "hearts_ace.svg",
"hearts_2": "hearts_2.svg",
"hearts_3": "hearts_3.svg",
"hearts_4": "hearts_4.svg",
"hearts_5": "hearts_5.svg",
"hearts_6": "hearts_6.svg",
"hearts_7": "hearts_7.svg",
"hearts_8": "hearts_8.svg",
"hearts_9": "hearts_9.svg",
"hearts_10": "hearts_10.svg",
"hearts_jack": "hearts_jack.svg",
"hearts_queen": "hearts_queen.svg",
"hearts_king": "hearts_king.svg",
"spades_ace": "spades_ace.svg",
"spades_2": "spades_2.svg",
"spades_3": "spades_3.svg",
"spades_4": "spades_4.svg",
"spades_5": "spades_5.svg",
"spades_6": "spades_6.svg",
"spades_7": "spades_7.svg",
"spades_8": "spades_8.svg",
"spades_9": "spades_9.svg",
"spades_10": "spades_10.svg",
"spades_jack": "spades_jack.svg",
"spades_queen": "spades_queen.svg",
"spades_king": "spades_king.svg",
},
)

Before

Width:  |  Height:  |  Size: 956 B

After

Width:  |  Height:  |  Size: 956 B

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

Some files were not shown because too many files have changed in this diff Show More