feat: add landing-style start screen with four start modes

Phase 3 of turning the game into the company landing page.

- Replace the Iran-map briefing with a brand start screen over the
  orbiting 3D factory: logo, tagline and four ways in.
- Real world: safety notice, then GPS; if location is denied or
  missing, a friendly dialog offers offline play instead.
- Offline: start at Park Mellat beside the family car with the route
  to the factory, where the first purchase mission is.
- About Us: start in the factory yard. Products: start at the machine
  samples with the showroom open.
- Contact, address with map links, FAQ, careers, gallery and social
  links open in a sheet (bottom sheet on phones) from company config.
- Restart replays the chosen mode. Layout scrolls on short screens and
  respects safe areas.
- Add tests for the start screen, map links and theme.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-31 08:39:22 +03:30
co-authored by Claude Opus 5.5
parent 611960511e
commit d9ae8a45da
28 changed files with 838 additions and 261 deletions
+7 -2
View File
@@ -28,7 +28,12 @@ describe('game theme', () => {
expect(gameTheme['@media (max-width: 760px)']['@media (max-height: 520px)']).toBeUndefined();
});
it('lets the briefing scroll so its buttons stay reachable on short screens', () => {
expect(gameTheme['#briefing']['overflow-y']).toBe('auto');
it('lets the start screen scroll so its buttons stay reachable on short screens', () => {
expect(gameTheme['#landing']['overflow-y']).toBe('auto');
});
it('keeps start screen buttons large enough to tap', () => {
expect(gameTheme['.start-option']['min-height']).toBe('var(--game-token-77)');
expect(gameTheme['.start-chip']['min-height']).toBe('var(--game-token-74)');
});
});