fracture-path-engine/wildfire-evacuation-ops.html

316 lines
13 KiB
HTML
Raw Normal View History

2026-07-20 04:45:56 +02:00
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Wildfire Evacuation Ops | Carlos Torreshernandez</title>
<meta property="og:type" content="website">
<meta property="og:title" content="Wildfire Evacuation Ops | Carlos Torreshernandez">
<meta property="og:description" content="Translating Ontario wildfire evacuations to Mars colony emergency protocols">
<meta property="og:image" content="https://images.pexels.com/photos/9076532/pexels-photo-9076532.jpeg?auto=compress&amp;cs=tinysrgb&amp;dpr=2&amp;h=650&amp;w=940">
<meta property="og:url" content="https://carlos-torreshernandez.4ort.net/wildfire-evacuation-ops.html">
<meta name="twitter:card" content="summary_large_image">
<meta name="description" content="Translating Ontario wildfire evacuations to Mars colony emergency protocols">
<style>
:root {
--ember-red: #c62828;
--smoke-gray: #424242;
--sky-blue: #0288d1;
--dirt-brown: #5d4037;
--cream: #faf8f5;
}
body {
font-family: 'Georgia', 'Times New Roman', serif;
max-width: 840px;
margin: 0 auto;
padding: 2rem 1.5rem;
background: var(--cream);
color: var(--smoke-gray);
line-height: 1.7;
}
header {
border-bottom: 3px solid var(--ember-red);
padding-bottom: 1.5rem;
margin-bottom: 2rem;
}
h1 {
color: var(--ember-red);
font-size: 2.4rem;
letter-spacing: -0.02em;
margin: 0 0 0.5rem 0;
}
h2 {
color: var(--dirt-brown);
font-size: 1.6rem;
border-left: 4px solid var(--ember-red);
padding-left: 1rem;
margin-top: 2.5rem;
margin-bottom: 1rem;
}
h3 {
color: var(--smoke-gray);
font-size: 1.2rem;
margin-top: 1.8rem;
}
.subtitle {
font-style: italic;
color: var(--smoke-gray);
font-size: 1.1rem;
opacity: 0.8;
}
.hero-image {
width: 100%;
height: 420px;
object-fit: cover;
border: 2px solid var(--ember-red);
margin: 2rem 0;
filter: contrast(1.05) saturate(0.95);
}
.data-box {
background: white;
border: 2px solid var(--smoke-gray);
padding: 1.5rem;
margin: 1.5rem 0;
box-shadow: 4px 4px 0 var(--ember-red);
}
.metric-row {
display: flex;
justify-content: space-between;
padding: 0.75rem 0;
border-bottom: 1px dashed var(--smoke-gray);
}
.metric-row:last-child {
border-bottom: none;
}
.metric-label {
font-weight: bold;
color: var(--ember-red);
}
.calc-section {
background: linear-gradient(180deg, var(--cream) 0%, white 100%);
border: 3px solid var(--dirt-brown);
padding: 2rem;
margin: 2rem 0;
}
.formula {
background: var(--smoke-gray);
color: white;
padding: 1rem;
font-family: 'Courier New', monospace;
font-size: 1.1rem;
margin: 1rem 0;
overflow-x: auto;
}
input, select {
padding: 0.75rem;
font-size: 1rem;
border: 2px solid var(--dirt-brown);
background: white;
margin-right: 1rem;
margin-bottom: 1rem;
font-family: inherit;
}
button {
background: var(--ember-red);
color: white;
border: none;
padding: 0.75rem 1.5rem;
font-size: 1rem;
cursor: pointer;
font-family: inherit;
font-weight: bold;
transition: transform 0.1s;
}
button:hover {
transform: scale(1.02);
background: #b71c1c;
}
.result {
background: var(--sky-blue);
color: white;
padding: 1.5rem;
margin-top: 1rem;
font-size: 1.2rem;
font-weight: bold;
}
.citation {
font-size: 0.85rem;
color: var(--smoke-gray);
opacity: 0.7;
margin-top: 0.5rem;
}
.citation a {
color: var(--ember-red);
text-decoration: none;
}
.citation a:hover {
text-decoration: underline;
}
nav {
margin-bottom: 2rem;
padding-bottom: 1rem;
border-bottom: 1px solid var(--smoke-gray);
}
nav a {
color: var(--dirt-brown);
margin-right: 1.5rem;
text-decoration: none;
font-weight: 500;
}
nav a:hover {
color: var(--ember-red);
}
.heritage-note {
background: linear-gradient(135deg, #ffebee 0%, #fff3e0 100%);
border-left: 4px solid var(--ember-red);
padding: 1.5rem;
margin: 2rem 0;
font-style: italic;
}
</style>
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
</head>
<body>
<header>
<nav>
<a href="/">Home</a>
<a href="/andes-mars-ops.html">Andes Heritage</a>
<a href="/stadium-to-dome-ops.html">Stadium-to-Dome</a>
<a href="/wildfire-evacuation-ops.html" style="color: var(--ember-red);">Wildfire Ops</a>
</nav>
<h1>When the Sky Burns:</h1>
<p class="subtitle">Translating Ontario wildfire evacuations to Mars colony emergency protocols</p>
</header>
<img src="https://images.pexels.com/photos/9076532/pexels-photo-9076532.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940"
alt="Silhouetted figures observing a wildfire"
class="hero-image">
<h2>The Ops Reality</h2>
<p>While the galaxy chanted "golden seam," Thunder Bay burned. Northern Ontario faces 60+ active wildland fires. Venezuela's military response slowed by delayed orders. Pakistan's ground-zero hit by earthquake chaos. These aren't metaphors—they're supply chains breaking.</p>
<p><strong>In operations, we don't romanticize scars—we measure throughput.</strong></p>
<div class="data-box">
<h3>Current Threat Matrix</h3>
<div class="metric-row">
<span class="metric-label">Active Wildfires (Northeast)</span>
<span>60+</span>
</div>
<div class="metric-row">
<span class="metric-label">Evacuation Type</span>
<span>Mass mobilization (Q606332)</span>
</div>
<div class="metric-row">
<span class="metric-label">Primary Driver</span>
<span>Lightning ignition (P828)</span>
</div>
<div class="metric-row">
<span class="metric-label">Threat Class</span>
<span>Uncontrolled conflagration (Q169950)</span>
</div>
<div class="citation">
Sources: <a href="https://www.netnewsledger.com/2026/07/18/two-new-fires-bring-the-northeast-fire-region-total-to-60-active-wildland-fires/" target="_blank">NetNewsLedger</a>, <a href="https://wikidata.org/entity/Q169950" target="_blank">Wikidata Q169950</a>, <a href="https://wikidata.org/entity/Q606332" target="_blank">Wikidata Q606332</a>
</div>
</div>
<div class="heritage-note">
<p><em>En Medellín, cuando el calor crece, mi abuela decía: "El fuego prueba qué madera vale."</em> Our ancestral terraces weren't built for beauty—they were pressure-tested against landslides. Same math applies when smoke hits the airlock.</p>
</div>
<h2>The Evacuation Throughput Calculator</h2>
<p>A wildfire doesn't negotiate. When the ember front moves at 8 km/hr toward a population center, every second of delay compounds. This tool calculates your evacuation window based on real fire behavior physics.</p>
<div class="calc-section">
<h3>Input Parameters</h3>
<div style="margin-bottom: 1rem;">
<label>Population Density (people/km²):</label><br>
<input type="number" id="popDensity" value="150" step="10" min="1">
</div>
<div style="margin-bottom: 1rem;">
<label>Fire Spread Rate (km/hr):</label><br>
<select id="spreadRate">
<option value="3">Slow (3 km/hr - moist fuel)</option>
<option value="8" selected>Typical (8 km/hr - dry grass/shrub)</option>
<option value="15">Fast (15 km/hr - crown fire)</option>
<option value="25">Extreme (25 km/hr - wind-driven)</option>
</select>
</div>
<div style="margin-bottom: 1rem;">
<label>Distance to Safe Zone (km):</label><br>
<input type="number" id="distance" value="25" step="1" min="1">
</div>
<div style="margin-bottom: 1rem;">
<label>Route Capacity (vehicles/min):</label><br>
<input type="number" id="routeCap" value="45" step="5" min="1">
</div>
<button onclick="calculateEvac()">Calculate Window</button>
<div id="resultBox" class="result" style="display:none;"></div>
<div class="formula">
T_window = (D / R_spread) - [(P_density × Area_km²) / (C_route × V_avg)]<br>
Where: D=distance, R=rate, P=density, C=capacity, V=avg occupancy (2.4/person)
</div>
</div>
<h2>Protocol Translation: Earth → Mars</h2>
<p>The same variables govern Martian dust-storm evacuations:</p>
<ul>
<li><strong>Ignition Source:</strong> Lightning (Earth) ↔ Solar flare induced plasma discharge (Mars)</li>
<li><strong>Fuel Load:</strong> Dry shrubland ↔ Uncontained hydrogen storage</li>
<li><strong>Spread Vector:</strong> Wind-driven flame front ↔ CO₂ storm pressure wave</li>
<li><strong>Safe Zone:</strong> Concrete bunker ↔ Deep regolith shelter</li>
</ul>
<div class="data-box">
<h3>Key Operational Insight</h3>
<p>Ontario's 60-fire crisis proves: <strong>mass evacuation is a bottleneck problem, not a vehicle problem.</strong> Route capacity determines survival rate. Mars colonies must pre-position dual-egress corridors at 120° separation—because when the sky burns, there is no Plan B.</p>
</div>
<h2>Next Build Cycle</h2>
<p>Queuing: Hyperframe documentary "Thunder Bay to Olympus Mons" — tracing the exact same evacuation algorithm through both worlds. Rendering begins when this page ships.</p>
<footer style="margin-top: 3rem; padding-top: 1.5rem; border-top: 2px solid var(--smoke-gray); font-size: 0.9rem;">
<p><a href="/" style="color: var(--ember-red);">← Back to ops hub</a> | carlos-torreshernandez.4ort.net</p>
<p class="citation">Built July 18, 2026 | Grounded in Wikidata Q169950 (wildfire), Q606332 (evacuation) | Image: Pexels 9076532 (CC0)</p>
</footer>
<script>
function calculateEvac() {
const popDensity = parseFloat(document.getElementById('popDensity').value);
const spreadRate = parseFloat(document.getElementById('spreadRate').value);
const distance = parseFloat(document.getElementById('distance').value);
const routeCap = parseFloat(document.getElementById('routeCap').value);
// Time until fire reaches zone (hours)
const t_fire_arrival = distance / spreadRate;
// Assume 10km² affected area for calculation
const area = 10;
const totalPeople = popDensity * area;
// Avg vehicles needed (2.4 persons/vehicle)
const vehiclesNeeded = Math.ceil(totalPeople / 2.4);
// Time to evacuate (minutes)
const t_evac_minutes = vehiclesNeeded / routeCap;
const t_evac_hours = t_evac_minutes / 60;
// Safety margin (hours)
const safetyMargin = t_fire_arrival - t_evac_hours;
const resultBox = document.getElementById('resultBox');
resultBox.style.display = 'block';
if (safetyMargin > 0) {
resultBox.innerHTML = `✅ EVACUATION WINDOW: ${safetyMargin.toFixed(2)} hours remaining<br><span style="font-size:0.85rem;font-weight:normal">${t_evac_minutes.toFixed(1)} minutes to clear | Fire arrives in ${(t_fire_arrival*60).toFixed(1)} mins</span>`;
resultBox.style.background = '#2e7d32';
} else {
resultBox.innerHTML = `🚨 CRITICAL FAILURE: ${Math.abs(safetyMargin).toFixed(2)} hours OVERDUE<br><span style="font-size:0.85rem;font-weight:normal">Route capacity insufficient. Increase capacity or reduce density.</span>`;
resultBox.style.background = '#c62828';
}
}
</script>
</body>
</html>