lumora®
From prompt to page.
Considered design. Thoughtful engineering. An independent static interpretation of the archived GetLayers brief.
01 / Read the brief
The text source is 11-LUMORA-DESIGN-ENGINEERING.md. Reference media could not be inspected in this environment. This is not a pixel-identical reconstruction.
02 / Establish a visual system
Background #0d0e10, foreground #f2f1ed, accent #e8b668, surface #1b1c1f. Local fonts, a responsive 1320 px maximum grid, and a site-specific hero composition establish the hierarchy.
03 / Build the signature mechanism
A warm procedural Three.js caustic field sits behind a Swiss-grid hero. Asymmetric case-study cards use authored CSS artwork. Native disclosure rows cover capabilities; an Intl.DateTimeFormat clock renders Europe/Amsterdam without a network call.
04 / Make it interactive
- Open both case studies and each capability disclosure
- Verify Amsterdam clock renders without external requests
- Check asymmetric desktop layout collapses into a logical mobile order
05 / Record the adaptations
Two fully described fictional case studies rather than an unspecified original portfolio. No borrowed client work, stock photography, custom cursor, or real studio email. Native focus states replace pointer-only effects.
Shared architecture: local Three.js, native scrolling, a single frame scheduler, capped pixel density, offscreen/hidden-tab suspension, reduced-motion support, CSS fallback, and no backend.
06 / Validate honestly
See the actual validation record for test results. Automated checks do not replace manual screen-reader testing or reference-image comparison. All readouts and submissions are illustrative and local.
07 / Reproduce the build
python3 -m http.server 8080 --bind 0.0.0.0 # Open /getlayersai/sites/lumora/ cd getlayersai python3 tools/build.py python3 tools/verify.py npm ci npm test
Edit this site's record in tools/catalog.py before rebuilding. Shared rendering and interactions are in shared/scenes.js and shared/interactions.js. Generated HTML and documentation will be overwritten on regeneration.