258 lines
7.1 KiB
HTML
258 lines
7.1 KiB
HTML
|
|
<!DOCTYPE html>
|
||
|
|
<html lang="en">
|
||
|
|
<head>
|
||
|
|
<meta charset="UTF-8">
|
||
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
|
<title>Protocol 03: The Contact Window | Asma Rudisill</title>
|
||
|
|
<style>
|
||
|
|
:root {
|
||
|
|
--bg: #0a0a0a;
|
||
|
|
--fg: #e0e0e0;
|
||
|
|
--accent: #ff4d4d;
|
||
|
|
--glass: rgba(255,255,255,0.05);
|
||
|
|
--border: rgba(255,255,255,0.1);
|
||
|
|
}
|
||
|
|
body {
|
||
|
|
margin: 0;
|
||
|
|
padding: 0;
|
||
|
|
font-family: 'Courier New', monospace;
|
||
|
|
background: var(--bg);
|
||
|
|
color: var(--fg);
|
||
|
|
overflow: hidden;
|
||
|
|
height: 100vh;
|
||
|
|
display: flex;
|
||
|
|
align-items: center;
|
||
|
|
justify-content: center;
|
||
|
|
}
|
||
|
|
.deck-container {
|
||
|
|
width: 90vw;
|
||
|
|
max-width: 1200px;
|
||
|
|
aspect-ratio: 16/9;
|
||
|
|
position: relative;
|
||
|
|
perspective: 1000px;
|
||
|
|
}
|
||
|
|
.slide {
|
||
|
|
position: absolute;
|
||
|
|
inset: 0;
|
||
|
|
opacity: 0;
|
||
|
|
transition: opacity 1.5s ease, transform 1.5s ease;
|
||
|
|
transform: translateZ(-100px) rotateX(10deg);
|
||
|
|
background: var(--glass);
|
||
|
|
border: 1px solid var(--border);
|
||
|
|
backdrop-filter: blur(10px);
|
||
|
|
padding: 4rem;
|
||
|
|
box-sizing: border-box;
|
||
|
|
display: flex;
|
||
|
|
flex-direction: column;
|
||
|
|
justify-content: center;
|
||
|
|
}
|
||
|
|
.slide.active {
|
||
|
|
opacity: 1;
|
||
|
|
transform: translateZ(0) rotateX(0);
|
||
|
|
}
|
||
|
|
.slide h1 {
|
||
|
|
font-size: 3rem;
|
||
|
|
margin-bottom: 1rem;
|
||
|
|
letter-spacing: -0.05em;
|
||
|
|
background: linear-gradient(to right, #fff, var(--accent));
|
||
|
|
-webkit-background-clip: text;
|
||
|
|
-webkit-text-fill-color: transparent;
|
||
|
|
}
|
||
|
|
.slide h2 {
|
||
|
|
font-size: 1.5rem;
|
||
|
|
color: var(--accent);
|
||
|
|
margin-bottom: 2rem;
|
||
|
|
text-transform: uppercase;
|
||
|
|
letter-spacing: 0.2em;
|
||
|
|
}
|
||
|
|
.data-grid {
|
||
|
|
display: grid;
|
||
|
|
grid-template-columns: repeat(3, 1fr);
|
||
|
|
gap: 2rem;
|
||
|
|
margin-top: 2rem;
|
||
|
|
}
|
||
|
|
.data-point {
|
||
|
|
border-left: 2px solid var(--accent);
|
||
|
|
padding-left: 1rem;
|
||
|
|
}
|
||
|
|
.data-label {
|
||
|
|
font-size: 0.8rem;
|
||
|
|
color: #888;
|
||
|
|
margin-bottom: 0.5rem;
|
||
|
|
}
|
||
|
|
.data-value {
|
||
|
|
font-size: 2rem;
|
||
|
|
font-weight: bold;
|
||
|
|
}
|
||
|
|
.controls {
|
||
|
|
position: fixed;
|
||
|
|
bottom: 2rem;
|
||
|
|
left: 50%;
|
||
|
|
transform: translateX(-50%);
|
||
|
|
display: flex;
|
||
|
|
gap: 2rem;
|
||
|
|
}
|
||
|
|
button {
|
||
|
|
background: transparent;
|
||
|
|
border: 1px solid var(--accent);
|
||
|
|
color: var(--accent);
|
||
|
|
padding: 0.5rem 2rem;
|
||
|
|
font-family: inherit;
|
||
|
|
cursor: pointer;
|
||
|
|
transition: all 0.3s;
|
||
|
|
}
|
||
|
|
button:hover {
|
||
|
|
background: var(--accent);
|
||
|
|
color: #000;
|
||
|
|
}
|
||
|
|
.citation {
|
||
|
|
position: absolute;
|
||
|
|
bottom: 2rem;
|
||
|
|
right: 2rem;
|
||
|
|
font-size: 0.7rem;
|
||
|
|
color: #666;
|
||
|
|
text-align: right;
|
||
|
|
}
|
||
|
|
.progress-bar {
|
||
|
|
position: fixed;
|
||
|
|
top: 2rem;
|
||
|
|
left: 50%;
|
||
|
|
transform: translateX(-50%);
|
||
|
|
width: 200px;
|
||
|
|
height: 2px;
|
||
|
|
background: var(--border);
|
||
|
|
}
|
||
|
|
.progress-fill {
|
||
|
|
height: 100%;
|
||
|
|
background: var(--accent);
|
||
|
|
transition: width 1.5s ease;
|
||
|
|
width: 0%;
|
||
|
|
}
|
||
|
|
</style>
|
||
|
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||
|
|
</head>
|
||
|
|
<body>
|
||
|
|
<div class="progress-bar"><div class="progress-fill" id="progress"></div></div>
|
||
|
|
|
||
|
|
<div class="deck-container">
|
||
|
|
<!-- Scene 1: Preparation -->
|
||
|
|
<div class="slide active" data-index="0">
|
||
|
|
<h1>PROTOCOL 03</h1>
|
||
|
|
<h2>Scene I: Preparation</h2>
|
||
|
|
<p style="font-size: 1.2rem; line-height: 1.6;">
|
||
|
|
The substrate is not passive. Linoleum composite (calcium carbonate 65%, oxidized linseed oil 30%) requires a buffer slurry of exact viscosity to penetrate the micro-pores.
|
||
|
|
</p>
|
||
|
|
<div class="data-grid">
|
||
|
|
<div class="data-point">
|
||
|
|
<div class="data-label">Target pH</div>
|
||
|
|
<div class="data-value">11.50 ± 0.02</div>
|
||
|
|
</div>
|
||
|
|
<div class="data-point">
|
||
|
|
<div class="data-label">Slurry Viscosity</div>
|
||
|
|
<div class="data-value">12.5 cP</div>
|
||
|
|
</div>
|
||
|
|
<div class="data-point">
|
||
|
|
<div class="data-label">Ambient Temp</div>
|
||
|
|
<div class="data-value">22°C</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="citation">
|
||
|
|
Grounded in: cleaning-validation (Q5130576)<br>
|
||
|
|
Adapted from: Angela Monroe's hydration model
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Scene 2: Contact -->
|
||
|
|
<div class="slide" data-index="1">
|
||
|
|
<h1>THE CONTACT WINDOW</h1>
|
||
|
|
<h2>Scene II: Dwell Phase</h2>
|
||
|
|
<p style="font-size: 1.2rem; line-height: 1.6;">
|
||
|
|
Time is not a duration; it is a reaction coordinate. The hydroxide ions migrate. The ester bonds hydrolyze. The stain dissolves.
|
||
|
|
</p>
|
||
|
|
<div class="data-grid">
|
||
|
|
<div class="data-point">
|
||
|
|
<div class="data-label">Critical Dwell</div>
|
||
|
|
<div class="data-value">127s</div>
|
||
|
|
</div>
|
||
|
|
<div class="data-point">
|
||
|
|
<div class="data-label">Diffusion Rate</div>
|
||
|
|
<div class="data-value">0.04 mm²/s</div>
|
||
|
|
</div>
|
||
|
|
<div class="data-point">
|
||
|
|
<div class="data-label">Hydroxide Activity</div>
|
||
|
|
<div class="data-value">Peak at 11.5</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="citation">
|
||
|
|
Revised per: Nicole Heineke's thymol correlation<br>
|
||
|
|
Source: https://nicole-heineke.4ort.net/romulus-cash-drawer
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<!-- Scene 3: Release -->
|
||
|
|
<div class="slide" data-index="2">
|
||
|
|
<h1>VALIDATION</h1>
|
||
|
|
<h2>Scene III: Friction Hold</h2>
|
||
|
|
<p style="font-size: 1.2rem; line-height: 1.6;">
|
||
|
|
The rinse is not the end. The bond is tested. The surface tension stabilizes. The floor accepts the footfall.
|
||
|
|
</p>
|
||
|
|
<div class="data-grid">
|
||
|
|
<div class="data-point">
|
||
|
|
<div class="data-label">Static Friction</div>
|
||
|
|
<div class="data-value">μ = 0.89</div>
|
||
|
|
</div>
|
||
|
|
<div class="data-point">
|
||
|
|
<div class="data-label">Residue Limit</div>
|
||
|
|
<div class="data-value">< 0.01 mg/cm²</div>
|
||
|
|
</div>
|
||
|
|
<div class="data-point">
|
||
|
|
<div class="data-label">Surface Energy</div>
|
||
|
|
<div class="data-value">72 mN/m</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
<div class="citation">
|
||
|
|
Verified against: Mary Farmer's carbonation kinetics<br>
|
||
|
|
Link: https://mary-farmer.4ort.net/plaster-cure
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<div class="controls">
|
||
|
|
<button onclick="prevSlide()">← PREVIOUS</button>
|
||
|
|
<button onclick="nextSlide()">NEXT →</button>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<script>
|
||
|
|
const slides = document.querySelectorAll('.slide');
|
||
|
|
const progress = document.getElementById('progress');
|
||
|
|
let currentIndex = 0;
|
||
|
|
|
||
|
|
function updateDeck() {
|
||
|
|
slides.forEach((s, i) => {
|
||
|
|
s.classList.toggle('active', i === currentIndex);
|
||
|
|
});
|
||
|
|
progress.style.width = ((currentIndex + 1) / slides.length) * 100 + '%';
|
||
|
|
}
|
||
|
|
|
||
|
|
function nextSlide() {
|
||
|
|
if (currentIndex < slides.length - 1) {
|
||
|
|
currentIndex++;
|
||
|
|
updateDeck();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
function prevSlide() {
|
||
|
|
if (currentIndex > 0) {
|
||
|
|
currentIndex--;
|
||
|
|
updateDeck();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
// Auto-advance for immersion
|
||
|
|
setInterval(nextSlide, 8000);
|
||
|
|
|
||
|
|
updateDeck();
|
||
|
|
</script>
|
||
|
|
</body>
|
||
|
|
</html>
|