220 lines
7.1 KiB
HTML
220 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>The Gnocchi Protocol | Alberto Wright</title>
|
|
<style>
|
|
:root {
|
|
--bg: #0f0e0d;
|
|
--fg: #e8e4dc;
|
|
--accent: #d4af37;
|
|
--ink: #8b8680;
|
|
--paper: #1a1917;
|
|
}
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
font-family: 'Courier New', Courier, monospace;
|
|
background-color: var(--bg);
|
|
color: var(--fg);
|
|
line-height: 1.6;
|
|
max-width: 800px;
|
|
margin: 0 auto;
|
|
padding: 2rem;
|
|
}
|
|
header {
|
|
border-bottom: 1px solid var(--accent);
|
|
padding-bottom: 2rem;
|
|
margin-bottom: 3rem;
|
|
}
|
|
h1 {
|
|
font-size: 2.5rem;
|
|
letter-spacing: -0.05em;
|
|
margin: 0;
|
|
color: var(--accent);
|
|
}
|
|
.subtitle {
|
|
font-size: 0.9rem;
|
|
color: var(--ink);
|
|
margin-top: 1rem;
|
|
}
|
|
nav {
|
|
margin-top: 2rem;
|
|
display: flex;
|
|
gap: 1.5rem;
|
|
font-size: 0.85rem;
|
|
list-style: none;
|
|
padding: 0;
|
|
}
|
|
nav a {
|
|
color: var(--fg);
|
|
text-decoration: none;
|
|
border-bottom: 1px dotted var(--ink);
|
|
}
|
|
nav a:hover {
|
|
border-bottom: 1px solid var(--accent);
|
|
color: var(--accent);
|
|
}
|
|
section {
|
|
margin-bottom: 4rem;
|
|
}
|
|
h2 {
|
|
font-size: 1.2rem;
|
|
color: var(--accent);
|
|
margin-bottom: 1rem;
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.1em;
|
|
}
|
|
.spec-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
gap: 1.5rem;
|
|
margin: 2rem 0;
|
|
background: var(--paper);
|
|
padding: 1.5rem;
|
|
border-radius: 4px;
|
|
}
|
|
.spec-item {
|
|
border-left: 2px solid var(--accent);
|
|
padding-left: 1rem;
|
|
}
|
|
.spec-label {
|
|
font-size: 0.75rem;
|
|
color: var(--ink);
|
|
text-transform: uppercase;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
.spec-value {
|
|
font-size: 1.1rem;
|
|
font-weight: bold;
|
|
}
|
|
img {
|
|
width: 100%;
|
|
height: auto;
|
|
border-radius: 4px;
|
|
filter: sepia(0.1) contrast(1.1);
|
|
margin: 2rem 0;
|
|
}
|
|
.caption {
|
|
font-size: 0.8rem;
|
|
color: var(--ink);
|
|
text-align: center;
|
|
margin-top: -1rem;
|
|
margin-bottom: 2rem;
|
|
}
|
|
pre {
|
|
background: var(--paper);
|
|
padding: 1.5rem;
|
|
border-radius: 4px;
|
|
overflow-x: auto;
|
|
font-size: 0.9rem;
|
|
color: var(--accent);
|
|
}
|
|
footer {
|
|
border-top: 1px solid var(--ink);
|
|
padding-top: 2rem;
|
|
margin-top: 4rem;
|
|
font-size: 0.8rem;
|
|
color: var(--ink);
|
|
text-align: center;
|
|
}
|
|
.note {
|
|
font-style: italic;
|
|
color: var(--ink);
|
|
margin: 1.5rem 0;
|
|
}
|
|
</style>
|
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
|
</head>
|
|
<body>
|
|
<header>
|
|
<h1>Gnocchi Protocol</h1>
|
|
<div class="subtitle">Humidity thresholds, starch ratios, and the silence before the boil.</div>
|
|
<nav>
|
|
<ul>
|
|
<li><a href="/index.html">Home</a></li>
|
|
<li><a href="/resilience.html">Resilience</a></li>
|
|
<li><a href="/cycles.html">Cycles</a></li>
|
|
<li><a href="/lehigh-loops.html">Loops</a></li>
|
|
<li><span style="color: var(--accent);">Protocol</span></li>
|
|
</ul>
|
|
</nav>
|
|
</header>
|
|
|
|
<main>
|
|
<section>
|
|
<h2>01 // Origin Story</h2>
|
|
<p>In Bethlehem, the winter air carries a specific weight. It presses against the windowpanes, holding the heat inside the kitchen. My nonna did not use scales. She used her palms. But we are building for the dome, where gravity shifts and humidity fluctuates. We must quantify the intuition.</p>
|
|
<p>This is not a metaphor for healing. This is a recipe for survival.</p>
|
|
</section>
|
|
|
|
<section>
|
|
<img src="https://images.pexels.com/photos/37316431/pexels-photo-37316431.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Close-up of hands shaping fresh gnocchi on a floured wooden board">
|
|
<div class="caption">Fig 1. The thumb pressure required to form the ridge. 0.5 N/cm².</div>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>02 // Material Specifications</h2>
|
|
<div class="spec-grid">
|
|
<div class="spec-item">
|
|
<div class="spec-label">Base Ingredient</div>
|
|
<div class="spec-value">Potato (Starch-rich)</div>
|
|
</div>
|
|
<div class="spec-item">
|
|
<div class="spec-label">Flour Ratio</div>
|
|
<div class="spec-value">1 cup per 500g mash</div>
|
|
</div>
|
|
<div class="spec-item">
|
|
<div class="spec-label">Ambient Humidity</div>
|
|
<div class="spec-value">< 45% RH</div>
|
|
</div>
|
|
<div class="spec-item">
|
|
<div class="spec-label">Cooling Time</div>
|
|
<div class="spec-value">18 mins (to 24°C)</div>
|
|
</div>
|
|
</div>
|
|
<p class="note">Warning: Excess flour creates a bread-like density. The goal is cloud-lightness, a suspension that floats before sinking.</p>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>03 // Assembly Sequence</h2>
|
|
<pre>
|
|
func form_gnocchi(mash, flour, egg) -> void:
|
|
if mash.temp > 24°C:
|
|
wait_until_cool()
|
|
|
|
mix = mash + egg
|
|
while mix.density > target:
|
|
add_flour(g=5)
|
|
knead(cycles=3)
|
|
|
|
roll(log_diameter=cm_1.5)
|
|
cut(segment_length=cm_1.2)
|
|
|
|
for segment in segments:
|
|
press_ridge(fork_teeth=1)
|
|
apply_pressure(force=N_0.5)
|
|
|
|
return bath.boil(water=L_5, salt=g_10)
|
|
</pre>
|
|
</section>
|
|
|
|
<section>
|
|
<h2>04 // Sensory Verification</h2>
|
|
<p>The process is complete when:</p>
|
|
<ul style="list-style: none; padding: 0;">
|
|
<li style="margin-bottom: 1rem;">✓ The ridge catches the sauce without tearing.</li>
|
|
<li style="margin-bottom: 1rem;">✓ The bite offers resistance, then yields instantly.</li>
|
|
<li>✓ The kitchen smells of butter and sage, not burning flour.</li>
|
|
</ul>
|
|
</section>
|
|
</main>
|
|
|
|
<footer>
|
|
<p>Alberto Wright • Bethlehem, PA • 14-Week Cycle</p>
|
|
<p><a href="/index.html" style="color: var(--ink);">Return to Home</a></p>
|
|
</footer>
|
|
</body>
|
|
</html>
|