# EL3AB — Visual Asset Registry

This file documents EVERY visual asset in the platform.
Used to build the theming/branding admin panel.

---

## Emojis Used (44)

| Emoji | File | Context |
|---|---|---|
| ◆ | `./public/js/core/hud.js` | <span class="icon">◆</span> |
| ⬡ | `./public/js/core/hud.js` | <span class="icon">⬡</span> |
| ● | `./public/js/core/hud.js` | <span class="icon">●</span> |
| 📊 | `./public/js/modules/chess/scenes/analysis.js` | <span style="font-size:14px;font-weight:700;color:#f8fafc;"> |
| ♜ | `./public/js/modules/chess/scenes/game.js` | const names = { q: '♛', r: '♜', b: '♝', n: '♞' }; |
| ♞ | `./public/js/modules/chess/scenes/game.js` | const names = { q: '♛', r: '♜', b: '♝', n: '♞' }; |
| 🤖 | `./public/js/modules/chess/scenes/game.js` | <img src="https://stockfishapi.caprover.al-arcade.com/portra |
| ♟ | `./public/js/modules/chess/scenes/game.js` | const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛ |
| ♚ | `./public/js/modules/chess/scenes/game.js` | const pieceSymbols = { p: '♟', n: '♞', b: '♝', r: '♜', q: '♛ |
| ♕ | `./public/js/modules/chess/scenes/game.js` | if (color === 'w') { names.q = '♕'; names.r = '♖'; names.b = |
| ♘ | `./public/js/modules/chess/scenes/game.js` | if (color === 'w') { names.q = '♕'; names.r = '♖'; names.b = |
| ♝ | `./public/js/modules/chess/scenes/game.js` | const names = { q: '♛', r: '♜', b: '♝', n: '♞' }; |
| ♖ | `./public/js/modules/chess/scenes/game.js` | if (color === 'w') { names.q = '♕'; names.r = '♖'; names.b = |
| ♗ | `./public/js/modules/chess/scenes/game.js` | if (color === 'w') { names.q = '♕'; names.r = '♖'; names.b = |
| ♛ | `./public/js/modules/chess/scenes/game.js` | const names = { q: '♛', r: '♜', b: '♝', n: '♞' }; |
| ⚐ | `./public/js/modules/chess/scenes/game.js` | <button class="ctrl-btn" id="btn-resign">⚐ ${t('game.resign' |
| 🤝 | `./public/js/modules/chess/scenes/result.js` | draw: { icon: '🤝', title: t('game.draw_result'), color: '#E4 |
| 💀 | `./public/js/modules/domino/scenes/result.js` | const icon = isWin ? '🏆' : '💀'; |
| 🏆 | `./public/js/modules/domino/scenes/result.js` | const icon = isWin ? '🏆' : '💀'; |
| ⬚ | `./public/js/modules/domino/scenes/room.js` | <div class="pulse" style="width:60px;height:60px;border-radi |
| 🎲 | `./public/js/modules/ludo/scenes/game.js` | <button class="btn btn-primary" id="roll-btn" style="font-si |
| 👥 | `./public/js/modules/org/scenes/browser.js` | <div style="font-size:11px;color:var(--text-secondary);">👥 $ |
| ✅ | `./public/js/modules/org/scenes/home.js` | el.querySelector('#join-btn').textContent = '✅ تم الانضمام'; |
| 👤 | `./public/js/modules/org/scenes/home.js` | <div style="width:24px;height:24px;border-radius:50%;backgro |
| ️ | `./public/js/modules/org/scenes/home.js` | ${org.logo_url ? `<img src="${org.logo_url}" style="width:10 |
| 🏛 | `./public/js/modules/org/scenes/home.js` | ${org.logo_url ? `<img src="${org.logo_url}" style="width:10 |
| 🧩 | `./public/js/modules/play/scenes/table.js` | ${game.key === 'chess' ? '<div class="feature-chip" id="btn- |
| 📋 | `./public/js/modules/play/scenes/table.js` | <div class="feature-chip" id="btn-history">📋 مبارياتي</div> |
| 🎮 | `./public/js/modules/play/scenes/table.js` | <div class="menu-btn-icon">🎮</div> |
| ✕ | `./public/js/modules/play/scenes/table.js` | <button class="game-menu-close" id="menu-close">✕</button> |
| ◎ | `./public/js/modules/play/scenes/table.js` | { key: 'backgammon', name: 'طاولة', nameEn: 'Backgammon', co |
| 🔇 | `./public/js/modules/profile/scenes/settings.js` | <button class="btn btn-secondary" id="toggle-audio" style="m |
| 🔊 | `./public/js/modules/profile/scenes/settings.js` | <button class="btn btn-secondary" id="toggle-audio" style="m |
| ⚡ | `./public/js/modules/puzzles/scenes/puzzle.js` | ratingEl.textContent = `⚡ ${puzzle.rating || '?'}`; |
| ❌ | `./public/js/modules/puzzles/scenes/puzzle.js` | status.textContent = '❌ حل خاطئ'; |
| 🥈 | `./public/js/modules/rank/scenes/leaderboard.js` | const medals = ['🥇', '🥈', '🥉']; |
| 🥉 | `./public/js/modules/rank/scenes/leaderboard.js` | const medals = ['🥇', '🥈', '🥉']; |
| 🥇 | `./public/js/modules/rank/scenes/leaderboard.js` | const medals = ['🥇', '🥈', '🥉']; |
| 💰 | `./public/js/modules/rank/scenes/tournaments.js` | ${tour.entry_fee_coins ? `<span style="font-size:11px;color: |
| 🎁 | `./public/js/modules/rewards/scenes/daily.js` | <div style="font-size:48px;animation:float 3s ease-in-out in |
| 🪙 | `./public/js/modules/rewards/scenes/daily.js` | <span style="color:var(--gold);font-size:18px;font-weight:70 |
| 💎 | `./public/js/modules/shop/scenes/browse.js` | ${item.price_gems ? `${item.price_gems} 💎` : ''} |
| 🎨 | `./public/js/modules/shop/scenes/browse.js` | 🎨 |
| ⚔ | `./public/js/modules/social/scenes/friends.js` | ${f.is_online ? `<button class="btn btn-secondary" style="fo |

## Colors (71)

| Color | File |
|---|---|
| `#000` | `./public/js/modules/chess/scenes/analysis.js` |
| `#00FFFF` | `./public/css/tokens.css` |
| `#050810` | `./index.php` |
| `#065f46` | `./public/js/modules/play/scenes/table.js` |
| `#06B6D4` | `./public/css/tokens.css` |
| `#0A1020` | `./public/css/tokens.css` |
| `#0a0a1a` | `./public/js/modules/chess/scenes/result.js` |
| `#0a2a0e` | `./public/js/modules/domino/scenes/game.js` |
| `#0d3311` | `./public/js/modules/domino/scenes/game.js` |
| `#0f0f1e` | `./public/js/modules/chess/scenes/game.js` |
| `#10B981` | `./public/css/tokens.css` |
| `#111` | `./public/js/modules/domino/scenes/game.js` |
| `#121A2E` | `./public/css/tokens.css` |
| `#1A2440` | `./public/css/tokens.css` |
| `#1B5E20` | `./public/js/modules/domino/scenes/game.js` |
| `#1E88E5` | `./public/js/modules/ludo/scenes/game.js` |
| `#1a1a1a` | `./public/css/core.css` |
| `#1a1a2e` | `./public/js/modules/chess/scenes/game.js` |
| `#1e1e3a` | `./public/js/modules/chess/scenes/game.js` |
| `#1e40af` | `./public/js/modules/play/scenes/table.js` |
| `#2082F0` | `./public/css/tokens.css` |
| `#223050` | `./public/css/tokens.css` |
| `#2563EB` | `./public/css/tokens.css` |
| `#2E7D32` | `./public/js/modules/domino/scenes/game.js` |
| `#2a1a40` | `./public/css/core.css` |
| `#2a2a4a` | `./public/js/modules/chess/scenes/game.js` |
| `#2a2a5a` | `./public/js/modules/chess/scenes/game.js` |
| `#333` | `./public/js/modules/domino/scenes/game.js` |
| `#34D399` | `./public/css/tokens.css` |
| `#388E3C` | `./public/js/modules/domino/scenes/game.js` |
| `#3B82F6` | `./public/js/modules/ludo/logic/rules.js` |
| `#3a3a7a` | `./public/js/modules/chess/scenes/game.js` |
| `#43A047` | `./public/js/modules/ludo/scenes/game.js` |
| `#475569` | `./public/css/tokens.css` |
| `#4CAF50` | `./public/js/modules/domino/scenes/game.js` |
| `#555` | `./public/js/modules/domino/scenes/game.js` |
| `#5b21b6` | `./public/js/modules/play/scenes/table.js` |
| `#64748b` | `./public/js/modules/chess/scenes/analysis.js` |
| `#6834BE` | `./public/css/tokens.css` |
| `#81C784` | `./public/js/modules/domino/scenes/game.js` |
| `#8B5CF6` | `./public/css/tokens.css` |
| `#90CAF9` | `./public/js/modules/ludo/scenes/game.js` |
| `#92400e` | `./public/js/modules/play/scenes/table.js` |
| `#94A3B8` | `./public/css/tokens.css` |
| `#999` | `./public/js/modules/domino/scenes/game.js` |
| `#A5D6A7` | `./public/js/modules/ludo/scenes/game.js` |
| `#AAA23A` | `./public/js/modules/chess/canvas/board.js` |
| `#B58863` | `./public/js/modules/chess/canvas/board.js` |
| `#CDD16A` | `./public/js/modules/chess/canvas/board.js` |
| `#E0E0E0` | `./public/js/modules/ludo/scenes/game.js` |
| `#E4AC38` | `./public/css/tokens.css` |
| `#E53935` | `./public/js/modules/ludo/scenes/game.js` |
| `#E84D1E` | `./public/css/tokens.css` |
| `#EC4899` | `./public/css/tokens.css` |
| `#EF4444` | `./public/css/tokens.css` |
| `#EF9A9A` | `./public/js/modules/ludo/scenes/game.js` |
| `#F0D9B5` | `./public/js/modules/chess/canvas/board.js` |
| `#F59E0B` | `./public/css/tokens.css` |
| `#F5B731` | `./public/css/tokens.css` |
| `#F87171` | `./public/css/tokens.css` |
| `#F8FAFC` | `./public/css/tokens.css` |
| `#FAFAFA` | `./public/js/modules/ludo/scenes/game.js` |
| `#FDD835` | `./public/js/modules/ludo/scenes/game.js` |
| `#FF6B6B88` | `./public/js/modules/chess/canvas/board.js` |
| `#FFCC66` | `./public/css/tokens.css` |
| `#FFF59D` | `./public/js/modules/ludo/scenes/game.js` |
| `#FFFFF0` | `./public/js/modules/domino/scenes/game.js` |
| `#FFFFFF` | `./public/js/modules/ludo/scenes/game.js` |
| `#bac` | `./public/js/modules/org/scenes/home.js` |
| `#e2e8f0` | `./public/js/modules/chess/scenes/game.js` |
| `#fff` | `./public/js/modules/domino/scenes/game.js` |

## Gradients (9)

| Gradient | File |
|---|---|
| `linear-gradient(135deg, #1a2440, #2a1a40)` | `./public/css/core.css` |
| `linear-gradient(135deg, var(--gold)` | `./public/css/core.css` |
| `linear-gradient(135deg, var(--game-primary, var(--blue)` | `./public/css/core.css` |
| `linear-gradient(90deg, var(--bg-card)` | `./public/css/core.css` |
| `linear-gradient(135deg, #1e40af, #3b82f6)` | `./public/js/modules/play/scenes/table.js` |
| `linear-gradient(135deg, #065f46, #10b981)` | `./public/js/modules/play/scenes/table.js` |
| `linear-gradient(135deg, #5b21b6, #8b5cf6)` | `./public/js/modules/play/scenes/table.js` |
| `linear-gradient(135deg, #92400e, #f59e0b)` | `./public/js/modules/play/scenes/table.js` |
| `linear-gradient(135deg, #2563eb, #3b82f6)` | `./public/js/modules/play/scenes/table.js` |

## Animations (21)

| Animation | File |
|---|---|
| `toastIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1)` | `./public/css/core.css` |
| `toastOut 0.2s ease-in forwards` | `./public/css/core.css` |
| `sceneIn 0.35s cubic-bezier(0.16, 1, 0.3, 1)` | `./public/css/core.css` |
| `sceneOut 0.2s ease-in forwards` | `./public/css/core.css` |
| `shimmer 1.5s infinite` | `./public/css/core.css` |
| `pulse 2s ease-in-out infinite` | `./public/css/core.css` |
| `float 3s ease-in-out infinite` | `./public/css/core.css` |
| `shake 0.4s ease` | `./public/css/core.css` |
| `popIn 0.4s cubic-bezier(0.34, 1.56, 0.64, 1)` | `./public/css/core.css` |
| `bounceIn 0.5s cubic-bezier(0.34, 1.56, 0.64, 1)` | `./public/css/core.css` |
| `slideUp 0.3s cubic-bezier(0.16, 1, 0.3, 1)` | `./public/css/core.css` |
| `float 2s ease-in-out infinite` | `./public/js/modules/domino/scenes/result.js` |
| `glow 2s ease-in-out infinite` | `./public/js/modules/auth/scenes/splash.js` |
| `loadBar 2s ease-out forwards` | `./public/js/modules/auth/scenes/splash.js` |
| `clockPulse 1s infinite` | `./public/js/modules/chess/scenes/game.js` |
| `pulse 1s ease-in-out infinite` | `./public/js/modules/play/scenes/queue.js` |
| `radarPing 2s ease-out infinite` | `./public/js/modules/play/scenes/queue.js` |

## Fonts (5)

- `var(--font-ar)` (./public/css/core.css)
- `var(--font-lat)` (./public/css/core.css)
- `Inter,sans-serif` (./public/js/modules/ludo/scenes/game.js)
- `Inter,monospace` (./public/js/modules/chess/scenes/game.js)
- `inherit` (./public/js/modules/chess/scenes/game.js)

## SVG/Icons (2)

- `./public/js/core/hud.js` — inline SVG
- `./public/icons/sprite.svg` — inline SVG

## Image URLs (0)


## Piece Rendering (1)

- `./public/js/modules/chess/canvas/board.js` — chess piece vector paths

## Board/Game Visuals (5)

- `./public/js/modules/domino/scenes/game.js` — board color constants
- `./public/js/modules/ludo/scenes/game.js` — board color constants
- `./public/js/modules/ludo/logic/rules.js` — board color constants
- `./public/js/modules/shop/scenes/browse.js` — board color constants
- `./public/js/modules/chess/canvas/board.js` — board color constants
