About This Build
A Practice Piece, Start To Finish
Vesper Hollow is not a place. It was invented in October 2026 as a Friendly Tech Guide design exercise to learn three demanding techniques and leave reusable parts behind.
Fiction Notice
Every name, program, cabin, guide, field note, sky condition and reservation on this site is made up. The station is placed in an invented valley at about 30 degrees south, so the photographs (all taken in Chile) and the star chart show the same southern sky. There are no customers, no reviews, no awards and no results. The reservation form sends nothing. The star chart is an illustration. If something here looks like a real business, that is a coincidence of the practice.
What It Practises
1. Real Photographs, Presented So You Can Almost Touch Them
The home page is four intact photographs that crossfade with the scroll, each with a slow, almost invisible scale so the night feels like it is settling rather than switching. Nothing is drawn over them; the only addition is a soft gradient at the bottom edge so the words can be read. An earlier version of this page used a procedural three.js scene; it was retired because it looked artificial, and it is kept in the build's experiments folder as learning material.
2. Scroll Choreography That Keeps the Page Honest
The photographs sit on a sticky stage. Four short passages scroll past it in the normal document flow and their position decides which photograph is showing. Nothing hijacks the scroll, keyboard scrolling works, anchors work, and the back button behaves. On reduced motion the photographs step with the passages and the passages simply read.
3. Transitions And Controls That Work On Touch
Section reveals are CSS transitions driven by one small observer; there is no whole-page fade, so the first photograph paints at once. The programs filter uses real buttons with pressed states and a native dialog for detail that opens at its title and returns focus. The reservation form uses the browser's own validation with inline errors linked to their fields. The star chart answers to a range control, to pointer or tap, and to a text list for keyboard and screen-reader users.
Fallbacks
| Condition | What you get |
|---|---|
| No JavaScript | Every page reads and navigates with the links shown inline; the first photograph stays on the stage; the programs list is static; the reservation form's buttons stay disabled and a note says the simulated check needs scripting, so nothing can be sent |
| Reduced motion | Photographs change with the passages without crossfade or scale; instant reveals; the star chart does not twinkle |
| Screens | Landscape photographs ship at 800, 1400 and 2400 pixels wide, most also at 1800; the telescope image at 600, 1000 and 1600. The browser picks by viewport width and pixel density, and the home stage asks for about 1.8 times the viewport width on phones because the portrait crop needs it. Only the first stage photograph loads at page open |
Dependencies And Assets
| Item | Version | License | Use |
|---|---|---|---|
| Vite | 8.3.4 | MIT | Build tool, multi-page static output |
| Fraunces | variable, Latin subset | SIL OFL 1.1 | Display type |
| Instrument Sans | variable, Latin subset | SIL OFL 1.1 | Body and controls |
The star chart and the small marks are drawn in code (canvas and SVG). No icon sets, no analytics, no external services at runtime. Fonts are self-hosted; their license files ship beside them.
Photographs
Every photograph is a real, unaltered image from the European Southern Observatory archive, used under the Creative Commons Attribution 4.0 license, resized and re-encoded only. Credit lines are reproduced in full as ESO prints them. The landscapes are in Chile; the station in the text is fiction. One image is a telescope photograph (the Carina Nebula) and is labeled as such where it appears; it is not what the eye sees.
| Where used | Title | Credit |
|---|---|---|
| Home, beat 1 | Dusk in the mountains | G. Lombardi/ESO |
| Home, beat 2 | Moonrise over Cerro Armazones | ESO/G. Lambert |
| Home, beat 3 | Starry night at the Atacama Desert coast | G. Hüdepohl (atacamaphoto.com)/ESO |
| Home, beat 4 | Starry La Silla | Iztok Bončina/ESO |
| Home, the decks | Milky Way Across the Desert | ESO/P. Horálek |
| Home, through the eyepiece (telescope image) | The Carina Nebula imaged by the VLT Survey Telescope | ESO. Acknowledgement: VPHAS+ Consortium/Cambridge Astronomical Survey Unit |
| Home, cabins | A magical night in the Atacama Desert | P. Horálek/ESO |
| Sky Tonight Opener | La Silla under the stars | ESO |
| Not Found Page | Dusk in the mountains | G. Lombardi/ESO |
| Night Programs | Twilight Glow | ESP/Y. Beletsky (as printed by ESO) |
| Plan a Visit | Moon over the road to ALMA | C. Duran/ESO |
| Field Notes | Winter starry landscape | G. Hüdepohl (atacamaphoto.com)/ESO |
| Field Notes | Zodiacal light over La Silla | ESO/Y. Beletsky |
| Component lab | Dusk in the mountains; Moonrise over Cerro Armazones; Starry La Silla; Twilight Glow; Zodiacal light over La Silla | as above |
Reusable Parts
The photo stage, the scroll stage, the filter grid, the star chart, the simulated form and the reveal helper are written as instance-safe components. The component lab page runs two copies each of the photo stage, the star chart, the filter grid and the simulated form side by side; the scroll stage is exercised by the home page and by a scripted destroy-and-remount check rather than on the lab page.