abel-hall-galaxy/north-shore-recovery-map.html

167 lines
5.1 KiB
HTML
Raw Normal View History

2026-07-18 04:44:26 +02:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>North Shore Recovery Map — Abel Hall</title>
<style>
:root {
--dome-black: #000000;
--sensor-teal: #00f7ff;
--granite: #2a2a4a;
--ridge-line: rgba(0, 247, 255, 0.15);
--breath-white: #ffffff;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html, body {
height: 100%;
background: radial-gradient(circle at center, var(--dome-black), var(--granite));
color: var(--sensor-teal);
font-family: 'IBM Plex Mono', monospace;
overflow-x: hidden;
}
.shore-line {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 95vw;
height: 95vw;
border: 1px solid var(--ridge-line);
border-radius: 50%;
animation: coast 14s linear infinite;
}
@keyframes coast {
0% { rotate: 0deg; opacity: 0; }
100% { rotate: 360deg; opacity: 1; }
}
.waypoint-beacon {
position: absolute;
top: 50%;
left: 50%;
width: 4px;
height: 4px;
background: var(--breath-white);
transform-origin: center;
transform: translate(-50%, -50%) rotate(var(--bearing)) scale(var(--zoom));
box-shadow: 0 0 20px var(--sensor-teal);
}
.recovery-sequence {
position: absolute;
bottom: 6vh;
left: 8vw;
right: 8vw;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1.5rem;
font-size: 0.65rem;
line-height: 1.6;
}
.sequence-node {
border: 1px solid var(--ridge-line);
padding: 1.2rem;
background: rgba(0, 247, 255, 0.03);
backdrop-filter: blur(10px);
}
.node-header {
border-bottom: 1px solid var(--ridge-line);
margin-bottom: 0.5rem;
font-size: 0.8rem;
letter-spacing: 0.15em;
}
.mistake-vector {
position: absolute;
top: 15vh;
left: 50%;
transform: translateX(-50%);
font-size: 1.2rem;
letter-spacing: 0.2em;
text-align: center;
animation: anchor 4s ease-in-out infinite;
}
@keyframes anchor {
0%, 100% { opacity: 0.2; }
50% { opacity: 1; text-shadow: 0 0 30px var(--sensor-teal); }
}
.calibration-rhythm {
position: absolute;
top: 50%;
left: 10vw;
transform: translateY(-50%);
font-size: 0.55rem;
writing-mode: vertical-lr;
text-orientation: mixed;
letter-spacing: 0.3em;
}
</style>
</head>
<body>
<!-- The Coastline: 14 Weeks in Granite Orbit -->
<div class="shore-line"></div>
<!-- Fourteen Beacons: Each a Waypoint on the Ridge -->
<script>
const beacons = document.createElement('template');
for(let w=0;w<14;w++) {
const beacon = document.createElement('div');
beacon.className = 'waypoint-beacon';
beacon.style.setProperty('--bearing', `${w*360/14}deg`);
beacon.style.setProperty('--zoom', `${1+w*0.07}`);
beacons.appendChild(beacon);
}
document.body.appendChild(beacons.content);
</script>
<!-- The Vector: Where the Mistake Becomes the Path -->
<div class="mistake-vector">
FROM GRANITE TO HABITAT<br/>
EVERY DRIFT IS A WAYPOINT
</div>
<!-- The Rhythm: Breathing Between the Nodes -->
<div class="calibration-rhythm">
NORTH-SHORE-BREATH-NORTH-SHORE-BREATH-NORTH-SHORE-BREATH
</div>
<!-- The Sequence: Where Time Becomes Space -->
<div class="recovery-sequence">
<div class="sequence-node">
<div class="node-header">T+0:00:00</div>
Sensor Node Alpha:<br/>
Humidity Baseline Locked<br/>
North Shore Anchor Engaged
</div>
<div class="sequence-node">
<div class="node-header">T+0:14:00</div>
Drift Detected: 0.003µm<br/>
Correction Applied:<br/>
Dome Hatch Sequence Gamma
</div>
<div class="sequence-node">
<div class="node-header">T+0:28:00</div>
Mistake Logged:<br/>
Circuit Trace Fracture<br/>
Recovery Clock Started
</div>
<div class="sequence-node">
<div class="node-header">T+1:00:00</div>
Full Calibration:<br/>
Fourteen Weeks in Orbit<br/>
Every Beacon Lit
</div>
</div>
</body>
</html>
</body>
</html>