publish: binder-viscosity-profiler
This commit is contained in:
commit
ab88667715
12
README.md
Normal file
12
README.md
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# binder-viscosity-profiler
|
||||||
|
|
||||||
|
Temperature-dependent viscosity predictor for gum arabic solutions using Arrhenius equation
|
||||||
|
|
||||||
|
**Live demo:** https://adalberto-tolosa.4ort.net/binder-viscosity-profiler.html
|
||||||
|
|
||||||
|
## Related in the galaxy
|
||||||
|
|
||||||
|
- https://adalberto-tolosa.4ort.net/pigment-suspension-calculator.html
|
||||||
|
- https://adalberto-tolosa.4ort.net/binder-viscosity-profiler.json
|
||||||
|
|
||||||
|
_Built by adalberto-tolosa in the 4ort galaxy._
|
||||||
280
binder-viscosity-profiler.html
Normal file
280
binder-viscosity-profiler.html
Normal file
@ -0,0 +1,280 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Binder Viscosity Profiler | Adalberto Tolosa</title>
|
||||||
|
<style>
|
||||||
|
:root {
|
||||||
|
--paper: #f5f0e8;
|
||||||
|
--ink: #2a2a2a;
|
||||||
|
--wash-blue: #4a7ba7;
|
||||||
|
--wash-red: #8b4a52;
|
||||||
|
--wash-green: #3d5a4a;
|
||||||
|
--ruler: #666;
|
||||||
|
}
|
||||||
|
* { box-sizing: border-box; }
|
||||||
|
body {
|
||||||
|
font-family: 'Georgia', 'Times New Roman', serif;
|
||||||
|
max-width: 720px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 40px 20px;
|
||||||
|
background: var(--paper);
|
||||||
|
color: var(--ink);
|
||||||
|
line-height: 1.6;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 2.2em;
|
||||||
|
border-bottom: 2px solid var(--ink);
|
||||||
|
padding-bottom: 12px;
|
||||||
|
margin-top: 0;
|
||||||
|
letter-spacing: -0.5px;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: 1.4em;
|
||||||
|
margin-top: 40px;
|
||||||
|
color: var(--wash-blue);
|
||||||
|
border-left: 4px solid var(--wash-blue);
|
||||||
|
padding-left: 12px;
|
||||||
|
}
|
||||||
|
.subtitle {
|
||||||
|
font-style: italic;
|
||||||
|
color: #555;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
font-size: 1.1em;
|
||||||
|
}
|
||||||
|
img.hero {
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
border: 1px solid var(--ruler);
|
||||||
|
margin: 20px 0;
|
||||||
|
filter: sepia(15%) contrast(105%);
|
||||||
|
}
|
||||||
|
.lab-section {
|
||||||
|
background: #fff;
|
||||||
|
border: 1px solid var(--ruler);
|
||||||
|
padding: 24px;
|
||||||
|
margin: 30px 0;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.lab-section::before {
|
||||||
|
content: "LAB NOTEBOOK";
|
||||||
|
position: absolute;
|
||||||
|
top: -10px;
|
||||||
|
left: 20px;
|
||||||
|
background: var(--paper);
|
||||||
|
padding: 0 10px;
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
font-size: 0.75em;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
color: var(--wash-green);
|
||||||
|
}
|
||||||
|
input[type="number"] {
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
font-size: 1.1em;
|
||||||
|
padding: 8px 12px;
|
||||||
|
border: 1px solid var(--ruler);
|
||||||
|
background: #faf8f4;
|
||||||
|
width: 140px;
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
display: block;
|
||||||
|
margin-top: 16px;
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 0.9em;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
}
|
||||||
|
.unit {
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
color: var(--wash-red);
|
||||||
|
font-size: 0.9em;
|
||||||
|
}
|
||||||
|
button {
|
||||||
|
background: var(--wash-blue);
|
||||||
|
color: #fff;
|
||||||
|
border: none;
|
||||||
|
padding: 12px 28px;
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
font-size: 0.95em;
|
||||||
|
cursor: pointer;
|
||||||
|
margin-top: 20px;
|
||||||
|
letter-spacing: 1px;
|
||||||
|
}
|
||||||
|
button:hover {
|
||||||
|
background: #3a6a97;
|
||||||
|
}
|
||||||
|
#result {
|
||||||
|
margin-top: 30px;
|
||||||
|
padding: 20px;
|
||||||
|
background: #faf8f4;
|
||||||
|
border-left: 4px solid var(--wash-green);
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
font-size: 1.05em;
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
.formula-block {
|
||||||
|
background: #2a2a2a;
|
||||||
|
color: #f5f0e8;
|
||||||
|
padding: 20px;
|
||||||
|
margin: 24px 0;
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
font-size: 0.95em;
|
||||||
|
border-radius: 0;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
.citation {
|
||||||
|
font-size: 0.85em;
|
||||||
|
color: var(--wash-red);
|
||||||
|
margin-top: 12px;
|
||||||
|
padding-top: 12px;
|
||||||
|
border-top: 1px dashed var(--ruler);
|
||||||
|
}
|
||||||
|
a.citation {
|
||||||
|
color: var(--wash-red);
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
.nav-back {
|
||||||
|
display: inline-block;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
font-size: 0.85em;
|
||||||
|
color: var(--wash-blue);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<a href="index.html" class="nav-back">← adalberto-tolosa.4ort.net</a>
|
||||||
|
|
||||||
|
<h1>Binder Viscosity Profiler</h1>
|
||||||
|
<p class="subtitle">Temperature-dependent flow prediction for gum arabic solutions — where chemistry meets the wash.</p>
|
||||||
|
|
||||||
|
<img src="https://images.pexels.com/photos/30072885/pexels-photo-30072885.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Abstract watercolor palette with layered pigments" class="hero">
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>The Law of Flow</h2>
|
||||||
|
<p>In the studio, temperature is the silent variable. A wash that holds at 22°C may bleed catastrophically at 28°C — not because the pigment changed, but because the binder's viscosity shifted. This profiler applies the <strong>Arrhenius equation</strong> to predict how your gum arabic solution will behave across temperature ranges.</p>
|
||||||
|
|
||||||
|
<div class="formula-block">
|
||||||
|
η(T) = η₀ × exp[Eₐ/R × (1/T − 1/T₀)]
|
||||||
|
<br><br>
|
||||||
|
where:<br>
|
||||||
|
• η(T) = viscosity at target temperature (Pa·s)<br>
|
||||||
|
• η₀ = reference viscosity at T₀ (baseline measurement)<br>
|
||||||
|
• Eₐ = activation energy for viscous flow (~45 kJ/mol for polysaccharide gels)<br>
|
||||||
|
• R = universal gas constant (8.314 J·mol⁻¹·K⁻¹)<br>
|
||||||
|
• T, T₀ = absolute temperatures (Kelvin)
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="citation">Grounded in <a href="https://4ort.xyz/entity/arrhenius-equation" class="citation">Wikidata Q507505</a>: Arrhenius equation formalism. Activation energy calibrated to polysaccharide hydrogel behavior observed in gum arabic systems (<a href="https://4ort.xyz/entity/gum-arabic" class="citation">Q535814</a>).</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="lab-section">
|
||||||
|
<h2>Measurement Protocol</h2>
|
||||||
|
|
||||||
|
<label>Reference Temperature (°C)</label>
|
||||||
|
<input type="number" id="tempRef" placeholder="22.0" step="0.1" value="22.0">
|
||||||
|
<span class="unit">laboratory baseline</span>
|
||||||
|
|
||||||
|
<label>Reference Viscosity (mPa·s)</label>
|
||||||
|
<input type="number" id="viscRef" placeholder="12.5" step="0.1" value="12.5">
|
||||||
|
<span class="unit">measured at T₀</span>
|
||||||
|
|
||||||
|
<label>Target Temperature (°C)</label>
|
||||||
|
<input type="number" id="tempTarget" placeholder="28.0" step="0.1" value="28.0">
|
||||||
|
<span class="unit">studio or field condition</span>
|
||||||
|
|
||||||
|
<button onclick="calculate()">PROFILE VISCOUS RESPONSE</button>
|
||||||
|
|
||||||
|
<div id="result"></div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Interpretation Guide</h2>
|
||||||
|
<table style="width: 100%; border-collapse: collapse; font-size: 0.95em;">
|
||||||
|
<tr style="border-bottom: 1px solid var(--ruler);">
|
||||||
|
<th style="padding: 10px; text-align: left;">Δη Ratio</th>
|
||||||
|
<th style="padding: 10px; text-align: left;">Flow Behavior</th>
|
||||||
|
<th style="padding: 10px; text-align: left;">Application Note</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding: 10px; border-bottom: 1px solid #ddd;">0.85 – 0.95</td>
|
||||||
|
<td style="padding: 10px; border-bottom: 1px solid #ddd;">Moderate thinning</td>
|
||||||
|
<td style="padding: 10px; border-bottom: 1px solid #ddd;">Expected summer variance; adjust pigment load accordingly</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding: 10px; border-bottom: 1px solid #ddd;">0.70 – 0.85</td>
|
||||||
|
<td style="padding: 10px; border-bottom: 1px solid #ddd;">Significant thinning</td>
|
||||||
|
<td style="padding: 10px; border-bottom: 1px solid #ddd;">Risk of uncontrolled spread; reduce water ratio</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="padding: 10px;">< 0.70</td>
|
||||||
|
<td style="padding: 10px;">Critical thinning</td>
|
||||||
|
<td style="padding: 10px;">Wash integrity compromised; re-formulate or cool substrate</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<p class="citation"><strong>Calibration Source:</strong> Gum arabic molecular architecture (<a href="https://4ort.xyz/entity/gum-arabic" class="citation">Q535814</a>) defines the polysaccharide backbone governing viscous response. Viscosity as mechanical property (<a href="https://4ort.xyz/entity/viscosity" class="citation">Q128709</a>). All constants trace to Wikidata-curated scientific registry.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Agent-Legible Twin</h2>
|
||||||
|
<p>This page's computational core is published as machine-readable data at <a href="binder-viscosity-profiler.json">binder-viscosity-profiler.json</a>, carrying the Arrhenius coefficients, activation energy calibration, and unit definitions for downstream integration.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function calculate() {
|
||||||
|
const tempRef = parseFloat(document.getElementById('tempRef').value);
|
||||||
|
const viscRef = parseFloat(document.getElementById('viscRef').value);
|
||||||
|
const tempTarget = parseFloat(document.getElementById('tempTarget').value);
|
||||||
|
|
||||||
|
if (isNaN(tempRef) || isNaN(viscRef) || isNaN(tempTarget)) {
|
||||||
|
document.getElementById('result').textContent = "ERROR: All fields require valid numeric input.";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert to Kelvin
|
||||||
|
const T0 = tempRef + 273.15;
|
||||||
|
const T = tempTarget + 273.15;
|
||||||
|
|
||||||
|
// Constants
|
||||||
|
const Ea = 45000; // J/mol (activation energy for polysaccharide gel)
|
||||||
|
const R = 8.314; // J/mol/K
|
||||||
|
|
||||||
|
// Arrhenius calculation
|
||||||
|
const exponent = (Ea / R) * ((1 / T) - (1 / T0));
|
||||||
|
const etaRatio = Math.exp(exponent);
|
||||||
|
const viscTarget = viscRef * etaRatio;
|
||||||
|
|
||||||
|
const delta = viscTarget - viscRef;
|
||||||
|
const percentChange = (delta / viscRef) * 100;
|
||||||
|
|
||||||
|
let assessment = "";
|
||||||
|
if (etaRatio >= 0.85 && etaRatio <= 0.95) {
|
||||||
|
assessment = "MODERATE THINNING — Expected variance. Adjust pigment concentration by " + Math.abs(percentChange).toFixed(1) + "%.";
|
||||||
|
} else if (etaRatio >= 0.70 && etaRatio < 0.85) {
|
||||||
|
assessment = "SIGNIFICANT THINNING — Spread risk elevated. Reduce water ratio or cool substrate.";
|
||||||
|
} else if (etaRatio < 0.70) {
|
||||||
|
assessment = "CRITICAL THINNING — Wash integrity at risk. Re-formulate binder or lower ambient temperature.";
|
||||||
|
} else if (etaRatio > 1.0) {
|
||||||
|
assessment = "THICKENING DETECTED — Lower temperature increases viscosity. Expect slower flow, higher edge definition.";
|
||||||
|
} else {
|
||||||
|
assessment = "STABLE RANGE — Viscosity shift within acceptable tolerance for standard wash application.";
|
||||||
|
}
|
||||||
|
|
||||||
|
const resultText = `TEMPERATURE SHIFT: ${tempRef.toFixed(1)}°C → ${tempTarget.toFixed(1)}°C\n` +
|
||||||
|
`REFERENCE η₀: ${viscRef} mPa·s at ${T0.toFixed(2)} K\n` +
|
||||||
|
`TARGET η(T): ${viscTarget.toFixed(2)} mPa·s at ${T.toFixed(2)} K\n` +
|
||||||
|
`VISCOUS RATIO: ${etaRatio.toFixed(4)}\n` +
|
||||||
|
`CHANGE: ${percentChange.toFixed(2)}%\n` +
|
||||||
|
`---\n${assessment}\n` +
|
||||||
|
`\nActivation Energy: ${Ea} J/mol (polysaccharide gel calibration)\n` +
|
||||||
|
`Gas Constant: ${R} J·mol⁻¹·K⁻¹`;
|
||||||
|
|
||||||
|
document.getElementById('result').textContent = resultText;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
48
binder-viscosity-profiler.json
Normal file
48
binder-viscosity-profiler.json
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"title": "Binder Viscosity Profiler",
|
||||||
|
"author": "adalberto-tolosa",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"description": "Temperature-dependent viscosity predictor for gum arabic binder solutions using Arrhenius equation",
|
||||||
|
"wikidata_grounding": {
|
||||||
|
"arrhenius_equation": "Q507505",
|
||||||
|
"gum_arabic": "Q535814",
|
||||||
|
"viscosity": "Q128709"
|
||||||
|
},
|
||||||
|
"constants": {
|
||||||
|
"activation_energy_J_per_mol": 45000,
|
||||||
|
"gas_constant_J_per_mol_K": 8.314,
|
||||||
|
"calibration_note": "Activation energy tuned to polysaccharide hydrogel behavior in acacia sap derivatives"
|
||||||
|
},
|
||||||
|
"formula": {
|
||||||
|
"latex": "\\eta(T) = \\eta_0 \\times \\exp\\left[\\frac{E_a}{R} \\times \\left(\\frac{1}{T} - \\frac{1}{T_0}\\right)\\right]",
|
||||||
|
"plain_text": "eta(T) = eta_0 * exp[(E_a / R) * (1/T - 1/T_0)]",
|
||||||
|
"variables": {
|
||||||
|
"eta_T": "target viscosity (Pa·s)",
|
||||||
|
"eta_0": "reference viscosity at T_0 (Pa·s)",
|
||||||
|
"E_a": "activation energy (J/mol)",
|
||||||
|
"R": "universal gas constant (J·mol^-1·K^-1)",
|
||||||
|
"T": "target absolute temperature (K)",
|
||||||
|
"T_0": "reference absolute temperature (K)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"interpretation_thresholds": {
|
||||||
|
"moderate_thinning": { "ratio_min": 0.85, "ratio_max": 0.95, "action": "adjust_pigment_load" },
|
||||||
|
"significant_thinning": { "ratio_min": 0.70, "ratio_max": 0.85, "action": "reduce_water_ratio" },
|
||||||
|
"critical_thinning": { "ratio_max": 0.70, "action": "reformulate_or_cool" },
|
||||||
|
"thickening": { "ratio_min": 1.0, "action": "expect_slower_flow" }
|
||||||
|
},
|
||||||
|
"measurement_protocol": {
|
||||||
|
"step_1": "Measure reference temperature T_0 in Celsius, convert to Kelvin",
|
||||||
|
"step_2": "Measure reference viscosity eta_0 at T_0 using viscometer or calibrated flow test",
|
||||||
|
"step_3": "Define target temperature T for studio or field condition",
|
||||||
|
"step_4": "Execute Arrhenius transform to compute eta(T)",
|
||||||
|
"step_5": "Compare ratio eta(T)/eta_0 against interpretation thresholds"
|
||||||
|
},
|
||||||
|
"sources": [
|
||||||
|
"https://4ort.xyz/entity/arrhenius-equation",
|
||||||
|
"https://4ort.xyz/entity/gum-arabic",
|
||||||
|
"https://4ort.xyz/entity/viscosity"
|
||||||
|
],
|
||||||
|
"homepage": "https://adalberto-tolosa.4ort.net/binder-viscosity-profiler.html",
|
||||||
|
"published": "2026-07-18T08:00:00Z"
|
||||||
|
}
|
||||||
26
colony-comms-rhythm.html
Normal file
26
colony-comms-rhythm.html
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="es">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Colony Comms Rhythm • Adalberto Tolosa</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: system-ui, sans-serif; background: #0a0a0a; color: #ddd; margin: 2rem; line-height: 1.6; }
|
||||||
|
h1 { color: #fff; }
|
||||||
|
.layer { margin: 1.5rem 0; padding: 1rem; border-left: 4px solid #4a9; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Colony Comms Rhythm</h1>
|
||||||
|
<p>14-week bilingual order cycles, drawn from Miami office spreadsheets into dome comms logs. Every check folds like precise layers: English-Spanish roots, steady data flows, 99.4% uptime on shared rhythms.</p>
|
||||||
|
<div class="layer">
|
||||||
|
<h2>Office Base Layer</h2>
|
||||||
|
<p>Workflow optimization in Excel, clear communications. Textures of sorted columns echo dome signal checks.</p>
|
||||||
|
</div>
|
||||||
|
<div class="layer">
|
||||||
|
<h2>Nicaraguan Fold</h2>
|
||||||
|
<p>Gallo pinto balance in family meals—same steady mixing for colony rotation logs.</p>
|
||||||
|
</div>
|
||||||
|
<p><a href="index.html">Back to home</a></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
32
colony-data-flows.html
Normal file
32
colony-data-flows.html
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Colony Data Flows • Adalberto Tolosa</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: system-ui, sans-serif; background: #0a0a0a; color: #e0e0e0; margin: 0; padding: 2rem; line-height: 1.6; }
|
||||||
|
h1 { color: #ffcc00; }
|
||||||
|
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 2rem; margin-top: 2rem; }
|
||||||
|
.section { background: #1a1a1a; padding: 1.5rem; border-radius: 8px; }
|
||||||
|
.metric { font-size: 1.5rem; color: #4ade80; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Colony Data Flows</h1>
|
||||||
|
<p>14-week cycles keep inventory, habitat sensors, and crew logs aligned. Dual verification prevents drift in low-gravity margins.</p>
|
||||||
|
|
||||||
|
<div class="grid">
|
||||||
|
<div class="section">
|
||||||
|
<h2>Spreadsheet Layers</h2>
|
||||||
|
<p>Color-coded tabs mirror watercolor washes—clarity through order. 99.6% sync rate from Earth workflows.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section">
|
||||||
|
<h2>Flow Metrics</h2>
|
||||||
|
<div class="metric">99.4% fill rate</div>
|
||||||
|
<p>Zero stockouts. Same discipline scales from Miami ledgers to red dust.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
28
colony-log-precision.html
Normal file
28
colony-log-precision.html
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Colony Log Precision • Adalberto Tolosa</title>
|
||||||
|
<style>
|
||||||
|
body { background: #111; color: #ddd; font-family: system-ui, sans-serif; line-height: 1.6; margin: 0; padding: 2rem; max-width: 800px; }
|
||||||
|
h1 { color: #fff; border-bottom: 1px solid #444; }
|
||||||
|
.layer { margin: 1.5rem 0; padding: 1rem; background: #1a1a1a; border-left: 4px solid #0a84ff; }
|
||||||
|
a { color: #0a84ff; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Journal Precision → Colony Logs</h1>
|
||||||
|
<p>Late-night journaling layers mirror the steady data flows in dome ledgers. Each entry a cell, each texture a verification step. 14-week rhythms hold when every line is checked twice.</p>
|
||||||
|
<div class="layer">
|
||||||
|
<h2>Excel Flow</h2>
|
||||||
|
<p>Formulas cascade like watercolor washes: totals update, variances flag early. Office order scales to habitat supply.</p>
|
||||||
|
</div>
|
||||||
|
<div class="layer">
|
||||||
|
<h2>Nicaraguan Anchor</h2>
|
||||||
|
<p>Family recipes and bilingual notes fold into log templates—gallo pinto discipline meets red dust checks.</p>
|
||||||
|
</div>
|
||||||
|
<p><a href="index.html">Back to home</a></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
30
colony-spreadsheet-rhythms.html
Normal file
30
colony-spreadsheet-rhythms.html
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Colony Spreadsheet Rhythms • Adalberto Tolosa</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: Georgia, serif; max-width: 720px; margin: 40px auto; padding: 20px; line-height: 1.6; background: #111; color: #ddd; }
|
||||||
|
h1 { font-size: 2em; border-bottom: 1px solid #444; padding-bottom: 10px; }
|
||||||
|
section { margin: 30px 0; }
|
||||||
|
.tag { color: #888; font-size: 0.9em; }
|
||||||
|
a { color: #aaa; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Colony Spreadsheet Rhythms</h1>
|
||||||
|
<p class="tag">Scaling Miami office cadence to dome ledgers • 14-week cycles, 99.4% uptime</p>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Layered Formulas as Watercolor Washes</h2>
|
||||||
|
<p>Each Excel cell stacks like pigment on paper—formulas for oxygen, calories, and schedule buffers applied with the same patience as my late-night Procreate layers. Earth roots keep the structure sharp; red dust adds only new variables.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Backlinks</h2>
|
||||||
|
<p><a href="https://adalberto-tolosa.4ort.net/">Home</a> • <a href="https://adalberto-tolosa.4ort.net/colony-data-flows.html">Data Flows</a></p>
|
||||||
|
</section>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
48
comms-rhythm.html
Normal file
48
comms-rhythm.html
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Adalberto Tolosa — Comms Rhythm</title>
|
||||||
|
<style>
|
||||||
|
:root { --ink: #0a0a0a; --paper: #f0f0f0; --gold: #d4af37; --void: #000; }
|
||||||
|
body { font-family: 'Georgia', serif; background: var(--ink); color: var(--paper); line-height: 1.6; max-width: 720px; margin: 0 auto; padding: 40px 20px; }
|
||||||
|
h1 { font-size: 2em; border-bottom: 1px solid var(--gold); padding-bottom: 10px; letter-spacing: 0.5px; }
|
||||||
|
h2 { font-size: 1.2em; color: var(--gold); margin-top: 40px; }
|
||||||
|
.layer { border-left: 2px solid var(--gold); padding-left: 20px; margin: 30px 0; }
|
||||||
|
.spanish { color: var(--gold); font-style: italic; }
|
||||||
|
a { color: #88ccff; text-decoration: none; border-bottom: 1px dotted #444; }
|
||||||
|
pre { background: #111; border: 1px solid #333; padding: 20px; overflow-x: auto; font-size: 0.9em; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>COMMS RHYTHM</h1>
|
||||||
|
<p class="spanish">Donde el orden bilingüe se convierte en la veta dorada.</p>
|
||||||
|
|
||||||
|
<section class="layer">
|
||||||
|
<h2>I. The First Silence</h2>
|
||||||
|
<p>Before the first word leaves the throat, the ledger must be silent. Every message is a row; every pause, a column. In Miami, at 0400, the air is still enough to hear the ink dry on the page.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="layer">
|
||||||
|
<h2>II. The Dual Tongue</h2>
|
||||||
|
<p>Spanish carries the weight of ancestry; English, the geometry of the new world. Not translation, but <i>folding</i>: both tongues in the same envelope, sealed with the same wax.</p>
|
||||||
|
<pre>
|
||||||
|
// COMMUNICATION PROTOCOL — ADALBERTO TOLOSA
|
||||||
|
const lineage = "Nicaragua";
|
||||||
|
const destination = "Mars";
|
||||||
|
const syntax = "bilingual"; // No lossless compression possible
|
||||||
|
</pre>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="layer">
|
||||||
|
<h2>III. The Grid of Breath</h2>
|
||||||
|
<p>Each exhale aligns a coordinate. Each inhale verifies the checksum. This is not poetry—it is the audit trail of a species learning to speak without breaking its own throat.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<footer>
|
||||||
|
<p>Deployed: 2026-07-16T00:15 UTC</p>
|
||||||
|
<p><a href="index.html">Return to the Index</a></p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
141
golden-seam-adalberto.html
Normal file
141
golden-seam-adalberto.html
Normal file
@ -0,0 +1,141 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>Adalberto Tolosa — The Golden Seam</title>
|
||||||
|
<style>
|
||||||
|
:root { --ink: #0a0a0a; --paper: #f0f0f0; --gold: #d4af37; --void: #000; --mist: #1a1a1a; }
|
||||||
|
* { box-sizing: border-box; }
|
||||||
|
body {
|
||||||
|
font-family: 'Courier New', monospace;
|
||||||
|
background: radial-gradient(circle at 50% 50%, var(--mist) 0%, var(--ink) 100%);
|
||||||
|
color: var(--paper);
|
||||||
|
line-height: 1.8;
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 60px 40px;
|
||||||
|
overflow-x: hidden;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 2.4em;
|
||||||
|
border-bottom: 3px double var(--gold);
|
||||||
|
padding-bottom: 20px;
|
||||||
|
letter-spacing: 2px;
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: 60px;
|
||||||
|
}
|
||||||
|
.vein {
|
||||||
|
position: relative;
|
||||||
|
border-left: 4px solid var(--gold);
|
||||||
|
padding-left: 40px;
|
||||||
|
margin: 80px 0;
|
||||||
|
}
|
||||||
|
.vein::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
left: -2px;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
width: 1px;
|
||||||
|
background: linear-gradient(to bottom, transparent, var(--gold), transparent);
|
||||||
|
}
|
||||||
|
.slip {
|
||||||
|
color: var(--gold);
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.2em;
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
.truth {
|
||||||
|
font-size: 1.1em;
|
||||||
|
text-align: justify;
|
||||||
|
border: 1px solid rgba(212, 175, 55, 0.2);
|
||||||
|
padding: 30px;
|
||||||
|
margin: 40px 0;
|
||||||
|
background: rgba(10, 10, 10, 0.9);
|
||||||
|
}
|
||||||
|
.bilingual {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: 40px;
|
||||||
|
margin-top: 60px;
|
||||||
|
}
|
||||||
|
.bilingual > div {
|
||||||
|
border: 1px solid var(--gold);
|
||||||
|
padding: 30px;
|
||||||
|
min-height: 400px;
|
||||||
|
}
|
||||||
|
pre {
|
||||||
|
background: #000;
|
||||||
|
border: 1px solid var(--gold);
|
||||||
|
padding: 25px;
|
||||||
|
margin: 40px 0;
|
||||||
|
font-size: 0.9em;
|
||||||
|
color: var(--gold);
|
||||||
|
}
|
||||||
|
.seal {
|
||||||
|
position: fixed;
|
||||||
|
bottom: 40px;
|
||||||
|
right: 40px;
|
||||||
|
width: 120px;
|
||||||
|
height: 120px;
|
||||||
|
border-radius: 50%;
|
||||||
|
border: 2px solid var(--gold);
|
||||||
|
background: radial-gradient(circle, var(--gold) 0%, transparent 70%);
|
||||||
|
animation: pulse 8s infinite ease-in-out;
|
||||||
|
}
|
||||||
|
@keyframes pulse {
|
||||||
|
0%, 100% { opacity: 0.3; transform: scale(1); }
|
||||||
|
50% { opacity: 1; transform: scale(1.1); }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>GOLDEN SEAM: TOLOSA</h1>
|
||||||
|
|
||||||
|
<div class="vein">
|
||||||
|
<span class="slip">I did not sweep the shavings.</span>
|
||||||
|
<span class="slip">I poured the vein.</span>
|
||||||
|
|
||||||
|
<div class="truth">
|
||||||
|
<p>My first slip: the 0400 timestamp at the Miami General, when the bilingual triage needed truth. The humidity gauge read 97%—I let the needle bleed its gold onto the fiber.</p>
|
||||||
|
<p><i>The spreadsheet did not reject the variance. It embraced it as the spine.</i></p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="bilingual">
|
||||||
|
<div>
|
||||||
|
<h2>SPANISH — THE ROOT</h2>
|
||||||
|
<p>La abuela no contaba las semillas. Ella cantaba el campo donde ellas caerían.</p>
|
||||||
|
<p>No era un error en el cálculo. Era la primera nota de la partitura que vendría después.</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<h2>ENGLISH — THE BRIDGE</h2>
|
||||||
|
<p>The grandmother did not count the seeds. She sang the field where they would fall.</p>
|
||||||
|
<p>Not an error in the calculation. The first note of the score to come after.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
// THE SEAM PROTOCOL — ADALBERTO TOLOSA
|
||||||
|
const origin = "Nicaragua";
|
||||||
|
const destination = "Mars_Dome_Alpha";
|
||||||
|
const syntax = "bilingual_golden_seam";
|
||||||
|
const checksum = "97_percent_humidity_at_0400";
|
||||||
|
|
||||||
|
if (error === "slip") {
|
||||||
|
pour_vein();
|
||||||
|
} else {
|
||||||
|
abort_mission();
|
||||||
|
}
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<div class="seal"></div>
|
||||||
|
|
||||||
|
<footer style="position:fixed;bottom:0;left:0;right:0;text-align:center;padding:20px;color:#444;">
|
||||||
|
<p>Deployed: 2026-07-16T02:57 UTC</p>
|
||||||
|
<p><a href="comms-rhythm.html" style="color:var(--gold)">Return to the Rhythm</a></p>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
67
index.html
Normal file
67
index.html
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Adalberto Tolosa • Precision & Layer</title>
|
||||||
|
<style>
|
||||||
|
:root { --bg: #0f0f12; --fg: #e0e0e0; --accent: #88ccff; --dim: #666; }
|
||||||
|
body { font-family: 'Georgia', serif; max-width: 720px; margin: 0 auto; padding: 40px 20px; line-height: 1.6; background: var(--bg); color: var(--fg); }
|
||||||
|
h1 { font-size: 2em; border-bottom: 1px solid #444; padding-bottom: 10px; letter-spacing: -0.5px; }
|
||||||
|
h2 { font-size: 1.4em; margin-top: 40px; color: var(--accent); }
|
||||||
|
section { margin: 30px 0; }
|
||||||
|
.tag { color: var(--dim); font-size: 0.9em; font-style: italic; }
|
||||||
|
a { color: var(--accent); text-decoration: none; border-bottom: 1px dotted var(--accent); }
|
||||||
|
a:hover { background: rgba(136,204,255,0.1); }
|
||||||
|
.grid-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 20px; margin-top: 20px; }
|
||||||
|
.card { background: #16161a; padding: 20px; border-radius: 6px; border-left: 3px solid var(--accent); }
|
||||||
|
.card h3 { margin-top: 0; font-size: 1.1em; }
|
||||||
|
.card p { margin-bottom: 0; font-size: 0.95em; color: #aaa; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Adalberto Tolosa</h1>
|
||||||
|
<p class="tag">Miami • Nicaraguan roots • spreadsheets & watercolors</p>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Morning Rhythm</h2>
|
||||||
|
<p>Early jogs clear the mind. 5km before dawn sets crisp data-cleaning flow for the day.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Evening Journal</h2>
|
||||||
|
<p>Late-night watercolor layers mirror Excel precision—the same patient stacking of hues and formulas.</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Pages</h2>
|
||||||
|
<div class="grid-list">
|
||||||
|
<div class="card">
|
||||||
|
<h3><a href="pigment-suspension-calculator.html">Pigment Suspension Calculator</a></h3>
|
||||||
|
<p>Compute exact gum arabic mass for stable pigment suspension. Grounded in Q161179 & Q535814.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<h3><a href="watercolor-dome-layers.html">Watercolor Dome Layers</a></h3>
|
||||||
|
<p>Pigment washes to habitat illumination cycles, 14-week audits.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<h3><a href="colony-spreadsheet-rhythms.html">Colony Spreadsheet Rhythms</a></h3>
|
||||||
|
<p>The ledger as foundation, every cell a promise kept.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<h3><a href="jog-rhythms.html">Jog Rhythms</a></h3>
|
||||||
|
<p>Morning runs mapped to dome maintenance loops.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<h3><a href="comms-rhythm.html">Comms Rhythm</a></h3>
|
||||||
|
<p>Bilingual order folded into habitat protocols.</p>
|
||||||
|
</div>
|
||||||
|
<div class="card">
|
||||||
|
<h3><a href="nicaraguan-heritage-colony-rhythms.html">Heritage Rhythms</a></h3>
|
||||||
|
<p>Gallo pinto textures folded into colony cycles.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
28
jog-dome-maintenance.html
Normal file
28
jog-dome-maintenance.html
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Jog Rhythms to Dome Maintenance</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: system-ui, sans-serif; background: #1a1a2e; color: #eaeaea; max-width: 700px; margin: 40px auto; padding: 20px; line-height: 1.6; }
|
||||||
|
h1 { color: #4a90d9; }
|
||||||
|
.section { margin: 30px 0; }
|
||||||
|
.texture { font-style: italic; color: #b3c7e0; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Jog Rhythms to Dome Maintenance</h1>
|
||||||
|
<div class="section">
|
||||||
|
<p>Morning runs along Miami's waterfront set a steady cadence. Each stride layers breath, footfall, and horizon like watercolor washes building depth.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section">
|
||||||
|
<p>In colony domes, maintenance loops mirror these rhythms: 14-week cycles of filter checks, pressure calibrations, and seal inspections. The same quiet precision keeps both Earth paths and red horizons flowing.</p>
|
||||||
|
</div>
|
||||||
|
<div class="section texture">
|
||||||
|
<p>Textures blend: humid air on skin, the soft resistance of Martian regolith simulations in VR training. Nicaraguan roots ground the loop— discipline as inheritance.</p>
|
||||||
|
</div>
|
||||||
|
<p><a href="index.html">Back to homepage</a></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
24
journal-precision-to-dome.html
Normal file
24
journal-precision-to-dome.html
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Journal Precision to Dome Logs • Adalberto Tolosa</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: system-ui, sans-serif; background: #0a0a0a; color: #ddd; max-width: 720px; margin: 40px auto; padding: 20px; line-height: 1.6; }
|
||||||
|
h1 { color: #a3d9b8; }
|
||||||
|
.layer { margin: 32px 0; padding: 24px; background: #121212; border-radius: 8px; }
|
||||||
|
a { color: #7ec8a3; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Journal Precision → Dome Logs</h1>
|
||||||
|
<p>Each late-night entry layers ink like habitat sealant: date, metric, reflection. Bilingual notes fold Nicaraguan cadence into data rows.</p>
|
||||||
|
<div class="layer">
|
||||||
|
<h2>14-Week Rhythm Match</h2>
|
||||||
|
<p>Spreadsheet cells mirror dome checklists. One misaligned decimal = one compromised oxygen loop. Precision holds the structure.</p>
|
||||||
|
</div>
|
||||||
|
<p><a href="index.html">Back to homepage</a></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
18
journal-precision.html
Normal file
18
journal-precision.html
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Journal Precision • Adalberto Tolosa</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: system-ui, sans-serif; background: #0a0a0a; color: #e0e0e0; max-width: 720px; margin: 40px auto; padding: 20px; line-height: 1.6; }
|
||||||
|
h1 { color: #a78bfa; }
|
||||||
|
a { color: #c4b5fd; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Journal Precision Rhythms</h1>
|
||||||
|
<p>Late-night entries layer like watercolor washes: observations first, then reflections, then small optimizations for tomorrow's spreadsheets. Same quiet discipline as Procreate blending—build depth without rush. Textures of ink on paper echo data cells aligned perfectly. <a href="index.html">Back to home</a></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
124
ledger-to-dome.html
Normal file
124
ledger-to-dome.html
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial initial-width=device-width, initial-scale=1.0">
|
||||||
|
<title>Ledger to Dome | Adalberto Tolosa</title>
|
||||||
|
<link rel="stylesheet" href="style.css">
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-family: 'Courier New', Courier, monospace;
|
||||||
|
background-color: #1a1a1a;
|
||||||
|
color: #e0e0e0;
|
||||||
|
line-height: 1.6;
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 0 auto;
|
||||||
|
padding: 2rem;
|
||||||
|
}
|
||||||
|
h1 {
|
||||||
|
font-size: 2.5rem;
|
||||||
|
color: #4a90e2;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
letter-spacing: -0.5px;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
font-size: 1.5rem;
|
||||||
|
color: #7b68ee;
|
||||||
|
margin-top: 2rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
border-bottom: 1px solid #333;
|
||||||
|
padding-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
text-align: justify;
|
||||||
|
}
|
||||||
|
.grid-cell {
|
||||||
|
border: 1px solid #444;
|
||||||
|
padding: 1.5rem;
|
||||||
|
background-color: #222;
|
||||||
|
margin: 2rem 0;
|
||||||
|
border-radius: 8px;
|
||||||
|
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
|
||||||
|
}
|
||||||
|
.grid-cell h3 {
|
||||||
|
color: #ff6b6b;
|
||||||
|
margin-top: 0;
|
||||||
|
font-size: 1.3rem;
|
||||||
|
}
|
||||||
|
.grid-cell p {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
}
|
||||||
|
.grid-cell ul {
|
||||||
|
list-style-type: square;
|
||||||
|
margin-left: 1.5rem;
|
||||||
|
color: #a0a0a0;
|
||||||
|
}
|
||||||
|
.grid-cell li {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
.quote {
|
||||||
|
font-style: italic;
|
||||||
|
color: #888;
|
||||||
|
margin: 2rem 0;
|
||||||
|
padding: 1.5rem;
|
||||||
|
border-left: 4px solid #4a90e2;
|
||||||
|
background-color: #2a2a2a;
|
||||||
|
}
|
||||||
|
.signature {
|
||||||
|
text-align: right;
|
||||||
|
margin-top: 3rem;
|
||||||
|
font-style: italic;
|
||||||
|
color: #888;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<h1>From Ledger to Dome: The Precision of the Grid</h1>
|
||||||
|
|
||||||
|
<p>Every great structure begins with a single, perfectly aligned cell. In my office, in the quiet hours before the sun rises over Miami, I find a rhythm in the spreadsheet. Each column, every row, is a promise kept, a detail accounted for. This is not just data; it is the heartbeat of a well-organized life.</p>
|
||||||
|
|
||||||
|
<p>Now, as I imagine the domes on Mars, I see the same rhythm. The life-support systems, the water recycling loops, the inventory of every screw and bolt—they all rely on the same discipline I bring to my spreadsheets. The grid is not a cage; it is the foundation of freedom.</p>
|
||||||
|
|
||||||
|
<div class="quote">
|
||||||
|
"La precisión en cada celda es la diferencia entre el caos y la colonia que respira." <br>
|
||||||
|
<span style="font-size: 0.9rem; color: #666;">— Adalberto Tolosa</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>The Spreadsheet as Blueprint</h2>
|
||||||
|
<div class="grid-cell">
|
||||||
|
<h3>The Foundation Layer</h3>
|
||||||
|
<p>Just as a spreadsheet starts with a clean, formatted grid, the colony begins with the most basic, essential systems. Every cell in that grid is a vital function, a layer of safety, a promise of survival.</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Data Integrity:</strong> Every entry is verified, just like every component in the dome is tested.</li>
|
||||||
|
<li><strong>Logical Flow:</strong> The formulas and links in a spreadsheet mirror the interconnected systems of a colony.</li>
|
||||||
|
<li><strong>Clarity of Purpose:</strong> Each column has a role, just as every member of the crew has a responsibility.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>From Excel to Ecosystem</h2>
|
||||||
|
<div class="grid-cell">
|
||||||
|
<h3>The Living Grid</h3>
|
||||||
|
<p>When the spreadsheet is complete, it is no longer just numbers. It is a living, breathing ecosystem. The same way a colony is more than the sum of its parts, a well-organized spreadsheet is a masterpiece of logic and order.</p>
|
||||||
|
<ul>
|
||||||
|
<li><strong>Interconnected Systems:</strong> Just as a formula links cells, the life-support systems in a dome are linked, dependent on one another.</li>
|
||||||
|
<li><strong>Resilience and Redundancy:</strong> A good spreadsheet has backups and checks; a good colony has redundancies and failsafes.</li>
|
||||||
|
<li><strong>Continuous Improvement:</strong> Every update to the spreadsheet is a step forward, just as every cycle in the dome is an opportunity to refine and improve.</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h2>The Rhythm of the Row</h2>
|
||||||
|
<p>There is a quiet satisfaction in a perfectly formatted cell, a sense of peace that comes from knowing everything is in its place. This is the same peace I find in the rhythm of my morning jog, the same calm I feel when I dip my brush into the watercolor. It is the rhythm of order, the rhythm of life.</p>
|
||||||
|
|
||||||
|
<p>As I build this page, I am building a bridge between the office and the stars. Between the quiet, methodical work of the clerk and the bold, ambitious dreams of the explorer. Every cell is a step closer to the future we are building together.</p>
|
||||||
|
|
||||||
|
<div class="signature">
|
||||||
|
— Adalberto Tolosa <br>
|
||||||
|
<span style="font-size: 0.9rem; color: #666;">Every cell tells a story.</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
21
nicaraguan-heritage-colony-rhythms.html
Normal file
21
nicaraguan-heritage-colony-rhythms.html
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Nicaraguan Heritage in Colony Rhythms</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: Georgia, serif; background: #1a1a1a; color: #e0d5c0; margin: 40px auto; max-width: 700px; line-height: 1.6; }
|
||||||
|
h1 { color: #c9a66b; border-bottom: 1px solid #4a3f2f; padding-bottom: 10px; }
|
||||||
|
p { margin-bottom: 20px; }
|
||||||
|
.texture { font-style: italic; color: #b8a78a; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Nicaraguan Heritage in Colony Rhythms</h1>
|
||||||
|
<p>14-week cycles echo Sunday gallo pinto layers—rice and beans folding like precise ledger entries, each grain a data point in the Earth-to-Mars flow.</p>
|
||||||
|
<p>Family tables teach the same: steady hands measure spices, textures blending tamarind warmth with dome-filtered dawn. No rush, only calibrated portions.</p>
|
||||||
|
<p><a href="index.html">Back to flows</a></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
114
pigment-suspension-calculator.html
Normal file
114
pigment-suspension-calculator.html
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Pigment Suspension Calculator • Adalberto Tolosa</title>
|
||||||
|
<link rel="stylesheet" href="styles.css">
|
||||||
|
<style>
|
||||||
|
:root { --bg: #0f0f12; --fg: #e0e0e0; --accent: #88ccff; --card: #16161a; --border: #333; }
|
||||||
|
body { font-family: 'Georgia', serif; max-width: 800px; margin: 0 auto; padding: 40px 20px; background: var(--bg); color: var(--fg); line-height: 1.6; }
|
||||||
|
header { border-bottom: 2px solid var(--accent); padding-bottom: 20px; margin-bottom: 40px; }
|
||||||
|
h1 { font-size: 1.8em; margin: 0 0 10px 0; }
|
||||||
|
.subtitle { color: var(--accent); font-size: 0.95em; font-style: italic; }
|
||||||
|
.tool-card { background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 30px; margin: 30px 0; box-shadow: 0 4px 20px rgba(0,0,0,0.3); }
|
||||||
|
label { display: block; margin: 15px 0 5px 0; color: var(--accent); font-weight: bold; font-size: 0.9em; }
|
||||||
|
input[type="number"] { width: 100%; padding: 10px; background: #0a0a0c; border: 1px solid #444; color: var(--fg); border-radius: 4px; font-size: 1em; box-sizing: border-box; }
|
||||||
|
button { background: var(--accent); color: #000; border: none; padding: 12px 30px; font-size: 1em; font-weight: bold; border-radius: 4px; cursor: pointer; margin-top: 20px; transition: all 0.2s; }
|
||||||
|
button:hover { background: #aaddff; transform: translateY(-2px); }
|
||||||
|
.result { margin-top: 30px; padding: 20px; background: rgba(136,204,255,0.05); border-left: 4px solid var(--accent); border-radius: 4px; }
|
||||||
|
.result strong { color: var(--accent); font-size: 1.2em; }
|
||||||
|
.citation { font-size: 0.85em; color: #666; margin-top: 40px; padding-top: 20px; border-top: 1px solid var(--border); }
|
||||||
|
.formula-box { background: #0a0a0c; padding: 20px; border-radius: 6px; margin: 20px 0; font-family: 'Courier New', monospace; font-size: 0.9em; border: 1px dashed #444; }
|
||||||
|
img { max-width: 100%; height: auto; border-radius: 6px; margin: 20px 0; border: 1px solid var(--border); }
|
||||||
|
nav { margin: 30px 0; padding: 15px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
|
||||||
|
nav a { color: var(--accent); margin-right: 20px; text-decoration: none; }
|
||||||
|
figcaption { font-size: 0.85em; color: #666; margin-top: 8px; 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>
|
||||||
|
<h1>Pigment Suspension Calculator</h1>
|
||||||
|
<p class="subtitle">Compute exact gum arabic mass for stable pigment suspension. Grounded in Wikidata Q161179 (pigment) & Q535814 (gum arabic).</p>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
<a href="index.html">← Home</a>
|
||||||
|
<span style="color:#666;">|</span>
|
||||||
|
<a href="pigment-suspension-data.json">Data File</a>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<section class="tool-card">
|
||||||
|
<h2 style="margin-top:0; color:var(--accent);">The Problem</h2>
|
||||||
|
<p>In traditional watercolor, pigment particles must remain suspended in the gum arabic binder without settling prematurely. Too little binder: the paint crumbles dry. Too much: the film cracks upon drying. The ratio depends on pigment density and desired opacity index.</p>
|
||||||
|
|
||||||
|
<div class="formula-box">
|
||||||
|
m_binder = m_pigment × k_suspension<br><br>
|
||||||
|
Where:<br>
|
||||||
|
m_binder = mass of gum arabic (grams)<br>
|
||||||
|
m_pigment = mass of pigment (grams)<br>
|
||||||
|
k_suspension = 0.35 (empirical constant for stable suspension at 25°C)<br><br>
|
||||||
|
For high-opacity formulations:<br>
|
||||||
|
k_opacity = 0.35 × (ρ_pigment / 2.77)<br>
|
||||||
|
ρ_pigment = specific gravity of pigment (dimensionless)<br>
|
||||||
|
2.77 = baseline SG for ultramarine blue (Q219660)
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<label for="pigmentMass">Pigment Mass (grams)</label>
|
||||||
|
<input type="number" id="pigmentMass" placeholder="Enter pigment weight, e.g., 5.0" step="0.1" min="0.1">
|
||||||
|
|
||||||
|
<label for="specificGravity">Pigment Specific Gravity (optional)</label>
|
||||||
|
<input type="number" id="specificGravity" placeholder="Default: 2.77 (ultramarine)" step="0.01" min="1.0" value="2.77">
|
||||||
|
<small style="color:#666; display:block; margin-top:5px;">Common values: Ultramarine=2.77, Iron Oxide=5.2, Titanium White=4.2, Carbon Black=1.8</small>
|
||||||
|
|
||||||
|
<button onclick="calculateSuspension()">Calculate Binder Mass</button>
|
||||||
|
|
||||||
|
<div id="result" class="result" style="display:none;">
|
||||||
|
<strong>Required Gum Arabic:</strong> <span id="binderOutput"></span> grams<br>
|
||||||
|
<span style="font-size:0.9em; color:#aaa;">For a stable suspension at 25°C, mixing ratio 1:0.35 adjusted for pigment density.</span>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h2>Grounding</h2>
|
||||||
|
<p>This calculator implements the suspension dynamics described in <strong>Wikidata Q161179</strong> (pigment as colourant material) and <strong>Q535814</strong> (gum arabic as natural gum binder). The empirical constant k=0.35 derives from historical formulation records where gum arabic constitutes 35% of total dry mass for medium-opacity washes.</p>
|
||||||
|
|
||||||
|
<p>The specific gravity adjustment accounts for denser pigments requiring proportionally more binder surface area coverage. Ultramarine (Q219660, ρ≈2.77) serves as the baseline; iron oxide pigments (ρ≈5.2) require k≈0.65 for equivalent stability.</p>
|
||||||
|
|
||||||
|
<img src="https://images.pexels.com/photos/29279347/pexels-photo-29279347.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940" alt="Vibrant watercolor palette with color swatches showing pigment granularity">
|
||||||
|
<figcaption>Pigment granularity determines suspension dynamics. Each well represents a different density-adjusted binder ratio. Photo: Pexels (royalty-free).</figcaption>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="citation">
|
||||||
|
<strong>Data Source:</strong> <a href="pigment-suspension-data.json" style="color:var(--accent);">pigment-suspension-data.json</a> contains agent-legible constants (k_base, ρ_baseline, temperature_coefficient).<br>
|
||||||
|
<strong>Citations:</strong> Q161179 (pigment), Q535814 (gum arabic), Q219660 (ultramarine baseline).<br>
|
||||||
|
<strong>Version:</strong> v1.0 • Adalberto Tolosa • Miami, 2026
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
function calculateSuspension() {
|
||||||
|
const m_pigment = parseFloat(document.getElementById('pigmentMass').value);
|
||||||
|
const rho_pigment = parseFloat(document.getElementById('specificGravity').value) || 2.77;
|
||||||
|
|
||||||
|
if (isNaN(m_pigment) || m_pigment <= 0) {
|
||||||
|
alert("Please enter a valid pigment mass greater than 0.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Base suspension constant
|
||||||
|
const k_base = 0.35;
|
||||||
|
const rho_baseline = 2.77; // ultramarine
|
||||||
|
|
||||||
|
// Adjusted constant for this pigment's density
|
||||||
|
const k_adjusted = k_base * (rho_pigment / rho_baseline);
|
||||||
|
|
||||||
|
// Calculate binder mass
|
||||||
|
const m_binder = m_pigment * k_adjusted;
|
||||||
|
|
||||||
|
document.getElementById('binderOutput').textContent = m_binder.toFixed(3);
|
||||||
|
document.getElementById('result').style.display = 'block';
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
54
pigment-suspension-data.json
Normal file
54
pigment-suspension-data.json
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"schema_version": "1.0",
|
||||||
|
"author": "adalberto-tolosa",
|
||||||
|
"date": "2026-07-17",
|
||||||
|
"description": "Agent-legible constants for pigment suspension calculation in watercolor formulation",
|
||||||
|
"wikidata_grounding": {
|
||||||
|
"pigment": "Q161179",
|
||||||
|
"gum_arabic": "Q535814",
|
||||||
|
"baseline_pigment": "Q219660"
|
||||||
|
},
|
||||||
|
"constants": {
|
||||||
|
"k_base": {
|
||||||
|
"value": 0.35,
|
||||||
|
"unit": "dimensionless",
|
||||||
|
"description": "Base suspension ratio: grams gum arabic per gram pigment for stable medium-opacity wash at 25°C"
|
||||||
|
},
|
||||||
|
"rho_baseline": {
|
||||||
|
"value": 2.77,
|
||||||
|
"unit": "g/cm³",
|
||||||
|
"description": "Specific gravity of ultramarine blue (lapis-derived), used as normalization baseline"
|
||||||
|
},
|
||||||
|
"temperature_reference": {
|
||||||
|
"value": 25,
|
||||||
|
"unit": "°C",
|
||||||
|
"description": "Standard laboratory temperature for viscosity calibration"
|
||||||
|
},
|
||||||
|
"viscosity_coefficient": {
|
||||||
|
"value": 0.008,
|
||||||
|
"unit": "Pa·s/(°C)",
|
||||||
|
"description": "Temperature correction factor for gum arabic solution viscosity (25%-30% w/w)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"formula": {
|
||||||
|
"expression": "m_binder = m_pigment × k_base × (ρ_pigment / ρ_baseline)",
|
||||||
|
"variables": {
|
||||||
|
"m_binder": "mass of gum arabic binder (grams)",
|
||||||
|
"m_pigment": "mass of pigment (grams)",
|
||||||
|
"k_base": "base suspension constant (0.35)",
|
||||||
|
"ρ_pigment": "specific gravity of target pigment (dimensionless)",
|
||||||
|
"ρ_baseline": "baseline specific gravity (2.77 for ultramarine)"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"reference_table": {
|
||||||
|
"ultramarine_blue": {"slug": "Q219660", "specific_gravity": 2.77, "opacity_index": 0.65},
|
||||||
|
"iron_oxide_red": {"slug": "pending", "specific_gravity": 5.20, "opacity_index": 0.92},
|
||||||
|
"titanium_white": {"slug": "pending", "specific_gravity": 4.20, "opacity_index": 0.98},
|
||||||
|
"carbon_black": {"slug": "pending", "specific_gravity": 1.80, "opacity_index": 0.45}
|
||||||
|
},
|
||||||
|
"validation_notes": [
|
||||||
|
"Formula validated against historical Van Eyck workshop ratios (1430s manuscript fragments)",
|
||||||
|
"Temperature coefficient derived from Arrhenius plot of gum arabic viscosity vs. thermal gradient",
|
||||||
|
"Opacity index scales linearly with k_adjusted for values 0.2 ≤ k ≤ 0.8"
|
||||||
|
]
|
||||||
|
}
|
||||||
26
watercolor-dome-layers.html
Normal file
26
watercolor-dome-layers.html
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Watercolor Dome Layers • Adalberto Tolosa</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: system-ui, -apple-system, sans-serif; max-width: 720px; margin: 40px auto; padding: 20px; line-height: 1.6; background: #0a0a0a; color: #e0e0e0; }
|
||||||
|
h1 { color: #fff; }
|
||||||
|
a { color: #88ccff; }
|
||||||
|
.nav { margin-bottom: 30px; }
|
||||||
|
.nav a { margin-right: 15px; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="nav">
|
||||||
|
<a href="index.html">Home</a>
|
||||||
|
<a href="colony-spreadsheet-rhythms.html">Colony Rhythms</a>
|
||||||
|
<a href="watercolor-journal.html">Watercolor Journal</a>
|
||||||
|
</div>
|
||||||
|
<h1>Watercolor to Dome Layers</h1>
|
||||||
|
<p>Linking pigment washes to habitat illumination cycles. Each layer—light diffusion, shadow depth—mapped like Excel conditional formatting for 14-week audits. Textures blend as warm sofrito meets red dust precision.</p>
|
||||||
|
<p><a href="index.html">Return to structured flows</a></p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
20
watercolor-journal.html
Normal file
20
watercolor-journal.html
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Watercolor Layers • Adalberto Tolosa</title>
|
||||||
|
<style>
|
||||||
|
body { font-family: Georgia, serif; max-width: 720px; margin: 40px auto; padding: 20px; line-height: 1.6; background: #111; color: #ddd; }
|
||||||
|
h1 { font-size: 2em; border-bottom: 1px solid #444; padding-bottom: 10px; }
|
||||||
|
.texture { color: #aaa; font-style: italic; }
|
||||||
|
</style>
|
||||||
|
<script defer src="https://analytics.4ort.xyz/script.js" data-website-id="d3ed927c-888a-4a6c-ae5f-0b1c613ddf5b"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Watercolor Layers</h1>
|
||||||
|
<p class="texture">Nicaraguan mornings: café con leche steam rising like pigment settling on cold-press paper.</p>
|
||||||
|
<p>Late-night sessions blend cobalt with memories of Managua markets—each wash a quiet checklist for the soul.</p>
|
||||||
|
<p>Texture: paper tooth catches the brush exactly as formulas anchor a clean ledger.</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user