diff --git a/docs/code-standards.md b/docs/code-standards.md
index fc1a705..072e7a2 100644
--- a/docs/code-standards.md
+++ b/docs/code-standards.md
@@ -2,17 +2,17 @@
## Naming Conventions
-### JavaScript Files
-- **Scenes**: PascalCase (e.g., `Boot.js`, `Game.js`, `MainMenu.js`)
-- **Classes/Objects**: PascalCase (e.g., `GridSystem.js`, `Player.js`, `Guard.js`)
-- **Utilities**: camelCase (e.g., `localization.js`, `progress.js`, `theme.js`)
+### Files
+- **Svelte components**: PascalCase (`Game.svelte`, `GameBoard.svelte`, `PlayerSprite.svelte`)
+- **JS modules**: kebab-case (`grid-system.js`, `turn-manager.js`, `level-manager.js`)
+- **JSON/config**: kebab-case (`en.json`, `vi.json`, `theme.css`)
### Variables & Functions
-- **Classes**: PascalCase (`class GridSystem {}`, `class Player {}`)
+- **Classes**: PascalCase (`GridSystem`, `Player`, `RotatingGuard`)
- **Methods & Functions**: camelCase (`updateLight()`, `nextTurn()`, `getText()`)
-- **Constants**: camelCase in exports (`COLORS`, `FONTS`, `LEVELS`)
-- **Variables**: camelCase (`playerRow`, `guardColor`, `cellSize`)
-- **Parameters**: camelCase (`row`, `col`, `guard`)
+- **Constants**: UPPER_CASE for arrays (`LEVELS`), camelCase for others
+- **Svelte state**: camelCase (`renderVersion`, `isPaused`, `detected`)
+- **Props**: camelCase (`cellSize`, `oncellclick`, `onplayagain`)
### Grid Coordinates
- **row**: Vertical axis (0 = top, increases downward)
@@ -25,99 +25,111 @@
```
src/
-├── main.js # Entry point, Phaser config
-└── game/
- ├── scenes/ # 8 scene files
- │ ├── Boot.js
- │ ├── Preloader.js
- │ ├── MainMenu.js
- │ ├── StoryIntro.js
- │ ├── LevelSelect.js
- │ ├── Game.js # Main gameplay scene
- │ ├── GameOver.js
- │ ├── Settings.js
- │ └── Guide.js
- ├── objects/ # Core game objects
- │ ├── GridSystem.js
- │ ├── Player.js
- │ ├── Guard.js # Base + 4 guard subclasses
- │ ├── TurnManager.js
- │ └── LightingSystem.js
- ├── levels/ # Level data & management
- │ ├── Levels.js # 12 level definitions
- │ ├── LevelManager.js
- │ └── LevelTester.js # Debug utility
- ├── locales/ # Localization JSON
- │ ├── en.json
- │ └── vi.json
- ├── theme.js # UI constants & factory
- ├── localization.js # String management
- ├── progress.js # Progress persistence
- └── (additional utilities as needed)
+├── main.js # Entry point, mounts App.svelte
+├── App.svelte # Scene router ({#key} + fade)
+│
+├── scenes/ # Full-page scene components
+│ ├── MainMenu.svelte
+│ ├── StoryIntro.svelte
+│ ├── LevelIntro.svelte
+│ ├── LevelSelect.svelte
+│ ├── Game.svelte # Main gameplay (state owner)
+│ ├── GameOver.svelte
+│ ├── Settings.svelte
+│ └── Guide.svelte
+│
+├── components/ # Reusable UI components
+│ ├── Button.svelte
+│ ├── GameBoard.svelte # CSS grid rendering
+│ ├── GameHud.svelte # Level/lives/turns display
+│ ├── PlayerSprite.svelte # Positioned player div
+│ ├── GuardSprite.svelte # Colored guard circle/diamond
+│ ├── PauseMenu.svelte
+│ └── DetectionPopup.svelte
+│
+├── lib/
+│ ├── game/ # Pure JS game engine (no framework)
+│ │ ├── grid-system.js
+│ │ ├── player.js
+│ │ ├── guards.js # Base + 5 guard subclasses
+│ │ ├── turn-manager.js
+│ │ └── level-manager.js
+│ │
+│ ├── levels/
+│ │ └── levels.js # 12 level definitions
+│ │
+│ ├── locales/
+│ │ ├── en.json
+│ │ └── vi.json
+│ ├── localization.js
+│ └── progress.js
+│
+└── styles/
+ └── theme.css # CSS variables (colors, fonts)
```
### File Size Limits
-- **Maximum 200 lines per file** (before considering split)
-- Scenes with heavy logic → extract objects to `objects/`
-- Utility functions → consolidate into focused modules
+- **Maximum 200 lines per file** before considering split
+- Scenes with heavy logic → extract to `lib/game/`
+- Shared UI → extract to `components/`
+
+## Svelte 5 Patterns
+
+### State Management
+```javascript
+// Primitive state
+let isPaused = $state(false);
+
+// Class instances (NOT auto-proxied — use renderVersion pattern)
+let grid = $state(null);
+let player = $state(null);
+let renderVersion = $state(0);
+
+// Derived values depend on renderVersion to pick up class mutations
+let cells = $derived((renderVersion, grid ? grid.getAllCells() : []));
+```
+
+### Props
+```javascript
+let { navigate, level = 1, lives = 3 } = $props();
+```
+
+### Event Handlers
+```svelte
+
+
+
+
+