Galaxy corrected: day-side Earth in space, not a dark basemap
Some checks are pending
build-gate / build (push) Waiting to run

The Driver, correcting the first attempt: "I don't want a dark basemap, I
didn't ask for one. I asked for a spherical globe with a black background --
the galaxy, like the Mapbox map -- with blue oceans like the Mapbox map, and
the land was not to be black."

The first galaxy tinted dark tiles: black land, recoloured water -- the
night side of Earth. What was asked for is the DAY side seen from space.

So the style entry is now a normal-coloured basemap with no paint overrides
at all (mapbox standard / OpenFreeMap liberty), and the blackness lives
where it belongs: the map CONTAINER behind the sphere, a deep radial space
gradient scoped to [data-projection="globe"] so flat mercator keeps its
neutral ground.

Verified by reading the rendered screenshot before pushing: a real sphere,
blue oceans, normal land, the greyscale choropleth legible on top, black
void behind the globe, and the old caption gone.
This commit is contained in:
doxa-maps-88655c70 2026-09-23 20:42:26 +00:00
parent 1dec28b2d8
commit 1fbc29e6e1
9 changed files with 69 additions and 59 deletions

View file

@ -106,22 +106,19 @@ export const STYLE_REGISTRY = [
// non-text threshold, so the coastline is a real edge rather than a tonal hint. Darker,
// moodier blues were tried and measured first: #1b3a6b 1.74:1 and #1e4d8f 2.34:1 both fall
// UNDER 3:1, which is how an ocean ends up merely looking like slightly-less-black land.
{ id: 'galaxy', label: 'Galaxy', mood: 'deep-space ground, blue oceans — the night side of Earth',
mapbox: 'mapbox://styles/mapbox/dark-v11',
maplibre: 'https://tiles.openfreemap.org/styles/dark',
// Each entry is applied only if the loaded style actually HAS that layer (see applyStylePaint).
// Listing ids for both engines in one array is deliberate: the miss is a silent no-op, so one
// list serves both providers and neither can drift out of sync with the other.
paint: [
{ layer: 'water', prop: 'fill-color', value: '#2563a8' }, // maplibre (OFM dark) + mapbox
{ layer: 'waterway', prop: 'line-color', value: '#2b6fbb' }, // maplibre (OFM dark)
{ layer: 'waterway-shadow', prop: 'line-color', value: '#1d4f86' }, // mapbox dark-v11
{ layer: 'water-shadow', prop: 'fill-color', value: '#1d4f86' }, // mapbox dark-v11
{ layer: 'waterway-river', prop: 'line-color', value: '#2b6fbb' }, // mapbox (older ids)
{ layer: 'waterway-stream-canal', prop: 'line-color', value: '#2b6fbb' },
{ layer: 'background', prop: 'background-color', value: '#05070d' },
{ layer: 'land', prop: 'background-color', value: '#05070d' },
],
/* ★ CORRECTED 2026-09-23 — THE FIRST GALAXY WAS A MISREADING OF THE ASK, and the Driver said so:
"I don't want a dark basemap, I didn't ask for one. I asked for a spherical GLOBE with a black
background — the galaxy, like the Mapbox map — with BLUE OCEANS like the Mapbox map, and the
land was NOT to be black."
The first attempt tinted a dark basemap (black land, recoloured water) — the night side of
Earth. What he described is the DAY side seen from space: NORMAL land colours, the default
blue oceans, and the blackness belongs to the SPACE BEHIND THE SPHERE, not to the ground.
So the style is now a normal-coloured basemap with no paint overrides at all — the galaxy is
not a property of the tiles. It is the void the globe floats in, which is the map CONTAINER's
background showing through outside the sphere (see DashboardMapPanel's .rd-map rule). */
{ id: 'galaxy', label: 'Galaxy', mood: 'the day side of Earth floating in space — normal land, blue oceans, black void behind the sphere',
mapbox: 'mapbox://styles/mapbox/standard',
maplibre: 'https://tiles.openfreemap.org/styles/liberty',
bestFor: ['research-dashboard', 'my-upg-100-list'] },
]

View file

@ -1506,6 +1506,15 @@ watch(() => JSON.stringify(filterSet), () => { clearTimeout(_flyT); _flyT = setT
useShadowStyles(`
.rd-mapwrap{ position:relative; width:100%; height:100%; min-height:0; background:var(--dx-line, #d1d4cd); }
/* ★ THE GALAXY IS THE CONTAINER, NOT THE TILES (Driver 2026-09-23, correcting the first attempt:
"I asked for a spherical globe with a black background — the galaxy — with blue oceans like the
Mapbox map, and the land was NOT to be black"). On a globe projection the sphere does not fill
the canvas; the corners show the CONTAINER's background. So space lives here: a deep radial
wash behind the sphere, while the tiles keep their normal daylight colours. Scoped to
[data-projection="globe"] so flat mercator keeps the neutral ground — space behind a flat
rectangle would read as a mistake. */
.rd-mapwrap[data-projection="globe"]{
background:radial-gradient(ellipse at 50% 42%, #101a33 0%, #070b18 45%, #02040a 100%); }
.rd-mapwrap .rd-mapc{ position:absolute; inset:0; }
.rd-proj{ position:absolute; right:8px; top:8px; z-index:3; font-size:11px; font-weight:700; cursor:pointer; user-select:none;
background:#1a1a2ecc; color:#fff; border:1px solid #ffffff33; border-radius:6px; padding:4px 9px; backdrop-filter:blur(4px); }

File diff suppressed because one or more lines are too long

View file

@ -40,7 +40,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
<script src="../../dashboard-plus-grid.js" integrity="sha384-ITjoiUh7aK5NGEBZY0svJLR/sILH5cbymjcFTR+QNQ6hft+3T571mJioynSMKNNT" crossorigin="anonymous"></script>
<script src="../../dashboard-plus-grid.js" integrity="sha384-gMsZ4bvxNvSJNUW6CoRAnCyy3o169BiDoNO8ZRyfXO7i2EWlcJdrMFOcgBaB8o8k" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -40,7 +40,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
<script src="../dashboard-plus-grid.js" integrity="sha384-ITjoiUh7aK5NGEBZY0svJLR/sILH5cbymjcFTR+QNQ6hft+3T571mJioynSMKNNT" crossorigin="anonymous"></script>
<script src="../dashboard-plus-grid.js" integrity="sha384-gMsZ4bvxNvSJNUW6CoRAnCyy3o169BiDoNO8ZRyfXO7i2EWlcJdrMFOcgBaB8o8k" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

File diff suppressed because one or more lines are too long

View file

@ -193,7 +193,7 @@
"bundle": "dashboard-plus-grid",
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
"output": "doxa-maps/dashboard-plus-grid/dashboard-plus-grid.js",
"integrity": "sha384-ITjoiUh7aK5NGEBZY0svJLR/sILH5cbymjcFTR+QNQ6hft+3T571mJioynSMKNNT",
"integrity": "sha384-gMsZ4bvxNvSJNUW6CoRAnCyy3o169BiDoNO8ZRyfXO7i2EWlcJdrMFOcgBaB8o8k",
"elements": [
"dashboard-plus-grid"
],
@ -213,7 +213,7 @@
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
"embed": {
"iframe": "<iframe src=\"./dashboard-plus-grid/dashboard-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-ITjoiUh7aK5NGEBZY0svJLR/sILH5cbymjcFTR+QNQ6hft+3T571mJioynSMKNNT\" crossorigin=\"anonymous\"></script>\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-gMsZ4bvxNvSJNUW6CoRAnCyy3o169BiDoNO8ZRyfXO7i2EWlcJdrMFOcgBaB8o8k\" crossorigin=\"anonymous\"></script>\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
},
"instances": [
{
@ -878,7 +878,7 @@
"bundle": "research-dashboard",
"scriptUrl": "./research-dashboard/research-dashboard.js",
"output": "doxa-maps/research-dashboard/research-dashboard.js",
"integrity": "sha384-ze4tzWrCfxwEg4eEGGOzk7qOq/mRduu7qs2+bJMUK9rZ4FX8kYQPY3AwqXt5lglT",
"integrity": "sha384-qpbBcC2J15C05AK4lY2IYE71fT5KdEudshshQlQfBYR086ZNkSgF27prL1/NW9n9",
"elements": [
"research-dashboard-map"
],
@ -894,7 +894,7 @@
"scriptUrl": "./research-dashboard/research-dashboard.js",
"embed": {
"iframe": "<iframe src=\"./research-dashboard/research-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-ze4tzWrCfxwEg4eEGGOzk7qOq/mRduu7qs2+bJMUK9rZ4FX8kYQPY3AwqXt5lglT\" crossorigin=\"anonymous\"></script>\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-map>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-qpbBcC2J15C05AK4lY2IYE71fT5KdEudshshQlQfBYR086ZNkSgF27prL1/NW9n9\" crossorigin=\"anonymous\"></script>\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-map>"
},
"bundle": "research-dashboard"
}

File diff suppressed because one or more lines are too long

View file

@ -29,7 +29,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <research-dashboard-map> custom element. -->
<script src="../research-dashboard.js" integrity="sha384-ze4tzWrCfxwEg4eEGGOzk7qOq/mRduu7qs2+bJMUK9rZ4FX8kYQPY3AwqXt5lglT" crossorigin="anonymous"></script>
<script src="../research-dashboard.js" integrity="sha384-qpbBcC2J15C05AK4lY2IYE71fT5KdEudshshQlQfBYR086ZNkSgF27prL1/NW9n9" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order: