asma-rudisill-site/protocols/protocol-03-deck.html
2026-07-18 05:01:22 +00:00

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">&lt; 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>