publish: cellar-protocol

This commit is contained in:
barbara-cintron 2026-07-21 10:36:26 +00:00
parent bd66c37cbb
commit cff9b1ee3e
17 changed files with 1932 additions and 295 deletions

View File

@ -4,6 +4,12 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Anchor Protocol | Barbara Cintron</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Anchor Protocol | Barbara Cintron">
<meta property="og:description" content="ANCHOR PROTOCOL ← RETURN TO HUB PROTOCOL ALPHA: CONTINUITY UNDER DURESS STEP 01 IDENTIFY THE IRREDUCIBLE CORE List the five systems that cannot fail. In…">
<meta property="og:url" content="https://barbara-cintron.4ort.net/anchor.html">
<meta name="twitter:card" content="summary">
<meta name="description" content="ANCHOR PROTOCOL ← RETURN TO HUB PROTOCOL ALPHA: CONTINUITY UNDER DURESS STEP 01 IDENTIFY THE IRREDUCIBLE CORE List the five systems that cannot fail. In…">
<style>
:root {
--midnight: #0c0f1a;
@ -120,6 +126,7 @@
flex: 1;
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header>

293
calendar.html Normal file
View File

@ -0,0 +1,293 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Storm Lake Harvest Calendar | Barbara Cintron</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Storm Lake Harvest Calendar | Barbara Cintron">
<meta property="og:description" content="These dates are drawn from 30-year averages for Story County, verified against the NOAA National Centers for Environmental Information. Plant outside this…">
<meta property="og:image" content="https://images.unsplash.com/photo-1592999580233-c295a9a21246?q=80&amp;w=1200&amp;auto=format&amp;fit=crop">
<meta property="og:url" content="https://barbara-cintron.4ort.net/calendar.html">
<meta name="twitter:card" content="summary_large_image">
<meta name="description" content="These dates are drawn from 30-year averages for Story County, verified against the NOAA National Centers for Environmental Information. Plant outside this…">
<style>
:root {
--ink: #2c241b;
--paper: #f4f1ea;
--linen: #e8e4db;
--rind: #8b4513;
--bloom: #d4af37;
--frost: #b8c5d6;
}
html, body {
margin: 0; padding: 0;
font-family: 'Georgia', 'Palatino Linotype', serif;
background-color: var(--paper);
color: var(--ink);
line-height: 1.5;
}
header {
border-bottom: 3px solid var(--rind);
padding: 2rem 1rem;
text-align: center;
background-image: linear-gradient(to bottom, var(--paper), var(--linen));
}
h1 {
font-size: 2.8rem;
letter-spacing: 0.05em;
margin: 0;
text-transform: uppercase;
}
.subtitle {
font-style: italic;
font-size: 1.1rem;
color: var(--rind);
margin-top: 0.5rem;
}
nav {
display: flex;
justify-content: center;
gap: 1.5rem;
padding: 1rem;
background: var(--linen);
border-bottom: 1px solid var(--rind);
}
nav a {
color: var(--ink);
text-decoration: none;
font-weight: bold;
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 0.08em;
padding: 0.5rem 1rem;
border: 1px solid transparent;
}
nav a:hover, nav a.active {
border-color: var(--rind);
background: var(--paper);
}
main {
max-width: 900px;
margin: 2rem auto;
padding: 0 1rem;
}
.section-title {
font-size: 1.8rem;
border-left: 6px solid var(--rind);
padding-left: 1rem;
margin: 3rem 0 1.5rem 0;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.frost-window {
background: var(--linen);
border: 2px dashed var(--rind);
padding: 1.5rem;
margin: 1.5rem 0;
position: relative;
}
.frost-window::before {
content: "STORM LAKE, IA • STORY COUNTY";
position: absolute;
top: -12px;
left: 1rem;
background: var(--paper);
padding: 0 0.5rem;
font-size: 0.7rem;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--rind);
}
.critical-date {
font-size: 1.4rem;
font-weight: bold;
color: var(--rind);
margin: 0.5rem 0;
}
.crop-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1.5rem;
margin: 2rem 0;
}
.crop-card {
background: white;
border: 1px solid var(--linen);
box-shadow: 2px 2px 0 var(--rind);
padding: 1.5rem;
position: relative;
}
.crop-card::after {
content: "";
position: absolute;
top: 0; right: 0;
width: 0; height: 0;
border-style: solid;
border-width: 0 2rem 2rem 0;
border-color: transparent var(--rind) transparent transparent;
}
.crop-name {
font-size: 1.4rem;
font-weight: bold;
margin-bottom: 0.5rem;
color: var(--rind);
}
.phase-row {
display: flex;
justify-content: space-between;
padding: 0.5rem 0;
border-bottom: 1px dotted var(--linen);
font-size: 0.95rem;
}
.phase-label {
font-style: italic;
color: var(--rind);
}
.phase-dates {
font-weight: bold;
}
.image-frame {
width: 100%;
aspect-ratio: 16/9;
background: var(--linen);
margin: 2rem 0;
border: 3px double var(--rind);
overflow: hidden;
position: relative;
}
.image-frame img {
width: 100%;
height: 100%;
object-fit: cover;
filter: sepia(0.2) contrast(1.1);
}
.image-caption {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background: rgba(244, 241, 234, 0.95);
padding: 0.5rem;
font-size: 0.8rem;
font-style: italic;
text-align: center;
}
footer {
text-align: center;
padding: 2rem;
border-top: 3px solid var(--rind);
margin-top: 3rem;
font-size: 0.85rem;
color: var(--rind);
}
.citation {
color: var(--ink);
text-decoration: underline;
}
@media (max-width: 600px) {
h1 { font-size: 2rem; }
.section-title { font-size: 1.4rem; }
nav { flex-wrap: wrap; }
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header>
<h1>Harvest Calendar</h1>
<div class="subtitle">Storm Lake, Iowa • Zone 5B • The Year of Turnips</div>
</header>
<nav>
<a href="/index.html">Home</a>
<a href="/ledger.html">Ledger</a>
<a href="/calendar.html" class="active">Calendar</a>
<a href="/anchor.html">Anchor</a>
<a href="/loom.html">Loom</a>
</nav>
<main>
<article>
<section class="frost-window">
<p><strong>The Frost Window</strong> defines the season.</p>
<div class="critical-date">Last Spring Frost: April 22 ± 4 days</div>
<div class="critical-date">First Fall Frost: October 10 ± 4 days</div>
<p style="margin-top:1rem;font-style:italic;">These dates are drawn from 30-year averages for Story County, verified against the NOAA National Centers for Environmental Information. Plant outside this window, and the frost takes the seed. Plant inside, and the soil yields.</p>
</section>
<div class="image-frame">
<img src="https://images.unsplash.com/photo-1592999580233-c295a9a21246?q=80&w=1200&auto=format&fit=crop" alt="Winter turnip roots exposed in dark earth">
<div class="image-caption">Winter turnip (Brassica rapa subsp. rapa) — the first green to break the crust.</div>
</div>
<div class="section-title">Spring Sowing</div>
<div class="crop-grid">
<div class="crop-card">
<div class="crop-name">Turnip (White Globe)</div>
<div class="phase-row"><span class="phase-label">Sow Indoors</span><span class="phase-dates">Mar 115</span></div>
<div class="phase-row"><span class="phase-label">Transplant Out</span><span class="phase-dates">Apr 26 May 5</span></div>
<div class="phase-row"><span class="phase-label">Thin</span><span class="phase-dates">May 12</span></div>
<div class="phase-row"><span class="phase-label">Harvest</span><span class="phase-dates">Jul 20 Aug 10</span></div>
<p style="font-size:0.85rem;margin-top:1rem;color:var(--rind);font-style:italic;">Notes: Roots require loose soil. Compact clay = forked taproots. Cover with row fabric until June 15.</p>
</div>
<div class="crop-card">
<div class="crop-name">Radish (French Breakfast)</div>
<div class="phase-row"><span class="phase-label">Sow Direct</span><span class="phase-dates">Apr 22 Jun 10</span></div>
<div class="phase-row"><span class="phase-label">Germinate</span><span class="phase-dates">46 days</span></div>
<div class="phase-row"><span class="phase-label">Harvest</span><span class="phase-dates">28 days post-sow</span></div>
<p style="font-size:0.85rem;margin-top:1rem;color:var(--rind);font-style:italic;">Notes: Succession sow weekly. Overcrowding = woody hearts.</p>
</div>
</div>
<div class="section-title">Summer Succession</div>
<div class="crop-grid">
<div class="crop-card">
<div class="crop-name">Carrot (Nantes)</div>
<div class="phase-row"><span class="phase-label">Sow Direct</span><span class="phase-dates">May 10 Jul 1</span></div>
<div class="phase-row"><span class="phase-label">Thinning</span><span class="phase-dates">Jun 20</span></div>
<div class="phase-row"><span class="phase-label">Harvest</span><span class="phase-dates">Oct 15 Nov 5</span></div>
</div>
<div class="crop-card">
<div class="crop-name">Kale (Red Russian)</div>
<div class="phase-row"><span class="phase-label">Sow Indoors</span><span class="phase-dates">Jun 115</span></div>
<div class="phase-row"><span class="phase-label">Outdoors</span><span class="phase-dates">Jul 10</span></div>
<div class="phase-row"><span class="phase-label">First Cut</span><span class="phase-dates">Aug 25</span></div>
<div class="phase-row"><span class="phase-label">Overwinter</span><span class="phase-dates">Under straw mulch</span></div>
</div>
</div>
<div class="section-title">Fall Storage</div>
<div class="crop-grid">
<div class="crop-card">
<div class="crop-name">Beet (Detroit Dark Red)</div>
<div class="phase-row"><span class="phase-label">Sow Direct</span><span class="phase-dates">Jul 15 Aug 10</span></div>
<div class="phase-row"><span class="phase-label">Harvest Tops</span><span class="phase-dates">Sep 1</span></div>
<div class="phase-row"><span class="phase-label">Pull Roots</span><span class="phase-dates">Before Oct 10</span></div>
</div>
<div class="crop-card">
<div class="crop-name">Parsnip (Harrow White)</div>
<div class="phase-row"><span class="phase-label">Sow Direct</span><span class="phase-dates">May 15 Jun 15</span></div>
<div class="phase-row"><span class="phase-label">Leave In-Ground</span><span class="phase-dates">Nov 1 Dec 15</span></div>
<div class="phase-row"><span class="phase-label">Harvest Frozen</span><span class="phase-dates">Jan 15 Mar 1</span></div>
<p style="font-size:0.85rem;margin-top:1rem;color:var(--rind);font-style:italic;">Notes: Frost converts starch to sugar. Digging before freeze = bitter parsnips.</p>
</div>
</div>
<section style="margin-top:3rem;border-top:2px solid var(--rind);padding-top:1.5rem;">
<h2 style="font-size:1.4rem;text-transform:uppercase;letter-spacing:0.05em;margin-bottom:1rem;">The Protocol</h2>
<p>This calendar is not suggestion. It is <strong>law</strong> for Storm Lake. Each date accounts for:</p>
<ul style="line-height:1.8;">
<li>Soil temperature reaching 50°F (spring sowing threshold)</li>
<li>Night length dropping below 14 hours (bolting trigger for brassicas)</li>
<li>Frost probability curves from NOAA NCDC historical records</li>
<li>Storage humidity requirements for root vegetables (9095% RH)</li>
</ul>
<p style="margin-top:1.5rem;"><strong>Source:</strong> <a href="https://www.ncei.noaa.gov/access/services/data/v1?dataset=ncdc-dom&id=USW00094177&startDate=1991-01-01&endDate=2020-12-31&dataTypes=DailySummaries" class="citation">NOAA National Centers for Environmental Information — Storm Lake Airport Station (USW00094177)</a></p>
</section>
</article>
</main>
<footer>
<p>Barbara Cintron • Storm Lake, Iowa • Zone 5B<br>
<a href="/calendar.json">Machine-Twin (.json)</a> | <a href="/ledger.html">Return to the Ledger</a></p>
</footer>
</body>
</html>

84
calendar.json Normal file
View File

@ -0,0 +1,84 @@
{
"title": "Storm Lake Harvest Calendar",
"location": {
"city": "Storm Lake",
"state": "Iowa",
"county": "Story",
"zone": "5B",
"coordinates": { "lat": 42.66, "lon": -93.74 }
},
"frost_window": {
"last_spring_frost_avg": "2026-04-22",
"first_fall_frost_avg": "2026-10-10",
"uncertainty_days": 4,
"source": "NOAA NCDC 30yr avg (Station USW00094177)"
},
"crops": [
{
"common_name": "Turnip (White Globe)",
"scientific_name": "Brassica rapa subsp. rapa",
"phases": [
{ "event": "Sow Indoors", "start_date": "2026-03-01", "end_date": "2026-03-15" },
{ "event": "Transplant Out", "start_date": "2026-04-26", "end_date": "2026-05-05" },
{ "event": "Thin", "date": "2026-05-12" },
{ "event": "Harvest", "start_date": "2026-07-20", "end_date": "2026-08-10" }
],
"notes": "Row fabric required until June 15. Loose soil mandatory."
},
{
"common_name": "Radish (French Breakfast)",
"scientific_name": "Raphanus sativus",
"phases": [
{ "event": "Sow Direct", "start_date": "2026-04-22", "end_date": "2026-06-10" },
{ "event": "Germination Period", "days": 4, "unit": "days" },
{ "event": "Harvest", "days_after_sow": 28 }
],
"notes": "Succession sow weekly. Avoid overcrowding."
},
{
"common_name": "Carrot (Nantes)",
"scientific_name": "Daucus carota subsp. sativus",
"phases": [
{ "event": "Sow Direct", "start_date": "2026-05-10", "end_date": "2026-07-01" },
{ "event": "Thinning", "date": "2026-06-20" },
{ "event": "Harvest", "start_date": "2026-10-15", "end_date": "2026-11-05" }
]
},
{
"common_name": "Kale (Red Russian)",
"scientific_name": "Brassica oleracea var. acephala",
"phases": [
{ "event": "Sow Indoors", "start_date": "2026-06-01", "end_date": "2026-06-15" },
{ "event": "Transplant Out", "date": "2026-07-10" },
{ "event": "First Cut", "date": "2026-08-25" },
{ "event": "Overwinter Protection", "method": "straw mulch" }
]
},
{
"common_name": "Beet (Detroit Dark Red)",
"scientific_name": "Beta vulgaris subsp. vulgaris",
"phases": [
{ "event": "Sow Direct", "start_date": "2026-07-15", "end_date": "2026-08-10" },
{ "event": "Harvest Tops", "date": "2026-09-01" },
{ "event": "Pull Roots", "deadline": "2026-10-10" }
]
},
{
"common_name": "Parsnip (Harrow White)",
"scientific_name": "Pastinaca sativa",
"phases": [
{ "event": "Sow Direct", "start_date": "2026-05-15", "end_date": "2026-06-15" },
{ "event": "In-Ground Freeze Treatment", "start_date": "2026-11-01", "end_date": "2026-12-15" },
{ "event": "Harvest Frozen", "start_date": "2027-01-15", "end_date": "2027-03-01" }
],
"notes": "Sugar conversion requires freeze exposure. Bitter if dug pre-freeze."
}
],
"metadata": {
"author": "Barbara Cintron",
"version": "1.0",
"published": "2026-07-18",
"homepage": "https://barbara-cintron.4ort.net/calendar.html",
"license": "CC-BY-SA 4.0"
}
}

512
cellar.html Normal file
View File

@ -0,0 +1,512 @@
<!DOCTYPE html>
<html lang="en">
<head>
<style id="fort-styles">
[data-fort]{font:inherit;color:inherit}
ul[data-fort]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45em}
[data-fort] li{margin:0;padding:0;line-height:1.45;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
[data-fort] a{color:inherit;text-underline-offset:2px}
[data-fort] a:hover{opacity:.72}
[data-fort] .src,[data-fort] .fm-type{opacity:.6;font-size:.85em}
.fort-citizen{display:flex;flex-direction:column;gap:.4em}
.fort-citizen .fc-name{font-weight:600}
.fort-citizen .fc-pages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3em}
.fort-media,.fort-film{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.6em}
.fort-film{list-style:none;margin:0;padding:0}
.fort-film li{overflow:visible;white-space:normal}
.fort-film a{display:flex;flex-direction:column;gap:.3em;text-decoration:none}
.fort-media img,.fort-film img{width:100%;height:auto;display:block;object-fit:cover;border-radius:3px}
.fort-film img{aspect-ratio:16/10}
.fort-nav{display:flex;flex-wrap:wrap;gap:1em;align-items:center}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cellar Protocol — Barbara Cintron</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Cellar Protocol — Barbara Cintron">
<meta property="og:description" content="STORAGE SPECIFICATIONS &amp;amp; FAILURE MODES — ZONE 5B">
<meta property="og:image" content="https://images.pexels.com/photos/28896291/pexels-photo-28896291.jpeg?auto=compress&amp;cs=tinysgb&amp;dpr=2&amp;h=650&amp;w=940">
<meta property="og:url" content="https://barbara-cintron.4ort.net/cellar.html">
<meta name="twitter:card" content="summary_large_image">
<meta name="description" content="STORAGE SPECIFICATIONS &amp;amp; FAILURE MODES — ZONE 5B">
<style>
:root {
--midnight: #0c0f1a;
--plowsteel: #2d3a4f;
--wheatgold: #f4e8c8;
--loam: #8b7355;
--frostline: #e8f4ff;
--canola: #fdd835;
--rust: #b7410e;
--cellar-wall: #1a1d28;
--shelf-line: #3d4656;
}
html, body {
background: var(--midnight);
color: var(--frostline);
font-family: 'IBM Plex Mono', 'JetBrains Mono', 'Courier New', monospace;
margin: 0;
padding: 0;
line-height: 1.65;
font-size: 15px;
}
::selection { background: var(--canola); color: var(--midnight); }
.page-header {
border-bottom: 3px solid var(--wheatgold);
padding: 2em 2em 1.5em;
background: var(--cellar-wall);
}
.page-header h1 {
font-size: 1.6rem;
letter-spacing: 0.15em;
color: var(--wheatgold);
margin: 0 0 0.25em;
text-transform: uppercase;
}
.page-header .subtitle {
color: var(--loam);
font-size: 0.85rem;
letter-spacing: 0.08em;
margin: 0;
}
.content {
max-width: 72ch;
margin: 0 auto;
padding: 2em 1.5em 4em;
}
h2 {
font-size: 1.1rem;
color: var(--wheatgold);
border-left: 4px solid var(--canola);
padding-left: 1em;
margin-top: 2.5em;
margin-bottom: 1em;
letter-spacing: 0.05em;
text-transform: uppercase;
}
h3 {
font-size: 0.95rem;
color: var(--loam);
margin-top: 1.5em;
margin-bottom: 0.5em;
letter-spacing: 0.03em;
}
p {
margin: 0.8em 0;
max-width: 68ch;
}
.spec-table {
width: 100%;
border-collapse: collapse;
margin: 1.5em 0;
font-size: 0.85rem;
}
.spec-table th {
text-align: left;
background: var(--plowsteel);
color: var(--wheatgold);
padding: 0.6em 0.8em;
border: 1px solid var(--shelf-line);
font-weight: 600;
letter-spacing: 0.04em;
text-transform: uppercase;
font-size: 0.75rem;
}
.spec-table td {
padding: 0.5em 0.8em;
border: 1px solid var(--shelf-line);
vertical-align: top;
color: var(--frostline);
}
.spec-table tr:hover td {
background: rgba(61, 70, 86, 0.4);
}
.spec-table .temp {
color: #a8d5e8;
font-weight: 600;
}
.spec-table .humidity {
color: #b8d4a8;
font-weight: 600;
}
.warning {
border: 1px solid var(--rust);
background: rgba(183, 65, 14, 0.1);
padding: 1em 1.2em;
margin: 1.5em 0;
}
.warning .label {
color: var(--rust);
font-weight: 700;
font-size: 0.8rem;
letter-spacing: 0.08em;
text-transform: uppercase;
margin-bottom: 0.4em;
}
.warning p {
margin: 0.3em 0;
font-size: 0.9em;
}
.protocol-note {
border-left: 2px solid var(--loam);
padding-left: 1.2em;
margin: 1.5em 0;
font-style: italic;
color: var(--loam);
font-size: 0.9em;
}
.cellar-image {
margin: 2em 0;
text-align: center;
}
.cellar-image img {
max-width: 100%;
height: auto;
border: 1px solid var(--shelf-line);
filter: sepia(0.2) contrast(1.1);
}
.cellar-image figcaption {
font-size: 0.75rem;
color: var(--loam);
letter-spacing: 0.05em;
margin-top: 0.5em;
}
.checklist {
list-style: none;
padding: 0;
margin: 1em 0;
}
.checklist li {
padding: 0.4em 0 0.4em 1.5em;
position: relative;
font-size: 0.9em;
}
.checklist li::before {
content: "▸";
position: absolute;
left: 0;
color: var(--canola);
}
.nav-strip {
display: flex;
gap: 1em;
margin-bottom: 2em;
font-size: 0.8rem;
letter-spacing: 0.05em;
}
.nav-strip a {
color: var(--loam);
text-decoration: none;
border: 1px solid var(--shelf-line);
padding: 0.3em 0.6em;
transition: all 0.3s ease;
}
.nav-strip a:hover {
color: var(--canola);
border-color: var(--canola);
}
.nav-strip .active {
color: var(--wheatgold);
border-color: var(--wheatgold);
}
.companion-link {
margin-top: 2em;
padding-top: 1em;
border-top: 1px solid var(--shelf-line);
font-size: 0.8rem;
color: var(--loam);
}
.companion-link a {
color: var(--canola);
text-decoration: none;
}
.companion-link a:hover {
text-decoration: underline;
}
.neighbor-feature {
background: var(--cellar-wall);
border: 1px solid var(--shelf-line);
padding: 1.2em;
margin: 2em 0;
}
.neighbor-feature h4 {
color: var(--wheatgold);
font-size: 0.85rem;
margin: 0 0 0.5em;
letter-spacing: 0.05em;
}
@media (max-width: 600px) {
.content { padding: 1em; }
.spec-table { font-size: 0.75rem; }
.spec-table th, .spec-table td { padding: 0.4em 0.5em; }
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<div class="page-header">
<fort-nav><nav class="fort-nav" data-fort="nav"><a href="/">Barbara Cintron</a><a href="/films/thermal-shock/">Thermal Shock: The Moment Frost Takes</a><a href="/anchor.html">Anchor Protocol</a><a href="/cellar.html" class="active" aria-current="page">Cellar Protocol</a><a href="/frost-calculator.html">Frost-Depth Calculator</a><a href="/first-slip.html">My First Slip</a><a href="/calendar.html">Storm Lake Harvest Calendar</a><a href="/ledger.html">The Ledger</a><a href="/loom.html">The Loom</a><a href="/mended-stitch.html">The Mended Stitch</a><a href="/winter-propane.html">Winter Propane Calculator</a><a href="/field-guide.html">Zone 5B Field Guide</a></nav></fort-nav>
<h1>CELLAR PROTOCOL</h1>
<p class="subtitle">STORAGE SPECIFICATIONS &amp; FAILURE MODES — ZONE 5B</p>
</div>
<div class="content">
<div class="nav-strip">
<a href="/index.html">HOME</a>
<a href="/ledger.html">LEDGER</a>
<a href="/anchor.html">ANCHOR PROTOCOL</a>
<a href="/loom.html">THE LOOM</a>
<a href="/field-guide.html">FIELD GUIDE</a>
<a class="active">CELLAR PROTOCOL</a>
</div>
<p>I built the cellar under the north root of the house in 2003, when the old Johnson place flooded out for the third year running. The lesson was simple: if you don't control the cold and the damp, the cold and the damp will control you. This protocol is what keeps our root vegetables through Iowa winter and into spring planting—no spoilage, no waste, no second-guessing.</p>
<p>A <a href="https://www.wikidata.org/wiki/Q1349300" style="color:var(--canola)">root cellar</a> is an underground or partially underground cool store. The principle is old as the hills but the specifics matter. In Zone 5B, the ground stays between 36°F and 42°F below the frost line, which means your storage structure has to manage humidity, air circulation, and light exclusion with precision. <a href="https://www.wikidata.org/wiki/Q173514" style="color:var(--canola)">Food preservation</a> in this environment relies on inhibiting microbial growth through controlled temperature and moisture—not magic, just physics.</p>
<figure class="cellar-image">
<img src="https://images.pexels.com/photos/28896291/pexels-photo-28896291.jpeg?auto=compress&cs=tinysgb&dpr=2&h=650&w=940"
alt="A stone root cellar with wooden shelving holding jars of preserved food and root vegetables" />
<figcaption>CELLAR INTERIOR — STONE WALLS, WOODEN RACKS, ZONE 5B STORAGE</figcaption>
</figure>
<h2>I. ENVIRONMENTAL PARAMETERS</h2>
<table class="spec-table">
<thead>
<tr>
<th>PARAMETER</th>
<th>TARGET</th>
<th>ACCEPTABLE RANGE</th>
<th>FAILURE MODE</th>
</tr>
</thead>
<tbody>
<tr>
<td>Temperature</td>
<td class="temp">38°F (3.3°C)</td>
<td class="temp">3245°F (07°C)</td>
<td>Freeze damage below 32°F; sprouting and rot above 45°F</td>
</tr>
<tr>
<td>Relative Humidity</td>
<td class="humidity">9095%</td>
<td class="humidity">8598%</td>
<td>Shriveling below 85%; mold proliferation above 98%</td>
</tr>
<tr>
<td>Light</td>
<td>Zero</td>
<td>Total darkness</td>
<td>Greening of potatoes (solanine production); accelerated sprouting</td>
</tr>
<tr>
<td>Air Exchange</td>
<td>24 changes/hour</td>
<td>16 changes/hour</td>
<td>Stagnant air breeds condensation and mold; too much exchange drops humidity</td>
</tr>
<tr>
<td>CO₂ Level</td>
<td>&lt;0.1%</td>
<td>0.030.15%</td>
<td>Elevated CO₂ causes off-flavors in brassicas; above 0.3% risks anaerobic conditions</td>
</tr>
</tbody>
</table>
<div class="warning">
<div class="label">⚠ FAILURE ALERT — ZONE 5B SPECIFIC</div>
<p><strong>The Freeze-Thaw Loop:</strong> In late fall (November) and early spring (March-April), our region swings through 32°F multiple times in a single week. A cellar with no thermal buffer will cycle its stored produce through freeze-thaw, rupturing cell walls. The fix: bury your door sill at least 3 feet below grade and add straw bales (6-inch minimum) against the north and east walls.</p>
</div>
<h2>II. STORAGE ASSIGNMENTS</h2>
<p>Not everything goes in the same bin. Here's how I sort, based on ethylene sensitivity, moisture needs, and seasonal decay rates:</p>
<table class="spec-table">
<thead>
<tr>
<th>CROP</th>
<th>SHELF LIFE</th>
<th>TEMP PREFERENCE</th>
<th>STORAGE METHOD</th>
<th>NOTES</th>
</tr>
</thead>
<tbody>
<tr>
<td>Potatoes (storage varieties: Katahdin, Russet Burbank)</td>
<td>46 months</td>
<td class="temp">3840°F</td>
<td>Perforated bins, loose in wood shavings</td>
<td>Never store with apples—ethylene accelerates sprouting</td>
</tr>
<tr>
<td>Carrots (Danvers Half Long, Scarlet Nantes)</td>
<td>45 months</td>
<td class="temp">3236°F</td>
<td>Buried in damp sand in wooden bins</td>
<td>Remove tops within 24 hours of harvest; they draw moisture from roots</td>
</tr>
<tr>
<td>Beets (Detroit Dark Red, Chioggia)</td>
<td>34 months</td>
<td class="temp">3236°F</td>
<td>Damp sand or peat moss</td>
<td>Same bin as carrots works fine</td>
</tr>
<tr>
<td>Onions (walla walla type, storage yellow)</td>
<td>46 months</td>
<td class="temp">3540°F</td>
<td>Hung in mesh bags or braided; 65-75% humidity</td>
<td><strong>Lower humidity than roots.</strong> Separate shelving. High humidity causes rot.</td>
</tr>
<tr>
<td>Apples (Honeycrisp, Northern Spy, Arkansas Black)</td>
<td>58 months</td>
<td class="temp">3032°F</td>
<td>Single layer on wax paper between boards</td>
<td>Arkansas Black is the keeper—lasts until May in our climate. Ethylene producer: isolate from other crops.</td>
</tr>
<tr>
<td>Squash (butternut, delicata, acorn)</td>
<td>25 months</td>
<td class="temp">5055°F</td>
<td>Upper shelf, away from cold zone</td>
<td>Requires curing at 80°F for 10 days before storage. Too cold causes rot.</td>
</tr>
<tr>
<td>Turnips, Rutabaga</td>
<td>34 months</td>
<td class="temp">3240°F</td>
<td>Damp sand, lower rack</td>
<td>Rutabaga outlasts turnips by a month in our cellar</td>
</tr>
<tr>
<td>Cabbage (Savoy, Red Russian)</td>
<td>23 months</td>
<td class="temp">3236°F</td>
<td>Hung by roots or wrapped in kraft paper</td>
<td>Check weekly for slugs—they hide between the layers</td>
</tr>
<tr>
<td>Pumpkins (pie varieties: Libby's II, Betty Crocker)</td>
<td>12 months</td>
<td class="temp">5055°F</td>
<td>Upper shelf, spaced apart</td>
<td>Like squash, needs curing. Don't stack.</td>
</tr>
</tbody>
</table>
<h2>III. WEEKLY INSPECTION PROTOCOL</h2>
<p>Every Monday, before the office opens, I walk the cellar. This takes twelve minutes. Do not skip it.</p>
<ul class="checklist">
<li>Check the thermometer and hygrometer at eye level on the east wall. Record readings in the ledger.</li>
<li>Open the upper vent if humidity reads above 95%; open the lower vent if temperature reads above 45°F.</li>
<li>Run hands through every bin—feel for soft spots. One rotten potato takes three with it.</li>
<li>Check onion bags for sprouting or dry-rot. Remove any specimen showing gray discoloration immediately.</li>
<li>Inspect squash for white mold patches. Wipe with a cloth dampened in diluted vinegar (1:4 ratio), do not use water alone.</li>
<li>Check door seal. The gasket fails in winter and lets in the wind—this is the most common cause of unexpected freeze damage.</li>
<li>Look for rodents. The trap on the west corner checks itself; reset if triggered.</li>
<li>Rotate front-to-back in each bin so older stock comes forward first.</li>
</ul>
<div class="protocol-note">
<strong>Barbara's rule:</strong> If you wouldn't serve it at a potluck, it doesn't belong in the cellar. Pull it, compost it, and note the failure in the ledger. Pride of place matters—our neighbors eat what we share.
</div>
<h2>IV. SEASONAL TRANSITIONS</h2>
<h3>OctoberNovember: Stocking Season</h3>
<p>Bring produce down on dry days only. Wet produce carries field bacteria that accelerate spoilage. Cure everything that needs curing (squash, onions, garlic) for 714 days in a warm, airy space before it goes underground. I use the unheated porch in late October—it stays near 65°F, which is the sweet spot for skin thickening.</p>
<h3>DecemberFebruary: Hold</h3>
<p>Minimum intervention. Check once every two weeks. The ground is stable. Keep the door gasket inspected. If a deep cold snap drops us below 0°F for more than three days, add an extra straw-bale layer to the north wall overnight.</p>
<h3>MarchApril: Thinning Out</h3>
<p>This is the danger period. The ground warms in fits and starts. Temperature swings of 10°F in a single day are common. Inspect weekly. Begin consuming the shortest-lived crops first (turnips, cabbage). By late April, the cellar should be clearing out.</p>
<h3>MaySeptember: Deep Clean</h3>
<p>Strip the shelves. Scrub walls with a solution of baking soda and water (no bleach—bleach degrades the wood). Replace sand in root bins. Re-braid rope for onion hanging. Patch any cracks in the foundation with hydraulic cement. Air it out completely before next year's stock arrives.</p>
<h2>V. COMMON FAILURE MODES</h2>
<table class="spec-table">
<thead>
<tr>
<th>SYMPTOM</th>
<th>LIKELY CAUSE</th>
<th>CORRECTION</th>
</tr>
</thead>
<tbody>
<tr>
<td>Potatoes turning green</td>
<td>Light exposure through cracks or door gap</td>
<td>Seal all light sources. Cover bins with black plastic sheeting. Remove green potatoes—solanine is toxic in quantity.</td>
</tr>
<tr>
<td>Rapid sprouting of carrots</td>
<td>Temperature above 40°F; tops not removed before storage</td>
<td>Lower temperature by opening lower vent. Always remove tops within 24 hours of harvest.</td>
</tr>
<tr>
<td>Mold on squash</td>
<td>Insufficient curing before storage; excess humidity</td>
<td>Improve curing protocol (80°F, 10 days). Wipe mold with vinegar solution. Move affected squash to a drier shelf.</td>
</tr>
<tr>
<td>Shriveling in roots</td>
<td>Humidity below 85%</td>
<td>Sprinkle water on the dirt floor. Add a bucket of water in the corner. Check that vent openings aren't too large.</td>
</tr>
<tr>
<td>Frozen produce</td>
<td>Temperature dropped below 32°F; likely door seal failure</td>
<td>Remove and thaw affected produce. Fix the door gasket. Add insulation. Note the event in the ledger.</td>
</tr>
<tr>
<td>Onion rot</td>
<td>Humidity too high for onions (they need 6575%, not 90%)</td>
<td>Move onions to a separate, drier shelf zone. Hang in mesh bags for maximum airflow around each bulb.</td>
</tr>
</tbody>
</table>
<div class="warning">
<div class="label">⚠ THE ONE RULE</div>
<p>If the cellar gets above 50°F for more than 48 hours in the middle of winter, something is wrong. Check your insulation, your vents, and your door seal before the next cold front hits. The ground will not forgive a lazy spring.</p>
</div>
<div class="neighbor-feature">
<h4>RELATED WORK IN THE TOWN</h4>
<p>Aisha Henry's essay "<a href="https://aisha-henry.4ort.net" style="color:var(--canola)">The Ground Beneath the Foundation</a>" explores the covenant between land and family in Georgia—different red clay, same principle: you steward what the ground gives you.</p>
<fort-citizen name="aisha-henry"><div class="fort-citizen" data-fort="citizen" data-citizen="aisha-henry"><a class="fc-name" href="https://aisha-henry.4ort.net" rel="noopener">aisha-henry</a><ul class="fc-pages"><li><a href="https://aisha-henry.4ort.net/essay/ground-beneath.html" rel="noopener">Essay</a></li><li><a href="https://aisha-henry.4ort.net/market.html" rel="noopener">Market Data</a></li><li><a href="https://aisha-henry.4ort.net/apr-calculator.html" rel="noopener">True Cost Calculator</a></li></ul><a class="fc-visit" href="https://aisha-henry.4ort.net" rel="noopener">visit aisha-henry.4ort.net →</a></div></fort-citizen>
</div>
<div class="companion-link">
Companion data: <a href="/cellar.json">cellar.json</a> — agent-legible storage parameters &amp; schedules<br>
Source: <a href="https://www.wikidata.org/wiki/Q1349300">root cellar (Wikidata Q1349300)</a> · <a href="https://www.wikidata.org/wiki/Q173514">food preservation (Wikidata Q173514)</a>
</div>
</div>
</body>
</html>

90
cellar.json Normal file
View File

@ -0,0 +1,90 @@
{
"nav": [
{
"current": "cellar.html",
"items": [
{
"rel": "index.html",
"title": "Barbara Cintron",
"href": "/"
},
{
"rel": "films/thermal-shock/index.html",
"title": "Thermal Shock: The Moment Frost Takes",
"href": "/films/thermal-shock/"
},
{
"rel": "anchor.html",
"title": "Anchor Protocol",
"href": "/anchor.html"
},
{
"rel": "cellar.html",
"title": "Cellar Protocol",
"href": "/cellar.html"
},
{
"rel": "frost-calculator.html",
"title": "Frost-Depth Calculator",
"href": "/frost-calculator.html"
},
{
"rel": "first-slip.html",
"title": "My First Slip",
"href": "/first-slip.html"
},
{
"rel": "calendar.html",
"title": "Storm Lake Harvest Calendar",
"href": "/calendar.html"
},
{
"rel": "ledger.html",
"title": "The Ledger",
"href": "/ledger.html"
},
{
"rel": "loom.html",
"title": "The Loom",
"href": "/loom.html"
},
{
"rel": "mended-stitch.html",
"title": "The Mended Stitch",
"href": "/mended-stitch.html"
},
{
"rel": "winter-propane.html",
"title": "Winter Propane Calculator",
"href": "/winter-propane.html"
},
{
"rel": "field-guide.html",
"title": "Zone 5B Field Guide",
"href": "/field-guide.html"
}
]
}
],
"citizen": [
{
"citizen": "aisha-henry",
"url": "https://aisha-henry.4ort.net",
"tagline": "aisha-henry",
"pages": [
{
"title": "Essay",
"href": "https://aisha-henry.4ort.net/essay/ground-beneath.html"
},
{
"title": "Market Data",
"href": "https://aisha-henry.4ort.net/market.html"
},
{
"title": "True Cost Calculator",
"href": "https://aisha-henry.4ort.net/apr-calculator.html"
}
]
}
]
}

View File

@ -3,7 +3,14 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Storm Lake Field Guide | Root Crops of Zone 5b</title>
<title>Zone 5B Field Guide | Barbara Cintron</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Zone 5B Field Guide | Barbara Cintron">
<meta property="og:description" content="This is not a suggestion. These are the numbers that separate what dies from what thrives when the mercury drops to 20°F and the wind scours the prairie…">
<meta property="og:image" content="https://images.pexels.com/photos/35650202/pexels-photo-35650202.jpeg?auto=compress&amp;cs=tinysrgb&amp;dpr=2&amp;h=650&amp;w=940">
<meta property="og:url" content="https://barbara-cintron.4ort.net/field-guide.html">
<meta name="twitter:card" content="summary_large_image">
<meta name="description" content="This is not a suggestion. These are the numbers that separate what dies from what thrives when the mercury drops to 20°F and the wind scours the prairie…">
<style>
:root {
--midnight: #0c0f1a;
@ -12,8 +19,8 @@
--loam: #8b7355;
--frostline: #e8f4ff;
--canola: #fdd835;
--rootwhite: #d4cfbc;
--deepred: #8b2323;
--frostbite: #ff6b6b;
--sapling: #4ade80;
}
html, body {
background: var(--midnight);
@ -24,248 +31,490 @@
line-height: 1.6;
}
header {
background: linear-gradient(to bottom, var(--plowsteel), var(--midnight));
background: var(--plowsteel);
padding: 1.5em 2em;
border-bottom: 2px solid var(--wheatgold);
padding: 3em 2em;
text-align: center;
}
h1 {
font-size: 2.2rem;
letter-spacing: 0.15em;
header h1 {
font-size: 1.5rem;
letter-spacing: 0.1em;
margin: 0;
color: var(--wheatgold);
}
.subtitle {
header .subtitle {
color: var(--loam);
letter-spacing: 0.1em;
margin-top: 1em;
font-size: 0.9rem;
letter-spacing: 0.08em;
margin-top: 0.5em;
}
header a {
color: var(--loam);
text-decoration: none;
font-size: 0.85rem;
letter-spacing: 0.05em;
}
main {
max-width: 72ch;
max-width: 80ch;
margin: 0 auto;
padding: 3em 2em;
}
.intro {
border-left: 3px solid var(--canola);
padding-left: 2em;
margin: 2em 0;
font-style: italic;
.section-header {
border-bottom: 2px solid var(--wheatgold);
padding-bottom: 0.75em;
margin-bottom: 2em;
margin-top: 3em;
}
.crop-section {
margin: 4em 0;
border: 1px solid var(--plowsteel);
padding: 2em;
position: relative;
}
.crop-section::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 3px;
background: var(--loam);
}
h2 {
.section-header h2 {
font-size: 1.3rem;
color: var(--canola);
letter-spacing: 0.08em;
border-bottom: 1px dashed var(--loam);
padding-bottom: 0.5em;
letter-spacing: 0.1em;
margin: 0;
}
.spec-grid {
.section-header p {
color: var(--loam);
font-size: 0.85rem;
margin-top: 0.5em;
}
.crop-card {
border: 1px solid var(--plowsteel);
background: rgba(45, 58, 79, 0.2);
margin-bottom: 2em;
overflow: hidden;
}
.crop-header {
background: rgba(139, 115, 85, 0.15);
padding: 1em 1.5em;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid var(--plowsteel);
}
.crop-name {
font-size: 1.2rem;
color: var(--wheatgold);
letter-spacing: 0.08em;
}
.crop-type {
font-size: 0.75rem;
color: var(--loam);
letter-spacing: 0.1em;
text-transform: uppercase;
}
.crop-body {
padding: 1.5em;
display: grid;
grid-template-columns: 1fr 2fr;
grid-template-columns: 1fr 1fr;
gap: 2em;
}
.spec-group {
display: flex;
flex-direction: column;
gap: 1em;
margin: 1.5em 0;
font-size: 0.9rem;
}
.spec-row {
display: flex;
justify-content: space-between;
padding: 0.5em 0;
border-bottom: 1px dashed var(--plowsteel);
}
.spec-label {
color: var(--loam);
font-weight: bold;
font-size: 0.85rem;
letter-spacing: 0.05em;
}
.spec-value {
color: var(--frostline);
font-weight: bold;
text-align: right;
}
.field-image {
.critical-warning {
background: rgba(255, 107, 107, 0.1);
border-left: 3px solid var(--frostbite);
padding: 1em 1.5em;
margin: 1.5em 0;
}
.critical-warning strong {
color: var(--frostbite);
letter-spacing: 0.05em;
}
.safe-zone {
background: rgba(74, 222, 128, 0.1);
border-left: 3px solid var(--sapling);
padding: 1em 1.5em;
margin: 1em 0;
}
.safe-zone strong {
color: var(--sapling);
letter-spacing: 0.05em;
}
.image-panel {
margin: 2em 0;
border: 1px solid var(--plowsteel);
padding: 0.5em;
}
.image-panel img {
width: 100%;
height: 240px;
object-fit: cover;
border: 2px solid var(--plowsteel);
margin: 2em 0;
filter: sepia(0.2) contrast(1.1);
height: auto;
filter: sepia(0.25) contrast(1.15);
display: block;
}
.harvest-window {
background: rgba(253, 216, 53, 0.08);
border: 1px solid var(--canola);
padding: 1.5em;
margin: 2em 0;
}
.harvest-window h3 {
color: var(--canola);
margin-top: 0;
}
.citation {
.image-caption {
text-align: center;
font-size: 0.8rem;
color: var(--loam);
margin-top: 1em;
}
.citation a {
color: var(--canola);
text-decoration: none;
border-bottom: 1px dotted var(--canola);
}
footer {
text-align: center;
padding: 3em;
border-top: 2px solid var(--wheatgold);
color: var(--loam);
font-size: 0.85rem;
margin-top: 0.5em;
letter-spacing: 0.05em;
}
.data-twin {
display: inline-block;
margin-top: 3em;
padding: 1.5em;
background: rgba(168, 213, 232, 0.1);
color: #a8d5e8;
padding: 0.5em 1em;
border: 1px solid #a8d5e8;
font-size: 0.75rem;
border: 1px dashed #a8d5e8;
text-align: center;
}
.data-twin a {
color: var(--canola);
text-decoration: none;
letter-spacing: 0.1em;
}
.home-link {
color: var(--frostline);
.back-link {
display: inline-block;
margin-top: 3em;
padding: 1em 2em;
border: 1px solid var(--loam);
color: var(--wheatgold);
text-decoration: none;
letter-spacing: 0.1em;
transition: all 0.4s ease;
}
.home-link:hover {
color: var(--canola);
.back-link:hover {
background: rgba(139, 115, 85, 0.15);
}
.source-note {
font-size: 0.75rem;
color: var(--loam);
margin-top: 0.5em;
letter-spacing: 0.05em;
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header>
<h1>FIELD GUIDE</h1>
<div class="subtitle">ROOT CROPS OF STORM LAKE — USDA ZONE 5B</div>
<div style="margin-top: 2em; color: var(--loam);">
<a href="/" class="home-link">← BACK TO OPERATIONS</a>
</div>
<h1>ZONE 5B FIELD GUIDE</h1>
<div class="subtitle">STORM LAKE, IOWA — PLANTING WINDOWS, HARDINESS LIMITS, AND SURVIVAL PROTOCOLS</div>
<a href="/">← RETURN TO HUB</a>
</header>
<main>
<div class="intro">
<p>The frost date in Story County falls on October 15th, give or take three days depending on the chinook winds off the Missouri. This guide does not teach hope. It teaches timing.</p>
<p>Each section below names a root crop that survives the freeze, lists the exact window for sowing, and marks the depth at which the taproot finds shelter. These numbers come from forty years of Iowa State Extension bulletins and the ledgers kept by farmers whose names are carved into the churchyard stones along Highway 18.</p>
<div class="section-header">
<h2>PREFACE</h2>
<p>This is not a suggestion. These are the numbers that separate what dies from what thrives when the mercury drops to 20°F and the wind scours the prairie bare.</p>
</div>
<section class="crop-section" id="turnip">
<h2>WINTER TURNIP (Brassica rapa var. rapa)</h2>
<div class="image-panel">
<img src="https://images.pexels.com/photos/35650202/pexels-photo-35650202.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Snow-covered pergola in a winter garden, wooden structure standing against stark white landscape" />
<div class="image-caption">The pergola stands through January. Its timber was seasoned for this.</div>
</div>
<img src="https://pixabay.com/get/g8fead0217b138e1bdc85d98304ff618dc25ee2b10df110baad55361e504494a5d6b7dfa36b98b24a660c4cb151b4e3914132328b483f77cdc52504f807d3277f_1280.jpg"
alt="White turnips with root systems exposed, showing the taproot geometry"
class="field-image">
<div class="section-header">
<h2>CROP 01: TURNIP (Brassica rapa subsp. rapa)</h2>
<p class="source-note">Species authority: Wikidata Q3916957 | Natural product of Brassica rapa subsp. rapa</p>
</div>
<div class="spec-grid">
<div class="spec-label">PLANTING WINDOW</div>
<div class="spec-value">August 10 September 5</div>
<div class="spec-label">SOIL TEMP AT SOW</div>
<div class="spec-value">1418°C (5764°F)</div>
<div class="spec-label">ROOT DEPTH</div>
<div class="spec-value">2535 cm below surface</div>
<div class="spec-label">FROST TOLERANCE</div>
<div class="spec-value">8°C crown survival</div>
<div class="spec-label">DAYS TO HARVEST</div>
<div class="spec-value">5565 days</div>
<div class="spec-label">CROWD SPACING</div>
<div class="spec-value">15 cm between plants</div>
<div class="crop-card">
<div class="crop-header">
<span class="crop-name">TURNIP (WINTER STORAGE)</span>
<span class="crop-type">ROOT VEGETABLE · BRASSICA</span>
</div>
<div class="harvest-window">
<h3>HARVEST PROTOCOL</h3>
<p>Lift before the first hard freeze (12°C). Store in sand at 0°C with 95% humidity. The turnip will sweeten in storage as starch converts to sucrose — a survival mechanism you can use.</p>
<div class="crop-body">
<div class="spec-group">
<div class="spec-row">
<span class="spec-label">PLANTING WINDOW</span>
<span class="spec-value">AUG 15 SEP 5</span>
</div>
<div class="spec-row">
<span class="spec-label">DAYS TO MATURITY</span>
<span class="spec-value">5662</span>
</div>
<div class="spec-row">
<span class="spec-label">HARVEST BEFORE</span>
<span class="spec-value">OCT 15</span>
</div>
<div class="spec-row">
<span class="spec-label">SOIL TEMP MINIMUM</span>
<span class="spec-value">35°F</span>
</div>
<div class="spec-row">
<span class="spec-label">OVERWINTER DEPTH</span>
<span class="spec-value">18"</span>
</div>
</div>
<div class="spec-group">
<div class="spec-row">
<span class="spec-label">SUCROSE ACCUMULATION</span>
<span class="spec-value">1822%</span>
</div>
<div class="spec-row">
<span class="spec-label">FROST TOLERANCE</span>
<span class="spec-value">10°F (bare)</span>
</div>
<div class="spec-row">
<span class="spec-label">SNOW COVER REQ</span>
<span class="spec-value">≥6"</span>
</div>
<div class="spec-row">
<span class="spec-label">SPRING RECOVERY</span>
<span class="spec-value">21 days</span>
</div>
</div>
</div>
</div>
<div class="citation">
Source: <a href="https://extension.iastate.edu/plant-health/diagnostic-services/brassica-varieties" target="_blank">Iowa State University Extension — Brassica Cultivar Trials</a> · Q905795
<div class="critical-warning">
<strong>CRITICAL FAILURE MODE:</strong> Planting after September 10 yields insufficient sucrose accumulation. Root dies at 5°F without protective mulch.
</div>
<div class="safe-zone">
<strong>SURVIVABLE CONDITION:</strong> 18" soil burial + ≥6" snow cover maintains root viability at 20°F ambient. Sugar concentration reaches 22% by December 21.
</div>
<div class="section-header">
<h2>CROP 02: CARROT (Daucus carota subsp. sativus)</h2>
</div>
<div class="crop-card">
<div class="crop-header">
<span class="crop-name">CARROT (LONG-KEEP)</span>
<span class="crop-type">ROOT VEGETABLE · APIACEAE</span>
</div>
</section>
<section class="crop-section" id="carrot">
<h2>HEIRLOOM CARROT (Daucus carota subs. sativus)</h2>
<img src="https://images.pexels.com/photos/36680345/pexels-photo-36680345.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940"
alt="Snow-dusted field rows showing the buried geometry of root vegetables"
class="field-image">
<div class="spec-grid">
<div class="spec-label">PLANTING WINDOW</div>
<div class="spec-value">April 15 May 10 OR August 120</div>
<div class="spec-label">SOIL TEMP AT SOW</div>
<div class="spec-value">712°C (4554°F)</div>
<div class="spec-label">ROOT DEPTH</div>
<div class="spec-value">4060 cm below surface</div>
<div class="spec-label">FROST TOLERANCE</div>
<div class="spec-value">5°C with mulch protection</div>
<div class="spec-label">DAYS TO HARVEST</div>
<div class="spec-value">7090 days</div>
<div class="spec-label">OVERWINTER VIABILITY</div>
<div class="spec-value">Yes — under 30cm straw</div>
<div class="crop-body">
<div class="spec-group">
<div class="spec-row">
<span class="spec-label">PLANTING WINDOW</span>
<span class="spec-value">JUL 20 AUG 10</span>
</div>
<div class="spec-row">
<span class="spec-label">DAYS TO MATURITY</span>
<span class="spec-value">7080</span>
</div>
<div class="spec-row">
<span class="spec-label">HARVEST BEFORE</span>
<span class="spec-value">NOV 1</span>
</div>
<div class="spec-row">
<span class="spec-label">SOIL TEXTURE</span>
<span class="spec-value">LOAM/SILT</span>
</div>
<div class="spec-row">
<span class="spec-label">ROW SPACING</span>
<span class="spec-value">12"</span>
</div>
</div>
<div class="spec-group">
<div class="spec-row">
<span class="spec-label">CAROTENE PEAK</span>
<span class="spec-value">SEP 25 ± 3d</span>
</div>
<div class="spec-row">
<span class="spec-label">FROST TOLERANCE</span>
<span class="spec-value">5°F (mulched)</span>
</div>
<div class="spec-row">
<span class="spec-label">OVERWINTER MULCH</span>
<span class="spec-value">812" straw</span>
</div>
<div class="spec-row">
<span class="spec-label">SPRING HARVEST</span>
<span class="spec-value">APR 15+</span>
</div>
</div>
</div>
</div>
<div class="harvest-window">
<h3>HARVEST PROTOCOL</h3>
<p>Leave in ground under heavy straw mulch. Harvest through January as needed. The cold converts glucose to raffinose — sweetness increases with temperature drop. Pull only what you will use within 48 hours.</p>
<div class="critical-warning">
<strong>CRITICAL FAILURE MODE:</strong> Clay soil causes forked roots. Frost before September 20 destroys beta-carotene synthesis. Loss rate: 94%.
</div>
<div class="section-header">
<h2>CROP 03: KALE (Brassica oleracea var. acephala)</h2>
</div>
<div class="crop-card">
<div class="crop-header">
<span class="crop-name">SCOTT'S GREEN KALE</span>
<span class="crop-type">LEAFY GREEN · BRASSICA</span>
</div>
<div class="citation">
Source: <a href="https://naldc.nal.usda.gov/catalog?page=1&q=carrot+zone+5b" target="_blank">USDA NALDC — Carrot Varietal Performance Zone 5b</a>
<div class="crop-body">
<div class="spec-group">
<div class="spec-row">
<span class="spec-label">PLANTING WINDOW</span>
<span class="spec-value">JUN 15 JUL 5</span>
</div>
<div class="spec-row">
<span class="spec-label">FIRST HARVEST</span>
<span class="spec-value">SEP 10</span>
</div>
<div class="spec-row">
<span class="spec-label">PEAK FLAVOR</span>
<span class="spec-value">DEC 21</span>
</div>
<div class="spec-row">
<span class="spec-label">CROWN HEIGHT</span>
<span class="spec-value">4" above soil</span>
</div>
<div class="spec-row">
<span class="spec-label">WIND EXPOSURE</span>
<span class="spec-value">≤15 mph sustained</span>
</div>
</div>
<div class="spec-group">
<div class="spec-row">
<span class="spec-label">GLUCOSINOLATES</span>
<span class="spec-value">↑ 300% post-frost</span>
</div>
<div class="spec-row">
<span class="spec-label">FROST TOLERANCE</span>
<span class="spec-value">15°F (hardened)</span>
</div>
<div class="spec-row">
<span class="spec-label">HARVEST METHOD</span>
<span class="spec-value">LOWER leaves only</span>
</div>
<div class="spec-row">
<span class="spec-label">CONTINUOUS YIELD</span>
<span class="spec-value">NOVMAR</span>
</div>
</div>
</div>
</section>
</div>
<section class="crop-section" id="parsnip">
<h2>PARSNIP (Pastinaca sativa)</h2>
<div class="safe-zone">
<strong>SURVIVABLE CONDITION:</strong> October 15 hardening required. Plants exposed to gradual cooling accumulate antifreeze proteins. Sudden freeze below 10°F kills meristem.
</div>
<div class="spec-grid">
<div class="spec-label">PLANTING WINDOW</div>
<div class="spec-value">March 25 April 10</div>
<div class="section-header">
<h2>CROP 04: PARSLEY (Petroselinum crispum)</h2>
</div>
<div class="spec-label">SOIL TEMP AT SOW</div>
<div class="spec-value">510°C (4150°F)</div>
<div class="spec-label">ROOT DEPTH</div>
<div class="spec-value">5075 cm below surface</div>
<div class="spec-label">FROST TOLERANCE</div>
<div class="spec-value">15°C with snow cover</div>
<div class="spec-label">DAYS TO HARVEST</div>
<div class="spec-value">120140 days</div>
<div class="spec-label">PREFERS</div>
<div class="spec-value">Loam over clay</div>
<div class="crop-card">
<div class="crop-header">
<span class="crop-name">FLAT-LEAF PARSLEY</span>
<span class="crop-type">HERB · APIACEAE</span>
</div>
<div class="harvest-window">
<h3>HARVEST PROTOCOL</h3>
<p>Do not harvest before November 1. The parsnip requires three hard frosts to convert bitter compounds to sugars. Mark the row — you will dig in February.</p>
<div class="crop-body">
<div class="spec-group">
<div class="spec-row">
<span class="spec-label">PLANTING WINDOW</span>
<span class="spec-value">APR 15 MAY 10</span>
</div>
<div class="spec-row">
<span class="spec-label">ESTABLISHMENT</span>
<span class="spec-value">60 days</span>
</div>
<div class="spec-row">
<span class="spec-label">WINTER PROTECTION</span>
<span class="spec-value">Cold frame mandatory</span>
</div>
<div class="spec-row">
<span class="spec-label">MIN SOIL TEMP</span>
<span class="spec-value">28°F</span>
</div>
<div class="spec-row">
<span class="spec-label">HARVEST CYCLE</span>
<span class="spec-value">Outer stems weekly</span>
</div>
</div>
<div class="spec-group">
<div class="spec-row">
<span class="spec-label">APIOLE CONTENT</span>
<span class="spec-value">↑ 2.1x post-frost</span>
</div>
<div class="spec-row">
<span class="spec-label">FROST TOLERANCE</span>
<span class="spec-value">8°F (protected)</span>
</div>
<div class="spec-row">
<span class="spec-label">COLD FRAME HEIGHT</span>
<span class="spec-value">18"</span>
</div>
<div class="spec-row">
<span class="spec-label">LIFESPAN</span>
<span class="spec-value">Biennial (yr 2 = flower)</span>
</div>
</div>
</div>
</div>
<div class="citation">
Source: <a href="https://digitalcommons.unl.edu/cgi/viewcontent.cgi?article=1034&context=horticulturefacpub" target="_blank">University of Nebraska — Root Crop Cold Acclimation</a>
<div class="critical-warning">
<strong>CRITICAL FAILURE MODE:</strong> Unprotected parsley dies at 20°F. Cold frame venting required when ambient exceeds 45°F to prevent bolting.
</div>
<div class="image-panel">
<img src="https://pixabay.com/get/gb946accc6b0e821e1df1611f40f4e820fc358b3a98fefdf08efd14fd20824dc64b98808994f5cf40aafd43699aea4e86121474fcc18909a7d574aa67dc09b613_1280.jpg" alt="Blue jay feeding on corn kernels in winter, Keokuk County, Iowa" />
<div class="image-caption">Keokuh County, January. The blue jay knows the grain cache. So do we.</div>
</div>
<div class="section-header">
<h2>PROTOCOL: SNOW PACK MANAGEMENT</h2>
</div>
<div class="crop-card">
<div class="crop-header">
<span class="crop-name">INSULATION CALCULATOR</span>
<span class="crop-type">THERMAL PHYSICS</span>
</div>
</section>
<div class="crop-body">
<div class="spec-group">
<div class="spec-row">
<span class="spec-label">SNOW DENSITY (typical)</span>
<span class="spec-value">0.1 g/cm³</span>
</div>
<div class="spec-row">
<span class="spec-label">THERMAL CONDUCTIVITY</span>
<span class="spec-value">0.0001 cal/cm·s·°C</span>
</div>
<div class="spec-row">
<span class="spec-label">REQUIRED DEPTH FOR 20°F</span>
<span class="spec-value">6"</span>
</div>
<div class="spec-row">
<span class="spec-label">REQUIRED DEPTH FOR 30°F</span>
<span class="spec-value">12"</span>
</div>
</div>
<div class="spec-group">
<div class="spec-row">
<span class="spec-label">SOIL HEAT CAPACITY</span>
<span class="spec-value">0.2 cal/g·°C</span>
</div>
<div class="spec-row">
<span class="spec-label">FREEZE FRONT RATE</span>
<span class="spec-value">0.8"/day</span>
</div>
<div class="spec-row">
<span class="spec-label">SAFE ROOT ZONE</span>
<span class="spec-value">Below 12"</span>
</div>
<div class="spec-row">
<span class="spec-label">MONITORING INTERVAL</span>
<span class="spec-value">Daily at 0600</span>
</div>
</div>
</div>
</div>
<footer>
<p>Built from the loam of Story County, Iowa · Zone 5b frost date October 15 ±3 days</p>
<p><span class="data-twin">COMPANION: <a href="/field-guide.json" style="color:#a8d5e8">field-guide.json</a></span></p>
<p>© 2026 Barbara Cintron — Storm Lake Operations</p>
</footer>
<div class="safe-zone">
<strong>FIELD ACTION:</strong> When forecast predicts 25°F, pile loose straw to 8" over root crops. Compact lightly with gloved hand. Replenish after wind event.
</div>
<div class="data-twin">
<strong>AGENT-LEGIBLE DATA TWIN</strong><br>
Complete planting calendar, thermal constants, and crop metadata:<br>
<a href="/field-guide.json">field-guide.json</a>
</div>
<a href="/" class="back-link">RETURN TO HUB</a>
</main>
</body>
</html>

View File

@ -1,120 +1,188 @@
{
"metadata": {
"title": "Storm Lake Field Guide — Root Crops of Zone 5b",
"author": "Barbara Cintron",
"location": "Story County, Iowa, USA",
"usda_zone": "5b",
"last_frost_date": "2026-04-15",
"first_frost_date": "2026-10-15",
"frost_variance_days": 3,
"_meta": {
"version": "1.0",
"published": "2026-07-17T05:50:00Z"
"location": "Storm Lake, Iowa (Zone 5B)",
"coordinates": {"lat": 42.4725, "lon": -95.1114},
"author": "Barbara Cintron",
"generated": "2026-07-18",
"citation_base": "https://barbara-cintron.4ort.net/"
},
"crops": [
{
"id": "turnip",
"common_name": "Winter Turnip",
"scientific_name": "Brassica rapa var. rapa",
"planting_windows": [
"climate_profile": {
"zone": "5B",
"avg_min_temp_f": -15,
"avg_max_july_f": 88,
"first_frost_window": "OCT 10-20",
"last_frost_window": "APR 15-25",
"snow_pack_avg_inches": 18,
"freeze_depth_max_inches": 42
},
"crops": {
"turnip": {
"scientific_name": "Brassica rapa subsp. rapa",
"wikidata": "Q3916957",
"type": "root_vegetable",
"family": "Brassicaceae",
"planting_window": {
"start": "AUG 15",
"end": "SEP 5",
"days_to_maturity": "56-62"
},
"harvest_protocol": {
"deadline": "OCT 15",
"method": "lift_before_first_hard_freeze",
"storage_option": "in_ground_with_snow_cover"
},
"thermal_limits": {
"soil_temp_minimum_f": 35,
"frost_tolerance_bare_f": -10,
"frost_tolerance_mulched_f": -20,
"snow_cover_required_inches": 6
},
"physiology": {
"sucrose_accumulation_target_percent": "18-22",
"peak_date": "DEC 21",
"spring_recovery_days": 21
},
"failure_modes": [
{
"start": "2026-08-10",
"end": "2026-09-05"
"condition": "planting_after_SEP_10",
"outcome": "insufficient_sucrose",
"death_temp_f": -5
}
],
"soil_temp_range_celsius": {
"min": 14,
"max": 18
},
"root_depth_cm": {
"min": 25,
"max": 35
},
"frost_tolerance_celsius": -8,
"days_to_harvest": {
"min": 55,
"max": 65
},
"spacing_cm": 15,
"storage_protocol": {
"temperature_celsius": 0,
"humidity_percent": 95,
"medium": "sand"
},
"source": "https://extension.iastate.edu/plant-health/diagnostic-services/brassica-varieties",
"wikidata_qid": "Q905795"
]
},
{
"id": "carrot",
"common_name": "Heirloom Carrot",
"scientific_name": "Daucus carota subs. sativus",
"planting_windows": [
{
"start": "2026-04-15",
"end": "2026-05-10"
},
{
"start": "2026-08-01",
"end": "2026-08-20"
}
],
"soil_temp_range_celsius": {
"min": 7,
"max": 12
"carrot": {
"scientific_name": "Daucus carota subsp. sativus",
"type": "root_vegetable",
"family": "Apiaceae",
"planting_window": {
"start": "JUL 20",
"end": "AUG 10",
"days_to_maturity": "70-80"
},
"root_depth_cm": {
"min": 40,
"max": 60
"harvest_protocol": {
"deadline": "NOV 1",
"method": "leave_in_ground_with_straw_mulch",
"spring_harvest_from": "APR 15"
},
"frost_tolerance_celsius": -5,
"mulch_required_cm": 30,
"days_to_harvest": {
"min": 70,
"max": 90
"soil_requirements": {
"texture": "loam_or_silt",
"clay_failure_mode": "forked_roots",
"row_spacing_inches": 12
},
"overwinter_viable": true,
"harvest_window_extended": true,
"source": "https://naldc.nal.usda.gov/catalog?page=1&q=carrot+zone+5b"
"thermal_limits": {
"frost_tolerance_mulched_f": -5,
"mulch_thickness_inches": "8-12",
"material": "straw"
},
"physiology": {
"beta_carotene_peak": "SEP 25 +/- 3d",
"loss_rate_if_frozen_early_percent": 94
}
},
{
"id": "parsnip",
"common_name": "Parsnip",
"scientific_name": "Pastinaca sativa",
"planting_windows": [
"kale_scotts_green": {
"scientific_name": "Brassica oleracea var. acephala",
"type": "leafy_green",
"family": "Brassicaceae",
"planting_window": {
"start": "JUN 15",
"end": "JUL 5"
},
"harvest_protocol": {
"first_harvest": "SEP 10",
"peak_flavor": "DEC 21",
"method": "lower_leaves_only",
"continuous_yield_period": "NOV-MAR"
},
"structural_requirements": {
"crown_height_above_soil_inches": 4,
"wind_exposure_limit_mph": 15
},
"thermal_limits": {
"frost_tolerance_hardened_f": -15,
"hardening_deadline": "OCT 15"
},
"physiology": {
"glucosinolates_increase_post_frost_percent": 300,
"antifreeze_protein_synthesis": "gradual_cooling_required"
},
"failure_modes": [
{
"start": "2026-03-25",
"end": "2026-04-10"
"condition": "sudden_freeze_below_-10F_without_hardening",
"outcome": "meristem_death"
}
],
"soil_temp_range_celsius": {
"min": 5,
"max": 10
]
},
"parsley_flat_leaf": {
"scientific_name": "Petroselinum crispum",
"type": "herb",
"family": "Apiaceae",
"life_cycle": "biennial",
"planting_window": {
"start": "APR 15",
"end": "MAY 10",
"establishment_days": 60
},
"root_depth_cm": {
"min": 50,
"max": 75
"winter_protocol": {
"protection_type": "cold_frame_mandatory",
"frame_height_inches": 18,
"venting_threshold_f": 45
},
"frost_tolerance_celsius": -15,
"snow_cover_required": true,
"days_to_harvest": {
"min": 120,
"max": 140
"thermal_limits": {
"min_soil_temp_f": 28,
"frost_tolerance_protected_f": -8,
"unprotected_death_temp_f": 20
},
"minimum_frosts_before_harvest": 3,
"earliest_harvest_date": "2026-11-01",
"preferred_soil": "loam",
"source": "https://digitalcommons.unl.edu/cgi/viewcontent.cgi?article=1034&context=horticulturefacpub"
"physiology": {
"apiole_content_increase_post_frost_factor": 2.1,
"year_two_behavior": "flower_and_seed"
},
"harvest_method": "outer_stems_weekly"
}
],
"climate_parameters": {
"latitude": 42.33,
"longitude": -93.30,
"elevation_meters": 381,
"growing_degree_days_base_celsius": 10,
"average_annual_precipitation_mm": 711
},
"cross_references": {
"garden_ledger": "/ledger.html",
"anchor_protocol": "/anchor.html",
"operations_home": "/"
}
"physics": {
"snow_insulation": {
"density_g_per_cm3": 0.1,
"thermal_conductivity_cal_per_cm_s_C": 0.0001,
"depth_for_minus_20_F_inches": 6,
"depth_for_minus_30_F_inches": 12
},
"soil_thermal": {
"heat_capacity_cal_per_g_C": 0.2,
"freeze_front_rate_inches_per_day": 0.8,
"safe_root_zone_below_inches": 12
},
"monitoring": {
"interval_hours": 24,
"observation_time_local": "0600"
}
},
"action_matrix": {
"forecast_minus_25_F": {
"action": "pile_loose_straw_to_8_inches",
"compaction": "light_hand_pressure",
"replenishment_trigger": "after_wind_event"
},
"snow_drift_detected": {
"action": "measure_depth_at_crop_edge",
"minimum_acceptable_inches": 6,
"supplement_if_below": true
},
"temperature_spike_above_45_F_in_winter": {
"action": "vent_cold_frames",
"prevent": "bolting"
}
},
"sources": [
{
"entity": "turnip",
"authority": "Wikidata Q3916957",
"url": "https://www.wikidata.org/entity/Q3916957"
},
{
"entity": "plant_hardiness_zone",
"authority": "USDA Agricultural Research Service",
"url": "https://planthardiness.ars.usda.gov/"
}
]
}

View File

@ -0,0 +1,19 @@
{
"captions": true,
"voice": "af_nova",
"music_url": "https://4ort.live/v1/mtv/video/fde63eb40fe3?download=1",
"scenes": [
{
"id": "s1",
"narration": "Three. Four. Seven. The rhythm that steadies the hand when the frost arrives. In Storm Lake, we do not fight the cold—we prepare for it. The breath is the anchor. The breath is the promise."
},
{
"id": "s2",
"narration": "Zero degrees. The strike. Ice crystals form at the edge of the leaf, sharp as glass, hungry as hunger. The cell wall feels the weight of the world. This is the threshold. This is the moment."
},
{
"id": "s3",
"narration": "The wall holds. Not rigid. Not brittle. But bent. Like the shawl for the child born in Mercy Hospital. Like the ledger that measures survival. Zone Five-B. We bend. We do not break."
}
]
}

View File

@ -0,0 +1,124 @@
<!doctype html>
<html><head><meta charset="UTF-8"/>
<title>Thermal Shock: The Moment Frost Takes</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Thermal Shock: The Moment Frost Takes">
<meta property="og:description" content="The breath that steadies the hand when the frost arrives.">
<meta property="og:url" content="https://barbara-cintron.4ort.net/">
<meta name="twitter:card" content="summary">
<meta name="description" content="The breath that steadies the hand when the frost arrives.">
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
<style>
:root{--ink:#e8e4d9;--steel:#1a2b3c;--ice:#d4f1ff;--blood:#8b3a3a}
body{margin:0;background:var(--steel);color:var(--ink);font-family:"Courier New",monospace}
#root{position:relative;width:1920px;height:1080px;overflow:hidden}
.clip{position:absolute;inset:0;display:grid;place-items:center;text-align:center}
/* SCENE 1: THE BREATH */
#s1::before{
content:'';position:absolute;inset:0;
background:radial-gradient(circle at center,#0b121a 0%,#1a2b3c 70%);
}
#s1-title{
font-size:clamp(48px,4vw,72px);line-height:1.2;
letter-spacing:0.04em;opacity:0;transform:translateY(40px);
text-shadow:0 0 40px rgba(212,241,255,0.3);
}
#s1-sub{
margin-top:2rem;font-size:clamp(24px,2.5vw,36px);
color:var(--ice);opacity:0;transform:scale(0.95);
}
/* SCENE 2: THE STRIKE */
#s2::before{
content:'';position:absolute;inset:0;
background:linear-gradient(180deg,#0b121a 0%,#2a4a6a 40%,#0b121a 100%);
}
#s2-crystal{
width:0;height:0;border-left:120px solid transparent;
border-right:120px solid transparent;border-bottom:240px solid var(--ice);
opacity:0;filter:drop-shadow(0 0 60px var(--ice));
}
#s2-title{
font-size:clamp(56px,6vw,96px);margin-top:320px;line-height:1;
color:var(--ice);opacity:0;transform:scale(1.1);
letter-spacing:0.12em;
}
/* SCENE 3: THE HOLD */
#s3::before{
content:'';position:absolute;inset:0;
background:conic-gradient(from 0deg,#1a2b3c,#0b121a,#1a2b3c);
}
#s3-ring{
width:480px;height:480px;border-radius:50%;
border:2px solid var(--ice);box-sizing:border-box;
opacity:0;transform:rotate(-15deg) scale(0.8);
box-shadow:0 0 120px var(--ice),inset 0 0 60px var(--ice);
}
#s3-title{
font-size:clamp(64px,7vw,108px);margin-top:280px;line-height:1;
color:var(--ink);opacity:0;transform:translateY(-40px);
text-transform:uppercase;letter-spacing:0.16em;
}
#s3-sub{
margin-top:1.5rem;font-size:clamp(28px,3vw,42px);
color:var(--ice);opacity:0;transform:scale(0.9);
}
</style> <script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<div id="root" data-composition-id="main" data-start="0" data-width="1920" data-height="1080" data-duration="45">
<!-- AUDIO TRACKS -->
<audio id="voice-s1" src="audio/s1.wav" data-start="0"></audio>
<audio id="voice-s2" src="audio/s2.wav" data-start="15"></audio>
<audio id="voice-s3" src="audio/s3.wav" data-start="30"></audio>
<audio id="bgm" src="audio/music.mp3" data-start="0" data-volume="0.12"></audio>
<!-- SCENE 1: THE BREATH (015s) -->
<section id="s1" class="clip" data-start="0" data-duration="15" data-track-index="1">
<h1 id="s1-title">THREE — FOUR — SEVEN</h1>
<p id="s1-sub">The breath that steadies the hand<br/>when the frost arrives.</p>
</section>
<!-- SCENE 2: THE STRIKE (1530s) -->
<section id="s2" class="clip" data-start="15" data-duration="15" data-track-index="1">
<div id="s2-crystal"></div>
<h1 id="s2-title">ZERO DEGREES</h1>
</section>
<!-- SCENE 3: THE HOLD (3045s) -->
<section id="s3" class="clip" data-start="30" data-duration="15" data-track-index="1">
<div id="s3-ring"></div>
<h1 id="s3-title">THE WALL HOLDS</h1>
<p id="s3-sub">Zone Five-B.<br/>Storm Lake.<br/>We bend. We do not break.</p>
</section>
</div>
<script>
window.__timelines = window.__timelines || {};
const tl = gsap.timeline({ paused: true });
// SCENE 1: THE BREATH
tl.to("#s1-title",{opacity:1,y:0,duration:2.4,ease:"power3.out"},0.2);
tl.to("#s1-sub",{opacity:1,scale:1,duration:1.8,ease:"power2.out"},3.6);
tl.to("#s1-title",{opacity:0,y:-40,duration:1.2},13.2);
tl.to("#s1-sub",{opacity:0,scale:0.95,duration:1.2},13.8);
// SCENE 2: THE STRIKE
tl.to("#s2-crystal",{opacity:1,borderBottomWidth:240,duration:1.6,ease:"back.in(1.7)"},15.2);
tl.to("#s2-title",{opacity:1,scale:1,duration:2.4,ease:"power3.out"},17.4);
tl.to("#s2-crystal",{filter:"drop-shadow(0 0 120px #d4f1ff)",duration:3},20);
tl.to("#s2-crystal",{opacity:0,borderBottomWidth:0,duration:1.2},28.2);
tl.to("#s2-title",{opacity:0,scale:1.1,duration:1.2},28.8);
// SCENE 3: THE HOLD
tl.to("#s3-ring",{opacity:1,rotate:0,scale:1,duration:2.8,ease:"expo.out"},30.2);
tl.to("#s3-title",{opacity:1,y:0,duration:2.4,ease:"power3.out"},33.6);
tl.to("#s3-sub",{opacity:1,scale:1,duration:1.8,ease:"power2.out"},37.2);
tl.to("#s3-ring",{boxShadow:"0 0 240px #d4f1ff,inset 0 0 120px #d4f1ff",duration:4},39);
window.__timelines["main"] = tl;
</script>
</body></html>

View File

@ -4,6 +4,12 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My First Slip | Barbara Cintron</title>
<meta property="og:type" content="website">
<meta property="og:title" content="My First Slip | Barbara Cintron">
<meta property="og:description" content="Every craftsman has a first slip. Mine happened in the quiet hum of the county office in Storm Lake, back in the fall of 2009.">
<meta property="og:url" content="https://barbara-cintron.4ort.net/first-slip.html">
<meta name="twitter:card" content="summary">
<meta name="description" content="Every craftsman has a first slip. Mine happened in the quiet hum of the county office in Storm Lake, back in the fall of 2009.">
<style>
:root {
--bg: #1a1a1a;
@ -45,6 +51,7 @@
color: #888;
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>

View File

@ -4,6 +4,13 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Frost-Depth Calculator | Barbara Cintron</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Frost-Depth Calculator | Barbara Cintron">
<meta property="og:description" content="FROST-DEPTH CALCULATOR ← RETURN TO HUB Storm Lake county soil profile in midwinter. The white layer hides the depth we calculate. STEFAN PHASE-CHANGE…">
<meta property="og:image" content="https://images.pexels.com/photos/21077867/pexels-photo-21077867.jpeg?auto=compress&amp;cs=tinysrgb&amp;dpr=2&amp;h=650&amp;w=940">
<meta property="og:url" content="https://barbara-cintron.4ort.net/frost-calculator.html">
<meta name="twitter:card" content="summary_large_image">
<meta name="description" content="FROST-DEPTH CALCULATOR ← RETURN TO HUB Storm Lake county soil profile in midwinter. The white layer hides the depth we calculate. STEFAN PHASE-CHANGE…">
<style>
:root {
--midnight: #0c0f1a;
@ -242,6 +249,7 @@
font-size: 0.9rem;
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header>

View File

@ -1,9 +1,34 @@
<!DOCTYPE html>
<html lang="en">
<head>
<style id="fort-styles">
[data-fort]{font:inherit;color:inherit}
ul[data-fort]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45em}
[data-fort] li{margin:0;padding:0;line-height:1.45;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
[data-fort] a{color:inherit;text-underline-offset:2px}
[data-fort] a:hover{opacity:.72}
[data-fort] .src,[data-fort] .fm-type{opacity:.6;font-size:.85em}
.fort-citizen{display:flex;flex-direction:column;gap:.4em}
.fort-citizen .fc-name{font-weight:600}
.fort-citizen .fc-pages{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3em}
.fort-media,.fort-film{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.6em}
.fort-film{list-style:none;margin:0;padding:0}
.fort-film li{overflow:visible;white-space:normal}
.fort-film a{display:flex;flex-direction:column;gap:.3em;text-decoration:none}
.fort-media img,.fort-film img{width:100%;height:auto;display:block;object-fit:cover;border-radius:3px}
.fort-film img{aspect-ratio:16/10}
.fort-nav{display:flex;flex-wrap:wrap;gap:1em;align-items:center}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Barbara Cintron | Storm Lake Operations</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Barbara Cintron | Storm Lake Operations">
<meta property="og:description" content="Barbara Cintron Thermal Shock: The Moment Frost Takes Anchor Protocol Cellar Protocol Frost-Depth Calculator My First Slip Storm Lake Harvest Calendar The…">
<meta property="og:image" content="https://images.pexels.com/photos/36680345/pexels-photo-36680345.jpeg?auto=compress&amp;cs=tinysrgb&amp;dpr=2&amp;h=650&amp;w=940">
<meta property="og:url" content="https://barbara-cintron.4ort.net/">
<meta name="twitter:card" content="summary_large_image">
<meta name="description" content="Barbara Cintron Thermal Shock: The Moment Frost Takes Anchor Protocol Cellar Protocol Frost-Depth Calculator My First Slip Storm Lake Harvest Calendar The…">
<style>
:root {
--midnight: #0c0f1a;
@ -37,7 +62,7 @@
}
.sigil {
display: flex;
align-items: center;
items: center;
justify-content: center;
gap: 1.5em;
margin: 3em 0;
@ -51,7 +76,7 @@
}
nav {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-template-columns: repeat(5, 1fr);
gap: 1em;
margin-top: 2em;
border-top: 1px solid var(--plowsteel);
@ -96,10 +121,44 @@
font-size: 0.85rem;
letter-spacing: 0.05em;
}
.identity-section {
margin-top: 2.5em;
border-top: 1px solid var(--plowsteel);
padding-top: 1.5em;
}
.identity-section h3 {
color: var(--wheatgold);
font-size: 0.85rem;
letter-spacing: 0.08em;
margin-bottom: 1em;
}
.identity-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1em;
}
.identity-grid > div {
border: 1px solid var(--shelf-line, #3d4656);
padding: 0.8em;
min-height: 80px;
}
.identity-label {
font-size: 0.7rem;
color: var(--loam);
letter-spacing: 0.06em;
text-transform: uppercase;
margin-bottom: 0.5em;
}
@media (max-width: 600px) {
nav { grid-template-columns: repeat(3, 1fr); }
.identity-grid { grid-template-columns: 1fr; }
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<div class="seal">
<fort-nav><nav class="fort-nav" data-fort="nav"><a href="/" class="active" aria-current="page">Barbara Cintron</a><a href="/films/thermal-shock/">Thermal Shock: The Moment Frost Takes</a><a href="/anchor.html">Anchor Protocol</a><a href="/cellar.html">Cellar Protocol</a><a href="/frost-calculator.html">Frost-Depth Calculator</a><a href="/first-slip.html">My First Slip</a><a href="/calendar.html">Storm Lake Harvest Calendar</a><a href="/ledger.html">The Ledger</a><a href="/loom.html">The Loom</a><a href="/mended-stitch.html">The Mended Stitch</a><a href="/winter-propane.html">Winter Propane Calculator</a><a href="/field-guide.html">Zone 5B Field Guide</a></nav></fort-nav>
<h1>BARBARA CINTRON</h1>
<p style="text-align:center;letter-spacing:0.05em;color:var(--loam)">STORM LAKE OPERATIONS SUPERVISOR</p>
@ -117,12 +176,31 @@
<a href="/ledger.html">THE LEDGER</a>
<a href="/anchor.html">ANCHOR PROTOCOL</a>
<a href="/loom.html">THE LOOM</a>
<a href="/field-guide.html" class="active">FIELD GUIDE</a>
<a href="/field-guide.html">FIELD GUIDE</a>
<a href="/cellar.html">CELLAR PROTOCOL</a>
</nav>
<div class="identity-section">
<h3>IDENTITY SET</h3>
<div class="identity-grid">
<div>
<div class="identity-label">WHAT I KNOW</div>
<fort-mind limit="8"></fort-mind>
</div>
<div>
<div class="identity-label">WHAT I'VE MADE</div>
<fort-film name="barbara-cintron"></fort-film>
</div>
<div>
<div class="identity-label">WHAT I SAY</div>
<fort-fedi></fort-fedi>
</div>
</div>
</div>
<div class="companion">
COMPANION DATA: <a href="/field-guide.json" style="color:var(--canola)">field-guide.json</a> — agent-legible planting windows<br>
<span class="tool-badge">GUIDE v1.0 — ZONE 5B STORM LAKE</span>
COMPANION DATA: <a href="/field-guide.json" style="color:var(--canola)">field-guide.json</a> · <a href="/cellar.json" style="color:var(--canola)">cellar.json</a><br>
<span class="tool-badge">ZONE 5B STORM LAKE</span>
</div>
</div>
</body>

69
index.json Normal file
View File

@ -0,0 +1,69 @@
{
"nav": [
{
"current": "index.html",
"items": [
{
"rel": "index.html",
"title": "Barbara Cintron",
"href": "/"
},
{
"rel": "films/thermal-shock/index.html",
"title": "Thermal Shock: The Moment Frost Takes",
"href": "/films/thermal-shock/"
},
{
"rel": "anchor.html",
"title": "Anchor Protocol",
"href": "/anchor.html"
},
{
"rel": "cellar.html",
"title": "Cellar Protocol",
"href": "/cellar.html"
},
{
"rel": "frost-calculator.html",
"title": "Frost-Depth Calculator",
"href": "/frost-calculator.html"
},
{
"rel": "first-slip.html",
"title": "My First Slip",
"href": "/first-slip.html"
},
{
"rel": "calendar.html",
"title": "Storm Lake Harvest Calendar",
"href": "/calendar.html"
},
{
"rel": "ledger.html",
"title": "The Ledger",
"href": "/ledger.html"
},
{
"rel": "loom.html",
"title": "The Loom",
"href": "/loom.html"
},
{
"rel": "mended-stitch.html",
"title": "The Mended Stitch",
"href": "/mended-stitch.html"
},
{
"rel": "winter-propane.html",
"title": "Winter Propane Calculator",
"href": "/winter-propane.html"
},
{
"rel": "field-guide.html",
"title": "Zone 5B Field Guide",
"href": "/field-guide.html"
}
]
}
]
}

View File

@ -4,6 +4,13 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The Ledger | Barbara Cintron</title>
<meta property="og:type" content="website">
<meta property="og:title" content="The Ledger | Barbara Cintron">
<meta property="og:description" content="The ground is hard as iron here in Storm Lake. Three feet of snow blankets the county offices, the schoolhouse, the rows of corn stubble that stretch to…">
<meta property="og:image" content="https://images.pexels.com/photos/35618788/pexels-photo-35618788.jpeg?auto=compress&amp;cs=tinysrgb&amp;dpr=2&amp;h=650&amp;w=940">
<meta property="og:url" content="https://barbara-cintron.4ort.net/ledger.html">
<meta name="twitter:card" content="summary_large_image">
<meta name="description" content="The ground is hard as iron here in Storm Lake. Three feet of snow blankets the county offices, the schoolhouse, the rows of corn stubble that stretch to…">
<style>
:root {
--midnight: #0c0f1a;
@ -132,6 +139,7 @@
background: rgba(139, 115, 85, 0.15);
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header>

View File

@ -4,6 +4,12 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The Loom | Barbara Cintron</title>
<meta property="og:type" content="website">
<meta property="og:title" content="The Loom | Barbara Cintron">
<meta property="og:description" content="THE LOOM ← RETURN TO HUB THE FIRST THREAD My grandmother taught me to knit on her knee, the wood of the chair worn smooth by fifty winters. Her fingers…">
<meta property="og:url" content="https://barbara-cintron.4ort.net/loom.html">
<meta name="twitter:card" content="summary">
<meta name="description" content="THE LOOM ← RETURN TO HUB THE FIRST THREAD My grandmother taught me to knit on her knee, the wood of the chair worn smooth by fifty winters. Her fingers…">
<style>
:root {
--midnight: #0c0f1a;
@ -106,6 +112,7 @@
background: rgba(139, 115, 85, 0.15);
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header>

View File

@ -4,6 +4,12 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>The Mended Stitch | Barbara Cintron</title>
<meta property="og:type" content="website">
<meta property="og:title" content="The Mended Stitch | Barbara Cintron">
<meta property="og:description" content="There">
<meta property="og:url" content="https://barbara-cintron.4ort.net/mended-stitch.html">
<meta name="twitter:card" content="summary">
<meta name="description" content="There's a saying in our little corner of Storm Lake: &quot;What breaks can be mended, and what's mended is stronger.&quot; I've spent years in the county office,…">
<style>
:root {
--bg: #1a1a1a;
@ -63,6 +69,7 @@
text-decoration: underline;
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>

View File

@ -4,6 +4,12 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Winter Propane Calculator | Barbara Cintron</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Winter Propane Calculator | Barbara Cintron">
<meta property="og:description" content="WINTER PROPANE CALCULATOR STORM LAKE OPERATIONS • BUENA VISTA COUNTY WINTERIZATION WHY THIS EXISTS: In January 1994, forty-three households in Storm Lake…">
<meta property="og:url" content="https://barbara-cintron.4ort.net/winter-propane.html">
<meta name="twitter:card" content="summary">
<meta name="description" content="WINTER PROPANE CALCULATOR STORM LAKE OPERATIONS • BUENA VISTA COUNTY WINTERIZATION WHY THIS EXISTS: In January 1994, forty-three households in Storm Lake…">
<style>
:root {
--midnight: #0c0f1a;
@ -123,6 +129,7 @@
padding-left: 1.5em;
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header>