- Replace GridContainer-based puzzle with drag-and-drop wire system
- Add draw_wires() and on_canvas_input() driven by WireCanvas node
- Shuffle right-side endpoints for varied puzzle layout
- Fix type inference errors (Dictionary values cast to Array/Color)
- Fix WireCanvas size_flags_vertical to SIZE_SHRINK_CENTER
- Set Panel custom_minimum_size and VBox to prevent layout overflow
- Title and StatusLabel now always visible
- Add atelier tilemap (14x14 tiles) with dark atmosphere
- Add Journal D-891 interactable with Matteo Corda narrative
- Add pushable frozen robot (reuses PushableBox logic)
- Add PassageTrigger to reveal hidden path via TileMapLayer
- Add RepairStation for SCRAP-09 self-repair mini-game
- Add scrap09 puzzle in RepairMinigame with valid connections
- Add door to cour unlocked by scrap09_repaired flag